@threadlabs/looma 0.12.7 → 0.13.1

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.
Files changed (196) hide show
  1. package/components/ui-action-bar/ui-action-bar.html +10 -1
  2. package/components/ui-avatar/ui-avatar.html +18 -0
  3. package/components/ui-avatar-group/ui-avatar-group.html +24 -2
  4. package/components/ui-avatar-group/ui-avatar-group.js +3 -1
  5. package/components/ui-badge/ui-badge.html +42 -0
  6. package/components/ui-button/ui-button.html +70 -0
  7. package/components/ui-callout/ui-callout.html +55 -4
  8. package/components/ui-checkbox/ui-checkbox.html +15 -2
  9. package/components/ui-cluster/ui-cluster.html +7 -1
  10. package/components/ui-combobox/ui-combobox.html +64 -10
  11. package/components/ui-container/ui-container.html +12 -1
  12. package/components/ui-context-menu/ui-context-menu.html +10 -1
  13. package/components/ui-dialog/ui-dialog.html +21 -4
  14. package/components/ui-disclosure/ui-disclosure.html +22 -3
  15. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +2 -2
  16. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  17. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +8 -8
  18. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +3 -3
  19. package/components/ui-floating-action-button/ui-floating-action-button.html +14 -0
  20. package/components/ui-form-field/ui-form-field.html +10 -1
  21. package/components/ui-grid/ui-grid.html +11 -1
  22. package/components/ui-icon/ui-icon.html +17 -3
  23. package/components/ui-icon-button/ui-icon-button.html +81 -3
  24. package/components/ui-input/ui-input.html +67 -12
  25. package/components/ui-input-group/ui-input-group.html +14 -13
  26. package/components/ui-list/ui-list.html +10 -0
  27. package/components/ui-list-item/ui-list-item.html +22 -1
  28. package/components/ui-menu/ui-menu.html +17 -5
  29. package/components/ui-menu-item/ui-menu-item.html +30 -3
  30. package/components/ui-nav-item/ui-nav-item.html +14 -0
  31. package/components/ui-popover/ui-popover.html +6 -0
  32. package/components/ui-radio/ui-radio.html +15 -2
  33. package/components/ui-reel/ui-reel.html +15 -2
  34. package/components/ui-search-result-row/ui-search-result-row.html +34 -0
  35. package/components/ui-search-shell/ui-search-shell.html +65 -11
  36. package/components/ui-select/ui-select.html +14 -0
  37. package/components/ui-separator/ui-separator.html +9 -2
  38. package/components/ui-sidebar/ui-sidebar.html +22 -1
  39. package/components/ui-stack/ui-stack.html +7 -1
  40. package/components/ui-switch/ui-switch.html +20 -2
  41. package/components/ui-switcher/ui-switcher.html +18 -5
  42. package/components/ui-tabs/ui-tabs.html +21 -2
  43. package/components/ui-textarea/ui-textarea.html +14 -0
  44. package/components/ui-toast-region/ui-toast-region.html +16 -2
  45. package/components/ui-tooltip/ui-tooltip.html +62 -13
  46. package/components/ui-top-bar/ui-top-bar.html +34 -1
  47. package/components/ui-tree/ui-tree.html +27 -4
  48. package/components/ui-tree-item/ui-tree-item.html +39 -10
  49. package/components/ui-tree-item/ui-tree-item.js +1 -1
  50. package/dist/index.js +1 -1
  51. package/package.json +1 -1
  52. package/styles/ui-action-bar.css +14 -3
  53. package/styles/ui-avatar-group.css +26 -4
  54. package/styles/ui-avatar.css +22 -2
  55. package/styles/ui-badge.css +46 -2
  56. package/styles/ui-button.css +74 -2
  57. package/styles/ui-callout.css +59 -6
  58. package/styles/ui-checkbox.css +19 -4
  59. package/styles/ui-cluster.css +10 -2
  60. package/styles/ui-combobox.css +67 -12
  61. package/styles/ui-container.css +14 -2
  62. package/styles/ui-context-menu.css +14 -3
  63. package/styles/ui-dialog.css +25 -6
  64. package/styles/ui-disclosure.css +26 -5
  65. package/styles/ui-editor-slash-menu.css +2 -2
  66. package/styles/ui-editor-table-context-menu.css +2 -2
  67. package/styles/ui-editor-table-overlay.css +8 -8
  68. package/styles/ui-editor-table-toolbar.css +3 -3
  69. package/styles/ui-floating-action-button.css +18 -2
  70. package/styles/ui-form-field.css +14 -3
  71. package/styles/ui-grid.css +14 -2
  72. package/styles/ui-icon-button.css +85 -5
  73. package/styles/ui-icon.css +21 -5
  74. package/styles/ui-input-group.css +14 -13
  75. package/styles/ui-input.css +72 -14
  76. package/styles/ui-list-item.css +26 -3
  77. package/styles/ui-list.css +14 -2
  78. package/styles/ui-menu-item.css +34 -5
  79. package/styles/ui-menu.css +21 -6
  80. package/styles/ui-nav-item.css +18 -2
  81. package/styles/ui-popover.css +10 -2
  82. package/styles/ui-radio.css +19 -4
  83. package/styles/ui-reel.css +18 -3
  84. package/styles/ui-search-result-row.css +38 -2
  85. package/styles/ui-search-shell.css +69 -13
  86. package/styles/ui-select.css +18 -2
  87. package/styles/ui-separator.css +14 -2
  88. package/styles/ui-sidebar.css +26 -3
  89. package/styles/ui-stack.css +10 -2
  90. package/styles/ui-switch.css +24 -4
  91. package/styles/ui-switcher.css +21 -6
  92. package/styles/ui-tabs.css +25 -4
  93. package/styles/ui-textarea.css +18 -2
  94. package/styles/ui-toast-region.css +20 -4
  95. package/styles/ui-tooltip.css +66 -15
  96. package/styles/ui-top-bar.css +38 -3
  97. package/styles/ui-tree-item.css +43 -12
  98. package/styles/ui-tree.css +33 -6
  99. package/vanilla/UiAvatarGroup.d.ts +1 -0
  100. package/vanilla/UiAvatarGroup.js +1 -1
  101. package/vue/UiActionBar.vue +12 -3
  102. package/vue/UiAvatar.vue +18 -0
  103. package/vue/UiAvatarGroup.d.ts +2 -0
  104. package/vue/UiAvatarGroup.vue +40 -4
  105. package/vue/UiBadge.vue +42 -0
  106. package/vue/UiButton.vue +70 -0
  107. package/vue/UiCallout.vue +55 -4
  108. package/vue/UiCheckbox.vue +15 -2
  109. package/vue/UiCluster.vue +6 -0
  110. package/vue/UiCombobox.vue +64 -10
  111. package/vue/UiContainer.vue +10 -0
  112. package/vue/UiContextMenu.vue +10 -1
  113. package/vue/UiDialog.vue +21 -4
  114. package/vue/UiDisclosure.vue +22 -3
  115. package/vue/UiEditorSlashMenu.vue +2 -2
  116. package/vue/UiEditorTableContextMenu.vue +2 -2
  117. package/vue/UiEditorTableOverlay.vue +8 -8
  118. package/vue/UiEditorTableToolbar.vue +3 -3
  119. package/vue/UiFloatingActionButton.vue +14 -0
  120. package/vue/UiFormField.vue +10 -1
  121. package/vue/UiGrid.vue +10 -0
  122. package/vue/UiIcon.vue +17 -3
  123. package/vue/UiIconButton.vue +81 -3
  124. package/vue/UiInput.vue +89 -14
  125. package/vue/UiInputGroup.vue +14 -13
  126. package/vue/UiList.vue +12 -2
  127. package/vue/UiListItem.vue +30 -9
  128. package/vue/UiMenu.vue +17 -5
  129. package/vue/UiMenuItem.vue +42 -4
  130. package/vue/UiNavItem.vue +17 -3
  131. package/vue/UiPopover.vue +6 -0
  132. package/vue/UiRadio.vue +15 -2
  133. package/vue/UiReel.vue +14 -1
  134. package/vue/UiSearchResultRow.vue +34 -0
  135. package/vue/UiSearchShell.vue +66 -12
  136. package/vue/UiSelect.vue +14 -0
  137. package/vue/UiSeparator.vue +9 -2
  138. package/vue/UiSidebar.vue +22 -1
  139. package/vue/UiStack.vue +6 -0
  140. package/vue/UiSwitch.vue +20 -2
  141. package/vue/UiSwitcher.vue +17 -4
  142. package/vue/UiTabs.vue +22 -3
  143. package/vue/UiTextarea.vue +14 -0
  144. package/vue/UiToastRegion.vue +16 -2
  145. package/vue/UiTooltip.vue +62 -13
  146. package/vue/UiTopBar.vue +34 -1
  147. package/vue/UiTree.vue +28 -5
  148. package/vue/UiTreeItem.vue +46 -11
  149. package/vue/chunks/UiActionBar.js +1 -1
  150. package/vue/chunks/UiAvatar.js +1 -1
  151. package/vue/chunks/UiAvatarGroup.js +8 -4
  152. package/vue/chunks/UiBadge.js +1 -1
  153. package/vue/chunks/UiButton.js +1 -1
  154. package/vue/chunks/UiCallout.js +1 -1
  155. package/vue/chunks/UiCheckbox.js +1 -1
  156. package/vue/chunks/UiCluster.js +1 -1
  157. package/vue/chunks/UiCombobox.js +1 -1
  158. package/vue/chunks/UiContainer.js +1 -1
  159. package/vue/chunks/UiContextMenu.js +1 -1
  160. package/vue/chunks/UiDialog.js +1 -1
  161. package/vue/chunks/UiDisclosure.js +1 -1
  162. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  163. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  164. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  165. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  166. package/vue/chunks/UiFloatingActionButton.js +1 -1
  167. package/vue/chunks/UiFormField.js +1 -1
  168. package/vue/chunks/UiGrid.js +1 -1
  169. package/vue/chunks/UiIcon.js +1 -1
  170. package/vue/chunks/UiIconButton.js +1 -1
  171. package/vue/chunks/UiInput.js +1 -1
  172. package/vue/chunks/UiInputGroup.js +1 -1
  173. package/vue/chunks/UiList.js +1 -1
  174. package/vue/chunks/UiListItem.js +1 -1
  175. package/vue/chunks/UiMenu.js +1 -1
  176. package/vue/chunks/UiMenuItem.js +1 -1
  177. package/vue/chunks/UiNavItem.js +1 -1
  178. package/vue/chunks/UiPopover.js +1 -1
  179. package/vue/chunks/UiRadio.js +1 -1
  180. package/vue/chunks/UiReel.js +1 -1
  181. package/vue/chunks/UiSearchResultRow.js +1 -1
  182. package/vue/chunks/UiSearchShell.js +1 -1
  183. package/vue/chunks/UiSelect.js +1 -1
  184. package/vue/chunks/UiSeparator.js +1 -1
  185. package/vue/chunks/UiSidebar.js +1 -1
  186. package/vue/chunks/UiStack.js +1 -1
  187. package/vue/chunks/UiSwitch.js +1 -1
  188. package/vue/chunks/UiSwitcher.js +1 -1
  189. package/vue/chunks/UiTabs.js +1 -1
  190. package/vue/chunks/UiTextarea.js +1 -1
  191. package/vue/chunks/UiToastRegion.js +1 -1
  192. package/vue/chunks/UiTooltip.js +1 -1
  193. package/vue/chunks/UiTopBar.js +1 -1
  194. package/vue/chunks/UiTree.js +1 -1
  195. package/vue/chunks/UiTreeItem.js +1 -1
  196. package/vue/components.css +1934 -897
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threadlabs/looma",
3
- "version": "0.12.7",
3
+ "version": "0.13.1",
4
4
  "type": "module",
