@fabio.caffarello/react-design-system 3.8.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/granular/index.js +447 -0
- package/dist/granular/index.js.map +1 -0
- package/dist/granular/ui/components/Accordion/Accordion.js +105 -0
- package/dist/granular/ui/components/Accordion/Accordion.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js +133 -0
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +119 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +42 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -0
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js +100 -0
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/granular/ui/components/Card/Card.js +113 -0
- package/dist/granular/ui/components/Card/Card.js.map +1 -0
- package/dist/granular/ui/components/Card/CardActions.js +51 -0
- package/dist/granular/ui/components/Card/CardActions.js.map +1 -0
- package/dist/granular/ui/components/Card/CardBody.js +32 -0
- package/dist/granular/ui/components/Card/CardBody.js.map +1 -0
- package/dist/granular/ui/components/Card/CardHeader.js +47 -0
- package/dist/granular/ui/components/Card/CardHeader.js.map +1 -0
- package/dist/granular/ui/components/Card/CardSubtitle.js +38 -0
- package/dist/granular/ui/components/Card/CardSubtitle.js.map +1 -0
- package/dist/granular/ui/components/Card/CardTitle.js +61 -0
- package/dist/granular/ui/components/Card/CardTitle.js.map +1 -0
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js +250 -0
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js +274 -0
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -0
- package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js +37 -0
- package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js.map +1 -0
- package/dist/granular/ui/components/DataGrid/DataGrid.js +155 -0
- package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -0
- package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js +113 -0
- package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePicker.js +126 -0
- package/dist/granular/ui/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +294 -0
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerContext.js +16 -0
- package/dist/granular/ui/components/DatePicker/DatePickerContext.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerInput.js +119 -0
- package/dist/granular/ui/components/DatePicker/DatePickerInput.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerProvider.js +47 -0
- package/dist/granular/ui/components/DatePicker/DatePickerProvider.js.map +1 -0
- package/dist/granular/ui/components/Dialog/AlertDialog.js +48 -0
- package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -0
- package/dist/granular/ui/components/Dialog/Dialog.js +36 -0
- package/dist/granular/ui/components/Dialog/Dialog.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogClose.js +34 -0
- package/dist/granular/ui/components/Dialog/DialogClose.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogContent.js +114 -0
- package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogDescription.js +51 -0
- package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogFooter.js +45 -0
- package/dist/granular/ui/components/Dialog/DialogFooter.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogHeader.js +45 -0
- package/dist/granular/ui/components/Dialog/DialogHeader.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogTitle.js +53 -0
- package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogTrigger.js +28 -0
- package/dist/granular/ui/components/Dialog/DialogTrigger.js.map +1 -0
- package/dist/granular/ui/components/Drawer/Drawer.js +47 -0
- package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerContent.js +140 -0
- package/dist/granular/ui/components/Drawer/DrawerContent.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerContext.js +21 -0
- package/dist/granular/ui/components/Drawer/DrawerContext.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerFooter.js +53 -0
- package/dist/granular/ui/components/Drawer/DrawerFooter.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerHeader.js +50 -0
- package/dist/granular/ui/components/Drawer/DrawerHeader.js.map +1 -0
- package/dist/granular/ui/components/Dropdown/Dropdown.js +243 -0
- package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/granular/ui/components/EmptyState/EmptyState.js +102 -0
- package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/granular/ui/components/FileUpload/FileUpload.js +342 -0
- package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -0
- package/dist/granular/ui/components/FilterChips/FilterChips.js +67 -0
- package/dist/granular/ui/components/FilterChips/FilterChips.js.map +1 -0
- package/dist/granular/ui/components/Form/Form.js +184 -0
- package/dist/granular/ui/components/Form/Form.js.map +1 -0
- package/dist/granular/ui/components/Form/FormContext.js +19 -0
- package/dist/granular/ui/components/Form/FormContext.js.map +1 -0
- package/dist/granular/ui/components/Form/FormField.js +66 -0
- package/dist/granular/ui/components/Form/FormField.js.map +1 -0
- package/dist/granular/ui/components/Form/FormProvider.js +17 -0
- package/dist/granular/ui/components/Form/FormProvider.js.map +1 -0
- package/dist/granular/ui/components/Form/useFormFieldArray.js +29 -0
- package/dist/granular/ui/components/Form/useFormFieldArray.js.map +1 -0
- package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js +121 -0
- package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js.map +1 -0
- package/dist/granular/ui/components/Header/Header.js +98 -0
- package/dist/granular/ui/components/Header/Header.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderActions.js +21 -0
- package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js +31 -0
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderLogo.js +50 -0
- package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js +38 -0
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js +27 -0
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -0
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js +49 -0
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -0
- package/dist/granular/ui/components/LoginBox/LoginBox.js +84 -0
- package/dist/granular/ui/components/LoginBox/LoginBox.js.map +1 -0
- package/dist/granular/ui/components/Menu/Menu.js +45 -0
- package/dist/granular/ui/components/Menu/Menu.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuContent.js +94 -0
- package/dist/granular/ui/components/Menu/MenuContent.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuContext.js +21 -0
- package/dist/granular/ui/components/Menu/MenuContext.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuItem.js +93 -0
- package/dist/granular/ui/components/Menu/MenuItem.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuSeparator.js +46 -0
- package/dist/granular/ui/components/Menu/MenuSeparator.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuTrigger.js +71 -0
- package/dist/granular/ui/components/Menu/MenuTrigger.js.map +1 -0
- package/dist/granular/ui/components/Modal/Modal.js +171 -0
- package/dist/granular/ui/components/Modal/Modal.js.map +1 -0
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js +193 -0
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/granular/ui/components/Navigation/Navigation.js +141 -0
- package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -0
- package/dist/granular/ui/components/PageHeader/PageHeader.js +95 -0
- package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/granular/ui/components/Pagination/Pagination.js +156 -0
- package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -0
- package/dist/granular/ui/components/Popover/Popover.js +171 -0
- package/dist/granular/ui/components/Popover/Popover.js.map +1 -0
- package/dist/granular/ui/components/Rating/Rating.js +110 -0
- package/dist/granular/ui/components/Rating/Rating.js.map +1 -0
- package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js +120 -0
- package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js.map +1 -0
- package/dist/granular/ui/components/SearchInput/SearchInput.js +103 -0
- package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/SideNavbar.js +143 -0
- package/dist/granular/ui/components/SideNavbar/SideNavbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js +173 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +87 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +242 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js +66 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js +108 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js +63 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +113 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js +150 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js +197 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js +108 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js +71 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js +64 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js +141 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js +90 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js +12 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js +13 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js +37 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js +28 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js +19 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js +22 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js +43 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js +59 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js +34 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResize.js +58 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResize.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js +35 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js +21 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js +19 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js +21 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js +61 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js +82 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +165 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js +34 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js +28 -0
- package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js +60 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js +19 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js.map +1 -0
- package/dist/granular/ui/components/Stat/Stat.js +84 -0
- package/dist/granular/ui/components/Stat/Stat.js.map +1 -0
- package/dist/granular/ui/components/Stat/StatGroup.js +61 -0
- package/dist/granular/ui/components/Stat/StatGroup.js.map +1 -0
- package/dist/granular/ui/components/Stepper/Stepper.js +248 -0
- package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -0
- package/dist/granular/ui/components/Table/Table.js +162 -0
- package/dist/granular/ui/components/Table/Table.js.map +1 -0
- package/dist/granular/ui/components/Table/TableActions/TableActions.js +67 -0
- package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -0
- package/dist/granular/ui/components/Table/TableActions.js +44 -0
- package/dist/granular/ui/components/Table/TableActions.js.map +1 -0
- package/dist/granular/ui/components/Table/TableBody.js +134 -0
- package/dist/granular/ui/components/Table/TableBody.js.map +1 -0
- package/dist/granular/ui/components/Table/TableCell.js +40 -0
- package/dist/granular/ui/components/Table/TableCell.js.map +1 -0
- package/dist/granular/ui/components/Table/TableContext.js +19 -0
- package/dist/granular/ui/components/Table/TableContext.js.map +1 -0
- package/dist/granular/ui/components/Table/TableEmptyState.js +62 -0
- package/dist/granular/ui/components/Table/TableEmptyState.js.map +1 -0
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +189 -0
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -0
- package/dist/granular/ui/components/Table/TableFilters.js +48 -0
- package/dist/granular/ui/components/Table/TableFilters.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeader.js +45 -0
- package/dist/granular/ui/components/Table/TableHeader.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeaderCell.js +117 -0
- package/dist/granular/ui/components/Table/TableHeaderCell.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeaderRow.js +89 -0
- package/dist/granular/ui/components/Table/TableHeaderRow.js.map +1 -0
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js +216 -0
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -0
- package/dist/granular/ui/components/Table/TablePagination.js +56 -0
- package/dist/granular/ui/components/Table/TablePagination.js.map +1 -0
- package/dist/granular/ui/components/Table/TableProvider.js +244 -0
- package/dist/granular/ui/components/Table/TableProvider.js.map +1 -0
- package/dist/granular/ui/components/Table/TableRow.js +95 -0
- package/dist/granular/ui/components/Table/TableRow.js.map +1 -0
- package/dist/granular/ui/components/Table/useColumnResizing.js +71 -0
- package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -0
- package/dist/granular/ui/components/Table/useVirtualScrolling.js +50 -0
- package/dist/granular/ui/components/Table/useVirtualScrolling.js.map +1 -0
- package/dist/granular/ui/components/Tabs/Tabs.js +39 -0
- package/dist/granular/ui/components/Tabs/Tabs.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsContent.js +59 -0
- package/dist/granular/ui/components/Tabs/TabsContent.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsContext.js +18 -0
- package/dist/granular/ui/components/Tabs/TabsContext.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsList.js +84 -0
- package/dist/granular/ui/components/Tabs/TabsList.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsProvider.js +31 -0
- package/dist/granular/ui/components/Tabs/TabsProvider.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsTrigger.js +103 -0
- package/dist/granular/ui/components/Tabs/TabsTrigger.js.map +1 -0
- package/dist/granular/ui/components/TimePicker/TimePicker.js +216 -0
- package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -0
- package/dist/granular/ui/components/Timeline/Timeline.js +152 -0
- package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -0
- package/dist/granular/ui/components/Toast/Toast.js +159 -0
- package/dist/granular/ui/components/Toast/Toast.js.map +1 -0
- package/dist/granular/ui/components/Toast/ToastContainer.js +41 -0
- package/dist/granular/ui/components/Toast/ToastContainer.js.map +1 -0
- package/dist/granular/ui/components/Toast/useToast.js +64 -0
- package/dist/granular/ui/components/Toast/useToast.js.map +1 -0
- package/dist/granular/ui/hooks/createGenericContext.js +27 -0
- package/dist/granular/ui/hooks/createGenericContext.js.map +1 -0
- package/dist/granular/ui/hooks/focusable.js +14 -0
- package/dist/granular/ui/hooks/focusable.js.map +1 -0
- package/dist/granular/ui/hooks/useAutoFocus.js +23 -0
- package/dist/granular/ui/hooks/useAutoFocus.js.map +1 -0
- package/dist/granular/ui/hooks/useCollapsible.js +37 -0
- package/dist/granular/ui/hooks/useCollapsible.js.map +1 -0
- package/dist/granular/ui/hooks/useFocusRestore.js +20 -0
- package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -0
- package/dist/granular/ui/hooks/useFocusTrap.js +31 -0
- package/dist/granular/ui/hooks/useFocusTrap.js.map +1 -0
- package/dist/granular/ui/hooks/useScrollSpy.js +23 -0
- package/dist/granular/ui/hooks/useScrollSpy.js.map +1 -0
- package/dist/granular/ui/layouts/Container/Container.js +73 -0
- package/dist/granular/ui/layouts/Container/Container.js.map +1 -0
- package/dist/granular/ui/layouts/Stack/Stack.js +79 -0
- package/dist/granular/ui/layouts/Stack/Stack.js.map +1 -0
- package/dist/granular/ui/primitives/Avatar/Avatar.js +122 -0
- package/dist/granular/ui/primitives/Avatar/Avatar.js.map +1 -0
- package/dist/granular/ui/primitives/Avatar/AvatarGroup.js +97 -0
- package/dist/granular/ui/primitives/Avatar/AvatarGroup.js.map +1 -0
- package/dist/granular/ui/primitives/Badge/Badge.js +212 -0
- package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -0
- package/dist/granular/ui/primitives/Button/Button.js +288 -0
- package/dist/granular/ui/primitives/Button/Button.js.map +1 -0
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js +129 -0
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -0
- package/dist/granular/ui/primitives/Chip/Chip.js +206 -0
- package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -0
- package/dist/granular/ui/primitives/Collapsible/Collapsible.js +115 -0
- package/dist/granular/ui/primitives/Collapsible/Collapsible.js.map +1 -0
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js +54 -0
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -0
- package/dist/granular/ui/primitives/Info/Info.js +57 -0
- package/dist/granular/ui/primitives/Info/Info.js.map +1 -0
- package/dist/granular/ui/primitives/Input/Input.js +351 -0
- package/dist/granular/ui/primitives/Input/Input.js.map +1 -0
- package/dist/granular/ui/primitives/Label/Label.js +61 -0
- package/dist/granular/ui/primitives/Label/Label.js.map +1 -0
- package/dist/granular/ui/primitives/NavLink/NavLink.js +229 -0
- package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -0
- package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js +15 -0
- package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js.map +1 -0
- package/dist/granular/ui/primitives/Progress/Progress.js +182 -0
- package/dist/granular/ui/primitives/Progress/Progress.js.map +1 -0
- package/dist/granular/ui/primitives/Radio/Radio.js +118 -0
- package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -0
- package/dist/granular/ui/primitives/Select/Select.js +210 -0
- package/dist/granular/ui/primitives/Select/Select.js.map +1 -0
- package/dist/granular/ui/primitives/Separator/Separator.js +69 -0
- package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -0
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js +87 -0
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -0
- package/dist/granular/ui/primitives/Slider/Slider.js +291 -0
- package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -0
- package/dist/granular/ui/primitives/Spinner/Spinner.js +95 -0
- package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -0
- package/dist/granular/ui/primitives/Switch/Switch.js +212 -0
- package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -0
- package/dist/granular/ui/primitives/Text/Text.js +118 -0
- package/dist/granular/ui/primitives/Text/Text.js.map +1 -0
- package/dist/granular/ui/primitives/Textarea/Textarea.js +129 -0
- package/dist/granular/ui/primitives/Textarea/Textarea.js.map +1 -0
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js +227 -0
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -0
- package/dist/granular/ui/providers/AppProvider.js +50 -0
- package/dist/granular/ui/providers/AppProvider.js.map +1 -0
- package/dist/granular/ui/providers/ConfigProvider.js +95 -0
- package/dist/granular/ui/providers/ConfigProvider.js.map +1 -0
- package/dist/granular/ui/providers/DialogContext.js +20 -0
- package/dist/granular/ui/providers/DialogContext.js.map +1 -0
- package/dist/granular/ui/providers/DialogProvider.js +32 -0
- package/dist/granular/ui/providers/DialogProvider.js.map +1 -0
- package/dist/granular/ui/providers/ThemeProvider.js +56 -0
- package/dist/granular/ui/providers/ThemeProvider.js.map +1 -0
- package/dist/granular/ui/providers/ToastContext.js +20 -0
- package/dist/granular/ui/providers/ToastContext.js.map +1 -0
- package/dist/granular/ui/providers/ToastProvider.js +47 -0
- package/dist/granular/ui/providers/ToastProvider.js.map +1 -0
- package/dist/granular/ui/providers/providers-bundle.js +23 -0
- package/dist/granular/ui/providers/providers-bundle.js.map +1 -0
- package/dist/granular/ui/tokens/animations.js +106 -0
- package/dist/granular/ui/tokens/animations.js.map +1 -0
- package/dist/granular/ui/tokens/borders.js +54 -0
- package/dist/granular/ui/tokens/borders.js.map +1 -0
- package/dist/granular/ui/tokens/breakpoints.js +43 -0
- package/dist/granular/ui/tokens/breakpoints.js.map +1 -0
- package/dist/granular/ui/tokens/colors/brand.js +67 -0
- package/dist/granular/ui/tokens/colors/brand.js.map +1 -0
- package/dist/granular/ui/tokens/colors/index.js +25 -0
- package/dist/granular/ui/tokens/colors/index.js.map +1 -0
- package/dist/granular/ui/tokens/colors/primitives.js +320 -0
- package/dist/granular/ui/tokens/colors/primitives.js.map +1 -0
- package/dist/granular/ui/tokens/colors/semantic.js +212 -0
- package/dist/granular/ui/tokens/colors/semantic.js.map +1 -0
- package/dist/granular/ui/tokens/colors/types.js +18 -0
- package/dist/granular/ui/tokens/colors/types.js.map +1 -0
- package/dist/granular/ui/tokens/colors/utils.js +131 -0
- package/dist/granular/ui/tokens/colors/utils.js.map +1 -0
- package/dist/granular/ui/tokens/opacity.js +59 -0
- package/dist/granular/ui/tokens/opacity.js.map +1 -0
- package/dist/granular/ui/tokens/radius.js +76 -0
- package/dist/granular/ui/tokens/radius.js.map +1 -0
- package/dist/granular/ui/tokens/shadows.js +63 -0
- package/dist/granular/ui/tokens/shadows.js.map +1 -0
- package/dist/granular/ui/tokens/sidebar.js +92 -0
- package/dist/granular/ui/tokens/sidebar.js.map +1 -0
- package/dist/granular/ui/tokens/spacing.js +143 -0
- package/dist/granular/ui/tokens/spacing.js.map +1 -0
- package/dist/granular/ui/tokens/switch.js +51 -0
- package/dist/granular/ui/tokens/switch.js.map +1 -0
- package/dist/granular/ui/tokens/typography.js +146 -0
- package/dist/granular/ui/tokens/typography.js.map +1 -0
- package/dist/granular/ui/tokens/z-index.js +79 -0
- package/dist/granular/ui/tokens/z-index.js.map +1 -0
- package/dist/granular/ui/utils/cn.js +10 -0
- package/dist/granular/ui/utils/cn.js.map +1 -0
- package/dist/granular/ui/utils/cva.js +14 -0
- package/dist/granular/ui/utils/cva.js.map +1 -0
- package/dist/granular/ui/utils/mergeRefs.js +11 -0
- package/dist/granular/ui/utils/mergeRefs.js.map +1 -0
- package/dist/granular/vite.svg +1 -0
- package/dist/index.cjs +46 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1172 -1135
- package/dist/index.js.map +1 -1
- package/dist/react-design-system.css +1 -1
- package/dist/server/index.cjs +23 -23
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +882 -1179
- package/dist/server/index.js.map +1 -1
- package/dist/ui/components/FilterChips/FilterChips.d.ts +83 -0
- package/dist/ui/components/FilterChips/index.d.ts +2 -0
- package/dist/ui/components/index.d.ts +2 -0
- package/dist/ui/server.d.ts +2 -0
- package/package.json +9 -2
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var fe = Object.defineProperty, ge = Object.defineProperties;
|
|
3
|
+
var pe = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var S = Object.getOwnPropertySymbols;
|
|
5
|
+
var Z = Object.prototype.hasOwnProperty, _ = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var Y = (a, r, s) => r in a ? fe(a, r, { enumerable: !0, configurable: !0, writable: !0, value: s }) : a[r] = s, C = (a, r) => {
|
|
7
|
+
for (var s in r || (r = {}))
|
|
8
|
+
Z.call(r, s) && Y(a, s, r[s]);
|
|
9
|
+
if (S)
|
|
10
|
+
for (var s of S(r))
|
|
11
|
+
_.call(r, s) && Y(a, s, r[s]);
|
|
12
|
+
return a;
|
|
13
|
+
}, ee = (a, r) => ge(a, pe(r));
|
|
14
|
+
var ae = (a, r) => {
|
|
15
|
+
var s = {};
|
|
16
|
+
for (var e in a)
|
|
17
|
+
Z.call(a, e) && r.indexOf(e) < 0 && (s[e] = a[e]);
|
|
18
|
+
if (a != null && S)
|
|
19
|
+
for (var e of S(a))
|
|
20
|
+
r.indexOf(e) < 0 && _.call(a, e) && (s[e] = a[e]);
|
|
21
|
+
return s;
|
|
22
|
+
};
|
|
23
|
+
import { jsxs as w, jsx as c, Fragment as re } from "react/jsx-runtime";
|
|
24
|
+
import { forwardRef as ve, useRef as be, useId as E, useState as L } from "react";
|
|
25
|
+
import { getAnimationClass as te } from "../../tokens/animations.js";
|
|
26
|
+
import { getRadiusClass as h } from "../../tokens/radius.js";
|
|
27
|
+
import { getShadowClass as ye } from "../../tokens/shadows.js";
|
|
28
|
+
import { getSpacingClass as V } from "../../tokens/spacing.js";
|
|
29
|
+
import { getTypographyWeight as we, getTypographySize as se } from "../../tokens/typography.js";
|
|
30
|
+
import { cva as le } from "../../utils/cva.js";
|
|
31
|
+
import { cn as i } from "../../utils/cn.js";
|
|
32
|
+
const he = ve(function(xe, ce) {
|
|
33
|
+
var X = xe, {
|
|
34
|
+
value: r,
|
|
35
|
+
defaultValue: s,
|
|
36
|
+
min: e = 0,
|
|
37
|
+
max: u = 100,
|
|
38
|
+
step: j = 1,
|
|
39
|
+
variant: l = "single",
|
|
40
|
+
size: v = "md",
|
|
41
|
+
disabled: x = !1,
|
|
42
|
+
showValue: F = !1,
|
|
43
|
+
marks: ie = [],
|
|
44
|
+
onChange: g,
|
|
45
|
+
onValueChange: p,
|
|
46
|
+
label: Q,
|
|
47
|
+
className: ne = ""
|
|
48
|
+
} = X, oe = ae(X, [
|
|
49
|
+
"value",
|
|
50
|
+
"defaultValue",
|
|
51
|
+
"min",
|
|
52
|
+
"max",
|
|
53
|
+
"step",
|
|
54
|
+
"variant",
|
|
55
|
+
"size",
|
|
56
|
+
"disabled",
|
|
57
|
+
"showValue",
|
|
58
|
+
"marks",
|
|
59
|
+
"onChange",
|
|
60
|
+
"onValueChange",
|
|
61
|
+
"label",
|
|
62
|
+
"className"
|
|
63
|
+
]);
|
|
64
|
+
const M = be(null), N = E(), z = E(), B = E(), [de, U] = L(
|
|
65
|
+
s || (l === "range" ? [e, u] : e)
|
|
66
|
+
), [W, q] = L(!1), [G, H] = L(null), D = r !== void 0, d = D ? r : de, T = (t) => (t - e) / (u - e) * 100, J = (t) => {
|
|
67
|
+
if (!M.current) return e;
|
|
68
|
+
const n = M.current.getBoundingClientRect(), o = Math.max(
|
|
69
|
+
0,
|
|
70
|
+
Math.min(1, (t - n.left) / n.width)
|
|
71
|
+
), m = e + o * (u - e);
|
|
72
|
+
return Math.round(m / j) * j;
|
|
73
|
+
}, I = (t, n = "min") => {
|
|
74
|
+
if (x) return;
|
|
75
|
+
t.preventDefault(), q(!0), H(n);
|
|
76
|
+
const o = (A) => {
|
|
77
|
+
if (!M.current) return;
|
|
78
|
+
const f = J(A.clientX);
|
|
79
|
+
K(f, n);
|
|
80
|
+
}, m = () => {
|
|
81
|
+
q(!1), H(null), document.removeEventListener("mousemove", o), document.removeEventListener("mouseup", m);
|
|
82
|
+
};
|
|
83
|
+
document.addEventListener("mousemove", o), document.addEventListener("mouseup", m);
|
|
84
|
+
}, K = (t, n = "min") => {
|
|
85
|
+
const o = Math.max(e, Math.min(u, t));
|
|
86
|
+
if (l === "range") {
|
|
87
|
+
const [m, A] = Array.isArray(d) ? d : [e, u];
|
|
88
|
+
let f;
|
|
89
|
+
n === "min" ? f = [Math.min(o, A), A] : f = [m, Math.max(o, m)], D || U(f), g == null || g(f), p == null || p(f);
|
|
90
|
+
} else
|
|
91
|
+
D || U(o), g == null || g(o), p == null || p(o);
|
|
92
|
+
}, ue = (t) => {
|
|
93
|
+
if (x || W) return;
|
|
94
|
+
const n = J(t.clientX);
|
|
95
|
+
K(n);
|
|
96
|
+
}, me = () => "focus:ring-line-brand ring-offset-2", O = le(i("relative", "cursor-pointer"), {
|
|
97
|
+
variants: {
|
|
98
|
+
size: {
|
|
99
|
+
sm: "h-1",
|
|
100
|
+
md: "h-2",
|
|
101
|
+
lg: "h-3"
|
|
102
|
+
},
|
|
103
|
+
disabled: {
|
|
104
|
+
true: "opacity-50 cursor-not-allowed",
|
|
105
|
+
false: ""
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
defaultVariants: {
|
|
109
|
+
size: "md",
|
|
110
|
+
disabled: !1
|
|
111
|
+
}
|
|
112
|
+
}), R = le(
|
|
113
|
+
i(
|
|
114
|
+
"absolute",
|
|
115
|
+
"bg-surface-brand",
|
|
116
|
+
h("full"),
|
|
117
|
+
"border-2",
|
|
118
|
+
"border-white",
|
|
119
|
+
ye("md"),
|
|
120
|
+
"cursor-grab",
|
|
121
|
+
"active:cursor-grabbing",
|
|
122
|
+
te("base"),
|
|
123
|
+
"-translate-x-1/2",
|
|
124
|
+
"-translate-y-1/2",
|
|
125
|
+
"top-1/2"
|
|
126
|
+
),
|
|
127
|
+
{
|
|
128
|
+
variants: {
|
|
129
|
+
size: {
|
|
130
|
+
sm: "w-3 h-3",
|
|
131
|
+
md: "w-4 h-4",
|
|
132
|
+
lg: "w-5 h-5"
|
|
133
|
+
},
|
|
134
|
+
active: {
|
|
135
|
+
true: me(),
|
|
136
|
+
false: ""
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
defaultVariants: {
|
|
140
|
+
size: "md",
|
|
141
|
+
active: !1
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
), $ = typeof d == "number" ? d : d[0], b = Array.isArray(d) ? d[0] : e, y = Array.isArray(d) ? d[1] : $, k = T(b), P = T(y);
|
|
145
|
+
return /* @__PURE__ */ w("div", ee(C({ ref: ce, className: i("w-full", ne) }, oe), { children: [
|
|
146
|
+
/* @__PURE__ */ w(
|
|
147
|
+
"label",
|
|
148
|
+
{
|
|
149
|
+
id: N,
|
|
150
|
+
className: i(
|
|
151
|
+
"block",
|
|
152
|
+
se("bodySmall"),
|
|
153
|
+
we("label"),
|
|
154
|
+
"text-fg-primary",
|
|
155
|
+
V("sm", "mb")
|
|
156
|
+
),
|
|
157
|
+
children: [
|
|
158
|
+
Q,
|
|
159
|
+
F && /* @__PURE__ */ c(
|
|
160
|
+
"span",
|
|
161
|
+
{
|
|
162
|
+
className: i(V("sm", "ml"), "text-fg-secondary"),
|
|
163
|
+
children: l === "range" ? `${b} - ${y}` : $
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
),
|
|
169
|
+
l === "range" && /* @__PURE__ */ w(re, { children: [
|
|
170
|
+
/* @__PURE__ */ c("span", { id: z, className: "sr-only", children: "minimum" }),
|
|
171
|
+
/* @__PURE__ */ c("span", { id: B, className: "sr-only", children: "maximum" })
|
|
172
|
+
] }),
|
|
173
|
+
/* @__PURE__ */ w(
|
|
174
|
+
"div",
|
|
175
|
+
{
|
|
176
|
+
ref: M,
|
|
177
|
+
className: i(
|
|
178
|
+
O({ size: v, disabled: x }),
|
|
179
|
+
"bg-surface-muted",
|
|
180
|
+
h("full")
|
|
181
|
+
),
|
|
182
|
+
onClick: ue,
|
|
183
|
+
role: l === "range" ? void 0 : "slider",
|
|
184
|
+
"aria-valuemin": l === "range" ? void 0 : e,
|
|
185
|
+
"aria-valuemax": l === "range" ? void 0 : u,
|
|
186
|
+
"aria-valuenow": l === "range" ? void 0 : $,
|
|
187
|
+
"aria-disabled": l === "range" ? void 0 : x,
|
|
188
|
+
"aria-labelledby": l === "range" ? void 0 : N,
|
|
189
|
+
children: [
|
|
190
|
+
/* @__PURE__ */ c(
|
|
191
|
+
"div",
|
|
192
|
+
{
|
|
193
|
+
className: i(
|
|
194
|
+
"absolute",
|
|
195
|
+
O({ size: v }),
|
|
196
|
+
"bg-surface-brand",
|
|
197
|
+
h("full"),
|
|
198
|
+
te("base")
|
|
199
|
+
),
|
|
200
|
+
style: {
|
|
201
|
+
left: `${k}%`,
|
|
202
|
+
width: `${P - k}%`
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
),
|
|
206
|
+
ie.map((t) => {
|
|
207
|
+
const n = T(t);
|
|
208
|
+
return /* @__PURE__ */ c(
|
|
209
|
+
"div",
|
|
210
|
+
{
|
|
211
|
+
className: i(
|
|
212
|
+
"absolute",
|
|
213
|
+
"w-1",
|
|
214
|
+
"h-1",
|
|
215
|
+
"bg-line-strong",
|
|
216
|
+
h("full"),
|
|
217
|
+
"-translate-x-1/2"
|
|
218
|
+
),
|
|
219
|
+
style: {
|
|
220
|
+
left: `${n}%`,
|
|
221
|
+
top: "50%",
|
|
222
|
+
transform: "translate(-50%, -50%)"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
t
|
|
226
|
+
);
|
|
227
|
+
}),
|
|
228
|
+
l === "range" ? /* @__PURE__ */ w(re, { children: [
|
|
229
|
+
/* @__PURE__ */ c(
|
|
230
|
+
"div",
|
|
231
|
+
{
|
|
232
|
+
className: i(
|
|
233
|
+
R({ size: v, active: G === "min" })
|
|
234
|
+
),
|
|
235
|
+
style: { left: `${k}%` },
|
|
236
|
+
onMouseDown: (t) => I(t, "min"),
|
|
237
|
+
role: "slider",
|
|
238
|
+
"aria-valuemin": e,
|
|
239
|
+
"aria-valuemax": y,
|
|
240
|
+
"aria-valuenow": b,
|
|
241
|
+
"aria-labelledby": `${N} ${z}`
|
|
242
|
+
}
|
|
243
|
+
),
|
|
244
|
+
/* @__PURE__ */ c(
|
|
245
|
+
"div",
|
|
246
|
+
{
|
|
247
|
+
className: i(
|
|
248
|
+
R({ size: v, active: G === "max" })
|
|
249
|
+
),
|
|
250
|
+
style: { left: `${P}%` },
|
|
251
|
+
onMouseDown: (t) => I(t, "max"),
|
|
252
|
+
role: "slider",
|
|
253
|
+
"aria-valuemin": b,
|
|
254
|
+
"aria-valuemax": u,
|
|
255
|
+
"aria-valuenow": y,
|
|
256
|
+
"aria-labelledby": `${N} ${B}`
|
|
257
|
+
}
|
|
258
|
+
)
|
|
259
|
+
] }) : /* @__PURE__ */ c(
|
|
260
|
+
"div",
|
|
261
|
+
{
|
|
262
|
+
className: i(R({ size: v, active: W })),
|
|
263
|
+
style: { left: `${P}%` },
|
|
264
|
+
onMouseDown: (t) => I(t)
|
|
265
|
+
}
|
|
266
|
+
),
|
|
267
|
+
F && !Q && /* @__PURE__ */ c("div", { className: "absolute -top-6 left-0 right-0 flex justify-center", children: /* @__PURE__ */ c(
|
|
268
|
+
"span",
|
|
269
|
+
{
|
|
270
|
+
className: i(
|
|
271
|
+
se("caption"),
|
|
272
|
+
"text-fg-secondary",
|
|
273
|
+
"bg-surface-overlay",
|
|
274
|
+
V("sm", "px"),
|
|
275
|
+
V("xs", "py"),
|
|
276
|
+
h("md"),
|
|
277
|
+
"shadow"
|
|
278
|
+
),
|
|
279
|
+
children: l === "range" ? `${b} - ${y}` : $
|
|
280
|
+
}
|
|
281
|
+
) })
|
|
282
|
+
]
|
|
283
|
+
}
|
|
284
|
+
)
|
|
285
|
+
] }));
|
|
286
|
+
});
|
|
287
|
+
he.displayName = "Slider";
|
|
288
|
+
export {
|
|
289
|
+
he as default
|
|
290
|
+
};
|
|
291
|
+
//# sourceMappingURL=Slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.js","sources":["../../../../../src/ui/primitives/Slider/Slider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef, useState, useId, forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { getAnimationClass } from \"../../tokens/animations\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getShadowClass } from \"../../tokens/shadows\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SliderVariant = \"single\" | \"range\";\nexport type SliderSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SliderProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n value?: number | [number, number];\n defaultValue?: number | [number, number];\n min?: number;\n max?: number;\n step?: number;\n variant?: SliderVariant;\n size?: SliderSize;\n disabled?: boolean;\n showValue?: boolean;\n marks?: number[];\n onChange?: (value: number | [number, number]) => void;\n onValueChange?: (value: number | [number, number]) => void;\n /**\n * Required label for the slider. Becomes the accessible name via\n * aria-labelledby — single variant references the rendered <label>\n * element directly; range variant references the same label plus a\n * sr-only qualifier (\"minimum\" / \"maximum\") so AT users can tell\n * which handle has focus. Make this a real domain term (\"Volume\",\n * \"Price range\"), not the element type (\"slider\").\n */\n label: string;\n}\n\n/**\n * Slider Component\n *\n * A range input component for selecting numeric values.\n * Supports single and dual thumb (range) modes.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Slider\n * value={50}\n * min={0}\n * max={100}\n * onChange={(value) => console.log(value)}\n * />\n *\n * <Slider\n * variant=\"range\"\n * value={[20, 80]}\n * min={0}\n * max={100}\n * onChange={(value) => console.log(value)}\n * />\n * ```\n */\nconst Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n value: controlledValue,\n defaultValue,\n min = 0,\n max = 100,\n step = 1,\n variant = \"single\",\n size = \"md\",\n disabled = false,\n showValue = false,\n marks = [],\n onChange,\n onValueChange,\n label,\n className = \"\",\n ...props\n },\n ref,\n) {\n const sliderRef = useRef<HTMLDivElement>(null);\n // Stable IDs for the visible <label> and (for range) the sr-only\n // qualifier spans that distinguish min vs max handles. Range\n // accessible name = label + qualifier via aria-labelledby with two\n // ids (\"Price range minimum\" / \"Price range maximum\"), so the\n // visible label remains the single source of truth — changing\n // `label` propagates to both handles automatically.\n const labelId = useId();\n const minQualifierId = useId();\n const maxQualifierId = useId();\n const [internalValue, setInternalValue] = useState<number | [number, number]>(\n defaultValue || (variant === \"range\" ? [min, max] : min),\n );\n const [isDragging, setIsDragging] = useState(false);\n const [activeThumb, setActiveThumb] = useState<\"min\" | \"max\" | null>(null);\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const getPercentage = (val: number) => ((val - min) / (max - min)) * 100;\n\n const getValueFromPosition = (clientX: number): number => {\n if (!sliderRef.current) return min;\n const rect = sliderRef.current.getBoundingClientRect();\n const percentage = Math.max(\n 0,\n Math.min(1, (clientX - rect.left) / rect.width),\n );\n const rawValue = min + percentage * (max - min);\n return Math.round(rawValue / step) * step;\n };\n\n const handleMouseDown = (\n e: React.MouseEvent,\n thumb: \"min\" | \"max\" = \"min\",\n ) => {\n if (disabled) return;\n e.preventDefault();\n setIsDragging(true);\n setActiveThumb(thumb);\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (!sliderRef.current) return;\n const newValue = getValueFromPosition(moveEvent.clientX);\n updateValue(newValue, thumb);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n setActiveThumb(null);\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n const updateValue = (newValue: number, thumb: \"min\" | \"max\" = \"min\") => {\n const clampedValue = Math.max(min, Math.min(max, newValue));\n\n if (variant === \"range\") {\n const [minVal, maxVal] = Array.isArray(currentValue)\n ? currentValue\n : [min, max];\n let updatedValue: [number, number];\n\n if (thumb === \"min\") {\n updatedValue = [Math.min(clampedValue, maxVal), maxVal];\n } else {\n updatedValue = [minVal, Math.max(clampedValue, minVal)];\n }\n\n if (!isControlled) {\n setInternalValue(updatedValue);\n }\n onChange?.(updatedValue);\n onValueChange?.(updatedValue);\n } else {\n if (!isControlled) {\n setInternalValue(clampedValue);\n }\n onChange?.(clampedValue);\n onValueChange?.(clampedValue);\n }\n };\n\n const handleTrackClick = (e: React.MouseEvent) => {\n if (disabled || isDragging) return;\n const newValue = getValueFromPosition(e.clientX);\n updateValue(newValue);\n };\n\n // Get focus ring color using design system helper\n const getFocusRingColor = (): string => {\n return \"focus:ring-line-brand\" + \" ring-offset-2\";\n };\n\n // Slider variants using CVA\n const sliderTrackVariants = cva(cn(\"relative\", \"cursor-pointer\"), {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n });\n\n const sliderThumbVariants = cva(\n cn(\n \"absolute\",\n \"bg-surface-brand\",\n getRadiusClass(\"full\"),\n \"border-2\",\n \"border-white\",\n getShadowClass(\"md\"),\n \"cursor-grab\",\n \"active:cursor-grabbing\",\n getAnimationClass(\"base\"),\n \"-translate-x-1/2\",\n \"-translate-y-1/2\",\n \"top-1/2\",\n ),\n {\n variants: {\n size: {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n },\n active: {\n true: getFocusRingColor(),\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n active: false,\n },\n },\n );\n\n // Configuration for styling variants\n // const _config = {\n // track: sliderTrackVariants({ size, disabled }),\n // thumb: sliderThumbVariants({ size }),\n // };\n const singleValue =\n typeof currentValue === \"number\" ? currentValue : currentValue[0];\n const minValue = Array.isArray(currentValue) ? currentValue[0] : min;\n const maxValue = Array.isArray(currentValue) ? currentValue[1] : singleValue;\n\n const minPercentage = getPercentage(minValue);\n const maxPercentage = getPercentage(maxValue);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <label\n id={labelId}\n className={cn(\n \"block\",\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n getSpacingClass(\"sm\", \"mb\"),\n )}\n >\n {label}\n {showValue && (\n <span\n className={cn(getSpacingClass(\"sm\", \"ml\"), \"text-fg-secondary\")}\n >\n {variant === \"range\" ? `${minValue} - ${maxValue}` : singleValue}\n </span>\n )}\n </label>\n {variant === \"range\" && (\n <>\n <span id={minQualifierId} className=\"sr-only\">\n minimum\n </span>\n <span id={maxQualifierId} className=\"sr-only\">\n maximum\n </span>\n </>\n )}\n <div\n ref={sliderRef}\n className={cn(\n sliderTrackVariants({ size, disabled }),\n \"bg-surface-muted\",\n getRadiusClass(\"full\"),\n )}\n onClick={handleTrackClick}\n role={variant === \"range\" ? undefined : \"slider\"}\n aria-valuemin={variant === \"range\" ? undefined : min}\n aria-valuemax={variant === \"range\" ? undefined : max}\n aria-valuenow={variant === \"range\" ? undefined : singleValue}\n aria-disabled={variant === \"range\" ? undefined : disabled}\n aria-labelledby={variant === \"range\" ? undefined : labelId}\n >\n {/* Active track */}\n <div\n className={cn(\n \"absolute\",\n sliderTrackVariants({ size }),\n \"bg-surface-brand\",\n getRadiusClass(\"full\"),\n getAnimationClass(\"base\"),\n )}\n style={{\n left: `${minPercentage}%`,\n width: `${maxPercentage - minPercentage}%`,\n }}\n />\n\n {/* Marks */}\n {marks.map((mark) => {\n const markPercentage = getPercentage(mark);\n return (\n <div\n key={mark}\n className={cn(\n \"absolute\",\n \"w-1\",\n \"h-1\",\n \"bg-line-strong\",\n getRadiusClass(\"full\"),\n \"-translate-x-1/2\",\n )}\n style={{\n left: `${markPercentage}%`,\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n }}\n />\n );\n })}\n\n {/* Thumbs */}\n {variant === \"range\" ? (\n <>\n <div\n className={cn(\n sliderThumbVariants({ size, active: activeThumb === \"min\" }),\n )}\n style={{ left: `${minPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e, \"min\")}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={maxValue}\n aria-valuenow={minValue}\n aria-labelledby={`${labelId} ${minQualifierId}`}\n />\n <div\n className={cn(\n sliderThumbVariants({ size, active: activeThumb === \"max\" }),\n )}\n style={{ left: `${maxPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e, \"max\")}\n role=\"slider\"\n aria-valuemin={minValue}\n aria-valuemax={max}\n aria-valuenow={maxValue}\n aria-labelledby={`${labelId} ${maxQualifierId}`}\n />\n </>\n ) : (\n <div\n className={cn(sliderThumbVariants({ size, active: isDragging }))}\n style={{ left: `${maxPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e)}\n />\n )}\n\n {showValue && !label && (\n <div className=\"absolute -top-6 left-0 right-0 flex justify-center\">\n <span\n className={cn(\n getTypographySize(\"caption\"),\n \"text-fg-secondary\",\n \"bg-surface-overlay\",\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getRadiusClass(\"md\"),\n \"shadow\",\n )}\n >\n {variant === \"range\" ? `${minValue} - ${maxValue}` : singleValue}\n </span>\n </div>\n )}\n </div>\n </div>\n );\n});\n\nSlider.displayName = \"Slider\";\n\nexport default Slider;\n"],"names":["Slider","forwardRef","_a","ref","_b","controlledValue","defaultValue","min","max","step","variant","size","disabled","showValue","marks","onChange","onValueChange","label","className","props","__objRest","sliderRef","useRef","labelId","useId","minQualifierId","maxQualifierId","internalValue","setInternalValue","useState","isDragging","setIsDragging","activeThumb","setActiveThumb","isControlled","currentValue","getPercentage","val","getValueFromPosition","clientX","rect","percentage","rawValue","handleMouseDown","e","thumb","handleMouseMove","moveEvent","newValue","updateValue","handleMouseUp","clampedValue","minVal","maxVal","updatedValue","handleTrackClick","getFocusRingColor","sliderTrackVariants","cva","cn","sliderThumbVariants","getRadiusClass","getShadowClass","getAnimationClass","singleValue","minValue","maxValue","minPercentage","maxPercentage","jsxs","getTypographySize","getTypographyWeight","getSpacingClass","jsx","Fragment","mark","markPercentage"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var u = Object.defineProperty, x = Object.defineProperties;
|
|
3
|
+
var h = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var n = Object.getOwnPropertySymbols;
|
|
5
|
+
var o = Object.prototype.hasOwnProperty, p = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var m = (r, a, e) => a in r ? u(r, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[a] = e, d = (r, a) => {
|
|
7
|
+
for (var e in a || (a = {}))
|
|
8
|
+
o.call(a, e) && m(r, e, a[e]);
|
|
9
|
+
if (n)
|
|
10
|
+
for (var e of n(a))
|
|
11
|
+
p.call(a, e) && m(r, e, a[e]);
|
|
12
|
+
return r;
|
|
13
|
+
}, l = (r, a) => x(r, h(a));
|
|
14
|
+
var c = (r, a) => {
|
|
15
|
+
var e = {};
|
|
16
|
+
for (var i in r)
|
|
17
|
+
o.call(r, i) && a.indexOf(i) < 0 && (e[i] = r[i]);
|
|
18
|
+
if (r != null && n)
|
|
19
|
+
for (var i of n(r))
|
|
20
|
+
a.indexOf(i) < 0 && p.call(r, i) && (e[i] = r[i]);
|
|
21
|
+
return e;
|
|
22
|
+
};
|
|
23
|
+
import { jsxs as v, jsx as f } from "react/jsx-runtime";
|
|
24
|
+
import { memo as S } from "react";
|
|
25
|
+
import { Loader2 as N } from "lucide-react";
|
|
26
|
+
import { getSpacingClass as w } from "../../tokens/spacing.js";
|
|
27
|
+
import { getTypographySize as z } from "../../tokens/typography.js";
|
|
28
|
+
import { cn as t } from "../../utils/cn.js";
|
|
29
|
+
import { cva as b } from "../../utils/cva.js";
|
|
30
|
+
const j = b("motion-safe:animate-spin", {
|
|
31
|
+
variants: {
|
|
32
|
+
size: {
|
|
33
|
+
sm: "h-4 w-4",
|
|
34
|
+
md: "h-5 w-5",
|
|
35
|
+
lg: "h-8 w-8"
|
|
36
|
+
},
|
|
37
|
+
variant: {
|
|
38
|
+
primary: "text-fg-brand",
|
|
39
|
+
secondary: "text-fg-brand-secondary",
|
|
40
|
+
neutral: "text-fg-secondary"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
defaultVariants: {
|
|
44
|
+
size: "md",
|
|
45
|
+
variant: "primary"
|
|
46
|
+
}
|
|
47
|
+
}), L = S(function(V) {
|
|
48
|
+
var s = V, {
|
|
49
|
+
size: a = "md",
|
|
50
|
+
variant: e = "primary",
|
|
51
|
+
label: i,
|
|
52
|
+
className: y = ""
|
|
53
|
+
} = s, g = c(s, [
|
|
54
|
+
"size",
|
|
55
|
+
"variant",
|
|
56
|
+
"label",
|
|
57
|
+
"className"
|
|
58
|
+
]);
|
|
59
|
+
return /* @__PURE__ */ v(
|
|
60
|
+
"div",
|
|
61
|
+
l(d({
|
|
62
|
+
className: t("inline-flex", "items-center", y),
|
|
63
|
+
role: "status",
|
|
64
|
+
"aria-label": i || "Loading",
|
|
65
|
+
"aria-live": "polite"
|
|
66
|
+
}, g), {
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ f(
|
|
69
|
+
N,
|
|
70
|
+
{
|
|
71
|
+
className: t(j({ size: a, variant: e })),
|
|
72
|
+
"aria-hidden": "true"
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
i && /* @__PURE__ */ f(
|
|
76
|
+
"span",
|
|
77
|
+
{
|
|
78
|
+
className: t(
|
|
79
|
+
w("sm", "ml"),
|
|
80
|
+
z("bodySmall"),
|
|
81
|
+
"text-fg-secondary",
|
|
82
|
+
"sr-only"
|
|
83
|
+
),
|
|
84
|
+
children: i
|
|
85
|
+
}
|
|
86
|
+
)
|
|
87
|
+
]
|
|
88
|
+
})
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
L.displayName = "Spinner";
|
|
92
|
+
export {
|
|
93
|
+
L as default
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../../../src/ui/primitives/Spinner/Spinner.tsx"],"sourcesContent":["\"use client\";\n\nimport { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\nexport type SpinnerVariant = \"primary\" | \"secondary\" | \"neutral\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n variant?: SpinnerVariant;\n label?: string;\n}\n\n/**\n * Spinner Component\n *\n * A loading spinner component for indicating loading states.\n * Follows Atomic Design principles as an Atom component.\n * Uses Strategy Pattern for different size/variant combinations.\n *\n * @example\n * ```tsx\n * <Spinner size=\"md\" variant=\"primary\" label=\"Loading...\" />\n * ```\n */\n// Spinner variants using CVA\nconst spinnerVariants = cva(\"motion-safe:animate-spin\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-8 w-8\",\n },\n variant: {\n primary: \"text-fg-brand\",\n secondary: \"text-fg-brand-secondary\",\n neutral: \"text-fg-secondary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst Spinner = memo(function Spinner({\n size = \"md\",\n variant = \"primary\",\n label,\n className = \"\",\n ...props\n}: SpinnerProps) {\n return (\n <div\n className={cn(\"inline-flex\", \"items-center\", className)}\n role=\"status\"\n aria-label={label || \"Loading\"}\n aria-live=\"polite\"\n {...props}\n >\n <Loader2\n className={cn(spinnerVariants({ size, variant }))}\n aria-hidden=\"true\"\n />\n {label && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"ml\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n \"sr-only\",\n )}\n >\n {label}\n </span>\n )}\n </div>\n );\n});\n\nSpinner.displayName = \"Spinner\";\n\nexport default Spinner;\n"],"names":["spinnerVariants","cva","Spinner","memo","_a","_b","size","variant","label","className","props","__objRest","jsxs","__spreadProps","__spreadValues","cn","jsx","Loader2","getSpacingClass","getTypographySize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAkBC,EAAI,4BAA4B;AAAA,EACtD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb,CAAC,GAEKC,IAAUC,EAAK,SAAiBC,GAMrB;AANqB,MAAAC,IAAAD,GACpC;AAAA,UAAAE,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,MAJwBJ,GAKjCK,IAAAC,EALiCN,GAKjC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAWC,EAAG,eAAe,gBAAgBN,CAAS;AAAA,MACtD,MAAK;AAAA,MACL,cAAYD,KAAS;AAAA,MACrB,aAAU;AAAA,OACNE,IALL;AAAA,MAOC,UAAA;AAAA,QAAA,gBAAAM;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,WAAWF,EAAGf,EAAgB,EAAE,MAAAM,GAAM,SAAAC,EAAA,CAAS,CAAC;AAAA,YAChD,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEbC,KACC,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACTG,EAAgB,MAAM,IAAI;AAAA,cAC1BC,EAAkB,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,YAAA;AAAA,YAGD,UAAAX;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;AAEDN,EAAQ,cAAc;"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var P = Object.defineProperty, Q = Object.defineProperties;
|
|
3
|
+
var U = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var h = Object.getOwnPropertySymbols;
|
|
5
|
+
var T = Object.prototype.hasOwnProperty, A = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var D = (r, e, t) => e in r ? P(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, i = (r, e) => {
|
|
7
|
+
for (var t in e || (e = {}))
|
|
8
|
+
T.call(e, t) && D(r, t, e[t]);
|
|
9
|
+
if (h)
|
|
10
|
+
for (var t of h(e))
|
|
11
|
+
A.call(e, t) && D(r, t, e[t]);
|
|
12
|
+
return r;
|
|
13
|
+
}, f = (r, e) => Q(r, U(e));
|
|
14
|
+
var F = (r, e) => {
|
|
15
|
+
var t = {};
|
|
16
|
+
for (var s in r)
|
|
17
|
+
T.call(r, s) && e.indexOf(s) < 0 && (t[s] = r[s]);
|
|
18
|
+
if (r != null && h)
|
|
19
|
+
for (var s of h(r))
|
|
20
|
+
e.indexOf(s) < 0 && A.call(r, s) && (t[s] = r[s]);
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import { jsxs as w, jsx as b } from "react/jsx-runtime";
|
|
24
|
+
import { memo as V, forwardRef as X, useState as Y, useId as Z, useMemo as d, useCallback as K } from "react";
|
|
25
|
+
import { getAnimationClass as M } from "../../tokens/animations.js";
|
|
26
|
+
import { getRadiusClass as W } from "../../tokens/radius.js";
|
|
27
|
+
import { getSpacingClass as q } from "../../tokens/spacing.js";
|
|
28
|
+
import { getSwitchClasses as _ } from "../../tokens/switch.js";
|
|
29
|
+
import { getTypographyWeight as tt, getTypographySize as z } from "../../tokens/typography.js";
|
|
30
|
+
import { cn as y } from "../../utils/cn.js";
|
|
31
|
+
const rt = V(
|
|
32
|
+
X(function(et, G) {
|
|
33
|
+
var I = et, {
|
|
34
|
+
size: e = "md",
|
|
35
|
+
label: t,
|
|
36
|
+
helperText: s,
|
|
37
|
+
error: p = !1,
|
|
38
|
+
success: k = !1,
|
|
39
|
+
className: S = "",
|
|
40
|
+
disabled: n = !1,
|
|
41
|
+
checked: N,
|
|
42
|
+
defaultChecked: x,
|
|
43
|
+
onChange: a,
|
|
44
|
+
id: B
|
|
45
|
+
} = I, C = F(I, [
|
|
46
|
+
"size",
|
|
47
|
+
"label",
|
|
48
|
+
"helperText",
|
|
49
|
+
"error",
|
|
50
|
+
"success",
|
|
51
|
+
"className",
|
|
52
|
+
"disabled",
|
|
53
|
+
"checked",
|
|
54
|
+
"defaultChecked",
|
|
55
|
+
"onChange",
|
|
56
|
+
"id"
|
|
57
|
+
]);
|
|
58
|
+
const g = N !== void 0, [H, E] = Y(
|
|
59
|
+
x != null ? x : !1
|
|
60
|
+
), c = g ? !!N : H, J = Z(), m = B || `switch-${J}`, R = d(
|
|
61
|
+
() => t ? `${m}-label` : void 0,
|
|
62
|
+
[t, m]
|
|
63
|
+
), $ = d(
|
|
64
|
+
() => s ? `${m}-helper` : void 0,
|
|
65
|
+
[s, m]
|
|
66
|
+
), u = d(() => _(e), [e]), j = d(
|
|
67
|
+
() => "focus:border-line-focus".replace("focus:border-", "focus:ring-"),
|
|
68
|
+
[]
|
|
69
|
+
), L = d(
|
|
70
|
+
() => y(
|
|
71
|
+
"relative",
|
|
72
|
+
"inline-flex",
|
|
73
|
+
"shrink-0",
|
|
74
|
+
"cursor-pointer",
|
|
75
|
+
W("full"),
|
|
76
|
+
"border-2",
|
|
77
|
+
"border-transparent",
|
|
78
|
+
M("base"),
|
|
79
|
+
"focus:outline-none",
|
|
80
|
+
"focus:ring-2",
|
|
81
|
+
j,
|
|
82
|
+
"focus:ring-offset-2",
|
|
83
|
+
u.track,
|
|
84
|
+
c ? "bg-surface-brand" : "bg-surface-muted",
|
|
85
|
+
// Border feedback only shows in the off state — the on-state
|
|
86
|
+
// brand background already saturates the track and overrides
|
|
87
|
+
// any colored outline visually. Error wins over success.
|
|
88
|
+
p && !c && "border-error",
|
|
89
|
+
!p && k && !c && "border-success",
|
|
90
|
+
n && "opacity-50 cursor-not-allowed",
|
|
91
|
+
S
|
|
92
|
+
),
|
|
93
|
+
[
|
|
94
|
+
j,
|
|
95
|
+
u.track,
|
|
96
|
+
c,
|
|
97
|
+
p,
|
|
98
|
+
k,
|
|
99
|
+
n,
|
|
100
|
+
S
|
|
101
|
+
]
|
|
102
|
+
), O = d(
|
|
103
|
+
() => y(
|
|
104
|
+
"pointer-events-none",
|
|
105
|
+
"inline-block",
|
|
106
|
+
W("full"),
|
|
107
|
+
"bg-surface-base",
|
|
108
|
+
"shadow",
|
|
109
|
+
"transform",
|
|
110
|
+
M("base"),
|
|
111
|
+
u.thumb,
|
|
112
|
+
c ? u.translate : "translate-x-0"
|
|
113
|
+
),
|
|
114
|
+
[u.thumb, u.translate, c]
|
|
115
|
+
);
|
|
116
|
+
return /* @__PURE__ */ w("div", { className: y("flex", "items-start", q("md", "gap")), children: [
|
|
117
|
+
/* @__PURE__ */ w("div", { className: "flex items-center", children: [
|
|
118
|
+
/* @__PURE__ */ b(
|
|
119
|
+
"button",
|
|
120
|
+
{
|
|
121
|
+
type: "button",
|
|
122
|
+
className: L,
|
|
123
|
+
role: "switch",
|
|
124
|
+
"aria-checked": c,
|
|
125
|
+
"aria-labelledby": R,
|
|
126
|
+
"aria-describedby": $,
|
|
127
|
+
disabled: n,
|
|
128
|
+
onClick: K(
|
|
129
|
+
(o) => {
|
|
130
|
+
if (n) return;
|
|
131
|
+
const l = !c;
|
|
132
|
+
if (g || E(l), a) {
|
|
133
|
+
const v = f(i({}, o), {
|
|
134
|
+
target: f(i({}, o.target), { checked: l }),
|
|
135
|
+
currentTarget: f(i({}, o.currentTarget), { checked: l })
|
|
136
|
+
});
|
|
137
|
+
a(v);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
[n, a, c, g]
|
|
141
|
+
),
|
|
142
|
+
onKeyDown: K(
|
|
143
|
+
(o) => {
|
|
144
|
+
if (n || o.key !== "Enter" && o.key !== " ") return;
|
|
145
|
+
o.preventDefault();
|
|
146
|
+
const l = !c;
|
|
147
|
+
if (g || E(l), a) {
|
|
148
|
+
const v = f(i({}, o), {
|
|
149
|
+
target: f(i({}, o.target), { checked: l }),
|
|
150
|
+
currentTarget: f(i({}, o.currentTarget), { checked: l })
|
|
151
|
+
});
|
|
152
|
+
a(v);
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
[n, a, c, g]
|
|
156
|
+
),
|
|
157
|
+
children: /* @__PURE__ */ b("span", { className: O })
|
|
158
|
+
}
|
|
159
|
+
),
|
|
160
|
+
/* @__PURE__ */ b(
|
|
161
|
+
"input",
|
|
162
|
+
i({
|
|
163
|
+
ref: G,
|
|
164
|
+
type: "checkbox",
|
|
165
|
+
id: m,
|
|
166
|
+
checked: c,
|
|
167
|
+
onChange: a != null ? a : (() => {
|
|
168
|
+
}),
|
|
169
|
+
disabled: n,
|
|
170
|
+
className: "sr-only",
|
|
171
|
+
"aria-hidden": "true",
|
|
172
|
+
tabIndex: -1
|
|
173
|
+
}, C)
|
|
174
|
+
)
|
|
175
|
+
] }),
|
|
176
|
+
(t || s) && /* @__PURE__ */ w("div", { className: "flex-1", children: [
|
|
177
|
+
t && /* @__PURE__ */ b(
|
|
178
|
+
"label",
|
|
179
|
+
{
|
|
180
|
+
id: R,
|
|
181
|
+
htmlFor: m,
|
|
182
|
+
className: y(
|
|
183
|
+
"block",
|
|
184
|
+
z("bodySmall"),
|
|
185
|
+
tt("label"),
|
|
186
|
+
p ? "text-fg-error" : "text-fg-primary",
|
|
187
|
+
n ? "opacity-50" : "cursor-pointer"
|
|
188
|
+
),
|
|
189
|
+
children: t
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
s && /* @__PURE__ */ b(
|
|
193
|
+
"p",
|
|
194
|
+
{
|
|
195
|
+
id: $,
|
|
196
|
+
className: y(
|
|
197
|
+
q("xs", "mt"),
|
|
198
|
+
z("bodySmall"),
|
|
199
|
+
p ? "text-fg-error" : k ? "text-fg-success" : "text-fg-secondary"
|
|
200
|
+
),
|
|
201
|
+
children: s
|
|
202
|
+
}
|
|
203
|
+
)
|
|
204
|
+
] })
|
|
205
|
+
] });
|
|
206
|
+
})
|
|
207
|
+
);
|
|
208
|
+
rt.displayName = "Switch";
|
|
209
|
+
export {
|
|
210
|
+
rt as default
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=Switch.js.map
|