jaci-ui 0.9.4 → 1.0.2
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 +25 -0
- package/README.md +11 -1
- package/dist/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/components/accordion/accordion.cjs.map +1 -1
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert/alert.cjs.map +1 -1
- package/dist/components/alert/alert.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.cjs.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/aspect-ratio/aspect-ratio.cjs.map +1 -1
- package/dist/components/avatar/avatar.cjs.map +1 -1
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.cjs.map +1 -1
- package/dist/components/button/button.cjs +1 -0
- package/dist/components/button/button.cjs.map +1 -1
- package/dist/components/button/button.d.cts +2 -1
- package/dist/components/button/button.d.ts +2 -1
- package/dist/components/button/button.js +1 -0
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.cjs.map +1 -1
- package/dist/components/calendar/calendar.cjs +4 -6
- package/dist/components/calendar/calendar.cjs.map +1 -1
- package/dist/components/calendar/calendar.js +4 -6
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/card/card.cjs.map +1 -1
- package/dist/components/carousel/carousel.cjs.map +1 -1
- package/dist/components/carousel/carousel.js.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.cjs +7 -3
- package/dist/components/checkbox-group/checkbox-group.cjs.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.js +7 -3
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/code/code.cjs.map +1 -1
- package/dist/components/code/code.js.map +1 -1
- package/dist/components/collapsible/collapsible.cjs.map +1 -1
- package/dist/components/collapsible/collapsible.js.map +1 -1
- package/dist/components/color-picker/color-picker.cjs.map +1 -1
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-picker/color-utils.cjs +5 -3
- package/dist/components/color-picker/color-utils.cjs.map +1 -1
- package/dist/components/color-picker/color-utils.js +5 -3
- package/dist/components/color-picker/color-utils.js.map +1 -1
- package/dist/components/color-swatch/color-swatch.cjs.map +1 -1
- package/dist/components/combobox/combobox.cjs +2 -1
- package/dist/components/combobox/combobox.cjs.map +1 -1
- package/dist/components/combobox/combobox.js +2 -1
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/command/command.cjs.map +1 -1
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/context-menu/context-menu.cjs.map +1 -1
- package/dist/components/context-menu/context-menu.d.cts +2 -2
- package/dist/components/context-menu/context-menu.d.ts +2 -2
- package/dist/components/controls/checkbox.cjs.map +1 -1
- package/dist/components/controls/checkbox.js.map +1 -1
- package/dist/components/controls/input.cjs.map +1 -1
- package/dist/components/controls/input.js.map +1 -1
- package/dist/components/controls/radio.cjs.map +1 -1
- package/dist/components/controls/switch.cjs.map +1 -1
- package/dist/components/controls/switch.js.map +1 -1
- package/dist/components/controls/textarea.cjs.map +1 -1
- package/dist/components/controls/textarea.js.map +1 -1
- package/dist/components/copyable/copyable.cjs.map +1 -1
- package/dist/components/copyable/copyable.js.map +1 -1
- package/dist/components/data-toolbar/data-toolbar.cjs.map +1 -1
- package/dist/components/data-toolbar/data-toolbar.js.map +1 -1
- package/dist/components/data-view/data-view.cjs.map +1 -1
- package/dist/components/date-picker/date-picker.cjs +4 -7
- package/dist/components/date-picker/date-picker.cjs.map +1 -1
- package/dist/components/date-picker/date-picker.js +4 -7
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.cjs +4 -6
- package/dist/components/date-range-picker/date-range-picker.cjs.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +4 -6
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/dialog/dialog.cjs.map +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/download-trigger/download-trigger.cjs.map +1 -1
- package/dist/components/drawer/drawer.cjs.map +1 -1
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/empty-state/empty-state.cjs.map +1 -1
- package/dist/components/feedback/badge.cjs.map +1 -1
- package/dist/components/field/field.cjs.map +1 -1
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/fieldset/fieldset.cjs.map +1 -1
- package/dist/components/figure/figure.cjs.map +1 -1
- package/dist/components/figure/figure.js.map +1 -1
- package/dist/components/form/form.cjs.map +1 -1
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/icon-button/icon-button.cjs.map +1 -1
- package/dist/components/icon-button/icon-button.js.map +1 -1
- package/dist/components/image/image.cjs.map +1 -1
- package/dist/components/image/image.js.map +1 -1
- package/dist/components/input-group/input-group.cjs.map +1 -1
- package/dist/components/kbd/kbd.cjs.map +1 -1
- package/dist/components/layout/index.cjs.map +1 -1
- package/dist/components/list/list.cjs.map +1 -1
- package/dist/components/menu/menu.cjs.map +1 -1
- package/dist/components/menu/menu.d.cts +2 -2
- package/dist/components/menu/menu.d.ts +2 -2
- package/dist/components/menubar/menubar.cjs.map +1 -1
- package/dist/components/menubar/menubar.d.cts +2 -2
- package/dist/components/menubar/menubar.d.ts +2 -2
- package/dist/components/menubar/menubar.js.map +1 -1
- package/dist/components/meter/meter.cjs.map +1 -1
- package/dist/components/meter/meter.js.map +1 -1
- package/dist/components/navigation/navigation.cjs.map +1 -1
- package/dist/components/navigation/navigation.js.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.cjs.map +1 -1
- package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
- package/dist/components/number-field/number-field.cjs +2 -1
- package/dist/components/number-field/number-field.cjs.map +1 -1
- package/dist/components/number-field/number-field.js +2 -1
- package/dist/components/number-field/number-field.js.map +1 -1
- package/dist/components/option-selector/option-selector.cjs.map +1 -1
- package/dist/components/option-selector/option-selector.js.map +1 -1
- package/dist/components/pagination/pagination.cjs.map +1 -1
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/pin-input/pin-input.cjs.map +1 -1
- package/dist/components/pin-input/pin-input.js.map +1 -1
- package/dist/components/popover/popover.cjs.map +1 -1
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/progress/progress.cjs.map +1 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/qr-code/qr-code.cjs.map +1 -1
- package/dist/components/qr-code/qr-code.js.map +1 -1
- package/dist/components/quote/quote.cjs.map +1 -1
- package/dist/components/quote/quote.js.map +1 -1
- package/dist/components/radio-group/radio-group.cjs +7 -3
- package/dist/components/radio-group/radio-group.cjs.map +1 -1
- package/dist/components/radio-group/radio-group.js +7 -3
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/range-slider/range-slider.cjs.map +1 -1
- package/dist/components/range-slider/range-slider.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.cjs.map +1 -1
- package/dist/components/select/select.cjs.map +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/sidebar/sidebar.cjs.map +1 -1
- package/dist/components/sidebar/sidebar.js.map +1 -1
- package/dist/components/skeleton/skeleton.cjs.map +1 -1
- package/dist/components/slider/slider.cjs.map +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/spacer/spacer.cjs.map +1 -1
- package/dist/components/stat/stat.cjs.map +1 -1
- package/dist/components/stat/stat.js.map +1 -1
- package/dist/components/stepper/stepper.cjs +2 -1
- package/dist/components/stepper/stepper.cjs.map +1 -1
- package/dist/components/stepper/stepper.js +2 -1
- package/dist/components/stepper/stepper.js.map +1 -1
- package/dist/components/table/table.cjs.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.cjs.map +1 -1
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tags-input/tags-input.cjs +10 -9
- package/dist/components/tags-input/tags-input.cjs.map +1 -1
- package/dist/components/tags-input/tags-input.js +10 -9
- package/dist/components/tags-input/tags-input.js.map +1 -1
- package/dist/components/toast/toast.cjs.map +1 -1
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle.cjs.map +1 -1
- package/dist/components/toggle-group/toggle-group.cjs.map +1 -1
- package/dist/components/toolbar/toolbar.cjs.map +1 -1
- package/dist/components/tooltip/tooltip.cjs.map +1 -1
- package/dist/components/tree-view/tree-view.cjs.map +1 -1
- package/dist/components/tree-view/tree-view.js.map +1 -1
- package/dist/components/typography/heading.cjs.map +1 -1
- package/dist/components/typography/link.cjs.map +1 -1
- package/dist/components/typography/paragraph.cjs.map +1 -1
- package/dist/components/typography/text.cjs.map +1 -1
- package/dist/components/upload/upload.cjs +2 -2
- package/dist/components/upload/upload.cjs.map +1 -1
- package/dist/components/upload/upload.js +2 -2
- package/dist/components/upload/upload.js.map +1 -1
- package/dist/components/visually-hidden/visually-hidden.cjs.map +1 -1
- package/dist/panda-preset.cjs.map +1 -1
- package/dist/styles/theme.cjs +18 -18
- package/dist/styles/theme.cjs.map +1 -1
- package/dist/styles/theme.js +18 -18
- package/dist/styles/theme.js.map +1 -1
- package/dist/styles.css +12 -21
- package/dist/theme/theme-provider.cjs.map +1 -1
- package/dist/theme/theme-provider.js.map +1 -1
- package/dist/theme/theme-scope.cjs.map +1 -1
- package/package.json +9 -9
|
@@ -14,7 +14,7 @@ declare function ContextMenuPortal(props: ContextMenuPortalProps): import("react
|
|
|
14
14
|
type ContextMenuBackdropProps = ComponentPropsWithoutRef<typeof ContextMenu.Backdrop>;
|
|
15
15
|
declare const ContextMenuBackdrop: typeof ContextMenu.Backdrop;
|
|
16
16
|
type ContextMenuPositionerProps = ComponentPropsWithoutRef<typeof ContextMenu.Positioner>;
|
|
17
|
-
declare const ContextMenuPositioner: import("react").ForwardRefExoticComponent<Omit<
|
|
17
|
+
declare const ContextMenuPositioner: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuPositionerProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
18
18
|
type ContextMenuPopupProps = ComponentPropsWithoutRef<typeof ContextMenu.Popup>;
|
|
19
19
|
declare const ContextMenuPopup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
20
20
|
type ContextMenuArrowProps = ComponentPropsWithoutRef<typeof ContextMenu.Arrow>;
|
|
@@ -48,7 +48,7 @@ declare const ContextMenu$1: {
|
|
|
48
48
|
Trigger: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuTriggerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
49
49
|
Portal: typeof ContextMenuPortal;
|
|
50
50
|
Backdrop: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuBackdropProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
51
|
-
Positioner: import("react").ForwardRefExoticComponent<Omit<
|
|
51
|
+
Positioner: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuPositionerProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
52
52
|
Popup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
53
53
|
Arrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuArrowProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
54
54
|
Item: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuItemProps, "ref"> & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -14,7 +14,7 @@ declare function ContextMenuPortal(props: ContextMenuPortalProps): import("react
|
|
|
14
14
|
type ContextMenuBackdropProps = ComponentPropsWithoutRef<typeof ContextMenu.Backdrop>;
|
|
15
15
|
declare const ContextMenuBackdrop: typeof ContextMenu.Backdrop;
|
|
16
16
|
type ContextMenuPositionerProps = ComponentPropsWithoutRef<typeof ContextMenu.Positioner>;
|
|
17
|
-
declare const ContextMenuPositioner: import("react").ForwardRefExoticComponent<Omit<
|
|
17
|
+
declare const ContextMenuPositioner: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuPositionerProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
18
18
|
type ContextMenuPopupProps = ComponentPropsWithoutRef<typeof ContextMenu.Popup>;
|
|
19
19
|
declare const ContextMenuPopup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
20
20
|
type ContextMenuArrowProps = ComponentPropsWithoutRef<typeof ContextMenu.Arrow>;
|
|
@@ -48,7 +48,7 @@ declare const ContextMenu$1: {
|
|
|
48
48
|
Trigger: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuTriggerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
49
49
|
Portal: typeof ContextMenuPortal;
|
|
50
50
|
Backdrop: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuBackdropProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
51
|
-
Positioner: import("react").ForwardRefExoticComponent<Omit<
|
|
51
|
+
Positioner: import("react").ForwardRefExoticComponent<Omit<import("@base-ui/react").ContextMenuPositionerProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
52
52
|
Popup: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuPopupProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
53
53
|
Arrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuArrowProps, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
54
54
|
Item: import("react").ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ContextMenuItemProps, "ref"> & import("react").RefAttributes<HTMLElement>, "ref"> & import("react").RefAttributes<HTMLElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.cjs","names":["checkbox","BaseCheckbox","withRecipeClassName"],"sources":["../../../src/components/controls/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport { forwardRef } from \"react\";\nimport type { ReactNode, Ref } from \"react\";\nimport type { CheckboxRoot as BaseCheckboxRoot } from \"@base-ui/react/checkbox\";\n\nimport { checkbox } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nfunction mergeRefs<T>(...refs: Array<Ref<T> | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n }\n };\n}\n\nexport interface CheckboxProps\n extends Omit<BaseCheckboxRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"onChange\"> {\n className?: string;\n children?: ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { children, className, inputRef, onCheckedChange, ...props },\n ref,\n) {\n const styles = checkbox();\n\n return (\n <BaseCheckbox.Root\n {...props}\n inputRef={mergeRefs(ref, inputRef)}\n onCheckedChange={(checked) => onCheckedChange?.(checked)}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"checkbox\"\n data-slot=\"checkbox\"\n >\n <BaseCheckbox.Indicator\n className={withRecipeClassName(styles.indicator, undefined)}\n data-slot=\"checkbox-indicator\"\n >\n {children ?? \"✓\"}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n});\n"],"mappings":";;;;;;;AAUA,SAAS,UAAa,GAAG,MAAiC;CACxD,QAAQ,UAAoB;EAC1B,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,QAAQ,YACjB,IAAI,KAAK;OACJ,IAAI,KACT,IAAI,UAAU;CAGpB;AACF;AASA,MAAa,YAAA,
|
|
1
|
+
{"version":3,"file":"checkbox.cjs","names":["forwardRef","checkbox","BaseCheckbox","withRecipeClassName"],"sources":["../../../src/components/controls/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport { forwardRef } from \"react\";\nimport type { ReactNode, Ref } from \"react\";\nimport type { CheckboxRoot as BaseCheckboxRoot } from \"@base-ui/react/checkbox\";\n\nimport { checkbox } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nfunction mergeRefs<T>(...refs: Array<Ref<T> | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n }\n };\n}\n\nexport interface CheckboxProps\n extends Omit<BaseCheckboxRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"onChange\"> {\n className?: string;\n children?: ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { children, className, inputRef, onCheckedChange, ...props },\n ref,\n) {\n const styles = checkbox();\n\n return (\n <BaseCheckbox.Root\n {...props}\n inputRef={mergeRefs(ref, inputRef)}\n onCheckedChange={(checked) => onCheckedChange?.(checked)}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"checkbox\"\n data-slot=\"checkbox\"\n >\n <BaseCheckbox.Indicator\n className={withRecipeClassName(styles.indicator, undefined)}\n data-slot=\"checkbox-indicator\"\n >\n {children ?? \"✓\"}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n});\n"],"mappings":";;;;;;;AAUA,SAAS,UAAa,GAAG,MAAiC;CACxD,QAAQ,UAAoB;EAC1B,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,QAAQ,YACjB,IAAI,KAAK;OACJ,IAAI,KACT,IAAI,UAAU;CAGpB;AACF;AASA,MAAa,YAAA,GAAWA,MAAAA,WAAAA,CAA4C,SAAS,SAC3E,EAAE,UAAU,WAAW,UAAU,iBAAiB,GAAG,SACrD,KACA;CACA,MAAM,SAASC,iBAAAA,SAAS;CAExB,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,wBAAAA,SAAa,MAAd;EACE,GAAI;EACJ,UAAU,UAAU,KAAK,QAAQ;EACjC,kBAAkB,YAAY,kBAAkB,OAAO;EACvD,WAAWC,gBAAAA,oBAAoB,OAAO,MAAM,SAAS;EACrD,uBAAoB;EACpB,aAAU;EAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACD,wBAAAA,SAAa,WAAd;GACE,WAAWC,gBAAAA,oBAAoB,OAAO,WAAW,KAAA,CAAS;GAC1D,aAAU;GAET,UAAA,YAAY;EACS,CAAA;CACP,CAAA;AAEvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","names":["Checkbox","BaseCheckbox"],"sources":["../../../src/components/controls/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport { forwardRef } from \"react\";\nimport type { ReactNode, Ref } from \"react\";\nimport type { CheckboxRoot as BaseCheckboxRoot } from \"@base-ui/react/checkbox\";\n\nimport { checkbox } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nfunction mergeRefs<T>(...refs: Array<Ref<T> | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n }\n };\n}\n\nexport interface CheckboxProps\n extends Omit<BaseCheckboxRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"onChange\"> {\n className?: string;\n children?: ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { children, className, inputRef, onCheckedChange, ...props },\n ref,\n) {\n const styles = checkbox();\n\n return (\n <BaseCheckbox.Root\n {...props}\n inputRef={mergeRefs(ref, inputRef)}\n onCheckedChange={(checked) => onCheckedChange?.(checked)}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"checkbox\"\n data-slot=\"checkbox\"\n >\n <BaseCheckbox.Indicator\n className={withRecipeClassName(styles.indicator, undefined)}\n data-slot=\"checkbox-indicator\"\n >\n {children ?? \"✓\"}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n});\n"],"mappings":";;;;;;;AAUA,SAAS,UAAa,GAAG,MAAiC;CACxD,QAAQ,UAAoB;EAC1B,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,QAAQ,YACjB,IAAI,KAAK;OACJ,IAAI,KACT,IAAI,UAAU;CAGpB;AACF;AASA,MAAaA,aAAW,WAA4C,SAASA,WAC3E,EAAE,UAAU,WAAW,UAAU,iBAAiB,GAAG,SACrD,KACA;CACA,MAAM,SAAS,SAAS;CAExB,OACE,oBAACC,SAAa,MAAd;EACE,GAAI;EACJ,UAAU,UAAU,KAAK,QAAQ;EACjC,kBAAkB,YAAY,kBAAkB,OAAO;EACvD,WAAW,oBAAoB,OAAO,MAAM,SAAS;EACrD,uBAAoB;EACpB,aAAU;
|
|
1
|
+
{"version":3,"file":"checkbox.js","names":["Checkbox","BaseCheckbox"],"sources":["../../../src/components/controls/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport { forwardRef } from \"react\";\nimport type { ReactNode, Ref } from \"react\";\nimport type { CheckboxRoot as BaseCheckboxRoot } from \"@base-ui/react/checkbox\";\n\nimport { checkbox } from \"../../styled-system/recipes\";\nimport { withRecipeClassName } from \"../base-ui\";\n\nfunction mergeRefs<T>(...refs: Array<Ref<T> | undefined>) {\n return (value: T | null) => {\n for (const ref of refs) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n }\n };\n}\n\nexport interface CheckboxProps\n extends Omit<BaseCheckboxRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"onChange\"> {\n className?: string;\n children?: ReactNode;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { children, className, inputRef, onCheckedChange, ...props },\n ref,\n) {\n const styles = checkbox();\n\n return (\n <BaseCheckbox.Root\n {...props}\n inputRef={mergeRefs(ref, inputRef)}\n onCheckedChange={(checked) => onCheckedChange?.(checked)}\n className={withRecipeClassName(styles.root, className)}\n data-jaci-component=\"checkbox\"\n data-slot=\"checkbox\"\n >\n <BaseCheckbox.Indicator\n className={withRecipeClassName(styles.indicator, undefined)}\n data-slot=\"checkbox-indicator\"\n >\n {children ?? \"✓\"}\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n );\n});\n"],"mappings":";;;;;;;AAUA,SAAS,UAAa,GAAG,MAAiC;CACxD,QAAQ,UAAoB;EAC1B,KAAK,MAAM,OAAO,MAChB,IAAI,OAAO,QAAQ,YACjB,IAAI,KAAK;OACJ,IAAI,KACT,IAAI,UAAU;CAGpB;AACF;AASA,MAAaA,aAAW,WAA4C,SAASA,WAC3E,EAAE,UAAU,WAAW,UAAU,iBAAiB,GAAG,SACrD,KACA;CACA,MAAM,SAAS,SAAS;CAExB,OACE,oBAACC,SAAa,MAAd;EACE,GAAI;EACJ,UAAU,UAAU,KAAK,QAAQ;EACjC,kBAAkB,YAAY,kBAAkB,OAAO;EACvD,WAAW,oBAAoB,OAAO,MAAM,SAAS;EACrD,uBAAoB;EACpB,aAAU;EAEV,UAAA,oBAACA,SAAa,WAAd;GACE,WAAW,oBAAoB,OAAO,WAAW,KAAA,CAAS;GAC1D,aAAU;GAET,UAAA,YAAY;EACS,CAAA;CACP,CAAA;AAEvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.cjs","names":["useFieldState","cx","input","FieldControl","InputGroup","Spinner"],"sources":["../../../src/components/controls/input.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, Ref } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { input } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface InputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"prefix\" | \"size\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(input({ size }), className),\n \"data-jaci-component\": \"input\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"input\",\n };\n const control = insideField ? (\n <FieldControl {...controlProps} ref={ref as Ref<HTMLElement>} />\n ) : (\n <input {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"input-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAmBA,MAAa,SAAA,
|
|
1
|
+
{"version":3,"file":"input.cjs","names":["forwardRef","useFieldState","cx","input","FieldControl","InputGroup","Spinner"],"sources":["../../../src/components/controls/input.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, Ref } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { input } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface InputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"prefix\" | \"size\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(input({ size }), className),\n \"data-jaci-component\": \"input\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"input\",\n };\n const control = insideField ? (\n <FieldControl {...controlProps} ref={ref as Ref<HTMLElement>} />\n ) : (\n <input {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"input-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAmBA,MAAa,SAAA,GAAQA,MAAAA,WAAAA,CAAyC,SAAS,MACrE,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgBC,cAAAA,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAWC,WAAAA,GAAGC,cAAAA,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS;EACxC,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,cAAD;EAAc,GAAI;EAAmB;CAA0B,CAAA,IAE/D,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EAAO,GAAI;EAAmB;CAAM,CAAA;CAGtC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,oBAAAA,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,WAAW,OAAZ;GAAkB,aAAU;GAAgB,UAAA;EAAyB,CAAA,IACnE;EACH;EACA,UACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,WAAW,OAAZ;GAAkB,eAAY;GAAO,aAAU;GAC7C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,SAAD;IAAS,OAAM;IAAG,MAAK;GAAM,CAAA;EACb,CAAA,IAChB,WAAW,KAAA,IACb,iBAAA,GAAA,kBAAA,IAAA,CAACD,oBAAAA,WAAW,OAAZ;GAAkB,aAAU;GAAgB,UAAA;EAAyB,CAAA,IACnE;CACM,EAAA,CAAA;CAIhB,OAAO;AACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":[],"sources":["../../../src/components/controls/input.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, Ref } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { input } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface InputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"prefix\" | \"size\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(input({ size }), className),\n \"data-jaci-component\": \"input\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"input\",\n };\n const control = insideField ? (\n <FieldControl {...controlProps} ref={ref as Ref<HTMLElement>} />\n ) : (\n <input {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"input-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAmBA,MAAa,QAAQ,WAAyC,SAAS,MACrE,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS;EACxC,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,oBAAC,cAAD;EAAc,GAAI;EAAmB;CAA0B,CAAA,IAE/D,oBAAC,SAAD;EAAO,GAAI;EAAmB;CAAM,CAAA;CAGtC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,qBAAC,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,oBAAC,WAAW,OAAZ;GAAkB,aAAU;
|
|
1
|
+
{"version":3,"file":"input.js","names":[],"sources":["../../../src/components/controls/input.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, Ref } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { input } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface InputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"prefix\" | \"size\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(input({ size }), className),\n \"data-jaci-component\": \"input\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"input\",\n };\n const control = insideField ? (\n <FieldControl {...controlProps} ref={ref as Ref<HTMLElement>} />\n ) : (\n <input {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"input-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"input-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAmBA,MAAa,QAAQ,WAAyC,SAAS,MACrE,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,SAAS;EACxC,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,oBAAC,cAAD;EAAc,GAAI;EAAmB;CAA0B,CAAA,IAE/D,oBAAC,SAAD;EAAO,GAAI;EAAmB;CAAM,CAAA;CAGtC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,qBAAC,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,oBAAC,WAAW,OAAZ;GAAkB,aAAU;GAAgB,UAAA;EAAyB,CAAA,IACnE;EACH;EACA,UACC,oBAAC,WAAW,OAAZ;GAAkB,eAAY;GAAO,aAAU;GAC7C,UAAA,oBAAC,SAAD;IAAS,OAAM;IAAG,MAAK;GAAM,CAAA;EACb,CAAA,IAChB,WAAW,KAAA,IACb,oBAAC,WAAW,OAAZ;GAAkB,aAAU;GAAgB,UAAA;EAAyB,CAAA,IACnE;CACM,EAAA,CAAA;CAIhB,OAAO;AACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio.cjs","names":["cx","radioGroup"],"sources":["../../../src/components/controls/radio.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { radioGroup } from \"../../styled-system/recipes\";\n\nexport type RadioProps = Omit<ComponentPropsWithoutRef<\"input\">, \"type\" | \"size\">;\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { className, ...props },\n ref,\n) {\n return (\n <input\n {...props}\n ref={ref}\n className={cx(radioGroup().radio, className)}\n data-jaci-component=\"radio\"\n data-slot=\"radio\"\n type=\"radio\"\n />\n );\n});\n"],"mappings":";;;;;;AAUA,MAAa,SAAA,
|
|
1
|
+
{"version":3,"file":"radio.cjs","names":["forwardRef","cx","radioGroup"],"sources":["../../../src/components/controls/radio.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { radioGroup } from \"../../styled-system/recipes\";\n\nexport type RadioProps = Omit<ComponentPropsWithoutRef<\"input\">, \"type\" | \"size\">;\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { className, ...props },\n ref,\n) {\n return (\n <input\n {...props}\n ref={ref}\n className={cx(radioGroup().radio, className)}\n data-jaci-component=\"radio\"\n data-slot=\"radio\"\n type=\"radio\"\n />\n );\n});\n"],"mappings":";;;;;;AAUA,MAAa,SAAA,GAAQA,MAAAA,WAAAA,CAAyC,SAAS,MACrE,EAAE,WAAW,GAAG,SAChB,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EACE,GAAI;EACC;EACL,WAAWC,WAAAA,GAAGC,oBAAAA,WAAW,CAAC,CAAC,OAAO,SAAS;EAC3C,uBAAoB;EACpB,aAAU;EACV,MAAK;CACN,CAAA;AAEL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.cjs","names":["BaseSwitch","cx","toggleSwitch"],"sources":["../../../src/components/controls/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport { forwardRef } from \"react\";\nimport type { Ref } from \"react\";\nimport type { SwitchRoot as BaseSwitchRoot } from \"@base-ui/react/switch\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { toggleSwitch } from \"../../styled-system/recipes\";\n\nexport interface SwitchProps\n extends Omit<BaseSwitchRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"render\"> {\n className?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n { checked, className, disabled, onCheckedChange, ...props },\n ref,\n) {\n return (\n <BaseSwitch.Root\n {...props}\n checked={checked}\n disabled={disabled}\n nativeButton\n render={<button type=\"button\" />}\n ref={ref as Ref<HTMLElement>}\n className={(state) => cx(toggleSwitch({ checked: state.checked }).root, className)}\n onCheckedChange={(nextChecked) => onCheckedChange?.(nextChecked)}\n data-jaci-component=\"switch\"\n data-slot=\"switch\"\n >\n <BaseSwitch.Thumb\n aria-hidden=\"true\"\n className={(state) => cx(toggleSwitch({ checked: state.checked }).thumb)}\n data-slot=\"switch-thumb\"\n />\n </BaseSwitch.Root>\n );\n});\n"],"mappings":";;;;;;;AAgBA,MAAa,UAAA,
|
|
1
|
+
{"version":3,"file":"switch.cjs","names":["forwardRef","BaseSwitch","cx","toggleSwitch"],"sources":["../../../src/components/controls/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport { forwardRef } from \"react\";\nimport type { Ref } from \"react\";\nimport type { SwitchRoot as BaseSwitchRoot } from \"@base-ui/react/switch\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { toggleSwitch } from \"../../styled-system/recipes\";\n\nexport interface SwitchProps\n extends Omit<BaseSwitchRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"render\"> {\n className?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n { checked, className, disabled, onCheckedChange, ...props },\n ref,\n) {\n return (\n <BaseSwitch.Root\n {...props}\n checked={checked}\n disabled={disabled}\n nativeButton\n render={<button type=\"button\" />}\n ref={ref as Ref<HTMLElement>}\n className={(state) => cx(toggleSwitch({ checked: state.checked }).root, className)}\n onCheckedChange={(nextChecked) => onCheckedChange?.(nextChecked)}\n data-jaci-component=\"switch\"\n data-slot=\"switch\"\n >\n <BaseSwitch.Thumb\n aria-hidden=\"true\"\n className={(state) => cx(toggleSwitch({ checked: state.checked }).thumb)}\n data-slot=\"switch-thumb\"\n />\n </BaseSwitch.Root>\n );\n});\n"],"mappings":";;;;;;;AAgBA,MAAa,UAAA,GAASA,MAAAA,WAAAA,CAA2C,SAAS,OACxE,EAAE,SAAS,WAAW,UAAU,iBAAiB,GAAG,SACpD,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,sBAAAA,OAAW,MAAZ;EACE,GAAI;EACK;EACC;EACV,cAAA;EACA,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD,EAAQ,MAAK,SAAU,CAAA;EAC1B;EACL,YAAY,UAAUC,WAAAA,GAAGC,sBAAAA,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS;EACjF,kBAAkB,gBAAgB,kBAAkB,WAAW;EAC/D,uBAAoB;EACpB,aAAU;EAEV,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACF,sBAAAA,OAAW,OAAZ;GACE,eAAY;GACZ,YAAY,UAAUC,WAAAA,GAAGC,sBAAAA,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK;GACvE,aAAU;EACX,CAAA;CACc,CAAA;AAErB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","names":["Switch","BaseSwitch"],"sources":["../../../src/components/controls/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport { forwardRef } from \"react\";\nimport type { Ref } from \"react\";\nimport type { SwitchRoot as BaseSwitchRoot } from \"@base-ui/react/switch\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { toggleSwitch } from \"../../styled-system/recipes\";\n\nexport interface SwitchProps\n extends Omit<BaseSwitchRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"render\"> {\n className?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n { checked, className, disabled, onCheckedChange, ...props },\n ref,\n) {\n return (\n <BaseSwitch.Root\n {...props}\n checked={checked}\n disabled={disabled}\n nativeButton\n render={<button type=\"button\" />}\n ref={ref as Ref<HTMLElement>}\n className={(state) => cx(toggleSwitch({ checked: state.checked }).root, className)}\n onCheckedChange={(nextChecked) => onCheckedChange?.(nextChecked)}\n data-jaci-component=\"switch\"\n data-slot=\"switch\"\n >\n <BaseSwitch.Thumb\n aria-hidden=\"true\"\n className={(state) => cx(toggleSwitch({ checked: state.checked }).thumb)}\n data-slot=\"switch-thumb\"\n />\n </BaseSwitch.Root>\n );\n});\n"],"mappings":";;;;;;;AAgBA,MAAaA,WAAS,WAA2C,SAASA,SACxE,EAAE,SAAS,WAAW,UAAU,iBAAiB,GAAG,SACpD,KACA;CACA,OACE,oBAACC,OAAW,MAAZ;EACE,GAAI;EACK;EACC;EACV,cAAA;EACA,QAAQ,oBAAC,UAAD,EAAQ,MAAK,SAAU,CAAA;EAC1B;EACL,YAAY,UAAU,GAAG,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS;EACjF,kBAAkB,gBAAgB,kBAAkB,WAAW;EAC/D,uBAAoB;EACpB,aAAU;
|
|
1
|
+
{"version":3,"file":"switch.js","names":["Switch","BaseSwitch"],"sources":["../../../src/components/controls/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport { forwardRef } from \"react\";\nimport type { Ref } from \"react\";\nimport type { SwitchRoot as BaseSwitchRoot } from \"@base-ui/react/switch\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { toggleSwitch } from \"../../styled-system/recipes\";\n\nexport interface SwitchProps\n extends Omit<BaseSwitchRoot.Props, \"children\" | \"className\" | \"onCheckedChange\" | \"render\"> {\n className?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(function Switch(\n { checked, className, disabled, onCheckedChange, ...props },\n ref,\n) {\n return (\n <BaseSwitch.Root\n {...props}\n checked={checked}\n disabled={disabled}\n nativeButton\n render={<button type=\"button\" />}\n ref={ref as Ref<HTMLElement>}\n className={(state) => cx(toggleSwitch({ checked: state.checked }).root, className)}\n onCheckedChange={(nextChecked) => onCheckedChange?.(nextChecked)}\n data-jaci-component=\"switch\"\n data-slot=\"switch\"\n >\n <BaseSwitch.Thumb\n aria-hidden=\"true\"\n className={(state) => cx(toggleSwitch({ checked: state.checked }).thumb)}\n data-slot=\"switch-thumb\"\n />\n </BaseSwitch.Root>\n );\n});\n"],"mappings":";;;;;;;AAgBA,MAAaA,WAAS,WAA2C,SAASA,SACxE,EAAE,SAAS,WAAW,UAAU,iBAAiB,GAAG,SACpD,KACA;CACA,OACE,oBAACC,OAAW,MAAZ;EACE,GAAI;EACK;EACC;EACV,cAAA;EACA,QAAQ,oBAAC,UAAD,EAAQ,MAAK,SAAU,CAAA;EAC1B;EACL,YAAY,UAAU,GAAG,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS;EACjF,kBAAkB,gBAAgB,kBAAkB,WAAW;EAC/D,uBAAoB;EACpB,aAAU;EAEV,UAAA,oBAACA,OAAW,OAAZ;GACE,eAAY;GACZ,YAAY,UAAU,GAAG,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK;GACvE,aAAU;EACX,CAAA;CACc,CAAA;AAErB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.cjs","names":["useFieldState","cx","textarea","FieldControl","InputGroup","Spinner"],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, ReactNode, Ref } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface TextareaProps extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"prefix\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"textarea\",\n };\n const control = insideField ? (\n <FieldControl\n {...(controlProps as unknown as ComponentProps<typeof FieldControl>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n ) : (\n <textarea {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"textarea-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,YAAA,
|
|
1
|
+
{"version":3,"file":"textarea.cjs","names":["forwardRef","useFieldState","cx","textarea","FieldControl","InputGroup","Spinner"],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, ReactNode, Ref } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface TextareaProps extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"prefix\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"textarea\",\n };\n const control = insideField ? (\n <FieldControl\n {...(controlProps as unknown as ComponentProps<typeof FieldControl>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n ) : (\n <textarea {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"textarea-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,YAAA,GAAWA,MAAAA,WAAAA,CAA+C,SAAS,SAC9E,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgBC,cAAAA,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAWC,WAAAA,GAAGC,iBAAAA,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3C,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,cAAD;EACE,GAAK;EACA;EACL,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD,CAAW,CAAA;CACpB,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD;EAAU,GAAI;EAAmB;CAAM,CAAA;CAGzC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,oBAAAA,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,WAAW,OAAZ;GAAkB,aAAU;GAAmB,UAAA;EAAyB,CAAA,IACtE;EACH;EACA,UACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,WAAW,OAAZ;GAAkB,eAAY;GAAO,aAAU;GAC7C,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,SAAD;IAAS,OAAM;IAAG,MAAK;GAAM,CAAA;EACb,CAAA,IAChB,WAAW,KAAA,IACb,iBAAA,GAAA,kBAAA,IAAA,CAACD,oBAAAA,WAAW,OAAZ;GAAkB,aAAU;GAAmB,UAAA;EAAyB,CAAA,IACtE;CACM,EAAA,CAAA;CAIhB,OAAO;AACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, ReactNode, Ref } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface TextareaProps extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"prefix\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"textarea\",\n };\n const control = insideField ? (\n <FieldControl\n {...(controlProps as unknown as ComponentProps<typeof FieldControl>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n ) : (\n <textarea {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"textarea-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,WAAW,WAA+C,SAAS,SAC9E,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3C,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,oBAAC,cAAD;EACE,GAAK;EACA;EACL,QAAQ,oBAAC,YAAD,CAAW,CAAA;CACpB,CAAA,IAED,oBAAC,YAAD;EAAU,GAAI;EAAmB;CAAM,CAAA;CAGzC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,qBAAC,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,oBAAC,WAAW,OAAZ;GAAkB,aAAU;
|
|
1
|
+
{"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, ReactNode, Ref } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface TextareaProps extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"prefix\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"textarea\",\n };\n const control = insideField ? (\n <FieldControl\n {...(controlProps as unknown as ComponentProps<typeof FieldControl>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n ) : (\n <textarea {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"textarea-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,WAAW,WAA+C,SAAS,SAC9E,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3C,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,oBAAC,cAAD;EACE,GAAK;EACA;EACL,QAAQ,oBAAC,YAAD,CAAW,CAAA;CACpB,CAAA,IAED,oBAAC,YAAD;EAAU,GAAI;EAAmB;CAAM,CAAA;CAGzC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,qBAAC,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,oBAAC,WAAW,OAAZ;GAAkB,aAAU;GAAmB,UAAA;EAAyB,CAAA,IACtE;EACH;EACA,UACC,oBAAC,WAAW,OAAZ;GAAkB,eAAY;GAAO,aAAU;GAC7C,UAAA,oBAAC,SAAD;IAAS,OAAM;IAAG,MAAK;GAAM,CAAA;EACb,CAAA,IAChB,WAAW,KAAA,IACb,oBAAC,WAAW,OAAZ;GAAkB,aAAU;GAAmB,UAAA;EAAyB,CAAA,IACtE;CACM,EAAA,CAAA;CAIhB,OAAO;AACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyable.cjs","names":["copyable","cx","Component"],"sources":["../../../src/components/copyable/copyable.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useEffect, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, MouseEvent, MouseEventHandler, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { copyable } from \"../../styled-system/recipes\";\n\ninterface CopyableContextValue {\n copied: boolean;\n copiedLabel: string;\n styles: ReturnType<typeof copyable>;\n}\n\nconst CopyableContext = createContext<CopyableContextValue | null>(null);\n\nfunction useCopyableContext() {\n const context = useContext(CopyableContext);\n if (!context) {\n throw new Error(\"Copyable parts must be rendered inside Copyable.Root.\");\n }\n\n return context;\n}\n\nasync function copyToClipboard(value: string) {\n let primaryError: unknown;\n\n if (typeof navigator !== \"undefined\" && typeof navigator.clipboard?.writeText === \"function\") {\n try {\n await navigator.clipboard.writeText(value);\n return;\n } catch (error) {\n primaryError = error;\n }\n }\n\n if (typeof document !== \"undefined\" && typeof document.execCommand === \"function\") {\n const textarea = document.createElement(\"textarea\");\n const selection = document.getSelection();\n const ranges = selection\n ? Array.from({ length: selection.rangeCount }, (_, index) => selection.getRangeAt(index))\n : [];\n\n textarea.value = value;\n textarea.setAttribute(\"readonly\", \"true\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n\n try {\n if (document.execCommand(\"copy\")) {\n return;\n }\n } finally {\n textarea.remove();\n selection?.removeAllRanges();\n for (const range of ranges) {\n selection?.addRange(range);\n }\n }\n }\n\n throw primaryError instanceof Error\n ? primaryError\n : new Error(\"Clipboard access is unavailable.\");\n}\n\nexport interface CopyableRootProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\" | \"onClick\" | \"onCopy\"> {\n children?: ReactNode;\n copiedDuration?: number;\n copiedLabel?: string;\n copyLabel?: string;\n onCopy?: (value: string) => void;\n onError?: (error: unknown) => void;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n value: string;\n}\n\nexport const CopyableRoot = forwardRef<HTMLButtonElement, CopyableRootProps>(function CopyableRoot(\n {\n \"aria-label\": ariaLabel,\n children,\n className,\n copiedDuration = 1500,\n copiedLabel = \"Copied\",\n copyLabel = \"Copy to clipboard\",\n disabled = false,\n onClick,\n onCopy,\n onError,\n value,\n ...props\n },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const styles = copyable();\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n async function handleCopy() {\n try {\n await copyToClipboard(value);\n setCopied(true);\n onCopy?.(value);\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => setCopied(false), copiedDuration);\n } catch (error) {\n setCopied(false);\n onError?.(error);\n }\n }\n\n return (\n <CopyableContext.Provider value={{ copied, copiedLabel, styles }}>\n <button\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? copyLabel}\n className={cx(styles.root, className)}\n data-copied={copied || undefined}\n data-disabled={disabled || undefined}\n data-jaci-component=\"copyable\"\n data-slot=\"copyable\"\n disabled={disabled}\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n void handleCopy();\n }\n }}\n type=\"button\"\n >\n {children ?? <CopyableContent>{value}</CopyableContent>}\n <span aria-live=\"polite\" className={styles.status} data-slot=\"copyable-status\">\n {copied ? copiedLabel : \"\"}\n </span>\n </button>\n </CopyableContext.Provider>\n );\n});\n\nexport interface CopyableContentProps extends Omit<ComponentPropsWithoutRef<\"code\">, \"as\"> {\n as?: \"code\" | \"span\";\n}\n\nexport const CopyableContent = forwardRef<HTMLElement, CopyableContentProps>(\n function CopyableContent({ as = \"code\", className, ...props }, ref) {\n const { styles } = useCopyableContext();\n const Component = as;\n\n return (\n <Component\n {...props}\n ref={ref as never}\n className={cx(styles.content, className)}\n data-slot=\"copyable-content\"\n />\n );\n },\n);\n\nexport type CopyableIndicatorProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const CopyableIndicator = forwardRef<HTMLSpanElement, CopyableIndicatorProps>(\n function CopyableIndicator({ children, className, ...props }, ref) {\n const { copied, copiedLabel, styles } = useCopyableContext();\n\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden={props[\"aria-hidden\"] ?? true}\n className={cx(styles.indicator, className)}\n data-copied={copied || undefined}\n data-slot=\"copyable-indicator\"\n >\n {children ?? (copied ? copiedLabel : \"Copy\")}\n </span>\n );\n },\n);\n\nexport const Copyable = {\n Root: CopyableRoot,\n Content: CopyableContent,\n Indicator: CopyableIndicator,\n};\n"],"mappings":";;;;;;AAcA,MAAM,mBAAA,
|
|
1
|
+
{"version":3,"file":"copyable.cjs","names":["createContext","useContext","forwardRef","useState","useRef","copyable","cx","Component"],"sources":["../../../src/components/copyable/copyable.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useEffect, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, MouseEvent, MouseEventHandler, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { copyable } from \"../../styled-system/recipes\";\n\ninterface CopyableContextValue {\n copied: boolean;\n copiedLabel: string;\n styles: ReturnType<typeof copyable>;\n}\n\nconst CopyableContext = createContext<CopyableContextValue | null>(null);\n\nfunction useCopyableContext() {\n const context = useContext(CopyableContext);\n if (!context) {\n throw new Error(\"Copyable parts must be rendered inside Copyable.Root.\");\n }\n\n return context;\n}\n\nasync function copyToClipboard(value: string) {\n let primaryError: unknown;\n\n if (typeof navigator !== \"undefined\" && typeof navigator.clipboard?.writeText === \"function\") {\n try {\n await navigator.clipboard.writeText(value);\n return;\n } catch (error) {\n primaryError = error;\n }\n }\n\n if (typeof document !== \"undefined\" && typeof document.execCommand === \"function\") {\n const textarea = document.createElement(\"textarea\");\n const selection = document.getSelection();\n const ranges = selection\n ? Array.from({ length: selection.rangeCount }, (_, index) => selection.getRangeAt(index))\n : [];\n\n textarea.value = value;\n textarea.setAttribute(\"readonly\", \"true\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n\n try {\n if (document.execCommand(\"copy\")) {\n return;\n }\n } finally {\n textarea.remove();\n selection?.removeAllRanges();\n for (const range of ranges) {\n selection?.addRange(range);\n }\n }\n }\n\n throw primaryError instanceof Error\n ? primaryError\n : new Error(\"Clipboard access is unavailable.\");\n}\n\nexport interface CopyableRootProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\" | \"onClick\" | \"onCopy\"> {\n children?: ReactNode;\n copiedDuration?: number;\n copiedLabel?: string;\n copyLabel?: string;\n onCopy?: (value: string) => void;\n onError?: (error: unknown) => void;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n value: string;\n}\n\nexport const CopyableRoot = forwardRef<HTMLButtonElement, CopyableRootProps>(function CopyableRoot(\n {\n \"aria-label\": ariaLabel,\n children,\n className,\n copiedDuration = 1500,\n copiedLabel = \"Copied\",\n copyLabel = \"Copy to clipboard\",\n disabled = false,\n onClick,\n onCopy,\n onError,\n value,\n ...props\n },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const styles = copyable();\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n async function handleCopy() {\n try {\n await copyToClipboard(value);\n setCopied(true);\n onCopy?.(value);\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => setCopied(false), copiedDuration);\n } catch (error) {\n setCopied(false);\n onError?.(error);\n }\n }\n\n return (\n <CopyableContext.Provider value={{ copied, copiedLabel, styles }}>\n <button\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? copyLabel}\n className={cx(styles.root, className)}\n data-copied={copied || undefined}\n data-disabled={disabled || undefined}\n data-jaci-component=\"copyable\"\n data-slot=\"copyable\"\n disabled={disabled}\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n void handleCopy();\n }\n }}\n type=\"button\"\n >\n {children ?? <CopyableContent>{value}</CopyableContent>}\n <span aria-live=\"polite\" className={styles.status} data-slot=\"copyable-status\">\n {copied ? copiedLabel : \"\"}\n </span>\n </button>\n </CopyableContext.Provider>\n );\n});\n\nexport interface CopyableContentProps extends Omit<ComponentPropsWithoutRef<\"code\">, \"as\"> {\n as?: \"code\" | \"span\";\n}\n\nexport const CopyableContent = forwardRef<HTMLElement, CopyableContentProps>(\n function CopyableContent({ as = \"code\", className, ...props }, ref) {\n const { styles } = useCopyableContext();\n const Component = as;\n\n return (\n <Component\n {...props}\n ref={ref as never}\n className={cx(styles.content, className)}\n data-slot=\"copyable-content\"\n />\n );\n },\n);\n\nexport type CopyableIndicatorProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const CopyableIndicator = forwardRef<HTMLSpanElement, CopyableIndicatorProps>(\n function CopyableIndicator({ children, className, ...props }, ref) {\n const { copied, copiedLabel, styles } = useCopyableContext();\n\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden={props[\"aria-hidden\"] ?? true}\n className={cx(styles.indicator, className)}\n data-copied={copied || undefined}\n data-slot=\"copyable-indicator\"\n >\n {children ?? (copied ? copiedLabel : \"Copy\")}\n </span>\n );\n },\n);\n\nexport const Copyable = {\n Root: CopyableRoot,\n Content: CopyableContent,\n Indicator: CopyableIndicator,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyable.js","names":["Component"],"sources":["../../../src/components/copyable/copyable.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useEffect, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, MouseEvent, MouseEventHandler, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { copyable } from \"../../styled-system/recipes\";\n\ninterface CopyableContextValue {\n copied: boolean;\n copiedLabel: string;\n styles: ReturnType<typeof copyable>;\n}\n\nconst CopyableContext = createContext<CopyableContextValue | null>(null);\n\nfunction useCopyableContext() {\n const context = useContext(CopyableContext);\n if (!context) {\n throw new Error(\"Copyable parts must be rendered inside Copyable.Root.\");\n }\n\n return context;\n}\n\nasync function copyToClipboard(value: string) {\n let primaryError: unknown;\n\n if (typeof navigator !== \"undefined\" && typeof navigator.clipboard?.writeText === \"function\") {\n try {\n await navigator.clipboard.writeText(value);\n return;\n } catch (error) {\n primaryError = error;\n }\n }\n\n if (typeof document !== \"undefined\" && typeof document.execCommand === \"function\") {\n const textarea = document.createElement(\"textarea\");\n const selection = document.getSelection();\n const ranges = selection\n ? Array.from({ length: selection.rangeCount }, (_, index) => selection.getRangeAt(index))\n : [];\n\n textarea.value = value;\n textarea.setAttribute(\"readonly\", \"true\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n\n try {\n if (document.execCommand(\"copy\")) {\n return;\n }\n } finally {\n textarea.remove();\n selection?.removeAllRanges();\n for (const range of ranges) {\n selection?.addRange(range);\n }\n }\n }\n\n throw primaryError instanceof Error\n ? primaryError\n : new Error(\"Clipboard access is unavailable.\");\n}\n\nexport interface CopyableRootProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\" | \"onClick\" | \"onCopy\"> {\n children?: ReactNode;\n copiedDuration?: number;\n copiedLabel?: string;\n copyLabel?: string;\n onCopy?: (value: string) => void;\n onError?: (error: unknown) => void;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n value: string;\n}\n\nexport const CopyableRoot = forwardRef<HTMLButtonElement, CopyableRootProps>(function CopyableRoot(\n {\n \"aria-label\": ariaLabel,\n children,\n className,\n copiedDuration = 1500,\n copiedLabel = \"Copied\",\n copyLabel = \"Copy to clipboard\",\n disabled = false,\n onClick,\n onCopy,\n onError,\n value,\n ...props\n },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const styles = copyable();\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n async function handleCopy() {\n try {\n await copyToClipboard(value);\n setCopied(true);\n onCopy?.(value);\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => setCopied(false), copiedDuration);\n } catch (error) {\n setCopied(false);\n onError?.(error);\n }\n }\n\n return (\n <CopyableContext.Provider value={{ copied, copiedLabel, styles }}>\n <button\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? copyLabel}\n className={cx(styles.root, className)}\n data-copied={copied || undefined}\n data-disabled={disabled || undefined}\n data-jaci-component=\"copyable\"\n data-slot=\"copyable\"\n disabled={disabled}\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n void handleCopy();\n }\n }}\n type=\"button\"\n >\n {children ?? <CopyableContent>{value}</CopyableContent>}\n <span aria-live=\"polite\" className={styles.status} data-slot=\"copyable-status\">\n {copied ? copiedLabel : \"\"}\n </span>\n </button>\n </CopyableContext.Provider>\n );\n});\n\nexport interface CopyableContentProps extends Omit<ComponentPropsWithoutRef<\"code\">, \"as\"> {\n as?: \"code\" | \"span\";\n}\n\nexport const CopyableContent = forwardRef<HTMLElement, CopyableContentProps>(\n function CopyableContent({ as = \"code\", className, ...props }, ref) {\n const { styles } = useCopyableContext();\n const Component = as;\n\n return (\n <Component\n {...props}\n ref={ref as never}\n className={cx(styles.content, className)}\n data-slot=\"copyable-content\"\n />\n );\n },\n);\n\nexport type CopyableIndicatorProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const CopyableIndicator = forwardRef<HTMLSpanElement, CopyableIndicatorProps>(\n function CopyableIndicator({ children, className, ...props }, ref) {\n const { copied, copiedLabel, styles } = useCopyableContext();\n\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden={props[\"aria-hidden\"] ?? true}\n className={cx(styles.indicator, className)}\n data-copied={copied || undefined}\n data-slot=\"copyable-indicator\"\n >\n {children ?? (copied ? copiedLabel : \"Copy\")}\n </span>\n );\n },\n);\n\nexport const Copyable = {\n Root: CopyableRoot,\n Content: CopyableContent,\n Indicator: CopyableIndicator,\n};\n"],"mappings":";;;;;;AAcA,MAAM,kBAAkB,cAA2C,IAAI;AAEvE,SAAS,qBAAqB;CAC5B,MAAM,UAAU,WAAW,eAAe;CAC1C,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,uDAAuD;CAGzE,OAAO;AACT;AAEA,eAAe,gBAAgB,OAAe;CAC5C,IAAI;CAEJ,IAAI,OAAO,cAAc,eAAe,OAAO,UAAU,WAAW,cAAc,YAChF,IAAI;EACF,MAAM,UAAU,UAAU,UAAU,KAAK;EACzC;CACF,SAAS,OAAO;EACd,eAAe;CACjB;CAGF,IAAI,OAAO,aAAa,eAAe,OAAO,SAAS,gBAAgB,YAAY;EACjF,MAAM,WAAW,SAAS,cAAc,UAAU;EAClD,MAAM,YAAY,SAAS,aAAa;EACxC,MAAM,SAAS,YACX,MAAM,KAAK,EAAE,QAAQ,UAAU,WAAW,IAAI,GAAG,UAAU,UAAU,WAAW,KAAK,CAAC,IACtF,CAAC;EAEL,SAAS,QAAQ;EACjB,SAAS,aAAa,YAAY,MAAM;EACxC,SAAS,MAAM,WAAW;EAC1B,SAAS,MAAM,UAAU;EACzB,SAAS,KAAK,YAAY,QAAQ;EAClC,SAAS,OAAO;EAEhB,IAAI;GACF,IAAI,SAAS,YAAY,MAAM,GAC7B;EAEJ,UAAU;GACR,SAAS,OAAO;GAChB,WAAW,gBAAgB;GAC3B,KAAK,MAAM,SAAS,QAClB,WAAW,SAAS,KAAK;EAE7B;CACF;CAEA,MAAM,wBAAwB,QAC1B,+BACA,IAAI,MAAM,kCAAkC;AAClD;AAcA,MAAa,eAAe,WAAiD,SAAS,aACpF,EACE,cAAc,WACd,UACA,WACA,iBAAiB,MACjB,cAAc,UACd,YAAY,qBACZ,WAAW,OACX,SACA,QACA,SACA,OACA,GAAG,SAEL,KACA;CACA,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAC1C,MAAM,aAAa,OAAkD,KAAA,CAAS;CAC9E,MAAM,SAAS,SAAS;CAExB,gBAAgB;EACd,aAAa;GACX,IAAI,WAAW,YAAY,KAAA,GACzB,aAAa,WAAW,OAAO;EAEnC;CACF,GAAG,CAAC,CAAC;CAEL,eAAe,aAAa;EAC1B,IAAI;GACF,MAAM,gBAAgB,KAAK;GAC3B,UAAU,IAAI;GACd,SAAS,KAAK;GACd,IAAI,WAAW,YAAY,KAAA,GACzB,aAAa,WAAW,OAAO;GAEjC,WAAW,UAAU,iBAAiB,UAAU,KAAK,GAAG,cAAc;EACxE,SAAS,OAAO;GACd,UAAU,KAAK;GACf,UAAU,KAAK;EACjB;CACF;CAEA,OACE,oBAAC,gBAAgB,UAAjB;EAA0B,OAAO;GAAE;GAAQ;GAAa;EAAO;
|
|
1
|
+
{"version":3,"file":"copyable.js","names":["Component"],"sources":["../../../src/components/copyable/copyable.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useEffect, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, MouseEvent, MouseEventHandler, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { copyable } from \"../../styled-system/recipes\";\n\ninterface CopyableContextValue {\n copied: boolean;\n copiedLabel: string;\n styles: ReturnType<typeof copyable>;\n}\n\nconst CopyableContext = createContext<CopyableContextValue | null>(null);\n\nfunction useCopyableContext() {\n const context = useContext(CopyableContext);\n if (!context) {\n throw new Error(\"Copyable parts must be rendered inside Copyable.Root.\");\n }\n\n return context;\n}\n\nasync function copyToClipboard(value: string) {\n let primaryError: unknown;\n\n if (typeof navigator !== \"undefined\" && typeof navigator.clipboard?.writeText === \"function\") {\n try {\n await navigator.clipboard.writeText(value);\n return;\n } catch (error) {\n primaryError = error;\n }\n }\n\n if (typeof document !== \"undefined\" && typeof document.execCommand === \"function\") {\n const textarea = document.createElement(\"textarea\");\n const selection = document.getSelection();\n const ranges = selection\n ? Array.from({ length: selection.rangeCount }, (_, index) => selection.getRangeAt(index))\n : [];\n\n textarea.value = value;\n textarea.setAttribute(\"readonly\", \"true\");\n textarea.style.position = \"fixed\";\n textarea.style.opacity = \"0\";\n document.body.appendChild(textarea);\n textarea.select();\n\n try {\n if (document.execCommand(\"copy\")) {\n return;\n }\n } finally {\n textarea.remove();\n selection?.removeAllRanges();\n for (const range of ranges) {\n selection?.addRange(range);\n }\n }\n }\n\n throw primaryError instanceof Error\n ? primaryError\n : new Error(\"Clipboard access is unavailable.\");\n}\n\nexport interface CopyableRootProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"children\" | \"onClick\" | \"onCopy\"> {\n children?: ReactNode;\n copiedDuration?: number;\n copiedLabel?: string;\n copyLabel?: string;\n onCopy?: (value: string) => void;\n onError?: (error: unknown) => void;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n value: string;\n}\n\nexport const CopyableRoot = forwardRef<HTMLButtonElement, CopyableRootProps>(function CopyableRoot(\n {\n \"aria-label\": ariaLabel,\n children,\n className,\n copiedDuration = 1500,\n copiedLabel = \"Copied\",\n copyLabel = \"Copy to clipboard\",\n disabled = false,\n onClick,\n onCopy,\n onError,\n value,\n ...props\n },\n ref,\n) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const styles = copyable();\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n async function handleCopy() {\n try {\n await copyToClipboard(value);\n setCopied(true);\n onCopy?.(value);\n if (timeoutRef.current !== undefined) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(() => setCopied(false), copiedDuration);\n } catch (error) {\n setCopied(false);\n onError?.(error);\n }\n }\n\n return (\n <CopyableContext.Provider value={{ copied, copiedLabel, styles }}>\n <button\n {...props}\n ref={ref}\n aria-label={ariaLabel ?? copyLabel}\n className={cx(styles.root, className)}\n data-copied={copied || undefined}\n data-disabled={disabled || undefined}\n data-jaci-component=\"copyable\"\n data-slot=\"copyable\"\n disabled={disabled}\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n void handleCopy();\n }\n }}\n type=\"button\"\n >\n {children ?? <CopyableContent>{value}</CopyableContent>}\n <span aria-live=\"polite\" className={styles.status} data-slot=\"copyable-status\">\n {copied ? copiedLabel : \"\"}\n </span>\n </button>\n </CopyableContext.Provider>\n );\n});\n\nexport interface CopyableContentProps extends Omit<ComponentPropsWithoutRef<\"code\">, \"as\"> {\n as?: \"code\" | \"span\";\n}\n\nexport const CopyableContent = forwardRef<HTMLElement, CopyableContentProps>(\n function CopyableContent({ as = \"code\", className, ...props }, ref) {\n const { styles } = useCopyableContext();\n const Component = as;\n\n return (\n <Component\n {...props}\n ref={ref as never}\n className={cx(styles.content, className)}\n data-slot=\"copyable-content\"\n />\n );\n },\n);\n\nexport type CopyableIndicatorProps = ComponentPropsWithoutRef<\"span\">;\n\nexport const CopyableIndicator = forwardRef<HTMLSpanElement, CopyableIndicatorProps>(\n function CopyableIndicator({ children, className, ...props }, ref) {\n const { copied, copiedLabel, styles } = useCopyableContext();\n\n return (\n <span\n {...props}\n ref={ref}\n aria-hidden={props[\"aria-hidden\"] ?? true}\n className={cx(styles.indicator, className)}\n data-copied={copied || undefined}\n data-slot=\"copyable-indicator\"\n >\n {children ?? (copied ? copiedLabel : \"Copy\")}\n </span>\n );\n },\n);\n\nexport const Copyable = {\n Root: CopyableRoot,\n Content: CopyableContent,\n Indicator: CopyableIndicator,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-toolbar.cjs","names":["cx","dataToolbar"],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-toolbar.cjs","names":["createContext","forwardRef","cx","dataToolbar","useState","useContext"],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-toolbar.js","names":[],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":";;;;;;AAaA,MAAM,mBAAmB,cAA4C,IAAI;AAGzE,MAAa,kBAAkB,WAC7B,SAAS,gBAAgB,EAAE,WAAW,MAAM,GAAG,SAAS,KAAK;CAC3D,OACE,oBAAC,OAAD;EACE,GAAI;EACC;EACL,WAAW,GAAG,YAAY,CAAC,CAAC,MAAM,SAAS;EAC3C,uBAAoB;EACpB,aAAU;EACV,MAAM,QAAQ;CACf,CAAA;AAEL,CACF;AAUA,MAAa,oBAAoB,WAC/B,SAAS,kBACP,EAAE,WAAW,eAAe,IAAI,eAAe,OAAO,iBAAiB,GAAG,SAC1E,KACA;CACA,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,YAAY;CACvE,MAAM,QAAQ,mBAAmB;CACjC,OACE,oBAAC,SAAD;EACE,GAAI;EACC;EACL,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,SAAS;EAC7C,aAAU;EACV,WAAW,UAAU;GACnB,IAAI,oBAAoB,KAAA,GAAW,qBAAqB,MAAM,cAAc,KAAK;GACjF,gBAAgB,MAAM,cAAc,KAAK;GACzC,MAAM,WAAW,KAAK;EACxB;EACA,MAAM,MAAM,QAAQ;EACb;CACR,CAAA;AAEL,CACF;AAGA,MAAa,qBAAqB,WAChC,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,oBAAC,OAAD;EACE,GAAI;EACC;EACL,WAAW,GAAG,YAAY,CAAC,CAAC,SAAS,SAAS;EAC9C,aAAU;CACX,CAAA;AAEL,CACF;AAUA,MAAa,kBAAkB,WAC7B,SAAS,gBACP,EAAE,WAAW,eAAe,IAAI,eAAe,OAAO,iBAAiB,GAAG,SAC1E,KACA;CACA,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,YAAY;CACvE,MAAM,QAAQ,mBAAmB;CACjC,OACE,oBAAC,UAAD;EACE,GAAI;EACC;EACL,WAAW,GAAG,YAAY,CAAC,CAAC,MAAM,SAAS;EAC3C,aAAU;EACV,WAAW,UAAU;GACnB,IAAI,oBAAoB,KAAA,GAAW,qBAAqB,MAAM,cAAc,KAAK;GACjF,gBAAgB,MAAM,cAAc,KAAK;GACzC,MAAM,WAAW,KAAK;EACxB;EACO;CACR,CAAA;AAEL,CACF;AAOA,MAAa,uBAAuB,WAClC,SAAS,qBACP,EAAE,UAAU,WAAW,OAAO,QAAQ,YAAY,SAAS,GAAG,SAC9D,KACA;CACA,OACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO;GAAE;GAAO;EAAQ;
|
|
1
|
+
{"version":3,"file":"data-toolbar.js","names":[],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-view.cjs","names":["dataView","cx"],"sources":["../../../src/components/data-view/data-view.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataView } from \"../../styled-system/recipes\";\n\nexport type DataViewLayout = \"table\" | \"list\" | \"grid\";\nexport type DataViewColumns = 1 | 2 | 3 | 4;\nexport type DataViewStatus = \"idle\" | \"loading\" | \"empty\" | \"error\" | \"ready\";\n\nexport interface DataViewRootProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"children\"> {\n children?: ReactNode;\n columns?: DataViewColumns;\n layout?: DataViewLayout;\n status?: DataViewStatus;\n}\n\nexport const DataViewRoot = forwardRef<HTMLElement, DataViewRootProps>(function DataViewRoot(\n { children, className, columns = 3, layout = \"list\", status = \"idle\", ...props },\n ref,\n) {\n const styles = dataView({ columns: String(columns) as \"1\" | \"2\" | \"3\" | \"4\", layout });\n\n return (\n <section\n {...props}\n ref={ref}\n className={cx(styles.root, className)}\n aria-busy={props[\"aria-busy\"] ?? (status === \"loading\" || undefined)}\n data-columns={columns}\n data-jaci-component=\"data-view\"\n data-layout={layout}\n data-status={status}\n data-slot=\"data-view\"\n >\n {children}\n </section>\n );\n});\n\nexport type DataViewToolbarProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewToolbar = forwardRef<HTMLDivElement, DataViewToolbarProps>(\n function DataViewToolbar({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().toolbar, className)}\n data-slot=\"data-view-toolbar\"\n />\n );\n },\n);\n\nexport type DataViewFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFilters = forwardRef<HTMLDivElement, DataViewFiltersProps>(\n function DataViewFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().filters, className)}\n data-slot=\"data-view-filters\"\n />\n );\n },\n);\n\nexport type DataViewContentProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewContent = forwardRef<HTMLDivElement, DataViewContentProps>(\n function DataViewContent({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().content, className)}\n data-slot=\"data-view-content\"\n />\n );\n },\n);\n\nexport type DataViewFooterProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFooter = forwardRef<HTMLDivElement, DataViewFooterProps>(\n function DataViewFooter({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().footer, className)}\n data-slot=\"data-view-footer\"\n />\n );\n },\n);\n\nexport type DataViewPaginationProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewPagination = forwardRef<HTMLDivElement, DataViewPaginationProps>(\n function DataViewPagination({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().pagination, className)}\n data-slot=\"data-view-pagination\"\n />\n );\n },\n);\n\nexport interface DataViewStateProps extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport const DataViewLoading = forwardRef<HTMLDivElement, DataViewStateProps>(\n function DataViewLoading({ children = \"Loading…\", className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataView().loading, className)}\n data-slot=\"data-view-loading\"\n >\n {children}\n </div>\n );\n },\n);\n\nexport const DataViewEmpty = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewEmpty(\n { children = \"No results found.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().empty, className)}\n data-slot=\"data-view-empty\"\n >\n {children}\n </div>\n );\n});\n\nexport const DataViewError = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewError(\n { children = \"Something went wrong.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"assertive\"\n className={cx(dataView().error, className)}\n data-slot=\"data-view-error\"\n role=\"alert\"\n >\n {children}\n </div>\n );\n});\n\n// biome-ignore lint/suspicious/noShadowRestrictedNames: DataView is the public component API name.\nexport const DataView = {\n Root: DataViewRoot,\n Toolbar: DataViewToolbar,\n Filters: DataViewFilters,\n Content: DataViewContent,\n Footer: DataViewFooter,\n Pagination: DataViewPagination,\n Loading: DataViewLoading,\n Empty: DataViewEmpty,\n Error: DataViewError,\n};\n"],"mappings":";;;;;AAiBA,MAAa,gBAAA,
|
|
1
|
+
{"version":3,"file":"data-view.cjs","names":["forwardRef","dataView","cx"],"sources":["../../../src/components/data-view/data-view.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataView } from \"../../styled-system/recipes\";\n\nexport type DataViewLayout = \"table\" | \"list\" | \"grid\";\nexport type DataViewColumns = 1 | 2 | 3 | 4;\nexport type DataViewStatus = \"idle\" | \"loading\" | \"empty\" | \"error\" | \"ready\";\n\nexport interface DataViewRootProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"children\"> {\n children?: ReactNode;\n columns?: DataViewColumns;\n layout?: DataViewLayout;\n status?: DataViewStatus;\n}\n\nexport const DataViewRoot = forwardRef<HTMLElement, DataViewRootProps>(function DataViewRoot(\n { children, className, columns = 3, layout = \"list\", status = \"idle\", ...props },\n ref,\n) {\n const styles = dataView({ columns: String(columns) as \"1\" | \"2\" | \"3\" | \"4\", layout });\n\n return (\n <section\n {...props}\n ref={ref}\n className={cx(styles.root, className)}\n aria-busy={props[\"aria-busy\"] ?? (status === \"loading\" || undefined)}\n data-columns={columns}\n data-jaci-component=\"data-view\"\n data-layout={layout}\n data-status={status}\n data-slot=\"data-view\"\n >\n {children}\n </section>\n );\n});\n\nexport type DataViewToolbarProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewToolbar = forwardRef<HTMLDivElement, DataViewToolbarProps>(\n function DataViewToolbar({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().toolbar, className)}\n data-slot=\"data-view-toolbar\"\n />\n );\n },\n);\n\nexport type DataViewFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFilters = forwardRef<HTMLDivElement, DataViewFiltersProps>(\n function DataViewFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().filters, className)}\n data-slot=\"data-view-filters\"\n />\n );\n },\n);\n\nexport type DataViewContentProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewContent = forwardRef<HTMLDivElement, DataViewContentProps>(\n function DataViewContent({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().content, className)}\n data-slot=\"data-view-content\"\n />\n );\n },\n);\n\nexport type DataViewFooterProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFooter = forwardRef<HTMLDivElement, DataViewFooterProps>(\n function DataViewFooter({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().footer, className)}\n data-slot=\"data-view-footer\"\n />\n );\n },\n);\n\nexport type DataViewPaginationProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewPagination = forwardRef<HTMLDivElement, DataViewPaginationProps>(\n function DataViewPagination({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().pagination, className)}\n data-slot=\"data-view-pagination\"\n />\n );\n },\n);\n\nexport interface DataViewStateProps extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport const DataViewLoading = forwardRef<HTMLDivElement, DataViewStateProps>(\n function DataViewLoading({ children = \"Loading…\", className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataView().loading, className)}\n data-slot=\"data-view-loading\"\n >\n {children}\n </div>\n );\n },\n);\n\nexport const DataViewEmpty = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewEmpty(\n { children = \"No results found.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().empty, className)}\n data-slot=\"data-view-empty\"\n >\n {children}\n </div>\n );\n});\n\nexport const DataViewError = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewError(\n { children = \"Something went wrong.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"assertive\"\n className={cx(dataView().error, className)}\n data-slot=\"data-view-error\"\n role=\"alert\"\n >\n {children}\n </div>\n );\n});\n\n// biome-ignore lint/suspicious/noShadowRestrictedNames: DataView is the public component API name.\nexport const DataView = {\n Root: DataViewRoot,\n Toolbar: DataViewToolbar,\n Filters: DataViewFilters,\n Content: DataViewContent,\n Footer: DataViewFooter,\n Pagination: DataViewPagination,\n Loading: DataViewLoading,\n Empty: DataViewEmpty,\n Error: DataViewError,\n};\n"],"mappings":"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"}
|
|
@@ -506,13 +506,10 @@ const DatePickerDay = (0, react.forwardRef)(function DatePickerDay({ children, c
|
|
|
506
506
|
nextDate = require_date_utils.addMonths(date, event.shiftKey ? 12 : 1);
|
|
507
507
|
break;
|
|
508
508
|
case "Enter":
|
|
509
|
-
case " ":
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
}
|
|
514
|
-
break;
|
|
515
|
-
default: break;
|
|
509
|
+
case " ": if (!isDisabled) {
|
|
510
|
+
event.preventDefault();
|
|
511
|
+
onSelect(date);
|
|
512
|
+
}
|
|
516
513
|
}
|
|
517
514
|
if (nextDate) {
|
|
518
515
|
event.preventDefault();
|