@threadlabs/looma 0.22.13 → 0.23.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/components/shared/icons.js +6 -0
- package/components/ui-avatar/ui-avatar.html +3 -3
- package/components/ui-avatar-group/ui-avatar-group.html +1 -1
- package/components/ui-badge/ui-badge.html +1 -1
- package/components/ui-button/ui-button.html +3 -3
- package/components/ui-callout/ui-callout.html +3 -2
- package/components/ui-card/ui-card.html +23 -4
- package/components/ui-checkbox/ui-checkbox.html +3 -3
- package/components/ui-combobox/ui-combobox.html +8 -8
- package/components/ui-context-menu/ui-context-menu.html +2 -2
- package/components/ui-description-list/ui-description-list.html +1 -1
- package/components/ui-dialog/ui-dialog.html +3 -3
- package/components/ui-disclosure/ui-disclosure.html +43 -3
- package/components/ui-editable/ui-editable.html +2 -2
- package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +5 -5
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +2 -2
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -6
- package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +1 -1
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +11 -11
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +5 -5
- package/components/ui-editor-toolbar/ui-editor-toolbar.html +4 -4
- package/components/ui-floating-action-button/ui-floating-action-button.html +2 -2
- package/components/ui-icon/ui-icon.html +6 -0
- package/components/ui-icon-button/ui-icon-button.html +1 -1
- package/components/ui-input/ui-input.html +9 -4
- package/components/ui-input-group/ui-input-group.html +21 -6
- package/components/ui-list/ui-list.html +1 -1
- package/components/ui-list-item/ui-list-item.html +20 -4
- package/components/ui-listbox/ui-listbox.html +3 -3
- package/components/ui-menu/ui-menu.html +2 -2
- package/components/ui-menu-item/ui-menu-item.html +4 -4
- package/components/ui-meter/ui-meter.html +1 -1
- package/components/ui-nav-item/ui-nav-item.html +46 -14
- package/components/ui-popover/ui-popover.html +16 -1
- package/components/ui-radio/ui-radio.html +2 -2
- package/components/ui-scroll-area/ui-scroll-area.html +12 -0
- package/components/ui-search-result-row/ui-search-result-row.html +24 -5
- package/components/ui-search-shell/ui-search-shell.html +4 -4
- package/components/ui-section/ui-section.html +3 -3
- package/components/ui-select/ui-select.html +6 -2
- package/components/ui-separator/ui-separator.html +2 -2
- package/components/ui-sidebar/ui-sidebar.html +3 -3
- package/components/ui-stack/ui-stack.html +6 -3
- package/components/ui-status-message/ui-status-message.html +1 -1
- package/components/ui-switch/ui-switch.html +3 -3
- package/components/ui-table/ui-table.html +3 -3
- package/components/ui-tabs/ui-tabs.html +7 -7
- package/components/ui-text/ui-text.html +12 -0
- package/components/ui-textarea/ui-textarea.html +6 -2
- package/components/ui-toast/ui-toast.html +2 -2
- package/components/ui-toast-region/ui-toast-region.html +5 -5
- package/components/ui-tooltip/ui-tooltip.html +15 -15
- package/components/ui-top-bar/ui-top-bar.html +1 -1
- package/components/ui-tree-item/ui-tree-item.html +27 -8
- package/dist/index.js +1 -1
- package/editor/chunks/extensions.js +55 -2
- package/editor/extensions/index.d.ts +1 -0
- package/editor/extensions/index.js +2 -2
- package/editor/extensions/preset.d.ts +2 -0
- package/editor/extensions/relative-links.d.ts +8 -0
- package/editor/icons.d.ts +6 -0
- package/editor/index.js +9 -3
- package/package.json +1 -1
- package/styles/ui-avatar-group.css +1 -1
- package/styles/ui-avatar.css +3 -3
- package/styles/ui-badge.css +1 -1
- package/styles/ui-button.css +3 -3
- package/styles/ui-callout.css +3 -2
- package/styles/ui-card.css +19 -2
- package/styles/ui-checkbox.css +3 -3
- package/styles/ui-combobox.css +8 -8
- package/styles/ui-context-menu.css +2 -2
- package/styles/ui-description-list.css +1 -1
- package/styles/ui-dialog.css +3 -3
- package/styles/ui-disclosure.css +42 -2
- package/styles/ui-editable.css +2 -2
- package/styles/ui-editor-insert-table-grid.css +5 -5
- package/styles/ui-editor-mention-menu.css +2 -2
- package/styles/ui-editor-slash-menu-item.css +1 -1
- package/styles/ui-editor-slash-menu.css +6 -6
- package/styles/ui-editor-table-context-menu.css +2 -2
- package/styles/ui-editor-table-overlay.css +11 -11
- package/styles/ui-editor-table-toolbar.css +5 -5
- package/styles/ui-editor-toolbar.css +4 -4
- package/styles/ui-floating-action-button.css +2 -2
- package/styles/ui-icon-button.css +1 -1
- package/styles/ui-input-group.css +19 -6
- package/styles/ui-input.css +9 -4
- package/styles/ui-list-item.css +23 -4
- package/styles/ui-list.css +1 -1
- package/styles/ui-listbox.css +3 -3
- package/styles/ui-menu-item.css +4 -4
- package/styles/ui-menu.css +2 -2
- package/styles/ui-meter.css +1 -1
- package/styles/ui-nav-item.css +46 -12
- package/styles/ui-popover.css +14 -1
- package/styles/ui-radio.css +2 -2
- package/styles/ui-scroll-area.css +10 -0
- package/styles/ui-search-result-row.css +25 -5
- package/styles/ui-search-shell.css +4 -4
- package/styles/ui-section.css +3 -3
- package/styles/ui-select.css +6 -2
- package/styles/ui-separator.css +2 -2
- package/styles/ui-sidebar.css +3 -3
- package/styles/ui-stack.css +3 -0
- package/styles/ui-status-message.css +1 -1
- package/styles/ui-switch.css +3 -3
- package/styles/ui-table.css +3 -3
- package/styles/ui-tabs.css +7 -7
- package/styles/ui-text.css +8 -0
- package/styles/ui-textarea.css +6 -2
- package/styles/ui-toast-region.css +5 -5
- package/styles/ui-toast.css +2 -2
- package/styles/ui-tooltip.css +15 -15
- package/styles/ui-top-bar.css +1 -1
- package/styles/ui-tree-item.css +32 -8
- package/tokens.css +30 -9
- package/vanilla/UiCard.d.ts +2 -1
- package/vanilla/UiCard.js +1 -1
- package/vanilla/UiDisclosure.d.ts +1 -0
- package/vanilla/UiDisclosure.js +10 -1
- package/vanilla/UiIcon.js +1 -1
- package/vanilla/UiInputGroup.d.ts +1 -0
- package/vanilla/UiInputGroup.js +1 -1
- package/vanilla/UiNavItem.d.ts +2 -0
- package/vanilla/UiNavItem.js +1 -1
- package/vanilla/UiPopover.d.ts +1 -0
- package/vanilla/UiPopover.js +1 -1
- package/vanilla/UiScrollArea.d.ts +1 -0
- package/vanilla/UiScrollArea.js +1 -1
- package/vanilla/UiSearchResultRow.d.ts +1 -0
- package/vanilla/UiSearchResultRow.js +1 -1
- package/vanilla/UiStack.d.ts +1 -1
- package/vanilla/UiStack.js +1 -1
- package/vanilla/UiText.d.ts +2 -0
- package/vanilla/UiText.js +1 -1
- package/vue/UiAvatar.vue +3 -3
- package/vue/UiAvatarGroup.vue +1 -1
- package/vue/UiBadge.vue +2 -1
- package/vue/UiButton.vue +3 -3
- package/vue/UiCallout.vue +2 -2
- package/vue/UiCard.d.ts +12 -3
- package/vue/UiCard.vue +51 -7
- package/vue/UiCheckbox.vue +3 -3
- package/vue/UiCombobox.vue +11 -8
- package/vue/UiContextMenu.vue +2 -2
- package/vue/UiDescriptionList.vue +1 -1
- package/vue/UiDialog.vue +4 -3
- package/vue/UiDisclosure.d.ts +13 -2
- package/vue/UiDisclosure.vue +61 -4
- package/vue/UiEditable.vue +2 -2
- package/vue/UiEditorInsertTableGrid.vue +5 -5
- package/vue/UiEditorMentionMenu.vue +2 -2
- package/vue/UiEditorSlashMenu.vue +6 -6
- package/vue/UiEditorSlashMenuItem.vue +1 -1
- package/vue/UiEditorTableContextMenu.vue +2 -2
- package/vue/UiEditorTableOverlay.vue +11 -11
- package/vue/UiEditorTableToolbar.vue +5 -5
- package/vue/UiEditorToolbar.vue +6 -4
- package/vue/UiFloatingActionButton.vue +2 -2
- package/vue/UiIcon.vue +31 -0
- package/vue/UiIconButton.vue +1 -1
- package/vue/UiInput.vue +8 -4
- package/vue/UiInputGroup.d.ts +9 -0
- package/vue/UiInputGroup.vue +39 -8
- package/vue/UiList.vue +1 -1
- package/vue/UiListItem.vue +20 -4
- package/vue/UiListbox.vue +3 -3
- package/vue/UiMenu.vue +3 -2
- package/vue/UiMenuItem.vue +4 -4
- package/vue/UiMeter.vue +1 -1
- package/vue/UiNavItem.d.ts +18 -0
- package/vue/UiNavItem.vue +96 -12
- package/vue/UiPopover.d.ts +9 -0
- package/vue/UiPopover.vue +45 -3
- package/vue/UiRadio.vue +2 -2
- package/vue/UiScrollArea.d.ts +9 -0
- package/vue/UiScrollArea.vue +35 -2
- package/vue/UiSearchResultRow.d.ts +9 -0
- package/vue/UiSearchResultRow.vue +51 -6
- package/vue/UiSearchShell.vue +4 -4
- package/vue/UiSection.vue +3 -3
- package/vue/UiSelect.vue +3 -2
- package/vue/UiSeparator.vue +4 -2
- package/vue/UiSidebar.vue +5 -3
- package/vue/UiStack.d.ts +3 -3
- package/vue/UiStack.vue +10 -4
- package/vue/UiStatusMessage.vue +1 -1
- package/vue/UiSwitch.vue +3 -3
- package/vue/UiTable.vue +3 -3
- package/vue/UiTabs.vue +8 -7
- package/vue/UiText.d.ts +18 -0
- package/vue/UiText.vue +70 -0
- package/vue/UiTextarea.vue +2 -2
- package/vue/UiToast.vue +4 -2
- package/vue/UiToastRegion.vue +5 -5
- package/vue/UiTooltip.vue +19 -15
- package/vue/UiTopBar.vue +1 -1
- package/vue/UiTreeItem.vue +31 -8
- package/vue/chunks/UiAvatar.js +1 -1
- package/vue/chunks/UiAvatarGroup.js +1 -1
- package/vue/chunks/UiBadge.js +1 -1
- package/vue/chunks/UiButton.js +1 -1
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCard.js +39 -3
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiCombobox.js +1 -1
- package/vue/chunks/UiContextMenu.js +1 -1
- package/vue/chunks/UiDescriptionList.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiDisclosure.js +27 -4
- package/vue/chunks/UiEditable.js +1 -1
- package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorSlashMenu.js +1 -1
- package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableOverlay.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiEditorToolbar.js +1 -1
- package/vue/chunks/UiFloatingActionButton.js +1 -1
- package/vue/chunks/UiIcon.js +92 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiInput.js +1 -1
- package/vue/chunks/UiInputGroup.js +59 -22
- package/vue/chunks/UiList.js +1 -1
- package/vue/chunks/UiListItem.js +1 -1
- package/vue/chunks/UiListbox.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiMeter.js +1 -1
- package/vue/chunks/UiNavItem.js +65 -6
- package/vue/chunks/UiPopover.js +37 -5
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiScrollArea.js +66 -23
- package/vue/chunks/UiSearchResultRow.js +28 -2
- package/vue/chunks/UiSearchShell.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiSelect.js +1 -1
- package/vue/chunks/UiSeparator.js +1 -1
- package/vue/chunks/UiSidebar.js +1 -1
- package/vue/chunks/UiStack.js +3 -2
- package/vue/chunks/UiStatusMessage.js +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiTable.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiText.js +92 -4
- package/vue/chunks/UiTextarea.js +1 -1
- package/vue/chunks/UiToast.js +1 -1
- package/vue/chunks/UiToastRegion.js +1 -1
- package/vue/chunks/UiTooltip.js +1 -1
- package/vue/chunks/UiTopBar.js +1 -1
- package/vue/chunks/UiTreeItem.js +1 -1
- package/vue/components.css +1431 -1429
- package/vue/editor/LoomaEditor.d.ts +11 -0
- package/vue/editor/index.js +261 -145
package/vue/UiPopover.vue
CHANGED
|
@@ -45,6 +45,15 @@ const propValidityContract = {
|
|
|
45
45
|
],
|
|
46
46
|
default: 'bottom-start',
|
|
47
47
|
},
|
|
48
|
+
size: {
|
|
49
|
+
type: { kind: 'terminal', name: 'keyword' },
|
|
50
|
+
required: false,
|
|
51
|
+
target: { attribute: 'size' },
|
|
52
|
+
description:
|
|
53
|
+
'Optional size preset. content keeps the existing intrinsic sizing; the other sizes constrain the surface for compact, medium, or large content.',
|
|
54
|
+
values: ['content', 'sm', 'md', 'lg'],
|
|
55
|
+
default: 'content',
|
|
56
|
+
},
|
|
48
57
|
},
|
|
49
58
|
} as const
|
|
50
59
|
const props = defineProps({
|
|
@@ -68,8 +77,17 @@ const props = defineProps({
|
|
|
68
77
|
>,
|
|
69
78
|
default: 'bottom-start',
|
|
70
79
|
},
|
|
80
|
+
size: {
|
|
81
|
+
type: null as unknown as PropType<'content' | 'sm' | 'md' | 'lg' | null>,
|
|
82
|
+
default: 'content',
|
|
83
|
+
},
|
|
71
84
|
})
|
|
72
|
-
const acceptedProps: Record<string, unknown> = {
|
|
85
|
+
const acceptedProps: Record<string, unknown> = {
|
|
86
|
+
for: '',
|
|
87
|
+
open: false,
|
|
88
|
+
placement: 'bottom-start',
|
|
89
|
+
size: 'content',
|
|
90
|
+
}
|
|
73
91
|
const checkedProps = computed(() => ({
|
|
74
92
|
for: checkedProp<string>(
|
|
75
93
|
props['for'],
|
|
@@ -111,6 +129,13 @@ const checkedProps = computed(() => ({
|
|
|
111
129
|
| 'right'
|
|
112
130
|
| 'right-start'
|
|
113
131
|
| 'right-end',
|
|
132
|
+
size: checkedProp<'content' | 'sm' | 'md' | 'lg'>(
|
|
133
|
+
props['size'],
|
|
134
|
+
{ kind: 'terminal', name: 'keyword' },
|
|
135
|
+
false,
|
|
136
|
+
'size',
|
|
137
|
+
acceptedProps,
|
|
138
|
+
) as 'content' | 'sm' | 'md' | 'lg',
|
|
114
139
|
}))
|
|
115
140
|
void checkedProps.value
|
|
116
141
|
watchSyncEffect(() => {
|
|
@@ -195,6 +220,8 @@ if (
|
|
|
195
220
|
const hostState = computed(() =>
|
|
196
221
|
[
|
|
197
222
|
internalOpen.value && 'internalOpen',
|
|
223
|
+
checkedProps.value.size && 'size',
|
|
224
|
+
checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
|
|
198
225
|
].filter(Boolean).join(' ')
|
|
199
226
|
)
|
|
200
227
|
|
|
@@ -232,7 +259,7 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
232
259
|
? (incoming[name] ?? incoming[kebab] ?? null)
|
|
233
260
|
: null
|
|
234
261
|
},
|
|
235
|
-
propNames: ['for', 'open', 'placement'],
|
|
262
|
+
propNames: ['for', 'open', 'placement', 'size'],
|
|
236
263
|
propValidity: (name: string) =>
|
|
237
264
|
propValidityState({ contract: propValidityContract, values: { ...props } }, name),
|
|
238
265
|
state: { internalOpen },
|
|
@@ -247,6 +274,7 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
247
274
|
:data-for="reflectedProp('for', 'for', checkedProps.for, undefined, false)"
|
|
248
275
|
:data-open="reflectedProp('open', 'open', checkedProps.open, undefined, false)"
|
|
249
276
|
:data-placement="reflectedProp('placement', 'placement', checkedProps.placement, undefined, false)"
|
|
277
|
+
:data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
|
|
250
278
|
:data-ui-popover-state="hostState || undefined"
|
|
251
279
|
ref="root"
|
|
252
280
|
><div class="surface"><slot /></div></span>
|
|
@@ -311,7 +339,8 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
311
339
|
overflow: auto;
|
|
312
340
|
padding: var(--_ui-popover-padding, var(--ui-space-3));
|
|
313
341
|
background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
314
|
-
border:
|
|
342
|
+
border: var(--ui-border-width) solid
|
|
343
|
+
var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
315
344
|
border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
|
|
316
345
|
box-shadow: var(
|
|
317
346
|
--_ui-popover-shadow,
|
|
@@ -348,6 +377,19 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
348
377
|
}
|
|
349
378
|
}
|
|
350
379
|
|
|
380
|
+
[data-component~="ui-popover"][data-ui-popover-state~="size=sm"] {
|
|
381
|
+
inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
382
|
+
max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
383
|
+
}
|
|
384
|
+
[data-component~="ui-popover"][data-ui-popover-state~="size=md"] {
|
|
385
|
+
inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
386
|
+
max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
387
|
+
}
|
|
388
|
+
[data-component~="ui-popover"][data-ui-popover-state~="size=lg"] {
|
|
389
|
+
inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
390
|
+
max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
391
|
+
}
|
|
392
|
+
|
|
351
393
|
[data-component~="ui-popover"][hidden] {
|
|
352
394
|
display: none;
|
|
353
395
|
}
|
package/vue/UiRadio.vue
CHANGED
|
@@ -328,8 +328,8 @@ input {
|
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
input:focus-visible {
|
|
331
|
-
outline:
|
|
332
|
-
outline-offset:
|
|
331
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
|
|
332
|
+
outline-offset: var(--ui-focus-width);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
[data-component~="ui-radio"][data-ui-radio-state~="disabled"] {
|
package/vue/UiScrollArea.d.ts
CHANGED
|
@@ -8,12 +8,21 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
8
8
|
type: PropType<"vertical" | "horizontal" | null>;
|
|
9
9
|
default: string;
|
|
10
10
|
};
|
|
11
|
+
size: {
|
|
12
|
+
type: PropType<"content" | "sm" | "md" | "lg" | null>;
|
|
13
|
+
default: string;
|
|
14
|
+
};
|
|
11
15
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
16
|
orientation: {
|
|
13
17
|
type: PropType<"vertical" | "horizontal" | null>;
|
|
14
18
|
default: string;
|
|
15
19
|
};
|
|
20
|
+
size: {
|
|
21
|
+
type: PropType<"content" | "sm" | "md" | "lg" | null>;
|
|
22
|
+
default: string;
|
|
23
|
+
};
|
|
16
24
|
}>> & Readonly<{}>, {
|
|
25
|
+
size: "sm" | "md" | "content" | "lg" | null;
|
|
17
26
|
orientation: "vertical" | "horizontal" | null;
|
|
18
27
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
19
28
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
package/vue/UiScrollArea.vue
CHANGED
|
@@ -18,6 +18,15 @@ const propValidityContract = {
|
|
|
18
18
|
values: ['vertical', 'horizontal'],
|
|
19
19
|
default: 'vertical',
|
|
20
20
|
},
|
|
21
|
+
size: {
|
|
22
|
+
type: { kind: 'terminal', name: 'keyword' },
|
|
23
|
+
required: false,
|
|
24
|
+
target: { attribute: 'size' },
|
|
25
|
+
description:
|
|
26
|
+
'Optional height preset. content keeps intrinsic sizing; sm fits three compact 3.125rem result rows, md is 20rem, and lg is 30rem.',
|
|
27
|
+
values: ['content', 'sm', 'md', 'lg'],
|
|
28
|
+
default: 'content',
|
|
29
|
+
},
|
|
21
30
|
},
|
|
22
31
|
} as const
|
|
23
32
|
const props = defineProps({
|
|
@@ -25,8 +34,12 @@ const props = defineProps({
|
|
|
25
34
|
type: null as unknown as PropType<'vertical' | 'horizontal' | null>,
|
|
26
35
|
default: 'vertical',
|
|
27
36
|
},
|
|
37
|
+
size: {
|
|
38
|
+
type: null as unknown as PropType<'content' | 'sm' | 'md' | 'lg' | null>,
|
|
39
|
+
default: 'content',
|
|
40
|
+
},
|
|
28
41
|
})
|
|
29
|
-
const acceptedProps: Record<string, unknown> = { orientation: 'vertical' }
|
|
42
|
+
const acceptedProps: Record<string, unknown> = { orientation: 'vertical', size: 'content' }
|
|
30
43
|
const checkedProps = computed(() => ({
|
|
31
44
|
orientation: checkedProp<'vertical' | 'horizontal'>(
|
|
32
45
|
props['orientation'],
|
|
@@ -35,6 +48,13 @@ const checkedProps = computed(() => ({
|
|
|
35
48
|
'orientation',
|
|
36
49
|
acceptedProps,
|
|
37
50
|
) as 'vertical' | 'horizontal',
|
|
51
|
+
size: checkedProp<'content' | 'sm' | 'md' | 'lg'>(
|
|
52
|
+
props['size'],
|
|
53
|
+
{ kind: 'terminal', name: 'keyword' },
|
|
54
|
+
false,
|
|
55
|
+
'size',
|
|
56
|
+
acceptedProps,
|
|
57
|
+
) as 'content' | 'sm' | 'md' | 'lg',
|
|
38
58
|
}))
|
|
39
59
|
void checkedProps.value
|
|
40
60
|
watchSyncEffect(() => {
|
|
@@ -99,6 +119,8 @@ const hostState = computed(() =>
|
|
|
99
119
|
checkedProps.value.orientation && 'orientation',
|
|
100
120
|
checkedProps.value.orientation != null
|
|
101
121
|
&& `orientation=${encodeURIComponent(checkedProps.value.orientation)}`,
|
|
122
|
+
checkedProps.value.size && 'size',
|
|
123
|
+
checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
|
|
102
124
|
].filter(Boolean).join(' ')
|
|
103
125
|
)
|
|
104
126
|
|
|
@@ -119,7 +141,7 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
119
141
|
? (incoming[name] ?? incoming[kebab] ?? null)
|
|
120
142
|
: null
|
|
121
143
|
},
|
|
122
|
-
propNames: ['orientation'],
|
|
144
|
+
propNames: ['orientation', 'size'],
|
|
123
145
|
propValidity: (name: string) =>
|
|
124
146
|
propValidityState({ contract: propValidityContract, values: { ...props } }, name),
|
|
125
147
|
refs: { content: contentElement },
|
|
@@ -132,6 +154,7 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
132
154
|
v-bind="nativeAttrs($attrs)"
|
|
133
155
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
134
156
|
:data-orientation="reflectedProp('orientation', 'orientation', checkedProps.orientation, undefined, false)"
|
|
157
|
+
:data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
|
|
135
158
|
:data-ui-scroll-area-state="hostState || undefined"
|
|
136
159
|
ref="root"
|
|
137
160
|
>
|
|
@@ -177,6 +200,16 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
177
200
|
--_ui-scroll-fade-inline: to left;
|
|
178
201
|
}
|
|
179
202
|
|
|
203
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=sm"] {
|
|
204
|
+
max-block-size: 9.375rem;
|
|
205
|
+
}
|
|
206
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=md"] {
|
|
207
|
+
max-block-size: 20rem;
|
|
208
|
+
}
|
|
209
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="size=lg"] {
|
|
210
|
+
max-block-size: 30rem;
|
|
211
|
+
}
|
|
212
|
+
|
|
180
213
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
181
214
|
[data-component~="ui-scroll-area"][hidden] {
|
|
182
215
|
display: none;
|
|
@@ -12,6 +12,10 @@ type __VLS_Slots = {} & {
|
|
|
12
12
|
trailing?: (props: typeof __VLS_9) => any;
|
|
13
13
|
};
|
|
14
14
|
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
15
|
+
density: {
|
|
16
|
+
type: PropType<"comfortable" | "compact" | null>;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
15
19
|
disabled: {
|
|
16
20
|
type: PropType<boolean | null>;
|
|
17
21
|
default: boolean;
|
|
@@ -21,6 +25,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
21
25
|
default: boolean;
|
|
22
26
|
};
|
|
23
27
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
28
|
+
density: {
|
|
29
|
+
type: PropType<"comfortable" | "compact" | null>;
|
|
30
|
+
default: string;
|
|
31
|
+
};
|
|
24
32
|
disabled: {
|
|
25
33
|
type: PropType<boolean | null>;
|
|
26
34
|
default: boolean;
|
|
@@ -32,6 +40,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
32
40
|
}>> & Readonly<{}>, {
|
|
33
41
|
selected: boolean | null;
|
|
34
42
|
disabled: boolean | null;
|
|
43
|
+
density: "comfortable" | "compact" | null;
|
|
35
44
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
36
45
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
37
46
|
declare const _default: typeof __VLS_export;
|
|
@@ -8,6 +8,15 @@ defineOptions({ inheritAttrs: false })
|
|
|
8
8
|
|
|
9
9
|
const propValidityContract = {
|
|
10
10
|
props: {
|
|
11
|
+
density: {
|
|
12
|
+
type: { kind: 'terminal', name: 'keyword' },
|
|
13
|
+
required: false,
|
|
14
|
+
target: { attribute: 'density' },
|
|
15
|
+
description:
|
|
16
|
+
'Compact keeps a title and location together in a 3.125rem row for small destination pickers; comfortable preserves the existing rich result spacing.',
|
|
17
|
+
values: ['comfortable', 'compact'],
|
|
18
|
+
default: 'comfortable',
|
|
19
|
+
},
|
|
11
20
|
disabled: {
|
|
12
21
|
type: { kind: 'terminal', name: 'boolean' },
|
|
13
22
|
required: false,
|
|
@@ -27,11 +36,26 @@ const propValidityContract = {
|
|
|
27
36
|
},
|
|
28
37
|
} as const
|
|
29
38
|
const props = defineProps({
|
|
39
|
+
density: {
|
|
40
|
+
type: null as unknown as PropType<'comfortable' | 'compact' | null>,
|
|
41
|
+
default: 'comfortable',
|
|
42
|
+
},
|
|
30
43
|
disabled: { type: null as unknown as PropType<boolean | null>, default: false },
|
|
31
44
|
selected: { type: null as unknown as PropType<boolean | null>, default: false },
|
|
32
45
|
})
|
|
33
|
-
const acceptedProps: Record<string, unknown> = {
|
|
46
|
+
const acceptedProps: Record<string, unknown> = {
|
|
47
|
+
density: 'comfortable',
|
|
48
|
+
disabled: false,
|
|
49
|
+
selected: false,
|
|
50
|
+
}
|
|
34
51
|
const checkedProps = computed(() => ({
|
|
52
|
+
density: checkedProp<'comfortable' | 'compact'>(
|
|
53
|
+
props['density'],
|
|
54
|
+
{ kind: 'terminal', name: 'keyword' },
|
|
55
|
+
false,
|
|
56
|
+
'density',
|
|
57
|
+
acceptedProps,
|
|
58
|
+
) as 'comfortable' | 'compact',
|
|
35
59
|
disabled: checkedProp<boolean>(
|
|
36
60
|
props['disabled'],
|
|
37
61
|
{ kind: 'terminal', name: 'boolean' },
|
|
@@ -105,6 +129,9 @@ if (
|
|
|
105
129
|
/** The values the styles' :host-state() rules test. */
|
|
106
130
|
const hostState = computed(() =>
|
|
107
131
|
[
|
|
132
|
+
checkedProps.value.density && 'density',
|
|
133
|
+
checkedProps.value.density != null
|
|
134
|
+
&& `density=${encodeURIComponent(checkedProps.value.density)}`,
|
|
108
135
|
checkedProps.value.selected && 'selected',
|
|
109
136
|
].filter(Boolean).join(' ')
|
|
110
137
|
)
|
|
@@ -118,6 +145,7 @@ const hostState = computed(() =>
|
|
|
118
145
|
:disabled="checkedProps.disabled ?? undefined"
|
|
119
146
|
:aria-current="checkedProps.selected ?? undefined"
|
|
120
147
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
148
|
+
:data-density="reflectedProp('density', 'density', checkedProps.density, undefined, false)"
|
|
121
149
|
:data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
|
|
122
150
|
:data-selected="reflectedProp('selected', 'selected', checkedProps.selected, undefined, false)"
|
|
123
151
|
:data-ui-search-result-row-state="hostState || undefined"
|
|
@@ -176,14 +204,23 @@ const hostState = computed(() =>
|
|
|
176
204
|
align-items: flex-start;
|
|
177
205
|
gap: var(--ui-search-result-row-gap, var(--ui-space-3));
|
|
178
206
|
background: var(--ui-search-result-row-surface, transparent);
|
|
179
|
-
border:
|
|
180
|
-
border-radius: var(--ui-radius
|
|
207
|
+
border: var(--ui-border-width) solid var(--ui-search-result-row-border, transparent);
|
|
208
|
+
border-radius: var(--ui-selection-radius);
|
|
181
209
|
color: inherit;
|
|
182
210
|
cursor: pointer;
|
|
183
211
|
text-align: left;
|
|
184
212
|
transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
185
213
|
}
|
|
186
214
|
|
|
215
|
+
[data-component~="ui-search-result-row"][data-ui-search-result-row-state~="density=compact"] {
|
|
216
|
+
min-block-size: var(--ui-search-result-row-min-height, 3.125rem);
|
|
217
|
+
padding-block: var(--ui-search-result-row-padding-block, var(--ui-space-1));
|
|
218
|
+
padding-inline: var(--ui-search-result-row-padding-inline, var(--ui-space-2));
|
|
219
|
+
gap: var(--ui-search-result-row-gap, var(--ui-space-2));
|
|
220
|
+
align-items: center;
|
|
221
|
+
font-family: var(--ui-font-family-sans, sans-serif);
|
|
222
|
+
}
|
|
223
|
+
|
|
187
224
|
[data-component~="ui-search-result-row"]:hover:enabled {
|
|
188
225
|
background: var(
|
|
189
226
|
--ui-search-result-row-hover-surface,
|
|
@@ -194,13 +231,14 @@ const hostState = computed(() =>
|
|
|
194
231
|
[data-component~="ui-search-result-row"][data-ui-search-result-row-state~="selected"] {
|
|
195
232
|
background: var(
|
|
196
233
|
--ui-search-result-row-selected-bg,
|
|
197
|
-
var(--ui-
|
|
234
|
+
var(--ui-selection-surface)
|
|
198
235
|
);
|
|
236
|
+
color: var(--ui-selection-text);
|
|
199
237
|
}
|
|
200
238
|
|
|
201
239
|
[data-component~="ui-search-result-row"]:focus-visible {
|
|
202
|
-
outline:
|
|
203
|
-
outline-offset: -
|
|
240
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
241
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
204
242
|
}
|
|
205
243
|
|
|
206
244
|
[data-component~="ui-search-result-row"]:disabled {
|
|
@@ -245,6 +283,13 @@ const hostState = computed(() =>
|
|
|
245
283
|
margin: 0;
|
|
246
284
|
}
|
|
247
285
|
|
|
286
|
+
@media (forced-colors: active) {
|
|
287
|
+
[data-component~="ui-search-result-row"][data-ui-search-result-row-state~="selected"]:not(:focus-visible):not(:disabled) {
|
|
288
|
+
outline: var(--ui-border-width) solid Highlight;
|
|
289
|
+
outline-offset: calc(-1 * var(--ui-border-width));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
248
293
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
249
294
|
[data-component~="ui-search-result-row"][hidden] {
|
|
250
295
|
display: none;
|
package/vue/UiSearchShell.vue
CHANGED
|
@@ -318,7 +318,7 @@ dialog[data-ui-backdrop-hidden]::backdrop {
|
|
|
318
318
|
--_ui-search-shell-surface,
|
|
319
319
|
var(--ui-overlay-surface, var(--ui-surface-elevated))
|
|
320
320
|
);
|
|
321
|
-
border:
|
|
321
|
+
border: var(--ui-border-width) solid
|
|
322
322
|
var(--_ui-search-shell-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
323
323
|
border-radius: var(--_ui-search-shell-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
|
|
324
324
|
box-shadow: var(
|
|
@@ -336,7 +336,7 @@ dialog[data-ui-backdrop-hidden]::backdrop {
|
|
|
336
336
|
inline-size: 100%;
|
|
337
337
|
min-block-size: var(--ui-control-min-block-size);
|
|
338
338
|
padding: var(--ui-space-2) var(--ui-space-3);
|
|
339
|
-
border:
|
|
339
|
+
border: var(--ui-border-width) solid var(--ui-control-border);
|
|
340
340
|
border-radius: var(--ui-field-radius, var(--ui-radius-md));
|
|
341
341
|
background: var(--ui-control-surface);
|
|
342
342
|
color: var(--ui-text-primary);
|
|
@@ -346,8 +346,8 @@ dialog[data-ui-backdrop-hidden]::backdrop {
|
|
|
346
346
|
|
|
347
347
|
:slotted(input[slot="search"]:focus-visible) {
|
|
348
348
|
border-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
|
|
349
|
-
outline:
|
|
350
|
-
outline-offset:
|
|
349
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
350
|
+
outline-offset: var(--ui-focus-width);
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
.status,
|
package/vue/UiSection.vue
CHANGED
|
@@ -166,19 +166,19 @@ const hostState = computed(() =>
|
|
|
166
166
|
|
|
167
167
|
[data-component~="ui-section"][data-ui-section-state~="variant=card"] {
|
|
168
168
|
padding: var(--ui-space-5);
|
|
169
|
-
border:
|
|
169
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
170
170
|
border-radius: var(--ui-radius-lg);
|
|
171
171
|
background: var(--ui-surface-raised);
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
[data-component~="ui-section"][data-ui-section-state~="variant=divided"] {
|
|
175
175
|
padding-block-start: var(--ui-space-6);
|
|
176
|
-
border-block-start:
|
|
176
|
+
border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
[data-component~="ui-section"][data-ui-section-state~="variant=card"][data-ui-section-state~="tone=danger"] {
|
|
180
180
|
border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
|
|
181
|
-
border-inline-start:
|
|
181
|
+
border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
|
|
182
182
|
background: var(--ui-danger-soft);
|
|
183
183
|
}
|
|
184
184
|
|
package/vue/UiSelect.vue
CHANGED
|
@@ -278,7 +278,8 @@ useComponentHost(() => import('../components/ui-select/ui-select.js'), {
|
|
|
278
278
|
min-block-size: var(--ui-control-size-md);
|
|
279
279
|
margin: 0;
|
|
280
280
|
padding: var(--ui-space-2) var(--ui-space-3);
|
|
281
|
-
border:
|
|
281
|
+
border: var(--ui-border-width) solid
|
|
282
|
+
var(--ui-select-border, var(--ui-control-border, var(--ui-border-strong)));
|
|
282
283
|
border-radius: var(--ui-select-radius, var(--ui-field-radius, var(--ui-radius-md)));
|
|
283
284
|
background-color: var(--ui-select-surface, var(--ui-control-surface, var(--ui-surface-elevated)));
|
|
284
285
|
color: var(--ui-text-primary);
|
|
@@ -333,7 +334,7 @@ useComponentHost(() => import('../components/ui-select/ui-select.js'), {
|
|
|
333
334
|
box-shadow: var(
|
|
334
335
|
--ui-select-invalid-focus-shadow,
|
|
335
336
|
var(--ui-control-inset),
|
|
336
|
-
0 0 0
|
|
337
|
+
0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
|
|
337
338
|
in srgb,
|
|
338
339
|
var(--ui-select-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
|
|
339
340
|
transparent
|
package/vue/UiSeparator.vue
CHANGED
|
@@ -114,12 +114,14 @@ if (
|
|
|
114
114
|
align-self: stretch;
|
|
115
115
|
margin: 0;
|
|
116
116
|
border: 0;
|
|
117
|
-
border-block-start:
|
|
117
|
+
border-block-start: var(--ui-border-width) solid
|
|
118
|
+
var(--ui-separator-color, var(--ui-border-divider));
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
[data-component~="ui-separator"][aria-orientation="vertical"] {
|
|
121
122
|
block-size: auto;
|
|
122
123
|
border-block-start: 0;
|
|
123
|
-
border-inline-start:
|
|
124
|
+
border-inline-start: var(--ui-border-width) solid
|
|
125
|
+
var(--ui-separator-color, var(--ui-border-divider));
|
|
124
126
|
}
|
|
125
127
|
</style>
|
package/vue/UiSidebar.vue
CHANGED
|
@@ -383,12 +383,14 @@ useComponentHost(() => import('../components/ui-sidebar/ui-sidebar.js'), {
|
|
|
383
383
|
max-inline-size: 100%;
|
|
384
384
|
min-block-size: 0;
|
|
385
385
|
background: var(--ui-sidebar-surface, var(--ui-surface-default));
|
|
386
|
-
border-inline-end:
|
|
386
|
+
border-inline-end: var(--ui-border-width) solid
|
|
387
|
+
var(--ui-sidebar-border, var(--ui-border-divider));
|
|
387
388
|
}
|
|
388
389
|
|
|
389
390
|
[data-component~="ui-sidebar"][data-ui-sidebar-state~="side=end"] {
|
|
390
391
|
border-inline-end: 0;
|
|
391
|
-
border-inline-start:
|
|
392
|
+
border-inline-start: var(--ui-border-width) solid
|
|
393
|
+
var(--ui-sidebar-border, var(--ui-border-divider));
|
|
392
394
|
}
|
|
393
395
|
|
|
394
396
|
/* The panel's content scrolls, and each edge that hides content fades: the scroll fade every
|
|
@@ -471,7 +473,7 @@ useComponentHost(() => import('../components/ui-sidebar/ui-sidebar.js'), {
|
|
|
471
473
|
inset-inline-start: 50%;
|
|
472
474
|
inline-size: 6px;
|
|
473
475
|
block-size: 22px;
|
|
474
|
-
border:
|
|
476
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
475
477
|
border-radius: var(--ui-radius-round);
|
|
476
478
|
background: var(--ui-surface-elevated);
|
|
477
479
|
opacity: 0;
|
package/vue/UiStack.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
9
9
|
default: null;
|
|
10
10
|
};
|
|
11
11
|
gap: {
|
|
12
|
-
type: PropType<"xs" | "s" | "m" | "l" | "xl" | null>;
|
|
12
|
+
type: PropType<"none" | "xs" | "s" | "m" | "l" | "xl" | null>;
|
|
13
13
|
default: null;
|
|
14
14
|
};
|
|
15
15
|
justify: {
|
|
@@ -22,7 +22,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
22
22
|
default: null;
|
|
23
23
|
};
|
|
24
24
|
gap: {
|
|
25
|
-
type: PropType<"xs" | "s" | "m" | "l" | "xl" | null>;
|
|
25
|
+
type: PropType<"none" | "xs" | "s" | "m" | "l" | "xl" | null>;
|
|
26
26
|
default: null;
|
|
27
27
|
};
|
|
28
28
|
justify: {
|
|
@@ -31,7 +31,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
31
31
|
};
|
|
32
32
|
}>> & Readonly<{}>, {
|
|
33
33
|
align: "center" | "start" | "stretch" | "end" | null;
|
|
34
|
-
gap: "s" | "xs" | "m" | "l" | "xl" | null;
|
|
34
|
+
gap: "s" | "none" | "xs" | "m" | "l" | "xl" | null;
|
|
35
35
|
justify: "center" | "start" | "end" | "between" | null;
|
|
36
36
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
37
37
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
package/vue/UiStack.vue
CHANGED
|
@@ -21,8 +21,8 @@ const propValidityContract = {
|
|
|
21
21
|
required: false,
|
|
22
22
|
target: { attribute: 'gap' },
|
|
23
23
|
description:
|
|
24
|
-
'Space between items, on the spacing scale: xs is 0.5rem, s 0.75rem, m 1rem (also the default), l 1.5rem, and xl 2rem. The --ui-stack-gap
|
|
25
|
-
values: ['xs', 's', 'm', 'l', 'xl'],
|
|
24
|
+
'Space between items, on the spacing scale: none is zero, xs is 0.5rem, s 0.75rem, m 1rem (also the default), l 1.5rem, and xl 2rem. The --ui-stack-gap\n custom property, set on the stack itself, overrides it; set on an ancestor, it does nothing.',
|
|
25
|
+
values: ['none', 'xs', 's', 'm', 'l', 'xl'],
|
|
26
26
|
},
|
|
27
27
|
justify: {
|
|
28
28
|
type: { kind: 'terminal', name: 'keyword' },
|
|
@@ -39,7 +39,10 @@ const props = defineProps({
|
|
|
39
39
|
type: null as unknown as PropType<'start' | 'center' | 'end' | 'stretch' | null>,
|
|
40
40
|
default: null,
|
|
41
41
|
},
|
|
42
|
-
gap: {
|
|
42
|
+
gap: {
|
|
43
|
+
type: null as unknown as PropType<'none' | 'xs' | 's' | 'm' | 'l' | 'xl' | null>,
|
|
44
|
+
default: null,
|
|
45
|
+
},
|
|
43
46
|
justify: {
|
|
44
47
|
type: null as unknown as PropType<'start' | 'center' | 'end' | 'between' | null>,
|
|
45
48
|
default: null,
|
|
@@ -54,7 +57,7 @@ const checkedProps = computed(() => ({
|
|
|
54
57
|
'align',
|
|
55
58
|
acceptedProps,
|
|
56
59
|
),
|
|
57
|
-
gap: checkedProp<'xs' | 's' | 'm' | 'l' | 'xl'>(
|
|
60
|
+
gap: checkedProp<'none' | 'xs' | 's' | 'm' | 'l' | 'xl'>(
|
|
58
61
|
props['gap'],
|
|
59
62
|
{ kind: 'terminal', name: 'keyword' },
|
|
60
63
|
false,
|
|
@@ -167,6 +170,9 @@ const hostState = computed(() =>
|
|
|
167
170
|
margin: 0;
|
|
168
171
|
}
|
|
169
172
|
|
|
173
|
+
[data-component~="ui-stack"][data-ui-stack-state~="gap=none"] {
|
|
174
|
+
--_layout-gap: 0px;
|
|
175
|
+
}
|
|
170
176
|
[data-component~="ui-stack"][data-ui-stack-state~="gap=xs"] {
|
|
171
177
|
--_layout-gap: var(--ui-space-2);
|
|
172
178
|
}
|
package/vue/UiStatusMessage.vue
CHANGED
|
@@ -192,7 +192,7 @@ function attribute(value: unknown): any {
|
|
|
192
192
|
|
|
193
193
|
[data-component~="ui-status-message"][data-ui-status-message-state~="layout=panel"] {
|
|
194
194
|
padding: var(--ui-space-6);
|
|
195
|
-
border:
|
|
195
|
+
border: var(--ui-border-width) dashed var(--ui-border-strong);
|
|
196
196
|
border-radius: var(--ui-radius-lg);
|
|
197
197
|
}
|
|
198
198
|
|
package/vue/UiSwitch.vue
CHANGED
|
@@ -331,7 +331,7 @@ input {
|
|
|
331
331
|
width: var(--_ui-switch-track-width, 2.5rem);
|
|
332
332
|
height: var(--_ui-switch-track-height, 1.5rem);
|
|
333
333
|
padding: 0;
|
|
334
|
-
border:
|
|
334
|
+
border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
|
|
335
335
|
border-radius: var(--ui-radius-round);
|
|
336
336
|
background-color: var(--ui-control-surface, var(--ui-surface-default));
|
|
337
337
|
box-shadow: var(--ui-control-inset);
|
|
@@ -368,8 +368,8 @@ input:checked::after {
|
|
|
368
368
|
}
|
|
369
369
|
|
|
370
370
|
input:focus-visible {
|
|
371
|
-
outline:
|
|
372
|
-
outline-offset:
|
|
371
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
|
|
372
|
+
outline-offset: var(--ui-focus-width);
|
|
373
373
|
}
|
|
374
374
|
|
|
375
375
|
[data-component~="ui-switch"][data-ui-switch-state~="disabled"] {
|
package/vue/UiTable.vue
CHANGED
|
@@ -198,8 +198,8 @@ useComponentHost(() => import('../components/ui-table/ui-table.js'), {
|
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
[data-component~="ui-table"]:focus-visible {
|
|
201
|
-
outline:
|
|
202
|
-
outline-offset: -
|
|
201
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
202
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
[data-component~="ui-table"][data-ui-table-state~="density=compact"] {
|
|
@@ -232,7 +232,7 @@ useComponentHost(() => import('../components/ui-table/ui-table.js'), {
|
|
|
232
232
|
:slotted(td) {
|
|
233
233
|
block-size: var(--_row-size);
|
|
234
234
|
padding: var(--_pad-block) var(--_pad-inline);
|
|
235
|
-
border-block-end:
|
|
235
|
+
border-block-end: var(--ui-border-width) solid var(--ui-border-subtle);
|
|
236
236
|
text-align: start;
|
|
237
237
|
vertical-align: middle;
|
|
238
238
|
}
|
package/vue/UiTabs.vue
CHANGED
|
@@ -410,17 +410,17 @@ function uniqueKeys<T>(
|
|
|
410
410
|
overflow-y: hidden;
|
|
411
411
|
overscroll-behavior: contain;
|
|
412
412
|
scrollbar-width: thin;
|
|
413
|
-
border-block-end:
|
|
413
|
+
border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
|
|
414
414
|
}
|
|
415
415
|
|
|
416
416
|
.list button,
|
|
417
417
|
.list > :slotted(button[slot="tab"]) {
|
|
418
418
|
min-block-size: var(--_ui-tabs-tab-min-block-size, var(--_tab-min-block-size));
|
|
419
|
-
margin: 0 0 -
|
|
419
|
+
margin: 0 0 calc(-1 * var(--ui-border-width));
|
|
420
420
|
padding: var(--_ui-tabs-tab-padding-block, var(--_tab-padding-block))
|
|
421
421
|
var(--_ui-tabs-tab-padding-inline, var(--_tab-padding-inline));
|
|
422
422
|
border: 0;
|
|
423
|
-
border-block-end:
|
|
423
|
+
border-block-end: var(--ui-accent-line-width) solid transparent;
|
|
424
424
|
background: transparent;
|
|
425
425
|
color: var(--ui-text-secondary);
|
|
426
426
|
font: inherit;
|
|
@@ -470,7 +470,8 @@ function uniqueKeys<T>(
|
|
|
470
470
|
.list > :slotted(button[slot="tab"]:focus-visible) {
|
|
471
471
|
position: relative;
|
|
472
472
|
outline: none;
|
|
473
|
-
box-shadow: inset 0 0 0
|
|
473
|
+
box-shadow: inset 0 0 0 var(--ui-focus-width)
|
|
474
|
+
color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
|
|
474
475
|
border-radius: var(--ui-radius-sm);
|
|
475
476
|
}
|
|
476
477
|
|
|
@@ -490,16 +491,16 @@ function uniqueKeys<T>(
|
|
|
490
491
|
grid-auto-flow: row;
|
|
491
492
|
grid-auto-columns: auto;
|
|
492
493
|
border-block-end: 0;
|
|
493
|
-
border-inline-end:
|
|
494
|
+
border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
|
|
494
495
|
}
|
|
495
496
|
|
|
496
497
|
[data-component~="ui-tabs"][data-ui-tabs-state~="orientation=vertical"] .list button,
|
|
497
498
|
[data-component~="ui-tabs"][data-ui-tabs-state~="orientation=vertical"]
|
|
498
499
|
.list
|
|
499
500
|
> :slotted(button[slot="tab"]) {
|
|
500
|
-
margin: 0 -
|
|
501
|
+
margin: 0 calc(-1 * var(--ui-border-width)) 0 0;
|
|
501
502
|
border-block-end: 0;
|
|
502
|
-
border-inline-end:
|
|
503
|
+
border-inline-end: var(--ui-accent-line-width) solid transparent;
|
|
503
504
|
text-align: start;
|
|
504
505
|
}
|
|
505
506
|
|