@threadlabs/looma 0.12.7 → 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 +15 -2
- package/components/ui-cluster/ui-cluster.html +7 -1
- package/components/ui-combobox/ui-combobox.html +64 -10
- 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 +22 -3
- 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 +67 -12
- 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 +15 -2
- 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 +14 -0
- 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 +20 -2
- 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 +14 -0
- 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 +19 -4
- package/styles/ui-cluster.css +10 -2
- package/styles/ui-combobox.css +67 -12
- 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 +26 -5
- 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 +72 -14
- 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 +19 -4
- 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 +18 -2
- 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 +24 -4
- package/styles/ui-switcher.css +21 -6
- package/styles/ui-tabs.css +25 -4
- package/styles/ui-textarea.css +18 -2
- 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/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 +15 -2
- package/vue/UiCluster.vue +6 -0
- package/vue/UiCombobox.vue +64 -10
- package/vue/UiContainer.vue +10 -0
- package/vue/UiContextMenu.vue +10 -1
- package/vue/UiDialog.vue +21 -4
- package/vue/UiDisclosure.vue +22 -3
- 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 +89 -14
- 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 +15 -2
- package/vue/UiReel.vue +14 -1
- package/vue/UiSearchResultRow.vue +34 -0
- package/vue/UiSearchShell.vue +66 -12
- package/vue/UiSelect.vue +14 -0
- package/vue/UiSeparator.vue +9 -2
- package/vue/UiSidebar.vue +22 -1
- package/vue/UiStack.vue +6 -0
- package/vue/UiSwitch.vue +20 -2
- package/vue/UiSwitcher.vue +17 -4
- package/vue/UiTabs.vue +22 -3
- package/vue/UiTextarea.vue +14 -0
- 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/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 +1929 -897
package/vue/UiSearchShell.vue
CHANGED
|
@@ -76,23 +76,77 @@ useComponentHost(controllerModule.default, {
|
|
|
76
76
|
</template>
|
|
77
77
|
|
|
78
78
|
<style scoped>
|
|
79
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
80
|
+
@property --ui-search-shell-border {
|
|
81
|
+
syntax: "*";
|
|
82
|
+
inherits: false;
|
|
83
|
+
}
|
|
84
|
+
@property --ui-search-shell-focus-color {
|
|
85
|
+
syntax: "*";
|
|
86
|
+
inherits: false;
|
|
87
|
+
}
|
|
88
|
+
@property --ui-search-shell-max-height {
|
|
89
|
+
syntax: "*";
|
|
90
|
+
inherits: false;
|
|
91
|
+
}
|
|
92
|
+
@property --ui-search-shell-max-width {
|
|
93
|
+
syntax: "*";
|
|
94
|
+
inherits: false;
|
|
95
|
+
}
|
|
96
|
+
@property --ui-search-shell-padding-top {
|
|
97
|
+
syntax: "*";
|
|
98
|
+
inherits: false;
|
|
99
|
+
}
|
|
100
|
+
@property --ui-search-shell-radius {
|
|
101
|
+
syntax: "*";
|
|
102
|
+
inherits: false;
|
|
103
|
+
}
|
|
104
|
+
@property --ui-search-shell-shadow {
|
|
105
|
+
syntax: "*";
|
|
106
|
+
inherits: false;
|
|
107
|
+
}
|
|
108
|
+
@property --ui-search-shell-surface {
|
|
109
|
+
syntax: "*";
|
|
110
|
+
inherits: false;
|
|
111
|
+
}
|
|
112
|
+
@property --ui-search-shell-viewport-gap {
|
|
113
|
+
syntax: "*";
|
|
114
|
+
inherits: false;
|
|
115
|
+
}
|
|
116
|
+
@property --ui-search-shell-z-index {
|
|
117
|
+
syntax: "*";
|
|
118
|
+
inherits: false;
|
|
119
|
+
}
|
|
120
|
+
|
|
79
121
|
[data-component~="ui-search-shell"] {
|
|
122
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
123
|
+
--_ui-search-shell-z-index: var(--ui-search-shell-z-index);
|
|
124
|
+
--_ui-search-shell-padding-top: var(--ui-search-shell-padding-top);
|
|
125
|
+
--_ui-search-shell-viewport-gap: var(--ui-search-shell-viewport-gap);
|
|
126
|
+
--_ui-search-shell-max-width: var(--ui-search-shell-max-width);
|
|
127
|
+
--_ui-search-shell-max-height: var(--ui-search-shell-max-height);
|
|
128
|
+
--_ui-search-shell-surface: var(--ui-search-shell-surface);
|
|
129
|
+
--_ui-search-shell-border: var(--ui-search-shell-border);
|
|
130
|
+
--_ui-search-shell-radius: var(--ui-search-shell-radius);
|
|
131
|
+
--_ui-search-shell-shadow: var(--ui-search-shell-shadow);
|
|
132
|
+
--_ui-search-shell-focus-color: var(--ui-search-shell-focus-color);
|
|
133
|
+
|
|
80
134
|
display: contents;
|
|
81
135
|
}
|
|
82
136
|
|
|
83
137
|
dialog {
|
|
84
138
|
position: fixed;
|
|
85
139
|
inset: 0;
|
|
86
|
-
z-index: var(--
|
|
140
|
+
z-index: var(--_ui-search-shell-z-index, 400);
|
|
87
141
|
box-sizing: border-box;
|
|
88
142
|
inline-size: 100%;
|
|
89
143
|
max-inline-size: none;
|
|
90
144
|
block-size: 100%;
|
|
91
145
|
max-block-size: none;
|
|
92
146
|
margin: 0;
|
|
93
|
-
padding: var(--
|
|
94
|
-
var(--
|
|
95
|
-
var(--
|
|
147
|
+
padding: var(--_ui-search-shell-padding-top, 10vh)
|
|
148
|
+
var(--_ui-search-shell-viewport-gap, var(--ui-space-4))
|
|
149
|
+
var(--_ui-search-shell-viewport-gap, var(--ui-space-4));
|
|
96
150
|
overflow: auto;
|
|
97
151
|
border: 0;
|
|
98
152
|
background: var(--ui-overlay-backdrop);
|
|
@@ -107,14 +161,14 @@ dialog::backdrop {
|
|
|
107
161
|
position: relative;
|
|
108
162
|
display: flex;
|
|
109
163
|
flex-direction: column;
|
|
110
|
-
inline-size: min(100%, var(--
|
|
111
|
-
max-block-size: var(--
|
|
164
|
+
inline-size: min(100%, var(--_ui-search-shell-max-width, 40rem));
|
|
165
|
+
max-block-size: var(--_ui-search-shell-max-height, 80vh);
|
|
112
166
|
margin-inline: auto;
|
|
113
167
|
overflow: hidden;
|
|
114
|
-
background: var(--
|
|
115
|
-
border: 1px solid var(--
|
|
116
|
-
border-radius: var(--
|
|
117
|
-
box-shadow: var(--
|
|
168
|
+
background: var(--_ui-search-shell-surface, var(--ui-surface-elevated));
|
|
169
|
+
border: 1px solid var(--_ui-search-shell-border, var(--ui-border-default));
|
|
170
|
+
border-radius: var(--_ui-search-shell-radius, var(--ui-radius-dialog));
|
|
171
|
+
box-shadow: var(--_ui-search-shell-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)));
|
|
118
172
|
}
|
|
119
173
|
|
|
120
174
|
.search {
|
|
@@ -127,8 +181,8 @@ dialog::backdrop {
|
|
|
127
181
|
|
|
128
182
|
/* The search region shows where typing goes, whatever the author put in it. */
|
|
129
183
|
.search:focus-within {
|
|
130
|
-
border-block-end-color: var(--
|
|
131
|
-
box-shadow: inset 0 -1px 0 var(--
|
|
184
|
+
border-block-end-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
|
|
185
|
+
box-shadow: inset 0 -1px 0 var(--_ui-search-shell-focus-color, var(--ui-control-focus));
|
|
132
186
|
}
|
|
133
187
|
|
|
134
188
|
:slotted(input[slot="search"]) {
|
package/vue/UiSelect.vue
CHANGED
|
@@ -54,6 +54,20 @@ useComponentHost(controllerModule.default, {
|
|
|
54
54
|
</template>
|
|
55
55
|
|
|
56
56
|
<style scoped>
|
|
57
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
58
|
+
@property --ui-select-focus-shadow {
|
|
59
|
+
syntax: "*";
|
|
60
|
+
inherits: false;
|
|
61
|
+
}
|
|
62
|
+
@property --ui-select-radius {
|
|
63
|
+
syntax: "*";
|
|
64
|
+
inherits: false;
|
|
65
|
+
}
|
|
66
|
+
@property --ui-select-shadow {
|
|
67
|
+
syntax: "*";
|
|
68
|
+
inherits: false;
|
|
69
|
+
}
|
|
70
|
+
|
|
57
71
|
[data-component~="ui-select"] {
|
|
58
72
|
box-sizing: border-box;
|
|
59
73
|
display: inline-block;
|
package/vue/UiSeparator.vue
CHANGED
|
@@ -17,7 +17,14 @@ withDefaults(
|
|
|
17
17
|
</template>
|
|
18
18
|
|
|
19
19
|
<style scoped>
|
|
20
|
-
|
|
20
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
21
|
+
@property --ui-separator-color {
|
|
22
|
+
syntax: "*";
|
|
23
|
+
inherits: false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
|
|
27
|
+
[data-component~="ui-separator"] {
|
|
21
28
|
box-sizing: border-box;
|
|
22
29
|
align-self: stretch;
|
|
23
30
|
margin: 0;
|
|
@@ -25,7 +32,7 @@ hr {
|
|
|
25
32
|
border-block-start: 1px solid var(--ui-separator-color, var(--ui-border-default));
|
|
26
33
|
}
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
[data-component~="ui-separator"][aria-orientation="vertical"] {
|
|
29
36
|
block-size: auto;
|
|
30
37
|
border-block-start: 0;
|
|
31
38
|
border-inline-start: 1px solid var(--ui-separator-color, var(--ui-border-default));
|
package/vue/UiSidebar.vue
CHANGED
|
@@ -115,7 +115,28 @@ useComponentHost(controllerModule.default, {
|
|
|
115
115
|
</template>
|
|
116
116
|
|
|
117
117
|
<style scoped>
|
|
118
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
119
|
+
@property --ui-sidebar-backdrop {
|
|
120
|
+
syntax: "*";
|
|
121
|
+
inherits: false;
|
|
122
|
+
}
|
|
123
|
+
@property --ui-sidebar-border {
|
|
124
|
+
syntax: "*";
|
|
125
|
+
inherits: false;
|
|
126
|
+
}
|
|
127
|
+
@property --ui-sidebar-surface {
|
|
128
|
+
syntax: "*";
|
|
129
|
+
inherits: false;
|
|
130
|
+
}
|
|
131
|
+
@property --ui-sidebar-width {
|
|
132
|
+
syntax: "*";
|
|
133
|
+
inherits: false;
|
|
134
|
+
}
|
|
135
|
+
|
|
118
136
|
[data-component~="ui-sidebar"] {
|
|
137
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
138
|
+
--_ui-sidebar-backdrop: var(--ui-sidebar-backdrop);
|
|
139
|
+
|
|
119
140
|
position: relative;
|
|
120
141
|
box-sizing: border-box;
|
|
121
142
|
display: flex;
|
|
@@ -276,7 +297,7 @@ useComponentHost(controllerModule.default, {
|
|
|
276
297
|
}
|
|
277
298
|
|
|
278
299
|
[data-component~="ui-sidebar"][popover]::backdrop {
|
|
279
|
-
background: var(--
|
|
300
|
+
background: var(--_ui-sidebar-backdrop, rgb(0 0 0 / 0.32));
|
|
280
301
|
}
|
|
281
302
|
|
|
282
303
|
@media (prefers-reduced-motion: reduce) {
|
package/vue/UiStack.vue
CHANGED
|
@@ -27,6 +27,12 @@ const hostState = computed(() =>
|
|
|
27
27
|
</template>
|
|
28
28
|
|
|
29
29
|
<style scoped>
|
|
30
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
31
|
+
@property --ui-stack-gap {
|
|
32
|
+
syntax: "*";
|
|
33
|
+
inherits: false;
|
|
34
|
+
}
|
|
35
|
+
|
|
30
36
|
[data-component~="ui-stack"] {
|
|
31
37
|
--_layout-gap: var(--ui-space-4);
|
|
32
38
|
display: flex;
|
package/vue/UiSwitch.vue
CHANGED
|
@@ -93,7 +93,25 @@ useComponentHost(controllerModule.default, {
|
|
|
93
93
|
</template>
|
|
94
94
|
|
|
95
95
|
<style scoped>
|
|
96
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
97
|
+
@property --ui-switch-gap {
|
|
98
|
+
syntax: "*";
|
|
99
|
+
inherits: false;
|
|
100
|
+
}
|
|
101
|
+
@property --ui-switch-track-height {
|
|
102
|
+
syntax: "*";
|
|
103
|
+
inherits: false;
|
|
104
|
+
}
|
|
105
|
+
@property --ui-switch-track-width {
|
|
106
|
+
syntax: "*";
|
|
107
|
+
inherits: false;
|
|
108
|
+
}
|
|
109
|
+
|
|
96
110
|
[data-component~="ui-switch"] {
|
|
111
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
112
|
+
--_ui-switch-track-width: var(--ui-switch-track-width);
|
|
113
|
+
--_ui-switch-track-height: var(--ui-switch-track-height);
|
|
114
|
+
|
|
97
115
|
display: inline-flex;
|
|
98
116
|
align-items: flex-start;
|
|
99
117
|
gap: var(--ui-switch-gap, var(--ui-space-2));
|
|
@@ -130,8 +148,8 @@ input {
|
|
|
130
148
|
-webkit-appearance: none;
|
|
131
149
|
position: relative;
|
|
132
150
|
flex: 0 0 auto;
|
|
133
|
-
width: var(--
|
|
134
|
-
height: var(--
|
|
151
|
+
width: var(--_ui-switch-track-width, 2.5rem);
|
|
152
|
+
height: var(--_ui-switch-track-height, 1.5rem);
|
|
135
153
|
padding: 0;
|
|
136
154
|
border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
|
|
137
155
|
border-radius: 999px;
|
package/vue/UiSwitcher.vue
CHANGED
|
@@ -31,7 +31,20 @@ const hostState = computed(() =>
|
|
|
31
31
|
</template>
|
|
32
32
|
|
|
33
33
|
<style scoped>
|
|
34
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
35
|
+
@property --ui-switcher-gap {
|
|
36
|
+
syntax: "*";
|
|
37
|
+
inherits: false;
|
|
38
|
+
}
|
|
39
|
+
@property --ui-switcher-threshold {
|
|
40
|
+
syntax: "*";
|
|
41
|
+
inherits: false;
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
[data-component~="ui-switcher"] {
|
|
45
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
46
|
+
--_ui-switcher-threshold: var(--ui-switcher-threshold);
|
|
47
|
+
|
|
35
48
|
--_switcher-gap: var(--ui-space-4);
|
|
36
49
|
display: flex;
|
|
37
50
|
flex-wrap: wrap;
|
|
@@ -45,7 +58,7 @@ const hostState = computed(() =>
|
|
|
45
58
|
min-inline-size: 0;
|
|
46
59
|
flex-grow: 1;
|
|
47
60
|
/* The large multiplier makes the basis flip as a group at the intrinsic threshold. */
|
|
48
|
-
flex-basis: calc((var(--
|
|
61
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 30rem) - 100%) * 999);
|
|
49
62
|
}
|
|
50
63
|
|
|
51
64
|
[data-component~="ui-switcher"][data-ui-switcher-state~="gap=xs"] {
|
|
@@ -64,13 +77,13 @@ const hostState = computed(() =>
|
|
|
64
77
|
--_switcher-gap: var(--ui-space-6);
|
|
65
78
|
}
|
|
66
79
|
[data-component~="ui-switcher"][data-ui-switcher-state~="threshold=xs"] > :slotted(*) {
|
|
67
|
-
flex-basis: calc((var(--
|
|
80
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 20rem) - 100%) * 999);
|
|
68
81
|
}
|
|
69
82
|
[data-component~="ui-switcher"][data-ui-switcher-state~="threshold=md"] > :slotted(*) {
|
|
70
|
-
flex-basis: calc((var(--
|
|
83
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 45rem) - 100%) * 999);
|
|
71
84
|
}
|
|
72
85
|
[data-component~="ui-switcher"][data-ui-switcher-state~="threshold=lg"] > :slotted(*) {
|
|
73
|
-
flex-basis: calc((var(--
|
|
86
|
+
flex-basis: calc((var(--_ui-switcher-threshold, 60rem) - 100%) * 999);
|
|
74
87
|
}
|
|
75
88
|
[data-component~="ui-switcher"][data-ui-switcher-state~="align=start"] {
|
|
76
89
|
align-items: flex-start;
|
package/vue/UiTabs.vue
CHANGED
|
@@ -100,8 +100,27 @@ useComponentHost(controllerModule.default, {
|
|
|
100
100
|
</template>
|
|
101
101
|
|
|
102
102
|
<style scoped>
|
|
103
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
104
|
+
@property --ui-tabs-tab-min-block-size {
|
|
105
|
+
syntax: "*";
|
|
106
|
+
inherits: false;
|
|
107
|
+
}
|
|
108
|
+
@property --ui-tabs-tab-padding-block {
|
|
109
|
+
syntax: "*";
|
|
110
|
+
inherits: false;
|
|
111
|
+
}
|
|
112
|
+
@property --ui-tabs-tab-padding-inline {
|
|
113
|
+
syntax: "*";
|
|
114
|
+
inherits: false;
|
|
115
|
+
}
|
|
116
|
+
|
|
103
117
|
/* Density resolves into the tab row's own values; the public tokens still override them. */
|
|
104
118
|
[data-component~="ui-tabs"] {
|
|
119
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
120
|
+
--_ui-tabs-tab-min-block-size: var(--ui-tabs-tab-min-block-size);
|
|
121
|
+
--_ui-tabs-tab-padding-block: var(--ui-tabs-tab-padding-block);
|
|
122
|
+
--_ui-tabs-tab-padding-inline: var(--ui-tabs-tab-padding-inline);
|
|
123
|
+
|
|
105
124
|
--_tab-min-block-size: var(--ui-control-size);
|
|
106
125
|
--_tab-padding-block: var(--ui-space-2);
|
|
107
126
|
--_tab-padding-inline: var(--ui-space-3);
|
|
@@ -137,10 +156,10 @@ useComponentHost(controllerModule.default, {
|
|
|
137
156
|
}
|
|
138
157
|
|
|
139
158
|
.list button {
|
|
140
|
-
min-block-size: var(--
|
|
159
|
+
min-block-size: var(--_ui-tabs-tab-min-block-size, var(--_tab-min-block-size));
|
|
141
160
|
margin: 0 0 -1px;
|
|
142
|
-
padding: var(--
|
|
143
|
-
var(--
|
|
161
|
+
padding: var(--_ui-tabs-tab-padding-block, var(--_tab-padding-block))
|
|
162
|
+
var(--_ui-tabs-tab-padding-inline, var(--_tab-padding-inline));
|
|
144
163
|
border: 0;
|
|
145
164
|
border-block-end: 2px solid transparent;
|
|
146
165
|
background: transparent;
|
package/vue/UiTextarea.vue
CHANGED
|
@@ -58,6 +58,20 @@ useComponentHost(controllerModule.default, {
|
|
|
58
58
|
</template>
|
|
59
59
|
|
|
60
60
|
<style scoped>
|
|
61
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
62
|
+
@property --ui-textarea-focus-shadow {
|
|
63
|
+
syntax: "*";
|
|
64
|
+
inherits: false;
|
|
65
|
+
}
|
|
66
|
+
@property --ui-textarea-radius {
|
|
67
|
+
syntax: "*";
|
|
68
|
+
inherits: false;
|
|
69
|
+
}
|
|
70
|
+
@property --ui-textarea-shadow {
|
|
71
|
+
syntax: "*";
|
|
72
|
+
inherits: false;
|
|
73
|
+
}
|
|
74
|
+
|
|
61
75
|
[data-component~="ui-textarea"] {
|
|
62
76
|
box-sizing: border-box;
|
|
63
77
|
display: inline-block;
|
package/vue/UiToastRegion.vue
CHANGED
|
@@ -132,7 +132,21 @@ defineExpose({
|
|
|
132
132
|
</template>
|
|
133
133
|
|
|
134
134
|
<style scoped>
|
|
135
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
136
|
+
@property --ui-toast-region-enter-duration {
|
|
137
|
+
syntax: "*";
|
|
138
|
+
inherits: false;
|
|
139
|
+
}
|
|
140
|
+
@property --ui-toast-region-exit-duration {
|
|
141
|
+
syntax: "*";
|
|
142
|
+
inherits: false;
|
|
143
|
+
}
|
|
144
|
+
|
|
135
145
|
[data-component~="ui-toast-region"] {
|
|
146
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
147
|
+
--_ui-toast-region-enter-duration: var(--ui-toast-region-enter-duration);
|
|
148
|
+
--_ui-toast-region-exit-duration: var(--ui-toast-region-exit-duration);
|
|
149
|
+
|
|
136
150
|
position: fixed;
|
|
137
151
|
top: calc(var(--ui-space-4) + env(safe-area-inset-top));
|
|
138
152
|
right: auto;
|
|
@@ -175,13 +189,13 @@ defineExpose({
|
|
|
175
189
|
background: var(--ui-surface-elevated);
|
|
176
190
|
color: var(--ui-text-primary);
|
|
177
191
|
box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
|
|
178
|
-
animation: ui-toast-enter var(--
|
|
192
|
+
animation: ui-toast-enter var(--_ui-toast-region-enter-duration, 0.32s)
|
|
179
193
|
var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
180
194
|
}
|
|
181
195
|
|
|
182
196
|
/* Leaving slides on down and fades; the controller removes the toast when this ends. */
|
|
183
197
|
.toast.closing {
|
|
184
|
-
animation: ui-toast-exit var(--
|
|
198
|
+
animation: ui-toast-exit var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease) both;
|
|
185
199
|
pointer-events: none;
|
|
186
200
|
}
|
|
187
201
|
|
package/vue/UiTooltip.vue
CHANGED
|
@@ -96,7 +96,56 @@ useComponentHost(controllerModule.default, {
|
|
|
96
96
|
</template>
|
|
97
97
|
|
|
98
98
|
<style scoped>
|
|
99
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
100
|
+
@property --ui-tooltip-arrow-size {
|
|
101
|
+
syntax: "*";
|
|
102
|
+
inherits: false;
|
|
103
|
+
}
|
|
104
|
+
@property --ui-tooltip-border {
|
|
105
|
+
syntax: "*";
|
|
106
|
+
inherits: false;
|
|
107
|
+
}
|
|
108
|
+
@property --ui-tooltip-inverse-surface {
|
|
109
|
+
syntax: "*";
|
|
110
|
+
inherits: false;
|
|
111
|
+
}
|
|
112
|
+
@property --ui-tooltip-inverse-text {
|
|
113
|
+
syntax: "*";
|
|
114
|
+
inherits: false;
|
|
115
|
+
}
|
|
116
|
+
@property --ui-tooltip-max-inline-size {
|
|
117
|
+
syntax: "*";
|
|
118
|
+
inherits: false;
|
|
119
|
+
}
|
|
120
|
+
@property --ui-tooltip-radius {
|
|
121
|
+
syntax: "*";
|
|
122
|
+
inherits: false;
|
|
123
|
+
}
|
|
124
|
+
@property --ui-tooltip-shadow {
|
|
125
|
+
syntax: "*";
|
|
126
|
+
inherits: false;
|
|
127
|
+
}
|
|
128
|
+
@property --ui-tooltip-surface {
|
|
129
|
+
syntax: "*";
|
|
130
|
+
inherits: false;
|
|
131
|
+
}
|
|
132
|
+
@property --ui-tooltip-text {
|
|
133
|
+
syntax: "*";
|
|
134
|
+
inherits: false;
|
|
135
|
+
}
|
|
136
|
+
|
|
99
137
|
[data-component~="ui-tooltip"] {
|
|
138
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
139
|
+
--_ui-tooltip-border: var(--ui-tooltip-border);
|
|
140
|
+
--_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
|
|
141
|
+
--_ui-tooltip-radius: var(--ui-tooltip-radius);
|
|
142
|
+
--_ui-tooltip-surface: var(--ui-tooltip-surface);
|
|
143
|
+
--_ui-tooltip-text: var(--ui-tooltip-text);
|
|
144
|
+
--_ui-tooltip-shadow: var(--ui-tooltip-shadow);
|
|
145
|
+
--_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
|
|
146
|
+
--_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
|
|
147
|
+
--_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
|
|
148
|
+
|
|
100
149
|
position: fixed;
|
|
101
150
|
inset: auto;
|
|
102
151
|
margin: 0;
|
|
@@ -119,25 +168,25 @@ useComponentHost(controllerModule.default, {
|
|
|
119
168
|
}
|
|
120
169
|
|
|
121
170
|
.surface {
|
|
122
|
-
--_tooltip-line: var(--
|
|
171
|
+
--_tooltip-line: var(--_ui-tooltip-border, var(--ui-border-default));
|
|
123
172
|
position: relative;
|
|
124
173
|
box-sizing: border-box;
|
|
125
|
-
max-inline-size: var(--
|
|
174
|
+
max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
|
|
126
175
|
border: 1px solid var(--_tooltip-line);
|
|
127
|
-
border-radius: var(--
|
|
128
|
-
background: var(--
|
|
129
|
-
color: var(--
|
|
176
|
+
border-radius: var(--_ui-tooltip-radius, var(--ui-radius-sm));
|
|
177
|
+
background: var(--_ui-tooltip-surface, var(--ui-surface-elevated));
|
|
178
|
+
color: var(--_ui-tooltip-text, var(--ui-text-primary));
|
|
130
179
|
padding: var(--ui-space-1) var(--ui-space-2);
|
|
131
180
|
font-family: var(--ui-font-family-sans);
|
|
132
181
|
font-size: var(--ui-font-size-sm);
|
|
133
182
|
line-height: var(--ui-line-height-tight);
|
|
134
|
-
box-shadow: var(--
|
|
183
|
+
box-shadow: var(--_ui-tooltip-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md)));
|
|
135
184
|
}
|
|
136
185
|
|
|
137
186
|
[data-component~="ui-tooltip"][data-ui-tooltip-state~="inverse"] .surface {
|
|
138
|
-
--_tooltip-line: var(--
|
|
139
|
-
background: var(--
|
|
140
|
-
color: var(--
|
|
187
|
+
--_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
188
|
+
background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
189
|
+
color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
|
|
141
190
|
}
|
|
142
191
|
|
|
143
192
|
/* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
|
|
@@ -147,9 +196,9 @@ useComponentHost(controllerModule.default, {
|
|
|
147
196
|
position: absolute;
|
|
148
197
|
z-index: 1;
|
|
149
198
|
inset-inline-start: var(--ui-space-3);
|
|
150
|
-
inset-block-end: calc(var(--
|
|
151
|
-
inline-size: var(--
|
|
152
|
-
block-size: var(--
|
|
199
|
+
inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.5rem) / -2 - 0.5px);
|
|
200
|
+
inline-size: var(--_ui-tooltip-arrow-size, 0.5rem);
|
|
201
|
+
block-size: var(--_ui-tooltip-arrow-size, 0.5rem);
|
|
153
202
|
box-sizing: border-box;
|
|
154
203
|
background: inherit;
|
|
155
204
|
border: 0 solid var(--_tooltip-line);
|
|
@@ -161,7 +210,7 @@ useComponentHost(controllerModule.default, {
|
|
|
161
210
|
|
|
162
211
|
:is([data-component~="ui-tooltip"][data-ui-tooltip-state~="placement=bottom"], [data-component~="ui-tooltip"][data-ui-tooltip-state~="placement=bottom-start"], [data-component~="ui-tooltip"][data-ui-tooltip-state~="placement=bottom-end"])
|
|
163
212
|
.surface::after {
|
|
164
|
-
inset-block-start: calc(var(--
|
|
213
|
+
inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.5rem) / -2 - 0.5px);
|
|
165
214
|
inset-block-end: auto;
|
|
166
215
|
border-inline-end-width: 0;
|
|
167
216
|
border-block-end-width: 0;
|
package/vue/UiTopBar.vue
CHANGED
|
@@ -13,7 +13,40 @@ defineOptions({ inheritAttrs: false })
|
|
|
13
13
|
</template>
|
|
14
14
|
|
|
15
15
|
<style scoped>
|
|
16
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
17
|
+
@property --ui-top-bar-actions-gap {
|
|
18
|
+
syntax: "*";
|
|
19
|
+
inherits: false;
|
|
20
|
+
}
|
|
21
|
+
@property --ui-top-bar-border {
|
|
22
|
+
syntax: "*";
|
|
23
|
+
inherits: false;
|
|
24
|
+
}
|
|
25
|
+
@property --ui-top-bar-gap {
|
|
26
|
+
syntax: "*";
|
|
27
|
+
inherits: false;
|
|
28
|
+
}
|
|
29
|
+
@property --ui-top-bar-height {
|
|
30
|
+
syntax: "*";
|
|
31
|
+
inherits: false;
|
|
32
|
+
}
|
|
33
|
+
@property --ui-top-bar-padding-inline {
|
|
34
|
+
syntax: "*";
|
|
35
|
+
inherits: false;
|
|
36
|
+
}
|
|
37
|
+
@property --ui-top-bar-surface {
|
|
38
|
+
syntax: "*";
|
|
39
|
+
inherits: false;
|
|
40
|
+
}
|
|
41
|
+
@property --ui-top-bar-z-index {
|
|
42
|
+
syntax: "*";
|
|
43
|
+
inherits: false;
|
|
44
|
+
}
|
|
45
|
+
|
|
16
46
|
[data-component~="ui-top-bar"] {
|
|
47
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
48
|
+
--_ui-top-bar-actions-gap: var(--ui-top-bar-actions-gap);
|
|
49
|
+
|
|
17
50
|
position: sticky;
|
|
18
51
|
inset-block-start: 0;
|
|
19
52
|
z-index: var(--ui-top-bar-z-index, 100);
|
|
@@ -43,7 +76,7 @@ defineOptions({ inheritAttrs: false })
|
|
|
43
76
|
}
|
|
44
77
|
|
|
45
78
|
.actions {
|
|
46
|
-
gap: var(--
|
|
79
|
+
gap: var(--_ui-top-bar-actions-gap, var(--ui-space-1));
|
|
47
80
|
}
|
|
48
81
|
|
|
49
82
|
.title {
|
package/vue/UiTree.vue
CHANGED
|
@@ -130,19 +130,42 @@ useComponentHost(controllerModule.default, {
|
|
|
130
130
|
</template>
|
|
131
131
|
|
|
132
132
|
<style scoped>
|
|
133
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
134
|
+
@property --ui-tree-drop-color {
|
|
135
|
+
syntax: "*";
|
|
136
|
+
inherits: false;
|
|
137
|
+
}
|
|
138
|
+
@property --ui-tree-gutter {
|
|
139
|
+
syntax: "*";
|
|
140
|
+
inherits: false;
|
|
141
|
+
}
|
|
142
|
+
@property --ui-tree-indent {
|
|
143
|
+
syntax: "*";
|
|
144
|
+
inherits: false;
|
|
145
|
+
}
|
|
146
|
+
|
|
133
147
|
/* Reaches the items the way density does, so the setting lives on the tree the way a reader
|
|
134
|
-
|
|
148
|
+
thinks about it: this list scrolls its long names. */
|
|
135
149
|
[data-component~="ui-tree"][data-ui-tree-state~="marquee"] {
|
|
136
|
-
--
|
|
150
|
+
--_ui-default-tree-item-marquee: 1;
|
|
137
151
|
}
|
|
138
152
|
|
|
153
|
+
/* The items' defaults for this density: an item's own hook still wins. */
|
|
139
154
|
[data-component~="ui-tree"][data-ui-tree-state~="density=compact"] {
|
|
140
|
-
--
|
|
141
|
-
--
|
|
142
|
-
--
|
|
155
|
+
--_ui-default-tree-item-min-block-size: var(--ui-control-size-sm);
|
|
156
|
+
--_ui-default-tree-item-font-size: var(--ui-font-size-sm);
|
|
157
|
+
--_ui-default-tree-item-label-padding-block: 0;
|
|
143
158
|
}
|
|
144
159
|
|
|
145
160
|
[data-component~="ui-tree"] {
|
|
161
|
+
/* Hooks do not inherit: the tree hands its own to its items here, and a tree nested in an item
|
|
162
|
+
starts again from its own settings. */
|
|
163
|
+
--_ui-tree-indent: var(--ui-tree-indent);
|
|
164
|
+
--_ui-tree-drop-color: var(--ui-tree-drop-color);
|
|
165
|
+
--_ui-default-tree-item-marquee: initial;
|
|
166
|
+
--_ui-default-tree-item-min-block-size: initial;
|
|
167
|
+
--_ui-default-tree-item-font-size: initial;
|
|
168
|
+
--_ui-default-tree-item-label-padding-block: initial;
|
|
146
169
|
display: block;
|
|
147
170
|
min-inline-size: 0;
|
|
148
171
|
padding-inline-start: var(--ui-tree-gutter, 0px);
|