@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
package/dist/chunk-3YOY2VJ6.js
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkY3GT7ETK_js = require('./chunk-Y3GT7ETK.js');
|
|
4
|
-
var chunkB5Q4UPL6_js = require('./chunk-B5Q4UPL6.js');
|
|
5
|
-
var chunkVIREG536_js = require('./chunk-VIREG536.js');
|
|
6
|
-
var react = require('react');
|
|
7
|
-
var reactAriaComponents = require('react-aria-components');
|
|
8
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
9
|
-
var lucideReact = require('lucide-react');
|
|
10
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
-
|
|
12
|
-
var buttonOuterVariants = classVarianceAuthority.cva(
|
|
13
|
-
"inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
|
|
14
|
-
{
|
|
15
|
-
variants: {
|
|
16
|
-
fullWidth: {
|
|
17
|
-
true: "w-full",
|
|
18
|
-
false: ""
|
|
19
|
-
},
|
|
20
|
-
inVerticalGroup: {
|
|
21
|
-
true: "items-stretch",
|
|
22
|
-
false: "items-center"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
defaultVariants: {
|
|
26
|
-
fullWidth: false,
|
|
27
|
-
inVerticalGroup: false
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
);
|
|
31
|
-
var buttonVisualVariants = classVarianceAuthority.cva(
|
|
32
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",
|
|
33
|
-
{
|
|
34
|
-
variants: {
|
|
35
|
-
variant: {
|
|
36
|
-
default: "bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80",
|
|
37
|
-
destructive: "bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80",
|
|
38
|
-
outline: "border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]",
|
|
39
|
-
secondary: "bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70",
|
|
40
|
-
ghost: "hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]",
|
|
41
|
-
link: "text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]"
|
|
42
|
-
},
|
|
43
|
-
fullWidth: {
|
|
44
|
-
true: "w-full",
|
|
45
|
-
false: ""
|
|
46
|
-
},
|
|
47
|
-
visualSize: {
|
|
48
|
-
default: "h-10 px-4 py-2",
|
|
49
|
-
sm: "h-9 rounded-md px-3 text-xs",
|
|
50
|
-
lg: "h-11 rounded-md px-8",
|
|
51
|
-
icon: "h-10 w-10",
|
|
52
|
-
dot: "h-5 w-5 rounded-full p-0 min-h-0 min-w-0"
|
|
53
|
-
},
|
|
54
|
-
paywall: {
|
|
55
|
-
true: "!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",
|
|
56
|
-
false: ""
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
defaultVariants: {
|
|
60
|
-
variant: "default",
|
|
61
|
-
visualSize: "default",
|
|
62
|
-
paywall: false
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
);
|
|
66
|
-
var buttonVariants = buttonVisualVariants;
|
|
67
|
-
var Button = react.memo(react.forwardRef(
|
|
68
|
-
({
|
|
69
|
-
className,
|
|
70
|
-
buttonVisualClassName,
|
|
71
|
-
variant,
|
|
72
|
-
size,
|
|
73
|
-
visualSize,
|
|
74
|
-
fullWidth,
|
|
75
|
-
loading = false,
|
|
76
|
-
loadingText = "Loading...",
|
|
77
|
-
shortcut,
|
|
78
|
-
children,
|
|
79
|
-
isDisabled,
|
|
80
|
-
paywall = false,
|
|
81
|
-
paywallRedirect,
|
|
82
|
-
paywallDescription,
|
|
83
|
-
onPress,
|
|
84
|
-
...props
|
|
85
|
-
}, ref) => {
|
|
86
|
-
const paywallDescriptionId = react.useId();
|
|
87
|
-
const groupContext = chunkY3GT7ETK_js.useButtonGroupContext();
|
|
88
|
-
const itemContext = chunkY3GT7ETK_js.useButtonGroupItemContext();
|
|
89
|
-
const effectiveVariant = variant ?? groupContext?.variant ?? "default";
|
|
90
|
-
const effectiveSize = size ?? groupContext?.size;
|
|
91
|
-
const effectiveIsDisabled = isDisabled ?? groupContext?.isDisabled ?? false;
|
|
92
|
-
const isInVerticalGroup = groupContext?.orientation === "vertical";
|
|
93
|
-
const effectiveFullWidth = fullWidth || isInVerticalGroup;
|
|
94
|
-
const positionClassName = itemContext ? chunkY3GT7ETK_js.buttonGroupItemVariants({
|
|
95
|
-
orientation: groupContext?.orientation ?? "horizontal",
|
|
96
|
-
position: itemContext.position
|
|
97
|
-
}) : "";
|
|
98
|
-
const effectiveVisualSize = visualSize ?? effectiveSize ?? "default";
|
|
99
|
-
if (process.env.NODE_ENV !== "production") {
|
|
100
|
-
if ((effectiveVisualSize === "dot" || effectiveVisualSize === "icon") && !props["aria-label"] && !children) {
|
|
101
|
-
console.warn(
|
|
102
|
-
'[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const handlePress = (e) => {
|
|
107
|
-
if (paywall) {
|
|
108
|
-
if (paywallRedirect) {
|
|
109
|
-
window.open(paywallRedirect, "_blank", "noopener,noreferrer");
|
|
110
|
-
}
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
onPress?.(e);
|
|
114
|
-
};
|
|
115
|
-
const computedIsDisabled = effectiveIsDisabled || loading || void 0;
|
|
116
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
117
|
-
reactAriaComponents.Button,
|
|
118
|
-
{
|
|
119
|
-
ref,
|
|
120
|
-
isDisabled: computedIsDisabled,
|
|
121
|
-
"aria-disabled": paywall ? true : void 0,
|
|
122
|
-
"aria-describedby": paywall ? paywallDescriptionId : void 0,
|
|
123
|
-
onPress: handlePress,
|
|
124
|
-
className: chunkVIREG536_js.cn(buttonOuterVariants({ fullWidth: effectiveFullWidth, inVerticalGroup: isInVerticalGroup }), className),
|
|
125
|
-
...props,
|
|
126
|
-
children: (renderProps) => (
|
|
127
|
-
/* Layer 2: Visual Button */
|
|
128
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
129
|
-
"span",
|
|
130
|
-
{
|
|
131
|
-
className: chunkVIREG536_js.cn(
|
|
132
|
-
buttonVisualVariants({
|
|
133
|
-
variant: effectiveVariant,
|
|
134
|
-
visualSize: effectiveVisualSize,
|
|
135
|
-
paywall,
|
|
136
|
-
fullWidth: effectiveFullWidth
|
|
137
|
-
}),
|
|
138
|
-
// Position styling from ButtonGroup context (border-radius adjustments)
|
|
139
|
-
positionClassName,
|
|
140
|
-
buttonVisualClassName,
|
|
141
|
-
// Layer 2 interaction styles (no focus - focus ring is on Layer 1)
|
|
142
|
-
chunkB5Q4UPL6_js.PRESSED_STYLES,
|
|
143
|
-
chunkB5Q4UPL6_js.HOVER_STYLES,
|
|
144
|
-
chunkB5Q4UPL6_js.HIGH_CONTRAST_HOVER,
|
|
145
|
-
chunkB5Q4UPL6_js.HIGH_CONTRAST_PRESSED
|
|
146
|
-
),
|
|
147
|
-
"data-pressed": renderProps.isPressed || void 0,
|
|
148
|
-
children: [
|
|
149
|
-
loading && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
150
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "motion-safe:animate-spin", "aria-hidden": "true" }),
|
|
151
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", "aria-live": "polite", children: loadingText })
|
|
152
|
-
] }),
|
|
153
|
-
!loading && children,
|
|
154
|
-
paywall && /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
-
lucideReact.Zap,
|
|
156
|
-
{
|
|
157
|
-
"data-testid": "zap-icon",
|
|
158
|
-
"aria-hidden": "true",
|
|
159
|
-
className: "ml-1"
|
|
160
|
-
}
|
|
161
|
-
),
|
|
162
|
-
paywall && /* @__PURE__ */ jsxRuntime.jsxs("span", { id: paywallDescriptionId, className: "sr-only", children: [
|
|
163
|
-
"Premium feature: ",
|
|
164
|
-
paywallDescription || "Upgrade required to access this feature"
|
|
165
|
-
] }),
|
|
166
|
-
renderProps.isFocusVisible && shortcut && /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: "ml-auto hidden text-xs opacity-60 lg:inline", children: shortcut }),
|
|
167
|
-
renderProps.isPressed && /* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
-
"span",
|
|
169
|
-
{
|
|
170
|
-
className: "absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95",
|
|
171
|
-
"aria-hidden": "true"
|
|
172
|
-
}
|
|
173
|
-
)
|
|
174
|
-
]
|
|
175
|
-
}
|
|
176
|
-
)
|
|
177
|
-
)
|
|
178
|
-
}
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
));
|
|
182
|
-
Button.displayName = "Button";
|
|
183
|
-
|
|
184
|
-
exports.Button = Button;
|
|
185
|
-
exports.buttonOuterVariants = buttonOuterVariants;
|
|
186
|
-
exports.buttonVariants = buttonVariants;
|
|
187
|
-
exports.buttonVisualVariants = buttonVisualVariants;
|
|
188
|
-
//# sourceMappingURL=chunk-3YOY2VJ6.js.map
|
|
189
|
-
//# sourceMappingURL=chunk-3YOY2VJ6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/elements/Button/Button.tsx"],"names":["cva","memo","forwardRef","useId","useButtonGroupContext","useButtonGroupItemContext","buttonGroupItemVariants","jsx","AriaButton","cn","jsxs","PRESSED_STYLES","HOVER_STYLES","HIGH_CONTRAST_HOVER","HIGH_CONTRAST_PRESSED","Fragment","Loader2","Zap"],"mappings":"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","file":"chunk-3YOY2VJ6.js","sourcesContent":["\"use client\";\n\n/**\n * Button Component - 3-Layer Architecture\n * Accessible button with React Aria primitives and CVA styling\n *\n * Architecture:\n * - Layer 1: Touch Target (44x44px WCAG AAA compliant, transparent)\n * - Layer 2: Visual Button (configurable size, colors, borders)\n * - Layer 3: Content & Effects (text, icons, ripple, loading spinner)\n *\n * @see 3layer-plan.md for architecture details\n * @see spec.md FR-029 to FR-037 (Button 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, useId, type ReactNode } from 'react';\nimport {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps,\n} from 'react-aria-components';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Loader2, Zap } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { PRESSED_STYLES, HOVER_STYLES, HIGH_CONTRAST_HOVER, HIGH_CONTRAST_PRESSED } from '../../styles/interaction-states';\nimport {\n useButtonGroupContext,\n useButtonGroupItemContext,\n} from '../ButtonGroup/ButtonGroupContext';\nimport { buttonGroupItemVariants } from '../ButtonGroup/ButtonGroup.variants';\n\n/**\n * Layer 1: Transparent outer touch target (44x44px minimum)\n * Handles WCAG 2.2 AAA touch target requirement\n * Always transparent, centers the visual button inside\n * IMPORTANT: Focus ring stays on Layer 1 for AAA compliance (2.4.13)\n *\n * In vertical ButtonGroups, uses items-stretch so the visual layer (Layer 2)\n * can fill the full touch target height, eliminating gaps between buttons.\n */\nconst buttonOuterVariants = cva(\n \"inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n inVerticalGroup: {\n true: \"items-stretch\",\n false: \"items-center\",\n },\n },\n defaultVariants: {\n fullWidth: false,\n inVerticalGroup: false,\n },\n }\n);\n\n/**\n * Layer 2: Visual button appearance (adjustable size)\n * Provides the visual appearance with configurable size\n * Can be smaller than touch target for use cases like carousel dots\n * NOTE: NO focus-visible styles here - focus ring is on Layer 1\n */\nconst buttonVisualVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80\",\n destructive:\n \"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80\",\n outline:\n \"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]\",\n secondary:\n \"bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70\",\n ghost:\n \"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]\",\n link: \"text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n visualSize: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3 text-xs\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n dot: \"h-5 w-5 rounded-full p-0 min-h-0 min-w-0\",\n },\n paywall: {\n true: \"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n visualSize: \"default\",\n paywall: false,\n },\n }\n);\n\n/**\n * @deprecated Use buttonVisualVariants instead. This alias is kept for backward compatibility.\n */\nconst buttonVariants = buttonVisualVariants;\n\nexport interface ButtonProps\n extends Omit<AriaButtonProps, 'className'>,\n VariantProps<typeof buttonVisualVariants> {\n as?: 'button' | 'a';\n loading?: boolean;\n loadingText?: string;\n shortcut?: string;\n className?: string;\n buttonVisualClassName?: string;\n children?: ReactNode;\n /** Enables paywall state - overrides variant styling and prevents normal action */\n paywall?: boolean;\n /** URL to open in new tab when paywalled button is clicked */\n paywallRedirect?: string;\n /** Description of the premium feature for tooltips and screen readers (max 200 chars) */\n paywallDescription?: string;\n /** Full width button */\n fullWidth?: boolean;\n /**\n * Visual size of the button (Layer 2)\n * Defaults to `size` for backward compatibility\n * Use independently for small visual buttons with large touch targets\n * @example <Button size=\"default\" visualSize=\"dot\" /> // 44px touch, 12px visual\n */\n visualSize?: 'sm' | 'default' | 'lg' | 'icon' | 'dot';\n /**\n * Size of the button - controls both touch target awareness and visual size\n * @deprecated For independent visual sizing, use visualSize prop instead\n */\n size?: 'sm' | 'default' | 'lg' | 'icon';\n}\n\n/**\n * Button Component - 3-Layer Architecture\n * Fully accessible button with React Aria and themed styling\n *\n * Layer 1: Touch Target (AriaButton) - 44x44px WCAG AAA compliant\n * Layer 2: Visual Button (span) - configurable appearance\n * Layer 3: Content (children) - text, icons, effects\n */\nconst Button = memo(forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n buttonVisualClassName,\n variant,\n size,\n visualSize,\n fullWidth,\n loading = false,\n loadingText = \"Loading...\",\n shortcut,\n children,\n isDisabled,\n paywall = false,\n paywallRedirect,\n paywallDescription,\n onPress,\n ...props\n },\n ref\n ) => {\n const paywallDescriptionId = useId();\n\n // ==========================================================================\n // ButtonGroup Context Integration\n // ==========================================================================\n\n // Consume group-level context (variant, size, isDisabled, orientation)\n const groupContext = useButtonGroupContext();\n\n // Consume item-level context (position for border-radius styling)\n const itemContext = useButtonGroupItemContext();\n\n // Merge context values with props (props take precedence)\n const effectiveVariant = variant ?? groupContext?.variant ?? 'default';\n const effectiveSize = size ?? groupContext?.size;\n const effectiveIsDisabled = isDisabled ?? groupContext?.isDisabled ?? false;\n\n // In vertical groups, buttons should be full width automatically\n const isInVerticalGroup = groupContext?.orientation === 'vertical';\n const effectiveFullWidth = fullWidth || isInVerticalGroup;\n\n // Position styling for ButtonGroup (only applied when in a group)\n const positionClassName = itemContext\n ? buttonGroupItemVariants({\n orientation: groupContext?.orientation ?? 'horizontal',\n position: itemContext.position,\n })\n : '';\n\n // Default visualSize to size for backward compatibility\n const effectiveVisualSize = visualSize ?? effectiveSize ?? 'default';\n\n // AAA Accessibility: Warn in dev/test if icon/dot variant lacks accessible name\n if (process.env.NODE_ENV !== 'production') {\n if (\n (effectiveVisualSize === 'dot' || effectiveVisualSize === 'icon') &&\n !props['aria-label'] &&\n !children\n ) {\n console.warn(\n '[Button] visualSize=\"dot\" or \"icon\" requires aria-label when no visible text is provided (WCAG 1.1.1)'\n );\n }\n }\n\n /**\n * Handle button press - intercepts action when paywalled\n * If paywalled with redirect URL, opens in new tab\n * Otherwise, calls the normal onPress handler\n */\n const handlePress = (e: Parameters<NonNullable<AriaButtonProps['onPress']>>[0]): void => {\n if (paywall) {\n if (paywallRedirect) {\n window.open(paywallRedirect, '_blank', 'noopener,noreferrer');\n }\n // Don't call onPress when paywalled\n return;\n }\n onPress?.(e);\n };\n\n // Only set isDisabled when we have a reason to disable\n // Otherwise, let slot system control disabled state (e.g., in NumberField)\n const computedIsDisabled = effectiveIsDisabled || loading || undefined;\n\n return (\n <AriaButton\n ref={ref}\n isDisabled={computedIsDisabled}\n aria-disabled={paywall ? true : undefined}\n aria-describedby={paywall ? paywallDescriptionId : undefined}\n onPress={handlePress}\n className={cn(buttonOuterVariants({ fullWidth: effectiveFullWidth, inVerticalGroup: isInVerticalGroup }), className)}\n {...props}\n >\n {(renderProps) => (\n /* Layer 2: Visual Button */\n <span\n className={cn(\n buttonVisualVariants({\n variant: effectiveVariant,\n visualSize: effectiveVisualSize,\n paywall,\n fullWidth: effectiveFullWidth,\n }),\n // Position styling from ButtonGroup context (border-radius adjustments)\n positionClassName,\n buttonVisualClassName,\n // Layer 2 interaction styles (no focus - focus ring is on Layer 1)\n PRESSED_STYLES,\n HOVER_STYLES,\n HIGH_CONTRAST_HOVER,\n HIGH_CONTRAST_PRESSED\n )}\n data-pressed={renderProps.isPressed || undefined}\n >\n {/* Layer 3: Content & Effects */}\n\n {/* FR-033: Loading spinner with screen reader announcement */}\n {/* Uses motion-safe: for WCAG 2.3.3 AAA (Animation from Interactions) */}\n {loading && (\n <>\n <Loader2 className=\"motion-safe:animate-spin\" aria-hidden=\"true\" />\n <span className=\"sr-only\" aria-live=\"polite\">\n {loadingText}\n </span>\n </>\n )}\n\n {/* Hide children during loading */}\n {!loading && children}\n\n {/* Paywall: Lightning bolt icon */}\n {paywall && (\n <Zap\n data-testid=\"zap-icon\"\n aria-hidden=\"true\"\n className=\"ml-1\"\n />\n )}\n\n {/* Paywall: Screen reader description */}\n {paywall && (\n <span id={paywallDescriptionId} className=\"sr-only\">\n Premium feature: {paywallDescription || \"Upgrade required to access this feature\"}\n </span>\n )}\n\n {/* FR-034: Keyboard shortcut display on focus */}\n {renderProps.isFocusVisible && shortcut && (\n <kbd className=\"ml-auto hidden text-xs opacity-60 lg:inline\">\n {shortcut}\n </kbd>\n )}\n\n {/* Touch/press ripple effect - FR-031: Pressed state feedback */}\n {/* Uses motion-safe: for WCAG 2.3.3 AAA (Animation from Interactions) */}\n {renderProps.isPressed && (\n <span\n className=\"absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n )}\n </AriaButton>\n );\n }\n));\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants, buttonOuterVariants, buttonVisualVariants };\n"]}
|
package/dist/chunk-4DU5JSXB.js
DELETED
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunk3YOY2VJ6_js = require('./chunk-3YOY2VJ6.js');
|
|
4
|
-
var chunkB5Q4UPL6_js = require('./chunk-B5Q4UPL6.js');
|
|
5
|
-
var chunkVIREG536_js = require('./chunk-VIREG536.js');
|
|
6
|
-
var react = require('react');
|
|
7
|
-
var reactAriaComponents = require('react-aria-components');
|
|
8
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
9
|
-
var lucideReact = require('lucide-react');
|
|
10
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
-
|
|
12
|
-
var inputVariants = classVarianceAuthority.cva(
|
|
13
|
-
// Base styles - FR-014: Proper input styling with focus states
|
|
14
|
-
"flex w-full rounded-md border bg-[var(--content-background)] shadow-xs px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",
|
|
15
|
-
{
|
|
16
|
-
variants: {
|
|
17
|
-
// Size variants (matching Button sizes)
|
|
18
|
-
size: {
|
|
19
|
-
sm: "h-9 text-xs px-2 py-1",
|
|
20
|
-
default: "h-10 px-3 py-2",
|
|
21
|
-
lg: "h-11 px-4 py-3 text-base"
|
|
22
|
-
},
|
|
23
|
-
// State variants
|
|
24
|
-
state: {
|
|
25
|
-
default: "border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",
|
|
26
|
-
error: "border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",
|
|
27
|
-
success: "border-green-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2",
|
|
28
|
-
disabled: "cursor-not-allowed opacity-50",
|
|
29
|
-
readonly: "cursor-default bg-[var(--content-background)] opacity-70"
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
defaultVariants: {
|
|
33
|
-
size: "default",
|
|
34
|
-
state: "default"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
);
|
|
38
|
-
var labelVariants = classVarianceAuthority.cva(
|
|
39
|
-
// Base styles - FR-009: WCAG 2.2 AAA compliance
|
|
40
|
-
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
|
41
|
-
{
|
|
42
|
-
variants: {
|
|
43
|
-
state: {
|
|
44
|
-
default: "text-[var(--content-foreground)]",
|
|
45
|
-
error: "text-[var(--destructive-foreground)]",
|
|
46
|
-
disabled: "opacity-50 cursor-not-allowed"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
defaultVariants: {
|
|
50
|
-
state: "default"
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
);
|
|
54
|
-
var descriptionVariants = classVarianceAuthority.cva(
|
|
55
|
-
"text-sm text-[var(--content-foreground)]"
|
|
56
|
-
);
|
|
57
|
-
var errorMessageVariants = classVarianceAuthority.cva(
|
|
58
|
-
"text-sm text-[var(--destructive-foreground)] font-medium mt-1.5"
|
|
59
|
-
);
|
|
60
|
-
var successMessageVariants = classVarianceAuthority.cva(
|
|
61
|
-
"text-sm text-green-600 dark:text-green-500 font-medium mt-1.5"
|
|
62
|
-
);
|
|
63
|
-
var TextFieldLabel = react.forwardRef(
|
|
64
|
-
({ className, state = "default", children, ...props }, ref) => {
|
|
65
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
66
|
-
reactAriaComponents.Label,
|
|
67
|
-
{
|
|
68
|
-
ref,
|
|
69
|
-
className: chunkVIREG536_js.cn(labelVariants({ state }), className),
|
|
70
|
-
...props,
|
|
71
|
-
children
|
|
72
|
-
}
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
);
|
|
76
|
-
TextFieldLabel.displayName = "TextFieldLabel";
|
|
77
|
-
var TextFieldInput = react.forwardRef(
|
|
78
|
-
({ className, size = "default", state = "default", ...props }, ref) => {
|
|
79
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
-
reactAriaComponents.Input,
|
|
81
|
-
{
|
|
82
|
-
ref,
|
|
83
|
-
className: chunkVIREG536_js.cn(inputVariants({ size, state }), chunkB5Q4UPL6_js.DISABLED_STYLES, className),
|
|
84
|
-
...props
|
|
85
|
-
}
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
);
|
|
89
|
-
TextFieldInput.displayName = "TextFieldInput";
|
|
90
|
-
var TextFieldDescription = react.forwardRef(
|
|
91
|
-
({ className, children, ...props }, ref) => {
|
|
92
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
-
reactAriaComponents.Text,
|
|
94
|
-
{
|
|
95
|
-
ref,
|
|
96
|
-
slot: "description",
|
|
97
|
-
className: chunkVIREG536_js.cn(descriptionVariants(), className),
|
|
98
|
-
...props,
|
|
99
|
-
children
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
);
|
|
104
|
-
TextFieldDescription.displayName = "TextFieldDescription";
|
|
105
|
-
var TextFieldError = react.forwardRef(
|
|
106
|
-
({ className, children, ...props }, ref) => {
|
|
107
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
-
reactAriaComponents.FieldError,
|
|
109
|
-
{
|
|
110
|
-
ref,
|
|
111
|
-
...props,
|
|
112
|
-
className: chunkVIREG536_js.cn(errorMessageVariants(), className),
|
|
113
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", role: "alert", children: [
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleAlert, { className: "h-4 w-4" }),
|
|
115
|
-
children
|
|
116
|
-
] })
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
);
|
|
121
|
-
TextFieldError.displayName = "TextFieldError";
|
|
122
|
-
var TextFieldSuccess = react.forwardRef(
|
|
123
|
-
({ className, children, ...props }, ref) => {
|
|
124
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
-
reactAriaComponents.Text,
|
|
126
|
-
{
|
|
127
|
-
ref,
|
|
128
|
-
slot: "description",
|
|
129
|
-
className: chunkVIREG536_js.cn(successMessageVariants(), className),
|
|
130
|
-
...props,
|
|
131
|
-
children
|
|
132
|
-
}
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
);
|
|
136
|
-
TextFieldSuccess.displayName = "TextFieldSuccess";
|
|
137
|
-
var TextField = react.forwardRef(
|
|
138
|
-
({
|
|
139
|
-
className,
|
|
140
|
-
size = "default",
|
|
141
|
-
label,
|
|
142
|
-
description,
|
|
143
|
-
errorMessage,
|
|
144
|
-
successMessage,
|
|
145
|
-
type = "text",
|
|
146
|
-
isRequired = false,
|
|
147
|
-
isReadOnly = false,
|
|
148
|
-
isDisabled = false,
|
|
149
|
-
isInvalid = false,
|
|
150
|
-
isValid = false,
|
|
151
|
-
id,
|
|
152
|
-
autoComplete,
|
|
153
|
-
disableCopyPaste = false,
|
|
154
|
-
pattern,
|
|
155
|
-
patternDescription,
|
|
156
|
-
expandOnFocus = false,
|
|
157
|
-
collapsedWidth = "200px",
|
|
158
|
-
prefix,
|
|
159
|
-
suffix,
|
|
160
|
-
prefixSize = 16,
|
|
161
|
-
suffixSize = 16,
|
|
162
|
-
showPasswordToggle,
|
|
163
|
-
value,
|
|
164
|
-
defaultValue,
|
|
165
|
-
onFocus: userOnFocus,
|
|
166
|
-
onBlur: userOnBlur,
|
|
167
|
-
...props
|
|
168
|
-
}, ref) => {
|
|
169
|
-
const errorId = react.useId();
|
|
170
|
-
const generatedId = react.useId();
|
|
171
|
-
const fieldId = id || generatedId;
|
|
172
|
-
const [isShaking, setIsShaking] = react.useState(false);
|
|
173
|
-
const [screenReaderMessage, setScreenReaderMessage] = react.useState("");
|
|
174
|
-
const [isFocused, setIsFocused] = react.useState(false);
|
|
175
|
-
const [showPassword, setShowPassword] = react.useState(false);
|
|
176
|
-
react.useEffect(() => {
|
|
177
|
-
if (disableCopyPaste && typeof process !== "undefined" && process.env.NODE_ENV === "development") {
|
|
178
|
-
console.warn(
|
|
179
|
-
"[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers."
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
}, [disableCopyPaste]);
|
|
183
|
-
const handlePaste = react.useCallback((e) => {
|
|
184
|
-
if (disableCopyPaste) {
|
|
185
|
-
e.preventDefault();
|
|
186
|
-
setIsShaking(true);
|
|
187
|
-
setScreenReaderMessage("Pasting is not allowed in this field. Please type your entry.");
|
|
188
|
-
setTimeout(() => {
|
|
189
|
-
setIsShaking(false);
|
|
190
|
-
setScreenReaderMessage("");
|
|
191
|
-
}, 400);
|
|
192
|
-
}
|
|
193
|
-
}, [disableCopyPaste]);
|
|
194
|
-
const handleFocus = react.useCallback((e) => {
|
|
195
|
-
if (expandOnFocus) {
|
|
196
|
-
setIsFocused(true);
|
|
197
|
-
}
|
|
198
|
-
userOnFocus?.(e);
|
|
199
|
-
}, [expandOnFocus, userOnFocus]);
|
|
200
|
-
const handleBlur = react.useCallback((e) => {
|
|
201
|
-
if (expandOnFocus) {
|
|
202
|
-
const isEmpty = e.target.value === "";
|
|
203
|
-
if (isEmpty) {
|
|
204
|
-
setIsFocused(false);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
userOnBlur?.(e);
|
|
208
|
-
}, [expandOnFocus, userOnBlur]);
|
|
209
|
-
const inputWidth = react.useMemo(() => {
|
|
210
|
-
if (!expandOnFocus) return void 0;
|
|
211
|
-
const hasValue = value !== void 0 ? value !== "" : defaultValue !== void 0 && defaultValue !== "";
|
|
212
|
-
if (isFocused || hasValue) {
|
|
213
|
-
return "100%";
|
|
214
|
-
}
|
|
215
|
-
return collapsedWidth;
|
|
216
|
-
}, [expandOnFocus, isFocused, value, defaultValue, collapsedWidth]);
|
|
217
|
-
const inputState = react.useMemo(() => {
|
|
218
|
-
if (isDisabled) return "disabled";
|
|
219
|
-
if (isReadOnly) return "readonly";
|
|
220
|
-
if (isInvalid) return "error";
|
|
221
|
-
if (isValid) return "success";
|
|
222
|
-
return "default";
|
|
223
|
-
}, [isDisabled, isReadOnly, isInvalid, isValid]);
|
|
224
|
-
const labelState = react.useMemo(() => {
|
|
225
|
-
if (isDisabled) return "disabled";
|
|
226
|
-
if (isInvalid) return "error";
|
|
227
|
-
return "default";
|
|
228
|
-
}, [isDisabled, isInvalid]);
|
|
229
|
-
const combinedDescription = react.useMemo(() => {
|
|
230
|
-
if (description && patternDescription) {
|
|
231
|
-
return `${description} ${patternDescription}`;
|
|
232
|
-
}
|
|
233
|
-
return description || patternDescription;
|
|
234
|
-
}, [description, patternDescription]);
|
|
235
|
-
const inputPadding = react.useMemo(() => {
|
|
236
|
-
const basePadding = { left: 12, right: 12 };
|
|
237
|
-
if (prefix) {
|
|
238
|
-
const prefixWidth = typeof prefix === "string" ? prefix.length * 8 + 16 : prefixSize + 16;
|
|
239
|
-
basePadding.left = prefixWidth;
|
|
240
|
-
}
|
|
241
|
-
if (type === "password" && showPasswordToggle) {
|
|
242
|
-
basePadding.right = 16 + 16;
|
|
243
|
-
} else if (suffix) {
|
|
244
|
-
const suffixWidth = typeof suffix === "string" ? suffix.length * 8 + 16 : suffixSize + 16;
|
|
245
|
-
basePadding.right = suffixWidth;
|
|
246
|
-
}
|
|
247
|
-
return basePadding;
|
|
248
|
-
}, [prefix, suffix, prefixSize, suffixSize, type, showPasswordToggle]);
|
|
249
|
-
const actualType = react.useMemo(() => {
|
|
250
|
-
if (type === "password" && showPasswordToggle && showPassword) {
|
|
251
|
-
return "text";
|
|
252
|
-
}
|
|
253
|
-
return type;
|
|
254
|
-
}, [type, showPasswordToggle, showPassword]);
|
|
255
|
-
const handlePasswordToggle = react.useCallback(() => {
|
|
256
|
-
setShowPassword((prev) => !prev);
|
|
257
|
-
}, []);
|
|
258
|
-
const EyeIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
259
|
-
"svg",
|
|
260
|
-
{
|
|
261
|
-
"data-testid": "password-toggle-icon-show",
|
|
262
|
-
width: "16",
|
|
263
|
-
height: "16",
|
|
264
|
-
viewBox: "0 0 16 16",
|
|
265
|
-
fill: "none",
|
|
266
|
-
stroke: "currentColor",
|
|
267
|
-
strokeWidth: "2",
|
|
268
|
-
strokeLinecap: "round",
|
|
269
|
-
strokeLinejoin: "round",
|
|
270
|
-
children: [
|
|
271
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z" }),
|
|
272
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "2" })
|
|
273
|
-
]
|
|
274
|
-
}
|
|
275
|
-
);
|
|
276
|
-
const EyeOffIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
277
|
-
"svg",
|
|
278
|
-
{
|
|
279
|
-
"data-testid": "password-toggle-icon-hide",
|
|
280
|
-
width: "16",
|
|
281
|
-
height: "16",
|
|
282
|
-
viewBox: "0 0 16 16",
|
|
283
|
-
fill: "none",
|
|
284
|
-
stroke: "currentColor",
|
|
285
|
-
strokeWidth: "2",
|
|
286
|
-
strokeLinecap: "round",
|
|
287
|
-
strokeLinejoin: "round",
|
|
288
|
-
children: [
|
|
289
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.5 5.5l-5 5" }),
|
|
290
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4" }),
|
|
291
|
-
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 13l2-2m7-7l2-2" }),
|
|
292
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "2" })
|
|
293
|
-
]
|
|
294
|
-
}
|
|
295
|
-
);
|
|
296
|
-
const actualSuffix = react.useMemo(() => {
|
|
297
|
-
if (type === "password" && showPasswordToggle) {
|
|
298
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
299
|
-
chunk3YOY2VJ6_js.Button,
|
|
300
|
-
{
|
|
301
|
-
variant: "ghost",
|
|
302
|
-
visualSize: "icon",
|
|
303
|
-
onPress: handlePasswordToggle,
|
|
304
|
-
"aria-label": showPassword ? "Hide password" : "Show password",
|
|
305
|
-
className: "!min-h-0 !min-w-0 h-8 w-8",
|
|
306
|
-
children: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(EyeOffIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(EyeIcon, {})
|
|
307
|
-
}
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
|
-
return suffix;
|
|
311
|
-
}, [type, showPasswordToggle, showPassword, suffix, handlePasswordToggle]);
|
|
312
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
313
|
-
reactAriaComponents.TextField,
|
|
314
|
-
{
|
|
315
|
-
ref,
|
|
316
|
-
className: chunkVIREG536_js.cn("flex flex-col gap-1.5", className),
|
|
317
|
-
isRequired,
|
|
318
|
-
isReadOnly,
|
|
319
|
-
isDisabled,
|
|
320
|
-
isInvalid,
|
|
321
|
-
value,
|
|
322
|
-
defaultValue,
|
|
323
|
-
...props,
|
|
324
|
-
children: [
|
|
325
|
-
label && /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Label, { className: chunkVIREG536_js.cn(labelVariants({ state: labelState })), children: [
|
|
326
|
-
label,
|
|
327
|
-
isRequired && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-[var(--destructive-background)]", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "*" }) })
|
|
328
|
-
] }),
|
|
329
|
-
combinedDescription && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: chunkVIREG536_js.cn(descriptionVariants()), children: combinedDescription }),
|
|
330
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
331
|
-
"div",
|
|
332
|
-
{
|
|
333
|
-
className: "relative flex items-center transition-all duration-200",
|
|
334
|
-
style: {
|
|
335
|
-
width: inputWidth
|
|
336
|
-
},
|
|
337
|
-
children: [
|
|
338
|
-
prefix && /* @__PURE__ */ jsxRuntime.jsx(
|
|
339
|
-
"div",
|
|
340
|
-
{
|
|
341
|
-
"data-testid": "textfield-prefix",
|
|
342
|
-
className: "absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]",
|
|
343
|
-
"aria-hidden": "true",
|
|
344
|
-
children: prefix
|
|
345
|
-
}
|
|
346
|
-
),
|
|
347
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
348
|
-
reactAriaComponents.Input,
|
|
349
|
-
{
|
|
350
|
-
type: actualType,
|
|
351
|
-
id: fieldId,
|
|
352
|
-
className: chunkVIREG536_js.cn(
|
|
353
|
-
inputVariants({ size, state: inputState }),
|
|
354
|
-
chunkB5Q4UPL6_js.DISABLED_STYLES,
|
|
355
|
-
isShaking && "shake"
|
|
356
|
-
),
|
|
357
|
-
style: {
|
|
358
|
-
width: "100%",
|
|
359
|
-
paddingLeft: `${inputPadding.left}px`,
|
|
360
|
-
paddingRight: `${inputPadding.right}px`
|
|
361
|
-
},
|
|
362
|
-
autoComplete,
|
|
363
|
-
pattern,
|
|
364
|
-
onPaste: handlePaste,
|
|
365
|
-
onFocus: handleFocus,
|
|
366
|
-
onBlur: handleBlur,
|
|
367
|
-
"aria-required": isRequired ? "true" : void 0,
|
|
368
|
-
"aria-readonly": isReadOnly ? "true" : void 0,
|
|
369
|
-
"aria-errormessage": isInvalid && errorMessage ? errorId : void 0
|
|
370
|
-
}
|
|
371
|
-
),
|
|
372
|
-
actualSuffix && /* @__PURE__ */ jsxRuntime.jsx(
|
|
373
|
-
"div",
|
|
374
|
-
{
|
|
375
|
-
"data-testid": "textfield-suffix",
|
|
376
|
-
className: chunkVIREG536_js.cn(
|
|
377
|
-
"absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",
|
|
378
|
-
// Password toggle is clickable, other suffixes are not
|
|
379
|
-
type === "password" && showPasswordToggle ? "" : "pointer-events-none"
|
|
380
|
-
),
|
|
381
|
-
"aria-hidden": type === "password" && showPasswordToggle ? void 0 : "true",
|
|
382
|
-
children: actualSuffix
|
|
383
|
-
}
|
|
384
|
-
)
|
|
385
|
-
]
|
|
386
|
-
}
|
|
387
|
-
),
|
|
388
|
-
isValid && successMessage && !isInvalid && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: chunkVIREG536_js.cn(successMessageVariants()), children: successMessage }),
|
|
389
|
-
isInvalid && errorMessage && /* @__PURE__ */ jsxRuntime.jsx(TextFieldError, { id: errorId, children: errorMessage }),
|
|
390
|
-
screenReaderMessage && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: screenReaderMessage })
|
|
391
|
-
]
|
|
392
|
-
}
|
|
393
|
-
);
|
|
394
|
-
}
|
|
395
|
-
);
|
|
396
|
-
TextField.displayName = "TextField";
|
|
397
|
-
|
|
398
|
-
exports.TextField = TextField;
|
|
399
|
-
exports.TextFieldDescription = TextFieldDescription;
|
|
400
|
-
exports.TextFieldError = TextFieldError;
|
|
401
|
-
exports.TextFieldInput = TextFieldInput;
|
|
402
|
-
exports.TextFieldLabel = TextFieldLabel;
|
|
403
|
-
exports.TextFieldSuccess = TextFieldSuccess;
|
|
404
|
-
exports.inputVariants = inputVariants;
|
|
405
|
-
exports.labelVariants = labelVariants;
|
|
406
|
-
exports.successMessageVariants = successMessageVariants;
|
|
407
|
-
//# sourceMappingURL=chunk-4DU5JSXB.js.map
|
|
408
|
-
//# sourceMappingURL=chunk-4DU5JSXB.js.map
|