@px-ui/ui 1.0.11 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{avatar-cLlUF5Lz.d.ts → avatar-DTxH_yTY.d.ts} +6 -6
- package/dist/{avatar-cLlUF5Lz.d.ts.map → avatar-DTxH_yTY.d.ts.map} +1 -1
- package/dist/{avatar-a40DzPi3.js → avatar-DnDnGmSj.js} +4 -4
- package/dist/{avatar-a40DzPi3.js.map → avatar-DnDnGmSj.js.map} +1 -1
- package/dist/{button-BJ727apo.d.ts → button-Cfd9X6pX.d.ts} +6 -6
- package/dist/{button-BJ727apo.d.ts.map → button-Cfd9X6pX.d.ts.map} +1 -1
- package/dist/{button-Cp2S1spE.js → button-DnHwqwy0.js} +2 -2
- package/dist/{button-Cp2S1spE.js.map → button-DnHwqwy0.js.map} +1 -1
- package/dist/checkbox-CwkX29tL.js +22 -0
- package/dist/checkbox-CwkX29tL.js.map +1 -0
- package/dist/collapsible-DsrYXIW5.js +28 -0
- package/dist/collapsible-DsrYXIW5.js.map +1 -0
- package/dist/{combobox-Di5naqIR.js → combobox-5IAivvXw.js} +9 -9
- package/dist/{combobox-Di5naqIR.js.map → combobox-5IAivvXw.js.map} +1 -1
- package/dist/{combobox-B73nb6Tq.d.ts → combobox-BBMYGrI2.d.ts} +19 -19
- package/dist/{combobox-B73nb6Tq.d.ts.map → combobox-BBMYGrI2.d.ts.map} +1 -1
- package/dist/components/accordion.d.ts +5 -5
- package/dist/components/accordion.d.ts.map +1 -1
- package/dist/components/accordion.js +2 -2
- package/dist/components/alert-dialog.d.ts +14 -14
- package/dist/components/alert-dialog.d.ts.map +1 -1
- package/dist/components/alert-dialog.js +3 -3
- package/dist/components/alert.d.ts +5 -5
- package/dist/components/alert.js +2 -2
- package/dist/components/aspect-ratio.d.ts +2 -2
- package/dist/components/aspect-ratio.d.ts.map +1 -1
- package/dist/components/aspect-ratio.js +1 -1
- package/dist/components/attachment.d.ts +14 -14
- package/dist/components/attachment.js +3 -3
- package/dist/components/avatar-group.d.ts +4 -4
- package/dist/components/avatar-group.js +5 -5
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/avatar.js +3 -3
- package/dist/components/badge.d.ts +4 -4
- package/dist/components/badge.js +1 -1
- package/dist/components/breadcrumb.d.ts +7 -7
- package/dist/components/breadcrumb.js +2 -2
- package/dist/components/bubble.d.ts +7 -7
- package/dist/components/bubble.js +2 -2
- package/dist/components/button-group.d.ts +9 -9
- package/dist/components/button-group.d.ts.map +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.d.ts +1 -1
- package/dist/components/button.js +2 -2
- package/dist/components/calendar.d.ts +4 -4
- package/dist/components/calendar.d.ts.map +1 -1
- package/dist/components/calendar.js +3 -3
- package/dist/components/card.d.ts +8 -8
- package/dist/components/card.d.ts.map +1 -1
- package/dist/components/card.js +2 -2
- package/dist/components/carousel.d.ts +7 -7
- package/dist/components/carousel.d.ts.map +1 -1
- package/dist/components/carousel.js +3 -3
- package/dist/components/chart.d.ts +5 -5
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +2 -2
- package/dist/components/checkbox.d.ts +2 -2
- package/dist/components/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +3 -21
- package/dist/components/collapsible.d.ts +4 -4
- package/dist/components/collapsible.d.ts.map +1 -1
- package/dist/components/collapsible.js +3 -27
- package/dist/components/combobox.d.ts +2 -2
- package/dist/components/combobox.js +11 -11
- package/dist/components/command.d.ts +11 -11
- package/dist/components/command.js +7 -7
- package/dist/components/context-menu.d.ts +16 -16
- package/dist/components/context-menu.d.ts.map +1 -1
- package/dist/components/context-menu.js +2 -2
- package/dist/components/currency-select-field.d.ts +4 -4
- package/dist/components/currency-select-field.d.ts.map +1 -1
- package/dist/components/currency-select-field.js +12 -12
- package/dist/components/dialog.d.ts +11 -11
- package/dist/components/dialog.js +3 -3
- package/dist/components/direction.js +1 -1
- package/dist/components/drawer.d.ts +11 -11
- package/dist/components/drawer.js +2 -2
- package/dist/components/dropdown-menu.d.ts +1 -1
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/editor-output.d.ts +87 -0
- package/dist/components/editor-output.d.ts.map +1 -0
- package/dist/components/editor-output.js +158 -0
- package/dist/components/editor-output.js.map +1 -0
- package/dist/components/empty.d.ts +7 -7
- package/dist/components/empty.js +3 -61
- package/dist/components/field.d.ts +16 -16
- package/dist/components/field.d.ts.map +1 -1
- package/dist/components/field.js +4 -4
- package/dist/components/file-upload-field.d.ts +3 -3
- package/dist/components/file-upload-field.js +6 -6
- package/dist/components/file-upload.d.ts +3 -3
- package/dist/components/file-upload.js +4 -4
- package/dist/components/hover-card.d.ts +4 -4
- package/dist/components/hover-card.js +1 -1
- package/dist/components/icon.d.ts +83 -0
- package/dist/components/icon.d.ts.map +1 -0
- package/dist/components/icon.js +188 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/input-group.d.ts +11 -11
- package/dist/components/input-group.d.ts.map +1 -1
- package/dist/components/input-group.js +5 -5
- package/dist/components/input-otp.d.ts +5 -5
- package/dist/components/input-otp.js +2 -2
- package/dist/components/input.d.ts +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/item.d.ts +15 -15
- package/dist/components/item.d.ts.map +1 -1
- package/dist/components/item.js +3 -3
- package/dist/components/kbd.d.ts +3 -3
- package/dist/components/kbd.js +1 -1
- package/dist/components/label.d.ts +1 -1
- package/dist/components/label.js +2 -2
- package/dist/components/marker.d.ts +5 -5
- package/dist/components/marker.js +2 -2
- package/dist/components/menubar.d.ts +18 -18
- package/dist/components/menubar.d.ts.map +1 -1
- package/dist/components/menubar.js +8 -8
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/message-scroller.d.ts +8 -8
- package/dist/components/message-scroller.js +3 -3
- package/dist/components/message.d.ts +7 -7
- package/dist/components/message.js +2 -2
- package/dist/components/native-select.d.ts +4 -4
- package/dist/components/native-select.js +2 -2
- package/dist/components/navigation-menu.d.ts +11 -11
- package/dist/components/navigation-menu.js +1 -1
- package/dist/components/pagination.d.ts +9 -9
- package/dist/components/pagination.js +3 -3
- package/dist/components/phone-input.d.ts +2 -2
- package/dist/components/phone-input.js +2 -2
- package/dist/components/popover.d.ts +7 -7
- package/dist/components/popover.js +2 -2
- package/dist/components/progress.d.ts +6 -6
- package/dist/components/progress.js +1 -1
- package/dist/components/radio-group.d.ts +3 -3
- package/dist/components/radio-group.js +1 -1
- package/dist/components/resizable.d.ts +4 -4
- package/dist/components/resizable.js +1 -1
- package/dist/components/rich-text-editor.d.ts +204 -0
- package/dist/components/rich-text-editor.d.ts.map +1 -0
- package/dist/components/rich-text-editor.js +359 -0
- package/dist/components/rich-text-editor.js.map +1 -0
- package/dist/components/scroll-area.d.ts +13 -3
- package/dist/components/scroll-area.d.ts.map +1 -1
- package/dist/components/scroll-area.js +3 -38
- package/dist/components/select.d.ts +10 -10
- package/dist/components/select.js +2 -2
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.js +2 -2
- package/dist/components/sheet.d.ts +9 -9
- package/dist/components/sheet.js +3 -3
- package/dist/components/sidebar.d.ts +26 -26
- package/dist/components/sidebar.js +9 -9
- package/dist/components/skeleton.d.ts +2 -2
- package/dist/components/skeleton.js +2 -2
- package/dist/components/slider.d.ts +2 -2
- package/dist/components/slider.js +1 -1
- package/dist/components/sortable-list.d.ts +153 -0
- package/dist/components/sortable-list.d.ts.map +1 -0
- package/dist/components/sortable-list.js +191 -0
- package/dist/components/sortable-list.js.map +1 -0
- package/dist/components/spinner.d.ts +2 -2
- package/dist/components/spinner.js +2 -2
- package/dist/components/stepper.d.ts +171 -0
- package/dist/components/stepper.d.ts.map +1 -0
- package/dist/components/stepper.js +281 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/switch.d.ts +2 -2
- package/dist/components/switch.js +1 -1
- package/dist/components/table.d.ts +9 -9
- package/dist/components/table.js +2 -2
- package/dist/components/tabs.d.ts +7 -7
- package/dist/components/tabs.js +1 -1
- package/dist/components/textarea.d.ts +2 -2
- package/dist/components/textarea.js +2 -2
- package/dist/components/toast.d.ts +1 -1
- package/dist/components/toast.js +2 -2
- package/dist/components/toggle-group.d.ts +4 -4
- package/dist/components/toggle-group.js +3 -3
- package/dist/components/toggle.d.ts +1 -1
- package/dist/components/toggle.js +2 -2
- package/dist/components/tooltip.d.ts +1 -1
- package/dist/components/tooltip.js +2 -2
- package/dist/components/tree-select.d.ts +192 -0
- package/dist/components/tree-select.d.ts.map +1 -0
- package/dist/components/tree-select.js +421 -0
- package/dist/components/tree-select.js.map +1 -0
- package/dist/{dialog-B3HhbIdv.js → dialog-DuGJUPQl.js} +4 -4
- package/dist/{dialog-B3HhbIdv.js.map → dialog-DuGJUPQl.js.map} +1 -1
- package/dist/{dropdown-menu-vwX--mgm.js → dropdown-menu-BWEfcvmP.js} +20 -20
- package/dist/{dropdown-menu-vwX--mgm.js.map → dropdown-menu-BWEfcvmP.js.map} +1 -1
- package/dist/{dropdown-menu-C6n_oYre.d.ts → dropdown-menu-DGgfWYrK.d.ts} +17 -17
- package/dist/{dropdown-menu-C6n_oYre.d.ts.map → dropdown-menu-DGgfWYrK.d.ts.map} +1 -1
- package/dist/empty-U4zrLmFU.js +62 -0
- package/dist/empty-U4zrLmFU.js.map +1 -0
- package/dist/{file-upload-CGfXHKPZ.d.ts → file-upload-BvAtAxLc.d.ts} +13 -13
- package/dist/{file-upload-CGfXHKPZ.d.ts.map → file-upload-BvAtAxLc.d.ts.map} +1 -1
- package/dist/{file-upload-B0fHdUBL.js → file-upload-DU5FAkHm.js} +5 -5
- package/dist/{file-upload-B0fHdUBL.js.map → file-upload-DU5FAkHm.js.map} +1 -1
- package/dist/hooks/use-async-options.d.ts +1 -1
- package/dist/hooks/use-async-options.js +1 -1
- package/dist/hooks/use-debounce.js +1 -1
- package/dist/hooks/use-file-upload.d.ts +1 -1
- package/dist/hooks/use-file-upload.js +1 -1
- package/dist/hooks/use-infinite-scroll.d.ts +1 -1
- package/dist/hooks/use-infinite-scroll.js +2 -2
- package/dist/hooks/use-intersection-observer.d.ts +1 -1
- package/dist/hooks/use-intersection-observer.js +1 -1
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/{input-BtI3FvrB.d.ts → input-BExbcSu4.d.ts} +3 -3
- package/dist/input-BExbcSu4.d.ts.map +1 -0
- package/dist/{input-group-C78_1dEy.js → input-group-B5PMRYld.js} +6 -6
- package/dist/{input-group-C78_1dEy.js.map → input-group-B5PMRYld.js.map} +1 -1
- package/dist/{input-B-RCmrtR.js → input-jIoNIdLQ.js} +3 -3
- package/dist/{input-B-RCmrtR.js.map → input-jIoNIdLQ.js.map} +1 -1
- package/dist/label-BFg2hxuL.d.ts +11 -0
- package/dist/label-BFg2hxuL.d.ts.map +1 -0
- package/dist/{label-Cmlhz-uF.js → label-DsRhOKY_.js} +3 -3
- package/dist/{label-Cmlhz-uF.js.map → label-DsRhOKY_.js.map} +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/{popover-CsTnnBvx.js → popover-BGkU46G7.js} +3 -3
- package/dist/{popover-CsTnnBvx.js.map → popover-BGkU46G7.js.map} +1 -1
- package/dist/providers/px-ui-provider.d.ts +4 -4
- package/dist/providers/px-ui-provider.d.ts.map +1 -1
- package/dist/providers/px-ui-provider.js +4 -4
- package/dist/scroll-area-mNVMQ0Of.js +40 -0
- package/dist/scroll-area-mNVMQ0Of.js.map +1 -0
- package/dist/{separator-BQBOLUMc.js → separator-D0bew2D_.js} +2 -2
- package/dist/{separator-BQBOLUMc.js.map → separator-D0bew2D_.js.map} +1 -1
- package/dist/{separator-pyhTqgkN.d.ts → separator-Df76guaT.d.ts} +3 -3
- package/dist/{separator-pyhTqgkN.d.ts.map → separator-Df76guaT.d.ts.map} +1 -1
- package/dist/{sheet-Chg_afex.js → sheet-BB23q6wd.js} +4 -4
- package/dist/{sheet-Chg_afex.js.map → sheet-BB23q6wd.js.map} +1 -1
- package/dist/{skeleton-J879XBBA.js → skeleton-knxLhbA5.js} +2 -2
- package/dist/{skeleton-J879XBBA.js.map → skeleton-knxLhbA5.js.map} +1 -1
- package/dist/{spinner-C7yzrK_s.js → spinner-9MdgLDTZ.js} +2 -2
- package/dist/{spinner-C7yzrK_s.js.map → spinner-9MdgLDTZ.js.map} +1 -1
- package/dist/{textarea-CaHmr0re.js → textarea-hZg0gA8u.js} +3 -3
- package/dist/{textarea-CaHmr0re.js.map → textarea-hZg0gA8u.js.map} +1 -1
- package/dist/{toast-BrPEQywl.js → toast-BdxoP8vz.js} +4 -4
- package/dist/{toast-BrPEQywl.js.map → toast-BdxoP8vz.js.map} +1 -1
- package/dist/{toast-CSU7vJkV.d.ts → toast-C5FRpq1P.d.ts} +5 -5
- package/dist/{toast-CSU7vJkV.d.ts.map → toast-C5FRpq1P.d.ts.map} +1 -1
- package/dist/{toggle-CA4KsgWs.js → toggle-BZXrLBLK.js} +2 -2
- package/dist/{toggle-CA4KsgWs.js.map → toggle-BZXrLBLK.js.map} +1 -1
- package/dist/{toggle-gjMAPmkg.d.ts → toggle-CyTngkhT.d.ts} +6 -6
- package/dist/{toggle-gjMAPmkg.d.ts.map → toggle-CyTngkhT.d.ts.map} +1 -1
- package/dist/{tooltip-7bptiThf.d.ts → tooltip-CkX3CD71.d.ts} +6 -6
- package/dist/{tooltip-7bptiThf.d.ts.map → tooltip-CkX3CD71.d.ts.map} +1 -1
- package/dist/{tooltip-BhxGE3Gb.js → tooltip-Dsfn_zZD.js} +2 -2
- package/dist/{tooltip-BhxGE3Gb.js.map → tooltip-Dsfn_zZD.js.map} +1 -1
- package/dist/{use-async-options-rNdyxIrQ.d.ts → use-async-options-DdyHJxHh.d.ts} +1 -1
- package/dist/{use-async-options-rNdyxIrQ.d.ts.map → use-async-options-DdyHJxHh.d.ts.map} +1 -1
- package/dist/{use-async-options-CtB4wZrr.js → use-async-options-tueAuVs_.js} +1 -1
- package/dist/{use-async-options-CtB4wZrr.js.map → use-async-options-tueAuVs_.js.map} +1 -1
- package/dist/{use-debounce--Lv1ABSa.js → use-debounce-7gIeOwla.js} +1 -1
- package/dist/{use-debounce--Lv1ABSa.js.map → use-debounce-7gIeOwla.js.map} +1 -1
- package/dist/{use-file-upload-Cbb_9kTw.d.ts → use-file-upload-Bc7CyQ7O.d.ts} +1 -1
- package/dist/{use-file-upload-Cbb_9kTw.d.ts.map → use-file-upload-Bc7CyQ7O.d.ts.map} +1 -1
- package/dist/{use-file-upload-BbERd3Nw.js → use-file-upload-DQD1vY_Z.js} +1 -1
- package/dist/{use-file-upload-BbERd3Nw.js.map → use-file-upload-DQD1vY_Z.js.map} +1 -1
- package/dist/{use-infinite-scroll-CC_Guyvn.js → use-infinite-scroll-HpeMA2MK.js} +2 -2
- package/dist/{use-infinite-scroll-CC_Guyvn.js.map → use-infinite-scroll-HpeMA2MK.js.map} +1 -1
- package/dist/{use-intersection-observer-CgAaXczI.d.ts → use-intersection-observer-DNPextJs.d.ts} +1 -1
- package/dist/{use-intersection-observer-CgAaXczI.d.ts.map → use-intersection-observer-DNPextJs.d.ts.map} +1 -1
- package/dist/{use-intersection-observer-S0wsPmhF.js → use-intersection-observer-rlKEjyL1.js} +1 -1
- package/dist/{use-intersection-observer-S0wsPmhF.js.map → use-intersection-observer-rlKEjyL1.js.map} +1 -1
- package/dist/{use-mobile--NaMWuCj.js → use-mobile-DUqQzj2D.js} +1 -1
- package/dist/{use-mobile--NaMWuCj.js.map → use-mobile-DUqQzj2D.js.map} +1 -1
- package/dist/{utils-DeIaBj75.js → utils-DUlptRpf.js} +1 -1
- package/dist/{utils-DeIaBj75.js.map → utils-DUlptRpf.js.map} +1 -1
- package/package.json +60 -1
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/collapsible.js.map +0 -1
- package/dist/components/empty.js.map +0 -1
- package/dist/components/scroll-area.js.map +0 -1
- package/dist/input-BtI3FvrB.d.ts.map +0 -1
- package/dist/label-BnSHwOyi.d.ts +0 -11
- package/dist/label-BnSHwOyi.d.ts.map +0 -1
- /package/dist/{direction-ZS2Hta3v.js → direction-DFPbwDSF.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-select.js","names":["out: string[]","ids: string[]","state: CheckedState","result: TreeSelectNode[]","React","meta: TreeSelectNodeMeta","affected: string[]"],"sources":["../../src/components/tree-select.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronRightIcon, SearchIcon } from \"lucide-react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Button } from \"@px-ui/ui/components/button\"\nimport { Checkbox } from \"@px-ui/ui/components/checkbox\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@px-ui/ui/components/collapsible\"\nimport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n} from \"@px-ui/ui/components/empty\"\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupInput,\n} from \"@px-ui/ui/components/input-group\"\nimport { ScrollArea } from \"@px-ui/ui/components/scroll-area\"\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * A single node in the tree passed to {@link TreeSelect}.\n */\nexport interface TreeSelectNode {\n /** Stable, unique identifier. Used as the selection key in `value`. */\n id: string\n /** Human-readable label rendered on the row. */\n label: React.ReactNode\n /** Plain-text label used for search matching. Falls back to `label` when it is a string. */\n searchText?: string\n /** Optional child nodes. Presence of a non-empty array makes the row expandable. */\n children?: TreeSelectNode[]\n /** Disables the row's checkbox (and excludes it from parent propagation). */\n disabled?: boolean\n}\n\n/** Tri-state checked status for a node, per the active `selectionMode`. */\nexport type TreeSelectCheckedState = \"checked\" | \"unchecked\" | \"indeterminate\"\ntype CheckedState = TreeSelectCheckedState\n\n/** How selecting a node affects the others. See {@link TreeSelectProps.selectionMode}. */\nexport type TreeSelectSelectionMode = \"cascade\" | \"leaf\" | \"independent\"\n\n/** Per-row context passed to {@link TreeSelectProps.renderNode}. */\nexport interface TreeSelectNodeMeta {\n /** Tri-state of this row under the active `selectionMode`. */\n state: TreeSelectCheckedState\n /** 0-based depth (root rows are depth 0). */\n depth: number\n /** Whether this (expandable) row is currently open. Always false for leaves. */\n expanded: boolean\n /** Whether the row is disabled (the node itself, or the whole control). */\n disabled: boolean\n /** Put this on your label text (`id={meta.labelId}`) to name the checkbox. */\n labelId: string\n /** Toggle this row's selection; omit `next` to flip from the current state. */\n toggle: (next?: boolean) => void\n}\n\nexport interface TreeSelectProps\n extends Omit<React.ComponentProps<\"div\">, \"onChange\" | \"defaultValue\"> {\n /** The tree of nodes to render. */\n nodes: TreeSelectNode[]\n /** Controlled selection — array of selected node `id`s. Pair with `onValueChange`. */\n value?: string[]\n /** Initial selection for the uncontrolled case. @default [] */\n defaultValue?: string[]\n /** Called whenever the selection changes, with the next array of selected `id`s. */\n onValueChange?: (value: string[]) => void\n /**\n * Render a search box that filters the tree. Matching nodes and their\n * ancestors are kept; non-matching branches are hidden.\n * @default false\n */\n searchable?: boolean\n /** Placeholder for the search input. @default \"Search…\" */\n searchPlaceholder?: string\n /** Controlled search query. Pair with `onSearchChange`. */\n search?: string\n /** Default search query for the uncontrolled case. @default \"\" */\n defaultSearch?: string\n /** Called when the internal search query changes. */\n onSearchChange?: (search: string) => void\n /**\n * Maximum depth to render, 0-based (root nodes are depth 0). Nodes deeper\n * than this are not rendered and are excluded from propagation/counts.\n * Omit for unlimited depth.\n */\n maxDepth?: number\n /**\n * How selecting a node affects the others.\n * - `\"cascade\"` (default): selecting a parent selects all of its enabled\n * descendants; a branch with a mix shows the indeterminate state. The\n * selection includes both parent ids and leaf ids.\n * - `\"leaf\"`: only leaf rows are selectable. A parent checkbox toggles its\n * enabled leaves and reflects their tri-state, but parent ids never enter\n * `value`, and counts are based on leaves.\n * - `\"independent\"`: each node toggles only itself — no cascade and no\n * indeterminate roll-up.\n * @default \"cascade\"\n */\n selectionMode?: TreeSelectSelectionMode\n /**\n * Show a summary line above the tree with the selected count.\n * @default true\n */\n showSummary?: boolean\n /**\n * Render a custom summary given the selected ids and the total selectable\n * count. Overrides the default count text.\n */\n renderSummary?: (selectedCount: number, total: number) => React.ReactNode\n /**\n * Render the row body (everything after the checkbox) yourself. You own the\n * label markup — including click-to-toggle (call `meta.toggle()`) and naming\n * the managed checkbox (put `id={meta.labelId}` on your label text, or rely\n * on a string `label`/`searchText` as the fallback name). The chevron,\n * checkbox, indentation, and expansion stay managed by the component.\n */\n renderNode?: (node: TreeSelectNode, meta: TreeSelectNodeMeta) => React.ReactNode\n /** Message shown when the tree has no nodes at all. @default \"No items.\" */\n emptyMessage?: React.ReactNode\n /** Message shown when a search query yields no matches. @default \"No results found.\" */\n noResultsMessage?: React.ReactNode\n /** Disable the entire control. */\n disabled?: boolean\n /**\n * Whether all branches start expanded (uncontrolled). Ignored when\n * `expandedIds` or `defaultExpandedIds` is provided. @default false\n */\n defaultExpanded?: boolean\n /**\n * Controlled set of expanded branch `id`s. Pair with `onExpandedChange`.\n * Driving this lets a consumer implement expand-all / collapse-all or\n * persist which branches are open.\n */\n expandedIds?: string[]\n /** Initial expanded branch `id`s for the uncontrolled case. */\n defaultExpandedIds?: string[]\n /** Called when the set of expanded branch `id`s changes. */\n onExpandedChange?: (expandedIds: string[]) => void\n /** Max height of the scroll viewport (any CSS length). @default \"16rem\" */\n scrollHeight?: string | number\n /** Extra className for the scroll viewport wrapper. */\n scrollClassName?: string\n}\n\n// ============================================================================\n// Internals\n// ============================================================================\n\n/** Walk the tree honoring `maxDepth`, invoking `visit` with node + depth. */\nfunction walk(\n nodes: TreeSelectNode[],\n maxDepth: number | undefined,\n visit: (node: TreeSelectNode, depth: number) => void,\n depth = 0\n): void {\n if (maxDepth !== undefined && depth > maxDepth) return\n for (const node of nodes) {\n visit(node, depth)\n if (node.children?.length) {\n walk(node.children, maxDepth, visit, depth + 1)\n }\n }\n}\n\n/** True when a node renders an expand/collapse affordance at the given depth. */\nfunction isExpandable(\n node: TreeSelectNode,\n depth: number,\n maxDepth: number | undefined\n): boolean {\n return (\n Boolean(node.children?.length) &&\n (maxDepth === undefined || depth < maxDepth)\n )\n}\n\n/**\n * Returns the set of selectable (enabled) ids within the depth budget. In\n * `\"leaf\"` mode only rendered-leaf rows are selectable; otherwise every enabled\n * node is.\n */\nfunction collectSelectableIds(\n nodes: TreeSelectNode[],\n maxDepth: number | undefined,\n mode: TreeSelectSelectionMode\n): Set<string> {\n const ids = new Set<string>()\n walk(nodes, maxDepth, (node, depth) => {\n if (node.disabled) return\n if (mode === \"leaf\" && isExpandable(node, depth, maxDepth)) return\n ids.add(node.id)\n })\n return ids\n}\n\n/** Enabled rendered-leaf descendant ids of a node within the depth budget. */\nfunction descendantLeafIds(\n node: TreeSelectNode,\n depth: number,\n maxDepth: number | undefined\n): string[] {\n const out: string[] = []\n if (node.children?.length) {\n walk(\n node.children,\n maxDepth,\n (n, d) => {\n if (!n.disabled && !isExpandable(n, d, maxDepth)) out.push(n.id)\n },\n depth + 1\n )\n }\n return out\n}\n\n/** Returns the ids of every expandable branch within the depth budget. */\nfunction collectBranchIds(\n nodes: TreeSelectNode[],\n maxDepth: number | undefined\n): string[] {\n const ids: string[] = []\n walk(nodes, maxDepth, (node, depth) => {\n if (isExpandable(node, depth, maxDepth)) ids.push(node.id)\n })\n return ids\n}\n\n/** Enabled descendant ids of a node (excluding itself) within the depth budget. */\nfunction descendantIds(\n node: TreeSelectNode,\n depth: number,\n maxDepth: number | undefined\n): string[] {\n const out: string[] = []\n if (node.children?.length) {\n walk(\n node.children,\n maxDepth,\n (n) => {\n if (!n.disabled) out.push(n.id)\n },\n depth + 1\n )\n }\n return out\n}\n\n/**\n * Resolves a node id back to the ORIGINAL (unfiltered) node and its true depth.\n * Toggle math (the parent-toggle target set) must be computed from this graph so\n * that an active search filter only affects what is rendered, never which\n * descendants a parent owns.\n */\ninterface OriginalNodeEntry {\n node: TreeSelectNode\n depth: number\n}\n\nfunction buildNodeIndex(\n nodes: TreeSelectNode[],\n maxDepth: number | undefined\n): Map<string, OriginalNodeEntry> {\n const index = new Map<string, OriginalNodeEntry>()\n walk(nodes, maxDepth, (node, depth) => {\n index.set(node.id, { node, depth })\n })\n return index\n}\n\n/**\n * Compute the tri-state of every node in ONE bottom-up pass over the ORIGINAL\n * (unfiltered) tree, keyed by id. Rows then look up their state in O(1), so a\n * large tree no longer re-walks each branch's subtree on every render.\n *\n * Semantics depend on `mode`:\n * - `\"cascade\"`: a branch is `checked` when every enabled descendant is\n * selected (and the branch itself, when selectable, is selected),\n * `unchecked` when none are, `indeterminate` otherwise. Disabled descendants\n * are ignored, so a branch whose only unselected children are disabled still\n * reads as checked.\n * - `\"leaf\"`: a branch's state rolls up from its enabled leaf descendants only;\n * the branch's own id is never considered selected.\n * - `\"independent\"`: every node simply reflects its own selected state.\n */\nfunction buildCheckedStates(\n nodes: TreeSelectNode[],\n maxDepth: number | undefined,\n selected: Set<string>,\n mode: TreeSelectSelectionMode\n): Map<string, CheckedState> {\n const states = new Map<string, CheckedState>()\n\n // Aggregate over a node's subtree EXCLUDING the node: enabled descendants (all\n // kinds, for cascade) and enabled rendered-leaf descendants (for leaf), with\n // how many of each are selected.\n interface Aggregate {\n selfEnabled: number\n selfSelected: number\n selfIsLeaf: boolean\n descEnabled: number\n descSelected: number\n descLeafEnabled: number\n descLeafSelected: number\n }\n\n const visit = (node: TreeSelectNode, depth: number): Aggregate => {\n const selfIsLeaf = !isExpandable(node, depth, maxDepth)\n let descEnabled = 0\n let descSelected = 0\n let descLeafEnabled = 0\n let descLeafSelected = 0\n const childrenInBudget =\n (maxDepth === undefined || depth < maxDepth) && node.children?.length\n if (childrenInBudget) {\n for (const child of node.children!) {\n const a = visit(child, depth + 1)\n descEnabled += a.selfEnabled + a.descEnabled\n descSelected += a.selfSelected + a.descSelected\n descLeafEnabled += (a.selfIsLeaf ? a.selfEnabled : 0) + a.descLeafEnabled\n descLeafSelected +=\n (a.selfIsLeaf ? a.selfSelected : 0) + a.descLeafSelected\n }\n }\n\n let state: CheckedState\n if (mode === \"independent\") {\n state = selected.has(node.id) ? \"checked\" : \"unchecked\"\n } else if (mode === \"leaf\") {\n if (selfIsLeaf) {\n state = selected.has(node.id) ? \"checked\" : \"unchecked\"\n } else if (descLeafEnabled === 0 || descLeafSelected === 0) {\n state = \"unchecked\"\n } else if (descLeafSelected === descLeafEnabled) {\n state = \"checked\"\n } else {\n state = \"indeterminate\"\n }\n } else {\n // cascade\n if (descEnabled === 0) {\n state = selected.has(node.id) ? \"checked\" : \"unchecked\"\n } else {\n const selfChecked = node.disabled ? true : selected.has(node.id)\n if (descSelected === descEnabled && selfChecked) state = \"checked\"\n else if (descSelected === 0 && !selected.has(node.id)) state = \"unchecked\"\n else state = \"indeterminate\"\n }\n }\n states.set(node.id, state)\n\n return {\n selfEnabled: node.disabled ? 0 : 1,\n selfSelected: !node.disabled && selected.has(node.id) ? 1 : 0,\n selfIsLeaf,\n descEnabled,\n descSelected,\n descLeafEnabled,\n descLeafSelected,\n }\n }\n\n for (const root of nodes) visit(root, 0)\n return states\n}\n\nfunction nodeSearchText(node: TreeSelectNode): string {\n if (node.searchText) return node.searchText\n if (typeof node.label === \"string\") return node.label\n return \"\"\n}\n\n/**\n * Filter the tree to nodes matching `query` plus their ancestors. A node is\n * kept when it matches directly (in which case its original children are kept)\n * or when any descendant matches.\n */\nfunction filterTree(\n nodes: TreeSelectNode[],\n query: string\n): TreeSelectNode[] {\n if (!query.trim()) return nodes\n const q = query.trim().toLowerCase()\n const recurse = (list: TreeSelectNode[]): TreeSelectNode[] => {\n const result: TreeSelectNode[] = []\n for (const node of list) {\n const selfMatch = nodeSearchText(node).toLowerCase().includes(q)\n const keptChildren = node.children?.length ? recurse(node.children) : []\n if (selfMatch || keptChildren.length) {\n result.push({\n ...node,\n children: keptChildren.length ? keptChildren : node.children,\n })\n }\n }\n return result\n }\n return recurse(nodes)\n}\n\n/** Shared row layout for both leaf and branch rows. */\nconst treeSelectRowVariants = cva(\n \"flex items-center gap-2 rounded-md py-1.5 pe-2 hover:bg-muted/50\"\n)\n\ninterface TreeSelectRowProps {\n node: TreeSelectNode\n depth: number\n maxDepth: number | undefined\n checkedStates: Map<string, CheckedState>\n expanded: Set<string>\n forceExpanded: boolean\n disabled: boolean\n onToggle: (id: string, next: boolean) => void\n onExpandToggle: (id: string, open: boolean) => void\n renderNode?: (node: TreeSelectNode, meta: TreeSelectNodeMeta) => React.ReactNode\n}\n\nfunction TreeSelectRow({\n node,\n depth,\n maxDepth,\n checkedStates,\n expanded,\n forceExpanded,\n disabled,\n onToggle,\n onExpandToggle,\n renderNode,\n}: TreeSelectRowProps) {\n const labelId = React.useId()\n const expandable = isExpandable(node, depth, maxDepth)\n const state = checkedStates.get(node.id) ?? \"unchecked\"\n const rowDisabled = disabled || Boolean(node.disabled)\n const isOpen = expandable && (forceExpanded || expanded.has(node.id))\n const accessibleName = nodeSearchText(node)\n\n const meta: TreeSelectNodeMeta = {\n state,\n depth,\n expanded: isOpen,\n disabled: rowDisabled,\n labelId,\n toggle: (next) => onToggle(node.id, next ?? state !== \"checked\"),\n }\n\n const checkbox = (\n <Checkbox\n data-slot=\"tree-select-checkbox\"\n checked={state === \"checked\"}\n indeterminate={state === \"indeterminate\"}\n disabled={rowDisabled}\n aria-labelledby={labelId}\n // With a custom row body we can't see the consumer's markup, so fall back\n // to a string name; they can still wire `id={meta.labelId}` for a better one.\n aria-label={renderNode && accessibleName ? accessibleName : undefined}\n onCheckedChange={(checked) => onToggle(node.id, checked)}\n />\n )\n\n // The label doubles as a click target for the checkbox, so clicking the row\n // text toggles selection (and gives the checkbox its accessible name via\n // `aria-labelledby`). The chevron stays a separate target for expansion.\n const body = renderNode ? (\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {renderNode(node, meta)}\n </div>\n ) : (\n <span\n id={labelId}\n className={cn(\n \"min-w-0 flex-1 truncate text-sm\",\n rowDisabled ? \"opacity-50\" : \"cursor-pointer\"\n )}\n onClick={\n rowDisabled ? undefined : () => onToggle(node.id, state !== \"checked\")\n }\n >\n {node.label}\n </span>\n )\n\n if (!expandable) {\n return (\n <div\n role=\"treeitem\"\n aria-selected={state === \"checked\"}\n data-slot=\"tree-select-item\"\n className={treeSelectRowVariants()}\n style={{ paddingInlineStart: `calc(${depth} * 1.5rem + 1.5rem)` }}\n >\n {checkbox}\n {body}\n </div>\n )\n }\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={(open) => onExpandToggle(node.id, open)}\n data-slot=\"tree-select-branch\"\n render={\n <div role=\"treeitem\" aria-selected={state === \"checked\"} aria-expanded={isOpen} />\n }\n >\n <div\n className={treeSelectRowVariants()}\n style={{ paddingInlineStart: `calc(${depth} * 1.5rem)` }}\n >\n <CollapsibleTrigger\n data-slot=\"tree-select-trigger\"\n disabled={forceExpanded}\n aria-label=\"Toggle\"\n render={\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"group size-6 shrink-0 text-muted-foreground\"\n />\n }\n >\n <ChevronRightIcon className=\"transition-transform duration-200 group-data-panel-open:rotate-90\" />\n </CollapsibleTrigger>\n {checkbox}\n {body}\n </div>\n <CollapsibleContent role=\"group\">\n {node.children!.map((child) => (\n <TreeSelectRow\n key={child.id}\n node={child}\n depth={depth + 1}\n maxDepth={maxDepth}\n checkedStates={checkedStates}\n expanded={expanded}\n forceExpanded={forceExpanded}\n disabled={disabled}\n onToggle={onToggle}\n onExpandToggle={onExpandToggle}\n renderNode={renderNode}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * A hierarchical, searchable tree multi-select with tri-state checkboxes.\n *\n * Selecting a parent selects all of its (enabled) descendants; clearing a\n * parent clears them. A branch with a mix of selected and unselected\n * descendants shows the indeterminate state. The selection is a flat array of\n * node ids and works controlled (`value` + `onValueChange`) or uncontrolled\n * (`defaultValue`). Expansion is likewise controllable (`expandedIds` +\n * `onExpandedChange`) so consumers can implement expand-all / collapse-all.\n *\n * @example\n * ```tsx\n * const nodes = [\n * {\n * id: \"fe\",\n * label: \"Frontend\",\n * children: [\n * { id: \"react\", label: \"React\" },\n * { id: \"vue\", label: \"Vue\" },\n * ],\n * },\n * { id: \"be\", label: \"Backend\", children: [{ id: \"rails\", label: \"Rails\" }] },\n * ]\n *\n * function Example() {\n * const [value, setValue] = React.useState<string[]>([\"react\"])\n * return (\n * <TreeSelect\n * nodes={nodes}\n * value={value}\n * onValueChange={setValue}\n * searchable\n * maxDepth={1}\n * />\n * )\n * }\n * ```\n */\nexport function TreeSelect({\n nodes,\n value,\n defaultValue = [],\n onValueChange,\n searchable = false,\n searchPlaceholder = \"Search…\",\n search,\n defaultSearch = \"\",\n onSearchChange,\n maxDepth,\n selectionMode = \"cascade\",\n showSummary = true,\n renderSummary,\n renderNode,\n emptyMessage = \"No items.\",\n noResultsMessage = \"No results found.\",\n disabled = false,\n defaultExpanded = false,\n expandedIds,\n defaultExpandedIds,\n onExpandedChange,\n scrollHeight = \"16rem\",\n scrollClassName,\n className,\n ...props\n}: TreeSelectProps) {\n // Controlled / uncontrolled selection.\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] =\n React.useState<string[]>(defaultValue)\n const currentValue = isControlled ? value : internalValue\n\n const selected = React.useMemo(\n () => new Set(currentValue),\n [currentValue]\n )\n\n const setValue = React.useCallback(\n (next: string[]) => {\n if (!isControlled) setInternalValue(next)\n onValueChange?.(next)\n },\n [isControlled, onValueChange]\n )\n\n // Controlled / uncontrolled search.\n const searchControlled = search !== undefined\n const [internalSearch, setInternalSearch] =\n React.useState<string>(defaultSearch)\n const currentSearch = searchControlled ? search : internalSearch\n\n const setSearch = React.useCallback(\n (next: string) => {\n if (!searchControlled) setInternalSearch(next)\n onSearchChange?.(next)\n },\n [searchControlled, onSearchChange]\n )\n\n // Controlled / uncontrolled expansion. Always driven through `open` on each\n // branch, so it never flips between controlled and uncontrolled and the\n // manual expand/collapse state survives an active search.\n const expansionControlled = expandedIds !== undefined\n const [internalExpanded, setInternalExpanded] = React.useState<string[]>(\n () => {\n if (defaultExpandedIds) return defaultExpandedIds\n if (defaultExpanded) return collectBranchIds(nodes, maxDepth)\n return []\n }\n )\n const currentExpanded = expansionControlled ? expandedIds! : internalExpanded\n const expanded = React.useMemo(\n () => new Set(currentExpanded),\n [currentExpanded]\n )\n\n const setExpanded = React.useCallback(\n (next: string[]) => {\n if (!expansionControlled) setInternalExpanded(next)\n onExpandedChange?.(next)\n },\n [expansionControlled, onExpandedChange]\n )\n\n const handleExpandToggle = React.useCallback(\n (id: string, open: boolean) => {\n const next = new Set(expanded)\n if (open) next.add(id)\n else next.delete(id)\n setExpanded(Array.from(next))\n },\n [expanded, setExpanded]\n )\n\n const selectableIds = React.useMemo(\n () => collectSelectableIds(nodes, maxDepth, selectionMode),\n [nodes, maxDepth, selectionMode]\n )\n\n // Index the ORIGINAL (unfiltered) tree by id. The toggle target set resolves\n // through this, so an active search filter only affects visibility.\n const nodeIndex = React.useMemo(\n () => buildNodeIndex(nodes, maxDepth),\n [nodes, maxDepth]\n )\n\n // Tri-state for every node, computed once per (nodes, maxDepth, selection, mode).\n const checkedStates = React.useMemo(\n () => buildCheckedStates(nodes, maxDepth, selected, selectionMode),\n [nodes, maxDepth, selected, selectionMode]\n )\n\n const selectedCount = React.useMemo(\n () => currentValue.filter((id) => selectableIds.has(id)).length,\n [currentValue, selectableIds]\n )\n\n const filteredNodes = React.useMemo(\n () => (searchable ? filterTree(nodes, currentSearch) : nodes),\n [searchable, nodes, currentSearch]\n )\n\n const hasQuery = searchable && currentSearch.trim().length > 0\n\n const handleToggle = React.useCallback(\n (id: string, next: boolean) => {\n const ids = new Set(selected)\n // Resolve the ORIGINAL node + depth so the target set spans the full\n // (unfiltered) subtree, even when a search filter has pruned children.\n const entry = nodeIndex.get(id)\n let affected: string[]\n if (!entry || selectionMode === \"independent\") {\n affected = [id]\n } else if (selectionMode === \"leaf\") {\n // A branch toggles its enabled leaves; a leaf toggles only itself.\n affected = isExpandable(entry.node, entry.depth, maxDepth)\n ? descendantLeafIds(entry.node, entry.depth, maxDepth)\n : [entry.node.id]\n } else {\n // cascade: the node and all of its enabled descendants.\n affected = [\n entry.node.id,\n ...descendantIds(entry.node, entry.depth, maxDepth),\n ]\n }\n for (const target of affected) {\n if (!selectableIds.has(target)) continue\n if (next) ids.add(target)\n else ids.delete(target)\n }\n setValue(Array.from(ids))\n },\n [selected, maxDepth, selectableIds, nodeIndex, setValue, selectionMode]\n )\n\n const summaryNode = showSummary\n ? renderSummary\n ? renderSummary(selectedCount, selectableIds.size)\n : `${selectedCount} of ${selectableIds.size} selected`\n : null\n\n const isEmpty = filteredNodes.length === 0\n const emptyText = hasQuery ? noResultsMessage : emptyMessage\n\n return (\n <div\n data-slot=\"tree-select\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex flex-col gap-2\",\n disabled && \"pointer-events-none opacity-60\",\n className\n )}\n {...props}\n >\n {searchable && (\n <InputGroup data-slot=\"tree-select-search\">\n <InputGroupAddon>\n <SearchIcon data-icon=\"inline-start\" />\n </InputGroupAddon>\n <InputGroupInput\n type=\"search\"\n value={currentSearch}\n disabled={disabled}\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n onChange={(event) => setSearch(event.target.value)}\n />\n </InputGroup>\n )}\n\n {summaryNode != null && (\n <div\n data-slot=\"tree-select-summary\"\n className=\"text-xs text-muted-foreground\"\n >\n {summaryNode}\n </div>\n )}\n\n <ScrollArea\n data-slot=\"tree-select-scroll\"\n className={cn(\n \"rounded-md border border-input\",\n scrollClassName\n )}\n viewportProps={{ style: { maxHeight: scrollHeight } }}\n >\n <div role=\"tree\" aria-multiselectable className=\"p-1\">\n {isEmpty ? (\n <Empty data-slot=\"tree-select-empty\" className=\"border-0 p-6\">\n <EmptyHeader>\n <EmptyTitle className=\"text-sm font-normal text-muted-foreground\">\n {emptyText}\n </EmptyTitle>\n </EmptyHeader>\n </Empty>\n ) : (\n filteredNodes.map((node) => (\n <TreeSelectRow\n key={node.id}\n node={node}\n depth={0}\n maxDepth={maxDepth}\n checkedStates={checkedStates}\n expanded={expanded}\n forceExpanded={hasQuery}\n disabled={disabled}\n onToggle={handleToggle}\n onExpandToggle={handleExpandToggle}\n renderNode={renderNode}\n />\n ))\n )}\n </div>\n </ScrollArea>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
2
|
-
import { t as Button } from "./button-
|
|
3
|
-
import "react";
|
|
1
|
+
import { t as cn } from "./utils-DUlptRpf.js";
|
|
2
|
+
import { t as Button } from "./button-DnHwqwy0.js";
|
|
4
3
|
import { XIcon } from "lucide-react";
|
|
5
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import "react";
|
|
6
6
|
import { Dialog } from "@base-ui/react/dialog";
|
|
7
7
|
|
|
8
8
|
//#region src/components/dialog.tsx
|
|
@@ -100,4 +100,4 @@ const createDialogHandle = Dialog.createHandle;
|
|
|
100
100
|
|
|
101
101
|
//#endregion
|
|
102
102
|
export { DialogFooter as a, DialogPortal as c, createDialogHandle as d, DialogDescription as i, DialogTitle as l, DialogClose as n, DialogHeader as o, DialogContent as r, DialogOverlay as s, Dialog$1 as t, DialogTrigger as u };
|
|
103
|
-
//# sourceMappingURL=dialog-
|
|
103
|
+
//# sourceMappingURL=dialog-DuGJUPQl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-
|
|
1
|
+
{"version":3,"file":"dialog-DuGJUPQl.js","names":["Dialog","DialogPrimitive"],"sources":["../src/components/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\nimport { Button } from \"@px-ui/ui/components/button\";\nimport { XIcon } from \"lucide-react\";\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return (\n <DialogPrimitive.Root\n data-slot=\"dialog\"\n disablePointerDismissal\n {...props}\n />\n );\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-popover text-popover-foreground ring-foreground/10 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 fixed start-1/2 top-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl p-6 text-sm outline-none ring-1 duration-100 ppx-sm:max-w-md rtl:translate-x-1/2\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n className=\"absolute end-4 top-4\"\n size=\"icon-sm\"\n />\n }\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean;\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 ppx-sm:flex-row ppx-sm:justify-end\",\n className,\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n );\n}\n\nfunction DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"font-heading text-lg font-medium leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Creates a handle that links a `Dialog` to one or more `DialogTrigger`s via\n * their `handle` prop. Use it for detached triggers (a trigger rendered outside\n * `Dialog`) and to reuse a single dialog from multiple triggers. The handle also\n * exposes imperative `open(triggerId)`, `openWithPayload(payload)`, `close()`,\n * and `isOpen`. Create it once, outside render.\n */\nconst createDialogHandle = DialogPrimitive.createHandle;\n\ntype DialogHandle<Payload = unknown> = DialogPrimitive.Handle<Payload>;\n\nexport {\n createDialogHandle,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n\nexport type { DialogHandle };\n"],"mappings":";;;;;;;;AAOA,SAASA,SAAO,EAAE,GAAG,SAAqC;AACxD,QACE,oBAACC,OAAgB;EACf,aAAU;EACV;EACA,GAAI;GACJ;;AAIN,SAAS,cAAc,EAAE,GAAG,SAAwC;AAClE,QAAO,oBAACA,OAAgB;EAAQ,aAAU;EAAiB,GAAI;GAAS;;AAG1E,SAAS,aAAa,EAAE,GAAG,SAAuC;AAChE,QAAO,oBAACA,OAAgB;EAAO,aAAU;EAAgB,GAAI;GAAS;;AAGxE,SAAS,YAAY,EAAE,GAAG,SAAsC;AAC9D,QAAO,oBAACA,OAAgB;EAAM,aAAU;EAAe,GAAI;GAAS;;AAGtE,SAAS,cAAc,EACrB,WACA,GAAG,SAC8B;AACjC,QACE,oBAACA,OAAgB;EACf,aAAU;EACV,WAAW,GACT,yLACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,cAAc,EACrB,WACA,UACA,kBAAkB,MAClB,GAAG,SAGF;AACD,QACE,qBAAC,2BACC,oBAAC,kBAAgB,EACjB,qBAACA,OAAgB;EACf,aAAU;EACV,WAAW,GACT,mYACA,UACD;EACD,GAAI;aAEH,UACA,mBACC,qBAACA,OAAgB;GACf,aAAU;GACV,QACE,oBAAC;IACC,SAAQ;IACR,WAAU;IACV,MAAK;KACL;cAGJ,oBAAC,UAAQ,EACT,oBAAC;IAAK,WAAU;cAAU;KAAY;IAChB;GAEJ,IACX;;AAInB,SAAS,aAAa,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ;;AAIN,SAAS,aAAa,EACpB,WACA,kBAAkB,OAClB,UACA,GAAG,SAGF;AACD,QACE,qBAAC;EACC,aAAU;EACV,WAAW,GACT,kEACA,UACD;EACD,GAAI;aAEH,UACA,mBACC,oBAACA,OAAgB;GAAM,QAAQ,oBAAC,UAAO,SAAQ,YAAY;aAAE;IAErC;GAEtB;;AAIV,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAACA,OAAgB;EACf,aAAU;EACV,WAAW,GAAG,iDAAiD,UAAU;EACzE,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,GAAG,SACiC;AACpC,QACE,oBAACA,OAAgB;EACf,aAAU;EACV,WAAW,GACT,sGACA,UACD;EACD,GAAI;GACJ;;;;;;;;;AAWN,MAAM,qBAAqBA,OAAgB"}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
2
|
-
import "react";
|
|
1
|
+
import { t as cn } from "./utils-DUlptRpf.js";
|
|
3
2
|
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
4
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
import
|
|
4
|
+
import "react";
|
|
5
|
+
import { Menu as Menu$1 } from "@base-ui/react/menu";
|
|
6
6
|
|
|
7
7
|
//#region src/components/dropdown-menu.tsx
|
|
8
8
|
function DropdownMenu({ ...props }) {
|
|
9
|
-
return /* @__PURE__ */ jsx(Menu.Root, {
|
|
9
|
+
return /* @__PURE__ */ jsx(Menu$1.Root, {
|
|
10
10
|
"data-slot": "dropdown-menu",
|
|
11
11
|
...props
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
function DropdownMenuPortal({ ...props }) {
|
|
15
|
-
return /* @__PURE__ */ jsx(Menu.Portal, {
|
|
15
|
+
return /* @__PURE__ */ jsx(Menu$1.Portal, {
|
|
16
16
|
"data-slot": "dropdown-menu-portal",
|
|
17
17
|
...props
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
function DropdownMenuTrigger({ ...props }) {
|
|
21
|
-
return /* @__PURE__ */ jsx(Menu.Trigger, {
|
|
21
|
+
return /* @__PURE__ */ jsx(Menu$1.Trigger, {
|
|
22
22
|
"data-slot": "dropdown-menu-trigger",
|
|
23
23
|
...props
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
function DropdownMenuContent({ align = "start", alignOffset = 0, side = "bottom", sideOffset = 4, className, ...props }) {
|
|
27
|
-
return /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
|
|
27
|
+
return /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(Menu$1.Positioner, {
|
|
28
28
|
className: "isolate z-50 outline-none",
|
|
29
29
|
align,
|
|
30
30
|
alignOffset,
|
|
31
31
|
side,
|
|
32
32
|
sideOffset,
|
|
33
|
-
children: /* @__PURE__ */ jsx(Menu.Popup, {
|
|
33
|
+
children: /* @__PURE__ */ jsx(Menu$1.Popup, {
|
|
34
34
|
"data-slot": "dropdown-menu-content",
|
|
35
35
|
className: cn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none 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:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
36
36
|
...props
|
|
@@ -38,13 +38,13 @@ function DropdownMenuContent({ align = "start", alignOffset = 0, side = "bottom"
|
|
|
38
38
|
}) });
|
|
39
39
|
}
|
|
40
40
|
function DropdownMenuGroup({ ...props }) {
|
|
41
|
-
return /* @__PURE__ */ jsx(Menu.Group, {
|
|
41
|
+
return /* @__PURE__ */ jsx(Menu$1.Group, {
|
|
42
42
|
"data-slot": "dropdown-menu-group",
|
|
43
43
|
...props
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
47
|
-
return /* @__PURE__ */ jsx(Menu.GroupLabel, {
|
|
47
|
+
return /* @__PURE__ */ jsx(Menu$1.GroupLabel, {
|
|
48
48
|
"data-slot": "dropdown-menu-label",
|
|
49
49
|
"data-inset": inset,
|
|
50
50
|
className: cn("px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:ps-8", className),
|
|
@@ -52,7 +52,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
55
|
-
return /* @__PURE__ */ jsx(Menu.Item, {
|
|
55
|
+
return /* @__PURE__ */ jsx(Menu$1.Item, {
|
|
56
56
|
"data-slot": "dropdown-menu-item",
|
|
57
57
|
"data-inset": inset,
|
|
58
58
|
"data-variant": variant,
|
|
@@ -61,13 +61,13 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
function DropdownMenuSub({ ...props }) {
|
|
64
|
-
return /* @__PURE__ */ jsx(Menu.SubmenuRoot, {
|
|
64
|
+
return /* @__PURE__ */ jsx(Menu$1.SubmenuRoot, {
|
|
65
65
|
"data-slot": "dropdown-menu-sub",
|
|
66
66
|
...props
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
70
|
-
return /* @__PURE__ */ jsxs(Menu.SubmenuTrigger, {
|
|
70
|
+
return /* @__PURE__ */ jsxs(Menu$1.SubmenuTrigger, {
|
|
71
71
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
72
72
|
"data-inset": inset,
|
|
73
73
|
className: cn("flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-8 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
@@ -87,7 +87,7 @@ function DropdownMenuSubContent({ align = "start", alignOffset = -3, side = "inl
|
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
function DropdownMenuCheckboxItem({ className, children, checked, inset, ...props }) {
|
|
90
|
-
return /* @__PURE__ */ jsxs(Menu.CheckboxItem, {
|
|
90
|
+
return /* @__PURE__ */ jsxs(Menu$1.CheckboxItem, {
|
|
91
91
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
92
92
|
"data-inset": inset,
|
|
93
93
|
className: cn("relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
@@ -96,18 +96,18 @@ function DropdownMenuCheckboxItem({ className, children, checked, inset, ...prop
|
|
|
96
96
|
children: [/* @__PURE__ */ jsx("span", {
|
|
97
97
|
className: "pointer-events-none absolute end-2 flex items-center justify-center",
|
|
98
98
|
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
99
|
-
children: /* @__PURE__ */ jsx(Menu.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
99
|
+
children: /* @__PURE__ */ jsx(Menu$1.CheckboxItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
100
100
|
}), children]
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
function DropdownMenuRadioGroup({ ...props }) {
|
|
104
|
-
return /* @__PURE__ */ jsx(Menu.RadioGroup, {
|
|
104
|
+
return /* @__PURE__ */ jsx(Menu$1.RadioGroup, {
|
|
105
105
|
"data-slot": "dropdown-menu-radio-group",
|
|
106
106
|
...props
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
function DropdownMenuRadioItem({ className, children, inset, ...props }) {
|
|
110
|
-
return /* @__PURE__ */ jsxs(Menu.RadioItem, {
|
|
110
|
+
return /* @__PURE__ */ jsxs(Menu$1.RadioItem, {
|
|
111
111
|
"data-slot": "dropdown-menu-radio-item",
|
|
112
112
|
"data-inset": inset,
|
|
113
113
|
className: cn("relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
@@ -115,12 +115,12 @@ function DropdownMenuRadioItem({ className, children, inset, ...props }) {
|
|
|
115
115
|
children: [/* @__PURE__ */ jsx("span", {
|
|
116
116
|
className: "pointer-events-none absolute end-2 flex items-center justify-center",
|
|
117
117
|
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
118
|
-
children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
118
|
+
children: /* @__PURE__ */ jsx(Menu$1.RadioItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, {}) })
|
|
119
119
|
}), children]
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
123
|
-
return /* @__PURE__ */ jsx(Menu.Separator, {
|
|
123
|
+
return /* @__PURE__ */ jsx(Menu$1.Separator, {
|
|
124
124
|
"data-slot": "dropdown-menu-separator",
|
|
125
125
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
126
126
|
...props
|
|
@@ -136,4 +136,4 @@ function DropdownMenuShortcut({ className, ...props }) {
|
|
|
136
136
|
|
|
137
137
|
//#endregion
|
|
138
138
|
export { DropdownMenuItem as a, DropdownMenuRadioGroup as c, DropdownMenuShortcut as d, DropdownMenuSub as f, DropdownMenuTrigger as h, DropdownMenuGroup as i, DropdownMenuRadioItem as l, DropdownMenuSubTrigger as m, DropdownMenuCheckboxItem as n, DropdownMenuLabel as o, DropdownMenuSubContent as p, DropdownMenuContent as r, DropdownMenuPortal as s, DropdownMenu as t, DropdownMenuSeparator as u };
|
|
139
|
-
//# sourceMappingURL=dropdown-menu-
|
|
139
|
+
//# sourceMappingURL=dropdown-menu-BWEfcvmP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-vwX--mgm.js","names":["MenuPrimitive"],"sources":["../src/components/dropdown-menu.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { ChevronRightIcon, CheckIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none 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:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:ps-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-8 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"rtl:rotate-180 ms-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"inline-end\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"w-auto min-w-[96px] rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 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 )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon\n />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: MenuPrimitive.RadioItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <CheckIcon\n />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ms-auto text-xs tracking-ppx-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown-menu-BWEfcvmP.js","names":["MenuPrimitive"],"sources":["../src/components/dropdown-menu.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { ChevronRightIcon, CheckIcon } from \"lucide-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\"z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none 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:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95\", className )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:ps-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-8 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"rtl:rotate-180 ms-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"inline-end\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"w-auto min-w-[96px] rounded-md bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 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 )}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: MenuPrimitive.CheckboxItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon\n />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: MenuPrimitive.RadioItem.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute end-2 flex items-center justify-center\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <CheckIcon\n />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ms-auto text-xs tracking-ppx-widest text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import * as react_jsx_runtime157 from "react/jsx-runtime";
|
|
1
2
|
import * as React$1 from "react";
|
|
2
|
-
import * as react_jsx_runtime146 from "react/jsx-runtime";
|
|
3
3
|
import { Menu } from "@base-ui/react/menu";
|
|
4
4
|
|
|
5
5
|
//#region src/components/dropdown-menu.d.ts
|
|
6
6
|
declare function DropdownMenu({
|
|
7
7
|
...props
|
|
8
|
-
}: Menu.Root.Props):
|
|
8
|
+
}: Menu.Root.Props): react_jsx_runtime157.JSX.Element;
|
|
9
9
|
declare function DropdownMenuPortal({
|
|
10
10
|
...props
|
|
11
|
-
}: Menu.Portal.Props):
|
|
11
|
+
}: Menu.Portal.Props): react_jsx_runtime157.JSX.Element;
|
|
12
12
|
declare function DropdownMenuTrigger({
|
|
13
13
|
...props
|
|
14
|
-
}: Menu.Trigger.Props):
|
|
14
|
+
}: Menu.Trigger.Props): react_jsx_runtime157.JSX.Element;
|
|
15
15
|
declare function DropdownMenuContent({
|
|
16
16
|
align,
|
|
17
17
|
alignOffset,
|
|
@@ -19,17 +19,17 @@ declare function DropdownMenuContent({
|
|
|
19
19
|
sideOffset,
|
|
20
20
|
className,
|
|
21
21
|
...props
|
|
22
|
-
}: Menu.Popup.Props & Pick<Menu.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">):
|
|
22
|
+
}: Menu.Popup.Props & Pick<Menu.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime157.JSX.Element;
|
|
23
23
|
declare function DropdownMenuGroup({
|
|
24
24
|
...props
|
|
25
|
-
}: Menu.Group.Props):
|
|
25
|
+
}: Menu.Group.Props): react_jsx_runtime157.JSX.Element;
|
|
26
26
|
declare function DropdownMenuLabel({
|
|
27
27
|
className,
|
|
28
28
|
inset,
|
|
29
29
|
...props
|
|
30
30
|
}: Menu.GroupLabel.Props & {
|
|
31
31
|
inset?: boolean;
|
|
32
|
-
}):
|
|
32
|
+
}): react_jsx_runtime157.JSX.Element;
|
|
33
33
|
declare function DropdownMenuItem({
|
|
34
34
|
className,
|
|
35
35
|
inset,
|
|
@@ -38,10 +38,10 @@ declare function DropdownMenuItem({
|
|
|
38
38
|
}: Menu.Item.Props & {
|
|
39
39
|
inset?: boolean;
|
|
40
40
|
variant?: "default" | "destructive";
|
|
41
|
-
}):
|
|
41
|
+
}): react_jsx_runtime157.JSX.Element;
|
|
42
42
|
declare function DropdownMenuSub({
|
|
43
43
|
...props
|
|
44
|
-
}: Menu.SubmenuRoot.Props):
|
|
44
|
+
}: Menu.SubmenuRoot.Props): react_jsx_runtime157.JSX.Element;
|
|
45
45
|
declare function DropdownMenuSubTrigger({
|
|
46
46
|
className,
|
|
47
47
|
inset,
|
|
@@ -49,7 +49,7 @@ declare function DropdownMenuSubTrigger({
|
|
|
49
49
|
...props
|
|
50
50
|
}: Menu.SubmenuTrigger.Props & {
|
|
51
51
|
inset?: boolean;
|
|
52
|
-
}):
|
|
52
|
+
}): react_jsx_runtime157.JSX.Element;
|
|
53
53
|
declare function DropdownMenuSubContent({
|
|
54
54
|
align,
|
|
55
55
|
alignOffset,
|
|
@@ -57,7 +57,7 @@ declare function DropdownMenuSubContent({
|
|
|
57
57
|
sideOffset,
|
|
58
58
|
className,
|
|
59
59
|
...props
|
|
60
|
-
}: React$1.ComponentProps<typeof DropdownMenuContent>):
|
|
60
|
+
}: React$1.ComponentProps<typeof DropdownMenuContent>): react_jsx_runtime157.JSX.Element;
|
|
61
61
|
declare function DropdownMenuCheckboxItem({
|
|
62
62
|
className,
|
|
63
63
|
children,
|
|
@@ -66,10 +66,10 @@ declare function DropdownMenuCheckboxItem({
|
|
|
66
66
|
...props
|
|
67
67
|
}: Menu.CheckboxItem.Props & {
|
|
68
68
|
inset?: boolean;
|
|
69
|
-
}):
|
|
69
|
+
}): react_jsx_runtime157.JSX.Element;
|
|
70
70
|
declare function DropdownMenuRadioGroup({
|
|
71
71
|
...props
|
|
72
|
-
}: Menu.RadioGroup.Props):
|
|
72
|
+
}: Menu.RadioGroup.Props): react_jsx_runtime157.JSX.Element;
|
|
73
73
|
declare function DropdownMenuRadioItem({
|
|
74
74
|
className,
|
|
75
75
|
children,
|
|
@@ -77,15 +77,15 @@ declare function DropdownMenuRadioItem({
|
|
|
77
77
|
...props
|
|
78
78
|
}: Menu.RadioItem.Props & {
|
|
79
79
|
inset?: boolean;
|
|
80
|
-
}):
|
|
80
|
+
}): react_jsx_runtime157.JSX.Element;
|
|
81
81
|
declare function DropdownMenuSeparator({
|
|
82
82
|
className,
|
|
83
83
|
...props
|
|
84
|
-
}: Menu.Separator.Props):
|
|
84
|
+
}: Menu.Separator.Props): react_jsx_runtime157.JSX.Element;
|
|
85
85
|
declare function DropdownMenuShortcut({
|
|
86
86
|
className,
|
|
87
87
|
...props
|
|
88
|
-
}: React$1.ComponentProps<"span">):
|
|
88
|
+
}: React$1.ComponentProps<"span">): react_jsx_runtime157.JSX.Element;
|
|
89
89
|
//#endregion
|
|
90
90
|
export { DropdownMenuItem as a, DropdownMenuRadioGroup as c, DropdownMenuShortcut as d, DropdownMenuSub as f, DropdownMenuTrigger as h, DropdownMenuGroup as i, DropdownMenuRadioItem as l, DropdownMenuSubTrigger as m, DropdownMenuCheckboxItem as n, DropdownMenuLabel as o, DropdownMenuSubContent as p, DropdownMenuContent as r, DropdownMenuPortal as s, DropdownMenu as t, DropdownMenuSeparator as u };
|
|
91
|
-
//# sourceMappingURL=dropdown-menu-
|
|
91
|
+
//# sourceMappingURL=dropdown-menu-DGgfWYrK.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-
|
|
1
|
+
{"version":3,"file":"dropdown-menu-DGgfWYrK.d.ts","names":[],"sources":["../src/components/dropdown-menu.tsx"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { t as cn } from "./utils-DUlptRpf.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
|
|
5
|
+
//#region src/components/empty.tsx
|
|
6
|
+
function Empty({ className, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx("div", {
|
|
8
|
+
"data-slot": "empty",
|
|
9
|
+
className: cn("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", className),
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function EmptyHeader({ className, ...props }) {
|
|
14
|
+
return /* @__PURE__ */ jsx("div", {
|
|
15
|
+
"data-slot": "empty-header",
|
|
16
|
+
className: cn("flex max-w-sm flex-col items-center gap-2", className),
|
|
17
|
+
...props
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
const emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
21
|
+
variants: { variant: {
|
|
22
|
+
default: "bg-transparent",
|
|
23
|
+
icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
24
|
+
} },
|
|
25
|
+
defaultVariants: { variant: "default" }
|
|
26
|
+
});
|
|
27
|
+
function EmptyMedia({ className, variant = "default", ...props }) {
|
|
28
|
+
return /* @__PURE__ */ jsx("div", {
|
|
29
|
+
"data-slot": "empty-icon",
|
|
30
|
+
"data-variant": variant,
|
|
31
|
+
className: cn(emptyMediaVariants({
|
|
32
|
+
variant,
|
|
33
|
+
className
|
|
34
|
+
})),
|
|
35
|
+
...props
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function EmptyTitle({ className, ...props }) {
|
|
39
|
+
return /* @__PURE__ */ jsx("div", {
|
|
40
|
+
"data-slot": "empty-title",
|
|
41
|
+
className: cn("font-heading text-lg font-medium tracking-ppx-tight", className),
|
|
42
|
+
...props
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function EmptyDescription({ className, ...props }) {
|
|
46
|
+
return /* @__PURE__ */ jsx("div", {
|
|
47
|
+
"data-slot": "empty-description",
|
|
48
|
+
className: cn("text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
49
|
+
...props
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function EmptyContent({ className, ...props }) {
|
|
53
|
+
return /* @__PURE__ */ jsx("div", {
|
|
54
|
+
"data-slot": "empty-content",
|
|
55
|
+
className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
|
|
56
|
+
...props
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//#endregion
|
|
61
|
+
export { EmptyMedia as a, EmptyHeader as i, EmptyContent as n, EmptyTitle as o, EmptyDescription as r, Empty as t };
|
|
62
|
+
//# sourceMappingURL=empty-U4zrLmFU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-U4zrLmFU.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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as Button } from "./button-
|
|
2
|
-
import { d as UseFileUploadReturn, n as FileUploadItem } from "./use-file-upload-
|
|
3
|
-
import * as React$1 from "react";
|
|
1
|
+
import { t as Button } from "./button-Cfd9X6pX.js";
|
|
2
|
+
import { d as UseFileUploadReturn, n as FileUploadItem } from "./use-file-upload-Bc7CyQ7O.js";
|
|
4
3
|
import { LucideIcon } from "lucide-react";
|
|
5
|
-
import * as
|
|
4
|
+
import * as react_jsx_runtime179 from "react/jsx-runtime";
|
|
5
|
+
import * as React$1 from "react";
|
|
6
6
|
import { VariantProps } from "class-variance-authority";
|
|
7
|
-
import * as
|
|
7
|
+
import * as class_variance_authority_types8 from "class-variance-authority/types";
|
|
8
8
|
|
|
9
9
|
//#region src/components/file-upload.d.ts
|
|
10
10
|
type FileInfo = {
|
|
@@ -35,11 +35,11 @@ declare function Root({
|
|
|
35
35
|
multiple,
|
|
36
36
|
disabled,
|
|
37
37
|
className
|
|
38
|
-
}: RootProps):
|
|
38
|
+
}: RootProps): react_jsx_runtime179.JSX.Element;
|
|
39
39
|
declare const dropzoneVariants: (props?: ({
|
|
40
40
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
41
41
|
isDragActive?: boolean | null | undefined;
|
|
42
|
-
} &
|
|
42
|
+
} & class_variance_authority_types8.ClassProp) | undefined) => string;
|
|
43
43
|
/** State passed to the render prop */
|
|
44
44
|
interface DropzoneState {
|
|
45
45
|
/** Whether files are being dragged over the dropzone */
|
|
@@ -84,12 +84,12 @@ declare function Dropzone({
|
|
|
84
84
|
browseText,
|
|
85
85
|
render,
|
|
86
86
|
...props
|
|
87
|
-
}: DropzoneProps):
|
|
87
|
+
}: DropzoneProps): react_jsx_runtime179.JSX.Element;
|
|
88
88
|
interface HiddenInputProps extends Omit<React$1.ComponentProps<"input">, "type"> {}
|
|
89
89
|
declare function HiddenInput({
|
|
90
90
|
className,
|
|
91
91
|
...props
|
|
92
|
-
}: HiddenInputProps):
|
|
92
|
+
}: HiddenInputProps): react_jsx_runtime179.JSX.Element;
|
|
93
93
|
interface ListProps extends Omit<React$1.ComponentProps<"div">, "children"> {
|
|
94
94
|
children?: React$1.ReactNode | ((files: FileUploadItem[]) => React$1.ReactNode);
|
|
95
95
|
}
|
|
@@ -97,7 +97,7 @@ declare function List({
|
|
|
97
97
|
className,
|
|
98
98
|
children,
|
|
99
99
|
...props
|
|
100
|
-
}: ListProps):
|
|
100
|
+
}: ListProps): react_jsx_runtime179.JSX.Element | null;
|
|
101
101
|
interface ListItemProps extends React$1.ComponentProps<"div"> {
|
|
102
102
|
file: FileUploadItem;
|
|
103
103
|
/** Show file type icon (default: true) */
|
|
@@ -126,12 +126,12 @@ declare function ListItem({
|
|
|
126
126
|
icon,
|
|
127
127
|
onItemClick,
|
|
128
128
|
...props
|
|
129
|
-
}: ListItemProps):
|
|
129
|
+
}: ListItemProps): react_jsx_runtime179.JSX.Element;
|
|
130
130
|
interface ClearAllProps extends React$1.ComponentProps<typeof Button> {}
|
|
131
131
|
declare function ClearAll({
|
|
132
132
|
children,
|
|
133
133
|
...props
|
|
134
|
-
}: ClearAllProps):
|
|
134
|
+
}: ClearAllProps): react_jsx_runtime179.JSX.Element | null;
|
|
135
135
|
declare const FileUpload: {
|
|
136
136
|
Root: typeof Root;
|
|
137
137
|
Dropzone: typeof Dropzone;
|
|
@@ -142,4 +142,4 @@ declare const FileUpload: {
|
|
|
142
142
|
};
|
|
143
143
|
//#endregion
|
|
144
144
|
export { FileUpload as a, ListProps as c, DropzoneState as i, RootProps as l, DropzoneProps as n, HiddenInputProps as o, DropzoneRenderProps as r, ListItemProps as s, ClearAllProps as t, getFileTypeIcon as u };
|
|
145
|
-
//# sourceMappingURL=file-upload-
|
|
145
|
+
//# sourceMappingURL=file-upload-BvAtAxLc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload-
|
|
1
|
+
{"version":3,"file":"file-upload-BvAtAxLc.d.ts","names":[],"sources":["../src/components/file-upload.tsx"],"sourcesContent":[],"mappings":"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"}
|