@ctrl-ui/react 0.8.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 +70 -0
- package/dist/action-bar.d.ts +44 -0
- package/dist/action-bar.js +89 -0
- package/dist/activity.d.ts +53 -0
- package/dist/activity.js +188 -0
- package/dist/audio-recorder.d.ts +32 -0
- package/dist/audio-recorder.js +235 -0
- package/dist/audio-visualizer.d.ts +12 -0
- package/dist/audio-visualizer.js +58 -0
- package/dist/blocks/chat.d.ts +10 -0
- package/dist/blocks/chat.js +12 -0
- package/dist/blocks/coding-agent.d.ts +61 -0
- package/dist/blocks/coding-agent.js +255 -0
- package/dist/blocks/file-explorer-data.d.ts +57 -0
- package/dist/blocks/file-explorer-data.js +74 -0
- package/dist/blocks/file-explorer.d.ts +24 -0
- package/dist/blocks/file-explorer.js +427 -0
- package/dist/blocks/settings-data.d.ts +36 -0
- package/dist/blocks/settings-data.js +66 -0
- package/dist/blocks/settings.d.ts +19 -0
- package/dist/blocks/settings.js +282 -0
- package/dist/blocks/theme-toggle.d.ts +43 -0
- package/dist/blocks/theme-toggle.js +180 -0
- package/dist/chat-composer-attachment.d.ts +55 -0
- package/dist/chat-composer-attachment.js +267 -0
- package/dist/chat-composer-editor/extensions/mention.d.ts +14 -0
- package/dist/chat-composer-editor/extensions/mention.js +278 -0
- package/dist/chat-composer-editor/ghost.d.ts +5 -0
- package/dist/chat-composer-editor/ghost.js +55 -0
- package/dist/chat-composer-editor/schema.d.ts +6 -0
- package/dist/chat-composer-editor/schema.js +25 -0
- package/dist/chat-composer-editor/serialize.d.ts +6 -0
- package/dist/chat-composer-editor/serialize.js +16 -0
- package/dist/chat-composer-editor/types.d.ts +29 -0
- package/dist/chat-composer-editor/types.js +0 -0
- package/dist/chat-composer-editor.d.ts +9 -0
- package/dist/chat-composer-editor.js +154 -0
- package/dist/chat-composer.d.ts +60 -0
- package/dist/chat-composer.js +134 -0
- package/dist/chat-layout.d.ts +27 -0
- package/dist/chat-layout.js +114 -0
- package/dist/chat-message.d.ts +31 -0
- package/dist/chat-message.js +95 -0
- package/dist/code-block-editor.d.ts +59 -0
- package/dist/code-block-editor.js +250 -0
- package/dist/context-model.d.ts +33 -0
- package/dist/context-model.js +52 -0
- package/dist/context.d.ts +47 -0
- package/dist/context.js +335 -0
- package/dist/control-props.d.ts +28 -0
- package/dist/control-props.js +4 -0
- package/dist/control-variants.d.ts +8 -0
- package/dist/control-variants.js +14 -0
- package/dist/dynamic-notification-glass.d.ts +10 -0
- package/dist/dynamic-notification-glass.js +311 -0
- package/dist/dynamic-notification-liquid.d.ts +24 -0
- package/dist/dynamic-notification-liquid.js +682 -0
- package/dist/dynamic-notification-siri-wave.d.ts +4 -0
- package/dist/dynamic-notification-siri-wave.js +82 -0
- package/dist/dynamic-notification.d.ts +74 -0
- package/dist/dynamic-notification.js +342 -0
- package/dist/environment-variables.d.ts +124 -0
- package/dist/environment-variables.js +492 -0
- package/dist/extensions/create-track-highlight.d.ts +12 -0
- package/dist/extensions/create-track-highlight.js +147 -0
- package/dist/extensions/track-highlight.d.ts +22 -0
- package/dist/extensions/track-highlight.js +52 -0
- package/dist/hooks/use-audio-recorder.d.ts +107 -0
- package/dist/hooks/use-audio-recorder.js +577 -0
- package/dist/hooks/use-chat-composer.d.ts +56 -0
- package/dist/hooks/use-chat-composer.js +63 -0
- package/dist/hooks/use-chat-message.d.ts +28 -0
- package/dist/hooks/use-chat-message.js +24 -0
- package/dist/hooks/use-color-area.d.ts +18 -0
- package/dist/hooks/use-color-area.js +60 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts +22 -0
- package/dist/hooks/use-copy-to-clipboard.js +90 -0
- package/dist/hooks/use-dropzone.d.ts +59 -0
- package/dist/hooks/use-dropzone.js +372 -0
- package/dist/hooks/use-dynamic-notification.d.ts +37 -0
- package/dist/hooks/use-dynamic-notification.js +87 -0
- package/dist/hooks/use-environment-variables.d.ts +51 -0
- package/dist/hooks/use-environment-variables.js +188 -0
- package/dist/hooks/use-mobile.d.ts +5 -0
- package/dist/hooks/use-mobile.js +29 -0
- package/dist/hooks/use-textarea-trigger-menu.d.ts +8 -0
- package/dist/hooks/use-textarea-trigger-menu.js +69 -0
- package/dist/hooks/use-trigger-menu.d.ts +49 -0
- package/dist/hooks/use-trigger-menu.js +102 -0
- package/dist/hooks/use-user-ask.d.ts +48 -0
- package/dist/hooks/use-user-ask.js +167 -0
- package/dist/inline-attachment.d.ts +37 -0
- package/dist/inline-attachment.js +192 -0
- package/dist/inline-citation.d.ts +56 -0
- package/dist/inline-citation.js +319 -0
- package/dist/knob-contracts/accordion-knobs.d.ts +5 -0
- package/dist/knob-contracts/accordion-knobs.js +9 -0
- package/dist/knob-contracts/action-bar-knobs.d.ts +5 -0
- package/dist/knob-contracts/action-bar-knobs.js +4 -0
- package/dist/knob-contracts/activity-knobs.d.ts +5 -0
- package/dist/knob-contracts/activity-knobs.js +9 -0
- package/dist/knob-contracts/alert-knobs.d.ts +5 -0
- package/dist/knob-contracts/alert-knobs.js +9 -0
- package/dist/knob-contracts/audio-recorder-knobs.d.ts +5 -0
- package/dist/knob-contracts/audio-recorder-knobs.js +9 -0
- package/dist/knob-contracts/audio-visualizer-knobs.d.ts +5 -0
- package/dist/knob-contracts/audio-visualizer-knobs.js +9 -0
- package/dist/knob-contracts/avatar-knobs.d.ts +5 -0
- package/dist/knob-contracts/avatar-knobs.js +9 -0
- package/dist/knob-contracts/badge-knobs.d.ts +5 -0
- package/dist/knob-contracts/badge-knobs.js +9 -0
- package/dist/knob-contracts/button-group-knobs.d.ts +5 -0
- package/dist/knob-contracts/button-group-knobs.js +9 -0
- package/dist/knob-contracts/button-knobs.d.ts +5 -0
- package/dist/knob-contracts/button-knobs.js +25 -0
- package/dist/knob-contracts/calendar-knobs.d.ts +5 -0
- package/dist/knob-contracts/calendar-knobs.js +10 -0
- package/dist/knob-contracts/card-knobs.d.ts +5 -0
- package/dist/knob-contracts/card-knobs.js +11 -0
- package/dist/knob-contracts/chat-composer-attachment-knobs.d.ts +5 -0
- package/dist/knob-contracts/chat-composer-attachment-knobs.js +11 -0
- package/dist/knob-contracts/chat-composer-knobs.d.ts +5 -0
- package/dist/knob-contracts/chat-composer-knobs.js +18 -0
- package/dist/knob-contracts/chat-layout-knobs.d.ts +5 -0
- package/dist/knob-contracts/chat-layout-knobs.js +11 -0
- package/dist/knob-contracts/chat-message-knobs.d.ts +5 -0
- package/dist/knob-contracts/chat-message-knobs.js +17 -0
- package/dist/knob-contracts/choice-knobs.d.ts +5 -0
- package/dist/knob-contracts/choice-knobs.js +9 -0
- package/dist/knob-contracts/code-block-editor-knobs.d.ts +5 -0
- package/dist/knob-contracts/code-block-editor-knobs.js +11 -0
- package/dist/knob-contracts/code-diff-knobs.d.ts +5 -0
- package/dist/knob-contracts/code-diff-knobs.js +18 -0
- package/dist/knob-contracts/code-knobs.d.ts +5 -0
- package/dist/knob-contracts/code-knobs.js +11 -0
- package/dist/knob-contracts/collapsible-knobs.d.ts +5 -0
- package/dist/knob-contracts/collapsible-knobs.js +4 -0
- package/dist/knob-contracts/color-picker-knobs.d.ts +5 -0
- package/dist/knob-contracts/color-picker-knobs.js +12 -0
- package/dist/knob-contracts/context-knobs.d.ts +5 -0
- package/dist/knob-contracts/context-knobs.js +13 -0
- package/dist/knob-contracts/dockable-panel-knobs.d.ts +5 -0
- package/dist/knob-contracts/dockable-panel-knobs.js +12 -0
- package/dist/knob-contracts/dropzone-knobs.d.ts +5 -0
- package/dist/knob-contracts/dropzone-knobs.js +11 -0
- package/dist/knob-contracts/dynamic-notification-knobs.d.ts +5 -0
- package/dist/knob-contracts/dynamic-notification-knobs.js +18 -0
- package/dist/knob-contracts/empty-knobs.d.ts +5 -0
- package/dist/knob-contracts/empty-knobs.js +12 -0
- package/dist/knob-contracts/environment-variables-knobs.d.ts +5 -0
- package/dist/knob-contracts/environment-variables-knobs.js +11 -0
- package/dist/knob-contracts/field-knobs.d.ts +5 -0
- package/dist/knob-contracts/field-knobs.js +16 -0
- package/dist/knob-contracts/gradient-editor-knobs.d.ts +5 -0
- package/dist/knob-contracts/gradient-editor-knobs.js +13 -0
- package/dist/knob-contracts/infinite-canvas-knobs.d.ts +5 -0
- package/dist/knob-contracts/infinite-canvas-knobs.js +13 -0
- package/dist/knob-contracts/inline-attachment-knobs.d.ts +5 -0
- package/dist/knob-contracts/inline-attachment-knobs.js +14 -0
- package/dist/knob-contracts/inline-citation-knobs.d.ts +5 -0
- package/dist/knob-contracts/inline-citation-knobs.js +14 -0
- package/dist/knob-contracts/item-knobs.d.ts +5 -0
- package/dist/knob-contracts/item-knobs.js +10 -0
- package/dist/knob-contracts/kbd-knobs.d.ts +5 -0
- package/dist/knob-contracts/kbd-knobs.js +10 -0
- package/dist/knob-contracts/markdown-block-knobs.d.ts +5 -0
- package/dist/knob-contracts/markdown-block-knobs.js +11 -0
- package/dist/knob-contracts/markdown-knobs.d.ts +5 -0
- package/dist/knob-contracts/markdown-knobs.js +14 -0
- package/dist/knob-contracts/morphing-panel-knobs.d.ts +5 -0
- package/dist/knob-contracts/morphing-panel-knobs.js +11 -0
- package/dist/knob-contracts/pagination-knobs.d.ts +5 -0
- package/dist/knob-contracts/pagination-knobs.js +10 -0
- package/dist/knob-contracts/phone-input-knobs.d.ts +5 -0
- package/dist/knob-contracts/phone-input-knobs.js +10 -0
- package/dist/knob-contracts/popup-knobs.d.ts +5 -0
- package/dist/knob-contracts/popup-knobs.js +21 -0
- package/dist/knob-contracts/range-knobs.d.ts +5 -0
- package/dist/knob-contracts/range-knobs.js +13 -0
- package/dist/knob-contracts/resizable-knobs.d.ts +5 -0
- package/dist/knob-contracts/resizable-knobs.js +14 -0
- package/dist/knob-contracts/rich-tooltip-knobs.d.ts +5 -0
- package/dist/knob-contracts/rich-tooltip-knobs.js +13 -0
- package/dist/knob-contracts/scroll-area-knobs.d.ts +5 -0
- package/dist/knob-contracts/scroll-area-knobs.js +8 -0
- package/dist/knob-contracts/separator-knobs.d.ts +5 -0
- package/dist/knob-contracts/separator-knobs.js +4 -0
- package/dist/knob-contracts/sidebar-knobs.d.ts +5 -0
- package/dist/knob-contracts/sidebar-knobs.js +26 -0
- package/dist/knob-contracts/skeleton-knobs.d.ts +5 -0
- package/dist/knob-contracts/skeleton-knobs.js +4 -0
- package/dist/knob-contracts/source-badge-knobs.d.ts +5 -0
- package/dist/knob-contracts/source-badge-knobs.js +11 -0
- package/dist/knob-contracts/spinner-knobs.d.ts +5 -0
- package/dist/knob-contracts/spinner-knobs.js +4 -0
- package/dist/knob-contracts/stepper-knobs.d.ts +5 -0
- package/dist/knob-contracts/stepper-knobs.js +11 -0
- package/dist/knob-contracts/switch-knobs.d.ts +5 -0
- package/dist/knob-contracts/switch-knobs.js +12 -0
- package/dist/knob-contracts/table-knobs.d.ts +5 -0
- package/dist/knob-contracts/table-knobs.js +12 -0
- package/dist/knob-contracts/table-of-contents-knobs.d.ts +5 -0
- package/dist/knob-contracts/table-of-contents-knobs.js +8 -0
- package/dist/knob-contracts/tabs-knobs.d.ts +5 -0
- package/dist/knob-contracts/tabs-knobs.js +16 -0
- package/dist/knob-contracts/task-list-knobs.d.ts +5 -0
- package/dist/knob-contracts/task-list-knobs.js +14 -0
- package/dist/knob-contracts/thread-rail-knobs.d.ts +5 -0
- package/dist/knob-contracts/thread-rail-knobs.js +14 -0
- package/dist/knob-contracts/timeline-knobs.d.ts +5 -0
- package/dist/knob-contracts/timeline-knobs.js +12 -0
- package/dist/knob-contracts/toolbar-knobs.d.ts +5 -0
- package/dist/knob-contracts/toolbar-knobs.js +20 -0
- package/dist/knob-contracts/track-highlight-knobs.d.ts +5 -0
- package/dist/knob-contracts/track-highlight-knobs.js +11 -0
- package/dist/knob-contracts/transcript-divider-knobs.d.ts +5 -0
- package/dist/knob-contracts/transcript-divider-knobs.js +10 -0
- package/dist/knob-contracts/tree-knobs.d.ts +5 -0
- package/dist/knob-contracts/tree-knobs.js +13 -0
- package/dist/knob-contracts/user-ask-knobs.d.ts +5 -0
- package/dist/knob-contracts/user-ask-knobs.js +17 -0
- package/dist/lib/cn.d.ts +5 -0
- package/dist/lib/cn.js +34 -0
- package/dist/lib/code-block-shiki.d.ts +9 -0
- package/dist/lib/code-block-shiki.js +6 -0
- package/dist/lib/code-tokens.d.ts +28 -0
- package/dist/lib/code-tokens.js +160 -0
- package/dist/lib/color.d.ts +72 -0
- package/dist/lib/color.js +490 -0
- package/dist/lib/contrast.d.ts +30 -0
- package/dist/lib/contrast.js +64 -0
- package/dist/lib/diff.d.ts +50 -0
- package/dist/lib/diff.js +315 -0
- package/dist/lib/dropzone-validation.d.ts +66 -0
- package/dist/lib/dropzone-validation.js +228 -0
- package/dist/lib/env-file.d.ts +28 -0
- package/dist/lib/env-file.js +218 -0
- package/dist/lib/format-audio-recorder-duration.d.ts +4 -0
- package/dist/lib/format-audio-recorder-duration.js +7 -0
- package/dist/lib/liquid-glass-optics.d.ts +4 -0
- package/dist/lib/liquid-glass-optics.js +96 -0
- package/dist/lib/phone-input-format.d.ts +6 -0
- package/dist/lib/phone-input-format.js +26 -0
- package/dist/lib/phone-number.d.ts +18 -0
- package/dist/lib/phone-number.js +28 -0
- package/dist/lib/trigger-detect.d.ts +15 -0
- package/dist/lib/trigger-detect.js +77 -0
- package/dist/markdown-block.d.ts +25 -0
- package/dist/markdown-block.js +77 -0
- package/dist/skin.config.d.ts +5 -0
- package/dist/skin.config.js +4 -0
- package/dist/skin.d.ts +69 -0
- package/dist/skin.js +62 -0
- package/dist/source-badge.d.ts +23 -0
- package/dist/source-badge.js +72 -0
- package/dist/styles/chat-composer-editor.css +44 -0
- package/dist/styles/code.css +57 -0
- package/dist/styles/effects.css +126 -0
- package/dist/styles/index.css +81 -0
- package/dist/styles/recipes/accordion.css +87 -0
- package/dist/styles/recipes/action-bar.css +19 -0
- package/dist/styles/recipes/activity.css +129 -0
- package/dist/styles/recipes/alert.css +75 -0
- package/dist/styles/recipes/audio-recorder.css +102 -0
- package/dist/styles/recipes/audio-visualizer.css +90 -0
- package/dist/styles/recipes/avatar.css +52 -0
- package/dist/styles/recipes/badge.css +110 -0
- package/dist/styles/recipes/button-group.css +64 -0
- package/dist/styles/recipes/button.css +305 -0
- package/dist/styles/recipes/calendar.css +152 -0
- package/dist/styles/recipes/card.css +93 -0
- package/dist/styles/recipes/chat-composer-attachment.css +177 -0
- package/dist/styles/recipes/chat-composer.css +195 -0
- package/dist/styles/recipes/chat-layout.css +108 -0
- package/dist/styles/recipes/chat-message.css +160 -0
- package/dist/styles/recipes/choice.css +108 -0
- package/dist/styles/recipes/code-block-editor.css +136 -0
- package/dist/styles/recipes/code-diff.css +256 -0
- package/dist/styles/recipes/code.css +136 -0
- package/dist/styles/recipes/collapsible.css +27 -0
- package/dist/styles/recipes/color-picker-details.css +61 -0
- package/dist/styles/recipes/color-picker-values.css +117 -0
- package/dist/styles/recipes/color-picker.css +158 -0
- package/dist/styles/recipes/context.css +237 -0
- package/dist/styles/recipes/dockable-panel.css +106 -0
- package/dist/styles/recipes/dropzone.css +149 -0
- package/dist/styles/recipes/dynamic-notification-input.css +29 -0
- package/dist/styles/recipes/dynamic-notification-motion.css +298 -0
- package/dist/styles/recipes/dynamic-notification.css +241 -0
- package/dist/styles/recipes/empty.css +96 -0
- package/dist/styles/recipes/environment-variables.css +173 -0
- package/dist/styles/recipes/field-parts.css +148 -0
- package/dist/styles/recipes/field.css +234 -0
- package/dist/styles/recipes/gradient-editor.css +109 -0
- package/dist/styles/recipes/infinite-canvas.css +78 -0
- package/dist/styles/recipes/inline-attachment.css +182 -0
- package/dist/styles/recipes/inline-citation.css +174 -0
- package/dist/styles/recipes/item.css +107 -0
- package/dist/styles/recipes/kbd.css +55 -0
- package/dist/styles/recipes/markdown-block.css +75 -0
- package/dist/styles/recipes/markdown.css +204 -0
- package/dist/styles/recipes/morphing-panel.css +123 -0
- package/dist/styles/recipes/pagination.css +86 -0
- package/dist/styles/recipes/phone-input.css +105 -0
- package/dist/styles/recipes/popup-controls.css +59 -0
- package/dist/styles/recipes/popup-drawer.css +162 -0
- package/dist/styles/recipes/popup-lists.css +198 -0
- package/dist/styles/recipes/popup-motion.css +94 -0
- package/dist/styles/recipes/popup-toast.css +126 -0
- package/dist/styles/recipes/popup.css +396 -0
- package/dist/styles/recipes/range.css +259 -0
- package/dist/styles/recipes/resizable.css +170 -0
- package/dist/styles/recipes/rich-tooltip.css +272 -0
- package/dist/styles/recipes/scroll-area.css +59 -0
- package/dist/styles/recipes/separator.css +12 -0
- package/dist/styles/recipes/sidebar.css +345 -0
- package/dist/styles/recipes/skeleton.css +23 -0
- package/dist/styles/recipes/source-badge.css +77 -0
- package/dist/styles/recipes/spinner.css +33 -0
- package/dist/styles/recipes/stepper.css +178 -0
- package/dist/styles/recipes/switch.css +149 -0
- package/dist/styles/recipes/table-of-contents.css +107 -0
- package/dist/styles/recipes/table.css +124 -0
- package/dist/styles/recipes/tabs.css +235 -0
- package/dist/styles/recipes/task-list.css +146 -0
- package/dist/styles/recipes/thread-rail.css +247 -0
- package/dist/styles/recipes/timeline.css +107 -0
- package/dist/styles/recipes/toolbar.css +260 -0
- package/dist/styles/recipes/track-highlight.css +73 -0
- package/dist/styles/recipes/transcript-divider.css +64 -0
- package/dist/styles/recipes/tree.css +137 -0
- package/dist/styles/recipes/user-ask-details.css +45 -0
- package/dist/styles/recipes/user-ask.css +204 -0
- package/dist/styles/skin-theme.css +137 -0
- package/dist/styles/skin.css +143 -0
- package/dist/styles/theme.css +628 -0
- package/dist/styles/type-scale.css +45 -0
- package/dist/surface-variants.d.ts +6 -0
- package/dist/surface-variants.js +16 -0
- package/dist/task-list.d.ts +34 -0
- package/dist/task-list.js +177 -0
- package/dist/thread-rail.d.ts +52 -0
- package/dist/thread-rail.js +190 -0
- package/dist/transcript-divider.d.ts +15 -0
- package/dist/transcript-divider.js +25 -0
- package/dist/ui/accordion.d.ts +31 -0
- package/dist/ui/accordion.js +60 -0
- package/dist/ui/alert-dialog.d.ts +36 -0
- package/dist/ui/alert-dialog.js +100 -0
- package/dist/ui/alert.d.ts +21 -0
- package/dist/ui/alert.js +36 -0
- package/dist/ui/aspect-ratio.d.ts +8 -0
- package/dist/ui/aspect-ratio.js +17 -0
- package/dist/ui/autocomplete.d.ts +70 -0
- package/dist/ui/autocomplete.js +150 -0
- package/dist/ui/avatar.d.ts +24 -0
- package/dist/ui/avatar.js +44 -0
- package/dist/ui/badge.d.ts +20 -0
- package/dist/ui/badge.js +36 -0
- package/dist/ui/button-group.d.ts +24 -0
- package/dist/ui/button-group.js +45 -0
- package/dist/ui/button.d.ts +36 -0
- package/dist/ui/button.js +104 -0
- package/dist/ui/calendar.d.ts +11 -0
- package/dist/ui/calendar.js +160 -0
- package/dist/ui/card.d.ts +36 -0
- package/dist/ui/card.js +70 -0
- package/dist/ui/checkbox-group.d.ts +11 -0
- package/dist/ui/checkbox-group.js +16 -0
- package/dist/ui/checkbox.d.ts +23 -0
- package/dist/ui/checkbox.js +58 -0
- package/dist/ui/code-diff.d.ts +28 -0
- package/dist/ui/code-diff.js +561 -0
- package/dist/ui/code.d.ts +62 -0
- package/dist/ui/code.js +292 -0
- package/dist/ui/collapsible.d.ts +31 -0
- package/dist/ui/collapsible.js +72 -0
- package/dist/ui/color-picker.d.ts +137 -0
- package/dist/ui/color-picker.js +797 -0
- package/dist/ui/combobox-disabled-selection.d.ts +5 -0
- package/dist/ui/combobox-disabled-selection.js +11 -0
- package/dist/ui/combobox.d.ts +70 -0
- package/dist/ui/combobox.js +194 -0
- package/dist/ui/command.d.ts +44 -0
- package/dist/ui/command.js +166 -0
- package/dist/ui/context-menu.d.ts +86 -0
- package/dist/ui/context-menu.js +202 -0
- package/dist/ui/dialog.d.ts +38 -0
- package/dist/ui/dialog.js +124 -0
- package/dist/ui/dockable-panel-geometry.d.ts +18 -0
- package/dist/ui/dockable-panel-geometry.js +17 -0
- package/dist/ui/dockable-panel.d.ts +58 -0
- package/dist/ui/dockable-panel.js +366 -0
- package/dist/ui/drawer.d.ts +42 -0
- package/dist/ui/drawer.js +182 -0
- package/dist/ui/dropdown-menu.d.ts +46 -0
- package/dist/ui/dropdown-menu.js +89 -0
- package/dist/ui/dropzone.d.ts +66 -0
- package/dist/ui/dropzone.js +311 -0
- package/dist/ui/empty.d.ts +28 -0
- package/dist/ui/empty.js +59 -0
- package/dist/ui/field.d.ts +64 -0
- package/dist/ui/field.js +166 -0
- package/dist/ui/form.d.ts +10 -0
- package/dist/ui/form.js +17 -0
- package/dist/ui/gradient-editor.d.ts +47 -0
- package/dist/ui/gradient-editor.js +301 -0
- package/dist/ui/hover-card.d.ts +25 -0
- package/dist/ui/hover-card.js +46 -0
- package/dist/ui/infinite-canvas.d.ts +40 -0
- package/dist/ui/infinite-canvas.js +278 -0
- package/dist/ui/input-group.d.ts +21 -0
- package/dist/ui/input-group.js +44 -0
- package/dist/ui/input-otp.d.ts +38 -0
- package/dist/ui/input-otp.js +45 -0
- package/dist/ui/input.d.ts +12 -0
- package/dist/ui/input.js +18 -0
- package/dist/ui/item.d.ts +46 -0
- package/dist/ui/item.js +110 -0
- package/dist/ui/kbd.d.ts +12 -0
- package/dist/ui/kbd.js +23 -0
- package/dist/ui/markdown-elements.d.ts +52 -0
- package/dist/ui/markdown-elements.js +211 -0
- package/dist/ui/markdown.d.ts +14 -0
- package/dist/ui/markdown.js +31 -0
- package/dist/ui/menubar.d.ts +74 -0
- package/dist/ui/menubar.js +162 -0
- package/dist/ui/meter.d.ts +34 -0
- package/dist/ui/meter.js +57 -0
- package/dist/ui/morphing-panel.d.ts +24 -0
- package/dist/ui/morphing-panel.js +87 -0
- package/dist/ui/native-select.d.ts +12 -0
- package/dist/ui/native-select.js +41 -0
- package/dist/ui/navigation-menu.d.ts +51 -0
- package/dist/ui/navigation-menu.js +135 -0
- package/dist/ui/number-field.d.ts +72 -0
- package/dist/ui/number-field.js +124 -0
- package/dist/ui/pagination.d.ts +26 -0
- package/dist/ui/pagination.js +77 -0
- package/dist/ui/phone-input.d.ts +30 -0
- package/dist/ui/phone-input.js +263 -0
- package/dist/ui/popover.d.ts +34 -0
- package/dist/ui/popover.js +87 -0
- package/dist/ui/progress.d.ts +34 -0
- package/dist/ui/progress.js +57 -0
- package/dist/ui/radio-group.d.ts +29 -0
- package/dist/ui/radio-group.js +37 -0
- package/dist/ui/resizable.d.ts +56 -0
- package/dist/ui/resizable.js +82 -0
- package/dist/ui/responsive-dialog.d.ts +18 -0
- package/dist/ui/responsive-dialog.js +121 -0
- package/dist/ui/rich-tooltip-tour.d.ts +12 -0
- package/dist/ui/rich-tooltip-tour.js +20 -0
- package/dist/ui/rich-tooltip.d.ts +83 -0
- package/dist/ui/rich-tooltip.js +331 -0
- package/dist/ui/scroll-area.d.ts +25 -0
- package/dist/ui/scroll-area.js +93 -0
- package/dist/ui/select.d.ts +44 -0
- package/dist/ui/select.js +124 -0
- package/dist/ui/separator.d.ts +9 -0
- package/dist/ui/separator.js +16 -0
- package/dist/ui/sheet.d.ts +25 -0
- package/dist/ui/sheet.js +76 -0
- package/dist/ui/sidebar.d.ts +88 -0
- package/dist/ui/sidebar.js +362 -0
- package/dist/ui/skeleton.d.ts +8 -0
- package/dist/ui/skeleton.js +13 -0
- package/dist/ui/slider.d.ts +24 -0
- package/dist/ui/slider.js +114 -0
- package/dist/ui/spinner.d.ts +12 -0
- package/dist/ui/spinner.js +26 -0
- package/dist/ui/stepper.d.ts +58 -0
- package/dist/ui/stepper.js +232 -0
- package/dist/ui/switch.d.ts +26 -0
- package/dist/ui/switch.js +71 -0
- package/dist/ui/table-of-contents.d.ts +22 -0
- package/dist/ui/table-of-contents.js +181 -0
- package/dist/ui/table.d.ts +37 -0
- package/dist/ui/table.js +83 -0
- package/dist/ui/tabs.d.ts +36 -0
- package/dist/ui/tabs.js +127 -0
- package/dist/ui/textarea.d.ts +9 -0
- package/dist/ui/textarea.js +16 -0
- package/dist/ui/timeline.d.ts +40 -0
- package/dist/ui/timeline.js +80 -0
- package/dist/ui/toast.d.ts +28 -0
- package/dist/ui/toast.js +132 -0
- package/dist/ui/toggle.d.ts +20 -0
- package/dist/ui/toggle.js +71 -0
- package/dist/ui/toolbar.d.ts +40 -0
- package/dist/ui/toolbar.js +72 -0
- package/dist/ui/tooltip.d.ts +27 -0
- package/dist/ui/tooltip.js +93 -0
- package/dist/ui/tree.d.ts +56 -0
- package/dist/ui/tree.js +438 -0
- package/dist/ui/trigger-menu.d.ts +46 -0
- package/dist/ui/trigger-menu.js +116 -0
- package/dist/user-ask.d.ts +50 -0
- package/dist/user-ask.js +398 -0
- package/package.json +115 -0
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
/* Load alongside Tailwind v4 and at least one complete skin theme — nothing here paints without a pack's token values. */
|
|
2
|
+
|
|
3
|
+
@custom-variant dark (&:is(.dark *));
|
|
4
|
+
|
|
5
|
+
/* biome-ignore-start lint/complexity/noImportantStyles: Reduced motion must override skin and inline motion. */
|
|
6
|
+
/* Motion collapses under OS preference; !important wins over skin-scoped tokens and editor duration overrides. */
|
|
7
|
+
@media (prefers-reduced-motion: reduce) {
|
|
8
|
+
:where(:root),
|
|
9
|
+
[data-skin] {
|
|
10
|
+
--duration-fast: 0ms !important;
|
|
11
|
+
--duration-base: 0ms !important;
|
|
12
|
+
--duration-slow: 0ms !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where([data-skin], [data-skin] *, [data-skin]::before, [data-skin]::after, [data-skin] *::before, [data-skin] *::after) {
|
|
16
|
+
scroll-behavior: auto !important;
|
|
17
|
+
transition-delay: 0ms !important;
|
|
18
|
+
transition-duration: 0ms !important;
|
|
19
|
+
animation-delay: 0ms !important;
|
|
20
|
+
animation-duration: 1ms !important;
|
|
21
|
+
animation-iteration-count: 1 !important;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Explicit motion kill-switch, same collapse as above but opt-in via attribute, not OS preference.
|
|
26
|
+
Skin's `motion: "reduced"` flag or the theme editor toggle stamps [data-motion="reduced"] on <html>;
|
|
27
|
+
also targets skin-scoped portals directly since their [data-skin] tokens would beat inherited root values. */
|
|
28
|
+
:root[data-motion="reduced"],
|
|
29
|
+
[data-motion="reduced"][data-skin],
|
|
30
|
+
[data-motion="reduced"] [data-skin] {
|
|
31
|
+
--duration-fast: 0ms !important;
|
|
32
|
+
--duration-base: 0ms !important;
|
|
33
|
+
--duration-slow: 0ms !important;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
:where(
|
|
37
|
+
[data-motion="reduced"],
|
|
38
|
+
[data-motion="reduced"] *,
|
|
39
|
+
[data-motion="reduced"]::before,
|
|
40
|
+
[data-motion="reduced"]::after,
|
|
41
|
+
[data-motion="reduced"] *::before,
|
|
42
|
+
[data-motion="reduced"] *::after
|
|
43
|
+
) {
|
|
44
|
+
scroll-behavior: auto !important;
|
|
45
|
+
transition-delay: 0ms !important;
|
|
46
|
+
transition-duration: 0ms !important;
|
|
47
|
+
animation-delay: 0ms !important;
|
|
48
|
+
animation-duration: 1ms !important;
|
|
49
|
+
animation-iteration-count: 1 !important;
|
|
50
|
+
}
|
|
51
|
+
/* biome-ignore-end lint/complexity/noImportantStyles: Reduced motion must override skin and inline motion. */
|
|
52
|
+
|
|
53
|
+
/* Skin-root defaults at zero specificity — any pack declaration (theme.css or skin.css) wins.
|
|
54
|
+
First family: derived-tier contract tokens, re-valued by a pack only when it diverges.
|
|
55
|
+
Second family: core mechanics (math constants + aliases) that live OFF the contract entirely. */
|
|
56
|
+
:where([data-skin]) {
|
|
57
|
+
/* font roles default to the skin's face; re-value one to give headings their own. */
|
|
58
|
+
--font-body: var(--font-sans);
|
|
59
|
+
--font-display: var(--font-sans);
|
|
60
|
+
|
|
61
|
+
/* majority defaults measured over the shipped packs; a pack declares one only to diverge,
|
|
62
|
+
and the dark block below carries the mode-split ones */
|
|
63
|
+
--primary-text: oklch(from var(--primary) 0.48 c h);
|
|
64
|
+
--destructive-text: oklch(from var(--destructive) 0.48 c h);
|
|
65
|
+
--ring-opacity: 1;
|
|
66
|
+
--focus-ring: var(--ring);
|
|
67
|
+
--focus-ring-width: 2px;
|
|
68
|
+
--focus-ring-style: solid;
|
|
69
|
+
--focus-ring-offset: 2px;
|
|
70
|
+
|
|
71
|
+
--control-rim: var(--border);
|
|
72
|
+
--control-rim-width: 1px;
|
|
73
|
+
--hover-fill: oklch(from var(--foreground) l c h / 0.06);
|
|
74
|
+
--active-fill: oklch(from var(--foreground) l c h / 0.08);
|
|
75
|
+
|
|
76
|
+
--text-micro: 0.625rem;
|
|
77
|
+
--text-caption: 0.6875rem;
|
|
78
|
+
--text-body: 0.875rem;
|
|
79
|
+
--text-body-lg: 1rem;
|
|
80
|
+
--text-heading-4: 0.9375rem;
|
|
81
|
+
--text-heading-4--line-height: 1.4;
|
|
82
|
+
--text-heading-4--font-weight: 600;
|
|
83
|
+
--text-heading-3: 1.125rem;
|
|
84
|
+
--text-heading-3--line-height: 1.35;
|
|
85
|
+
--text-heading-3--font-weight: 600;
|
|
86
|
+
--text-heading-2: 1.375rem;
|
|
87
|
+
--text-heading-2--line-height: 1.25;
|
|
88
|
+
--text-heading-2--font-weight: 600;
|
|
89
|
+
--text-heading-1: 1.875rem;
|
|
90
|
+
--text-heading-1--line-height: 1.15;
|
|
91
|
+
--text-heading-1--font-weight: 700;
|
|
92
|
+
--text-heading-1--letter-spacing: -0.018em;
|
|
93
|
+
--text-display: 2.25rem;
|
|
94
|
+
--text-display--line-height: 1.1;
|
|
95
|
+
--text-display--font-weight: 600;
|
|
96
|
+
--text-display--letter-spacing: -0.026em;
|
|
97
|
+
|
|
98
|
+
--corner-shape: round;
|
|
99
|
+
--corner-radius-fit: 0.5;
|
|
100
|
+
--radius-popover: calc(
|
|
101
|
+
var(--radius-popup-item-fit) +
|
|
102
|
+
clamp(0px, var(--radius-popup-item-fit) * 1000, var(--popover-padding) - var(--nest-safe))
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
--shadow-highlight: oklch(1 0 0 / 0.62);
|
|
106
|
+
--shadow-y: 1;
|
|
107
|
+
--shadow-control-multiplier: 1;
|
|
108
|
+
--shadow-panel-multiplier: 2;
|
|
109
|
+
--shadow-popover-multiplier: 4;
|
|
110
|
+
--shadow-modal-multiplier: 5;
|
|
111
|
+
--shadow-ambient-multiplier: 8;
|
|
112
|
+
|
|
113
|
+
--control-h-xs: round(var(--control-h) * 0.78, 1px);
|
|
114
|
+
--control-h-sm: round(var(--control-h) * 0.89, 1px);
|
|
115
|
+
--control-h-lg: round(var(--control-h) * 1.11, 1px);
|
|
116
|
+
|
|
117
|
+
--badge-neutral: oklch(from var(--foreground) l c h / 0.08);
|
|
118
|
+
--badge-neutral-foreground: var(--foreground);
|
|
119
|
+
--badge-neutral-border: oklch(from var(--foreground) l c h / 0.1);
|
|
120
|
+
--badge-neutral-hover: oklch(from var(--foreground) l c h / 0.12);
|
|
121
|
+
--badge-red: oklch(from var(--color-red-500) l c h / 0.14);
|
|
122
|
+
--badge-red-foreground: var(--color-red-800);
|
|
123
|
+
--badge-red-border: oklch(from var(--color-red-500) l c h / 0.18);
|
|
124
|
+
--badge-red-hover: oklch(from var(--color-red-500) l c h / 0.2);
|
|
125
|
+
--badge-orange: oklch(from var(--color-orange-500) l c h / 0.16);
|
|
126
|
+
--badge-orange-foreground: var(--color-orange-800);
|
|
127
|
+
--badge-orange-border: oklch(from var(--color-orange-500) l c h / 0.2);
|
|
128
|
+
--badge-orange-hover: oklch(from var(--color-orange-500) l c h / 0.24);
|
|
129
|
+
--badge-yellow: oklch(from var(--color-yellow-400) l c h / 0.2);
|
|
130
|
+
--badge-yellow-foreground: var(--color-yellow-900);
|
|
131
|
+
--badge-yellow-border: oklch(from var(--color-yellow-400) l c h / 0.24);
|
|
132
|
+
--badge-yellow-hover: oklch(from var(--color-yellow-400) l c h / 0.28);
|
|
133
|
+
--badge-green: oklch(from var(--color-green-500) l c h / 0.16);
|
|
134
|
+
--badge-green-foreground: var(--color-green-800);
|
|
135
|
+
--badge-green-border: oklch(from var(--color-green-500) l c h / 0.2);
|
|
136
|
+
--badge-green-hover: oklch(from var(--color-green-500) l c h / 0.24);
|
|
137
|
+
--badge-blue: oklch(from var(--color-blue-500) l c h / 0.16);
|
|
138
|
+
--badge-blue-foreground: var(--color-blue-800);
|
|
139
|
+
--badge-blue-border: oklch(from var(--color-blue-500) l c h / 0.2);
|
|
140
|
+
--badge-blue-hover: oklch(from var(--color-blue-500) l c h / 0.24);
|
|
141
|
+
--badge-purple: oklch(from var(--color-purple-500) l c h / 0.16);
|
|
142
|
+
--badge-purple-foreground: var(--color-purple-800);
|
|
143
|
+
--badge-purple-border: oklch(from var(--color-purple-500) l c h / 0.2);
|
|
144
|
+
--badge-purple-hover: oklch(from var(--color-purple-500) l c h / 0.24);
|
|
145
|
+
--badge-pink: oklch(from var(--color-pink-500) l c h / 0.16);
|
|
146
|
+
--badge-pink-foreground: var(--color-pink-800);
|
|
147
|
+
--badge-pink-border: oklch(from var(--color-pink-500) l c h / 0.2);
|
|
148
|
+
--badge-pink-hover: oklch(from var(--color-pink-500) l c h / 0.24);
|
|
149
|
+
|
|
150
|
+
/* tw-scale rungs multiply from THE radius knob; the squircle fallback below re-derives them ×fit */
|
|
151
|
+
--radius-sm: calc(var(--radius) * 0.6);
|
|
152
|
+
--radius-md: calc(var(--radius) * 0.8);
|
|
153
|
+
--radius-lg: var(--radius);
|
|
154
|
+
--radius-xl: calc(var(--radius) * 1.4);
|
|
155
|
+
--radius-2xl: calc(var(--radius) * 1.6);
|
|
156
|
+
|
|
157
|
+
/* Browser clamps rendered radius to half the box's short side, so at large --radius a row's visible
|
|
158
|
+
corner saturates below the --radius-popup-item token. Container must match the visible corner, not
|
|
159
|
+
the token, or it out-rounds the row and the overflow clip cuts it flat. */
|
|
160
|
+
--radius-popup-item-fit: min(var(--radius-popup-item), calc(var(--control-h-xs) / 2));
|
|
161
|
+
/* Sub-pixel guard for concentric nesting in ring-clipped containers. Bump to border+~2px if one ever gets a real border. */
|
|
162
|
+
--nest-safe: 1px;
|
|
163
|
+
/* Corner-fit ratio = 2+sqrt(2): control at gap `g` from corner radius R is sliced once R > ratio*g.
|
|
164
|
+
Caps corners that can outgrow their content inset (code-block --radius-panel vs fixed tab inset)
|
|
165
|
+
at gap*ratio, so header controls never clip. */
|
|
166
|
+
--nest-corner-ratio: 3.41421356;
|
|
167
|
+
--control-h-md: var(--control-h);
|
|
168
|
+
|
|
169
|
+
/* shadcn Sidebar compat: --sidebar* aliases existing tokens; row state derives from --foreground alpha. */
|
|
170
|
+
--sidebar: var(--canvas);
|
|
171
|
+
--sidebar-foreground: var(--foreground);
|
|
172
|
+
--sidebar-primary: var(--primary);
|
|
173
|
+
--sidebar-primary-foreground: var(--primary-foreground);
|
|
174
|
+
--sidebar-accent: var(--hover-fill);
|
|
175
|
+
--sidebar-accent-foreground: var(--foreground);
|
|
176
|
+
--sidebar-border: var(--border);
|
|
177
|
+
--sidebar-ring: var(--ring);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
:where(.dark [data-skin], .dark[data-skin]) {
|
|
181
|
+
--primary-text: oklch(from var(--primary) 0.78 c h);
|
|
182
|
+
--destructive-text: oklch(from var(--destructive) 0.78 c h);
|
|
183
|
+
--shadow-highlight: oklch(1 0 0 / 0.055);
|
|
184
|
+
--badge-neutral: oklch(from var(--foreground) l c h / 0.1);
|
|
185
|
+
--badge-neutral-border: oklch(from var(--foreground) l c h / 0.12);
|
|
186
|
+
--badge-neutral-hover: oklch(from var(--foreground) l c h / 0.14);
|
|
187
|
+
--badge-red: oklch(from var(--color-red-400) l c h / 0.18);
|
|
188
|
+
--badge-red-foreground: var(--color-red-300);
|
|
189
|
+
--badge-red-border: oklch(from var(--color-red-400) l c h / 0.22);
|
|
190
|
+
--badge-red-hover: oklch(from var(--color-red-400) l c h / 0.26);
|
|
191
|
+
--badge-orange: oklch(from var(--color-orange-400) l c h / 0.2);
|
|
192
|
+
--badge-orange-foreground: var(--color-orange-300);
|
|
193
|
+
--badge-orange-border: oklch(from var(--color-orange-400) l c h / 0.24);
|
|
194
|
+
--badge-orange-hover: oklch(from var(--color-orange-400) l c h / 0.28);
|
|
195
|
+
--badge-yellow: oklch(from var(--color-yellow-400) l c h / 0.22);
|
|
196
|
+
--badge-yellow-foreground: var(--color-yellow-300);
|
|
197
|
+
--badge-yellow-border: oklch(from var(--color-yellow-400) l c h / 0.26);
|
|
198
|
+
--badge-yellow-hover: oklch(from var(--color-yellow-400) l c h / 0.3);
|
|
199
|
+
--badge-green: oklch(from var(--color-green-400) l c h / 0.2);
|
|
200
|
+
--badge-green-foreground: var(--color-green-300);
|
|
201
|
+
--badge-green-border: oklch(from var(--color-green-400) l c h / 0.24);
|
|
202
|
+
--badge-green-hover: oklch(from var(--color-green-400) l c h / 0.28);
|
|
203
|
+
--badge-blue: oklch(from var(--color-blue-400) l c h / 0.2);
|
|
204
|
+
--badge-blue-foreground: var(--color-blue-300);
|
|
205
|
+
--badge-blue-border: oklch(from var(--color-blue-400) l c h / 0.24);
|
|
206
|
+
--badge-blue-hover: oklch(from var(--color-blue-400) l c h / 0.28);
|
|
207
|
+
--badge-purple: oklch(from var(--color-purple-400) l c h / 0.2);
|
|
208
|
+
--badge-purple-foreground: var(--color-purple-300);
|
|
209
|
+
--badge-purple-border: oklch(from var(--color-purple-400) l c h / 0.24);
|
|
210
|
+
--badge-purple-hover: oklch(from var(--color-purple-400) l c h / 0.28);
|
|
211
|
+
--badge-pink: oklch(from var(--color-pink-400) l c h / 0.2);
|
|
212
|
+
--badge-pink-foreground: var(--color-pink-300);
|
|
213
|
+
--badge-pink-border: oklch(from var(--color-pink-400) l c h / 0.24);
|
|
214
|
+
--badge-pink-hover: oklch(from var(--color-pink-400) l c h / 0.28);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@theme inline {
|
|
218
|
+
--color-background: var(--background);
|
|
219
|
+
--color-canvas: var(--canvas);
|
|
220
|
+
--color-foreground: var(--foreground);
|
|
221
|
+
--color-card: var(--card);
|
|
222
|
+
--color-card-foreground: var(--card-foreground);
|
|
223
|
+
--color-popover: oklch(from var(--popover) l c h / var(--popover-opacity));
|
|
224
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
225
|
+
--color-primary: var(--primary);
|
|
226
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
227
|
+
--color-primary-text: var(--primary-text);
|
|
228
|
+
--color-muted: var(--muted);
|
|
229
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
230
|
+
--color-secondary: var(--secondary);
|
|
231
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
232
|
+
--color-accent: var(--accent);
|
|
233
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
234
|
+
--color-destructive: var(--destructive);
|
|
235
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
236
|
+
--color-destructive-text: var(--destructive-text);
|
|
237
|
+
--color-border: var(--border);
|
|
238
|
+
--color-input: var(--input);
|
|
239
|
+
--color-ring: var(--ring);
|
|
240
|
+
--color-sidebar: var(--sidebar);
|
|
241
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
242
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
243
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
244
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
245
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
246
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
247
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
248
|
+
|
|
249
|
+
/* Self-references, not values: @theme merges globally across all skin packs in one Tailwind build,
|
|
250
|
+
so a value here could never differ per skin. Self-ref keeps the var alive in the emitted utility,
|
|
251
|
+
so pack-scoped declarations re-value each rung per skin (same shape as --color-primary below). */
|
|
252
|
+
--radius-sm: var(--radius-sm);
|
|
253
|
+
--radius-md: var(--radius-md);
|
|
254
|
+
--radius-lg: var(--radius-lg);
|
|
255
|
+
--radius-xl: var(--radius-xl);
|
|
256
|
+
--radius-2xl: var(--radius-2xl);
|
|
257
|
+
--radius-field: var(--radius-field);
|
|
258
|
+
--radius-panel: var(--radius-panel);
|
|
259
|
+
--radius-scene: var(--radius-scene);
|
|
260
|
+
|
|
261
|
+
/* Same self-reference shape; rungs + paired line-height/weight/tracking live in each skin theme. */
|
|
262
|
+
--text-micro: var(--text-micro);
|
|
263
|
+
--text-caption: var(--text-caption);
|
|
264
|
+
--text-label: var(--text-label);
|
|
265
|
+
--text-body: var(--text-body);
|
|
266
|
+
--text-body-lg: var(--text-body-lg);
|
|
267
|
+
--text-heading-4: var(--text-heading-4);
|
|
268
|
+
--text-heading-4--line-height: var(--text-heading-4--line-height);
|
|
269
|
+
--text-heading-4--font-weight: var(--text-heading-4--font-weight);
|
|
270
|
+
--text-heading-3: var(--text-heading-3);
|
|
271
|
+
--text-heading-3--line-height: var(--text-heading-3--line-height);
|
|
272
|
+
--text-heading-3--font-weight: var(--text-heading-3--font-weight);
|
|
273
|
+
--text-heading-2: var(--text-heading-2);
|
|
274
|
+
--text-heading-2--line-height: var(--text-heading-2--line-height);
|
|
275
|
+
--text-heading-2--font-weight: var(--text-heading-2--font-weight);
|
|
276
|
+
--text-heading-1: var(--text-heading-1);
|
|
277
|
+
--text-heading-1--line-height: var(--text-heading-1--line-height);
|
|
278
|
+
--text-heading-1--font-weight: var(--text-heading-1--font-weight);
|
|
279
|
+
--text-heading-1--letter-spacing: var(--text-heading-1--letter-spacing);
|
|
280
|
+
--text-display: var(--text-display);
|
|
281
|
+
--text-display--line-height: var(--text-display--line-height);
|
|
282
|
+
--text-display--font-weight: var(--text-display--font-weight);
|
|
283
|
+
--text-display--letter-spacing: var(--text-display--letter-spacing);
|
|
284
|
+
|
|
285
|
+
/* Generates font-body/font-display utilities off role tokens above; skin re-values one alone to re-face all headings/body. */
|
|
286
|
+
--font-body: var(--font-body);
|
|
287
|
+
--font-display: var(--font-display);
|
|
288
|
+
|
|
289
|
+
/* Global knobs (size/opacity/y) + tier multipliers keep control/panel/popover/modal/ambient shadows
|
|
290
|
+
distinct without per-component math. Each tier layers tight+mid+long alphas for one soft umber
|
|
291
|
+
penumbra ("soft daylight"); every length multiplies the global knobs so --shadow-size:0 flattens all. */
|
|
292
|
+
--shadow-xs:
|
|
293
|
+
inset 0 1px 0 oklch(from var(--shadow-highlight) l c h / calc(alpha * var(--shadow-opacity) * min(var(--shadow-size), 1))),
|
|
294
|
+
0 calc(1px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
295
|
+
calc(1.5px * var(--shadow-size) * var(--shadow-control-multiplier)) calc(-0.5px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
296
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
297
|
+
0 calc(2px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
298
|
+
calc(4px * var(--shadow-size) * var(--shadow-control-multiplier)) calc(-2px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
299
|
+
oklch(from var(--shadow-color) l c h / calc(0.04 * var(--shadow-opacity)));
|
|
300
|
+
--shadow-sm:
|
|
301
|
+
inset 0 1px 0
|
|
302
|
+
oklch(from var(--shadow-highlight) l c h / calc(alpha * var(--shadow-opacity) * min(var(--shadow-size), 1))),
|
|
303
|
+
0 calc(1px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
304
|
+
calc(1px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
305
|
+
calc(-0.5px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
306
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
307
|
+
0 calc(2px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
308
|
+
calc(4px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
309
|
+
calc(-1px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
310
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
311
|
+
0 calc(4px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
312
|
+
calc(10px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
313
|
+
calc(-2px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
314
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity)));
|
|
315
|
+
--shadow-md:
|
|
316
|
+
inset 0 1px 0
|
|
317
|
+
oklch(from var(--shadow-highlight) l c h / calc(alpha * var(--shadow-opacity) * min(var(--shadow-size), 1))),
|
|
318
|
+
0 calc(1px * var(--shadow-size) * var(--shadow-panel-multiplier) * var(--shadow-y))
|
|
319
|
+
calc(1.5px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
320
|
+
calc(-0.5px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
321
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
322
|
+
0 calc(2.5px * var(--shadow-size) * var(--shadow-panel-multiplier) * var(--shadow-y))
|
|
323
|
+
calc(5px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
324
|
+
calc(-1.5px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
325
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
326
|
+
0 calc(5px * var(--shadow-size) * var(--shadow-panel-multiplier) * var(--shadow-y))
|
|
327
|
+
calc(10px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
328
|
+
calc(-2.5px * var(--shadow-size) * var(--shadow-panel-multiplier))
|
|
329
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity)));
|
|
330
|
+
--shadow-pop:
|
|
331
|
+
inset 0 1px 0
|
|
332
|
+
oklch(from var(--shadow-highlight) l c h / calc(alpha * var(--shadow-opacity) * min(var(--shadow-size), 1))),
|
|
333
|
+
0 calc(0.5px * var(--shadow-size) * var(--shadow-popover-multiplier) * var(--shadow-y))
|
|
334
|
+
calc(0.75px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
335
|
+
calc(-0.25px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
336
|
+
oklch(from var(--shadow-color) l c h / calc(0.04 * var(--shadow-opacity))),
|
|
337
|
+
0 calc(1.5px * var(--shadow-size) * var(--shadow-popover-multiplier) * var(--shadow-y))
|
|
338
|
+
calc(3px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
339
|
+
calc(-0.75px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
340
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
341
|
+
0 calc(3px * var(--shadow-size) * var(--shadow-popover-multiplier) * var(--shadow-y))
|
|
342
|
+
calc(6px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
343
|
+
calc(-1.5px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
344
|
+
oklch(from var(--shadow-color) l c h / calc(0.06 * var(--shadow-opacity))),
|
|
345
|
+
0 calc(6px * var(--shadow-size) * var(--shadow-popover-multiplier) * var(--shadow-y))
|
|
346
|
+
calc(14px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
347
|
+
calc(-3px * var(--shadow-size) * var(--shadow-popover-multiplier))
|
|
348
|
+
oklch(from var(--shadow-color) l c h / calc(0.07 * var(--shadow-opacity))); /* floating popovers */
|
|
349
|
+
--shadow-modal:
|
|
350
|
+
inset 0 1px 0
|
|
351
|
+
oklch(from var(--shadow-highlight) l c h / calc(alpha * var(--shadow-opacity) * min(var(--shadow-size), 1))),
|
|
352
|
+
0 calc(0.6px * var(--shadow-size) * var(--shadow-modal-multiplier) * var(--shadow-y))
|
|
353
|
+
calc(1px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
354
|
+
calc(-0.3px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
355
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
356
|
+
0 calc(1.6px * var(--shadow-size) * var(--shadow-modal-multiplier) * var(--shadow-y))
|
|
357
|
+
calc(3.2px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
358
|
+
calc(-0.8px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
359
|
+
oklch(from var(--shadow-color) l c h / calc(0.06 * var(--shadow-opacity))),
|
|
360
|
+
0 calc(3.4px * var(--shadow-size) * var(--shadow-modal-multiplier) * var(--shadow-y))
|
|
361
|
+
calc(7px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
362
|
+
calc(-1.6px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
363
|
+
oklch(from var(--shadow-color) l c h / calc(0.07 * var(--shadow-opacity))),
|
|
364
|
+
0 calc(7px * var(--shadow-size) * var(--shadow-modal-multiplier) * var(--shadow-y))
|
|
365
|
+
calc(16px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
366
|
+
calc(-3px * var(--shadow-size) * var(--shadow-modal-multiplier))
|
|
367
|
+
oklch(from var(--shadow-color) l c h / calc(0.1 * var(--shadow-opacity))); /* dialogs and sheets */
|
|
368
|
+
--shadow-soft:
|
|
369
|
+
0 calc(0.75px * var(--shadow-size) * var(--shadow-ambient-multiplier) * var(--shadow-y))
|
|
370
|
+
calc(2px * var(--shadow-size) * var(--shadow-ambient-multiplier)) calc(-0.75px * var(--shadow-size) * var(--shadow-ambient-multiplier))
|
|
371
|
+
oklch(from var(--shadow-color) l c h / calc(0.03 * var(--shadow-opacity))),
|
|
372
|
+
0 calc(2px * var(--shadow-size) * var(--shadow-ambient-multiplier) * var(--shadow-y))
|
|
373
|
+
calc(5px * var(--shadow-size) * var(--shadow-ambient-multiplier)) calc(-1.5px * var(--shadow-size) * var(--shadow-ambient-multiplier))
|
|
374
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))),
|
|
375
|
+
0 calc(4.5px * var(--shadow-size) * var(--shadow-ambient-multiplier) * var(--shadow-y))
|
|
376
|
+
calc(12px * var(--shadow-size) * var(--shadow-ambient-multiplier)) calc(-2.5px * var(--shadow-size) * var(--shadow-ambient-multiplier))
|
|
377
|
+
oklch(from var(--shadow-color) l c h / calc(0.05 * var(--shadow-opacity))); /* ambient lift */
|
|
378
|
+
|
|
379
|
+
--shadow-inset:
|
|
380
|
+
inset 0 calc(1px * var(--shadow-size) * var(--shadow-control-multiplier) * var(--shadow-y))
|
|
381
|
+
calc(2px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
382
|
+
oklch(from var(--shadow-color) l c h / calc(0.06 * var(--shadow-opacity))),
|
|
383
|
+
inset 0 0 calc(4px * var(--shadow-size) * var(--shadow-control-multiplier))
|
|
384
|
+
oklch(from var(--shadow-color) l c h / calc(0.04 * var(--shadow-opacity)));
|
|
385
|
+
|
|
386
|
+
/* bare `transition*` utilities inherit the themed curve + tempo */
|
|
387
|
+
--default-transition-duration: var(--duration-fast);
|
|
388
|
+
--default-transition-timing-function: var(--ease-standard);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
@layer base {
|
|
392
|
+
/* v4 defaults border/divide color to currentColor; restore themed border (same rule shadcn v4 ships, host merge is harmless). */
|
|
393
|
+
/* border-box origin too: default padding-box origin + border-box clip + repeat tiles the gradient's far end into a translucent border ring (--border carries alpha in most packs). Escape hatch: bg-origin-padding. */
|
|
394
|
+
*,
|
|
395
|
+
::after,
|
|
396
|
+
::before {
|
|
397
|
+
border-color: var(--border);
|
|
398
|
+
background-origin: border-box;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
@supports (corner-shape: squircle) {
|
|
402
|
+
:where([data-control-ui][data-slot]) {
|
|
403
|
+
corner-shape: var(--corner-shape);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/* Squircle w/o corner-shape support falls back to plain round radius, reading over-rounded; shrink
|
|
408
|
+
fallback by --corner-radius-fit to track Chrome's squircle. Gated on live --corner-shape via style
|
|
409
|
+
query (fires only when squircle selected); re-declared on DA elements since skin-root tokens bake var(--radius) at their root, unreachable by descendant override. No style-query support = current fallback. */
|
|
410
|
+
@supports not (corner-shape: squircle) {
|
|
411
|
+
@container style(--corner-shape: squircle) {
|
|
412
|
+
:where([data-control-ui][data-slot]) {
|
|
413
|
+
/* Halve base control radius; concentric popup/popover tokens re-derive from it, no second factor needed. */
|
|
414
|
+
--radius-control: calc(var(--radius) * 2 * var(--corner-radius-fit));
|
|
415
|
+
--radius-popup-item: calc(var(--radius-control) * 0.6);
|
|
416
|
+
--radius-popup-item-fit: min(var(--radius-popup-item), calc(var(--control-h-xs) / 2));
|
|
417
|
+
--radius-popover: calc(
|
|
418
|
+
var(--radius-popup-item-fit) +
|
|
419
|
+
clamp(0px, var(--radius-popup-item-fit) * 1000, var(--popover-padding) - var(--nest-safe))
|
|
420
|
+
);
|
|
421
|
+
/* Each derives straight from --radius; must mirror the :where([data-skin]) scale above ×fit. */
|
|
422
|
+
--radius-sm: calc(var(--radius) * 0.6 * var(--corner-radius-fit));
|
|
423
|
+
--radius-md: calc(var(--radius) * 0.8 * var(--corner-radius-fit));
|
|
424
|
+
--radius-lg: calc(var(--radius) * var(--corner-radius-fit));
|
|
425
|
+
--radius-xl: calc(var(--radius) * 1.4 * var(--corner-radius-fit));
|
|
426
|
+
--radius-2xl: calc(var(--radius) * 1.6 * var(--corner-radius-fit));
|
|
427
|
+
--radius-field: calc(var(--radius) * 2.2 * var(--corner-radius-fit));
|
|
428
|
+
--radius-panel: calc(var(--radius) * 2.6 * var(--corner-radius-fit));
|
|
429
|
+
--radius-scene: calc(var(--radius) * 2.8 * var(--corner-radius-fit));
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@layer components {
|
|
436
|
+
/* THE keyboard focus indicator, for every Control UI element in one rule. An outline, not a
|
|
437
|
+
box-shadow: a skin that re-paints box-shadow cannot erase it, and forced-colors mode repaints
|
|
438
|
+
outline-color with a system color while it drops box-shadow entirely. Opt OUT (a part that takes
|
|
439
|
+
programmatic focus but is not a target) by re-valuing --focus-ring-width to 0px on that part.
|
|
440
|
+
A control rendered as a <label> never takes focus itself — the input it wraps does, and a part
|
|
441
|
+
nested inside a composed control (an input inside InputGroup) lets that shell carry the ring so
|
|
442
|
+
it wraps the whole field instead of one part of it. */
|
|
443
|
+
:where([data-control-family]):focus-visible,
|
|
444
|
+
:where([data-control-family][data-control="true"]):has(:focus-visible) {
|
|
445
|
+
outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring);
|
|
446
|
+
outline-offset: var(--focus-ring-offset);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
:where([data-control-family][data-control="true"] [data-control-family]):focus-visible {
|
|
450
|
+
outline-width: 0;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
@media (forced-colors: active) {
|
|
454
|
+
:where([data-control-family]):focus-visible,
|
|
455
|
+
:where([data-control-family][data-control="true"]):has(:focus-visible) {
|
|
456
|
+
outline-color: transparent;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
:where([data-control-ui="chat-message"][data-slot="root"], [data-control-ui="chat-composer"][data-slot="root"]) {
|
|
461
|
+
opacity: 1;
|
|
462
|
+
filter: none;
|
|
463
|
+
translate: 0 0;
|
|
464
|
+
scale: 1;
|
|
465
|
+
transition:
|
|
466
|
+
opacity var(--duration-slow) var(--ease-emphasized),
|
|
467
|
+
filter var(--duration-slow) var(--ease-emphasized),
|
|
468
|
+
translate var(--duration-slow) var(--ease-emphasized),
|
|
469
|
+
scale var(--duration-slow) var(--ease-emphasized);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
@starting-style {
|
|
473
|
+
:where([data-control-ui="chat-message"][data-slot="root"]) {
|
|
474
|
+
opacity: 0;
|
|
475
|
+
filter: blur(8px);
|
|
476
|
+
translate: 0 0.5rem;
|
|
477
|
+
scale: 0.985;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
:where([data-control-ui="chat-composer"][data-slot="root"]) {
|
|
481
|
+
opacity: 0;
|
|
482
|
+
filter: blur(10px);
|
|
483
|
+
translate: 0 0.75rem;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/* Cross-slide switch, shared by every surface that swaps one panel for another (tabs panels, inline
|
|
488
|
+
citation sources). Contract: the element owning the switch carries data-slide="scope", each swapped
|
|
489
|
+
child data-slide="panel" plus the lifecycle attributes — inert, data-starting-style /
|
|
490
|
+
data-ending-style, data-activation-direction. Base UI stamps those on tabs panels; inline citation
|
|
491
|
+
stamps its own. Keyed on the role, not on a component, so a new caller opts in with two attributes. */
|
|
492
|
+
:where([data-slide="panel"]) {
|
|
493
|
+
translate: 0 0;
|
|
494
|
+
/* No opacity fade: panels unmount, fade-in from 0 would flash empty frame; slide-only keeps content opaque. */
|
|
495
|
+
transition: translate var(--duration-slow) var(--ease-emphasized);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* Fallback switch (no anchor positioning): the outgoing panel stays mounted+inert until its exit
|
|
499
|
+
anim finishes; two in-flow panels would stack, so the exiting one is pulled from layout the moment
|
|
500
|
+
it's inert and the entering one gets a soft directional nudge. Active panel is never `inert`. */
|
|
501
|
+
:where([data-slide="panel"][inert]) {
|
|
502
|
+
display: none;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="left"]) {
|
|
506
|
+
translate: -0.35rem 0;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="right"]) {
|
|
510
|
+
translate: 0.35rem 0;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="up"]) {
|
|
514
|
+
translate: 0 -0.35rem;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="down"]) {
|
|
518
|
+
translate: 0 0.35rem;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/* True cross-slide (anchor positioning, Limited → @supports per the CSS-first rule): the exiting
|
|
522
|
+
panel is revived and glued edge-to-edge onto the entering panel's box (anchor = the open panel).
|
|
523
|
+
Anchor offsets track the anchor's translated box every frame, so the pair travel as ONE strip
|
|
524
|
+
driven by a single transition — the entering panel's ±100% slide — whatever wrapper the panels
|
|
525
|
+
happen to live in (they are not always the scope's direct children). */
|
|
526
|
+
@supports ((anchor-name: --aui-slide-panel) and (anchor-scope: --aui-slide-panel)) {
|
|
527
|
+
/* Per-instance scope: without it the exiting panel would anchor onto the LAST open panel in the
|
|
528
|
+
whole document — another instance's panel. Nested scopes re-scope, so names never leak. */
|
|
529
|
+
:where([data-slide="scope"]) {
|
|
530
|
+
anchor-scope: --aui-slide-panel;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
:where([data-slide="panel"]:not([inert])) {
|
|
534
|
+
anchor-name: --aui-slide-panel;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/* display:block revives the fallback-hidden panel; anchor-size clips a longer outgoing panel to
|
|
538
|
+
the incoming one's box mid-slide. The per-direction glue below does the placement; a panel with
|
|
539
|
+
direction "none" gets no glue and no hold, i.e. the instant fallback swap. */
|
|
540
|
+
:where([data-slide="panel"][inert][data-ending-style]) {
|
|
541
|
+
display: block;
|
|
542
|
+
position: absolute;
|
|
543
|
+
position-anchor: --aui-slide-panel;
|
|
544
|
+
width: anchor-size(width);
|
|
545
|
+
height: anchor-size(height);
|
|
546
|
+
overflow: clip;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
/* The panels' direct parent turns containing block + crops the ±100% travel while a switch is in
|
|
550
|
+
flight (an absolutely positioned exiting panel escapes the overflow of non-positioned ancestors). */
|
|
551
|
+
:where(:has(> [data-slide="panel"][data-ending-style])) {
|
|
552
|
+
position: relative;
|
|
553
|
+
overflow: clip;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/* Glue = trailing edge of the strip; the hold animation is what keeps Base UI from unmounting the
|
|
557
|
+
exiting panel mid-slide (it waits on the panel's own animations, and the glue isn't one). */
|
|
558
|
+
:where([data-slide="panel"][inert][data-ending-style][data-activation-direction="left"]) {
|
|
559
|
+
top: anchor(top);
|
|
560
|
+
left: anchor(right);
|
|
561
|
+
animation: aui-slide-exit-hold var(--duration-slow) var(--ease-emphasized) both;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
:where([data-slide="panel"][inert][data-ending-style][data-activation-direction="right"]) {
|
|
565
|
+
top: anchor(top);
|
|
566
|
+
right: anchor(left);
|
|
567
|
+
animation: aui-slide-exit-hold var(--duration-slow) var(--ease-emphasized) both;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
:where([data-slide="panel"][inert][data-ending-style][data-activation-direction="up"]) {
|
|
571
|
+
left: anchor(left);
|
|
572
|
+
top: anchor(bottom);
|
|
573
|
+
animation: aui-slide-exit-hold var(--duration-slow) var(--ease-emphasized) both;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
:where([data-slide="panel"][inert][data-ending-style][data-activation-direction="down"]) {
|
|
577
|
+
left: anchor(left);
|
|
578
|
+
bottom: anchor(top);
|
|
579
|
+
animation: aui-slide-exit-hold var(--duration-slow) var(--ease-emphasized) both;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="left"]) {
|
|
583
|
+
translate: -100% 0;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="right"]) {
|
|
587
|
+
translate: 100% 0;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="up"]) {
|
|
591
|
+
translate: 0 -100%;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
:where([data-slide="panel"][data-starting-style][data-activation-direction="down"]) {
|
|
595
|
+
translate: 0 100%;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/* Height morph: auto→auto never transitions, so the entering panel starts at the outgoing panel's
|
|
599
|
+
measured height (--aui-slide-prev-height, stamped by the component just before the switch) and
|
|
600
|
+
eases to its own intrinsic height — calc-size() makes the auto endpoint interpolable. The glued
|
|
601
|
+
exiting panel follows via anchor-size(height), so the whole strip resizes as one; overflow
|
|
602
|
+
mid-morph is cropped by the parent clip already active for the slide. :not([inert]) keeps this
|
|
603
|
+
off the exiting panel, whose height must stay anchor-size(height). */
|
|
604
|
+
@supports (height: calc-size(auto, size)) {
|
|
605
|
+
:where([data-slide="panel"]:not([inert])) {
|
|
606
|
+
height: calc-size(auto, size);
|
|
607
|
+
transition:
|
|
608
|
+
translate var(--duration-slow) var(--ease-emphasized),
|
|
609
|
+
height var(--duration-slow) var(--ease-emphasized);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
:where([data-slide="panel"][data-starting-style]) {
|
|
613
|
+
height: var(--aui-slide-prev-height, calc-size(auto, size));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
/* Visually inert 0.999→1 hold: exists purely so the exiting panel reports a running animation for
|
|
619
|
+
the slide's duration. Rides the motion tokens, so reduced motion collapses it to an instant swap. */
|
|
620
|
+
@keyframes aui-slide-exit-hold {
|
|
621
|
+
from {
|
|
622
|
+
opacity: 0.999;
|
|
623
|
+
}
|
|
624
|
+
to {
|
|
625
|
+
opacity: 1;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Type scale, canonical excerpt. Tokens live in the installed theme; this is the docs-facing font-size-only slice.
|
|
3
|
+
* ONE rung per size by ROLE — only source of font-size; never text-[Npx] or Tailwind's text-xs/sm defaults. Paired --line-height/--font-weight ride along per rung.
|
|
4
|
+
*/
|
|
5
|
+
@theme {
|
|
6
|
+
/* Body/UI family: 10-16px band, ~95% of interface text; line-height stays a utility (leading-*) for per-surface density. */
|
|
7
|
+
--text-micro: 0.625rem; /* 10px — kbd, badge counters, dense numeric meta */
|
|
8
|
+
--text-caption: 0.6875rem; /* 11px — overlines, timestamps, section / group labels */
|
|
9
|
+
--text-label: 0.75rem; /* 12px — form labels + small chrome (nav item, tooltip, shortcut) */
|
|
10
|
+
--text-body: 0.875rem; /* 14px — DEFAULT body & control text (the workhorse) */
|
|
11
|
+
--text-body-lg: 1rem; /* 16px — emphasized / larger body */
|
|
12
|
+
|
|
13
|
+
/* Heading family: HIERARCHY, numbered (heading-1=largest); each pairs line-height+weight so `text-heading-N`
|
|
14
|
+
carries all three, letting a skin retune headings by re-valuing these alone. */
|
|
15
|
+
--text-heading-4: 0.9375rem; /* 15px */
|
|
16
|
+
--text-heading-4--line-height: 1.4;
|
|
17
|
+
--text-heading-4--font-weight: 600;
|
|
18
|
+
--text-heading-3: 1.125rem; /* 18px */
|
|
19
|
+
--text-heading-3--line-height: 1.35;
|
|
20
|
+
--text-heading-3--font-weight: 600;
|
|
21
|
+
--text-heading-2: 1.375rem; /* 22px */
|
|
22
|
+
--text-heading-2--line-height: 1.25;
|
|
23
|
+
--text-heading-2--font-weight: 600;
|
|
24
|
+
--text-heading-1: 1.875rem; /* 30px — content h1 */
|
|
25
|
+
--text-heading-1--line-height: 1.15;
|
|
26
|
+
--text-heading-1--font-weight: 700;
|
|
27
|
+
--text-heading-1--letter-spacing: -0.01em;
|
|
28
|
+
|
|
29
|
+
/* display — the biggest rung, above the content h1: page titles (PageHeader) and heroes. */
|
|
30
|
+
--text-display: 2.25rem; /* 36px */
|
|
31
|
+
--text-display--line-height: 1.1;
|
|
32
|
+
--text-display--font-weight: 600;
|
|
33
|
+
--text-display--letter-spacing: -0.02em;
|
|
34
|
+
|
|
35
|
+
/* Font ROLES: body+display default to --font-sans; brand re-values ONE token for headings(font-display)/body(font-body)
|
|
36
|
+
own face. Headings apply `font-display` utility on element (font-family isn't a paired --text-* prop). */
|
|
37
|
+
--font-body: var(--font-sans);
|
|
38
|
+
--font-display: var(--font-sans);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* History: fixed 3 competing type systems (Tailwind defaults + named rungs + raw text-[Npx]) into one rung/role; 14px = body.
|
|
43
|
+
* Usage: apply utility directly to element (no <Text> component), e.g. text-heading-1 on <h1>, text-body on <p>.
|
|
44
|
+
* Control chrome text is sized by its recipe (`--cui-button-font-size`, `--cui-field-font-size`), not by these utilities.
|
|
45
|
+
*/
|