@nofinite/nui 1.1.1 → 2.0.1
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/README.md +61 -48
- package/dist/components/accordion/Accordion.cjs +1 -1
- package/dist/components/accordion/Accordion.cjs.map +1 -1
- package/dist/components/accordion/Accordion.js +64 -43
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert/Alert.cjs +1 -1
- package/dist/components/alert/Alert.cjs.map +1 -1
- package/dist/components/alert/Alert.js +39 -25
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/avatar/Avatar.cjs +1 -1
- package/dist/components/avatar/Avatar.cjs.map +1 -1
- package/dist/components/avatar/Avatar.js +58 -44
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/AvatarGroup.cjs +1 -1
- package/dist/components/avatar/AvatarGroup.cjs.map +1 -1
- package/dist/components/avatar/AvatarGroup.js +34 -25
- package/dist/components/avatar/AvatarGroup.js.map +1 -1
- package/dist/components/badge/Badge.cjs +1 -1
- package/dist/components/badge/Badge.cjs.map +1 -1
- package/dist/components/badge/Badge.js +43 -68
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/badge/BadgeGroup.cjs +1 -1
- package/dist/components/badge/BadgeGroup.cjs.map +1 -1
- package/dist/components/badge/BadgeGroup.js +20 -10
- package/dist/components/badge/BadgeGroup.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.cjs +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.js +59 -39
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/button/Button.cjs +1 -1
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.js +52 -17
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/card/Card.cjs +1 -1
- package/dist/components/card/Card.cjs.map +1 -1
- package/dist/components/card/Card.js +44 -41
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/checkbox/Checkbox.cjs +1 -1
- package/dist/components/checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/checkbox/Checkbox.js +59 -40
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/chip/Chip.cjs +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.js +67 -47
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/combobox/Combobox.cjs +1 -1
- package/dist/components/combobox/Combobox.cjs.map +1 -1
- package/dist/components/combobox/Combobox.js +123 -108
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/commandpalette/CommandPalette.cjs +1 -1
- package/dist/components/commandpalette/CommandPalette.cjs.map +1 -1
- package/dist/components/commandpalette/CommandPalette.js +96 -73
- package/dist/components/commandpalette/CommandPalette.js.map +1 -1
- package/dist/components/contextmenu/ContextMenu.cjs +1 -1
- package/dist/components/contextmenu/ContextMenu.cjs.map +1 -1
- package/dist/components/contextmenu/ContextMenu.js +79 -58
- package/dist/components/contextmenu/ContextMenu.js.map +1 -1
- package/dist/components/datagrid/DataGrid.cjs +1 -1
- package/dist/components/datagrid/DataGrid.cjs.map +1 -1
- package/dist/components/datagrid/DataGrid.js +184 -202
- package/dist/components/datagrid/DataGrid.js.map +1 -1
- package/dist/components/datepicker/DatePicker.cjs +1 -1
- package/dist/components/datepicker/DatePicker.cjs.map +1 -1
- package/dist/components/datepicker/DatePicker.js +197 -164
- package/dist/components/datepicker/DatePicker.js.map +1 -1
- package/dist/components/daterangepicker/DateRangePicker.cjs +1 -1
- package/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/daterangepicker/DateRangePicker.js +254 -213
- package/dist/components/daterangepicker/DateRangePicker.js.map +1 -1
- package/dist/components/dialog/DialogProvider.cjs +2 -0
- package/dist/components/dialog/DialogProvider.cjs.map +1 -0
- package/dist/components/dialog/DialogProvider.js +71 -0
- package/dist/components/dialog/DialogProvider.js.map +1 -0
- package/dist/components/dialog/dialogStore.cjs +2 -0
- package/dist/components/dialog/dialogStore.cjs.map +1 -0
- package/dist/components/dialog/dialogStore.js +60 -0
- package/dist/components/dialog/dialogStore.js.map +1 -0
- package/dist/components/drawer/Drawer.cjs +1 -1
- package/dist/components/drawer/Drawer.cjs.map +1 -1
- package/dist/components/drawer/Drawer.js +69 -47
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/dropdown/Dropdown.cjs +1 -1
- package/dist/components/dropdown/Dropdown.cjs.map +1 -1
- package/dist/components/dropdown/Dropdown.js +134 -108
- package/dist/components/dropdown/Dropdown.js.map +1 -1
- package/dist/components/fileuploader/FileUploader.cjs +1 -1
- package/dist/components/fileuploader/FileUploader.cjs.map +1 -1
- package/dist/components/fileuploader/FileUploader.js +96 -61
- package/dist/components/fileuploader/FileUploader.js.map +1 -1
- package/dist/components/hovercard/HoverCard.cjs +1 -1
- package/dist/components/hovercard/HoverCard.cjs.map +1 -1
- package/dist/components/hovercard/HoverCard.js +124 -69
- package/dist/components/hovercard/HoverCard.js.map +1 -1
- package/dist/components/input/Input.cjs +1 -1
- package/dist/components/input/Input.cjs.map +1 -1
- package/dist/components/input/Input.js +62 -37
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/layout/Container.cjs +1 -1
- package/dist/components/layout/Container.cjs.map +1 -1
- package/dist/components/layout/Container.js +21 -30
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Flex.cjs +1 -1
- package/dist/components/layout/Flex.cjs.map +1 -1
- package/dist/components/layout/Flex.js +36 -19
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Grid.cjs +1 -1
- package/dist/components/layout/Grid.cjs.map +1 -1
- package/dist/components/layout/Grid.js +30 -18
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/link/Link.cjs +2 -0
- package/dist/components/link/Link.cjs.map +1 -0
- package/dist/components/link/Link.js +41 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/megamenu/MegaMenu.cjs +1 -1
- package/dist/components/megamenu/MegaMenu.cjs.map +1 -1
- package/dist/components/megamenu/MegaMenu.js +107 -38
- package/dist/components/megamenu/MegaMenu.js.map +1 -1
- package/dist/components/modal/Modal.cjs +1 -1
- package/dist/components/modal/Modal.cjs.map +1 -1
- package/dist/components/modal/Modal.js +91 -83
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/multiselect/MultiSelect.cjs +2 -0
- package/dist/components/multiselect/MultiSelect.cjs.map +1 -0
- package/dist/components/multiselect/MultiSelect.js +176 -0
- package/dist/components/multiselect/MultiSelect.js.map +1 -0
- package/dist/components/nuiprovider/NUIProvider.cjs +2 -0
- package/dist/components/nuiprovider/NUIProvider.cjs.map +1 -0
- package/dist/components/nuiprovider/NUIProvider.js +36 -0
- package/dist/components/nuiprovider/NUIProvider.js.map +1 -0
- package/dist/components/pagination/Pagination.cjs +1 -1
- package/dist/components/pagination/Pagination.cjs.map +1 -1
- package/dist/components/pagination/Pagination.js +74 -41
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.cjs +1 -1
- package/dist/components/popover/Popover.cjs.map +1 -1
- package/dist/components/popover/Popover.js +99 -100
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/progress/Progress.cjs +1 -1
- package/dist/components/progress/Progress.cjs.map +1 -1
- package/dist/components/progress/Progress.js +44 -22
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/radiogroup/RadioGroup.cjs +1 -1
- package/dist/components/radiogroup/RadioGroup.cjs.map +1 -1
- package/dist/components/radiogroup/RadioGroup.js +69 -74
- package/dist/components/radiogroup/RadioGroup.js.map +1 -1
- package/dist/components/rating/Rating.cjs +1 -1
- package/dist/components/rating/Rating.cjs.map +1 -1
- package/dist/components/rating/Rating.js +72 -33
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/resizable/Resizable.cjs +2 -0
- package/dist/components/resizable/Resizable.cjs.map +1 -0
- package/dist/components/resizable/Resizable.js +134 -0
- package/dist/components/resizable/Resizable.js.map +1 -0
- package/dist/components/select/Select.cjs +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.js +114 -113
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/skeleton/Skeleton.cjs +1 -1
- package/dist/components/skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/skeleton/Skeleton.js +90 -67
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.cjs +1 -1
- package/dist/components/slider/Slider.cjs.map +1 -1
- package/dist/components/slider/Slider.js +85 -82
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.cjs +1 -1
- package/dist/components/spinner/Spinner.cjs.map +1 -1
- package/dist/components/spinner/Spinner.js +60 -17
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/stepper/Stepper.cjs +1 -5
- package/dist/components/stepper/Stepper.cjs.map +1 -1
- package/dist/components/stepper/Stepper.js +65 -39
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/switch/Switch.cjs +1 -1
- package/dist/components/switch/Switch.cjs.map +1 -1
- package/dist/components/switch/Switch.js +89 -62
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/table/Table.cjs +1 -1
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.js +62 -35
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/tabs/Tabs.cjs +1 -1
- package/dist/components/tabs/Tabs.cjs.map +1 -1
- package/dist/components/tabs/Tabs.js +110 -50
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/textarea/Textarea.cjs +1 -1
- package/dist/components/textarea/Textarea.cjs.map +1 -1
- package/dist/components/textarea/Textarea.js +63 -58
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/timepicker/TimePicker.cjs +2 -0
- package/dist/components/timepicker/TimePicker.cjs.map +1 -0
- package/dist/components/timepicker/TimePicker.js +159 -0
- package/dist/components/timepicker/TimePicker.js.map +1 -0
- package/dist/components/timerangepicker/TimeRangePicker.cjs +2 -0
- package/dist/components/timerangepicker/TimeRangePicker.cjs.map +1 -0
- package/dist/components/timerangepicker/TimeRangePicker.js +208 -0
- package/dist/components/timerangepicker/TimeRangePicker.js.map +1 -0
- package/dist/components/toast/Toast.cjs +1 -1
- package/dist/components/toast/Toast.cjs.map +1 -1
- package/dist/components/toast/Toast.js +91 -38
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs +1 -1
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.js +72 -56
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/treeview/TreeView.cjs +1 -1
- package/dist/components/treeview/TreeView.cjs.map +1 -1
- package/dist/components/treeview/TreeView.js +120 -90
- package/dist/components/treeview/TreeView.js.map +1 -1
- package/dist/components/virtuallist/VirtualList.cjs +1 -1
- package/dist/components/virtuallist/VirtualList.cjs.map +1 -1
- package/dist/components/virtuallist/VirtualList.js +52 -34
- package/dist/components/virtuallist/VirtualList.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -0
- package/dist/index.js +118 -107
- package/dist/index.js.map +1 -1
- package/dist/package.json +49 -6
- package/dist/types/components/accordion/Accordion.d.ts +7 -3
- package/dist/types/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/components/alert/Alert.d.ts +18 -5
- package/dist/types/components/alert/Alert.d.ts.map +1 -1
- package/dist/types/components/avatar/Avatar.d.ts +12 -8
- package/dist/types/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/avatar/AvatarGroup.d.ts +11 -4
- package/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -1
- package/dist/types/components/badge/Badge.d.ts +19 -11
- package/dist/types/components/badge/Badge.d.ts.map +1 -1
- package/dist/types/components/badge/BadgeGroup.d.ts +7 -4
- package/dist/types/components/badge/BadgeGroup.d.ts.map +1 -1
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +14 -6
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/components/button/Button.d.ts +25 -10
- package/dist/types/components/button/Button.d.ts.map +1 -1
- package/dist/types/components/card/Card.d.ts +12 -21
- package/dist/types/components/card/Card.d.ts.map +1 -1
- package/dist/types/components/checkbox/Checkbox.d.ts +12 -7
- package/dist/types/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/chip/Chip.d.ts +14 -11
- package/dist/types/components/chip/Chip.d.ts.map +1 -1
- package/dist/types/components/combobox/Combobox.d.ts +15 -4
- package/dist/types/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/commandpalette/CommandPalette.d.ts +12 -3
- package/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -1
- package/dist/types/components/contextmenu/ContextMenu.d.ts +14 -6
- package/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -1
- package/dist/types/components/datagrid/DataGrid.d.ts +16 -4
- package/dist/types/components/datagrid/DataGrid.d.ts.map +1 -1
- package/dist/types/components/datepicker/DatePicker.d.ts +13 -1
- package/dist/types/components/datepicker/DatePicker.d.ts.map +1 -1
- package/dist/types/components/daterangepicker/DateRangePicker.d.ts +3 -1
- package/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -1
- package/dist/types/components/dialog/DialogProvider.d.ts +2 -0
- package/dist/types/components/dialog/DialogProvider.d.ts.map +1 -0
- package/dist/types/components/dialog/dialogStore.d.ts +42 -0
- package/dist/types/components/dialog/dialogStore.d.ts.map +1 -0
- package/dist/types/components/drawer/Drawer.d.ts +18 -4
- package/dist/types/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/types/components/dropdown/Dropdown.d.ts +21 -16
- package/dist/types/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/types/components/fileuploader/FileUploader.d.ts +22 -3
- package/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -1
- package/dist/types/components/hovercard/HoverCard.d.ts +45 -5
- package/dist/types/components/hovercard/HoverCard.d.ts.map +1 -1
- package/dist/types/components/input/Input.d.ts +20 -10
- package/dist/types/components/input/Input.d.ts.map +1 -1
- package/dist/types/components/layout/Container.d.ts +8 -4
- package/dist/types/components/layout/Container.d.ts.map +1 -1
- package/dist/types/components/layout/Flex.d.ts +27 -10
- package/dist/types/components/layout/Flex.d.ts.map +1 -1
- package/dist/types/components/layout/Grid.d.ts +11 -5
- package/dist/types/components/layout/Grid.d.ts.map +1 -1
- package/dist/types/components/link/Link.d.ts +22 -0
- package/dist/types/components/link/Link.d.ts.map +1 -0
- package/dist/types/components/megamenu/MegaMenu.d.ts +8 -11
- package/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -1
- package/dist/types/components/modal/Modal.d.ts +8 -7
- package/dist/types/components/modal/Modal.d.ts.map +1 -1
- package/dist/types/components/multiselect/MultiSelect.d.ts +33 -0
- package/dist/types/components/multiselect/MultiSelect.d.ts.map +1 -0
- package/dist/types/components/nuiprovider/NUIProvider.d.ts +29 -0
- package/dist/types/components/nuiprovider/NUIProvider.d.ts.map +1 -0
- package/dist/types/components/pagination/Pagination.d.ts +17 -3
- package/dist/types/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/popover/Popover.d.ts +54 -16
- package/dist/types/components/popover/Popover.d.ts.map +1 -1
- package/dist/types/components/progress/Progress.d.ts +17 -7
- package/dist/types/components/progress/Progress.d.ts.map +1 -1
- package/dist/types/components/radiogroup/RadioGroup.d.ts +15 -10
- package/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -1
- package/dist/types/components/rating/Rating.d.ts +24 -10
- package/dist/types/components/rating/Rating.d.ts.map +1 -1
- package/dist/types/components/resizable/Resizable.d.ts +24 -0
- package/dist/types/components/resizable/Resizable.d.ts.map +1 -0
- package/dist/types/components/select/Select.d.ts +17 -8
- package/dist/types/components/select/Select.d.ts.map +1 -1
- package/dist/types/components/skeleton/Skeleton.d.ts +37 -36
- package/dist/types/components/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/types/components/slider/Slider.d.ts +15 -4
- package/dist/types/components/slider/Slider.d.ts.map +1 -1
- package/dist/types/components/spinner/Spinner.d.ts +14 -4
- package/dist/types/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/types/components/stepper/Stepper.d.ts +17 -3
- package/dist/types/components/stepper/Stepper.d.ts.map +1 -1
- package/dist/types/components/switch/Switch.d.ts +20 -5
- package/dist/types/components/switch/Switch.d.ts.map +1 -1
- package/dist/types/components/table/Table.d.ts +24 -4
- package/dist/types/components/table/Table.d.ts.map +1 -1
- package/dist/types/components/tabs/Tabs.d.ts +25 -12
- package/dist/types/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/types/components/textarea/Textarea.d.ts +8 -5
- package/dist/types/components/textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/timepicker/TimePicker.d.ts +26 -0
- package/dist/types/components/timepicker/TimePicker.d.ts.map +1 -0
- package/dist/types/components/timerangepicker/TimeRangePicker.d.ts +32 -0
- package/dist/types/components/timerangepicker/TimeRangePicker.d.ts.map +1 -0
- package/dist/types/components/toast/Toast.d.ts +23 -7
- package/dist/types/components/toast/Toast.d.ts.map +1 -1
- package/dist/types/components/tooltip/Tooltip.d.ts +13 -2
- package/dist/types/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/treeview/TreeView.d.ts +20 -6
- package/dist/types/components/treeview/TreeView.d.ts.map +1 -1
- package/dist/types/components/virtuallist/VirtualList.d.ts +12 -16
- package/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -1
- package/dist/types/index.d.ts +8 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/cn/cn.d.ts +19 -0
- package/dist/types/utils/cn/cn.d.ts.map +1 -0
- package/dist/types/utils/generateid/generateId.d.ts +7 -0
- package/dist/types/utils/generateid/generateId.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
- package/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -1
- package/dist/types/utils/keyboardnav/keyboardNav.d.ts +17 -6
- package/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -1
- package/dist/types/utils/onclickoutside/onClickOutside.d.ts +9 -1
- package/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -1
- package/dist/types/utils/portal/portal.d.ts +14 -1
- package/dist/types/utils/portal/portal.d.ts.map +1 -1
- package/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -4
- package/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -1
- package/dist/types/utils/scrolllock/scrollLock.d.ts +10 -2
- package/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -1
- package/dist/types/utils/slot/slot.d.ts +12 -0
- package/dist/types/utils/slot/slot.d.ts.map +1 -0
- package/dist/types/utils/trapfocus/trapFocus.d.ts +6 -2
- package/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -1
- package/dist/utils/cn/cn.cjs +2 -0
- package/dist/utils/cn/cn.cjs.map +1 -0
- package/dist/utils/cn/cn.js +21 -0
- package/dist/utils/cn/cn.js.map +1 -0
- package/dist/utils/inertmanager/inertManager.cjs.map +1 -1
- package/dist/utils/inertmanager/inertManager.js.map +1 -1
- package/dist/utils/onclickoutside/onClickOutside.cjs +1 -1
- package/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -1
- package/dist/utils/onclickoutside/onClickOutside.js +10 -6
- package/dist/utils/onclickoutside/onClickOutside.js.map +1 -1
- package/dist/utils/portal/portal.cjs.map +1 -1
- package/dist/utils/portal/portal.js.map +1 -1
- package/dist/utils/restorefocus/restoreFocus.cjs.map +1 -1
- package/dist/utils/restorefocus/restoreFocus.js.map +1 -1
- package/dist/utils/scrolllock/scrollLock.cjs.map +1 -1
- package/dist/utils/scrolllock/scrollLock.js +7 -0
- package/dist/utils/scrolllock/scrollLock.js.map +1 -1
- package/dist/utils/slot/slot.cjs +2 -0
- package/dist/utils/slot/slot.cjs.map +1 -0
- package/dist/utils/slot/slot.js +57 -0
- package/dist/utils/slot/slot.js.map +1 -0
- package/dist/utils/trapfocus/trapFocus.cjs.map +1 -1
- package/dist/utils/trapfocus/trapFocus.js.map +1 -1
- package/package.json +49 -6
- package/dist/components/layout/HStack.cjs +0 -2
- package/dist/components/layout/HStack.cjs.map +0 -1
- package/dist/components/layout/HStack.js +0 -9
- package/dist/components/layout/HStack.js.map +0 -1
- package/dist/components/layout/Stack.cjs +0 -2
- package/dist/components/layout/Stack.cjs.map +0 -1
- package/dist/components/layout/Stack.js +0 -9
- package/dist/components/layout/Stack.js.map +0 -1
- package/dist/styles/nui.css +0 -1
- package/dist/theme/NUIProvider.cjs +0 -2
- package/dist/theme/NUIProvider.cjs.map +0 -1
- package/dist/theme/NUIProvider.js +0 -34
- package/dist/theme/NUIProvider.js.map +0 -1
- package/dist/theme/useTheme.cjs +0 -2
- package/dist/theme/useTheme.cjs.map +0 -1
- package/dist/theme/useTheme.js +0 -9
- package/dist/theme/useTheme.js.map +0 -1
- package/dist/types/components/layout/HStack.d.ts +0 -8
- package/dist/types/components/layout/HStack.d.ts.map +0 -1
- package/dist/types/components/layout/Stack.d.ts +0 -8
- package/dist/types/components/layout/Stack.d.ts.map +0 -1
- package/dist/types/theme/NUIProvider.d.ts +0 -14
- package/dist/types/theme/NUIProvider.d.ts.map +0 -1
- package/dist/types/theme/useTheme.d.ts +0 -11
- package/dist/types/theme/useTheme.d.ts.map +0 -1
- package/dist/utils/generateid/generateId.cjs +0 -2
- package/dist/utils/generateid/generateId.cjs.map +0 -1
- package/dist/utils/generateid/generateId.js +0 -7
- package/dist/utils/generateid/generateId.js.map +0 -1
- package/dist/utils/keyboardnav/keyboardNav.cjs +0 -2
- package/dist/utils/keyboardnav/keyboardNav.cjs.map +0 -1
- package/dist/utils/keyboardnav/keyboardNav.js +0 -10
- package/dist/utils/keyboardnav/keyboardNav.js.map +0 -1
|
@@ -1,116 +1,119 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
1
|
+
import { jsx as l, jsxs as P } from "react/jsx-runtime";
|
|
2
|
+
import { useState as M, useRef as D, useCallback as w, useEffect as C } from "react";
|
|
3
3
|
/* empty css */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
import { cn as I } from "../../utils/cn/cn.js";
|
|
5
|
+
function B({
|
|
6
|
+
min: r = 0,
|
|
7
|
+
max: a = 100,
|
|
8
|
+
step: s = 1,
|
|
9
|
+
value: v,
|
|
10
|
+
defaultValue: b,
|
|
11
|
+
onChange: f,
|
|
12
|
+
disabled: c = !1,
|
|
13
|
+
className: N,
|
|
14
|
+
...V
|
|
15
|
+
// <-- Capture the rest of the HTML attributes (like style, id, etc.)
|
|
13
16
|
}) {
|
|
14
|
-
const
|
|
15
|
-
(
|
|
16
|
-
const
|
|
17
|
-
|
|
17
|
+
const u = v !== void 0, [R, x] = M(b ?? r), n = Math.min(a, Math.max(r, u ? v : R)), h = D(null), m = D(null), [k, g] = M(!1), i = w(
|
|
18
|
+
(e) => {
|
|
19
|
+
const t = Math.min(a, Math.max(r, e));
|
|
20
|
+
let o = r + Math.round((t - r) / s) * s;
|
|
21
|
+
o = Number(o.toFixed(5)), u || x(o), f?.(o);
|
|
18
22
|
},
|
|
19
|
-
[
|
|
20
|
-
),
|
|
21
|
-
(
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
24
|
-
const
|
|
25
|
-
return
|
|
23
|
+
[u, a, r, s, f]
|
|
24
|
+
), d = w(
|
|
25
|
+
(e) => {
|
|
26
|
+
const t = h.current;
|
|
27
|
+
if (!t) return n;
|
|
28
|
+
const o = t.getBoundingClientRect(), A = Math.max(0, Math.min(e - o.left, o.width)) / o.width;
|
|
29
|
+
return r + A * (a - r);
|
|
26
30
|
},
|
|
27
|
-
[
|
|
28
|
-
),
|
|
29
|
-
(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (v)
|
|
48
|
-
return window.addEventListener("mousemove", u), window.addEventListener("touchmove", u), window.addEventListener("mouseup", l), window.addEventListener("touchend", l), () => {
|
|
49
|
-
window.removeEventListener("mousemove", u), window.removeEventListener("touchmove", u), window.removeEventListener("mouseup", l), window.removeEventListener("touchend", l);
|
|
50
|
-
};
|
|
51
|
-
}, [v, u, l]);
|
|
52
|
-
const A = i(
|
|
53
|
-
(t) => {
|
|
54
|
-
if (o) return;
|
|
55
|
-
let e = r;
|
|
56
|
-
switch (t.key) {
|
|
31
|
+
[r, a, n]
|
|
32
|
+
), E = (e) => "touches" in e ? e.touches[0].clientX : e.clientX, p = (e) => {
|
|
33
|
+
c || (m.current?.focus(), g(!0), i(d(E(e))));
|
|
34
|
+
};
|
|
35
|
+
C(() => {
|
|
36
|
+
if (!k || c) return;
|
|
37
|
+
const e = (o) => {
|
|
38
|
+
i(d(E(o)));
|
|
39
|
+
}, t = () => {
|
|
40
|
+
g(!1);
|
|
41
|
+
};
|
|
42
|
+
return window.addEventListener("mousemove", e), window.addEventListener("touchmove", e, { passive: !1 }), window.addEventListener("mouseup", t), window.addEventListener("touchend", t), () => {
|
|
43
|
+
window.removeEventListener("mousemove", e), window.removeEventListener("touchmove", e), window.removeEventListener("mouseup", t), window.removeEventListener("touchend", t);
|
|
44
|
+
};
|
|
45
|
+
}, [k, c, d, i]);
|
|
46
|
+
const y = w(
|
|
47
|
+
(e) => {
|
|
48
|
+
if (c) return;
|
|
49
|
+
let t = n;
|
|
50
|
+
switch (e.key) {
|
|
57
51
|
case "ArrowRight":
|
|
58
52
|
case "ArrowUp":
|
|
59
|
-
|
|
53
|
+
t = n + s;
|
|
60
54
|
break;
|
|
61
55
|
case "ArrowLeft":
|
|
62
56
|
case "ArrowDown":
|
|
63
|
-
|
|
57
|
+
t = n - s;
|
|
64
58
|
break;
|
|
65
59
|
case "PageUp":
|
|
66
|
-
|
|
60
|
+
t = n + s * 10;
|
|
67
61
|
break;
|
|
68
62
|
case "PageDown":
|
|
69
|
-
|
|
63
|
+
t = n - s * 10;
|
|
70
64
|
break;
|
|
71
65
|
case "Home":
|
|
72
|
-
|
|
66
|
+
t = r;
|
|
73
67
|
break;
|
|
74
68
|
case "End":
|
|
75
|
-
|
|
69
|
+
t = a;
|
|
76
70
|
break;
|
|
77
71
|
default:
|
|
78
72
|
return;
|
|
79
73
|
}
|
|
80
|
-
|
|
74
|
+
e.preventDefault(), i(t);
|
|
81
75
|
},
|
|
82
|
-
[
|
|
83
|
-
);
|
|
84
|
-
return /* @__PURE__ */
|
|
76
|
+
[c, n, s, r, a, i]
|
|
77
|
+
), L = (n - r) / (a - r) * 100;
|
|
78
|
+
return /* @__PURE__ */ l(
|
|
85
79
|
"div",
|
|
86
80
|
{
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
className: I(
|
|
82
|
+
"nui-slider-root",
|
|
83
|
+
c && "nui-slider--disabled",
|
|
84
|
+
N
|
|
85
|
+
),
|
|
86
|
+
onMouseDown: p,
|
|
87
|
+
onTouchStart: p,
|
|
88
|
+
...V,
|
|
89
|
+
children: /* @__PURE__ */ l("div", { className: "nui-slider-track-container", children: /* @__PURE__ */ P("div", { ref: h, className: "nui-slider-track", children: [
|
|
90
|
+
/* @__PURE__ */ l(
|
|
94
91
|
"div",
|
|
95
92
|
{
|
|
96
|
-
className: "
|
|
93
|
+
className: "nui-slider-fill",
|
|
94
|
+
style: { width: `${L}%` }
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
/* @__PURE__ */ l(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
ref: m,
|
|
101
|
+
className: "nui-slider-thumb",
|
|
97
102
|
role: "slider",
|
|
98
|
-
tabIndex:
|
|
99
|
-
"aria-valuemin":
|
|
100
|
-
"aria-valuemax":
|
|
101
|
-
"aria-valuenow":
|
|
102
|
-
"aria-disabled":
|
|
103
|
-
onKeyDown:
|
|
104
|
-
|
|
105
|
-
onTouchStart: f,
|
|
106
|
-
style: { left: `${D}%` }
|
|
103
|
+
tabIndex: c ? -1 : 0,
|
|
104
|
+
"aria-valuemin": r,
|
|
105
|
+
"aria-valuemax": a,
|
|
106
|
+
"aria-valuenow": n,
|
|
107
|
+
"aria-disabled": c || void 0,
|
|
108
|
+
onKeyDown: y,
|
|
109
|
+
style: { left: `${L}%` }
|
|
107
110
|
}
|
|
108
111
|
)
|
|
109
|
-
]
|
|
112
|
+
] }) })
|
|
110
113
|
}
|
|
111
|
-
)
|
|
114
|
+
);
|
|
112
115
|
}
|
|
113
116
|
export {
|
|
114
|
-
|
|
117
|
+
B as Slider
|
|
115
118
|
};
|
|
116
119
|
//# sourceMappingURL=Slider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["/**\r\n * Slider.tsx\r\n * -----------\r\n * Fully accessible single-thumb slider.\r\n * WAI-ARIA compliant, supports pointer, touch, keyboard.\r\n */\r\n\r\nimport React, { useRef, useEffect, useState, useCallback } from 'react';\r\nimport './Slider.css';\r\n\r\ninterface SliderProps {\r\n min?: number;\r\n max?: number;\r\n step?: number;\r\n value?: number;\r\n defaultValue?: number;\r\n onChange?: (value: number) => void;\r\n disabled?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function Slider({\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n value,\r\n defaultValue,\r\n onChange,\r\n disabled = false,\r\n className = '',\r\n}: SliderProps) {\r\n const isControlled = value !== undefined;\r\n\r\n const [internalValue, setInternalValue] = useState(defaultValue ?? min);\r\n\r\n const val = isControlled ? value : internalValue;\r\n\r\n /** Safe setter */\r\n const setVal = useCallback(\r\n (v: number) => {\r\n const clamped = Math.min(max, Math.max(min, v));\r\n const stepped = Math.round(clamped / step) * step;\r\n\r\n if (!isControlled) setInternalValue(stepped);\r\n onChange?.(stepped);\r\n },\r\n [isControlled, max, min, step, onChange]\r\n );\r\n\r\n const trackRef = useRef<HTMLDivElement | null>(null);\r\n\r\n /** Calculate percentage for UI */\r\n const percent = ((val - min) / (max - min)) * 100;\r\n\r\n /** Pixel → value conversion (FIXED: wrapped in useCallback) */\r\n const pixelToValue = useCallback(\r\n (clientX: number) => {\r\n const track = trackRef.current;\r\n if (!track) return val;\r\n\r\n const rect = track.getBoundingClientRect();\r\n const x = clientX - rect.left;\r\n const ratio = x / rect.width;\r\n const rawValue = min + ratio * (max - min);\r\n return rawValue;\r\n },\r\n [min, max, val]\r\n );\r\n\r\n /** Dragging state */\r\n const [dragging, setDragging] = useState(false);\r\n\r\n const startDrag = useCallback(\r\n (e: React.MouseEvent | React.TouchEvent) => {\r\n if (disabled) return;\r\n setDragging(true);\r\n\r\n const clientX = 'touches' in e ? e.touches[0].clientX : e.clientX;\r\n\r\n setVal(pixelToValue(clientX));\r\n },\r\n [disabled, pixelToValue, setVal]\r\n );\r\n\r\n const onMove = useCallback(\r\n (e: MouseEvent | TouchEvent) => {\r\n if (!dragging || disabled) return;\r\n\r\n const clientX =\r\n (e as TouchEvent).touches?.[0]?.clientX ?? (e as MouseEvent).clientX;\r\n\r\n setVal(pixelToValue(clientX));\r\n },\r\n [dragging, disabled, pixelToValue, setVal]\r\n );\r\n\r\n const endDrag = useCallback(() => {\r\n setDragging(false);\r\n }, []);\r\n\r\n /** Global listeners while dragging */\r\n useEffect(() => {\r\n if (!dragging) return;\r\n\r\n window.addEventListener('mousemove', onMove);\r\n window.addEventListener('touchmove', onMove);\r\n window.addEventListener('mouseup', endDrag);\r\n window.addEventListener('touchend', endDrag);\r\n\r\n return () => {\r\n window.removeEventListener('mousemove', onMove);\r\n window.removeEventListener('touchmove', onMove);\r\n window.removeEventListener('mouseup', endDrag);\r\n window.removeEventListener('touchend', endDrag);\r\n };\r\n }, [dragging, onMove, endDrag]);\r\n\r\n /** Keyboard handling */\r\n const onKeyDown = useCallback(\r\n (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n\r\n let next = val;\r\n\r\n switch (e.key) {\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n next = val + step;\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n next = val - step;\r\n break;\r\n case 'PageUp':\r\n next = val + step * 10;\r\n break;\r\n case 'PageDown':\r\n next = val - step * 10;\r\n break;\r\n case 'Home':\r\n next = min;\r\n break;\r\n case 'End':\r\n next = max;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n setVal(next);\r\n },\r\n [disabled, val, step, min, max, setVal]\r\n );\r\n\r\n return (\r\n <div className={`ui-slider ${disabled ? 'disabled' : ''} ${className}`}>\r\n <div\r\n ref={trackRef}\r\n className=\"ui-slider-track\"\r\n onMouseDown={startDrag}\r\n onTouchStart={startDrag}\r\n >\r\n <div className=\"ui-slider-fill\" style={{ width: `${percent}%` }} />\r\n\r\n <div\r\n className=\"ui-slider-thumb\"\r\n role=\"slider\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-valuemin={min}\r\n aria-valuemax={max}\r\n aria-valuenow={val}\r\n aria-disabled={disabled || undefined}\r\n onKeyDown={onKeyDown}\r\n onMouseDown={startDrag}\r\n onTouchStart={startDrag}\r\n style={{ left: `${percent}%` }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["Slider","min","max","step","value","defaultValue","onChange","disabled","className","isControlled","internalValue","setInternalValue","useState","val","setVal","useCallback","v","clamped","stepped","trackRef","useRef","percent","pixelToValue","clientX","track","rect","ratio","dragging","setDragging","startDrag","e","onMove","endDrag","useEffect","onKeyDown","next","jsx","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Slider.js","sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useRef, useEffect, useState, useCallback } from 'react';\nimport { cn } from '../../utils';\nimport './Slider.css';\n\n/* ============================================================\n * Types\n * ============================================================ */\n\nexport interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** The minimum allowed value. Defaults to 0. */\n min?: number;\n /** The maximum allowed value. Defaults to 100. */\n max?: number;\n /** The interval between valid values. Defaults to 1. */\n step?: number;\n /** The controlled value of the slider. */\n value?: number;\n /** The initial uncontrolled value of the slider. */\n defaultValue?: number;\n /** Callback fired when the value changes. */\n onChange?: (value: number) => void;\n /** Disables the slider and prevents interaction. */\n disabled?: boolean;\n}\n\n/* ============================================================\n * Component\n * ============================================================ */\n\n/**\n * Slider Component\n * * A WAI-ARIA compliant input that allows users to select a value from a given range.\n * * Automatically handles global window pointer events for smooth dragging outside the hit area.\n */\nexport function Slider({\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n disabled = false,\n className,\n ...props // <-- Capture the rest of the HTML attributes (like style, id, etc.)\n}: SliderProps) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? min);\n \n // Safely clamp the initial/current value to prevent out-of-bounds rendering\n const rawVal = isControlled ? value : internalValue;\n const val = Math.min(max, Math.max(min, rawVal as number));\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n const thumbRef = useRef<HTMLDivElement | null>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n /* ----------------------------------------------------\n Value Management\n ---------------------------------------------------- */\n const setVal = useCallback(\n (v: number) => {\n const clamped = Math.min(max, Math.max(min, v));\n // Ensures the stepped value correctly aligns with the minimum bound\n let stepped = min + Math.round((clamped - min) / step) * step;\n \n // Fixes JavaScript floating point math errors (e.g., 0.3000000000004)\n stepped = Number(stepped.toFixed(5));\n\n if (!isControlled) setInternalValue(stepped);\n onChange?.(stepped);\n },\n [isControlled, max, min, step, onChange]\n );\n\n const calculateValueFromPointer = useCallback(\n (clientX: number) => {\n const track = trackRef.current;\n if (!track) return val;\n\n const rect = track.getBoundingClientRect();\n const x = Math.max(0, Math.min(clientX - rect.left, rect.width));\n const ratio = x / rect.width;\n \n return min + ratio * (max - min);\n },\n [min, max, val]\n );\n\n /* ----------------------------------------------------\n Drag State Management\n ---------------------------------------------------- */\n const getClientX = (e: MouseEvent | TouchEvent | React.MouseEvent | React.TouchEvent) => {\n return 'touches' in e ? e.touches[0].clientX : (e as MouseEvent | React.MouseEvent).clientX;\n };\n\n const handlePointerDown = (e: React.MouseEvent | React.TouchEvent) => {\n if (disabled) return;\n \n // Instantly focus the thumb so Arrow Keys work immediately!\n thumbRef.current?.focus(); \n \n setIsDragging(true);\n setVal(calculateValueFromPointer(getClientX(e)));\n };\n\n // Syncs global drag listeners without memory leaks\n useEffect(() => {\n if (!isDragging || disabled) return;\n\n const handleMove = (e: MouseEvent | TouchEvent) => {\n setVal(calculateValueFromPointer(getClientX(e)));\n };\n\n const handleUp = () => {\n setIsDragging(false);\n };\n\n window.addEventListener('mousemove', handleMove);\n window.addEventListener('touchmove', handleMove, { passive: false });\n window.addEventListener('mouseup', handleUp);\n window.addEventListener('touchend', handleUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMove);\n window.removeEventListener('touchmove', handleMove);\n window.removeEventListener('mouseup', handleUp);\n window.removeEventListener('touchend', handleUp);\n };\n }, [isDragging, disabled, calculateValueFromPointer, setVal]);\n\n /* ----------------------------------------------------\n Keyboard Navigation (WAI-ARIA)\n ---------------------------------------------------- */\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n let next = val;\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = val + step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n next = val - step;\n break;\n case 'PageUp':\n next = val + step * 10;\n break;\n case 'PageDown':\n next = val - step * 10;\n break;\n case 'Home':\n next = min;\n break;\n case 'End':\n next = max;\n break;\n default:\n return; // Exit if it's not a recognized key\n }\n\n e.preventDefault(); // Prevent page scrolling ONLY when using valid arrow keys\n setVal(next);\n },\n [disabled, val, step, min, max, setVal]\n );\n\n /* ----------------------------------------------------\n Render\n ---------------------------------------------------- */\n const percent = ((val - min) / (max - min)) * 100;\n\n return (\n <div \n className={cn(\n \"nui-slider-root\", \n disabled && \"nui-slider--disabled\",\n className\n )}\n onMouseDown={handlePointerDown}\n onTouchStart={handlePointerDown}\n {...props} // <-- Spread the rest of the props (including style) to the root element\n >\n <div className=\"nui-slider-track-container\">\n <div ref={trackRef} className=\"nui-slider-track\">\n \n <div \n className=\"nui-slider-fill\" \n style={{ width: `${percent}%` }} \n />\n\n <div\n ref={thumbRef}\n className=\"nui-slider-thumb\"\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n aria-disabled={disabled || undefined}\n onKeyDown={onKeyDown}\n style={{ left: `${percent}%` }}\n />\n </div>\n </div>\n </div>\n );\n}"],"names":["Slider","min","max","step","value","defaultValue","onChange","disabled","className","props","isControlled","internalValue","setInternalValue","useState","val","trackRef","useRef","thumbRef","isDragging","setIsDragging","setVal","useCallback","v","clamped","stepped","calculateValueFromPointer","clientX","track","rect","ratio","getClientX","handlePointerDown","useEffect","handleMove","e","handleUp","onKeyDown","next","percent","jsx","cn"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");;/* empty css */
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react");;/* empty css */const o=require("../../utils/cn/cn.cjs"),r=l.forwardRef(({size:s="md",variant:i="primary",className:a,label:n="Loading...",...c},t)=>e.jsxs("div",{ref:t,role:"status","aria-label":n,className:o.cn("nui-spinner",`nui-spinner--${s}`,`nui-spinner--${i}`,a),...c,children:[e.jsxs("svg",{className:"nui-spinner__svg",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","aria-hidden":"true",children:[e.jsx("circle",{className:"nui-spinner__track",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"3"}),e.jsx("path",{className:"nui-spinner__head",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),e.jsx("span",{className:"nui-spinner__sr-only",children:n})]}));r.displayName="Spinner";exports.Spinner=r;
|
|
2
2
|
//# sourceMappingURL=Spinner.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.cjs","sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Spinner.cjs","sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Spinner.css';\n\n/* ============================================================\n * Types\n * ============================================================ */\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The predefined size of the spinner. Defaults to 'md'. */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** The color theme variant. Defaults to 'primary'. */\n variant?: 'primary' | 'muted' | 'inverse';\n /** WAI-ARIA label read by screen readers. Defaults to 'Loading...'. */\n label?: string;\n}\n\n/* ============================================================\n * Component\n * ============================================================ */\n\n/**\n * Spinner Component\n * * A visual indicator for loading states.\n * * WAI-ARIA compliant: Uses role=\"status\" to announce the loading state politely\n * to screen readers without immediately interrupting the user.\n */\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(({\n size = 'md',\n variant = 'primary',\n className,\n label = 'Loading...',\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={cn(\n \"nui-spinner\",\n `nui-spinner--${size}`,\n `nui-spinner--${variant}`,\n className\n )}\n {...props}\n >\n <svg\n className=\"nui-spinner__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\" /* Hide SVG itself, relying on the aria-label and hidden text */\n >\n {/* The faint background track */}\n <circle\n className=\"nui-spinner__track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n {/* The solid moving head */}\n <path\n className=\"nui-spinner__head\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n \n {/* Visually hidden text fallback for older screen readers */}\n <span className=\"nui-spinner__sr-only\">{label}</span>\n </div>\n );\n});\n\nSpinner.displayName = 'Spinner';"],"names":["Spinner","forwardRef","size","variant","className","label","props","ref","jsxs","cn","jsx"],"mappings":"8MA2BaA,EAAUC,EAAAA,WAAyC,CAAC,CAC/D,KAAAC,EAAO,KACP,QAAAC,EAAU,UACV,UAAAC,EACA,MAAAC,EAAQ,aACR,GAAGC,CACL,EAAGC,IAECC,EAAAA,KAAC,MAAA,CACC,IAAAD,EACA,KAAK,SACL,aAAYF,EACZ,UAAWI,EAAAA,GACT,cACA,gBAAgBP,CAAI,GACpB,gBAAgBC,CAAO,GACvBC,CAAA,EAED,GAAGE,EAEJ,SAAA,CAAAE,EAAAA,KAAC,MAAA,CACC,UAAU,mBACV,MAAM,6BACN,KAAK,OACL,QAAQ,YACR,cAAY,OAGZ,SAAA,CAAAE,EAAAA,IAAC,SAAA,CACC,UAAU,qBACV,GAAG,KACH,GAAG,KACH,EAAE,KACF,OAAO,eACP,YAAY,GAAA,CAAA,EAGdA,EAAAA,IAAC,OAAA,CACC,UAAU,oBACV,KAAK,eACL,EAAE,iHAAA,CAAA,CACJ,CAAA,CAAA,EAIFA,EAAAA,IAAC,OAAA,CAAK,UAAU,uBAAwB,SAAAL,CAAA,CAAM,CAAA,CAAA,CAAA,CAGnD,EAEDL,EAAQ,YAAc"}
|
|
@@ -1,21 +1,64 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as i, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as p } from "react";
|
|
2
3
|
/* empty css */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
4
|
+
import { cn as t } from "../../utils/cn/cn.js";
|
|
5
|
+
const c = p(({
|
|
6
|
+
size: e = "md",
|
|
7
|
+
variant: s = "primary",
|
|
8
|
+
className: a,
|
|
9
|
+
label: n = "Loading...",
|
|
10
|
+
...o
|
|
11
|
+
}, l) => /* @__PURE__ */ i(
|
|
12
|
+
"div",
|
|
13
|
+
{
|
|
14
|
+
ref: l,
|
|
15
|
+
role: "status",
|
|
16
|
+
"aria-label": n,
|
|
17
|
+
className: t(
|
|
18
|
+
"nui-spinner",
|
|
19
|
+
`nui-spinner--${e}`,
|
|
20
|
+
`nui-spinner--${s}`,
|
|
21
|
+
a
|
|
22
|
+
),
|
|
23
|
+
...o,
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ i(
|
|
26
|
+
"svg",
|
|
27
|
+
{
|
|
28
|
+
className: "nui-spinner__svg",
|
|
29
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
30
|
+
fill: "none",
|
|
31
|
+
viewBox: "0 0 24 24",
|
|
32
|
+
"aria-hidden": "true",
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ r(
|
|
35
|
+
"circle",
|
|
36
|
+
{
|
|
37
|
+
className: "nui-spinner__track",
|
|
38
|
+
cx: "12",
|
|
39
|
+
cy: "12",
|
|
40
|
+
r: "10",
|
|
41
|
+
stroke: "currentColor",
|
|
42
|
+
strokeWidth: "3"
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
/* @__PURE__ */ r(
|
|
46
|
+
"path",
|
|
47
|
+
{
|
|
48
|
+
className: "nui-spinner__head",
|
|
49
|
+
fill: "currentColor",
|
|
50
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
/* @__PURE__ */ r("span", { className: "nui-spinner__sr-only", children: n })
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
));
|
|
60
|
+
c.displayName = "Spinner";
|
|
18
61
|
export {
|
|
19
|
-
|
|
62
|
+
c as Spinner
|
|
20
63
|
};
|
|
21
64
|
//# sourceMappingURL=Spinner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Spinner.css';\n\n/* ============================================================\n * Types\n * ============================================================ */\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The predefined size of the spinner. Defaults to 'md'. */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** The color theme variant. Defaults to 'primary'. */\n variant?: 'primary' | 'muted' | 'inverse';\n /** WAI-ARIA label read by screen readers. Defaults to 'Loading...'. */\n label?: string;\n}\n\n/* ============================================================\n * Component\n * ============================================================ */\n\n/**\n * Spinner Component\n * * A visual indicator for loading states.\n * * WAI-ARIA compliant: Uses role=\"status\" to announce the loading state politely\n * to screen readers without immediately interrupting the user.\n */\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(({\n size = 'md',\n variant = 'primary',\n className,\n label = 'Loading...',\n ...props\n}, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={cn(\n \"nui-spinner\",\n `nui-spinner--${size}`,\n `nui-spinner--${variant}`,\n className\n )}\n {...props}\n >\n <svg\n className=\"nui-spinner__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\" /* Hide SVG itself, relying on the aria-label and hidden text */\n >\n {/* The faint background track */}\n <circle\n className=\"nui-spinner__track\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n />\n {/* The solid moving head */}\n <path\n className=\"nui-spinner__head\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n \n {/* Visually hidden text fallback for older screen readers */}\n <span className=\"nui-spinner__sr-only\">{label}</span>\n </div>\n );\n});\n\nSpinner.displayName = 'Spinner';"],"names":["Spinner","forwardRef","size","variant","className","label","props","ref","jsxs","cn","jsx"],"mappings":";;;;AA2BO,MAAMA,IAAUC,EAAyC,CAAC;AAAA,EAC/D,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,GAAGC;AACL,GAAGC,MAEC,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,MAAK;AAAA,IACL,cAAYF;AAAA,IACZ,WAAWI;AAAA,MACT;AAAA,MACA,gBAAgBP,CAAI;AAAA,MACpB,gBAAgBC,CAAO;AAAA,MACvBC;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAM;AAAA,UACN,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,eAAY;AAAA,UAGZ,UAAA;AAAA,YAAA,gBAAAE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,IAAG;AAAA,gBACH,IAAG;AAAA,gBACH,GAAE;AAAA,gBACF,QAAO;AAAA,gBACP,aAAY;AAAA,cAAA;AAAA,YAAA;AAAA,YAGd,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,GAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAIF,gBAAAA,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAL,EAAA,CAAM;AAAA,IAAA;AAAA,EAAA;AAAA,CAGnD;AAEDL,EAAQ,cAAc;"}
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");;/* empty css */
|
|
2
|
-
ui-stepper-item
|
|
3
|
-
${i?"active":""}
|
|
4
|
-
${a?"completed":""}
|
|
5
|
-
`,children:[e.jsxs("button",{className:"ui-stepper-button","aria-current":i?"step":void 0,onClick:()=>c?.(s),children:[e.jsx("div",{className:"ui-stepper-circle",children:a?"✓":s+1}),e.jsx("span",{className:"ui-stepper-label",children:n(t)})]}),s!==r.length-1&&e.jsx("div",{className:"ui-stepper-line"})]},s)})})})}exports.Stepper=u;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("react");;/* empty css */const c=require("../../utils/cn/cn.cjs"),o=b.forwardRef(({steps:u,active:i,onChange:n,className:d,disableFuture:h=!1,...m},j)=>{const _=t=>typeof t=="string"?{label:t}:t;return e.jsx("nav",{ref:j,className:c.cn("nui-stepper-root",d),"aria-label":"Progress Steps",...m,children:e.jsx("ol",{className:"nui-stepper__list",children:u.map((t,s)=>{const r=_(t),l=s===i,a=s<i,p=h&&s>i;return e.jsx("li",{className:c.cn("nui-stepper__item",l&&"active",a&&"completed"),children:e.jsxs("button",{type:"button",className:"nui-stepper__button","aria-current":l?"step":void 0,disabled:p,onClick:()=>{!p&&n&&n(s)},children:[e.jsx("div",{className:"nui-stepper__circle",children:a?e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("polyline",{points:"20 6 9 17 4 12"})}):e.jsx("span",{"aria-hidden":"true",children:s+1})}),e.jsxs("div",{className:"nui-stepper__content",children:[e.jsxs("span",{className:"nui-stepper__label",children:[e.jsxs("span",{className:"sr-only",children:["Step ",s+1,": "]}),r.label,r.optional&&e.jsx("span",{className:"nui-stepper__optional",children:"(Optional)"})]}),r.description&&e.jsx("span",{className:"nui-stepper__description",children:r.description})]})]})},s)})})})});o.displayName="Stepper";exports.Stepper=o;
|
|
6
2
|
//# sourceMappingURL=Stepper.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.cjs","sources":["../../../src/components/stepper/Stepper.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Stepper.cjs","sources":["../../../src/components/stepper/Stepper.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Stepper.css';\n\n/* ============================================================\n * Types\n * ============================================================ */\n\nexport interface StepItem {\n /** The primary title of the step */\n label: React.ReactNode;\n /** Secondary descriptive text displayed below the label */\n description?: React.ReactNode;\n /** Marks the step with an \"(Optional)\" tag */\n optional?: boolean;\n}\n\nexport interface StepperProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {\n /** Array of steps. Can be simple strings or rich objects. */\n steps: (string | StepItem)[];\n /** The 0-based index of the currently active step. */\n active: number;\n /** Callback fired when a step is clicked. */\n onChange?: (index: number) => void;\n /** Prevents the user from clicking on steps that come after the currently active one. */\n disableFuture?: boolean; \n}\n\n/* ============================================================\n * Component\n * ============================================================ */\n\n/**\n * Stepper Component\n * * A visual indicator for multi-step workflows.\n * * Uses standard `<nav>` and `<ol>` HTML elements for strict WAI-ARIA compliance.\n */\nexport const Stepper = forwardRef<HTMLElement, StepperProps>(({\n steps,\n active,\n onChange,\n className,\n disableFuture = false,\n ...props\n}, ref) => {\n \n // Helper to normalize string arrays into StepItem objects\n const getStepData = (s: string | StepItem): StepItem => {\n if (typeof s === 'string') return { label: s };\n return s;\n };\n\n return (\n <nav \n ref={ref}\n className={cn(\"nui-stepper-root\", className)} \n aria-label=\"Progress Steps\"\n {...props}\n >\n <ol className=\"nui-stepper__list\">\n {steps.map((rawStep, index) => {\n const step = getStepData(rawStep);\n const isActive = index === active;\n const isCompleted = index < active;\n const isDisabled = disableFuture && index > active;\n\n return (\n <li\n key={index}\n className={cn(\n \"nui-stepper__item\",\n isActive && \"active\",\n isCompleted && \"completed\"\n )}\n >\n <button\n type=\"button\"\n className=\"nui-stepper__button\"\n aria-current={isActive ? 'step' : undefined}\n disabled={isDisabled}\n onClick={() => {\n if (!isDisabled && onChange) onChange(index);\n }}\n >\n {/* Circle Indicator */}\n <div className=\"nui-stepper__circle\">\n {isCompleted ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n ) : (\n <span aria-hidden=\"true\">{index + 1}</span>\n )}\n </div>\n\n {/* Text Content */}\n <div className=\"nui-stepper__content\">\n <span className=\"nui-stepper__label\">\n {/* Invisible text for screen readers so they announce \"Step 1: Shipping\" */}\n <span className=\"sr-only\">Step {index + 1}: </span>\n {step.label}\n {step.optional && (\n <span className=\"nui-stepper__optional\">(Optional)</span>\n )}\n </span>\n {step.description && (\n <span className=\"nui-stepper__description\">\n {step.description}\n </span>\n )}\n </div>\n </button>\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n\nStepper.displayName = 'Stepper';"],"names":["Stepper","forwardRef","steps","active","onChange","className","disableFuture","props","ref","getStepData","s","jsx","cn","rawStep","index","step","isActive","isCompleted","isDisabled","jsxs"],"mappings":"8MAqCaA,EAAUC,EAAAA,WAAsC,CAAC,CAC5D,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAAC,EACA,cAAAC,EAAgB,GAChB,GAAGC,CACL,EAAGC,IAAQ,CAGT,MAAMC,EAAeC,GACf,OAAOA,GAAM,SAAiB,CAAE,MAAOA,CAAA,EACpCA,EAGT,OACEC,EAAAA,IAAC,MAAA,CACC,IAAAH,EACA,UAAWI,EAAAA,GAAG,mBAAoBP,CAAS,EAC3C,aAAW,iBACV,GAAGE,EAEJ,SAAAI,EAAAA,IAAC,MAAG,UAAU,oBACX,WAAM,IAAI,CAACE,EAASC,IAAU,CAC7B,MAAMC,EAAON,EAAYI,CAAO,EAC1BG,EAAWF,IAAUX,EACrBc,EAAcH,EAAQX,EACtBe,EAAaZ,GAAiBQ,EAAQX,EAE5C,OACEQ,EAAAA,IAAC,KAAA,CAEC,UAAWC,EAAAA,GACT,oBACAI,GAAY,SACZC,GAAe,WAAA,EAGjB,SAAAE,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAU,sBACV,eAAcH,EAAW,OAAS,OAClC,SAAUE,EACV,QAAS,IAAM,CACT,CAACA,GAAcd,GAAUA,EAASU,CAAK,CAC7C,EAGA,SAAA,CAAAH,MAAC,OAAI,UAAU,sBACZ,SAAAM,EACCN,EAAAA,IAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,QAAQ,cAAY,OACzJ,SAAAA,MAAC,YAAS,OAAO,gBAAA,CAAiB,CAAA,CACpC,QAEC,OAAA,CAAK,cAAY,OAAQ,SAAAG,EAAQ,EAAE,EAExC,EAGAK,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACb,SAAA,CAAAA,EAAAA,KAAC,OAAA,CAAK,UAAU,qBAEd,SAAA,CAAAA,EAAAA,KAAC,OAAA,CAAK,UAAU,UAAU,SAAA,CAAA,QAAML,EAAQ,EAAE,IAAA,EAAE,EAC3CC,EAAK,MACLA,EAAK,UACJJ,EAAAA,IAAC,OAAA,CAAK,UAAU,wBAAwB,SAAA,YAAA,CAAU,CAAA,EAEtD,EACCI,EAAK,aACJJ,EAAAA,IAAC,QAAK,UAAU,2BACb,WAAK,WAAA,CACR,CAAA,CAAA,CAEJ,CAAA,CAAA,CAAA,CACF,EA3CKG,CAAA,CA8CX,CAAC,CAAA,CACH,CAAA,CAAA,CAGN,CAAC,EAEDd,EAAQ,YAAc"}
|
|
@@ -1,43 +1,69 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as f } from "react";
|
|
2
3
|
/* empty css */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
4
|
+
import { cn as c } from "../../utils/cn/cn.js";
|
|
5
|
+
const b = f(({
|
|
6
|
+
steps: d,
|
|
7
|
+
active: n,
|
|
8
|
+
onChange: p,
|
|
9
|
+
className: m,
|
|
10
|
+
disableFuture: u = !1,
|
|
11
|
+
...h
|
|
12
|
+
}, _) => {
|
|
13
|
+
const N = (t) => typeof t == "string" ? { label: t } : t;
|
|
14
|
+
return /* @__PURE__ */ e(
|
|
15
|
+
"nav",
|
|
16
|
+
{
|
|
17
|
+
ref: _,
|
|
18
|
+
className: c("nui-stepper-root", m),
|
|
19
|
+
"aria-label": "Progress Steps",
|
|
20
|
+
...h,
|
|
21
|
+
children: /* @__PURE__ */ e("ol", { className: "nui-stepper__list", children: d.map((t, r) => {
|
|
22
|
+
const s = N(t), l = r === n, a = r < n, o = u && r > n;
|
|
23
|
+
return /* @__PURE__ */ e(
|
|
24
|
+
"li",
|
|
25
|
+
{
|
|
26
|
+
className: c(
|
|
27
|
+
"nui-stepper__item",
|
|
28
|
+
l && "active",
|
|
29
|
+
a && "completed"
|
|
30
|
+
),
|
|
31
|
+
children: /* @__PURE__ */ i(
|
|
32
|
+
"button",
|
|
33
|
+
{
|
|
34
|
+
type: "button",
|
|
35
|
+
className: "nui-stepper__button",
|
|
36
|
+
"aria-current": l ? "step" : void 0,
|
|
37
|
+
disabled: o,
|
|
38
|
+
onClick: () => {
|
|
39
|
+
!o && p && p(r);
|
|
40
|
+
},
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ e("div", { className: "nui-stepper__circle", children: a ? /* @__PURE__ */ e("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" }) }) : /* @__PURE__ */ e("span", { "aria-hidden": "true", children: r + 1 }) }),
|
|
43
|
+
/* @__PURE__ */ i("div", { className: "nui-stepper__content", children: [
|
|
44
|
+
/* @__PURE__ */ i("span", { className: "nui-stepper__label", children: [
|
|
45
|
+
/* @__PURE__ */ i("span", { className: "sr-only", children: [
|
|
46
|
+
"Step ",
|
|
47
|
+
r + 1,
|
|
48
|
+
": "
|
|
49
|
+
] }),
|
|
50
|
+
s.label,
|
|
51
|
+
s.optional && /* @__PURE__ */ e("span", { className: "nui-stepper__optional", children: "(Optional)" })
|
|
52
|
+
] }),
|
|
53
|
+
s.description && /* @__PURE__ */ e("span", { className: "nui-stepper__description", children: s.description })
|
|
54
|
+
] })
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
},
|
|
59
|
+
r
|
|
60
|
+
);
|
|
61
|
+
}) })
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
});
|
|
65
|
+
b.displayName = "Stepper";
|
|
40
66
|
export {
|
|
41
|
-
|
|
67
|
+
b as Stepper
|
|
42
68
|
};
|
|
43
69
|
//# sourceMappingURL=Stepper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.js","sources":["../../../src/components/stepper/Stepper.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Stepper.js","sources":["../../../src/components/stepper/Stepper.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport './Stepper.css';\n\n/* ============================================================\n * Types\n * ============================================================ */\n\nexport interface StepItem {\n /** The primary title of the step */\n label: React.ReactNode;\n /** Secondary descriptive text displayed below the label */\n description?: React.ReactNode;\n /** Marks the step with an \"(Optional)\" tag */\n optional?: boolean;\n}\n\nexport interface StepperProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {\n /** Array of steps. Can be simple strings or rich objects. */\n steps: (string | StepItem)[];\n /** The 0-based index of the currently active step. */\n active: number;\n /** Callback fired when a step is clicked. */\n onChange?: (index: number) => void;\n /** Prevents the user from clicking on steps that come after the currently active one. */\n disableFuture?: boolean; \n}\n\n/* ============================================================\n * Component\n * ============================================================ */\n\n/**\n * Stepper Component\n * * A visual indicator for multi-step workflows.\n * * Uses standard `<nav>` and `<ol>` HTML elements for strict WAI-ARIA compliance.\n */\nexport const Stepper = forwardRef<HTMLElement, StepperProps>(({\n steps,\n active,\n onChange,\n className,\n disableFuture = false,\n ...props\n}, ref) => {\n \n // Helper to normalize string arrays into StepItem objects\n const getStepData = (s: string | StepItem): StepItem => {\n if (typeof s === 'string') return { label: s };\n return s;\n };\n\n return (\n <nav \n ref={ref}\n className={cn(\"nui-stepper-root\", className)} \n aria-label=\"Progress Steps\"\n {...props}\n >\n <ol className=\"nui-stepper__list\">\n {steps.map((rawStep, index) => {\n const step = getStepData(rawStep);\n const isActive = index === active;\n const isCompleted = index < active;\n const isDisabled = disableFuture && index > active;\n\n return (\n <li\n key={index}\n className={cn(\n \"nui-stepper__item\",\n isActive && \"active\",\n isCompleted && \"completed\"\n )}\n >\n <button\n type=\"button\"\n className=\"nui-stepper__button\"\n aria-current={isActive ? 'step' : undefined}\n disabled={isDisabled}\n onClick={() => {\n if (!isDisabled && onChange) onChange(index);\n }}\n >\n {/* Circle Indicator */}\n <div className=\"nui-stepper__circle\">\n {isCompleted ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n ) : (\n <span aria-hidden=\"true\">{index + 1}</span>\n )}\n </div>\n\n {/* Text Content */}\n <div className=\"nui-stepper__content\">\n <span className=\"nui-stepper__label\">\n {/* Invisible text for screen readers so they announce \"Step 1: Shipping\" */}\n <span className=\"sr-only\">Step {index + 1}: </span>\n {step.label}\n {step.optional && (\n <span className=\"nui-stepper__optional\">(Optional)</span>\n )}\n </span>\n {step.description && (\n <span className=\"nui-stepper__description\">\n {step.description}\n </span>\n )}\n </div>\n </button>\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n\nStepper.displayName = 'Stepper';"],"names":["Stepper","forwardRef","steps","active","onChange","className","disableFuture","props","ref","getStepData","s","jsx","cn","rawStep","index","step","isActive","isCompleted","isDisabled","jsxs"],"mappings":";;;;AAqCO,MAAMA,IAAUC,EAAsC,CAAC;AAAA,EAC5D,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,GAAGC;AACL,GAAGC,MAAQ;AAGT,QAAMC,IAAc,CAACC,MACf,OAAOA,KAAM,WAAiB,EAAE,OAAOA,EAAA,IACpCA;AAGT,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAH;AAAA,MACA,WAAWI,EAAG,oBAAoBP,CAAS;AAAA,MAC3C,cAAW;AAAA,MACV,GAAGE;AAAA,MAEJ,UAAA,gBAAAI,EAAC,QAAG,WAAU,qBACX,YAAM,IAAI,CAACE,GAASC,MAAU;AAC7B,cAAMC,IAAON,EAAYI,CAAO,GAC1BG,IAAWF,MAAUX,GACrBc,IAAcH,IAAQX,GACtBe,IAAaZ,KAAiBQ,IAAQX;AAE5C,eACE,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWC;AAAA,cACT;AAAA,cACAI,KAAY;AAAA,cACZC,KAAe;AAAA,YAAA;AAAA,YAGjB,UAAA,gBAAAE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,gBAAcH,IAAW,SAAS;AAAA,gBAClC,UAAUE;AAAA,gBACV,SAAS,MAAM;AACb,kBAAI,CAACA,KAAcd,KAAUA,EAASU,CAAK;AAAA,gBAC7C;AAAA,gBAGA,UAAA;AAAA,kBAAA,gBAAAH,EAAC,SAAI,WAAU,uBACZ,UAAAM,IACC,gBAAAN,EAAC,SAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,gBAAe,SAAQ,eAAY,QACzJ,UAAA,gBAAAA,EAAC,cAAS,QAAO,iBAAA,CAAiB,EAAA,CACpC,sBAEC,QAAA,EAAK,eAAY,QAAQ,UAAAG,IAAQ,GAAE,GAExC;AAAA,kBAGA,gBAAAK,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,oBAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,sBAEd,UAAA;AAAA,sBAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA;AAAA,wBAAA;AAAA,wBAAML,IAAQ;AAAA,wBAAE;AAAA,sBAAA,GAAE;AAAA,sBAC3CC,EAAK;AAAA,sBACLA,EAAK,YACJ,gBAAAJ,EAAC,QAAA,EAAK,WAAU,yBAAwB,UAAA,aAAA,CAAU;AAAA,oBAAA,GAEtD;AAAA,oBACCI,EAAK,eACJ,gBAAAJ,EAAC,UAAK,WAAU,4BACb,YAAK,YAAA,CACR;AAAA,kBAAA,EAAA,CAEJ;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UA3CKG;AAAA,QAAA;AAAA,MA8CX,CAAC,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AAEDd,EAAQ,cAAc;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),o=require("react");;/* empty css */const u=require("../../utils/cn/cn.cjs"),y=o.forwardRef(({checked:h,defaultChecked:_,onChange:k,disabled:c=!1,label:r,description:i,id:p,name:d,value:x,size:l="md",className:j,wrapperClassName:v,...w},b)=>{const C=o.useId(),s=p??`nui-switch-${C}`,m=`${s}-description`,f=h!==void 0,[N,S]=o.useState(_??!1),n=f?h:N,a=()=>{if(c)return;const e=!n;f||S(e),k?.(e)},I=e=>{(e.key===" "||e.key==="Enter")&&(e.preventDefault(),a()),w.onKeyDown?.(e)},g=e=>{c||(e.preventDefault(),a(),document.getElementById(s)?.focus())},D=x??(n?"on":"off");return t.jsxs("div",{className:u.cn("nui-switch-wrapper",c&&"nui-switch-wrapper--disabled",v),children:[d&&t.jsx("input",{type:"hidden",name:d,value:n?D:""}),t.jsx("button",{ref:b,id:s,type:"button",role:"switch","aria-checked":n,"aria-disabled":c,"aria-describedby":i?m:void 0,className:u.cn("nui-switch",`nui-switch--${l}`,n&&"nui-switch--checked",j),onClick:a,onKeyDown:I,disabled:c,...w,children:t.jsx("span",{className:u.cn("nui-switch__thumb",`nui-switch__thumb--${l}`,n&&"nui-switch__thumb--checked"),"aria-hidden":"true"})}),(r||i)&&t.jsxs("div",{className:"nui-switch__text-container",children:[r&&t.jsx("label",{htmlFor:s,className:"nui-switch__label",onClick:g,children:r}),i&&t.jsx("div",{id:m,className:"nui-switch__description",children:i})]})]})});y.displayName="Switch";exports.Switch=y;
|
|
2
2
|
//# sourceMappingURL=Switch.cjs.map
|