@px-ui/ui 0.1.3 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avatar-BAkmIOVe.d.ts +41 -0
- package/dist/avatar-BAkmIOVe.d.ts.map +1 -0
- package/dist/avatar-DDdL9xDH.js +119 -0
- package/dist/avatar-DDdL9xDH.js.map +1 -0
- package/dist/button-BiiFfKiR.d.ts +19 -0
- package/dist/button-BiiFfKiR.d.ts.map +1 -0
- package/dist/button-hBUFMmsZ.js +47 -0
- package/dist/button-hBUFMmsZ.js.map +1 -0
- package/dist/combobox-CnpyzZ7B.js +334 -0
- package/dist/combobox-CnpyzZ7B.js.map +1 -0
- package/dist/combobox-JXY6PiDq.d.ts +109 -0
- package/dist/combobox-JXY6PiDq.d.ts.map +1 -0
- package/dist/components/accordion.d.ts +25 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +56 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +59 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +99 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +29 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +47 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +13 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +16 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar-group.d.ts +30 -0
- package/dist/components/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar-group.js +69 -0
- package/dist/components/avatar-group.js.map +1 -0
- package/dist/components/avatar.d.ts +2 -0
- package/dist/components/avatar.js +5 -0
- package/dist/components/badge.d.ts +18 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +31 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +38 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +75 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.d.ts +29 -0
- package/dist/components/button-group.d.ts.map +1 -0
- package/dist/components/button-group.js +44 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.d.ts +2 -0
- package/dist/components/button.js +4 -0
- package/dist/components/calendar.d.ts +32 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +119 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +38 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +59 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +57 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +136 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +79 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +148 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +11 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +24 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +25 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +28 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +3 -0
- package/dist/components/combobox.js +13 -0
- package/dist/components/command.d.ts +78 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +125 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +87 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +137 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/currency-select-field.d.ts +105 -0
- package/dist/components/currency-select-field.d.ts.map +1 -0
- package/dist/components/currency-select-field.js +266 -0
- package/dist/components/currency-select-field.js.map +1 -0
- package/dist/components/dialog.d.ts +61 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +5 -0
- package/dist/components/direction.d.ts +2 -0
- package/dist/components/direction.js +3 -0
- package/dist/components/drawer.d.ts +45 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +86 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +2 -0
- package/dist/components/dropdown-menu.js +4 -0
- package/dist/components/empty.d.ts +36 -0
- package/dist/components/empty.d.ts.map +1 -0
- package/dist/components/empty.js +62 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.d.ts +72 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +122 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/file-upload-field.d.ts +58 -0
- package/dist/components/file-upload-field.d.ts.map +1 -0
- package/dist/components/file-upload-field.js +90 -0
- package/dist/components/file-upload-field.js.map +1 -0
- package/dist/components/file-upload.d.ts +4 -0
- package/dist/components/file-upload.js +6 -0
- package/dist/components/hover-card.d.ts +21 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +40 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +46 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +9 -0
- package/dist/components/input-otp.d.ts +24 -0
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +40 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +2 -0
- package/dist/components/input.js +4 -0
- package/dist/components/item.d.ts +62 -0
- package/dist/components/item.d.ts.map +1 -0
- package/dist/components/item.js +124 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.d.ts +14 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +22 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +2 -0
- package/dist/components/label.js +6 -0
- package/dist/components/menubar.d.ts +89 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +140 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/native-select.d.ts +23 -0
- package/dist/components/native-select.d.ts.map +1 -0
- package/dist/components/native-select.js +41 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +48 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +85 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +46 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +89 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/phone-input.d.ts +28 -0
- package/dist/components/phone-input.d.ts.map +1 -0
- package/dist/components/phone-input.js +60 -0
- package/dist/components/phone-input.js.map +1 -0
- package/dist/components/popover.d.ts +34 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +4 -0
- package/dist/components/progress.d.ts +29 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +48 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +16 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +29 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +21 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +32 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.d.ts +17 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +39 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +56 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +102 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +2 -0
- package/dist/components/separator.js +4 -0
- package/dist/components/sheet.d.ts +43 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +7 -0
- package/dist/components/sidebar.d.ts +162 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +390 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +10 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +4 -0
- package/dist/components/slider.d.ts +15 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +36 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +11 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +4 -0
- package/dist/components/switch.d.ts +14 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +21 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +39 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +71 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +31 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +55 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +11 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +4 -0
- package/dist/components/toast.d.ts +2 -0
- package/dist/components/toast.js +6 -0
- package/dist/components/toggle-group.d.ts +29 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +55 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +2 -0
- package/dist/components/toggle.js +6 -0
- package/dist/components/tooltip.d.ts +2 -0
- package/dist/components/tooltip.js +4 -0
- package/dist/dialog-CTqRrytc.js +103 -0
- package/dist/dialog-CTqRrytc.js.map +1 -0
- package/dist/direction-BKSh6e6q.js +3 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts +91 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts.map +1 -0
- package/dist/dropdown-menu-CcumvwhM.js +139 -0
- package/dist/dropdown-menu-CcumvwhM.js.map +1 -0
- package/dist/file-upload-D8hgfjvA.d.ts +145 -0
- package/dist/file-upload-D8hgfjvA.d.ts.map +1 -0
- package/dist/file-upload-DeCIv13t.js +434 -0
- package/dist/file-upload-DeCIv13t.js.map +1 -0
- package/dist/hooks/use-async-options.d.ts +2 -0
- package/dist/hooks/use-async-options.js +3 -0
- package/dist/hooks/use-debounce.d.ts +5 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-debounce.js +3 -0
- package/dist/hooks/use-file-upload.d.ts +2 -0
- package/dist/hooks/use-file-upload.js +3 -0
- package/dist/hooks/use-infinite-scroll.d.ts +21 -0
- package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
- package/dist/hooks/use-infinite-scroll.js +4 -0
- package/dist/hooks/use-intersection-observer.d.ts +2 -0
- package/dist/hooks/use-intersection-observer.js +3 -0
- package/dist/hooks/use-mobile.d.ts +5 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +3 -0
- package/dist/input-8jqdnUZl.js +18 -0
- package/dist/input-8jqdnUZl.js.map +1 -0
- package/dist/input-DwxhsFRP.d.ts +12 -0
- package/dist/input-DwxhsFRP.d.ts.map +1 -0
- package/dist/input-group-DqEkmpXW.js +81 -0
- package/dist/input-group-DqEkmpXW.js.map +1 -0
- package/dist/label-AaH9ZYCZ.js +16 -0
- package/dist/label-AaH9ZYCZ.js.map +1 -0
- package/dist/label-D5SCGMZl.d.ts +11 -0
- package/dist/label-D5SCGMZl.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/popover-C9D43EuT.js +57 -0
- package/dist/popover-C9D43EuT.js.map +1 -0
- package/dist/providers/px-ui-provider.d.ts +36 -0
- package/dist/providers/px-ui-provider.d.ts.map +1 -0
- package/dist/providers/px-ui-provider.js +26 -0
- package/dist/providers/px-ui-provider.js.map +1 -0
- package/dist/separator-BS3ilczC.js +17 -0
- package/dist/separator-BS3ilczC.js.map +1 -0
- package/dist/separator-ct9ZvuTk.d.ts +12 -0
- package/dist/separator-ct9ZvuTk.d.ts.map +1 -0
- package/dist/sheet-CLjNDrfL.js +91 -0
- package/dist/sheet-CLjNDrfL.js.map +1 -0
- package/dist/skeleton-BcIxI5Wq.js +15 -0
- package/dist/skeleton-BcIxI5Wq.js.map +1 -0
- package/dist/spinner-Bo0sUZEg.js +17 -0
- package/dist/spinner-Bo0sUZEg.js.map +1 -0
- package/dist/styles.css +196 -0
- package/dist/textarea-Cq0o323P.js +16 -0
- package/dist/textarea-Cq0o323P.js.map +1 -0
- package/dist/toast-COWAQbIk.js +211 -0
- package/dist/toast-COWAQbIk.js.map +1 -0
- package/dist/toast-CXkP5Jwp.d.ts +74 -0
- package/dist/toast-CXkP5Jwp.d.ts.map +1 -0
- package/dist/toggle-BXBPgIQh.d.ts +19 -0
- package/dist/toggle-BXBPgIQh.d.ts.map +1 -0
- package/dist/toggle-DhJ_qwgw.js +38 -0
- package/dist/toggle-DhJ_qwgw.js.map +1 -0
- package/dist/tooltip-BWjVzK67.d.ts +26 -0
- package/dist/tooltip-BWjVzK67.d.ts.map +1 -0
- package/dist/tooltip-DkPxCJIL.js +43 -0
- package/dist/tooltip-DkPxCJIL.js.map +1 -0
- package/dist/use-async-options-DHR8q5qX.d.ts +45 -0
- package/dist/use-async-options-DHR8q5qX.d.ts.map +1 -0
- package/dist/use-async-options-wZ9LJ2BJ.js +46 -0
- package/dist/use-async-options-wZ9LJ2BJ.js.map +1 -0
- package/dist/use-debounce-_qaEZqtt.js +24 -0
- package/dist/use-debounce-_qaEZqtt.js.map +1 -0
- package/dist/{index.js → use-file-upload-Dxrej28u.js} +3 -204
- package/dist/use-file-upload-Dxrej28u.js.map +1 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts +133 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts.map +1 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js +38 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js.map +1 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts +11 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts.map +1 -0
- package/dist/use-intersection-observer-CZfnep4z.js +33 -0
- package/dist/use-intersection-observer-CZfnep4z.js.map +1 -0
- package/dist/use-mobile-l5ebOdQl.js +21 -0
- package/dist/use-mobile-l5ebOdQl.js.map +1 -0
- package/dist/utils-mWJR2N24.js +28 -0
- package/dist/utils-mWJR2N24.js.map +1 -0
- package/package.json +290 -26
- package/dist/index.css +0 -133
- package/dist/index.d.ts +0 -229
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty.js","names":[],"sources":["../../src/components/empty.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Empty({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty\"\n className={cn(\n \"flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn(\"flex max-w-sm flex-col items-center gap-2\", className)}\n {...props}\n />\n )\n}\n\nconst emptyMediaVariants = cva(\n \"mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n icon: \"flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction EmptyMedia({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n )\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn(\n \"font-heading text-lg font-medium tracking-ppx-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn(\n \"text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn(\n \"flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n}\n"],"mappings":";;;;;AAIA,SAAS,MAAM,EAAE,WAAW,GAAG,SAAsC;AACnE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,gIACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,6CAA6C,UAAU;EACrE,GAAI;GACJ;;AAIN,MAAM,qBAAqB,IACzB,+FACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,WAAW,EAClB,WACA,UAAU,WACV,GAAG,SACqE;AACxE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,mBAAmB;GAAE;GAAS;GAAW,CAAC,CAAC;EACzD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,uDACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2GACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iFACA,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { t as Label } from "../label-D5SCGMZl.js";
|
|
2
|
+
import * as react_jsx_runtime95 from "react/jsx-runtime";
|
|
3
|
+
import { VariantProps } from "class-variance-authority";
|
|
4
|
+
import * as class_variance_authority_types4 from "class-variance-authority/types";
|
|
5
|
+
|
|
6
|
+
//#region src/components/field.d.ts
|
|
7
|
+
declare function FieldSet({
|
|
8
|
+
className,
|
|
9
|
+
...props
|
|
10
|
+
}: React.ComponentProps<"fieldset">): react_jsx_runtime95.JSX.Element;
|
|
11
|
+
declare function FieldLegend({
|
|
12
|
+
className,
|
|
13
|
+
variant,
|
|
14
|
+
...props
|
|
15
|
+
}: React.ComponentProps<"legend"> & {
|
|
16
|
+
variant?: "legend" | "label";
|
|
17
|
+
}): react_jsx_runtime95.JSX.Element;
|
|
18
|
+
declare function FieldGroup({
|
|
19
|
+
className,
|
|
20
|
+
...props
|
|
21
|
+
}: React.ComponentProps<"div">): react_jsx_runtime95.JSX.Element;
|
|
22
|
+
declare const fieldVariants: (props?: ({
|
|
23
|
+
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
24
|
+
} & class_variance_authority_types4.ClassProp) | undefined) => string;
|
|
25
|
+
declare function Field({
|
|
26
|
+
className,
|
|
27
|
+
orientation,
|
|
28
|
+
...props
|
|
29
|
+
}: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime95.JSX.Element;
|
|
30
|
+
declare function FieldContent({
|
|
31
|
+
className,
|
|
32
|
+
...props
|
|
33
|
+
}: React.ComponentProps<"div">): react_jsx_runtime95.JSX.Element;
|
|
34
|
+
declare function FieldLabel({
|
|
35
|
+
className,
|
|
36
|
+
required,
|
|
37
|
+
...props
|
|
38
|
+
}: React.ComponentProps<typeof Label> & {
|
|
39
|
+
required?: boolean;
|
|
40
|
+
}): react_jsx_runtime95.JSX.Element;
|
|
41
|
+
declare function FieldRequiredIndicator({
|
|
42
|
+
className,
|
|
43
|
+
...props
|
|
44
|
+
}: React.ComponentProps<"span">): react_jsx_runtime95.JSX.Element;
|
|
45
|
+
declare function FieldTitle({
|
|
46
|
+
className,
|
|
47
|
+
...props
|
|
48
|
+
}: React.ComponentProps<"div">): react_jsx_runtime95.JSX.Element;
|
|
49
|
+
declare function FieldDescription({
|
|
50
|
+
className,
|
|
51
|
+
...props
|
|
52
|
+
}: React.ComponentProps<"p">): react_jsx_runtime95.JSX.Element;
|
|
53
|
+
declare function FieldSeparator({
|
|
54
|
+
children,
|
|
55
|
+
className,
|
|
56
|
+
...props
|
|
57
|
+
}: React.ComponentProps<"div"> & {
|
|
58
|
+
children?: React.ReactNode;
|
|
59
|
+
}): react_jsx_runtime95.JSX.Element;
|
|
60
|
+
declare function FieldError({
|
|
61
|
+
className,
|
|
62
|
+
children,
|
|
63
|
+
errors,
|
|
64
|
+
...props
|
|
65
|
+
}: React.ComponentProps<"div"> & {
|
|
66
|
+
errors?: Array<{
|
|
67
|
+
message?: string;
|
|
68
|
+
} | undefined>;
|
|
69
|
+
}): react_jsx_runtime95.JSX.Element | null;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldRequiredIndicator, FieldSeparator, FieldSet, FieldTitle };
|
|
72
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","names":[],"sources":["../../src/components/field.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAOS,QAAA;;;GAAkC,KAAA,CAAM,6BAA0B,mBAAA,CAAA,GAAA,CAAA;iBAalE,WAAA;;;;GAIN,KAAA,CAAM;;IAA2D,mBAAA,CAAA,GAAA,CAAA;AApBlB,iBAkCzC,UAAA,CA/BQ;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA+B4B,KAAA,CAAM,cA/BlC,CAAA,KAAA,CAAA,CAAA,EA+BuD,mBAAA,CAAA,GAAA,CAAA,OA/BvD;cA4CX,aA5Cc,EAAA,CAAA,KAAuD,CAAvD,EAAA,CAAA;EAAuB,WAAM,CAAA,EAAA,YAAA,GAAA,UAAA,GAAA,YAAA,GAAA,IAAA,GAAA,SAAA;CAA0B,GA4D1E,+BAAA,CAAA,SA5D0E,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;iBA8DlE,KAAA,CA9DkE;EAAA,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EAkExE,KAAA,CAAM,cAlEkE,CAAA,KAAA,CAAA,GAkE1C,YAlE0C,CAAA,OAkEtB,aAlEsB,CAAA,CAAA,EAkER,mBAAA,CAAA,GAAA,CAAA,OAlEQ;AAAA,iBA8ElE,YAAA,CAjEW;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAiE2B,KAAA,CAAM,cAjEjC,CAAA,KAAA,CAAA,CAAA,EAiEsD,mBAAA,CAAA,GAAA,CAAA,OAjEtD;iBA8EX,UAAA,CA7EP;EAAA,SAAA;EAAA,QAAA;EAAA,GAAA;CAAA,EAiFC,KAAA,CAAM,cAjFP,CAAA,OAiF6B,KAjF7B,CAAA,GAAA;EACA,QAAA,CAAA,EAAA,OAAA;CAEC,CAAA,EAgFF,mBAAA,CAAA,GAAA,CAAA,OAhFQ;iBAgGA,sBAAA,CAhG2D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAmGjE,KAAA,CAAM,cAnG2D,CAAA,MAAA,CAAA,CAAA,EAmGrC,mBAAA,CAAA,GAAA,CAAA,OAnGqC;iBAgH3D,UAAA,CAhH2D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAgHvB,KAAA,CAAM,cAhHiB,CAAA,KAAA,CAAA,CAAA,EAgHI,mBAAA,CAAA,GAAA,CAAA,OAhHJ;AAAA,iBA6H3D,gBAAA,CA/GU;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA+GgC,KAAA,CAAM,cA/GtC,CAAA,GAAA,CAAA,CAAA,EA+GyD,mBAAA,CAAA,GAAA,CAAA,OA/GzD;iBA8HV,cAAA,CA9Ha;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;CAAA,EAkInB,KAAA,CAAM,cAlIa,CAAA,KAAA,CAAA,GAAA;EAAuB,QAAM,CAAA,EAmItC,KAAA,CAAM,SAnIgC;CAAqB,CAAA,EAoIvE,mBAAA,CAAA,GAAA,CAAA,OApIuE;iBA4J/D,UAAA,CA5J+D;EAAA,SAAA;EAAA,QAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAiKrE,KAAA,CAAM,cAjK+D,CAAA,KAAA,CAAA,GAAA;EAalE,MAAA,CAAA,EAqJK,KArJL,CAAA;IAkBG,OAAK,CAAA,EAAA,MAAA;EACZ,CAAA,GAAA,SAAA,CAAA;CACA,CAAA,EAkID,mBAAA,CAAA,GAAA,CAAA,OAAA,GAlIC,IAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { t as Separator } from "../separator-BS3ilczC.js";
|
|
3
|
+
import { t as Label } from "../label-AaH9ZYCZ.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { useMemo } from "react";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
|
|
8
|
+
//#region src/components/field.tsx
|
|
9
|
+
function FieldSet({ className, ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsx("fieldset", {
|
|
11
|
+
"data-slot": "field-set",
|
|
12
|
+
className: cn("flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", className),
|
|
13
|
+
...props
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function FieldLegend({ className, variant = "legend", ...props }) {
|
|
17
|
+
return /* @__PURE__ */ jsx("legend", {
|
|
18
|
+
"data-slot": "field-legend",
|
|
19
|
+
"data-variant": variant,
|
|
20
|
+
className: cn("mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base", className),
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function FieldGroup({ className, ...props }) {
|
|
25
|
+
return /* @__PURE__ */ jsx("div", {
|
|
26
|
+
"data-slot": "field-group",
|
|
27
|
+
className: cn("group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4", className),
|
|
28
|
+
...props
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const fieldVariants = cva("group/field flex w-full gap-2 data-[invalid=true]:text-destructive", {
|
|
32
|
+
variants: { orientation: {
|
|
33
|
+
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
34
|
+
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
35
|
+
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
36
|
+
} },
|
|
37
|
+
defaultVariants: { orientation: "vertical" }
|
|
38
|
+
});
|
|
39
|
+
function Field({ className, orientation = "vertical", ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx("div", {
|
|
41
|
+
role: "group",
|
|
42
|
+
"data-slot": "field",
|
|
43
|
+
"data-orientation": orientation,
|
|
44
|
+
className: cn(fieldVariants({ orientation }), className),
|
|
45
|
+
...props
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function FieldContent({ className, ...props }) {
|
|
49
|
+
return /* @__PURE__ */ jsx("div", {
|
|
50
|
+
"data-slot": "field-content",
|
|
51
|
+
className: cn("group/field-content flex flex-1 flex-col gap-1 leading-snug", className),
|
|
52
|
+
...props
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function FieldLabel({ className, required, ...props }) {
|
|
56
|
+
return /* @__PURE__ */ jsx(Label, {
|
|
57
|
+
"data-slot": "field-label",
|
|
58
|
+
"data-required": required ? true : void 0,
|
|
59
|
+
className: cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col", "data-[required=true]:after:text-destructive data-[required=true]:after:content-['*']", className),
|
|
60
|
+
...props
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function FieldRequiredIndicator({ className, ...props }) {
|
|
64
|
+
return /* @__PURE__ */ jsx("span", {
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
"data-slot": "field-required-indicator",
|
|
67
|
+
className: cn("text-destructive", className),
|
|
68
|
+
...props,
|
|
69
|
+
children: "*"
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function FieldTitle({ className, ...props }) {
|
|
73
|
+
return /* @__PURE__ */ jsx("div", {
|
|
74
|
+
"data-slot": "field-label",
|
|
75
|
+
className: cn("flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50", className),
|
|
76
|
+
...props
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function FieldDescription({ className, ...props }) {
|
|
80
|
+
return /* @__PURE__ */ jsx("p", {
|
|
81
|
+
"data-slot": "field-description",
|
|
82
|
+
className: cn("text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5", "last:mt-0 nth-last-2:-mt-1", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
83
|
+
...props
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function FieldSeparator({ children, className, ...props }) {
|
|
87
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
88
|
+
"data-slot": "field-separator",
|
|
89
|
+
"data-content": !!children,
|
|
90
|
+
className: cn("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2", className),
|
|
91
|
+
...props,
|
|
92
|
+
children: [/* @__PURE__ */ jsx(Separator, { className: "absolute inset-0 top-1/2" }), children && /* @__PURE__ */ jsx("span", {
|
|
93
|
+
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
94
|
+
"data-slot": "field-separator-content",
|
|
95
|
+
children
|
|
96
|
+
})]
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function FieldError({ className, children, errors, ...props }) {
|
|
100
|
+
const content = useMemo(() => {
|
|
101
|
+
if (children) return children;
|
|
102
|
+
if (!errors?.length) return null;
|
|
103
|
+
const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
|
|
104
|
+
if (uniqueErrors?.length == 1) return uniqueErrors[0]?.message;
|
|
105
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
106
|
+
className: "ms-4 flex list-disc flex-col gap-1",
|
|
107
|
+
children: uniqueErrors.map((error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index))
|
|
108
|
+
});
|
|
109
|
+
}, [children, errors]);
|
|
110
|
+
if (!content) return null;
|
|
111
|
+
return /* @__PURE__ */ jsx("div", {
|
|
112
|
+
role: "alert",
|
|
113
|
+
"data-slot": "field-error",
|
|
114
|
+
className: cn("text-sm font-normal text-destructive", className),
|
|
115
|
+
...props,
|
|
116
|
+
children: content
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldRequiredIndicator, FieldSeparator, FieldSet, FieldTitle };
|
|
122
|
+
//# sourceMappingURL=field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.js","names":[],"sources":["../../src/components/field.tsx"],"sourcesContent":["import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Label } from \"@px-ui/ui/components/label\"\nimport { Separator } from \"@px-ui/ui/components/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-2 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n required,\n ...props\n}: React.ComponentProps<typeof Label> & {\n required?: boolean\n}) {\n return (\n <Label\n data-slot=\"field-label\"\n data-required={required ? true : undefined}\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border *:data-[slot=field]:p-3 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n \"data-[required=true]:after:text-destructive data-[required=true]:after:content-['*']\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldRequiredIndicator({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n aria-hidden=\"true\"\n data-slot=\"field-required-indicator\"\n className={cn(\"text-destructive\", className)}\n {...props}\n >\n *\n </span>\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ms-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n FieldRequiredIndicator,\n}\n"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,oGACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,YAAY,EACnB,WACA,UAAU,UACV,GAAG,SACiE;AACpE,QACE,oBAAC;EACC,aAAU;EACV,gBAAc;EACd,WAAW,GACT,iFACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,wIACA,UACD;EACD,GAAI;GACJ;;AAIN,MAAM,gBAAgB,IACpB,sEACA;CACE,UAAU,EACR,aAAa;EACX,UAAU;EACV,YACE;EACF,YACE;EACH,EACF;CACD,iBAAiB,EACf,aAAa,YACd;CACF,CACF;AAED,SAAS,MAAM,EACb,WACA,cAAc,YACd,GAAG,SACgE;AACnE,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,cAAc,EAAE,aAAa,CAAC,EAAE,UAAU;EACxD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,+DACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SAGF;AACD,QACE,oBAAC;EACC,aAAU;EACV,iBAAe,WAAW,OAAO;EACjC,WAAW,GACT,yVACA,qEACA,wFACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC4B;AAC/B,QACE,oBAAC;EACC,eAAY;EACZ,aAAU;EACV,WAAW,GAAG,oBAAoB,UAAU;EAC5C,GAAI;YACL;GAEM;;AAIX,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,iGACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAoC;AAC5E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,sJACA,8BACA,qEACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,eAAe,EACtB,UACA,WACA,GAAG,SAGF;AACD,QACE,qBAAC;EACC,aAAU;EACV,gBAAc,CAAC,CAAC;EAChB,WAAW,GACT,6EACA,UACD;EACD,GAAI;aAEJ,oBAAC,aAAU,WAAU,6BAA6B,EACjD,YACC,oBAAC;GACC,WAAU;GACV,aAAU;GAET;IACI;GAEL;;AAIV,SAAS,WAAW,EAClB,WACA,UACA,QACA,GAAG,SAGF;CACD,MAAM,UAAU,cAAc;AAC5B,MAAI,SACF,QAAO;AAGT,MAAI,CAAC,QAAQ,OACX,QAAO;EAGT,MAAM,eAAe,CACnB,GAAG,IAAI,IAAI,OAAO,KAAK,UAAU,CAAC,OAAO,SAAS,MAAM,CAAC,CAAC,CAAC,QAAQ,CACpE;AAED,MAAI,cAAc,UAAU,EAC1B,QAAO,aAAa,IAAI;AAG1B,SACE,oBAAC;GAAG,WAAU;aACX,aAAa,KACX,OAAO,UACN,OAAO,WAAW,oBAAC,kBAAgB,MAAM,WAAd,MAA2B,CACzD;IACE;IAEN,CAAC,UAAU,OAAO,CAAC;AAEtB,KAAI,CAAC,QACH,QAAO;AAGT,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,WAAW,GAAG,wCAAwC,UAAU;EAChE,GAAI;YAEH;GACG"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import "../button-BiiFfKiR.js";
|
|
2
|
+
import { c as UploadConfig, n as FileUploadItem, t as FileMetadata, u as UseFileUploadOptions } from "../use-file-upload-yy-xLBtn.js";
|
|
3
|
+
import { i as DropzoneState, r as DropzoneRenderProps } from "../file-upload-D8hgfjvA.js";
|
|
4
|
+
import * as React$1 from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/components/file-upload-field.d.ts
|
|
7
|
+
interface FileUploadFieldRef {
|
|
8
|
+
/** Reset the file upload state, optionally with new initial files */
|
|
9
|
+
reset: (newFiles?: FileMetadata[]) => void;
|
|
10
|
+
/** Clear all files */
|
|
11
|
+
clearFiles: () => void;
|
|
12
|
+
/** Get current files */
|
|
13
|
+
getFiles: () => FileUploadItem[];
|
|
14
|
+
}
|
|
15
|
+
interface FileUploadFieldProps extends Omit<UseFileUploadOptions, "initialFiles"> {
|
|
16
|
+
/** Size of the dropzone (ignored when using render prop) */
|
|
17
|
+
size?: "sm" | "default" | "lg";
|
|
18
|
+
/** Text displayed in the dropzone (ignored when using render prop) */
|
|
19
|
+
dropzoneText?: string;
|
|
20
|
+
/** Text for the browse/upload button (ignored when using render prop) */
|
|
21
|
+
buttonText?: string;
|
|
22
|
+
/** Show file list below the dropzone */
|
|
23
|
+
showFileList?: boolean;
|
|
24
|
+
/** Initial files (already uploaded) */
|
|
25
|
+
initialFiles?: Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
size: number;
|
|
29
|
+
type: string;
|
|
30
|
+
url: string;
|
|
31
|
+
}>;
|
|
32
|
+
/** Whether the upload is disabled */
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/** Custom className */
|
|
35
|
+
className?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Render prop for complete dropzone customization.
|
|
38
|
+
* Receives props to spread and state for conditional styling.
|
|
39
|
+
*/
|
|
40
|
+
render?: (props: DropzoneRenderProps, state: DropzoneState) => React$1.ReactElement;
|
|
41
|
+
/** Render prop for custom file item rendering */
|
|
42
|
+
renderFileItem?: (file: FileUploadItem, actions: {
|
|
43
|
+
remove: () => void;
|
|
44
|
+
retry: () => void;
|
|
45
|
+
}) => React$1.ReactNode;
|
|
46
|
+
/** Click handler for file list items (for preview, etc.) */
|
|
47
|
+
onItemClick?: (file: FileUploadItem) => void;
|
|
48
|
+
/** Error handler */
|
|
49
|
+
onError?: (error: {
|
|
50
|
+
type: string;
|
|
51
|
+
message: string;
|
|
52
|
+
files?: File[];
|
|
53
|
+
}) => void;
|
|
54
|
+
}
|
|
55
|
+
declare const FileUploadField: React$1.ForwardRefExoticComponent<FileUploadFieldProps & React$1.RefAttributes<FileUploadFieldRef>>;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { type DropzoneRenderProps, type DropzoneState, type FileMetadata, FileUploadField, FileUploadFieldProps, FileUploadFieldRef, type FileUploadItem, type UseFileUploadOptions as FileUploadWithUploaderOptions, type UploadConfig };
|
|
58
|
+
//# sourceMappingURL=file-upload-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-upload-field.d.ts","names":[],"sources":["../../src/components/file-upload-field.tsx"],"sourcesContent":[],"mappings":";;;;;;UAiBiB,kBAAA;;qBAEI;EAFJ;EASA,UAAA,EAAA,GAAA,GAAA,IAAA;EACF;EAUE,QAAA,EAAA,GAAA,GAdC,cAcD,EAAA;;AAiBN,UA5BM,oBAAA,SACP,IA2BC,CA3BI,oBA2BJ,EAAA,cAAA,CAAA,CAAA;EACJ;EAGG,IAAA,CAAA,EAAA,IAAA,GAAA,SAAA,GAAA,IAAA;EAEH;EAEgB,YAAA,CAAA,EAAA,MAAA;EAEsC;EArCnD,UAAA,CAAA,EAAA,MAAA;EAAI;EA4CD,YAAA,CAAA,EAAA,OA0IX;EA1I0B;EAAA,YAAA,CAAA,EAlCX,KAkCW,CAAA;IAAA,EAAA,EAAA,MAAA;IAAA,IAAA,EAAA,MAAA;IAAA,IAAA,EAAA,MAAA;;;;;;;;;;;;mBAlBjB,4BACA,kBACJ,OAAA,CAAM;;0BAGH;;;QAEH,OAAA,CAAM;;uBAEU;;;;;YAEsC;;;cAOhD,iBAAe,OAAA,CAAA,0BAAA,uBAAA,OAAA,CAAA,cAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import "../utils-mWJR2N24.js";
|
|
2
|
+
import "../button-hBUFMmsZ.js";
|
|
3
|
+
import "../spinner-Bo0sUZEg.js";
|
|
4
|
+
import { t as FileUpload } from "../file-upload-DeCIv13t.js";
|
|
5
|
+
import { n as useFileUpload } from "../use-file-upload-Dxrej28u.js";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import * as React$1 from "react";
|
|
8
|
+
|
|
9
|
+
//#region src/components/file-upload-field.tsx
|
|
10
|
+
const FileUploadField = React$1.forwardRef(function FileUploadField$1({ size = "default", dropzoneText = "Paste Or Drag & Drop Files Here", buttonText = "Browse for files", showFileList = true, initialFiles = [], disabled = false, className, render, renderFileItem, onItemClick, onError, maxFiles, maxSize, minSize, accept, multiple = false, onFilesChange, onFileAdd, onFileRemove, upload: uploadConfig }, ref) {
|
|
11
|
+
const uploadHook = useFileUpload({
|
|
12
|
+
maxFiles,
|
|
13
|
+
maxSize,
|
|
14
|
+
minSize,
|
|
15
|
+
accept,
|
|
16
|
+
multiple,
|
|
17
|
+
initialFiles: initialFiles.map((f) => ({
|
|
18
|
+
...f,
|
|
19
|
+
id: f.id,
|
|
20
|
+
name: f.name,
|
|
21
|
+
size: f.size,
|
|
22
|
+
type: f.type,
|
|
23
|
+
url: f.url
|
|
24
|
+
})),
|
|
25
|
+
onFilesChange,
|
|
26
|
+
onFileAdd,
|
|
27
|
+
onFileRemove,
|
|
28
|
+
upload: uploadConfig
|
|
29
|
+
});
|
|
30
|
+
const { files, errors, retryUpload, removeFile, reset, clearFiles } = uploadHook;
|
|
31
|
+
React$1.useImperativeHandle(ref, () => ({
|
|
32
|
+
reset: (newFiles) => reset(newFiles),
|
|
33
|
+
clearFiles: () => clearFiles(),
|
|
34
|
+
getFiles: () => files
|
|
35
|
+
}), [
|
|
36
|
+
reset,
|
|
37
|
+
clearFiles,
|
|
38
|
+
files
|
|
39
|
+
]);
|
|
40
|
+
React$1.useEffect(() => {
|
|
41
|
+
if (errors.length > 0 && onError) onError({
|
|
42
|
+
type: "validation",
|
|
43
|
+
message: errors[0]
|
|
44
|
+
});
|
|
45
|
+
}, [errors, onError]);
|
|
46
|
+
const renderDefaultFileItem = (file) => {
|
|
47
|
+
if (renderFileItem) return renderFileItem(file, {
|
|
48
|
+
remove: () => removeFile(file.id),
|
|
49
|
+
retry: () => retryUpload(file.id)
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsx(FileUpload.ListItem, {
|
|
52
|
+
file,
|
|
53
|
+
onItemClick
|
|
54
|
+
}, file.id);
|
|
55
|
+
};
|
|
56
|
+
return /* @__PURE__ */ jsxs(FileUpload.Root, {
|
|
57
|
+
upload: uploadHook,
|
|
58
|
+
accept,
|
|
59
|
+
multiple,
|
|
60
|
+
disabled,
|
|
61
|
+
className,
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsx(FileUpload.Dropzone, {
|
|
64
|
+
size,
|
|
65
|
+
dropzoneText,
|
|
66
|
+
browseText: buttonText,
|
|
67
|
+
render
|
|
68
|
+
}),
|
|
69
|
+
errors.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
70
|
+
className: "text-destructive text-sm",
|
|
71
|
+
children: errors.map((error, i) => /* @__PURE__ */ jsx("p", { children: error }, i))
|
|
72
|
+
}),
|
|
73
|
+
showFileList && files.length > 0 && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
|
|
74
|
+
className: "mb-2 flex items-center justify-between",
|
|
75
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
76
|
+
className: "text-foreground text-sm font-medium",
|
|
77
|
+
children: multiple ? `Files (${files.length})` : "Selected file"
|
|
78
|
+
}), multiple && files.length > 1 && /* @__PURE__ */ jsx(FileUpload.ClearAll, {
|
|
79
|
+
size: "sm",
|
|
80
|
+
className: "text-destructive hover:text-destructive/80",
|
|
81
|
+
children: "Remove all"
|
|
82
|
+
})]
|
|
83
|
+
}), /* @__PURE__ */ jsx(FileUpload.List, { children: files.map(renderDefaultFileItem) })] })
|
|
84
|
+
]
|
|
85
|
+
}, uploadHook.instanceKey);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
export { FileUploadField };
|
|
90
|
+
//# sourceMappingURL=file-upload-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-upload-field.js","names":["React","FileUploadField"],"sources":["../../src/components/file-upload-field.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n FileUpload,\n type DropzoneRenderProps,\n type DropzoneState,\n} from \"@px-ui/ui/components/file-upload\";\nimport {\n useFileUpload,\n type UseFileUploadOptions,\n type FileUploadItem,\n type FileMetadata,\n} from \"@px-ui/ui/hooks/use-file-upload\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface FileUploadFieldRef {\n /** Reset the file upload state, optionally with new initial files */\n reset: (newFiles?: FileMetadata[]) => void;\n /** Clear all files */\n clearFiles: () => void;\n /** Get current files */\n getFiles: () => FileUploadItem[];\n}\n\nexport interface FileUploadFieldProps\n extends Omit<UseFileUploadOptions, \"initialFiles\"> {\n /** Size of the dropzone (ignored when using render prop) */\n size?: \"sm\" | \"default\" | \"lg\";\n /** Text displayed in the dropzone (ignored when using render prop) */\n dropzoneText?: string;\n /** Text for the browse/upload button (ignored when using render prop) */\n buttonText?: string;\n /** Show file list below the dropzone */\n showFileList?: boolean;\n /** Initial files (already uploaded) */\n initialFiles?: Array<{\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n }>;\n /** Whether the upload is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /**\n * Render prop for complete dropzone customization.\n * Receives props to spread and state for conditional styling.\n */\n render?: (\n props: DropzoneRenderProps,\n state: DropzoneState,\n ) => React.ReactElement;\n /** Render prop for custom file item rendering */\n renderFileItem?: (\n file: FileUploadItem,\n actions: { remove: () => void; retry: () => void },\n ) => React.ReactNode;\n /** Click handler for file list items (for preview, etc.) */\n onItemClick?: (file: FileUploadItem) => void;\n /** Error handler */\n onError?: (error: { type: string; message: string; files?: File[] }) => void;\n}\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport const FileUploadField = React.forwardRef<\n FileUploadFieldRef,\n FileUploadFieldProps\n>(function FileUploadField(\n {\n size = \"default\",\n dropzoneText = \"Paste Or Drag & Drop Files Here\",\n buttonText = \"Browse for files\",\n showFileList = true,\n initialFiles = [],\n disabled = false,\n className,\n render,\n renderFileItem,\n onItemClick,\n onError,\n // Hook options\n maxFiles,\n maxSize,\n minSize,\n accept,\n multiple = false,\n onFilesChange,\n onFileAdd,\n onFileRemove,\n upload: uploadConfig,\n },\n ref,\n) {\n const uploadHook = useFileUpload({\n maxFiles,\n maxSize,\n minSize,\n accept,\n multiple,\n initialFiles: initialFiles.map((f) => ({\n ...f,\n id: f.id,\n name: f.name,\n size: f.size,\n type: f.type,\n url: f.url,\n })),\n onFilesChange,\n onFileAdd,\n onFileRemove,\n upload: uploadConfig,\n });\n\n const { files, errors, retryUpload, removeFile, reset, clearFiles } =\n uploadHook;\n\n // Expose reset method via ref\n React.useImperativeHandle(\n ref,\n () => ({\n reset: (newFiles?: FileMetadata[]) => reset(newFiles),\n clearFiles: () => clearFiles(),\n getFiles: () => files,\n }),\n [reset, clearFiles, files],\n );\n\n // Handle errors\n React.useEffect(() => {\n if (errors.length > 0 && onError) {\n onError({\n type: \"validation\",\n message: errors[0],\n });\n }\n }, [errors, onError]);\n\n // Render file item using ListItem or custom render prop\n const renderDefaultFileItem = (file: FileUploadItem) => {\n if (renderFileItem) {\n return renderFileItem(file, {\n remove: () => removeFile(file.id),\n retry: () => retryUpload(file.id),\n });\n }\n\n return (\n <FileUpload.ListItem\n key={file.id}\n file={file}\n onItemClick={onItemClick}\n />\n );\n };\n\n return (\n <FileUpload.Root\n key={uploadHook.instanceKey}\n upload={uploadHook}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n className={className}\n >\n <FileUpload.Dropzone\n size={size}\n dropzoneText={dropzoneText}\n browseText={buttonText}\n render={render}\n />\n\n {/* Errors */}\n {errors.length > 0 && (\n <div className=\"text-destructive text-sm\">\n {errors.map((error, i) => (\n <p key={i}>{error}</p>\n ))}\n </div>\n )}\n\n {/* File List */}\n {showFileList && files.length > 0 && (\n <div>\n <div className=\"mb-2 flex items-center justify-between\">\n <span className=\"text-foreground text-sm font-medium\">\n {multiple ? `Files (${files.length})` : \"Selected file\"}\n </span>\n {multiple && files.length > 1 && (\n <FileUpload.ClearAll\n size=\"sm\"\n className=\"text-destructive hover:text-destructive/80\"\n >\n Remove all\n </FileUpload.ClearAll>\n )}\n </div>\n\n <FileUpload.List>{files.map(renderDefaultFileItem)}</FileUpload.List>\n </div>\n )}\n </FileUpload.Root>\n );\n});\n\nexport type {\n FileUploadItem,\n UploadConfig,\n UseFileUploadOptions as FileUploadWithUploaderOptions,\n FileMetadata,\n} from \"@px-ui/ui/hooks/use-file-upload\";\nexport type {\n DropzoneRenderProps,\n DropzoneState,\n} from \"@px-ui/ui/components/file-upload\";\n"],"mappings":";;;;;;;;;AAuEA,MAAa,kBAAkBA,QAAM,WAGnC,SAASC,kBACT,EACE,OAAO,WACP,eAAe,mCACf,aAAa,oBACb,eAAe,MACf,eAAe,EAAE,EACjB,WAAW,OACX,WACA,QACA,gBACA,aACA,SAEA,UACA,SACA,SACA,QACA,WAAW,OACX,eACA,WACA,cACA,QAAQ,gBAEV,KACA;CACA,MAAM,aAAa,cAAc;EAC/B;EACA;EACA;EACA;EACA;EACA,cAAc,aAAa,KAAK,OAAO;GACrC,GAAG;GACH,IAAI,EAAE;GACN,MAAM,EAAE;GACR,MAAM,EAAE;GACR,MAAM,EAAE;GACR,KAAK,EAAE;GACR,EAAE;EACH;EACA;EACA;EACA,QAAQ;EACT,CAAC;CAEF,MAAM,EAAE,OAAO,QAAQ,aAAa,YAAY,OAAO,eACrD;AAGF,SAAM,oBACJ,YACO;EACL,QAAQ,aAA8B,MAAM,SAAS;EACrD,kBAAkB,YAAY;EAC9B,gBAAgB;EACjB,GACD;EAAC;EAAO;EAAY;EAAM,CAC3B;AAGD,SAAM,gBAAgB;AACpB,MAAI,OAAO,SAAS,KAAK,QACvB,SAAQ;GACN,MAAM;GACN,SAAS,OAAO;GACjB,CAAC;IAEH,CAAC,QAAQ,QAAQ,CAAC;CAGrB,MAAM,yBAAyB,SAAyB;AACtD,MAAI,eACF,QAAO,eAAe,MAAM;GAC1B,cAAc,WAAW,KAAK,GAAG;GACjC,aAAa,YAAY,KAAK,GAAG;GAClC,CAAC;AAGJ,SACE,oBAAC,WAAW;GAEJ;GACO;KAFR,KAAK,GAGV;;AAIN,QACE,qBAAC,WAAW;EAEV,QAAQ;EACA;EACE;EACA;EACC;;GAEX,oBAAC,WAAW;IACJ;IACQ;IACd,YAAY;IACJ;KACR;GAGD,OAAO,SAAS,KACf,oBAAC;IAAI,WAAU;cACZ,OAAO,KAAK,OAAO,MAClB,oBAAC,iBAAW,SAAJ,EAAc,CACtB;KACE;GAIP,gBAAgB,MAAM,SAAS,KAC9B,qBAAC,oBACC,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,WAAU;eACb,WAAW,UAAU,MAAM,OAAO,KAAK;MACnC,EACN,YAAY,MAAM,SAAS,KAC1B,oBAAC,WAAW;KACV,MAAK;KACL,WAAU;eACX;MAEqB;KAEpB,EAEN,oBAAC,WAAW,kBAAM,MAAM,IAAI,sBAAsB,GAAmB,IACjE;;IAzCH,WAAW,YA2CA;EAEpB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import "../button-BiiFfKiR.js";
|
|
2
|
+
import "../use-file-upload-yy-xLBtn.js";
|
|
3
|
+
import { a as FileUpload, c as ListProps, i as DropzoneState, l as RootProps, n as DropzoneProps, o as HiddenInputProps, r as DropzoneRenderProps, s as ListItemProps, t as ClearAllProps, u as getFileTypeIcon } from "../file-upload-D8hgfjvA.js";
|
|
4
|
+
export { ClearAllProps, DropzoneProps, DropzoneRenderProps, DropzoneState, FileUpload, HiddenInputProps, ListItemProps, ListProps, RootProps, getFileTypeIcon };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as react_jsx_runtime156 from "react/jsx-runtime";
|
|
2
|
+
import { PreviewCard } from "@base-ui/react/preview-card";
|
|
3
|
+
|
|
4
|
+
//#region src/components/hover-card.d.ts
|
|
5
|
+
declare function HoverCard({
|
|
6
|
+
...props
|
|
7
|
+
}: PreviewCard.Root.Props): react_jsx_runtime156.JSX.Element;
|
|
8
|
+
declare function HoverCardTrigger({
|
|
9
|
+
...props
|
|
10
|
+
}: PreviewCard.Trigger.Props): react_jsx_runtime156.JSX.Element;
|
|
11
|
+
declare function HoverCardContent({
|
|
12
|
+
className,
|
|
13
|
+
side,
|
|
14
|
+
sideOffset,
|
|
15
|
+
align,
|
|
16
|
+
alignOffset,
|
|
17
|
+
...props
|
|
18
|
+
}: PreviewCard.Popup.Props & Pick<PreviewCard.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime156.JSX.Element;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { HoverCard, HoverCardContent, HoverCardTrigger };
|
|
21
|
+
//# sourceMappingURL=hover-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-card.d.ts","names":[],"sources":["../../src/components/hover-card.tsx"],"sourcesContent":[],"mappings":";;;;iBAMS,SAAA;;GAAwB,WAAA,CAAqB,IAAA,CAAK,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAIvD,gBAAA;;GAA+B,WAAA,CAAqB,OAAA,CAAQ,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAMjE,gBAAA;;;;;;;GAON,WAAA,CAAqB,KAAA,CAAM,QAC5B,KACE,WAAA,CAAqB,UAAA,CAAW,0DAEjC,oBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { PreviewCard } from "@base-ui/react/preview-card";
|
|
6
|
+
|
|
7
|
+
//#region src/components/hover-card.tsx
|
|
8
|
+
function HoverCard({ ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(PreviewCard.Root, {
|
|
10
|
+
"data-slot": "hover-card",
|
|
11
|
+
...props
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function HoverCardTrigger({ ...props }) {
|
|
15
|
+
return /* @__PURE__ */ jsx(PreviewCard.Trigger, {
|
|
16
|
+
"data-slot": "hover-card-trigger",
|
|
17
|
+
...props
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function HoverCardContent({ className, side = "bottom", sideOffset = 4, align = "center", alignOffset = 4, ...props }) {
|
|
21
|
+
return /* @__PURE__ */ jsx(PreviewCard.Portal, {
|
|
22
|
+
"data-slot": "hover-card-portal",
|
|
23
|
+
children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
|
|
24
|
+
align,
|
|
25
|
+
alignOffset,
|
|
26
|
+
side,
|
|
27
|
+
sideOffset,
|
|
28
|
+
className: "isolate z-50",
|
|
29
|
+
children: /* @__PURE__ */ jsx(PreviewCard.Popup, {
|
|
30
|
+
"data-slot": "hover-card-content",
|
|
31
|
+
className: cn("z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
32
|
+
...props
|
|
33
|
+
})
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { HoverCard, HoverCardContent, HoverCardTrigger };
|
|
40
|
+
//# sourceMappingURL=hover-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-card.js","names":["PreviewCardPrimitive"],"sources":["../../src/components/hover-card.tsx"],"sourcesContent":["\"use client\"\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props &\n Pick<\n PreviewCardPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n \"z-50 w-64 origin-(--transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"],"mappings":";;;;;;;AAMA,SAAS,UAAU,EAAE,GAAG,SAA0C;AAChE,QAAO,oBAACA,YAAqB;EAAK,aAAU;EAAa,GAAI;GAAS;;AAGxE,SAAS,iBAAiB,EAAE,GAAG,SAA6C;AAC1E,QACE,oBAACA,YAAqB;EAAQ,aAAU;EAAqB,GAAI;GAAS;;AAI9E,SAAS,iBAAiB,EACxB,WACA,OAAO,UACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,GAAG,SAKA;AACH,QACE,oBAACA,YAAqB;EAAO,aAAU;YACrC,oBAACA,YAAqB;GACb;GACM;GACP;GACM;GACZ,WAAU;aAEV,oBAACA,YAAqB;IACpB,aAAU;IACV,WAAW,GACT,8hBACA,UACD;IACD,GAAI;KACJ;IAC8B;GACN"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { t as Button } from "../button-BiiFfKiR.js";
|
|
2
|
+
import * as react_jsx_runtime128 from "react/jsx-runtime";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { VariantProps } from "class-variance-authority";
|
|
5
|
+
import * as class_variance_authority_types6 from "class-variance-authority/types";
|
|
6
|
+
|
|
7
|
+
//#region src/components/input-group.d.ts
|
|
8
|
+
declare function InputGroup({
|
|
9
|
+
className,
|
|
10
|
+
...props
|
|
11
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime128.JSX.Element;
|
|
12
|
+
declare const inputGroupAddonVariants: (props?: ({
|
|
13
|
+
align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
|
|
14
|
+
} & class_variance_authority_types6.ClassProp) | undefined) => string;
|
|
15
|
+
declare function InputGroupAddon({
|
|
16
|
+
className,
|
|
17
|
+
align,
|
|
18
|
+
...props
|
|
19
|
+
}: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): react_jsx_runtime128.JSX.Element;
|
|
20
|
+
declare const inputGroupButtonVariants: (props?: ({
|
|
21
|
+
size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined;
|
|
22
|
+
} & class_variance_authority_types6.ClassProp) | undefined) => string;
|
|
23
|
+
declare function InputGroupButton({
|
|
24
|
+
className,
|
|
25
|
+
type,
|
|
26
|
+
variant,
|
|
27
|
+
size,
|
|
28
|
+
...props
|
|
29
|
+
}: Omit<React$1.ComponentProps<typeof Button>, "size" | "type"> & VariantProps<typeof inputGroupButtonVariants> & {
|
|
30
|
+
type?: "button" | "submit" | "reset";
|
|
31
|
+
}): react_jsx_runtime128.JSX.Element;
|
|
32
|
+
declare function InputGroupText({
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}: React$1.ComponentProps<"span">): react_jsx_runtime128.JSX.Element;
|
|
36
|
+
declare function InputGroupInput({
|
|
37
|
+
className,
|
|
38
|
+
...props
|
|
39
|
+
}: React$1.ComponentProps<"input">): react_jsx_runtime128.JSX.Element;
|
|
40
|
+
declare function InputGroupTextarea({
|
|
41
|
+
className,
|
|
42
|
+
...props
|
|
43
|
+
}: React$1.ComponentProps<"textarea">): react_jsx_runtime128.JSX.Element;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
|
|
46
|
+
//# sourceMappingURL=input-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-group.d.ts","names":[],"sources":["../../src/components/input-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;iBAUS,UAAA;;;GAAoC,OAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;cAclE;;IAmBL,+BAAA,CAAA;AArCoD,iBAuC5C,eAAA,CAnCU;EAAA,SAAA;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAuChB,OAAA,CAAM,cAvCU,CAAA,KAAA,CAAA,GAuCc,YAvCd,CAAA,OAuCkC,uBAvClC,CAAA,CAAA,EAuC0D,oBAAA,CAAA,GAAA,CAAA,OAvC1D;cAyDb,wBAzDgB,EAAA,CAAA,KAAkD,CAAlD,EAAA,CAAA;EAAuB,IAAA,CAAM,EAAA,IAAA,GAAA,IAAA,GAAA,SAAA,GAAA,SAAA,GAAA,IAAA,GAAA,SAAA;CAAqB,GAyEvE,+BAAA,CAAA,SAzEuE,CAAA,GAAA,SAAA,EAAA,GAAA,MAAA;iBA2E/D,gBAAA,CA3E+D;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;CAAA,EAiFrE,IAjFqE,CAiFhE,OAAA,CAAM,cAjF0D,CAAA,OAiFpC,MAjFoC,CAAA,EAAA,MAAA,GAAA,MAAA,CAAA,GAkFtE,YAlFsE,CAAA,OAkFlD,wBAlFkD,CAAA,GAAA;EAclE,IAAA,CAAA,EAAA,QAAA,GAAA,QAmBL,GAAA,OAAA;IAmDE,oBAAA,CAAA,GAAA,CAAA,OAjDqB;iBA6Df,cAAA,CA5DP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA4D+C,OAAA,CAAM,cA5DrD,CAAA,MAAA,CAAA,CAAA,EA4D2E,oBAAA,CAAA,GAAA,CAAA,OA5D3E;iBAwEO,eAAA,CAvEP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0EC,OAAA,CAAM,cA1EP,CAAA,OAAA,CAAA,CAAA,EA0E8B,oBAAA,CAAA,GAAA,CAAA,OA1E9B;iBAuFO,kBAAA,CArFA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAwFN,OAAA,CAAM,cAxFA,CAAA,UAAA,CAAA,CAAA,EAwF0B,oBAAA,CAAA,GAAA,CAAA,OAxF1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import "../utils-mWJR2N24.js";
|
|
4
|
+
import "../button-hBUFMmsZ.js";
|
|
5
|
+
import "../input-8jqdnUZl.js";
|
|
6
|
+
import "../textarea-Cq0o323P.js";
|
|
7
|
+
import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as InputGroupTextarea, r as InputGroupButton, t as InputGroup } from "../input-group-DqEkmpXW.js";
|
|
8
|
+
|
|
9
|
+
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime134 from "react/jsx-runtime";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
import { OTPFieldPreview } from "@base-ui/react/otp-field";
|
|
4
|
+
|
|
5
|
+
//#region src/components/input-otp.d.ts
|
|
6
|
+
declare function InputOTP({
|
|
7
|
+
className,
|
|
8
|
+
...props
|
|
9
|
+
}: OTPFieldPreview.Root.Props): react_jsx_runtime134.JSX.Element;
|
|
10
|
+
declare function InputOTPGroup({
|
|
11
|
+
className,
|
|
12
|
+
...props
|
|
13
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime134.JSX.Element;
|
|
14
|
+
declare function InputOTPSlot({
|
|
15
|
+
className,
|
|
16
|
+
...props
|
|
17
|
+
}: OTPFieldPreview.Input.Props): react_jsx_runtime134.JSX.Element;
|
|
18
|
+
declare function InputOTPSeparator({
|
|
19
|
+
className,
|
|
20
|
+
...props
|
|
21
|
+
}: OTPFieldPreview.Separator.Props): react_jsx_runtime134.JSX.Element;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
|
|
24
|
+
//# sourceMappingURL=input-otp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-otp.d.ts","names":[],"sources":["../../src/components/input-otp.tsx"],"sourcesContent":[],"mappings":";;;;;iBAMS,QAAA;;;GAGN,eAAA,CAAkB,IAAA,CAAK,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAatB,aAAA;;;GAAuC,OAAA,CAAM,wBAAqB,oBAAA,CAAA,GAAA,CAAA;iBAalE,YAAA;;;GAAsC,eAAA,CAAkB,KAAA,CAAM,QAAK,oBAAA,CAAA,GAAA,CAAA;AAlCG,iBA+CtE,iBAAA,CA1CQ;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA6Cd,eAAA,CAAkB,SAAA,CAAU,KA7Cd,CAAA,EA6CmB,oBAAA,CAAA,GAAA,CAAA,OA7CnB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { MinusIcon } from "lucide-react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import "react";
|
|
5
|
+
import { OTPFieldPreview } from "@base-ui/react/otp-field";
|
|
6
|
+
|
|
7
|
+
//#region src/components/input-otp.tsx
|
|
8
|
+
function InputOTP({ className, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ jsx(OTPFieldPreview.Root, {
|
|
10
|
+
"data-slot": "input-otp",
|
|
11
|
+
className: cn("flex items-center gap-2 has-disabled:opacity-50", className),
|
|
12
|
+
...props
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function InputOTPGroup({ className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ jsx("div", {
|
|
17
|
+
"data-slot": "input-otp-group",
|
|
18
|
+
className: cn("flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40", className),
|
|
19
|
+
...props
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function InputOTPSlot({ className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsx(OTPFieldPreview.Input, {
|
|
24
|
+
"data-slot": "input-otp-slot",
|
|
25
|
+
className: cn("relative flex size-9 items-center justify-center border-y border-e border-input bg-transparent text-center text-sm caret-foreground shadow-xs transition-all outline-none first:rounded-s-md first:border-s last:rounded-e-md focus:z-10 focus:border-ring focus:ring-3 focus:ring-ring/50 aria-invalid:border-destructive focus:aria-invalid:border-destructive focus:aria-invalid:ring-destructive/20 disabled:cursor-not-allowed dark:bg-input/30 dark:focus:aria-invalid:ring-destructive/40", className),
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function InputOTPSeparator({ className, ...props }) {
|
|
30
|
+
return /* @__PURE__ */ jsx(OTPFieldPreview.Separator, {
|
|
31
|
+
"data-slot": "input-otp-separator",
|
|
32
|
+
className: cn("flex items-center [&_svg:not([class*='size-'])]:size-4", className),
|
|
33
|
+
...props,
|
|
34
|
+
children: /* @__PURE__ */ jsx(MinusIcon, {})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };
|
|
40
|
+
//# sourceMappingURL=input-otp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-otp.js","names":["OTPFieldPrimitive"],"sources":["../../src/components/input-otp.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { OTPFieldPreview as OTPFieldPrimitive } from \"@base-ui/react/otp-field\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction InputOTP({\n className,\n ...props\n}: OTPFieldPrimitive.Root.Props) {\n return (\n <OTPFieldPrimitive.Root\n data-slot=\"input-otp\"\n className={cn(\n \"flex items-center gap-2 has-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn(\n \"flex items-center rounded-md has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPSlot({ className, ...props }: OTPFieldPrimitive.Input.Props) {\n return (\n <OTPFieldPrimitive.Input\n data-slot=\"input-otp-slot\"\n className={cn(\n \"relative flex size-9 items-center justify-center border-y border-e border-input bg-transparent text-center text-sm caret-foreground shadow-xs transition-all outline-none first:rounded-s-md first:border-s last:rounded-e-md focus:z-10 focus:border-ring focus:ring-3 focus:ring-ring/50 aria-invalid:border-destructive focus:aria-invalid:border-destructive focus:aria-invalid:ring-destructive/20 disabled:cursor-not-allowed dark:bg-input/30 dark:focus:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputOTPSeparator({\n className,\n ...props\n}: OTPFieldPrimitive.Separator.Props) {\n return (\n <OTPFieldPrimitive.Separator\n data-slot=\"input-otp-separator\"\n className={cn(\n \"flex items-center [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <MinusIcon />\n </OTPFieldPrimitive.Separator>\n )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n"],"mappings":";;;;;;;AAMA,SAAS,SAAS,EAChB,WACA,GAAG,SAC4B;AAC/B,QACE,oBAACA,gBAAkB;EACjB,aAAU;EACV,WAAW,GACT,mDACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,cAAc,EAAE,WAAW,GAAG,SAAsC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,2KACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,aAAa,EAAE,WAAW,GAAG,SAAwC;AAC5E,QACE,oBAACA,gBAAkB;EACjB,aAAU;EACV,WAAW,GACT,oeACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,GAAG,SACiC;AACpC,QACE,oBAACA,gBAAkB;EACjB,aAAU;EACV,WAAW,GACT,0DACA,UACD;EACD,GAAI;YAEJ,oBAAC,cAAY;GACe"}
|