@spear-ai/spectral 1.13.0 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Accordion.d.ts +66 -46
- package/dist/Accordion.d.ts.map +1 -0
- package/dist/Accordion.js +113 -4
- package/dist/Accordion.js.map +1 -0
- package/dist/Alert/AlertBase.d.ts +75 -41
- package/dist/Alert/AlertBase.d.ts.map +1 -0
- package/dist/Alert/AlertBase.js +48 -39
- package/dist/Alert/AlertBase.js.map +1 -0
- package/dist/Alert.d.ts +24 -10
- package/dist/Alert.d.ts.map +1 -0
- package/dist/Alert.js +62 -50
- package/dist/Alert.js.map +1 -0
- package/dist/Avatar.d.ts +24 -11
- package/dist/Avatar.d.ts.map +1 -0
- package/dist/Avatar.js +87 -68
- package/dist/Avatar.js.map +1 -0
- package/dist/Badge.d.ts +19 -8
- package/dist/Badge.d.ts.map +1 -0
- package/dist/Badge.js +18 -13
- package/dist/Badge.js.map +1 -0
- package/dist/Button.d.ts +50 -26
- package/dist/Button.d.ts.map +1 -0
- package/dist/Button.js +70 -56
- package/dist/Button.js.map +1 -0
- package/dist/ButtonGroup/ButtonGroupButton.d.ts +25 -12
- package/dist/ButtonGroup/ButtonGroupButton.d.ts.map +1 -0
- package/dist/ButtonGroup/ButtonGroupButton.js +24 -19
- package/dist/ButtonGroup/ButtonGroupButton.js.map +1 -0
- package/dist/ButtonGroup.d.ts +60 -31
- package/dist/ButtonGroup.d.ts.map +1 -0
- package/dist/ButtonGroup.js +64 -49
- package/dist/ButtonGroup.js.map +1 -0
- package/dist/ButtonIcon.d.ts +32 -16
- package/dist/ButtonIcon.d.ts.map +1 -0
- package/dist/ButtonIcon.js +43 -35
- package/dist/ButtonIcon.js.map +1 -0
- package/dist/Checkbox/CheckboxBase.d.ts +54 -26
- package/dist/Checkbox/CheckboxBase.d.ts.map +1 -0
- package/dist/Checkbox/CheckboxBase.js +106 -74
- package/dist/Checkbox/CheckboxBase.js.map +1 -0
- package/dist/Checkbox.d.ts +45 -24
- package/dist/Checkbox.d.ts.map +1 -0
- package/dist/Checkbox.js +45 -39
- package/dist/Checkbox.js.map +1 -0
- package/dist/Combobox.d.ts +52 -23
- package/dist/Combobox.d.ts.map +1 -0
- package/dist/Combobox.js +199 -4
- package/dist/Combobox.js.map +1 -0
- package/dist/ControlGroup/ControlGroupSelect.d.ts +69 -39
- package/dist/ControlGroup/ControlGroupSelect.d.ts.map +1 -0
- package/dist/ControlGroup/ControlGroupSelect.js +157 -115
- package/dist/ControlGroup/ControlGroupSelect.js.map +1 -0
- package/dist/ControlGroup.d.ts +39 -21
- package/dist/ControlGroup.d.ts.map +1 -0
- package/dist/ControlGroup.js +62 -48
- package/dist/ControlGroup.js.map +1 -0
- package/dist/DataCard/Card.d.ts +36 -9
- package/dist/DataCard/Card.d.ts.map +1 -0
- package/dist/DataCard/Card.js +57 -37
- package/dist/DataCard/Card.js.map +1 -0
- package/dist/DataCard.d.ts +23 -9
- package/dist/DataCard.d.ts.map +1 -0
- package/dist/DataCard.js +40 -36
- package/dist/DataCard.js.map +1 -0
- package/dist/DateTimePicker/Calendar.d.ts +24 -11
- package/dist/DateTimePicker/Calendar.d.ts.map +1 -0
- package/dist/DateTimePicker/Calendar.js +54 -3
- package/dist/DateTimePicker/Calendar.js.map +1 -0
- package/dist/DateTimePicker/DateTimeDisplayInput.d.ts +24 -18
- package/dist/DateTimePicker/DateTimeDisplayInput.d.ts.map +1 -0
- package/dist/DateTimePicker/DateTimeDisplayInput.js +360 -213
- package/dist/DateTimePicker/DateTimeDisplayInput.js.map +1 -0
- package/dist/DateTimePicker/DateTimeInput.d.ts +41 -19
- package/dist/DateTimePicker/DateTimeInput.d.ts.map +1 -0
- package/dist/DateTimePicker/DateTimeInput.js +151 -98
- package/dist/DateTimePicker/DateTimeInput.js.map +1 -0
- package/dist/DateTimePicker/DateTimeUtils.d.ts +121 -109
- package/dist/DateTimePicker/DateTimeUtils.d.ts.map +1 -0
- package/dist/DateTimePicker/DateTimeUtils.js +296 -2
- package/dist/DateTimePicker/DateTimeUtils.js.map +1 -0
- package/dist/DateTimePicker/TimePeriodSelect.d.ts +16 -10
- package/dist/DateTimePicker/TimePeriodSelect.d.ts.map +1 -0
- package/dist/DateTimePicker/TimePeriodSelect.js +54 -40
- package/dist/DateTimePicker/TimePeriodSelect.js.map +1 -0
- package/dist/DateTimePicker/TimePicker.d.ts +29 -14
- package/dist/DateTimePicker/TimePicker.d.ts.map +1 -0
- package/dist/DateTimePicker/TimePicker.js +68 -54
- package/dist/DateTimePicker/TimePicker.js.map +1 -0
- package/dist/DateTimePicker.d.ts +52 -31
- package/dist/DateTimePicker.d.ts.map +1 -0
- package/dist/DateTimePicker.js +84 -70
- package/dist/DateTimePicker.js.map +1 -0
- package/dist/Dialog.d.ts +60 -21
- package/dist/Dialog.d.ts.map +1 -0
- package/dist/Dialog.js +103 -72
- package/dist/Dialog.js.map +1 -0
- package/dist/Drawer.d.ts +32 -14
- package/dist/Drawer.d.ts.map +1 -0
- package/dist/Drawer.js +46 -41
- package/dist/Drawer.js.map +1 -0
- package/dist/DropdownMenu.d.ts +84 -50
- package/dist/DropdownMenu.d.ts.map +1 -0
- package/dist/DropdownMenu.js +156 -3
- package/dist/DropdownMenu.js.map +1 -0
- package/dist/FormFieldMessage.d.ts +29 -0
- package/dist/FormFieldMessage.d.ts.map +1 -0
- package/dist/FormFieldMessage.js +68 -0
- package/dist/FormFieldMessage.js.map +1 -0
- package/dist/HoverCard.d.ts +51 -25
- package/dist/HoverCard.d.ts.map +1 -0
- package/dist/HoverCard.js +67 -3
- package/dist/HoverCard.js.map +1 -0
- package/dist/Icons/AdjustmentsIcon.d.ts +16 -3
- package/dist/Icons/AdjustmentsIcon.d.ts.map +1 -0
- package/dist/Icons/AdjustmentsIcon.js +84 -78
- package/dist/Icons/AdjustmentsIcon.js.map +1 -0
- package/dist/Icons/AnalyzeIcon.d.ts +16 -3
- package/dist/Icons/AnalyzeIcon.d.ts.map +1 -0
- package/dist/Icons/AnalyzeIcon.js +56 -50
- package/dist/Icons/AnalyzeIcon.js.map +1 -0
- package/dist/Icons/AnnotationsIcon.d.ts +16 -3
- package/dist/Icons/AnnotationsIcon.d.ts.map +1 -0
- package/dist/Icons/AnnotationsIcon.js +26 -20
- package/dist/Icons/AnnotationsIcon.js.map +1 -0
- package/dist/Icons/ApprovedIcon.d.ts +16 -3
- package/dist/Icons/ApprovedIcon.d.ts.map +1 -0
- package/dist/Icons/ApprovedIcon.js +32 -26
- package/dist/Icons/ApprovedIcon.js.map +1 -0
- package/dist/Icons/ArrowDownIcon.d.ts +16 -3
- package/dist/Icons/ArrowDownIcon.d.ts.map +1 -0
- package/dist/Icons/ArrowDownIcon.js +26 -20
- package/dist/Icons/ArrowDownIcon.js.map +1 -0
- package/dist/Icons/ArrowUpIcon.d.ts +16 -3
- package/dist/Icons/ArrowUpIcon.d.ts.map +1 -0
- package/dist/Icons/ArrowUpIcon.js +26 -20
- package/dist/Icons/ArrowUpIcon.js.map +1 -0
- package/dist/Icons/BoxToolIcon.d.ts +16 -3
- package/dist/Icons/BoxToolIcon.d.ts.map +1 -0
- package/dist/Icons/BoxToolIcon.js +23 -17
- package/dist/Icons/BoxToolIcon.js.map +1 -0
- package/dist/Icons/CalendarIcon.d.ts +16 -3
- package/dist/Icons/CalendarIcon.d.ts.map +1 -0
- package/dist/Icons/CalendarIcon.js +49 -43
- package/dist/Icons/CalendarIcon.js.map +1 -0
- package/dist/Icons/CheckCircleIcon.d.ts +16 -3
- package/dist/Icons/CheckCircleIcon.d.ts.map +1 -0
- package/dist/Icons/CheckCircleIcon.js +32 -26
- package/dist/Icons/CheckCircleIcon.js.map +1 -0
- package/dist/Icons/CheckSquareIcon.d.ts +16 -3
- package/dist/Icons/CheckSquareIcon.d.ts.map +1 -0
- package/dist/Icons/CheckSquareIcon.js +32 -26
- package/dist/Icons/CheckSquareIcon.js.map +1 -0
- package/dist/Icons/CheckmarkIcon.d.ts +17 -3
- package/dist/Icons/CheckmarkIcon.d.ts.map +1 -0
- package/dist/Icons/CheckmarkIcon.js +28 -22
- package/dist/Icons/CheckmarkIcon.js.map +1 -0
- package/dist/Icons/ChevronDownIcon.d.ts +16 -3
- package/dist/Icons/ChevronDownIcon.d.ts.map +1 -0
- package/dist/Icons/ChevronDownIcon.js +28 -22
- package/dist/Icons/ChevronDownIcon.js.map +1 -0
- package/dist/Icons/ChevronUpIcon.d.ts +16 -3
- package/dist/Icons/ChevronUpIcon.d.ts.map +1 -0
- package/dist/Icons/ChevronUpIcon.js +28 -22
- package/dist/Icons/ChevronUpIcon.js.map +1 -0
- package/dist/Icons/ClockIcon.d.ts +16 -3
- package/dist/Icons/ClockIcon.d.ts.map +1 -0
- package/dist/Icons/ClockIcon.js +32 -26
- package/dist/Icons/ClockIcon.js.map +1 -0
- package/dist/Icons/CloseCircleIcon.d.ts +16 -3
- package/dist/Icons/CloseCircleIcon.d.ts.map +1 -0
- package/dist/Icons/CloseCircleIcon.js +32 -26
- package/dist/Icons/CloseCircleIcon.js.map +1 -0
- package/dist/Icons/CloseIcon.d.ts +16 -3
- package/dist/Icons/CloseIcon.d.ts.map +1 -0
- package/dist/Icons/CloseIcon.js +24 -18
- package/dist/Icons/CloseIcon.js.map +1 -0
- package/dist/Icons/Crosshairs2Icon.d.ts +16 -3
- package/dist/Icons/Crosshairs2Icon.d.ts.map +1 -0
- package/dist/Icons/Crosshairs2Icon.js +56 -50
- package/dist/Icons/Crosshairs2Icon.js.map +1 -0
- package/dist/Icons/CrosshairsIcon.d.ts +16 -3
- package/dist/Icons/CrosshairsIcon.d.ts.map +1 -0
- package/dist/Icons/CrosshairsIcon.js +25 -19
- package/dist/Icons/CrosshairsIcon.js.map +1 -0
- package/dist/Icons/DashboardIcon.d.ts +16 -3
- package/dist/Icons/DashboardIcon.d.ts.map +1 -0
- package/dist/Icons/DashboardIcon.js +42 -36
- package/dist/Icons/DashboardIcon.js.map +1 -0
- package/dist/Icons/DatabaseIcon.d.ts +16 -3
- package/dist/Icons/DatabaseIcon.d.ts.map +1 -0
- package/dist/Icons/DatabaseIcon.js +42 -36
- package/dist/Icons/DatabaseIcon.js.map +1 -0
- package/dist/Icons/DeleteIcon.d.ts +16 -3
- package/dist/Icons/DeleteIcon.d.ts.map +1 -0
- package/dist/Icons/DeleteIcon.js +42 -36
- package/dist/Icons/DeleteIcon.js.map +1 -0
- package/dist/Icons/DurationIcon.d.ts +16 -3
- package/dist/Icons/DurationIcon.d.ts.map +1 -0
- package/dist/Icons/DurationIcon.js +63 -57
- package/dist/Icons/DurationIcon.js.map +1 -0
- package/dist/Icons/EditIcon.d.ts +16 -3
- package/dist/Icons/EditIcon.d.ts.map +1 -0
- package/dist/Icons/EditIcon.js +32 -26
- package/dist/Icons/EditIcon.js.map +1 -0
- package/dist/Icons/EmailIcon.d.ts +16 -3
- package/dist/Icons/EmailIcon.d.ts.map +1 -0
- package/dist/Icons/EmailIcon.js +32 -26
- package/dist/Icons/EmailIcon.js.map +1 -0
- package/dist/Icons/EraserIcon.d.ts +16 -3
- package/dist/Icons/EraserIcon.d.ts.map +1 -0
- package/dist/Icons/EraserIcon.js +27 -23
- package/dist/Icons/EraserIcon.js.map +1 -0
- package/dist/Icons/ErrorIcon.d.ts +16 -3
- package/dist/Icons/ErrorIcon.d.ts.map +1 -0
- package/dist/Icons/ErrorIcon.js +33 -27
- package/dist/Icons/ErrorIcon.js.map +1 -0
- package/dist/Icons/EyeClosedIcon.d.ts +16 -3
- package/dist/Icons/EyeClosedIcon.d.ts.map +1 -0
- package/dist/Icons/EyeClosedIcon.js +35 -29
- package/dist/Icons/EyeClosedIcon.js.map +1 -0
- package/dist/Icons/EyeClosedIcon2.d.ts +16 -3
- package/dist/Icons/EyeClosedIcon2.d.ts.map +1 -0
- package/dist/Icons/EyeClosedIcon2.js +33 -27
- package/dist/Icons/EyeClosedIcon2.js.map +1 -0
- package/dist/Icons/EyeOpenIcon.d.ts +16 -3
- package/dist/Icons/EyeOpenIcon.d.ts.map +1 -0
- package/dist/Icons/EyeOpenIcon.js +28 -22
- package/dist/Icons/EyeOpenIcon.js.map +1 -0
- package/dist/Icons/FileDownloadIcon.d.ts +16 -3
- package/dist/Icons/FileDownloadIcon.d.ts.map +1 -0
- package/dist/Icons/FileDownloadIcon.js +49 -43
- package/dist/Icons/FileDownloadIcon.js.map +1 -0
- package/dist/Icons/GoToFirstIcon.d.ts +16 -3
- package/dist/Icons/GoToFirstIcon.d.ts.map +1 -0
- package/dist/Icons/GoToFirstIcon.js +32 -26
- package/dist/Icons/GoToFirstIcon.js.map +1 -0
- package/dist/Icons/GoToLastIcon.d.ts +16 -3
- package/dist/Icons/GoToLastIcon.d.ts.map +1 -0
- package/dist/Icons/GoToLastIcon.js +32 -26
- package/dist/Icons/GoToLastIcon.js.map +1 -0
- package/dist/Icons/HarmonicCursorsIcon.d.ts +16 -3
- package/dist/Icons/HarmonicCursorsIcon.d.ts.map +1 -0
- package/dist/Icons/HarmonicCursorsIcon.js +29 -23
- package/dist/Icons/HarmonicCursorsIcon.js.map +1 -0
- package/dist/Icons/IconBase.d.ts +38 -14
- package/dist/Icons/IconBase.d.ts.map +1 -0
- package/dist/Icons/IconBase.js +61 -41
- package/dist/Icons/IconBase.js.map +1 -0
- package/dist/Icons/InfoIcon.d.ts +16 -3
- package/dist/Icons/InfoIcon.d.ts.map +1 -0
- package/dist/Icons/InfoIcon.js +42 -36
- package/dist/Icons/InfoIcon.js.map +1 -0
- package/dist/Icons/KeyboardIcon.d.ts +16 -3
- package/dist/Icons/KeyboardIcon.d.ts.map +1 -0
- package/dist/Icons/KeyboardIcon.js +32 -26
- package/dist/Icons/KeyboardIcon.js.map +1 -0
- package/dist/Icons/LabelIcon.d.ts +16 -3
- package/dist/Icons/LabelIcon.d.ts.map +1 -0
- package/dist/Icons/LabelIcon.js +25 -19
- package/dist/Icons/LabelIcon.js.map +1 -0
- package/dist/Icons/LassoIcon.d.ts +16 -3
- package/dist/Icons/LassoIcon.d.ts.map +1 -0
- package/dist/Icons/LassoIcon.js +42 -36
- package/dist/Icons/LassoIcon.js.map +1 -0
- package/dist/Icons/LineToolIcon.d.ts +16 -3
- package/dist/Icons/LineToolIcon.d.ts.map +1 -0
- package/dist/Icons/LineToolIcon.js +54 -48
- package/dist/Icons/LineToolIcon.js.map +1 -0
- package/dist/Icons/LiveViewIcon.d.ts +16 -3
- package/dist/Icons/LiveViewIcon.d.ts.map +1 -0
- package/dist/Icons/LiveViewIcon.js +56 -50
- package/dist/Icons/LiveViewIcon.js.map +1 -0
- package/dist/Icons/LoaderIcon.d.ts +16 -3
- package/dist/Icons/LoaderIcon.d.ts.map +1 -0
- package/dist/Icons/LoaderIcon.js +35 -31
- package/dist/Icons/LoaderIcon.js.map +1 -0
- package/dist/Icons/LocationIcon.d.ts +16 -3
- package/dist/Icons/LocationIcon.d.ts.map +1 -0
- package/dist/Icons/LocationIcon.js +32 -26
- package/dist/Icons/LocationIcon.js.map +1 -0
- package/dist/Icons/LogoutIcon.d.ts +16 -3
- package/dist/Icons/LogoutIcon.d.ts.map +1 -0
- package/dist/Icons/LogoutIcon.js +26 -20
- package/dist/Icons/LogoutIcon.js.map +1 -0
- package/dist/Icons/MaximizeIcon.d.ts +16 -3
- package/dist/Icons/MaximizeIcon.d.ts.map +1 -0
- package/dist/Icons/MaximizeIcon.js +49 -43
- package/dist/Icons/MaximizeIcon.js.map +1 -0
- package/dist/Icons/MeasureIcon.d.ts +16 -3
- package/dist/Icons/MeasureIcon.d.ts.map +1 -0
- package/dist/Icons/MeasureIcon.js +84 -78
- package/dist/Icons/MeasureIcon.js.map +1 -0
- package/dist/Icons/MenuDotsIcon.d.ts +16 -3
- package/dist/Icons/MenuDotsIcon.d.ts.map +1 -0
- package/dist/Icons/MenuDotsIcon.js +42 -36
- package/dist/Icons/MenuDotsIcon.js.map +1 -0
- package/dist/Icons/MenuIcon.d.ts +16 -3
- package/dist/Icons/MenuIcon.d.ts.map +1 -0
- package/dist/Icons/MenuIcon.js +42 -36
- package/dist/Icons/MenuIcon.js.map +1 -0
- package/dist/Icons/MessagesIcon.d.ts +16 -3
- package/dist/Icons/MessagesIcon.d.ts.map +1 -0
- package/dist/Icons/MessagesIcon.js +39 -33
- package/dist/Icons/MessagesIcon.js.map +1 -0
- package/dist/Icons/MetadataIcon.d.ts +16 -3
- package/dist/Icons/MetadataIcon.d.ts.map +1 -0
- package/dist/Icons/MetadataIcon.js +26 -20
- package/dist/Icons/MetadataIcon.js.map +1 -0
- package/dist/Icons/MinimizeIcon.d.ts +16 -3
- package/dist/Icons/MinimizeIcon.d.ts.map +1 -0
- package/dist/Icons/MinimizeIcon.js +49 -43
- package/dist/Icons/MinimizeIcon.js.map +1 -0
- package/dist/Icons/MinusIcon.d.ts +16 -3
- package/dist/Icons/MinusIcon.d.ts.map +1 -0
- package/dist/Icons/MinusIcon.js +24 -18
- package/dist/Icons/MinusIcon.js.map +1 -0
- package/dist/Icons/OntologyIcon.d.ts +16 -3
- package/dist/Icons/OntologyIcon.d.ts.map +1 -0
- package/dist/Icons/OntologyIcon.js +93 -87
- package/dist/Icons/OntologyIcon.js.map +1 -0
- package/dist/Icons/PanelIconClose.d.ts +16 -3
- package/dist/Icons/PanelIconClose.d.ts.map +1 -0
- package/dist/Icons/PanelIconClose.js +34 -28
- package/dist/Icons/PanelIconClose.js.map +1 -0
- package/dist/Icons/PanelIconOpen.d.ts +16 -3
- package/dist/Icons/PanelIconOpen.d.ts.map +1 -0
- package/dist/Icons/PanelIconOpen.js +34 -28
- package/dist/Icons/PanelIconOpen.js.map +1 -0
- package/dist/Icons/PauseIcon.d.ts +16 -3
- package/dist/Icons/PauseIcon.d.ts.map +1 -0
- package/dist/Icons/PauseIcon.js +32 -26
- package/dist/Icons/PauseIcon.js.map +1 -0
- package/dist/Icons/PlayIcon.d.ts +16 -3
- package/dist/Icons/PlayIcon.d.ts.map +1 -0
- package/dist/Icons/PlayIcon.js +26 -20
- package/dist/Icons/PlayIcon.js.map +1 -0
- package/dist/Icons/PlusIcon.d.ts +16 -3
- package/dist/Icons/PlusIcon.d.ts.map +1 -0
- package/dist/Icons/PlusIcon.js +26 -20
- package/dist/Icons/PlusIcon.js.map +1 -0
- package/dist/Icons/PolygonIcon.d.ts +17 -3
- package/dist/Icons/PolygonIcon.d.ts.map +1 -0
- package/dist/Icons/PolygonIcon.js +56 -50
- package/dist/Icons/PolygonIcon.js.map +1 -0
- package/dist/Icons/PrinterIcon.d.ts +16 -3
- package/dist/Icons/PrinterIcon.d.ts.map +1 -0
- package/dist/Icons/PrinterIcon.js +26 -20
- package/dist/Icons/PrinterIcon.js.map +1 -0
- package/dist/Icons/ProgressCheckIcon.d.ts +16 -3
- package/dist/Icons/ProgressCheckIcon.d.ts.map +1 -0
- package/dist/Icons/ProgressCheckIcon.js +63 -57
- package/dist/Icons/ProgressCheckIcon.js.map +1 -0
- package/dist/Icons/ResetIcon.d.ts +16 -3
- package/dist/Icons/ResetIcon.d.ts.map +1 -0
- package/dist/Icons/ResetIcon.js +23 -17
- package/dist/Icons/ResetIcon.js.map +1 -0
- package/dist/Icons/ReviewedIcon.d.ts +16 -3
- package/dist/Icons/ReviewedIcon.d.ts.map +1 -0
- package/dist/Icons/ReviewedIcon.js +42 -36
- package/dist/Icons/ReviewedIcon.js.map +1 -0
- package/dist/Icons/ScissorsIcon.d.ts +16 -3
- package/dist/Icons/ScissorsIcon.d.ts.map +1 -0
- package/dist/Icons/ScissorsIcon.js +28 -22
- package/dist/Icons/ScissorsIcon.js.map +1 -0
- package/dist/Icons/SearchIcon.d.ts +16 -3
- package/dist/Icons/SearchIcon.d.ts.map +1 -0
- package/dist/Icons/SearchIcon.js +32 -26
- package/dist/Icons/SearchIcon.js.map +1 -0
- package/dist/Icons/SettingsIcon.d.ts +16 -3
- package/dist/Icons/SettingsIcon.d.ts.map +1 -0
- package/dist/Icons/SettingsIcon.js +32 -26
- package/dist/Icons/SettingsIcon.js.map +1 -0
- package/dist/Icons/SortAscendingIcon.d.ts +16 -3
- package/dist/Icons/SortAscendingIcon.d.ts.map +1 -0
- package/dist/Icons/SortAscendingIcon.js +56 -50
- package/dist/Icons/SortAscendingIcon.js.map +1 -0
- package/dist/Icons/SortAtoZIcon.d.ts +16 -3
- package/dist/Icons/SortAtoZIcon.d.ts.map +1 -0
- package/dist/Icons/SortAtoZIcon.js +56 -50
- package/dist/Icons/SortAtoZIcon.js.map +1 -0
- package/dist/Icons/SortDescendingIcon.d.ts +16 -3
- package/dist/Icons/SortDescendingIcon.d.ts.map +1 -0
- package/dist/Icons/SortDescendingIcon.js +56 -50
- package/dist/Icons/SortDescendingIcon.js.map +1 -0
- package/dist/Icons/SortZtoAIcon.d.ts +16 -3
- package/dist/Icons/SortZtoAIcon.d.ts.map +1 -0
- package/dist/Icons/SortZtoAIcon.js +56 -50
- package/dist/Icons/SortZtoAIcon.js.map +1 -0
- package/dist/Icons/SparklesIcon.d.ts +16 -3
- package/dist/Icons/SparklesIcon.d.ts.map +1 -0
- package/dist/Icons/SparklesIcon.js +26 -20
- package/dist/Icons/SparklesIcon.js.map +1 -0
- package/dist/Icons/StackIcon.d.ts +16 -3
- package/dist/Icons/StackIcon.d.ts.map +1 -0
- package/dist/Icons/StackIcon.js +32 -26
- package/dist/Icons/StackIcon.js.map +1 -0
- package/dist/Icons/StarIcon.d.ts +16 -3
- package/dist/Icons/StarIcon.d.ts.map +1 -0
- package/dist/Icons/StarIcon.js +26 -20
- package/dist/Icons/StarIcon.js.map +1 -0
- package/dist/Icons/TrashIcon.d.ts +16 -3
- package/dist/Icons/TrashIcon.d.ts.map +1 -0
- package/dist/Icons/TrashIcon.js +23 -17
- package/dist/Icons/TrashIcon.js.map +1 -0
- package/dist/Icons/UndoIcon.d.ts +16 -3
- package/dist/Icons/UndoIcon.d.ts.map +1 -0
- package/dist/Icons/UndoIcon.js +26 -20
- package/dist/Icons/UndoIcon.js.map +1 -0
- package/dist/Icons/UploadIcon.d.ts +16 -3
- package/dist/Icons/UploadIcon.d.ts.map +1 -0
- package/dist/Icons/UploadIcon.js +42 -36
- package/dist/Icons/UploadIcon.js.map +1 -0
- package/dist/Icons/User2Icon.d.ts +16 -3
- package/dist/Icons/User2Icon.d.ts.map +1 -0
- package/dist/Icons/User2Icon.js +32 -26
- package/dist/Icons/User2Icon.js.map +1 -0
- package/dist/Icons/UserIcon.d.ts +16 -3
- package/dist/Icons/UserIcon.d.ts.map +1 -0
- package/dist/Icons/UserIcon.js +25 -19
- package/dist/Icons/UserIcon.js.map +1 -0
- package/dist/Icons/WarningIcon.d.ts +16 -3
- package/dist/Icons/WarningIcon.d.ts.map +1 -0
- package/dist/Icons/WarningIcon.js +25 -19
- package/dist/Icons/WarningIcon.js.map +1 -0
- package/dist/Icons/ZoomAllIcon.d.ts +16 -3
- package/dist/Icons/ZoomAllIcon.d.ts.map +1 -0
- package/dist/Icons/ZoomAllIcon.js +77 -71
- package/dist/Icons/ZoomAllIcon.js.map +1 -0
- package/dist/Icons/ZoomXIcon.d.ts +16 -3
- package/dist/Icons/ZoomXIcon.d.ts.map +1 -0
- package/dist/Icons/ZoomXIcon.js +42 -36
- package/dist/Icons/ZoomXIcon.js.map +1 -0
- package/dist/Icons/ZoomYIcon.d.ts +16 -3
- package/dist/Icons/ZoomYIcon.d.ts.map +1 -0
- package/dist/Icons/ZoomYIcon.js +42 -36
- package/dist/Icons/ZoomYIcon.js.map +1 -0
- package/dist/Icons.d.ts +82 -0
- package/dist/Icons.js +83 -82
- package/dist/IconsAnimated/PanelLeftCloseIcon.d.ts +15 -2
- package/dist/IconsAnimated/PanelLeftCloseIcon.d.ts.map +1 -0
- package/dist/IconsAnimated/PanelLeftCloseIcon.js +45 -35
- package/dist/IconsAnimated/PanelLeftCloseIcon.js.map +1 -0
- package/dist/IconsAnimated/PanelLeftOpenIcon.d.ts +15 -2
- package/dist/IconsAnimated/PanelLeftOpenIcon.d.ts.map +1 -0
- package/dist/IconsAnimated/PanelLeftOpenIcon.js +45 -35
- package/dist/IconsAnimated/PanelLeftOpenIcon.js.map +1 -0
- package/dist/IconsAnimated.d.ts +4 -0
- package/dist/IconsAnimated.js +5 -4
- package/dist/Input/InputUtils.d.ts +16 -11
- package/dist/Input/InputUtils.d.ts.map +1 -0
- package/dist/Input/InputUtils.js +47 -36
- package/dist/Input/InputUtils.js.map +1 -0
- package/dist/Input.d.ts +31 -25
- package/dist/Input.d.ts.map +1 -0
- package/dist/Input.js +157 -110
- package/dist/Input.js.map +1 -0
- package/dist/InputNumeric.d.ts +31 -12
- package/dist/InputNumeric.d.ts.map +1 -0
- package/dist/InputNumeric.js +146 -113
- package/dist/InputNumeric.js.map +1 -0
- package/dist/InputOTP.d.ts +91 -54
- package/dist/InputOTP.d.ts.map +1 -0
- package/dist/InputOTP.js +159 -3
- package/dist/InputOTP.js.map +1 -0
- package/dist/Kbd.d.ts +31 -16
- package/dist/Kbd.d.ts.map +1 -0
- package/dist/Kbd.js +55 -46
- package/dist/Kbd.js.map +1 -0
- package/dist/Label.d.ts +19 -9
- package/dist/Label.d.ts.map +1 -0
- package/dist/Label.js +16 -12
- package/dist/Label.js.map +1 -0
- package/dist/MultiSelect/MultiSelectBase.d.ts +77 -41
- package/dist/MultiSelect/MultiSelectBase.d.ts.map +1 -0
- package/dist/MultiSelect/MultiSelectBase.js +315 -235
- package/dist/MultiSelect/MultiSelectBase.js.map +1 -0
- package/dist/MultiSelect.d.ts +40 -23
- package/dist/MultiSelect.d.ts.map +1 -0
- package/dist/MultiSelect.js +31 -26
- package/dist/MultiSelect.js.map +1 -0
- package/dist/Popover.d.ts +28 -8
- package/dist/Popover.d.ts.map +1 -0
- package/dist/Popover.js +41 -28
- package/dist/Popover.js.map +1 -0
- package/dist/RadioButton.d.ts +34 -15
- package/dist/RadioButton.d.ts.map +1 -0
- package/dist/RadioButton.js +32 -25
- package/dist/RadioButton.js.map +1 -0
- package/dist/RadioButtonGroup/RadioButtonGroupBase.d.ts +48 -23
- package/dist/RadioButtonGroup/RadioButtonGroupBase.d.ts.map +1 -0
- package/dist/RadioButtonGroup/RadioButtonGroupBase.js +59 -44
- package/dist/RadioButtonGroup/RadioButtonGroupBase.js.map +1 -0
- package/dist/RadioButtonGroup.d.ts +31 -10
- package/dist/RadioButtonGroup.d.ts.map +1 -0
- package/dist/RadioButtonGroup.js +16 -11
- package/dist/RadioButtonGroup.js.map +1 -0
- package/dist/RadioGroup.d.ts +60 -45
- package/dist/RadioGroup.d.ts.map +1 -0
- package/dist/RadioGroup.js +180 -3
- package/dist/RadioGroup.js.map +1 -0
- package/dist/Select.d.ts +38 -33
- package/dist/Select.d.ts.map +1 -0
- package/dist/Select.js +138 -115
- package/dist/Select.js.map +1 -0
- package/dist/Separator.d.ts +22 -10
- package/dist/Separator.d.ts.map +1 -0
- package/dist/Separator.js +20 -16
- package/dist/Separator.js.map +1 -0
- package/dist/Skeleton.d.ts +11 -2
- package/dist/Skeleton.d.ts.map +1 -0
- package/dist/Skeleton.js +14 -10
- package/dist/Skeleton.js.map +1 -0
- package/dist/Slider.d.ts +49 -26
- package/dist/Slider.d.ts.map +1 -0
- package/dist/Slider.js +167 -3
- package/dist/Slider.js.map +1 -0
- package/dist/SpectralProvider.d.ts +3 -30
- package/dist/SpectralProvider.js +4 -11
- package/dist/Switch/SwitchBase.d.ts +51 -24
- package/dist/Switch/SwitchBase.d.ts.map +1 -0
- package/dist/Switch/SwitchBase.js +91 -72
- package/dist/Switch/SwitchBase.js.map +1 -0
- package/dist/Switch.d.ts +49 -24
- package/dist/Switch.d.ts.map +1 -0
- package/dist/Switch.js +114 -3
- package/dist/Switch.js.map +1 -0
- package/dist/Tabs/TabsBase.d.ts +94 -50
- package/dist/Tabs/TabsBase.d.ts.map +1 -0
- package/dist/Tabs/TabsBase.js +213 -152
- package/dist/Tabs/TabsBase.js.map +1 -0
- package/dist/Tabs/tabsUtils.d.ts +35 -30
- package/dist/Tabs/tabsUtils.d.ts.map +1 -0
- package/dist/Tabs/tabsUtils.js +121 -49
- package/dist/Tabs/tabsUtils.js.map +1 -0
- package/dist/Tabs.d.ts +55 -35
- package/dist/Tabs.d.ts.map +1 -0
- package/dist/Tabs.js +81 -60
- package/dist/Tabs.js.map +1 -0
- package/dist/Textarea/TextareaUtils.d.ts +24 -13
- package/dist/Textarea/TextareaUtils.d.ts.map +1 -0
- package/dist/Textarea/TextareaUtils.js +52 -33
- package/dist/Textarea/TextareaUtils.js.map +1 -0
- package/dist/Textarea.d.ts +31 -25
- package/dist/Textarea.d.ts.map +1 -0
- package/dist/Textarea.js +90 -66
- package/dist/Textarea.js.map +1 -0
- package/dist/Toast.d.ts +63 -34
- package/dist/Toast.d.ts.map +1 -0
- package/dist/Toast.js +115 -3
- package/dist/Toast.js.map +1 -0
- package/dist/Toggle/ToggleBase.d.ts +29 -11
- package/dist/Toggle/ToggleBase.d.ts.map +1 -0
- package/dist/Toggle/ToggleBase.js +55 -41
- package/dist/Toggle/ToggleBase.js.map +1 -0
- package/dist/Toggle.d.ts +34 -16
- package/dist/Toggle.d.ts.map +1 -0
- package/dist/Toggle.js +48 -34
- package/dist/Toggle.js.map +1 -0
- package/dist/ToggleGroup/ToggleGroupBase.d.ts +42 -30
- package/dist/ToggleGroup/ToggleGroupBase.d.ts.map +1 -0
- package/dist/ToggleGroup/ToggleGroupBase.js +154 -111
- package/dist/ToggleGroup/ToggleGroupBase.js.map +1 -0
- package/dist/ToggleGroup/ToggleGroupItem.d.ts +31 -13
- package/dist/ToggleGroup/ToggleGroupItem.d.ts.map +1 -0
- package/dist/ToggleGroup/ToggleGroupItem.js +35 -27
- package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -0
- package/dist/ToggleGroup/ToggleGroupSplitMenuItem.d.ts +49 -17
- package/dist/ToggleGroup/ToggleGroupSplitMenuItem.d.ts.map +1 -0
- package/dist/ToggleGroup/ToggleGroupSplitMenuItem.js +132 -61
- package/dist/ToggleGroup/ToggleGroupSplitMenuItem.js.map +1 -0
- package/dist/ToggleGroup.d.ts +26 -10
- package/dist/ToggleGroup.d.ts.map +1 -0
- package/dist/ToggleGroup.js +35 -31
- package/dist/ToggleGroup.js.map +1 -0
- package/dist/Tooltip.d.ts +35 -12
- package/dist/Tooltip.d.ts.map +1 -0
- package/dist/Tooltip.js +68 -3
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tray.d.ts +105 -61
- package/dist/Tray.d.ts.map +1 -0
- package/dist/Tray.js +120 -102
- package/dist/Tray.js.map +1 -0
- package/dist/components/Icons/iconTypes.d.ts +17 -0
- package/dist/components/Icons/iconTypes.d.ts.map +1 -0
- package/dist/components/IconsAnimated/iconTypes.d.ts +15 -0
- package/dist/components/IconsAnimated/iconTypes.d.ts.map +1 -0
- package/dist/components/SpectralProvider/SpectralProvider.d.ts +35 -0
- package/dist/components/SpectralProvider/SpectralProvider.d.ts.map +1 -0
- package/dist/components/SpectralProvider/SpectralProvider.js +33 -0
- package/dist/components/SpectralProvider/SpectralProvider.js.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.context.js +14 -0
- package/dist/components/ToggleGroup/ToggleGroup.context.js.map +1 -0
- package/dist/hooks/useAccordionAutoScroll.d.ts +7 -2
- package/dist/hooks/useAccordionAutoScroll.d.ts.map +1 -1
- package/dist/hooks/useAccordionAutoScroll.js +71 -45
- package/dist/hooks/useAccordionAutoScroll.js.map +1 -0
- package/dist/hooks/useControllableState.d.ts +12 -8
- package/dist/hooks/useControllableState.d.ts.map +1 -1
- package/dist/hooks/useControllableState.js +23 -12
- package/dist/hooks/useControllableState.js.map +1 -0
- package/dist/hooks/useConvertToOklch.d.ts +6 -2
- package/dist/hooks/useConvertToOklch.d.ts.map +1 -1
- package/dist/hooks/useConvertToOklch.js +87 -42
- package/dist/hooks/useConvertToOklch.js.map +1 -0
- package/dist/hooks/useTheme.d.ts +10 -6
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTheme.js +26 -18
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useUncontrolledState.d.ts +8 -4
- package/dist/hooks/useUncontrolledState.d.ts.map +1 -1
- package/dist/hooks/useUncontrolledState.js +21 -11
- package/dist/hooks/useUncontrolledState.js.map +1 -0
- package/dist/index.d.ts +129 -46
- package/dist/index.js +130 -0
- package/dist/primitives/button.d.ts +22 -9
- package/dist/primitives/button.d.ts.map +1 -1
- package/dist/primitives/button.js +21 -15
- package/dist/primitives/button.js.map +1 -0
- package/dist/primitives/input-group.d.ts +46 -17
- package/dist/primitives/input-group.d.ts.map +1 -1
- package/dist/primitives/input-group.js +66 -43
- package/dist/primitives/input-group.js.map +1 -0
- package/dist/primitives/input.d.ts +16 -6
- package/dist/primitives/input.d.ts.map +1 -1
- package/dist/primitives/input.js +15 -10
- package/dist/primitives/input.js.map +1 -0
- package/dist/primitives/popover.d.ts +35 -9
- package/dist/primitives/popover.d.ts.map +1 -1
- package/dist/primitives/popover.js +56 -33
- package/dist/primitives/popover.js.map +1 -0
- package/dist/primitives/select.d.ts +60 -17
- package/dist/primitives/select.d.ts.map +1 -1
- package/dist/primitives/select.js +133 -3
- package/dist/primitives/select.js.map +1 -0
- package/dist/primitives/slot.d.ts +23 -14
- package/dist/primitives/slot.d.ts.map +1 -1
- package/dist/primitives/slot.js +53 -29
- package/dist/primitives/slot.js.map +1 -0
- package/dist/primitives/textarea.d.ts +11 -2
- package/dist/primitives/textarea.d.ts.map +1 -1
- package/dist/primitives/textarea.js +14 -9
- package/dist/primitives/textarea.js.map +1 -0
- package/dist/styles/horizon-tokens.css +9 -0
- package/dist/styles/spectral.css +2 -2
- package/dist/utils/constants.d.ts +5 -1
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +5 -2
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/dropdownPositioning.d.ts +14 -9
- package/dist/utils/dropdownPositioning.d.ts.map +1 -1
- package/dist/utils/dropdownPositioning.js +57 -34
- package/dist/utils/dropdownPositioning.js.map +1 -0
- package/dist/utils/formFieldUtils.d.ts +91 -85
- package/dist/utils/formFieldUtils.d.ts.map +1 -1
- package/dist/utils/formFieldUtils.js +171 -127
- package/dist/utils/formFieldUtils.js.map +1 -0
- package/dist/utils/sharedUtils.d.ts +10 -6
- package/dist/utils/sharedUtils.d.ts.map +1 -1
- package/dist/utils/sharedUtils.js +23 -8
- package/dist/utils/sharedUtils.js.map +1 -0
- package/dist/utils/twUtils.d.ts +7 -2
- package/dist/utils/twUtils.d.ts.map +1 -1
- package/dist/utils/twUtils.js +12 -2
- package/dist/utils/twUtils.js.map +1 -0
- package/package.json +31 -23
- package/dist/.js +0 -128
- package/dist/Accordion-dVZHqyv8.js +0 -363
- package/dist/AnimatePresence-Bz_JZ2ah.js +0 -178
- package/dist/App.d.ts +0 -2
- package/dist/App.d.ts.map +0 -1
- package/dist/App.js +0 -9
- package/dist/Calendar-FXWVuKWS.js +0 -3109
- package/dist/Combination-MimnVFUU.js +0 -698
- package/dist/Combobox-DCCcIDgq.js +0 -6378
- package/dist/DateTimeUtils-BJUAMuot.js +0 -2098
- package/dist/DropdownMenu-B8I8IRcu.js +0 -868
- package/dist/HoverCard-BhxgELKP.js +0 -201
- package/dist/Icons/index.d.ts +0 -81
- package/dist/InputOTP-DyhesOLs.js +0 -463
- package/dist/RadioGroup-BsBK247l.js +0 -328
- package/dist/Slider-CPYW_VYu.js +0 -490
- package/dist/Switch-Vep4hsq4.js +0 -144
- package/dist/Toast-BuaZxqlt.js +0 -711
- package/dist/ToggleGroup/ToggleGroup.context.d.ts +0 -9
- package/dist/ToggleGroup/ToggleGroup.context.js +0 -11
- package/dist/Tooltip-CTjKOfvC.js +0 -389
- package/dist/builtin_esm-external-require-react-ItzZuLxx.js +0 -8
- package/dist/chunk-DmRZw4Wy.js +0 -17
- package/dist/clsx-Bfoz3aNJ.js +0 -16
- package/dist/dist-B9w6c9RC.js +0 -190
- package/dist/dist-Br_xj9vz.js +0 -12
- package/dist/dist-C-2mar4Y.js +0 -28
- package/dist/dist-C4MHwt9g.js +0 -10
- package/dist/dist-C6pGYii-.js +0 -6
- package/dist/dist-Cc8NfAO6.js +0 -122
- package/dist/dist-CcsVPym2.js +0 -68
- package/dist/dist-CrYg_9Cu.js +0 -913
- package/dist/dist-CwYxT5fv.js +0 -1287
- package/dist/dist-D9FsQh8P.js +0 -65
- package/dist/dist-DBLajRTL.js +0 -149
- package/dist/dist-DEkDg4Sk.js +0 -249
- package/dist/dist-DT46nqCO.js +0 -216
- package/dist/dist-PfrTYHr_.js +0 -29
- package/dist/dist-iDaHUF3d.js +0 -129
- package/dist/dist-s1uWaZYZ.js +0 -11
- package/dist/dist-tMzzRwxG.js +0 -33
- package/dist/index.d.ts.map +0 -1
- package/dist/main.d.ts +0 -1
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -18960
- package/dist/proxy-BFVscmYQ.js +0 -4920
- package/dist/select-oAOoVl5g.js +0 -797
- package/dist/styles/base-colors.css +0 -62
- package/dist/styles/main.css +0 -2
- package/dist/styles/theme.css +0 -869
- package/dist/twUtils-BpqlKSeB.js +0 -1673
- package/dist/use-animation-BeSipRjB.js +0 -57
- package/dist/utils/dropdownPositioning.test.d.ts +0 -2
- package/dist/utils/dropdownPositioning.test.d.ts.map +0 -1
- package/dist/utils/dropdownPositioning.test.js +0 -22
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
import { MouseEvent, RefObject } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/hooks/useAccordionAutoScroll.d.ts
|
|
2
5
|
/**
|
|
3
6
|
* Hook that handles auto-scrolling for accordions with return-to-position functionality
|
|
4
7
|
*
|
|
5
8
|
* @param triggerRef Reference to the accordion trigger element
|
|
6
9
|
* @returns A click event handler for the accordion trigger
|
|
7
10
|
*/
|
|
8
|
-
|
|
11
|
+
declare const useAccordionAutoScroll: (triggerRef: RefObject<HTMLElement | null> | null) => (_event?: MouseEvent<HTMLButtonElement>) => void;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { useAccordionAutoScroll };
|
|
9
14
|
//# sourceMappingURL=useAccordionAutoScroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccordionAutoScroll.d.ts","
|
|
1
|
+
{"version":3,"file":"useAccordionAutoScroll.d.ts","names":[],"sources":["../../src/hooks/useAccordionAutoScroll.ts"],"mappings":";;;;;;AAaA;;;;cAAa,sBAAA,GAAsB,UAAA,EAAgB,SAAA,CAAU,WAAA,qBAA0B,MAAA,GA8GxD,UAAA,CAAW,iBAAA"}
|
|
@@ -1,68 +1,94 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useCallback
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
+
|
|
3
4
|
//#region src/hooks/useAccordionAutoScroll.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Hook that handles auto-scrolling for accordions with return-to-position functionality
|
|
7
|
+
*
|
|
8
|
+
* @param triggerRef Reference to the accordion trigger element
|
|
9
|
+
* @returns A click event handler for the accordion trigger
|
|
10
|
+
*/
|
|
11
|
+
const useAccordionAutoScroll = (triggerRef) => {
|
|
12
|
+
const originalScrollPosition = useRef(null);
|
|
13
|
+
const scrollContainerRef = useRef(null);
|
|
14
|
+
const findScrollableParent = useCallback((node) => {
|
|
15
|
+
if (!node || node === document.body) return window;
|
|
16
|
+
const { overflow, overflowY } = window.getComputedStyle(node);
|
|
17
|
+
if (/(auto|scroll)/.test(overflow) || /(auto|scroll)/.test(overflowY)) return node;
|
|
18
|
+
return findScrollableParent(node.parentElement);
|
|
9
19
|
}, []);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (!
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const element = triggerRef?.current ?? null;
|
|
22
|
+
if (!element) return;
|
|
23
|
+
const observer = new MutationObserver((mutations) => {
|
|
24
|
+
mutations.forEach((mutation) => {
|
|
25
|
+
if (mutation.attributeName === "data-state") {
|
|
26
|
+
const element = mutation.target;
|
|
27
|
+
const currentState = element.getAttribute("data-state");
|
|
28
|
+
const rootElement = element.closest("[data-scroll-options]");
|
|
29
|
+
if (!rootElement) return;
|
|
18
30
|
try {
|
|
19
|
-
|
|
20
|
-
if (!
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
const scrollOptionsStr = rootElement.getAttribute("data-scroll-options");
|
|
32
|
+
if (!scrollOptionsStr) return;
|
|
33
|
+
const { autoScroll, scrollPadding } = JSON.parse(scrollOptionsStr);
|
|
34
|
+
if (autoScroll === "never") return;
|
|
35
|
+
const scrollContainer = findScrollableParent(element);
|
|
36
|
+
if (currentState === "open") {
|
|
37
|
+
if (autoScroll === "mobile" && window.innerHeight >= 768) return;
|
|
38
|
+
if (scrollContainer === window) originalScrollPosition.current = window.scrollY;
|
|
39
|
+
else originalScrollPosition.current = scrollContainer.scrollTop;
|
|
40
|
+
scrollContainerRef.current = scrollContainer;
|
|
41
|
+
setTimeout(() => {
|
|
42
|
+
if (!element) return;
|
|
43
|
+
const triggerRect = element.getBoundingClientRect();
|
|
44
|
+
const headerHeight = 0;
|
|
45
|
+
const paddingOffset = scrollPadding;
|
|
46
|
+
if (scrollContainer === window) {
|
|
47
|
+
const targetY = window.scrollY + triggerRect.top + paddingOffset - headerHeight;
|
|
31
48
|
window.scrollTo({
|
|
32
|
-
top:
|
|
49
|
+
top: targetY,
|
|
33
50
|
behavior: "smooth"
|
|
34
51
|
});
|
|
35
52
|
} else {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
53
|
+
const container = scrollContainer;
|
|
54
|
+
const containerRect = container.getBoundingClientRect();
|
|
55
|
+
const relativeTop = triggerRect.top - containerRect.top;
|
|
56
|
+
container.scrollTo({
|
|
57
|
+
top: container.scrollTop + relativeTop + paddingOffset - headerHeight,
|
|
39
58
|
behavior: "smooth"
|
|
40
59
|
});
|
|
41
60
|
}
|
|
42
61
|
}, 100);
|
|
43
|
-
} else if (
|
|
44
|
-
|
|
62
|
+
} else if (currentState === "closed" && originalScrollPosition.current !== null && scrollContainerRef.current) {
|
|
63
|
+
const scrollTop = originalScrollPosition.current;
|
|
45
64
|
setTimeout(() => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
top:
|
|
65
|
+
const container = scrollContainerRef.current;
|
|
66
|
+
if (container === window) window.scrollTo({
|
|
67
|
+
top: scrollTop,
|
|
49
68
|
behavior: "smooth"
|
|
50
|
-
})
|
|
51
|
-
|
|
69
|
+
});
|
|
70
|
+
else if (container instanceof HTMLElement) container.scrollTo({
|
|
71
|
+
top: scrollTop,
|
|
52
72
|
behavior: "smooth"
|
|
53
|
-
})
|
|
73
|
+
});
|
|
74
|
+
originalScrollPosition.current = null;
|
|
75
|
+
scrollContainerRef.current = null;
|
|
54
76
|
}, 100);
|
|
55
77
|
}
|
|
56
|
-
} catch (
|
|
57
|
-
console.error("Error handling accordion scroll:", { error
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error("Error handling accordion scroll:", { error });
|
|
58
80
|
}
|
|
59
81
|
}
|
|
60
82
|
});
|
|
61
83
|
});
|
|
62
|
-
|
|
63
|
-
|
|
84
|
+
observer.observe(element, { attributes: true });
|
|
85
|
+
return () => {
|
|
86
|
+
observer.disconnect();
|
|
64
87
|
};
|
|
65
|
-
}, [
|
|
88
|
+
}, [triggerRef, findScrollableParent]);
|
|
89
|
+
return useCallback((_event) => {}, []);
|
|
66
90
|
};
|
|
91
|
+
|
|
67
92
|
//#endregion
|
|
68
|
-
export {
|
|
93
|
+
export { useAccordionAutoScroll };
|
|
94
|
+
//# sourceMappingURL=useAccordionAutoScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAccordionAutoScroll.js","names":[],"sources":["../../src/hooks/useAccordionAutoScroll.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, type MouseEvent, type RefObject } from 'react'\n\ninterface ScrollOptions {\n autoScroll: 'never' | 'mobile' | 'always'\n scrollPadding: number\n}\n\n/**\n * Hook that handles auto-scrolling for accordions with return-to-position functionality\n *\n * @param triggerRef Reference to the accordion trigger element\n * @returns A click event handler for the accordion trigger\n */\nexport const useAccordionAutoScroll = (triggerRef: RefObject<HTMLElement | null> | null) => {\n const originalScrollPosition = useRef<number | null>(null)\n const scrollContainerRef = useRef<HTMLElement | Window | null>(null)\n\n const findScrollableParent = useCallback((node: HTMLElement | null): HTMLElement | Window => {\n if (!node || node === document.body) return window\n\n const { overflow, overflowY } = window.getComputedStyle(node)\n if (/(auto|scroll)/.test(overflow) || /(auto|scroll)/.test(overflowY)) {\n return node\n }\n\n return findScrollableParent(node.parentElement)\n }, [])\n\n useEffect(() => {\n const element = triggerRef?.current ?? null\n if (!element) return\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === 'data-state') {\n const element = mutation.target as HTMLElement\n const currentState = element.getAttribute('data-state')\n const rootElement = element.closest('[data-scroll-options]')\n\n if (!rootElement) return\n\n try {\n const scrollOptionsStr = rootElement.getAttribute('data-scroll-options')\n if (!scrollOptionsStr) return\n\n const scrollOptions = JSON.parse(scrollOptionsStr) as ScrollOptions\n const { autoScroll, scrollPadding } = scrollOptions\n\n if (autoScroll === 'never') return\n\n const scrollContainer = findScrollableParent(element)\n\n if (currentState === 'open') {\n if (autoScroll === 'mobile' && window.innerHeight >= 768) return\n\n if (scrollContainer === window) {\n originalScrollPosition.current = window.scrollY\n } else {\n originalScrollPosition.current = (scrollContainer as HTMLElement).scrollTop\n }\n\n scrollContainerRef.current = scrollContainer\n\n setTimeout(() => {\n if (!element) return\n\n const triggerRect = element.getBoundingClientRect()\n const headerHeight = 0\n const paddingOffset = scrollPadding\n\n if (scrollContainer === window) {\n const targetY = window.scrollY + triggerRect.top + paddingOffset - headerHeight\n\n window.scrollTo({\n top: targetY,\n behavior: 'smooth',\n })\n } else {\n const container = scrollContainer as HTMLElement\n const containerRect = container.getBoundingClientRect()\n const relativeTop = triggerRect.top - containerRect.top\n\n container.scrollTo({\n top: container.scrollTop + relativeTop + paddingOffset - headerHeight,\n behavior: 'smooth',\n })\n }\n }, 100)\n } else if (currentState === 'closed' && originalScrollPosition.current !== null && scrollContainerRef.current) {\n const scrollTop = originalScrollPosition.current\n setTimeout(() => {\n const container = scrollContainerRef.current\n\n if (container === window) {\n window.scrollTo({\n top: scrollTop,\n behavior: 'smooth',\n })\n } else if (container instanceof HTMLElement) {\n container.scrollTo({\n top: scrollTop,\n behavior: 'smooth',\n })\n }\n\n originalScrollPosition.current = null\n scrollContainerRef.current = null\n }, 100)\n }\n } catch (error) {\n console.error('Error handling accordion scroll:', { error: error })\n }\n }\n })\n })\n\n observer.observe(element, { attributes: true })\n\n return () => {\n observer.disconnect()\n }\n }, [triggerRef, findScrollableParent])\n\n return useCallback((_event?: MouseEvent<HTMLButtonElement>) => {\n // Let the native click behavior proceed without interference\n // The MutationObserver will handle the scrolling\n }, [])\n}\n"],"mappings":";;;;;;;;;;AAaA,MAAa,0BAA0B,eAAqD;CAC1F,MAAM,yBAAyB,OAAsB,KAAK;CAC1D,MAAM,qBAAqB,OAAoC,KAAK;CAEpE,MAAM,uBAAuB,aAAa,SAAmD;AAC3F,MAAI,CAAC,QAAQ,SAAS,SAAS,KAAM,QAAO;EAE5C,MAAM,EAAE,UAAU,cAAc,OAAO,iBAAiB,KAAK;AAC7D,MAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,UAAU,CACnE,QAAO;AAGT,SAAO,qBAAqB,KAAK,cAAc;IAC9C,EAAE,CAAC;AAEN,iBAAgB;EACd,MAAM,UAAU,YAAY,WAAW;AACvC,MAAI,CAAC,QAAS;EAEd,MAAM,WAAW,IAAI,kBAAkB,cAAc;AACnD,aAAU,SAAS,aAAa;AAC9B,QAAI,SAAS,kBAAkB,cAAc;KAC3C,MAAM,UAAU,SAAS;KACzB,MAAM,eAAe,QAAQ,aAAa,aAAa;KACvD,MAAM,cAAc,QAAQ,QAAQ,wBAAwB;AAE5D,SAAI,CAAC,YAAa;AAElB,SAAI;MACF,MAAM,mBAAmB,YAAY,aAAa,sBAAsB;AACxE,UAAI,CAAC,iBAAkB;MAGvB,MAAM,EAAE,YAAY,kBADE,KAAK,MAAM,iBACkB;AAEnD,UAAI,eAAe,QAAS;MAE5B,MAAM,kBAAkB,qBAAqB,QAAQ;AAErD,UAAI,iBAAiB,QAAQ;AAC3B,WAAI,eAAe,YAAY,OAAO,eAAe,IAAK;AAE1D,WAAI,oBAAoB,OACtB,wBAAuB,UAAU,OAAO;WAExC,wBAAuB,UAAW,gBAAgC;AAGpE,0BAAmB,UAAU;AAE7B,wBAAiB;AACf,YAAI,CAAC,QAAS;QAEd,MAAM,cAAc,QAAQ,uBAAuB;QACnD,MAAM,eAAe;QACrB,MAAM,gBAAgB;AAEtB,YAAI,oBAAoB,QAAQ;SAC9B,MAAM,UAAU,OAAO,UAAU,YAAY,MAAM,gBAAgB;AAEnE,gBAAO,SAAS;UACd,KAAK;UACL,UAAU;UACX,CAAC;eACG;SACL,MAAM,YAAY;SAClB,MAAM,gBAAgB,UAAU,uBAAuB;SACvD,MAAM,cAAc,YAAY,MAAM,cAAc;AAEpD,mBAAU,SAAS;UACjB,KAAK,UAAU,YAAY,cAAc,gBAAgB;UACzD,UAAU;UACX,CAAC;;UAEH,IAAI;iBACE,iBAAiB,YAAY,uBAAuB,YAAY,QAAQ,mBAAmB,SAAS;OAC7G,MAAM,YAAY,uBAAuB;AACzC,wBAAiB;QACf,MAAM,YAAY,mBAAmB;AAErC,YAAI,cAAc,OAChB,QAAO,SAAS;SACd,KAAK;SACL,UAAU;SACX,CAAC;iBACO,qBAAqB,YAC9B,WAAU,SAAS;SACjB,KAAK;SACL,UAAU;SACX,CAAC;AAGJ,+BAAuB,UAAU;AACjC,2BAAmB,UAAU;UAC5B,IAAI;;cAEF,OAAO;AACd,cAAQ,MAAM,oCAAoC,EAAS,OAAO,CAAC;;;KAGvE;IACF;AAEF,WAAS,QAAQ,SAAS,EAAE,YAAY,MAAM,CAAC;AAE/C,eAAa;AACX,YAAS,YAAY;;IAEtB,CAAC,YAAY,qBAAqB,CAAC;AAEtC,QAAO,aAAa,WAA2C,IAG5D,EAAE,CAAC"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
//#region src/hooks/useControllableState.d.ts
|
|
1
3
|
/**
|
|
2
4
|
* Hook for managing uncontrolled state with optional external control.
|
|
3
5
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
declare const useUncontrolledState: <T>(options: {
|
|
7
|
+
value?: T;
|
|
8
|
+
defaultValue: T;
|
|
9
|
+
onChange?: (next: T) => void;
|
|
8
10
|
}) => [T, (next: T | ((prev: T) => T)) => void];
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
declare const useControllableState: <T>(options: {
|
|
12
|
+
value?: T;
|
|
13
|
+
defaultValue: T;
|
|
14
|
+
onChange?: (next: T) => void;
|
|
13
15
|
}) => [T, (next: T | ((prev: T) => T)) => void];
|
|
16
|
+
//#endregion
|
|
17
|
+
export { useControllableState, useUncontrolledState };
|
|
14
18
|
//# sourceMappingURL=useControllableState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControllableState.d.ts","
|
|
1
|
+
{"version":3,"file":"useControllableState.d.ts","names":[],"sources":["../../src/hooks/useControllableState.ts"],"mappings":";;;AAKA;;cAAa,oBAAA,MAAyB,OAAA;EAAa,KAAA,GAAQ,CAAA;EAAG,YAAA,EAAc,CAAA;EAAG,QAAA,IAAY,IAAA,EAAM,CAAA;AAAA,OAAgB,CAAA,GAAI,IAAA,EAAM,CAAA,KAAM,IAAA,EAAM,CAAA,KAAM,CAAA;AAAA,cAiBhI,oBAAA,MAjByB,OAAA;EAAa,KAAA,GAAQ,CAAA;EAAG,YAAA,EAAc,CAAA;EAAG,QAAA,IAAY,IAAA,EAAM,CAAA;AAAA,OAAgB,CAAA,GAAI,IAAA,EAAM,CAAA,KAAM,IAAA,EAAM,CAAA,KAAM,CAAA"}
|
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useCallback
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
|
|
3
4
|
//#region src/hooks/useControllableState.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Hook for managing uncontrolled state with optional external control.
|
|
7
|
+
*/
|
|
8
|
+
const useUncontrolledState = (options) => {
|
|
9
|
+
const { value, defaultValue, onChange } = options;
|
|
10
|
+
const [uncontrolled, setUncontrolled] = useState(defaultValue);
|
|
11
|
+
const isControlled = value !== void 0;
|
|
12
|
+
const state = isControlled ? value : uncontrolled;
|
|
13
|
+
return [state, useCallback((next) => {
|
|
14
|
+
const resolvedNext = typeof next === "function" ? next(state) : next;
|
|
15
|
+
if (!isControlled) setUncontrolled(resolvedNext);
|
|
16
|
+
onChange?.(resolvedNext);
|
|
9
17
|
}, [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
isControlled,
|
|
19
|
+
onChange,
|
|
20
|
+
state
|
|
13
21
|
])];
|
|
14
|
-
}
|
|
22
|
+
};
|
|
23
|
+
const useControllableState = useUncontrolledState;
|
|
24
|
+
|
|
15
25
|
//#endregion
|
|
16
|
-
export {
|
|
26
|
+
export { useControllableState, useUncontrolledState };
|
|
27
|
+
//# sourceMappingURL=useControllableState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControllableState.js","names":[],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing uncontrolled state with optional external control.\n */\nexport const useUncontrolledState = <T>(options: { value?: T; defaultValue: T; onChange?: (next: T) => void }): [T, (next: T | ((prev: T) => T)) => void] => {\n const { value, defaultValue, onChange } = options\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue)\n const isControlled = value !== undefined\n const state = isControlled ? (value as T) : uncontrolled\n const set = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext = typeof next === 'function' ? (next as (prev: T) => T)(state) : next\n if (!isControlled) setUncontrolled(resolvedNext)\n onChange?.(resolvedNext)\n },\n [isControlled, onChange, state],\n )\n return [state, set]\n}\n\n// Backward compatible alias.\nexport const useControllableState = useUncontrolledState\n"],"mappings":";;;;;;;AAKA,MAAa,wBAA2B,YAAqH;CAC3J,MAAM,EAAE,OAAO,cAAc,aAAa;CAC1C,MAAM,CAAC,cAAc,mBAAmB,SAAY,aAAa;CACjE,MAAM,eAAe,UAAU;CAC/B,MAAM,QAAQ,eAAgB,QAAc;AAS5C,QAAO,CAAC,OARI,aACT,SAA+B;EAC9B,MAAM,eAAe,OAAO,SAAS,aAAc,KAAwB,MAAM,GAAG;AACpF,MAAI,CAAC,aAAc,iBAAgB,aAAa;AAChD,aAAW,aAAa;IAE1B;EAAC;EAAc;EAAU;EAAM,CAEf,CAAC;;AAIrB,MAAa,uBAAuB"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
//#region src/hooks/useConvertToOklch.d.ts
|
|
3
|
+
declare const convertColorToOklch: (color: string) => string;
|
|
4
|
+
declare const useColorToOklch: (color?: string) => string | undefined;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { convertColorToOklch, useColorToOklch };
|
|
3
7
|
//# sourceMappingURL=useConvertToOklch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConvertToOklch.d.ts","
|
|
1
|
+
{"version":3,"file":"useConvertToOklch.d.ts","names":[],"sources":["../../src/hooks/useConvertToOklch.ts"],"mappings":";;cAiGa,mBAAA,GAAmB,KAAA;AAAA,cAcnB,eAAA,GAAe,KAAA"}
|
|
@@ -1,51 +1,96 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useMemo
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
|
|
3
4
|
//#region src/hooks/useConvertToOklch.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const HEX_PATTERN = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
6
|
+
const RGB_PATTERN = /^rgba?\(/i;
|
|
7
|
+
const clampChannel = (value) => Math.max(0, Math.min(255, value));
|
|
8
|
+
const clampAlpha = (value) => Math.max(0, Math.min(1, value));
|
|
9
|
+
const parseHexColor = (color) => {
|
|
10
|
+
if (!HEX_PATTERN.test(color)) return null;
|
|
11
|
+
const hex = color.slice(1);
|
|
12
|
+
const hasShortForm = hex.length === 3 || hex.length === 4;
|
|
13
|
+
const toChannel = (value) => Number.parseInt(hasShortForm ? value.repeat(2) : value, 16);
|
|
14
|
+
if (hex.length === 3 || hex.length === 4) {
|
|
15
|
+
const [r, g, b, a] = hex.split("");
|
|
9
16
|
return {
|
|
10
|
-
r:
|
|
11
|
-
g:
|
|
12
|
-
b:
|
|
13
|
-
a: a ?
|
|
17
|
+
r: toChannel(r),
|
|
18
|
+
g: toChannel(g),
|
|
19
|
+
b: toChannel(b),
|
|
20
|
+
a: a ? toChannel(a) / 255 : 1
|
|
14
21
|
};
|
|
15
22
|
}
|
|
16
23
|
return {
|
|
17
|
-
r:
|
|
18
|
-
g:
|
|
19
|
-
b:
|
|
20
|
-
a:
|
|
24
|
+
r: toChannel(hex.slice(0, 2)),
|
|
25
|
+
g: toChannel(hex.slice(2, 4)),
|
|
26
|
+
b: toChannel(hex.slice(4, 6)),
|
|
27
|
+
a: hex.length === 8 ? toChannel(hex.slice(6, 8)) / 255 : 1
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const parseRgbColor = (color) => {
|
|
31
|
+
if (!RGB_PATTERN.test(color)) return null;
|
|
32
|
+
const match = color.trim().match(/^rgba?\(\s*([-+]?\d*\.?\d+%?)\s*[, ]\s*([-+]?\d*\.?\d+%?)\s*[, ]\s*([-+]?\d*\.?\d+%?)(?:\s*[,/]\s*([-+]?\d*\.?\d+%?))?\s*\)$/i);
|
|
33
|
+
if (!match) return null;
|
|
34
|
+
const toRgbChannel = (value) => {
|
|
35
|
+
if (value.endsWith("%")) return clampChannel(Number.parseFloat(value) / 100 * 255);
|
|
36
|
+
return clampChannel(Number.parseFloat(value));
|
|
37
|
+
};
|
|
38
|
+
const toAlphaChannel = (value) => {
|
|
39
|
+
if (!value) return 1;
|
|
40
|
+
if (value.endsWith("%")) return clampAlpha(Number.parseFloat(value) / 100);
|
|
41
|
+
return clampAlpha(Number.parseFloat(value));
|
|
21
42
|
};
|
|
22
|
-
}, o = (e) => {
|
|
23
|
-
if (!n.test(e)) return null;
|
|
24
|
-
let t = e.trim().match(/^rgba?\(\s*([-+]?\d*\.?\d+%?)\s*[, ]\s*([-+]?\d*\.?\d+%?)\s*[, ]\s*([-+]?\d*\.?\d+%?)(?:\s*[,/]\s*([-+]?\d*\.?\d+%?))?\s*\)$/i);
|
|
25
|
-
if (!t) return null;
|
|
26
|
-
let a = (e) => e.endsWith("%") ? r(Number.parseFloat(e) / 100 * 255) : r(Number.parseFloat(e));
|
|
27
43
|
return {
|
|
28
|
-
r:
|
|
29
|
-
g:
|
|
30
|
-
b:
|
|
31
|
-
a: (
|
|
44
|
+
r: toRgbChannel(match[1]),
|
|
45
|
+
g: toRgbChannel(match[2]),
|
|
46
|
+
b: toRgbChannel(match[3]),
|
|
47
|
+
a: toAlphaChannel(match[4])
|
|
32
48
|
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
};
|
|
50
|
+
const toLinear = (channel) => {
|
|
51
|
+
const normalized = channel / 255;
|
|
52
|
+
return normalized <= .04045 ? normalized / 12.92 : ((normalized + .055) / 1.055) ** 2.4;
|
|
53
|
+
};
|
|
54
|
+
const round = (value, digits) => {
|
|
55
|
+
const factor = 10 ** digits;
|
|
56
|
+
return Math.round(value * factor) / factor;
|
|
57
|
+
};
|
|
58
|
+
const rgbToOklch = ({ r, g, b, a }) => {
|
|
59
|
+
const rLinear = toLinear(r);
|
|
60
|
+
const gLinear = toLinear(g);
|
|
61
|
+
const bLinear = toLinear(b);
|
|
62
|
+
const l = .4122214708 * rLinear + .5363325363 * gLinear + .0514459929 * bLinear;
|
|
63
|
+
const m = .2119034982 * rLinear + .6806995451 * gLinear + .1073969566 * bLinear;
|
|
64
|
+
const s = .0883024619 * rLinear + .2817188376 * gLinear + .6299787005 * bLinear;
|
|
65
|
+
const lRoot = Math.cbrt(l);
|
|
66
|
+
const mRoot = Math.cbrt(m);
|
|
67
|
+
const sRoot = Math.cbrt(s);
|
|
68
|
+
const lComponent = .2104542553 * lRoot + .793617785 * mRoot - .0040720468 * sRoot;
|
|
69
|
+
const aComponent = 1.9779984951 * lRoot - 2.428592205 * mRoot + .4505937099 * sRoot;
|
|
70
|
+
const bComponent = .0259040371 * lRoot + .7827717662 * mRoot - .808675766 * sRoot;
|
|
71
|
+
const chroma = Math.sqrt(aComponent ** 2 + bComponent ** 2);
|
|
72
|
+
const hue = (Math.atan2(bComponent, aComponent) * 180 / Math.PI + 360) % 360;
|
|
73
|
+
const lightnessPercent = round(lComponent * 100, 2);
|
|
74
|
+
const roundedChroma = round(chroma, 4);
|
|
75
|
+
const roundedHue = round(hue, 2);
|
|
76
|
+
if (a < 1) return `oklch(${lightnessPercent}% ${roundedChroma} ${roundedHue} / ${round(a, 3)})`;
|
|
77
|
+
return `oklch(${lightnessPercent}% ${roundedChroma} ${roundedHue})`;
|
|
78
|
+
};
|
|
79
|
+
const convertColorToOklch = (color) => {
|
|
80
|
+
const trimmedColor = color.trim();
|
|
81
|
+
if (trimmedColor.length === 0) return trimmedColor;
|
|
82
|
+
if (trimmedColor.toLowerCase().startsWith("oklch(")) return trimmedColor;
|
|
83
|
+
const parsedHex = parseHexColor(trimmedColor);
|
|
84
|
+
if (parsedHex) return rgbToOklch(parsedHex);
|
|
85
|
+
const parsedRgb = parseRgbColor(trimmedColor);
|
|
86
|
+
if (parsedRgb) return rgbToOklch(parsedRgb);
|
|
87
|
+
return trimmedColor;
|
|
88
|
+
};
|
|
89
|
+
const useColorToOklch = (color) => useMemo(() => {
|
|
90
|
+
if (!color) return color;
|
|
91
|
+
return convertColorToOklch(color);
|
|
92
|
+
}, [color]);
|
|
93
|
+
|
|
50
94
|
//#endregion
|
|
51
|
-
export {
|
|
95
|
+
export { convertColorToOklch, useColorToOklch };
|
|
96
|
+
//# sourceMappingURL=useConvertToOklch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConvertToOklch.js","names":[],"sources":["../../src/hooks/useConvertToOklch.ts"],"sourcesContent":["import { useMemo } from 'react'\n\nconst HEX_PATTERN = /^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i\nconst RGB_PATTERN = /^rgba?\\(/i\n\nconst clampChannel = (value: number) => Math.max(0, Math.min(255, value))\nconst clampAlpha = (value: number) => Math.max(0, Math.min(1, value))\n\nconst parseHexColor = (color: string): { r: number; g: number; b: number; a: number } | null => {\n if (!HEX_PATTERN.test(color)) return null\n\n const hex = color.slice(1)\n const hasShortForm = hex.length === 3 || hex.length === 4\n\n const toChannel = (value: string) => Number.parseInt(hasShortForm ? value.repeat(2) : value, 16)\n\n if (hex.length === 3 || hex.length === 4) {\n const [r, g, b, a] = hex.split('')\n return {\n r: toChannel(r),\n g: toChannel(g),\n b: toChannel(b),\n a: a ? toChannel(a) / 255 : 1,\n }\n }\n\n return {\n r: toChannel(hex.slice(0, 2)),\n g: toChannel(hex.slice(2, 4)),\n b: toChannel(hex.slice(4, 6)),\n a: hex.length === 8 ? toChannel(hex.slice(6, 8)) / 255 : 1,\n }\n}\n\nconst parseRgbColor = (color: string): { r: number; g: number; b: number; a: number } | null => {\n if (!RGB_PATTERN.test(color)) return null\n\n const match = color.trim().match(/^rgba?\\(\\s*([-+]?\\d*\\.?\\d+%?)\\s*[, ]\\s*([-+]?\\d*\\.?\\d+%?)\\s*[, ]\\s*([-+]?\\d*\\.?\\d+%?)(?:\\s*[,/]\\s*([-+]?\\d*\\.?\\d+%?))?\\s*\\)$/i)\n if (!match) return null\n\n const toRgbChannel = (value: string) => {\n if (value.endsWith('%')) return clampChannel((Number.parseFloat(value) / 100) * 255)\n return clampChannel(Number.parseFloat(value))\n }\n\n const toAlphaChannel = (value?: string) => {\n if (!value) return 1\n if (value.endsWith('%')) return clampAlpha(Number.parseFloat(value) / 100)\n return clampAlpha(Number.parseFloat(value))\n }\n\n return {\n r: toRgbChannel(match[1]),\n g: toRgbChannel(match[2]),\n b: toRgbChannel(match[3]),\n a: toAlphaChannel(match[4]),\n }\n}\n\nconst toLinear = (channel: number) => {\n const normalized = channel / 255\n return normalized <= 0.04045 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4\n}\n\nconst round = (value: number, digits: number) => {\n const factor = 10 ** digits\n return Math.round(value * factor) / factor\n}\n\nconst rgbToOklch = ({ r, g, b, a }: { r: number; g: number; b: number; a: number }) => {\n const rLinear = toLinear(r)\n const gLinear = toLinear(g)\n const bLinear = toLinear(b)\n\n const l = 0.4122214708 * rLinear + 0.5363325363 * gLinear + 0.0514459929 * bLinear\n const m = 0.2119034982 * rLinear + 0.6806995451 * gLinear + 0.1073969566 * bLinear\n const s = 0.0883024619 * rLinear + 0.2817188376 * gLinear + 0.6299787005 * bLinear\n\n const lRoot = Math.cbrt(l)\n const mRoot = Math.cbrt(m)\n const sRoot = Math.cbrt(s)\n\n const lComponent = 0.2104542553 * lRoot + 0.793617785 * mRoot - 0.0040720468 * sRoot\n const aComponent = 1.9779984951 * lRoot - 2.428592205 * mRoot + 0.4505937099 * sRoot\n const bComponent = 0.0259040371 * lRoot + 0.7827717662 * mRoot - 0.808675766 * sRoot\n\n const chroma = Math.sqrt(aComponent ** 2 + bComponent ** 2)\n const hue = ((Math.atan2(bComponent, aComponent) * 180) / Math.PI + 360) % 360\n\n const lightnessPercent = round(lComponent * 100, 2)\n const roundedChroma = round(chroma, 4)\n const roundedHue = round(hue, 2)\n\n if (a < 1) return `oklch(${lightnessPercent}% ${roundedChroma} ${roundedHue} / ${round(a, 3)})`\n return `oklch(${lightnessPercent}% ${roundedChroma} ${roundedHue})`\n}\n\nexport const convertColorToOklch = (color: string): string => {\n const trimmedColor = color.trim()\n if (trimmedColor.length === 0) return trimmedColor\n if (trimmedColor.toLowerCase().startsWith('oklch(')) return trimmedColor\n\n const parsedHex = parseHexColor(trimmedColor)\n if (parsedHex) return rgbToOklch(parsedHex)\n\n const parsedRgb = parseRgbColor(trimmedColor)\n if (parsedRgb) return rgbToOklch(parsedRgb)\n\n return trimmedColor\n}\n\nexport const useColorToOklch = (color?: string) =>\n useMemo(() => {\n if (!color) return color\n return convertColorToOklch(color)\n }, [color])\n"],"mappings":";;;;AAEA,MAAM,cAAc;AACpB,MAAM,cAAc;AAEpB,MAAM,gBAAgB,UAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAM,CAAC;AACzE,MAAM,cAAc,UAAkB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;AAErE,MAAM,iBAAiB,UAAyE;AAC9F,KAAI,CAAC,YAAY,KAAK,MAAM,CAAE,QAAO;CAErC,MAAM,MAAM,MAAM,MAAM,EAAE;CAC1B,MAAM,eAAe,IAAI,WAAW,KAAK,IAAI,WAAW;CAExD,MAAM,aAAa,UAAkB,OAAO,SAAS,eAAe,MAAM,OAAO,EAAE,GAAG,OAAO,GAAG;AAEhG,KAAI,IAAI,WAAW,KAAK,IAAI,WAAW,GAAG;EACxC,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,IAAI,MAAM,GAAG;AAClC,SAAO;GACL,GAAG,UAAU,EAAE;GACf,GAAG,UAAU,EAAE;GACf,GAAG,UAAU,EAAE;GACf,GAAG,IAAI,UAAU,EAAE,GAAG,MAAM;GAC7B;;AAGH,QAAO;EACL,GAAG,UAAU,IAAI,MAAM,GAAG,EAAE,CAAC;EAC7B,GAAG,UAAU,IAAI,MAAM,GAAG,EAAE,CAAC;EAC7B,GAAG,UAAU,IAAI,MAAM,GAAG,EAAE,CAAC;EAC7B,GAAG,IAAI,WAAW,IAAI,UAAU,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM;EAC1D;;AAGH,MAAM,iBAAiB,UAAyE;AAC9F,KAAI,CAAC,YAAY,KAAK,MAAM,CAAE,QAAO;CAErC,MAAM,QAAQ,MAAM,MAAM,CAAC,MAAM,gIAAgI;AACjK,KAAI,CAAC,MAAO,QAAO;CAEnB,MAAM,gBAAgB,UAAkB;AACtC,MAAI,MAAM,SAAS,IAAI,CAAE,QAAO,aAAc,OAAO,WAAW,MAAM,GAAG,MAAO,IAAI;AACpF,SAAO,aAAa,OAAO,WAAW,MAAM,CAAC;;CAG/C,MAAM,kBAAkB,UAAmB;AACzC,MAAI,CAAC,MAAO,QAAO;AACnB,MAAI,MAAM,SAAS,IAAI,CAAE,QAAO,WAAW,OAAO,WAAW,MAAM,GAAG,IAAI;AAC1E,SAAO,WAAW,OAAO,WAAW,MAAM,CAAC;;AAG7C,QAAO;EACL,GAAG,aAAa,MAAM,GAAG;EACzB,GAAG,aAAa,MAAM,GAAG;EACzB,GAAG,aAAa,MAAM,GAAG;EACzB,GAAG,eAAe,MAAM,GAAG;EAC5B;;AAGH,MAAM,YAAY,YAAoB;CACpC,MAAM,aAAa,UAAU;AAC7B,QAAO,cAAc,SAAU,aAAa,UAAU,aAAa,QAAS,UAAU;;AAGxF,MAAM,SAAS,OAAe,WAAmB;CAC/C,MAAM,SAAS,MAAM;AACrB,QAAO,KAAK,MAAM,QAAQ,OAAO,GAAG;;AAGtC,MAAM,cAAc,EAAE,GAAG,GAAG,GAAG,QAAwD;CACrF,MAAM,UAAU,SAAS,EAAE;CAC3B,MAAM,UAAU,SAAS,EAAE;CAC3B,MAAM,UAAU,SAAS,EAAE;CAE3B,MAAM,IAAI,cAAe,UAAU,cAAe,UAAU,cAAe;CAC3E,MAAM,IAAI,cAAe,UAAU,cAAe,UAAU,cAAe;CAC3E,MAAM,IAAI,cAAe,UAAU,cAAe,UAAU,cAAe;CAE3E,MAAM,QAAQ,KAAK,KAAK,EAAE;CAC1B,MAAM,QAAQ,KAAK,KAAK,EAAE;CAC1B,MAAM,QAAQ,KAAK,KAAK,EAAE;CAE1B,MAAM,aAAa,cAAe,QAAQ,aAAc,QAAQ,cAAe;CAC/E,MAAM,aAAa,eAAe,QAAQ,cAAc,QAAQ,cAAe;CAC/E,MAAM,aAAa,cAAe,QAAQ,cAAe,QAAQ,aAAc;CAE/E,MAAM,SAAS,KAAK,KAAK,cAAc,IAAI,cAAc,EAAE;CAC3D,MAAM,OAAQ,KAAK,MAAM,YAAY,WAAW,GAAG,MAAO,KAAK,KAAK,OAAO;CAE3E,MAAM,mBAAmB,MAAM,aAAa,KAAK,EAAE;CACnD,MAAM,gBAAgB,MAAM,QAAQ,EAAE;CACtC,MAAM,aAAa,MAAM,KAAK,EAAE;AAEhC,KAAI,IAAI,EAAG,QAAO,SAAS,iBAAiB,IAAI,cAAc,GAAG,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC;AAC7F,QAAO,SAAS,iBAAiB,IAAI,cAAc,GAAG,WAAW;;AAGnE,MAAa,uBAAuB,UAA0B;CAC5D,MAAM,eAAe,MAAM,MAAM;AACjC,KAAI,aAAa,WAAW,EAAG,QAAO;AACtC,KAAI,aAAa,aAAa,CAAC,WAAW,SAAS,CAAE,QAAO;CAE5D,MAAM,YAAY,cAAc,aAAa;AAC7C,KAAI,UAAW,QAAO,WAAW,UAAU;CAE3C,MAAM,YAAY,cAAc,aAAa;AAC7C,KAAI,UAAW,QAAO,WAAW,UAAU;AAE3C,QAAO;;AAGT,MAAa,mBAAmB,UAC9B,cAAc;AACZ,KAAI,CAAC,MAAO,QAAO;AACnB,QAAO,oBAAoB,MAAM;GAChC,CAAC,MAAM,CAAC"}
|
package/dist/hooks/useTheme.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
//#region src/hooks/useTheme.d.ts
|
|
3
|
+
type Theme = 'light' | 'dark';
|
|
4
|
+
interface UseThemeReturn {
|
|
5
|
+
theme: Theme;
|
|
6
|
+
setTheme: (theme: Theme) => void;
|
|
7
|
+
toggleTheme: () => void;
|
|
6
8
|
}
|
|
7
|
-
|
|
9
|
+
declare const useTheme: (defaultTheme?: Theme) => UseThemeReturn;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Theme, UseThemeReturn, useTheme };
|
|
8
12
|
//# sourceMappingURL=useTheme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTheme.d.ts","
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","names":[],"sources":["../../src/hooks/useTheme.ts"],"mappings":";;KAEY,KAAA;AAAA,UAEK,cAAA;EACf,KAAA,EAAO,KAAA;EACP,QAAA,GAAW,KAAA,EAAO,KAAA;EAClB,WAAA;AAAA;AAAA,cAGW,QAAA,GAAQ,YAAA,GAAkB,KAAA,KAAiB,cAAA"}
|
package/dist/hooks/useTheme.js
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useEffect
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
|
|
3
4
|
//#region src/hooks/useTheme.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (typeof window
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const useTheme = (defaultTheme = "dark") => {
|
|
6
|
+
const [theme, setThemeState] = useState(() => {
|
|
7
|
+
if (typeof window === "undefined") return defaultTheme;
|
|
8
|
+
const stored = localStorage.getItem("theme");
|
|
9
|
+
if (stored === "light" || stored === "dark") return stored;
|
|
10
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
11
|
+
});
|
|
12
|
+
const setTheme = (newTheme) => {
|
|
13
|
+
setThemeState(newTheme);
|
|
11
14
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const toggleTheme = () => {
|
|
16
|
+
setTheme(theme === "dark" ? "light" : "dark");
|
|
17
|
+
};
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
document.documentElement.setAttribute("data-theme", theme);
|
|
20
|
+
localStorage.setItem("theme", theme);
|
|
21
|
+
}, [theme]);
|
|
22
|
+
return {
|
|
23
|
+
theme,
|
|
24
|
+
setTheme,
|
|
25
|
+
toggleTheme
|
|
20
26
|
};
|
|
21
27
|
};
|
|
28
|
+
|
|
22
29
|
//#endregion
|
|
23
|
-
export {
|
|
30
|
+
export { useTheme };
|
|
31
|
+
//# sourceMappingURL=useTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.js","names":[],"sources":["../../src/hooks/useTheme.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport type Theme = 'light' | 'dark'\n\nexport interface UseThemeReturn {\n theme: Theme\n setTheme: (theme: Theme) => void\n toggleTheme: () => void\n}\n\nexport const useTheme = (defaultTheme: Theme = 'dark'): UseThemeReturn => {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') return defaultTheme\n\n const stored = localStorage.getItem('theme') as Theme | null\n if (stored === 'light' || stored === 'dark') return stored\n\n // Check system preference\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n })\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme)\n }\n\n const toggleTheme = () => {\n setTheme(theme === 'dark' ? 'light' : 'dark')\n }\n\n useEffect(() => {\n const root = document.documentElement\n\n // Set data-theme attribute on root element (matching your existing CSS selectors)\n root.setAttribute('data-theme', theme)\n localStorage.setItem('theme', theme)\n }, [theme])\n\n return { theme, setTheme, toggleTheme }\n}\n"],"mappings":";;;;AAUA,MAAa,YAAY,eAAsB,WAA2B;CACxE,MAAM,CAAC,OAAO,iBAAiB,eAAsB;AACnD,MAAI,OAAO,WAAW,YAAa,QAAO;EAE1C,MAAM,SAAS,aAAa,QAAQ,QAAQ;AAC5C,MAAI,WAAW,WAAW,WAAW,OAAQ,QAAO;AAGpD,SAAO,OAAO,WAAW,+BAA+B,CAAC,UAAU,SAAS;GAC5E;CAEF,MAAM,YAAY,aAAoB;AACpC,gBAAc,SAAS;;CAGzB,MAAM,oBAAoB;AACxB,WAAS,UAAU,SAAS,UAAU,OAAO;;AAG/C,iBAAgB;AAId,EAHa,SAAS,gBAGjB,aAAa,cAAc,MAAM;AACtC,eAAa,QAAQ,SAAS,MAAM;IACnC,CAAC,MAAM,CAAC;AAEX,QAAO;EAAE;EAAO;EAAU;EAAa"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
//#region src/hooks/useUncontrolledState.d.ts
|
|
1
3
|
/**
|
|
2
4
|
* Hook for managing uncontrolled state with optional external control.
|
|
3
5
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
declare const useUncontrolledState: <T>(options: {
|
|
7
|
+
value?: T;
|
|
8
|
+
defaultValue: T;
|
|
9
|
+
onChange?: (next: T) => void;
|
|
8
10
|
}) => [T, (next: T | ((prev: T) => T)) => void];
|
|
11
|
+
//#endregion
|
|
12
|
+
export { useUncontrolledState };
|
|
9
13
|
//# sourceMappingURL=useUncontrolledState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUncontrolledState.d.ts","
|
|
1
|
+
{"version":3,"file":"useUncontrolledState.d.ts","names":[],"sources":["../../src/hooks/useUncontrolledState.ts"],"mappings":";;;AAKA;;cAAa,oBAAA,MAAyB,OAAA;EAAa,KAAA,GAAQ,CAAA;EAAG,YAAA,EAAc,CAAA;EAAG,QAAA,IAAY,IAAA,EAAM,CAAA;AAAA,OAAgB,CAAA,GAAI,IAAA,EAAM,CAAA,KAAM,IAAA,EAAM,CAAA,KAAM,CAAA"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { useCallback
|
|
1
|
+
'use client';
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
|
|
3
4
|
//#region src/hooks/useUncontrolledState.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Hook for managing uncontrolled state with optional external control.
|
|
7
|
+
*/
|
|
8
|
+
const useUncontrolledState = (options) => {
|
|
9
|
+
const { value, defaultValue, onChange } = options;
|
|
10
|
+
const [uncontrolled, setUncontrolled] = useState(defaultValue);
|
|
11
|
+
const isControlled = value !== void 0;
|
|
12
|
+
const state = isControlled ? value : uncontrolled;
|
|
13
|
+
return [state, useCallback((next) => {
|
|
14
|
+
const resolvedNext = typeof next === "function" ? next(state) : next;
|
|
15
|
+
if (!isControlled) setUncontrolled(resolvedNext);
|
|
16
|
+
onChange?.(resolvedNext);
|
|
9
17
|
}, [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
18
|
+
isControlled,
|
|
19
|
+
onChange,
|
|
20
|
+
state
|
|
13
21
|
])];
|
|
14
22
|
};
|
|
23
|
+
|
|
15
24
|
//#endregion
|
|
16
|
-
export {
|
|
25
|
+
export { useUncontrolledState };
|
|
26
|
+
//# sourceMappingURL=useUncontrolledState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUncontrolledState.js","names":[],"sources":["../../src/hooks/useUncontrolledState.ts"],"sourcesContent":["import { useCallback, useState } from 'react'\n\n/**\n * Hook for managing uncontrolled state with optional external control.\n */\nexport const useUncontrolledState = <T>(options: { value?: T; defaultValue: T; onChange?: (next: T) => void }): [T, (next: T | ((prev: T) => T)) => void] => {\n const { value, defaultValue, onChange } = options\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue)\n const isControlled = value !== undefined\n const state = isControlled ? (value as T) : uncontrolled\n const set = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext = typeof next === 'function' ? (next as (prev: T) => T)(state) : next\n if (!isControlled) setUncontrolled(resolvedNext)\n onChange?.(resolvedNext)\n },\n [isControlled, onChange, state],\n )\n return [state, set]\n}\n"],"mappings":";;;;;;;AAKA,MAAa,wBAA2B,YAAqH;CAC3J,MAAM,EAAE,OAAO,cAAc,aAAa;CAC1C,MAAM,CAAC,cAAc,mBAAmB,SAAY,aAAa;CACjE,MAAM,eAAe,UAAU;CAC/B,MAAM,QAAQ,eAAgB,QAAc;AAS5C,QAAO,CAAC,OARI,aACT,SAA+B;EAC9B,MAAM,eAAe,OAAO,SAAS,aAAc,KAAwB,MAAM,GAAG;AACpF,MAAI,CAAC,aAAc,iBAAgB,aAAa;AAChD,aAAW,aAAa;IAE1B;EAAC;EAAc;EAAU;EAAM,CAEf,CAAC"}
|