5
5
  "description": "Looma components as HTML, Vue, and plain DOM, with design tokens.",
6
6
  "license": "MIT",
@@ -1,9 +1,18 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-action-bar-gap {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
2
6
  @scope ([data-component~="ui-action-bar"]) to ([data-component], [data-slotted]) {
3
- /* The action row of a form or dialog. Tertiary actions (Back, Cancel, Discard) sit at the start
7
+ /* This component's hooks style the element they are set on, and never a nested one. */
8
+
9
+ /* The action row of a form or dialog. Tertiary actions (Back, Cancel, Discard) sit at the start
4
10
  edge; secondary actions (Save as draft, Preview) sit just before the primary one, which ends the
5
11
  row. The bar arranges its actions and leaves their look to them. */
6
12
  :scope {
13
+ /* Hooks do not inherit, so the parts below read them from the root. */
14
+ --_ui-action-bar-gap: var(--ui-action-bar-gap);
15
+
7
16
  --_gap: var(--ui-space-2);
8
17
  display: block;
9
18
  /* A size container sizes itself from its container, never its content. */
@@ -19,7 +28,7 @@
19
28
  display: flex;
20
29
  flex-wrap: wrap;
21
30
  align-items: center;
22
- gap: var(--ui-action-bar-gap, var(--_gap));
31
+ gap: var(--_ui-action-bar-gap, var(--_gap));
23
32
  }
24
33
 
25
34
  /* The tertiary group takes the spare space, pushing the rest to the end edge; without it, the
@@ -61,7 +70,9 @@
61
70
  }
62
71
  }
63
72
  @scope ([data-component~="ui-action-bar"]) to ([data-component]) {
64
- /* The action row of a form or dialog. Tertiary actions (Back, Cancel, Discard) sit at the start
73
+ /* This component's hooks style the element they are set on, and never a nested one. */
74
+
75
+ /* The action row of a form or dialog. Tertiary actions (Back, Cancel, Discard) sit at the start
65
76
  edge; secondary actions (Save as draft, Preview) sit just before the primary one, which ends the
66
77
  row. The bar arranges its actions and leaves their look to them. */
67
78
 
@@ -1,6 +1,20 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-avatar-group-edge-ring {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-avatar-group-overlap-shadow {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
2
10
  @scope ([data-component~="ui-avatar-group"]) to ([data-component], [data-slotted]) {
3
- :scope {
11
+ /* This component's hooks style the element they are set on, and never a nested one. */
12
+
13
+ :scope {
14
+ /* Hooks do not inherit, so the parts below read them from the root. */
15
+ --_ui-avatar-group-overlap-shadow: var(--ui-avatar-group-overlap-shadow);
16
+ --_ui-avatar-group-edge-ring: var(--ui-avatar-group-edge-ring);
17
+
4
18
  /* Each avatar is ringed in the surface colour, so where one overlaps the next it reads as a
5
19
  * whole circle set on top, not a shape cut into the one beneath. */
6
20
  --_overlap-shadow: 0 0 0 0 transparent;
@@ -27,14 +41,20 @@
27
41
  background: var(--ui-surface-elevated);
28
42
  color: var(--ui-text-primary);
29
43
  box-shadow:
30
- var(--ui-avatar-group-overlap-shadow, var(--_overlap-shadow)),
31
- var(--ui-avatar-group-edge-ring, var(--_edge-ring));
44
+ var(--_ui-avatar-group-overlap-shadow, var(--_overlap-shadow)),
45
+ var(--_ui-avatar-group-edge-ring, var(--_edge-ring));
32
46
  font: inherit;
33
47
  font-size: var(--ui-font-size-xs);
34
48
  font-weight: 600;
35
49
  flex-shrink: 0;
36
50
  }
37
51
 
52
+ :scope[data-ui-avatar-group-state~="size=sm"] .overflow {
53
+ margin-inline-start: -0.25rem;
54
+ inline-size: 1.75rem;
55
+ block-size: 1.75rem;
56
+ }
57
+
38
58
  .overflow[hidden] {
39
59
  display: none;
40
60
  }
@@ -45,7 +65,9 @@
45
65
  }
46
66
  }
47
67
  @scope ([data-component~="ui-avatar-group"]) to ([data-component]) {
48
- /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
68
+ /* This component's hooks style the element they are set on, and never a nested one. */
69
+
70
+ /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
49
71
  * component roots outside this style scope. */
50
72
  :where([data-slotted], [data-slotted] *):is(*) {
51
73
  margin-inline-start: -0.5rem;
@@ -1,6 +1,24 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-avatar-border {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-avatar-surface {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-avatar-text {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-avatar-active-ring {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
2
18
  @scope ([data-component~="ui-avatar"]) to ([data-component], [data-slotted]) {
3
- :scope {
19
+ /* This component's hooks style the element they are set on, and never a nested one. */
20
+
21
+ :scope {
4
22
  display: inline-grid;
5
23
  place-items: center;
6
24
  overflow: hidden;
@@ -61,7 +79,9 @@
61
79
  }
62
80
  }
63
81
  @scope ([data-component~="ui-avatar"]) to ([data-component]) {
64
- /* An outline, not a dot: the avatar clips its content to the circle, and an outline is drawn
82
+ /* This component's hooks style the element they are set on, and never a nested one. */
83
+
84
+ /* An outline, not a dot: the avatar clips its content to the circle, and an outline is drawn
65
85
  outside the box, so the ring survives the clip and the overlap in an Avatar Group. */
66
86
 
67
87
  .image,
@@ -1,6 +1,48 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-badge-border {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-badge-font-size {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-badge-font-weight {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-badge-line-height {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
18
+ @property --ui-badge-min-block-size {
19
+ syntax: "*";
20
+ inherits: false;
21
+ }
22
+ @property --ui-badge-padding-block {
23
+ syntax: "*";
24
+ inherits: false;
25
+ }
26
+ @property --ui-badge-padding-inline {
27
+ syntax: "*";
28
+ inherits: false;
29
+ }
30
+ @property --ui-badge-point {
31
+ syntax: "*";
32
+ inherits: false;
33
+ }
34
+ @property --ui-badge-surface {
35
+ syntax: "*";
36
+ inherits: false;
37
+ }
38
+ @property --ui-badge-text {
39
+ syntax: "*";
40
+ inherits: false;
41
+ }
2
42
  @scope ([data-component~="ui-badge"]) to ([data-component], [data-slotted]) {
3
- :scope {
43
+ /* This component's hooks style the element they are set on, and never a nested one. */
44
+
45
+ :scope {
4
46
  --_badge-surface: var(--ui-surface-subtle);
5
47
  --_badge-text: var(--ui-text-secondary);
6
48
  /* Every tone's edge is its fill, so it is unseen until forced colors draw it. */
@@ -120,7 +162,9 @@
120
162
  }
121
163
  }
122
164
  @scope ([data-component~="ui-badge"]) to ([data-component]) {
123
- /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
165
+ /* This component's hooks style the element they are set on, and never a nested one. */
166
+
167
+ /* Centre the glyphs, not the line box: a label without descenders otherwise reads high.
124
168
  * Trimming applies to block containers; an inline-block is one and, like the inline-flex it
125
169
  * replaces, still sizes to its label rather than filling its container. */
126
170
  @supports (text-box-trim: trim-both) {
@@ -1,6 +1,76 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-button-active-surface {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-button-border {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-button-disabled-filter {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-button-disabled-opacity {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
18
+ @property --ui-button-ghost-active-surface {
19
+ syntax: "*";
20
+ inherits: false;
21
+ }
22
+ @property --ui-button-ghost-hover-surface {
23
+ syntax: "*";
24
+ inherits: false;
25
+ }
26
+ @property --ui-button-ghost-text {
27
+ syntax: "*";
28
+ inherits: false;
29
+ }
30
+ @property --ui-button-hover-border {
31
+ syntax: "*";
32
+ inherits: false;
33
+ }
34
+ @property --ui-button-hover-surface {
35
+ syntax: "*";
36
+ inherits: false;
37
+ }
38
+ @property --ui-button-link-hover-text {
39
+ syntax: "*";
40
+ inherits: false;
41
+ }
42
+ @property --ui-button-link-text {
43
+ syntax: "*";
44
+ inherits: false;
45
+ }
46
+ @property --ui-button-min-block-size {
47
+ syntax: "*";
48
+ inherits: false;
49
+ }
50
+ @property --ui-button-radius {
51
+ syntax: "*";
52
+ inherits: false;
53
+ }
54
+ @property --ui-button-shadow {
55
+ syntax: "*";
56
+ inherits: false;
57
+ }
58
+ @property --ui-button-solid-shadow {
59
+ syntax: "*";
60
+ inherits: false;
61
+ }
62
+ @property --ui-button-surface {
63
+ syntax: "*";
64
+ inherits: false;
65
+ }
66
+ @property --ui-button-text {
67
+ syntax: "*";
68
+ inherits: false;
69
+ }
2
70
  @scope ([data-component~="ui-button"]) to ([data-component], [data-slotted]) {
3
- :scope {
71
+ /* This component's hooks style the element they are set on, and never a nested one. */
72
+
73
+ :scope {
4
74
  --_hue: var(--ui-accent);
5
75
  --_hue-hover: var(--ui-accent-hover);
6
76
  --_hue-active: var(--ui-accent-active);
@@ -276,7 +346,9 @@
276
346
  }
277
347
  }
278
348
  @scope ([data-component~="ui-button"]) to ([data-component]) {
279
- @supports (text-box-trim: trim-both) {
349
+ /* This component's hooks style the element they are set on, and never a nested one. */
350
+
351
+ @supports (text-box-trim: trim-both) {
280
352
  }
281
353
 
282
354
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
@@ -1,6 +1,57 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-callout-border {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-callout-border-width {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-callout-gap {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-callout-icon {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
18
+ @property --ui-callout-icon-column {
19
+ syntax: "*";
20
+ inherits: false;
21
+ }
22
+ @property --ui-callout-icon-size {
23
+ syntax: "*";
24
+ inherits: false;
25
+ }
26
+ @property --ui-callout-leading-border-width {
27
+ syntax: "*";
28
+ inherits: false;
29
+ }
30
+ @property --ui-callout-padding-block {
31
+ syntax: "*";
32
+ inherits: false;
33
+ }
34
+ @property --ui-callout-padding-inline {
35
+ syntax: "*";
36
+ inherits: false;
37
+ }
38
+ @property --ui-callout-surface {
39
+ syntax: "*";
40
+ inherits: false;
41
+ }
42
+ @property --ui-callout-text {
43
+ syntax: "*";
44
+ inherits: false;
45
+ }
2
46
  @scope ([data-component~="ui-callout"]) to ([data-component], [data-slotted]) {
3
- :scope {
47
+ /* This component's hooks style the element they are set on, and never a nested one. */
48
+
49
+ :scope {
50
+ /* Hooks do not inherit, so the parts below read them from the root. */
51
+ --_ui-callout-icon-column: var(--ui-callout-icon-column);
52
+ --_ui-callout-icon: var(--ui-callout-icon);
53
+ --_ui-callout-icon-size: var(--ui-callout-icon-size);
54
+
4
55
  --_callout-surface: var(--ui-info-soft);
5
56
  --_callout-border: var(--ui-info-solid);
6
57
  --_callout-icon: var(--ui-info-solid);
@@ -26,14 +77,14 @@
26
77
  .icon {
27
78
  display: grid;
28
79
  place-items: center;
29
- inline-size: var(--ui-callout-icon-column, 1.125rem);
80
+ inline-size: var(--_ui-callout-icon-column, 1.125rem);
30
81
  block-size: 1lh;
31
- color: var(--ui-callout-icon, var(--_callout-icon));
82
+ color: var(--_ui-callout-icon, var(--_callout-icon));
32
83
  }
33
84
 
34
85
  .icon svg {
35
- inline-size: var(--ui-callout-icon-size, 1.125rem);
36
- block-size: var(--ui-callout-icon-size, 1.125rem);
86
+ inline-size: var(--_ui-callout-icon-size, 1.125rem);
87
+ block-size: var(--_ui-callout-icon-size, 1.125rem);
37
88
  }
38
89
 
39
90
  .content {
@@ -72,7 +123,9 @@
72
123
  }
73
124
  }
74
125
  @scope ([data-component~="ui-callout"]) to ([data-component]) {
75
- /* One line box tall, so the icon centres on the first line of text. */
126
+ /* This component's hooks style the element they are set on, and never a nested one. */
127
+
128
+ /* One line box tall, so the icon centres on the first line of text. */
76
129
 
77
130
  /* A link in the callout's text is underlined, so it reads as a link by more than colour. */
78
131
  .content :where([data-slotted], [data-slotted] *):is(a) {
@@ -1,6 +1,19 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-checkbox-gap {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-checkbox-size {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
2
10
  @scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
3
- :scope {
11
+ /* This component's hooks style the element they are set on, and never a nested one. */
12
+
13
+ :scope {
14
+ /* Hooks do not inherit, so the parts below read them from the root. */
15
+ --_ui-checkbox-size: var(--ui-checkbox-size);
16
+
4
17
  display: inline-flex;
5
18
  align-items: flex-start;
6
19
  gap: var(--ui-checkbox-gap, var(--ui-space-2));
@@ -37,8 +50,8 @@
37
50
  -webkit-appearance: none;
38
51
  position: relative;
39
52
  flex: 0 0 auto;
40
- inline-size: var(--ui-checkbox-size, 1.125rem);
41
- block-size: var(--ui-checkbox-size, 1.125rem);
53
+ inline-size: var(--_ui-checkbox-size, 1.125rem);
54
+ block-size: var(--_ui-checkbox-size, 1.125rem);
42
55
  margin: 0.125em 0 0;
43
56
  border: 1px solid var(--ui-control-border-hover, var(--ui-border-strong));
44
57
  border-radius: var(--ui-radius-sm);
@@ -113,7 +126,9 @@
113
126
  }
114
127
  }
115
128
  @scope ([data-component~="ui-checkbox"]) to ([data-component]) {
116
- /* The label, and under it an optional line saying what the choice means. */
129
+ /* This component's hooks style the element they are set on, and never a nested one. */
130
+
131
+ /* The label, and under it an optional line saying what the choice means. */
117
132
 
118
133
  /* Centre the tick's box, then lift it: a rotated L's ink sits ~0.11rem below its box centre. */
119
134
 
@@ -1,6 +1,12 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-cluster-gap {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
2
6
  @scope ([data-component~="ui-cluster"]) to ([data-component], [data-slotted]) {
3
- :scope {
7
+ /* This component's hooks style the element they are set on, and never a nested one. */
8
+
9
+ :scope {
4
10
  --_layout-gap: var(--ui-space-3);
5
11
  display: flex;
6
12
  flex-wrap: wrap;
@@ -42,5 +48,7 @@
42
48
  }
43
49
  }
44
50
  @scope ([data-component~="ui-cluster"]) to ([data-component]) {
45
- /* A component that sets its display still honours the hidden attribute on its root. */
51
+ /* This component's hooks style the element they are set on, and never a nested one. */
52
+
53
+ /* A component that sets its display still honours the hidden attribute on its root. */
46
54
  }
@@ -1,6 +1,60 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-combobox-affordance-text {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-combobox-item-input-min-inline-size {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
10
+ @property --ui-combobox-item-item-max-inline-size {
11
+ syntax: "*";
12
+ inherits: false;
13
+ }
14
+ @property --ui-combobox-item-min-block-size {
15
+ syntax: "*";
16
+ inherits: false;
17
+ }
18
+ @property --ui-combobox-label-font-size {
19
+ syntax: "*";
20
+ inherits: false;
21
+ }
22
+ @property --ui-combobox-label-text {
23
+ syntax: "*";
24
+ inherits: false;
25
+ }
26
+ @property --ui-combobox-max-block-size {
27
+ syntax: "*";
28
+ inherits: false;
29
+ }
30
+ @property --ui-combobox-message-text {
31
+ syntax: "*";
32
+ inherits: false;
33
+ }
34
+ @property --ui-combobox-option-check {
35
+ syntax: "*";
36
+ inherits: false;
37
+ }
38
+ @property --ui-combobox-option-text {
39
+ syntax: "*";
40
+ inherits: false;
41
+ }
2
42
  @scope ([data-component~="ui-combobox"]) to ([data-component], [data-slotted]) {
3
- :scope {
43
+ /* This component's hooks style the element they are set on, and never a nested one. */
44
+
45
+ :scope {
46
+ /* Hooks do not inherit, so the parts below read them from the root. */
47
+ --_ui-combobox-label-text: var(--ui-combobox-label-text);
48
+ --_ui-combobox-label-font-size: var(--ui-combobox-label-font-size);
49
+ --_ui-combobox-affordance-text: var(--ui-combobox-affordance-text);
50
+ --_ui-combobox-max-block-size: var(--ui-combobox-max-block-size);
51
+ --_ui-combobox-option-text: var(--ui-combobox-option-text);
52
+ --_ui-combobox-message-text: var(--ui-combobox-message-text);
53
+ --_ui-combobox-option-check: var(--ui-combobox-option-check);
54
+ --_ui-combobox-item-min-block-size: var(--ui-combobox-item-min-block-size);
55
+ --_ui-combobox-item-input-min-inline-size: var(--ui-combobox-item-input-min-inline-size);
56
+ --_ui-combobox-item-item-max-inline-size: var(--ui-combobox-item-item-max-inline-size);
57
+
4
58
  display: grid;
5
59
  gap: var(--ui-space-1);
6
60
  min-inline-size: 0;
@@ -8,8 +62,8 @@
8
62
  font: inherit;
9
63
  }
10
64
  label {
11
- color: var(--ui-combobox-label-text, var(--ui-text-primary));
12
- font-size: var(--ui-combobox-label-font-size, var(--ui-font-size-sm));
65
+ color: var(--_ui-combobox-label-text, var(--ui-text-primary));
66
+ font-size: var(--_ui-combobox-label-font-size, var(--ui-font-size-sm));
13
67
  font-weight: 500;
14
68
  }
15
69
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
@@ -107,7 +161,7 @@
107
161
  border: 0;
108
162
  border-radius: var(--ui-radius-md);
109
163
  background: transparent;
110
- color: var(--ui-combobox-affordance-text, var(--ui-text-secondary));
164
+ color: var(--_ui-combobox-affordance-text, var(--ui-text-secondary));
111
165
  font: inherit;
112
166
  font-weight: 400;
113
167
  min-inline-size: 2rem;
@@ -142,7 +196,7 @@
142
196
  box-sizing: border-box;
143
197
  min-inline-size: 12rem;
144
198
  max-inline-size: calc(100vw - 1rem);
145
- max-block-size: var(--ui-combobox-max-block-size, 18rem);
199
+ max-block-size: var(--_ui-combobox-max-block-size, 18rem);
146
200
  overflow: auto;
147
201
  margin: 0;
148
202
  padding: var(--ui-space-1);
@@ -172,11 +226,11 @@
172
226
  }
173
227
  .primary {
174
228
  display: block;
175
- color: var(--ui-combobox-option-text, var(--ui-text-primary));
229
+ color: var(--_ui-combobox-option-text, var(--ui-text-primary));
176
230
  font-weight: 500;
177
231
  }
178
232
  .message, .group {
179
- color: var(--ui-combobox-message-text, var(--ui-text-secondary));
233
+ color: var(--_ui-combobox-message-text, var(--ui-text-secondary));
180
234
  font-weight: 400;
181
235
  font-size: var(--ui-font-size-sm);
182
236
  line-height: var(--ui-line-height-md);
@@ -236,7 +290,7 @@
236
290
  border-color: var(--ui-accent-solid);
237
291
  background-color: var(--ui-accent-solid);
238
292
  background-image: var(
239
- --ui-combobox-option-check,
293
+ --_ui-combobox-option-check,
240
294
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5 9-9'/%3E%3C/svg%3E")
241
295
  );
242
296
  }
@@ -246,11 +300,11 @@
246
300
  flex-wrap: wrap;
247
301
  align-items: center;
248
302
  gap: var(--ui-space-1);
249
- min-block-size: var(--ui-combobox-item-min-block-size, 2.5rem);
303
+ min-block-size: var(--_ui-combobox-item-min-block-size, 2.5rem);
250
304
  padding: var(--ui-space-1);
251
305
  }
252
306
  :scope[data-ui-combobox-state~="multiple"] input {
253
- flex: 1 0 var(--ui-combobox-item-input-min-inline-size, 5rem);
307
+ flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
254
308
  width: auto;
255
309
  min-block-size: 1.75rem;
256
310
  padding: var(--ui-space-0-5) var(--ui-space-1);
@@ -259,7 +313,7 @@
259
313
  appearance: none;
260
314
  display: inline-flex;
261
315
  min-inline-size: 0;
262
- max-inline-size: min(100%, var(--ui-combobox-item-item-max-inline-size, 12rem));
316
+ max-inline-size: min(100%, var(--_ui-combobox-item-item-max-inline-size, 12rem));
263
317
  overflow: hidden;
264
318
  padding: 0;
265
319
  border: 0;
@@ -283,7 +337,8 @@
283
337
  }
284
338
  }
285
339
  @scope ([data-component~="ui-combobox"]) to ([data-component]) {
286
- /* The field and anything that annotates it sit on one row; the help button is beside the box,
340
+ /* This component's hooks style the element they are set on, and never a nested one. */
341
+ /* The field and anything that annotates it sit on one row; the help button is beside the box,
287
342
  not inside it, because a control's box holds its value. */
288
343
  /* A ghost icon button: the affordance is the mark, not a box around it. */
289
344
  @media (pointer: coarse) {
@@ -1,6 +1,16 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-container-gutters {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
6
+ @property --ui-container-measure {
7
+ syntax: "*";
8
+ inherits: false;
9
+ }
2
10
  @scope ([data-component~="ui-container"]) to ([data-component], [data-slotted]) {
3
- :scope {
11
+ /* This component's hooks style the element they are set on, and never a nested one. */
12
+
13
+ :scope {
4
14
  --_container-measure: 65ch;
5
15
  --_container-gutters: var(--ui-space-4);
6
16
  display: block;
@@ -32,5 +42,7 @@
32
42
  }
33
43
  }
34
44
  @scope ([data-component~="ui-container"]) to ([data-component]) {
35
- /* A component that sets its display still honours the hidden attribute on its root. */
45
+ /* This component's hooks style the element they are set on, and never a nested one. */
46
+
47
+ /* A component that sets its display still honours the hidden attribute on its root. */
36
48
  }
@@ -1,6 +1,15 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.5. Do not edit. */
2
+ @property --ui-context-menu-z-index {
3
+ syntax: "*";
4
+ inherits: false;
5
+ }
2
6
  @scope ([data-component~="ui-context-menu"]) to ([data-component], [data-slotted]) {
3
- :scope {
7
+ /* This component's hooks style the element they are set on, and never a nested one. */
8
+
9
+ :scope {
10
+ /* Hooks do not inherit, so the parts below read them from the root. */
11
+ --_ui-context-menu-z-index: var(--ui-context-menu-z-index);
12
+
4
13
  display: contents;
5
14
  }
6
15
 
@@ -18,7 +27,7 @@
18
27
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
19
28
  outline: 0;
20
29
  overflow: auto;
21
- z-index: var(--ui-context-menu-z-index, 1000);
30
+ z-index: var(--_ui-context-menu-z-index, 1000);
22
31
  min-width: 12rem;
23
32
  opacity: 0;
24
33
  transform: translateY(-4px) scale(0.99);
@@ -58,7 +67,9 @@
58
67
  }
59
68
  }
60
69
  @scope ([data-component~="ui-context-menu"]) to ([data-component]) {
61
- @starting-style {
70
+ /* This component's hooks style the element they are set on, and never a nested one. */
71
+
72
+ @starting-style {
62
73
  }
63
74
 
64
75
  @media (prefers-reduced-motion: reduce) {