@seplan/diti-ds
v0.0.26
Published
Reusable UI component library developed by DITI (Technology and Innovation Directorate of SEPLAN PI) based on Mantine and Tailwind CSS
Downloads
32
Maintainers
Readme
@seplan/diti-ds
Reusable UI component library developed by DITI (Technology and Innovation Directorate of SEPLAN PI) based on Mantine and Tailwind CSS.
Installation
npm install @seplan/diti-ds
# or
yarn add @seplan/diti-ds
# or
pnpm add @seplan/diti-dsPeer Dependencies
This library requires the following peer dependencies:
npm install @mantine/core @mantine/hooks react react-dom
# or
yarn add @mantine/core @mantine/hooks react react-dom
# or
pnpm add @mantine/core @mantine/hooks react react-domUsage
Import all components
import { Card, Button, SearchInput } from '@seplan/diti-ds'Import specific modules
// Import only UI components
import { Card, Button } from '@seplan/diti-ds/ui'
// Import only hooks
import { useClipboard, useMediaQuery } from '@seplan/diti-ds/hooks'
// Import only utilities
import { cn, formatCurrency } from '@seplan/diti-ds/utils'
// Import only components (same as ui)
import { Card, Button } from '@seplan/diti-ds/components'Import styles
import '@seplan/diti-ds/styles'Available Components
Basic Components
AxisCard- Card component with axis stylingBackButton- Button for navigation backBreadcrumbs- Breadcrumb navigation componentCard- Basic card componentEmptyState- Empty state componentLabel- Label componentSearchInput- Search input component
Logo Components
Logo- Logo componentLogoHorizontal- Horizontal logo component
Navigation Components
NavigationTabs- Tab navigation componentBackButton- Back navigation button
Filter Components
AsyncFilter- Asynchronous filter componentFilterManager- Filter management componentFilterPopover- Filter popover componentDateRangeFilter- Date range filterValueRangeFilter- Value range filter
Data Display Components
DataList- Data list componentSortableColumnHeader- Sortable column headerPaginationFooter- Pagination footer components
Form Components
FormDrawer- Form drawer componentRadioCard- Radio card componentOptionalInputLabel- Optional input label
Utility Components
ClearFiltersButton- Clear filters buttonCounselorStatusBadge- Counselor status badgeImagePlaceholder- Image placeholderSeplanAppsBar- SEPLAN apps bar
Available Hooks
useClipboard- Clipboard utility hookuseDownloadBlob- Download blob hookuseMediaQuery- Media query hookusePaginationReset- Pagination reset hookuseQRCodeGenerator- QR code generator hookuseSortableColumn- Sortable column hookuseFilters- Filters hookuseSelectedItems- Selected items hook
Available Utilities
cn- Class name utility (clsx + tailwind-merge)formatCurrency- Currency formatting utilityformatDate- Date formatting utilityformatCPF- CPF formatting utilityisValidCPF- CPF validation utilityremoveAccents- Remove accents utilitynormalizeForSearch- Search normalization utility
Examples
Basic Card Usage
import { Card } from '@seplan/diti-ds'
function MyComponent() {
return (
<Card>
<Card.Header>
<Card.Title>My Card Title</Card.Title>
</Card.Header>
<Card.Content>
<p>Card content goes here</p>
</Card.Content>
</Card>
)
}Search Input Usage
import { SearchInput } from '@seplan/diti-ds'
function MyComponent() {
const handleSearch = (value: string) => {
console.log('Searching for:', value)
}
return (
<SearchInput
placeholder="Search..."
onSearch={handleSearch}
debounceMs={300}
/>
)
}Using Hooks
import { useClipboard, useMediaQuery } from '@seplan/diti-ds'
function MyComponent() {
const { copy, copied } = useClipboard()
const isMobile = useMediaQuery('(max-width: 768px)')
const handleCopy = () => {
copy('Text to copy')
}
return (
<div>
<button onClick={handleCopy}>
{copied ? 'Copied!' : 'Copy Text'}
</button>
{isMobile && <p>Mobile view</p>}
</div>
)
}Using Utilities
import { cn, formatCurrency, formatDate } from '@seplan/diti-ds'
function MyComponent() {
const className = cn(
'base-class',
'conditional-class',
{ 'active': true }
)
return (
<div className={className}>
<p>Price: {formatCurrency(1234.56)}</p>
<p>Date: {formatDate(new Date())}</p>
</div>
)
}Development
Setup
git clone <repository-url>
cd diti-ds
npm installDevelopment Commands
# Start development server
npm run dev
# Build library
npm run build:lib
# Build types
npm run build:types
# Start Storybook
npm run storybook
# Build Storybook
npm run build-storybook
# Lint code
npm run lint
# Format code
npm run formatPublishing
# Publish patch version
npm run publish:patch
# Publish minor version
npm run publish:minor
# Publish major version
npm run publish:majorContributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT
