@eggspot/ui 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Badge.d.ts +15 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Badge.js +29 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +12 -0
- package/dist/components/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Breadcrumb.js +28 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Button.d.ts +53 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +81 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Button.machine.d.ts +9 -0
- package/dist/components/Button.machine.d.ts.map +1 -0
- package/dist/components/Button.machine.js +50 -0
- package/dist/components/Button.machine.js.map +1 -0
- package/dist/components/Button.variants.d.ts +10 -0
- package/dist/components/Button.variants.d.ts.map +1 -0
- package/dist/components/Button.variants.js +214 -0
- package/dist/components/Button.variants.js.map +1 -0
- package/dist/components/ButtonGroup.d.ts +9 -0
- package/dist/components/ButtonGroup.d.ts.map +1 -0
- package/dist/components/ButtonGroup.js +23 -0
- package/dist/components/ButtonGroup.js.map +1 -0
- package/dist/components/Calendar.d.ts +24 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +64 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/Calendar.utils.d.ts +6 -0
- package/dist/components/Calendar.utils.d.ts.map +1 -0
- package/dist/components/Calendar.utils.js +17 -0
- package/dist/components/Calendar.utils.js.map +1 -0
- package/dist/components/Card.d.ts +8 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +19 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Checkbox.d.ts +36 -0
- package/dist/components/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox.js +55 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Collapsible.d.ts +20 -0
- package/dist/components/Collapsible.d.ts.map +1 -0
- package/dist/components/Collapsible.js +15 -0
- package/dist/components/Collapsible.js.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +35 -0
- package/dist/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmDialog.js +81 -0
- package/dist/components/ConfirmDialog.js.map +1 -0
- package/dist/components/CopyButton.d.ts +67 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +51 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayout.d.ts +3 -0
- package/dist/components/DashboardLayout/DashboardLayout.d.ts.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayout.js +38 -0
- package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayoutContent.d.ts +9 -0
- package/dist/components/DashboardLayout/DashboardLayoutContent.d.ts.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayoutContent.js +10 -0
- package/dist/components/DashboardLayout/DashboardLayoutContent.js.map +1 -0
- package/dist/components/DashboardLayout/index.d.ts +4 -0
- package/dist/components/DashboardLayout/index.d.ts.map +1 -0
- package/dist/components/DashboardLayout/index.js +3 -0
- package/dist/components/DashboardLayout/index.js.map +1 -0
- package/dist/components/DashboardLayout/types.d.ts +37 -0
- package/dist/components/DashboardLayout/types.d.ts.map +1 -0
- package/dist/components/DashboardLayout/types.js +2 -0
- package/dist/components/DashboardLayout/types.js.map +1 -0
- package/dist/components/DataTable/DataTable.d.ts +9 -0
- package/dist/components/DataTable/DataTable.d.ts.map +1 -0
- package/dist/components/DataTable/DataTable.js +271 -0
- package/dist/components/DataTable/DataTable.js.map +1 -0
- package/dist/components/DataTable/DataTableColumnHeader.d.ts +11 -0
- package/dist/components/DataTable/DataTableColumnHeader.d.ts.map +1 -0
- package/dist/components/DataTable/DataTableColumnHeader.js +26 -0
- package/dist/components/DataTable/DataTableColumnHeader.js.map +1 -0
- package/dist/components/DataTable/DataTableDisplaySettings.d.ts +8 -0
- package/dist/components/DataTable/DataTableDisplaySettings.d.ts.map +1 -0
- package/dist/components/DataTable/DataTableDisplaySettings.js +88 -0
- package/dist/components/DataTable/DataTableDisplaySettings.js.map +1 -0
- package/dist/components/DataTable/DataTableFloatingBar.d.ts +8 -0
- package/dist/components/DataTable/DataTableFloatingBar.d.ts.map +1 -0
- package/dist/components/DataTable/DataTableFloatingBar.js +11 -0
- package/dist/components/DataTable/DataTableFloatingBar.js.map +1 -0
- package/dist/components/DataTable/DataTablePagination.d.ts +11 -0
- package/dist/components/DataTable/DataTablePagination.d.ts.map +1 -0
- package/dist/components/DataTable/DataTablePagination.js +68 -0
- package/dist/components/DataTable/DataTablePagination.js.map +1 -0
- package/dist/components/DataTable/DataTableStates.d.ts +13 -0
- package/dist/components/DataTable/DataTableStates.d.ts.map +1 -0
- package/dist/components/DataTable/DataTableStates.js +17 -0
- package/dist/components/DataTable/DataTableStates.js.map +1 -0
- package/dist/components/DataTable/DataTableToolbarContainer.d.ts +7 -0
- package/dist/components/DataTable/DataTableToolbarContainer.d.ts.map +1 -0
- package/dist/components/DataTable/DataTableToolbarContainer.js +7 -0
- package/dist/components/DataTable/DataTableToolbarContainer.js.map +1 -0
- package/dist/components/DataTable/hooks/use-data-table-settings.d.ts +19 -0
- package/dist/components/DataTable/hooks/use-data-table-settings.d.ts.map +1 -0
- package/dist/components/DataTable/hooks/use-data-table-settings.js +70 -0
- package/dist/components/DataTable/hooks/use-data-table-settings.js.map +1 -0
- package/dist/components/DataTable/index.d.ts +4 -0
- package/dist/components/DataTable/index.d.ts.map +1 -0
- package/dist/components/DataTable/index.js +3 -0
- package/dist/components/DataTable/index.js.map +1 -0
- package/dist/components/DataTable/types/data-table.d.ts +76 -0
- package/dist/components/DataTable/types/data-table.d.ts.map +1 -0
- package/dist/components/DataTable/types/data-table.js +2 -0
- package/dist/components/DataTable/types/data-table.js.map +1 -0
- package/dist/components/DatePicker.d.ts +19 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +49 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DatePicker.utils.d.ts +3 -0
- package/dist/components/DatePicker.utils.d.ts.map +1 -0
- package/dist/components/DatePicker.utils.js +23 -0
- package/dist/components/DatePicker.utils.js.map +1 -0
- package/dist/components/Datefield.d.ts +25 -0
- package/dist/components/Datefield.d.ts.map +1 -0
- package/dist/components/Datefield.js +29 -0
- package/dist/components/Datefield.js.map +1 -0
- package/dist/components/Datefield.utils.d.ts +3 -0
- package/dist/components/Datefield.utils.d.ts.map +1 -0
- package/dist/components/Datefield.utils.js +11 -0
- package/dist/components/Datefield.utils.js.map +1 -0
- package/dist/components/Dialog.d.ts +21 -0
- package/dist/components/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog.js +23 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/Field.d.ts +10 -0
- package/dist/components/Field.d.ts.map +1 -0
- package/dist/components/Field.js +32 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/Filter/Filter.d.ts +4 -0
- package/dist/components/Filter/Filter.d.ts.map +1 -0
- package/dist/components/Filter/Filter.js +8 -0
- package/dist/components/Filter/Filter.js.map +1 -0
- package/dist/components/Filter/Filter.store.d.ts +13 -0
- package/dist/components/Filter/Filter.store.d.ts.map +1 -0
- package/dist/components/Filter/Filter.store.js +61 -0
- package/dist/components/Filter/Filter.store.js.map +1 -0
- package/dist/components/Filter/Filter.types.d.ts +66 -0
- package/dist/components/Filter/Filter.types.d.ts.map +1 -0
- package/dist/components/Filter/Filter.types.js +15 -0
- package/dist/components/Filter/Filter.types.js.map +1 -0
- package/dist/components/Filter/FilterBar.d.ts +7 -0
- package/dist/components/Filter/FilterBar.d.ts.map +1 -0
- package/dist/components/Filter/FilterBar.js +28 -0
- package/dist/components/Filter/FilterBar.js.map +1 -0
- package/dist/components/Filter/FilterBuilder.d.ts +3 -0
- package/dist/components/Filter/FilterBuilder.d.ts.map +1 -0
- package/dist/components/Filter/FilterBuilder.js +47 -0
- package/dist/components/Filter/FilterBuilder.js.map +1 -0
- package/dist/components/Filter/FilterField/DateModeRowValue.d.ts +5 -0
- package/dist/components/Filter/FilterField/DateModeRowValue.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/DateModeRowValue.js +150 -0
- package/dist/components/Filter/FilterField/DateModeRowValue.js.map +1 -0
- package/dist/components/Filter/FilterField/FilterAsyncSelect.d.ts +13 -0
- package/dist/components/Filter/FilterField/FilterAsyncSelect.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/FilterAsyncSelect.js +62 -0
- package/dist/components/Filter/FilterField/FilterAsyncSelect.js.map +1 -0
- package/dist/components/Filter/FilterField/FilterDateMode.d.ts +2 -0
- package/dist/components/Filter/FilterField/FilterDateMode.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/FilterDateMode.js +167 -0
- package/dist/components/Filter/FilterField/FilterDateMode.js.map +1 -0
- package/dist/components/Filter/FilterField/FilterDateRange.d.ts +7 -0
- package/dist/components/Filter/FilterField/FilterDateRange.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/FilterDateRange.js +60 -0
- package/dist/components/Filter/FilterField/FilterDateRange.js.map +1 -0
- package/dist/components/Filter/FilterField/FilterSelect.d.ts +12 -0
- package/dist/components/Filter/FilterField/FilterSelect.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/FilterSelect.js +72 -0
- package/dist/components/Filter/FilterField/FilterSelect.js.map +1 -0
- package/dist/components/Filter/FilterField/FilterSingleDate.d.ts +8 -0
- package/dist/components/Filter/FilterField/FilterSingleDate.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/FilterSingleDate.js +102 -0
- package/dist/components/Filter/FilterField/FilterSingleDate.js.map +1 -0
- package/dist/components/Filter/FilterField/OptionItem.d.ts +10 -0
- package/dist/components/Filter/FilterField/OptionItem.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/OptionItem.js +20 -0
- package/dist/components/Filter/FilterField/OptionItem.js.map +1 -0
- package/dist/components/Filter/FilterField/index.d.ts +7 -0
- package/dist/components/Filter/FilterField/index.d.ts.map +1 -0
- package/dist/components/Filter/FilterField/index.js +7 -0
- package/dist/components/Filter/FilterField/index.js.map +1 -0
- package/dist/components/Filter/FilterRow.d.ts +7 -0
- package/dist/components/Filter/FilterRow.d.ts.map +1 -0
- package/dist/components/Filter/FilterRow.js +152 -0
- package/dist/components/Filter/FilterRow.js.map +1 -0
- package/dist/components/Filter/index.d.ts +7 -0
- package/dist/components/Filter/index.d.ts.map +1 -0
- package/dist/components/Filter/index.js +6 -0
- package/dist/components/Filter/index.js.map +1 -0
- package/dist/components/Form.d.ts +32 -0
- package/dist/components/Form.d.ts.map +1 -0
- package/dist/components/Form.js +82 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Heading.d.ts +10 -0
- package/dist/components/Heading.d.ts.map +1 -0
- package/dist/components/Heading.js +27 -0
- package/dist/components/Heading.js.map +1 -0
- package/dist/components/Input.d.ts +43 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +58 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputOTP.d.ts +12 -0
- package/dist/components/InputOTP.d.ts.map +1 -0
- package/dist/components/InputOTP.js +24 -0
- package/dist/components/InputOTP.js.map +1 -0
- package/dist/components/Label.d.ts +9 -0
- package/dist/components/Label.d.ts.map +1 -0
- package/dist/components/Label.js +19 -0
- package/dist/components/Label.js.map +1 -0
- package/dist/components/Layout.d.ts +47 -0
- package/dist/components/Layout.d.ts.map +1 -0
- package/dist/components/Layout.js +78 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/ListBox.d.ts +8 -0
- package/dist/components/ListBox.d.ts.map +1 -0
- package/dist/components/ListBox.js +28 -0
- package/dist/components/ListBox.js.map +1 -0
- package/dist/components/Menu.d.ts +19 -0
- package/dist/components/Menu.d.ts.map +1 -0
- package/dist/components/Menu.js +29 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/NativeSelect.d.ts +10 -0
- package/dist/components/NativeSelect.d.ts.map +1 -0
- package/dist/components/NativeSelect.js +36 -0
- package/dist/components/NativeSelect.js.map +1 -0
- package/dist/components/NumberInput.d.ts +12 -0
- package/dist/components/NumberInput.d.ts.map +1 -0
- package/dist/components/NumberInput.js +25 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/Popover.d.ts +9 -0
- package/dist/components/Popover.d.ts.map +1 -0
- package/dist/components/Popover.js +17 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Provider.d.ts +10 -0
- package/dist/components/Provider.d.ts.map +1 -0
- package/dist/components/Provider.js +11 -0
- package/dist/components/Provider.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +37 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +61 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/Resizable.d.ts +25 -0
- package/dist/components/Resizable.d.ts.map +1 -0
- package/dist/components/Resizable.js +19 -0
- package/dist/components/Resizable.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +6 -0
- package/dist/components/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea.js +14 -0
- package/dist/components/ScrollArea.js.map +1 -0
- package/dist/components/Select.d.ts +88 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +174 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Select.utils.d.ts +13 -0
- package/dist/components/Select.utils.d.ts.map +1 -0
- package/dist/components/Select.utils.js +41 -0
- package/dist/components/Select.utils.js.map +1 -0
- package/dist/components/Separator.d.ts +4 -0
- package/dist/components/Separator.d.ts.map +1 -0
- package/dist/components/Separator.js +7 -0
- package/dist/components/Separator.js.map +1 -0
- package/dist/components/Sheet.d.ts +19 -0
- package/dist/components/Sheet.d.ts.map +1 -0
- package/dist/components/Sheet.js +24 -0
- package/dist/components/Sheet.js.map +1 -0
- package/dist/components/Sidebar/LinkItem.d.ts +34 -0
- package/dist/components/Sidebar/LinkItem.d.ts.map +1 -0
- package/dist/components/Sidebar/LinkItem.js +19 -0
- package/dist/components/Sidebar/LinkItem.js.map +1 -0
- package/dist/components/Sidebar/PageTree.d.ts +46 -0
- package/dist/components/Sidebar/PageTree.d.ts.map +1 -0
- package/dist/components/Sidebar/PageTree.js +46 -0
- package/dist/components/Sidebar/PageTree.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.d.ts +94 -0
- package/dist/components/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/components/Sidebar/Sidebar.js +328 -0
- package/dist/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/components/Sidebar/SidebarNavTree.d.ts +26 -0
- package/dist/components/Sidebar/SidebarNavTree.d.ts.map +1 -0
- package/dist/components/Sidebar/SidebarNavTree.js +32 -0
- package/dist/components/Sidebar/SidebarNavTree.js.map +1 -0
- package/dist/components/Sidebar/Tabs.d.ts +27 -0
- package/dist/components/Sidebar/Tabs.d.ts.map +1 -0
- package/dist/components/Sidebar/Tabs.js +49 -0
- package/dist/components/Sidebar/Tabs.js.map +1 -0
- package/dist/components/Sidebar/index.d.ts +6 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/index.js +22 -0
- package/dist/components/Sidebar/index.js.map +1 -0
- package/dist/components/Sonner.d.ts +16 -0
- package/dist/components/Sonner.d.ts.map +1 -0
- package/dist/components/Sonner.js +38 -0
- package/dist/components/Sonner.js.map +1 -0
- package/dist/components/Spinner.d.ts +3 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +7 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Switch.d.ts +4 -0
- package/dist/components/Switch.d.ts.map +1 -0
- package/dist/components/Switch.js +19 -0
- package/dist/components/Switch.js.map +1 -0
- package/dist/components/Text.d.ts +10 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Text.js +22 -0
- package/dist/components/Text.js.map +1 -0
- package/dist/components/Tooltip.d.ts +8 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip.js +24 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Virtualizer.d.ts +8 -0
- package/dist/components/Virtualizer.d.ts.map +1 -0
- package/dist/components/Virtualizer.js +8 -0
- package/dist/components/Virtualizer.js.map +1 -0
- package/dist/consts/config.d.ts +3 -0
- package/dist/consts/config.d.ts.map +1 -0
- package/dist/consts/config.js +3 -0
- package/dist/consts/config.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +6 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +53 -5
- package/eslint.config.js +0 -41
- package/resolve-catalog.js +0 -61
- package/src/components/Button.machine.tsx +0 -50
- package/src/components/Button.tsx +0 -249
- package/src/components/Button.variants.tsx +0 -186
- package/src/components/ButtonGroup.tsx +0 -56
- package/src/components/Calendar.tsx +0 -275
- package/src/components/Calendar.utils.tsx +0 -22
- package/src/components/Checkbox.tsx +0 -199
- package/src/components/ConfirmDialog.tsx +0 -183
- package/src/components/DashboardLayout/DashboardLayout.tsx +0 -348
- package/src/components/DashboardLayout/SidebarNav.tsx +0 -509
- package/src/components/DashboardLayout/index.ts +0 -33
- package/src/components/DataTable/DataTable.tsx +0 -557
- package/src/components/DataTable/DataTableColumnHeader.tsx +0 -122
- package/src/components/DataTable/DataTableDisplaySettings.tsx +0 -265
- package/src/components/DataTable/DataTableFloatingBar.tsx +0 -44
- package/src/components/DataTable/DataTablePagination.tsx +0 -168
- package/src/components/DataTable/DataTableStates.tsx +0 -69
- package/src/components/DataTable/DataTableToolbarContainer.tsx +0 -47
- package/src/components/DataTable/hooks/use-data-table-settings.ts +0 -101
- package/src/components/DataTable/index.ts +0 -7
- package/src/components/DataTable/types/data-table.ts +0 -97
- package/src/components/DatePicker.tsx +0 -213
- package/src/components/DatePicker.utils.tsx +0 -38
- package/src/components/Datefield.tsx +0 -109
- package/src/components/Datefield.utils.ts +0 -10
- package/src/components/Dialog.tsx +0 -167
- package/src/components/Field.tsx +0 -49
- package/src/components/Filter/Filter.store.tsx +0 -122
- package/src/components/Filter/Filter.tsx +0 -11
- package/src/components/Filter/Filter.types.ts +0 -107
- package/src/components/Filter/FilterBar.tsx +0 -38
- package/src/components/Filter/FilterBuilder.tsx +0 -158
- package/src/components/Filter/FilterField/DateModeRowValue.tsx +0 -250
- package/src/components/Filter/FilterField/FilterAsyncSelect.tsx +0 -191
- package/src/components/Filter/FilterField/FilterDateMode.tsx +0 -241
- package/src/components/Filter/FilterField/FilterDateRange.tsx +0 -169
- package/src/components/Filter/FilterField/FilterSelect.tsx +0 -208
- package/src/components/Filter/FilterField/FilterSingleDate.tsx +0 -277
- package/src/components/Filter/FilterField/OptionItem.tsx +0 -112
- package/src/components/Filter/FilterField/index.ts +0 -6
- package/src/components/Filter/FilterRow.tsx +0 -527
- package/src/components/Filter/index.ts +0 -17
- package/src/components/Form.tsx +0 -195
- package/src/components/Heading.tsx +0 -41
- package/src/components/Input.tsx +0 -221
- package/src/components/InputOTP.tsx +0 -78
- package/src/components/Label.tsx +0 -65
- package/src/components/Layout.tsx +0 -129
- package/src/components/ListBox.tsx +0 -97
- package/src/components/Menu.tsx +0 -152
- package/src/components/NativeSelect.tsx +0 -77
- package/src/components/NumberInput.tsx +0 -114
- package/src/components/Popover.tsx +0 -44
- package/src/components/Provider.tsx +0 -22
- package/src/components/RadioGroup.tsx +0 -191
- package/src/components/Resizable.tsx +0 -71
- package/src/components/ScrollArea.tsx +0 -57
- package/src/components/Select.tsx +0 -626
- package/src/components/Select.utils.tsx +0 -64
- package/src/components/Separator.tsx +0 -25
- package/src/components/Sheet.tsx +0 -147
- package/src/components/Sonner.tsx +0 -96
- package/src/components/Spinner.tsx +0 -30
- package/src/components/Switch.tsx +0 -51
- package/src/components/Text.tsx +0 -35
- package/src/components/Tooltip.tsx +0 -58
- package/src/consts/config.ts +0 -2
- package/src/hooks/.gitkeep +0 -0
- package/src/lib/utils.ts +0 -10
- package/tsconfig.json +0 -27
- package/tsconfig.lint.json +0 -8
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import React, { useContext } from "react"
|
|
4
|
-
import { buttonVariants } from "@eggspot/ui/components/Button"
|
|
5
|
-
import {
|
|
6
|
-
getCalendarMonths,
|
|
7
|
-
getCalendarYears,
|
|
8
|
-
} from "@eggspot/ui/components/Calendar.utils"
|
|
9
|
-
import {
|
|
10
|
-
NativeSelect,
|
|
11
|
-
NativeSelectOption,
|
|
12
|
-
} from "@eggspot/ui/components/NativeSelect"
|
|
13
|
-
import { cn } from "@eggspot/ui/lib/utils"
|
|
14
|
-
import {
|
|
15
|
-
CalendarDate,
|
|
16
|
-
getLocalTimeZone,
|
|
17
|
-
parseDate,
|
|
18
|
-
today,
|
|
19
|
-
} from "@internationalized/date"
|
|
20
|
-
import { ChevronLeft, ChevronRight } from "lucide-react"
|
|
21
|
-
import {
|
|
22
|
-
Button as AriaButton,
|
|
23
|
-
Calendar as AriaCalendar,
|
|
24
|
-
CalendarCell as AriaCalendarCell,
|
|
25
|
-
CalendarCellProps as AriaCalendarCellProps,
|
|
26
|
-
CalendarGrid as AriaCalendarGrid,
|
|
27
|
-
CalendarGridBody as AriaCalendarGridBody,
|
|
28
|
-
CalendarGridBodyProps as AriaCalendarGridBodyProps,
|
|
29
|
-
CalendarGridHeader as AriaCalendarGridHeader,
|
|
30
|
-
CalendarGridHeaderProps as AriaCalendarGridHeaderProps,
|
|
31
|
-
CalendarGridProps as AriaCalendarGridProps,
|
|
32
|
-
CalendarHeaderCell as AriaCalendarHeaderCell,
|
|
33
|
-
CalendarHeaderCellProps as AriaCalendarHeaderCellProps,
|
|
34
|
-
RangeCalendar as AriaRangeCalendar,
|
|
35
|
-
CalendarStateContext,
|
|
36
|
-
composeRenderProps,
|
|
37
|
-
RangeCalendarStateContext,
|
|
38
|
-
useLocale,
|
|
39
|
-
} from "react-aria-components"
|
|
40
|
-
|
|
41
|
-
const Calendar = AriaCalendar
|
|
42
|
-
|
|
43
|
-
const RangeCalendar = AriaRangeCalendar
|
|
44
|
-
|
|
45
|
-
const months = getCalendarMonths()
|
|
46
|
-
const years = getCalendarYears()
|
|
47
|
-
|
|
48
|
-
const CalendarHeading = (props: React.HTMLAttributes<HTMLElement>) => {
|
|
49
|
-
const { direction } = useLocale()
|
|
50
|
-
const calendarState = useContext(CalendarStateContext)
|
|
51
|
-
const rangeCalendarState = useContext(RangeCalendarStateContext)
|
|
52
|
-
const state = calendarState ?? rangeCalendarState
|
|
53
|
-
|
|
54
|
-
// RangeCalendar and Calendar have visibleRange.
|
|
55
|
-
const visibleStart = (state as any)?.visibleRange?.start as
|
|
56
|
-
| CalendarDate
|
|
57
|
-
| undefined
|
|
58
|
-
|
|
59
|
-
const baseDate =
|
|
60
|
-
state?.focusedDate ?? visibleStart ?? today(getLocalTimeZone())
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<header className="flex w-full items-center gap-0.5 pb-1" {...props}>
|
|
64
|
-
<h2 className="flex flex-1 items-center pl-1">
|
|
65
|
-
<NativeSelect
|
|
66
|
-
size="sm"
|
|
67
|
-
variant="ghost"
|
|
68
|
-
value={baseDate.month}
|
|
69
|
-
onChange={(e) => {
|
|
70
|
-
const month = Number(e.target.value)
|
|
71
|
-
const current =
|
|
72
|
-
state?.focusedDate ?? visibleStart ?? today(getLocalTimeZone())
|
|
73
|
-
|
|
74
|
-
const nextFocusedDate = new CalendarDate(
|
|
75
|
-
current.year,
|
|
76
|
-
month,
|
|
77
|
-
current.day
|
|
78
|
-
)
|
|
79
|
-
state?.setFocusedDate(nextFocusedDate)
|
|
80
|
-
}}
|
|
81
|
-
>
|
|
82
|
-
{months.map((month) => (
|
|
83
|
-
<NativeSelectOption key={month.value} value={month.value}>
|
|
84
|
-
{month.label}
|
|
85
|
-
</NativeSelectOption>
|
|
86
|
-
))}
|
|
87
|
-
</NativeSelect>
|
|
88
|
-
|
|
89
|
-
<NativeSelect
|
|
90
|
-
size="sm"
|
|
91
|
-
variant="ghost"
|
|
92
|
-
value={baseDate.year}
|
|
93
|
-
onChange={(e) => {
|
|
94
|
-
const year = Number(e.target.value)
|
|
95
|
-
const current =
|
|
96
|
-
state?.focusedDate ?? visibleStart ?? today(getLocalTimeZone())
|
|
97
|
-
|
|
98
|
-
const nextFocusedDate = new CalendarDate(
|
|
99
|
-
year,
|
|
100
|
-
current.month,
|
|
101
|
-
current.day
|
|
102
|
-
)
|
|
103
|
-
state?.setFocusedDate(nextFocusedDate)
|
|
104
|
-
}}
|
|
105
|
-
>
|
|
106
|
-
{years.map((year) => (
|
|
107
|
-
<NativeSelectOption key={year} value={year}>
|
|
108
|
-
{year}
|
|
109
|
-
</NativeSelectOption>
|
|
110
|
-
))}
|
|
111
|
-
</NativeSelect>
|
|
112
|
-
</h2>
|
|
113
|
-
|
|
114
|
-
<AriaButton
|
|
115
|
-
slot="previous"
|
|
116
|
-
className={cn(
|
|
117
|
-
buttonVariants({ variant: "ghost", intent: "secondary" }),
|
|
118
|
-
"text-accent-11 size-9 rounded-full bg-transparent p-0",
|
|
119
|
-
"data-disabled:opacity-40",
|
|
120
|
-
"data-hovered:bg-gray-2 data-hovered:text-accent-11 data-hovered:opacity-100"
|
|
121
|
-
)}
|
|
122
|
-
>
|
|
123
|
-
{direction === "rtl" ? (
|
|
124
|
-
<ChevronRight aria-hidden className="size-5" />
|
|
125
|
-
) : (
|
|
126
|
-
<ChevronLeft aria-hidden className="size-5" />
|
|
127
|
-
)}
|
|
128
|
-
</AriaButton>
|
|
129
|
-
|
|
130
|
-
<AriaButton
|
|
131
|
-
slot="next"
|
|
132
|
-
className={cn(
|
|
133
|
-
buttonVariants({ variant: "ghost", intent: "secondary" }),
|
|
134
|
-
"text-accent-11 size-9 rounded-full bg-transparent p-0",
|
|
135
|
-
"data-disabled:opacity-40",
|
|
136
|
-
"data-hovered:bg-gray-2 data-hovered:text-accent-11 data-hovered:opacity-100"
|
|
137
|
-
)}
|
|
138
|
-
>
|
|
139
|
-
{direction === "rtl" ? (
|
|
140
|
-
<ChevronLeft aria-hidden className="size-5" />
|
|
141
|
-
) : (
|
|
142
|
-
<ChevronRight aria-hidden className="size-5" />
|
|
143
|
-
)}
|
|
144
|
-
</AriaButton>
|
|
145
|
-
</header>
|
|
146
|
-
)
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const CalendarGrid = ({ className, ...props }: AriaCalendarGridProps) => (
|
|
150
|
-
<AriaCalendarGrid
|
|
151
|
-
className={cn(
|
|
152
|
-
"border-separate border-spacing-x-0.5 border-spacing-y-0.5",
|
|
153
|
-
className
|
|
154
|
-
)}
|
|
155
|
-
{...props}
|
|
156
|
-
/>
|
|
157
|
-
)
|
|
158
|
-
|
|
159
|
-
const CalendarGridHeader = ({ ...props }: AriaCalendarGridHeaderProps) => (
|
|
160
|
-
<AriaCalendarGridHeader {...props} />
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
const CalendarHeaderCell = ({
|
|
164
|
-
className,
|
|
165
|
-
...props
|
|
166
|
-
}: AriaCalendarHeaderCellProps) => (
|
|
167
|
-
<AriaCalendarHeaderCell
|
|
168
|
-
className={cn("w-9 rounded-md text-[0.8rem] font-normal", className)}
|
|
169
|
-
{...props}
|
|
170
|
-
/>
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
const CalendarGridBody = ({
|
|
174
|
-
className,
|
|
175
|
-
...props
|
|
176
|
-
}: AriaCalendarGridBodyProps) => (
|
|
177
|
-
<AriaCalendarGridBody className={cn("[&>tr>td]:p-0", className)} {...props} />
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
const CalendarCell = ({ className, ...props }: AriaCalendarCellProps) => {
|
|
181
|
-
return (
|
|
182
|
-
<AriaCalendarCell
|
|
183
|
-
className={composeRenderProps(className, (className, renderProps) =>
|
|
184
|
-
cn(
|
|
185
|
-
"text-gray-12 select-none",
|
|
186
|
-
"relative flex size-9 items-center justify-center rounded-full p-0 text-sm font-normal transition-none",
|
|
187
|
-
/* Disabled */
|
|
188
|
-
renderProps.isDisabled && "text-gray-11 opacity-40",
|
|
189
|
-
/* Selected */
|
|
190
|
-
renderProps.isSelected &&
|
|
191
|
-
"bg-accent-9 text-accent-contrast data-[focused]:bg-accent-9",
|
|
192
|
-
/* Current Date */
|
|
193
|
-
renderProps.date.compare(today(getLocalTimeZone())) === 0 &&
|
|
194
|
-
!renderProps.isSelected &&
|
|
195
|
-
"text-accent-11",
|
|
196
|
-
/* Hovered */
|
|
197
|
-
renderProps.isHovered && "bg-neutral-400/20",
|
|
198
|
-
/* Outside Month */
|
|
199
|
-
renderProps.isOutsideMonth && "opacity-40",
|
|
200
|
-
/* Focused */
|
|
201
|
-
renderProps.isFocused && "ring-2 outline-none ring-inset",
|
|
202
|
-
className
|
|
203
|
-
)
|
|
204
|
-
)}
|
|
205
|
-
{...props}
|
|
206
|
-
/>
|
|
207
|
-
)
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/** Accepts values in the format YYYY-MM-DD */
|
|
211
|
-
interface EgCalendarProps {
|
|
212
|
-
value?: string
|
|
213
|
-
onChange?: (date: string) => void
|
|
214
|
-
defaultValue?: string
|
|
215
|
-
minValue?: string
|
|
216
|
-
maxValue?: string
|
|
217
|
-
variant?: "default" | "unstyled"
|
|
218
|
-
className?: string
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
function EgCalendar({
|
|
222
|
-
value: controlledValue,
|
|
223
|
-
onChange: controlledOnChange,
|
|
224
|
-
defaultValue,
|
|
225
|
-
minValue,
|
|
226
|
-
maxValue,
|
|
227
|
-
className,
|
|
228
|
-
variant = "default",
|
|
229
|
-
}: EgCalendarProps) {
|
|
230
|
-
const [uncontrolledValue, setUncontrolledValue] = React.useState<
|
|
231
|
-
string | undefined
|
|
232
|
-
>(defaultValue)
|
|
233
|
-
|
|
234
|
-
const value = controlledValue ?? uncontrolledValue
|
|
235
|
-
const onChange = controlledOnChange ?? setUncontrolledValue
|
|
236
|
-
|
|
237
|
-
return (
|
|
238
|
-
<Calendar
|
|
239
|
-
value={value ? parseDate(value) : null}
|
|
240
|
-
onChange={(value) => onChange(value?.toString())}
|
|
241
|
-
className={composeRenderProps(className, (className) =>
|
|
242
|
-
cn(
|
|
243
|
-
"w-fit",
|
|
244
|
-
variant === "default" ? "bg-gray-3/40 rounded-lg border p-1" : "",
|
|
245
|
-
className
|
|
246
|
-
)
|
|
247
|
-
)}
|
|
248
|
-
minValue={minValue ? parseDate(minValue) : null}
|
|
249
|
-
maxValue={maxValue ? parseDate(maxValue) : null}
|
|
250
|
-
>
|
|
251
|
-
<CalendarHeading />
|
|
252
|
-
<CalendarGrid>
|
|
253
|
-
<CalendarGridHeader>
|
|
254
|
-
{(day) => <CalendarHeaderCell>{day}</CalendarHeaderCell>}
|
|
255
|
-
</CalendarGridHeader>
|
|
256
|
-
<CalendarGridBody>
|
|
257
|
-
{(date) => <CalendarCell date={date} />}
|
|
258
|
-
</CalendarGridBody>
|
|
259
|
-
</CalendarGrid>
|
|
260
|
-
</Calendar>
|
|
261
|
-
)
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
export {
|
|
265
|
-
Calendar,
|
|
266
|
-
CalendarCell,
|
|
267
|
-
CalendarGrid,
|
|
268
|
-
CalendarGridBody,
|
|
269
|
-
CalendarGridHeader,
|
|
270
|
-
CalendarHeaderCell,
|
|
271
|
-
CalendarHeading,
|
|
272
|
-
EgCalendar,
|
|
273
|
-
RangeCalendar,
|
|
274
|
-
}
|
|
275
|
-
export type { EgCalendarProps }
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MAX_YEAR_FROM_NOW, MIN_YEAR } from "@eggspot/ui/consts/config"
|
|
2
|
-
import { DateFormatter } from "@internationalized/date"
|
|
3
|
-
import dayjs from "dayjs"
|
|
4
|
-
|
|
5
|
-
export const getCalendarYears = () => {
|
|
6
|
-
const startYear = MIN_YEAR
|
|
7
|
-
const endYear = dayjs().year() + MAX_YEAR_FROM_NOW
|
|
8
|
-
const years = Array.from(
|
|
9
|
-
{ length: endYear - startYear + 1 },
|
|
10
|
-
(_, i) => startYear + i
|
|
11
|
-
)
|
|
12
|
-
return years
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const getCalendarMonths = (locale = "en-US") => {
|
|
16
|
-
const formatter = new DateFormatter(locale, { month: "short" })
|
|
17
|
-
|
|
18
|
-
return Array.from({ length: 12 }, (_, i) => ({
|
|
19
|
-
value: i + 1,
|
|
20
|
-
label: formatter.format(new Date(2020, i, 1)),
|
|
21
|
-
}))
|
|
22
|
-
}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import { Label, labelVariants } from "@eggspot/ui/components/Label"
|
|
4
|
-
import { cn } from "@eggspot/ui/lib/utils"
|
|
5
|
-
import { useControllableState } from "@radix-ui/react-use-controllable-state"
|
|
6
|
-
import { cva } from "class-variance-authority"
|
|
7
|
-
import { Check, Minus } from "lucide-react"
|
|
8
|
-
import {
|
|
9
|
-
Checkbox as AriaCheckbox,
|
|
10
|
-
CheckboxGroup as AriaCheckboxGroup,
|
|
11
|
-
CheckboxGroupProps as AriaCheckboxGroupProps,
|
|
12
|
-
composeRenderProps,
|
|
13
|
-
type CheckboxProps as AriaCheckboxProps,
|
|
14
|
-
} from "react-aria-components"
|
|
15
|
-
|
|
16
|
-
const checkboxVariants = cva(
|
|
17
|
-
["group/checkbox flex cursor-pointer items-center text-sm"],
|
|
18
|
-
{
|
|
19
|
-
variants: {
|
|
20
|
-
variant: {
|
|
21
|
-
default: ["group/default gap-x-2"],
|
|
22
|
-
card: [
|
|
23
|
-
"gap-x-3.5",
|
|
24
|
-
"border-gray-7 rounded-md border p-3.5",
|
|
25
|
-
/* Selected */
|
|
26
|
-
"bg-gray-2 data-selected:border-accent-9 data-selected:bg-accent-2 data-selected:border-1",
|
|
27
|
-
/* Hovered */
|
|
28
|
-
"data-hovered:border-gray-8",
|
|
29
|
-
/* Focus Visible */
|
|
30
|
-
"ring-offset-2 data-focus-visible:ring-2 data-pressed:scale-[0.99]",
|
|
31
|
-
/* Invalid */
|
|
32
|
-
"data-[invalid]:text-error-11",
|
|
33
|
-
],
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
}
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
function Checkbox({
|
|
40
|
-
className,
|
|
41
|
-
children,
|
|
42
|
-
variant = "default",
|
|
43
|
-
reduceMotion = false,
|
|
44
|
-
isDisabled,
|
|
45
|
-
readOnly,
|
|
46
|
-
...props
|
|
47
|
-
}: AriaCheckboxProps & {
|
|
48
|
-
variant?: "default" | "card"
|
|
49
|
-
reduceMotion?: boolean
|
|
50
|
-
readOnly?: boolean
|
|
51
|
-
}) {
|
|
52
|
-
return (
|
|
53
|
-
<AriaCheckbox
|
|
54
|
-
className={composeRenderProps(className, (className) =>
|
|
55
|
-
cn(checkboxVariants({ variant }), labelVariants, className)
|
|
56
|
-
)}
|
|
57
|
-
isDisabled={isDisabled || readOnly}
|
|
58
|
-
{...props}
|
|
59
|
-
>
|
|
60
|
-
{composeRenderProps(children, (children, renderProps) => (
|
|
61
|
-
<>
|
|
62
|
-
<div
|
|
63
|
-
className={cn(
|
|
64
|
-
"transition-all duration-150",
|
|
65
|
-
reduceMotion && "transition-none",
|
|
66
|
-
"bg-gray-2 text-accent-contrast ring-offset-gray-1 flex size-4 shrink-0 items-center justify-center rounded-sm border",
|
|
67
|
-
/* Focus Visible */
|
|
68
|
-
"group-data-[focus-visible]/default:ring-2 group-data-[focus-visible]/default:ring-offset-2 group-data-[focus-visible]/default:outline-none",
|
|
69
|
-
/* Selected */
|
|
70
|
-
"group-data-[indeterminate]/checkbox:bg-accent-9 group-data-[selected]/checkbox:bg-accent-9 group-data-[indeterminate]/checkbox:border-accent-9 group-data-[selected]/checkbox:border-accent-9",
|
|
71
|
-
/* Hovered */
|
|
72
|
-
"group-data-hovered/checkbox:border-gray-8",
|
|
73
|
-
/* Disabled */
|
|
74
|
-
!readOnly &&
|
|
75
|
-
"group-data-[disabled]:cursor-not-allowed group-data-[disabled]/checkbox:cursor-not-allowed group-data-[disabled]/checkbox:opacity-80",
|
|
76
|
-
/* Resets */
|
|
77
|
-
"focus:outline-none focus-visible:outline-none",
|
|
78
|
-
/* Pressed */
|
|
79
|
-
"group-data-pressed/checkbox:scale-[0.95]"
|
|
80
|
-
)}
|
|
81
|
-
>
|
|
82
|
-
{renderProps.isIndeterminate ? (
|
|
83
|
-
<Minus
|
|
84
|
-
className={cn(
|
|
85
|
-
"animate-in zoom-in-60 fade-in size-5",
|
|
86
|
-
reduceMotion && "animate-none"
|
|
87
|
-
)}
|
|
88
|
-
/>
|
|
89
|
-
) : renderProps.isSelected ? (
|
|
90
|
-
<Check
|
|
91
|
-
className={cn(
|
|
92
|
-
"animate-in zoom-in-60 fade-in size-5",
|
|
93
|
-
reduceMotion && "animate-none"
|
|
94
|
-
)}
|
|
95
|
-
/>
|
|
96
|
-
) : null}
|
|
97
|
-
</div>
|
|
98
|
-
{children}
|
|
99
|
-
</>
|
|
100
|
-
))}
|
|
101
|
-
</AriaCheckbox>
|
|
102
|
-
)
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
interface CheckboxOption {
|
|
106
|
-
value: string | number
|
|
107
|
-
label: string
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
interface CheckboxGroupProps<T extends CheckboxOption>
|
|
111
|
-
extends Omit<AriaCheckboxGroupProps, "value" | "onChange" | "defaultValue"> {
|
|
112
|
-
/** The label for the checkbox group. */
|
|
113
|
-
label?: string
|
|
114
|
-
|
|
115
|
-
/** The options for the checkbox group. */
|
|
116
|
-
options: Array<T>
|
|
117
|
-
|
|
118
|
-
/** The variant for the checkbox group. */
|
|
119
|
-
variant?: "default" | "card"
|
|
120
|
-
|
|
121
|
-
/** The class name for the checkbox group. */
|
|
122
|
-
className?: string
|
|
123
|
-
|
|
124
|
-
/** Whether to show an asterisk for the label. */
|
|
125
|
-
withAsterisk?: boolean
|
|
126
|
-
|
|
127
|
-
/** The tooltip for the checkbox group. */
|
|
128
|
-
tooltip?: React.ReactNode
|
|
129
|
-
|
|
130
|
-
/** Custom rendering function for each option in the checkbox group. */
|
|
131
|
-
renderOption?: (option: T) => React.ReactNode
|
|
132
|
-
|
|
133
|
-
/** If this prop is set, the checkbox group operates in a controlled manner and uses this value as its state. */
|
|
134
|
-
value?: Array<T>
|
|
135
|
-
|
|
136
|
-
/** If this prop is set, the checkbox group will call this function with the new value whenever the value changes. */
|
|
137
|
-
onChange?: (value: Array<T>) => void
|
|
138
|
-
|
|
139
|
-
/** Initial value used when the component is uncontrolled. */
|
|
140
|
-
defaultValue?: Array<T>
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function CheckboxGroup<T extends CheckboxOption>({
|
|
144
|
-
options,
|
|
145
|
-
renderOption,
|
|
146
|
-
variant = "default",
|
|
147
|
-
className,
|
|
148
|
-
label,
|
|
149
|
-
withAsterisk,
|
|
150
|
-
tooltip,
|
|
151
|
-
value: controlledValue,
|
|
152
|
-
onChange: controlledOnChange,
|
|
153
|
-
defaultValue,
|
|
154
|
-
...props
|
|
155
|
-
}: CheckboxGroupProps<T>) {
|
|
156
|
-
const [value, onChange] = useControllableState({
|
|
157
|
-
prop: controlledValue,
|
|
158
|
-
defaultProp: defaultValue ?? [],
|
|
159
|
-
onChange: controlledOnChange,
|
|
160
|
-
})
|
|
161
|
-
|
|
162
|
-
return (
|
|
163
|
-
<AriaCheckboxGroup
|
|
164
|
-
className="grid gap-1.5"
|
|
165
|
-
value={value.map((v) => JSON.stringify(v))}
|
|
166
|
-
onChange={(v) => onChange(v.map((v) => JSON.parse(v)))}
|
|
167
|
-
{...props}
|
|
168
|
-
>
|
|
169
|
-
{label && (
|
|
170
|
-
<Label withAsterisk={withAsterisk} tooltip={tooltip}>
|
|
171
|
-
{label}
|
|
172
|
-
</Label>
|
|
173
|
-
)}
|
|
174
|
-
<div
|
|
175
|
-
className={cn(
|
|
176
|
-
"grid",
|
|
177
|
-
variant === "card" && "gap-2.5",
|
|
178
|
-
variant === "default" && "gap-1.5",
|
|
179
|
-
className
|
|
180
|
-
)}
|
|
181
|
-
>
|
|
182
|
-
{options.map((option) => {
|
|
183
|
-
return (
|
|
184
|
-
<Checkbox
|
|
185
|
-
key={option.value}
|
|
186
|
-
value={JSON.stringify(option)}
|
|
187
|
-
variant={variant}
|
|
188
|
-
>
|
|
189
|
-
{renderOption ? renderOption(option) : option.label}
|
|
190
|
-
</Checkbox>
|
|
191
|
-
)
|
|
192
|
-
})}
|
|
193
|
-
</div>
|
|
194
|
-
</AriaCheckboxGroup>
|
|
195
|
-
)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
export { Checkbox, CheckboxGroup }
|
|
199
|
-
export type { CheckboxGroupProps, CheckboxOption }
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
"use client"
|
|
2
|
-
|
|
3
|
-
import React, { useState } from "react"
|
|
4
|
-
import { Button } from "@eggspot/ui/components/Button"
|
|
5
|
-
import {
|
|
6
|
-
DialogContent,
|
|
7
|
-
DialogDescription,
|
|
8
|
-
DialogFooter,
|
|
9
|
-
DialogHeader,
|
|
10
|
-
DialogTitle,
|
|
11
|
-
DialogTrigger,
|
|
12
|
-
} from "@eggspot/ui/components/Dialog"
|
|
13
|
-
import { Form } from "@eggspot/ui/components/Form"
|
|
14
|
-
import { zodResolver } from "@hookform/resolvers/zod"
|
|
15
|
-
import { createStore } from "@xstate/store"
|
|
16
|
-
import { useSelector } from "@xstate/store/react"
|
|
17
|
-
import { useForm, UseFormReturn } from "react-hook-form"
|
|
18
|
-
import { z } from "zod"
|
|
19
|
-
|
|
20
|
-
const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor
|
|
21
|
-
|
|
22
|
-
interface ConfirmDialogContext<T extends z.ZodSchema<any, any>> {
|
|
23
|
-
/** Indicates whether the confirm dialog is open */
|
|
24
|
-
isOpen: boolean
|
|
25
|
-
|
|
26
|
-
/** Data for the confirm dialog, including title, description, and actions */
|
|
27
|
-
data?: {
|
|
28
|
-
/** Whether to dismiss the dialog when the user clicks outside of it */
|
|
29
|
-
isDismissable?: boolean
|
|
30
|
-
|
|
31
|
-
/** The title displayed in the confirm dialog */
|
|
32
|
-
title: string
|
|
33
|
-
|
|
34
|
-
/** Optional description displayed in the confirm dialog */
|
|
35
|
-
description?: string
|
|
36
|
-
|
|
37
|
-
/** Text for the confirm action button */
|
|
38
|
-
continueText?: string
|
|
39
|
-
|
|
40
|
-
/** Text for the cancel action button */
|
|
41
|
-
cancelText?: string
|
|
42
|
-
|
|
43
|
-
/** Optional variant for the action button */
|
|
44
|
-
intent?: "primary" | "danger"
|
|
45
|
-
|
|
46
|
-
/** Callback function to be called when the confirm action is clicked */
|
|
47
|
-
onContinue?: (values: z.infer<T>) => Promise<void> | void
|
|
48
|
-
|
|
49
|
-
/** Callback function to be called when the cancel action is clicked */
|
|
50
|
-
onCancel?: (values: z.infer<T>) => void
|
|
51
|
-
|
|
52
|
-
form?: {
|
|
53
|
-
schema?: T
|
|
54
|
-
/** Displays the content of the confirm dialog, wrapped in the context of React Hook Form, allowing you to add any fields using react-hook-form. */
|
|
55
|
-
content?: (
|
|
56
|
-
form: UseFormReturn<z.infer<T>, any, z.infer<T>>
|
|
57
|
-
) => React.ReactNode
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const confirmStore = createStore({
|
|
63
|
-
context: {
|
|
64
|
-
isOpen: false,
|
|
65
|
-
} as ConfirmDialogContext<any>,
|
|
66
|
-
on: {
|
|
67
|
-
open: (_, data: ConfirmDialogContext<any>["data"]) => ({
|
|
68
|
-
isOpen: true,
|
|
69
|
-
data,
|
|
70
|
-
}),
|
|
71
|
-
close: (context) => ({ ...context, isOpen: false }),
|
|
72
|
-
},
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
const { open, close } = confirmStore.trigger
|
|
76
|
-
|
|
77
|
-
function confirm<T extends z.ZodSchema<any, any>>(
|
|
78
|
-
data: ConfirmDialogContext<T>["data"]
|
|
79
|
-
) {
|
|
80
|
-
if (!data) return
|
|
81
|
-
|
|
82
|
-
open(data)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function ConfirmDialog() {
|
|
86
|
-
const [isPending, setIsPending] = useState(false)
|
|
87
|
-
const isOpen = useSelector(confirmStore, (state) => state.context.isOpen)
|
|
88
|
-
const data = useSelector(confirmStore, (state) => state.context.data)
|
|
89
|
-
const intent = data?.intent || "primary"
|
|
90
|
-
|
|
91
|
-
const form = useForm({
|
|
92
|
-
defaultValues: data?.form?.schema,
|
|
93
|
-
resolver: data?.form?.schema ? zodResolver(data.form.schema) : undefined,
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
const handleClose = () => {
|
|
97
|
-
close()
|
|
98
|
-
setTimeout(() => {
|
|
99
|
-
form.reset()
|
|
100
|
-
setIsPending(false)
|
|
101
|
-
}, 200)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const handleCancel = () => {
|
|
105
|
-
data?.onCancel?.(form.getValues())
|
|
106
|
-
handleClose()
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const handleSubmit = form.handleSubmit((values) => {
|
|
110
|
-
if (!data?.onContinue) {
|
|
111
|
-
handleClose()
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (data.onContinue instanceof AsyncFunction) {
|
|
116
|
-
setIsPending(true)
|
|
117
|
-
const onContinueAsync = data.onContinue as (values: any) => Promise<void>
|
|
118
|
-
onContinueAsync(values)
|
|
119
|
-
.then(() => {
|
|
120
|
-
handleClose()
|
|
121
|
-
})
|
|
122
|
-
.catch(() => {
|
|
123
|
-
setIsPending(false)
|
|
124
|
-
})
|
|
125
|
-
return
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
data?.onContinue?.(values)
|
|
129
|
-
handleClose()
|
|
130
|
-
return
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
return (
|
|
134
|
-
<DialogTrigger
|
|
135
|
-
isOpen={isOpen}
|
|
136
|
-
onOpenChange={(isOpen) => {
|
|
137
|
-
if (!isOpen) {
|
|
138
|
-
close()
|
|
139
|
-
setTimeout(() => {
|
|
140
|
-
form.reset()
|
|
141
|
-
}, 200)
|
|
142
|
-
}
|
|
143
|
-
}}
|
|
144
|
-
>
|
|
145
|
-
<DialogContent
|
|
146
|
-
isDismissable={data?.isDismissable ?? false}
|
|
147
|
-
className="md:max-w-[500px]"
|
|
148
|
-
closeButton={false}
|
|
149
|
-
>
|
|
150
|
-
<Form {...form}>
|
|
151
|
-
<form onSubmit={handleSubmit} className="flex flex-col gap-4">
|
|
152
|
-
<DialogHeader>
|
|
153
|
-
<DialogTitle>{data?.title || "Confirm"}</DialogTitle>
|
|
154
|
-
<DialogDescription>
|
|
155
|
-
{data?.description || "Are you sure you want to confirm?"}
|
|
156
|
-
</DialogDescription>
|
|
157
|
-
</DialogHeader>
|
|
158
|
-
{data?.form?.content && data.form.content(form)}
|
|
159
|
-
<DialogFooter>
|
|
160
|
-
<Button
|
|
161
|
-
variant="minimal"
|
|
162
|
-
onClick={handleCancel}
|
|
163
|
-
isDisabled={isPending}
|
|
164
|
-
>
|
|
165
|
-
{data?.cancelText || "Cancel"}
|
|
166
|
-
</Button>
|
|
167
|
-
<Button
|
|
168
|
-
type="submit"
|
|
169
|
-
variant="solid"
|
|
170
|
-
intent={intent}
|
|
171
|
-
isLoading={isPending}
|
|
172
|
-
>
|
|
173
|
-
{data?.continueText || "Continue"}
|
|
174
|
-
</Button>
|
|
175
|
-
</DialogFooter>
|
|
176
|
-
</form>
|
|
177
|
-
</Form>
|
|
178
|
-
</DialogContent>
|
|
179
|
-
</DialogTrigger>
|
|
180
|
-
)
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export { confirm, ConfirmDialog }
|