@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
package/README.md
CHANGED
|
@@ -1,48 +1,61 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# NUI
|
|
4
|
-
|
|
5
|
-
**A robust, accessible, and lightweight React component library designed for modern web applications.**
|
|
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
|
-
##
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# NUI
|
|
4
|
+
|
|
5
|
+
**A robust, accessible, and lightweight React component library designed for modern web applications.**
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.typescriptlang.org/">
|
|
9
|
+
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-Strict-3178C6?style=for-the-badge&logo=typescript&logoColor=white">
|
|
10
|
+
</a>
|
|
11
|
+
|
|
12
|
+
<a href="https://opensource.nofinite.com/docs/nui">
|
|
13
|
+
<img alt="Documentation" src="https://img.shields.io/badge/Docs-OpenSource-%23000133?style=for-the-badge&labelColor=slategray">
|
|
14
|
+
</a>
|
|
15
|
+
|
|
16
|
+
<a href="./LICENSE">
|
|
17
|
+
<img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-%23000133?style=for-the-badge&labelColor=slategray">
|
|
18
|
+
</a>
|
|
19
|
+
|
|
20
|
+
<a href="https://www.npmjs.com/package/@nofinite/nui">
|
|
21
|
+
<img alt="NPM Version" src="https://img.shields.io/npm/v/%40nofinite%2Fnui?style=for-the-badge&logo=npm&logoColor=white&labelColor=slategray&color=%23000133">
|
|
22
|
+
</a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Overview
|
|
30
|
+
|
|
31
|
+
NUI provides a set of accessible, production-ready components to help you build modern web applications faster. It handles the complex details—like focus management and accessibility—so you can focus on building your product.
|
|
32
|
+
|
|
33
|
+
* **Accessible:** WAI-ARIA compliant out of the box.
|
|
34
|
+
* **Type-Safe:** Built with TypeScript for a great developer experience.
|
|
35
|
+
* **Lightweight:** Modular design with zero heavy dependencies.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# pnpm
|
|
43
|
+
pnpm add @nofinite/nui
|
|
44
|
+
|
|
45
|
+
# npm
|
|
46
|
+
npm install @nofinite/nui
|
|
47
|
+
|
|
48
|
+
# yarn
|
|
49
|
+
yarn add @nofinite/nui
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Documentation
|
|
53
|
+
|
|
54
|
+
For full setup guides, component examples, and API references, [read documentation](https://opensource.nofinite.com/docs/nui).
|
|
55
|
+
|
|
56
|
+
## License
|
|
57
|
+
|
|
58
|
+
This project is licensed under the
|
|
59
|
+
[Apache License, Version 2.0](./LICENSE).
|
|
60
|
+
|
|
61
|
+
Feel free to use, modify, and share this project in your applications, products, and services. Attribution is welcome and appreciated, but never required.
|
|
@@ -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 e=require("react/jsx-runtime"),h=require("react");;/* empty css */const p=require("../../utils/cn/cn.cjs");function _({items:r,defaultOpenId:i,multiple:s=!1,className:a=""}){const[d,t]=h.useState(i?[i]:[]),c=n=>d.includes(n),l=n=>{t(o=>s?c(n)?o.filter(u=>u!==n):[...o,n]:c(n)?[]:[n])};return e.jsx("div",{className:p.cn("nui-accordion",a),children:r.map(n=>{const o=c(n.id);return e.jsxs("div",{className:"nui-accordion__item","data-state":o?"open":"closed",children:[e.jsxs("button",{className:"nui-accordion__header","aria-expanded":o,"aria-controls":`panel-${n.id}`,id:`accordion-${n.id}`,onClick:()=>l(n.id),children:[e.jsx("span",{className:"nui-accordion__title",children:n.title}),e.jsx("svg",{className:"nui-accordion__icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"m6 9 6 6 6-6"})})]}),e.jsx("div",{id:`panel-${n.id}`,role:"region","aria-labelledby":`accordion-${n.id}`,className:"nui-accordion__panel",children:e.jsx("div",{className:"nui-accordion__content",children:n.content})})]},n.id)})})}exports.Accordion=_;
|
|
2
2
|
//# sourceMappingURL=Accordion.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.cjs","sources":["../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Accordion.cjs","sources":["../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState } from 'react';\nimport { cn } from '../../utils';\nimport './Accordion.css';\n\nexport interface AccordionItem {\n id: string;\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n /** ID of the item that should be open by default */\n defaultOpenId?: string;\n /** If true, allows multiple accordion panels to remain open simultaneously */\n multiple?: boolean;\n className?: string;\n}\n\n/**\n * Accordion Component\n * * A progressively disclosed content container.\n * Implements the WAI-ARIA Accordion pattern for screen reader and keyboard accessibility.\n */\nexport function Accordion({\n items,\n defaultOpenId,\n multiple = false,\n className = '',\n}: AccordionProps) {\n // Initialize state. We use an array even for single-select to maintain a consistent state signature.\n const [openIds, setOpenIds] = useState<string[]>(\n defaultOpenId ? [defaultOpenId] : []\n );\n\n const isOpen = (id: string) => openIds.includes(id);\n\n const toggle = (id: string) => {\n setOpenIds((prev) => {\n if (multiple) {\n // Toggle the specific ID in/out of the array for multiple mode\n return isOpen(id) ? prev.filter((x) => x !== id) : [...prev, id];\n } else {\n // Replace the array entirely for single mode\n return isOpen(id) ? [] : [id];\n }\n });\n };\n\n return (\n <div className={cn(\"nui-accordion\", className)}>\n {items.map((item) => {\n const open = isOpen(item.id);\n\n return (\n <div \n key={item.id} \n className=\"nui-accordion__item\"\n // Expose state to the DOM for CSS attribute selectors (e.g., [data-state=\"open\"])\n // This enables CSS-only animations and styling without JS overhead.\n data-state={open ? 'open' : 'closed'}\n >\n {/* HEADER\n Native <button> is used to ensure out-of-the-box keyboard support.\n Browsers natively translate 'Enter' and 'Space' keydowns on buttons to 'click' events,\n making custom keyboard listeners redundant.\n */}\n <button\n className=\"nui-accordion__header\"\n aria-expanded={open}\n aria-controls={`panel-${item.id}`}\n id={`accordion-${item.id}`}\n onClick={() => toggle(item.id)}\n >\n <span className=\"nui-accordion__title\">{item.title}</span>\n {/* Chevron Icon: aria-hidden=\"true\" prevents screen readers from announcing it */}\n <svg \n className=\"nui-accordion__icon\" \n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" \n fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n\n {/* PANEL\n Rendered conditionally via CSS (not JS) to allow for enter/exit CSS grid animations.\n aria-labelledby binds the panel context directly to the triggering button.\n */}\n <div\n id={`panel-${item.id}`}\n role=\"region\"\n aria-labelledby={`accordion-${item.id}`}\n className=\"nui-accordion__panel\"\n >\n <div className=\"nui-accordion__content\">\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n}"],"names":["Accordion","items","defaultOpenId","multiple","className","openIds","setOpenIds","useState","isOpen","id","toggle","prev","x","jsx","cn","item","open","jsxs"],"mappings":"gNA0BO,SAASA,EAAU,CACxB,MAAAC,EACA,cAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,EACd,EAAmB,CAEjB,KAAM,CAACC,EAASC,CAAU,EAAIC,EAAAA,SAC5BL,EAAgB,CAACA,CAAa,EAAI,CAAA,CAAC,EAG/BM,EAAUC,GAAeJ,EAAQ,SAASI,CAAE,EAE5CC,EAAUD,GAAe,CAC7BH,EAAYK,GACNR,EAEKK,EAAOC,CAAE,EAAIE,EAAK,OAAQC,GAAMA,IAAMH,CAAE,EAAI,CAAC,GAAGE,EAAMF,CAAE,EAGxDD,EAAOC,CAAE,EAAI,CAAA,EAAK,CAACA,CAAE,CAE/B,CACH,EAEA,OACEI,MAAC,MAAA,CAAI,UAAWC,EAAAA,GAAG,gBAAiBV,CAAS,EAC1C,SAAAH,EAAM,IAAKc,GAAS,CACnB,MAAMC,EAAOR,EAAOO,EAAK,EAAE,EAE3B,OACEE,EAAAA,KAAC,MAAA,CAEC,UAAU,sBAGV,aAAYD,EAAO,OAAS,SAO5B,SAAA,CAAAC,EAAAA,KAAC,SAAA,CACC,UAAU,wBACV,gBAAeD,EACf,gBAAe,SAASD,EAAK,EAAE,GAC/B,GAAI,aAAaA,EAAK,EAAE,GACxB,QAAS,IAAML,EAAOK,EAAK,EAAE,EAE7B,SAAA,CAAAF,EAAAA,IAAC,OAAA,CAAK,UAAU,uBAAwB,SAAAE,EAAK,MAAM,EAEnDF,EAAAA,IAAC,MAAA,CACC,UAAU,sBACV,MAAM,KAAK,OAAO,KAAK,QAAQ,YAC/B,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,QACvF,cAAY,OAEZ,SAAAA,EAAAA,IAAC,OAAA,CAAK,EAAE,cAAA,CAAc,CAAA,CAAA,CACxB,CAAA,CAAA,EAOFA,EAAAA,IAAC,MAAA,CACC,GAAI,SAASE,EAAK,EAAE,GACpB,KAAK,SACL,kBAAiB,aAAaA,EAAK,EAAE,GACrC,UAAU,uBAEV,SAAAF,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACZ,WAAK,OAAA,CACR,CAAA,CAAA,CACF,CAAA,EA3CKE,EAAK,EAAA,CA8ChB,CAAC,CAAA,CACH,CAEJ"}
|
|
@@ -1,51 +1,72 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as
|
|
1
|
+
import { jsx as o, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { useState as h } from "react";
|
|
3
3
|
/* empty css */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { cn as _ } from "../../utils/cn/cn.js";
|
|
5
|
+
function k({
|
|
6
|
+
items: a,
|
|
7
|
+
defaultOpenId: r,
|
|
8
|
+
multiple: d = !1,
|
|
9
|
+
className: s = ""
|
|
9
10
|
}) {
|
|
10
|
-
const [
|
|
11
|
-
|
|
12
|
-
),
|
|
13
|
-
|
|
11
|
+
const [t, l] = h(
|
|
12
|
+
r ? [r] : []
|
|
13
|
+
), e = (n) => t.includes(n), u = (n) => {
|
|
14
|
+
l((i) => d ? e(n) ? i.filter((p) => p !== n) : [...i, n] : e(n) ? [] : [n]);
|
|
14
15
|
};
|
|
15
|
-
return /* @__PURE__ */
|
|
16
|
-
const
|
|
17
|
-
return /* @__PURE__ */
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
16
|
+
return /* @__PURE__ */ o("div", { className: _("nui-accordion", s), children: a.map((n) => {
|
|
17
|
+
const i = e(n.id);
|
|
18
|
+
return /* @__PURE__ */ c(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: "nui-accordion__item",
|
|
22
|
+
"data-state": i ? "open" : "closed",
|
|
23
|
+
children: [
|
|
24
|
+
/* @__PURE__ */ c(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
className: "nui-accordion__header",
|
|
28
|
+
"aria-expanded": i,
|
|
29
|
+
"aria-controls": `panel-${n.id}`,
|
|
30
|
+
id: `accordion-${n.id}`,
|
|
31
|
+
onClick: () => u(n.id),
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ o("span", { className: "nui-accordion__title", children: n.title }),
|
|
34
|
+
/* @__PURE__ */ o(
|
|
35
|
+
"svg",
|
|
36
|
+
{
|
|
37
|
+
className: "nui-accordion__icon",
|
|
38
|
+
width: "20",
|
|
39
|
+
height: "20",
|
|
40
|
+
viewBox: "0 0 24 24",
|
|
41
|
+
fill: "none",
|
|
42
|
+
stroke: "currentColor",
|
|
43
|
+
strokeWidth: "2",
|
|
44
|
+
strokeLinecap: "round",
|
|
45
|
+
strokeLinejoin: "round",
|
|
46
|
+
"aria-hidden": "true",
|
|
47
|
+
children: /* @__PURE__ */ o("path", { d: "m6 9 6 6 6-6" })
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
/* @__PURE__ */ o(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
id: `panel-${n.id}`,
|
|
57
|
+
role: "region",
|
|
58
|
+
"aria-labelledby": `accordion-${n.id}`,
|
|
59
|
+
className: "nui-accordion__panel",
|
|
60
|
+
children: /* @__PURE__ */ o("div", { className: "nui-accordion__content", children: n.content })
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
n.id
|
|
66
|
+
);
|
|
46
67
|
}) });
|
|
47
68
|
}
|
|
48
69
|
export {
|
|
49
|
-
|
|
70
|
+
k as Accordion
|
|
50
71
|
};
|
|
51
72
|
//# sourceMappingURL=Accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.js","sources":["../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState } from 'react';\nimport { cn } from '../../utils';\nimport './Accordion.css';\n\nexport interface AccordionItem {\n id: string;\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n /** ID of the item that should be open by default */\n defaultOpenId?: string;\n /** If true, allows multiple accordion panels to remain open simultaneously */\n multiple?: boolean;\n className?: string;\n}\n\n/**\n * Accordion Component\n * * A progressively disclosed content container.\n * Implements the WAI-ARIA Accordion pattern for screen reader and keyboard accessibility.\n */\nexport function Accordion({\n items,\n defaultOpenId,\n multiple = false,\n className = '',\n}: AccordionProps) {\n // Initialize state. We use an array even for single-select to maintain a consistent state signature.\n const [openIds, setOpenIds] = useState<string[]>(\n defaultOpenId ? [defaultOpenId] : []\n );\n\n const isOpen = (id: string) => openIds.includes(id);\n\n const toggle = (id: string) => {\n setOpenIds((prev) => {\n if (multiple) {\n // Toggle the specific ID in/out of the array for multiple mode\n return isOpen(id) ? prev.filter((x) => x !== id) : [...prev, id];\n } else {\n // Replace the array entirely for single mode\n return isOpen(id) ? [] : [id];\n }\n });\n };\n\n return (\n <div className={cn(\"nui-accordion\", className)}>\n {items.map((item) => {\n const open = isOpen(item.id);\n\n return (\n <div \n key={item.id} \n className=\"nui-accordion__item\"\n // Expose state to the DOM for CSS attribute selectors (e.g., [data-state=\"open\"])\n // This enables CSS-only animations and styling without JS overhead.\n data-state={open ? 'open' : 'closed'}\n >\n {/* HEADER\n Native <button> is used to ensure out-of-the-box keyboard support.\n Browsers natively translate 'Enter' and 'Space' keydowns on buttons to 'click' events,\n making custom keyboard listeners redundant.\n */}\n <button\n className=\"nui-accordion__header\"\n aria-expanded={open}\n aria-controls={`panel-${item.id}`}\n id={`accordion-${item.id}`}\n onClick={() => toggle(item.id)}\n >\n <span className=\"nui-accordion__title\">{item.title}</span>\n {/* Chevron Icon: aria-hidden=\"true\" prevents screen readers from announcing it */}\n <svg \n className=\"nui-accordion__icon\" \n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" \n fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\"/>\n </svg>\n </button>\n\n {/* PANEL\n Rendered conditionally via CSS (not JS) to allow for enter/exit CSS grid animations.\n aria-labelledby binds the panel context directly to the triggering button.\n */}\n <div\n id={`panel-${item.id}`}\n role=\"region\"\n aria-labelledby={`accordion-${item.id}`}\n className=\"nui-accordion__panel\"\n >\n <div className=\"nui-accordion__content\">\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n}"],"names":["Accordion","items","defaultOpenId","multiple","className","openIds","setOpenIds","useState","isOpen","id","toggle","prev","x","jsx","cn","item","open","jsxs"],"mappings":";;;;AA0BO,SAASA,EAAU;AAAA,EACxB,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AACd,GAAmB;AAEjB,QAAM,CAACC,GAASC,CAAU,IAAIC;AAAA,IAC5BL,IAAgB,CAACA,CAAa,IAAI,CAAA;AAAA,EAAC,GAG/BM,IAAS,CAACC,MAAeJ,EAAQ,SAASI,CAAE,GAE5CC,IAAS,CAACD,MAAe;AAC7B,IAAAH,EAAW,CAACK,MACNR,IAEKK,EAAOC,CAAE,IAAIE,EAAK,OAAO,CAACC,MAAMA,MAAMH,CAAE,IAAI,CAAC,GAAGE,GAAMF,CAAE,IAGxDD,EAAOC,CAAE,IAAI,CAAA,IAAK,CAACA,CAAE,CAE/B;AAAA,EACH;AAEA,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAWC,EAAG,iBAAiBV,CAAS,GAC1C,UAAAH,EAAM,IAAI,CAACc,MAAS;AACnB,UAAMC,IAAOR,EAAOO,EAAK,EAAE;AAE3B,WACE,gBAAAE;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QAGV,cAAYD,IAAO,SAAS;AAAA,QAO5B,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,iBAAeD;AAAA,cACf,iBAAe,SAASD,EAAK,EAAE;AAAA,cAC/B,IAAI,aAAaA,EAAK,EAAE;AAAA,cACxB,SAAS,MAAML,EAAOK,EAAK,EAAE;AAAA,cAE7B,UAAA;AAAA,gBAAA,gBAAAF,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAE,EAAK,OAAM;AAAA,gBAEnD,gBAAAF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAM;AAAA,oBAAK,QAAO;AAAA,oBAAK,SAAQ;AAAA,oBAC/B,MAAK;AAAA,oBAAO,QAAO;AAAA,oBAAe,aAAY;AAAA,oBAAI,eAAc;AAAA,oBAAQ,gBAAe;AAAA,oBACvF,eAAY;AAAA,oBAEZ,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,eAAA,CAAc;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACxB;AAAA,YAAA;AAAA,UAAA;AAAA,UAOF,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI,SAASE,EAAK,EAAE;AAAA,cACpB,MAAK;AAAA,cACL,mBAAiB,aAAaA,EAAK,EAAE;AAAA,cACrC,WAAU;AAAA,cAEV,UAAA,gBAAAF,EAAC,OAAA,EAAI,WAAU,0BACZ,YAAK,QAAA,CACR;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,MA3CKE,EAAK;AAAA,IAAA;AAAA,EA8ChB,CAAC,EAAA,CACH;AAEJ;"}
|
|
@@ -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");;/* empty css */const c=require("../../utils/cn/cn.cjs");function u({variant:r="info",title:n,children:t,closable:s=!1,onClose:i,className:l,...o}){const a=r==="error"||r==="warning"?"alert":"status";return e.jsxs("div",{className:c.cn("nui-alert",l),"data-variant":r,role:a,...o,children:[e.jsxs("div",{className:"nui-alert__content",children:[n&&e.jsx("div",{className:"nui-alert__title",children:n}),e.jsx("div",{className:"nui-alert__description",children:t})]}),s&&e.jsx("button",{type:"button",className:"nui-alert__close","aria-label":"Close alert",onClick:i,children:e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})}exports.Alert=u;
|
|
2
2
|
//# sourceMappingURL=Alert.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.cjs","sources":["../../../src/components/alert/Alert.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Alert.cjs","sources":["../../../src/components/alert/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils';\nimport './Alert.css';\n\ntype AlertVariant = 'info' | 'success' | 'warning' | 'error';\n\n/**\n * We Omit 'title' from the standard HTML attributes because the native HTML 'title' \n * expects a string (for native tooltips). We override it here to accept ReactNode, \n * allowing for rich text, icons, or custom JSX inside the alert's title area.\n */\ninterface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: AlertVariant;\n title?: React.ReactNode;\n children?: React.ReactNode;\n /** Determines if the close icon button is rendered */\n closable?: boolean;\n /** Callback fired when the close button is clicked. \n * Note: The component is controlled; it does not unmount itself. \n */\n onClose?: () => void;\n className?: string;\n}\n\n/**\n * Alert Component\n * * Used to communicate important messages to the user.\n */\nexport function Alert({\n variant = 'info',\n title,\n children,\n closable = false,\n onClose,\n className,\n ...props\n}: AlertProps) {\n // * Accessibility routing: \n // 'error' and 'warning' are high-priority interruptions, mapped to role=\"alert\".\n // 'info' and 'success' are low-priority updates, mapped to role=\"status\" \n // so screen readers don't aggressively interrupt the user.\n const role = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n return (\n <div \n className={cn(\"nui-alert\", className)} \n data-variant={variant}\n role={role}\n {...props}\n >\n <div className=\"nui-alert__content\">\n {title && <div className=\"nui-alert__title\">{title}</div>}\n <div className=\"nui-alert__description\">{children}</div>\n </div>\n\n {closable && (\n <button\n type=\"button\"\n className=\"nui-alert__close\"\n aria-label=\"Close alert\"\n onClick={onClose}\n >\n {/* SVG Close Icon: aria-hidden is not needed because the button has an aria-label */}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n )}\n </div>\n );\n}"],"names":["Alert","variant","title","children","closable","onClose","className","props","role","jsxs","cn","jsx"],"mappings":"yLA4BO,SAASA,EAAM,CACpB,QAAAC,EAAU,OACV,MAAAC,EACA,SAAAC,EACA,SAAAC,EAAW,GACX,QAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAe,CAKb,MAAMC,EAAOP,IAAY,SAAWA,IAAY,UAAY,QAAU,SAEtE,OACEQ,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GAAG,YAAaJ,CAAS,EACpC,eAAcL,EACd,KAAAO,EACC,GAAGD,EAEJ,SAAA,CAAAE,EAAAA,KAAC,MAAA,CAAI,UAAU,qBACZ,SAAA,CAAAP,GAASS,EAAAA,IAAC,MAAA,CAAI,UAAU,mBAAoB,SAAAT,EAAM,EACnDS,EAAAA,IAAC,MAAA,CAAI,UAAU,yBAA0B,SAAAR,CAAA,CAAS,CAAA,EACpD,EAECC,GACCO,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,mBACV,aAAW,cACX,QAASN,EAGT,gBAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,QACrI,SAAA,CAAAM,EAAAA,IAAC,OAAA,CAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAA,CAAK,EACpCA,EAAAA,IAAC,QAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAA,CAAK,CAAA,CAAA,CACtC,CAAA,CAAA,CACF,CAAA,CAAA,CAIR"}
|
|
@@ -1,32 +1,46 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
2
|
/* empty css */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { cn as d } from "../../utils/cn/cn.js";
|
|
4
|
+
function x({
|
|
5
|
+
variant: r = "info",
|
|
6
|
+
title: n,
|
|
6
7
|
children: t,
|
|
7
|
-
closable:
|
|
8
|
-
onClose:
|
|
9
|
-
className:
|
|
8
|
+
closable: l = !1,
|
|
9
|
+
onClose: o,
|
|
10
|
+
className: s,
|
|
11
|
+
...a
|
|
10
12
|
}) {
|
|
11
|
-
const
|
|
12
|
-
return /* @__PURE__ */
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
const c = r === "error" || r === "warning" ? "alert" : "status";
|
|
14
|
+
return /* @__PURE__ */ i(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
className: d("nui-alert", s),
|
|
18
|
+
"data-variant": r,
|
|
19
|
+
role: c,
|
|
20
|
+
...a,
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ i("div", { className: "nui-alert__content", children: [
|
|
23
|
+
n && /* @__PURE__ */ e("div", { className: "nui-alert__title", children: n }),
|
|
24
|
+
/* @__PURE__ */ e("div", { className: "nui-alert__description", children: t })
|
|
25
|
+
] }),
|
|
26
|
+
l && /* @__PURE__ */ e(
|
|
27
|
+
"button",
|
|
28
|
+
{
|
|
29
|
+
type: "button",
|
|
30
|
+
className: "nui-alert__close",
|
|
31
|
+
"aria-label": "Close alert",
|
|
32
|
+
onClick: o,
|
|
33
|
+
children: /* @__PURE__ */ i("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
34
|
+
/* @__PURE__ */ e("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
35
|
+
/* @__PURE__ */ e("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
|
|
36
|
+
] })
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
);
|
|
28
42
|
}
|
|
29
43
|
export {
|
|
30
|
-
|
|
44
|
+
x as Alert
|
|
31
45
|
};
|
|
32
46
|
//# sourceMappingURL=Alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","sources":["../../../src/components/alert/Alert.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Alert.js","sources":["../../../src/components/alert/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils';\nimport './Alert.css';\n\ntype AlertVariant = 'info' | 'success' | 'warning' | 'error';\n\n/**\n * We Omit 'title' from the standard HTML attributes because the native HTML 'title' \n * expects a string (for native tooltips). We override it here to accept ReactNode, \n * allowing for rich text, icons, or custom JSX inside the alert's title area.\n */\ninterface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n variant?: AlertVariant;\n title?: React.ReactNode;\n children?: React.ReactNode;\n /** Determines if the close icon button is rendered */\n closable?: boolean;\n /** Callback fired when the close button is clicked. \n * Note: The component is controlled; it does not unmount itself. \n */\n onClose?: () => void;\n className?: string;\n}\n\n/**\n * Alert Component\n * * Used to communicate important messages to the user.\n */\nexport function Alert({\n variant = 'info',\n title,\n children,\n closable = false,\n onClose,\n className,\n ...props\n}: AlertProps) {\n // * Accessibility routing: \n // 'error' and 'warning' are high-priority interruptions, mapped to role=\"alert\".\n // 'info' and 'success' are low-priority updates, mapped to role=\"status\" \n // so screen readers don't aggressively interrupt the user.\n const role = variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n\n return (\n <div \n className={cn(\"nui-alert\", className)} \n data-variant={variant}\n role={role}\n {...props}\n >\n <div className=\"nui-alert__content\">\n {title && <div className=\"nui-alert__title\">{title}</div>}\n <div className=\"nui-alert__description\">{children}</div>\n </div>\n\n {closable && (\n <button\n type=\"button\"\n className=\"nui-alert__close\"\n aria-label=\"Close alert\"\n onClick={onClose}\n >\n {/* SVG Close Icon: aria-hidden is not needed because the button has an aria-label */}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n )}\n </div>\n );\n}"],"names":["Alert","variant","title","children","closable","onClose","className","props","role","jsxs","cn","jsx"],"mappings":";;;AA4BO,SAASA,EAAM;AAAA,EACpB,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAe;AAKb,QAAMC,IAAOP,MAAY,WAAWA,MAAY,YAAY,UAAU;AAEtE,SACE,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAG,aAAaJ,CAAS;AAAA,MACpC,gBAAcL;AAAA,MACd,MAAAO;AAAA,MACC,GAAGD;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,sBACZ,UAAA;AAAA,UAAAP,KAAS,gBAAAS,EAAC,OAAA,EAAI,WAAU,oBAAoB,UAAAT,GAAM;AAAA,UACnD,gBAAAS,EAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAR,EAAA,CAAS;AAAA,QAAA,GACpD;AAAA,QAECC,KACC,gBAAAO;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,cAAW;AAAA,YACX,SAASN;AAAA,YAGT,4BAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,gBAAe,SACrI,UAAA;AAAA,cAAA,gBAAAM,EAAC,QAAA,EAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAA,CAAK;AAAA,cACpC,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,YAAA,EAAA,CACtC;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),p=require("react");;/* empty css */const j=require("../../utils/cn/cn.cjs");function x(e){if(!e)return"";const r=e.trim().split(/\s+/);return r.length===0?"":r.length===1?r[0].substring(0,2).toUpperCase():(r[0][0]+r[r.length-1][0]).toUpperCase()}function f({src:e,alt:r,name:t,size:n="md",shape:o="circle",status:s,fallbackIcon:c,loading:i,className:l,...u}){const[d,h]=p.useState(!1),v=x(t),g=e&&!d&&!i;return a.jsxs("div",{className:j.cn("nui-avatar",i&&"nui-avatar--loading",l),"data-size":n,"data-shape":o,role:"img","aria-label":r||t||"Avatar",...u,children:[g?a.jsx("img",{src:e,alt:r||t,className:"nui-avatar__image",onError:()=>h(!0)}):a.jsx("div",{className:"nui-avatar__fallback","aria-hidden":"true",children:!i&&(v||c||a.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[a.jsx("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),a.jsx("circle",{cx:"12",cy:"7",r:"4"})]}))}),s&&a.jsx("span",{className:"nui-avatar__status","data-status":s,role:"status","aria-label":s})]})}exports.Avatar=f;
|
|
2
2
|
//# sourceMappingURL=Avatar.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.cjs","sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"Avatar.cjs","sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState } from 'react';\nimport { cn } from '../../utils';\nimport './Avatar.css';\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'rounded' | 'square';\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n src?: string;\n alt?: string;\n name?: string;\n size?: AvatarSize;\n shape?: AvatarShape;\n status?: AvatarStatus;\n fallbackIcon?: React.ReactNode; \n loading?: boolean; \n className?: string;\n}\n\n/**\n * Utility to extract initials from a name string.\n * Handles single words and multi-word names appropriately.\n */\nfunction getInitials(name?: string): string {\n if (!name) return '';\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 0) return '';\n if (parts.length === 1) return parts[0].substring(0, 2).toUpperCase();\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\n/**\n * Avatar Component\n * * A visual representation of a user or entity.\n * Implements a strict fallback sequence: Image -> Initials -> Fallback Icon -> Default Icon.\n */\nexport function Avatar({\n src,\n alt,\n name,\n size = 'md',\n shape = 'circle',\n status,\n fallbackIcon, \n loading, \n className,\n ...props \n}: AvatarProps) {\n // * Native error handling: We track if the image fails to load via the native onError event\n // to seamlessly trigger the fallback UI without needing complex fetch checks.\n const [hasError, setHasError] = useState(false);\n const initials = getInitials(name);\n \n // If loading is true, we force the fallback/skeleton state by hiding the image\n const showImage = src && !hasError && !loading;\n\n return (\n <div\n className={cn(\n \"nui-avatar\", \n loading && \"nui-avatar--loading\", \n className\n )}\n data-size={size}\n data-shape={shape}\n role=\"img\"\n aria-label={alt || name || \"Avatar\"}\n {...props} \n >\n {showImage ? (\n <img\n src={src}\n alt={alt || name}\n className=\"nui-avatar__image\"\n onError={() => setHasError(true)}\n />\n ) : (\n <div className=\"nui-avatar__fallback\" aria-hidden=\"true\">\n {/* Fallback Waterfall Logic */}\n {!loading && (initials || fallbackIcon || (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path>\n <circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\n </svg>\n ))}\n </div>\n )}\n\n {status && (\n <span \n className=\"nui-avatar__status\" \n data-status={status} \n role=\"status\"\n aria-label={status}\n />\n )}\n </div>\n );\n}"],"names":["getInitials","name","parts","Avatar","src","alt","size","shape","status","fallbackIcon","loading","className","props","hasError","setHasError","useState","initials","showImage","jsxs","cn","jsx"],"mappings":"6MA0BA,SAASA,EAAYC,EAAuB,CAC1C,GAAI,CAACA,EAAM,MAAO,GAClB,MAAMC,EAAQD,EAAK,KAAA,EAAO,MAAM,KAAK,EACrC,OAAIC,EAAM,SAAW,EAAU,GAC3BA,EAAM,SAAW,EAAUA,EAAM,CAAC,EAAE,UAAU,EAAG,CAAC,EAAE,YAAA,GAChDA,EAAM,CAAC,EAAE,CAAC,EAAIA,EAAMA,EAAM,OAAS,CAAC,EAAE,CAAC,GAAG,YAAA,CACpD,CAOO,SAASC,EAAO,CACrB,IAAAC,EACA,IAAAC,EACA,KAAAJ,EACA,KAAAK,EAAO,KACP,MAAAC,EAAQ,SACR,OAAAC,EACA,aAAAC,EACA,QAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAgB,CAGd,KAAM,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAK,EACxCC,EAAWhB,EAAYC,CAAI,EAG3BgB,EAAYb,GAAO,CAACS,GAAY,CAACH,EAEvC,OACEQ,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GACT,aACAT,GAAW,sBACXC,CAAA,EAEF,YAAWL,EACX,aAAYC,EACZ,KAAK,MACL,aAAYF,GAAOJ,GAAQ,SAC1B,GAAGW,EAEH,SAAA,CAAAK,EACCG,EAAAA,IAAC,MAAA,CACC,IAAAhB,EACA,IAAKC,GAAOJ,EACZ,UAAU,oBACV,QAAS,IAAMa,EAAY,EAAI,CAAA,CAAA,EAGjCM,EAAAA,IAAC,MAAA,CAAI,UAAU,uBAAuB,cAAY,OAE/C,SAAA,CAACV,IAAYM,GAAYP,GACxBS,EAAAA,KAAC,MAAA,CAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,QACrI,SAAA,CAAAE,EAAAA,IAAC,OAAA,CAAK,EAAE,2CAAA,CAA4C,QACnD,SAAA,CAAO,GAAG,KAAK,GAAG,IAAI,EAAE,GAAA,CAAI,CAAA,CAAA,CAC/B,EAAA,CAEJ,EAGDZ,GACCY,EAAAA,IAAC,OAAA,CACC,UAAU,qBACV,cAAaZ,EACb,KAAK,SACL,aAAYA,CAAA,CAAA,CACd,CAAA,CAAA,CAIR"}
|
|
@@ -1,51 +1,65 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
1
|
+
import { jsxs as n, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f } from "react";
|
|
3
3
|
/* empty css */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import { cn as g } from "../../utils/cn/cn.js";
|
|
5
|
+
function _(a) {
|
|
6
|
+
if (!a) return "";
|
|
7
|
+
const r = a.trim().split(/\s+/);
|
|
8
|
+
return r.length === 0 ? "" : r.length === 1 ? r[0].substring(0, 2).toUpperCase() : (r[0][0] + r[r.length - 1][0]).toUpperCase();
|
|
8
9
|
}
|
|
9
|
-
function
|
|
10
|
-
src:
|
|
11
|
-
alt:
|
|
12
|
-
name:
|
|
13
|
-
size:
|
|
14
|
-
shape:
|
|
15
|
-
status:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
function j({
|
|
11
|
+
src: a,
|
|
12
|
+
alt: r,
|
|
13
|
+
name: e,
|
|
14
|
+
size: o = "md",
|
|
15
|
+
shape: l = "circle",
|
|
16
|
+
status: i,
|
|
17
|
+
fallbackIcon: c,
|
|
18
|
+
loading: s,
|
|
19
|
+
className: u,
|
|
20
|
+
...d
|
|
19
21
|
}) {
|
|
20
|
-
const [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"aria-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
22
|
+
const [h, p] = f(!1), m = _(e), v = a && !h && !s;
|
|
23
|
+
return /* @__PURE__ */ n(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: g(
|
|
27
|
+
"nui-avatar",
|
|
28
|
+
s && "nui-avatar--loading",
|
|
29
|
+
u
|
|
30
|
+
),
|
|
31
|
+
"data-size": o,
|
|
32
|
+
"data-shape": l,
|
|
33
|
+
role: "img",
|
|
34
|
+
"aria-label": r || e || "Avatar",
|
|
35
|
+
...d,
|
|
36
|
+
children: [
|
|
37
|
+
v ? /* @__PURE__ */ t(
|
|
38
|
+
"img",
|
|
39
|
+
{
|
|
40
|
+
src: a,
|
|
41
|
+
alt: r || e,
|
|
42
|
+
className: "nui-avatar__image",
|
|
43
|
+
onError: () => p(!0)
|
|
44
|
+
}
|
|
45
|
+
) : /* @__PURE__ */ t("div", { className: "nui-avatar__fallback", "aria-hidden": "true", children: !s && (m || c || /* @__PURE__ */ n("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
46
|
+
/* @__PURE__ */ t("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
|
|
47
|
+
/* @__PURE__ */ t("circle", { cx: "12", cy: "7", r: "4" })
|
|
48
|
+
] })) }),
|
|
49
|
+
i && /* @__PURE__ */ t(
|
|
50
|
+
"span",
|
|
51
|
+
{
|
|
52
|
+
className: "nui-avatar__status",
|
|
53
|
+
"data-status": i,
|
|
54
|
+
role: "status",
|
|
55
|
+
"aria-label": i
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
);
|
|
47
61
|
}
|
|
48
62
|
export {
|
|
49
|
-
|
|
63
|
+
j as Avatar
|
|
50
64
|
};
|
|
51
65
|
//# sourceMappingURL=Avatar.js.map
|