@ctrl-ui/react 0.8.7 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-bar.d.ts +15 -7
- package/dist/action-bar.js +40 -20
- package/dist/activity.js +8 -16
- package/dist/audio-recorder.d.ts +14 -4
- package/dist/audio-recorder.js +82 -29
- package/dist/audio-visualizer.js +1 -1
- package/dist/blocks/coding-agent.js +39 -39
- package/dist/blocks/design-canvas-inspector.js +2 -2
- package/dist/blocks/design-canvas.d.ts +5 -1
- package/dist/blocks/design-canvas.js +200 -94
- package/dist/blocks/discussion.d.ts +28 -0
- package/dist/blocks/discussion.js +67 -0
- package/dist/blocks/file-explorer-data.d.ts +1 -0
- package/dist/blocks/file-explorer-data.js +4 -1
- package/dist/blocks/file-explorer.d.ts +9 -1
- package/dist/blocks/file-explorer.js +461 -192
- package/dist/blocks/settings.d.ts +2 -1
- package/dist/blocks/settings.js +102 -80
- package/dist/blocks/team-chat.d.ts +12 -0
- package/dist/blocks/team-chat.js +26 -0
- package/dist/blocks/theme-toggle.js +23 -31
- package/dist/chat-composer-attachment.d.ts +4 -1
- package/dist/chat-composer-attachment.js +35 -10
- package/dist/chat-composer-editor/extensions/mention.d.ts +5 -1
- package/dist/chat-composer-editor/extensions/mention.js +58 -27
- package/dist/chat-composer-editor/ghost.js +2 -4
- package/dist/chat-composer-editor/types.d.ts +5 -0
- package/dist/chat-composer-editor.d.ts +1 -1
- package/dist/chat-composer-editor.js +57 -30
- package/dist/chat-composer.d.ts +13 -32
- package/dist/chat-composer.js +53 -13
- package/dist/chat-layout.d.ts +19 -0
- package/dist/chat-layout.js +91 -40
- package/dist/chat-message/social.d.ts +26 -0
- package/dist/chat-message/social.js +122 -0
- package/dist/chat-message.d.ts +28 -29
- package/dist/chat-message.js +106 -25
- package/dist/context.d.ts +2 -2
- package/dist/context.js +39 -24
- package/dist/dynamic-notification-canvas-loop.d.ts +24 -0
- package/dist/dynamic-notification-canvas-loop.js +113 -0
- package/dist/dynamic-notification-glass.js +23 -114
- package/dist/dynamic-notification-liquid.js +14 -118
- package/dist/dynamic-notification.d.ts +16 -8
- package/dist/dynamic-notification.js +86 -23
- package/dist/email/email-brand.d.ts +7 -4
- package/dist/email/email-brand.js +9 -6
- package/dist/email/email-code.d.ts +3 -2
- package/dist/email/email-code.js +11 -9
- package/dist/email/email-footer.d.ts +5 -3
- package/dist/email/email-footer.js +11 -5
- package/dist/email/email.d.ts +31 -9
- package/dist/email/email.js +50 -26
- package/dist/email/templates.d.ts +10 -9
- package/dist/email/templates.js +102 -38
- package/dist/email/theme.js +1 -1
- package/dist/environment-variables.d.ts +4 -2
- package/dist/environment-variables.js +52 -32
- package/dist/filter-bar/editor.js +20 -8
- package/dist/filter-bar/model.d.ts +1 -0
- package/dist/filter-bar/model.js +10 -1
- package/dist/filter-bar/motion.js +4 -4
- package/dist/filter-bar/parts.js +20 -9
- package/dist/filter-bar/types.d.ts +1 -0
- package/dist/filter-bar.js +20 -14
- package/dist/hooks/use-audio-recorder.js +12 -6
- package/dist/hooks/use-chat-composer.d.ts +19 -7
- package/dist/hooks/use-chat-composer.js +32 -5
- package/dist/hooks/use-chat-message.d.ts +28 -2
- package/dist/hooks/use-chat-message.js +41 -10
- package/dist/hooks/use-chat-thread-scroll.js +43 -7
- package/dist/hooks/use-color-area.d.ts +3 -3
- package/dist/hooks/use-color-area.js +13 -12
- package/dist/hooks/use-copy-to-clipboard.d.ts +2 -1
- package/dist/hooks/use-copy-to-clipboard.js +20 -20
- package/dist/hooks/use-dynamic-notification.d.ts +6 -2
- package/dist/hooks/use-dynamic-notification.js +26 -10
- package/dist/hooks/use-mobile.d.ts +3 -2
- package/dist/hooks/use-mobile.js +8 -4
- package/dist/hooks/use-textarea-trigger-menu.js +2 -1
- package/dist/hooks/use-trigger-menu.d.ts +54 -0
- package/dist/hooks/use-trigger-menu.js +102 -47
- package/dist/hooks/use-user-ask.d.ts +2 -0
- package/dist/hooks/use-user-ask.js +35 -41
- package/dist/inline-attachment.d.ts +6 -2
- package/dist/inline-attachment.js +36 -15
- package/dist/inline-citation.d.ts +12 -5
- package/dist/inline-citation.js +26 -17
- package/dist/knob-contracts/audio-recorder-knobs.d.ts +1 -1
- package/dist/knob-contracts/audio-recorder-knobs.js +2 -1
- package/dist/knob-contracts/audio-visualizer-knobs.d.ts +1 -1
- package/dist/knob-contracts/audio-visualizer-knobs.js +2 -1
- package/dist/knob-contracts/avatar-knobs.d.ts +1 -1
- package/dist/knob-contracts/avatar-knobs.js +6 -1
- package/dist/knob-contracts/badge-knobs.d.ts +1 -1
- package/dist/knob-contracts/badge-knobs.js +2 -1
- package/dist/knob-contracts/breadcrumb-knobs.d.ts +4 -0
- package/dist/knob-contracts/breadcrumb-knobs.js +8 -0
- package/dist/knob-contracts/button-knobs.d.ts +1 -1
- package/dist/knob-contracts/button-knobs.js +1 -0
- package/dist/knob-contracts/chat-message-knobs.d.ts +1 -1
- package/dist/knob-contracts/chat-message-knobs.js +8 -1
- package/dist/knob-contracts/code-diff-knobs.d.ts +1 -1
- package/dist/knob-contracts/code-diff-knobs.js +2 -0
- package/dist/knob-contracts/code-knobs.d.ts +1 -1
- package/dist/knob-contracts/code-knobs.js +2 -1
- package/dist/knob-contracts/dynamic-notification-knobs.d.ts +1 -1
- package/dist/knob-contracts/dynamic-notification-knobs.js +2 -0
- package/dist/knob-contracts/emoji-picker-knobs.d.ts +4 -0
- package/dist/knob-contracts/emoji-picker-knobs.js +10 -0
- package/dist/knob-contracts/field-knobs.d.ts +1 -1
- package/dist/knob-contracts/field-knobs.js +5 -1
- package/dist/knob-contracts/filter-bar-knobs.d.ts +1 -1
- package/dist/knob-contracts/filter-bar-knobs.js +1 -2
- package/dist/knob-contracts/markdown-knobs.d.ts +1 -1
- package/dist/knob-contracts/markdown-knobs.js +3 -1
- package/dist/knob-contracts/page-layout-knobs.d.ts +1 -1
- package/dist/knob-contracts/page-layout-knobs.js +2 -1
- package/dist/knob-contracts/popup-knobs.d.ts +1 -1
- package/dist/knob-contracts/popup-knobs.js +27 -0
- package/dist/knob-contracts/range-knobs.d.ts +1 -1
- package/dist/knob-contracts/range-knobs.js +1 -0
- package/dist/knob-contracts/rich-tooltip-knobs.d.ts +1 -1
- package/dist/knob-contracts/rich-tooltip-knobs.js +2 -1
- package/dist/knob-contracts/sidebar-knobs.d.ts +1 -1
- package/dist/knob-contracts/sidebar-knobs.js +27 -2
- package/dist/knob-contracts/spinner-knobs.d.ts +1 -1
- package/dist/knob-contracts/spinner-knobs.js +1 -1
- package/dist/knob-contracts/stepper-knobs.d.ts +1 -1
- package/dist/knob-contracts/stepper-knobs.js +4 -1
- package/dist/knob-contracts/switch-knobs.d.ts +1 -1
- package/dist/knob-contracts/switch-knobs.js +5 -0
- package/dist/knob-contracts/table-of-contents-knobs.d.ts +1 -1
- package/dist/knob-contracts/table-of-contents-knobs.js +2 -1
- package/dist/knob-contracts/tabs-knobs.d.ts +1 -1
- package/dist/knob-contracts/tabs-knobs.js +1 -0
- package/dist/knob-contracts/tree-knobs.d.ts +1 -1
- package/dist/knob-contracts/tree-knobs.js +2 -1
- package/dist/lib/cn.js +0 -4
- package/dist/lib/contrast.d.ts +1 -0
- package/dist/lib/contrast.js +17 -5
- package/dist/lib/dropzone-validation.js +41 -28
- package/dist/lib/env-file.d.ts +1 -1
- package/dist/lib/env-file.js +5 -5
- package/dist/lib/motion.d.ts +4 -0
- package/dist/lib/motion.js +15 -0
- package/dist/lib/phone-input-format.js +1 -1
- package/dist/lib/trigger-detect.js +6 -8
- package/dist/markdown-block.js +2 -1
- package/dist/popup-parts.d.ts +8 -0
- package/dist/popup-parts.js +43 -0
- package/dist/source-badge.js +3 -1
- package/dist/styles/code.css +0 -2
- package/dist/styles/effects.css +6 -32
- package/dist/styles/index.css +10 -5
- package/dist/styles/recipes/accordion.css +9 -6
- package/dist/styles/recipes/action-bar.css +0 -15
- package/dist/styles/recipes/activity.css +5 -11
- package/dist/styles/recipes/alert.css +4 -4
- package/dist/styles/recipes/audio-recorder.css +15 -3
- package/dist/styles/recipes/audio-visualizer.css +13 -2
- package/dist/styles/recipes/avatar.css +78 -1
- package/dist/styles/recipes/badge.css +14 -4
- package/dist/styles/recipes/breadcrumb.css +77 -0
- package/dist/styles/recipes/button-group.css +5 -7
- package/dist/styles/recipes/button-states.css +66 -0
- package/dist/styles/recipes/button.css +24 -83
- package/dist/styles/recipes/calendar.css +17 -23
- package/dist/styles/recipes/card.css +2 -2
- package/dist/styles/recipes/chat-composer-attachment.css +9 -3
- package/dist/styles/recipes/chat-composer.css +7 -10
- package/dist/styles/recipes/chat-layout.css +35 -0
- package/dist/styles/recipes/chat-message-social.css +123 -0
- package/dist/styles/recipes/chat-message.css +157 -37
- package/dist/styles/recipes/choice.css +18 -21
- package/dist/styles/recipes/code-diff.css +46 -33
- package/dist/styles/recipes/code.css +36 -16
- package/dist/styles/recipes/collapsible.css +7 -2
- package/dist/styles/recipes/color-picker-details.css +3 -4
- package/dist/styles/recipes/color-picker-values.css +9 -8
- package/dist/styles/recipes/color-picker.css +11 -2
- package/dist/styles/recipes/context.css +3 -3
- package/dist/styles/recipes/dockable-panel.css +7 -4
- package/dist/styles/recipes/dropzone.css +7 -8
- package/dist/styles/recipes/dynamic-notification-input.css +8 -5
- package/dist/styles/recipes/dynamic-notification-motion.css +12 -21
- package/dist/styles/recipes/dynamic-notification.css +40 -26
- package/dist/styles/recipes/emoji-picker.css +132 -0
- package/dist/styles/recipes/empty.css +5 -4
- package/dist/styles/recipes/environment-variables.css +4 -15
- package/dist/styles/recipes/field-parts.css +30 -24
- package/dist/styles/recipes/field.css +61 -26
- package/dist/styles/recipes/filter-bar.css +18 -31
- package/dist/styles/recipes/gradient-editor.css +18 -7
- package/dist/styles/recipes/infinite-canvas.css +0 -1
- package/dist/styles/recipes/inline-attachment.css +3 -3
- package/dist/styles/recipes/inline-citation.css +10 -4
- package/dist/styles/recipes/item.css +23 -9
- package/dist/styles/recipes/markdown-block.css +5 -4
- package/dist/styles/recipes/markdown.css +68 -26
- package/dist/styles/recipes/morphing-panel.css +8 -8
- package/dist/styles/recipes/page-layout.css +20 -12
- package/dist/styles/recipes/pagination.css +4 -5
- package/dist/styles/recipes/phone-input.css +12 -8
- package/dist/styles/recipes/popup-controls.css +166 -33
- package/dist/styles/recipes/popup-drawer.css +3 -14
- package/dist/styles/recipes/popup-lists.css +128 -27
- package/dist/styles/recipes/popup-motion.css +4 -45
- package/dist/styles/recipes/popup-toast.css +55 -26
- package/dist/styles/recipes/popup.css +139 -141
- package/dist/styles/recipes/range.css +54 -18
- package/dist/styles/recipes/resizable.css +2 -7
- package/dist/styles/recipes/rich-tooltip.css +24 -34
- package/dist/styles/recipes/scroll-area.css +8 -1
- package/dist/styles/recipes/sidebar-menu.css +149 -34
- package/dist/styles/recipes/sidebar-parts.css +154 -0
- package/dist/styles/recipes/sidebar.css +187 -128
- package/dist/styles/recipes/source-badge.css +1 -1
- package/dist/styles/recipes/spinner.css +8 -1
- package/dist/styles/recipes/stepper.css +31 -13
- package/dist/styles/recipes/switch.css +68 -23
- package/dist/styles/recipes/table-of-contents.css +9 -1
- package/dist/styles/recipes/table.css +14 -10
- package/dist/styles/recipes/tabs.css +17 -12
- package/dist/styles/recipes/task-list.css +7 -14
- package/dist/styles/recipes/thread-rail.css +42 -19
- package/dist/styles/recipes/timeline.css +2 -0
- package/dist/styles/recipes/toolbar.css +27 -25
- package/dist/styles/recipes/track-highlight.css +10 -7
- package/dist/styles/recipes/tree.css +31 -4
- package/dist/styles/recipes/user-ask-details.css +0 -1
- package/dist/styles/recipes/user-ask.css +4 -4
- package/dist/styles/theme.css +37 -16
- package/dist/task-list.d.ts +4 -1
- package/dist/task-list.js +24 -8
- package/dist/thread-rail.d.ts +1 -1
- package/dist/thread-rail.js +61 -19
- package/dist/transcript-divider.js +2 -1
- package/dist/ui/alert-dialog.js +1 -1
- package/dist/ui/alert.d.ts +3 -1
- package/dist/ui/alert.js +14 -8
- package/dist/ui/autocomplete.js +4 -2
- package/dist/ui/avatar.d.ts +8 -0
- package/dist/ui/avatar.js +23 -3
- package/dist/ui/badge.js +1 -1
- package/dist/ui/breadcrumb.d.ts +27 -0
- package/dist/ui/breadcrumb.js +88 -0
- package/dist/ui/button.d.ts +2 -1
- package/dist/ui/button.js +3 -3
- package/dist/ui/calendar.js +2 -2
- package/dist/ui/card.d.ts +3 -1
- package/dist/ui/card.js +12 -7
- package/dist/ui/checkbox.d.ts +2 -0
- package/dist/ui/code-diff.d.ts +1 -1
- package/dist/ui/code-diff.js +72 -28
- package/dist/ui/code.d.ts +5 -3
- package/dist/ui/code.js +28 -29
- package/dist/ui/collapsible.js +1 -1
- package/dist/ui/color-picker.d.ts +5 -2
- package/dist/ui/color-picker.js +85 -37
- package/dist/ui/combobox-disabled-selection.d.ts +1 -2
- package/dist/ui/combobox-disabled-selection.js +7 -9
- package/dist/ui/combobox.js +14 -6
- package/dist/ui/command.d.ts +8 -2
- package/dist/ui/command.js +30 -14
- package/dist/ui/context-menu.js +4 -1
- package/dist/ui/dialog.d.ts +2 -1
- package/dist/ui/dialog.js +4 -23
- package/dist/ui/dockable-panel-geometry.d.ts +1 -0
- package/dist/ui/dockable-panel-geometry.js +7 -1
- package/dist/ui/dockable-panel.d.ts +9 -6
- package/dist/ui/dockable-panel.js +63 -23
- package/dist/ui/drawer.js +1 -1
- package/dist/ui/dropdown-menu.js +5 -4
- package/dist/ui/dropzone.d.ts +2 -2
- package/dist/ui/dropzone.js +75 -16
- package/dist/ui/emoji-picker.d.ts +18 -0
- package/dist/ui/emoji-picker.js +136 -0
- package/dist/ui/empty.d.ts +3 -1
- package/dist/ui/empty.js +12 -7
- package/dist/ui/gradient-editor.d.ts +1 -1
- package/dist/ui/gradient-editor.js +37 -21
- package/dist/ui/hover-card.js +1 -1
- package/dist/ui/infinite-canvas.d.ts +3 -2
- package/dist/ui/infinite-canvas.js +63 -19
- package/dist/ui/input-group.d.ts +0 -3
- package/dist/ui/input-group.js +4 -14
- package/dist/ui/input-otp.d.ts +1 -1
- package/dist/ui/input-otp.js +32 -15
- package/dist/ui/input.js +4 -4
- package/dist/ui/item.d.ts +2 -1
- package/dist/ui/item.js +12 -8
- package/dist/ui/live-status.d.ts +7 -0
- package/dist/ui/live-status.js +17 -0
- package/dist/ui/markdown-elements.d.ts +6 -0
- package/dist/ui/markdown-elements.js +31 -1
- package/dist/ui/menubar.js +3 -3
- package/dist/ui/morphing-panel.js +3 -2
- package/dist/ui/native-select.d.ts +1 -1
- package/dist/ui/native-select.js +24 -11
- package/dist/ui/navigation-menu.js +1 -1
- package/dist/ui/page-layout.d.ts +2 -2
- package/dist/ui/page-layout.js +2 -4
- package/dist/ui/pagination.d.ts +7 -5
- package/dist/ui/pagination.js +19 -13
- package/dist/ui/phone-input.d.ts +1 -0
- package/dist/ui/phone-input.js +58 -60
- package/dist/ui/popover.js +1 -1
- package/dist/ui/radio-group.d.ts +2 -0
- package/dist/ui/resizable.d.ts +3 -2
- package/dist/ui/resizable.js +5 -3
- package/dist/ui/responsive-dialog.d.ts +1 -1
- package/dist/ui/responsive-dialog.js +4 -21
- package/dist/ui/rich-tooltip.d.ts +10 -4
- package/dist/ui/rich-tooltip.js +82 -34
- package/dist/ui/scroll-area.d.ts +1 -1
- package/dist/ui/scroll-area.js +43 -28
- package/dist/ui/select.js +1 -1
- package/dist/ui/sheet.js +1 -1
- package/dist/ui/sidebar-menu.d.ts +5 -1
- package/dist/ui/sidebar-menu.js +32 -34
- package/dist/ui/sidebar-provider.d.ts +10 -1
- package/dist/ui/sidebar-provider.js +39 -14
- package/dist/ui/sidebar-resize-rail.js +8 -4
- package/dist/ui/sidebar.d.ts +11 -6
- package/dist/ui/sidebar.js +47 -24
- package/dist/ui/slider.js +31 -22
- package/dist/ui/spinner.d.ts +3 -2
- package/dist/ui/spinner.js +3 -2
- package/dist/ui/stepper.d.ts +8 -1
- package/dist/ui/stepper.js +74 -25
- package/dist/ui/switch.d.ts +1 -0
- package/dist/ui/table-of-contents.d.ts +2 -2
- package/dist/ui/table-of-contents.js +20 -8
- package/dist/ui/table.js +4 -2
- package/dist/ui/textarea.d.ts +1 -1
- package/dist/ui/textarea.js +20 -9
- package/dist/ui/timeline.d.ts +3 -1
- package/dist/ui/timeline.js +17 -9
- package/dist/ui/toast.d.ts +11 -5
- package/dist/ui/toast.js +101 -55
- package/dist/ui/toolbar.d.ts +3 -2
- package/dist/ui/toolbar.js +4 -2
- package/dist/ui/tooltip.js +4 -21
- package/dist/ui/tree.js +121 -81
- package/dist/ui/trigger-menu.js +2 -1
- package/dist/user-ask.d.ts +10 -5
- package/dist/user-ask.js +32 -12
- package/package.json +5 -1
- package/dist/hooks/use-keyboard-navigation.d.ts +0 -3
- package/dist/hooks/use-keyboard-navigation.js +0 -22
|
@@ -6,7 +6,10 @@ const stepperKnobs = [
|
|
|
6
6
|
"--cui-stepper-indicator-border-color",
|
|
7
7
|
"--cui-stepper-indicator-border-width",
|
|
8
8
|
"--cui-stepper-separator-background",
|
|
9
|
-
"--cui-stepper-title-foreground"
|
|
9
|
+
"--cui-stepper-title-foreground",
|
|
10
|
+
"--cui-stepper-indicator-size",
|
|
11
|
+
"--cui-stepper-indicator-current-border-width",
|
|
12
|
+
"--cui-stepper-title-current-font-weight"
|
|
10
13
|
];
|
|
11
14
|
//#endregion
|
|
12
15
|
export { stepperKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/switch-knobs.d.ts
|
|
2
|
-
export declare const switchKnobs: readonly ["--cui-switch-thumb-shadow", "--cui-switch-background", "--cui-switch-hover-background", "--cui-switch-checked-background", "--cui-switch-checked-hover-background", "--cui-switch-thumb-radius", "--cui-switch-thumb-background", "--cui-switch-inline-size", "--cui-switch-height", "--cui-switch-padding", "--cui-switch-thumb-inline-size", "--cui-switch-thumb-press-scale", "--cui-switch-thumb-backdrop-filter"];
|
|
2
|
+
export declare const switchKnobs: readonly ["--cui-switch-thumb-shadow", "--cui-switch-radius", "--cui-switch-shadow", "--cui-switch-background", "--cui-switch-border-color", "--cui-switch-border-width", "--cui-switch-checked-border-color", "--cui-switch-hover-background", "--cui-switch-checked-background", "--cui-switch-checked-hover-background", "--cui-switch-thumb-radius", "--cui-switch-thumb-background", "--cui-switch-inline-size", "--cui-switch-height", "--cui-switch-padding", "--cui-switch-thumb-inline-size", "--cui-switch-thumb-press-scale", "--cui-switch-thumb-backdrop-filter"];
|
|
3
3
|
export type SwitchKnobStyle = Partial<Record<(typeof switchKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
//#region src/knob-contracts/switch-knobs.ts
|
|
2
2
|
const switchKnobs = [
|
|
3
3
|
"--cui-switch-thumb-shadow",
|
|
4
|
+
"--cui-switch-radius",
|
|
5
|
+
"--cui-switch-shadow",
|
|
4
6
|
"--cui-switch-background",
|
|
7
|
+
"--cui-switch-border-color",
|
|
8
|
+
"--cui-switch-border-width",
|
|
9
|
+
"--cui-switch-checked-border-color",
|
|
5
10
|
"--cui-switch-hover-background",
|
|
6
11
|
"--cui-switch-checked-background",
|
|
7
12
|
"--cui-switch-checked-hover-background",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/table-of-contents-knobs.d.ts
|
|
2
|
-
export declare const tableOfContentsKnobs: readonly ["--cui-table-of-contents-background", "--cui-table-of-contents-border-color", "--cui-table-of-contents-border-width", "--cui-table-of-contents-radius", "--cui-table-of-contents-shadow", "--cui-table-of-contents-backdrop-filter", "--cui-table-of-contents-padding", "--cui-table-of-contents-label-foreground", "--cui-table-of-contents-label-font-size", "--cui-table-of-contents-label-font-weight", "--cui-table-of-contents-label-gap", "--cui-table-of-contents-item-foreground", "--cui-table-of-contents-item-hover-foreground", "--cui-table-of-contents-item-active-foreground", "--cui-table-of-contents-item-font-size", "--cui-table-of-contents-item-line-height", "--cui-table-of-contents-item-font-weight", "--cui-table-of-contents-item-root-font-weight", "--cui-table-of-contents-item-padding-block", "--cui-table-of-contents-item-padding-inline", "--cui-table-of-contents-item-indent-size", "--cui-table-of-contents-rail-stroke", "--cui-table-of-contents-rail-size", "--cui-table-of-contents-trail-stroke", "--cui-table-of-contents-trail-size", "--cui-table-of-contents-indicator-foreground"];
|
|
2
|
+
export declare const tableOfContentsKnobs: readonly ["--cui-table-of-contents-background", "--cui-table-of-contents-border-color", "--cui-table-of-contents-border-width", "--cui-table-of-contents-radius", "--cui-table-of-contents-shadow", "--cui-table-of-contents-backdrop-filter", "--cui-table-of-contents-padding", "--cui-table-of-contents-label-foreground", "--cui-table-of-contents-label-font-size", "--cui-table-of-contents-label-font-weight", "--cui-table-of-contents-label-gap", "--cui-table-of-contents-item-foreground", "--cui-table-of-contents-item-hover-foreground", "--cui-table-of-contents-item-active-foreground", "--cui-table-of-contents-item-font-size", "--cui-table-of-contents-item-line-height", "--cui-table-of-contents-item-font-weight", "--cui-table-of-contents-item-root-font-weight", "--cui-table-of-contents-item-padding-block", "--cui-table-of-contents-item-padding-inline", "--cui-table-of-contents-item-indent-size", "--cui-table-of-contents-rail-stroke", "--cui-table-of-contents-rail-size", "--cui-table-of-contents-trail-stroke", "--cui-table-of-contents-trail-size", "--cui-table-of-contents-indicator-foreground", "--cui-table-of-contents-scroll-inset"];
|
|
3
3
|
export type TableOfContentsKnobStyle = Partial<Record<(typeof tableOfContentsKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -25,7 +25,8 @@ const tableOfContentsKnobs = [
|
|
|
25
25
|
"--cui-table-of-contents-rail-size",
|
|
26
26
|
"--cui-table-of-contents-trail-stroke",
|
|
27
27
|
"--cui-table-of-contents-trail-size",
|
|
28
|
-
"--cui-table-of-contents-indicator-foreground"
|
|
28
|
+
"--cui-table-of-contents-indicator-foreground",
|
|
29
|
+
"--cui-table-of-contents-scroll-inset"
|
|
29
30
|
];
|
|
30
31
|
//#endregion
|
|
31
32
|
export { tableOfContentsKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/tabs-knobs.d.ts
|
|
2
|
-
export declare const tabsKnobs: readonly ["--cui-tabs-trigger-radius", "--cui-tabs-list-padding", "--cui-tabs-list-radius", "--cui-tabs-list-background", "--cui-tabs-list-backdrop-filter", "--cui-tabs-indicator-background", "--cui-tabs-foreground", "--cui-tabs-active-foreground", "--cui-tabs-indicator-shadow", "--cui-tabs-list-shadow", "--cui-tabs-border-color", "--cui-tabs-border-width"];
|
|
2
|
+
export declare const tabsKnobs: readonly ["--cui-tabs-trigger-radius", "--cui-tabs-list-padding", "--cui-tabs-list-radius", "--cui-tabs-list-background", "--cui-tabs-list-backdrop-filter", "--cui-tabs-indicator-background", "--cui-tabs-foreground", "--cui-tabs-active-foreground", "--cui-tabs-hover-foreground", "--cui-tabs-indicator-shadow", "--cui-tabs-list-shadow", "--cui-tabs-border-color", "--cui-tabs-border-width"];
|
|
3
3
|
export type TabsKnobStyle = Partial<Record<(typeof tabsKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/tree-knobs.d.ts
|
|
2
|
-
export declare const treeKnobs: readonly ["--cui-tree-item-trigger-radius", "--cui-tree-item-trigger-foreground", "--cui-tree-item-trigger-hover-background", "--cui-tree-item-trigger-hover-foreground", "--cui-tree-item-trigger-selected-background", "--cui-tree-item-trigger-selected-foreground", "--cui-tree-item-trigger-font-size", "--cui-tree-item-trigger-selected-font-weight"];
|
|
2
|
+
export declare const treeKnobs: readonly ["--cui-tree-item-trigger-radius", "--cui-tree-item-trigger-foreground", "--cui-tree-item-trigger-hover-background", "--cui-tree-item-trigger-hover-foreground", "--cui-tree-item-trigger-selected-background", "--cui-tree-item-trigger-selected-foreground", "--cui-tree-item-trigger-font-size", "--cui-tree-item-trigger-selected-font-weight", "--cui-tree-indent-inset"];
|
|
3
3
|
export type TreeKnobStyle = Partial<Record<(typeof treeKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -7,7 +7,8 @@ const treeKnobs = [
|
|
|
7
7
|
"--cui-tree-item-trigger-selected-background",
|
|
8
8
|
"--cui-tree-item-trigger-selected-foreground",
|
|
9
9
|
"--cui-tree-item-trigger-font-size",
|
|
10
|
-
"--cui-tree-item-trigger-selected-font-weight"
|
|
10
|
+
"--cui-tree-item-trigger-selected-font-weight",
|
|
11
|
+
"--cui-tree-indent-inset"
|
|
11
12
|
];
|
|
12
13
|
//#endregion
|
|
13
14
|
export { treeKnobs };
|
package/dist/lib/cn.js
CHANGED
package/dist/lib/contrast.d.ts
CHANGED
|
@@ -25,5 +25,6 @@ export declare function contrastRatio(a: {
|
|
|
25
25
|
export declare function wcagLevels(ratio: number): WcagLevels;
|
|
26
26
|
export declare function nextFixLevel(levels: WcagLevels): WcagLevel | null;
|
|
27
27
|
export declare function contrastOf(color: Hsva, background: Rgba): number;
|
|
28
|
+
export declare function formatContrastRatio(ratio: number): string;
|
|
28
29
|
export declare function fixColorForContrast(color: Hsva, background: Rgba, target?: number): Hsva | null;
|
|
29
30
|
//#endregion
|
package/dist/lib/contrast.js
CHANGED
|
@@ -29,17 +29,29 @@ function nextFixLevel(levels) {
|
|
|
29
29
|
if (!levels.AAA) return "AAA";
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
|
+
function paintedOver(color, background) {
|
|
33
|
+
const blend = (channel) => color[channel] * color.a + background[channel] * (1 - color.a);
|
|
34
|
+
return {
|
|
35
|
+
r: blend("r"),
|
|
36
|
+
g: blend("g"),
|
|
37
|
+
b: blend("b"),
|
|
38
|
+
a: 1
|
|
39
|
+
};
|
|
40
|
+
}
|
|
32
41
|
function contrastOf(color, background) {
|
|
33
|
-
return contrastRatio(hsvaToRgba(color), background);
|
|
42
|
+
return contrastRatio(paintedOver(hsvaToRgba(color), background), background);
|
|
43
|
+
}
|
|
44
|
+
function formatContrastRatio(ratio) {
|
|
45
|
+
return (Math.floor(ratio * 100) / 100).toFixed(2);
|
|
34
46
|
}
|
|
35
47
|
function fixColorForContrast(color, background, target = AA_RATIO) {
|
|
36
48
|
const ok = hsvaToOklcha(color);
|
|
37
|
-
const ratioAtL = (L) =>
|
|
49
|
+
const ratioAtL = (L) => contrastOf(oklchaToHsva({
|
|
38
50
|
L,
|
|
39
51
|
C: ok.C,
|
|
40
52
|
H: ok.H,
|
|
41
|
-
a:
|
|
42
|
-
})
|
|
53
|
+
a: color.a
|
|
54
|
+
}), background);
|
|
43
55
|
if (ratioAtL(ok.L) >= target) return null;
|
|
44
56
|
let best = null;
|
|
45
57
|
for (let step = 0; step <= 100; step++) {
|
|
@@ -61,4 +73,4 @@ function fixColorForContrast(color, background, target = AA_RATIO) {
|
|
|
61
73
|
return ratioAtL(0) >= ratioAtL(1) ? pick(0) : pick(1);
|
|
62
74
|
}
|
|
63
75
|
//#endregion
|
|
64
|
-
export { AAA_RATIO, AA_RATIO, TARGET_RATIO, contrastOf, contrastRatio, fixColorForContrast, luminanceFromRgb, nextFixLevel, wcagLevels };
|
|
76
|
+
export { AAA_RATIO, AA_RATIO, TARGET_RATIO, contrastOf, contrastRatio, fixColorForContrast, formatContrastRatio, luminanceFromRgb, nextFixLevel, wcagLevels };
|
|
@@ -60,17 +60,20 @@ async function validateDropzoneFile(file, policy, signal) {
|
|
|
60
60
|
const errors = [];
|
|
61
61
|
const minSize = policy?.minSize ?? DEFAULT_POLICY.minSize;
|
|
62
62
|
const maxSize = policy?.maxSize ?? DEFAULT_POLICY.maxSize;
|
|
63
|
-
if (!isDropzoneFileAccepted(file, policy?.accept))
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
if (!isDropzoneFileAccepted(file, policy?.accept)) {
|
|
64
|
+
const accepted = compileDropzoneAccept(policy?.accept)?.split(",").join(", ");
|
|
65
|
+
errors.push({
|
|
66
|
+
code: DropzoneErrorCode.FileInvalidType,
|
|
67
|
+
message: accepted ? `File type is not accepted. Use ${accepted}.` : "File type is not accepted."
|
|
68
|
+
});
|
|
69
|
+
}
|
|
67
70
|
if (file.size < minSize) errors.push({
|
|
68
71
|
code: DropzoneErrorCode.FileTooSmall,
|
|
69
|
-
message: `File is smaller than the ${formatDropzoneFileSize(minSize)} minimum.`
|
|
72
|
+
message: `File is smaller than the ${formatDropzoneFileSize(minSize)} minimum. Choose a larger file.`
|
|
70
73
|
});
|
|
71
74
|
if (file.size > maxSize) errors.push({
|
|
72
75
|
code: DropzoneErrorCode.FileTooLarge,
|
|
73
|
-
message: `File is larger than the ${formatDropzoneFileSize(maxSize)} limit.`
|
|
76
|
+
message: `File is larger than the ${formatDropzoneFileSize(maxSize)} limit. Choose a smaller file.`
|
|
74
77
|
});
|
|
75
78
|
if (policy?.validator) {
|
|
76
79
|
signal.throwIfAborted();
|
|
@@ -80,6 +83,30 @@ async function validateDropzoneFile(file, policy, signal) {
|
|
|
80
83
|
}
|
|
81
84
|
return errors;
|
|
82
85
|
}
|
|
86
|
+
function createDropzoneSelection(currentValue, policy) {
|
|
87
|
+
const appended = getDropzoneSelectionMode(policy) === "append" ? currentValue : [];
|
|
88
|
+
const allowDuplicates = policy?.allowDuplicates ?? false;
|
|
89
|
+
return {
|
|
90
|
+
files: [...appended],
|
|
91
|
+
identities: new Set(allowDuplicates ? [] : appended.map(getDropzoneFileIdentity)),
|
|
92
|
+
allowDuplicates,
|
|
93
|
+
capacity: getDropzoneCapacity(policy)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function getDropzoneSelectionErrors(file, identity, selection) {
|
|
97
|
+
if (!selection.allowDuplicates && selection.identities.has(identity)) return [{
|
|
98
|
+
code: DropzoneErrorCode.FileAlreadySelected,
|
|
99
|
+
message: `File "${file.name}" is already selected.`
|
|
100
|
+
}];
|
|
101
|
+
if (selection.files.length >= selection.capacity) {
|
|
102
|
+
const { capacity } = selection;
|
|
103
|
+
return [{
|
|
104
|
+
code: DropzoneErrorCode.TooManyFiles,
|
|
105
|
+
message: `Too many files. Choose up to ${capacity} ${capacity === 1 ? "file" : "files"}.`
|
|
106
|
+
}];
|
|
107
|
+
}
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
83
110
|
async function processDropzoneFiles(files, currentValue, policy, signal) {
|
|
84
111
|
signal.throwIfAborted();
|
|
85
112
|
const validatedFiles = await Promise.all(files.map(async (file) => ({
|
|
@@ -90,9 +117,7 @@ async function processDropzoneFiles(files, currentValue, policy, signal) {
|
|
|
90
117
|
const acceptedFiles = [];
|
|
91
118
|
const fileRejections = [];
|
|
92
119
|
const selectionMode = getDropzoneSelectionMode(policy);
|
|
93
|
-
const
|
|
94
|
-
const selectedFiles = selectionMode === "append" ? [...currentValue] : [];
|
|
95
|
-
const selectedIdentities = new Set(policy?.allowDuplicates ? [] : (selectionMode === "append" ? currentValue : []).map(getDropzoneFileIdentity));
|
|
120
|
+
const selection = createDropzoneSelection(currentValue, policy);
|
|
96
121
|
for (const { file, errors } of validatedFiles) {
|
|
97
122
|
if (errors.length > 0) {
|
|
98
123
|
fileRejections.push({
|
|
@@ -102,29 +127,17 @@ async function processDropzoneFiles(files, currentValue, policy, signal) {
|
|
|
102
127
|
continue;
|
|
103
128
|
}
|
|
104
129
|
const identity = getDropzoneFileIdentity(file);
|
|
105
|
-
|
|
130
|
+
const selectionErrors = getDropzoneSelectionErrors(file, identity, selection);
|
|
131
|
+
if (selectionErrors.length > 0) {
|
|
106
132
|
fileRejections.push({
|
|
107
133
|
file,
|
|
108
|
-
errors:
|
|
109
|
-
code: DropzoneErrorCode.FileAlreadySelected,
|
|
110
|
-
message: `File "${file.name}" is already selected.`
|
|
111
|
-
}]
|
|
112
|
-
});
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (selectedFiles.length >= capacity) {
|
|
116
|
-
fileRejections.push({
|
|
117
|
-
file,
|
|
118
|
-
errors: [{
|
|
119
|
-
code: DropzoneErrorCode.TooManyFiles,
|
|
120
|
-
message: "Too many files."
|
|
121
|
-
}]
|
|
134
|
+
errors: selectionErrors
|
|
122
135
|
});
|
|
123
136
|
continue;
|
|
124
137
|
}
|
|
125
138
|
acceptedFiles.push(file);
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
selection.files.push(file);
|
|
140
|
+
selection.identities.add(identity);
|
|
128
141
|
}
|
|
129
142
|
if (selectionMode === "replace" && acceptedFiles.length === 0) return {
|
|
130
143
|
acceptedFiles,
|
|
@@ -135,8 +148,8 @@ async function processDropzoneFiles(files, currentValue, policy, signal) {
|
|
|
135
148
|
return {
|
|
136
149
|
acceptedFiles,
|
|
137
150
|
fileRejections,
|
|
138
|
-
value:
|
|
139
|
-
removedFiles: selectionMode === "replace" ? getRemovedFiles(currentValue,
|
|
151
|
+
value: selection.files,
|
|
152
|
+
removedFiles: selectionMode === "replace" ? getRemovedFiles(currentValue, selection.files) : []
|
|
140
153
|
};
|
|
141
154
|
}
|
|
142
155
|
function getDropzoneDragVerdict(files, currentValue, policy, options = {}) {
|
package/dist/lib/env-file.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface EnvironmentVariableEntry {
|
|
|
4
4
|
value: string;
|
|
5
5
|
}
|
|
6
6
|
export declare const ENV_FILE_MAX_SIZE: number;
|
|
7
|
-
export declare const DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE = "
|
|
7
|
+
export declare const DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE = "Rename or remove the duplicate key.";
|
|
8
8
|
export declare class DuplicateEnvironmentVariableKeyError extends Error {
|
|
9
9
|
readonly key: string;
|
|
10
10
|
constructor(key: string);
|
package/dist/lib/env-file.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/lib/env-file.ts
|
|
2
2
|
const ENV_FILE_MAX_SIZE = 65536;
|
|
3
|
-
const DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE = "
|
|
3
|
+
const DUPLICATE_ENVIRONMENT_VARIABLE_MESSAGE = "Rename or remove the duplicate key.";
|
|
4
4
|
var DuplicateEnvironmentVariableKeyError = class extends Error {
|
|
5
5
|
key;
|
|
6
6
|
constructor(key) {
|
|
@@ -175,7 +175,7 @@ async function readEnvFile(file, options = {}) {
|
|
|
175
175
|
const maxSize = options.maxSize ?? 65536;
|
|
176
176
|
if (file.size > maxSize) return {
|
|
177
177
|
ok: false,
|
|
178
|
-
error: `
|
|
178
|
+
error: `That file is over ${Math.ceil(maxSize / 1024)} KB. Choose a smaller .env file.`
|
|
179
179
|
};
|
|
180
180
|
let text;
|
|
181
181
|
try {
|
|
@@ -183,17 +183,17 @@ async function readEnvFile(file, options = {}) {
|
|
|
183
183
|
} catch {
|
|
184
184
|
return {
|
|
185
185
|
ok: false,
|
|
186
|
-
error: "
|
|
186
|
+
error: "Couldn't read that file. Try selecting it again."
|
|
187
187
|
};
|
|
188
188
|
}
|
|
189
189
|
if (text.includes("\0")) return {
|
|
190
190
|
ok: false,
|
|
191
|
-
error: "
|
|
191
|
+
error: "That file isn't plain text. Choose a .env text file."
|
|
192
192
|
};
|
|
193
193
|
const entries = parseEnvFileText(text);
|
|
194
194
|
if (entries.length === 0) return {
|
|
195
195
|
ok: false,
|
|
196
|
-
error: "No
|
|
196
|
+
error: "No variables found. Use one KEY=value per line."
|
|
197
197
|
};
|
|
198
198
|
return {
|
|
199
199
|
ok: true,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/lib/motion.ts
|
|
2
|
+
const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
|
|
3
|
+
function prefersReducedMotion(node) {
|
|
4
|
+
return globalThis.matchMedia?.(REDUCED_MOTION_QUERY).matches === true || node?.closest("[data-motion=\"reduced\"]") != null;
|
|
5
|
+
}
|
|
6
|
+
function readDurationMs(element, token) {
|
|
7
|
+
const value = getComputedStyle(element).getPropertyValue(token).trim();
|
|
8
|
+
const amount = Number.parseFloat(value);
|
|
9
|
+
if (!Number.isFinite(amount)) return 0;
|
|
10
|
+
if (value.endsWith("ms")) return amount;
|
|
11
|
+
if (value.endsWith("s")) return amount * 1e3;
|
|
12
|
+
return amount;
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { prefersReducedMotion, readDurationMs };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getCountryCallingCode } from "react-phone-number-input/max";
|
|
2
1
|
import { AsYouType } from "libphonenumber-js/max";
|
|
2
|
+
import { getCountryCallingCode } from "react-phone-number-input/max";
|
|
3
3
|
//#region src/lib/phone-input-format.ts
|
|
4
4
|
function normalizePhoneInputText(value, country) {
|
|
5
5
|
if (!country) return value;
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
//#region src/lib/trigger-detect.ts
|
|
2
|
-
const WHITESPACE =
|
|
3
|
-
" ",
|
|
4
|
-
"\n",
|
|
5
|
-
" ",
|
|
6
|
-
"\xA0"
|
|
7
|
-
]);
|
|
2
|
+
const WHITESPACE = /\s/u;
|
|
8
3
|
function detectTrigger(textBeforeCaret, triggerChars) {
|
|
9
4
|
const triggerSet = new Set(triggerChars);
|
|
10
5
|
for (let i = textBeforeCaret.length - 1; i >= 0; i -= 1) {
|
|
11
6
|
const char = textBeforeCaret.at(i);
|
|
12
7
|
if (char === void 0) return null;
|
|
13
|
-
if (WHITESPACE.
|
|
8
|
+
if (WHITESPACE.test(char)) return null;
|
|
14
9
|
if (triggerSet.has(char)) {
|
|
15
10
|
const preceding = i === 0 ? "" : textBeforeCaret.at(i - 1) ?? "";
|
|
16
|
-
if (preceding === "" || WHITESPACE.
|
|
11
|
+
if (preceding === "" || WHITESPACE.test(preceding)) return {
|
|
17
12
|
char,
|
|
18
13
|
query: textBeforeCaret.slice(i + 1),
|
|
19
14
|
start: i,
|
|
@@ -25,6 +20,8 @@ function detectTrigger(textBeforeCaret, triggerChars) {
|
|
|
25
20
|
return null;
|
|
26
21
|
}
|
|
27
22
|
const MIRROR_PROPERTIES = [
|
|
23
|
+
"direction",
|
|
24
|
+
"writing-mode",
|
|
28
25
|
"box-sizing",
|
|
29
26
|
"width",
|
|
30
27
|
"font-family",
|
|
@@ -33,6 +30,7 @@ const MIRROR_PROPERTIES = [
|
|
|
33
30
|
"font-style",
|
|
34
31
|
"font-variant",
|
|
35
32
|
"letter-spacing",
|
|
33
|
+
"word-spacing",
|
|
36
34
|
"text-transform",
|
|
37
35
|
"text-indent",
|
|
38
36
|
"line-height",
|
package/dist/markdown-block.js
CHANGED
|
@@ -31,7 +31,7 @@ function MarkdownBlockHeader({ className, ...props }) {
|
|
|
31
31
|
"data-control-ui": "markdown-block",
|
|
32
32
|
"data-control-family": "markdown-block",
|
|
33
33
|
"data-slot": "header",
|
|
34
|
-
className: cn("
|
|
34
|
+
className: cn("flex items-center justify-between", className),
|
|
35
35
|
...props
|
|
36
36
|
});
|
|
37
37
|
}
|
|
@@ -51,6 +51,7 @@ function MarkdownBlockTitle({ children = "Markdown", className, ...props }) {
|
|
|
51
51
|
children: "MD"
|
|
52
52
|
}), /* @__PURE__ */ jsx("span", {
|
|
53
53
|
className: "truncate",
|
|
54
|
+
title: typeof children === "string" ? children : void 0,
|
|
54
55
|
children
|
|
55
56
|
})]
|
|
56
57
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ButtonProps } from "./ui/button.js";
|
|
2
|
+
//#region src/popup-parts.d.ts
|
|
3
|
+
export type PopupCloseButtonProps = Omit<ButtonProps, "children" | "iconOnly"> & {
|
|
4
|
+
label: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function PopupCloseButton({ label, variant, size, ...props }: PopupCloseButtonProps): import("react").JSX.Element;
|
|
7
|
+
export declare function PopupArrowShape(): import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Button } from "./ui/button.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/popup-parts.tsx
|
|
5
|
+
function PopupCloseButton({ label, variant = "ghost", size = "xs", ...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
7
|
+
"data-popup-part": "close",
|
|
8
|
+
variant,
|
|
9
|
+
size,
|
|
10
|
+
iconOnly: true,
|
|
11
|
+
...props,
|
|
12
|
+
children: [/* @__PURE__ */ jsx("svg", {
|
|
13
|
+
viewBox: "0 0 16 16",
|
|
14
|
+
"aria-hidden": "true",
|
|
15
|
+
fill: "none",
|
|
16
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
17
|
+
d: "M4 4 12 12M12 4 4 12",
|
|
18
|
+
stroke: "currentColor",
|
|
19
|
+
strokeWidth: "1.4",
|
|
20
|
+
strokeLinecap: "round"
|
|
21
|
+
})
|
|
22
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
23
|
+
className: "sr-only",
|
|
24
|
+
children: label
|
|
25
|
+
})]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function PopupArrowShape() {
|
|
29
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
30
|
+
"aria-hidden": "true",
|
|
31
|
+
focusable: "false",
|
|
32
|
+
width: "12",
|
|
33
|
+
height: "8",
|
|
34
|
+
viewBox: "0 0 12 8",
|
|
35
|
+
overflow: "visible",
|
|
36
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
37
|
+
d: "M0 7L4 2Q6 0 8 2L12 7L12 8L0 8Z",
|
|
38
|
+
fill: "currentColor"
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { PopupArrowShape, PopupCloseButton };
|
package/dist/source-badge.js
CHANGED
|
@@ -45,6 +45,7 @@ function SourceFavicon({ faviconSrc, href, imageProps, fallbackProps, className,
|
|
|
45
45
|
}
|
|
46
46
|
function SourceBadge({ faviconSrc, href, children, className, rel, target, ...props }) {
|
|
47
47
|
const hostname = sourceHostname(href);
|
|
48
|
+
const label = children ?? hostname;
|
|
48
49
|
return /* @__PURE__ */ jsxs(Badge, {
|
|
49
50
|
variant: "outline",
|
|
50
51
|
render: /* @__PURE__ */ jsx("a", {
|
|
@@ -63,8 +64,9 @@ function SourceBadge({ faviconSrc, href, children, className, rel, target, ...pr
|
|
|
63
64
|
}), /* @__PURE__ */ jsx("span", {
|
|
64
65
|
"data-control-ui": "source-badge",
|
|
65
66
|
"data-slot": "label",
|
|
67
|
+
title: typeof label === "string" ? label : void 0,
|
|
66
68
|
className: "truncate",
|
|
67
|
-
children:
|
|
69
|
+
children: label
|
|
68
70
|
})]
|
|
69
71
|
});
|
|
70
72
|
}
|
package/dist/styles/code.css
CHANGED
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
--diff-del-emphasis: oklch(0.87 0.12 22 / 0.8);
|
|
27
27
|
--diff-del-gutter: oklch(0.92 0.07 22);
|
|
28
28
|
--diff-del-fg: oklch(0.53 0.16 22);
|
|
29
|
-
--diff-context-fg: var(--muted-foreground);
|
|
30
29
|
--diff-gutter-bg: oklch(from var(--muted) l c h / 0.5);
|
|
31
30
|
}
|
|
32
31
|
|
|
@@ -52,6 +51,5 @@
|
|
|
52
51
|
--diff-del-emphasis: oklch(0.62 0.18 22 / 0.36);
|
|
53
52
|
--diff-del-gutter: oklch(0.55 0.14 22 / 0.3);
|
|
54
53
|
--diff-del-fg: oklch(0.78 0.15 22);
|
|
55
|
-
--diff-context-fg: var(--muted-foreground);
|
|
56
54
|
--diff-gutter-bg: oklch(from var(--muted) l c h / 0.4);
|
|
57
55
|
}
|
package/dist/styles/effects.css
CHANGED
|
@@ -5,14 +5,6 @@
|
|
|
5
5
|
background-image: linear-gradient(100deg, var(--muted) 30%, oklch(from var(--muted-foreground) l c h / 0.25) 50%, var(--muted) 70%);
|
|
6
6
|
background-size: 220% 100%;
|
|
7
7
|
animation: shimmer calc(var(--duration-slow) * 5) var(--ease-standard) infinite;
|
|
8
|
-
|
|
9
|
-
/* Reduced motion: hold resting gradient (infinite animation ignores 0ms collapse, must still explicitly) under OS pref + motion kill-switch attribute. */
|
|
10
|
-
@media (prefers-reduced-motion: reduce) {
|
|
11
|
-
animation: none;
|
|
12
|
-
}
|
|
13
|
-
:where([data-motion="reduced"]) & {
|
|
14
|
-
animation: none;
|
|
15
|
-
}
|
|
16
8
|
}
|
|
17
9
|
|
|
18
10
|
/* shimmer-text — same sweep clipped to text ("AI is generating" treatment); subtle --muted-foreground↔--foreground stops keep it readable. */
|
|
@@ -24,14 +16,6 @@
|
|
|
24
16
|
-webkit-text-fill-color: transparent;
|
|
25
17
|
color: transparent;
|
|
26
18
|
animation: shimmer calc(var(--duration-slow) * 6) var(--ease-standard) infinite;
|
|
27
|
-
|
|
28
|
-
/* Reduced motion: static muted-foreground text, no sweep — stilled under OS pref + motion kill-switch (infinite animation ignores 0ms tempo). */
|
|
29
|
-
@media (prefers-reduced-motion: reduce) {
|
|
30
|
-
animation: none;
|
|
31
|
-
}
|
|
32
|
-
:where([data-motion="reduced"]) & {
|
|
33
|
-
animation: none;
|
|
34
|
-
}
|
|
35
19
|
}
|
|
36
20
|
|
|
37
21
|
@keyframes shimmer {
|
|
@@ -69,14 +53,6 @@
|
|
|
69
53
|
-webkit-mask-repeat: no-repeat;
|
|
70
54
|
mask-repeat: no-repeat;
|
|
71
55
|
animation: aui-halftone calc(var(--duration-slow) * 6) var(--ease-standard) infinite;
|
|
72
|
-
|
|
73
|
-
/* Reduced motion: dots hold at their resting radius — still a legible placeholder, just no breathing. */
|
|
74
|
-
@media (prefers-reduced-motion: reduce) {
|
|
75
|
-
animation: none;
|
|
76
|
-
}
|
|
77
|
-
:where([data-motion="reduced"]) & {
|
|
78
|
-
animation: none;
|
|
79
|
-
}
|
|
80
56
|
}
|
|
81
57
|
|
|
82
58
|
@keyframes aui-halftone {
|
|
@@ -106,14 +82,6 @@
|
|
|
106
82
|
color: transparent;
|
|
107
83
|
text-shadow: none;
|
|
108
84
|
animation: aui-progress-sweep calc(var(--duration-slow) * 12) linear infinite;
|
|
109
|
-
|
|
110
|
-
/* Reduced motion: static blocks, no march — stilled under OS pref + motion kill-switch (infinite animation ignores 0ms tempo). */
|
|
111
|
-
@media (prefers-reduced-motion: reduce) {
|
|
112
|
-
animation: none;
|
|
113
|
-
}
|
|
114
|
-
:where([data-motion="reduced"]) & {
|
|
115
|
-
animation: none;
|
|
116
|
-
}
|
|
117
85
|
}
|
|
118
86
|
|
|
119
87
|
@keyframes aui-progress-sweep {
|
|
@@ -124,3 +92,9 @@
|
|
|
124
92
|
background-position: -200% 0;
|
|
125
93
|
}
|
|
126
94
|
}
|
|
95
|
+
|
|
96
|
+
@keyframes cui-spin {
|
|
97
|
+
to {
|
|
98
|
+
rotate: 360deg;
|
|
99
|
+
}
|
|
100
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
@import "./theme.css";
|
|
2
2
|
@import "./recipes/accordion.css";
|
|
3
3
|
@import "./recipes/button.css";
|
|
4
|
+
@import "./recipes/button-states.css";
|
|
4
5
|
@import "./recipes/action-bar.css";
|
|
5
6
|
@import "./recipes/collapsible.css";
|
|
7
|
+
@import "./effects.css";
|
|
6
8
|
@import "./recipes/progressive-blur.css";
|
|
7
9
|
@import "./recipes/scroll-area.css";
|
|
8
10
|
@import "./recipes/activity.css";
|
|
@@ -17,16 +19,17 @@
|
|
|
17
19
|
@import "./recipes/field-parts.css";
|
|
18
20
|
@import "./recipes/avatar.css";
|
|
19
21
|
@import "./recipes/badge.css";
|
|
22
|
+
@import "./recipes/breadcrumb.css";
|
|
20
23
|
@import "./recipes/track-highlight.css";
|
|
21
24
|
@import "./recipes/button-group.css";
|
|
22
25
|
@import "./recipes/calendar.css";
|
|
23
26
|
@import "./recipes/card.css";
|
|
24
|
-
@import "./recipes/chat-layout.css";
|
|
25
|
-
@import "./effects.css";
|
|
26
27
|
@import "./recipes/chat-message.css";
|
|
28
|
+
@import "./recipes/chat-message-social.css";
|
|
29
|
+
@import "./recipes/chat-layout.css";
|
|
30
|
+
@import "./recipes/spinner.css";
|
|
27
31
|
@import "./recipes/chat-composer.css";
|
|
28
32
|
@import "./chat-composer-editor.css";
|
|
29
|
-
@import "./recipes/spinner.css";
|
|
30
33
|
@import "./recipes/chat-composer-attachment.css";
|
|
31
34
|
@import "./recipes/choice.css";
|
|
32
35
|
@import "./code.css";
|
|
@@ -34,29 +37,31 @@
|
|
|
34
37
|
@import "./recipes/code-diff.css";
|
|
35
38
|
@import "./recipes/sidebar.css";
|
|
36
39
|
@import "./recipes/sidebar-menu.css";
|
|
40
|
+
@import "./recipes/sidebar-parts.css";
|
|
37
41
|
@import "./recipes/color-picker.css";
|
|
38
42
|
@import "./recipes/color-picker-details.css";
|
|
39
43
|
@import "./recipes/color-picker-values.css";
|
|
40
44
|
@import "./recipes/empty.css";
|
|
41
45
|
@import "./recipes/context.css";
|
|
46
|
+
@import "./recipes/popup-drawer.css";
|
|
42
47
|
@import "./recipes/infinite-canvas.css";
|
|
43
48
|
@import "./recipes/resizable.css";
|
|
44
49
|
@import "./recipes/separator.css";
|
|
45
50
|
@import "./recipes/toolbar.css";
|
|
46
|
-
@import "./recipes/
|
|
51
|
+
@import "./recipes/kbd.css";
|
|
47
52
|
@import "./recipes/dockable-panel.css";
|
|
48
53
|
@import "./recipes/item.css";
|
|
49
54
|
@import "./recipes/dropzone.css";
|
|
50
55
|
@import "./recipes/dynamic-notification.css";
|
|
51
56
|
@import "./recipes/dynamic-notification-input.css";
|
|
52
57
|
@import "./recipes/dynamic-notification-motion.css";
|
|
58
|
+
@import "./recipes/emoji-picker.css";
|
|
53
59
|
@import "./recipes/environment-variables.css";
|
|
54
60
|
@import "./recipes/filter-bar.css";
|
|
55
61
|
@import "./recipes/gradient-editor.css";
|
|
56
62
|
@import "./recipes/inline-attachment.css";
|
|
57
63
|
@import "./recipes/source-badge.css";
|
|
58
64
|
@import "./recipes/inline-citation.css";
|
|
59
|
-
@import "./recipes/kbd.css";
|
|
60
65
|
@import "./recipes/markdown.css";
|
|
61
66
|
@import "./recipes/markdown-block.css";
|
|
62
67
|
@import "./recipes/range.css";
|