@tribepad/themis 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/Accordion/index.js +2 -77
- package/dist/elements/Accordion/index.js.map +1 -1
- package/dist/elements/Accordion/index.mjs +2 -4
- package/dist/elements/Accordion/index.mjs.map +1 -1
- package/dist/elements/AlertDialog/AlertDialog.d.ts +43 -0
- package/dist/elements/AlertDialog/AlertDialog.d.ts.map +1 -0
- package/dist/elements/AlertDialog/AlertDialog.styles.d.ts +15 -0
- package/dist/elements/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts +72 -0
- package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -0
- package/dist/elements/AlertDialog/index.d.ts +25 -0
- package/dist/elements/AlertDialog/index.d.ts.map +1 -0
- package/dist/elements/AlertDialog/index.js +3 -0
- package/dist/elements/AlertDialog/index.js.map +1 -0
- package/dist/elements/AlertDialog/index.mjs +3 -0
- package/dist/elements/AlertDialog/index.mjs.map +1 -0
- package/dist/elements/Avatar/index.js +2 -53
- package/dist/elements/Avatar/index.js.map +1 -1
- package/dist/elements/Avatar/index.mjs +2 -4
- package/dist/elements/Avatar/index.mjs.map +1 -1
- package/dist/elements/Badge/index.js +2 -42
- package/dist/elements/Badge/index.js.map +1 -1
- package/dist/elements/Badge/index.mjs +2 -5
- package/dist/elements/Badge/index.mjs.map +1 -1
- package/dist/elements/Breadcrumbs/index.js +2 -53
- package/dist/elements/Breadcrumbs/index.js.map +1 -1
- package/dist/elements/Breadcrumbs/index.mjs +2 -8
- package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
- package/dist/elements/Button/Button.d.ts +26 -81
- package/dist/elements/Button/Button.d.ts.map +1 -1
- package/dist/elements/Button/Button.styles.d.ts +35 -0
- package/dist/elements/Button/Button.styles.d.ts.map +1 -0
- package/dist/elements/Button/Button.types.d.ts +20 -8
- package/dist/elements/Button/Button.types.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -26
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.mjs +2 -5
- package/dist/elements/Button/index.mjs.map +1 -1
- package/dist/elements/ButtonGroup/index.js +2 -65
- package/dist/elements/ButtonGroup/index.js.map +1 -1
- package/dist/elements/ButtonGroup/index.mjs +2 -4
- package/dist/elements/ButtonGroup/index.mjs.map +1 -1
- package/dist/elements/Card/Card.d.ts.map +1 -1
- package/dist/elements/Card/index.js +2 -84
- package/dist/elements/Card/index.js.map +1 -1
- package/dist/elements/Card/index.mjs +2 -7
- package/dist/elements/Card/index.mjs.map +1 -1
- package/dist/elements/Carousel/Carousel.d.ts +1 -11
- package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
- package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
- package/dist/elements/Carousel/index.js +2 -22
- package/dist/elements/Carousel/index.js.map +1 -1
- package/dist/elements/Carousel/index.mjs +2 -9
- package/dist/elements/Carousel/index.mjs.map +1 -1
- package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
- package/dist/elements/Chart/index.js +2 -46
- package/dist/elements/Chart/index.js.map +1 -1
- package/dist/elements/Chart/index.mjs +2 -5
- package/dist/elements/Chart/index.mjs.map +1 -1
- package/dist/elements/Checkbox/index.js +2 -46
- package/dist/elements/Checkbox/index.js.map +1 -1
- package/dist/elements/Checkbox/index.mjs +2 -5
- package/dist/elements/Checkbox/index.mjs.map +1 -1
- package/dist/elements/CheckboxGroup/index.js +2 -70
- package/dist/elements/CheckboxGroup/index.js.map +1 -1
- package/dist/elements/CheckboxGroup/index.mjs +2 -5
- package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
- package/dist/elements/Combobox/Combobox.d.ts +56 -0
- package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
- package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
- package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
- package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
- package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
- package/dist/elements/Combobox/index.d.ts +20 -0
- package/dist/elements/Combobox/index.d.ts.map +1 -0
- package/dist/elements/Combobox/index.js +3 -0
- package/dist/elements/Combobox/index.js.map +1 -0
- package/dist/elements/Combobox/index.mjs +3 -0
- package/dist/elements/Combobox/index.mjs.map +1 -0
- package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/index.js +2 -122
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +2 -5
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
- package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
- package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
- package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
- package/dist/elements/Dropdown/index.d.ts +1 -0
- package/dist/elements/Dropdown/index.d.ts.map +1 -1
- package/dist/elements/Dropdown/index.js +2 -40
- package/dist/elements/Dropdown/index.js.map +1 -1
- package/dist/elements/Dropdown/index.mjs +2 -3
- package/dist/elements/Dropdown/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +2 -137
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +2 -8
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/FormLayout/index.js +2 -16
- package/dist/elements/FormLayout/index.js.map +1 -1
- package/dist/elements/FormLayout/index.mjs +2 -3
- package/dist/elements/FormLayout/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.d.ts +9 -14
- package/dist/elements/Modal/Modal.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +29 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
- package/dist/elements/Modal/index.d.ts +1 -0
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +2 -51
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +2 -2
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/index.js +2 -56
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +2 -7
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
- package/dist/elements/OTPInput/index.js +2 -12
- package/dist/elements/OTPInput/index.js.map +1 -1
- package/dist/elements/OTPInput/index.mjs +2 -3
- package/dist/elements/OTPInput/index.mjs.map +1 -1
- package/dist/elements/Pagination/Pagination.d.ts +45 -0
- package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
- package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
- package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
- package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
- package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/elements/Pagination/index.d.ts +21 -0
- package/dist/elements/Pagination/index.d.ts.map +1 -0
- package/dist/elements/Pagination/index.js +3 -0
- package/dist/elements/Pagination/index.js.map +1 -0
- package/dist/elements/Pagination/index.mjs +3 -0
- package/dist/elements/Pagination/index.mjs.map +1 -0
- package/dist/elements/Panel/index.js +2 -32
- package/dist/elements/Panel/index.js.map +1 -1
- package/dist/elements/Panel/index.mjs +2 -3
- package/dist/elements/Panel/index.mjs.map +1 -1
- package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
- package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
- package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
- package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
- package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
- package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
- package/dist/elements/PasswordField/index.css +2 -0
- package/dist/elements/PasswordField/index.css.map +1 -0
- package/dist/elements/PasswordField/index.d.ts +20 -0
- package/dist/elements/PasswordField/index.d.ts.map +1 -0
- package/dist/elements/PasswordField/index.js +3 -0
- package/dist/elements/PasswordField/index.js.map +1 -0
- package/dist/elements/PasswordField/index.mjs +3 -0
- package/dist/elements/PasswordField/index.mjs.map +1 -0
- package/dist/elements/Progress/index.js +2 -29
- package/dist/elements/Progress/index.js.map +1 -1
- package/dist/elements/Progress/index.mjs +2 -4
- package/dist/elements/Progress/index.mjs.map +1 -1
- package/dist/elements/RadioGroup/index.js +2 -46
- package/dist/elements/RadioGroup/index.js.map +1 -1
- package/dist/elements/RadioGroup/index.mjs +2 -5
- package/dist/elements/RadioGroup/index.mjs.map +1 -1
- package/dist/elements/Resizable/components/ResizableHandle.d.ts +0 -8
- package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -1
- package/dist/elements/Resizable/components/ResizablePanel.d.ts +0 -8
- package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -1
- package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +0 -8
- package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -1
- package/dist/elements/Resizable/components/ResizablePopover.d.ts +0 -8
- package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
- package/dist/elements/Resizable/index.js +2 -64
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +2 -7
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/SearchField/SearchField.d.ts +27 -0
- package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
- package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
- package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
- package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
- package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
- package/dist/elements/SearchField/index.css +2 -0
- package/dist/elements/SearchField/index.css.map +1 -0
- package/dist/elements/SearchField/index.d.ts +21 -0
- package/dist/elements/SearchField/index.d.ts.map +1 -0
- package/dist/elements/SearchField/index.js +3 -0
- package/dist/elements/SearchField/index.js.map +1 -0
- package/dist/elements/SearchField/index.mjs +3 -0
- package/dist/elements/SearchField/index.mjs.map +1 -0
- package/dist/elements/Select/Select.d.ts +19 -48
- package/dist/elements/Select/Select.d.ts.map +1 -1
- package/dist/elements/Select/Select.styles.d.ts +55 -0
- package/dist/elements/Select/Select.styles.d.ts.map +1 -0
- package/dist/elements/Select/index.js +2 -32
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +2 -3
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/Skeleton/index.js +2 -21
- package/dist/elements/Skeleton/index.js.map +1 -1
- package/dist/elements/Skeleton/index.mjs +2 -4
- package/dist/elements/Skeleton/index.mjs.map +1 -1
- package/dist/elements/Switch/index.js +2 -48
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Switch/index.mjs +2 -30
- package/dist/elements/Switch/index.mjs.map +1 -1
- package/dist/elements/Table/Table.d.ts +3 -24
- package/dist/elements/Table/Table.d.ts.map +1 -1
- package/dist/elements/Table/Table.styles.d.ts +24 -0
- package/dist/elements/Table/Table.styles.d.ts.map +1 -0
- package/dist/elements/Table/index.js +2 -75
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +2 -6
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/Tabs/index.js +2 -73
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/Tabs/index.mjs +2 -4
- package/dist/elements/Tabs/index.mjs.map +1 -1
- package/dist/elements/TextField/TextField.d.ts +6 -42
- package/dist/elements/TextField/TextField.d.ts.map +1 -1
- package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
- package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.icons.d.ts +19 -0
- package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.styles.d.ts +37 -0
- package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
- package/dist/elements/TextField/TextField.types.d.ts +3 -0
- package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
- package/dist/elements/TextField/index.css +1 -22
- package/dist/elements/TextField/index.css.map +1 -1
- package/dist/elements/TextField/index.js +2 -259
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +2 -206
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/TimeField/index.js +2 -44
- package/dist/elements/TimeField/index.js.map +1 -1
- package/dist/elements/TimeField/index.mjs +2 -3
- package/dist/elements/TimeField/index.mjs.map +1 -1
- package/dist/elements/Toast/Toast.d.ts +0 -22
- package/dist/elements/Toast/Toast.d.ts.map +1 -1
- package/dist/elements/Toast/index.js +2 -59
- package/dist/elements/Toast/index.js.map +1 -1
- package/dist/elements/Toast/index.mjs +2 -6
- package/dist/elements/Toast/index.mjs.map +1 -1
- package/dist/elements/Tooltip/index.js +2 -58
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.mjs +2 -5
- package/dist/elements/Tooltip/index.mjs.map +1 -1
- package/dist/elements/index.css +1 -22
- package/dist/elements/index.css.map +1 -1
- package/dist/elements/index.d.ts +13 -1
- package/dist/elements/index.d.ts.map +1 -1
- package/dist/elements/index.js +2 -838
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +2 -41
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.css +1 -22
- package/dist/index.css.map +1 -1
- package/dist/index.js +3 -864
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -43
- package/dist/index.mjs.map +1 -1
- package/dist/schemas/index.js +2 -28
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/index.mjs +2 -3
- package/dist/schemas/index.mjs.map +1 -1
- package/dist/styles/defaults.css +151 -0
- package/dist/styles/index.js +1 -152
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -3
- package/dist/styles/index.mjs.map +1 -1
- package/dist/utils/index.js +1 -12
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +1 -3
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +9 -7
- package/src/elements/Accordion/Accordion.stories.tsx +1 -1
- package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
- package/src/elements/Avatar/Avatar.stories.tsx +1 -1
- package/src/elements/Badge/Badge.stories.tsx +1 -1
- package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
- package/src/elements/Button/Button.stories.tsx +1 -1
- package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
- package/src/elements/Card/Card.stories.tsx +1 -1
- package/src/elements/Carousel/Carousel.stories.tsx +1 -1
- package/src/elements/Chart/Chart.stories.tsx +1 -1
- package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
- package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1 -1
- package/src/elements/Combobox/Combobox.stories.tsx +133 -0
- package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
- package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
- package/src/elements/FileField/FileField.stories.tsx +1 -1
- package/src/elements/FileField/FileProgress.stories.tsx +1 -1
- package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
- package/src/elements/Modal/Modal.stories.tsx +1 -1
- package/src/elements/NumberField/NumberField.stories.tsx +1 -1
- package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
- package/src/elements/Pagination/Pagination.stories.tsx +203 -0
- package/src/elements/Panel/Panel.stories.tsx +1 -1
- package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
- package/src/elements/Progress/Progress.stories.tsx +1 -1
- package/src/elements/RadioGroup/RadioGroup.stories.tsx +1 -1
- package/src/elements/Resizable/Resizable.stories.tsx +1 -1
- package/src/elements/SearchField/SearchField.stories.tsx +146 -0
- package/src/elements/Select/Select.stories.tsx +1 -1
- package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
- package/src/elements/Switch/Switch.stories.tsx +1 -1
- package/src/elements/Table/Table.stories.tsx +1 -1
- package/src/elements/Tabs/Tabs.stories.tsx +1 -1
- package/src/elements/TextField/TextField.stories.tsx +1 -1
- package/src/elements/TimeField/TimeField.stories.tsx +1 -1
- package/src/elements/Toast/Toast.stories.tsx +1 -1
- package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
- package/dist/Carousel-NTZX5TOW.js +0 -16
- package/dist/Carousel-NTZX5TOW.js.map +0 -1
- package/dist/Carousel-YH3DOQJU.mjs +0 -7
- package/dist/Carousel-YH3DOQJU.mjs.map +0 -1
- package/dist/chunk-2HIUTHMU.mjs +0 -234
- package/dist/chunk-2HIUTHMU.mjs.map +0 -1
- package/dist/chunk-34GTFTDO.js +0 -431
- package/dist/chunk-34GTFTDO.js.map +0 -1
- package/dist/chunk-3H7ASYR7.js +0 -250
- package/dist/chunk-3H7ASYR7.js.map +0 -1
- package/dist/chunk-3IEN7JOP.js +0 -316
- package/dist/chunk-3IEN7JOP.js.map +0 -1
- package/dist/chunk-3JHN4GAL.js +0 -326
- package/dist/chunk-3JHN4GAL.js.map +0 -1
- package/dist/chunk-3MJPASQU.js +0 -232
- package/dist/chunk-3MJPASQU.js.map +0 -1
- package/dist/chunk-3XD2JUL3.js +0 -572
- package/dist/chunk-3XD2JUL3.js.map +0 -1
- package/dist/chunk-3YOY2VJ6.js +0 -189
- package/dist/chunk-3YOY2VJ6.js.map +0 -1
- package/dist/chunk-4DU5JSXB.js +0 -408
- package/dist/chunk-4DU5JSXB.js.map +0 -1
- package/dist/chunk-4E4E2GSS.js +0 -352
- package/dist/chunk-4E4E2GSS.js.map +0 -1
- package/dist/chunk-4NHAP4AN.mjs +0 -3
- package/dist/chunk-4NHAP4AN.mjs.map +0 -1
- package/dist/chunk-4S33J5NY.mjs +0 -415
- package/dist/chunk-4S33J5NY.mjs.map +0 -1
- package/dist/chunk-5SMGRT3G.mjs +0 -354
- package/dist/chunk-5SMGRT3G.mjs.map +0 -1
- package/dist/chunk-5SVLJN2C.mjs +0 -22
- package/dist/chunk-5SVLJN2C.mjs.map +0 -1
- package/dist/chunk-66WTU4EB.mjs +0 -299
- package/dist/chunk-66WTU4EB.mjs.map +0 -1
- package/dist/chunk-6S25NMOT.mjs +0 -335
- package/dist/chunk-6S25NMOT.mjs.map +0 -1
- package/dist/chunk-6SP7UB3D.js +0 -4
- package/dist/chunk-6SP7UB3D.js.map +0 -1
- package/dist/chunk-6TYWWQHM.mjs +0 -565
- package/dist/chunk-6TYWWQHM.mjs.map +0 -1
- package/dist/chunk-A3YUJA6W.mjs +0 -384
- package/dist/chunk-A3YUJA6W.mjs.map +0 -1
- package/dist/chunk-A6KEDVUR.js +0 -61
- package/dist/chunk-A6KEDVUR.js.map +0 -1
- package/dist/chunk-A77RUEWL.js +0 -730
- package/dist/chunk-A77RUEWL.js.map +0 -1
- package/dist/chunk-AA4IKMPE.mjs +0 -3
- package/dist/chunk-AA4IKMPE.mjs.map +0 -1
- package/dist/chunk-AKIA6GW6.mjs +0 -163
- package/dist/chunk-AKIA6GW6.mjs.map +0 -1
- package/dist/chunk-AL6P275L.mjs +0 -435
- package/dist/chunk-AL6P275L.mjs.map +0 -1
- package/dist/chunk-AZ3RJYTB.js +0 -37
- package/dist/chunk-AZ3RJYTB.js.map +0 -1
- package/dist/chunk-B5Q4UPL6.js +0 -32
- package/dist/chunk-B5Q4UPL6.js.map +0 -1
- package/dist/chunk-B6DHPMDP.mjs +0 -335
- package/dist/chunk-B6DHPMDP.mjs.map +0 -1
- package/dist/chunk-BDXKKMBZ.mjs +0 -184
- package/dist/chunk-BDXKKMBZ.mjs.map +0 -1
- package/dist/chunk-BL6E2DLZ.mjs +0 -52
- package/dist/chunk-BL6E2DLZ.mjs.map +0 -1
- package/dist/chunk-CGFDS4XS.mjs +0 -121
- package/dist/chunk-CGFDS4XS.mjs.map +0 -1
- package/dist/chunk-CJIW5TKI.js +0 -139
- package/dist/chunk-CJIW5TKI.js.map +0 -1
- package/dist/chunk-CKNISJOQ.js +0 -314
- package/dist/chunk-CKNISJOQ.js.map +0 -1
- package/dist/chunk-D6CBOECS.mjs +0 -1757
- package/dist/chunk-D6CBOECS.mjs.map +0 -1
- package/dist/chunk-DDWEVC2S.js +0 -166
- package/dist/chunk-DDWEVC2S.js.map +0 -1
- package/dist/chunk-DZ556D2F.mjs +0 -176
- package/dist/chunk-DZ556D2F.mjs.map +0 -1
- package/dist/chunk-E2KQFV3O.mjs +0 -10
- package/dist/chunk-E2KQFV3O.mjs.map +0 -1
- package/dist/chunk-EMMLADSC.js +0 -126
- package/dist/chunk-EMMLADSC.js.map +0 -1
- package/dist/chunk-EP4WOI5D.mjs +0 -926
- package/dist/chunk-EP4WOI5D.mjs.map +0 -1
- package/dist/chunk-FJRXLJC2.mjs +0 -160
- package/dist/chunk-FJRXLJC2.mjs.map +0 -1
- package/dist/chunk-FKQI434R.js +0 -345
- package/dist/chunk-FKQI434R.js.map +0 -1
- package/dist/chunk-FPKEAJRZ.mjs +0 -100
- package/dist/chunk-FPKEAJRZ.mjs.map +0 -1
- package/dist/chunk-FWQYB22U.js +0 -183
- package/dist/chunk-FWQYB22U.js.map +0 -1
- package/dist/chunk-GD5GHTMA.js +0 -189
- package/dist/chunk-GD5GHTMA.js.map +0 -1
- package/dist/chunk-GE5XTSDZ.js +0 -447
- package/dist/chunk-GE5XTSDZ.js.map +0 -1
- package/dist/chunk-GVE47ZAX.mjs +0 -32
- package/dist/chunk-GVE47ZAX.mjs.map +0 -1
- package/dist/chunk-HK46BT5U.mjs +0 -18
- package/dist/chunk-HK46BT5U.mjs.map +0 -1
- package/dist/chunk-HQVRMR6N.js +0 -365
- package/dist/chunk-HQVRMR6N.js.map +0 -1
- package/dist/chunk-HSGBJPJO.mjs +0 -398
- package/dist/chunk-HSGBJPJO.mjs.map +0 -1
- package/dist/chunk-I3AUTOMZ.mjs +0 -125
- package/dist/chunk-I3AUTOMZ.mjs.map +0 -1
- package/dist/chunk-IEI5LD5C.mjs +0 -1161
- package/dist/chunk-IEI5LD5C.mjs.map +0 -1
- package/dist/chunk-IIPTC2X7.mjs +0 -118
- package/dist/chunk-IIPTC2X7.mjs.map +0 -1
- package/dist/chunk-J7TLHF2Q.js +0 -4
- package/dist/chunk-J7TLHF2Q.js.map +0 -1
- package/dist/chunk-JJOWXFXQ.mjs +0 -765
- package/dist/chunk-JJOWXFXQ.mjs.map +0 -1
- package/dist/chunk-JPTSS2OA.mjs +0 -3
- package/dist/chunk-JPTSS2OA.mjs.map +0 -1
- package/dist/chunk-KFXXRLTP.js +0 -396
- package/dist/chunk-KFXXRLTP.js.map +0 -1
- package/dist/chunk-KPRRBSG6.mjs +0 -272
- package/dist/chunk-KPRRBSG6.mjs.map +0 -1
- package/dist/chunk-NFSBGRDB.mjs +0 -57
- package/dist/chunk-NFSBGRDB.mjs.map +0 -1
- package/dist/chunk-NGJVCFTM.js +0 -219
- package/dist/chunk-NGJVCFTM.js.map +0 -1
- package/dist/chunk-NSQ6MZJ6.mjs +0 -728
- package/dist/chunk-NSQ6MZJ6.mjs.map +0 -1
- package/dist/chunk-NYQYHT76.mjs +0 -296
- package/dist/chunk-NYQYHT76.mjs.map +0 -1
- package/dist/chunk-OLJJGI5B.js +0 -1193
- package/dist/chunk-OLJJGI5B.js.map +0 -1
- package/dist/chunk-Q3572X2J.js +0 -292
- package/dist/chunk-Q3572X2J.js.map +0 -1
- package/dist/chunk-QH7N7D4I.mjs +0 -210
- package/dist/chunk-QH7N7D4I.mjs.map +0 -1
- package/dist/chunk-R7XUIV25.js +0 -466
- package/dist/chunk-R7XUIV25.js.map +0 -1
- package/dist/chunk-RFFO4KPM.js +0 -135
- package/dist/chunk-RFFO4KPM.js.map +0 -1
- package/dist/chunk-RFX7QKA7.mjs +0 -180
- package/dist/chunk-RFX7QKA7.mjs.map +0 -1
- package/dist/chunk-SN5LFAP3.js +0 -940
- package/dist/chunk-SN5LFAP3.js.map +0 -1
- package/dist/chunk-T4COXKQ3.js +0 -24
- package/dist/chunk-T4COXKQ3.js.map +0 -1
- package/dist/chunk-TS54QM27.js +0 -125
- package/dist/chunk-TS54QM27.js.map +0 -1
- package/dist/chunk-UE2S4PCX.mjs +0 -220
- package/dist/chunk-UE2S4PCX.mjs.map +0 -1
- package/dist/chunk-UTW3QX2A.mjs +0 -282
- package/dist/chunk-UTW3QX2A.mjs.map +0 -1
- package/dist/chunk-V74LGMAE.js +0 -1767
- package/dist/chunk-V74LGMAE.js.map +0 -1
- package/dist/chunk-VIREG536.js +0 -12
- package/dist/chunk-VIREG536.js.map +0 -1
- package/dist/chunk-VY7M7346.js +0 -4
- package/dist/chunk-VY7M7346.js.map +0 -1
- package/dist/chunk-W3TJOO7H.mjs +0 -319
- package/dist/chunk-W3TJOO7H.mjs.map +0 -1
- package/dist/chunk-WIUOB36M.js +0 -54
- package/dist/chunk-WIUOB36M.js.map +0 -1
- package/dist/chunk-WJGLM4CY.js +0 -291
- package/dist/chunk-WJGLM4CY.js.map +0 -1
- package/dist/chunk-WNURH5OO.mjs +0 -453
- package/dist/chunk-WNURH5OO.mjs.map +0 -1
- package/dist/chunk-X25TNRSD.mjs +0 -364
- package/dist/chunk-X25TNRSD.mjs.map +0 -1
- package/dist/chunk-Y3GT7ETK.js +0 -108
- package/dist/chunk-Y3GT7ETK.js.map +0 -1
- package/dist/chunk-Z4FRNOF6.mjs +0 -115
- package/dist/chunk-Z4FRNOF6.mjs.map +0 -1
- package/dist/chunk-ZMYLD3BN.js +0 -166
- package/dist/chunk-ZMYLD3BN.js.map +0 -1
- package/dist/chunk-ZP2KV6EX.js +0 -815
- package/dist/chunk-ZP2KV6EX.js.map +0 -1
- package/dist/chunk-ZVKXFELU.js +0 -366
- package/dist/chunk-ZVKXFELU.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/shared-variants.ts","../../../src/elements/DatePicker/DatePicker.variants.ts","../../../src/elements/DatePicker/DatePicker.tsx","../../../src/elements/DatePicker/DateRangePicker.tsx","../../../src/elements/DatePicker/DateField.tsx","../../../src/elements/DatePicker/Calendar.tsx","../../../src/elements/DatePicker/DatePicker.types.ts"],"names":["cn","inputs","twMerge","clsx","FOCUS_WITHIN_RING","FOCUS_RING","FOCUS_HIGHLIGHT","DISABLED_STANDARD","DISABLED_DATA_ATTR","TEXT_SIZE_SMALL_SCALE","TEXT_SIZE_MEDIUM_SCALE","FIELD_HEIGHTS","ERROR_MESSAGE_BASE","DESCRIPTION_BASE","LABEL_BASE","POPOVER_ANIMATION_IN","POPOVER_ANIMATION_OUT","REDUCED_MOTION","TRANSITION_FAST","HOVER_ACCENT","combineStyles","styles","s","dateFieldVariants","cva","dateSegmentVariants","calendarCellVariants","calendarHeaderVariants","calendarNavButtonVariants","calendarGridVariants","calendarGridHeaderCellVariants","datePickerPopoverVariants","datePickerTriggerVariants","datePickerDescriptionVariants","datePickerErrorVariants","datePickerLabelVariants","DatePickerContext","createContext","DatePicker","memo","forwardRef","label","description","errorMessage","size","className","placement","props","ref","contextValue","useMemo","jsx","jsxs","AriaDatePicker","AriaLabel","AriaGroup","AriaDateInput","segment","AriaDateSegment","AriaButton","CalendarIcon","AriaText","AriaFieldError","AriaPopover","AriaDialog","AriaCalendar","ChevronLeft","AriaHeading","ChevronRight","AriaCalendarGrid","AriaCalendarGridHeader","day","AriaCalendarHeaderCell","AriaCalendarGridBody","date","AriaCalendarCell","DateRangePicker","startName","endName","AriaDateRangePicker","AriaRangeCalendar","DateField","AriaDateField","Calendar","DatePickerPropsSchema","z","DateRangePickerPropsSchema","DateFieldPropsSchema","CalendarPropsSchema","RangeCalendarPropsSchema"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","/**\n * Shared CVA Variant Utilities\n *\n * Common patterns extracted from component variants for consistency and reduced bundle size.\n * Use these constants in CVA definitions to ensure consistent styling across Themis.\n *\n * @see interaction-states.ts for interaction-specific styles (focus, hover, pressed)\n */\n\n// =============================================================================\n// Focus Ring Patterns\n// =============================================================================\n\n/**\n * Focus-within ring (for container elements with focusable children)\n * Use when the container should show focus when any child is focused\n */\nexport const FOCUS_WITHIN_RING = [\n 'focus-within:outline-none',\n 'focus-within:ring-2',\n 'focus-within:ring-[var(--ring)]',\n 'focus-within:ring-offset-2',\n] as const;\n\n/**\n * Focus-visible ring (for directly focusable elements)\n * Use for buttons, inputs, and other interactive elements\n */\nexport const FOCUS_VISIBLE_RING = [\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)]',\n 'focus-visible:ring-offset-2',\n] as const;\n\n/**\n * Standard focus ring (for elements using :focus pseudo-class)\n * Prefer focus-visible when possible for better UX\n */\nexport const FOCUS_RING = [\n 'focus:outline-none',\n 'focus:ring-2',\n 'focus:ring-[var(--ring)]',\n] as const;\n\n/**\n * Focus with background change (for segments, cells, menu items)\n */\nexport const FOCUS_HIGHLIGHT = [\n 'focus:outline-none',\n 'focus:bg-[var(--accent)]',\n 'focus:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Disabled State Patterns\n// =============================================================================\n\n/**\n * Standard disabled state using disabled attribute\n */\nexport const DISABLED_STANDARD = [\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n] as const;\n\n/**\n * Disabled state using data attribute (React Aria pattern)\n */\nexport const DISABLED_DATA_ATTR = [\n 'data-[disabled]:pointer-events-none',\n 'data-[disabled]:opacity-50',\n 'data-[disabled]:cursor-not-allowed',\n] as const;\n\n// =============================================================================\n// Size-Based Text Variants\n// =============================================================================\n\n/**\n * Small text size scale (xs -> sm -> base)\n */\nexport const TEXT_SIZE_SMALL_SCALE = {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n} as const;\n\n/**\n * Medium text size scale (sm -> base -> lg)\n */\nexport const TEXT_SIZE_MEDIUM_SCALE = {\n sm: 'text-sm',\n default: 'text-base',\n lg: 'text-lg',\n} as const;\n\n// =============================================================================\n// Touch Target Utilities\n// =============================================================================\n\n/**\n * WCAG 2.2 AAA minimum touch target (44x44px)\n */\nexport const TOUCH_TARGET_MIN = [\n 'min-h-[44px]',\n 'min-w-[44px]',\n] as const;\n\n/**\n * Common button/cell sizes with touch target compliance\n */\nexport const INTERACTIVE_SIZES = {\n sm: 'h-9 w-9', // 36px - desktop only, NOT AAA compliant\n default: 'h-11 w-11', // 44px - AAA compliant\n lg: 'h-14 w-14', // 56px - AAA compliant, enhanced\n} as const;\n\n/**\n * Height-only sizes for fields and inputs\n */\nexport const FIELD_HEIGHTS = {\n sm: 'h-9', // 36px\n default: 'h-11', // 44px\n lg: 'h-14', // 56px\n} as const;\n\n// =============================================================================\n// Message/Feedback Patterns\n// =============================================================================\n\n/**\n * Error message styling\n */\nexport const ERROR_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--destructive)]',\n] as const;\n\n/**\n * Success message styling\n */\nexport const SUCCESS_MESSAGE_BASE = [\n 'flex',\n 'items-center',\n 'gap-1.5',\n 'text-[var(--success)]',\n] as const;\n\n/**\n * Description/helper text styling\n */\nexport const DESCRIPTION_BASE = [\n 'text-[var(--menu-muted)]',\n] as const;\n\n/**\n * Label base styling\n */\nexport const LABEL_BASE = [\n 'font-medium',\n 'text-[var(--content-foreground)]',\n] as const;\n\n/**\n * Required indicator pattern\n */\nexport const REQUIRED_INDICATOR = \"after:content-['*'] after:ml-0.5 after:text-[var(--destructive)]\";\n\n// =============================================================================\n// Animation Patterns\n// =============================================================================\n\n/**\n * Popover/dropdown entry animation\n */\nexport const POPOVER_ANIMATION_IN = [\n 'data-[entering]:animate-in',\n 'data-[entering]:fade-in-0',\n 'data-[entering]:zoom-in-95',\n] as const;\n\n/**\n * Popover/dropdown exit animation\n */\nexport const POPOVER_ANIMATION_OUT = [\n 'data-[exiting]:animate-out',\n 'data-[exiting]:fade-out-0',\n 'data-[exiting]:zoom-out-95',\n] as const;\n\n/**\n * Reduced motion support (WCAG 2.2)\n */\nexport const REDUCED_MOTION = [\n 'motion-reduce:transition-none',\n 'motion-reduce:animate-none',\n] as const;\n\n/**\n * Standard transition for colors\n */\nexport const TRANSITION_COLORS = [\n 'transition-colors',\n 'duration-200',\n] as const;\n\n/**\n * Fast transition for interactions\n */\nexport const TRANSITION_FAST = [\n 'transition-colors',\n 'duration-150',\n] as const;\n\n// =============================================================================\n// Hover State Patterns\n// =============================================================================\n\n/**\n * Accent background on hover (for interactive items)\n */\nexport const HOVER_ACCENT = [\n 'hover:bg-[var(--accent)]',\n 'hover:text-[var(--accent-foreground)]',\n] as const;\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Combines multiple style arrays into a flat array for CVA base styles\n */\nexport function combineStyles(...styles: (readonly string[] | string)[]): string[] {\n return styles.flatMap(s => Array.isArray(s) ? [...s] : [s]);\n}\n","/**\n * DatePicker CVA Variants\n * Uses shared utilities from styles/ for consistency and reduced bundle size.\n */\n\nimport { cva } from 'class-variance-authority';\nimport {\n FOCUS_WITHIN_RING,\n FOCUS_RING,\n FOCUS_HIGHLIGHT,\n DISABLED_DATA_ATTR,\n DISABLED_STANDARD,\n TEXT_SIZE_SMALL_SCALE,\n TEXT_SIZE_MEDIUM_SCALE,\n ERROR_MESSAGE_BASE,\n DESCRIPTION_BASE,\n LABEL_BASE,\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION,\n TRANSITION_FAST,\n HOVER_ACCENT,\n FIELD_HEIGHTS,\n combineStyles,\n} from '../../styles';\n\n// ============================================================================\n// Date Field Variants\n// ============================================================================\n\nexport const dateFieldVariants = cva(\n combineStyles(\n 'flex items-center rounded-md border',\n 'bg-[var(--content-background)] text-[var(--content-foreground)]',\n 'transition-colors duration-200',\n FOCUS_WITHIN_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: `${FIELD_HEIGHTS.sm} px-3 text-sm gap-0.5`,\n default: `${FIELD_HEIGHTS.default} px-4 text-base gap-1`,\n lg: `${FIELD_HEIGHTS.lg} px-5 text-lg gap-1.5`,\n },\n isInvalid: {\n true: 'border-[var(--destructive)] focus-within:ring-[var(--destructive)]',\n false: 'border-[var(--input)] hover:border-[var(--input)]/80',\n },\n },\n defaultVariants: {\n size: 'default',\n isInvalid: false,\n },\n }\n);\n\n// ============================================================================\n// Date Segment Variants\n// ============================================================================\n\nexport const dateSegmentVariants = cva(\n combineStyles(\n 'tabular-nums rounded px-0.5',\n FOCUS_HIGHLIGHT,\n 'data-[placeholder]:text-[var(--menu-muted)]',\n 'data-[type=literal]:text-[var(--menu-muted)]'\n ),\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Cell Variants\n// ============================================================================\n\nexport const calendarCellVariants = cva(\n combineStyles(\n 'flex items-center justify-center rounded-md cursor-pointer',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n // Selected state\n 'data-[selected]:bg-[var(--primary)] data-[selected]:text-[var(--primary-foreground)]',\n 'data-[selected]:hover:bg-[var(--primary)]/90 data-[selected]:font-semibold',\n // Today indicator\n 'data-[today]:border data-[today]:border-[var(--primary)]',\n // Range selection\n 'data-[selection-start]:rounded-l-md data-[selection-start]:rounded-r-none',\n 'data-[selection-end]:rounded-r-md data-[selection-end]:rounded-l-none',\n 'data-[selected]:data-[selection-start]:rounded-l-md',\n 'data-[selected]:data-[selection-end]:rounded-r-md',\n // Unavailable/outside/disabled states\n 'data-[unavailable]:text-[var(--menu-muted)] data-[unavailable]:pointer-events-none data-[unavailable]:opacity-50 data-[unavailable]:line-through',\n 'data-[outside-month]:text-[var(--menu-muted)] data-[outside-month]:opacity-50',\n 'data-[disabled]:text-[var(--menu-muted)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50'\n ),\n {\n variants: {\n size: {\n sm: 'h-9 w-9 text-sm',\n default: 'h-11 w-11 text-base',\n lg: 'h-14 w-14 text-lg',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Header Variants\n// ============================================================================\n\nexport const calendarHeaderVariants = cva(\n 'flex items-center justify-between px-1 pb-4',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Navigation Button Variants\n// ============================================================================\n\nexport const calendarNavButtonVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_STANDARD\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Variants\n// ============================================================================\n\nexport const calendarGridVariants = cva(\n 'w-full border-collapse',\n {\n variants: {\n size: TEXT_SIZE_MEDIUM_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Calendar Grid Header Cell Variants\n// ============================================================================\n\nexport const calendarGridHeaderCellVariants = cva(\n 'text-center font-medium text-[var(--menu-muted)] pb-2',\n {\n variants: {\n size: {\n sm: 'text-xs w-9',\n default: 'text-sm w-11',\n lg: 'text-base w-14',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Popover Variants\n// ============================================================================\n\nexport const datePickerPopoverVariants = cva(\n combineStyles(\n 'z-50 rounded-md border p-3 shadow-md outline-none',\n 'bg-[var(--menu-background)] text-[var(--menu-foreground)]',\n POPOVER_ANIMATION_IN,\n POPOVER_ANIMATION_OUT,\n REDUCED_MOTION\n ),\n {\n variants: {\n size: {\n sm: 'w-[260px]',\n default: 'w-[320px]',\n lg: 'w-[380px]',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Trigger Button Variants\n// ============================================================================\n\nexport const datePickerTriggerVariants = cva(\n combineStyles(\n 'inline-flex items-center justify-center rounded-md text-[var(--menu-muted)]',\n TRANSITION_FAST,\n HOVER_ACCENT,\n FOCUS_RING,\n DISABLED_DATA_ATTR\n ),\n {\n variants: {\n size: {\n sm: 'h-7 w-7',\n default: 'h-9 w-9',\n lg: 'h-11 w-11',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Description and Error Variants\n// ============================================================================\n\nexport const datePickerDescriptionVariants = cva(\n combineStyles(DESCRIPTION_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nexport const datePickerErrorVariants = cva(\n combineStyles(ERROR_MESSAGE_BASE, 'mt-1'),\n {\n variants: {\n size: TEXT_SIZE_SMALL_SCALE,\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\n// ============================================================================\n// Label Variants\n// ============================================================================\n\nexport const datePickerLabelVariants = cva(\n combineStyles(\n LABEL_BASE,\n 'block mb-1.5',\n 'data-[required]:after:content-[\"*\"] data-[required]:after:ml-0.5 data-[required]:after:text-[var(--destructive)]'\n ),\n {\n variants: {\n size: {\n sm: 'text-sm',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n","'use client';\n\n/**\n * DatePicker Component\n *\n * A fully accessible date picker combining keyboard-editable date segments\n * with a calendar popover for visual selection.\n *\n * Features:\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n * - Keyboard-editable date segments with spinbutton behavior\n * - Calendar popover with month/year navigation\n * - Time selection with configurable granularity\n * - Internationalization and timezone support\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { createContext, forwardRef, memo, useMemo, type ReactElement } from 'react';\nimport {\n DatePicker as AriaDatePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DatePickerProps, DatePickerContextValue } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Context\n// =============================================================================\n\nconst DatePickerContext = createContext<DatePickerContextValue>({\n size: 'default',\n});\n\n// Export for potential future use in compound components\nexport { DatePickerContext };\n\n// =============================================================================\n// DatePicker Component\n// =============================================================================\n\n/**\n * DatePicker component for selecting dates with keyboard input and calendar popup.\n *\n * @example\n * ```tsx\n * <DatePicker\n * label=\"Event Date\"\n * description=\"When will the event take place?\"\n * />\n * ```\n */\nexport const DatePicker = memo(forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n ...props\n },\n ref\n ): ReactElement => {\n // Memoize context value to prevent unnecessary re-renders of consumers\n const contextValue = useMemo<DatePickerContextValue>(\n () => ({\n size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n }),\n [size, props.isInvalid, props.isDisabled]\n );\n\n return (\n <DatePickerContext.Provider value={contextValue}>\n <AriaDatePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n <AriaDateInput className=\"flex flex-1 items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDatePicker>\n </DatePickerContext.Provider>\n );\n }\n));\n\nDatePicker.displayName = 'DatePicker';\n","'use client';\n\n/**\n * DateRangePicker Component\n *\n * A date range picker for selecting start and end dates with a shared calendar.\n *\n * Features:\n * - Start and end date fields with range separator\n * - RangeCalendar with highlighted selection\n * - Validates end date is after start date\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateRangePicker as AriaDateRangePicker,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Button as AriaButton,\n RangeCalendar as AriaRangeCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Popover as AriaPopover,\n Dialog as AriaDialog,\n Label as AriaLabel,\n Text as AriaText,\n Group as AriaGroup,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { Calendar as CalendarIcon, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { DateRangePickerProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n datePickerPopoverVariants,\n datePickerTriggerVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateRangePicker Component\n// =============================================================================\n\n/**\n * DateRangePicker component for selecting date ranges.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * label=\"Stay Duration\"\n * description=\"Select check-in and check-out dates\"\n * />\n * ```\n */\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n placement = 'bottom',\n startName,\n endName,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateRangePicker\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n startName={startName}\n endName={endName}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Range Field Group */}\n <AriaGroup\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n })\n )}\n >\n {/* Start Date Input */}\n <AriaDateInput slot=\"start\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Range Separator */}\n <span\n aria-hidden=\"true\"\n className=\"px-2 text-[var(--menu-muted)]\"\n >\n –\n </span>\n\n {/* End Date Input */}\n <AriaDateInput slot=\"end\" className=\"flex items-center\">\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Calendar Trigger Button */}\n <AriaButton\n className={cn(datePickerTriggerVariants({ size }))}\n aria-label=\"Open calendar\"\n >\n <CalendarIcon className=\"h-4 w-4\" />\n </AriaButton>\n </AriaGroup>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n\n {/* Range Calendar Popover */}\n <AriaPopover\n placement={placement}\n className={cn(datePickerPopoverVariants({ size }))}\n >\n <AriaDialog className=\"outline-none\">\n <AriaRangeCalendar className=\"w-full\">\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaRangeCalendar>\n </AriaDialog>\n </AriaPopover>\n </AriaDateRangePicker>\n );\n }\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n","'use client';\n\n/**\n * DateField Component\n *\n * A standalone keyboard-editable date field without calendar popover.\n * Useful for dense forms where a full DatePicker is not needed.\n *\n * Features:\n * - Keyboard-editable date segments with spinbutton behavior\n * - Full keyboard navigation (Tab, Arrow keys, number typing)\n * - Time selection with configurable granularity\n * - WCAG 2.2 AAA compliant\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n DateField as AriaDateField,\n DateInput as AriaDateInput,\n DateSegment as AriaDateSegment,\n Label as AriaLabel,\n Text as AriaText,\n FieldError as AriaFieldError,\n} from 'react-aria-components';\nimport { cn } from '../../utils/cn';\nimport type { DateFieldProps } from './DatePicker.types';\nimport {\n dateFieldVariants,\n dateSegmentVariants,\n datePickerDescriptionVariants,\n datePickerErrorVariants,\n datePickerLabelVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// DateField Component\n// =============================================================================\n\n/**\n * DateField component for keyboard-editable date input.\n *\n * @example\n * ```tsx\n * <DateField\n * label=\"Birth Date\"\n * description=\"Enter your date of birth\"\n * />\n * ```\n */\nexport const DateField = forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n label,\n description,\n errorMessage,\n size = 'default',\n className,\n ...props\n },\n ref\n ): ReactElement => {\n return (\n <AriaDateField\n ref={ref}\n className={cn('group flex flex-col gap-1', className)}\n {...props}\n >\n {/* Label */}\n <AriaLabel\n className={cn(datePickerLabelVariants({ size }))}\n data-required={props.isRequired || undefined}\n >\n {label}\n </AriaLabel>\n\n {/* Date Input */}\n <AriaDateInput\n className={cn(\n dateFieldVariants({\n size,\n isInvalid: props.isInvalid,\n }),\n 'w-fit'\n )}\n >\n {(segment) => (\n <AriaDateSegment\n segment={segment}\n className={cn(dateSegmentVariants({ size }))}\n />\n )}\n </AriaDateInput>\n\n {/* Description */}\n {description && (\n <AriaText\n slot=\"description\"\n className={cn(datePickerDescriptionVariants({ size }))}\n >\n {description}\n </AriaText>\n )}\n\n {/* Error Message */}\n <AriaFieldError className={cn(datePickerErrorVariants({ size }))}>\n {errorMessage}\n </AriaFieldError>\n </AriaDateField>\n );\n }\n);\n\nDateField.displayName = 'DateField';\n","'use client';\n\n/**\n * Calendar Component\n *\n * A standalone calendar grid for inline date selection.\n * Useful when the calendar should always be visible (not in a popover).\n *\n * Features:\n * - Full keyboard navigation (Arrow keys, Page Up/Down, Home/End)\n * - Month/year navigation\n * - Date constraints (min/max, unavailable dates)\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets)\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for requirements\n */\n\nimport { forwardRef, type ReactElement } from 'react';\nimport {\n Calendar as AriaCalendar,\n CalendarGrid as AriaCalendarGrid,\n CalendarCell as AriaCalendarCell,\n CalendarGridHeader as AriaCalendarGridHeader,\n CalendarHeaderCell as AriaCalendarHeaderCell,\n CalendarGridBody as AriaCalendarGridBody,\n Heading as AriaHeading,\n Button as AriaButton,\n} from 'react-aria-components';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type { CalendarProps } from './DatePicker.types';\nimport {\n calendarCellVariants,\n calendarHeaderVariants,\n calendarNavButtonVariants,\n calendarGridVariants,\n calendarGridHeaderCellVariants,\n} from './DatePicker.variants';\n\n// =============================================================================\n// Calendar Component\n// =============================================================================\n\n/**\n * Calendar component for inline date selection.\n *\n * @example\n * ```tsx\n * <Calendar\n * value={selectedDate}\n * onChange={setSelectedDate}\n * minValue={today(getLocalTimeZone())}\n * />\n * ```\n */\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n ({ size = 'default', className, ...props }, ref): ReactElement => {\n return (\n <AriaCalendar\n ref={ref}\n className={cn('w-fit', className)}\n {...props}\n >\n {/* Calendar Header - use div instead of header to avoid landmark a11y issues */}\n <div className={cn(calendarHeaderVariants({ size }))}>\n <AriaButton\n slot=\"previous\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </AriaButton>\n\n <AriaHeading className=\"flex-1 text-center font-semibold\" />\n\n <AriaButton\n slot=\"next\"\n className={cn(calendarNavButtonVariants({ size }))}\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </AriaButton>\n </div>\n\n {/* Calendar Grid */}\n <AriaCalendarGrid className={cn(calendarGridVariants({ size }))}>\n <AriaCalendarGridHeader>\n {(day) => (\n <AriaCalendarHeaderCell\n className={cn(calendarGridHeaderCellVariants({ size }))}\n >\n {day}\n </AriaCalendarHeaderCell>\n )}\n </AriaCalendarGridHeader>\n <AriaCalendarGridBody>\n {(date) => (\n <AriaCalendarCell\n date={date}\n className={cn(calendarCellVariants({ size }))}\n />\n )}\n </AriaCalendarGridBody>\n </AriaCalendarGrid>\n </AriaCalendar>\n );\n }\n);\n\nCalendar.displayName = 'Calendar';\n","/**\n * DatePicker Component Types\n *\n * Zod schemas and TypeScript types for DatePicker, DateRangePicker,\n * DateField, and Calendar components.\n *\n * @see {@link ../../docs/prd/datepicker-prd.md} for full requirements\n */\n\nimport { z } from 'zod';\nimport type {\n DatePickerProps as AriaDatePickerProps,\n DateRangePickerProps as AriaDateRangePickerProps,\n DateFieldProps as AriaDateFieldProps,\n CalendarProps as AriaCalendarProps,\n DateValue,\n RangeValue,\n} from 'react-aria-components';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { dateFieldVariants, calendarCellVariants } from './DatePicker.variants';\n\n// ============================================================================\n// Date Value Types (re-exported for convenience)\n// ============================================================================\n\n/**\n * Union type for all date values supported by the DatePicker.\n * - CalendarDate: Date only (no time)\n * - CalendarDateTime: Date and time (no timezone)\n * - ZonedDateTime: Date, time, and timezone\n */\nexport type { DateValue } from 'react-aria-components';\n\n/**\n * Date range value type for DateRangePicker.\n */\nexport type DateRangeValue = RangeValue<DateValue>;\n\n// ============================================================================\n// Granularity Type\n// ============================================================================\n\n/**\n * Controls which date/time segments are displayed.\n * - 'day': Date only (MM/DD/YYYY)\n * - 'hour': Date + hour + AM/PM\n * - 'minute': Date + hour + minute + AM/PM\n * - 'second': Date + hour + minute + second + AM/PM\n */\nexport type Granularity = 'day' | 'hour' | 'minute' | 'second';\n\n// ============================================================================\n// Size Variant Type\n// ============================================================================\n\n/**\n * Size variants for DatePicker components.\n * - 'sm': Compact size (36px cells) - desktop-only, not AAA compliant\n * - 'default': Standard size (44px cells) - AAA compliant\n * - 'lg': Large size (56px cells) - AAA compliant\n */\nexport type DatePickerSize = 'sm' | 'default' | 'lg';\n\n// ============================================================================\n// Placement Type\n// ============================================================================\n\n/**\n * Popover placement options.\n */\nexport type PopoverPlacement = 'bottom' | 'top' | 'left' | 'right';\n\n// ============================================================================\n// First Day of Week Type\n// ============================================================================\n\n/**\n * First day of week options for calendar display.\n */\nexport type FirstDayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Zod schema for DatePicker props validation.\n * Used for runtime validation of component props.\n */\nexport const DatePickerPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isOpen: z.boolean().optional(),\n defaultOpen: z.boolean().optional(),\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Popover props\n placement: z.enum(['bottom', 'top', 'left', 'right']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the popover open state changes */\n onOpenChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n children: z.any().optional(),\n});\n\n/**\n * Zod schema for DateRangePicker props validation.\n * Extends DatePickerPropsSchema with range-specific props.\n */\nexport const DateRangePickerPropsSchema = DatePickerPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Form props for range\n startName: z.string().optional(),\n endName: z.string().optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n/**\n * Zod schema for standalone DateField props validation.\n */\nexport const DateFieldPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n placeholderValue: z.custom<DateValue>().optional(),\n\n // Granularity props\n granularity: z.enum(['day', 'hour', 'minute', 'second']).default('day'),\n hourCycle: z.union([z.literal(12), z.literal(24)]).optional(),\n hideTimeZone: z.boolean().optional(),\n shouldForceLeadingZeros: z.boolean().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n\n // Validation props\n /** Custom validation function that returns an error message or null */\n validate: z.function().optional(),\n validationBehavior: z.enum(['native', 'aria']).default('native'),\n\n // Display props\n label: z.string(),\n description: z.string().optional(),\n /** Error message string or render function */\n errorMessage: z.union([z.string(), z.function()]).optional(),\n\n // Form props\n name: z.string().optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the field gains focus */\n onFocus: z.function().optional(),\n /** Called when the field loses focus */\n onBlur: z.function().optional(),\n /** Called when focus state changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for standalone Calendar props validation.\n */\nexport const CalendarPropsSchema = z.object({\n // Value props\n value: z.custom<DateValue>().optional(),\n defaultValue: z.custom<DateValue>().optional(),\n focusedValue: z.custom<DateValue>().optional(),\n defaultFocusedValue: z.custom<DateValue>().optional(),\n\n // Constraint props\n minValue: z.custom<DateValue>().optional(),\n maxValue: z.custom<DateValue>().optional(),\n /** Callback to determine if a specific date is unavailable for selection */\n isDateUnavailable: z.function().optional(),\n\n // State props\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n\n // Calendar props\n firstDayOfWeek: z.enum(['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']).optional(),\n pageBehavior: z.enum(['single', 'visible']).optional(),\n visibleDuration: z.object({ months: z.number() }).optional(),\n\n // Variant props\n size: z.enum(['sm', 'default', 'lg']).default('default'),\n\n // Event props\n /** Called when the date value changes */\n onChange: z.function().optional(),\n /** Called when the focused date changes */\n onFocusChange: z.function().optional(),\n\n // Standard props\n className: z.string().optional(),\n});\n\n/**\n * Zod schema for RangeCalendar props validation.\n */\nexport const RangeCalendarPropsSchema = CalendarPropsSchema.omit({\n value: true,\n defaultValue: true,\n onChange: true,\n}).extend({\n // Range value props\n value: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n defaultValue: z\n .object({\n start: z.custom<DateValue>(),\n end: z.custom<DateValue>(),\n })\n .optional(),\n\n // Range event props\n /** Called when the date range value changes */\n onChange: z.function().optional(),\n});\n\n// ============================================================================\n// TypeScript Types (using React Aria types directly for proper function typing)\n// ============================================================================\n\n/**\n * Custom props added to DatePicker components (not from React Aria).\n */\nexport interface ThemisDatePickerCustomProps {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Popover placement */\n placement?: PopoverPlacement;\n /** Field label */\n label?: string;\n /** Description text below the field */\n description?: string;\n /** Error message when field is invalid */\n errorMessage?: string;\n}\n\n/**\n * Props for the DatePicker component.\n * Uses React Aria's DatePickerProps directly to ensure correct function types.\n */\nexport type DatePickerProps = AriaDatePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the DateRangePicker component.\n * Uses React Aria's DateRangePickerProps directly to ensure correct function types.\n */\nexport type DateRangePickerProps = AriaDateRangePickerProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone DateField component.\n * Uses React Aria's DateFieldProps directly to ensure correct function types.\n */\nexport type DateFieldProps = AriaDateFieldProps<DateValue> & ThemisDatePickerCustomProps;\n\n/**\n * Props for the standalone Calendar component.\n * Uses React Aria's CalendarProps directly to ensure correct function types.\n */\nexport type CalendarProps = AriaCalendarProps<DateValue> & {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n};\n\n/**\n * Props for the RangeCalendar component.\n */\nexport type RangeCalendarProps = {\n /** Size variant: 'sm', 'default', or 'lg' */\n size?: DatePickerSize;\n /** Additional CSS class names */\n className?: string;\n};\n\n// ============================================================================\n// Variant Types (from CVA)\n// ============================================================================\n\n/**\n * Variant props for dateFieldVariants CVA function.\n */\nexport type DateFieldVariantProps = VariantProps<typeof dateFieldVariants>;\n\n/**\n * Variant props for calendarCellVariants CVA function.\n */\nexport type CalendarCellVariantProps = VariantProps<typeof calendarCellVariants>;\n\n// ============================================================================\n// Compound Component Types\n// ============================================================================\n\n/**\n * Context value for DatePicker compound components.\n */\nexport interface DatePickerContextValue {\n size: DatePickerSize;\n isInvalid?: boolean;\n isDisabled?: boolean;\n}\n\n/**\n * Context value for Calendar compound components.\n */\nexport interface CalendarContextValue {\n size: DatePickerSize;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n}\n"]}
|
|
@@ -8,21 +8,8 @@
|
|
|
8
8
|
* @see constitution.md Principle IV (Accessibility First)
|
|
9
9
|
*/
|
|
10
10
|
import { type ReactNode } from 'react';
|
|
11
|
+
import { menuVariants, menuItemVariants } from './Dropdown.styles';
|
|
11
12
|
import type { DropdownProps, DropdownTriggerProps, DropdownMenuProps, DropdownItemProps, DropdownSeparatorProps, DropdownLabelProps } from './Dropdown.types';
|
|
12
|
-
/**
|
|
13
|
-
* Menu variant styles using CVA
|
|
14
|
-
* @see spec.md FR-040 (CVA for variant styling - single "default" variant for v1)
|
|
15
|
-
*/
|
|
16
|
-
declare const menuVariants: (props?: ({
|
|
17
|
-
variant?: "default" | null | undefined;
|
|
18
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
19
|
-
/**
|
|
20
|
-
* Menu Item variant styles using CVA
|
|
21
|
-
* @see spec.md FR-041 (CVA for item states: hover, focus, active, disabled)
|
|
22
|
-
*/
|
|
23
|
-
declare const menuItemVariants: (props?: ({
|
|
24
|
-
variant?: "default" | null | undefined;
|
|
25
|
-
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
26
13
|
/**
|
|
27
14
|
* Dropdown Root Component
|
|
28
15
|
* Manages open/close state and coordinates Trigger and Menu children
|
|
@@ -125,7 +112,12 @@ declare const DropdownLabel: import("react").NamedExoticComponent<{
|
|
|
125
112
|
className?: string | undefined;
|
|
126
113
|
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
127
114
|
/**
|
|
128
|
-
* Export compound component
|
|
115
|
+
* Export compound component via Object.assign for backwards compatibility.
|
|
116
|
+
* Enables `<Dropdown.Trigger>`, `<Dropdown.Menu>`, etc.
|
|
117
|
+
*
|
|
118
|
+
* @deprecated v2 — Remove Object.assign pattern in favour of direct named exports
|
|
119
|
+
* (DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel)
|
|
120
|
+
* for better tree-shaking. See named exports below.
|
|
129
121
|
*/
|
|
130
122
|
export declare const Dropdown: import("react").ForwardRefExoticComponent<InternalDropdownProps & import("react").RefAttributes<HTMLDivElement>> & {
|
|
131
123
|
Trigger: import("react").ForwardRefExoticComponent<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAuD,MAAM,OAAO,CAAC;AAcxI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAY1B;;;;;GAKG;AACH,UAAU,qBAAsB,SAAQ,aAAa;IACnD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAmCD;;;;;GAKG;AACH,QAAA,MAAM,eAAe;;;;;;;;;;qDAiBpB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;kDAgBjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;kDAkEjB,CAAC;AAIF;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB;;;;;;;;;;kDAYrB,CAAC;AAIH;;;;;GAKG;AACH,QAAA,MAAM,aAAa;;;;;;;;;;kDAcjB,CAAC;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAC;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC;AAGzF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAG1C,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
2
|
+
/**
|
|
3
|
+
* Menu variant styles using CVA
|
|
4
|
+
* @see spec.md FR-040 (CVA for variant styling - single "default" variant for v1)
|
|
5
|
+
*/
|
|
6
|
+
export declare const menuVariants: (props?: ({
|
|
7
|
+
variant?: "default" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
/**
|
|
10
|
+
* Menu Item variant styles using CVA
|
|
11
|
+
* @see spec.md FR-041 (CVA for item states: hover, focus, active, disabled)
|
|
12
|
+
*/
|
|
13
|
+
export declare const menuItemVariants: (props?: ({
|
|
14
|
+
variant?: "default" | null | undefined;
|
|
15
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Type exports for variant props
|
|
18
|
+
* Allows TypeScript inference of variant combinations
|
|
19
|
+
*/
|
|
20
|
+
export type MenuVariantProps = VariantProps<typeof menuVariants>;
|
|
21
|
+
export type MenuItemVariantProps = VariantProps<typeof menuItemVariants>;
|
|
22
|
+
//# sourceMappingURL=Dropdown.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropdown.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/Dropdown.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,YAAY;;8EAaxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;8EAa5B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -9,4 +9,5 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel, menuVariants, menuItemVariants, } from './Dropdown';
|
|
11
11
|
export type { DropdownProps, DropdownTriggerProps, DropdownMenuProps, DropdownItemProps, DropdownSeparatorProps, DropdownLabelProps, DropdownMenuAlign, DropdownMenuSide, } from './Dropdown.types';
|
|
12
|
+
export type { MenuVariantProps, MenuItemVariantProps, } from './Dropdown.styles';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Dropdown/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,41 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var chunkGD5GHTMA_js = require('../../chunk-GD5GHTMA.js');
|
|
4
|
-
require('../../chunk-VIREG536.js');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "Dropdown", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () { return chunkGD5GHTMA_js.Dropdown; }
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "DropdownItem", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () { return chunkGD5GHTMA_js.DropdownItem; }
|
|
15
|
-
});
|
|
16
|
-
Object.defineProperty(exports, "DropdownLabel", {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
get: function () { return chunkGD5GHTMA_js.DropdownLabel; }
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "DropdownMenu", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function () { return chunkGD5GHTMA_js.DropdownMenu; }
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "DropdownSeparator", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () { return chunkGD5GHTMA_js.DropdownSeparator; }
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(exports, "DropdownTrigger", {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
get: function () { return chunkGD5GHTMA_js.DropdownTrigger; }
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(exports, "menuItemVariants", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function () { return chunkGD5GHTMA_js.menuItemVariants; }
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, "menuVariants", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () { return chunkGD5GHTMA_js.menuVariants; }
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),lucideReact=require('lucide-react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),classVarianceAuthority=require('class-variance-authority'),jsxRuntime=require('react/jsx-runtime');function d(...e){return tailwindMerge.twMerge(clsx.clsx(e))}var b=classVarianceAuthority.cva("z-50 min-w-[8rem] overflow-hidden rounded-md border border-[var(--menu-border)] bg-[var(--menu-background)] text-[var(--menu-foreground)] shadow-md data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 p-1",{variants:{variant:{default:""}},defaultVariants:{variant:"default"}}),w=classVarianceAuthority.cva("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 min-h-[44px] data-[focused]:bg-[var(--menu-accent)] data-[focused]:text-[var(--menu-accent-foreground)] data-[pressed]:bg-[var(--menu-accent)] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:""}},defaultVariants:{variant:"default"}});function P(e){if(typeof e=="function"||typeof e=="object")return e?.displayName}var E=react.forwardRef(({defaultOpen:e=false,isOpen:o,onOpenChange:n,children:t},p)=>{if(process.env.NODE_ENV!=="production"){let s=react.Children.toArray(t),i=s.some(a=>react.isValidElement(a)&&(a.type===f||P(a.type)==="DropdownTrigger")),c=s.some(a=>react.isValidElement(a)&&(a.type===l||P(a.type)==="DropdownMenu"));if(!i||!c)throw new Error("Dropdown requires exactly one Dropdown.Trigger and one Dropdown.Menu as children")}return jsxRuntime.jsx(reactAriaComponents.MenuTrigger,{defaultOpen:e,isOpen:o,onOpenChange:n,children:t})});E.displayName="Dropdown";var f=react.forwardRef(({children:e,...o},n)=>react.isValidElement(e)?react.cloneElement(e,{...o,slot:"trigger"}):jsxRuntime.jsx(reactAriaComponents.Button,{ref:n,...o,children:e}));f.displayName="DropdownTrigger";var l=react.forwardRef(({align:e="start",side:o="bottom",className:n,children:t,...p},s)=>{let i=`${o} ${e}`;return jsxRuntime.jsx(reactAriaComponents.Popover,{placement:i,className:"entering:animate-in exiting:animate-out",children:jsxRuntime.jsx(reactAriaComponents.Menu,{className:d(b({variant:"default"}),n),...p,children:t})})});l.displayName="DropdownMenu";var x=react.forwardRef(({children:e,onAction:o,isDisabled:n=false,shortcut:t,icon:p,iconRight:s,className:i,"aria-label":c,...a},G)=>{let D=react.Children.toArray(e),y=u=>react.isValidElement(u)&&(u.type===l||P(u.type)==="DropdownMenu"),L=D.some(y),h=D.filter(u=>!y(u)),N=D.find(y);return L&&N?jsxRuntime.jsxs(reactAriaComponents.SubmenuTrigger,{children:[jsxRuntime.jsxs(reactAriaComponents.MenuItem,{"aria-label":c,className:d(w({variant:"default"}),i),...a,children:[p&&jsxRuntime.jsx("span",{className:"mr-2",children:p}),jsxRuntime.jsx("span",{className:"flex-1",children:h}),jsxRuntime.jsx(lucideReact.ChevronRight,{className:"ml-auto h-4 w-4","aria-hidden":"true"})]}),N]}):jsxRuntime.jsxs(reactAriaComponents.MenuItem,{onAction:o,isDisabled:n,"aria-label":c,className:d(w({variant:"default"}),i),...a,children:[p&&jsxRuntime.jsx("span",{className:"mr-2",children:p}),jsxRuntime.jsx("span",{className:"flex-1",children:e}),s&&jsxRuntime.jsx("span",{className:"ml-auto",children:s}),t&&jsxRuntime.jsx("kbd",{className:"ml-auto pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border border-[var(--border)] bg-[var(--accent-background)] px-1.5 font-mono text-[10px] font-medium text-[var(--menu-muted)] opacity-100",children:t})]})});x.displayName="DropdownItem";var M=react.memo(react.forwardRef(({className:e,...o},n)=>jsxRuntime.jsx(reactAriaComponents.Separator,{className:d("-mx-1 my-1 h-px bg-[var(--accent-background)]",e),...o})));M.displayName="DropdownSeparator";var T=react.memo(react.forwardRef(({children:e,className:o,...n},t)=>jsxRuntime.jsx(reactAriaComponents.Header,{className:d("px-2 py-1.5 text-sm font-semibold text-[var(--menu-muted)]",o),...n,children:e})));T.displayName="DropdownLabel";var F=Object.assign(E,{Trigger:f,Menu:l,Item:x,Separator:M,Label:T});exports.Dropdown=F;exports.DropdownItem=x;exports.DropdownLabel=T;exports.DropdownMenu=l;exports.DropdownSeparator=M;exports.DropdownTrigger=f;exports.menuItemVariants=w;exports.menuVariants=b;//# sourceMappingURL=index.js.map
|
|
41
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Dropdown/Dropdown.styles.ts","../../../src/elements/Dropdown/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","menuVariants","cva","menuItemVariants","getDisplayName","type","DropdownRoot","forwardRef","defaultOpen","isOpen","onOpenChange","children","_ref","childArray","Children","hasTrigger","child","isValidElement","DropdownTrigger","hasMenu","DropdownMenu","jsx","AriaMenuTrigger","props","ref","cloneElement","AriaButton","align","side","className","placement","AriaPopover","AriaMenu","DropdownItem","onAction","isDisabled","shortcut","icon","iconRight","ariaLabel","isDropdownMenu","hasSubmenu","contentChildren","submenu","jsxs","AriaSubmenuTrigger","AriaMenuItem","ChevronRight","DropdownSeparator","memo","AriaSeparator","DropdownLabel","AriaHeader","Dropdown"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Menu variant styles using CVA\n * @see spec.md FR-040 (CVA for variant styling - single \"default\" variant for v1)\n */\nexport const menuVariants = cva(\n // Base styles - semantic tokens with fallbacks\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-[var(--menu-border)] bg-[var(--menu-background)] text-[var(--menu-foreground)] shadow-md data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 p-1\",\n {\n variants: {\n variant: {\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n/**\n * Menu Item variant styles using CVA\n * @see spec.md FR-041 (CVA for item states: hover, focus, active, disabled)\n */\nexport const menuItemVariants = cva(\n // Base styles - FR-014: 44x44px minimum touch targets\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 min-h-[44px] data-[focused]:bg-[var(--menu-accent)] data-[focused]:text-[var(--menu-accent-foreground)] data-[pressed]:bg-[var(--menu-accent)] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n/**\n * Type exports for variant props\n * Allows TypeScript inference of variant combinations\n */\nexport type MenuVariantProps = VariantProps<typeof menuVariants>;\nexport type MenuItemVariantProps = VariantProps<typeof menuItemVariants>;\n","\"use client\";\n\n/**\n * Dropdown Menu Component\n * Accessible dropdown menu with React Aria primitives, nested submenus, and CVA styling\n *\n * @see spec.md FR-001 to FR-054 (Dropdown Component Requirements)\n * @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see spec.md FR-014 (44x44px minimum touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo, Children, isValidElement, type ReactNode, type ReactElement, cloneElement, type ComponentType } from 'react';\nimport type { Placement } from 'react-aria';\nimport {\n MenuTrigger as AriaMenuTrigger,\n SubmenuTrigger as AriaSubmenuTrigger,\n Button as AriaButton,\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n Separator as AriaSeparator,\n Header as AriaHeader,\n Popover as AriaPopover,\n} from 'react-aria-components';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { menuVariants, menuItemVariants } from './Dropdown.styles';\nimport type {\n DropdownProps,\n DropdownTriggerProps,\n DropdownMenuProps,\n DropdownItemProps,\n DropdownSeparatorProps,\n DropdownLabelProps,\n} from './Dropdown.types';\n\n/**\n * Type-safe helper to get displayName from a component type.\n */\nfunction getDisplayName(type: unknown): string | undefined {\n if (typeof type === 'function' || typeof type === 'object') {\n return (type as ComponentType)?.displayName;\n }\n return undefined;\n}\n\n/**\n * Dropdown Root Component\n * Manages open/close state and coordinates Trigger and Menu children\n *\n * @see spec.md FR-001 to FR-007\n */\ninterface InternalDropdownProps extends DropdownProps {\n children: ReactNode;\n}\n\nconst DropdownRoot = forwardRef<HTMLDivElement, InternalDropdownProps>(\n ({ defaultOpen = false, isOpen, onOpenChange, children }, _ref) => {\n // Validate children structure in development only\n if (process.env.NODE_ENV !== 'production') {\n const childArray = Children.toArray(children);\n const hasTrigger = childArray.some(\n (child) =>\n isValidElement(child) &&\n (child.type === DropdownTrigger || getDisplayName(child.type) === 'DropdownTrigger')\n );\n const hasMenu = childArray.some(\n (child) =>\n isValidElement(child) &&\n (child.type === DropdownMenu || getDisplayName(child.type) === 'DropdownMenu')\n );\n\n if (!hasTrigger || !hasMenu) {\n throw new Error(\n 'Dropdown requires exactly one Dropdown.Trigger and one Dropdown.Menu as children'\n );\n }\n }\n\n return (\n <AriaMenuTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {children}\n </AriaMenuTrigger>\n );\n }\n);\n\nDropdownRoot.displayName = 'Dropdown';\n\n/**\n * Dropdown.Trigger Component\n * Wraps trigger element (typically Button) with proper ARIA attributes\n *\n * @see spec.md FR-008 to FR-012\n */\nconst DropdownTrigger = forwardRef<HTMLButtonElement, DropdownTriggerProps>(\n ({ children, ...props }, ref) => {\n // Clone child and add ref if it's a single React element\n if (isValidElement(children)) {\n return cloneElement(children as ReactElement<Record<string, unknown>>, {\n ...props,\n slot: 'trigger',\n });\n }\n\n // Fallback: wrap in AriaButton if not a React element\n return (\n <AriaButton ref={ref} {...props}>\n {children}\n </AriaButton>\n );\n }\n);\n\nDropdownTrigger.displayName = 'DropdownTrigger';\n\n/**\n * Dropdown.Menu Component\n * Renders menu with positioning, collision detection, and focus management\n *\n * @see spec.md FR-014 to FR-024\n */\nconst DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(\n ({ align = 'start', side = 'bottom', className, children, ...props }, _ref) => {\n // Map align to React Aria placement\n const placement = `${side} ${align}` as Placement;\n\n return (\n <AriaPopover placement={placement} className=\"entering:animate-in exiting:animate-out\">\n <AriaMenu\n className={cn(menuVariants({ variant: 'default' }), className)}\n {...props}\n >\n {children}\n </AriaMenu>\n </AriaPopover>\n );\n }\n);\n\nDropdownMenu.displayName = 'DropdownMenu';\n\n/**\n * Dropdown.Item Component\n * Menu item with action callbacks, disabled state, shortcuts, icons, and nested submenu support\n *\n * @see spec.md FR-025 to FR-034\n */\nconst DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n (\n {\n children,\n onAction,\n isDisabled = false,\n shortcut,\n icon,\n iconRight,\n className,\n 'aria-label': ariaLabel,\n ...props\n },\n _ref\n ) => {\n // Check if this item contains a nested submenu\n const childArray = Children.toArray(children);\n const isDropdownMenu = (child: unknown): boolean =>\n isValidElement(child) &&\n (child.type === DropdownMenu || getDisplayName(child.type) === 'DropdownMenu');\n\n const hasSubmenu = childArray.some(isDropdownMenu);\n\n // Filter children to separate submenu from content\n const contentChildren = childArray.filter((child) => !isDropdownMenu(child));\n\n const submenu = childArray.find(isDropdownMenu);\n\n if (hasSubmenu && submenu) {\n // Render as submenu trigger using React Aria's SubmenuTrigger\n return (\n <AriaSubmenuTrigger>\n <AriaMenuItem\n aria-label={ariaLabel}\n className={cn(menuItemVariants({ variant: 'default' }), className)}\n {...props}\n >\n {icon && <span className=\"mr-2\">{icon}</span>}\n <span className=\"flex-1\">{contentChildren}</span>\n <ChevronRight className=\"ml-auto h-4 w-4\" aria-hidden=\"true\" />\n </AriaMenuItem>\n {submenu as ReactElement}\n </AriaSubmenuTrigger>\n );\n }\n\n // Regular menu item\n return (\n <AriaMenuItem\n onAction={onAction}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n className={cn(menuItemVariants({ variant: 'default' }), className)}\n {...props}\n >\n {icon && <span className=\"mr-2\">{icon}</span>}\n <span className=\"flex-1\">{children}</span>\n {iconRight && <span className=\"ml-auto\">{iconRight}</span>}\n {shortcut && (\n <kbd className=\"ml-auto pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border border-[var(--border)] bg-[var(--accent-background)] px-1.5 font-mono text-[10px] font-medium text-[var(--menu-muted)] opacity-100\">\n {shortcut}\n </kbd>\n )}\n </AriaMenuItem>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\n/**\n * Dropdown.Separator Component\n * Non-focusable visual divider\n *\n * @see spec.md FR-043 to FR-045\n */\nconst DropdownSeparator = memo(forwardRef<HTMLDivElement, DropdownSeparatorProps>(\n ({ className, ...props }, _ref) => {\n return (\n <AriaSeparator\n className={cn(\n '-mx-1 my-1 h-px bg-[var(--accent-background)]',\n className\n )}\n {...props}\n />\n );\n }\n));\n\nDropdownSeparator.displayName = 'DropdownSeparator';\n\n/**\n * Dropdown.Label Component\n * Non-interactive section header\n *\n * @see spec.md FR-046 to FR-048\n */\nconst DropdownLabel = memo(forwardRef<HTMLDivElement, DropdownLabelProps>(\n ({ children, className, ...props }, _ref) => {\n return (\n <AriaHeader\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold text-[var(--menu-muted)]',\n className\n )}\n {...props}\n >\n {children}\n </AriaHeader>\n );\n }\n));\n\nDropdownLabel.displayName = 'DropdownLabel';\n\n/**\n * Export compound component via Object.assign for backwards compatibility.\n * Enables `<Dropdown.Trigger>`, `<Dropdown.Menu>`, etc.\n *\n * @deprecated v2 — Remove Object.assign pattern in favour of direct named exports\n * (DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel)\n * for better tree-shaking. See named exports below.\n */\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Menu: DropdownMenu,\n Item: DropdownItem,\n Separator: DropdownSeparator,\n Label: DropdownLabel,\n});\n\n// Export individual components for flexibility\nexport { DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel };\n\n// Export variant functions for external use\nexport { menuVariants, menuItemVariants };\n\n// Export types\nexport type {\n DropdownProps,\n DropdownTriggerProps,\n DropdownMenuProps,\n DropdownItemProps,\n DropdownSeparatorProps,\n DropdownLabelProps,\n};\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
3
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
"use client";
|
|
2
|
+
import {forwardRef,Children,isValidElement,cloneElement,memo}from'react';import {MenuTrigger,Button,Popover,Menu,SubmenuTrigger,MenuItem,Separator,Header}from'react-aria-components';import {ChevronRight}from'lucide-react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs}from'react/jsx-runtime';function d(...e){return twMerge(clsx(e))}var b=cva("z-50 min-w-[8rem] overflow-hidden rounded-md border border-[var(--menu-border)] bg-[var(--menu-background)] text-[var(--menu-foreground)] shadow-md data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 p-1",{variants:{variant:{default:""}},defaultVariants:{variant:"default"}}),w=cva("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 min-h-[44px] data-[focused]:bg-[var(--menu-accent)] data-[focused]:text-[var(--menu-accent-foreground)] data-[pressed]:bg-[var(--menu-accent)] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:""}},defaultVariants:{variant:"default"}});function P(e){if(typeof e=="function"||typeof e=="object")return e?.displayName}var E=forwardRef(({defaultOpen:e=false,isOpen:o,onOpenChange:n,children:t},p)=>{if(process.env.NODE_ENV!=="production"){let s=Children.toArray(t),i=s.some(a=>isValidElement(a)&&(a.type===f||P(a.type)==="DropdownTrigger")),c=s.some(a=>isValidElement(a)&&(a.type===l||P(a.type)==="DropdownMenu"));if(!i||!c)throw new Error("Dropdown requires exactly one Dropdown.Trigger and one Dropdown.Menu as children")}return jsx(MenuTrigger,{defaultOpen:e,isOpen:o,onOpenChange:n,children:t})});E.displayName="Dropdown";var f=forwardRef(({children:e,...o},n)=>isValidElement(e)?cloneElement(e,{...o,slot:"trigger"}):jsx(Button,{ref:n,...o,children:e}));f.displayName="DropdownTrigger";var l=forwardRef(({align:e="start",side:o="bottom",className:n,children:t,...p},s)=>{let i=`${o} ${e}`;return jsx(Popover,{placement:i,className:"entering:animate-in exiting:animate-out",children:jsx(Menu,{className:d(b({variant:"default"}),n),...p,children:t})})});l.displayName="DropdownMenu";var x=forwardRef(({children:e,onAction:o,isDisabled:n=false,shortcut:t,icon:p,iconRight:s,className:i,"aria-label":c,...a},G)=>{let D=Children.toArray(e),y=u=>isValidElement(u)&&(u.type===l||P(u.type)==="DropdownMenu"),L=D.some(y),h=D.filter(u=>!y(u)),N=D.find(y);return L&&N?jsxs(SubmenuTrigger,{children:[jsxs(MenuItem,{"aria-label":c,className:d(w({variant:"default"}),i),...a,children:[p&&jsx("span",{className:"mr-2",children:p}),jsx("span",{className:"flex-1",children:h}),jsx(ChevronRight,{className:"ml-auto h-4 w-4","aria-hidden":"true"})]}),N]}):jsxs(MenuItem,{onAction:o,isDisabled:n,"aria-label":c,className:d(w({variant:"default"}),i),...a,children:[p&&jsx("span",{className:"mr-2",children:p}),jsx("span",{className:"flex-1",children:e}),s&&jsx("span",{className:"ml-auto",children:s}),t&&jsx("kbd",{className:"ml-auto pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border border-[var(--border)] bg-[var(--accent-background)] px-1.5 font-mono text-[10px] font-medium text-[var(--menu-muted)] opacity-100",children:t})]})});x.displayName="DropdownItem";var M=memo(forwardRef(({className:e,...o},n)=>jsx(Separator,{className:d("-mx-1 my-1 h-px bg-[var(--accent-background)]",e),...o})));M.displayName="DropdownSeparator";var T=memo(forwardRef(({children:e,className:o,...n},t)=>jsx(Header,{className:d("px-2 py-1.5 text-sm font-semibold text-[var(--menu-muted)]",o),...n,children:e})));T.displayName="DropdownLabel";var F=Object.assign(E,{Trigger:f,Menu:l,Item:x,Separator:M,Label:T});export{F as Dropdown,x as DropdownItem,T as DropdownLabel,l as DropdownMenu,M as DropdownSeparator,f as DropdownTrigger,w as menuItemVariants,b as menuVariants};//# sourceMappingURL=index.mjs.map
|
|
4
3
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Dropdown/Dropdown.styles.ts","../../../src/elements/Dropdown/Dropdown.tsx"],"names":["cn","inputs","twMerge","clsx","menuVariants","cva","menuItemVariants","getDisplayName","type","DropdownRoot","forwardRef","defaultOpen","isOpen","onOpenChange","children","_ref","childArray","Children","hasTrigger","child","isValidElement","DropdownTrigger","hasMenu","DropdownMenu","jsx","AriaMenuTrigger","props","ref","cloneElement","AriaButton","align","side","className","placement","AriaPopover","AriaMenu","DropdownItem","onAction","isDisabled","shortcut","icon","iconRight","ariaLabel","isDropdownMenu","hasSubmenu","contentChildren","submenu","jsxs","AriaSubmenuTrigger","AriaMenuItem","ChevronRight","DropdownSeparator","memo","AriaSeparator","DropdownLabel","AriaHeader","Dropdown"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Menu variant styles using CVA\n * @see spec.md FR-040 (CVA for variant styling - single \"default\" variant for v1)\n */\nexport const menuVariants = cva(\n // Base styles - semantic tokens with fallbacks\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-[var(--menu-border)] bg-[var(--menu-background)] text-[var(--menu-foreground)] shadow-md data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 p-1\",\n {\n variants: {\n variant: {\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n/**\n * Menu Item variant styles using CVA\n * @see spec.md FR-041 (CVA for item states: hover, focus, active, disabled)\n */\nexport const menuItemVariants = cva(\n // Base styles - FR-014: 44x44px minimum touch targets\n \"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 min-h-[44px] data-[focused]:bg-[var(--menu-accent)] data-[focused]:text-[var(--menu-accent-foreground)] data-[pressed]:bg-[var(--menu-accent)] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\n/**\n * Type exports for variant props\n * Allows TypeScript inference of variant combinations\n */\nexport type MenuVariantProps = VariantProps<typeof menuVariants>;\nexport type MenuItemVariantProps = VariantProps<typeof menuItemVariants>;\n","\"use client\";\n\n/**\n * Dropdown Menu Component\n * Accessible dropdown menu with React Aria primitives, nested submenus, and CVA styling\n *\n * @see spec.md FR-001 to FR-054 (Dropdown Component Requirements)\n * @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see spec.md FR-014 (44x44px minimum touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo, Children, isValidElement, type ReactNode, type ReactElement, cloneElement, type ComponentType } from 'react';\nimport type { Placement } from 'react-aria';\nimport {\n MenuTrigger as AriaMenuTrigger,\n SubmenuTrigger as AriaSubmenuTrigger,\n Button as AriaButton,\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n Separator as AriaSeparator,\n Header as AriaHeader,\n Popover as AriaPopover,\n} from 'react-aria-components';\nimport { ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { menuVariants, menuItemVariants } from './Dropdown.styles';\nimport type {\n DropdownProps,\n DropdownTriggerProps,\n DropdownMenuProps,\n DropdownItemProps,\n DropdownSeparatorProps,\n DropdownLabelProps,\n} from './Dropdown.types';\n\n/**\n * Type-safe helper to get displayName from a component type.\n */\nfunction getDisplayName(type: unknown): string | undefined {\n if (typeof type === 'function' || typeof type === 'object') {\n return (type as ComponentType)?.displayName;\n }\n return undefined;\n}\n\n/**\n * Dropdown Root Component\n * Manages open/close state and coordinates Trigger and Menu children\n *\n * @see spec.md FR-001 to FR-007\n */\ninterface InternalDropdownProps extends DropdownProps {\n children: ReactNode;\n}\n\nconst DropdownRoot = forwardRef<HTMLDivElement, InternalDropdownProps>(\n ({ defaultOpen = false, isOpen, onOpenChange, children }, _ref) => {\n // Validate children structure in development only\n if (process.env.NODE_ENV !== 'production') {\n const childArray = Children.toArray(children);\n const hasTrigger = childArray.some(\n (child) =>\n isValidElement(child) &&\n (child.type === DropdownTrigger || getDisplayName(child.type) === 'DropdownTrigger')\n );\n const hasMenu = childArray.some(\n (child) =>\n isValidElement(child) &&\n (child.type === DropdownMenu || getDisplayName(child.type) === 'DropdownMenu')\n );\n\n if (!hasTrigger || !hasMenu) {\n throw new Error(\n 'Dropdown requires exactly one Dropdown.Trigger and one Dropdown.Menu as children'\n );\n }\n }\n\n return (\n <AriaMenuTrigger defaultOpen={defaultOpen} isOpen={isOpen} onOpenChange={onOpenChange}>\n {children}\n </AriaMenuTrigger>\n );\n }\n);\n\nDropdownRoot.displayName = 'Dropdown';\n\n/**\n * Dropdown.Trigger Component\n * Wraps trigger element (typically Button) with proper ARIA attributes\n *\n * @see spec.md FR-008 to FR-012\n */\nconst DropdownTrigger = forwardRef<HTMLButtonElement, DropdownTriggerProps>(\n ({ children, ...props }, ref) => {\n // Clone child and add ref if it's a single React element\n if (isValidElement(children)) {\n return cloneElement(children as ReactElement<Record<string, unknown>>, {\n ...props,\n slot: 'trigger',\n });\n }\n\n // Fallback: wrap in AriaButton if not a React element\n return (\n <AriaButton ref={ref} {...props}>\n {children}\n </AriaButton>\n );\n }\n);\n\nDropdownTrigger.displayName = 'DropdownTrigger';\n\n/**\n * Dropdown.Menu Component\n * Renders menu with positioning, collision detection, and focus management\n *\n * @see spec.md FR-014 to FR-024\n */\nconst DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(\n ({ align = 'start', side = 'bottom', className, children, ...props }, _ref) => {\n // Map align to React Aria placement\n const placement = `${side} ${align}` as Placement;\n\n return (\n <AriaPopover placement={placement} className=\"entering:animate-in exiting:animate-out\">\n <AriaMenu\n className={cn(menuVariants({ variant: 'default' }), className)}\n {...props}\n >\n {children}\n </AriaMenu>\n </AriaPopover>\n );\n }\n);\n\nDropdownMenu.displayName = 'DropdownMenu';\n\n/**\n * Dropdown.Item Component\n * Menu item with action callbacks, disabled state, shortcuts, icons, and nested submenu support\n *\n * @see spec.md FR-025 to FR-034\n */\nconst DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n (\n {\n children,\n onAction,\n isDisabled = false,\n shortcut,\n icon,\n iconRight,\n className,\n 'aria-label': ariaLabel,\n ...props\n },\n _ref\n ) => {\n // Check if this item contains a nested submenu\n const childArray = Children.toArray(children);\n const isDropdownMenu = (child: unknown): boolean =>\n isValidElement(child) &&\n (child.type === DropdownMenu || getDisplayName(child.type) === 'DropdownMenu');\n\n const hasSubmenu = childArray.some(isDropdownMenu);\n\n // Filter children to separate submenu from content\n const contentChildren = childArray.filter((child) => !isDropdownMenu(child));\n\n const submenu = childArray.find(isDropdownMenu);\n\n if (hasSubmenu && submenu) {\n // Render as submenu trigger using React Aria's SubmenuTrigger\n return (\n <AriaSubmenuTrigger>\n <AriaMenuItem\n aria-label={ariaLabel}\n className={cn(menuItemVariants({ variant: 'default' }), className)}\n {...props}\n >\n {icon && <span className=\"mr-2\">{icon}</span>}\n <span className=\"flex-1\">{contentChildren}</span>\n <ChevronRight className=\"ml-auto h-4 w-4\" aria-hidden=\"true\" />\n </AriaMenuItem>\n {submenu as ReactElement}\n </AriaSubmenuTrigger>\n );\n }\n\n // Regular menu item\n return (\n <AriaMenuItem\n onAction={onAction}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n className={cn(menuItemVariants({ variant: 'default' }), className)}\n {...props}\n >\n {icon && <span className=\"mr-2\">{icon}</span>}\n <span className=\"flex-1\">{children}</span>\n {iconRight && <span className=\"ml-auto\">{iconRight}</span>}\n {shortcut && (\n <kbd className=\"ml-auto pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border border-[var(--border)] bg-[var(--accent-background)] px-1.5 font-mono text-[10px] font-medium text-[var(--menu-muted)] opacity-100\">\n {shortcut}\n </kbd>\n )}\n </AriaMenuItem>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\n/**\n * Dropdown.Separator Component\n * Non-focusable visual divider\n *\n * @see spec.md FR-043 to FR-045\n */\nconst DropdownSeparator = memo(forwardRef<HTMLDivElement, DropdownSeparatorProps>(\n ({ className, ...props }, _ref) => {\n return (\n <AriaSeparator\n className={cn(\n '-mx-1 my-1 h-px bg-[var(--accent-background)]',\n className\n )}\n {...props}\n />\n );\n }\n));\n\nDropdownSeparator.displayName = 'DropdownSeparator';\n\n/**\n * Dropdown.Label Component\n * Non-interactive section header\n *\n * @see spec.md FR-046 to FR-048\n */\nconst DropdownLabel = memo(forwardRef<HTMLDivElement, DropdownLabelProps>(\n ({ children, className, ...props }, _ref) => {\n return (\n <AriaHeader\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold text-[var(--menu-muted)]',\n className\n )}\n {...props}\n >\n {children}\n </AriaHeader>\n );\n }\n));\n\nDropdownLabel.displayName = 'DropdownLabel';\n\n/**\n * Export compound component via Object.assign for backwards compatibility.\n * Enables `<Dropdown.Trigger>`, `<Dropdown.Menu>`, etc.\n *\n * @deprecated v2 — Remove Object.assign pattern in favour of direct named exports\n * (DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel)\n * for better tree-shaking. See named exports below.\n */\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Menu: DropdownMenu,\n Item: DropdownItem,\n Separator: DropdownSeparator,\n Label: DropdownLabel,\n});\n\n// Export individual components for flexibility\nexport { DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, DropdownLabel };\n\n// Export variant functions for external use\nexport { menuVariants, menuItemVariants };\n\n// Export types\nexport type {\n DropdownProps,\n DropdownTriggerProps,\n DropdownMenuProps,\n DropdownItemProps,\n DropdownSeparatorProps,\n DropdownLabelProps,\n};\n"]}
|