buildgrid-ui 1.1.0-dev.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/help-carousel/help-carousel.d.ts +9 -0
- package/dist/blocks/help-carousel/index.d.ts +1 -0
- package/dist/blocks/index.d.ts +4 -0
- package/dist/blocks/month-navigator/index.d.ts +1 -0
- package/dist/blocks/month-navigator/month-navigator.d.ts +9 -0
- package/dist/blocks/pagination-controls/index.d.ts +1 -0
- package/dist/blocks/pagination-controls/pagination-controls.d.ts +7 -0
- package/dist/blocks/sidebar/index.d.ts +1 -0
- package/dist/blocks/sidebar/sidebar.d.ts +26 -0
- package/dist/buildgrid-ui.es.js +10607 -4877
- package/dist/buildgrid-ui.umd.js +134 -63
- package/dist/components/adaptive-input/index.d.ts +1 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +20 -0
- package/dist/components/alert-dialog/index.d.ts +1 -0
- package/dist/components/autocomplete/autocomplete.d.ts +1 -0
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/calendar/calendar.d.ts +8 -0
- package/dist/components/calendar/index.d.ts +1 -0
- package/dist/components/currency-input/currency-input.d.ts +1 -1
- package/dist/components/dialog/dialog.d.ts +19 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/index.d.ts +16 -1
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/label.d.ts +5 -0
- package/dist/components/navigation-menu/index.d.ts +1 -0
- package/dist/components/navigation-menu/navigation-menu.d.ts +12 -0
- package/dist/components/pagination/index.d.ts +1 -0
- package/dist/components/pagination/pagination.d.ts +28 -0
- package/dist/components/radio-group/index.d.ts +1 -0
- package/dist/components/radio-group/radio-group.d.ts +5 -0
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/select.d.ts +13 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/table.d.ts +10 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs/tabs.d.ts +7 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/textarea.d.ts +3 -0
- package/dist/components/toaster/index.d.ts +2 -0
- package/dist/components/toaster/toaster.d.ts +9 -0
- package/dist/components/toggle/index.d.ts +1 -0
- package/dist/components/toggle/toggle.d.ts +12 -0
- package/dist/components/toggle-group/index.d.ts +1 -0
- package/dist/components/toggle-group/toggle-group.d.ts +12 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/tooltip.d.ts +7 -0
- package/dist/index.d.ts +3 -1
- package/dist/lib/hooks/index.d.ts +5 -0
- package/dist/lib/hooks/use-debounce.d.ts +2 -0
- package/dist/lib/hooks/use-dialog.d.ts +30 -0
- package/dist/lib/hooks/use-media-query.d.ts +1 -0
- package/dist/lib/hooks/use-mobile.d.ts +1 -0
- package/dist/lib/hooks/use-pwa-install.d.ts +7 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/package.json +19 -2
- package/.editorconfig +0 -5
- package/.eslintrc.json +0 -3
- package/.github/workflows/release.yml +0 -25
- package/.husky/commit-msg +0 -1
- package/.prettierignore +0 -6
- package/.prettierrc +0 -6
- package/.releaserc.json +0 -40
- package/.storybook/main.ts +0 -26
- package/.storybook/preview.ts +0 -15
- package/CHANGELOG.md +0 -53
- package/commitlint.config.js +0 -3
- package/components.json +0 -21
- package/dist/components/adaptative-input/index.d.ts +0 -1
- package/dist/lib/index.d.ts +0 -2
- package/eslint.config.mjs +0 -13
- package/postcss.config.js +0 -6
- package/src/components/adaptative-input/adaptative-input.stories.tsx +0 -31
- package/src/components/adaptative-input/adaptative-input.tsx +0 -66
- package/src/components/adaptative-input/index.ts +0 -1
- package/src/components/autocomplete/autocomplete.stories.tsx +0 -84
- package/src/components/autocomplete/autocomplete.tsx +0 -136
- package/src/components/autocomplete/index.ts +0 -1
- package/src/components/avatar/avatar.stories.tsx +0 -29
- package/src/components/avatar/avatar.tsx +0 -48
- package/src/components/avatar/index.ts +0 -1
- package/src/components/badge/badge.stories.tsx +0 -30
- package/src/components/badge/badge.tsx +0 -34
- package/src/components/badge/index.ts +0 -1
- package/src/components/button/button.stories.tsx +0 -62
- package/src/components/button/button.tsx +0 -82
- package/src/components/button/index.ts +0 -1
- package/src/components/card/card.stories.tsx +0 -41
- package/src/components/card/card.tsx +0 -61
- package/src/components/card/index.ts +0 -1
- package/src/components/checkbox/checkbox.stories.tsx +0 -36
- package/src/components/checkbox/checkbox.tsx +0 -28
- package/src/components/checkbox/index.ts +0 -1
- package/src/components/currency-input/currency-input.stories.tsx +0 -28
- package/src/components/currency-input/currency-input.tsx +0 -93
- package/src/components/currency-input/index.ts +0 -1
- package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -90
- package/src/components/dropdown-menu/dropdown-menu.tsx +0 -192
- package/src/components/dropdown-menu/index.ts +0 -1
- package/src/components/index.ts +0 -15
- package/src/components/input/index.ts +0 -1
- package/src/components/input/input.stories.tsx +0 -22
- package/src/components/input/input.tsx +0 -41
- package/src/components/password-input/index.ts +0 -1
- package/src/components/password-input/password-input.stories.tsx +0 -26
- package/src/components/password-input/password-input.tsx +0 -98
- package/src/components/popover/index.ts +0 -1
- package/src/components/popover/popover.stories.tsx +0 -32
- package/src/components/popover/popover.tsx +0 -30
- package/src/components/progress/index.ts +0 -1
- package/src/components/progress/progress.stories.tsx +0 -21
- package/src/components/progress/progress.tsx +0 -26
- package/src/components/skeleton/index.ts +0 -1
- package/src/components/skeleton/skeleton.stories.tsx +0 -24
- package/src/components/skeleton/skeleton.tsx +0 -19
- package/src/components/switch/index.ts +0 -1
- package/src/components/switch/switch.stories.tsx +0 -21
- package/src/components/switch/switch.tsx +0 -26
- package/src/index.ts +0 -2
- package/src/lib/index.ts +0 -2
- package/src/lib/utils/cn.ts +0 -6
- package/src/lib/utils/formatters.ts +0 -55
- package/src/styles/tailwind.css +0 -66
- package/tailwind.config.js +0 -57
- package/tsconfig.app.json +0 -10
- package/tsconfig.json +0 -29
- package/vite.config.ts +0 -34
- /package/dist/components/{adaptative-input/adaptative-input.d.ts → adaptive-input/adaptive-input.d.ts} +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { Input } from './input'
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof Input> = {
|
|
8
|
-
title: 'Components/input/simple',
|
|
9
|
-
component: Input,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default meta
|
|
13
|
-
type Story = StoryObj<typeof Input>
|
|
14
|
-
|
|
15
|
-
const Template = () => {
|
|
16
|
-
return <Input className="w-64" />
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const Default: Story = {
|
|
20
|
-
render: Template.bind({}),
|
|
21
|
-
args: {},
|
|
22
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { cn } from '@/lib/utils/cn'
|
|
2
|
-
import { cva, VariantProps } from 'class-variance-authority'
|
|
3
|
-
import * as React from 'react'
|
|
4
|
-
|
|
5
|
-
const inputVariants = cva(
|
|
6
|
-
'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
|
|
7
|
-
{
|
|
8
|
-
variants: {
|
|
9
|
-
sizing: {
|
|
10
|
-
sm: 'h-8 text-xs px-2',
|
|
11
|
-
md: 'h-10 text-sm px-3',
|
|
12
|
-
lg: 'h-12 text-base px-4',
|
|
13
|
-
xl: 'h-14 text-lg px-5',
|
|
14
|
-
'2xl': 'h-16 text-xl px-6',
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
defaultVariants: {
|
|
18
|
-
sizing: 'md',
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
export interface InputProps
|
|
24
|
-
extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
25
|
-
VariantProps<typeof inputVariants> {}
|
|
26
|
-
|
|
27
|
-
const Input = React.forwardRef<HTMLInputElement, InputProps>(
|
|
28
|
-
({ className, sizing, type, ...props }, ref) => {
|
|
29
|
-
return (
|
|
30
|
-
<input
|
|
31
|
-
type={type}
|
|
32
|
-
className={cn(inputVariants({ sizing, className }))}
|
|
33
|
-
ref={ref}
|
|
34
|
-
{...props}
|
|
35
|
-
/>
|
|
36
|
-
)
|
|
37
|
-
},
|
|
38
|
-
)
|
|
39
|
-
Input.displayName = 'Input'
|
|
40
|
-
|
|
41
|
-
export { Input }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './password-input'
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { PasswordInput } from './password-input'
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof PasswordInput> = {
|
|
8
|
-
title: 'Components/input/password',
|
|
9
|
-
component: PasswordInput,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default meta
|
|
13
|
-
type Story = StoryObj<typeof PasswordInput>
|
|
14
|
-
|
|
15
|
-
const Template = () => {
|
|
16
|
-
return (
|
|
17
|
-
<div className="w-96">
|
|
18
|
-
<PasswordInput />
|
|
19
|
-
</div>
|
|
20
|
-
)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const Default: Story = {
|
|
24
|
-
render: Template.bind({}),
|
|
25
|
-
args: {},
|
|
26
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Eye, EyeOff } from 'lucide-react'
|
|
2
|
-
import React, { InputHTMLAttributes, useState } from 'react'
|
|
3
|
-
import { Button } from '../button'
|
|
4
|
-
import { Input } from '../input'
|
|
5
|
-
import { Progress } from '../progress'
|
|
6
|
-
|
|
7
|
-
interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
|
8
|
-
showStrengthMeter?: boolean
|
|
9
|
-
strengthLabels?: {
|
|
10
|
-
veryWeak: string
|
|
11
|
-
weak: string
|
|
12
|
-
medium: string
|
|
13
|
-
strong: string
|
|
14
|
-
veryStrong: string
|
|
15
|
-
}
|
|
16
|
-
showPasswordLabel?: string
|
|
17
|
-
hidePasswordLabel?: string
|
|
18
|
-
strengthTitle?: string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function PasswordInput(props: PasswordInputProps) {
|
|
22
|
-
const {
|
|
23
|
-
showStrengthMeter = true,
|
|
24
|
-
className,
|
|
25
|
-
strengthLabels = {
|
|
26
|
-
veryWeak: 'Very weak',
|
|
27
|
-
weak: 'Weak',
|
|
28
|
-
medium: 'Medium',
|
|
29
|
-
strong: 'Strong',
|
|
30
|
-
veryStrong: 'Very strong',
|
|
31
|
-
},
|
|
32
|
-
showPasswordLabel = 'Show password',
|
|
33
|
-
hidePasswordLabel = 'Hide password',
|
|
34
|
-
strengthTitle = 'Password strength',
|
|
35
|
-
...rest
|
|
36
|
-
} = props
|
|
37
|
-
|
|
38
|
-
const [password, setPassword] = useState('')
|
|
39
|
-
const [showPassword, setShowPassword] = useState(false)
|
|
40
|
-
|
|
41
|
-
const calculateStrength = (password: string): number => {
|
|
42
|
-
let strength = 0
|
|
43
|
-
if (password.length >= 8) strength += 25
|
|
44
|
-
if (password.match(/[a-z]/)) strength += 25
|
|
45
|
-
if (password.match(/[A-Z]/)) strength += 25
|
|
46
|
-
if (password.match(/[0-9]/)) strength += 25
|
|
47
|
-
return strength
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const getStrengthLabel = (strength: number): string => {
|
|
51
|
-
if (strength === 0) return strengthLabels.veryWeak
|
|
52
|
-
if (strength <= 25) return strengthLabels.weak
|
|
53
|
-
if (strength <= 50) return strengthLabels.medium
|
|
54
|
-
if (strength <= 75) return strengthLabels.strong
|
|
55
|
-
return strengthLabels.veryStrong
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const strength = calculateStrength(password)
|
|
59
|
-
const strengthLabel = getStrengthLabel(strength)
|
|
60
|
-
|
|
61
|
-
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
62
|
-
setPassword(e.target.value)
|
|
63
|
-
props.onChange?.(e)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return (
|
|
67
|
-
<div className="w-full space-y-4">
|
|
68
|
-
<div className="relative">
|
|
69
|
-
<Input
|
|
70
|
-
{...rest}
|
|
71
|
-
type={showPassword ? 'text' : 'password'}
|
|
72
|
-
value={password}
|
|
73
|
-
onChange={handleChange}
|
|
74
|
-
className={`pr-10 ${className || ''}`}
|
|
75
|
-
/>
|
|
76
|
-
<Button
|
|
77
|
-
type="button"
|
|
78
|
-
variant="ghost"
|
|
79
|
-
size="icon"
|
|
80
|
-
className="absolute right-0 top-0 h-full"
|
|
81
|
-
onClick={() => setShowPassword(!showPassword)}
|
|
82
|
-
aria-label={showPassword ? hidePasswordLabel : showPasswordLabel}
|
|
83
|
-
>
|
|
84
|
-
{showPassword ? <EyeOff className="h-4 w-4" /> : <Eye className="h-4 w-4" />}
|
|
85
|
-
</Button>
|
|
86
|
-
</div>
|
|
87
|
-
{showStrengthMeter && (
|
|
88
|
-
<div className="space-y-2">
|
|
89
|
-
<div className="flex justify-between text-sm">
|
|
90
|
-
<span>{strengthTitle}:</span>
|
|
91
|
-
<span>{strengthLabel}</span>
|
|
92
|
-
</div>
|
|
93
|
-
<Progress value={strength} className="h-2" />
|
|
94
|
-
</div>
|
|
95
|
-
)}
|
|
96
|
-
</div>
|
|
97
|
-
)
|
|
98
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './popover'
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { Popover, PopoverContent, PopoverTrigger } from './popover'
|
|
6
|
-
import { Button } from '../button/button'
|
|
7
|
-
|
|
8
|
-
const meta: Meta<typeof Popover> = {
|
|
9
|
-
component: Popover,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export default meta
|
|
13
|
-
type Story = StoryObj<typeof Popover>
|
|
14
|
-
|
|
15
|
-
const Template = () => {
|
|
16
|
-
const variants = ['default', 'secondary', 'destructive', 'outline']
|
|
17
|
-
return (
|
|
18
|
-
<Popover>
|
|
19
|
-
<PopoverTrigger asChild>
|
|
20
|
-
<Button variant="outline">Open popover</Button>
|
|
21
|
-
</PopoverTrigger>
|
|
22
|
-
<PopoverContent className="w-80">
|
|
23
|
-
<div className="bg-gray-200 p-6 w-full h-20">Popover content</div>
|
|
24
|
-
</PopoverContent>
|
|
25
|
-
</Popover>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export const Default: Story = {
|
|
30
|
-
render: Template.bind({}),
|
|
31
|
-
args: {},
|
|
32
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { cn } from '@/lib'
|
|
2
|
-
import * as PopoverPrimitive from '@radix-ui/react-popover'
|
|
3
|
-
import * as React from 'react'
|
|
4
|
-
|
|
5
|
-
const Popover = PopoverPrimitive.Root
|
|
6
|
-
|
|
7
|
-
const PopoverTrigger = PopoverPrimitive.Trigger
|
|
8
|
-
|
|
9
|
-
const PopoverAnchor = PopoverPrimitive.Anchor
|
|
10
|
-
|
|
11
|
-
const PopoverContent = React.forwardRef<
|
|
12
|
-
React.ElementRef<typeof PopoverPrimitive.Content>,
|
|
13
|
-
React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>
|
|
14
|
-
>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (
|
|
15
|
-
<PopoverPrimitive.Portal>
|
|
16
|
-
<PopoverPrimitive.Content
|
|
17
|
-
ref={ref}
|
|
18
|
-
align={align}
|
|
19
|
-
sideOffset={sideOffset}
|
|
20
|
-
className={cn(
|
|
21
|
-
'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
|
22
|
-
className,
|
|
23
|
-
)}
|
|
24
|
-
{...props}
|
|
25
|
-
/>
|
|
26
|
-
</PopoverPrimitive.Portal>
|
|
27
|
-
))
|
|
28
|
-
PopoverContent.displayName = PopoverPrimitive.Content.displayName
|
|
29
|
-
|
|
30
|
-
export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './progress'
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { Progress } from './progress'
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof Progress> = {
|
|
8
|
-
component: Progress,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default meta
|
|
12
|
-
type Story = StoryObj<typeof Progress>
|
|
13
|
-
|
|
14
|
-
const Template = () => {
|
|
15
|
-
return <Progress value={90} />
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const Default: Story = {
|
|
19
|
-
render: Template.bind({}),
|
|
20
|
-
args: {},
|
|
21
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import * as ProgressPrimitive from '@radix-ui/react-progress'
|
|
2
|
-
import * as React from 'react'
|
|
3
|
-
|
|
4
|
-
import { cn } from '@/lib/utils/cn'
|
|
5
|
-
|
|
6
|
-
const Progress = React.forwardRef<
|
|
7
|
-
React.ElementRef<typeof ProgressPrimitive.Root>,
|
|
8
|
-
React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
|
|
9
|
-
>(({ className, value, ...props }, ref) => (
|
|
10
|
-
<ProgressPrimitive.Root
|
|
11
|
-
ref={ref}
|
|
12
|
-
className={cn(
|
|
13
|
-
'relative h-2 w-full overflow-hidden rounded-full bg-primary/20',
|
|
14
|
-
className,
|
|
15
|
-
)}
|
|
16
|
-
{...props}
|
|
17
|
-
>
|
|
18
|
-
<ProgressPrimitive.Indicator
|
|
19
|
-
className="h-full w-full flex-1 bg-primary transition-all"
|
|
20
|
-
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
|
|
21
|
-
/>
|
|
22
|
-
</ProgressPrimitive.Root>
|
|
23
|
-
))
|
|
24
|
-
Progress.displayName = ProgressPrimitive.Root.displayName
|
|
25
|
-
|
|
26
|
-
export { Progress }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './skeleton'
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
import { Skeleton } from './Skeleton'
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof Skeleton> = {
|
|
7
|
-
component: Skeleton,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default meta
|
|
11
|
-
type Story = StoryObj<typeof Skeleton>
|
|
12
|
-
|
|
13
|
-
const Template = () => {
|
|
14
|
-
return (
|
|
15
|
-
<div className="space-y-2">
|
|
16
|
-
<Skeleton className="w-96 h-5" repeat={3} />
|
|
17
|
-
</div>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const Default: Story = {
|
|
22
|
-
render: Template.bind({}),
|
|
23
|
-
args: {},
|
|
24
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { cn } from '@/lib/utils/cn'
|
|
2
|
-
|
|
3
|
-
type SkeletonProps = {
|
|
4
|
-
repeat?: number
|
|
5
|
-
} & React.ComponentProps<'div'>
|
|
6
|
-
|
|
7
|
-
export const Skeleton = ({ className, repeat = 1, ...props }: SkeletonProps) => {
|
|
8
|
-
return (
|
|
9
|
-
<>
|
|
10
|
-
{Array.from({ length: repeat ?? 1 }).map((_, index) => (
|
|
11
|
-
<div
|
|
12
|
-
key={index}
|
|
13
|
-
className={cn('animate-pulse rounded-md bg-gray-700/10', className)}
|
|
14
|
-
{...props}
|
|
15
|
-
/>
|
|
16
|
-
))}
|
|
17
|
-
</>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './switch'
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// organize-imports-ignore
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import type { Meta, StoryObj } from '@storybook/react'
|
|
4
|
-
|
|
5
|
-
import { Switch } from './switch'
|
|
6
|
-
|
|
7
|
-
const meta: Meta<typeof Switch> = {
|
|
8
|
-
component: Switch,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default meta
|
|
12
|
-
type Story = StoryObj<typeof Switch>
|
|
13
|
-
|
|
14
|
-
const Template = () => {
|
|
15
|
-
return <Switch />
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const Default: Story = {
|
|
19
|
-
render: Template.bind({}),
|
|
20
|
-
args: {},
|
|
21
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { cn } from '@/lib'
|
|
2
|
-
import * as SwitchPrimitives from '@radix-ui/react-switch'
|
|
3
|
-
import * as React from 'react'
|
|
4
|
-
|
|
5
|
-
const Switch = React.forwardRef<
|
|
6
|
-
React.ElementRef<typeof SwitchPrimitives.Root>,
|
|
7
|
-
React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>
|
|
8
|
-
>(({ className, ...props }, ref) => (
|
|
9
|
-
<SwitchPrimitives.Root
|
|
10
|
-
className={cn(
|
|
11
|
-
'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
|
|
12
|
-
className,
|
|
13
|
-
)}
|
|
14
|
-
{...props}
|
|
15
|
-
ref={ref}
|
|
16
|
-
>
|
|
17
|
-
<SwitchPrimitives.Thumb
|
|
18
|
-
className={cn(
|
|
19
|
-
'pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',
|
|
20
|
-
)}
|
|
21
|
-
/>
|
|
22
|
-
</SwitchPrimitives.Root>
|
|
23
|
-
))
|
|
24
|
-
Switch.displayName = SwitchPrimitives.Root.displayName
|
|
25
|
-
|
|
26
|
-
export { Switch }
|
package/src/index.ts
DELETED
package/src/lib/index.ts
DELETED
package/src/lib/utils/cn.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
export const formatCurrency = (
|
|
2
|
-
number: number,
|
|
3
|
-
language = 'pt-BR',
|
|
4
|
-
currency = 'BRL',
|
|
5
|
-
): string => {
|
|
6
|
-
return new Intl.NumberFormat(language, {
|
|
7
|
-
style: 'currency',
|
|
8
|
-
currency,
|
|
9
|
-
minimumFractionDigits: 2,
|
|
10
|
-
}).format(number)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const formatDateAndWeekday = (date: Date | string, language = 'pt-BR'): string =>
|
|
14
|
-
new Intl.DateTimeFormat(language, {
|
|
15
|
-
day: '2-digit',
|
|
16
|
-
month: 'long',
|
|
17
|
-
weekday: 'long',
|
|
18
|
-
}).format(new Date(date))
|
|
19
|
-
|
|
20
|
-
export const formatDateAndWeekdayAndYear = (
|
|
21
|
-
date: Date | string,
|
|
22
|
-
language = 'pt-BR',
|
|
23
|
-
): string =>
|
|
24
|
-
new Intl.DateTimeFormat(language, {
|
|
25
|
-
day: '2-digit',
|
|
26
|
-
month: 'long',
|
|
27
|
-
weekday: 'long',
|
|
28
|
-
year: 'numeric',
|
|
29
|
-
}).format(new Date(date))
|
|
30
|
-
|
|
31
|
-
export const formatDateAndMonth = (date: Date | string, language = 'pt-BR'): string =>
|
|
32
|
-
new Intl.DateTimeFormat(language, {
|
|
33
|
-
day: '2-digit',
|
|
34
|
-
month: 'long',
|
|
35
|
-
}).format(new Date(date))
|
|
36
|
-
|
|
37
|
-
export const formatLongDate = (date: Date | string, language = 'pt-BR'): string =>
|
|
38
|
-
new Intl.DateTimeFormat(language, { dateStyle: 'long' }).format(
|
|
39
|
-
typeof date === 'string' ? new Date(date) : date,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
export const formatShortDate = (date: Date, language = 'pt-BR'): string =>
|
|
43
|
-
new Intl.DateTimeFormat(language, { dateStyle: 'short' }).format(date)
|
|
44
|
-
|
|
45
|
-
export const getMonthYearFromISODate = (date: string): string => {
|
|
46
|
-
return date.slice(0, 7)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const formatWeekDayAndShortDate = (date: Date, language = 'pt-BR') => {
|
|
50
|
-
return date.toLocaleDateString(language, {
|
|
51
|
-
weekday: 'short',
|
|
52
|
-
day: '2-digit',
|
|
53
|
-
month: '2-digit',
|
|
54
|
-
})
|
|
55
|
-
}
|
package/src/styles/tailwind.css
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
@tailwind base;
|
|
2
|
-
@tailwind components;
|
|
3
|
-
@tailwind utilities;
|
|
4
|
-
@layer base {
|
|
5
|
-
:root {
|
|
6
|
-
--background: 0 0% 100%;
|
|
7
|
-
--foreground: 0 0% 3.9%;
|
|
8
|
-
--card: 0 0% 100%;
|
|
9
|
-
--card-foreground: 0 0% 3.9%;
|
|
10
|
-
--popover: 0 0% 100%;
|
|
11
|
-
--popover-foreground: 0 0% 3.9%;
|
|
12
|
-
--primary: 0 0% 9%;
|
|
13
|
-
--primary-foreground: 0 0% 98%;
|
|
14
|
-
--secondary: 0 0% 96.1%;
|
|
15
|
-
--secondary-foreground: 0 0% 9%;
|
|
16
|
-
--muted: 0 0% 96.1%;
|
|
17
|
-
--muted-foreground: 0 0% 45.1%;
|
|
18
|
-
--accent: 0 0% 96.1%;
|
|
19
|
-
--accent-foreground: 0 0% 9%;
|
|
20
|
-
--destructive: 0 84.2% 60.2%;
|
|
21
|
-
--destructive-foreground: 0 0% 98%;
|
|
22
|
-
--border: 0 0% 89.8%;
|
|
23
|
-
--input: 0 0% 89.8%;
|
|
24
|
-
--ring: 0 0% 3.9%;
|
|
25
|
-
--chart-1: 12 76% 61%;
|
|
26
|
-
--chart-2: 173 58% 39%;
|
|
27
|
-
--chart-3: 197 37% 24%;
|
|
28
|
-
--chart-4: 43 74% 66%;
|
|
29
|
-
--chart-5: 27 87% 67%;
|
|
30
|
-
--radius: 0.5rem
|
|
31
|
-
}
|
|
32
|
-
.dark {
|
|
33
|
-
--background: 0 0% 3.9%;
|
|
34
|
-
--foreground: 0 0% 98%;
|
|
35
|
-
--card: 0 0% 3.9%;
|
|
36
|
-
--card-foreground: 0 0% 98%;
|
|
37
|
-
--popover: 0 0% 3.9%;
|
|
38
|
-
--popover-foreground: 0 0% 98%;
|
|
39
|
-
--primary: 0 0% 98%;
|
|
40
|
-
--primary-foreground: 0 0% 9%;
|
|
41
|
-
--secondary: 0 0% 14.9%;
|
|
42
|
-
--secondary-foreground: 0 0% 98%;
|
|
43
|
-
--muted: 0 0% 14.9%;
|
|
44
|
-
--muted-foreground: 0 0% 63.9%;
|
|
45
|
-
--accent: 0 0% 14.9%;
|
|
46
|
-
--accent-foreground: 0 0% 98%;
|
|
47
|
-
--destructive: 0 62.8% 30.6%;
|
|
48
|
-
--destructive-foreground: 0 0% 98%;
|
|
49
|
-
--border: 0 0% 14.9%;
|
|
50
|
-
--input: 0 0% 14.9%;
|
|
51
|
-
--ring: 0 0% 83.1%;
|
|
52
|
-
--chart-1: 220 70% 50%;
|
|
53
|
-
--chart-2: 160 60% 45%;
|
|
54
|
-
--chart-3: 30 80% 55%;
|
|
55
|
-
--chart-4: 280 65% 60%;
|
|
56
|
-
--chart-5: 340 75% 55%
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
@layer base {
|
|
60
|
-
* {
|
|
61
|
-
@apply border-border;
|
|
62
|
-
}
|
|
63
|
-
body {
|
|
64
|
-
@apply bg-background text-foreground;
|
|
65
|
-
}
|
|
66
|
-
}
|
package/tailwind.config.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
darkMode: ["class"],
|
|
4
|
-
content: ["./src/**/*.{js,ts,jsx,tsx}"],
|
|
5
|
-
theme: {
|
|
6
|
-
extend: {
|
|
7
|
-
borderRadius: {
|
|
8
|
-
lg: 'var(--radius)',
|
|
9
|
-
md: 'calc(var(--radius) - 2px)',
|
|
10
|
-
sm: 'calc(var(--radius) - 4px)'
|
|
11
|
-
},
|
|
12
|
-
colors: {
|
|
13
|
-
background: 'hsl(var(--background))',
|
|
14
|
-
foreground: 'hsl(var(--foreground))',
|
|
15
|
-
card: {
|
|
16
|
-
DEFAULT: 'hsl(var(--card))',
|
|
17
|
-
foreground: 'hsl(var(--card-foreground))'
|
|
18
|
-
},
|
|
19
|
-
popover: {
|
|
20
|
-
DEFAULT: 'hsl(var(--popover))',
|
|
21
|
-
foreground: 'hsl(var(--popover-foreground))'
|
|
22
|
-
},
|
|
23
|
-
primary: {
|
|
24
|
-
DEFAULT: 'hsl(var(--primary))',
|
|
25
|
-
foreground: 'hsl(var(--primary-foreground))'
|
|
26
|
-
},
|
|
27
|
-
secondary: {
|
|
28
|
-
DEFAULT: 'hsl(var(--secondary))',
|
|
29
|
-
foreground: 'hsl(var(--secondary-foreground))'
|
|
30
|
-
},
|
|
31
|
-
muted: {
|
|
32
|
-
DEFAULT: 'hsl(var(--muted))',
|
|
33
|
-
foreground: 'hsl(var(--muted-foreground))'
|
|
34
|
-
},
|
|
35
|
-
accent: {
|
|
36
|
-
DEFAULT: 'hsl(var(--accent))',
|
|
37
|
-
foreground: 'hsl(var(--accent-foreground))'
|
|
38
|
-
},
|
|
39
|
-
destructive: {
|
|
40
|
-
DEFAULT: 'hsl(var(--destructive))',
|
|
41
|
-
foreground: 'hsl(var(--destructive-foreground))'
|
|
42
|
-
},
|
|
43
|
-
border: 'hsl(var(--border))',
|
|
44
|
-
input: 'hsl(var(--input))',
|
|
45
|
-
ring: 'hsl(var(--ring))',
|
|
46
|
-
chart: {
|
|
47
|
-
'1': 'hsl(var(--chart-1))',
|
|
48
|
-
'2': 'hsl(var(--chart-2))',
|
|
49
|
-
'3': 'hsl(var(--chart-3))',
|
|
50
|
-
'4': 'hsl(var(--chart-4))',
|
|
51
|
-
'5': 'hsl(var(--chart-5))'
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
plugins: [require("tailwindcss-animate")],
|
|
57
|
-
};
|
package/tsconfig.app.json
DELETED
package/tsconfig.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"baseUrl": ".",
|
|
4
|
-
"target": "esnext",
|
|
5
|
-
"module": "esnext",
|
|
6
|
-
"lib": ["dom", "esnext"],
|
|
7
|
-
"jsx": "react-jsx",
|
|
8
|
-
"strict": true,
|
|
9
|
-
"moduleResolution": "node",
|
|
10
|
-
"esModuleInterop": true,
|
|
11
|
-
"declaration": true,
|
|
12
|
-
"emitDeclarationOnly": true,
|
|
13
|
-
"outDir": "dist",
|
|
14
|
-
"skipLibCheck": true,
|
|
15
|
-
"forceConsistentCasingInFileNames": true,
|
|
16
|
-
"paths": {
|
|
17
|
-
"@/*": ["./src/*"]
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"include": ["src"],
|
|
21
|
-
"exclude": [
|
|
22
|
-
"node_modules",
|
|
23
|
-
"dist",
|
|
24
|
-
".husky",
|
|
25
|
-
"**/*.test.ts",
|
|
26
|
-
"**/*.test.tsx",
|
|
27
|
-
"**/*.stories.tsx"
|
|
28
|
-
]
|
|
29
|
-
}
|