@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
|
@@ -154,8 +154,8 @@
|
|
|
154
154
|
gap: var(--ui-space-1);
|
|
155
155
|
padding: var(--ui-space-1);
|
|
156
156
|
background: color-mix(in srgb, var(--ui-surface) 94%, transparent);
|
|
157
|
-
border:
|
|
158
|
-
border-radius: calc(var(--ui-radius-md) +
|
|
157
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
158
|
+
border-radius: calc(var(--ui-radius-md) + 2 * var(--ui-border-width));
|
|
159
159
|
box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
|
|
160
160
|
backdrop-filter: blur(10px);
|
|
161
161
|
}
|
|
@@ -245,7 +245,7 @@
|
|
|
245
245
|
max-width: min(17rem, calc(100vw - 24px));
|
|
246
246
|
padding: var(--ui-space-1);
|
|
247
247
|
background: var(--ui-surface);
|
|
248
|
-
border:
|
|
248
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
249
249
|
border-radius: var(--ui-radius-md);
|
|
250
250
|
box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
|
|
251
251
|
display: flex;
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
.menu-section + .menu-section {
|
|
261
261
|
margin-top: var(--ui-space-1);
|
|
262
262
|
padding-top: var(--ui-space-1);
|
|
263
|
-
border-top:
|
|
263
|
+
border-top: var(--ui-border-width) solid var(--ui-border-divider);
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
.menu-heading {
|
|
@@ -294,7 +294,7 @@
|
|
|
294
294
|
width: 14px;
|
|
295
295
|
height: 14px;
|
|
296
296
|
flex: 0 0 14px;
|
|
297
|
-
border:
|
|
297
|
+
border: var(--ui-border-width) solid color-mix(in srgb, var(--ui-border) 80%, #000);
|
|
298
298
|
border-radius: var(--ui-radius-round);
|
|
299
299
|
background: var(--_swatch);
|
|
300
300
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
padding: var(--ui-editor-toolbar-padding-block, 6px) var(--ui-editor-toolbar-padding-inline, 12px);
|
|
14
14
|
min-height: var(--ui-editor-toolbar-min-height, 48px);
|
|
15
15
|
background: var(--ui-editor-toolbar-surface, var(--ui-surface));
|
|
16
|
-
border-bottom:
|
|
16
|
+
border-bottom: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/* One row, always. When the controls outgrow the space, the row scrolls sideways rather than
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
min-height: auto;
|
|
81
81
|
padding: var(--ui-editor-toolbar-floating-padding, 4px);
|
|
82
82
|
background: color-mix(in srgb, var(--ui-editor-toolbar-surface, var(--ui-surface)) 96%, transparent);
|
|
83
|
-
border:
|
|
83
|
+
border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
|
|
84
84
|
border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
|
|
85
85
|
box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
|
|
86
86
|
backdrop-filter: blur(10px);
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
left: 0;
|
|
95
95
|
right: 0;
|
|
96
96
|
min-height: var(--ui-editor-toolbar-mobile-min-height, 56px);
|
|
97
|
-
border-top:
|
|
97
|
+
border-top: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
|
|
98
98
|
border-bottom: none;
|
|
99
99
|
box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
|
|
100
100
|
}
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
position: relative;
|
|
104
104
|
inset: auto;
|
|
105
105
|
min-height: auto;
|
|
106
|
-
border:
|
|
106
|
+
border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
|
|
107
107
|
border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
|
|
108
108
|
box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
|
|
109
109
|
}
|
|
@@ -24,9 +24,11 @@
|
|
|
24
24
|
'circle-x': [{ tag: 'circle', cx: '12', cy: '12', r: '10' }, { tag: 'path', d: 'm15 9-6 6' }, { tag: 'path', d: 'm9 9 6 6' }],
|
|
25
25
|
'code-xml': [{ tag: 'path', d: 'm18 16 4-4-4-4' }, { tag: 'path', d: 'm6 8-4 4 4 4' }, { tag: 'path', d: 'm14.5 4-5 16' }],
|
|
26
26
|
'columns': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2' }, { tag: 'path', d: 'M9 3v18' }, { tag: 'path', d: 'M15 3v18' }],
|
|
27
|
+
'compass': [{ tag: 'path', d: 'm16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z' }, { tag: 'circle', cx: '12', cy: '12', r: '10' }],
|
|
27
28
|
'credit-card': [{ tag: 'rect', width: '20', height: '14', x: '2', y: '5', rx: '2' }, { tag: 'line', x1: '2', x2: '22', y1: '10', y2: '10' }],
|
|
28
29
|
'ellipsis': [{ tag: 'circle', cx: '12', cy: '12', r: '1' }, { tag: 'circle', cx: '19', cy: '12', r: '1' }, { tag: 'circle', cx: '5', cy: '12', r: '1' }],
|
|
29
30
|
'eraser': [{ tag: 'path', d: 'M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21' }, { tag: 'path', d: 'm5.082 11.09 8.828 8.828' }],
|
|
31
|
+
'external-link': [{ tag: 'path', d: 'M15 3h6v6' }, { tag: 'path', d: 'M10 14 21 3' }, { tag: 'path', d: 'M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6' }],
|
|
30
32
|
'file-text': [{ tag: 'path', d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z' }, { tag: 'path', d: 'M14 2v5a1 1 0 0 0 1 1h5' }, { tag: 'path', d: 'M10 9H8' }, { tag: 'path', d: 'M16 13H8' }, { tag: 'path', d: 'M16 17H8' }],
|
|
31
33
|
'folder': [{ tag: 'path', d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z' }],
|
|
32
34
|
'grip-horizontal': [{ tag: 'circle', cx: '12', cy: '9', r: '1' }, { tag: 'circle', cx: '19', cy: '9', r: '1' }, { tag: 'circle', cx: '5', cy: '9', r: '1' }, { tag: 'circle', cx: '12', cy: '15', r: '1' }, { tag: 'circle', cx: '19', cy: '15', r: '1' }, { tag: 'circle', cx: '5', cy: '15', r: '1' }],
|
|
@@ -36,6 +38,7 @@
|
|
|
36
38
|
'heading-3': [{ tag: 'path', d: 'M4 12h8' }, { tag: 'path', d: 'M4 18V6' }, { tag: 'path', d: 'M12 18V6' }, { tag: 'path', d: 'M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2' }, { tag: 'path', d: 'M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2' }],
|
|
37
39
|
'help': [{ tag: 'circle', cx: '12', cy: '12', r: '10' }, { tag: 'path', d: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3' }, { tag: 'path', d: 'M12 17h.01' }],
|
|
38
40
|
'highlighter': [{ tag: 'path', d: 'm9 11-6 6v3h9l3-3' }, { tag: 'path', d: 'm22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4' }],
|
|
41
|
+
'history': [{ tag: 'path', d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }, { tag: 'path', d: 'M3 3v5h5' }, { tag: 'path', d: 'M12 7v5l4 2' }],
|
|
39
42
|
'image': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2' }, { tag: 'circle', cx: '9', cy: '9', r: '2' }, { tag: 'path', d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21' }],
|
|
40
43
|
'info': [{ tag: 'circle', cx: '12', cy: '12', r: '10' }, { tag: 'path', d: 'M12 16v-4' }, { tag: 'path', d: 'M12 8h.01' }],
|
|
41
44
|
'italic': [{ tag: 'line', x1: '19', x2: '10', y1: '4', y2: '4' }, { tag: 'line', x1: '14', x2: '5', y1: '20', y2: '20' }, { tag: 'line', x1: '15', x2: '9', y1: '4', y2: '20' }],
|
|
@@ -53,12 +56,14 @@
|
|
|
53
56
|
'panel-left': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2' }, { tag: 'path', d: 'M9 3v18' }],
|
|
54
57
|
'panel-right': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2' }, { tag: 'path', d: 'M15 3v18' }],
|
|
55
58
|
'panel-top': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2' }, { tag: 'path', d: 'M3 9h18' }],
|
|
59
|
+
'pencil': [{ tag: 'path', d: 'M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z' }, { tag: 'path', d: 'm15 5 4 4' }],
|
|
56
60
|
'pilcrow': [{ tag: 'path', d: 'M13 4v16' }, { tag: 'path', d: 'M17 4v16' }, { tag: 'path', d: 'M19 4H9.5a4.5 4.5 0 0 0 0 9H13' }],
|
|
57
61
|
'plus': [{ tag: 'path', d: 'M5 12h14' }, { tag: 'path', d: 'M12 5v14' }],
|
|
58
62
|
'quote': [{ tag: 'path', d: 'M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z' }, { tag: 'path', d: 'M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z' }],
|
|
59
63
|
'receipt': [{ tag: 'path', d: 'M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z' }, { tag: 'path', d: 'M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8' }, { tag: 'path', d: 'M12 17.5v-11' }],
|
|
60
64
|
'redo': [{ tag: 'path', d: 'm15 14 5-5-5-5' }, { tag: 'path', d: 'M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13' }],
|
|
61
65
|
'rows': [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2' }, { tag: 'path', d: 'M21 9H3' }, { tag: 'path', d: 'M21 15H3' }],
|
|
66
|
+
'search': [{ tag: 'path', d: 'm21 21-4.34-4.34' }, { tag: 'circle', cx: '11', cy: '11', r: '8' }],
|
|
62
67
|
'settings': [{ tag: 'path', d: 'M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915' }, { tag: 'circle', cx: '12', cy: '12', r: '3' }],
|
|
63
68
|
'split': [{ tag: 'path', d: 'M16 3h5v5' }, { tag: 'path', d: 'M8 3H3v5' }, { tag: 'path', d: 'M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3' }, { tag: 'path', d: 'm15 9 6-6' }],
|
|
64
69
|
'strikethrough': [{ tag: 'path', d: 'M16 4H9a3 3 0 0 0-2.83 4' }, { tag: 'path', d: 'M14 12a4 4 0 0 1 0 8H6' }, { tag: 'line', x1: '4', x2: '20', y1: '12', y2: '12' }],
|
|
@@ -69,6 +74,7 @@
|
|
|
69
74
|
'truck': [{ tag: 'path', d: 'M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2' }, { tag: 'path', d: 'M15 18H9' }, { tag: 'path', d: 'M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14' }, { tag: 'circle', cx: '17', cy: '18', r: '2' }, { tag: 'circle', cx: '7', cy: '18', r: '2' }],
|
|
70
75
|
'underline': [{ tag: 'path', d: 'M6 4v6a6 6 0 0 0 12 0V4' }, { tag: 'line', x1: '4', x2: '20', y1: '20', y2: '20' }],
|
|
71
76
|
'undo': [{ tag: 'path', d: 'M9 14 4 9l5-5' }, { tag: 'path', d: 'M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11' }],
|
|
77
|
+
'unlink': [{ tag: 'path', d: 'm18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71' }, { tag: 'path', d: 'm5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71' }, { tag: 'line', x1: '8', x2: '8', y1: '2', y2: '5' }, { tag: 'line', x1: '2', x2: '5', y1: '8', y2: '8' }, { tag: 'line', x1: '16', x2: '16', y1: '19', y2: '22' }, { tag: 'line', x1: '19', x2: '22', y1: '16', y2: '16' }],
|
|
72
78
|
'user-round': [{ tag: 'circle', cx: '12', cy: '8', r: '5' }, { tag: 'path', d: 'M20 21a8 8 0 0 0-16 0' }],
|
|
73
79
|
'users': [{ tag: 'path', d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2' }, { tag: 'path', d: 'M16 3.128a4 4 0 0 1 0 7.744' }, { tag: 'path', d: 'M22 21v-2a4 4 0 0 0-3-3.87' }, { tag: 'circle', cx: '9', cy: '7', r: '4' }],
|
|
74
80
|
'x': [{ tag: 'path', d: 'M18 6 6 18' }, { tag: 'path', d: 'm6 6 12 12' }],
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
min-block-size: var(--ui-icon-button-size, var(--_size));
|
|
178
178
|
padding: 0;
|
|
179
179
|
margin: 0;
|
|
180
|
-
border:
|
|
180
|
+
border: var(--ui-border-width) solid transparent;
|
|
181
181
|
border-radius: var(--ui-icon-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
|
|
182
182
|
background-color: var(--ui-icon-button-surface, transparent);
|
|
183
183
|
color: inherit;
|
|
@@ -102,7 +102,8 @@
|
|
|
102
102
|
margin: 0;
|
|
103
103
|
padding: var(--ui-space-2) var(--ui-space-3);
|
|
104
104
|
appearance: none;
|
|
105
|
-
|
|
105
|
+
padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
|
|
106
|
+
border: var(--ui-input-border-width, var(--_ui-default-input-border-width, var(--ui-border-width))) solid
|
|
106
107
|
var(--ui-input-border, var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong))));
|
|
107
108
|
border-radius: var(--ui-input-radius, var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md))));
|
|
108
109
|
background: var(--ui-input-surface, var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated))));
|
|
@@ -171,7 +172,11 @@
|
|
|
171
172
|
var(
|
|
172
173
|
--_ui-default-input-invalid-focus-shadow,
|
|
173
174
|
var(--ui-control-inset),
|
|
174
|
-
0 0 0
|
|
175
|
+
0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
|
|
176
|
+
in srgb,
|
|
177
|
+
var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
|
|
178
|
+
transparent
|
|
179
|
+
)
|
|
175
180
|
)
|
|
176
181
|
);
|
|
177
182
|
}
|
|
@@ -186,8 +191,8 @@
|
|
|
186
191
|
/* Forced colors drop box shadows, so the focus ring becomes an outline. */
|
|
187
192
|
@media (forced-colors: active) {
|
|
188
193
|
:host:focus-visible {
|
|
189
|
-
outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline,
|
|
190
|
-
outline-offset:
|
|
194
|
+
outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight));
|
|
195
|
+
outline-offset: var(--ui-border-width);
|
|
191
196
|
}
|
|
192
197
|
}
|
|
193
198
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template component="ui-input-group" controller="./ui-input-group.js">
|
|
2
2
|
<defs>
|
|
3
|
+
<prop name="prefixKind" type="keyword" values="text, icon" default="text"
|
|
4
|
+
>Text affixes have their own framing. An icon prefix shares the field surface and uses one compact icon-to-value gap.</prop>
|
|
3
5
|
<prop name="disabled" type="boolean" default="false">Fades the group's framing to match a disabled input inside it. Disable the input itself too.</prop>
|
|
4
6
|
</defs>
|
|
5
7
|
<div>
|
|
@@ -52,7 +54,7 @@
|
|
|
52
54
|
min-inline-size: 0;
|
|
53
55
|
min-block-size: var(--ui-control-size-md);
|
|
54
56
|
/* The frame reads the shared control tokens with a lone Input's fallbacks, so the two match. */
|
|
55
|
-
border:
|
|
57
|
+
border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
|
|
56
58
|
border-radius: var(--ui-input-group-radius, var(--ui-field-radius, var(--ui-radius-md)));
|
|
57
59
|
background: var(--ui-control-surface, var(--ui-surface-elevated));
|
|
58
60
|
box-shadow: var(--ui-control-inset);
|
|
@@ -98,15 +100,19 @@
|
|
|
98
100
|
box-shadow: var(
|
|
99
101
|
--ui-input-group-invalid-focus-shadow,
|
|
100
102
|
var(--ui-control-inset),
|
|
101
|
-
0 0 0
|
|
103
|
+
0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
|
|
104
|
+
in srgb,
|
|
105
|
+
var(--ui-input-group-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
|
|
106
|
+
transparent
|
|
107
|
+
)
|
|
102
108
|
);
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
/* Forced colors drop box shadows, so the focus ring becomes an outline. */
|
|
106
112
|
@media (forced-colors: active) {
|
|
107
113
|
:host:has(input:focus-visible) {
|
|
108
|
-
outline:
|
|
109
|
-
outline-offset:
|
|
114
|
+
outline: var(--ui-focus-width) solid Highlight;
|
|
115
|
+
outline-offset: var(--ui-border-width);
|
|
110
116
|
}
|
|
111
117
|
}
|
|
112
118
|
|
|
@@ -141,11 +147,20 @@
|
|
|
141
147
|
}
|
|
142
148
|
|
|
143
149
|
.affix:has([slot="prefix"]) {
|
|
144
|
-
border-inline-end:
|
|
150
|
+
border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
|
|
145
151
|
}
|
|
146
152
|
|
|
147
153
|
.affix:has([slot="suffix"]) {
|
|
148
|
-
border-inline-start:
|
|
154
|
+
border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
:host-state([prefixKind="icon"]) {
|
|
158
|
+
--_ui-default-input-padding-inline-start: var(--ui-space-2);
|
|
159
|
+
}
|
|
160
|
+
:host-state([prefixKind="icon"]) .affix:first-child {
|
|
161
|
+
padding-inline-end: 0;
|
|
162
|
+
border-inline-end: 0;
|
|
163
|
+
background: transparent;
|
|
149
164
|
}
|
|
150
165
|
|
|
151
166
|
/* Centred rather than padded above and below: the group is exactly a lone Input's height, so a
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
|
|
66
66
|
:host > :slotted(li.card) {
|
|
67
67
|
padding: var(--_ui-list-native-padding-block, var(--ui-space-3)) var(--_ui-list-native-padding-inline, var(--ui-space-4));
|
|
68
|
-
border:
|
|
68
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
69
69
|
border-radius: var(--ui-radius-lg);
|
|
70
70
|
background: var(--ui-surface-raised);
|
|
71
71
|
list-style: none;
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
min-block-size: var(--_ui-list-item-min-size, var(--ui-control-size, 2.5rem));
|
|
57
57
|
padding-block: var(--ui-list-item-padding-block, var(--_ui-list-item-padding-block, var(--ui-space-2)));
|
|
58
58
|
padding-inline: var(--ui-list-item-padding-inline, var(--_ui-list-item-padding-inline, var(--ui-space-3)));
|
|
59
|
-
border-radius: var(--ui-radius
|
|
59
|
+
border-radius: var(--ui-selection-radius);
|
|
60
60
|
color: var(--ui-text-primary);
|
|
61
61
|
transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), border-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
62
62
|
}
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
:host-state([variant="card"]) {
|
|
65
65
|
padding-block: var(--ui-list-item-padding-block, var(--ui-space-3));
|
|
66
66
|
padding-inline: var(--ui-list-item-padding-inline, var(--ui-space-4));
|
|
67
|
-
border:
|
|
67
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
68
68
|
border-radius: var(--ui-radius-lg);
|
|
69
69
|
background: var(--ui-surface-raised);
|
|
70
70
|
}
|
|
@@ -78,11 +78,12 @@
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
:host-state([current]) {
|
|
81
|
-
background: var(--ui-surface
|
|
81
|
+
background: var(--ui-selection-surface);
|
|
82
|
+
color: var(--ui-selection-text);
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
:host:has(.title a[href]:focus-visible) {
|
|
85
|
-
box-shadow: 0 0 0
|
|
86
|
+
box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
.leading,
|
|
@@ -98,6 +99,10 @@
|
|
|
98
99
|
font-size: var(--_ui-list-item-icon-size, var(--ui-font-size-lg));
|
|
99
100
|
}
|
|
100
101
|
|
|
102
|
+
:host-state([current]) .leading {
|
|
103
|
+
color: var(--ui-selection-text);
|
|
104
|
+
}
|
|
105
|
+
|
|
101
106
|
/* Trailing controls take their own clicks, above the title link's stretched hit area. */
|
|
102
107
|
.trailing {
|
|
103
108
|
position: relative;
|
|
@@ -159,6 +164,17 @@
|
|
|
159
164
|
display: none;
|
|
160
165
|
}
|
|
161
166
|
|
|
167
|
+
@media (forced-colors: active) {
|
|
168
|
+
:host:has(a:focus-visible) {
|
|
169
|
+
outline: var(--ui-focus-width) solid Highlight;
|
|
170
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
171
|
+
}
|
|
172
|
+
:host-state([current]):not(:has(a:focus-visible)) {
|
|
173
|
+
outline: var(--ui-border-width) solid Highlight;
|
|
174
|
+
outline-offset: calc(-1 * var(--ui-border-width));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
162
178
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
163
179
|
:host[hidden] {
|
|
164
180
|
display: none;
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
min-inline-size: 0;
|
|
106
106
|
margin: 0;
|
|
107
107
|
padding: var(--ui-space-1);
|
|
108
|
-
border:
|
|
108
|
+
border: var(--ui-border-width) solid var(--ui-listbox-border, var(--ui-control-border));
|
|
109
109
|
border-radius: var(--ui-listbox-radius, var(--ui-field-radius, var(--ui-radius-md)));
|
|
110
110
|
background: var(--ui-listbox-surface, var(--ui-control-surface));
|
|
111
111
|
color: var(--ui-text-primary);
|
|
@@ -149,8 +149,8 @@
|
|
|
149
149
|
|
|
150
150
|
:host:focus-visible {
|
|
151
151
|
border-color: var(--ui-control-focus);
|
|
152
|
-
outline:
|
|
153
|
-
outline-offset:
|
|
152
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
153
|
+
outline-offset: var(--ui-focus-width);
|
|
154
154
|
box-shadow: var(--ui-listbox-focus-shadow, var(--ui-focus-halo));
|
|
155
155
|
}
|
|
156
156
|
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
max-inline-size: inherit;
|
|
112
112
|
padding: var(--ui-space-1);
|
|
113
113
|
background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
114
|
-
border:
|
|
114
|
+
border: var(--ui-border-width) solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
115
115
|
border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
|
|
116
116
|
box-shadow: var(--_ui-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
117
117
|
max-block-size: inherit;
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
block-size: 0;
|
|
124
124
|
margin: var(--ui-space-1) 0;
|
|
125
125
|
border: 0;
|
|
126
|
-
border-block-start:
|
|
126
|
+
border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
:host:not(:host-state([internalOpen])):not(:host-state([inline])) {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
padding: var(--ui-menu-item-padding-block, var(--_ui-default-menu-item-padding-block, var(--ui-space-2)))
|
|
82
82
|
var(--ui-menu-item-padding-inline, var(--_ui-default-menu-item-padding-inline, var(--ui-space-3)));
|
|
83
83
|
text-align: left;
|
|
84
|
-
border-radius: var(--ui-menu-item-radius, var(--_ui-default-menu-item-radius, var(--ui-radius
|
|
84
|
+
border-radius: var(--ui-menu-item-radius, var(--_ui-default-menu-item-radius, var(--ui-selection-radius)));
|
|
85
85
|
color: var(--ui-text-primary);
|
|
86
86
|
font-size: var(--ui-menu-item-font-size, var(--_ui-default-menu-item-font-size, var(--ui-font-size-md)));
|
|
87
87
|
font-weight: var(--ui-font-medium);
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
box-sizing: border-box;
|
|
108
108
|
inline-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
|
|
109
109
|
block-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
|
|
110
|
-
border:
|
|
110
|
+
border: var(--ui-border-width) solid var(--ui-control-border);
|
|
111
111
|
border-radius: var(--ui-radius-sm);
|
|
112
112
|
color: var(--ui-surface);
|
|
113
113
|
--_ui-default-icon-size: 0.75rem;
|
|
@@ -159,8 +159,8 @@
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
:host:focus-visible {
|
|
162
|
-
outline:
|
|
163
|
-
outline-offset: -
|
|
162
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
163
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
:host[aria-disabled="true"] {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
background: var(--ui-border);
|
|
60
60
|
box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1), inset 0 -1px rgb(255 255 255 / 0.22);
|
|
61
61
|
/* Unseen until forced colours draw it, where the track's own colour is gone. */
|
|
62
|
-
outline:
|
|
62
|
+
outline: var(--ui-border-width) solid transparent;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
:host-state([size="sm"]) {
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
<template component="ui-nav-item">
|
|
2
2
|
<defs>
|
|
3
|
+
<prop name="variant" type="keyword" values="surface, line" default="surface"
|
|
4
|
+
>surface marks the current row with a quiet filled surface and shared corners. line uses square corners and a continuous logical start edge. Both retain the
|
|
5
|
+
resting label weight and expose aria-current.</prop>
|
|
6
|
+
<prop name="density" type="keyword" values="comfortable, compact" default="comfortable"
|
|
7
|
+
>Compact uses smaller type and row spacing to sit alongside a compact tree; comfortable keeps the regular navigation row.</prop>
|
|
3
8
|
<prop name="current" type="keyword" values="true, false, page, step, location" default="false"
|
|
4
|
-
>Marks the item as where you are: it takes the selected surface,
|
|
5
|
-
technology announces. "true" means the current page (aria-current="page"); "step" marks the current step of a process, and "location" the
|
|
6
|
-
a set, such as a section of a record. Set it on one item at a time.</prop>
|
|
9
|
+
>Marks the item as where you are: it takes the selected surface, the selected text, and the chosen surface or line treatment, and states aria-current, which
|
|
10
|
+
assistive technology announces. "true" means the current page (aria-current="page"); "step" marks the current step of a process, and "location" the
|
|
11
|
+
current place in a set, such as a section of a record. Set it on one item at a time.</prop>
|
|
7
12
|
<prop name="href" type="string"
|
|
8
13
|
>The link's destination. Pair it with as="a" so the item renders as a real link: a router, a modified click, and "open in new tab" all work. Without it the
|
|
9
14
|
item is a button, for switching views inside the app.</prop>
|
|
@@ -63,7 +68,7 @@
|
|
|
63
68
|
belongs to. Label and description are one line each and end in an ellipsis, so every item in a
|
|
64
69
|
navigation has the same height and the rail never grows sideways. */
|
|
65
70
|
:host {
|
|
66
|
-
--_indicator-width: var(--ui-nav-item-indicator-width,
|
|
71
|
+
--_indicator-width: var(--ui-nav-item-indicator-width, var(--ui-accent-line-width));
|
|
67
72
|
--_indicator-color: var(--ui-nav-item-indicator-color, var(--ui-accent));
|
|
68
73
|
position: relative;
|
|
69
74
|
box-sizing: border-box;
|
|
@@ -77,11 +82,11 @@
|
|
|
77
82
|
padding-block: var(--ui-space-2);
|
|
78
83
|
padding-inline: var(--ui-space-3);
|
|
79
84
|
border: 0;
|
|
80
|
-
border-radius: var(--ui-radius
|
|
85
|
+
border-radius: var(--ui-selection-radius);
|
|
81
86
|
background: transparent;
|
|
82
87
|
color: var(--ui-text-secondary);
|
|
83
88
|
font: inherit;
|
|
84
|
-
font-weight: var(--ui-font-
|
|
89
|
+
font-weight: var(--ui-font-normal);
|
|
85
90
|
text-align: start;
|
|
86
91
|
text-decoration: none;
|
|
87
92
|
cursor: pointer;
|
|
@@ -97,32 +102,43 @@
|
|
|
97
102
|
/* The ring is an outline, drawn inside the item: forced colors keep an outline where they drop a
|
|
98
103
|
box shadow, and a scrolling rail cannot clip a ring that stays within the item. */
|
|
99
104
|
:host:focus-visible {
|
|
100
|
-
outline:
|
|
101
|
-
outline-offset: -
|
|
105
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
106
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
102
107
|
}
|
|
103
108
|
|
|
104
109
|
:host[aria-current] {
|
|
105
|
-
background: var(--ui-nav-item-current-surface, var(--ui-
|
|
106
|
-
color: var(--ui-
|
|
107
|
-
|
|
110
|
+
background: var(--ui-nav-item-current-surface, var(--ui-selection-surface));
|
|
111
|
+
color: var(--ui-selection-text);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
:host-state([variant="line"]) {
|
|
115
|
+
border-radius: 0;
|
|
108
116
|
}
|
|
109
117
|
|
|
110
|
-
/*
|
|
118
|
+
/* A line treatment has straight corners and a continuous edge. Surface treatment has
|
|
119
|
+
shared rounded corners and no edge marker; never combine the two geometries.
|
|
120
|
+
The line is a border, not a fill: forced colors replace backgrounds but keep a
|
|
111
121
|
border, so the current item stays marked in high contrast. Logical edges mirror it in a
|
|
112
122
|
right-to-left page. */
|
|
113
123
|
.indicator {
|
|
114
124
|
position: absolute;
|
|
115
|
-
inset-block:
|
|
125
|
+
inset-block: 0;
|
|
116
126
|
inset-inline-start: 0;
|
|
117
127
|
display: none;
|
|
118
128
|
border-inline-start: var(--_indicator-width) solid var(--_indicator-color);
|
|
119
129
|
}
|
|
120
130
|
|
|
121
|
-
:host[aria-current] .indicator {
|
|
131
|
+
:host-state([variant="line"])[aria-current] .indicator {
|
|
122
132
|
display: block;
|
|
123
133
|
}
|
|
124
134
|
|
|
125
135
|
@media (forced-colors: active) {
|
|
136
|
+
/* System colors may erase the selected fill. Trace the complete surface, without
|
|
137
|
+
creating an edge stripe; the stronger keyboard focus outline keeps precedence. */
|
|
138
|
+
:host-state([variant="surface"])[aria-current]:not(:focus-visible) {
|
|
139
|
+
outline: var(--ui-border-width) solid Highlight;
|
|
140
|
+
outline-offset: calc(-1 * var(--ui-border-width));
|
|
141
|
+
}
|
|
126
142
|
.indicator {
|
|
127
143
|
border-inline-start-color: Highlight;
|
|
128
144
|
}
|
|
@@ -165,6 +181,22 @@
|
|
|
165
181
|
line-height: var(--ui-line-height-tight);
|
|
166
182
|
}
|
|
167
183
|
|
|
184
|
+
:host-state([density="compact"]) {
|
|
185
|
+
min-block-size: var(--ui-control-size-sm);
|
|
186
|
+
padding-block: var(--ui-space-1);
|
|
187
|
+
padding-inline: var(--ui-space-2);
|
|
188
|
+
}
|
|
189
|
+
:host-state([density="compact"]) .leading,
|
|
190
|
+
:host-state([density="compact"]) .label {
|
|
191
|
+
font-size: var(--ui-font-size-sm);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@media (pointer: coarse) {
|
|
195
|
+
:host-state([density="compact"]) {
|
|
196
|
+
min-block-size: var(--ui-control-min-block-size);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
168
200
|
/* An unused region takes no space. */
|
|
169
201
|
.leading:empty,
|
|
170
202
|
.description:empty {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template component="ui-popover" controller="./ui-popover.js">
|
|
2
2
|
<defs>
|
|
3
|
+
<prop name="size" type="keyword" values="content, sm, md, lg" default="content"
|
|
4
|
+
>Optional size preset. content keeps the existing intrinsic sizing; the other sizes constrain the surface for compact, medium, or large content.</prop>
|
|
3
5
|
<prop name="open" type="boolean" default="false">Whether the popover is open initially or when set externally.</prop>
|
|
4
6
|
<prop name="for" type="string" default="">ID of the control that toggles and anchors the popover.</prop>
|
|
5
7
|
<prop
|
|
@@ -86,7 +88,7 @@
|
|
|
86
88
|
overflow: auto;
|
|
87
89
|
padding: var(--_ui-popover-padding, var(--ui-space-3));
|
|
88
90
|
background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
89
|
-
border:
|
|
91
|
+
border: var(--ui-border-width) solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
90
92
|
border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
|
|
91
93
|
box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
92
94
|
}
|
|
@@ -120,6 +122,19 @@
|
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
|
|
125
|
+
:host-state([size="sm"]) {
|
|
126
|
+
inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
127
|
+
max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
128
|
+
}
|
|
129
|
+
:host-state([size="md"]) {
|
|
130
|
+
inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
131
|
+
max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
132
|
+
}
|
|
133
|
+
:host-state([size="lg"]) {
|
|
134
|
+
inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
135
|
+
max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
136
|
+
}
|
|
137
|
+
|
|
123
138
|
:host[hidden] {
|
|
124
139
|
display: none;
|
|
125
140
|
}
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
input:focus-visible {
|
|
89
|
-
outline:
|
|
90
|
-
outline-offset:
|
|
89
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
|
|
90
|
+
outline-offset: var(--ui-focus-width);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
:host-state([disabled]) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template component="ui-scroll-area" controller="./ui-scroll-area.js">
|
|
2
2
|
<defs>
|
|
3
|
+
<prop name="size" type="keyword" values="content, sm, md, lg" default="content"
|
|
4
|
+
>Optional height preset. content keeps intrinsic sizing; sm fits three compact 3.125rem result rows, md is 20rem, and lg is 30rem.</prop>
|
|
3
5
|
<prop name="orientation" type="keyword" values="vertical, horizontal" default="vertical"
|
|
4
6
|
>The direction the content scrolls. Vertical scrolls up and down and clips sideways overflow; horizontal scrolls sideways and clips vertical
|
|
5
7
|
overflow.</prop>
|
|
@@ -43,6 +45,16 @@
|
|
|
43
45
|
--_ui-scroll-fade-inline: to left;
|
|
44
46
|
}
|
|
45
47
|
|
|
48
|
+
:host-state([size="sm"]) {
|
|
49
|
+
max-block-size: 9.375rem;
|
|
50
|
+
}
|
|
51
|
+
:host-state([size="md"]) {
|
|
52
|
+
max-block-size: 20rem;
|
|
53
|
+
}
|
|
54
|
+
:host-state([size="lg"]) {
|
|
55
|
+
max-block-size: 30rem;
|
|
56
|
+
}
|
|
57
|
+
|
|
46
58
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
47
59
|
:host[hidden] {
|
|
48
60
|
display: none;
|