@spatika/react 1.0.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 +72 -0
- package/dist/composites/ActionBar.d.ts +7 -0
- package/dist/composites/ActionBar.d.ts.map +1 -0
- package/dist/composites/ActionBar.js +5 -0
- package/dist/composites/AmountInput.d.ts +10 -0
- package/dist/composites/AmountInput.d.ts.map +1 -0
- package/dist/composites/AmountInput.js +7 -0
- package/dist/composites/AppHeader.d.ts +25 -0
- package/dist/composites/AppHeader.d.ts.map +1 -0
- package/dist/composites/AppHeader.js +13 -0
- package/dist/composites/AppSidebar.d.ts +30 -0
- package/dist/composites/AppSidebar.d.ts.map +1 -0
- package/dist/composites/AppSidebar.js +15 -0
- package/dist/composites/BottomSheet.d.ts +36 -0
- package/dist/composites/BottomSheet.d.ts.map +1 -0
- package/dist/composites/BottomSheet.js +37 -0
- package/dist/composites/Breadcrumb.d.ts +10 -0
- package/dist/composites/Breadcrumb.d.ts.map +1 -0
- package/dist/composites/Breadcrumb.js +10 -0
- package/dist/composites/Callout.d.ts +8 -0
- package/dist/composites/Callout.d.ts.map +1 -0
- package/dist/composites/Callout.js +5 -0
- package/dist/composites/Card.d.ts +31 -0
- package/dist/composites/Card.d.ts.map +1 -0
- package/dist/composites/Card.js +33 -0
- package/dist/composites/Chip.d.ts +13 -0
- package/dist/composites/Chip.d.ts.map +1 -0
- package/dist/composites/Chip.js +59 -0
- package/dist/composites/ChipGroup.d.ts +23 -0
- package/dist/composites/ChipGroup.d.ts.map +1 -0
- package/dist/composites/ChipGroup.js +27 -0
- package/dist/composites/CommandSearchField.d.ts +27 -0
- package/dist/composites/CommandSearchField.d.ts.map +1 -0
- package/dist/composites/CommandSearchField.js +17 -0
- package/dist/composites/CoverHero.d.ts +51 -0
- package/dist/composites/CoverHero.d.ts.map +1 -0
- package/dist/composites/CoverHero.js +71 -0
- package/dist/composites/CoverPattern.d.ts +12 -0
- package/dist/composites/CoverPattern.d.ts.map +1 -0
- package/dist/composites/CoverPattern.js +14 -0
- package/dist/composites/DataTableToolbar.d.ts +13 -0
- package/dist/composites/DataTableToolbar.d.ts.map +1 -0
- package/dist/composites/DataTableToolbar.js +7 -0
- package/dist/composites/DividerLabel.d.ts +5 -0
- package/dist/composites/DividerLabel.d.ts.map +1 -0
- package/dist/composites/DividerLabel.js +5 -0
- package/dist/composites/EmptyState.d.ts +16 -0
- package/dist/composites/EmptyState.d.ts.map +1 -0
- package/dist/composites/EmptyState.js +10 -0
- package/dist/composites/EntityCard.d.ts +31 -0
- package/dist/composites/EntityCard.d.ts.map +1 -0
- package/dist/composites/EntityCard.js +21 -0
- package/dist/composites/EntityMediaCard.d.ts +25 -0
- package/dist/composites/EntityMediaCard.d.ts.map +1 -0
- package/dist/composites/EntityMediaCard.js +17 -0
- package/dist/composites/FilterSheet.d.ts +34 -0
- package/dist/composites/FilterSheet.d.ts.map +1 -0
- package/dist/composites/FilterSheet.js +36 -0
- package/dist/composites/FloatingPageChrome.d.ts +90 -0
- package/dist/composites/FloatingPageChrome.d.ts.map +1 -0
- package/dist/composites/FloatingPageChrome.js +67 -0
- package/dist/composites/FormField.d.ts +15 -0
- package/dist/composites/FormField.d.ts.map +1 -0
- package/dist/composites/FormField.js +9 -0
- package/dist/composites/GlassCard.d.ts +13 -0
- package/dist/composites/GlassCard.d.ts.map +1 -0
- package/dist/composites/GlassCard.js +32 -0
- package/dist/composites/HeaderIconButton.d.ts +13 -0
- package/dist/composites/HeaderIconButton.d.ts.map +1 -0
- package/dist/composites/HeaderIconButton.js +12 -0
- package/dist/composites/ListRow.d.ts +9 -0
- package/dist/composites/ListRow.d.ts.map +1 -0
- package/dist/composites/ListRow.js +6 -0
- package/dist/composites/MediaEntryCard.d.ts +25 -0
- package/dist/composites/MediaEntryCard.d.ts.map +1 -0
- package/dist/composites/MediaEntryCard.js +10 -0
- package/dist/composites/MobileTabBar.d.ts +33 -0
- package/dist/composites/MobileTabBar.d.ts.map +1 -0
- package/dist/composites/MobileTabBar.js +19 -0
- package/dist/composites/NotificationBell.d.ts +28 -0
- package/dist/composites/NotificationBell.d.ts.map +1 -0
- package/dist/composites/NotificationBell.js +25 -0
- package/dist/composites/PageHeader.d.ts +11 -0
- package/dist/composites/PageHeader.d.ts.map +1 -0
- package/dist/composites/PageHeader.js +6 -0
- package/dist/composites/PageShell.d.ts +12 -0
- package/dist/composites/PageShell.d.ts.map +1 -0
- package/dist/composites/PageShell.js +8 -0
- package/dist/composites/PageStickyHeader.d.ts +33 -0
- package/dist/composites/PageStickyHeader.d.ts.map +1 -0
- package/dist/composites/PageStickyHeader.js +19 -0
- package/dist/composites/Pagination.d.ts +7 -0
- package/dist/composites/Pagination.d.ts.map +1 -0
- package/dist/composites/Pagination.js +6 -0
- package/dist/composites/PhotoViewer.d.ts +18 -0
- package/dist/composites/PhotoViewer.d.ts.map +1 -0
- package/dist/composites/PhotoViewer.js +37 -0
- package/dist/composites/PinPad.d.ts +29 -0
- package/dist/composites/PinPad.d.ts.map +1 -0
- package/dist/composites/PinPad.js +58 -0
- package/dist/composites/ProfileHero.d.ts +34 -0
- package/dist/composites/ProfileHero.d.ts.map +1 -0
- package/dist/composites/ProfileHero.js +21 -0
- package/dist/composites/QuickFilterRail.d.ts +25 -0
- package/dist/composites/QuickFilterRail.d.ts.map +1 -0
- package/dist/composites/QuickFilterRail.js +18 -0
- package/dist/composites/QuickSettings.d.ts +27 -0
- package/dist/composites/QuickSettings.d.ts.map +1 -0
- package/dist/composites/QuickSettings.js +18 -0
- package/dist/composites/RichTextEditor.d.ts +13 -0
- package/dist/composites/RichTextEditor.d.ts.map +1 -0
- package/dist/composites/RichTextEditor.js +23 -0
- package/dist/composites/SearchField.d.ts +8 -0
- package/dist/composites/SearchField.d.ts.map +1 -0
- package/dist/composites/SearchField.js +8 -0
- package/dist/composites/SectionPanel.d.ts +16 -0
- package/dist/composites/SectionPanel.d.ts.map +1 -0
- package/dist/composites/SectionPanel.js +8 -0
- package/dist/composites/SegmentedControl.d.ts +17 -0
- package/dist/composites/SegmentedControl.d.ts.map +1 -0
- package/dist/composites/SegmentedControl.js +11 -0
- package/dist/composites/StatCard.d.ts +11 -0
- package/dist/composites/StatCard.d.ts.map +1 -0
- package/dist/composites/StatCard.js +6 -0
- package/dist/composites/StatusDot.d.ts +11 -0
- package/dist/composites/StatusDot.d.ts.map +1 -0
- package/dist/composites/StatusDot.js +23 -0
- package/dist/composites/SurfaceCard.d.ts +12 -0
- package/dist/composites/SurfaceCard.d.ts.map +1 -0
- package/dist/composites/SurfaceCard.js +24 -0
- package/dist/composites/Timeline.d.ts +19 -0
- package/dist/composites/Timeline.d.ts.map +1 -0
- package/dist/composites/Timeline.js +12 -0
- package/dist/composites/Toast.d.ts +26 -0
- package/dist/composites/Toast.d.ts.map +1 -0
- package/dist/composites/Toast.js +49 -0
- package/dist/composites/Toolbar.d.ts +6 -0
- package/dist/composites/Toolbar.d.ts.map +1 -0
- package/dist/composites/Toolbar.js +5 -0
- package/dist/composites/ViewFiltersPanel.d.ts +21 -0
- package/dist/composites/ViewFiltersPanel.d.ts.map +1 -0
- package/dist/composites/ViewFiltersPanel.js +11 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/lib/animations.d.ts +62 -0
- package/dist/lib/animations.d.ts.map +1 -0
- package/dist/lib/animations.js +37 -0
- package/dist/lib/avatar-utils.d.ts +10 -0
- package/dist/lib/avatar-utils.d.ts.map +1 -0
- package/dist/lib/avatar-utils.js +49 -0
- package/dist/lib/chips.d.ts +10 -0
- package/dist/lib/chips.d.ts.map +1 -0
- package/dist/lib/chips.js +30 -0
- package/dist/lib/cn.d.ts +4 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +6 -0
- package/dist/lib/compose-refs.d.ts +6 -0
- package/dist/lib/compose-refs.d.ts.map +1 -0
- package/dist/lib/compose-refs.js +17 -0
- package/dist/lib/cover-chrome.d.ts +9 -0
- package/dist/lib/cover-chrome.d.ts.map +1 -0
- package/dist/lib/cover-chrome.js +23 -0
- package/dist/lib/cover-pattern.d.ts +75 -0
- package/dist/lib/cover-pattern.d.ts.map +1 -0
- package/dist/lib/cover-pattern.js +135 -0
- package/dist/lib/overlay-stack.d.ts +23 -0
- package/dist/lib/overlay-stack.d.ts.map +1 -0
- package/dist/lib/overlay-stack.js +37 -0
- package/dist/lib/portal.d.ts +12 -0
- package/dist/lib/portal.d.ts.map +1 -0
- package/dist/lib/portal.js +12 -0
- package/dist/lib/slot.d.ts +12 -0
- package/dist/lib/slot.d.ts.map +1 -0
- package/dist/lib/slot.js +55 -0
- package/dist/lib/surfaces.d.ts +14 -0
- package/dist/lib/surfaces.d.ts.map +1 -0
- package/dist/lib/surfaces.js +18 -0
- package/dist/lib/themes.d.ts +16 -0
- package/dist/lib/themes.d.ts.map +1 -0
- package/dist/lib/themes.js +53 -0
- package/dist/lib/typography.d.ts +17 -0
- package/dist/lib/typography.d.ts.map +1 -0
- package/dist/lib/typography.js +16 -0
- package/dist/lib/use-controllable-state.d.ts +12 -0
- package/dist/lib/use-controllable-state.d.ts.map +1 -0
- package/dist/lib/use-controllable-state.js +20 -0
- package/dist/lib/use-cover-chrome-bleed.d.ts +9 -0
- package/dist/lib/use-cover-chrome-bleed.d.ts.map +1 -0
- package/dist/lib/use-cover-chrome-bleed.js +28 -0
- package/dist/lib/use-dismissable.d.ts +13 -0
- package/dist/lib/use-dismissable.d.ts.map +1 -0
- package/dist/lib/use-dismissable.js +33 -0
- package/dist/lib/use-floating-position.d.ts +27 -0
- package/dist/lib/use-floating-position.d.ts.map +1 -0
- package/dist/lib/use-floating-position.js +115 -0
- package/dist/lib/use-focus-trap.d.ts +7 -0
- package/dist/lib/use-focus-trap.d.ts.map +1 -0
- package/dist/lib/use-focus-trap.js +61 -0
- package/dist/lib/use-media-query.d.ts +5 -0
- package/dist/lib/use-media-query.d.ts.map +1 -0
- package/dist/lib/use-media-query.js +19 -0
- package/dist/primitives/Accordion.d.ts +24 -0
- package/dist/primitives/Accordion.d.ts.map +1 -0
- package/dist/primitives/Accordion.js +37 -0
- package/dist/primitives/Alert.d.ts +10 -0
- package/dist/primitives/Alert.d.ts.map +1 -0
- package/dist/primitives/Alert.js +25 -0
- package/dist/primitives/AlertDialog.d.ts +33 -0
- package/dist/primitives/AlertDialog.d.ts.map +1 -0
- package/dist/primitives/AlertDialog.js +96 -0
- package/dist/primitives/Avatar.d.ts +15 -0
- package/dist/primitives/Avatar.d.ts.map +1 -0
- package/dist/primitives/Avatar.js +52 -0
- package/dist/primitives/Badge.d.ts +12 -0
- package/dist/primitives/Badge.d.ts.map +1 -0
- package/dist/primitives/Badge.js +27 -0
- package/dist/primitives/Button.d.ts +14 -0
- package/dist/primitives/Button.d.ts.map +1 -0
- package/dist/primitives/Button.js +37 -0
- package/dist/primitives/Checkbox.d.ts +9 -0
- package/dist/primitives/Checkbox.d.ts.map +1 -0
- package/dist/primitives/Checkbox.js +22 -0
- package/dist/primitives/Command.d.ts +17 -0
- package/dist/primitives/Command.d.ts.map +1 -0
- package/dist/primitives/Command.js +33 -0
- package/dist/primitives/Dialog.d.ts +34 -0
- package/dist/primitives/Dialog.d.ts.map +1 -0
- package/dist/primitives/Dialog.js +96 -0
- package/dist/primitives/DropdownMenu.d.ts +65 -0
- package/dist/primitives/DropdownMenu.d.ts.map +1 -0
- package/dist/primitives/DropdownMenu.js +196 -0
- package/dist/primitives/Input.d.ts +4 -0
- package/dist/primitives/Input.d.ts.map +1 -0
- package/dist/primitives/Input.js +6 -0
- package/dist/primitives/Kbd.d.ts +4 -0
- package/dist/primitives/Kbd.d.ts.map +1 -0
- package/dist/primitives/Kbd.js +6 -0
- package/dist/primitives/Label.d.ts +4 -0
- package/dist/primitives/Label.d.ts.map +1 -0
- package/dist/primitives/Label.js +6 -0
- package/dist/primitives/NativeSelect.d.ts +7 -0
- package/dist/primitives/NativeSelect.d.ts.map +1 -0
- package/dist/primitives/NativeSelect.js +10 -0
- package/dist/primitives/Popover.d.ts +29 -0
- package/dist/primitives/Popover.d.ts.map +1 -0
- package/dist/primitives/Popover.js +95 -0
- package/dist/primitives/Progress.d.ts +8 -0
- package/dist/primitives/Progress.d.ts.map +1 -0
- package/dist/primitives/Progress.js +7 -0
- package/dist/primitives/RadioGroup.d.ts +13 -0
- package/dist/primitives/RadioGroup.d.ts.map +1 -0
- package/dist/primitives/RadioGroup.js +33 -0
- package/dist/primitives/Select.d.ts +33 -0
- package/dist/primitives/Select.d.ts.map +1 -0
- package/dist/primitives/Select.js +178 -0
- package/dist/primitives/Separator.d.ts +7 -0
- package/dist/primitives/Separator.d.ts.map +1 -0
- package/dist/primitives/Separator.js +6 -0
- package/dist/primitives/Sheet.d.ts +28 -0
- package/dist/primitives/Sheet.d.ts.map +1 -0
- package/dist/primitives/Sheet.js +96 -0
- package/dist/primitives/Skeleton.d.ts +4 -0
- package/dist/primitives/Skeleton.d.ts.map +1 -0
- package/dist/primitives/Skeleton.js +6 -0
- package/dist/primitives/Slider.d.ts +12 -0
- package/dist/primitives/Slider.d.ts.map +1 -0
- package/dist/primitives/Slider.js +23 -0
- package/dist/primitives/Spinner.d.ts +6 -0
- package/dist/primitives/Spinner.d.ts.map +1 -0
- package/dist/primitives/Spinner.js +7 -0
- package/dist/primitives/StarRating.d.ts +10 -0
- package/dist/primitives/StarRating.d.ts.map +1 -0
- package/dist/primitives/StarRating.js +11 -0
- package/dist/primitives/Switch.d.ts +8 -0
- package/dist/primitives/Switch.d.ts.map +1 -0
- package/dist/primitives/Switch.js +20 -0
- package/dist/primitives/Table.d.ts +13 -0
- package/dist/primitives/Table.d.ts.map +1 -0
- package/dist/primitives/Table.js +20 -0
- package/dist/primitives/Tabs.d.ts +17 -0
- package/dist/primitives/Tabs.d.ts.map +1 -0
- package/dist/primitives/Tabs.js +30 -0
- package/dist/primitives/Textarea.d.ts +4 -0
- package/dist/primitives/Textarea.d.ts.map +1 -0
- package/dist/primitives/Textarea.js +6 -0
- package/dist/primitives/Tooltip.d.ts +31 -0
- package/dist/primitives/Tooltip.d.ts.map +1 -0
- package/dist/primitives/Tooltip.js +94 -0
- package/dist/theme/OriginThemeProvider.d.ts +31 -0
- package/dist/theme/OriginThemeProvider.d.ts.map +1 -0
- package/dist/theme/OriginThemeProvider.js +37 -0
- package/dist/theme/SpatikaThemeProvider.d.ts +36 -0
- package/dist/theme/SpatikaThemeProvider.d.ts.map +1 -0
- package/dist/theme/SpatikaThemeProvider.js +38 -0
- package/package.json +58 -0
- package/src/composites/ActionBar.tsx +25 -0
- package/src/composites/AmountInput.tsx +40 -0
- package/src/composites/AppHeader.tsx +88 -0
- package/src/composites/AppSidebar.tsx +120 -0
- package/src/composites/BottomSheet.tsx +179 -0
- package/src/composites/Breadcrumb.tsx +42 -0
- package/src/composites/Callout.tsx +22 -0
- package/src/composites/Card.tsx +119 -0
- package/src/composites/Chip.tsx +87 -0
- package/src/composites/ChipGroup.component.test.tsx +31 -0
- package/src/composites/ChipGroup.test.ts +16 -0
- package/src/composites/ChipGroup.tsx +86 -0
- package/src/composites/CommandSearchField.tsx +124 -0
- package/src/composites/CoverHero.tsx +359 -0
- package/src/composites/CoverPattern.tsx +90 -0
- package/src/composites/DataTableToolbar.tsx +48 -0
- package/src/composites/DividerLabel.tsx +22 -0
- package/src/composites/EmptyState.tsx +55 -0
- package/src/composites/EntityCard.tsx +100 -0
- package/src/composites/EntityMediaCard.tsx +118 -0
- package/src/composites/FilterSheet.tsx +178 -0
- package/src/composites/FloatingPageChrome.tsx +294 -0
- package/src/composites/FormField.tsx +44 -0
- package/src/composites/GlassCard.tsx +47 -0
- package/src/composites/HeaderIconButton.tsx +49 -0
- package/src/composites/ListRow.tsx +29 -0
- package/src/composites/MediaEntryCard.tsx +95 -0
- package/src/composites/MobileTabBar.tsx +130 -0
- package/src/composites/NotificationBell.tsx +164 -0
- package/src/composites/PageHeader.tsx +27 -0
- package/src/composites/PageShell.tsx +20 -0
- package/src/composites/PageStickyHeader.tsx +157 -0
- package/src/composites/Pagination.tsx +41 -0
- package/src/composites/PhotoViewer.tsx +142 -0
- package/src/composites/PinPad.tsx +163 -0
- package/src/composites/ProfileHero.tsx +163 -0
- package/src/composites/QuickFilterRail.tsx +92 -0
- package/src/composites/QuickSettings.tsx +120 -0
- package/src/composites/RichTextEditor.tsx +103 -0
- package/src/composites/SearchField.tsx +38 -0
- package/src/composites/SectionPanel.tsx +59 -0
- package/src/composites/SegmentedControl.tsx +62 -0
- package/src/composites/StatCard.tsx +26 -0
- package/src/composites/StatusDot.tsx +40 -0
- package/src/composites/SurfaceCard.tsx +44 -0
- package/src/composites/Timeline.tsx +70 -0
- package/src/composites/Toast.tsx +135 -0
- package/src/composites/Toolbar.tsx +19 -0
- package/src/composites/ViewFiltersPanel.tsx +82 -0
- package/src/composites/chrome.test.tsx +170 -0
- package/src/composites/smoke.test.tsx +49 -0
- package/src/index.ts +355 -0
- package/src/lib/animations.ts +47 -0
- package/src/lib/avatar-utils.ts +52 -0
- package/src/lib/chips.ts +58 -0
- package/src/lib/cn.test.ts +16 -0
- package/src/lib/cn.ts +7 -0
- package/src/lib/compose-refs.ts +21 -0
- package/src/lib/cover-chrome.ts +31 -0
- package/src/lib/cover-pattern.ts +242 -0
- package/src/lib/overlay-stack.ts +44 -0
- package/src/lib/portal.tsx +21 -0
- package/src/lib/slot.tsx +69 -0
- package/src/lib/surfaces.ts +57 -0
- package/src/lib/themes.test.ts +73 -0
- package/src/lib/themes.ts +59 -0
- package/src/lib/tokens.test.ts +52 -0
- package/src/lib/typography.ts +27 -0
- package/src/lib/use-controllable-state.ts +38 -0
- package/src/lib/use-cover-chrome-bleed.ts +33 -0
- package/src/lib/use-dismissable.ts +49 -0
- package/src/lib/use-floating-position.ts +168 -0
- package/src/lib/use-focus-trap.ts +73 -0
- package/src/lib/use-media-query.ts +22 -0
- package/src/primitives/Accordion.tsx +114 -0
- package/src/primitives/Alert.tsx +57 -0
- package/src/primitives/AlertDialog.tsx +270 -0
- package/src/primitives/Avatar.tsx +140 -0
- package/src/primitives/Badge.test.tsx +15 -0
- package/src/primitives/Badge.tsx +43 -0
- package/src/primitives/Button.test.tsx +37 -0
- package/src/primitives/Button.tsx +58 -0
- package/src/primitives/Checkbox.tsx +75 -0
- package/src/primitives/Command.tsx +175 -0
- package/src/primitives/Dialog.tsx +241 -0
- package/src/primitives/DropdownMenu.tsx +552 -0
- package/src/primitives/Input.test.tsx +22 -0
- package/src/primitives/Input.tsx +22 -0
- package/src/primitives/Kbd.tsx +17 -0
- package/src/primitives/Label.tsx +20 -0
- package/src/primitives/NativeSelect.tsx +22 -0
- package/src/primitives/Popover.tsx +209 -0
- package/src/primitives/Progress.tsx +31 -0
- package/src/primitives/RadioGroup.tsx +116 -0
- package/src/primitives/Select.tsx +409 -0
- package/src/primitives/Separator.tsx +30 -0
- package/src/primitives/Sheet.tsx +265 -0
- package/src/primitives/Skeleton.tsx +16 -0
- package/src/primitives/Slider.tsx +97 -0
- package/src/primitives/Spinner.tsx +21 -0
- package/src/primitives/StarRating.tsx +53 -0
- package/src/primitives/Switch.tsx +68 -0
- package/src/primitives/Table.tsx +134 -0
- package/src/primitives/Tabs.tsx +97 -0
- package/src/primitives/Textarea.tsx +20 -0
- package/src/primitives/Tooltip.tsx +193 -0
- package/src/primitives/smoke.test.tsx +34 -0
- package/src/test/setup.ts +1 -0
- package/src/theme/SpatikaThemeProvider.test.tsx +82 -0
- package/src/theme/SpatikaThemeProvider.tsx +112 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useMemo, useState, } from "react";
|
|
3
|
+
import { X } from "lucide-react";
|
|
4
|
+
import { cn } from "../lib/cn";
|
|
5
|
+
const ToastContext = createContext(null);
|
|
6
|
+
let toastSeq = 0;
|
|
7
|
+
export function useToast() {
|
|
8
|
+
const ctx = useContext(ToastContext);
|
|
9
|
+
if (!ctx)
|
|
10
|
+
throw new Error("useToast must be used within <Toaster />");
|
|
11
|
+
return ctx;
|
|
12
|
+
}
|
|
13
|
+
const toneClass = {
|
|
14
|
+
default: "border-border/60",
|
|
15
|
+
success: "border-emerald-500/35 bg-emerald-500/8",
|
|
16
|
+
warn: "border-amber-500/35 bg-amber-500/8",
|
|
17
|
+
danger: "border-destructive/35 bg-destructive/8",
|
|
18
|
+
};
|
|
19
|
+
/** App-level toast host + provider. Wrap the app once and call useToast(). */
|
|
20
|
+
export function Toaster({ children, className, position = "bottom-right", }) {
|
|
21
|
+
const [toasts, setToasts] = useState([]);
|
|
22
|
+
const dismiss = useCallback((id) => {
|
|
23
|
+
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
24
|
+
}, []);
|
|
25
|
+
const toast = useCallback((item) => {
|
|
26
|
+
const id = item.id ?? `toast-${++toastSeq}`;
|
|
27
|
+
const next = {
|
|
28
|
+
id,
|
|
29
|
+
title: item.title,
|
|
30
|
+
description: item.description,
|
|
31
|
+
tone: item.tone ?? "default",
|
|
32
|
+
durationMs: item.durationMs ?? 4200,
|
|
33
|
+
};
|
|
34
|
+
setToasts((prev) => [...prev, next]);
|
|
35
|
+
if (next.durationMs && next.durationMs > 0) {
|
|
36
|
+
window.setTimeout(() => dismiss(id), next.durationMs);
|
|
37
|
+
}
|
|
38
|
+
return id;
|
|
39
|
+
}, [dismiss]);
|
|
40
|
+
const value = useMemo(() => ({ toasts, toast, dismiss }), [toasts, toast, dismiss]);
|
|
41
|
+
const positionClass = position === "top-right"
|
|
42
|
+
? "top-4 right-4"
|
|
43
|
+
: position === "top-center"
|
|
44
|
+
? "top-4 left-1/2 -translate-x-1/2"
|
|
45
|
+
: position === "bottom-center"
|
|
46
|
+
? "bottom-4 left-1/2 -translate-x-1/2"
|
|
47
|
+
: "bottom-4 right-4";
|
|
48
|
+
return (_jsxs(ToastContext.Provider, { value: value, children: [children, _jsx("div", { "data-slot": "toaster", className: cn("pointer-events-none fixed z-[200] flex w-[min(calc(100vw-1.5rem),22rem)] flex-col gap-2", positionClass, className), children: toasts.map((t) => (_jsx("div", { "data-slot": "toast", className: cn("pointer-events-auto rounded-2xl border bg-background p-3.5 shadow-[0_22px_50px_-24px_rgba(15,23,42,0.55)] dark:bg-card", toneClass[t.tone ?? "default"]), role: "status", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-sm font-bold text-foreground", children: t.title }), t.description ? (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: t.description })) : null] }), _jsx("button", { type: "button", "aria-label": "Dismiss", className: "rounded-lg p-1 text-muted-foreground transition-colors hover:bg-muted/40 hover:text-foreground", onClick: () => dismiss(t.id), children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }) }, t.id))) })] }));
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../src/composites/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BASA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn";
|
|
3
|
+
export function Toolbar({ children, className, }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "toolbar", className: cn("app-toolbar flex flex-wrap items-center gap-2 px-3 py-2", className), children: children }));
|
|
5
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type ViewFiltersPanelProps = {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
hasActive?: boolean;
|
|
8
|
+
onClear?: () => void;
|
|
9
|
+
trigger?: ReactNode;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
topSection?: ReactNode;
|
|
12
|
+
className?: string;
|
|
13
|
+
doneLabel?: string;
|
|
14
|
+
clearLabel?: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* View & filters panel — glass bottom sheet with clear / done chrome.
|
|
18
|
+
* Pass arbitrary filter fields as children for full customization.
|
|
19
|
+
*/
|
|
20
|
+
export declare function ViewFiltersPanel({ open, onOpenChange, title, description, hasActive, onClear, trigger, children, topSection, className, doneLabel, clearLabel, }: ViewFiltersPanelProps): import("react").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=ViewFiltersPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewFiltersPanel.d.ts","sourceRoot":"","sources":["../../src/composites/ViewFiltersPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,YAAY,EACZ,KAAwB,EACxB,WAAW,EACX,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAkB,EAClB,UAAoB,GACrB,EAAE,qBAAqB,+BA2CvB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { X } from "lucide-react";
|
|
3
|
+
import { Button } from "../primitives/Button";
|
|
4
|
+
import { BottomSheet } from "./BottomSheet";
|
|
5
|
+
/**
|
|
6
|
+
* View & filters panel — glass bottom sheet with clear / done chrome.
|
|
7
|
+
* Pass arbitrary filter fields as children for full customization.
|
|
8
|
+
*/
|
|
9
|
+
export function ViewFiltersPanel({ open, onOpenChange, title = "View & filters", description, hasActive, onClear, trigger, children, topSection, className, doneLabel = "Done", clearLabel = "Clear", }) {
|
|
10
|
+
return (_jsxs(_Fragment, { children: [trigger, _jsxs(BottomSheet, { open: open, onOpenChange: onOpenChange, className: className, children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border/40 px-4 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-base font-black tracking-tight", children: title }), description ? (_jsx("p", { className: "mt-0.5 text-xs font-medium text-muted-foreground", children: description })) : null] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [hasActive && onClear ? (_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: onClear, children: clearLabel })) : null, _jsx(Button, { type: "button", variant: "ghost", size: "icon", "aria-label": "Close", onClick: () => onOpenChange(false), children: _jsx(X, { className: "size-4" }) })] })] }), topSection, _jsx("div", { className: "max-h-[60vh] space-y-5 overflow-y-auto px-4 py-4", children: children }), _jsx("div", { className: "border-t border-border/40 p-4 pb-[calc(1rem+env(safe-area-inset-bottom))]", children: _jsx(Button, { type: "button", className: "h-9 w-full rounded-xl text-xs font-black uppercase tracking-widest", onClick: () => onOpenChange(false), children: doneLabel }) })] })] }));
|
|
11
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @spatika/react — Spatika React package
|
|
3
|
+
*
|
|
4
|
+
* Import tokens separately:
|
|
5
|
+
* import "@spatika/tokens/styles.css";
|
|
6
|
+
*/
|
|
7
|
+
export { cn } from "./lib/cn";
|
|
8
|
+
export { OVERLAY_Z_INDEX, fixedLayerStyle, createSelectEvent, } from "./lib/overlay-stack";
|
|
9
|
+
export { typographyEyebrow, typographyBandEyebrow, typographySectionLabel, typographyPageTitle, typographyPageSubtitle, typographyBodyDense, } from "./lib/typography";
|
|
10
|
+
export { surfaceRadiusCard, surfaceRadiusControl, surfaceRadiusPill, surfaceRadiusProfile, surfacePrimaryClass, surfaceSecondaryClass, surfaceDetailClass, surfaceTertiaryClass, } from "./lib/surfaces";
|
|
11
|
+
export { filterChipClass, preferenceChipClass, layoutToggleClass, listRowToggleClass, nativeSelectClass, } from "./lib/chips";
|
|
12
|
+
export { duration, transition, motionCardHover, motionCardHoverEmphasis, motionPress, pageEnter, cardEnter, } from "./lib/animations";
|
|
13
|
+
export { THEME_IDS, THEME_LABELS, DEFAULT_THEME, SPATIKA_THEME_STORAGE_KEY, applyTheme, isDarkTheme, isThemeId, type ThemeId, } from "./lib/themes";
|
|
14
|
+
export { getAvatarColor, getAvatarFallbackHue, getInitials } from "./lib/avatar-utils";
|
|
15
|
+
export { COVER_PATTERN_KINDS, getCoverPattern, getCoverPatternKind, getCoverPatternStyle, isCoverPatternKind, type CoverHeaderInk, type CoverPatternInput, type CoverPatternKind, type CoverScene, } from "./lib/cover-pattern";
|
|
16
|
+
export { coverFloatingIconClass, coverFloatingShellClass, coverMutedClass, coverPlateClass, coverTitleClass, } from "./lib/cover-chrome";
|
|
17
|
+
export { useCoverChromeBleed, type CoverChromeInk } from "./lib/use-cover-chrome-bleed";
|
|
18
|
+
export { useIsMobile, useMediaQuery } from "./lib/use-media-query";
|
|
19
|
+
export { SpatikaThemeProvider, useSpatikaTheme, type SpatikaThemeContextValue, type SpatikaThemeProviderProps, } from "./theme/SpatikaThemeProvider";
|
|
20
|
+
export { Button, buttonVariants } from "./primitives/Button";
|
|
21
|
+
export { Badge, badgeVariants } from "./primitives/Badge";
|
|
22
|
+
export { Input } from "./primitives/Input";
|
|
23
|
+
export { Textarea } from "./primitives/Textarea";
|
|
24
|
+
export { Label } from "./primitives/Label";
|
|
25
|
+
export { Separator } from "./primitives/Separator";
|
|
26
|
+
export { Skeleton } from "./primitives/Skeleton";
|
|
27
|
+
export { Checkbox } from "./primitives/Checkbox";
|
|
28
|
+
export { Switch } from "./primitives/Switch";
|
|
29
|
+
export { RadioGroup, RadioGroupItem } from "./primitives/RadioGroup";
|
|
30
|
+
export { Progress } from "./primitives/Progress";
|
|
31
|
+
export { Slider } from "./primitives/Slider";
|
|
32
|
+
export { Avatar, AvatarImage, AvatarFallback, InitialsAvatar } from "./primitives/Avatar";
|
|
33
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from "./primitives/Select";
|
|
34
|
+
export { NativeSelect } from "./primitives/NativeSelect";
|
|
35
|
+
export { Spinner } from "./primitives/Spinner";
|
|
36
|
+
export { Alert, AlertTitle, AlertDescription, alertVariants } from "./primitives/Alert";
|
|
37
|
+
export { Kbd } from "./primitives/Kbd";
|
|
38
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./primitives/Tabs";
|
|
39
|
+
export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption } from "./primitives/Table";
|
|
40
|
+
export { Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, } from "./primitives/Dialog";
|
|
41
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from "./primitives/AlertDialog";
|
|
42
|
+
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, } from "./primitives/Sheet";
|
|
43
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from "./primitives/Popover";
|
|
44
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from "./primitives/DropdownMenu";
|
|
45
|
+
export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, } from "./primitives/Command";
|
|
46
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from "./primitives/Tooltip";
|
|
47
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from "./primitives/Accordion";
|
|
48
|
+
export { StarRating } from "./primitives/StarRating";
|
|
49
|
+
export { GlassCard, glassCardVariants, type GlassCardProps } from "./composites/GlassCard";
|
|
50
|
+
export { SurfaceCard, surfaceCardVariants, type SurfaceCardProps } from "./composites/SurfaceCard";
|
|
51
|
+
export { PageStickyHeader, PageHeaderBadge, type PageStickyHeaderProps } from "./composites/PageStickyHeader";
|
|
52
|
+
export { PageShell, type PageShellProps } from "./composites/PageShell";
|
|
53
|
+
export { SectionPanel, type SectionPanelProps } from "./composites/SectionPanel";
|
|
54
|
+
export { Chip, chipVariants, type ChipProps } from "./composites/Chip";
|
|
55
|
+
export { ChipGroup, isOptionSelected, toggleOptionValue, type ChipGroupProps, type ChipOption, } from "./composites/ChipGroup";
|
|
56
|
+
export { EmptyState, type EmptyStateProps } from "./composites/EmptyState";
|
|
57
|
+
export { FormField, type FormFieldProps } from "./composites/FormField";
|
|
58
|
+
export { PageHeader, type PageHeaderProps } from "./composites/PageHeader";
|
|
59
|
+
export { StatCard, type StatCardProps } from "./composites/StatCard";
|
|
60
|
+
export { SearchField, type SearchFieldProps } from "./composites/SearchField";
|
|
61
|
+
export { Toolbar } from "./composites/Toolbar";
|
|
62
|
+
export { StatusDot, statusDotVariants } from "./composites/StatusDot";
|
|
63
|
+
export { ListRow } from "./composites/ListRow";
|
|
64
|
+
export { Breadcrumb, type BreadcrumbItem } from "./composites/Breadcrumb";
|
|
65
|
+
export { Pagination } from "./composites/Pagination";
|
|
66
|
+
export { Callout } from "./composites/Callout";
|
|
67
|
+
export { ActionBar } from "./composites/ActionBar";
|
|
68
|
+
export { DividerLabel } from "./composites/DividerLabel";
|
|
69
|
+
export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, type CardProps, } from "./composites/Card";
|
|
70
|
+
export { AppHeader, type AppHeaderProps } from "./composites/AppHeader";
|
|
71
|
+
export { ChromeAttachedCaret, FloatingPageChromeBar, FloatingPageChromeIdentity, FloatingPageChromeSearchField, FloatingPageChromeShell, FLOATING_PAGE_CHROME_HEIGHT_CLASS, FLOATING_PAGE_CHROME_POPOVER_OFFSET, appChromeActionClusterClass, appChromeClusterButtonClass, floatingPageChromeAttachedPopoverClass, floatingPageChromeClusterClass, floatingPageChromeIconPillClass, floatingPageChromeIdentityClass, floatingPageChromePillClass, floatingPageChromePrimaryClass, floatingPageChromeSearchInputClass, floatingPageChromeSearchWrapClass, floatingPageChromeShellClass, floatingPageChromeTrayClass, type FloatingPageChromeBarProps, type FloatingPageChromeIdentityProps, type FloatingPageChromeSearchFieldProps, } from "./composites/FloatingPageChrome";
|
|
72
|
+
export { CoverPattern, ProfileCoverPattern, type CoverPatternProps } from "./composites/CoverPattern";
|
|
73
|
+
export { CoverHero, type CoverHeroAvatar, type CoverHeroFact, type CoverHeroProps, } from "./composites/CoverHero";
|
|
74
|
+
export { AppSidebar, type AppSidebarProps, type SidebarNavItem, type SidebarNavSection, } from "./composites/AppSidebar";
|
|
75
|
+
export { QuickSettings, QuickSettingsGroup, QuickSettingsRow, type QuickSettingsProps, } from "./composites/QuickSettings";
|
|
76
|
+
export { PhotoViewer, type PhotoViewerProps, type PhotoViewerItem, } from "./composites/PhotoViewer";
|
|
77
|
+
export { RichTextEditor, type RichTextEditorProps } from "./composites/RichTextEditor";
|
|
78
|
+
export { HeaderIconButton, type HeaderIconButtonProps } from "./composites/HeaderIconButton";
|
|
79
|
+
export { QuickFilterRail, type QuickFilterRailProps, type QuickFilterGroup, type QuickFilterItem, } from "./composites/QuickFilterRail";
|
|
80
|
+
export { BottomSheet, Drawer, DrawerTrigger, DrawerClose, DrawerPortal, DrawerOverlay, DrawerContent, DrawerHeader, DrawerFooter, DrawerTitle, DrawerDescription, type BottomSheetProps, } from "./composites/BottomSheet";
|
|
81
|
+
export { ViewFiltersPanel, type ViewFiltersPanelProps } from "./composites/ViewFiltersPanel";
|
|
82
|
+
export { FilterSheet, type FilterSheetProps } from "./composites/FilterSheet";
|
|
83
|
+
export { NotificationBell, type NotificationBellProps, type NotificationItem, } from "./composites/NotificationBell";
|
|
84
|
+
export { CommandSearchField, type CommandSearchFieldProps, type CommandSearchResult, } from "./composites/CommandSearchField";
|
|
85
|
+
export { PinPad, LockOverlay, type PinPadProps, type LockOverlayProps, } from "./composites/PinPad";
|
|
86
|
+
export { MediaEntryCard, type MediaEntryCardProps } from "./composites/MediaEntryCard";
|
|
87
|
+
export { EntityMediaCard, type EntityMediaCardProps } from "./composites/EntityMediaCard";
|
|
88
|
+
export { EntityCard, EntityCardTitle, EntityCardMeta, EntityCardChip, type EntityCardProps, type EntityCardTitleProps, type EntityCardMetaProps, } from "./composites/EntityCard";
|
|
89
|
+
export { MobileTabBar, APP_TABBAR_CLEARANCE_CLASS, type MobileTabBarProps, type MobileTabItem, } from "./composites/MobileTabBar";
|
|
90
|
+
export { ProfileHero, type ProfileHeroProps } from "./composites/ProfileHero";
|
|
91
|
+
export { AmountInput, type AmountInputProps } from "./composites/AmountInput";
|
|
92
|
+
export { SegmentedControl, type SegmentedControlProps, type SegmentedControlOption, } from "./composites/SegmentedControl";
|
|
93
|
+
export { Toaster, useToast, type ToasterProps, type ToastItem, type ToastTone, } from "./composites/Toast";
|
|
94
|
+
export { Timeline, TimelineItem, type TimelineProps, type TimelineItemProps, } from "./composites/Timeline";
|
|
95
|
+
export { DataTableToolbar, type DataTableToolbarProps, } from "./composites/DataTableToolbar";
|
|
96
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @spatika/react — Spatika React package
|
|
3
|
+
*
|
|
4
|
+
* Import tokens separately:
|
|
5
|
+
* import "@spatika/tokens/styles.css";
|
|
6
|
+
*/
|
|
7
|
+
export { cn } from "./lib/cn";
|
|
8
|
+
export { OVERLAY_Z_INDEX, fixedLayerStyle, createSelectEvent, } from "./lib/overlay-stack";
|
|
9
|
+
export { typographyEyebrow, typographyBandEyebrow, typographySectionLabel, typographyPageTitle, typographyPageSubtitle, typographyBodyDense, } from "./lib/typography";
|
|
10
|
+
export { surfaceRadiusCard, surfaceRadiusControl, surfaceRadiusPill, surfaceRadiusProfile, surfacePrimaryClass, surfaceSecondaryClass, surfaceDetailClass, surfaceTertiaryClass, } from "./lib/surfaces";
|
|
11
|
+
export { filterChipClass, preferenceChipClass, layoutToggleClass, listRowToggleClass, nativeSelectClass, } from "./lib/chips";
|
|
12
|
+
export { duration, transition, motionCardHover, motionCardHoverEmphasis, motionPress, pageEnter, cardEnter, } from "./lib/animations";
|
|
13
|
+
export { THEME_IDS, THEME_LABELS, DEFAULT_THEME, SPATIKA_THEME_STORAGE_KEY, applyTheme, isDarkTheme, isThemeId, } from "./lib/themes";
|
|
14
|
+
export { getAvatarColor, getAvatarFallbackHue, getInitials } from "./lib/avatar-utils";
|
|
15
|
+
export { COVER_PATTERN_KINDS, getCoverPattern, getCoverPatternKind, getCoverPatternStyle, isCoverPatternKind, } from "./lib/cover-pattern";
|
|
16
|
+
export { coverFloatingIconClass, coverFloatingShellClass, coverMutedClass, coverPlateClass, coverTitleClass, } from "./lib/cover-chrome";
|
|
17
|
+
export { useCoverChromeBleed } from "./lib/use-cover-chrome-bleed";
|
|
18
|
+
export { useIsMobile, useMediaQuery } from "./lib/use-media-query";
|
|
19
|
+
export { SpatikaThemeProvider, useSpatikaTheme, } from "./theme/SpatikaThemeProvider";
|
|
20
|
+
export { Button, buttonVariants } from "./primitives/Button";
|
|
21
|
+
export { Badge, badgeVariants } from "./primitives/Badge";
|
|
22
|
+
export { Input } from "./primitives/Input";
|
|
23
|
+
export { Textarea } from "./primitives/Textarea";
|
|
24
|
+
export { Label } from "./primitives/Label";
|
|
25
|
+
export { Separator } from "./primitives/Separator";
|
|
26
|
+
export { Skeleton } from "./primitives/Skeleton";
|
|
27
|
+
export { Checkbox } from "./primitives/Checkbox";
|
|
28
|
+
export { Switch } from "./primitives/Switch";
|
|
29
|
+
export { RadioGroup, RadioGroupItem } from "./primitives/RadioGroup";
|
|
30
|
+
export { Progress } from "./primitives/Progress";
|
|
31
|
+
export { Slider } from "./primitives/Slider";
|
|
32
|
+
export { Avatar, AvatarImage, AvatarFallback, InitialsAvatar } from "./primitives/Avatar";
|
|
33
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, } from "./primitives/Select";
|
|
34
|
+
export { NativeSelect } from "./primitives/NativeSelect";
|
|
35
|
+
export { Spinner } from "./primitives/Spinner";
|
|
36
|
+
export { Alert, AlertTitle, AlertDescription, alertVariants } from "./primitives/Alert";
|
|
37
|
+
export { Kbd } from "./primitives/Kbd";
|
|
38
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent } from "./primitives/Tabs";
|
|
39
|
+
export { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption } from "./primitives/Table";
|
|
40
|
+
export { Dialog, DialogTrigger, DialogPortal, DialogClose, DialogOverlay, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, } from "./primitives/Dialog";
|
|
41
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, } from "./primitives/AlertDialog";
|
|
42
|
+
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, } from "./primitives/Sheet";
|
|
43
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from "./primitives/Popover";
|
|
44
|
+
export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from "./primitives/DropdownMenu";
|
|
45
|
+
export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, } from "./primitives/Command";
|
|
46
|
+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from "./primitives/Tooltip";
|
|
47
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent, } from "./primitives/Accordion";
|
|
48
|
+
export { StarRating } from "./primitives/StarRating";
|
|
49
|
+
export { GlassCard, glassCardVariants } from "./composites/GlassCard";
|
|
50
|
+
export { SurfaceCard, surfaceCardVariants } from "./composites/SurfaceCard";
|
|
51
|
+
export { PageStickyHeader, PageHeaderBadge } from "./composites/PageStickyHeader";
|
|
52
|
+
export { PageShell } from "./composites/PageShell";
|
|
53
|
+
export { SectionPanel } from "./composites/SectionPanel";
|
|
54
|
+
export { Chip, chipVariants } from "./composites/Chip";
|
|
55
|
+
export { ChipGroup, isOptionSelected, toggleOptionValue, } from "./composites/ChipGroup";
|
|
56
|
+
export { EmptyState } from "./composites/EmptyState";
|
|
57
|
+
export { FormField } from "./composites/FormField";
|
|
58
|
+
export { PageHeader } from "./composites/PageHeader";
|
|
59
|
+
export { StatCard } from "./composites/StatCard";
|
|
60
|
+
export { SearchField } from "./composites/SearchField";
|
|
61
|
+
export { Toolbar } from "./composites/Toolbar";
|
|
62
|
+
export { StatusDot, statusDotVariants } from "./composites/StatusDot";
|
|
63
|
+
export { ListRow } from "./composites/ListRow";
|
|
64
|
+
export { Breadcrumb } from "./composites/Breadcrumb";
|
|
65
|
+
export { Pagination } from "./composites/Pagination";
|
|
66
|
+
export { Callout } from "./composites/Callout";
|
|
67
|
+
export { ActionBar } from "./composites/ActionBar";
|
|
68
|
+
export { DividerLabel } from "./composites/DividerLabel";
|
|
69
|
+
export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from "./composites/Card";
|
|
70
|
+
export { AppHeader } from "./composites/AppHeader";
|
|
71
|
+
export { ChromeAttachedCaret, FloatingPageChromeBar, FloatingPageChromeIdentity, FloatingPageChromeSearchField, FloatingPageChromeShell, FLOATING_PAGE_CHROME_HEIGHT_CLASS, FLOATING_PAGE_CHROME_POPOVER_OFFSET, appChromeActionClusterClass, appChromeClusterButtonClass, floatingPageChromeAttachedPopoverClass, floatingPageChromeClusterClass, floatingPageChromeIconPillClass, floatingPageChromeIdentityClass, floatingPageChromePillClass, floatingPageChromePrimaryClass, floatingPageChromeSearchInputClass, floatingPageChromeSearchWrapClass, floatingPageChromeShellClass, floatingPageChromeTrayClass, } from "./composites/FloatingPageChrome";
|
|
72
|
+
export { CoverPattern, ProfileCoverPattern } from "./composites/CoverPattern";
|
|
73
|
+
export { CoverHero, } from "./composites/CoverHero";
|
|
74
|
+
export { AppSidebar, } from "./composites/AppSidebar";
|
|
75
|
+
export { QuickSettings, QuickSettingsGroup, QuickSettingsRow, } from "./composites/QuickSettings";
|
|
76
|
+
export { PhotoViewer, } from "./composites/PhotoViewer";
|
|
77
|
+
export { RichTextEditor } from "./composites/RichTextEditor";
|
|
78
|
+
export { HeaderIconButton } from "./composites/HeaderIconButton";
|
|
79
|
+
export { QuickFilterRail, } from "./composites/QuickFilterRail";
|
|
80
|
+
export { BottomSheet, Drawer, DrawerTrigger, DrawerClose, DrawerPortal, DrawerOverlay, DrawerContent, DrawerHeader, DrawerFooter, DrawerTitle, DrawerDescription, } from "./composites/BottomSheet";
|
|
81
|
+
export { ViewFiltersPanel } from "./composites/ViewFiltersPanel";
|
|
82
|
+
export { FilterSheet } from "./composites/FilterSheet";
|
|
83
|
+
export { NotificationBell, } from "./composites/NotificationBell";
|
|
84
|
+
export { CommandSearchField, } from "./composites/CommandSearchField";
|
|
85
|
+
export { PinPad, LockOverlay, } from "./composites/PinPad";
|
|
86
|
+
export { MediaEntryCard } from "./composites/MediaEntryCard";
|
|
87
|
+
export { EntityMediaCard } from "./composites/EntityMediaCard";
|
|
88
|
+
export { EntityCard, EntityCardTitle, EntityCardMeta, EntityCardChip, } from "./composites/EntityCard";
|
|
89
|
+
export { MobileTabBar, APP_TABBAR_CLEARANCE_CLASS, } from "./composites/MobileTabBar";
|
|
90
|
+
export { ProfileHero } from "./composites/ProfileHero";
|
|
91
|
+
export { AmountInput } from "./composites/AmountInput";
|
|
92
|
+
export { SegmentedControl, } from "./composites/SegmentedControl";
|
|
93
|
+
export { Toaster, useToast, } from "./composites/Toast";
|
|
94
|
+
export { Timeline, TimelineItem, } from "./composites/Timeline";
|
|
95
|
+
export { DataTableToolbar, } from "./composites/DataTableToolbar";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation language for Spatika.
|
|
3
|
+
*
|
|
4
|
+
* Micro — hover/focus/active (CSS only, ≤150ms)
|
|
5
|
+
* Meso — element entrances (200–300ms)
|
|
6
|
+
* Macro — page transitions / overlays (300–400ms)
|
|
7
|
+
*
|
|
8
|
+
* Never use transition-all on glass / backdrop-blur surfaces.
|
|
9
|
+
*/
|
|
10
|
+
export declare const duration: {
|
|
11
|
+
readonly instant: 0.15;
|
|
12
|
+
readonly fast: 0.2;
|
|
13
|
+
readonly normal: 0.3;
|
|
14
|
+
readonly slow: 0.4;
|
|
15
|
+
};
|
|
16
|
+
export declare const transition: {
|
|
17
|
+
readonly fast: {
|
|
18
|
+
readonly duration: 0.2;
|
|
19
|
+
readonly ease: [number, number, number, number];
|
|
20
|
+
};
|
|
21
|
+
readonly normal: {
|
|
22
|
+
readonly duration: 0.3;
|
|
23
|
+
readonly ease: [number, number, number, number];
|
|
24
|
+
};
|
|
25
|
+
readonly slow: {
|
|
26
|
+
readonly duration: 0.4;
|
|
27
|
+
readonly ease: [number, number, number, number];
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
/** Standard card hover — transform + shadow only. */
|
|
31
|
+
export declare const motionCardHover = "transition-[transform,box-shadow,border-color] duration-200 ease-out hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/20";
|
|
32
|
+
/** Emphasized card hover for hero / ranked cards. */
|
|
33
|
+
export declare const motionCardHoverEmphasis = "transition-[transform,box-shadow,border-color] duration-200 ease-out hover:-translate-y-1 hover:shadow-xl hover:border-primary/30";
|
|
34
|
+
/** Interactive press feedback. */
|
|
35
|
+
export declare const motionPress = "active:scale-[0.98]";
|
|
36
|
+
export declare const pageEnter: {
|
|
37
|
+
initial: {
|
|
38
|
+
opacity: number;
|
|
39
|
+
};
|
|
40
|
+
animate: {
|
|
41
|
+
opacity: number;
|
|
42
|
+
};
|
|
43
|
+
transition: {
|
|
44
|
+
readonly duration: 0.3;
|
|
45
|
+
readonly ease: [number, number, number, number];
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export declare const cardEnter: {
|
|
49
|
+
initial: {
|
|
50
|
+
opacity: number;
|
|
51
|
+
y: number;
|
|
52
|
+
};
|
|
53
|
+
animate: {
|
|
54
|
+
opacity: number;
|
|
55
|
+
y: number;
|
|
56
|
+
};
|
|
57
|
+
transition: {
|
|
58
|
+
readonly duration: 0.3;
|
|
59
|
+
readonly ease: [number, number, number, number];
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=animations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../src/lib/animations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAIb,CAAC;AAEX,qDAAqD;AACrD,eAAO,MAAM,eAAe,wIAC2G,CAAC;AAExI,qDAAqD;AACrD,eAAO,MAAM,uBAAuB,sIACiG,CAAC;AAEtI,kCAAkC;AAClC,eAAO,MAAM,WAAW,wBAAwB,CAAC;AAEjD,eAAO,MAAM,SAAS;;;;;;;;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAIrB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animation language for Spatika.
|
|
3
|
+
*
|
|
4
|
+
* Micro — hover/focus/active (CSS only, ≤150ms)
|
|
5
|
+
* Meso — element entrances (200–300ms)
|
|
6
|
+
* Macro — page transitions / overlays (300–400ms)
|
|
7
|
+
*
|
|
8
|
+
* Never use transition-all on glass / backdrop-blur surfaces.
|
|
9
|
+
*/
|
|
10
|
+
const easeOut = [0, 0, 0.2, 1];
|
|
11
|
+
export const duration = {
|
|
12
|
+
instant: 0.15,
|
|
13
|
+
fast: 0.2,
|
|
14
|
+
normal: 0.3,
|
|
15
|
+
slow: 0.4,
|
|
16
|
+
};
|
|
17
|
+
export const transition = {
|
|
18
|
+
fast: { duration: duration.fast, ease: easeOut },
|
|
19
|
+
normal: { duration: duration.normal, ease: easeOut },
|
|
20
|
+
slow: { duration: duration.slow, ease: easeOut },
|
|
21
|
+
};
|
|
22
|
+
/** Standard card hover — transform + shadow only. */
|
|
23
|
+
export const motionCardHover = "transition-[transform,box-shadow,border-color] duration-200 ease-out hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/20";
|
|
24
|
+
/** Emphasized card hover for hero / ranked cards. */
|
|
25
|
+
export const motionCardHoverEmphasis = "transition-[transform,box-shadow,border-color] duration-200 ease-out hover:-translate-y-1 hover:shadow-xl hover:border-primary/30";
|
|
26
|
+
/** Interactive press feedback. */
|
|
27
|
+
export const motionPress = "active:scale-[0.98]";
|
|
28
|
+
export const pageEnter = {
|
|
29
|
+
initial: { opacity: 0 },
|
|
30
|
+
animate: { opacity: 1 },
|
|
31
|
+
transition: transition.normal,
|
|
32
|
+
};
|
|
33
|
+
export const cardEnter = {
|
|
34
|
+
initial: { opacity: 0, y: 8 },
|
|
35
|
+
animate: { opacity: 1, y: 0 },
|
|
36
|
+
transition: transition.normal,
|
|
37
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable avatar color class derived from a name hash.
|
|
3
|
+
* Used by InitialsAvatar for consistent tinting across renders.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getAvatarColor(name: string): string;
|
|
6
|
+
/** Stable 0–359 hue from a display name — used to tint generated covers. */
|
|
7
|
+
export declare function getAvatarFallbackHue(name: string): number;
|
|
8
|
+
/** First two initials from a display name (uppercase). */
|
|
9
|
+
export declare function getInitials(name: string): string;
|
|
10
|
+
//# sourceMappingURL=avatar-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-utils.d.ts","sourceRoot":"","sources":["../../src/lib/avatar-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BnD;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable avatar color class derived from a name hash.
|
|
3
|
+
* Used by InitialsAvatar for consistent tinting across renders.
|
|
4
|
+
*/
|
|
5
|
+
export function getAvatarColor(name) {
|
|
6
|
+
const colors = [
|
|
7
|
+
"bg-rose-500",
|
|
8
|
+
"bg-pink-500",
|
|
9
|
+
"bg-fuchsia-500",
|
|
10
|
+
"bg-purple-500",
|
|
11
|
+
"bg-violet-500",
|
|
12
|
+
"bg-indigo-500",
|
|
13
|
+
"bg-blue-500",
|
|
14
|
+
"bg-sky-500",
|
|
15
|
+
"bg-cyan-500",
|
|
16
|
+
"bg-teal-500",
|
|
17
|
+
"bg-emerald-500",
|
|
18
|
+
"bg-green-500",
|
|
19
|
+
"bg-orange-500",
|
|
20
|
+
"bg-amber-500",
|
|
21
|
+
];
|
|
22
|
+
let hash = 0;
|
|
23
|
+
const safeName = name || "User";
|
|
24
|
+
for (let i = 0; i < safeName.length; i++) {
|
|
25
|
+
hash = safeName.charCodeAt(i) + ((hash << 5) - hash);
|
|
26
|
+
}
|
|
27
|
+
const index = Math.abs(hash) % colors.length;
|
|
28
|
+
return colors[index];
|
|
29
|
+
}
|
|
30
|
+
/** Stable 0–359 hue from a display name — used to tint generated covers. */
|
|
31
|
+
export function getAvatarFallbackHue(name) {
|
|
32
|
+
let hash = 0;
|
|
33
|
+
const safeName = name || "User";
|
|
34
|
+
for (let i = 0; i < safeName.length; i++) {
|
|
35
|
+
hash = safeName.charCodeAt(i) + ((hash << 5) - hash);
|
|
36
|
+
}
|
|
37
|
+
return Math.abs(hash) % 360;
|
|
38
|
+
}
|
|
39
|
+
/** First two initials from a display name (uppercase). */
|
|
40
|
+
export function getInitials(name) {
|
|
41
|
+
if (!name)
|
|
42
|
+
return "";
|
|
43
|
+
return name
|
|
44
|
+
.split(" ")
|
|
45
|
+
.map((n) => n[0])
|
|
46
|
+
.join("")
|
|
47
|
+
.substring(0, 2)
|
|
48
|
+
.toUpperCase();
|
|
49
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Soft filter pill (directory / history filters). */
|
|
2
|
+
export declare function filterChipClass(active: boolean, className?: string): string;
|
|
3
|
+
/** Uppercase preference toggle chip (admin / settings). */
|
|
4
|
+
export declare function preferenceChipClass(active: boolean, className?: string): string;
|
|
5
|
+
/** Layout mode toggle (grid / list / kanban). */
|
|
6
|
+
export declare function layoutToggleClass(active: boolean, className?: string): string;
|
|
7
|
+
/** Full-width selectable list row. */
|
|
8
|
+
export declare function listRowToggleClass(active: boolean, className?: string): string;
|
|
9
|
+
export declare const nativeSelectClass: string;
|
|
10
|
+
//# sourceMappingURL=chips.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chips.d.ts","sourceRoot":"","sources":["../../src/lib/chips.ts"],"names":[],"mappings":"AAQA,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAQlE;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAQtE;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAQpE;AAED,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,UAQrE;AAED,eAAO,MAAM,iBAAiB,QAK7B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chip / toggle class recipes shared by filters and preference groups.
|
|
3
|
+
*/
|
|
4
|
+
import { cn } from "./cn";
|
|
5
|
+
const filterChipBase = "inline-flex min-h-7 max-w-full items-center justify-center rounded-full border px-2 py-0.5 text-left text-[10px] font-bold leading-snug shadow-sm transition-colors active:scale-[0.98] sm:min-h-8 sm:px-2.5 sm:py-1 sm:text-xs";
|
|
6
|
+
/** Soft filter pill (directory / history filters). */
|
|
7
|
+
export function filterChipClass(active, className) {
|
|
8
|
+
return cn(filterChipBase, active
|
|
9
|
+
? "border-primary/50 bg-primary/15 text-primary"
|
|
10
|
+
: "border-border/60 bg-background/80 text-foreground hover:bg-muted/40", className);
|
|
11
|
+
}
|
|
12
|
+
/** Uppercase preference toggle chip (admin / settings). */
|
|
13
|
+
export function preferenceChipClass(active, className) {
|
|
14
|
+
return cn("touch-manipulation rounded-xl border px-3 py-2 text-[10px] font-black uppercase tracking-widest shadow-sm transition-all active:scale-95", active
|
|
15
|
+
? "scale-[1.02] border-primary bg-primary text-primary-foreground shadow-primary/20"
|
|
16
|
+
: "border-border/50 bg-background/40 text-muted-foreground hover:border-primary/30 hover:text-primary", className);
|
|
17
|
+
}
|
|
18
|
+
/** Layout mode toggle (grid / list / kanban). */
|
|
19
|
+
export function layoutToggleClass(active, className) {
|
|
20
|
+
return cn("flex min-h-11 items-center justify-center gap-2 rounded-xl border px-3 text-sm font-bold shadow-sm transition-colors active:scale-[0.98]", active
|
|
21
|
+
? "border-primary/50 bg-primary/15 text-primary"
|
|
22
|
+
: "border-border/60 bg-background/80 text-foreground hover:bg-muted/40", className);
|
|
23
|
+
}
|
|
24
|
+
/** Full-width selectable list row. */
|
|
25
|
+
export function listRowToggleClass(active, className) {
|
|
26
|
+
return cn("flex min-h-11 w-full items-center justify-between gap-3 rounded-xl border px-3 py-2.5 text-left text-sm font-semibold shadow-sm transition-colors active:scale-[0.99]", active
|
|
27
|
+
? "border-primary/50 bg-primary/15 text-primary"
|
|
28
|
+
: "border-border/60 bg-background/80 text-foreground hover:bg-muted/40", className);
|
|
29
|
+
}
|
|
30
|
+
export const nativeSelectClass = cn("mt-1 w-full min-h-11 px-3 rounded-xl border border-border/60 bg-background/80 text-sm font-semibold shadow-sm", "text-foreground transition-colors", "focus:outline-none focus:border-primary/40 focus:ring-2 focus:ring-primary/20", "disabled:cursor-not-allowed disabled:opacity-50");
|
package/dist/lib/cn.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/lib/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,oDAAoD;AACpD,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
package/dist/lib/cn.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
type PossibleRef<T> = React.Ref<T> | undefined;
|
|
3
|
+
/** Merges multiple refs into a single callback ref. */
|
|
4
|
+
export declare function composeRefs<T>(...refs: PossibleRef<T>[]): (node: T) => void;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=compose-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-refs.d.ts","sourceRoot":"","sources":["../../src/lib/compose-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAW/C,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAC9C,MAAM,CAAC,UAKhB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Assigns a value to a React ref (callback or object ref). */
|
|
2
|
+
function setRef(ref, value) {
|
|
3
|
+
if (typeof ref === "function") {
|
|
4
|
+
ref(value);
|
|
5
|
+
}
|
|
6
|
+
else if (ref != null) {
|
|
7
|
+
ref.current = value;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** Merges multiple refs into a single callback ref. */
|
|
11
|
+
export function composeRefs(...refs) {
|
|
12
|
+
return (node) => {
|
|
13
|
+
for (const ref of refs) {
|
|
14
|
+
setRef(ref, node);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CoverHeaderInk } from "./cover-pattern";
|
|
2
|
+
/** Floating glass pill sitting on a generated / photo cover. */
|
|
3
|
+
export declare function coverFloatingShellClass(_ink: CoverHeaderInk, className?: string): string;
|
|
4
|
+
export declare function coverFloatingIconClass(ink: CoverHeaderInk): string;
|
|
5
|
+
export declare function coverPlateClass(ink: CoverHeaderInk): string;
|
|
6
|
+
export declare function coverTitleClass(ink: CoverHeaderInk): string;
|
|
7
|
+
export declare function coverMutedClass(ink: CoverHeaderInk): string;
|
|
8
|
+
export type { CoverHeaderInk };
|
|
9
|
+
//# sourceMappingURL=cover-chrome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cover-chrome.d.ts","sourceRoot":"","sources":["../../src/lib/cover-chrome.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,gEAAgE;AAChE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAIlE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAI3D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAI3D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAE3D;AAED,YAAY,EAAE,cAAc,EAAE,CAAC"}
|