@shadow-library/ui 0.1.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -23
- package/components/Accordion/Accordion.context.d.ts +7 -0
- package/components/Accordion/Accordion.context.js +6 -0
- package/components/Accordion/Accordion.context.js.map +1 -0
- package/components/Accordion/Accordion.d.ts +12 -0
- package/components/Accordion/Accordion.js +34 -0
- package/components/Accordion/Accordion.js.map +1 -0
- package/components/Accordion/Accordion.module.css.js +4 -0
- package/components/Accordion/Accordion.module.css.js.map +1 -0
- package/components/Accordion/Accordion.types.d.ts +39 -0
- package/components/Accordion/index.d.ts +2 -0
- package/components/Alert/Alert.d.ts +8 -0
- package/components/Alert/Alert.js +26 -0
- package/components/Alert/Alert.js.map +1 -0
- package/components/Alert/Alert.module.css.js +4 -0
- package/components/Alert/Alert.module.css.js.map +1 -0
- package/components/Alert/Alert.types.d.ts +22 -0
- package/components/Alert/index.d.ts +2 -0
- package/components/Avatar/Avatar.context.d.ts +9 -0
- package/components/Avatar/Avatar.context.js +6 -0
- package/components/Avatar/Avatar.context.js.map +1 -0
- package/components/Avatar/Avatar.d.ts +13 -0
- package/components/Avatar/Avatar.js +66 -0
- package/components/Avatar/Avatar.js.map +1 -0
- package/components/Avatar/Avatar.module.css.js +4 -0
- package/components/Avatar/Avatar.module.css.js.map +1 -0
- package/components/Avatar/Avatar.types.d.ts +32 -0
- package/components/Avatar/index.d.ts +2 -0
- package/components/Badge/Badge.d.ts +8 -0
- package/components/Badge/Badge.js +23 -0
- package/components/Badge/Badge.js.map +1 -0
- package/components/Badge/Badge.module.css.js +4 -0
- package/components/Badge/Badge.module.css.js.map +1 -0
- package/components/Badge/Badge.types.d.ts +25 -0
- package/components/Badge/index.d.ts +2 -0
- package/components/Banner/Banner.d.ts +8 -0
- package/components/Banner/Banner.js +74 -0
- package/components/Banner/Banner.js.map +1 -0
- package/components/Banner/Banner.module.css.js +4 -0
- package/components/Banner/Banner.module.css.js.map +1 -0
- package/components/Banner/Banner.provider.d.ts +20 -0
- package/components/Banner/Banner.provider.js +34 -0
- package/components/Banner/Banner.provider.js.map +1 -0
- package/components/Banner/Banner.store.d.ts +18 -0
- package/components/Banner/Banner.store.js +62 -0
- package/components/Banner/Banner.store.js.map +1 -0
- package/components/Banner/Banner.types.d.ts +42 -0
- package/components/Banner/index.d.ts +4 -0
- package/components/BottomSheet/BottomSheet.d.ts +8 -0
- package/components/BottomSheet/BottomSheet.js +127 -0
- package/components/BottomSheet/BottomSheet.js.map +1 -0
- package/components/BottomSheet/BottomSheet.module.css.js +4 -0
- package/components/BottomSheet/BottomSheet.module.css.js.map +1 -0
- package/components/BottomSheet/BottomSheet.types.d.ts +34 -0
- package/components/BottomSheet/index.d.ts +2 -0
- package/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
- package/components/Breadcrumbs/Breadcrumbs.js +39 -0
- package/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/components/Breadcrumbs/Breadcrumbs.module.css.js +4 -0
- package/components/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -0
- package/components/Breadcrumbs/Breadcrumbs.types.d.ts +17 -0
- package/components/Breadcrumbs/index.d.ts +2 -0
- package/components/Button/Button.d.ts +12 -0
- package/components/Button/Button.js +52 -0
- package/components/Button/Button.js.map +1 -0
- package/components/Button/Button.module.css.js +4 -0
- package/components/Button/Button.module.css.js.map +1 -0
- package/components/Button/Button.types.d.ts +34 -0
- package/components/Button/index.d.ts +2 -0
- package/components/ButtonGroup/ButtonGroup.context.d.ts +23 -0
- package/components/ButtonGroup/ButtonGroup.context.js +9 -0
- package/components/ButtonGroup/ButtonGroup.context.js.map +1 -0
- package/components/ButtonGroup/ButtonGroup.d.ts +7 -0
- package/components/ButtonGroup/ButtonGroup.js +92 -0
- package/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/components/ButtonGroup/ButtonGroup.module.css.js +4 -0
- package/components/ButtonGroup/ButtonGroup.module.css.js.map +1 -0
- package/components/ButtonGroup/ButtonGroup.types.d.ts +28 -0
- package/components/ButtonGroup/index.d.ts +3 -0
- package/components/Calendar/Calendar.d.ts +8 -0
- package/components/Calendar/Calendar.js +197 -0
- package/components/Calendar/Calendar.js.map +1 -0
- package/components/Calendar/Calendar.module.css.js +4 -0
- package/components/Calendar/Calendar.module.css.js.map +1 -0
- package/components/Calendar/Calendar.types.d.ts +32 -0
- package/components/Calendar/index.d.ts +2 -0
- package/components/Card/Card.d.ts +6 -0
- package/components/Card/Card.js +36 -0
- package/components/Card/Card.js.map +1 -0
- package/components/Card/Card.module.css.js +4 -0
- package/components/Card/Card.module.css.js.map +1 -0
- package/components/Card/Card.types.d.ts +30 -0
- package/components/Card/index.d.ts +2 -0
- package/components/Checkbox/Checkbox.d.ts +7 -0
- package/components/Checkbox/Checkbox.js +46 -0
- package/components/Checkbox/Checkbox.js.map +1 -0
- package/components/Checkbox/Checkbox.module.css.js +4 -0
- package/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/components/Checkbox/Checkbox.types.d.ts +19 -0
- package/components/Checkbox/index.d.ts +2 -0
- package/components/ColorPicker/ColorPicker.d.ts +10 -0
- package/components/ColorPicker/ColorPicker.js +340 -0
- package/components/ColorPicker/ColorPicker.js.map +1 -0
- package/components/ColorPicker/ColorPicker.module.css.js +4 -0
- package/components/ColorPicker/ColorPicker.module.css.js.map +1 -0
- package/components/ColorPicker/ColorPicker.types.d.ts +33 -0
- package/components/ColorPicker/index.d.ts +2 -0
- package/components/Combobox/Combobox.d.ts +9 -0
- package/components/Combobox/Combobox.js +316 -0
- package/components/Combobox/Combobox.js.map +1 -0
- package/components/Combobox/Combobox.module.css.js +4 -0
- package/components/Combobox/Combobox.module.css.js.map +1 -0
- package/components/Combobox/Combobox.types.d.ts +57 -0
- package/components/Combobox/index.d.ts +2 -0
- package/components/CommandPalette/CommandPalette.d.ts +9 -0
- package/components/CommandPalette/CommandPalette.js +197 -0
- package/components/CommandPalette/CommandPalette.js.map +1 -0
- package/components/CommandPalette/CommandPalette.module.css.js +4 -0
- package/components/CommandPalette/CommandPalette.module.css.js.map +1 -0
- package/components/CommandPalette/CommandPalette.types.d.ts +41 -0
- package/components/CommandPalette/index.d.ts +2 -0
- package/components/ContextMenu/ContextMenu.d.ts +34 -0
- package/components/ContextMenu/ContextMenu.js +98 -0
- package/components/ContextMenu/ContextMenu.js.map +1 -0
- package/components/ContextMenu/ContextMenu.types.d.ts +30 -0
- package/components/ContextMenu/index.d.ts +2 -0
- package/components/DataGrid/DataGrid.d.ts +8 -0
- package/components/DataGrid/DataGrid.js +192 -0
- package/components/DataGrid/DataGrid.js.map +1 -0
- package/components/DataGrid/DataGrid.module.css.js +4 -0
- package/components/DataGrid/DataGrid.module.css.js.map +1 -0
- package/components/DataGrid/DataGrid.types.d.ts +43 -0
- package/components/DataGrid/index.d.ts +2 -0
- package/components/DatePicker/DatePicker.d.ts +9 -0
- package/components/DatePicker/DatePicker.js +218 -0
- package/components/DatePicker/DatePicker.js.map +1 -0
- package/components/DatePicker/DatePicker.module.css.js +4 -0
- package/components/DatePicker/DatePicker.module.css.js.map +1 -0
- package/components/DatePicker/DatePicker.types.d.ts +39 -0
- package/components/DatePicker/index.d.ts +2 -0
- package/components/DateRangePicker/DateRangePicker.d.ts +8 -0
- package/components/DateRangePicker/DateRangePicker.js +139 -0
- package/components/DateRangePicker/DateRangePicker.js.map +1 -0
- package/components/DateRangePicker/DateRangePicker.module.css.js +4 -0
- package/components/DateRangePicker/DateRangePicker.module.css.js.map +1 -0
- package/components/DateRangePicker/DateRangePicker.types.d.ts +34 -0
- package/components/DateRangePicker/index.d.ts +2 -0
- package/components/DescriptionList/DescriptionList.d.ts +12 -0
- package/components/DescriptionList/DescriptionList.js +96 -0
- package/components/DescriptionList/DescriptionList.js.map +1 -0
- package/components/DescriptionList/DescriptionList.module.css.js +4 -0
- package/components/DescriptionList/DescriptionList.module.css.js.map +1 -0
- package/components/DescriptionList/DescriptionList.types.d.ts +35 -0
- package/components/DescriptionList/index.d.ts +2 -0
- package/components/Dialog/Dialog.d.ts +30 -0
- package/components/Dialog/Dialog.js +89 -0
- package/components/Dialog/Dialog.js.map +1 -0
- package/components/Dialog/Dialog.module.css.js +4 -0
- package/components/Dialog/Dialog.module.css.js.map +1 -0
- package/components/Dialog/Dialog.types.d.ts +59 -0
- package/components/Dialog/index.d.ts +2 -0
- package/components/Drawer/Drawer.context.d.ts +9 -0
- package/components/Drawer/Drawer.context.js +7 -0
- package/components/Drawer/Drawer.context.js.map +1 -0
- package/components/Drawer/Drawer.d.ts +20 -0
- package/components/Drawer/Drawer.js +63 -0
- package/components/Drawer/Drawer.js.map +1 -0
- package/components/Drawer/Drawer.module.css.js +4 -0
- package/components/Drawer/Drawer.module.css.js.map +1 -0
- package/components/Drawer/Drawer.types.d.ts +42 -0
- package/components/Drawer/index.d.ts +2 -0
- package/components/DropdownMenu/DropdownMenu.d.ts +33 -0
- package/components/DropdownMenu/DropdownMenu.js +98 -0
- package/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/components/DropdownMenu/DropdownMenu.module.css.js +4 -0
- package/components/DropdownMenu/DropdownMenu.module.css.js.map +1 -0
- package/components/DropdownMenu/DropdownMenu.types.d.ts +34 -0
- package/components/DropdownMenu/index.d.ts +2 -0
- package/components/EmptyState/EmptyState.d.ts +8 -0
- package/components/EmptyState/EmptyState.js +24 -0
- package/components/EmptyState/EmptyState.js.map +1 -0
- package/components/EmptyState/EmptyState.module.css.js +4 -0
- package/components/EmptyState/EmptyState.module.css.js.map +1 -0
- package/components/EmptyState/EmptyState.types.d.ts +26 -0
- package/components/EmptyState/index.d.ts +2 -0
- package/components/FileUpload/FileUpload.d.ts +9 -0
- package/components/FileUpload/FileUpload.js +174 -0
- package/components/FileUpload/FileUpload.js.map +1 -0
- package/components/FileUpload/FileUpload.module.css.js +4 -0
- package/components/FileUpload/FileUpload.module.css.js.map +1 -0
- package/components/FileUpload/FileUpload.types.d.ts +41 -0
- package/components/FileUpload/index.d.ts +2 -0
- package/components/FormField/FormField.context.d.ts +22 -0
- package/components/FormField/FormField.context.js +9 -0
- package/components/FormField/FormField.context.js.map +1 -0
- package/components/FormField/FormField.d.ts +8 -0
- package/components/FormField/FormField.js +44 -0
- package/components/FormField/FormField.js.map +1 -0
- package/components/FormField/FormField.module.css.js +4 -0
- package/components/FormField/FormField.module.css.js.map +1 -0
- package/components/FormField/FormField.types.d.ts +28 -0
- package/components/FormField/index.d.ts +3 -0
- package/components/HoverCard/HoverCard.d.ts +10 -0
- package/components/HoverCard/HoverCard.js +59 -0
- package/components/HoverCard/HoverCard.js.map +1 -0
- package/components/HoverCard/HoverCard.module.css.js +4 -0
- package/components/HoverCard/HoverCard.module.css.js.map +1 -0
- package/components/HoverCard/HoverCard.types.d.ts +35 -0
- package/components/HoverCard/index.d.ts +2 -0
- package/components/IconButton/IconButton.d.ts +13 -0
- package/components/IconButton/IconButton.js +44 -0
- package/components/IconButton/IconButton.js.map +1 -0
- package/components/IconButton/IconButton.module.css.js +4 -0
- package/components/IconButton/IconButton.module.css.js.map +1 -0
- package/components/IconButton/IconButton.types.d.ts +29 -0
- package/components/IconButton/index.d.ts +2 -0
- package/components/Input/Input.d.ts +9 -0
- package/components/Input/Input.js +102 -0
- package/components/Input/Input.js.map +1 -0
- package/components/Input/Input.module.css.js +4 -0
- package/components/Input/Input.module.css.js.map +1 -0
- package/components/Input/Input.types.d.ts +32 -0
- package/components/Input/index.d.ts +2 -0
- package/components/Kbd/Kbd.d.ts +9 -0
- package/components/Kbd/Kbd.js +65 -0
- package/components/Kbd/Kbd.js.map +1 -0
- package/components/Kbd/Kbd.module.css.js +4 -0
- package/components/Kbd/Kbd.module.css.js.map +1 -0
- package/components/Kbd/Kbd.types.d.ts +15 -0
- package/components/Kbd/index.d.ts +2 -0
- package/components/MultiSelect/MultiSelect.d.ts +7 -0
- package/components/MultiSelect/MultiSelect.js +297 -0
- package/components/MultiSelect/MultiSelect.js.map +1 -0
- package/components/MultiSelect/MultiSelect.module.css.js +4 -0
- package/components/MultiSelect/MultiSelect.module.css.js.map +1 -0
- package/components/MultiSelect/MultiSelect.types.d.ts +60 -0
- package/components/MultiSelect/index.d.ts +2 -0
- package/components/NotificationCenter/NotificationCenter.d.ts +9 -0
- package/components/NotificationCenter/NotificationCenter.js +83 -0
- package/components/NotificationCenter/NotificationCenter.js.map +1 -0
- package/components/NotificationCenter/NotificationCenter.module.css.js +4 -0
- package/components/NotificationCenter/NotificationCenter.module.css.js.map +1 -0
- package/components/NotificationCenter/NotificationCenter.types.d.ts +95 -0
- package/components/NotificationCenter/NotificationList.d.ts +8 -0
- package/components/NotificationCenter/NotificationList.js +105 -0
- package/components/NotificationCenter/NotificationList.js.map +1 -0
- package/components/NotificationCenter/index.d.ts +3 -0
- package/components/NumberStepper/NumberStepper.d.ts +9 -0
- package/components/NumberStepper/NumberStepper.js +184 -0
- package/components/NumberStepper/NumberStepper.js.map +1 -0
- package/components/NumberStepper/NumberStepper.module.css.js +4 -0
- package/components/NumberStepper/NumberStepper.module.css.js.map +1 -0
- package/components/NumberStepper/NumberStepper.types.d.ts +36 -0
- package/components/NumberStepper/index.d.ts +2 -0
- package/components/OtpInput/OtpInput.d.ts +11 -0
- package/components/OtpInput/OtpInput.js +143 -0
- package/components/OtpInput/OtpInput.js.map +1 -0
- package/components/OtpInput/OtpInput.module.css.js +4 -0
- package/components/OtpInput/OtpInput.module.css.js.map +1 -0
- package/components/OtpInput/OtpInput.types.d.ts +45 -0
- package/components/OtpInput/index.d.ts +2 -0
- package/components/Pagination/Pagination.d.ts +8 -0
- package/components/Pagination/Pagination.js +100 -0
- package/components/Pagination/Pagination.js.map +1 -0
- package/components/Pagination/Pagination.module.css.js +4 -0
- package/components/Pagination/Pagination.module.css.js.map +1 -0
- package/components/Pagination/Pagination.types.d.ts +32 -0
- package/components/Pagination/index.d.ts +2 -0
- package/components/Popover/Popover.d.ts +22 -0
- package/components/Popover/Popover.js +48 -0
- package/components/Popover/Popover.js.map +1 -0
- package/components/Popover/Popover.module.css.js +4 -0
- package/components/Popover/Popover.module.css.js.map +1 -0
- package/components/Popover/Popover.types.d.ts +23 -0
- package/components/Popover/index.d.ts +2 -0
- package/components/Progress/Progress.d.ts +7 -0
- package/components/Progress/Progress.js +36 -0
- package/components/Progress/Progress.js.map +1 -0
- package/components/Progress/Progress.module.css.js +4 -0
- package/components/Progress/Progress.module.css.js.map +1 -0
- package/components/Progress/Progress.types.d.ts +23 -0
- package/components/Progress/index.d.ts +2 -0
- package/components/RTEField/RTEField.d.ts +23 -0
- package/components/RTEField/RTEField.js +152 -0
- package/components/RTEField/RTEField.js.map +1 -0
- package/components/RTEField/RTEField.module.css.js +4 -0
- package/components/RTEField/RTEField.module.css.js.map +1 -0
- package/components/RTEField/RTEField.types.d.ts +61 -0
- package/components/RTEField/index.d.ts +2 -0
- package/components/RadioGroup/RadioGroup.context.d.ts +15 -0
- package/components/RadioGroup/RadioGroup.context.js +9 -0
- package/components/RadioGroup/RadioGroup.context.js.map +1 -0
- package/components/RadioGroup/RadioGroup.d.ts +7 -0
- package/components/RadioGroup/RadioGroup.js +43 -0
- package/components/RadioGroup/RadioGroup.js.map +1 -0
- package/components/RadioGroup/RadioGroup.module.css.js +4 -0
- package/components/RadioGroup/RadioGroup.module.css.js.map +1 -0
- package/components/RadioGroup/RadioGroup.types.d.ts +23 -0
- package/components/RadioGroup/index.d.ts +3 -0
- package/components/Rating/Rating.d.ts +8 -0
- package/components/Rating/Rating.js +101 -0
- package/components/Rating/Rating.js.map +1 -0
- package/components/Rating/Rating.module.css.js +4 -0
- package/components/Rating/Rating.module.css.js.map +1 -0
- package/components/Rating/Rating.types.d.ts +28 -0
- package/components/Rating/index.d.ts +2 -0
- package/components/SegmentedControl/SegmentedControl.d.ts +8 -0
- package/components/SegmentedControl/SegmentedControl.js +20 -0
- package/components/SegmentedControl/SegmentedControl.js.map +1 -0
- package/components/SegmentedControl/SegmentedControl.module.css.js +4 -0
- package/components/SegmentedControl/SegmentedControl.module.css.js.map +1 -0
- package/components/SegmentedControl/SegmentedControl.types.d.ts +16 -0
- package/components/SegmentedControl/index.d.ts +2 -0
- package/components/Select/Select.d.ts +22 -0
- package/components/Select/Select.js +102 -0
- package/components/Select/Select.js.map +1 -0
- package/components/Select/Select.module.css.js +4 -0
- package/components/Select/Select.module.css.js.map +1 -0
- package/components/Select/Select.types.d.ts +45 -0
- package/components/Select/index.d.ts +2 -0
- package/components/Shell/Shell.d.ts +13 -0
- package/components/Shell/Shell.js +37 -0
- package/components/Shell/Shell.js.map +1 -0
- package/components/Shell/Shell.module.css.js +4 -0
- package/components/Shell/Shell.module.css.js.map +1 -0
- package/components/Shell/Shell.types.d.ts +31 -0
- package/components/Shell/index.d.ts +2 -0
- package/components/Sidebar/Sidebar.context.d.ts +6 -0
- package/components/Sidebar/Sidebar.context.js +6 -0
- package/components/Sidebar/Sidebar.context.js.map +1 -0
- package/components/Sidebar/Sidebar.d.ts +13 -0
- package/components/Sidebar/Sidebar.js +102 -0
- package/components/Sidebar/Sidebar.js.map +1 -0
- package/components/Sidebar/Sidebar.module.css.js +4 -0
- package/components/Sidebar/Sidebar.module.css.js.map +1 -0
- package/components/Sidebar/Sidebar.types.d.ts +45 -0
- package/components/Sidebar/index.d.ts +2 -0
- package/components/Skeleton/Skeleton.d.ts +13 -0
- package/components/Skeleton/Skeleton.js +48 -0
- package/components/Skeleton/Skeleton.js.map +1 -0
- package/components/Skeleton/Skeleton.module.css.js +4 -0
- package/components/Skeleton/Skeleton.module.css.js.map +1 -0
- package/components/Skeleton/Skeleton.types.d.ts +26 -0
- package/components/Skeleton/index.d.ts +2 -0
- package/components/Slider/Slider.d.ts +8 -0
- package/components/Slider/Slider.js +84 -0
- package/components/Slider/Slider.js.map +1 -0
- package/components/Slider/Slider.module.css.js +4 -0
- package/components/Slider/Slider.module.css.js.map +1 -0
- package/components/Slider/Slider.types.d.ts +35 -0
- package/components/Slider/index.d.ts +2 -0
- package/components/Spinner/Spinner.d.ts +7 -0
- package/components/Spinner/Spinner.js +16 -0
- package/components/Spinner/Spinner.js.map +1 -0
- package/components/Spinner/Spinner.module.css.js +4 -0
- package/components/Spinner/Spinner.module.css.js.map +1 -0
- package/components/Spinner/Spinner.types.d.ts +14 -0
- package/components/Spinner/index.d.ts +2 -0
- package/components/SplitPane/SplitPane.d.ts +18 -0
- package/components/SplitPane/SplitPane.js +169 -0
- package/components/SplitPane/SplitPane.js.map +1 -0
- package/components/SplitPane/SplitPane.module.css.js +4 -0
- package/components/SplitPane/SplitPane.module.css.js.map +1 -0
- package/components/SplitPane/SplitPane.types.d.ts +40 -0
- package/components/SplitPane/index.d.ts +2 -0
- package/components/Statistic/Statistic.d.ts +8 -0
- package/components/Statistic/Statistic.js +106 -0
- package/components/Statistic/Statistic.js.map +1 -0
- package/components/Statistic/Statistic.module.css.js +4 -0
- package/components/Statistic/Statistic.module.css.js.map +1 -0
- package/components/Statistic/Statistic.types.d.ts +42 -0
- package/components/Statistic/index.d.ts +2 -0
- package/components/Stepper/Stepper.d.ts +15 -0
- package/components/Stepper/Stepper.js +148 -0
- package/components/Stepper/Stepper.js.map +1 -0
- package/components/Stepper/Stepper.module.css.js +4 -0
- package/components/Stepper/Stepper.module.css.js.map +1 -0
- package/components/Stepper/Stepper.types.d.ts +48 -0
- package/components/Stepper/index.d.ts +2 -0
- package/components/Switch/Switch.d.ts +10 -0
- package/components/Switch/Switch.js +37 -0
- package/components/Switch/Switch.js.map +1 -0
- package/components/Switch/Switch.module.css.js +4 -0
- package/components/Switch/Switch.module.css.js.map +1 -0
- package/components/Switch/Switch.types.d.ts +19 -0
- package/components/Switch/index.d.ts +2 -0
- package/components/Table/Table.d.ts +14 -0
- package/components/Table/Table.js +131 -0
- package/components/Table/Table.js.map +1 -0
- package/components/Table/Table.module.css.js +4 -0
- package/components/Table/Table.module.css.js.map +1 -0
- package/components/Table/Table.types.d.ts +62 -0
- package/components/Table/index.d.ts +2 -0
- package/components/Tabs/Tabs.d.ts +18 -0
- package/components/Tabs/Tabs.js +32 -0
- package/components/Tabs/Tabs.js.map +1 -0
- package/components/Tabs/Tabs.module.css.js +4 -0
- package/components/Tabs/Tabs.module.css.js.map +1 -0
- package/components/Tabs/Tabs.types.d.ts +20 -0
- package/components/Tabs/index.d.ts +2 -0
- package/components/Tag/Tag.d.ts +8 -0
- package/components/Tag/Tag.js +25 -0
- package/components/Tag/Tag.js.map +1 -0
- package/components/Tag/Tag.module.css.js +4 -0
- package/components/Tag/Tag.module.css.js.map +1 -0
- package/components/Tag/Tag.types.d.ts +18 -0
- package/components/Tag/index.d.ts +2 -0
- package/components/Textarea/Textarea.d.ts +9 -0
- package/components/Textarea/Textarea.js +86 -0
- package/components/Textarea/Textarea.js.map +1 -0
- package/components/Textarea/Textarea.module.css.js +4 -0
- package/components/Textarea/Textarea.module.css.js.map +1 -0
- package/components/Textarea/Textarea.types.d.ts +27 -0
- package/components/Textarea/index.d.ts +2 -0
- package/components/TimePicker/TimePicker.d.ts +8 -0
- package/components/TimePicker/TimePicker.js +220 -0
- package/components/TimePicker/TimePicker.js.map +1 -0
- package/components/TimePicker/TimePicker.module.css.js +4 -0
- package/components/TimePicker/TimePicker.module.css.js.map +1 -0
- package/components/TimePicker/TimePicker.types.d.ts +29 -0
- package/components/TimePicker/index.d.ts +2 -0
- package/components/Timeline/Timeline.d.ts +6 -0
- package/components/Timeline/Timeline.js +49 -0
- package/components/Timeline/Timeline.js.map +1 -0
- package/components/Timeline/Timeline.module.css.js +4 -0
- package/components/Timeline/Timeline.module.css.js.map +1 -0
- package/components/Timeline/Timeline.types.d.ts +19 -0
- package/components/Timeline/index.d.ts +2 -0
- package/components/Toast/Toast.d.ts +11 -0
- package/components/Toast/Toast.js +75 -0
- package/components/Toast/Toast.js.map +1 -0
- package/components/Toast/Toast.module.css.js +4 -0
- package/components/Toast/Toast.module.css.js.map +1 -0
- package/components/Toast/Toast.store.d.ts +29 -0
- package/components/Toast/Toast.store.js +53 -0
- package/components/Toast/Toast.store.js.map +1 -0
- package/components/Toast/Toast.types.d.ts +40 -0
- package/components/Toast/index.d.ts +3 -0
- package/components/TokenInput/TokenInput.d.ts +8 -0
- package/components/TokenInput/TokenInput.js +206 -0
- package/components/TokenInput/TokenInput.js.map +1 -0
- package/components/TokenInput/TokenInput.module.css.js +4 -0
- package/components/TokenInput/TokenInput.module.css.js.map +1 -0
- package/components/TokenInput/TokenInput.types.d.ts +38 -0
- package/components/TokenInput/index.d.ts +2 -0
- package/components/Tooltip/Tooltip.d.ts +17 -0
- package/components/Tooltip/Tooltip.js +32 -0
- package/components/Tooltip/Tooltip.js.map +1 -0
- package/components/Tooltip/Tooltip.module.css.js +4 -0
- package/components/Tooltip/Tooltip.module.css.js.map +1 -0
- package/components/Tooltip/Tooltip.types.d.ts +38 -0
- package/components/Tooltip/index.d.ts +2 -0
- package/components/TopNavigation/TopNavigation.d.ts +4 -0
- package/components/TopNavigation/TopNavigation.js +46 -0
- package/components/TopNavigation/TopNavigation.js.map +1 -0
- package/components/TopNavigation/TopNavigation.module.css.js +4 -0
- package/components/TopNavigation/TopNavigation.module.css.js.map +1 -0
- package/components/TopNavigation/TopNavigation.types.d.ts +23 -0
- package/components/TopNavigation/index.d.ts +2 -0
- package/components/TreeView/TreeView.d.ts +8 -0
- package/components/TreeView/TreeView.js +224 -0
- package/components/TreeView/TreeView.js.map +1 -0
- package/components/TreeView/TreeView.module.css.js +4 -0
- package/components/TreeView/TreeView.module.css.js.map +1 -0
- package/components/TreeView/TreeView.types.d.ts +34 -0
- package/components/TreeView/index.d.ts +2 -0
- package/components/index.d.ts +62 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/useDeferredLoading.d.ts +16 -0
- package/hooks/useDeferredLoading.js +26 -0
- package/hooks/useDeferredLoading.js.map +1 -0
- package/index.d.ts +2 -3
- package/index.js +73 -4
- package/index.js.map +1 -1
- package/lib/api-request.js +5 -3
- package/lib/api-request.js.map +1 -1
- package/lib/cn.d.ts +19 -0
- package/lib/cn.js +8 -0
- package/lib/cn.js.map +1 -0
- package/lib/date.d.ts +17 -0
- package/lib/date.js +54 -0
- package/lib/date.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/merge-refs.d.ts +15 -0
- package/lib/merge-refs.js +11 -0
- package/lib/merge-refs.js.map +1 -0
- package/package.json +34 -12
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/styles.layer.css +1 -1
- package/components/AppLayout/AppLayout.d.ts +0 -21
- package/components/AppLayout/AppLayout.js +0 -34
- package/components/AppLayout/AppLayout.js.map +0 -1
- package/components/AppLayout/AppLayout.module.css.js +0 -4
- package/components/AppLayout/AppLayout.module.css.js.map +0 -1
- package/components/AppLayout/ContentFooter.d.ts +0 -12
- package/components/AppLayout/ContentFooter.js +0 -11
- package/components/AppLayout/ContentFooter.js.map +0 -1
- package/components/AppLayout/SideNavbar.d.ts +0 -21
- package/components/AppLayout/SideNavbar.js +0 -43
- package/components/AppLayout/SideNavbar.js.map +0 -1
- package/components/AppLayout/SideNavbarGroup.d.ts +0 -19
- package/components/AppLayout/SideNavbarGroup.js +0 -16
- package/components/AppLayout/SideNavbarGroup.js.map +0 -1
- package/components/AppLayout/SideNavbarItem.d.ts +0 -19
- package/components/AppLayout/SideNavbarItem.js +0 -74
- package/components/AppLayout/SideNavbarItem.js.map +0 -1
- package/components/AppLayout/TopNavbar.d.ts +0 -20
- package/components/AppLayout/TopNavbar.js +0 -38
- package/components/AppLayout/TopNavbar.js.map +0 -1
- package/components/AppLayout/app-layout.utils.d.ts +0 -14
- package/components/AppLayout/app-layout.utils.js +0 -6
- package/components/AppLayout/app-layout.utils.js.map +0 -1
- package/components/AppLayout/hooks/use-active-nav-label.d.ts +0 -2
- package/components/AppLayout/hooks/use-active-nav-label.js +0 -29
- package/components/AppLayout/hooks/use-active-nav-label.js.map +0 -1
- package/components/AppLayout/hooks/use-layout-state.d.ts +0 -20
- package/components/AppLayout/hooks/use-layout-state.js +0 -14
- package/components/AppLayout/hooks/use-layout-state.js.map +0 -1
- package/components/AppLayout/hooks/use-side-navbar-item.d.ts +0 -11
- package/components/AppLayout/hooks/use-side-navbar-item.js +0 -26
- package/components/AppLayout/hooks/use-side-navbar-item.js.map +0 -1
- package/components/AppLayout/index.d.ts +0 -2
- package/components/AppLayout/layout.types.d.ts +0 -59
- package/components/Logo/Alphabets.d.ts +0 -39
- package/components/Logo/Alphabets.js +0 -119
- package/components/Logo/Alphabets.js.map +0 -1
- package/components/Logo/BrandMark.d.ts +0 -16
- package/components/Logo/BrandMark.js +0 -39
- package/components/Logo/BrandMark.js.map +0 -1
- package/components/Logo/Logo.d.ts +0 -17
- package/components/Logo/Logo.js +0 -22
- package/components/Logo/Logo.js.map +0 -1
- package/components/Logo/Logo.module.css.js +0 -4
- package/components/Logo/Logo.module.css.js.map +0 -1
- package/components/Logo/hooks/use-logo.d.ts +0 -9
- package/components/Logo/hooks/use-logo.js +0 -16
- package/components/Logo/hooks/use-logo.js.map +0 -1
- package/components/Logo/index.d.ts +0 -2
- package/styles/AppLayout.module.css +0 -82
- package/styles/Logo.module.css +0 -51
- package/theme.d.ts +0 -161
- package/theme.js +0 -112
- package/theme.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationList.js","sources":["../../../src/components/NotificationCenter/NotificationList.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { forwardRef, type KeyboardEvent, type MouseEvent } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport { addDays, cn, formatLongDate, isSameDay } from '@/lib';\n\nimport { Avatar } from '../Avatar';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\nimport styles from './NotificationCenter.module.css';\nimport { type NotificationItem, type NotificationListProps } from './NotificationCenter.types';\n\n/**\n * Declaring the constants\n */\ninterface DayGroup {\n key: string;\n label: string | null;\n items: NotificationItem[];\n}\n\nfunction groupByDay(items: NotificationItem[]): DayGroup[] {\n const dated = items.some(item => item.date instanceof Date);\n if (!dated) return [{ key: 'all', label: null, items }];\n\n const today = new Date();\n const yesterday = addDays(today, -1);\n const groups: DayGroup[] = [];\n const index = new Map<string, DayGroup>();\n\n for (const item of items) {\n const date = item.date ?? today;\n const key = date.toDateString();\n let group = index.get(key);\n if (!group) {\n const label = isSameDay(date, today) ? 'Today' : isSameDay(date, yesterday) ? 'Yesterday' : formatLongDate(date);\n group = { key, label, items: [] };\n index.set(key, group);\n groups.push(group);\n }\n group.items.push(item);\n }\n return groups;\n}\n\nfunction DefaultItemBody({ item }: { item: NotificationItem }) {\n if (item.title != null) return <span className={styles.title}>{item.title}</span>;\n return (\n <span className={styles.title}>\n {item.actor ? <span className={styles.actor}>{item.actor}</span> : null}\n {item.actor && item.action ? ' ' : null}\n {item.action}\n </span>\n );\n}\n\nfunction itemName(item: NotificationItem): string {\n const parts = [item.actor, typeof item.action === 'string' ? item.action : undefined].filter(Boolean);\n const base = parts.length > 0 ? parts.join(' ') : typeof item.title === 'string' ? item.title : 'Notification';\n return item.unread ? `${base}, unread` : base;\n}\n\n/**\n * The feed body — a labelled `role=\"feed\"` of `role=\"article\"` notifications, day-grouped by timestamp.\n * Ships separately from the panel so the full-page inbox and the bell popover share one renderer. Row\n * click navigates (and marks read); inline action buttons stop propagation, because deciding and\n * visiting are separate acts.\n */\nexport const NotificationList = forwardRef<HTMLDivElement, NotificationListProps>(function NotificationList(\n { items, onRead, onAction, onNavigate, pendingIds = [], renderItem, emptyLabel = \"You're all caught up.\", 'aria-label': ariaLabel = 'Notifications', className, ...props },\n ref,\n) {\n if (items.length === 0)\n return (\n <div ref={ref} className={cn(styles.feed, styles.feedEmpty, className)} {...props}>\n <EmptyState size='inline' title={emptyLabel} />\n </div>\n );\n\n const groups = groupByDay(items);\n\n function navigate(item: NotificationItem): void {\n if (item.unread) onRead?.(item.id);\n onNavigate?.(item);\n }\n\n function onRowKeyDown(event: KeyboardEvent<HTMLElement>, item: NotificationItem): void {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n if (event.target !== event.currentTarget) return;\n event.preventDefault();\n navigate(item);\n }\n\n function onActionClick(event: MouseEvent, item: NotificationItem, actionId: string): void {\n event.stopPropagation();\n onAction?.(item, actionId);\n }\n\n return (\n <div ref={ref} className={cn(styles.feed, className)} role='feed' aria-label={ariaLabel} {...props}>\n {groups.map(group => (\n <div key={group.key} className={styles.group}>\n {group.label ? <div className={styles.groupLabel}>{group.label}</div> : null}\n {group.items.map(item => {\n const resolved = item.receipt != null;\n const pending = pendingIds.includes(item.id);\n return (\n <article\n key={item.id}\n className={styles.item}\n data-unread={item.unread || undefined}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: the row is a click/keyboard target in the ARIA feed pattern\n tabIndex={0}\n aria-label={itemName(item)}\n onClick={() => navigate(item)}\n onKeyDown={event => onRowKeyDown(event, item)}\n >\n {item.unread ? <span className={styles.dot} aria-hidden='true' /> : null}\n <span className={styles.leading}>\n {item.icon ? <span className={styles.icon}>{item.icon}</span> : <Avatar size='sm' name={item.avatar?.name ?? item.actor} src={item.avatar?.src} />}\n </span>\n <span className={styles.body}>\n {renderItem ? renderItem(item) : <DefaultItemBody item={item} />}\n {item.time != null ? <span className={styles.time}>{item.time}</span> : null}\n {resolved ? (\n <span className={styles.receipt}>{item.receipt}</span>\n ) : item.actions && item.actions.length > 0 ? (\n <span className={styles.actions}>\n {item.actions.slice(0, 2).map((action, i) => (\n <Button\n key={action.id}\n size='sm'\n variant={action.variant ?? (i === 0 ? 'primary' : 'secondary')}\n loading={pending}\n onClick={event => onActionClick(event, item, action.id)}\n >\n {action.label}\n </Button>\n ))}\n </span>\n ) : null}\n </span>\n </article>\n );\n })}\n </div>\n ))}\n </div>\n );\n});\n"],"names":["NotificationList"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type NumberStepperProps } from './NumberStepper.types';
|
|
2
|
+
/**
|
|
3
|
+
* A numeric field with step buttons for quantities adjusted in small increments (replicas, retries,
|
|
4
|
+
* timeouts). The field is role="spinbutton" with aria-valuenow/min/max (+ aria-valuetext for units);
|
|
5
|
+
* step buttons are labelled but removed from the tab order (arrows in the field do the same job).
|
|
6
|
+
* Non-numeric keystrokes are rejected; out-of-range typed values surface on blur, never silently
|
|
7
|
+
* clamped mid-edit. Holding a step button repeats.
|
|
8
|
+
*/
|
|
9
|
+
export declare const NumberStepper: import("react").ForwardRefExoticComponent<NumberStepperProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useState, useRef, useEffect } from 'react';
|
|
4
|
+
import '../../lib/api-request.js';
|
|
5
|
+
import { cn } from '../../lib/cn.js';
|
|
6
|
+
import styles from './NumberStepper.module.css.js';
|
|
7
|
+
|
|
8
|
+
const PARTIAL = /^-?\d*\.?\d*$/;
|
|
9
|
+
function MinusIcon() {
|
|
10
|
+
return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M4 8h8" }) });
|
|
11
|
+
}
|
|
12
|
+
function PlusIcon() {
|
|
13
|
+
return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M8 4v8M4 8h8" }) });
|
|
14
|
+
}
|
|
15
|
+
function ChevronUp() {
|
|
16
|
+
return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M4.5 10L8 6.5l3.5 3.5" }) });
|
|
17
|
+
}
|
|
18
|
+
function ChevronDown() {
|
|
19
|
+
return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: 1.5, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M4.5 6L8 9.5 11.5 6" }) });
|
|
20
|
+
}
|
|
21
|
+
const NumberStepper = forwardRef(function NumberStepper2({
|
|
22
|
+
value,
|
|
23
|
+
defaultValue = null,
|
|
24
|
+
onValueChange,
|
|
25
|
+
min,
|
|
26
|
+
max,
|
|
27
|
+
step = 1,
|
|
28
|
+
precision,
|
|
29
|
+
unit,
|
|
30
|
+
buttons = "split",
|
|
31
|
+
size = "md",
|
|
32
|
+
disabled = false,
|
|
33
|
+
readOnly = false,
|
|
34
|
+
invalid = false,
|
|
35
|
+
itemLabel,
|
|
36
|
+
id,
|
|
37
|
+
className,
|
|
38
|
+
"aria-label": ariaLabel
|
|
39
|
+
}, ref) {
|
|
40
|
+
const isControlled = value !== void 0;
|
|
41
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
42
|
+
const current = isControlled ? value : internalValue;
|
|
43
|
+
const format = (input) => precision != null ? input.toFixed(precision) : String(input);
|
|
44
|
+
const [text, setText] = useState(current != null ? format(current) : "");
|
|
45
|
+
const [invalidTyped, setInvalidTyped] = useState(false);
|
|
46
|
+
const holdRef = useRef({});
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
setText(current != null ? format(current) : "");
|
|
49
|
+
}, [current]);
|
|
50
|
+
function clampRound(input) {
|
|
51
|
+
let next = input;
|
|
52
|
+
if (min != null) next = Math.max(min, next);
|
|
53
|
+
if (max != null) next = Math.min(max, next);
|
|
54
|
+
return precision != null ? Number(next.toFixed(precision)) : next;
|
|
55
|
+
}
|
|
56
|
+
function commit(next) {
|
|
57
|
+
if (!isControlled) setInternalValue(next);
|
|
58
|
+
onValueChange?.(next);
|
|
59
|
+
setInvalidTyped(false);
|
|
60
|
+
}
|
|
61
|
+
function stepBy(direction) {
|
|
62
|
+
if (disabled || readOnly) return;
|
|
63
|
+
const base = current ?? min ?? 0;
|
|
64
|
+
const next = clampRound(base + direction * step);
|
|
65
|
+
commit(next);
|
|
66
|
+
setText(format(next));
|
|
67
|
+
}
|
|
68
|
+
function handleChange(event) {
|
|
69
|
+
const next = event.target.value;
|
|
70
|
+
if (!PARTIAL.test(next)) return;
|
|
71
|
+
setText(next);
|
|
72
|
+
if (next === "" || next === "-" || next === "." || next === "-.") {
|
|
73
|
+
if (next === "") commit(null);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const parsed = Number(next);
|
|
77
|
+
if (!Number.isNaN(parsed)) commit(precision != null ? Number(parsed.toFixed(precision)) : parsed);
|
|
78
|
+
}
|
|
79
|
+
function handleBlur() {
|
|
80
|
+
if (text === "" || text === "-" || text === "." || text === "-.") return;
|
|
81
|
+
const parsed = Number(text);
|
|
82
|
+
if (Number.isNaN(parsed)) {
|
|
83
|
+
setInvalidTyped(true);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const outOfRange = min != null && parsed < min || max != null && parsed > max;
|
|
87
|
+
setInvalidTyped(outOfRange);
|
|
88
|
+
}
|
|
89
|
+
function startHold(direction) {
|
|
90
|
+
stepBy(direction);
|
|
91
|
+
holdRef.current.timeout = setTimeout(() => {
|
|
92
|
+
holdRef.current.interval = setInterval(() => stepBy(direction), 100);
|
|
93
|
+
}, 400);
|
|
94
|
+
}
|
|
95
|
+
function stopHold() {
|
|
96
|
+
clearTimeout(holdRef.current.timeout);
|
|
97
|
+
clearInterval(holdRef.current.interval);
|
|
98
|
+
}
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
const timers = holdRef.current;
|
|
101
|
+
return () => {
|
|
102
|
+
clearTimeout(timers.timeout);
|
|
103
|
+
clearInterval(timers.interval);
|
|
104
|
+
};
|
|
105
|
+
}, []);
|
|
106
|
+
const atMin = min != null && current != null && current <= min;
|
|
107
|
+
const atMax = max != null && current != null && current >= max;
|
|
108
|
+
const decLabel = `Decrease${itemLabel != null ? ` ${itemLabel}` : ""}`;
|
|
109
|
+
const incLabel = `Increase${itemLabel != null ? ` ${itemLabel}` : ""}`;
|
|
110
|
+
const decButton = /* @__PURE__ */ jsx(
|
|
111
|
+
"button",
|
|
112
|
+
{
|
|
113
|
+
type: "button",
|
|
114
|
+
tabIndex: -1,
|
|
115
|
+
className: styles.step,
|
|
116
|
+
"aria-label": decLabel,
|
|
117
|
+
disabled: disabled || readOnly || atMin,
|
|
118
|
+
onPointerDown: () => startHold(-1),
|
|
119
|
+
onPointerUp: stopHold,
|
|
120
|
+
onPointerLeave: stopHold,
|
|
121
|
+
children: buttons === "split" ? /* @__PURE__ */ jsx(MinusIcon, {}) : /* @__PURE__ */ jsx(ChevronDown, {})
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
const incButton = /* @__PURE__ */ jsx(
|
|
125
|
+
"button",
|
|
126
|
+
{
|
|
127
|
+
type: "button",
|
|
128
|
+
tabIndex: -1,
|
|
129
|
+
className: styles.step,
|
|
130
|
+
"aria-label": incLabel,
|
|
131
|
+
disabled: disabled || readOnly || atMax,
|
|
132
|
+
onPointerDown: () => startHold(1),
|
|
133
|
+
onPointerUp: stopHold,
|
|
134
|
+
onPointerLeave: stopHold,
|
|
135
|
+
children: buttons === "split" ? /* @__PURE__ */ jsx(PlusIcon, {}) : /* @__PURE__ */ jsx(ChevronUp, {})
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
return /* @__PURE__ */ jsxs(
|
|
139
|
+
"div",
|
|
140
|
+
{
|
|
141
|
+
className: cn(styles.root, className),
|
|
142
|
+
"data-size": size,
|
|
143
|
+
"data-buttons": buttons,
|
|
144
|
+
"data-invalid": invalid || invalidTyped || void 0,
|
|
145
|
+
"data-disabled": disabled || void 0,
|
|
146
|
+
"data-readonly": readOnly || void 0,
|
|
147
|
+
"data-has-unit": unit != null || void 0,
|
|
148
|
+
children: [
|
|
149
|
+
buttons === "split" ? decButton : null,
|
|
150
|
+
/* @__PURE__ */ jsx(
|
|
151
|
+
"input",
|
|
152
|
+
{
|
|
153
|
+
ref,
|
|
154
|
+
id,
|
|
155
|
+
className: styles.input,
|
|
156
|
+
type: "text",
|
|
157
|
+
inputMode: precision != null ? "decimal" : "numeric",
|
|
158
|
+
role: "spinbutton",
|
|
159
|
+
autoComplete: "off",
|
|
160
|
+
value: text,
|
|
161
|
+
disabled,
|
|
162
|
+
readOnly,
|
|
163
|
+
"aria-label": ariaLabel,
|
|
164
|
+
"aria-valuenow": current ?? void 0,
|
|
165
|
+
"aria-valuemin": min,
|
|
166
|
+
"aria-valuemax": max,
|
|
167
|
+
"aria-valuetext": current != null && unit != null ? `${format(current)} ${unit}` : void 0,
|
|
168
|
+
"aria-invalid": invalid || invalidTyped || void 0,
|
|
169
|
+
onChange: handleChange,
|
|
170
|
+
onBlur: handleBlur
|
|
171
|
+
}
|
|
172
|
+
),
|
|
173
|
+
unit != null ? /* @__PURE__ */ jsx("span", { className: styles.unit, children: unit }) : null,
|
|
174
|
+
buttons === "split" ? incButton : /* @__PURE__ */ jsxs("span", { className: styles.chevrons, children: [
|
|
175
|
+
incButton,
|
|
176
|
+
decButton
|
|
177
|
+
] })
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
export { NumberStepper };
|
|
184
|
+
//# sourceMappingURL=NumberStepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberStepper.js","sources":["../../../src/components/NumberStepper/NumberStepper.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { type ChangeEvent, forwardRef, useEffect, useRef, useState } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport { cn } from '@/lib';\n\nimport styles from './NumberStepper.module.css';\nimport { type NumberStepperProps } from './NumberStepper.types';\n\n/**\n * Declaring the constants\n */\nconst PARTIAL = /^-?\\d*\\.?\\d*$/;\n\nfunction MinusIcon() {\n return (\n <svg viewBox='0 0 16 16' fill='none' stroke='currentColor' strokeWidth={1.5} strokeLinecap='round' aria-hidden='true'>\n <path d='M4 8h8' />\n </svg>\n );\n}\nfunction PlusIcon() {\n return (\n <svg viewBox='0 0 16 16' fill='none' stroke='currentColor' strokeWidth={1.5} strokeLinecap='round' aria-hidden='true'>\n <path d='M8 4v8M4 8h8' />\n </svg>\n );\n}\nfunction ChevronUp() {\n return (\n <svg viewBox='0 0 16 16' fill='none' stroke='currentColor' strokeWidth={1.5} strokeLinecap='round' strokeLinejoin='round' aria-hidden='true'>\n <path d='M4.5 10L8 6.5l3.5 3.5' />\n </svg>\n );\n}\nfunction ChevronDown() {\n return (\n <svg viewBox='0 0 16 16' fill='none' stroke='currentColor' strokeWidth={1.5} strokeLinecap='round' strokeLinejoin='round' aria-hidden='true'>\n <path d='M4.5 6L8 9.5 11.5 6' />\n </svg>\n );\n}\n\n/**\n * A numeric field with step buttons for quantities adjusted in small increments (replicas, retries,\n * timeouts). The field is role=\"spinbutton\" with aria-valuenow/min/max (+ aria-valuetext for units);\n * step buttons are labelled but removed from the tab order (arrows in the field do the same job).\n * Non-numeric keystrokes are rejected; out-of-range typed values surface on blur, never silently\n * clamped mid-edit. Holding a step button repeats.\n */\nexport const NumberStepper = forwardRef<HTMLInputElement, NumberStepperProps>(function NumberStepper(\n {\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n step = 1,\n precision,\n unit,\n buttons = 'split',\n size = 'md',\n disabled = false,\n readOnly = false,\n invalid = false,\n itemLabel,\n id,\n className,\n 'aria-label': ariaLabel,\n },\n ref,\n) {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number | null>(defaultValue);\n const current = isControlled ? value : internalValue;\n\n const format = (input: number): string => (precision != null ? input.toFixed(precision) : String(input));\n const [text, setText] = useState(current != null ? format(current) : '');\n const [invalidTyped, setInvalidTyped] = useState(false);\n const holdRef = useRef<{ timeout?: ReturnType<typeof setTimeout>; interval?: ReturnType<typeof setInterval> }>({});\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: sync the field text from the external value only\n useEffect(() => {\n setText(current != null ? format(current) : '');\n }, [current]);\n\n function clampRound(input: number): number {\n let next = input;\n if (min != null) next = Math.max(min, next);\n if (max != null) next = Math.min(max, next);\n return precision != null ? Number(next.toFixed(precision)) : next;\n }\n\n function commit(next: number | null): void {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n setInvalidTyped(false);\n }\n\n function stepBy(direction: 1 | -1): void {\n if (disabled || readOnly) return;\n const base = current ?? min ?? 0;\n const next = clampRound(base + direction * step);\n commit(next);\n setText(format(next));\n }\n\n function handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const next = event.target.value;\n if (!PARTIAL.test(next)) return;\n setText(next);\n if (next === '' || next === '-' || next === '.' || next === '-.') {\n if (next === '') commit(null);\n return;\n }\n const parsed = Number(next);\n if (!Number.isNaN(parsed)) commit(precision != null ? Number(parsed.toFixed(precision)) : parsed);\n }\n\n function handleBlur(): void {\n if (text === '' || text === '-' || text === '.' || text === '-.') return;\n const parsed = Number(text);\n if (Number.isNaN(parsed)) {\n setInvalidTyped(true);\n return;\n }\n const outOfRange = (min != null && parsed < min) || (max != null && parsed > max);\n setInvalidTyped(outOfRange);\n }\n\n function startHold(direction: 1 | -1): void {\n stepBy(direction);\n holdRef.current.timeout = setTimeout(() => {\n holdRef.current.interval = setInterval(() => stepBy(direction), 100);\n }, 400);\n }\n function stopHold(): void {\n clearTimeout(holdRef.current.timeout);\n clearInterval(holdRef.current.interval);\n }\n useEffect(() => {\n const timers = holdRef.current;\n return () => {\n clearTimeout(timers.timeout);\n clearInterval(timers.interval);\n };\n }, []);\n\n const atMin = min != null && current != null && current <= min;\n const atMax = max != null && current != null && current >= max;\n const decLabel = `Decrease${itemLabel != null ? ` ${itemLabel}` : ''}`;\n const incLabel = `Increase${itemLabel != null ? ` ${itemLabel}` : ''}`;\n\n const decButton = (\n <button\n type='button'\n tabIndex={-1}\n className={styles.step}\n aria-label={decLabel}\n disabled={disabled || readOnly || atMin}\n onPointerDown={() => startHold(-1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n {buttons === 'split' ? <MinusIcon /> : <ChevronDown />}\n </button>\n );\n const incButton = (\n <button\n type='button'\n tabIndex={-1}\n className={styles.step}\n aria-label={incLabel}\n disabled={disabled || readOnly || atMax}\n onPointerDown={() => startHold(1)}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n >\n {buttons === 'split' ? <PlusIcon /> : <ChevronUp />}\n </button>\n );\n\n return (\n <div\n className={cn(styles.root, className)}\n data-size={size}\n data-buttons={buttons}\n data-invalid={invalid || invalidTyped || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n data-has-unit={unit != null || undefined}\n >\n {buttons === 'split' ? decButton : null}\n <input\n ref={ref}\n id={id}\n className={styles.input}\n type='text'\n inputMode={precision != null ? 'decimal' : 'numeric'}\n role='spinbutton'\n autoComplete='off'\n value={text}\n disabled={disabled}\n readOnly={readOnly}\n aria-label={ariaLabel}\n aria-valuenow={current ?? undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuetext={current != null && unit != null ? `${format(current)} ${unit}` : undefined}\n aria-invalid={invalid || invalidTyped || undefined}\n onChange={handleChange}\n onBlur={handleBlur}\n />\n {unit != null ? <span className={styles.unit}>{unit}</span> : null}\n {buttons === 'split' ? (\n incButton\n ) : (\n <span className={styles.chevrons}>\n {incButton}\n {decButton}\n </span>\n )}\n </div>\n );\n});\n"],"names":["NumberStepper"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberStepper.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Importing npm packages
|
|
3
|
+
*/
|
|
4
|
+
import { type ReactNode } from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Defining types
|
|
7
|
+
*/
|
|
8
|
+
export type NumberStepperSize = 'sm' | 'md' | 'lg';
|
|
9
|
+
export interface NumberStepperProps {
|
|
10
|
+
/** Controlled value (`null` when the field is empty). */
|
|
11
|
+
value?: number | null;
|
|
12
|
+
/** Uncontrolled initial value. */
|
|
13
|
+
defaultValue?: number | null;
|
|
14
|
+
/** Fires with the next value. */
|
|
15
|
+
onValueChange?: (value: number | null) => void;
|
|
16
|
+
min?: number;
|
|
17
|
+
max?: number;
|
|
18
|
+
/** Increment per step / arrow. @default 1 */
|
|
19
|
+
step?: number;
|
|
20
|
+
/** Decimal places (rounds stepped values). */
|
|
21
|
+
precision?: number;
|
|
22
|
+
/** Unit suffix (sugar for a trailing addon). */
|
|
23
|
+
unit?: string;
|
|
24
|
+
/** `split` places − / + on the field edges; `chevrons` stacks up/down in the padding. @default 'split' */
|
|
25
|
+
buttons?: 'split' | 'chevrons';
|
|
26
|
+
/** Field height — matches Input. @default 'md' */
|
|
27
|
+
size?: NumberStepperSize;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
invalid?: boolean;
|
|
31
|
+
/** Accessible verb for the step buttons ("Increase" / "Decrease" + this). */
|
|
32
|
+
itemLabel?: ReactNode;
|
|
33
|
+
id?: string;
|
|
34
|
+
className?: string;
|
|
35
|
+
'aria-label'?: string;
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type OtpInputProps } from './OtpInput.types';
|
|
2
|
+
/**
|
|
3
|
+
* Segmented one-time-code entry. Each character owns a box; typing advances, Backspace retreats,
|
|
4
|
+
* and a paste is distributed across the boxes after filtering to the allowed characters — so
|
|
5
|
+
* copy-pasting a code (with or without separators) lands one character per box. The value stays
|
|
6
|
+
* left-aligned and contiguous; `length` and the allowed set are always known, which is what makes
|
|
7
|
+
* paste distribution deterministic.
|
|
8
|
+
*
|
|
9
|
+
* `className`/`style` and remaining props target the group fieldset; `value`/`onValueChange` are the API.
|
|
10
|
+
*/
|
|
11
|
+
export declare const OtpInput: import("react").ForwardRefExoticComponent<OtpInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { forwardRef, useCallback, useState, useMemo, useRef, useEffect } from 'react';
|
|
4
|
+
import '../../lib/api-request.js';
|
|
5
|
+
import { cn } from '../../lib/cn.js';
|
|
6
|
+
import { mergeRefs } from '../../lib/merge-refs.js';
|
|
7
|
+
import styles from './OtpInput.module.css.js';
|
|
8
|
+
|
|
9
|
+
const PRESET_PATTERN = {
|
|
10
|
+
numeric: /[0-9]/,
|
|
11
|
+
alphanumeric: /[a-zA-Z0-9]/,
|
|
12
|
+
alphabetic: /[a-zA-Z]/
|
|
13
|
+
};
|
|
14
|
+
const OtpInput = forwardRef(function OtpInput2({
|
|
15
|
+
length = 6,
|
|
16
|
+
type = "numeric",
|
|
17
|
+
allowedPattern,
|
|
18
|
+
value,
|
|
19
|
+
defaultValue = "",
|
|
20
|
+
onValueChange,
|
|
21
|
+
onComplete,
|
|
22
|
+
size = "md",
|
|
23
|
+
mask = false,
|
|
24
|
+
invalid = false,
|
|
25
|
+
disabled = false,
|
|
26
|
+
readOnly = false,
|
|
27
|
+
autoFocus = false,
|
|
28
|
+
name,
|
|
29
|
+
placeholder = "",
|
|
30
|
+
className,
|
|
31
|
+
"aria-label": ariaLabel = "Verification code",
|
|
32
|
+
...rest
|
|
33
|
+
}, ref) {
|
|
34
|
+
const pattern = allowedPattern ?? PRESET_PATTERN[type];
|
|
35
|
+
const sanitize = useCallback(
|
|
36
|
+
(raw) => Array.from(raw).filter((char) => pattern.test(char)).join(""),
|
|
37
|
+
[pattern]
|
|
38
|
+
);
|
|
39
|
+
const isControlled = value !== void 0;
|
|
40
|
+
const [uncontrolled, setUncontrolled] = useState(() => sanitize(defaultValue).slice(0, length));
|
|
41
|
+
const currentValue = (isControlled ? sanitize(value) : uncontrolled).slice(0, length);
|
|
42
|
+
const chars = useMemo(() => Array.from({ length }, (_, index) => currentValue[index] ?? ""), [currentValue, length]);
|
|
43
|
+
const boxesRef = useRef([]);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (autoFocus) boxesRef.current[0]?.focus();
|
|
46
|
+
}, []);
|
|
47
|
+
function commit(next) {
|
|
48
|
+
const clipped = next.slice(0, length);
|
|
49
|
+
if (!isControlled) setUncontrolled(clipped);
|
|
50
|
+
onValueChange?.(clipped);
|
|
51
|
+
if (clipped.length === length) onComplete?.(clipped);
|
|
52
|
+
}
|
|
53
|
+
function focusBox(index) {
|
|
54
|
+
const el = boxesRef.current[Math.max(0, Math.min(index, length - 1))];
|
|
55
|
+
el?.focus();
|
|
56
|
+
el?.select();
|
|
57
|
+
}
|
|
58
|
+
function place(index, incoming) {
|
|
59
|
+
const next = [...chars];
|
|
60
|
+
let cursor = index;
|
|
61
|
+
for (const char of incoming) {
|
|
62
|
+
if (cursor >= length) break;
|
|
63
|
+
next[cursor] = char;
|
|
64
|
+
cursor += 1;
|
|
65
|
+
}
|
|
66
|
+
const nextValue = next.join("").slice(0, length);
|
|
67
|
+
commit(nextValue);
|
|
68
|
+
return nextValue;
|
|
69
|
+
}
|
|
70
|
+
function handleChange(index, event) {
|
|
71
|
+
const typed = sanitize(event.target.value);
|
|
72
|
+
if (!typed) return;
|
|
73
|
+
focusBox(place(index, typed).length);
|
|
74
|
+
}
|
|
75
|
+
function handleKeyDown(index, event) {
|
|
76
|
+
if (readOnly || disabled) return;
|
|
77
|
+
if (event.key === "Backspace") {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
const next = [...chars];
|
|
80
|
+
if (next[index]) {
|
|
81
|
+
next[index] = "";
|
|
82
|
+
commit(next.join(""));
|
|
83
|
+
} else if (index > 0) {
|
|
84
|
+
next[index - 1] = "";
|
|
85
|
+
commit(next.join(""));
|
|
86
|
+
focusBox(index - 1);
|
|
87
|
+
}
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (event.key === "Delete") {
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
const next = [...chars];
|
|
93
|
+
next[index] = "";
|
|
94
|
+
commit(next.join(""));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const jumps = { ArrowLeft: index - 1, ArrowRight: index + 1, Home: 0, End: length - 1 };
|
|
98
|
+
if (event.key in jumps) {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
focusBox(jumps[event.key] ?? index);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function handlePaste(index, event) {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
if (readOnly || disabled) return;
|
|
106
|
+
const pasted = sanitize(event.clipboardData.getData("text"));
|
|
107
|
+
if (!pasted) return;
|
|
108
|
+
focusBox(place(index, pasted).length);
|
|
109
|
+
}
|
|
110
|
+
return /* @__PURE__ */ jsxs("fieldset", { className: cn(styles.root, className), "aria-label": ariaLabel, disabled, "data-size": size, "data-invalid": invalid || void 0, ...rest, children: [
|
|
111
|
+
chars.map((char, index) => /* @__PURE__ */ jsx(
|
|
112
|
+
"input",
|
|
113
|
+
{
|
|
114
|
+
ref: index === 0 ? mergeRefs(ref, (node) => {
|
|
115
|
+
boxesRef.current[0] = node;
|
|
116
|
+
}) : (node) => {
|
|
117
|
+
boxesRef.current[index] = node;
|
|
118
|
+
},
|
|
119
|
+
className: styles.box,
|
|
120
|
+
type: mask ? "password" : "text",
|
|
121
|
+
inputMode: type === "numeric" ? "numeric" : "text",
|
|
122
|
+
autoComplete: index === 0 ? "one-time-code" : "off",
|
|
123
|
+
maxLength: 1,
|
|
124
|
+
value: char,
|
|
125
|
+
placeholder,
|
|
126
|
+
disabled,
|
|
127
|
+
readOnly,
|
|
128
|
+
"aria-label": `${ariaLabel}, character ${index + 1} of ${length}`,
|
|
129
|
+
"aria-invalid": invalid || void 0,
|
|
130
|
+
"data-filled": char ? "" : void 0,
|
|
131
|
+
onChange: (event) => handleChange(index, event),
|
|
132
|
+
onKeyDown: (event) => handleKeyDown(index, event),
|
|
133
|
+
onPaste: (event) => handlePaste(index, event),
|
|
134
|
+
onFocus: (event) => event.currentTarget.select()
|
|
135
|
+
},
|
|
136
|
+
index
|
|
137
|
+
)),
|
|
138
|
+
name ? /* @__PURE__ */ jsx("input", { type: "hidden", name, value: currentValue }) : null
|
|
139
|
+
] });
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
export { OtpInput };
|
|
143
|
+
//# sourceMappingURL=OtpInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtpInput.js","sources":["../../../src/components/OtpInput/OtpInput.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { type ChangeEvent, type ClipboardEvent, forwardRef, type KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport { cn, mergeRefs } from '@/lib';\n\nimport styles from './OtpInput.module.css';\nimport { type OtpInputProps } from './OtpInput.types';\n\n/**\n * Declaring the constants\n */\nconst PRESET_PATTERN: Record<'numeric' | 'alphanumeric' | 'alphabetic', RegExp> = {\n numeric: /[0-9]/,\n alphanumeric: /[a-zA-Z0-9]/,\n alphabetic: /[a-zA-Z]/,\n};\n\n/**\n * Segmented one-time-code entry. Each character owns a box; typing advances, Backspace retreats,\n * and a paste is distributed across the boxes after filtering to the allowed characters — so\n * copy-pasting a code (with or without separators) lands one character per box. The value stays\n * left-aligned and contiguous; `length` and the allowed set are always known, which is what makes\n * paste distribution deterministic.\n *\n * `className`/`style` and remaining props target the group fieldset; `value`/`onValueChange` are the API.\n */\nexport const OtpInput = forwardRef<HTMLInputElement, OtpInputProps>(function OtpInput(\n {\n length = 6,\n type = 'numeric',\n allowedPattern,\n value,\n defaultValue = '',\n onValueChange,\n onComplete,\n size = 'md',\n mask = false,\n invalid = false,\n disabled = false,\n readOnly = false,\n autoFocus = false,\n name,\n placeholder = '',\n className,\n 'aria-label': ariaLabel = 'Verification code',\n ...rest\n },\n ref,\n) {\n const pattern = allowedPattern ?? PRESET_PATTERN[type];\n const sanitize = useCallback(\n (raw: string): string =>\n Array.from(raw)\n .filter(char => pattern.test(char))\n .join(''),\n [pattern],\n );\n\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(() => sanitize(defaultValue).slice(0, length));\n const currentValue = (isControlled ? sanitize(value) : uncontrolled).slice(0, length);\n const chars = useMemo(() => Array.from({ length }, (_, index) => currentValue[index] ?? ''), [currentValue, length]);\n\n const boxesRef = useRef<(HTMLInputElement | null)[]>([]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: autoFocus is a mount-only intent, not a live prop\n useEffect(() => {\n if (autoFocus) boxesRef.current[0]?.focus();\n }, []);\n\n function commit(next: string): void {\n const clipped = next.slice(0, length);\n if (!isControlled) setUncontrolled(clipped);\n onValueChange?.(clipped);\n if (clipped.length === length) onComplete?.(clipped);\n }\n\n function focusBox(index: number): void {\n const el = boxesRef.current[Math.max(0, Math.min(index, length - 1))];\n el?.focus();\n el?.select();\n }\n\n /** Place `incoming` starting at `index`, collapse to a contiguous left-aligned string, commit, and return it. */\n function place(index: number, incoming: string): string {\n const next = [...chars];\n let cursor = index;\n for (const char of incoming) {\n if (cursor >= length) break;\n next[cursor] = char;\n cursor += 1;\n }\n const nextValue = next.join('').slice(0, length);\n commit(nextValue);\n return nextValue;\n }\n\n function handleChange(index: number, event: ChangeEvent<HTMLInputElement>): void {\n const typed = sanitize(event.target.value);\n if (!typed) return; // rejected character — React restores the controlled value\n focusBox(place(index, typed).length);\n }\n\n function handleKeyDown(index: number, event: KeyboardEvent<HTMLInputElement>): void {\n if (readOnly || disabled) return;\n if (event.key === 'Backspace') {\n event.preventDefault();\n const next = [...chars];\n if (next[index]) {\n next[index] = '';\n commit(next.join(''));\n } else if (index > 0) {\n next[index - 1] = '';\n commit(next.join(''));\n focusBox(index - 1);\n }\n return;\n }\n if (event.key === 'Delete') {\n event.preventDefault();\n const next = [...chars];\n next[index] = '';\n commit(next.join(''));\n return;\n }\n const jumps: Record<string, number> = { ArrowLeft: index - 1, ArrowRight: index + 1, Home: 0, End: length - 1 };\n if (event.key in jumps) {\n event.preventDefault();\n focusBox(jumps[event.key] ?? index);\n }\n }\n\n function handlePaste(index: number, event: ClipboardEvent<HTMLInputElement>): void {\n event.preventDefault();\n if (readOnly || disabled) return;\n const pasted = sanitize(event.clipboardData.getData('text'));\n if (!pasted) return;\n focusBox(place(index, pasted).length);\n }\n\n return (\n <fieldset className={cn(styles.root, className)} aria-label={ariaLabel} disabled={disabled} data-size={size} data-invalid={invalid || undefined} {...rest}>\n {chars.map((char, index) => (\n <input\n key={index}\n ref={\n index === 0\n ? mergeRefs<HTMLInputElement>(ref, node => {\n boxesRef.current[0] = node;\n })\n : node => {\n boxesRef.current[index] = node;\n }\n }\n className={styles.box}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n maxLength={1}\n value={char}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n aria-label={`${ariaLabel}, character ${index + 1} of ${length}`}\n aria-invalid={invalid || undefined}\n data-filled={char ? '' : undefined}\n onChange={event => handleChange(index, event)}\n onKeyDown={event => handleKeyDown(index, event)}\n onPaste={event => handlePaste(index, event)}\n onFocus={event => event.currentTarget.select()}\n />\n ))}\n {name ? <input type='hidden' name={name} value={currentValue} /> : null}\n </fieldset>\n );\n});\n"],"names":["OtpInput"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtpInput.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|