@codefast/ui 0.3.13-canary.2 → 0.3.13-canary.4
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/CHANGELOG.md +26 -0
- package/dist/components/accordion.d.mts +37 -0
- package/dist/components/accordion.mjs +53 -0
- package/dist/components/alert-dialog.d.mts +74 -0
- package/dist/components/alert-dialog.mjs +92 -0
- package/dist/components/alert.d.mts +30 -0
- package/dist/components/alert.mjs +49 -0
- package/dist/components/aspect-ratio.d.mts +10 -0
- package/dist/components/aspect-ratio.mjs +12 -0
- package/dist/components/avatar.d.mts +21 -0
- package/dist/components/avatar.mjs +28 -0
- package/dist/components/badge.d.mts +24 -0
- package/dist/components/badge.mjs +56 -0
- package/dist/components/breadcrumb.d.mts +44 -0
- package/dist/components/breadcrumb.mjs +67 -0
- package/dist/components/button-group.d.mts +34 -0
- package/dist/components/button-group.mjs +53 -0
- package/dist/components/button.d.mts +38 -0
- package/dist/components/button.mjs +99 -0
- package/dist/components/calendar.d.mts +27 -0
- package/dist/components/calendar.mjs +114 -0
- package/dist/components/card.d.mts +41 -0
- package/dist/components/card.mjs +55 -0
- package/dist/components/carousel.d.mts +68 -0
- package/dist/components/carousel.mjs +135 -0
- package/dist/components/chart.d.mts +93 -0
- package/dist/components/chart.mjs +189 -0
- package/dist/components/checkbox-cards.d.mts +17 -0
- package/dist/components/checkbox-cards.mjs +30 -0
- package/dist/components/checkbox-group.d.mts +16 -0
- package/dist/components/checkbox-group.mjs +27 -0
- package/dist/components/checkbox.d.mts +11 -0
- package/dist/components/checkbox.mjs +20 -0
- package/dist/components/collapsible.d.mts +18 -0
- package/dist/components/collapsible.mjs +24 -0
- package/dist/components/command.d.mts +57 -0
- package/dist/components/command.mjs +92 -0
- package/dist/components/context-menu.d.mts +91 -0
- package/dist/components/context-menu.mjs +122 -0
- package/dist/components/dialog.d.mts +65 -0
- package/dist/components/dialog.mjs +93 -0
- package/dist/components/drawer.d.mts +65 -0
- package/dist/components/drawer.mjs +78 -0
- package/dist/components/dropdown-menu.d.mts +92 -0
- package/dist/components/dropdown-menu.mjs +129 -0
- package/dist/components/empty.d.mts +44 -0
- package/dist/components/empty.mjs +64 -0
- package/dist/components/field.d.mts +79 -0
- package/dist/components/field.mjs +132 -0
- package/dist/components/form.d.mts +48 -0
- package/dist/components/form.mjs +92 -0
- package/dist/components/hover-card.d.mts +26 -0
- package/dist/components/hover-card.mjs +35 -0
- package/dist/components/input-group.d.mts +61 -0
- package/dist/components/input-group.mjs +142 -0
- package/dist/components/input-number.d.mts +28 -0
- package/dist/components/input-number.mjs +61 -0
- package/dist/components/input-otp.d.mts +29 -0
- package/dist/components/input-otp.mjs +48 -0
- package/dist/components/input-password.d.mts +13 -0
- package/dist/components/input-password.mjs +38 -0
- package/dist/components/input-search.d.mts +20 -0
- package/dist/components/input-search.mjs +50 -0
- package/dist/components/input.d.mts +11 -0
- package/dist/components/input.mjs +14 -0
- package/dist/components/item.d.mts +82 -0
- package/dist/components/item.mjs +137 -0
- package/dist/components/kbd.d.mts +15 -0
- package/dist/components/kbd.mjs +19 -0
- package/dist/components/label.d.mts +11 -0
- package/dist/components/label.mjs +14 -0
- package/dist/components/menubar.d.mts +100 -0
- package/dist/components/menubar.mjs +133 -0
- package/dist/components/native-select.d.mts +19 -0
- package/dist/components/native-select.mjs +34 -0
- package/dist/components/navigation-menu.d.mts +44 -0
- package/dist/components/navigation-menu.mjs +79 -0
- package/dist/components/pagination.d.mts +46 -0
- package/dist/components/pagination.mjs +71 -0
- package/dist/components/popover.d.mts +30 -0
- package/dist/components/popover.mjs +41 -0
- package/dist/components/progress-circle.d.mts +124 -0
- package/dist/components/progress-circle.mjs +120 -0
- package/dist/components/progress.d.mts +12 -0
- package/dist/components/progress.mjs +19 -0
- package/dist/components/{radio-cards.d.ts → radio-cards.d.mts} +10 -5
- package/dist/components/radio-cards.mjs +29 -0
- package/dist/components/radio-group.d.mts +16 -0
- package/dist/components/radio-group.mjs +25 -0
- package/dist/components/radio.d.mts +14 -0
- package/dist/components/radio.mjs +16 -0
- package/dist/components/resizable.d.mts +23 -0
- package/dist/components/resizable.mjs +32 -0
- package/dist/components/scroll-area.d.mts +40 -0
- package/dist/components/scroll-area.mjs +101 -0
- package/dist/components/select.d.mts +62 -0
- package/dist/components/select.mjs +101 -0
- package/dist/components/separator.d.mts +32 -0
- package/dist/components/separator.mjs +45 -0
- package/dist/components/sheet.d.mts +75 -0
- package/dist/components/sheet.mjs +134 -0
- package/dist/components/sidebar.d.mts +195 -0
- package/dist/components/sidebar.mjs +375 -0
- package/dist/components/skeleton.d.mts +10 -0
- package/dist/components/skeleton.mjs +12 -0
- package/dist/components/slider.d.mts +15 -0
- package/dist/components/slider.mjs +40 -0
- package/dist/components/sonner.d.mts +10 -0
- package/dist/components/sonner.mjs +21 -0
- package/dist/components/spinner.d.mts +14 -0
- package/dist/components/spinner.mjs +40 -0
- package/dist/components/switch.d.mts +11 -0
- package/dist/components/switch.mjs +18 -0
- package/dist/components/table.d.mts +45 -0
- package/dist/components/table.mjs +65 -0
- package/dist/components/tabs.d.mts +26 -0
- package/dist/components/tabs.mjs +35 -0
- package/dist/components/textarea.d.mts +10 -0
- package/dist/components/textarea.mjs +12 -0
- package/dist/components/toggle-group.d.mts +30 -0
- package/dist/components/toggle-group.mjs +53 -0
- package/dist/components/toggle.d.mts +28 -0
- package/dist/components/toggle.mjs +53 -0
- package/dist/components/tooltip.d.mts +30 -0
- package/dist/components/tooltip.mjs +42 -0
- package/dist/hooks/{use-animated-value.d.ts → use-animated-value.d.mts} +4 -2
- package/dist/hooks/use-animated-value.mjs +62 -0
- package/dist/hooks/{use-copy-to-clipboard.d.ts → use-copy-to-clipboard.d.mts} +11 -6
- package/dist/hooks/use-copy-to-clipboard.mjs +43 -0
- package/dist/hooks/{use-is-mobile.d.ts → use-is-mobile.d.mts} +4 -2
- package/dist/hooks/use-is-mobile.mjs +26 -0
- package/dist/hooks/{use-media-query.d.ts → use-media-query.d.mts} +4 -2
- package/dist/hooks/use-media-query.mjs +50 -0
- package/dist/hooks/{use-mutation-observer.d.ts → use-mutation-observer.d.mts} +6 -3
- package/dist/hooks/use-mutation-observer.mjs +41 -0
- package/dist/hooks/use-pagination.d.mts +44 -0
- package/dist/hooks/use-pagination.mjs +107 -0
- package/dist/index.d.mts +69 -0
- package/dist/index.mjs +69 -0
- package/dist/lib/utils.d.mts +13 -0
- package/dist/lib/utils.mjs +10 -0
- package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts +6 -0
- package/dist/primitives/checkbox-group.d.mts +144 -0
- package/dist/primitives/checkbox-group.mjs +126 -0
- package/dist/primitives/input-number.d.mts +73 -0
- package/dist/primitives/input-number.mjs +514 -0
- package/dist/primitives/input.d.mts +72 -0
- package/dist/primitives/input.mjs +75 -0
- package/dist/primitives/progress-circle.d.mts +146 -0
- package/dist/primitives/progress-circle.mjs +178 -0
- package/package.json +164 -170
- package/dist/components/accordion.d.ts +0 -19
- package/dist/components/accordion.d.ts.map +0 -1
- package/dist/components/accordion.js +0 -26
- package/dist/components/alert-dialog.d.ts +0 -39
- package/dist/components/alert-dialog.d.ts.map +0 -1
- package/dist/components/alert-dialog.js +0 -39
- package/dist/components/alert.d.ts +0 -19
- package/dist/components/alert.d.ts.map +0 -1
- package/dist/components/alert.js +0 -41
- package/dist/components/aspect-ratio.d.ts +0 -7
- package/dist/components/aspect-ratio.d.ts.map +0 -1
- package/dist/components/aspect-ratio.js +0 -10
- package/dist/components/avatar.d.ts +0 -11
- package/dist/components/avatar.d.ts.map +0 -1
- package/dist/components/avatar.js +0 -17
- package/dist/components/badge.d.ts +0 -18
- package/dist/components/badge.d.ts.map +0 -1
- package/dist/components/badge.js +0 -59
- package/dist/components/breadcrumb.d.ts +0 -22
- package/dist/components/breadcrumb.d.ts.map +0 -1
- package/dist/components/breadcrumb.js +0 -31
- package/dist/components/button-group.d.ts +0 -20
- package/dist/components/button-group.d.ts.map +0 -1
- package/dist/components/button-group.js +0 -48
- package/dist/components/button.d.ts +0 -29
- package/dist/components/button.d.ts.map +0 -1
- package/dist/components/button.js +0 -92
- package/dist/components/calendar.d.ts +0 -13
- package/dist/components/calendar.d.ts.map +0 -1
- package/dist/components/calendar.js +0 -104
- package/dist/components/card.d.ts +0 -18
- package/dist/components/card.d.ts.map +0 -1
- package/dist/components/card.js +0 -27
- package/dist/components/carousel.d.ts +0 -38
- package/dist/components/carousel.d.ts.map +0 -1
- package/dist/components/carousel.js +0 -103
- package/dist/components/chart.d.ts +0 -58
- package/dist/components/chart.d.ts.map +0 -1
- package/dist/components/chart.js +0 -198
- package/dist/components/checkbox-cards.d.ts +0 -11
- package/dist/components/checkbox-cards.d.ts.map +0 -1
- package/dist/components/checkbox-cards.js +0 -16
- package/dist/components/checkbox-group.d.ts +0 -9
- package/dist/components/checkbox-group.d.ts.map +0 -1
- package/dist/components/checkbox-group.js +0 -15
- package/dist/components/checkbox.d.ts +0 -7
- package/dist/components/checkbox.d.ts.map +0 -1
- package/dist/components/checkbox.js +0 -12
- package/dist/components/collapsible.d.ts +0 -11
- package/dist/components/collapsible.d.ts.map +0 -1
- package/dist/components/collapsible.js +0 -16
- package/dist/components/command.d.ts +0 -26
- package/dist/components/command.d.ts.map +0 -1
- package/dist/components/command.js +0 -41
- package/dist/components/context-menu.d.ts +0 -42
- package/dist/components/context-menu.d.ts.map +0 -1
- package/dist/components/context-menu.js +0 -54
- package/dist/components/dialog.d.ts +0 -35
- package/dist/components/dialog.d.ts.map +0 -1
- package/dist/components/dialog.js +0 -41
- package/dist/components/drawer.d.ts +0 -34
- package/dist/components/drawer.d.ts.map +0 -1
- package/dist/components/drawer.js +0 -36
- package/dist/components/dropdown-menu.d.ts +0 -42
- package/dist/components/dropdown-menu.d.ts.map +0 -1
- package/dist/components/dropdown-menu.js +0 -54
- package/dist/components/empty.d.ts +0 -23
- package/dist/components/empty.d.ts.map +0 -1
- package/dist/components/empty.js +0 -47
- package/dist/components/field.d.ts +0 -42
- package/dist/components/field.d.ts.map +0 -1
- package/dist/components/field.js +0 -85
- package/dist/components/form.d.ts +0 -27
- package/dist/components/form.d.ts.map +0 -1
- package/dist/components/form.js +0 -76
- package/dist/components/hover-card.d.ts +0 -13
- package/dist/components/hover-card.d.ts.map +0 -1
- package/dist/components/hover-card.js +0 -20
- package/dist/components/input-group.d.ts +0 -37
- package/dist/components/input-group.d.ts.map +0 -1
- package/dist/components/input-group.js +0 -127
- package/dist/components/input-number.d.ts +0 -8
- package/dist/components/input-number.d.ts.map +0 -1
- package/dist/components/input-number.js +0 -20
- package/dist/components/input-otp.d.ts +0 -16
- package/dist/components/input-otp.d.ts.map +0 -1
- package/dist/components/input-otp.js +0 -25
- package/dist/components/input-password.d.ts +0 -7
- package/dist/components/input-password.d.ts.map +0 -1
- package/dist/components/input-password.js +0 -17
- package/dist/components/input-search.d.ts +0 -11
- package/dist/components/input-search.d.ts.map +0 -1
- package/dist/components/input-search.js +0 -22
- package/dist/components/input.d.ts +0 -6
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/input.js +0 -10
- package/dist/components/item.d.ts +0 -46
- package/dist/components/item.d.ts.map +0 -1
- package/dist/components/item.js +0 -94
- package/dist/components/kbd.d.ts +0 -8
- package/dist/components/kbd.d.ts.map +0 -1
- package/dist/components/kbd.js +0 -12
- package/dist/components/label.d.ts +0 -7
- package/dist/components/label.d.ts.map +0 -1
- package/dist/components/label.js +0 -11
- package/dist/components/menubar.d.ts +0 -44
- package/dist/components/menubar.d.ts.map +0 -1
- package/dist/components/menubar.js +0 -57
- package/dist/components/native-select.d.ts +0 -10
- package/dist/components/native-select.d.ts.map +0 -1
- package/dist/components/native-select.js +0 -16
- package/dist/components/navigation-menu.d.ts +0 -21
- package/dist/components/navigation-menu.d.ts.map +0 -1
- package/dist/components/navigation-menu.js +0 -43
- package/dist/components/pagination.d.ts +0 -26
- package/dist/components/pagination.d.ts.map +0 -1
- package/dist/components/pagination.js +0 -29
- package/dist/components/popover.d.ts +0 -15
- package/dist/components/popover.d.ts.map +0 -1
- package/dist/components/popover.js +0 -23
- package/dist/components/progress-circle.d.ts +0 -107
- package/dist/components/progress-circle.d.ts.map +0 -1
- package/dist/components/progress-circle.js +0 -83
- package/dist/components/progress.d.ts +0 -7
- package/dist/components/progress.d.ts.map +0 -1
- package/dist/components/progress.js +0 -13
- package/dist/components/radio-cards.d.ts.map +0 -1
- package/dist/components/radio-cards.js +0 -15
- package/dist/components/radio-group.d.ts +0 -9
- package/dist/components/radio-group.d.ts.map +0 -1
- package/dist/components/radio-group.js +0 -14
- package/dist/components/radio.d.ts +0 -8
- package/dist/components/radio.d.ts.map +0 -1
- package/dist/components/radio.js +0 -11
- package/dist/components/resizable.d.ts +0 -13
- package/dist/components/resizable.d.ts.map +0 -1
- package/dist/components/resizable.js +0 -18
- package/dist/components/scroll-area.d.ts +0 -28
- package/dist/components/scroll-area.d.ts.map +0 -1
- package/dist/components/scroll-area.js +0 -77
- package/dist/components/select.d.ts +0 -29
- package/dist/components/select.d.ts.map +0 -1
- package/dist/components/select.js +0 -49
- package/dist/components/separator.d.ts +0 -23
- package/dist/components/separator.d.ts.map +0 -1
- package/dist/components/separator.js +0 -36
- package/dist/components/sheet.d.ts +0 -43
- package/dist/components/sheet.d.ts.map +0 -1
- package/dist/components/sheet.js +0 -90
- package/dist/components/sidebar.d.ts +0 -102
- package/dist/components/sidebar.d.ts.map +0 -1
- package/dist/components/sidebar.js +0 -241
- package/dist/components/skeleton.d.ts +0 -6
- package/dist/components/skeleton.d.ts.map +0 -1
- package/dist/components/skeleton.js +0 -9
- package/dist/components/slider.d.ts +0 -7
- package/dist/components/slider.d.ts.map +0 -1
- package/dist/components/slider.js +0 -18
- package/dist/components/sonner.d.ts +0 -8
- package/dist/components/sonner.d.ts.map +0 -1
- package/dist/components/sonner.js +0 -18
- package/dist/components/spinner.d.ts +0 -8
- package/dist/components/spinner.d.ts.map +0 -1
- package/dist/components/spinner.js +0 -27
- package/dist/components/switch.d.ts +0 -7
- package/dist/components/switch.d.ts.map +0 -1
- package/dist/components/switch.js +0 -11
- package/dist/components/table.d.ts +0 -20
- package/dist/components/table.d.ts.map +0 -1
- package/dist/components/table.js +0 -30
- package/dist/components/tabs.d.ts +0 -13
- package/dist/components/tabs.d.ts.map +0 -1
- package/dist/components/tabs.js +0 -20
- package/dist/components/textarea.d.ts +0 -6
- package/dist/components/textarea.d.ts.map +0 -1
- package/dist/components/textarea.js +0 -9
- package/dist/components/toggle-group.d.ts +0 -16
- package/dist/components/toggle-group.d.ts.map +0 -1
- package/dist/components/toggle-group.js +0 -35
- package/dist/components/toggle.d.ts +0 -21
- package/dist/components/toggle.d.ts.map +0 -1
- package/dist/components/toggle.js +0 -49
- package/dist/components/tooltip.d.ts +0 -15
- package/dist/components/tooltip.d.ts.map +0 -1
- package/dist/components/tooltip.js +0 -23
- package/dist/hooks/use-animated-value.d.ts.map +0 -1
- package/dist/hooks/use-animated-value.js +0 -71
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +0 -1
- package/dist/hooks/use-copy-to-clipboard.js +0 -46
- package/dist/hooks/use-is-mobile.d.ts.map +0 -1
- package/dist/hooks/use-is-mobile.js +0 -23
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-media-query.js +0 -53
- package/dist/hooks/use-mutation-observer.d.ts.map +0 -1
- package/dist/hooks/use-mutation-observer.js +0 -40
- package/dist/hooks/use-pagination.d.ts +0 -37
- package/dist/hooks/use-pagination.d.ts.map +0 -1
- package/dist/hooks/use-pagination.js +0 -107
- package/dist/index.d.ts +0 -131
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -68
- package/dist/lib/utils.d.ts +0 -10
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -10
- package/dist/primitives/checkbox-group.d.ts +0 -123
- package/dist/primitives/checkbox-group.d.ts.map +0 -1
- package/dist/primitives/checkbox-group.js +0 -112
- package/dist/primitives/input-number.d.ts +0 -63
- package/dist/primitives/input-number.d.ts.map +0 -1
- package/dist/primitives/input-number.js +0 -458
- package/dist/primitives/input.d.ts +0 -67
- package/dist/primitives/input.d.ts.map +0 -1
- package/dist/primitives/input.js +0 -76
- package/dist/primitives/progress-circle.d.ts +0 -116
- package/dist/primitives/progress-circle.d.ts.map +0 -1
- package/dist/primitives/progress-circle.js +0 -163
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { VariantProps } from "../lib/utils.mjs";
|
|
2
|
+
import { ButtonProps } from "./button.mjs";
|
|
3
|
+
import { InputProps } from "./input.mjs";
|
|
4
|
+
import { TextareaProps } from "./textarea.mjs";
|
|
5
|
+
import * as _$_codefast_tailwind_variants0 from "@codefast/tailwind-variants";
|
|
6
|
+
import { ComponentProps, JSX } from "react";
|
|
7
|
+
|
|
8
|
+
//#region src/components/input-group.d.ts
|
|
9
|
+
declare const inputGroupVariants: _$_codefast_tailwind_variants0.VariantFunctionType<_$_codefast_tailwind_variants0.ConfigurationSchema, Record<string, never>>;
|
|
10
|
+
declare const inputGroupAddonVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
|
|
11
|
+
align: {
|
|
12
|
+
"block-end": string[];
|
|
13
|
+
"block-start": string[];
|
|
14
|
+
"inline-end": string[];
|
|
15
|
+
"inline-start": string[];
|
|
16
|
+
};
|
|
17
|
+
}, Record<string, never>>;
|
|
18
|
+
declare const inputGroupButtonVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
|
|
19
|
+
size: {
|
|
20
|
+
"icon-sm": string[];
|
|
21
|
+
"icon-xs": string[];
|
|
22
|
+
sm: string[];
|
|
23
|
+
xs: string[];
|
|
24
|
+
};
|
|
25
|
+
}, Record<string, never>>;
|
|
26
|
+
type InputGroupProps = ComponentProps<"div">;
|
|
27
|
+
declare function InputGroup({
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}: InputGroupProps): JSX.Element;
|
|
31
|
+
type InputGroupAddonProps = ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>;
|
|
32
|
+
declare function InputGroupAddon({
|
|
33
|
+
align,
|
|
34
|
+
className,
|
|
35
|
+
...props
|
|
36
|
+
}: InputGroupAddonProps): JSX.Element;
|
|
37
|
+
type InputGroupButtonProps = Omit<ButtonProps, "size"> & VariantProps<typeof inputGroupButtonVariants>;
|
|
38
|
+
declare function InputGroupButton({
|
|
39
|
+
className,
|
|
40
|
+
size,
|
|
41
|
+
type,
|
|
42
|
+
variant,
|
|
43
|
+
...props
|
|
44
|
+
}: InputGroupButtonProps): JSX.Element;
|
|
45
|
+
type InputGroupTextProps = ComponentProps<"span">;
|
|
46
|
+
declare function InputGroupText({
|
|
47
|
+
className,
|
|
48
|
+
...props
|
|
49
|
+
}: InputGroupTextProps): JSX.Element;
|
|
50
|
+
type InputGroupInputProps = InputProps;
|
|
51
|
+
declare function InputGroupInput({
|
|
52
|
+
className,
|
|
53
|
+
...props
|
|
54
|
+
}: InputGroupInputProps): JSX.Element;
|
|
55
|
+
type InputGroupTextareaProps = TextareaProps;
|
|
56
|
+
declare function InputGroupTextarea({
|
|
57
|
+
className,
|
|
58
|
+
...props
|
|
59
|
+
}: InputGroupTextareaProps): JSX.Element;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { InputGroup, InputGroupAddon, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupVariants };
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn, tv } from "../lib/utils.mjs";
|
|
3
|
+
import { Button } from "./button.mjs";
|
|
4
|
+
import { Input } from "./input.mjs";
|
|
5
|
+
import { Textarea } from "./textarea.mjs";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/input-group.tsx
|
|
8
|
+
const inputGroupVariants = tv({ base: [
|
|
9
|
+
"group/input-group relative flex h-9 w-full min-w-0 items-center",
|
|
10
|
+
"rounded-lg border border-input shadow-xs outline-none",
|
|
11
|
+
"transition-[color,box-shadow]",
|
|
12
|
+
"dark:bg-input/30",
|
|
13
|
+
"has-[>textarea]:h-auto",
|
|
14
|
+
"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col",
|
|
15
|
+
"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col",
|
|
16
|
+
"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
|
|
17
|
+
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20",
|
|
18
|
+
"dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
|
|
19
|
+
"has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:pt-3",
|
|
20
|
+
"has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:pb-3",
|
|
21
|
+
"has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-2",
|
|
22
|
+
"has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-2"
|
|
23
|
+
] });
|
|
24
|
+
const inputGroupAddonVariants = tv({
|
|
25
|
+
base: [
|
|
26
|
+
"flex h-auto items-center justify-center gap-2 py-1.5",
|
|
27
|
+
"text-sm font-medium text-muted-foreground",
|
|
28
|
+
"cursor-text select-none",
|
|
29
|
+
"group-data-disabled/input-group:opacity-50",
|
|
30
|
+
"[&>kbd]:rounded-[calc(var(--radius)-5px)]",
|
|
31
|
+
"[&>svg:not([class*='size-'])]:size-4"
|
|
32
|
+
],
|
|
33
|
+
defaultVariants: { align: "inline-start" },
|
|
34
|
+
variants: { align: {
|
|
35
|
+
"block-end": [
|
|
36
|
+
"order-last w-full justify-start px-3 pb-3",
|
|
37
|
+
"group-has-[>input]/input-group:pb-2.5",
|
|
38
|
+
"[.border-t]:pt-3"
|
|
39
|
+
],
|
|
40
|
+
"block-start": [
|
|
41
|
+
"order-first w-full justify-start px-3 pt-3",
|
|
42
|
+
"group-has-[>input]/input-group:pt-2.5",
|
|
43
|
+
"[.border-b]:pb-3"
|
|
44
|
+
],
|
|
45
|
+
"inline-end": [
|
|
46
|
+
"order-last",
|
|
47
|
+
"pr-3",
|
|
48
|
+
"has-[>button]:mr-[-0.45rem]",
|
|
49
|
+
"has-[>kbd]:mr-[-0.35rem]"
|
|
50
|
+
],
|
|
51
|
+
"inline-start": [
|
|
52
|
+
"order-first",
|
|
53
|
+
"pl-3",
|
|
54
|
+
"has-[>button]:ml-[-0.45rem]",
|
|
55
|
+
"has-[>kbd]:ml-[-0.35rem]"
|
|
56
|
+
]
|
|
57
|
+
} }
|
|
58
|
+
});
|
|
59
|
+
const inputGroupButtonVariants = tv({
|
|
60
|
+
base: [
|
|
61
|
+
"flex items-center gap-2",
|
|
62
|
+
"shadow-none",
|
|
63
|
+
"text-sm",
|
|
64
|
+
"[&>svg:not([class*='size-'])]:size-4"
|
|
65
|
+
],
|
|
66
|
+
defaultVariants: { size: "xs" },
|
|
67
|
+
variants: { size: {
|
|
68
|
+
"icon-sm": ["size-8 p-0", "has-[>svg]:p-0"],
|
|
69
|
+
"icon-xs": [
|
|
70
|
+
"size-6 p-0",
|
|
71
|
+
"rounded-[calc(var(--radius)-5px)]",
|
|
72
|
+
"has-[>svg]:p-0"
|
|
73
|
+
],
|
|
74
|
+
sm: [
|
|
75
|
+
"h-8 gap-1.5 px-2.5",
|
|
76
|
+
"rounded-md",
|
|
77
|
+
"has-[>svg]:px-2.5"
|
|
78
|
+
],
|
|
79
|
+
xs: [
|
|
80
|
+
"h-6 gap-1 px-2",
|
|
81
|
+
"rounded-[calc(var(--radius)-5px)]",
|
|
82
|
+
"has-[>svg]:px-2",
|
|
83
|
+
"[&>svg]:size-3.5"
|
|
84
|
+
]
|
|
85
|
+
} }
|
|
86
|
+
});
|
|
87
|
+
function InputGroup({ className, ...props }) {
|
|
88
|
+
return /* @__PURE__ */ jsx("div", {
|
|
89
|
+
className: inputGroupVariants({ className }),
|
|
90
|
+
"data-slot": "input-group",
|
|
91
|
+
role: "group",
|
|
92
|
+
...props
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function InputGroupAddon({ align = "inline-start", className, ...props }) {
|
|
96
|
+
return /* @__PURE__ */ jsx("div", {
|
|
97
|
+
className: cn(inputGroupAddonVariants({ align }), className),
|
|
98
|
+
"data-align": align,
|
|
99
|
+
"data-slot": "input-group-addon",
|
|
100
|
+
role: "group",
|
|
101
|
+
onPointerDown: (event) => {
|
|
102
|
+
if (event.target.closest("button")) return;
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
const control = event.currentTarget.parentElement?.querySelector("input, textarea");
|
|
105
|
+
if (control instanceof HTMLElement) control.focus();
|
|
106
|
+
},
|
|
107
|
+
...props
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function InputGroupButton({ className, size = "xs", type = "button", variant = "ghost", ...props }) {
|
|
111
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
112
|
+
className: cn(inputGroupButtonVariants({ size }), className),
|
|
113
|
+
"data-size": size,
|
|
114
|
+
"data-slot": "input-group-button",
|
|
115
|
+
type,
|
|
116
|
+
variant,
|
|
117
|
+
...props
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function InputGroupText({ className, ...props }) {
|
|
121
|
+
return /* @__PURE__ */ jsx("span", {
|
|
122
|
+
className: cn("flex items-center gap-2 text-sm text-muted-foreground", "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
|
|
123
|
+
"data-slot": "input-group-text",
|
|
124
|
+
...props
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function InputGroupInput({ className, ...props }) {
|
|
128
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
129
|
+
className: cn("flex-1", "px-3 py-1", "rounded-none border-0", "bg-transparent shadow-none", "focus-visible:ring-0", "dark:bg-transparent", className),
|
|
130
|
+
"data-slot": "input-group-control",
|
|
131
|
+
...props
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
function InputGroupTextarea({ className, ...props }) {
|
|
135
|
+
return /* @__PURE__ */ jsx(Textarea, {
|
|
136
|
+
className: cn("flex-1", "py-3", "rounded-none border-0", "bg-transparent shadow-none", "resize-none", "focus-visible:ring-0", "dark:bg-transparent", className),
|
|
137
|
+
"data-slot": "input-group-control",
|
|
138
|
+
...props
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
//#endregion
|
|
142
|
+
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupVariants };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Field as InputNumberField, InputNumber as InputNumber$1 } from "../primitives/input-number.mjs";
|
|
2
|
+
import { ComponentProps, JSX } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/input-number.d.ts
|
|
5
|
+
interface InputNumberProps extends ComponentProps<typeof InputNumberField>, ComponentProps<typeof InputNumber$1> {}
|
|
6
|
+
declare function InputNumber({
|
|
7
|
+
ariaDecrementLabel,
|
|
8
|
+
ariaIncrementLabel,
|
|
9
|
+
className,
|
|
10
|
+
defaultValue,
|
|
11
|
+
disabled,
|
|
12
|
+
formatOptions,
|
|
13
|
+
id,
|
|
14
|
+
loaderPosition,
|
|
15
|
+
loading,
|
|
16
|
+
max,
|
|
17
|
+
min,
|
|
18
|
+
onChange,
|
|
19
|
+
prefix,
|
|
20
|
+
readOnly,
|
|
21
|
+
spinner,
|
|
22
|
+
step,
|
|
23
|
+
suffix,
|
|
24
|
+
value,
|
|
25
|
+
...props
|
|
26
|
+
}: InputNumberProps): JSX.Element;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { InputNumber, type InputNumberProps };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { buttonVariants } from "./button.mjs";
|
|
4
|
+
import { Spinner } from "./spinner.mjs";
|
|
5
|
+
import { DecrementButton as InputNumberDecrementButton, Field as InputNumberField, IncrementButton as InputNumberIncrementButton, InputNumber as InputNumber$1 } from "../primitives/input-number.mjs";
|
|
6
|
+
import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/input-number.tsx
|
|
9
|
+
function InputNumber({ ariaDecrementLabel, ariaIncrementLabel, className, defaultValue, disabled, formatOptions, id, loaderPosition, loading, max, min, onChange, prefix, readOnly, spinner, step, suffix, value, ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsxs(InputNumber$1, {
|
|
11
|
+
ariaDecrementLabel,
|
|
12
|
+
ariaIncrementLabel,
|
|
13
|
+
className: cn("group peer flex h-9 w-full grow items-center gap-3 px-3 pr-0", "rounded-lg border border-input", "text-base", "transition", "not-has-disabled:shadow-xs", "focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50", "hover:not-has-disabled:not-focus-within:border-ring/60", "focus-within:has-aria-invalid:ring-destructive/20", "hover:not-has-disabled:not-focus-within:has-aria-invalid:border-destructive/60", "md:text-sm", "dark:bg-input/30", "dark:focus-within:has-aria-invalid:ring-destructive/40", "has-disabled:opacity-50", "has-aria-invalid:border-destructive", "[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "[&>svg]:text-muted-foreground", className),
|
|
14
|
+
"data-slot": "input-number",
|
|
15
|
+
defaultValue,
|
|
16
|
+
disabled,
|
|
17
|
+
formatOptions,
|
|
18
|
+
id,
|
|
19
|
+
loaderPosition,
|
|
20
|
+
loading,
|
|
21
|
+
max,
|
|
22
|
+
min,
|
|
23
|
+
prefix,
|
|
24
|
+
readOnly,
|
|
25
|
+
spinner: spinner ?? /* @__PURE__ */ jsx(Spinner, {}, "spinner"),
|
|
26
|
+
step,
|
|
27
|
+
suffix,
|
|
28
|
+
value,
|
|
29
|
+
onChange,
|
|
30
|
+
children: [/* @__PURE__ */ jsx(InputNumberField, {
|
|
31
|
+
autoCapitalize: "none",
|
|
32
|
+
autoComplete: "off",
|
|
33
|
+
autoCorrect: "off",
|
|
34
|
+
className: cn("h-9 w-full min-w-0 px-3 py-1", "rounded-md border border-input", "bg-transparent shadow-xs outline-none", "text-base", "transition-[color,box-shadow]", "selection:bg-primary selection:text-primary-foreground", "file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", "md:text-sm", "dark:bg-input/30", "dark:aria-invalid:ring-destructive/40"),
|
|
35
|
+
spellCheck: "false",
|
|
36
|
+
...props
|
|
37
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
38
|
+
className: cn("order-last ml-auto grid h-full shrink-0", "divide-y divide-input border-l border-l-input", "transition", "group-hover:not-group-focus-within:not-has-disabled:border-l-border-ring/60 group-hover:not-group-focus-within:not-has-disabled:divide-border-ring/60", "group-focus-within:divide-ring group-focus-within:border-l-ring", "group-has-aria-invalid:divide-destructive group-has-aria-invalid:border-l-destructive", "group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:divide-destructive/60 group-hover:group-has-aria-invalid:not-group-focus-within:not-has-disabled:border-l-destructive/60", "*:[button]:focus-visible:bg-ring/50 *:[button]:focus-visible:ring-0", "group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/20", "dark:group-has-aria-invalid:*:[button]:focus-visible:bg-destructive/40"),
|
|
39
|
+
"data-slot": "input-number-buttons",
|
|
40
|
+
children: [/* @__PURE__ */ jsx(InputNumberIncrementButton, {
|
|
41
|
+
"aria-label": "Increment",
|
|
42
|
+
className: buttonVariants({
|
|
43
|
+
className: "text-muted-foreground h-auto rounded-none rounded-tr-[calc(var(--radius-lg)-1px)]",
|
|
44
|
+
variant: "ghost"
|
|
45
|
+
}),
|
|
46
|
+
"data-slot": "input-number-increment-button",
|
|
47
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, {})
|
|
48
|
+
}), /* @__PURE__ */ jsx(InputNumberDecrementButton, {
|
|
49
|
+
"aria-label": "Decrement",
|
|
50
|
+
className: buttonVariants({
|
|
51
|
+
className: "text-muted-foreground h-auto rounded-none rounded-br-[calc(var(--radius-lg)-1px)]",
|
|
52
|
+
variant: "ghost"
|
|
53
|
+
}),
|
|
54
|
+
"data-slot": "input-number-decrement-button",
|
|
55
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, {})
|
|
56
|
+
})]
|
|
57
|
+
})]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { InputNumber };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentProps, JSX } from "react";
|
|
2
|
+
import { OTPInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "input-otp";
|
|
3
|
+
|
|
4
|
+
//#region src/components/input-otp.d.ts
|
|
5
|
+
type InputOTPProps = ComponentProps<typeof OTPInput>;
|
|
6
|
+
declare function InputOTP({
|
|
7
|
+
className,
|
|
8
|
+
containerClassName,
|
|
9
|
+
...props
|
|
10
|
+
}: InputOTPProps): JSX.Element;
|
|
11
|
+
type InputOTPGroupProps = ComponentProps<"div">;
|
|
12
|
+
declare function InputOTPGroup({
|
|
13
|
+
className,
|
|
14
|
+
...props
|
|
15
|
+
}: InputOTPGroupProps): JSX.Element;
|
|
16
|
+
interface InputOTPSlotProps extends ComponentProps<"div"> {
|
|
17
|
+
index: number;
|
|
18
|
+
}
|
|
19
|
+
declare function InputOTPSlot({
|
|
20
|
+
className,
|
|
21
|
+
index,
|
|
22
|
+
...props
|
|
23
|
+
}: InputOTPSlotProps): JSX.Element;
|
|
24
|
+
type InputOTPSeparatorProps = ComponentProps<"div">;
|
|
25
|
+
declare function InputOTPSeparator({
|
|
26
|
+
...props
|
|
27
|
+
}: InputOTPSeparatorProps): JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { InputOTP, InputOTPGroup, type InputOTPGroupProps, type InputOTPProps, InputOTPSeparator, type InputOTPSeparatorProps, InputOTPSlot, type InputOTPSlotProps, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { MinusIcon } from "lucide-react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { use } from "react";
|
|
6
|
+
import { OTPInput, OTPInputContext, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "input-otp";
|
|
7
|
+
//#region src/components/input-otp.tsx
|
|
8
|
+
function InputOTP({ className, containerClassName, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(OTPInput, {
|
|
10
|
+
"aria-label": "One-time password",
|
|
11
|
+
className: cn(className),
|
|
12
|
+
containerClassName: cn("flex items-center gap-2", "has-disabled:opacity-50", containerClassName),
|
|
13
|
+
"data-slot": "input-otp",
|
|
14
|
+
...props
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function InputOTPGroup({ className, ...props }) {
|
|
18
|
+
return /* @__PURE__ */ jsx("div", {
|
|
19
|
+
className: cn("flex items-center -space-x-px", className),
|
|
20
|
+
"data-slot": "input-otp-group",
|
|
21
|
+
role: "group",
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function InputOTPSlot({ className, index, ...props }) {
|
|
26
|
+
const slot = use(OTPInputContext).slots[index];
|
|
27
|
+
if (slot === void 0) throw new Error(`InputOTPSlot: no slot at index ${index}`);
|
|
28
|
+
const { char, hasFakeCaret, isActive } = slot;
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
30
|
+
className: cn("relative flex size-9 items-center justify-center", "border border-input outline-hidden", "text-sm", "transition-all", "not-has-disabled:shadow-xs", "first:rounded-l-lg", "last:rounded-r-lg", "aria-invalid:border-destructive", "dark:bg-input/30", "data-active:z-10 data-active:border-ring data-active:ring-3 data-active:ring-ring/50", "data-active:aria-invalid:border-destructive data-active:aria-invalid:ring-destructive/20", "dark:data-active:aria-invalid:ring-destructive/40", className),
|
|
31
|
+
"data-active": isActive,
|
|
32
|
+
"data-slot": "input-otp-slot",
|
|
33
|
+
...props,
|
|
34
|
+
children: [char, hasFakeCaret ? /* @__PURE__ */ jsx("div", {
|
|
35
|
+
className: cn("absolute inset-0 flex items-center justify-center", "pointer-events-none"),
|
|
36
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("h-4 w-px", "bg-foreground", "animate-caret-blink", "animation-duration-1000") })
|
|
37
|
+
}) : null]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function InputOTPSeparator({ ...props }) {
|
|
41
|
+
return /* @__PURE__ */ jsx("div", {
|
|
42
|
+
"data-slot": "input-otp-separator",
|
|
43
|
+
...props,
|
|
44
|
+
children: /* @__PURE__ */ jsx(MinusIcon, {})
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InputGroupInput } from "./input-group.mjs";
|
|
2
|
+
import { ComponentProps, JSX } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/input-password.d.ts
|
|
5
|
+
type InputPasswordProps = Omit<ComponentProps<typeof InputGroupInput>, "type">;
|
|
6
|
+
declare function InputPassword({
|
|
7
|
+
className,
|
|
8
|
+
disabled,
|
|
9
|
+
readOnly,
|
|
10
|
+
...props
|
|
11
|
+
}: InputPasswordProps): JSX.Element;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { InputPassword, type InputPasswordProps };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { InputGroup, InputGroupButton, InputGroupInput } from "./input-group.mjs";
|
|
4
|
+
import { EyeIcon, EyeOffIcon } from "lucide-react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useCallback, useState } from "react";
|
|
7
|
+
//#region src/components/input-password.tsx
|
|
8
|
+
function InputPassword({ className, disabled, readOnly, ...props }) {
|
|
9
|
+
const [type, setType] = useState("password");
|
|
10
|
+
const togglePasswordVisibility = useCallback(() => {
|
|
11
|
+
setType((previous) => previous === "password" ? "text" : "password");
|
|
12
|
+
}, []);
|
|
13
|
+
return /* @__PURE__ */ jsxs(InputGroup, {
|
|
14
|
+
className,
|
|
15
|
+
"data-disabled": disabled ? "true" : void 0,
|
|
16
|
+
"data-slot": "input-password",
|
|
17
|
+
children: [/* @__PURE__ */ jsx(InputGroupInput, {
|
|
18
|
+
autoCapitalize: "none",
|
|
19
|
+
"data-slot": "input-password-item",
|
|
20
|
+
disabled,
|
|
21
|
+
readOnly,
|
|
22
|
+
type,
|
|
23
|
+
...props
|
|
24
|
+
}), /* @__PURE__ */ jsx(InputGroupButton, {
|
|
25
|
+
"aria-label": type === "password" ? "Show password" : "Hide password",
|
|
26
|
+
className: cn("rounded-full", "focus-visible:ring-0", "focus-visible:not-disabled:bg-input"),
|
|
27
|
+
"data-slot": "input-password-toggle",
|
|
28
|
+
disabled,
|
|
29
|
+
size: "icon-sm",
|
|
30
|
+
type: "button",
|
|
31
|
+
variant: "ghost",
|
|
32
|
+
onClick: togglePasswordVisibility,
|
|
33
|
+
children: type === "password" ? /* @__PURE__ */ jsx(EyeOffIcon, {}) : /* @__PURE__ */ jsx(EyeIcon, {})
|
|
34
|
+
})]
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { InputPassword };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { InputGroupInput } from "./input-group.mjs";
|
|
2
|
+
import { ComponentProps, JSX } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/input-search.d.ts
|
|
5
|
+
interface InputSearchProps extends Omit<ComponentProps<typeof InputGroupInput>, "defaultValue" | "onChange" | "type" | "value"> {
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
onChange?: (value?: string) => void;
|
|
8
|
+
value?: string;
|
|
9
|
+
}
|
|
10
|
+
declare function InputSearch({
|
|
11
|
+
className,
|
|
12
|
+
defaultValue,
|
|
13
|
+
disabled,
|
|
14
|
+
onChange,
|
|
15
|
+
readOnly,
|
|
16
|
+
value: valueProperty,
|
|
17
|
+
...props
|
|
18
|
+
}: InputSearchProps): JSX.Element;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { InputSearch, type InputSearchProps };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from "./input-group.mjs";
|
|
4
|
+
import { SearchIcon, XIcon } from "lucide-react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
7
|
+
//#region src/components/input-search.tsx
|
|
8
|
+
function InputSearch({ className, defaultValue, disabled, onChange, readOnly, value: valueProperty, ...props }) {
|
|
9
|
+
const [value, setValue] = useControllableState({
|
|
10
|
+
defaultProp: defaultValue,
|
|
11
|
+
onChange,
|
|
12
|
+
prop: valueProperty
|
|
13
|
+
});
|
|
14
|
+
return /* @__PURE__ */ jsxs(InputGroup, {
|
|
15
|
+
className,
|
|
16
|
+
"data-disabled": disabled ? "true" : void 0,
|
|
17
|
+
"data-slot": "input-search",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ jsx(InputGroupAddon, {
|
|
20
|
+
align: "inline-start",
|
|
21
|
+
children: /* @__PURE__ */ jsx(SearchIcon, {})
|
|
22
|
+
}),
|
|
23
|
+
/* @__PURE__ */ jsx(InputGroupInput, {
|
|
24
|
+
"data-slot": "input-search-item",
|
|
25
|
+
disabled,
|
|
26
|
+
readOnly,
|
|
27
|
+
type: "search",
|
|
28
|
+
value: value ?? "",
|
|
29
|
+
onChange: (event) => {
|
|
30
|
+
setValue(event.target.value);
|
|
31
|
+
},
|
|
32
|
+
...props
|
|
33
|
+
}),
|
|
34
|
+
value ? /* @__PURE__ */ jsx(InputGroupButton, {
|
|
35
|
+
"aria-label": "Clear search",
|
|
36
|
+
className: cn("rounded-full", "focus-visible:ring-0", "focus-visible:not-disabled:bg-input"),
|
|
37
|
+
"data-slot": "input-search-clear",
|
|
38
|
+
disabled: disabled ?? readOnly,
|
|
39
|
+
size: "icon-sm",
|
|
40
|
+
variant: "ghost",
|
|
41
|
+
onClick: () => {
|
|
42
|
+
setValue("");
|
|
43
|
+
},
|
|
44
|
+
children: /* @__PURE__ */ jsx(XIcon, {})
|
|
45
|
+
}) : null
|
|
46
|
+
]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export { InputSearch };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComponentProps, JSX } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/input.d.ts
|
|
4
|
+
type InputProps = ComponentProps<"input">;
|
|
5
|
+
declare function Input({
|
|
6
|
+
className,
|
|
7
|
+
type,
|
|
8
|
+
...props
|
|
9
|
+
}: InputProps): JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Input, type InputProps };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/input.tsx
|
|
5
|
+
function Input({ className, type, ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx("input", {
|
|
7
|
+
className: cn("h-9 w-full min-w-0 px-3 py-1", "rounded-lg border border-input", "bg-transparent shadow-xs outline-none", "text-base", "transition-[color,box-shadow]", "selection:bg-primary selection:text-primary-foreground", "file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground", "placeholder:text-muted-foreground", "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50", "md:text-sm", "dark:bg-input/30", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", "dark:aria-invalid:ring-destructive/40", className),
|
|
8
|
+
"data-slot": "input",
|
|
9
|
+
type,
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Input };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { VariantProps } from "../lib/utils.mjs";
|
|
2
|
+
import { Separator } from "./separator.mjs";
|
|
3
|
+
import * as _$_codefast_tailwind_variants0 from "@codefast/tailwind-variants";
|
|
4
|
+
import { ComponentProps, JSX } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/components/item.d.ts
|
|
7
|
+
declare const itemVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
|
|
8
|
+
size: {
|
|
9
|
+
default: string[];
|
|
10
|
+
sm: string[];
|
|
11
|
+
};
|
|
12
|
+
variant: {
|
|
13
|
+
default: string;
|
|
14
|
+
muted: string;
|
|
15
|
+
outline: string;
|
|
16
|
+
};
|
|
17
|
+
}, Record<string, never>>;
|
|
18
|
+
declare const itemMediaVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
|
|
19
|
+
variant: {
|
|
20
|
+
default: string;
|
|
21
|
+
icon: string[];
|
|
22
|
+
image: string[];
|
|
23
|
+
};
|
|
24
|
+
}, Record<string, never>>;
|
|
25
|
+
type ItemGroupProps = ComponentProps<"div">;
|
|
26
|
+
declare function ItemGroup({
|
|
27
|
+
className,
|
|
28
|
+
...props
|
|
29
|
+
}: ItemGroupProps): JSX.Element;
|
|
30
|
+
type ItemSeparatorProps = ComponentProps<typeof Separator>;
|
|
31
|
+
declare function ItemSeparator({
|
|
32
|
+
className,
|
|
33
|
+
...props
|
|
34
|
+
}: ItemSeparatorProps): JSX.Element;
|
|
35
|
+
type ItemProps = ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
|
|
36
|
+
asChild?: boolean;
|
|
37
|
+
};
|
|
38
|
+
declare function Item({
|
|
39
|
+
asChild,
|
|
40
|
+
className,
|
|
41
|
+
size,
|
|
42
|
+
variant,
|
|
43
|
+
...props
|
|
44
|
+
}: ItemProps): JSX.Element;
|
|
45
|
+
type ItemMediaProps = ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>;
|
|
46
|
+
declare function ItemMedia({
|
|
47
|
+
className,
|
|
48
|
+
variant,
|
|
49
|
+
...props
|
|
50
|
+
}: ItemMediaProps): JSX.Element;
|
|
51
|
+
type ItemContentProps = ComponentProps<"div">;
|
|
52
|
+
declare function ItemContent({
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
}: ItemContentProps): JSX.Element;
|
|
56
|
+
type ItemTitleProps = ComponentProps<"div">;
|
|
57
|
+
declare function ItemTitle({
|
|
58
|
+
className,
|
|
59
|
+
...props
|
|
60
|
+
}: ItemTitleProps): JSX.Element;
|
|
61
|
+
type ItemDescriptionProps = ComponentProps<"p">;
|
|
62
|
+
declare function ItemDescription({
|
|
63
|
+
className,
|
|
64
|
+
...props
|
|
65
|
+
}: ItemDescriptionProps): JSX.Element;
|
|
66
|
+
type ItemActionsProps = ComponentProps<"div">;
|
|
67
|
+
declare function ItemActions({
|
|
68
|
+
className,
|
|
69
|
+
...props
|
|
70
|
+
}: ItemActionsProps): JSX.Element;
|
|
71
|
+
type ItemHeaderProps = ComponentProps<"div">;
|
|
72
|
+
declare function ItemHeader({
|
|
73
|
+
className,
|
|
74
|
+
...props
|
|
75
|
+
}: ItemHeaderProps): JSX.Element;
|
|
76
|
+
type ItemFooterProps = ComponentProps<"div">;
|
|
77
|
+
declare function ItemFooter({
|
|
78
|
+
className,
|
|
79
|
+
...props
|
|
80
|
+
}: ItemFooterProps): JSX.Element;
|
|
81
|
+
//#endregion
|
|
82
|
+
export { Item, ItemActions, type ItemActionsProps, ItemContent, type ItemContentProps, ItemDescription, type ItemDescriptionProps, ItemFooter, type ItemFooterProps, ItemGroup, type ItemGroupProps, ItemHeader, type ItemHeaderProps, ItemMedia, type ItemMediaProps, type ItemProps, ItemSeparator, type ItemSeparatorProps, ItemTitle, type ItemTitleProps, itemMediaVariants, itemVariants };
|