@threadlabs/looma 0.12.6 → 0.13.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/ui-action-bar/ui-action-bar.html +10 -1
- package/components/ui-avatar/ui-avatar.html +18 -0
- package/components/ui-avatar-group/ui-avatar-group.html +16 -2
- package/components/ui-badge/ui-badge.html +42 -0
- package/components/ui-button/ui-button.html +70 -0
- package/components/ui-callout/ui-callout.html +55 -4
- package/components/ui-checkbox/ui-checkbox.html +16 -3
- package/components/ui-cluster/ui-cluster.html +7 -1
- package/components/ui-combobox/ui-combobox.html +66 -12
- package/components/ui-container/ui-container.html +12 -1
- package/components/ui-context-menu/ui-context-menu.html +10 -1
- package/components/ui-dialog/ui-dialog.html +21 -4
- package/components/ui-disclosure/ui-disclosure.html +23 -4
- package/components/ui-editable/ui-editable.html +1 -1
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +2 -2
- 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 +8 -8
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +3 -3
- package/components/ui-floating-action-button/ui-floating-action-button.html +14 -0
- package/components/ui-form-field/ui-form-field.html +10 -1
- package/components/ui-grid/ui-grid.html +11 -1
- package/components/ui-icon/ui-icon.html +17 -3
- package/components/ui-icon-button/ui-icon-button.html +81 -3
- package/components/ui-input/ui-input.html +68 -13
- package/components/ui-input-group/ui-input-group.html +14 -13
- package/components/ui-list/ui-list.html +10 -0
- package/components/ui-list-item/ui-list-item.html +22 -1
- package/components/ui-menu/ui-menu.html +17 -5
- package/components/ui-menu-item/ui-menu-item.html +30 -3
- package/components/ui-nav-item/ui-nav-item.html +14 -0
- package/components/ui-popover/ui-popover.html +6 -0
- package/components/ui-radio/ui-radio.html +16 -3
- package/components/ui-reel/ui-reel.html +15 -2
- package/components/ui-search-result-row/ui-search-result-row.html +34 -0
- package/components/ui-search-shell/ui-search-shell.html +65 -11
- package/components/ui-select/ui-select.html +15 -1
- package/components/ui-separator/ui-separator.html +9 -2
- package/components/ui-sidebar/ui-sidebar.html +22 -1
- package/components/ui-stack/ui-stack.html +7 -1
- package/components/ui-switch/ui-switch.html +21 -3
- package/components/ui-switcher/ui-switcher.html +18 -5
- package/components/ui-tabs/ui-tabs.html +21 -2
- package/components/ui-textarea/ui-textarea.html +15 -1
- package/components/ui-toast-region/ui-toast-region.html +16 -2
- package/components/ui-tooltip/ui-tooltip.html +62 -13
- package/components/ui-top-bar/ui-top-bar.html +34 -1
- package/components/ui-tree/ui-tree.html +27 -4
- package/components/ui-tree-item/ui-tree-item.html +39 -10
- package/components/ui-tree-item/ui-tree-item.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/styles/ui-action-bar.css +14 -3
- package/styles/ui-avatar-group.css +20 -4
- package/styles/ui-avatar.css +22 -2
- package/styles/ui-badge.css +46 -2
- package/styles/ui-button.css +74 -2
- package/styles/ui-callout.css +59 -6
- package/styles/ui-checkbox.css +20 -5
- package/styles/ui-cluster.css +10 -2
- package/styles/ui-combobox.css +69 -14
- package/styles/ui-container.css +14 -2
- package/styles/ui-context-menu.css +14 -3
- package/styles/ui-dialog.css +25 -6
- package/styles/ui-disclosure.css +27 -6
- package/styles/ui-editable.css +1 -1
- package/styles/ui-editor-slash-menu.css +2 -2
- package/styles/ui-editor-table-context-menu.css +2 -2
- package/styles/ui-editor-table-overlay.css +8 -8
- package/styles/ui-editor-table-toolbar.css +3 -3
- package/styles/ui-floating-action-button.css +18 -2
- package/styles/ui-form-field.css +14 -3
- package/styles/ui-grid.css +14 -2
- package/styles/ui-icon-button.css +85 -5
- package/styles/ui-icon.css +21 -5
- package/styles/ui-input-group.css +14 -13
- package/styles/ui-input.css +73 -15
- package/styles/ui-list-item.css +26 -3
- package/styles/ui-list.css +14 -2
- package/styles/ui-menu-item.css +34 -5
- package/styles/ui-menu.css +21 -6
- package/styles/ui-nav-item.css +18 -2
- package/styles/ui-popover.css +10 -2
- package/styles/ui-radio.css +20 -5
- package/styles/ui-reel.css +18 -3
- package/styles/ui-search-result-row.css +38 -2
- package/styles/ui-search-shell.css +69 -13
- package/styles/ui-select.css +19 -3
- package/styles/ui-separator.css +14 -2
- package/styles/ui-sidebar.css +26 -3
- package/styles/ui-stack.css +10 -2
- package/styles/ui-switch.css +25 -5
- package/styles/ui-switcher.css +21 -6
- package/styles/ui-tabs.css +25 -4
- package/styles/ui-textarea.css +19 -3
- package/styles/ui-toast-region.css +20 -4
- package/styles/ui-tooltip.css +66 -15
- package/styles/ui-top-bar.css +38 -3
- package/styles/ui-tree-item.css +43 -12
- package/styles/ui-tree.css +33 -6
- package/theme-dark.css +1 -1
- package/theme-light.css +1 -1
- package/tokens.css +8 -6
- package/vue/UiActionBar.vue +12 -3
- package/vue/UiAvatar.vue +18 -0
- package/vue/UiAvatarGroup.vue +16 -2
- package/vue/UiBadge.vue +42 -0
- package/vue/UiButton.vue +70 -0
- package/vue/UiCallout.vue +55 -4
- package/vue/UiCheckbox.vue +16 -3
- package/vue/UiCluster.vue +6 -0
- package/vue/UiCombobox.vue +66 -12
- package/vue/UiContainer.vue +10 -0
- package/vue/UiContextMenu.vue +10 -1
- package/vue/UiDialog.vue +21 -4
- package/vue/UiDisclosure.vue +23 -4
- package/vue/UiEditable.vue +1 -1
- package/vue/UiEditorSlashMenu.vue +2 -2
- package/vue/UiEditorTableContextMenu.vue +2 -2
- package/vue/UiEditorTableOverlay.vue +8 -8
- package/vue/UiEditorTableToolbar.vue +3 -3
- package/vue/UiFloatingActionButton.vue +14 -0
- package/vue/UiFormField.vue +10 -1
- package/vue/UiGrid.vue +10 -0
- package/vue/UiIcon.vue +17 -3
- package/vue/UiIconButton.vue +81 -3
- package/vue/UiInput.vue +90 -15
- package/vue/UiInputGroup.vue +14 -13
- package/vue/UiList.vue +12 -2
- package/vue/UiListItem.vue +30 -9
- package/vue/UiMenu.vue +17 -5
- package/vue/UiMenuItem.vue +42 -4
- package/vue/UiNavItem.vue +17 -3
- package/vue/UiPopover.vue +6 -0
- package/vue/UiRadio.vue +16 -3
- package/vue/UiReel.vue +14 -1
- package/vue/UiSearchResultRow.vue +34 -0
- package/vue/UiSearchShell.vue +66 -12
- package/vue/UiSelect.vue +15 -1
- package/vue/UiSeparator.vue +9 -2
- package/vue/UiSidebar.vue +22 -1
- package/vue/UiStack.vue +6 -0
- package/vue/UiSwitch.vue +21 -3
- package/vue/UiSwitcher.vue +17 -4
- package/vue/UiTabs.vue +22 -3
- package/vue/UiTextarea.vue +15 -1
- package/vue/UiToastRegion.vue +16 -2
- package/vue/UiTooltip.vue +62 -13
- package/vue/UiTopBar.vue +34 -1
- package/vue/UiTree.vue +28 -5
- package/vue/UiTreeItem.vue +46 -11
- package/vue/chunks/UiActionBar.js +1 -1
- 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/UiCheckbox.js +1 -1
- package/vue/chunks/UiCluster.js +1 -1
- package/vue/chunks/UiCombobox.js +1 -1
- package/vue/chunks/UiContainer.js +1 -1
- package/vue/chunks/UiContextMenu.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiDisclosure.js +1 -1
- package/vue/chunks/UiEditable.js +1 -1
- package/vue/chunks/UiEditorSlashMenu.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/UiFloatingActionButton.js +1 -1
- package/vue/chunks/UiFormField.js +1 -1
- package/vue/chunks/UiGrid.js +1 -1
- package/vue/chunks/UiIcon.js +1 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiInput.js +1 -1
- package/vue/chunks/UiInputGroup.js +1 -1
- package/vue/chunks/UiList.js +1 -1
- package/vue/chunks/UiListItem.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiNavItem.js +1 -1
- package/vue/chunks/UiPopover.js +1 -1
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiReel.js +1 -1
- package/vue/chunks/UiSearchResultRow.js +1 -1
- package/vue/chunks/UiSearchShell.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 +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiSwitcher.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiTextarea.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/UiTree.js +1 -1
- package/vue/chunks/UiTreeItem.js +1 -1
- package/vue/components.css +1959 -927
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<defs>
|
|
3
3
|
<prop name="gap" type="xs | s | m | l | xl"
|
|
4
4
|
>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-reel-gap custom property,
|
|
5
|
-
|
|
5
|
+
set on the reel itself, overrides it; set on an ancestor, it does nothing.</prop>
|
|
6
6
|
<prop name="itemWidth" type="sm | md | lg"
|
|
7
7
|
>A fixed width for every item: sm is 12rem, md is 16rem, and lg is 20rem. Unset, each item keeps its content's width. Items never shrink to fit, so the reel
|
|
8
8
|
scrolls sideways once they overflow.</prop>
|
|
@@ -12,7 +12,20 @@
|
|
|
12
12
|
</defs>
|
|
13
13
|
<div role="region" tabindex="0"><slot></slot></div>
|
|
14
14
|
<style>
|
|
15
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
16
|
+
@property --ui-reel-gap {
|
|
17
|
+
syntax: "*";
|
|
18
|
+
inherits: false;
|
|
19
|
+
}
|
|
20
|
+
@property --ui-reel-item-width {
|
|
21
|
+
syntax: "*";
|
|
22
|
+
inherits: false;
|
|
23
|
+
}
|
|
24
|
+
|
|
15
25
|
:host {
|
|
26
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
27
|
+
--_ui-reel-item-width: var(--ui-reel-item-width);
|
|
28
|
+
|
|
16
29
|
--_reel-gap: var(--ui-space-4);
|
|
17
30
|
--_reel-item-width: auto;
|
|
18
31
|
display: flex;
|
|
@@ -52,7 +65,7 @@
|
|
|
52
65
|
|
|
53
66
|
:host > :slotted(*) {
|
|
54
67
|
min-inline-size: 0;
|
|
55
|
-
flex: 0 0 var(--
|
|
68
|
+
flex: 0 0 var(--_ui-reel-item-width, var(--_reel-item-width));
|
|
56
69
|
}
|
|
57
70
|
|
|
58
71
|
:host-state([gap="xs"]) {
|
|
@@ -15,6 +15,40 @@
|
|
|
15
15
|
<span class="trailing"><slot name="trailing"></slot></span>
|
|
16
16
|
</button>
|
|
17
17
|
<style>
|
|
18
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
19
|
+
@property --ui-search-result-row-border {
|
|
20
|
+
syntax: "*";
|
|
21
|
+
inherits: false;
|
|
22
|
+
}
|
|
23
|
+
@property --ui-search-result-row-gap {
|
|
24
|
+
syntax: "*";
|
|
25
|
+
inherits: false;
|
|
26
|
+
}
|
|
27
|
+
@property --ui-search-result-row-hover-surface {
|
|
28
|
+
syntax: "*";
|
|
29
|
+
inherits: false;
|
|
30
|
+
}
|
|
31
|
+
@property --ui-search-result-row-min-height {
|
|
32
|
+
syntax: "*";
|
|
33
|
+
inherits: false;
|
|
34
|
+
}
|
|
35
|
+
@property --ui-search-result-row-padding-block {
|
|
36
|
+
syntax: "*";
|
|
37
|
+
inherits: false;
|
|
38
|
+
}
|
|
39
|
+
@property --ui-search-result-row-padding-inline {
|
|
40
|
+
syntax: "*";
|
|
41
|
+
inherits: false;
|
|
42
|
+
}
|
|
43
|
+
@property --ui-search-result-row-selected-bg {
|
|
44
|
+
syntax: "*";
|
|
45
|
+
inherits: false;
|
|
46
|
+
}
|
|
47
|
+
@property --ui-search-result-row-surface {
|
|
48
|
+
syntax: "*";
|
|
49
|
+
inherits: false;
|
|
50
|
+
}
|
|
51
|
+
|
|
18
52
|
:host {
|
|
19
53
|
appearance: none;
|
|
20
54
|
inline-size: 100%;
|
|
@@ -21,22 +21,76 @@
|
|
|
21
21
|
</dialog>
|
|
22
22
|
</div>
|
|
23
23
|
<style>
|
|
24
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
25
|
+
@property --ui-search-shell-border {
|
|
26
|
+
syntax: "*";
|
|
27
|
+
inherits: false;
|
|
28
|
+
}
|
|
29
|
+
@property --ui-search-shell-focus-color {
|
|
30
|
+
syntax: "*";
|
|
31
|
+
inherits: false;
|
|
32
|
+
}
|
|
33
|
+
@property --ui-search-shell-max-height {
|
|
34
|
+
syntax: "*";
|
|
35
|
+
inherits: false;
|
|
36
|
+
}
|
|
37
|
+
@property --ui-search-shell-max-width {
|
|
38
|
+
syntax: "*";
|
|
39
|
+
inherits: false;
|
|
40
|
+
}
|
|
41
|
+
@property --ui-search-shell-padding-top {
|
|
42
|
+
syntax: "*";
|
|
43
|
+
inherits: false;
|
|
44
|
+
}
|
|
45
|
+
@property --ui-search-shell-radius {
|
|
46
|
+
syntax: "*";
|
|
47
|
+
inherits: false;
|
|
48
|
+
}
|
|
49
|
+
@property --ui-search-shell-shadow {
|
|
50
|
+
syntax: "*";
|
|
51
|
+
inherits: false;
|
|
52
|
+
}
|
|
53
|
+
@property --ui-search-shell-surface {
|
|
54
|
+
syntax: "*";
|
|
55
|
+
inherits: false;
|
|
56
|
+
}
|
|
57
|
+
@property --ui-search-shell-viewport-gap {
|
|
58
|
+
syntax: "*";
|
|
59
|
+
inherits: false;
|
|
60
|
+
}
|
|
61
|
+
@property --ui-search-shell-z-index {
|
|
62
|
+
syntax: "*";
|
|
63
|
+
inherits: false;
|
|
64
|
+
}
|
|
65
|
+
|
|
24
66
|
:host {
|
|
67
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
68
|
+
--_ui-search-shell-z-index: var(--ui-search-shell-z-index);
|
|
69
|
+
--_ui-search-shell-padding-top: var(--ui-search-shell-padding-top);
|
|
70
|
+
--_ui-search-shell-viewport-gap: var(--ui-search-shell-viewport-gap);
|
|
71
|
+
--_ui-search-shell-max-width: var(--ui-search-shell-max-width);
|
|
72
|
+
--_ui-search-shell-max-height: var(--ui-search-shell-max-height);
|
|
73
|
+
--_ui-search-shell-surface: var(--ui-search-shell-surface);
|
|
74
|
+
--_ui-search-shell-border: var(--ui-search-shell-border);
|
|
75
|
+
--_ui-search-shell-radius: var(--ui-search-shell-radius);
|
|
76
|
+
--_ui-search-shell-shadow: var(--ui-search-shell-shadow);
|
|
77
|
+
--_ui-search-shell-focus-color: var(--ui-search-shell-focus-color);
|
|
78
|
+
|
|
25
79
|
display: contents;
|
|
26
80
|
}
|
|
27
81
|
|
|
28
82
|
dialog {
|
|
29
83
|
position: fixed;
|
|
30
84
|
inset: 0;
|
|
31
|
-
z-index: var(--
|
|
85
|
+
z-index: var(--_ui-search-shell-z-index, 400);
|
|
32
86
|
box-sizing: border-box;
|
|
33
87
|
inline-size: 100%;
|
|
34
88
|
max-inline-size: none;
|
|
35
89
|
block-size: 100%;
|
|
36
90
|
max-block-size: none;
|
|
37
91
|
margin: 0;
|
|
38
|
-
padding: var(--
|
|
39
|
-
var(--
|
|
92
|
+
padding: var(--_ui-search-shell-padding-top, 10vh) var(--_ui-search-shell-viewport-gap, var(--ui-space-4))
|
|
93
|
+
var(--_ui-search-shell-viewport-gap, var(--ui-space-4));
|
|
40
94
|
overflow: auto;
|
|
41
95
|
border: 0;
|
|
42
96
|
background: var(--ui-overlay-backdrop);
|
|
@@ -51,14 +105,14 @@
|
|
|
51
105
|
position: relative;
|
|
52
106
|
display: flex;
|
|
53
107
|
flex-direction: column;
|
|
54
|
-
inline-size: min(100%, var(--
|
|
55
|
-
max-block-size: var(--
|
|
108
|
+
inline-size: min(100%, var(--_ui-search-shell-max-width, 40rem));
|
|
109
|
+
max-block-size: var(--_ui-search-shell-max-height, 80vh);
|
|
56
110
|
margin-inline: auto;
|
|
57
111
|
overflow: hidden;
|
|
58
|
-
background: var(--
|
|
59
|
-
border: 1px solid var(--
|
|
60
|
-
border-radius: var(--
|
|
61
|
-
box-shadow: var(--
|
|
112
|
+
background: var(--_ui-search-shell-surface, var(--ui-surface-elevated));
|
|
113
|
+
border: 1px solid var(--_ui-search-shell-border, var(--ui-border-default));
|
|
114
|
+
border-radius: var(--_ui-search-shell-radius, var(--ui-radius-dialog));
|
|
115
|
+
box-shadow: var(--_ui-search-shell-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)));
|
|
62
116
|
}
|
|
63
117
|
|
|
64
118
|
.search {
|
|
@@ -69,8 +123,8 @@
|
|
|
69
123
|
|
|
70
124
|
/* The search region shows where typing goes, whatever the author put in it. */
|
|
71
125
|
.search:focus-within {
|
|
72
|
-
border-block-end-color: var(--
|
|
73
|
-
box-shadow: inset 0 -1px 0 var(--
|
|
126
|
+
border-block-end-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
|
|
127
|
+
box-shadow: inset 0 -1px 0 var(--_ui-search-shell-focus-color, var(--ui-control-focus));
|
|
74
128
|
}
|
|
75
129
|
|
|
76
130
|
:slotted(input[slot="search"]) {
|
|
@@ -9,6 +9,20 @@
|
|
|
9
9
|
</defs>
|
|
10
10
|
<select :disabled="disabled" :required="required" :aria-invalid="invalid"><slot></slot></select>
|
|
11
11
|
<style>
|
|
12
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13
|
+
@property --ui-select-focus-shadow {
|
|
14
|
+
syntax: "*";
|
|
15
|
+
inherits: false;
|
|
16
|
+
}
|
|
17
|
+
@property --ui-select-radius {
|
|
18
|
+
syntax: "*";
|
|
19
|
+
inherits: false;
|
|
20
|
+
}
|
|
21
|
+
@property --ui-select-shadow {
|
|
22
|
+
syntax: "*";
|
|
23
|
+
inherits: false;
|
|
24
|
+
}
|
|
25
|
+
|
|
12
26
|
:host {
|
|
13
27
|
box-sizing: border-box;
|
|
14
28
|
display: inline-block;
|
|
@@ -69,7 +83,7 @@
|
|
|
69
83
|
|
|
70
84
|
:host:disabled {
|
|
71
85
|
background-color: var(--ui-control-surface-disabled, var(--ui-surface-muted));
|
|
72
|
-
color: var(--ui-text
|
|
86
|
+
color: var(--ui-disabled-text);
|
|
73
87
|
box-shadow: none;
|
|
74
88
|
cursor: not-allowed;
|
|
75
89
|
}
|
|
@@ -5,7 +5,14 @@
|
|
|
5
5
|
</defs>
|
|
6
6
|
<hr :aria-orientation="orientation">
|
|
7
7
|
<style>
|
|
8
|
-
|
|
8
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
9
|
+
@property --ui-separator-color {
|
|
10
|
+
syntax: "*";
|
|
11
|
+
inherits: false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
|
|
15
|
+
:host {
|
|
9
16
|
box-sizing: border-box;
|
|
10
17
|
align-self: stretch;
|
|
11
18
|
margin: 0;
|
|
@@ -13,7 +20,7 @@
|
|
|
13
20
|
border-block-start: 1px solid var(--ui-separator-color, var(--ui-border-default));
|
|
14
21
|
}
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
:host[aria-orientation="vertical"] {
|
|
17
24
|
block-size: auto;
|
|
18
25
|
border-block-start: 0;
|
|
19
26
|
border-inline-start: 1px solid var(--ui-separator-color, var(--ui-border-default));
|
|
@@ -31,7 +31,28 @@
|
|
|
31
31
|
</div>
|
|
32
32
|
</aside>
|
|
33
33
|
<style>
|
|
34
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
35
|
+
@property --ui-sidebar-backdrop {
|
|
36
|
+
syntax: "*";
|
|
37
|
+
inherits: false;
|
|
38
|
+
}
|
|
39
|
+
@property --ui-sidebar-border {
|
|
40
|
+
syntax: "*";
|
|
41
|
+
inherits: false;
|
|
42
|
+
}
|
|
43
|
+
@property --ui-sidebar-surface {
|
|
44
|
+
syntax: "*";
|
|
45
|
+
inherits: false;
|
|
46
|
+
}
|
|
47
|
+
@property --ui-sidebar-width {
|
|
48
|
+
syntax: "*";
|
|
49
|
+
inherits: false;
|
|
50
|
+
}
|
|
51
|
+
|
|
34
52
|
:host {
|
|
53
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
54
|
+
--_ui-sidebar-backdrop: var(--ui-sidebar-backdrop);
|
|
55
|
+
|
|
35
56
|
position: relative;
|
|
36
57
|
box-sizing: border-box;
|
|
37
58
|
display: flex;
|
|
@@ -184,7 +205,7 @@
|
|
|
184
205
|
}
|
|
185
206
|
|
|
186
207
|
:host[popover]::backdrop {
|
|
187
|
-
background: var(--
|
|
208
|
+
background: var(--_ui-sidebar-backdrop, rgb(0 0 0 / 0.32));
|
|
188
209
|
}
|
|
189
210
|
|
|
190
211
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<defs>
|
|
3
3
|
<prop name="gap" type="xs | s | m | l | xl"
|
|
4
4
|
>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 custom property,
|
|
5
|
-
|
|
5
|
+
set on the stack itself, overrides it; set on an ancestor, it does nothing.</prop>
|
|
6
6
|
<prop name="align" type="start | center | end | stretch"
|
|
7
7
|
>How items sit across the stack: stretch (the default) makes each fill the stack's width; start, center, and end keep each at its own width, against the
|
|
8
8
|
start, in the middle, or against the end.</prop>
|
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
</defs>
|
|
13
13
|
<div><slot></slot></div>
|
|
14
14
|
<style>
|
|
15
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
16
|
+
@property --ui-stack-gap {
|
|
17
|
+
syntax: "*";
|
|
18
|
+
inherits: false;
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
:host {
|
|
16
22
|
--_layout-gap: var(--ui-space-4);
|
|
17
23
|
display: flex;
|
|
@@ -20,7 +20,25 @@
|
|
|
20
20
|
</span>
|
|
21
21
|
</label>
|
|
22
22
|
<style>
|
|
23
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
24
|
+
@property --ui-switch-gap {
|
|
25
|
+
syntax: "*";
|
|
26
|
+
inherits: false;
|
|
27
|
+
}
|
|
28
|
+
@property --ui-switch-track-height {
|
|
29
|
+
syntax: "*";
|
|
30
|
+
inherits: false;
|
|
31
|
+
}
|
|
32
|
+
@property --ui-switch-track-width {
|
|
33
|
+
syntax: "*";
|
|
34
|
+
inherits: false;
|
|
35
|
+
}
|
|
36
|
+
|
|
23
37
|
:host {
|
|
38
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
39
|
+
--_ui-switch-track-width: var(--ui-switch-track-width);
|
|
40
|
+
--_ui-switch-track-height: var(--ui-switch-track-height);
|
|
41
|
+
|
|
24
42
|
display: inline-flex;
|
|
25
43
|
align-items: flex-start;
|
|
26
44
|
gap: var(--ui-switch-gap, var(--ui-space-2));
|
|
@@ -57,8 +75,8 @@
|
|
|
57
75
|
-webkit-appearance: none;
|
|
58
76
|
position: relative;
|
|
59
77
|
flex: 0 0 auto;
|
|
60
|
-
width: var(--
|
|
61
|
-
height: var(--
|
|
78
|
+
width: var(--_ui-switch-track-width, 2.5rem);
|
|
79
|
+
height: var(--_ui-switch-track-height, 1.5rem);
|
|
62
80
|
padding: 0;
|
|
63
81
|
border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
|
|
64
82
|
border-radius: 999px;
|
|
@@ -98,7 +116,7 @@
|
|
|
98
116
|
}
|
|
99
117
|
|
|
100
118
|
:host-state([disabled]) {
|
|
101
|
-
color: var(--ui-text
|
|
119
|
+
color: var(--ui-disabled-text);
|
|
102
120
|
cursor: not-allowed;
|
|
103
121
|
}
|
|
104
122
|
:host-state([disabled]) input {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<defs>
|
|
3
3
|
<prop name="gap" type="xs | s | m | l | xl"
|
|
4
4
|
>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-switcher-gap custom
|
|
5
|
-
property,
|
|
5
|
+
property, set on the switcher itself, overrides it; set on an ancestor, it does nothing.</prop>
|
|
6
6
|
<prop name="threshold" type="xs | sm | md | lg"
|
|
7
7
|
>The container width at which items switch between a row and a stack: wider, they all sit side by side; narrower, each takes the full width. xs is 20rem, sm
|
|
8
8
|
is 30rem (also the default), md is 45rem, and lg is 60rem.</prop>
|
|
@@ -12,7 +12,20 @@
|
|
|
12
12
|
</defs>
|
|
13
13
|
<div><slot></slot></div>
|
|
14
14
|
<style>
|
|
15
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
16
|
+
@property --ui-switcher-gap {
|
|
17
|
+
syntax: "*";
|
|
18
|
+
inherits: false;
|
|
19
|
+
}
|
|
20
|
+
@property --ui-switcher-threshold {
|
|
21
|
+
syntax: "*";
|
|
22
|
+
inherits: false;
|
|
23
|
+
}
|
|
24
|
+
|
|
15
25
|
:host {
|
|
26
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
27
|
+
--_ui-switcher-threshold: var(--ui-switcher-threshold);
|
|
28
|
+
|
|
16
29
|
--_switcher-gap: var(--ui-space-4);
|
|
17
30
|
display: flex;
|
|
18
31
|
flex-wrap: wrap;
|
|
@@ -26,7 +39,7 @@
|
|
|
26
39
|
min-inline-size: 0;
|
|
27
40
|
flex-grow: 1;
|
|
28
41
|
/* The large multiplier makes the basis flip as a group at the intrinsic threshold. */
|
|
29
|
-
flex-basis: calc((var(--
|
|
42
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 30rem) - 100%) * 999);
|
|
30
43
|
}
|
|
31
44
|
|
|
32
45
|
:host-state([gap="xs"]) {
|
|
@@ -45,13 +58,13 @@
|
|
|
45
58
|
--_switcher-gap: var(--ui-space-6);
|
|
46
59
|
}
|
|
47
60
|
:host-state([threshold="xs"]) > :slotted(*) {
|
|
48
|
-
flex-basis: calc((var(--
|
|
61
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 20rem) - 100%) * 999);
|
|
49
62
|
}
|
|
50
63
|
:host-state([threshold="md"]) > :slotted(*) {
|
|
51
|
-
flex-basis: calc((var(--
|
|
64
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 45rem) - 100%) * 999);
|
|
52
65
|
}
|
|
53
66
|
:host-state([threshold="lg"]) > :slotted(*) {
|
|
54
|
-
flex-basis: calc((var(--
|
|
67
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 60rem) - 100%) * 999);
|
|
55
68
|
}
|
|
56
69
|
:host-state([align="start"]) {
|
|
57
70
|
align-items: flex-start;
|
|
@@ -32,8 +32,27 @@
|
|
|
32
32
|
<div class="panels" $ref="panels"><slot></slot></div>
|
|
33
33
|
</div>
|
|
34
34
|
<style>
|
|
35
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
36
|
+
@property --ui-tabs-tab-min-block-size {
|
|
37
|
+
syntax: "*";
|
|
38
|
+
inherits: false;
|
|
39
|
+
}
|
|
40
|
+
@property --ui-tabs-tab-padding-block {
|
|
41
|
+
syntax: "*";
|
|
42
|
+
inherits: false;
|
|
43
|
+
}
|
|
44
|
+
@property --ui-tabs-tab-padding-inline {
|
|
45
|
+
syntax: "*";
|
|
46
|
+
inherits: false;
|
|
47
|
+
}
|
|
48
|
+
|
|
35
49
|
/* Density resolves into the tab row's own values; the public tokens still override them. */
|
|
36
50
|
:host {
|
|
51
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
52
|
+
--_ui-tabs-tab-min-block-size: var(--ui-tabs-tab-min-block-size);
|
|
53
|
+
--_ui-tabs-tab-padding-block: var(--ui-tabs-tab-padding-block);
|
|
54
|
+
--_ui-tabs-tab-padding-inline: var(--ui-tabs-tab-padding-inline);
|
|
55
|
+
|
|
37
56
|
--_tab-min-block-size: var(--ui-control-size);
|
|
38
57
|
--_tab-padding-block: var(--ui-space-2);
|
|
39
58
|
--_tab-padding-inline: var(--ui-space-3);
|
|
@@ -69,9 +88,9 @@
|
|
|
69
88
|
}
|
|
70
89
|
|
|
71
90
|
.list button {
|
|
72
|
-
min-block-size: var(--
|
|
91
|
+
min-block-size: var(--_ui-tabs-tab-min-block-size, var(--_tab-min-block-size));
|
|
73
92
|
margin: 0 0 -1px;
|
|
74
|
-
padding: var(--
|
|
93
|
+
padding: var(--_ui-tabs-tab-padding-block, var(--_tab-padding-block)) var(--_ui-tabs-tab-padding-inline, var(--_tab-padding-inline));
|
|
75
94
|
border: 0;
|
|
76
95
|
border-block-end: 2px solid transparent;
|
|
77
96
|
background: transparent;
|
|
@@ -11,6 +11,20 @@
|
|
|
11
11
|
</defs>
|
|
12
12
|
<textarea :value="value" :disabled="disabled" :readonly="readonly" :required="required" :aria-invalid="invalid" :rows="rows"></textarea>
|
|
13
13
|
<style>
|
|
14
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
15
|
+
@property --ui-textarea-focus-shadow {
|
|
16
|
+
syntax: "*";
|
|
17
|
+
inherits: false;
|
|
18
|
+
}
|
|
19
|
+
@property --ui-textarea-radius {
|
|
20
|
+
syntax: "*";
|
|
21
|
+
inherits: false;
|
|
22
|
+
}
|
|
23
|
+
@property --ui-textarea-shadow {
|
|
24
|
+
syntax: "*";
|
|
25
|
+
inherits: false;
|
|
26
|
+
}
|
|
27
|
+
|
|
14
28
|
:host {
|
|
15
29
|
box-sizing: border-box;
|
|
16
30
|
display: inline-block;
|
|
@@ -69,7 +83,7 @@
|
|
|
69
83
|
|
|
70
84
|
:host:disabled {
|
|
71
85
|
background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
|
|
72
|
-
color: var(--ui-text
|
|
86
|
+
color: var(--ui-disabled-text);
|
|
73
87
|
box-shadow: none;
|
|
74
88
|
cursor: not-allowed;
|
|
75
89
|
}
|
|
@@ -29,7 +29,21 @@
|
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
<style>
|
|
32
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
33
|
+
@property --ui-toast-region-enter-duration {
|
|
34
|
+
syntax: "*";
|
|
35
|
+
inherits: false;
|
|
36
|
+
}
|
|
37
|
+
@property --ui-toast-region-exit-duration {
|
|
38
|
+
syntax: "*";
|
|
39
|
+
inherits: false;
|
|
40
|
+
}
|
|
41
|
+
|
|
32
42
|
:host {
|
|
43
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
44
|
+
--_ui-toast-region-enter-duration: var(--ui-toast-region-enter-duration);
|
|
45
|
+
--_ui-toast-region-exit-duration: var(--ui-toast-region-exit-duration);
|
|
46
|
+
|
|
33
47
|
position: fixed;
|
|
34
48
|
top: calc(var(--ui-space-4) + env(safe-area-inset-top));
|
|
35
49
|
right: auto;
|
|
@@ -72,12 +86,12 @@
|
|
|
72
86
|
background: var(--ui-surface-elevated);
|
|
73
87
|
color: var(--ui-text-primary);
|
|
74
88
|
box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
|
|
75
|
-
animation: ui-toast-enter var(--
|
|
89
|
+
animation: ui-toast-enter var(--_ui-toast-region-enter-duration, 0.32s) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
76
90
|
}
|
|
77
91
|
|
|
78
92
|
/* Leaving slides on down and fades; the controller removes the toast when this ends. */
|
|
79
93
|
.toast.closing {
|
|
80
|
-
animation: ui-toast-exit var(--
|
|
94
|
+
animation: ui-toast-exit var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease) both;
|
|
81
95
|
pointer-events: none;
|
|
82
96
|
}
|
|
83
97
|
|
|
@@ -21,7 +21,56 @@
|
|
|
21
21
|
</defs>
|
|
22
22
|
<span role="tooltip" :hidden="not internalOpen"><div class="surface"><slot></slot></div></span>
|
|
23
23
|
<style>
|
|
24
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
25
|
+
@property --ui-tooltip-arrow-size {
|
|
26
|
+
syntax: "*";
|
|
27
|
+
inherits: false;
|
|
28
|
+
}
|
|
29
|
+
@property --ui-tooltip-border {
|
|
30
|
+
syntax: "*";
|
|
31
|
+
inherits: false;
|
|
32
|
+
}
|
|
33
|
+
@property --ui-tooltip-inverse-surface {
|
|
34
|
+
syntax: "*";
|
|
35
|
+
inherits: false;
|
|
36
|
+
}
|
|
37
|
+
@property --ui-tooltip-inverse-text {
|
|
38
|
+
syntax: "*";
|
|
39
|
+
inherits: false;
|
|
40
|
+
}
|
|
41
|
+
@property --ui-tooltip-max-inline-size {
|
|
42
|
+
syntax: "*";
|
|
43
|
+
inherits: false;
|
|
44
|
+
}
|
|
45
|
+
@property --ui-tooltip-radius {
|
|
46
|
+
syntax: "*";
|
|
47
|
+
inherits: false;
|
|
48
|
+
}
|
|
49
|
+
@property --ui-tooltip-shadow {
|
|
50
|
+
syntax: "*";
|
|
51
|
+
inherits: false;
|
|
52
|
+
}
|
|
53
|
+
@property --ui-tooltip-surface {
|
|
54
|
+
syntax: "*";
|
|
55
|
+
inherits: false;
|
|
56
|
+
}
|
|
57
|
+
@property --ui-tooltip-text {
|
|
58
|
+
syntax: "*";
|
|
59
|
+
inherits: false;
|
|
60
|
+
}
|
|
61
|
+
|
|
24
62
|
:host {
|
|
63
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
64
|
+
--_ui-tooltip-border: var(--ui-tooltip-border);
|
|
65
|
+
--_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
|
|
66
|
+
--_ui-tooltip-radius: var(--ui-tooltip-radius);
|
|
67
|
+
--_ui-tooltip-surface: var(--ui-tooltip-surface);
|
|
68
|
+
--_ui-tooltip-text: var(--ui-tooltip-text);
|
|
69
|
+
--_ui-tooltip-shadow: var(--ui-tooltip-shadow);
|
|
70
|
+
--_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
|
|
71
|
+
--_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
|
|
72
|
+
--_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
|
|
73
|
+
|
|
25
74
|
position: fixed;
|
|
26
75
|
inset: auto;
|
|
27
76
|
margin: 0;
|
|
@@ -44,25 +93,25 @@
|
|
|
44
93
|
}
|
|
45
94
|
|
|
46
95
|
.surface {
|
|
47
|
-
--_tooltip-line: var(--
|
|
96
|
+
--_tooltip-line: var(--_ui-tooltip-border, var(--ui-border-default));
|
|
48
97
|
position: relative;
|
|
49
98
|
box-sizing: border-box;
|
|
50
|
-
max-inline-size: var(--
|
|
99
|
+
max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
|
|
51
100
|
border: 1px solid var(--_tooltip-line);
|
|
52
|
-
border-radius: var(--
|
|
53
|
-
background: var(--
|
|
54
|
-
color: var(--
|
|
101
|
+
border-radius: var(--_ui-tooltip-radius, var(--ui-radius-sm));
|
|
102
|
+
background: var(--_ui-tooltip-surface, var(--ui-surface-elevated));
|
|
103
|
+
color: var(--_ui-tooltip-text, var(--ui-text-primary));
|
|
55
104
|
padding: var(--ui-space-1) var(--ui-space-2);
|
|
56
105
|
font-family: var(--ui-font-family-sans);
|
|
57
106
|
font-size: var(--ui-font-size-sm);
|
|
58
107
|
line-height: var(--ui-line-height-tight);
|
|
59
|
-
box-shadow: var(--
|
|
108
|
+
box-shadow: var(--_ui-tooltip-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md)));
|
|
60
109
|
}
|
|
61
110
|
|
|
62
111
|
:host-state([inverse]) .surface {
|
|
63
|
-
--_tooltip-line: var(--
|
|
64
|
-
background: var(--
|
|
65
|
-
color: var(--
|
|
112
|
+
--_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
113
|
+
background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
114
|
+
color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
|
|
66
115
|
}
|
|
67
116
|
|
|
68
117
|
/* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
|
|
@@ -72,9 +121,9 @@
|
|
|
72
121
|
position: absolute;
|
|
73
122
|
z-index: 1;
|
|
74
123
|
inset-inline-start: var(--ui-space-3);
|
|
75
|
-
inset-block-end: calc(var(--
|
|
76
|
-
inline-size: var(--
|
|
77
|
-
block-size: var(--
|
|
124
|
+
inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.5rem) / -2 - 0.5px);
|
|
125
|
+
inline-size: var(--_ui-tooltip-arrow-size, 0.5rem);
|
|
126
|
+
block-size: var(--_ui-tooltip-arrow-size, 0.5rem);
|
|
78
127
|
box-sizing: border-box;
|
|
79
128
|
background: inherit;
|
|
80
129
|
border: 0 solid var(--_tooltip-line);
|
|
@@ -85,7 +134,7 @@
|
|
|
85
134
|
}
|
|
86
135
|
|
|
87
136
|
:is(:host-state([placement="bottom"]), :host-state([placement="bottom-start"]), :host-state([placement="bottom-end"])) .surface::after {
|
|
88
|
-
inset-block-start: calc(var(--
|
|
137
|
+
inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.5rem) / -2 - 0.5px);
|
|
89
138
|
inset-block-end: auto;
|
|
90
139
|
border-inline-end-width: 0;
|
|
91
140
|
border-block-end-width: 0;
|
|
@@ -6,7 +6,40 @@
|
|
|
6
6
|
<div class="actions"><slot name="actions"></slot></div>
|
|
7
7
|
</header>
|
|
8
8
|
<style>
|
|
9
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
10
|
+
@property --ui-top-bar-actions-gap {
|
|
11
|
+
syntax: "*";
|
|
12
|
+
inherits: false;
|
|
13
|
+
}
|
|
14
|
+
@property --ui-top-bar-border {
|
|
15
|
+
syntax: "*";
|
|
16
|
+
inherits: false;
|
|
17
|
+
}
|
|
18
|
+
@property --ui-top-bar-gap {
|
|
19
|
+
syntax: "*";
|
|
20
|
+
inherits: false;
|
|
21
|
+
}
|
|
22
|
+
@property --ui-top-bar-height {
|
|
23
|
+
syntax: "*";
|
|
24
|
+
inherits: false;
|
|
25
|
+
}
|
|
26
|
+
@property --ui-top-bar-padding-inline {
|
|
27
|
+
syntax: "*";
|
|
28
|
+
inherits: false;
|
|
29
|
+
}
|
|
30
|
+
@property --ui-top-bar-surface {
|
|
31
|
+
syntax: "*";
|
|
32
|
+
inherits: false;
|
|
33
|
+
}
|
|
34
|
+
@property --ui-top-bar-z-index {
|
|
35
|
+
syntax: "*";
|
|
36
|
+
inherits: false;
|
|
37
|
+
}
|
|
38
|
+
|
|
9
39
|
:host {
|
|
40
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
41
|
+
--_ui-top-bar-actions-gap: var(--ui-top-bar-actions-gap);
|
|
42
|
+
|
|
10
43
|
position: sticky;
|
|
11
44
|
inset-block-start: 0;
|
|
12
45
|
z-index: var(--ui-top-bar-z-index, 100);
|
|
@@ -30,7 +63,7 @@
|
|
|
30
63
|
}
|
|
31
64
|
|
|
32
65
|
.actions {
|
|
33
|
-
gap: var(--
|
|
66
|
+
gap: var(--_ui-top-bar-actions-gap, var(--ui-space-1));
|
|
34
67
|
}
|
|
35
68
|
|
|
36
69
|
.title {
|