@mks2508/mks-ui 0.1.3 → 0.2.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 +123 -60
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/types.d.ts +79 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/index.d.ts +19 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -56
- package/dist/react/components/MorphingPopover/MorphingPopover.types.d.ts +44 -0
- package/dist/react/components/MorphingPopover/MorphingPopover.types.d.ts.map +1 -0
- package/dist/react/components/MorphingPopover/index.d.ts +46 -0
- package/dist/react/components/MorphingPopover/index.d.ts.map +1 -0
- package/dist/{components/ui/morphing-popover/morphing-popover.js → react/components/MorphingPopover/index.js} +47 -7
- package/dist/react/components/MorphingPopover/morphing-popover.module.js +5 -0
- package/dist/react/components/index.d.ts +9 -0
- package/dist/react/components/index.d.ts.map +1 -0
- package/dist/react/components/index.js +1 -0
- package/dist/react/hooks/Animation/UseAutoHeight.d.ts +30 -0
- package/dist/react/hooks/Animation/UseAutoHeight.d.ts.map +1 -0
- package/dist/{hooks/use-auto-height.js → react/hooks/Animation/UseAutoHeight.js} +16 -2
- package/dist/react/hooks/DOM/UseIsInView.d.ts +32 -0
- package/dist/react/hooks/DOM/UseIsInView.d.ts.map +1 -0
- package/dist/react/hooks/DOM/UseIsInView.js +33 -0
- package/dist/react/hooks/State/UseControlledState.d.ts +31 -0
- package/dist/react/hooks/State/UseControlledState.d.ts.map +1 -0
- package/dist/react/hooks/State/UseControlledState.js +34 -0
- package/dist/react/hooks/State/UseDataState.d.ts +21 -0
- package/dist/react/hooks/State/UseDataState.d.ts.map +1 -0
- package/dist/react/hooks/State/UseDataState.js +63 -0
- package/dist/react/hooks/index.d.ts +14 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/index.js +4 -0
- package/dist/react/icons/index.d.ts +8 -0
- package/dist/react/icons/index.d.ts.map +1 -0
- package/dist/react/icons/lucide-animated/activity.d.ts +11 -0
- package/dist/react/icons/lucide-animated/activity.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/activity.js +2 -2
- package/dist/{icons → react/icons}/lucide-animated/arrow-down-to-line.d.ts +1 -1
- package/dist/react/icons/lucide-animated/arrow-down-to-line.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/arrow-down-to-line.js +1 -1
- package/dist/{icons → react/icons}/lucide-animated/arrow-up.d.ts +1 -1
- package/dist/react/icons/lucide-animated/arrow-up.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/arrow-up.js +1 -1
- package/dist/react/icons/lucide-animated/bell-electric.d.ts +11 -0
- package/dist/react/icons/lucide-animated/bell-electric.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/bell-electric.js +2 -2
- package/dist/react/icons/lucide-animated/bell.d.ts +11 -0
- package/dist/react/icons/lucide-animated/bell.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/bell.js +2 -2
- package/dist/react/icons/lucide-animated/bot.d.ts +11 -0
- package/dist/react/icons/lucide-animated/bot.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/bot.js +2 -2
- package/dist/react/icons/lucide-animated/box.d.ts +11 -0
- package/dist/react/icons/lucide-animated/box.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/box.js +2 -2
- package/dist/react/icons/lucide-animated/check.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/check.js +1 -1
- package/dist/react/icons/lucide-animated/circle-check.d.ts +11 -0
- package/dist/react/icons/lucide-animated/circle-check.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/circle-check.js +2 -2
- package/dist/react/icons/lucide-animated/delete.d.ts +11 -0
- package/dist/react/icons/lucide-animated/delete.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/delete.js +2 -2
- package/dist/react/icons/lucide-animated/download.d.ts +11 -0
- package/dist/react/icons/lucide-animated/download.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/download.js +2 -2
- package/dist/react/icons/lucide-animated/edit-2.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/edit-2.js +1 -1
- package/dist/react/icons/lucide-animated/globe.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/globe.js +1 -1
- package/dist/react/icons/lucide-animated/home.d.ts +11 -0
- package/dist/react/icons/lucide-animated/home.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/home.js +2 -2
- package/dist/react/icons/lucide-animated/index.d.ts +38 -0
- package/dist/react/icons/lucide-animated/index.d.ts.map +1 -0
- package/dist/react/icons/lucide-animated/layers.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/layers.js +1 -1
- package/dist/react/icons/lucide-animated/layout-panel-top.d.ts +11 -0
- package/dist/react/icons/lucide-animated/layout-panel-top.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/layout-panel-top.js +2 -2
- package/dist/{icons → react/icons}/lucide-animated/list.d.ts +1 -1
- package/dist/react/icons/lucide-animated/list.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/list.js +1 -1
- package/dist/react/icons/lucide-animated/package.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/package.js +1 -1
- package/dist/react/icons/lucide-animated/palette.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/palette.js +1 -1
- package/dist/react/icons/lucide-animated/plus.d.ts +11 -0
- package/dist/react/icons/lucide-animated/plus.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/plus.js +2 -2
- package/dist/react/icons/lucide-animated/refresh-cw.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/refresh-cw.js +1 -1
- package/dist/react/icons/lucide-animated/rocket.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/rocket.js +1 -1
- package/dist/react/icons/lucide-animated/save.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/save.js +1 -1
- package/dist/react/icons/lucide-animated/search.d.ts +11 -0
- package/dist/react/icons/lucide-animated/search.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/search.js +2 -2
- package/dist/react/icons/lucide-animated/settings.d.ts +11 -0
- package/dist/react/icons/lucide-animated/settings.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/settings.js +2 -2
- package/dist/{icons → react/icons}/lucide-animated/terminal.d.ts +1 -1
- package/dist/react/icons/lucide-animated/terminal.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/terminal.js +1 -1
- package/dist/react/icons/lucide-animated/trash-2.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/trash-2.js +1 -1
- package/dist/react/icons/lucide-animated/trending-down.d.ts +11 -0
- package/dist/react/icons/lucide-animated/trending-down.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/trending-down.js +2 -2
- package/dist/react/icons/lucide-animated/trending-up.d.ts +11 -0
- package/dist/react/icons/lucide-animated/trending-up.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/trending-up.js +2 -2
- package/dist/react/icons/lucide-animated/type.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/type.js +1 -1
- package/dist/react/icons/lucide-animated/upload.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/upload.js +1 -1
- package/dist/react/icons/lucide-animated/x.d.ts +11 -0
- package/dist/react/icons/lucide-animated/x.d.ts.map +1 -0
- package/dist/{icons → react/icons}/lucide-animated/x.js +2 -2
- package/dist/react/index.d.ts +19 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/lib/get-strict-context.d.ts +30 -0
- package/dist/react/lib/get-strict-context.d.ts.map +1 -0
- package/dist/react/lib/get-strict-context.js +40 -0
- package/dist/react/lib/index.d.ts +8 -0
- package/dist/react/lib/index.d.ts.map +1 -0
- package/dist/react/lib/index.js +2 -0
- package/dist/{lib → react/lib}/utils.d.ts +2 -2
- package/dist/react/lib/utils.d.ts.map +1 -0
- package/dist/{lib → react/lib}/utils.js +3 -3
- package/dist/react/primitives/AutoHeight/index.d.ts +31 -0
- package/dist/react/primitives/AutoHeight/index.d.ts.map +1 -0
- package/dist/react/primitives/AutoHeight/index.js +52 -0
- package/dist/react/primitives/CountingNumber/index.d.ts +44 -0
- package/dist/react/primitives/CountingNumber/index.d.ts.map +1 -0
- package/dist/react/primitives/CountingNumber/index.js +97 -0
- package/dist/react/primitives/Highlight/Highlight.types.d.ts +113 -0
- package/dist/react/primitives/Highlight/Highlight.types.d.ts.map +1 -0
- package/dist/react/primitives/Highlight/index.d.ts +48 -0
- package/dist/react/primitives/Highlight/index.d.ts.map +1 -0
- package/dist/{components/animate-ui/primitives/effects/highlight.js → react/primitives/Highlight/index.js} +45 -5
- package/dist/react/primitives/Slot/index.d.ts +53 -0
- package/dist/react/primitives/Slot/index.d.ts.map +1 -0
- package/dist/{components/animate-ui/primitives/animate/slot.js → react/primitives/Slot/index.js} +27 -4
- package/dist/react/primitives/index.d.ts +12 -0
- package/dist/react/primitives/index.d.ts.map +1 -0
- package/dist/react/primitives/index.js +4 -0
- package/dist/react/ui/Accordion/Accordion.styles.d.ts +47 -0
- package/dist/react/ui/Accordion/Accordion.styles.d.ts.map +1 -0
- package/dist/react/ui/Accordion/Accordion.styles.js +54 -0
- package/dist/react/ui/Accordion/Accordion.types.d.ts +160 -0
- package/dist/react/ui/Accordion/Accordion.types.d.ts.map +1 -0
- package/dist/react/ui/Accordion/index.d.ts +105 -0
- package/dist/react/ui/Accordion/index.d.ts.map +1 -0
- package/dist/react/ui/Accordion/index.js +266 -0
- package/dist/react/ui/AlertDialog/AlertDialog.styles.d.ts +28 -0
- package/dist/react/ui/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
- package/dist/react/ui/AlertDialog/AlertDialog.styles.js +29 -0
- package/dist/react/ui/AlertDialog/AlertDialog.types.d.ts +235 -0
- package/dist/react/ui/AlertDialog/AlertDialog.types.d.ts.map +1 -0
- package/dist/react/ui/AlertDialog/index.d.ts +194 -0
- package/dist/react/ui/AlertDialog/index.d.ts.map +1 -0
- package/dist/react/ui/AlertDialog/index.js +319 -0
- package/dist/react/ui/Badge/Badge.styles.d.ts +16 -0
- package/dist/react/ui/Badge/Badge.styles.d.ts.map +1 -0
- package/dist/{components/ui/badge/badge.styles.js → react/ui/Badge/Badge.styles.js} +2 -6
- package/dist/react/ui/Badge/Badge.types.d.ts +21 -0
- package/dist/react/ui/Badge/Badge.types.d.ts.map +1 -0
- package/dist/react/ui/Badge/index.d.ts +20 -0
- package/dist/react/ui/Badge/index.d.ts.map +1 -0
- package/dist/react/ui/Badge/index.js +34 -0
- package/dist/react/ui/Button/Button.styles.d.ts +21 -0
- package/dist/react/ui/Button/Button.styles.d.ts.map +1 -0
- package/dist/{components/ui/button/button.styles.js → react/ui/Button/Button.styles.js} +3 -9
- package/dist/react/ui/Button/Button.types.d.ts +45 -0
- package/dist/react/ui/Button/Button.types.d.ts.map +1 -0
- package/dist/react/ui/Button/index.d.ts +22 -0
- package/dist/react/ui/Button/index.d.ts.map +1 -0
- package/dist/react/ui/Button/index.js +103 -0
- package/dist/react/ui/Card/Card.styles.d.ts +11 -0
- package/dist/react/ui/Card/Card.styles.d.ts.map +1 -0
- package/dist/react/ui/Card/Card.styles.js +24 -0
- package/dist/react/ui/Card/Card.types.d.ts +22 -0
- package/dist/react/ui/Card/Card.types.d.ts.map +1 -0
- package/dist/react/ui/Card/index.d.ts +36 -0
- package/dist/react/ui/Card/index.d.ts.map +1 -0
- package/dist/react/ui/Card/index.js +82 -0
- package/dist/react/ui/Checkbox/Checkbox.styles.d.ts +25 -0
- package/dist/react/ui/Checkbox/Checkbox.styles.d.ts.map +1 -0
- package/dist/react/ui/Checkbox/Checkbox.styles.js +34 -0
- package/dist/react/ui/Checkbox/Checkbox.types.d.ts +88 -0
- package/dist/react/ui/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/react/ui/Checkbox/index.d.ts +59 -0
- package/dist/react/ui/Checkbox/index.d.ts.map +1 -0
- package/dist/react/ui/Checkbox/index.js +158 -0
- package/dist/react/ui/Combobox/Combobox.styles.d.ts +7 -0
- package/dist/react/ui/Combobox/Combobox.styles.d.ts.map +1 -0
- package/dist/react/ui/Combobox/Combobox.styles.js +17 -0
- package/dist/react/ui/Combobox/Combobox.types.d.ts +49 -0
- package/dist/react/ui/Combobox/Combobox.types.d.ts.map +1 -0
- package/dist/react/ui/Combobox/index.d.ts +60 -0
- package/dist/react/ui/Combobox/index.d.ts.map +1 -0
- package/dist/{components/ui/combobox.js → react/ui/Combobox/index.js} +54 -16
- package/dist/react/ui/CornerBracket/CornerBracket.styles.d.ts +18 -0
- package/dist/react/ui/CornerBracket/CornerBracket.styles.d.ts.map +1 -0
- package/dist/react/ui/CornerBracket/CornerBracket.styles.js +30 -0
- package/dist/react/ui/CornerBracket/CornerBracket.types.d.ts +12 -0
- package/dist/react/ui/CornerBracket/CornerBracket.types.d.ts.map +1 -0
- package/dist/react/ui/CornerBracket/index.d.ts +23 -0
- package/dist/react/ui/CornerBracket/index.d.ts.map +1 -0
- package/dist/react/ui/CornerBracket/index.js +42 -0
- package/dist/react/ui/Dialog/Dialog.styles.d.ts +24 -0
- package/dist/react/ui/Dialog/Dialog.styles.d.ts.map +1 -0
- package/dist/react/ui/Dialog/Dialog.styles.js +29 -0
- package/dist/react/ui/Dialog/Dialog.types.d.ts +221 -0
- package/dist/react/ui/Dialog/Dialog.types.d.ts.map +1 -0
- package/dist/react/ui/Dialog/index.d.ts +138 -0
- package/dist/react/ui/Dialog/index.d.ts.map +1 -0
- package/dist/react/ui/Dialog/index.js +265 -0
- package/dist/react/ui/DropdownMenu/DropdownMenu.styles.d.ts +7 -0
- package/dist/react/ui/DropdownMenu/DropdownMenu.styles.d.ts.map +1 -0
- package/dist/react/ui/DropdownMenu/DropdownMenu.styles.js +16 -0
- package/dist/react/ui/DropdownMenu/DropdownMenu.types.d.ts +50 -0
- package/dist/react/ui/DropdownMenu/DropdownMenu.types.d.ts.map +1 -0
- package/dist/react/ui/DropdownMenu/index.d.ts +50 -0
- package/dist/react/ui/DropdownMenu/index.d.ts.map +1 -0
- package/dist/{components/ui/dropdown-menu.js → react/ui/DropdownMenu/index.js} +44 -14
- package/dist/react/ui/Field/Field.styles.d.ts +11 -0
- package/dist/react/ui/Field/Field.styles.d.ts.map +1 -0
- package/dist/react/ui/Field/Field.styles.js +27 -0
- package/dist/react/ui/Field/Field.types.d.ts +39 -0
- package/dist/react/ui/Field/Field.types.d.ts.map +1 -0
- package/dist/react/ui/Field/index.d.ts +56 -0
- package/dist/react/ui/Field/index.d.ts.map +1 -0
- package/dist/{components/ui/field.js → react/ui/Field/index.js} +55 -23
- package/dist/react/ui/Input/Input.styles.d.ts +7 -0
- package/dist/react/ui/Input/Input.styles.d.ts.map +1 -0
- package/dist/react/ui/Input/Input.styles.js +5 -0
- package/dist/react/ui/Input/Input.types.d.ts +9 -0
- package/dist/react/ui/Input/Input.types.d.ts.map +1 -0
- package/dist/react/ui/Input/index.d.ts +17 -0
- package/dist/react/ui/Input/index.d.ts.map +1 -0
- package/dist/react/ui/Input/index.js +29 -0
- package/dist/react/ui/InputGroup/InputGroup.styles.d.ts +15 -0
- package/dist/react/ui/InputGroup/InputGroup.styles.d.ts.map +1 -0
- package/dist/react/ui/InputGroup/InputGroup.styles.js +34 -0
- package/dist/react/ui/InputGroup/InputGroup.types.d.ts +28 -0
- package/dist/react/ui/InputGroup/InputGroup.types.d.ts.map +1 -0
- package/dist/react/ui/InputGroup/index.d.ts +28 -0
- package/dist/react/ui/InputGroup/index.d.ts.map +1 -0
- package/dist/react/ui/InputGroup/index.js +81 -0
- package/dist/react/ui/Label/Label.styles.d.ts +6 -0
- package/dist/react/ui/Label/Label.styles.d.ts.map +1 -0
- package/dist/react/ui/Label/Label.styles.js +5 -0
- package/dist/react/ui/Label/Label.types.d.ts +8 -0
- package/dist/react/ui/Label/Label.types.d.ts.map +1 -0
- package/dist/react/ui/Label/index.d.ts +14 -0
- package/dist/react/ui/Label/index.d.ts.map +1 -0
- package/dist/react/ui/Label/index.js +24 -0
- package/dist/react/ui/Menu/Menu.styles.d.ts +42 -0
- package/dist/react/ui/Menu/Menu.styles.d.ts.map +1 -0
- package/dist/react/ui/Menu/Menu.styles.js +32 -0
- package/dist/react/ui/Menu/Menu.types.d.ts +328 -0
- package/dist/react/ui/Menu/Menu.types.d.ts.map +1 -0
- package/dist/react/ui/Menu/index.d.ts +354 -0
- package/dist/react/ui/Menu/index.d.ts.map +1 -0
- package/dist/react/ui/Menu/index.js +636 -0
- package/dist/react/ui/Popover/Popover.styles.d.ts +23 -0
- package/dist/react/ui/Popover/Popover.styles.d.ts.map +1 -0
- package/dist/react/ui/Popover/Popover.styles.js +26 -0
- package/dist/react/ui/Popover/Popover.types.d.ts +204 -0
- package/dist/react/ui/Popover/Popover.types.d.ts.map +1 -0
- package/dist/react/ui/Popover/index.d.ts +133 -0
- package/dist/react/ui/Popover/index.d.ts.map +1 -0
- package/dist/react/ui/Popover/index.js +237 -0
- package/dist/react/ui/Progress/Progress.styles.d.ts +28 -0
- package/dist/react/ui/Progress/Progress.styles.d.ts.map +1 -0
- package/dist/react/ui/Progress/Progress.styles.js +30 -0
- package/dist/react/ui/Progress/Progress.types.d.ts +148 -0
- package/dist/react/ui/Progress/Progress.types.d.ts.map +1 -0
- package/dist/react/ui/Progress/index.d.ts +111 -0
- package/dist/react/ui/Progress/index.d.ts.map +1 -0
- package/dist/react/ui/Progress/index.js +170 -0
- package/dist/react/ui/Select/Select.styles.d.ts +7 -0
- package/dist/react/ui/Select/Select.styles.d.ts.map +1 -0
- package/dist/react/ui/Select/Select.styles.js +15 -0
- package/dist/react/ui/Select/Select.types.d.ts +28 -0
- package/dist/react/ui/Select/Select.types.d.ts.map +1 -0
- package/dist/react/ui/Select/index.d.ts +38 -0
- package/dist/react/ui/Select/index.d.ts.map +1 -0
- package/dist/{components/ui/select.js → react/ui/Select/index.js} +35 -13
- package/dist/react/ui/Separator/Separator.styles.d.ts +6 -0
- package/dist/react/ui/Separator/Separator.styles.d.ts.map +1 -0
- package/dist/react/ui/Separator/Separator.styles.js +5 -0
- package/dist/react/ui/Separator/Separator.types.d.ts +9 -0
- package/dist/react/ui/Separator/Separator.types.d.ts.map +1 -0
- package/dist/react/ui/Separator/index.d.ts +16 -0
- package/dist/react/ui/Separator/index.d.ts.map +1 -0
- package/dist/react/ui/Separator/index.js +29 -0
- package/dist/react/ui/Switch/Switch.styles.d.ts +26 -0
- package/dist/react/ui/Switch/Switch.styles.d.ts.map +1 -0
- package/dist/react/ui/Switch/Switch.styles.js +41 -0
- package/dist/react/ui/Switch/Switch.types.d.ts +130 -0
- package/dist/react/ui/Switch/Switch.types.d.ts.map +1 -0
- package/dist/react/ui/Switch/index.d.ts +79 -0
- package/dist/react/ui/Switch/index.d.ts.map +1 -0
- package/dist/react/ui/Switch/index.js +199 -0
- package/dist/react/ui/Tabs/Tabs.styles.d.ts +43 -0
- package/dist/react/ui/Tabs/Tabs.styles.d.ts.map +1 -0
- package/dist/react/ui/Tabs/Tabs.styles.js +26 -0
- package/dist/react/ui/Tabs/Tabs.types.d.ts +201 -0
- package/dist/react/ui/Tabs/Tabs.types.d.ts.map +1 -0
- package/dist/react/ui/Tabs/index.d.ts +141 -0
- package/dist/react/ui/Tabs/index.d.ts.map +1 -0
- package/dist/react/ui/Tabs/index.js +308 -0
- package/dist/react/ui/Textarea/Textarea.styles.d.ts +6 -0
- package/dist/react/ui/Textarea/Textarea.styles.d.ts.map +1 -0
- package/dist/react/ui/Textarea/Textarea.styles.js +5 -0
- package/dist/react/ui/Textarea/Textarea.types.d.ts +8 -0
- package/dist/react/ui/Textarea/Textarea.types.d.ts.map +1 -0
- package/dist/react/ui/Textarea/index.d.ts +14 -0
- package/dist/react/ui/Textarea/index.d.ts.map +1 -0
- package/dist/react/ui/Textarea/index.js +24 -0
- package/dist/react/ui/Tooltip/Tooltip.styles.d.ts +23 -0
- package/dist/react/ui/Tooltip/Tooltip.styles.d.ts.map +1 -0
- package/dist/react/ui/Tooltip/Tooltip.styles.js +26 -0
- package/dist/react/ui/Tooltip/Tooltip.types.d.ts +203 -0
- package/dist/react/ui/Tooltip/Tooltip.types.d.ts.map +1 -0
- package/dist/react/ui/Tooltip/index.d.ts +110 -0
- package/dist/react/ui/Tooltip/index.d.ts.map +1 -0
- package/dist/react/ui/Tooltip/index.js +219 -0
- package/dist/react/ui/index.d.ts +31 -0
- package/dist/react/ui/index.d.ts.map +1 -0
- package/dist/react/ui/index.js +37 -0
- package/dist/react.js +88 -0
- package/package.json +12 -13
- package/src/core/index.ts +7 -0
- package/src/core/types.ts +82 -0
- package/src/index.ts +20 -11
- package/src/react/components/MorphingPopover/MorphingPopover.types.ts +49 -0
- package/src/react/components/MorphingPopover/index.tsx +186 -0
- package/src/react/components/index.ts +9 -0
- package/src/{hooks/use-auto-height.tsx → react/hooks/Animation/UseAutoHeight.tsx} +24 -3
- package/src/react/hooks/DOM/UseIsInView.tsx +44 -0
- package/src/{hooks/use-controlled-state.tsx → react/hooks/State/UseControlledState.tsx} +26 -2
- package/src/{hooks/use-data-state.tsx → react/hooks/State/UseDataState.tsx} +22 -0
- package/src/react/hooks/index.ts +17 -0
- package/src/react/icons/index.ts +12 -0
- package/src/{icons → react/icons}/lucide-animated/activity.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/bell-electric.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/bell.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/bot.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/box.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/circle-check.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/delete.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/download.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/home.tsx +1 -1
- package/src/react/icons/lucide-animated/index.ts +38 -0
- package/src/{icons → react/icons}/lucide-animated/layout-panel-top.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/plus.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/search.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/settings.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/trending-down.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/trending-up.tsx +1 -1
- package/src/{icons → react/icons}/lucide-animated/x.tsx +1 -1
- package/src/react/index.ts +30 -0
- package/src/{lib → react/lib}/get-strict-context.tsx +20 -0
- package/src/react/lib/index.ts +8 -0
- package/src/{lib → react/lib}/utils.ts +2 -2
- package/src/{components/animate-ui/primitives/effects/auto-height.tsx → react/primitives/AutoHeight/index.tsx} +24 -5
- package/src/{components/animate-ui/primitives/texts/counting-number.tsx → react/primitives/CountingNumber/index.tsx} +35 -7
- package/src/react/primitives/Highlight/Highlight.types.ts +136 -0
- package/src/{components/animate-ui/primitives/effects/highlight.tsx → react/primitives/Highlight/index.tsx} +60 -123
- package/src/{components/animate-ui/primitives/animate/slot.tsx → react/primitives/Slot/index.tsx} +43 -11
- package/src/react/primitives/index.ts +13 -0
- package/src/react/ui/Accordion/Accordion.styles.ts +72 -0
- package/src/react/ui/Accordion/Accordion.types.ts +199 -0
- package/src/react/ui/Accordion/index.tsx +362 -0
- package/src/react/ui/AlertDialog/AlertDialog.styles.ts +38 -0
- package/src/react/ui/AlertDialog/AlertDialog.types.ts +296 -0
- package/src/react/ui/AlertDialog/index.tsx +540 -0
- package/src/react/ui/Badge/Badge.styles.ts +43 -0
- package/src/react/ui/Badge/Badge.types.ts +26 -0
- package/src/react/ui/Badge/index.tsx +34 -0
- package/src/react/ui/Button/Button.styles.ts +57 -0
- package/src/react/ui/Button/Button.types.ts +63 -0
- package/src/react/ui/Button/index.tsx +155 -0
- package/src/react/ui/Card/Card.styles.ts +32 -0
- package/src/react/ui/Card/Card.types.ts +39 -0
- package/src/react/ui/Card/index.tsx +130 -0
- package/src/react/ui/Checkbox/Checkbox.styles.ts +40 -0
- package/src/react/ui/Checkbox/Checkbox.types.ts +98 -0
- package/src/react/ui/Checkbox/index.tsx +233 -0
- package/src/react/ui/Combobox/Combobox.styles.ts +34 -0
- package/src/react/ui/Combobox/Combobox.types.ts +89 -0
- package/src/react/ui/Combobox/index.tsx +331 -0
- package/src/react/ui/CornerBracket/CornerBracket.styles.ts +38 -0
- package/src/react/ui/CornerBracket/CornerBracket.types.ts +15 -0
- package/src/react/ui/CornerBracket/index.tsx +49 -0
- package/src/react/ui/Dialog/Dialog.styles.ts +59 -0
- package/src/react/ui/Dialog/Dialog.types.ts +284 -0
- package/src/react/ui/Dialog/index.tsx +452 -0
- package/src/react/ui/DropdownMenu/DropdownMenu.styles.ts +35 -0
- package/src/react/ui/DropdownMenu/DropdownMenu.types.ts +81 -0
- package/src/react/ui/DropdownMenu/index.tsx +300 -0
- package/src/react/ui/Field/Field.styles.ts +47 -0
- package/src/react/ui/Field/Field.types.ts +60 -0
- package/src/react/ui/Field/index.tsx +254 -0
- package/src/{components/ui/input.tsx → react/ui/Input/Input.styles.ts} +8 -17
- package/src/react/ui/Input/Input.types.ts +10 -0
- package/src/react/ui/Input/index.tsx +32 -0
- package/src/react/ui/InputGroup/InputGroup.styles.ts +53 -0
- package/src/react/ui/InputGroup/InputGroup.types.ts +44 -0
- package/src/react/ui/InputGroup/index.tsx +147 -0
- package/src/react/ui/Label/Label.styles.ts +10 -0
- package/src/react/ui/Label/Label.types.ts +9 -0
- package/src/react/ui/Label/index.tsx +27 -0
- package/src/react/ui/Menu/Menu.styles.ts +71 -0
- package/src/react/ui/Menu/Menu.types.ts +425 -0
- package/src/react/ui/Menu/index.tsx +900 -0
- package/src/react/ui/Popover/Popover.styles.ts +55 -0
- package/src/react/ui/Popover/Popover.types.ts +261 -0
- package/src/react/ui/Popover/index.tsx +422 -0
- package/src/react/ui/Progress/Progress.styles.ts +36 -0
- package/src/react/ui/Progress/Progress.types.ts +162 -0
- package/src/react/ui/Progress/index.tsx +254 -0
- package/src/react/ui/Select/Select.styles.ts +30 -0
- package/src/react/ui/Select/Select.types.ts +51 -0
- package/src/react/ui/Select/index.tsx +225 -0
- package/src/react/ui/Separator/Separator.styles.ts +10 -0
- package/src/react/ui/Separator/Separator.types.ts +10 -0
- package/src/react/ui/Separator/index.tsx +37 -0
- package/src/react/ui/Switch/Switch.styles.ts +50 -0
- package/src/react/ui/Switch/Switch.types.ts +155 -0
- package/src/react/ui/Switch/index.tsx +253 -0
- package/src/react/ui/Tabs/Tabs.styles.ts +60 -0
- package/src/react/ui/Tabs/Tabs.types.ts +250 -0
- package/src/react/ui/Tabs/index.tsx +421 -0
- package/src/{components/ui/textarea.tsx → react/ui/Textarea/Textarea.styles.ts} +7 -15
- package/src/react/ui/Textarea/Textarea.types.ts +9 -0
- package/src/react/ui/Textarea/index.tsx +27 -0
- package/src/react/ui/Tooltip/Tooltip.styles.ts +43 -0
- package/src/react/ui/Tooltip/Tooltip.types.ts +253 -0
- package/src/react/ui/Tooltip/index.tsx +394 -0
- package/src/react/ui/index.ts +34 -0
- package/dist/components/animate-ui/primitives/animate/slot.d.ts +0 -18
- package/dist/components/animate-ui/primitives/animate/slot.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/accordion.d.ts +0 -22
- package/dist/components/animate-ui/primitives/base/accordion.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/alert-dialog.d.ts +0 -33
- package/dist/components/animate-ui/primitives/base/alert-dialog.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/checkbox.d.ts +0 -15
- package/dist/components/animate-ui/primitives/base/checkbox.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/dialog.d.ts +0 -33
- package/dist/components/animate-ui/primitives/base/dialog.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/menu.d.ts +0 -60
- package/dist/components/animate-ui/primitives/base/menu.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/popover.d.ts +0 -30
- package/dist/components/animate-ui/primitives/base/popover.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/progress.d.ts +0 -297
- package/dist/components/animate-ui/primitives/base/progress.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/switch.d.ts +0 -23
- package/dist/components/animate-ui/primitives/base/switch.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/switch.js +0 -90
- package/dist/components/animate-ui/primitives/base/tabs.d.ts +0 -33
- package/dist/components/animate-ui/primitives/base/tabs.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/base/tabs.js +0 -132
- package/dist/components/animate-ui/primitives/base/tooltip.d.ts +0 -31
- package/dist/components/animate-ui/primitives/base/tooltip.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/effects/auto-height.d.ts +0 -12
- package/dist/components/animate-ui/primitives/effects/auto-height.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/effects/auto-height.js +0 -37
- package/dist/components/animate-ui/primitives/effects/highlight.d.ts +0 -92
- package/dist/components/animate-ui/primitives/effects/highlight.d.ts.map +0 -1
- package/dist/components/animate-ui/primitives/texts/counting-number.d.ts +0 -16
- package/dist/components/animate-ui/primitives/texts/counting-number.d.ts.map +0 -1
- package/dist/components/ui/alert-dialog.d.ts +0 -21
- package/dist/components/ui/alert-dialog.d.ts.map +0 -1
- package/dist/components/ui/alert-dialog.js +0 -99
- package/dist/components/ui/badge/badge.d.ts +0 -37
- package/dist/components/ui/badge/badge.d.ts.map +0 -1
- package/dist/components/ui/badge/badge.js +0 -52
- package/dist/components/ui/badge/badge.styles.d.ts +0 -23
- package/dist/components/ui/badge/badge.styles.d.ts.map +0 -1
- package/dist/components/ui/badge/badge.types.d.ts +0 -38
- package/dist/components/ui/badge/badge.types.d.ts.map +0 -1
- package/dist/components/ui/badge/index.d.ts +0 -8
- package/dist/components/ui/badge/index.d.ts.map +0 -1
- package/dist/components/ui/badge/index.js +0 -2
- package/dist/components/ui/button/button.d.ts +0 -79
- package/dist/components/ui/button/button.d.ts.map +0 -1
- package/dist/components/ui/button/button.js +0 -161
- package/dist/components/ui/button/button.styles.d.ts +0 -33
- package/dist/components/ui/button/button.styles.d.ts.map +0 -1
- package/dist/components/ui/button/button.types.d.ts +0 -103
- package/dist/components/ui/button/button.types.d.ts.map +0 -1
- package/dist/components/ui/button/index.d.ts +0 -7
- package/dist/components/ui/button/index.d.ts.map +0 -1
- package/dist/components/ui/button/index.js +0 -2
- package/dist/components/ui/card.d.ts +0 -14
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/card.js +0 -67
- package/dist/components/ui/combobox.d.ts +0 -25
- package/dist/components/ui/combobox.d.ts.map +0 -1
- package/dist/components/ui/devenv-bracket.d.ts +0 -30
- package/dist/components/ui/devenv-bracket.d.ts.map +0 -1
- package/dist/components/ui/devenv-bracket.js +0 -66
- package/dist/components/ui/dropdown-menu.d.ts +0 -30
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/field.d.ts +0 -25
- package/dist/components/ui/field.d.ts.map +0 -1
- package/dist/components/ui/index.d.ts +0 -25
- package/dist/components/ui/index.d.ts.map +0 -1
- package/dist/components/ui/index.js +0 -24
- package/dist/components/ui/input-group.d.ts +0 -19
- package/dist/components/ui/input-group.d.ts.map +0 -1
- package/dist/components/ui/input-group.js +0 -84
- package/dist/components/ui/input.d.ts +0 -4
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js +0 -17
- package/dist/components/ui/label.d.ts +0 -4
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/label.js +0 -15
- package/dist/components/ui/morphing-popover/index.d.ts +0 -10
- package/dist/components/ui/morphing-popover/index.d.ts.map +0 -1
- package/dist/components/ui/morphing-popover/index.js +0 -1
- package/dist/components/ui/morphing-popover/morphing-popover.d.ts +0 -54
- package/dist/components/ui/morphing-popover/morphing-popover.d.ts.map +0 -1
- package/dist/components/ui/morphing-popover/morphing-popover.module.js +0 -5
- package/dist/components/ui/select.d.ts +0 -16
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/separator.d.ts +0 -4
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/separator.js +0 -18
- package/dist/components/ui/switch.d.ts +0 -9
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/switch.js +0 -1
- package/dist/components/ui/tabs.d.ts +0 -9
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js +0 -1
- package/dist/components/ui/textarea.d.ts +0 -4
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/textarea.js +0 -15
- package/dist/hooks/use-auto-height.d.ts +0 -11
- package/dist/hooks/use-auto-height.d.ts.map +0 -1
- package/dist/hooks/use-controlled-state.d.ts +0 -9
- package/dist/hooks/use-controlled-state.d.ts.map +0 -1
- package/dist/hooks/use-controlled-state.js +0 -17
- package/dist/hooks/use-data-state.d.ts +0 -5
- package/dist/hooks/use-data-state.d.ts.map +0 -1
- package/dist/hooks/use-is-in-view.d.ts +0 -13
- package/dist/hooks/use-is-in-view.d.ts.map +0 -1
- package/dist/icons/index.d.ts +0 -8
- package/dist/icons/index.d.ts.map +0 -1
- package/dist/icons/lucide-animated/activity.d.ts +0 -11
- package/dist/icons/lucide-animated/activity.d.ts.map +0 -1
- package/dist/icons/lucide-animated/arrow-down-to-line.d.ts.map +0 -1
- package/dist/icons/lucide-animated/arrow-up.d.ts.map +0 -1
- package/dist/icons/lucide-animated/bell-electric.d.ts +0 -11
- package/dist/icons/lucide-animated/bell-electric.d.ts.map +0 -1
- package/dist/icons/lucide-animated/bell.d.ts +0 -11
- package/dist/icons/lucide-animated/bell.d.ts.map +0 -1
- package/dist/icons/lucide-animated/bot.d.ts +0 -11
- package/dist/icons/lucide-animated/bot.d.ts.map +0 -1
- package/dist/icons/lucide-animated/box.d.ts +0 -11
- package/dist/icons/lucide-animated/box.d.ts.map +0 -1
- package/dist/icons/lucide-animated/check.d.ts.map +0 -1
- package/dist/icons/lucide-animated/circle-check.d.ts +0 -11
- package/dist/icons/lucide-animated/circle-check.d.ts.map +0 -1
- package/dist/icons/lucide-animated/delete.d.ts +0 -11
- package/dist/icons/lucide-animated/delete.d.ts.map +0 -1
- package/dist/icons/lucide-animated/download.d.ts +0 -11
- package/dist/icons/lucide-animated/download.d.ts.map +0 -1
- package/dist/icons/lucide-animated/edit-2.d.ts.map +0 -1
- package/dist/icons/lucide-animated/globe.d.ts.map +0 -1
- package/dist/icons/lucide-animated/home.d.ts +0 -11
- package/dist/icons/lucide-animated/home.d.ts.map +0 -1
- package/dist/icons/lucide-animated/index.d.ts +0 -38
- package/dist/icons/lucide-animated/index.d.ts.map +0 -1
- package/dist/icons/lucide-animated/layers.d.ts.map +0 -1
- package/dist/icons/lucide-animated/layout-panel-top.d.ts +0 -11
- package/dist/icons/lucide-animated/layout-panel-top.d.ts.map +0 -1
- package/dist/icons/lucide-animated/list.d.ts.map +0 -1
- package/dist/icons/lucide-animated/package.d.ts.map +0 -1
- package/dist/icons/lucide-animated/palette.d.ts.map +0 -1
- package/dist/icons/lucide-animated/plus.d.ts +0 -11
- package/dist/icons/lucide-animated/plus.d.ts.map +0 -1
- package/dist/icons/lucide-animated/refresh-cw.d.ts.map +0 -1
- package/dist/icons/lucide-animated/rocket.d.ts.map +0 -1
- package/dist/icons/lucide-animated/save.d.ts.map +0 -1
- package/dist/icons/lucide-animated/search.d.ts +0 -11
- package/dist/icons/lucide-animated/search.d.ts.map +0 -1
- package/dist/icons/lucide-animated/settings.d.ts +0 -11
- package/dist/icons/lucide-animated/settings.d.ts.map +0 -1
- package/dist/icons/lucide-animated/terminal.d.ts.map +0 -1
- package/dist/icons/lucide-animated/trash-2.d.ts.map +0 -1
- package/dist/icons/lucide-animated/trending-down.d.ts +0 -11
- package/dist/icons/lucide-animated/trending-down.d.ts.map +0 -1
- package/dist/icons/lucide-animated/trending-up.d.ts +0 -11
- package/dist/icons/lucide-animated/trending-up.d.ts.map +0 -1
- package/dist/icons/lucide-animated/type.d.ts.map +0 -1
- package/dist/icons/lucide-animated/upload.d.ts.map +0 -1
- package/dist/icons/lucide-animated/x.d.ts +0 -11
- package/dist/icons/lucide-animated/x.d.ts.map +0 -1
- package/dist/lib/get-strict-context.d.ts +0 -10
- package/dist/lib/get-strict-context.d.ts.map +0 -1
- package/dist/lib/get-strict-context.js +0 -20
- package/dist/lib/utils.d.ts.map +0 -1
- package/src/components/animate-ui/primitives/base/accordion.tsx +0 -179
- package/src/components/animate-ui/primitives/base/alert-dialog.tsx +0 -218
- package/src/components/animate-ui/primitives/base/checkbox.tsx +0 -153
- package/src/components/animate-ui/primitives/base/dialog.tsx +0 -203
- package/src/components/animate-ui/primitives/base/menu.tsx +0 -463
- package/src/components/animate-ui/primitives/base/popover.tsx +0 -167
- package/src/components/animate-ui/primitives/base/progress.tsx +0 -103
- package/src/components/animate-ui/primitives/base/switch.tsx +0 -158
- package/src/components/animate-ui/primitives/base/tabs.tsx +0 -202
- package/src/components/animate-ui/primitives/base/tooltip.tsx +0 -209
- package/src/components/ui/alert-dialog.tsx +0 -177
- package/src/components/ui/badge/badge.styles.ts +0 -46
- package/src/components/ui/badge/badge.tsx +0 -52
- package/src/components/ui/badge/badge.types.ts +0 -41
- package/src/components/ui/badge/index.ts +0 -8
- package/src/components/ui/button/button.styles.ts +0 -66
- package/src/components/ui/button/button.tsx +0 -209
- package/src/components/ui/button/button.types.ts +0 -125
- package/src/components/ui/button/index.ts +0 -7
- package/src/components/ui/card.tsx +0 -108
- package/src/components/ui/combobox.tsx +0 -293
- package/src/components/ui/devenv-bracket.tsx +0 -81
- package/src/components/ui/dropdown-menu.tsx +0 -261
- package/src/components/ui/field.tsx +0 -227
- package/src/components/ui/index.ts +0 -28
- package/src/components/ui/input-group.tsx +0 -149
- package/src/components/ui/label.tsx +0 -18
- package/src/components/ui/morphing-popover/index.ts +0 -10
- package/src/components/ui/morphing-popover/morphing-popover.tsx +0 -183
- package/src/components/ui/select.tsx +0 -190
- package/src/components/ui/separator.tsx +0 -25
- package/src/components/ui/switch.tsx +0 -9
- package/src/components/ui/tabs.tsx +0 -9
- package/src/hooks/use-is-in-view.tsx +0 -25
- package/src/icons/index.ts +0 -12
- package/src/icons/lucide-animated/index.ts +0 -38
- /package/dist/{components/ui/morphing-popover/morphing-popover.module-yxDDcJHZ.css → react/components/MorphingPopover/morphing-popover.module-BkcZcmVy.css} +0 -0
- /package/dist/{icons → react/icons}/index.js +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/check.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/edit-2.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/globe.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/index.js +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/layers.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/package.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/palette.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/refresh-cw.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/rocket.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/save.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/trash-2.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/type.d.ts +0 -0
- /package/dist/{icons → react/icons}/lucide-animated/upload.d.ts +0 -0
- /package/src/{components/ui/morphing-popover → react/components/MorphingPopover}/morphing-popover.module.css +0 -0
- /package/src/{icons → react/icons}/lucide-animated/arrow-down-to-line.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/arrow-up.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/check.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/edit-2.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/globe.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/layers.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/list.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/package.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/palette.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/refresh-cw.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/rocket.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/save.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/terminal.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/trash-2.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/type.tsx +0 -0
- /package/src/{icons → react/icons}/lucide-animated/upload.tsx +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Switch component.
|
|
3
|
+
*
|
|
4
|
+
* @module @mks2508/mks-ui/react/ui/Switch/Switch.types
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { Switch as SwitchPrimitives } from '@base-ui/react/switch';
|
|
8
|
+
import type {
|
|
9
|
+
HTMLMotionProps,
|
|
10
|
+
LegacyAnimationControls,
|
|
11
|
+
TargetAndTransition,
|
|
12
|
+
VariantLabels,
|
|
13
|
+
} from 'motion/react';
|
|
14
|
+
|
|
15
|
+
import type { IBaseConfig, SlotOverrides } from '@/core/types';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Available style slot names for the Switch component.
|
|
19
|
+
* Each slot maps to a visual region that can be customized via the `slots` prop.
|
|
20
|
+
*
|
|
21
|
+
* - `root` - The outer switch track/button element
|
|
22
|
+
* - `thumb` - The sliding thumb indicator
|
|
23
|
+
* - `icon` - Icons displayed at left/right/thumb positions
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* <Switch slots={{ root: 'bg-zinc-800', thumb: 'bg-white', icon: 'text-zinc-400' }} />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type SwitchSlot = 'root' | 'thumb' | 'icon';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Position of an icon within the Switch component.
|
|
34
|
+
*
|
|
35
|
+
* - `left` - Shown when the switch is ON (checked)
|
|
36
|
+
* - `right` - Shown when the switch is OFF (unchecked)
|
|
37
|
+
* - `thumb` - Always visible on the thumb
|
|
38
|
+
*/
|
|
39
|
+
export type SwitchIconPosition = 'left' | 'right' | 'thumb';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Internal context type for Switch state management.
|
|
43
|
+
* Shared between the Switch root and its child components via React context.
|
|
44
|
+
*/
|
|
45
|
+
export type SwitchContextType = {
|
|
46
|
+
/** Whether the switch is currently checked (on). */
|
|
47
|
+
isChecked: boolean;
|
|
48
|
+
/** Callback to update the checked state. */
|
|
49
|
+
setIsChecked: ISwitchProps['onCheckedChange'];
|
|
50
|
+
/** Whether the switch is currently being pressed. */
|
|
51
|
+
isPressed: boolean;
|
|
52
|
+
/** Callback to update the pressed state. */
|
|
53
|
+
setIsPressed: (isPressed: boolean) => void;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Configuration options for Switch behavior and animation.
|
|
58
|
+
* Extends the base config with switch-specific settings.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```tsx
|
|
62
|
+
* <Switch config={{ animation: { duration: 0.3 } }} />
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export interface ISwitchConfig extends IBaseConfig {
|
|
66
|
+
/**
|
|
67
|
+
* Spring stiffness for the thumb animation.
|
|
68
|
+
* @defaultValue 300
|
|
69
|
+
*/
|
|
70
|
+
springStiffness?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Spring damping for the thumb animation.
|
|
73
|
+
* @defaultValue 25
|
|
74
|
+
*/
|
|
75
|
+
springDamping?: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Props for the Switch root component.
|
|
80
|
+
* Combines Base UI Switch.Root props (without `render`) with Motion button props,
|
|
81
|
+
* plus slot overrides and configuration.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```tsx
|
|
85
|
+
* <Switch
|
|
86
|
+
* checked={isOn}
|
|
87
|
+
* onCheckedChange={setIsOn}
|
|
88
|
+
* slots={{ root: 'w-11 h-6 rounded-full' }}
|
|
89
|
+
* >
|
|
90
|
+
* <SwitchThumb />
|
|
91
|
+
* </Switch>
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
export type ISwitchProps = Omit<
|
|
95
|
+
React.ComponentProps<typeof SwitchPrimitives.Root>,
|
|
96
|
+
'render'
|
|
97
|
+
> &
|
|
98
|
+
HTMLMotionProps<'button'> & {
|
|
99
|
+
/** Partial class overrides for each visual slot. */
|
|
100
|
+
slots?: SlotOverrides<SwitchSlot>;
|
|
101
|
+
/** Behavioral and animation configuration. */
|
|
102
|
+
config?: ISwitchConfig;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Props for the SwitchThumb sub-component.
|
|
107
|
+
* Combines Base UI Switch.Thumb props (without `render`) with Motion div props,
|
|
108
|
+
* plus an optional pressed animation target.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```tsx
|
|
112
|
+
* <SwitchThumb
|
|
113
|
+
* pressedAnimation={{ width: 28 }}
|
|
114
|
+
* className="size-5 rounded-full bg-white"
|
|
115
|
+
* />
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export type ISwitchThumbProps = Omit<
|
|
119
|
+
React.ComponentProps<typeof SwitchPrimitives.Thumb>,
|
|
120
|
+
'render'
|
|
121
|
+
> &
|
|
122
|
+
HTMLMotionProps<'div'> & {
|
|
123
|
+
/**
|
|
124
|
+
* Animation target applied while the switch is being pressed.
|
|
125
|
+
* Can be a motion target object, variant labels, or a boolean.
|
|
126
|
+
*/
|
|
127
|
+
pressedAnimation?:
|
|
128
|
+
| TargetAndTransition
|
|
129
|
+
| VariantLabels
|
|
130
|
+
| boolean
|
|
131
|
+
| LegacyAnimationControls;
|
|
132
|
+
/** Partial class overrides for each visual slot. */
|
|
133
|
+
slots?: SlotOverrides<SwitchSlot>;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Props for the SwitchIcon sub-component.
|
|
138
|
+
* Renders an icon at a specified position within the switch track or thumb.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```tsx
|
|
142
|
+
* <SwitchIcon position="left">
|
|
143
|
+
* <SunIcon className="size-3" />
|
|
144
|
+
* </SwitchIcon>
|
|
145
|
+
* <SwitchIcon position="right">
|
|
146
|
+
* <MoonIcon className="size-3" />
|
|
147
|
+
* </SwitchIcon>
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export type ISwitchIconProps = HTMLMotionProps<'div'> & {
|
|
151
|
+
/** Where this icon is positioned within the switch. */
|
|
152
|
+
position: SwitchIconPosition;
|
|
153
|
+
/** Partial class overrides for each visual slot. */
|
|
154
|
+
slots?: SlotOverrides<SwitchSlot>;
|
|
155
|
+
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Switch component with animated thumb and icon transitions.
|
|
5
|
+
*
|
|
6
|
+
* Built on Base UI Switch primitives with Motion animations for
|
|
7
|
+
* spring-based thumb movement, press interactions, and icon visibility.
|
|
8
|
+
*
|
|
9
|
+
* @module @mks2508/mks-ui/react/ui/Switch
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { Switch, SwitchThumb } from '@mks2508/mks-ui';
|
|
14
|
+
*
|
|
15
|
+
* function MySwitch() {
|
|
16
|
+
* const [checked, setChecked] = useState(false);
|
|
17
|
+
* return (
|
|
18
|
+
* <Switch checked={checked} onCheckedChange={setChecked}>
|
|
19
|
+
* <SwitchThumb />
|
|
20
|
+
* </Switch>
|
|
21
|
+
* );
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* // With icons
|
|
28
|
+
* import { Switch, SwitchThumb, SwitchIcon } from '@mks2508/mks-ui';
|
|
29
|
+
*
|
|
30
|
+
* <Switch checked={darkMode} onCheckedChange={setDarkMode}>
|
|
31
|
+
* <SwitchIcon position="left"><SunIcon /></SwitchIcon>
|
|
32
|
+
* <SwitchThumb />
|
|
33
|
+
* <SwitchIcon position="right"><MoonIcon /></SwitchIcon>
|
|
34
|
+
* </Switch>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
import * as React from 'react';
|
|
39
|
+
import { Switch as SwitchPrimitives } from '@base-ui/react/switch';
|
|
40
|
+
import { motion } from 'motion/react';
|
|
41
|
+
|
|
42
|
+
import { cn } from '@/react/lib/utils';
|
|
43
|
+
import { getStrictContext } from '@/react/lib/get-strict-context';
|
|
44
|
+
import { useControlledState } from '@/react/hooks/State/UseControlledState';
|
|
45
|
+
|
|
46
|
+
import { switchStyles } from './Switch.styles';
|
|
47
|
+
import type {
|
|
48
|
+
SwitchContextType,
|
|
49
|
+
ISwitchProps,
|
|
50
|
+
ISwitchThumbProps,
|
|
51
|
+
ISwitchIconProps,
|
|
52
|
+
} from './Switch.types';
|
|
53
|
+
|
|
54
|
+
const [SwitchProvider, useSwitch] =
|
|
55
|
+
getStrictContext<SwitchContextType>('SwitchContext');
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Switch root component with animated tap interactions.
|
|
59
|
+
*
|
|
60
|
+
* Wraps Base UI `Switch.Root` with a `motion.button` render element,
|
|
61
|
+
* providing tap start/end tracking for press animation support on the thumb.
|
|
62
|
+
* Supports both controlled and uncontrolled checked state via `useControlledState`.
|
|
63
|
+
*
|
|
64
|
+
* @param props - Switch props including Base UI root props, motion props, slots, and config
|
|
65
|
+
* @returns A switch button element with press tracking
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* <Switch
|
|
70
|
+
* checked={isEnabled}
|
|
71
|
+
* onCheckedChange={setIsEnabled}
|
|
72
|
+
* slots={{ root: 'w-14 h-7 rounded-full bg-zinc-700' }}
|
|
73
|
+
* >
|
|
74
|
+
* <SwitchThumb />
|
|
75
|
+
* </Switch>
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
function Switch({
|
|
79
|
+
name,
|
|
80
|
+
defaultChecked,
|
|
81
|
+
checked,
|
|
82
|
+
onCheckedChange,
|
|
83
|
+
nativeButton,
|
|
84
|
+
disabled,
|
|
85
|
+
readOnly,
|
|
86
|
+
required,
|
|
87
|
+
inputRef,
|
|
88
|
+
id,
|
|
89
|
+
className,
|
|
90
|
+
slots,
|
|
91
|
+
config: _config,
|
|
92
|
+
...props
|
|
93
|
+
}: ISwitchProps) {
|
|
94
|
+
const [isPressed, setIsPressed] = React.useState(false);
|
|
95
|
+
const [isChecked, setIsChecked] = useControlledState({
|
|
96
|
+
value: checked,
|
|
97
|
+
defaultValue: defaultChecked,
|
|
98
|
+
onChange: onCheckedChange,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
return (
|
|
102
|
+
<SwitchProvider
|
|
103
|
+
value={{ isChecked, setIsChecked, isPressed, setIsPressed }}
|
|
104
|
+
>
|
|
105
|
+
<SwitchPrimitives.Root
|
|
106
|
+
name={name}
|
|
107
|
+
defaultChecked={defaultChecked}
|
|
108
|
+
checked={checked}
|
|
109
|
+
onCheckedChange={setIsChecked}
|
|
110
|
+
nativeButton={nativeButton}
|
|
111
|
+
disabled={disabled}
|
|
112
|
+
readOnly={readOnly}
|
|
113
|
+
required={required}
|
|
114
|
+
inputRef={inputRef}
|
|
115
|
+
id={id}
|
|
116
|
+
render={
|
|
117
|
+
<motion.button
|
|
118
|
+
data-slot="switch"
|
|
119
|
+
whileTap="tap"
|
|
120
|
+
initial={false}
|
|
121
|
+
onTapStart={() => setIsPressed(true)}
|
|
122
|
+
onTapCancel={() => setIsPressed(false)}
|
|
123
|
+
onTap={() => setIsPressed(false)}
|
|
124
|
+
className={cn(switchStyles.root, slots?.root, className)}
|
|
125
|
+
{...props}
|
|
126
|
+
/>
|
|
127
|
+
}
|
|
128
|
+
/>
|
|
129
|
+
</SwitchProvider>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* SwitchThumb renders the sliding thumb indicator with spring-based layout animation.
|
|
135
|
+
*
|
|
136
|
+
* Uses Motion `layout` for smooth position transitions between checked/unchecked states.
|
|
137
|
+
* Optionally accepts a `pressedAnimation` target applied while the switch is being pressed.
|
|
138
|
+
*
|
|
139
|
+
* @param props - Thumb props including motion props, pressed animation, and slot overrides
|
|
140
|
+
* @returns An animated thumb div element
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```tsx
|
|
144
|
+
* <SwitchThumb
|
|
145
|
+
* pressedAnimation={{ width: 28 }}
|
|
146
|
+
* slots={{ thumb: 'bg-white shadow-md' }}
|
|
147
|
+
* />
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```tsx
|
|
152
|
+
* // Default spring animation
|
|
153
|
+
* <SwitchThumb />
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
function SwitchThumb({
|
|
157
|
+
pressedAnimation,
|
|
158
|
+
transition = { type: 'spring', stiffness: 300, damping: 25 },
|
|
159
|
+
className,
|
|
160
|
+
slots,
|
|
161
|
+
...props
|
|
162
|
+
}: ISwitchThumbProps) {
|
|
163
|
+
const { isPressed } = useSwitch();
|
|
164
|
+
|
|
165
|
+
return (
|
|
166
|
+
<SwitchPrimitives.Thumb
|
|
167
|
+
render={
|
|
168
|
+
<motion.div
|
|
169
|
+
data-slot="switch-thumb"
|
|
170
|
+
whileTap="tab"
|
|
171
|
+
layout
|
|
172
|
+
transition={transition}
|
|
173
|
+
animate={isPressed ? pressedAnimation : undefined}
|
|
174
|
+
className={cn(switchStyles.thumb, slots?.thumb, className)}
|
|
175
|
+
{...props}
|
|
176
|
+
/>
|
|
177
|
+
}
|
|
178
|
+
/>
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* SwitchIcon renders an animated icon at a specified position within the switch.
|
|
184
|
+
*
|
|
185
|
+
* - `left` position: visible when the switch is ON (checked)
|
|
186
|
+
* - `right` position: visible when the switch is OFF (unchecked)
|
|
187
|
+
* - `thumb` position: always visible on the thumb element
|
|
188
|
+
*
|
|
189
|
+
* Uses spring-based scale and opacity transitions for smooth show/hide animations.
|
|
190
|
+
*
|
|
191
|
+
* @param props - Icon props including position, motion props, and slot overrides
|
|
192
|
+
* @returns An animated icon container div
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```tsx
|
|
196
|
+
* <SwitchIcon position="left">
|
|
197
|
+
* <CheckIcon className="size-3 text-white" />
|
|
198
|
+
* </SwitchIcon>
|
|
199
|
+
* ```
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```tsx
|
|
203
|
+
* <SwitchIcon position="thumb">
|
|
204
|
+
* <GripIcon className="size-2.5 text-zinc-400" />
|
|
205
|
+
* </SwitchIcon>
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
function SwitchIcon({
|
|
209
|
+
position,
|
|
210
|
+
transition = { type: 'spring', bounce: 0 },
|
|
211
|
+
className,
|
|
212
|
+
slots,
|
|
213
|
+
...props
|
|
214
|
+
}: ISwitchIconProps) {
|
|
215
|
+
const { isChecked } = useSwitch();
|
|
216
|
+
|
|
217
|
+
const isAnimated = React.useMemo(() => {
|
|
218
|
+
if (position === 'right') return !isChecked;
|
|
219
|
+
if (position === 'left') return isChecked;
|
|
220
|
+
if (position === 'thumb') return true;
|
|
221
|
+
return false;
|
|
222
|
+
}, [position, isChecked]);
|
|
223
|
+
|
|
224
|
+
return (
|
|
225
|
+
<motion.div
|
|
226
|
+
data-slot={`switch-${position}-icon`}
|
|
227
|
+
animate={isAnimated ? { scale: 1, opacity: 1 } : { scale: 0, opacity: 0 }}
|
|
228
|
+
transition={transition}
|
|
229
|
+
className={cn(switchStyles.icon, slots?.icon, className)}
|
|
230
|
+
{...props}
|
|
231
|
+
/>
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export {
|
|
236
|
+
Switch,
|
|
237
|
+
SwitchThumb,
|
|
238
|
+
SwitchIcon,
|
|
239
|
+
useSwitch,
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
// Re-exports
|
|
243
|
+
export type {
|
|
244
|
+
ISwitchProps,
|
|
245
|
+
ISwitchThumbProps,
|
|
246
|
+
ISwitchIconProps,
|
|
247
|
+
ISwitchConfig,
|
|
248
|
+
SwitchContextType,
|
|
249
|
+
SwitchIconPosition,
|
|
250
|
+
SwitchSlot,
|
|
251
|
+
} from './Switch.types';
|
|
252
|
+
|
|
253
|
+
export { switchStyles } from './Switch.styles';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Style slots and defaults for the Tabs component.
|
|
3
|
+
*
|
|
4
|
+
* Each slot maps to a visual region of the Tabs. Consumers override
|
|
5
|
+
* individual slots via the `slots` prop without touching internals.
|
|
6
|
+
*
|
|
7
|
+
* @module @mks2508/mks-ui/react/ui/Tabs/Tabs.styles
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* import { tabsStyles } from './Tabs.styles';
|
|
12
|
+
* // tabsStyles.root => default root classes
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { StyleSlots } from '@/core/types';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Union of all visual regions (slots) in the Tabs component tree.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const overrides: SlotOverrides<TabsSlot> = {
|
|
24
|
+
* root: 'w-full',
|
|
25
|
+
* list: 'flex gap-1 border-b border-white/10',
|
|
26
|
+
* tab: 'px-3 py-1.5 text-sm',
|
|
27
|
+
* };
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type TabsSlot =
|
|
31
|
+
| 'root'
|
|
32
|
+
| 'list'
|
|
33
|
+
| 'tab'
|
|
34
|
+
| 'panel'
|
|
35
|
+
| 'panels'
|
|
36
|
+
| 'highlight'
|
|
37
|
+
| 'highlightItem';
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Default style map for every Tabs slot.
|
|
41
|
+
*
|
|
42
|
+
* Base classes are intentionally minimal so consumers can fully
|
|
43
|
+
* control the visual appearance through `slots` overrides.
|
|
44
|
+
* No colors are hardcoded -- all visuals come from consumer styles.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { tabsStyles } from './Tabs.styles';
|
|
49
|
+
* cn(tabsStyles.list, slots?.list, className);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const tabsStyles: StyleSlots<TabsSlot> = {
|
|
53
|
+
root: '',
|
|
54
|
+
list: '',
|
|
55
|
+
tab: '',
|
|
56
|
+
panel: '',
|
|
57
|
+
panels: '',
|
|
58
|
+
highlight: '',
|
|
59
|
+
highlightItem: '',
|
|
60
|
+
};
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Tabs component.
|
|
3
|
+
*
|
|
4
|
+
* All interfaces use the IPrefix convention. Type aliases do not.
|
|
5
|
+
* Supports two panel modes: auto-height (animated resize) and layout (motion layout).
|
|
6
|
+
*
|
|
7
|
+
* @module @mks2508/mks-ui/react/ui/Tabs/Tabs.types
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type * as React from 'react';
|
|
11
|
+
import type { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
|
|
12
|
+
import type { HTMLMotionProps, Transition } from 'motion/react';
|
|
13
|
+
|
|
14
|
+
import type { IBaseConfig, SlotOverrides } from '@/core/types';
|
|
15
|
+
import type { IHighlightProps, IHighlightItemProps } from '@/react/primitives/Highlight';
|
|
16
|
+
import type { IAutoHeightProps } from '@/react/primitives/AutoHeight';
|
|
17
|
+
import type { TabsSlot } from './Tabs.styles';
|
|
18
|
+
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Config
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Configuration interface for Tabs behavior and animation.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* const config: ITabsConfig = {
|
|
29
|
+
* animation: { duration: 0.3 },
|
|
30
|
+
* };
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface ITabsConfig extends IBaseConfig {
|
|
34
|
+
/** Default motion transition for panel enter/exit. */
|
|
35
|
+
panelTransition?: Transition;
|
|
36
|
+
/** Default motion transition for the highlight indicator. */
|
|
37
|
+
highlightTransition?: Transition;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Context type (type alias -- no IPrefix)
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Internal context carrying the active tab value and its setter.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const ctx: TabsContextType = {
|
|
50
|
+
* value: 'settings',
|
|
51
|
+
* setValue: (v) => {},
|
|
52
|
+
* };
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export type TabsContextType = {
|
|
56
|
+
/** Currently active tab value, or undefined if none. */
|
|
57
|
+
value: string | undefined;
|
|
58
|
+
/** Setter matching base-ui's onValueChange signature. */
|
|
59
|
+
setValue: ITabsProps['onValueChange'];
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// Root
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Props for the root Tabs component.
|
|
68
|
+
* Extends base-ui Tabs.Root with slot overrides and config.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```tsx
|
|
72
|
+
* <Tabs
|
|
73
|
+
* defaultValue="general"
|
|
74
|
+
* slots={{ list: 'gap-2', tab: 'text-sm' }}
|
|
75
|
+
* >
|
|
76
|
+
* ...
|
|
77
|
+
* </Tabs>
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export interface ITabsProps extends React.ComponentProps<typeof TabsPrimitive.Root> {
|
|
81
|
+
/** Partial class overrides per slot. */
|
|
82
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
83
|
+
/** Tabs behavior / animation configuration. */
|
|
84
|
+
config?: ITabsConfig;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// Highlight
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Props for TabsHighlight -- animated background that follows the active tab.
|
|
93
|
+
* Wraps the Highlight primitive; `controlledItems` and `value` are managed internally.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```tsx
|
|
97
|
+
* <TabsHighlight className="rounded-md bg-white/10" />
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface ITabsHighlightProps
|
|
101
|
+
extends Omit<IHighlightProps, 'controlledItems' | 'value'> {
|
|
102
|
+
/** Partial class overrides per slot. */
|
|
103
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Props for TabsHighlightItem -- wraps a tab for highlight position tracking.
|
|
108
|
+
* Requires a `value` prop matching the corresponding tab value.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```tsx
|
|
112
|
+
* <TabsHighlightItem value="general">
|
|
113
|
+
* <TabsTab value="general">General</TabsTab>
|
|
114
|
+
* </TabsHighlightItem>
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export interface ITabsHighlightItemProps extends IHighlightItemProps {
|
|
118
|
+
/** Tab value this highlight item corresponds to. */
|
|
119
|
+
value: string;
|
|
120
|
+
/** Partial class overrides per slot. */
|
|
121
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
// List
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Props for TabsList -- the container holding tab triggers.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```tsx
|
|
133
|
+
* <TabsList className="flex gap-1 border-b border-white/10">
|
|
134
|
+
* <TabsTab value="general">General</TabsTab>
|
|
135
|
+
* <TabsTab value="advanced">Advanced</TabsTab>
|
|
136
|
+
* </TabsList>
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
export interface ITabsListProps
|
|
140
|
+
extends React.ComponentProps<typeof TabsPrimitive.List> {
|
|
141
|
+
/** Partial class overrides per slot. */
|
|
142
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Tab
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Props for TabsTab -- a single tab trigger button.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```tsx
|
|
154
|
+
* <TabsTab value="general" className="px-3 py-1.5">
|
|
155
|
+
* General
|
|
156
|
+
* </TabsTab>
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export interface ITabsTabProps
|
|
160
|
+
extends React.ComponentProps<typeof TabsPrimitive.Tab> {
|
|
161
|
+
/** Partial class overrides per slot. */
|
|
162
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// ---------------------------------------------------------------------------
|
|
166
|
+
// Panel
|
|
167
|
+
// ---------------------------------------------------------------------------
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Props for TabsPanel -- animated content panel with blur transitions.
|
|
171
|
+
* Combines base-ui Panel with motion HTML props for enter/exit animations.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```tsx
|
|
175
|
+
* <TabsPanel value="general" className="p-4">
|
|
176
|
+
* <p>General settings content...</p>
|
|
177
|
+
* </TabsPanel>
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export interface ITabsPanelProps
|
|
181
|
+
extends Omit<React.ComponentProps<typeof TabsPrimitive.Panel>, keyof HTMLMotionProps<'div'>>,
|
|
182
|
+
HTMLMotionProps<'div'> {
|
|
183
|
+
/** Partial class overrides per slot. */
|
|
184
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ---------------------------------------------------------------------------
|
|
188
|
+
// Panels (auto-height | layout mode)
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Props for TabsPanels in auto-height mode.
|
|
193
|
+
* Uses the AutoHeight primitive to animate container height changes.
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```tsx
|
|
197
|
+
* <TabsPanels mode="auto-height">
|
|
198
|
+
* <TabsPanel value="general">Short content</TabsPanel>
|
|
199
|
+
* <TabsPanel value="advanced">Much longer content...</TabsPanel>
|
|
200
|
+
* </TabsPanels>
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
export interface ITabsPanelsAutoProps extends Omit<IAutoHeightProps, 'children'> {
|
|
204
|
+
/** Panel animation mode (default). */
|
|
205
|
+
mode?: 'auto-height';
|
|
206
|
+
/** Tab panel children. */
|
|
207
|
+
children: React.ReactNode;
|
|
208
|
+
/** Motion transition for height animation. */
|
|
209
|
+
transition?: Transition;
|
|
210
|
+
/** Partial class overrides per slot. */
|
|
211
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Props for TabsPanels in layout mode.
|
|
216
|
+
* Uses Motion layout animation to transition between panels.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```tsx
|
|
220
|
+
* <TabsPanels mode="layout" className="overflow-hidden">
|
|
221
|
+
* <TabsPanel value="general">Content A</TabsPanel>
|
|
222
|
+
* <TabsPanel value="advanced">Content B</TabsPanel>
|
|
223
|
+
* </TabsPanels>
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
export interface ITabsPanelsLayoutProps extends Omit<HTMLMotionProps<'div'>, 'children'> {
|
|
227
|
+
/** Panel animation mode. */
|
|
228
|
+
mode: 'layout';
|
|
229
|
+
/** Tab panel children. */
|
|
230
|
+
children: React.ReactNode;
|
|
231
|
+
/** Motion transition for layout animation. */
|
|
232
|
+
transition?: Transition;
|
|
233
|
+
/** Partial class overrides per slot. */
|
|
234
|
+
slots?: SlotOverrides<TabsSlot>;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Discriminated union of TabsPanels props.
|
|
239
|
+
* Defaults to auto-height mode when `mode` is omitted.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```tsx
|
|
243
|
+
* // Auto-height (default)
|
|
244
|
+
* <TabsPanels>...</TabsPanels>
|
|
245
|
+
*
|
|
246
|
+
* // Layout mode
|
|
247
|
+
* <TabsPanels mode="layout">...</TabsPanels>
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
export type ITabsPanelsProps = ITabsPanelsAutoProps | ITabsPanelsLayoutProps;
|