@devalok/shilp-sutra 0.56.0 → 0.59.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/MIGRATION.md +198 -0
- package/dist/_chunks/badge-group.js +75 -174
- package/dist/_chunks/badge-group.js.map +1 -1
- package/dist/_chunks/chat.js +270 -253
- package/dist/_chunks/chat.js.map +1 -1
- package/dist/_chunks/document-preview.js +1 -1
- package/dist/_chunks/document-preview.js.map +1 -1
- package/dist/_chunks/emoji-suggestion.js +1 -1
- package/dist/_chunks/emoji-suggestion.js.map +1 -1
- package/dist/_chunks/image-preview.js +71 -70
- package/dist/_chunks/image-preview.js.map +1 -1
- package/dist/_chunks/mention-suggestion.js +2 -2
- package/dist/_chunks/mention-suggestion.js.map +1 -1
- package/dist/_chunks/motion-preference.js +15 -0
- package/dist/_chunks/motion-preference.js.map +1 -0
- package/dist/_chunks/motion-provider.js +1 -1
- package/dist/_chunks/motion-provider.js.map +1 -1
- package/dist/_chunks/oauth-button.js +1 -1
- package/dist/_chunks/oauth-button.js.map +1 -1
- package/dist/_chunks/popover.js +50 -49
- package/dist/_chunks/popover.js.map +1 -1
- package/dist/_chunks/primitives-internal.js +29 -29
- package/dist/_chunks/primitives-internal.js.map +1 -1
- package/dist/_chunks/shared.js +48 -47
- package/dist/_chunks/shared.js.map +1 -1
- package/dist/_chunks/success.js +36 -36
- package/dist/_chunks/success.js.map +1 -1
- package/dist/_chunks/tree-view.js +1 -1
- package/dist/_chunks/tree-view.js.map +1 -1
- package/dist/_chunks/use-calendar.js +4 -4
- package/dist/_chunks/use-calendar.js.map +1 -1
- package/dist/ai/block-renderer.js +8 -8
- package/dist/ai/blocks/text.js +1 -1
- package/dist/ai/blocks/text.js.map +1 -1
- package/dist/ai/command-bar.js +67 -67
- package/dist/ai/command-bar.js.map +1 -1
- package/dist/ai/conversation.js +35 -35
- package/dist/ai/conversation.js.map +1 -1
- package/dist/ai/index.js +4 -4
- package/dist/composed/activity-feed.d.ts.map +1 -1
- package/dist/composed/activity-feed.js +109 -108
- package/dist/composed/activity-feed.js.map +1 -1
- package/dist/composed/avatar-group.d.ts +7 -2
- package/dist/composed/avatar-group.d.ts.map +1 -1
- package/dist/composed/avatar-group.js +3 -3
- package/dist/composed/avatar-group.js.map +1 -1
- package/dist/composed/command-palette.js +137 -137
- package/dist/composed/command-palette.js.map +1 -1
- package/dist/composed/content-card.js +2 -2
- package/dist/composed/content-card.js.map +1 -1
- package/dist/composed/date-picker/index.js +9 -9
- package/dist/composed/date-picker/index.js.map +1 -1
- package/dist/composed/diff.d.ts +23 -2
- package/dist/composed/diff.d.ts.map +1 -1
- package/dist/composed/diff.js +341 -260
- package/dist/composed/diff.js.map +1 -1
- package/dist/composed/emoji-picker.js +3 -3
- package/dist/composed/emoji-picker.js.map +1 -1
- package/dist/composed/empty-state.js +4 -4
- package/dist/composed/error-boundary.js +2 -2
- package/dist/composed/error-boundary.js.map +1 -1
- package/dist/composed/file-preview/image-preview.d.ts.map +1 -1
- package/dist/composed/file-preview/shared.d.ts.map +1 -1
- package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
- package/dist/composed/file-preview.js +152 -151
- package/dist/composed/file-preview.js.map +1 -1
- package/dist/composed/filter-bar.d.ts.map +1 -1
- package/dist/composed/filter-bar.js +53 -52
- package/dist/composed/filter-bar.js.map +1 -1
- package/dist/composed/form-section.d.ts.map +1 -1
- package/dist/composed/form-section.js +38 -37
- package/dist/composed/form-section.js.map +1 -1
- package/dist/composed/inline-edit.js +1 -1
- package/dist/composed/inline-edit.js.map +1 -1
- package/dist/composed/loading-skeleton.js +3 -3
- package/dist/composed/loading-skeleton.js.map +1 -1
- package/dist/composed/master-detail.d.ts.map +1 -1
- package/dist/composed/master-detail.js +1 -1
- package/dist/composed/master-detail.js.map +1 -1
- package/dist/composed/member-picker.js +1 -1
- package/dist/composed/member-picker.js.map +1 -1
- package/dist/composed/multi-select-popover.d.ts.map +1 -1
- package/dist/composed/multi-select-popover.js +109 -108
- package/dist/composed/multi-select-popover.js.map +1 -1
- package/dist/composed/page-skeletons.js +4 -4
- package/dist/composed/page-skeletons.js.map +1 -1
- package/dist/composed/responsive-modal.js +1 -1
- package/dist/composed/responsive-modal.js.map +1 -1
- package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
- package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
- package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
- package/dist/composed/rich-chat-input.d.ts.map +1 -1
- package/dist/composed/rich-chat-input.js +473 -472
- package/dist/composed/rich-chat-input.js.map +1 -1
- package/dist/composed/rich-text-editor.js +6 -6
- package/dist/composed/rich-text-editor.js.map +1 -1
- package/dist/composed/schedule-view.js +5 -5
- package/dist/composed/schedule-view.js.map +1 -1
- package/dist/composed/status-badge.d.ts.map +1 -1
- package/dist/composed/status-badge.js +29 -28
- package/dist/composed/status-badge.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -3
- package/dist/hooks/use-container-size.d.ts +18 -0
- package/dist/hooks/use-container-size.d.ts.map +1 -0
- package/dist/hooks/use-container-size.js +28 -0
- package/dist/hooks/use-container-size.js.map +1 -0
- package/dist/motion/index.d.ts +1 -0
- package/dist/motion/index.d.ts.map +1 -1
- package/dist/motion/index.js +2 -15
- package/dist/motion/motion-preference.d.ts +36 -0
- package/dist/motion/motion-preference.d.ts.map +1 -0
- package/dist/motion/motion-provider.d.ts +2 -1
- package/dist/motion/motion-provider.d.ts.map +1 -1
- package/dist/motion/primitives-index.js +103 -102
- package/dist/motion/primitives-index.js.map +1 -1
- package/dist/motion/primitives.d.ts.map +1 -1
- package/dist/shell/app-shell.d.ts +101 -0
- package/dist/shell/app-shell.d.ts.map +1 -0
- package/dist/shell/app-shell.js +76 -0
- package/dist/shell/app-shell.js.map +1 -0
- package/dist/shell/bottom-navbar.js +21 -21
- package/dist/shell/bottom-navbar.js.map +1 -1
- package/dist/shell/index.d.ts +2 -1
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +6 -5
- package/dist/shell/notification-center.d.ts +17 -0
- package/dist/shell/notification-center.d.ts.map +1 -1
- package/dist/shell/notification-center.js +110 -105
- package/dist/shell/notification-center.js.map +1 -1
- package/dist/shell/notification-preferences.js +1 -1
- package/dist/shell/notification-preferences.js.map +1 -1
- package/dist/shell/top-bar.js +7 -7
- package/dist/shell/top-bar.js.map +1 -1
- package/dist/tokens/generate-scale.d.ts +49 -0
- package/dist/tokens/generate-scale.d.ts.map +1 -1
- package/dist/tokens/index.css +1 -0
- package/dist/tokens/palettes.css +292 -0
- package/dist/tokens/primitives.css +29 -26
- package/dist/tokens/semantic.css +170 -47
- package/dist/tokens/shilp-sutra.css +1 -0
- package/dist/tokens/utilities.css +10 -7
- package/dist/tokens/variants.css +1 -1
- package/dist/ui/accordion.d.ts.map +1 -1
- package/dist/ui/accordion.js +27 -26
- package/dist/ui/accordion.js.map +1 -1
- package/dist/ui/alert-dialog.d.ts.map +1 -1
- package/dist/ui/alert-dialog.js +60 -59
- package/dist/ui/alert-dialog.js.map +1 -1
- package/dist/ui/alert.d.ts.map +1 -1
- package/dist/ui/alert.js +55 -113
- package/dist/ui/alert.js.map +1 -1
- package/dist/ui/autocomplete.js +80 -80
- package/dist/ui/autocomplete.js.map +1 -1
- package/dist/ui/avatar.d.ts.map +1 -1
- package/dist/ui/avatar.js +71 -70
- package/dist/ui/avatar.js.map +1 -1
- package/dist/ui/badge-indicator.d.ts +4 -8
- package/dist/ui/badge-indicator.d.ts.map +1 -1
- package/dist/ui/badge-indicator.js +3 -8
- package/dist/ui/badge-indicator.js.map +1 -1
- package/dist/ui/badge.d.ts +55 -34
- package/dist/ui/badge.d.ts.map +1 -1
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +43 -41
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/button-group.d.ts.map +1 -1
- package/dist/ui/button-group.js +3 -23
- package/dist/ui/button-group.js.map +1 -1
- package/dist/ui/button.d.ts +10 -1
- package/dist/ui/button.d.ts.map +1 -1
- package/dist/ui/button.js +79 -212
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/card.d.ts.map +1 -1
- package/dist/ui/card.js +78 -75
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/charts/radar-chart.d.ts.map +1 -1
- package/dist/ui/charts/radar-chart.js +1 -1
- package/dist/ui/charts/radar-chart.js.map +1 -1
- package/dist/ui/chat/date-separator.d.ts +8 -1
- package/dist/ui/chat/date-separator.d.ts.map +1 -1
- package/dist/ui/chat/message-list.d.ts.map +1 -1
- package/dist/ui/chat/message.d.ts.map +1 -1
- package/dist/ui/chat/typing-indicator.d.ts.map +1 -1
- package/dist/ui/checkbox.js +1 -1
- package/dist/ui/checkbox.js.map +1 -1
- package/dist/ui/code.js +2 -2
- package/dist/ui/code.js.map +1 -1
- package/dist/ui/color-input.d.ts.map +1 -1
- package/dist/ui/color-input.js +151 -150
- package/dist/ui/color-input.js.map +1 -1
- package/dist/ui/combobox.d.ts +14 -0
- package/dist/ui/combobox.d.ts.map +1 -1
- package/dist/ui/combobox.js +156 -152
- package/dist/ui/combobox.js.map +1 -1
- package/dist/ui/context-menu.d.ts.map +1 -1
- package/dist/ui/context-menu.js +70 -69
- package/dist/ui/context-menu.js.map +1 -1
- package/dist/ui/data-table-body.d.ts +3 -1
- package/dist/ui/data-table-body.d.ts.map +1 -1
- package/dist/ui/data-table-body.js +93 -92
- package/dist/ui/data-table-body.js.map +1 -1
- package/dist/ui/data-table-bulk-actions.d.ts +7 -1
- package/dist/ui/data-table-bulk-actions.d.ts.map +1 -1
- package/dist/ui/data-table-bulk-actions.js +14 -8
- package/dist/ui/data-table-bulk-actions.js.map +1 -1
- package/dist/ui/data-table-card.d.ts.map +1 -1
- package/dist/ui/data-table-card.js +66 -47
- package/dist/ui/data-table-card.js.map +1 -1
- package/dist/ui/data-table-context.d.ts +4 -0
- package/dist/ui/data-table-context.d.ts.map +1 -1
- package/dist/ui/data-table-context.js +2 -2
- package/dist/ui/data-table-context.js.map +1 -1
- package/dist/ui/data-table-header.d.ts.map +1 -1
- package/dist/ui/data-table-header.js +50 -46
- package/dist/ui/data-table-header.js.map +1 -1
- package/dist/ui/data-table-pagination.js +3 -3
- package/dist/ui/data-table-pagination.js.map +1 -1
- package/dist/ui/data-table-toolbar.d.ts +11 -1
- package/dist/ui/data-table-toolbar.d.ts.map +1 -1
- package/dist/ui/data-table-toolbar.js +7 -7
- package/dist/ui/data-table-toolbar.js.map +1 -1
- package/dist/ui/data-table.d.ts +52 -5
- package/dist/ui/data-table.d.ts.map +1 -1
- package/dist/ui/data-table.js +181 -169
- package/dist/ui/data-table.js.map +1 -1
- package/dist/ui/dialog.d.ts.map +1 -1
- package/dist/ui/dialog.js +62 -61
- package/dist/ui/dialog.js.map +1 -1
- package/dist/ui/dot.d.ts.map +1 -1
- package/dist/ui/dot.js +10 -41
- package/dist/ui/dot.js.map +1 -1
- package/dist/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/ui/dropdown-menu.js +79 -78
- package/dist/ui/dropdown-menu.js.map +1 -1
- package/dist/ui/file-upload.d.ts.map +1 -1
- package/dist/ui/file-upload.js +117 -116
- package/dist/ui/file-upload.js.map +1 -1
- package/dist/ui/form.d.ts.map +1 -1
- package/dist/ui/form.js +27 -26
- package/dist/ui/form.js.map +1 -1
- package/dist/ui/hover-card.d.ts.map +1 -1
- package/dist/ui/hover-card.js +26 -25
- package/dist/ui/hover-card.js.map +1 -1
- package/dist/ui/icon.js +7 -7
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +3 -3
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/input-otp.js +1 -1
- package/dist/ui/input-otp.js.map +1 -1
- package/dist/ui/input.js +8 -8
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/menubar.d.ts.map +1 -1
- package/dist/ui/menubar.js +73 -72
- package/dist/ui/menubar.js.map +1 -1
- package/dist/ui/navigation-menu.d.ts.map +1 -1
- package/dist/ui/navigation-menu.js +80 -79
- package/dist/ui/navigation-menu.js.map +1 -1
- package/dist/ui/number-input.js +3 -3
- package/dist/ui/number-input.js.map +1 -1
- package/dist/ui/pagination.js +1 -1
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/popover.d.ts.map +1 -1
- package/dist/ui/progress-ring.js +2 -2
- package/dist/ui/progress-ring.js.map +1 -1
- package/dist/ui/progress.d.ts.map +1 -1
- package/dist/ui/progress.js +82 -74
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/radio.d.ts.map +1 -1
- package/dist/ui/radio.js +32 -31
- package/dist/ui/radio.js.map +1 -1
- package/dist/ui/search-input.d.ts.map +1 -1
- package/dist/ui/search-input.js +28 -27
- package/dist/ui/search-input.js.map +1 -1
- package/dist/ui/select.d.ts.map +1 -1
- package/dist/ui/select.js +67 -66
- package/dist/ui/select.js.map +1 -1
- package/dist/ui/sheet.js +1 -1
- package/dist/ui/sheet.js.map +1 -1
- package/dist/ui/sidebar.d.ts.map +1 -1
- package/dist/ui/sidebar.js +14 -14
- package/dist/ui/sidebar.js.map +1 -1
- package/dist/ui/slider.d.ts +63 -9
- package/dist/ui/slider.d.ts.map +1 -1
- package/dist/ui/slider.js +75 -33
- package/dist/ui/slider.js.map +1 -1
- package/dist/ui/split-button.d.ts +8 -2
- package/dist/ui/split-button.d.ts.map +1 -1
- package/dist/ui/split-button.js +49 -95
- package/dist/ui/split-button.js.map +1 -1
- package/dist/ui/stat-card.d.ts.map +1 -1
- package/dist/ui/stat-card.js +89 -88
- package/dist/ui/stat-card.js.map +1 -1
- package/dist/ui/stat-flash.js +16 -16
- package/dist/ui/stepper.d.ts.map +1 -1
- package/dist/ui/stepper.js +63 -62
- package/dist/ui/stepper.js.map +1 -1
- package/dist/ui/surface.d.ts.map +1 -1
- package/dist/ui/surface.js +2 -2
- package/dist/ui/surface.js.map +1 -1
- package/dist/ui/switch.js +1 -1
- package/dist/ui/switch.js.map +1 -1
- package/dist/ui/table.js +3 -3
- package/dist/ui/table.js.map +1 -1
- package/dist/ui/tabs.d.ts.map +1 -1
- package/dist/ui/tabs.js +68 -67
- package/dist/ui/tabs.js.map +1 -1
- package/dist/ui/textarea.js +5 -5
- package/dist/ui/textarea.js.map +1 -1
- package/dist/ui/toast.d.ts.map +1 -1
- package/dist/ui/toast.js +196 -195
- package/dist/ui/toast.js.map +1 -1
- package/dist/ui/toggle.d.ts.map +1 -1
- package/dist/ui/toggle.js +26 -24
- package/dist/ui/toggle.js.map +1 -1
- package/dist/ui/tooltip.d.ts.map +1 -1
- package/dist/ui/tooltip.js +37 -36
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tree-view/tree-item.d.ts.map +1 -1
- package/docs/components/composed/avatar-group.md +4 -4
- package/docs/components/composed/diff.md +10 -2
- package/docs/components/composed/schedule-view.md +1 -1
- package/docs/components/shell/app-shell.md +132 -0
- package/docs/components/ui/avatar.md +1 -1
- package/docs/components/ui/button.md +1 -1
- package/docs/components/ui/chat.md +7 -1
- package/docs/components/ui/color-swatch.md +1 -1
- package/docs/components/ui/data-table-toolbar.md +6 -2
- package/docs/components/ui/data-table.md +41 -7
- package/docs/components/ui/dot.md +1 -1
- package/docs/components/ui/progress.md +1 -0
- package/docs/components/ui/surface.md +3 -3
- package/docs/components/ui/table.md +2 -2
- package/docs/recipes/customize-brand.md +58 -0
- package/docs/recipes/install-astro.md +1 -0
- package/docs/recipes/install-next-app-router.md +1 -0
- package/docs/recipes/install-next-pages.md +22 -1
- package/docs/recipes/install-remix.md +1 -0
- package/docs/recipes/install-tanstack-start.md +1 -0
- package/docs/recipes/install-vite.md +2 -0
- package/docs/recipes/server-components.md +7 -4
- package/docs/recipes/troubleshoot.md +1 -0
- package/llms.txt +2 -1
- package/make-kit/Guidelines.md +2 -2
- package/make-kit/components/button.md +1 -1
- package/make-kit/components/card.md +6 -6
- package/make-kit/components/surface.md +4 -4
- package/make-kit/foundations/color.md +4 -4
- package/make-kit/foundations/dark-mode.md +1 -1
- package/make-kit/foundations/radius.md +1 -1
- package/make-kit/foundations/surfaces.md +9 -9
- package/mcp-manifest.json +358 -35
- package/package.json +8 -4
- package/skill/SKILL.md +12 -6
- package/skill/references/components.md +2 -1
- package/skill/references/customize-brand.md +58 -0
- package/skill/references/server-components.md +7 -4
- package/skill/references/setup-astro.md +1 -0
- package/skill/references/setup-next-app-router.md +1 -0
- package/skill/references/setup-next-pages.md +22 -1
- package/skill/references/setup-remix.md +1 -0
- package/skill/references/setup-tanstack-start.md +1 -0
- package/skill/references/setup-vite.md +2 -0
- package/skill/references/troubleshoot.md +1 -0
- package/dist/motion/check-motion-provider.d.ts +0 -2
- package/dist/motion/check-motion-provider.d.ts.map +0 -1
- package/dist/motion/index.js.map +0 -1
- package/dist/primitives/react-toast.d.ts +0 -120
- package/dist/ui/charts/_internal/scales.d.ts +0 -5
- package/dist/ui/charts/_internal/scales.d.ts.map +0 -1
- package/dist/ui/lib/slot.d.ts +0 -8
- package/dist/ui/lib/slot.d.ts.map +0 -1
package/dist/tokens/semantic.css
CHANGED
|
@@ -163,17 +163,26 @@
|
|
|
163
163
|
--color-surface-3: var(--neutral-3);
|
|
164
164
|
--color-surface-4: var(--neutral-4);
|
|
165
165
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
--color-surface-
|
|
170
|
-
--color-surface-
|
|
171
|
-
--color-surface-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
166
|
+
/* GROUNDS take the brand tint; OBJECTS hold neutral. In light the page, the
|
|
167
|
+
panel and an overlay are all pure white — an edge is what makes a card a
|
|
168
|
+
card. See docs/plans/2026-08-26-surface-model-rebuild.md */
|
|
169
|
+
--color-surface-base: var(--neutral-0);
|
|
170
|
+
--color-surface-panel: var(--neutral-0);
|
|
171
|
+
--color-surface-overlay: var(--neutral-0);
|
|
172
|
+
--color-surface-panel-hover: var(--neutral-2);
|
|
173
|
+
--color-surface-panel-active: var(--neutral-3);
|
|
174
|
+
--color-surface-sunken: var(--neutral-sunken);
|
|
175
|
+
--color-surface-sunken-hover: var(--neutral-3);
|
|
176
|
+
|
|
177
|
+
/* DEPRECATED, removed next major. `surface-raised` is renamed `surface-panel`
|
|
178
|
+
because in light it is not raised — it is the same white as the page.
|
|
179
|
+
Aliased so nothing breaks mid-migration; `pnpm lint --fix` rewrites them.
|
|
180
|
+
NOTE hover/focus utilities must retarget to `-panel-hover`, NOT rename: a
|
|
181
|
+
hover painted with a container value is invisible. That is what made every
|
|
182
|
+
menu item's hover a no-op in light before this rebuild. */
|
|
183
|
+
--color-surface-raised: var(--color-surface-panel);
|
|
184
|
+
--color-surface-raised-hover: var(--color-surface-panel-hover);
|
|
185
|
+
--color-surface-raised-active: var(--color-surface-panel-active);
|
|
177
186
|
--color-surface-inverted: var(--neutral-12);
|
|
178
187
|
--color-surface-inverted-fg: var(--neutral-1);
|
|
179
188
|
--color-surface-disabled: var(--neutral-2);
|
|
@@ -181,11 +190,17 @@
|
|
|
181
190
|
--color-surface-fg: var(--neutral-12);
|
|
182
191
|
--color-surface-fg-muted: var(--neutral-11);
|
|
183
192
|
--color-surface-fg-subtle: var(--neutral-9); /* 4.664:1 on surface-base — WCAG AA (verify, don't assume: see neutral-9) */
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
--color-surface-border-subtle:
|
|
187
|
-
|
|
188
|
-
--color-surface-border-
|
|
193
|
+
/* OBJECT edges — translucent, so an edge darkens whatever it lands on and can
|
|
194
|
+
never coincide with it. `surface-border` on white computes to #e8e8e8. */
|
|
195
|
+
--color-surface-border-subtle: oklch(0 0 0 / 0.05);
|
|
196
|
+
--color-surface-border: oklch(0 0 0 / 0.09);
|
|
197
|
+
--color-surface-border-strong: oklch(0 0 0 / 0.14);
|
|
198
|
+
--color-surface-border-card: var(--color-surface-border);
|
|
199
|
+
|
|
200
|
+
/* CONTROL edges — solid, so their contrast is measurable. WCAG 1.4.11 applies
|
|
201
|
+
to these and NOT to the decorative tiers above. */
|
|
202
|
+
--color-surface-border-interactive: var(--neutral-6);
|
|
203
|
+
--color-surface-border-interactive-strong: var(--neutral-7);
|
|
189
204
|
--color-backdrop: oklch(0 0 0 / 0.4);
|
|
190
205
|
|
|
191
206
|
/* Segmented control — translucent recess + raised thumb. Alpha, NOT a fixed
|
|
@@ -264,37 +279,58 @@
|
|
|
264
279
|
/* ───────────────────────────────────────────────────────────
|
|
265
280
|
CATEGORY COLORS (Sapta Varna — step subsets)
|
|
266
281
|
─────────────────────────────────────────────────────────── */
|
|
282
|
+
/* Foreground for solid category fills. Category step 9 LIGHTENS in dark mode,
|
|
283
|
+
the opposite of the intent ramps, so a fixed white fails AA there. neutral-1
|
|
284
|
+
inverts with the theme: near-white in light, near-black in dark.
|
|
285
|
+
Measured: light 4.59-4.97 on all seven, dark 5.55-6.24. Badge labels are 10px,
|
|
286
|
+
so AA body (4.5) is the bar, not large text. */
|
|
287
|
+
--color-category-fg: var(--neutral-0);
|
|
288
|
+
|
|
289
|
+
--color-category-teal-2: var(--teal-2);
|
|
267
290
|
--color-category-teal-3: var(--teal-3);
|
|
291
|
+
--color-category-teal-4: var(--teal-4);
|
|
268
292
|
--color-category-teal-7: var(--teal-7);
|
|
269
293
|
--color-category-teal-9: var(--teal-9);
|
|
270
294
|
--color-category-teal-11: var(--teal-11);
|
|
271
295
|
|
|
296
|
+
--color-category-amber-2: var(--amber-2);
|
|
272
297
|
--color-category-amber-3: var(--amber-3);
|
|
298
|
+
--color-category-amber-4: var(--amber-4);
|
|
273
299
|
--color-category-amber-7: var(--amber-7);
|
|
274
300
|
--color-category-amber-9: var(--amber-9);
|
|
275
301
|
--color-category-amber-11: var(--amber-11);
|
|
276
302
|
|
|
303
|
+
--color-category-slate-2: var(--slate-2);
|
|
277
304
|
--color-category-slate-3: var(--slate-3);
|
|
305
|
+
--color-category-slate-4: var(--slate-4);
|
|
278
306
|
--color-category-slate-7: var(--slate-7);
|
|
279
307
|
--color-category-slate-9: var(--slate-9);
|
|
280
308
|
--color-category-slate-11: var(--slate-11);
|
|
281
309
|
|
|
310
|
+
--color-category-indigo-2: var(--indigo-2);
|
|
282
311
|
--color-category-indigo-3: var(--indigo-3);
|
|
312
|
+
--color-category-indigo-4: var(--indigo-4);
|
|
283
313
|
--color-category-indigo-7: var(--indigo-7);
|
|
284
314
|
--color-category-indigo-9: var(--indigo-9);
|
|
285
315
|
--color-category-indigo-11: var(--indigo-11);
|
|
286
316
|
|
|
317
|
+
--color-category-cyan-2: var(--cyan-2);
|
|
287
318
|
--color-category-cyan-3: var(--cyan-3);
|
|
319
|
+
--color-category-cyan-4: var(--cyan-4);
|
|
288
320
|
--color-category-cyan-7: var(--cyan-7);
|
|
289
321
|
--color-category-cyan-9: var(--cyan-9);
|
|
290
322
|
--color-category-cyan-11: var(--cyan-11);
|
|
291
323
|
|
|
324
|
+
--color-category-orange-2: var(--orange-2);
|
|
292
325
|
--color-category-orange-3: var(--orange-3);
|
|
326
|
+
--color-category-orange-4: var(--orange-4);
|
|
293
327
|
--color-category-orange-7: var(--orange-7);
|
|
294
328
|
--color-category-orange-9: var(--orange-9);
|
|
295
329
|
--color-category-orange-11: var(--orange-11);
|
|
296
330
|
|
|
331
|
+
--color-category-emerald-2: var(--emerald-2);
|
|
297
332
|
--color-category-emerald-3: var(--emerald-3);
|
|
333
|
+
--color-category-emerald-4: var(--emerald-4);
|
|
298
334
|
--color-category-emerald-7: var(--emerald-7);
|
|
299
335
|
--color-category-emerald-9: var(--emerald-9);
|
|
300
336
|
--color-category-emerald-11: var(--emerald-11);
|
|
@@ -450,6 +486,10 @@
|
|
|
450
486
|
--shadow-warning: 0 2px 8px oklch(0.78 0.16 65 / 0.22), 0 6px 20px oklch(0.78 0.16 65 / 0.15);
|
|
451
487
|
|
|
452
488
|
/* Keyboard shortcut badge shadow */
|
|
489
|
+
/* A key cap's bottom bevel. Black works on a light cap; on a dark one it is
|
|
490
|
+
invisible (1.02:1), so the cap loses the only thing making it look pressable.
|
|
491
|
+
`.dark` flips it to a top highlight, which is how a raised surface catches
|
|
492
|
+
light from above in a dark UI. See the .dark block below. */
|
|
453
493
|
--shadow-kbd: inset 0 -1px 0 oklch(0 0 0 / 0.1);
|
|
454
494
|
|
|
455
495
|
/* ───────────────────────────────────────────────────────────
|
|
@@ -504,21 +544,31 @@
|
|
|
504
544
|
--shadow-strength: 1;
|
|
505
545
|
--shadow-transition: box-shadow var(--duration-fast-02) var(--ease-productive-standard);
|
|
506
546
|
|
|
547
|
+
/* Hairline edge ring — the shadow's own 1px border-substitute (make-kit rule #6:
|
|
548
|
+
shadow already carries the ring, so components never add an explicit border).
|
|
549
|
+
Light: cool tint. Dark: a light ring, since drop shadows barely read on dark.
|
|
550
|
+
|
|
551
|
+
Declared BEFORE the internals below because all four consume it. It used to
|
|
552
|
+
sit between sm and md, and only md/lg referenced it — xs and sm hardcoded
|
|
553
|
+
their own near-black ring and so never received the dark-mode correction.
|
|
554
|
+
That left `shadow-raised` / `-raised-hover` at 1.00–1.03:1 in dark, i.e. no
|
|
555
|
+
edge, for every component using them as its only boundary. */
|
|
556
|
+
--shadow-edge-ring: 0 0 0 1px oklch(var(--shadow-color) / calc(0.09 * var(--shadow-strength)));
|
|
557
|
+
/* xs/sm take the ring at a lighter weight than md/lg — a raised card should
|
|
558
|
+
not read as strongly as a floating overlay. `--shadow-edge-ring-subtle`
|
|
559
|
+
mirrors `--shadow-edge-ring` and is likewise dark-corrected below. */
|
|
560
|
+
--shadow-edge-ring-subtle: 0 0 0 1px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength)));
|
|
507
561
|
--shadow-xs-internal:
|
|
508
|
-
|
|
562
|
+
var(--shadow-edge-ring-subtle),
|
|
509
563
|
0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
|
|
510
564
|
0 1.5px 3px -1px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
|
|
511
565
|
0 3px 7px -2px oklch(var(--shadow-color) / calc(0.03 * var(--shadow-strength)));
|
|
512
566
|
--shadow-sm-internal:
|
|
513
|
-
|
|
567
|
+
var(--shadow-edge-ring-subtle),
|
|
514
568
|
0 0.5px 1px -0.5px oklch(var(--shadow-color) / calc(0.04 * var(--shadow-strength))),
|
|
515
569
|
0 2px 4px -1.5px oklch(var(--shadow-color) / calc(0.045 * var(--shadow-strength))),
|
|
516
570
|
0 6px 12px -3px oklch(var(--shadow-color) / calc(0.035 * var(--shadow-strength))),
|
|
517
571
|
0 14px 28px -8px oklch(var(--shadow-color) / calc(0.025 * var(--shadow-strength)));
|
|
518
|
-
/* Hairline edge ring — the shadow's own 1px border-substitute (make-kit rule #6:
|
|
519
|
-
shadow already carries the ring, so components never add an explicit border).
|
|
520
|
-
Light: cool tint. Dark: a light ring, since drop shadows barely read on dark. */
|
|
521
|
-
--shadow-edge-ring: 0 0 0 1px oklch(var(--shadow-color) / calc(0.09 * var(--shadow-strength)));
|
|
522
572
|
--shadow-md-internal:
|
|
523
573
|
var(--shadow-edge-ring),
|
|
524
574
|
0 1px 2px -1px oklch(var(--shadow-color) / calc(0.05 * var(--shadow-strength))),
|
|
@@ -592,6 +642,9 @@
|
|
|
592
642
|
--color-success-fg: var(--neutral-0);
|
|
593
643
|
--color-info-fg: var(--neutral-0);
|
|
594
644
|
|
|
645
|
+
/* Category fills lighten in dark, so their label goes near-black, not white */
|
|
646
|
+
--color-category-fg: var(--neutral-1);
|
|
647
|
+
|
|
595
648
|
/* Warning: amber-bright dark ramp */
|
|
596
649
|
--color-warning-2: var(--amber-bright-2);
|
|
597
650
|
--color-warning-3: var(--amber-bright-3);
|
|
@@ -603,22 +656,40 @@
|
|
|
603
656
|
--color-warning-11: var(--amber-bright-11);
|
|
604
657
|
--color-warning-fg: var(--neutral-0);
|
|
605
658
|
|
|
606
|
-
/* Surface — dark page, lighter cards
|
|
607
|
-
|
|
608
|
-
--color-surface-
|
|
609
|
-
--color-surface-
|
|
610
|
-
--color-surface-
|
|
611
|
-
--color-surface-
|
|
612
|
-
--color-surface-
|
|
613
|
-
--color-surface-
|
|
614
|
-
|
|
615
|
-
|
|
659
|
+
/* Surface — dark page, lighter cards. Unlike light, dark HAS room above the
|
|
660
|
+
page, so panel and overlay genuinely lift. */
|
|
661
|
+
--color-surface-base: var(--neutral-1); /* 0.147L */
|
|
662
|
+
--color-surface-panel: var(--neutral-2); /* 0.207L */
|
|
663
|
+
--color-surface-overlay: var(--neutral-2); /* same as panel + shadow */
|
|
664
|
+
--color-surface-panel-hover: var(--neutral-3);
|
|
665
|
+
--color-surface-panel-active: var(--neutral-4);
|
|
666
|
+
--color-surface-sunken: var(--neutral-sunken); /* coincides with the page */
|
|
667
|
+
--color-surface-sunken-hover: var(--neutral-2);
|
|
668
|
+
|
|
669
|
+
/* DEPRECATED — see the light block. */
|
|
670
|
+
--color-surface-raised: var(--color-surface-panel);
|
|
671
|
+
--color-surface-raised-hover: var(--color-surface-panel-hover);
|
|
672
|
+
--color-surface-raised-active: var(--color-surface-panel-active);
|
|
673
|
+
|
|
674
|
+
/* Object edges invert to translucent white. */
|
|
675
|
+
--color-surface-border-subtle: oklch(1 0 0 / 0.06);
|
|
676
|
+
--color-surface-border: oklch(1 0 0 / 0.10);
|
|
677
|
+
--color-surface-border-strong: oklch(1 0 0 / 0.16);
|
|
678
|
+
--color-surface-border-card: var(--color-surface-border);
|
|
679
|
+
|
|
680
|
+
--color-surface-border-interactive: var(--neutral-6);
|
|
681
|
+
--color-surface-border-interactive-strong: var(--neutral-7);
|
|
616
682
|
--color-backdrop: oklch(0 0 0 / 0.6);
|
|
617
683
|
|
|
618
684
|
/* Segmented control — inverted elevation in dark: track is a faint LIGHTER
|
|
619
|
-
fill (can't go darker than a near-black page), thumb steps lighter still.
|
|
685
|
+
fill (can't go darker than a near-black page), thumb steps lighter still.
|
|
686
|
+
The model is right; the value was one step short. neutral-3 (#262626) is
|
|
687
|
+
DARKER than the track composited over a panel (#282828), so the selected
|
|
688
|
+
segment read as a dent — 1.028:1, inverted. neutral-5 clears the track on
|
|
689
|
+
both grounds a segmented control actually sits on: 1.46:1 over a panel,
|
|
690
|
+
1.69:1 over the page. */
|
|
620
691
|
--color-segment-track: color-mix(in oklch, oklch(1 0 0) 7%, transparent);
|
|
621
|
-
--color-segment-thumb: var(--neutral-
|
|
692
|
+
--color-segment-thumb: var(--neutral-5);
|
|
622
693
|
|
|
623
694
|
/* Overlay */
|
|
624
695
|
--color-overlay: oklch(0 0 0 / 0.70);
|
|
@@ -639,6 +710,18 @@
|
|
|
639
710
|
--shadow-strength: 2.5;
|
|
640
711
|
/* Light ring on dark — a dark-tinted ring would vanish against dark surfaces. */
|
|
641
712
|
--shadow-edge-ring: 0 0 0 1px oklch(1 0 0 / 0.12);
|
|
713
|
+
/* Same correction for the raised tier. Without this, `shadow-raised` /
|
|
714
|
+
`-raised-hover` keep a near-black ring that measures ~1.00:1 on a dark
|
|
715
|
+
ground, so anything using them as its only edge has none. 0.07 keeps a
|
|
716
|
+
raised card quieter than a floating overlay while still reading. */
|
|
717
|
+
--shadow-edge-ring-subtle: 0 0 0 1px oklch(1 0 0 / 0.07);
|
|
718
|
+
--shadow-kbd: inset 0 1px 0 oklch(1 0 0 / 0.10);
|
|
719
|
+
/* The segmented thumb is documented as deliberately ring-less, the shadow
|
|
720
|
+
being its whole edge. That works in light and cannot work in dark, where
|
|
721
|
+
the shadow is near-black on a near-black ground — so the fallback failed in
|
|
722
|
+
the same theme as the fill it was meant to rescue. In dark it takes a ring
|
|
723
|
+
like everything else. */
|
|
724
|
+
--shadow-segment: 0 0 0 1px oklch(1 0 0 / 0.07), 0 1px 2px -0.5px oklch(0 0 0 / 0.40), 0 3px 8px -2px oklch(0 0 0 / 0.30);
|
|
642
725
|
--shadow-brand: 0 2px 8px color-mix(in oklch, var(--color-accent-9) 30%, transparent), 0 6px 20px color-mix(in oklch, var(--color-accent-9) 20%, transparent);
|
|
643
726
|
--shadow-glow: 0 0 0 1.5px color-mix(in oklch, var(--color-accent-9) 35%, transparent), 0 0 10px color-mix(in oklch, var(--color-accent-9) 20%, transparent);
|
|
644
727
|
--shadow-ring: 0 0 0 2px color-mix(in oklch, var(--color-accent-9) 45%, transparent);
|
|
@@ -670,6 +753,39 @@
|
|
|
670
753
|
--color-text-shadow: oklch(0 0 0 / 0.40);
|
|
671
754
|
}
|
|
672
755
|
|
|
756
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
757
|
+
HIGH CONTRAST — opt-in, via `data-contrast="high"` on any ancestor
|
|
758
|
+
|
|
759
|
+
WCAG 2.2 SC 1.4.11 asks for 3:1 between a control's edge and its
|
|
760
|
+
background. Our default control edge is 2.00:1 in light and 2.08:1 in
|
|
761
|
+
dark — deliberately softer, and deliberately under the bar. That gap is
|
|
762
|
+
recorded in docs/deviations.md as PALETTE-CONTROL-EDGE-BELOW-AA.
|
|
763
|
+
|
|
764
|
+
This block is the opt-out from that decision. Set the attribute on
|
|
765
|
+
<html> (or any wrapper) and every control edge in the subtree moves to
|
|
766
|
+
3.64:1 light / 3.93:1 dark.
|
|
767
|
+
|
|
768
|
+
<html data-contrast="high"> <!-- whole app -->
|
|
769
|
+
<div data-contrast="high"> … </div> <!-- one region -->
|
|
770
|
+
|
|
771
|
+
It is an ATTRIBUTE rather than a React provider on purpose: `.dark`
|
|
772
|
+
already works this way, so a consumer's existing theme switcher can set
|
|
773
|
+
both, it needs no client component, and it survives SSR.
|
|
774
|
+
|
|
775
|
+
The steps are named, not literal, so a consumer who rebrands the neutral
|
|
776
|
+
ramp gets a correctly-scaled high-contrast mode for free. `--neutral-*`
|
|
777
|
+
is itself theme-aware, so ONE rule serves light and dark.
|
|
778
|
+
|
|
779
|
+
Placed after `.dark` deliberately: `[data-contrast='high']` and `.dark`
|
|
780
|
+
have the same specificity (0,1,0), so when both sit on <html> source
|
|
781
|
+
order is what decides. Moving this block above `.dark` silently breaks
|
|
782
|
+
high contrast in dark mode only.
|
|
783
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
784
|
+
[data-contrast='high'] {
|
|
785
|
+
--color-surface-border-interactive: var(--neutral-8);
|
|
786
|
+
--color-surface-border-interactive-strong: var(--neutral-9);
|
|
787
|
+
}
|
|
788
|
+
|
|
673
789
|
/* ═══════════════════════════════════════════════════════════════════
|
|
674
790
|
Ensure Radix popper content (Select, Combobox, Popover, etc.)
|
|
675
791
|
renders above Sheet/Dialog overlays.
|
|
@@ -730,20 +846,27 @@
|
|
|
730
846
|
--color-surface-fg-muted: CanvasText;
|
|
731
847
|
--color-surface-fg-subtle: GrayText;
|
|
732
848
|
--color-surface-fg-disabled: GrayText;
|
|
733
|
-
--color-surface-base:
|
|
734
|
-
--color-surface-
|
|
735
|
-
--color-surface-
|
|
736
|
-
--color-surface-
|
|
849
|
+
--color-surface-base: Canvas;
|
|
850
|
+
--color-surface-panel: Canvas;
|
|
851
|
+
--color-surface-overlay: Canvas;
|
|
852
|
+
--color-surface-panel-hover: Canvas;
|
|
853
|
+
--color-surface-panel-active: Canvas;
|
|
854
|
+
--color-surface-sunken: Canvas;
|
|
855
|
+
--color-surface-sunken-hover: Canvas;
|
|
856
|
+
--color-surface-raised: Canvas;
|
|
857
|
+
--color-surface-raised-hover: Canvas;
|
|
737
858
|
--color-surface-raised-active: Canvas;
|
|
738
|
-
--color-surface-
|
|
739
|
-
--color-surface-
|
|
740
|
-
--color-surface-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
--color-surface-border:
|
|
744
|
-
--color-surface-border-strong:
|
|
745
|
-
--color-surface-border-subtle:
|
|
746
|
-
--color-surface-border-card:
|
|
859
|
+
--color-surface-disabled: Canvas;
|
|
860
|
+
--color-surface-inverted: CanvasText;
|
|
861
|
+
--color-surface-inverted-fg: Canvas;
|
|
862
|
+
/* Forced colours flatten the object/control split — every edge must be a
|
|
863
|
+
system colour or it disappears entirely. */
|
|
864
|
+
--color-surface-border: CanvasText;
|
|
865
|
+
--color-surface-border-strong: CanvasText;
|
|
866
|
+
--color-surface-border-subtle: GrayText;
|
|
867
|
+
--color-surface-border-card: GrayText;
|
|
868
|
+
--color-surface-border-interactive: CanvasText;
|
|
869
|
+
--color-surface-border-interactive-strong: CanvasText;
|
|
747
870
|
--color-backdrop: Canvas;
|
|
748
871
|
--color-overlay: Canvas;
|
|
749
872
|
--color-disabled: GrayText;
|
|
@@ -334,15 +334,18 @@
|
|
|
334
334
|
@utility bg-gradient-brand-dark { background-image: var(--gradient-brand-dark); }
|
|
335
335
|
|
|
336
336
|
/* ───────────────────────────────────────────────────────────────────
|
|
337
|
-
Card edge — the faint hairline for card/panel containers
|
|
338
|
-
|
|
337
|
+
Card edge — the faint hairline for card/panel containers. These are the
|
|
338
|
+
DECORATIVE border tier: they mark objects. Interactive controls must NOT
|
|
339
|
+
use them — controls take `border-surface-border-interactive[-strong]`,
|
|
340
|
+
which is the tier that carries WCAG 1.4.11 non-text contrast.
|
|
341
|
+
(This comment previously said the opposite, and ~19 controls followed it.)
|
|
339
342
|
Single tunable source of truth; pairs with `border` (width) on the element.
|
|
340
343
|
─────────────────────────────────────────────────────────────────── */
|
|
341
344
|
|
|
342
345
|
@utility border-card { border-color: var(--color-surface-border-card); }
|
|
343
346
|
/* Stronger card edge (kbd caps, code blocks, skeleton/panel outlines, chip
|
|
344
|
-
borders) — one step up from
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
@utility border-card-strong { border-color: var(--color-surface-border); }
|
|
347
|
+
borders) — genuinely one step up from `border-card`. It previously pointed at
|
|
348
|
+
`--color-surface-border`, which is exactly what `--color-surface-border-card`
|
|
349
|
+
already aliases, so the two utilities were the SAME colour and the ~13 call
|
|
350
|
+
sites asking for a heavier edge silently got the faint one. */
|
|
351
|
+
@utility border-card-strong { border-color: var(--color-surface-border-strong); }
|
package/dist/tokens/variants.css
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
CUSTOM VARIANTS (TW4 native)
|
|
3
3
|
|
|
4
4
|
`@custom-variant <name> <selector>` registers a Tailwind 4 variant
|
|
5
|
-
that consumers can use as a prefix, e.g. `dark:bg-surface-
|
|
5
|
+
that consumers can use as a prefix, e.g. `dark:bg-surface-panel`.
|
|
6
6
|
|
|
7
7
|
Our dark variant matches TW3's classic `darkMode: 'class'` behavior
|
|
8
8
|
plus one extra: the `.dark` element itself also receives `dark:*`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AAGjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AAGjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,QAAA,MAAM,SAAS,8JAA0B,CAAA;AAEzC,QAAA,MAAM,aAAa,iKASjB,CAAA;AAGF,UAAU,6BAA8B,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC;IAC/G,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC;AAED,QAAA,MAAM,gBAAgB,yGAwBpB,CAAA;AAGF,QAAA,MAAM,gBAAgB,oKAmBpB,CAAA;AAGF,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC/F,MAAM,MAAM,qBAAqB,GAAG,6BAA6B,CAAA;AACjE,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAErG,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAC,aAAa,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/ui/accordion.js
CHANGED
|
@@ -1,54 +1,55 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Content2 as e, Header as t, Item as n, Root2 as r, Trigger2 as i } from "../_chunks/primitives/react-accordion.js";
|
|
3
3
|
import { tweens as a } from "./lib/motion.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { MotionPreference as o } from "../_chunks/motion-preference.js";
|
|
5
|
+
import { cn as s } from "./lib/utils.js";
|
|
6
|
+
import { Icon as c } from "./icon.js";
|
|
7
|
+
import * as l from "react";
|
|
8
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
import { IconChevronDown as f } from "@tabler/icons-react";
|
|
10
|
+
import { motion as p } from "framer-motion";
|
|
10
11
|
//#region src/ui/accordion.tsx
|
|
11
|
-
var
|
|
12
|
+
var m = r, h = l.forwardRef(({ className: e, ...t }, r) => /* @__PURE__ */ u(n, {
|
|
12
13
|
ref: r,
|
|
13
|
-
className:
|
|
14
|
+
className: s("border-b border-surface-border", e),
|
|
14
15
|
...t
|
|
15
16
|
}));
|
|
16
|
-
|
|
17
|
-
var
|
|
18
|
-
let
|
|
19
|
-
icon:
|
|
17
|
+
h.displayName = "AccordionItem";
|
|
18
|
+
var g = l.forwardRef(({ className: e, children: n, chevronPosition: r = "right", ...a }, o) => {
|
|
19
|
+
let l = /* @__PURE__ */ u(c, {
|
|
20
|
+
icon: f,
|
|
20
21
|
size: "sm",
|
|
21
22
|
className: "shrink-0 text-surface-fg-muted transition-transform duration-moderate-02 ease-productive-standard group-data-[state=open]:rotate-180"
|
|
22
23
|
});
|
|
23
|
-
return /* @__PURE__ */
|
|
24
|
+
return /* @__PURE__ */ u(t, {
|
|
24
25
|
className: "flex",
|
|
25
|
-
children: /* @__PURE__ */
|
|
26
|
-
ref:
|
|
27
|
-
className:
|
|
26
|
+
children: /* @__PURE__ */ d(i, {
|
|
27
|
+
ref: o,
|
|
28
|
+
className: s("group flex flex-1 items-center justify-between py-ds-05 text-left text-body-md font-medium hover:bg-surface-panel-hover rounded-control data-[state=open]:bg-surface-panel-hover focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9", e),
|
|
28
29
|
...a,
|
|
29
30
|
children: [
|
|
30
|
-
r === "left" &&
|
|
31
|
+
r === "left" && l,
|
|
31
32
|
n,
|
|
32
|
-
r === "right" &&
|
|
33
|
+
r === "right" && l
|
|
33
34
|
]
|
|
34
35
|
})
|
|
35
36
|
});
|
|
36
37
|
});
|
|
37
|
-
|
|
38
|
-
var
|
|
38
|
+
g.displayName = i.displayName;
|
|
39
|
+
var _ = l.forwardRef(({ className: t, children: n, ...r }, i) => /* @__PURE__ */ u(o, { children: /* @__PURE__ */ u(e, {
|
|
39
40
|
ref: i,
|
|
40
41
|
className: "w-full overflow-hidden text-body-md data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up",
|
|
41
42
|
...r,
|
|
42
|
-
children: /* @__PURE__ */
|
|
43
|
+
children: /* @__PURE__ */ u(p.div, {
|
|
43
44
|
initial: !1,
|
|
44
45
|
animate: { opacity: 1 },
|
|
45
46
|
transition: a.fade,
|
|
46
|
-
children: /* @__PURE__ */
|
|
47
|
-
className:
|
|
47
|
+
children: /* @__PURE__ */ u("div", {
|
|
48
|
+
className: s("pb-ds-05 pt-ds-02", t),
|
|
48
49
|
children: n
|
|
49
50
|
})
|
|
50
51
|
})
|
|
51
|
-
}));
|
|
52
|
-
|
|
52
|
+
}) }));
|
|
53
|
+
_.displayName = e.displayName;
|
|
53
54
|
//#endregion
|
|
54
|
-
export {
|
|
55
|
+
export { m as Accordion, _ as AccordionContent, h as AccordionItem, g as AccordionTrigger };
|
package/dist/ui/accordion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","names":[],"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["'use client'\n\nimport * as AccordionPrimitive from '@primitives/react-accordion'\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { Icon } from './icon'\nimport { tweens } from './lib/motion'\nimport { cn } from './lib/utils'\n\n/**\n * Accordion compound component — vertically stacked, collapsible content sections.\n *\n * **Parts (in composition order):**\n * - `Accordion` — root; controls single vs. multiple open panels (this root)\n * - `AccordionItem` — individual collapsible section (requires `value` prop)\n * - `AccordionTrigger` — the clickable header row (chevron icon auto-renders and rotates)\n * - `AccordionContent` — the collapsible body revealed when the item is open\n *\n * **`type` prop (required on root):**\n * - `\"single\"` — only one panel open at a time; supports `collapsible` prop to re-close the active item\n * - `\"multiple\"` — multiple panels open simultaneously (value is `string[]`); `collapsible` is NOT valid here\n *\n * @compound\n * @example\n * // Single-open FAQ accordion:\n * <Accordion type=\"single\" defaultValue=\"item-1\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger>What is Shilp Sutra?</AccordionTrigger>\n * <AccordionContent>\n * A React design system built for Next.js App Router, with full accessibility baked in.\n * </AccordionContent>\n * </AccordionItem>\n * <AccordionItem value=\"item-2\">\n * <AccordionTrigger>Is dark mode supported?</AccordionTrigger>\n * <AccordionContent>\n * Yes — add the <code>.dark</code> class to the root element to activate it.\n * </AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Multiple-open controlled accordion:\n * const [open, setOpen] = useState<string[]>(['billing'])\n * <Accordion type=\"multiple\" value={open} onValueChange={setOpen}>\n * <AccordionItem value=\"billing\">\n * <AccordionTrigger>Billing</AccordionTrigger>\n * <AccordionContent>Your billing details here.</AccordionContent>\n * </AccordionItem>\n * <AccordionItem value=\"security\">\n * <AccordionTrigger>Security</AccordionTrigger>\n * <AccordionContent>Security settings here.</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n */\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-surface-border', className)}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\ninterface AccordionTriggerExtendedProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {\n chevronPosition?: 'left' | 'right'\n}\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerExtendedProps\n>(({ className, children, chevronPosition = 'right', ...props }, ref) => {\n const chevron = (\n <Icon icon={IconChevronDown} size=\"sm\" className=\"shrink-0 text-surface-fg-muted transition-transform duration-moderate-02 ease-productive-standard group-data-[state=open]:rotate-180\" />\n )\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'group flex flex-1 items-center justify-between py-ds-05 text-left text-body-md font-medium hover:bg-surface-
|
|
1
|
+
{"version":3,"file":"accordion.js","names":[],"sources":["../../src/ui/accordion.tsx"],"sourcesContent":["'use client'\n\nimport * as AccordionPrimitive from '@primitives/react-accordion'\nimport { IconChevronDown } from '@tabler/icons-react'\nimport { motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { MotionPreference } from '../motion/motion-preference'\nimport { Icon } from './icon'\nimport { tweens } from './lib/motion'\nimport { cn } from './lib/utils'\n\n/**\n * Accordion compound component — vertically stacked, collapsible content sections.\n *\n * **Parts (in composition order):**\n * - `Accordion` — root; controls single vs. multiple open panels (this root)\n * - `AccordionItem` — individual collapsible section (requires `value` prop)\n * - `AccordionTrigger` — the clickable header row (chevron icon auto-renders and rotates)\n * - `AccordionContent` — the collapsible body revealed when the item is open\n *\n * **`type` prop (required on root):**\n * - `\"single\"` — only one panel open at a time; supports `collapsible` prop to re-close the active item\n * - `\"multiple\"` — multiple panels open simultaneously (value is `string[]`); `collapsible` is NOT valid here\n *\n * @compound\n * @example\n * // Single-open FAQ accordion:\n * <Accordion type=\"single\" defaultValue=\"item-1\" collapsible>\n * <AccordionItem value=\"item-1\">\n * <AccordionTrigger>What is Shilp Sutra?</AccordionTrigger>\n * <AccordionContent>\n * A React design system built for Next.js App Router, with full accessibility baked in.\n * </AccordionContent>\n * </AccordionItem>\n * <AccordionItem value=\"item-2\">\n * <AccordionTrigger>Is dark mode supported?</AccordionTrigger>\n * <AccordionContent>\n * Yes — add the <code>.dark</code> class to the root element to activate it.\n * </AccordionContent>\n * </AccordionItem>\n * </Accordion>\n *\n * @example\n * // Multiple-open controlled accordion:\n * const [open, setOpen] = useState<string[]>(['billing'])\n * <Accordion type=\"multiple\" value={open} onValueChange={setOpen}>\n * <AccordionItem value=\"billing\">\n * <AccordionTrigger>Billing</AccordionTrigger>\n * <AccordionContent>Your billing details here.</AccordionContent>\n * </AccordionItem>\n * <AccordionItem value=\"security\">\n * <AccordionTrigger>Security</AccordionTrigger>\n * <AccordionContent>Security settings here.</AccordionContent>\n * </AccordionItem>\n * </Accordion>\n */\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-surface-border', className)}\n {...props}\n />\n))\nAccordionItem.displayName = 'AccordionItem'\n\ninterface AccordionTriggerExtendedProps extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {\n chevronPosition?: 'left' | 'right'\n}\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n AccordionTriggerExtendedProps\n>(({ className, children, chevronPosition = 'right', ...props }, ref) => {\n const chevron = (\n <Icon icon={IconChevronDown} size=\"sm\" className=\"shrink-0 text-surface-fg-muted transition-transform duration-moderate-02 ease-productive-standard group-data-[state=open]:rotate-180\" />\n )\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n 'group flex flex-1 items-center justify-between py-ds-05 text-left text-body-md font-medium hover:bg-surface-panel-hover rounded-control data-[state=open]:bg-surface-panel-hover focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9',\n className,\n )}\n {...props}\n >\n {chevronPosition === 'left' && chevron}\n {children}\n {chevronPosition === 'right' && chevron}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n})\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <MotionPreference>\n <AccordionPrimitive.Content\n ref={ref}\n className=\"w-full overflow-hidden text-body-md data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up\"\n {...props}\n >\n <motion.div\n initial={false}\n animate={{ opacity: 1 }}\n transition={tweens.fade}\n >\n <div className={cn('pb-ds-05 pt-ds-02', className)}>{children}</div>\n </motion.div>\n </AccordionPrimitive.Content>\n </MotionPreference>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport type AccordionItemProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\nexport type AccordionTriggerProps = AccordionTriggerExtendedProps\nexport type AccordionContentProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n\nexport { Accordion, AccordionContent,AccordionItem, AccordionTrigger }\n"],"mappings":";;;;;;;;;;;AAyDA,IAAM,IAAY,GAEZ,IAAgB,EAAM,YAGzB,EAAE,cAAW,GAAG,KAAS,MAC1B,kBAAC,GAAD;CACO;CACL,WAAW,EAAG,kCAAkC,CAAS;CACzD,GAAI;AACL,CAAA,CACF;AACD,EAAc,cAAc;AAM5B,IAAM,IAAmB,EAAM,YAG5B,EAAE,cAAW,aAAU,qBAAkB,SAAS,GAAG,KAAS,MAAQ;CACvE,IAAM,IACJ,kBAAC,GAAD;EAAM,MAAM;EAAiB,MAAK;EAAK,WAAU;CAAwI,CAAA;CAG3L,OACE,kBAAC,GAAD;EAA2B,WAAU;YACnC,kBAAC,GAAD;GACO;GACL,WAAW,EACT,kQACA,CACF;GACA,GAAI;aANN;IAQG,MAAoB,UAAU;IAC9B;IACA,MAAoB,WAAW;GACN;;CACH,CAAA;AAE/B,CAAC;AACD,EAAiB,cAAA,EAAyC;AAE1D,IAAM,IAAmB,EAAM,YAG5B,EAAE,cAAW,aAAU,GAAG,KAAS,MACpC,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;CACO;CACL,WAAU;CACV,GAAI;WAEJ,kBAAC,EAAO,KAAR;EACE,SAAS;EACT,SAAS,EAAE,SAAS,EAAE;EACtB,YAAY,EAAO;YAEnB,kBAAC,OAAD;GAAK,WAAW,EAAG,qBAAqB,CAAS;GAAI;EAAc,CAAA;CACzD,CAAA;AACc,CAAA,EACZ,CAAA,CACnB;AACD,EAAiB,cAAA,EAAyC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/ui/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/ui/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAyB3F,CAAA;AAGD,QAAA,MAAM,kBAAkB,wHAA+B,CAAA;AAEvD,QAAA,MAAM,iBAAiB,uDAA8B,CAAA;AAErD,QAAA,MAAM,kBAAkB,wKAatB,CAAA;AAGF,UAAU,uBAAwB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC;IAC3G,oHAAoH;IACpH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,QAAA,MAAM,kBAAkB,gGAmDtB,CAAA;AAGF,QAAA,MAAM,iBAAiB,6GAWtB,CAAA;AAGD,QAAA,MAAM,iBAAiB,6GAWtB,CAAA;AAGD,QAAA,MAAM,gBAAgB,8KAYpB,CAAA;AAGF,QAAA,MAAM,sBAAsB,wLAS1B,CAAA;AAIF,QAAA,MAAM,iBAAiB,6KAYrB,CAAA;AAGF,QAAA,MAAM,iBAAiB,6KAYrB,CAAA;AAGF,YAAY,EAAE,uBAAuB,EAAE,CAAA;AACvC,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAA;AACvG,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAEvG,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAA"}
|