@slotted/styles 0.0.0-stage → 0.1.0-beta.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.
Files changed (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -2
  3. package/package.json +276 -3
  4. package/src/accordion/accordion.css +96 -0
  5. package/src/accordion/accordion.tokens.json +14 -0
  6. package/src/action-bar/action-bar.css +455 -0
  7. package/src/action-bar/action-bar.tokens.json +50 -0
  8. package/src/action-sheet/action-sheet.css +462 -0
  9. package/src/action-sheet/action-sheet.tokens.json +59 -0
  10. package/src/alert/alert.css +764 -0
  11. package/src/alert/alert.tokens.json +77 -0
  12. package/src/app-shell/app-shell.css +1899 -0
  13. package/src/app-shell/app-shell.tokens.json +88 -0
  14. package/src/aspect-ratio/aspect-ratio.css +131 -0
  15. package/src/aspect-ratio/aspect-ratio.tokens.json +1 -0
  16. package/src/attachment/attachment.css +906 -0
  17. package/src/attachment/attachment.tokens.json +85 -0
  18. package/src/avatar/avatar.css +598 -0
  19. package/src/avatar/avatar.tokens.json +64 -0
  20. package/src/avatar-group/avatar-group.css +268 -0
  21. package/src/avatar-group/avatar-group.tokens.json +16 -0
  22. package/src/badge/badge.css +462 -0
  23. package/src/badge/badge.tokens.json +58 -0
  24. package/src/breadcrumb/breadcrumb.css +441 -0
  25. package/src/breadcrumb/breadcrumb.tokens.json +50 -0
  26. package/src/button/button.css +754 -0
  27. package/src/button/button.tokens.json +72 -0
  28. package/src/button-group/button-group.css +455 -0
  29. package/src/button-group/button-group.tokens.json +11 -0
  30. package/src/calendar/calendar.css +846 -0
  31. package/src/calendar/calendar.tokens.json +67 -0
  32. package/src/card/card.css +602 -0
  33. package/src/card/card.tokens.json +68 -0
  34. package/src/carousel/carousel.css +860 -0
  35. package/src/carousel/carousel.tokens.json +62 -0
  36. package/src/cascader/cascader.css +1320 -0
  37. package/src/cascader/cascader.tokens.json +103 -0
  38. package/src/chart/chart.css +1473 -0
  39. package/src/chart/chart.tokens.json +107 -0
  40. package/src/checkbox/checkbox.css +1011 -0
  41. package/src/checkbox/checkbox.tokens.json +102 -0
  42. package/src/checkbox-group/checkbox-group.css +70 -0
  43. package/src/checkbox-group/checkbox-group.tokens.json +6 -0
  44. package/src/code-block/code-block.css +555 -0
  45. package/src/code-block/code-block.tokens.json +69 -0
  46. package/src/collapsible/collapsible.css +546 -0
  47. package/src/collapsible/collapsible.tokens.json +55 -0
  48. package/src/color-picker/color-picker.css +607 -0
  49. package/src/color-picker/color-picker.tokens.json +58 -0
  50. package/src/column-manager/column-manager.css +452 -0
  51. package/src/column-manager/column-manager.tokens.json +43 -0
  52. package/src/combobox/combobox.css +1048 -0
  53. package/src/combobox/combobox.tokens.json +112 -0
  54. package/src/command-palette/command-palette.css +1000 -0
  55. package/src/command-palette/command-palette.tokens.json +75 -0
  56. package/src/container/container.css +198 -0
  57. package/src/container/container.tokens.json +18 -0
  58. package/src/context-menu/context-menu.css +104 -0
  59. package/src/context-menu/context-menu.tokens.json +11 -0
  60. package/src/currency-field/currency-field.css +787 -0
  61. package/src/currency-field/currency-field.tokens.json +80 -0
  62. package/src/dashboard-grid/dashboard-grid.css +748 -0
  63. package/src/dashboard-grid/dashboard-grid.tokens.json +67 -0
  64. package/src/data-grid/data-grid.css +2484 -0
  65. package/src/data-grid/data-grid.tokens.json +100 -0
  66. package/src/data-list/data-list.css +455 -0
  67. package/src/data-list/data-list.tokens.json +35 -0
  68. package/src/date-field/date-field.css +560 -0
  69. package/src/date-field/date-field.tokens.json +80 -0
  70. package/src/date-picker/date-picker.css +420 -0
  71. package/src/date-picker/date-picker.tokens.json +49 -0
  72. package/src/date-range-picker/date-range-picker.css +983 -0
  73. package/src/date-range-picker/date-range-picker.tokens.json +109 -0
  74. package/src/datetime-field/datetime-field.css +850 -0
  75. package/src/datetime-field/datetime-field.tokens.json +91 -0
  76. package/src/datetime-picker/datetime-picker.css +843 -0
  77. package/src/datetime-picker/datetime-picker.tokens.json +78 -0
  78. package/src/datetime-range-picker/datetime-range-picker.css +1375 -0
  79. package/src/datetime-range-picker/datetime-range-picker.tokens.json +135 -0
  80. package/src/description-list/description-list.css +675 -0
  81. package/src/description-list/description-list.tokens.json +66 -0
  82. package/src/detail-panel/detail-panel.css +329 -0
  83. package/src/detail-panel/detail-panel.tokens.json +33 -0
  84. package/src/dialog/dialog.css +968 -0
  85. package/src/dialog/dialog.tokens.json +66 -0
  86. package/src/divider/divider.css +131 -0
  87. package/src/divider/divider.tokens.json +18 -0
  88. package/src/drawer/drawer.css +1303 -0
  89. package/src/drawer/drawer.tokens.json +75 -0
  90. package/src/entity-picker/entity-picker.css +1367 -0
  91. package/src/entity-picker/entity-picker.tokens.json +118 -0
  92. package/src/event-calendar/event-calendar.css +2148 -0
  93. package/src/event-calendar/event-calendar.tokens.json +87 -0
  94. package/src/field/field.css +707 -0
  95. package/src/field/field.tokens.json +58 -0
  96. package/src/field-group/field-group.css +226 -0
  97. package/src/field-group/field-group.tokens.json +33 -0
  98. package/src/filter-bar/filter-bar.css +1306 -0
  99. package/src/filter-bar/filter-bar.tokens.json +78 -0
  100. package/src/form/form.css +218 -0
  101. package/src/form/form.tokens.json +32 -0
  102. package/src/fullscreen/fullscreen.css +376 -0
  103. package/src/fullscreen/fullscreen.tokens.json +50 -0
  104. package/src/grid/grid.css +173 -0
  105. package/src/grid/grid.tokens.json +20 -0
  106. package/src/highlight/highlight.css +135 -0
  107. package/src/highlight/highlight.tokens.json +16 -0
  108. package/src/hover-card/hover-card.css +93 -0
  109. package/src/hover-card/hover-card.tokens.json +17 -0
  110. package/src/icon/icon.css +136 -0
  111. package/src/icon/icon.tokens.json +14 -0
  112. package/src/image/image.css +449 -0
  113. package/src/image/image.tokens.json +27 -0
  114. package/src/import-export-center/import-export-center.css +1175 -0
  115. package/src/import-export-center/import-export-center.tokens.json +84 -0
  116. package/src/inline/inline.css +149 -0
  117. package/src/inline/inline.tokens.json +14 -0
  118. package/src/inline-message/inline-message.css +396 -0
  119. package/src/inline-message/inline-message.tokens.json +19 -0
  120. package/src/kbd/kbd.css +490 -0
  121. package/src/kbd/kbd.tokens.json +40 -0
  122. package/src/link/link.css +237 -0
  123. package/src/link/link.tokens.json +25 -0
  124. package/src/list/list.css +240 -0
  125. package/src/list/list.tokens.json +42 -0
  126. package/src/list-item/list-item.css +937 -0
  127. package/src/list-item/list-item.tokens.json +114 -0
  128. package/src/listbox/listbox.css +674 -0
  129. package/src/listbox/listbox.tokens.json +72 -0
  130. package/src/loading-overlay/loading-overlay.css +730 -0
  131. package/src/loading-overlay/loading-overlay.tokens.json +48 -0
  132. package/src/markdown/markdown.css +168 -0
  133. package/src/markdown/markdown.tokens.json +18 -0
  134. package/src/menu/menu.css +817 -0
  135. package/src/menu/menu.tokens.json +78 -0
  136. package/src/menubar/menubar.css +170 -0
  137. package/src/menubar/menubar.tokens.json +32 -0
  138. package/src/message/message.css +1453 -0
  139. package/src/message/message.tokens.json +85 -0
  140. package/src/message-scroller/message-scroller.css +371 -0
  141. package/src/message-scroller/message-scroller.tokens.json +47 -0
  142. package/src/multi-select/multi-select.css +1427 -0
  143. package/src/multi-select/multi-select.tokens.json +114 -0
  144. package/src/navigation-menu/navigation-menu.css +1029 -0
  145. package/src/navigation-menu/navigation-menu.tokens.json +70 -0
  146. package/src/notification-center/notification-center.css +856 -0
  147. package/src/notification-center/notification-center.tokens.json +84 -0
  148. package/src/number-field/number-field.css +794 -0
  149. package/src/number-field/number-field.tokens.json +80 -0
  150. package/src/otp-input/otp-input.css +525 -0
  151. package/src/otp-input/otp-input.tokens.json +69 -0
  152. package/src/page/page.css +179 -0
  153. package/src/page/page.tokens.json +20 -0
  154. package/src/page-header/page-header.css +1181 -0
  155. package/src/page-header/page-header.tokens.json +71 -0
  156. package/src/pagination/pagination.css +500 -0
  157. package/src/pagination/pagination.tokens.json +56 -0
  158. package/src/popover/popover.css +526 -0
  159. package/src/popover/popover.tokens.json +60 -0
  160. package/src/progress-indicator/progress-indicator.css +1584 -0
  161. package/src/progress-indicator/progress-indicator.tokens.json +50 -0
  162. package/src/prompt-composer/prompt-composer.css +680 -0
  163. package/src/prompt-composer/prompt-composer.tokens.json +99 -0
  164. package/src/prose/prose.css +733 -0
  165. package/src/prose/prose.tokens.json +79 -0
  166. package/src/radio-group/radio-group.css +778 -0
  167. package/src/radio-group/radio-group.tokens.json +103 -0
  168. package/src/rating/rating.css +1071 -0
  169. package/src/rating/rating.tokens.json +88 -0
  170. package/src/result-state/result-state.css +980 -0
  171. package/src/result-state/result-state.tokens.json +63 -0
  172. package/src/runtime-properties.mjs +321 -0
  173. package/src/saved-views/saved-views.css +394 -0
  174. package/src/saved-views/saved-views.tokens.json +41 -0
  175. package/src/scroll-area/scroll-area.css +481 -0
  176. package/src/scroll-area/scroll-area.tokens.json +15 -0
  177. package/src/section/section.css +177 -0
  178. package/src/section/section.tokens.json +39 -0
  179. package/src/segmented-control/segmented-control.css +564 -0
  180. package/src/segmented-control/segmented-control.tokens.json +67 -0
  181. package/src/select/select.css +1593 -0
  182. package/src/select/select.tokens.json +110 -0
  183. package/src/side-navigation/side-navigation.css +1096 -0
  184. package/src/side-navigation/side-navigation.tokens.json +87 -0
  185. package/src/skeleton/skeleton.css +431 -0
  186. package/src/skeleton/skeleton.tokens.json +29 -0
  187. package/src/slider/slider.css +792 -0
  188. package/src/slider/slider.tokens.json +75 -0
  189. package/src/sparkline/sparkline.css +282 -0
  190. package/src/sparkline/sparkline.tokens.json +45 -0
  191. package/src/spinner/spinner.css +224 -0
  192. package/src/spinner/spinner.tokens.json +8 -0
  193. package/src/split-button/split-button.css +253 -0
  194. package/src/split-button/split-button.tokens.json +12 -0
  195. package/src/splitter/splitter.css +336 -0
  196. package/src/splitter/splitter.tokens.json +24 -0
  197. package/src/stack/stack.css +128 -0
  198. package/src/stack/stack.tokens.json +14 -0
  199. package/src/stat-card/stat-card.css +641 -0
  200. package/src/stat-card/stat-card.tokens.json +95 -0
  201. package/src/status-indicator/status-indicator.css +481 -0
  202. package/src/status-indicator/status-indicator.tokens.json +38 -0
  203. package/src/stepper/stepper.css +629 -0
  204. package/src/stepper/stepper.tokens.json +72 -0
  205. package/src/switch/switch.css +703 -0
  206. package/src/switch/switch.tokens.json +75 -0
  207. package/src/table/table.css +1482 -0
  208. package/src/table/table.tokens.json +69 -0
  209. package/src/table-of-contents/table-of-contents.css +533 -0
  210. package/src/table-of-contents/table-of-contents.tokens.json +53 -0
  211. package/src/tabs/tabs.css +998 -0
  212. package/src/tabs/tabs.tokens.json +82 -0
  213. package/src/tag/tag.css +768 -0
  214. package/src/tag/tag.tokens.json +85 -0
  215. package/src/tags-input/tags-input.css +757 -0
  216. package/src/tags-input/tags-input.tokens.json +84 -0
  217. package/src/text-field/text-field.css +900 -0
  218. package/src/text-field/text-field.tokens.json +87 -0
  219. package/src/textarea/textarea.css +365 -0
  220. package/src/textarea/textarea.tokens.json +59 -0
  221. package/src/time-field/time-field.css +719 -0
  222. package/src/time-field/time-field.tokens.json +86 -0
  223. package/src/time-picker/time-picker.css +665 -0
  224. package/src/time-picker/time-picker.tokens.json +66 -0
  225. package/src/time-range-picker/time-range-picker.css +1287 -0
  226. package/src/time-range-picker/time-range-picker.tokens.json +134 -0
  227. package/src/timeline/timeline.css +1596 -0
  228. package/src/timeline/timeline.tokens.json +96 -0
  229. package/src/toast/toast.css +943 -0
  230. package/src/toast/toast.tokens.json +90 -0
  231. package/src/toggle/toggle.css +290 -0
  232. package/src/toggle/toggle.tokens.json +54 -0
  233. package/src/toggle-group/toggle-group.css +463 -0
  234. package/src/toggle-group/toggle-group.tokens.json +54 -0
  235. package/src/toolbar/toolbar.css +434 -0
  236. package/src/toolbar/toolbar.tokens.json +49 -0
  237. package/src/tooltip/tooltip.css +368 -0
  238. package/src/tooltip/tooltip.tokens.json +39 -0
  239. package/src/top-navigation/top-navigation.css +1287 -0
  240. package/src/top-navigation/top-navigation.tokens.json +91 -0
  241. package/src/tour/tour.css +680 -0
  242. package/src/tour/tour.tokens.json +67 -0
  243. package/src/transfer/transfer.css +571 -0
  244. package/src/transfer/transfer.tokens.json +49 -0
  245. package/src/tree/tree.css +1000 -0
  246. package/src/tree/tree.tokens.json +80 -0
  247. package/src/typography/typography.css +211 -0
  248. package/src/typography/typography.tokens.json +31 -0
  249. package/src/upload/upload.css +1706 -0
  250. package/src/upload/upload.tokens.json +123 -0
  251. package/src/visually-hidden/visually-hidden.css +52 -0
  252. package/src/visually-hidden/visually-hidden.tokens.json +1 -0
  253. package/src/wizard/wizard.css +740 -0
  254. package/src/wizard/wizard.tokens.json +63 -0
@@ -0,0 +1,63 @@
1
+ [
2
+ "--slotted-border-strong",
3
+ "--slotted-border-subtle",
4
+ "--slotted-border-width-thin",
5
+ "--slotted-control-height-lg",
6
+ "--slotted-control-height-md",
7
+ "--slotted-control-height-sm",
8
+ "--slotted-control-icon-size-lg",
9
+ "--slotted-control-icon-size-md",
10
+ "--slotted-duration-long",
11
+ "--slotted-duration-medium",
12
+ "--slotted-duration-short",
13
+ "--slotted-easing-enter",
14
+ "--slotted-easing-exit",
15
+ "--slotted-focus-ring-color",
16
+ "--slotted-focus-ring-offset",
17
+ "--slotted-focus-ring-width",
18
+ "--slotted-font-family-heading",
19
+ "--slotted-font-family-sans",
20
+ "--slotted-font-size-3xl",
21
+ "--slotted-font-size-lg",
22
+ "--slotted-font-size-md",
23
+ "--slotted-font-size-sm",
24
+ "--slotted-font-size-xl",
25
+ "--slotted-font-size-xs",
26
+ "--slotted-font-weight-semibold",
27
+ "--slotted-line-height-3xl",
28
+ "--slotted-line-height-md",
29
+ "--slotted-line-height-sm",
30
+ "--slotted-line-height-xl",
31
+ "--slotted-radius-lg",
32
+ "--slotted-radius-sm",
33
+ "--slotted-result-state-actions-block-gap",
34
+ "--slotted-result-state-actions-gap",
35
+ "--slotted-result-state-column-gap",
36
+ "--slotted-result-state-description-font-size",
37
+ "--slotted-result-state-font-family",
38
+ "--slotted-result-state-media",
39
+ "--slotted-result-state-media-size",
40
+ "--slotted-result-state-padding-block",
41
+ "--slotted-result-state-padding-inline",
42
+ "--slotted-result-state-row-gap",
43
+ "--slotted-result-state-text-gap",
44
+ "--slotted-result-state-title-font-family",
45
+ "--slotted-result-state-title-font-size",
46
+ "--slotted-result-state-title-font-weight",
47
+ "--slotted-result-state-title-letter-spacing",
48
+ "--slotted-shadow-sm",
49
+ "--slotted-shadow-xs",
50
+ "--slotted-space-11",
51
+ "--slotted-space-12",
52
+ "--slotted-space-2",
53
+ "--slotted-space-3",
54
+ "--slotted-space-4",
55
+ "--slotted-space-5",
56
+ "--slotted-space-6",
57
+ "--slotted-space-8",
58
+ "--slotted-space-9",
59
+ "--slotted-surface-raised",
60
+ "--slotted-surface-sunken",
61
+ "--slotted-text",
62
+ "--slotted-text-muted"
63
+ ]
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Custom properties a stylesheet reads and no theme writes.
3
+ *
4
+ * `docs/build-briefing.md` records the decision under _Decisions already
5
+ * taken_: "A value a stylesheet needs and only script can measure is a custom
6
+ * property under the name that says so." The overlay infrastructure writes
7
+ * these from `packages/core` at runtime — where the anchor is, how much room is
8
+ * left, where the arrow ended up, how deep in the layer stack a layer sits.
9
+ *
10
+ * They are not design tokens. They are absent from
11
+ * `packages/theme/src/contract.json`, they have no foundation fallback because
12
+ * no foundation value could answer "where is the arrow", and a reference page
13
+ * that printed them under "Theme-owned decisions" would be telling a consumer
14
+ * to retune something no theme can reach.
15
+ *
16
+ * `tokens.test.mjs` subtracts them before comparing a stylesheet to its
17
+ * `tokens.json`, which is the whole reason this list is shared rather than
18
+ * inlined there: the next family that meets one should find the reason written.
19
+ */
20
+ export const RUNTIME_PROPERTY_PREFIXES = [
21
+ /** `packages/core/src/positioner` — the anchor's size, the space left, the transform origin, the arrow. */
22
+ '--slotted-positioner-',
23
+ /** `packages/core/src/dismissable-layer` — this layer's position in the single stack. */
24
+ '--slotted-layer-depth',
25
+ /**
26
+ * `packages/core/src/toast` — how far a message is from the front of the
27
+ * stack, how many are visible, how tall each one is and how much room the
28
+ * ones in front of it take, how long this one was given, whether the timers
29
+ * are running, and how far the pointer has taken a message it is dragging
30
+ * away.
31
+ *
32
+ * Two of them are the ones that look like something else and are not.
33
+ * `--slotted-toast-duration` looks like a motion token: it is the time *this
34
+ * message* was given, stated per message, which no theme can know, and the
35
+ * remaining-time bar reads it so the picture and the timer are one number.
36
+ * `--slotted-toast-height` looks like a size token: it is the height this
37
+ * message turned out to be, measured, and it is what lets a collapsed pile
38
+ * open into a readable column instead of snapping into one.
39
+ *
40
+ * They are named one by one rather than by a `--slotted-toast-` prefix,
41
+ * because the family also owns theme tokens under that prefix — its measure,
42
+ * its offset, its gap — and a prefix would file every one of them as a value
43
+ * no theme can retune.
44
+ */
45
+ '--slotted-toast-count',
46
+ '--slotted-toast-duration',
47
+ '--slotted-toast-front-height',
48
+ '--slotted-toast-height',
49
+ '--slotted-toast-index',
50
+ '--slotted-toast-play-state',
51
+ '--slotted-toast-stack-height',
52
+ '--slotted-toast-stack-offset',
53
+ '--slotted-toast-swipe-x',
54
+ '--slotted-toast-swipe-y',
55
+ /**
56
+ * `page-header` and `page` — the geometry of the chrome that stays while the
57
+ * page scrolls. `--slotted-page-header-collapse` is the measured height of
58
+ * the header area, which is the root's negative sticky offset: the first
59
+ * that many pixels leave the scrollport and the title area stays.
60
+ * `--slotted-page-sticky-top` is the height of everything that stays at the
61
+ * top, and `--slotted-page-sticky-bottom` the height of the footer, both
62
+ * written on the scroll container so a section's sticky header, a table's
63
+ * sticky column header and a consumer's own sticky element inside the page
64
+ * can stop under the chrome rather than behind it. No
65
+ * theme can know any of the three: they are what the header turned out to
66
+ * be, measured.
67
+ */
68
+ '--slotted-page-header-collapse',
69
+ '--slotted-page-sticky-top',
70
+ '--slotted-page-sticky-bottom',
71
+ /**
72
+ * `section` — the measured height of a sticky section's header, written on
73
+ * the section's root so the body can republish `--slotted-page-sticky-top`
74
+ * as page plus header for everything under it.
75
+ */
76
+ '--slotted-section-header-size',
77
+ /**
78
+ * `tree` — how deep in the hierarchy one node sits. The stylesheet multiplies
79
+ * it by the indent step to inset the row, and no theme can know it: it is a
80
+ * fact about the consumer's data, stated per node, in the same category as
81
+ * the measured values above rather than in the category of a value a theme
82
+ * retunes. The step itself is `--slotted-tree-indent`, which is a token and
83
+ * is in the contract.
84
+ *
85
+ * It is named on its own rather than by a `--slotted-tree-` prefix, because
86
+ * the family owns fifteen theme tokens under that prefix and a prefix would
87
+ * file every one of them as unreachable by a theme.
88
+ */
89
+ '--slotted-tree-depth',
90
+ /**
91
+ * `tree` — where one row sits on a windowed canvas, in pixels. It is written
92
+ * only on a row the window does not cover and the family renders anyway: the
93
+ * active node, and the anchor a range is measured from. The number is the
94
+ * product of a measured viewport and a scroll position, so no theme can hold
95
+ * it, and a row without it is a row in flow that does not read it.
96
+ */
97
+ '--slotted-tree-row-offset',
98
+ /**
99
+ * `segmented-control` — how many segments the track holds, and which of them
100
+ * is checked. The thumb is one column wide and moves by its own width times
101
+ * the index, so the two numbers are the whole of its geometry and no theme
102
+ * can hold either: they are facts about this consumer's options, stated per
103
+ * instance.
104
+ *
105
+ * They are the first runtime properties in the library that are not
106
+ * measured. An index and a count are known while the markup is being
107
+ * written, which is the point of them — Mantine and Ark both measure the
108
+ * checked node instead, and paint the thumb in the wrong place until
109
+ * hydration.
110
+ *
111
+ * Named one by one rather than by a `--slotted-segmented-control-` prefix,
112
+ * because the family owns theme tokens under that prefix — its inset, its
113
+ * radius, its grounds — and a prefix would file every one of them as a value
114
+ * no theme can retune.
115
+ */
116
+ '--slotted-segmented-control-count',
117
+ '--slotted-segmented-control-index',
118
+ /**
119
+ * `data-grid` — the geometry only the binding knows. The template is one
120
+ * track per visible column in the state's order, at the widths the reader
121
+ * left them; the column index places a cell in it explicitly, because with
122
+ * column virtualisation the cells that are not there would move the ones
123
+ * that are; the pin offset is the summed width of the pinned columns
124
+ * before this one; the level is how deep a group row sits; the drop
125
+ * offset is where the reorder indicator stands; the window start and total
126
+ * are the virtualiser's offset of the first mounted row and the height of
127
+ * every row; the leading width is the gutters' sum, where a row's pop-in
128
+ * starts. None of them is a value a theme can hold.
129
+ *
130
+ * Named one by one rather than by a `--slotted-data-grid-` prefix, because
131
+ * the family owns theme tokens under that prefix — its row height, its
132
+ * grounds, its radius — and a prefix would file every one of them as a
133
+ * value no theme can retune.
134
+ */
135
+ '--slotted-data-grid-template',
136
+ '--slotted-data-grid-column',
137
+ '--slotted-data-grid-pin-offset',
138
+ '--slotted-data-grid-level',
139
+ '--slotted-data-grid-drop-offset',
140
+ '--slotted-data-grid-drop-scroll',
141
+ '--slotted-data-grid-changed-duration',
142
+ '--slotted-data-grid-pinned-top-offset',
143
+ '--slotted-data-grid-pinned-bottom-offset',
144
+ '--slotted-data-grid-window-start',
145
+ '--slotted-data-grid-window-total',
146
+ /** The measured body row height, which the skeleton rows take while the rows load. */
147
+ '--slotted-data-grid-loader-row-size',
148
+ '--slotted-data-grid-leading',
149
+ /**
150
+ * `upload` — how many rows of the file list are shown before the rest is
151
+ * scrolled to. It is `maxRows`, stated per instance, and no theme can hold
152
+ * it: a form that takes one avatar and a page that takes a folder of four
153
+ * hundred invoices want different numbers from the same theme: it is a fact
154
+ * about this consumer's data rather than a value a theme retunes.
155
+ *
156
+ * `maxRows: 0` means no bound, and the binding says so by writing the file
157
+ * count rather than a second property: a cap that is the content's own
158
+ * height is a cap nothing reaches.
159
+ *
160
+ * Named on its own rather than by a `--slotted-upload-` prefix, because the
161
+ * family owns thirty-three theme tokens under that prefix and a prefix would
162
+ * file every one of them as unreachable by a theme.
163
+ */
164
+ '--slotted-upload-visible-rows',
165
+ /**
166
+ * `code-block` — four facts about the content, written by the binding: how
167
+ * many digits the last line number has, so the gutter is measured in
168
+ * characters; the leading whitespace of a line, so a wrapped continuation
169
+ * keeps the code's own indent; the line the block collapses after; and the
170
+ * line it scrolls past. No theme can know any of them. Named one by one
171
+ * rather than by a prefix, for the reason `tree-depth` is: the family owns
172
+ * theme tokens under `--slotted-code-block-`.
173
+ */
174
+ '--slotted-code-block-digits',
175
+ '--slotted-code-block-indent',
176
+ '--slotted-code-block-collapse',
177
+ '--slotted-code-block-max-lines',
178
+ /**
179
+ * `chart` — where the point the reader is on sits, in the engine's pixels,
180
+ * and the band of its category. The crosshair, the marker and the tooltip
181
+ * are the family's HTML drawn over the engine's drawing, and only the engine
182
+ * knows where a mark landed. Named one by one because the family owns theme
183
+ * tokens under `--slotted-chart-`.
184
+ */
185
+ '--slotted-chart-x',
186
+ '--slotted-chart-y',
187
+ '--slotted-chart-band-start',
188
+ '--slotted-chart-band-size',
189
+ '--slotted-chart-frame-start',
190
+ '--slotted-chart-frame-size',
191
+ /**
192
+ * `event-calendar` — where an event is drawn, computed by
193
+ * `@slotted/core/event-calendar` from the consumer's events: its lane in a
194
+ * row of days and how many days its bar covers; its minute and length in a
195
+ * column of hours, its column in a cluster of overlapping events and how many
196
+ * columns the cluster has; and, on the grid, how many days the grid draws and
197
+ * how many lanes each row reserves. They are facts about this consumer's data
198
+ * and this instance's `maxEvents`, which no theme can hold.
199
+ *
200
+ * Named one by one rather than by a prefix: the family owns theme tokens
201
+ * under `--slotted-event-calendar-`, and `--slotted-event-` would file them.
202
+ */
203
+ '--slotted-event-lane',
204
+ '--slotted-event-span',
205
+ '--slotted-event-start',
206
+ '--slotted-event-length',
207
+ '--slotted-event-column',
208
+ '--slotted-event-columns',
209
+ '--slotted-event-calendar-days',
210
+ '--slotted-event-calendar-lanes',
211
+ '--slotted-event-calendar-slot',
212
+ /**
213
+ * `tour` — the rectangle of the current step's target, in viewport pixels,
214
+ * read from `getBoundingClientRect()` and kept current while the page
215
+ * scrolls. It is a fact about the page the tour stands over.
216
+ */
217
+ '--slotted-tour-target-',
218
+ /**
219
+ * `observeKeyboardInset` in `@slotted/core/measure` — how much of the layout viewport the
220
+ * virtual keyboard covers, read from `visualViewport`. An open overlay layer
221
+ * writes it on its own root so what it holds lands above the keys. It is a
222
+ * fact about the device at this moment, which no theme can hold.
223
+ */
224
+ '--slotted-keyboard-inset',
225
+ /**
226
+ * `rating` — how much of one symbol of the display member is lit, from 0 to
227
+ * 1, written on each item by the binding from the value it reports. A 4.6 of
228
+ * five is four items at 1 and one at 0.6; the share is a fact about this
229
+ * instance's value, which no theme can hold. The input member derives the
230
+ * same share in its stylesheet from the checked radio and never writes it.
231
+ */
232
+ '--slotted-rating-fill',
233
+ /**
234
+ * `rating` — one level's share of all the ratings a summary counts, from 0
235
+ * to 1, written on the level's bar by the binding from the counts it is
236
+ * given.
237
+ */
238
+ '--slotted-rating-share',
239
+ /**
240
+ * `rating` — where the spectrum places the mean and the two ends of its 95%
241
+ * interval on the scale, from 1 to the maximum, written on the summary's
242
+ * root from `summariseRatings`.
243
+ */
244
+ '--slotted-rating-mean',
245
+ '--slotted-rating-low',
246
+ '--slotted-rating-high',
247
+ /**
248
+ * `message` — how many lines a bubble shows before it is clamped, written on
249
+ * the bubble by the binding from `maxLines`. It is a fact about this
250
+ * instance's content, stated per bubble, which no theme can hold.
251
+ */
252
+ '--slotted-message-max-lines',
253
+ /**
254
+ * `message-scroller` — the room the engine keeps below the last row so an
255
+ * anchored turn can stand at the top of the viewport while its reply is still
256
+ * short. It is the viewport's height less what follows the anchor, measured,
257
+ * and it shrinks to nothing as the reply grows.
258
+ */
259
+ '--slotted-message-scroller-room',
260
+ /**
261
+ * `cascader` — how deep a node sits under `layout="tree"`, counted from 0 at
262
+ * the roots, written on each node by the binding from the collection. The
263
+ * tree layout renders the visible nodes as one flat run with `aria-level`,
264
+ * so the indent is this number times `--slotted-cascader-indent`, the token.
265
+ * Named on its own for the reason `tree-depth` is.
266
+ */
267
+ '--slotted-cascader-depth',
268
+ /**
269
+ * `carousel` — how many slides one view holds, written on the root by the
270
+ * binding from `slidesPerView`, and how long the rotation waits on a page,
271
+ * written from `autoplay`. The first is read by the track sizing and the
272
+ * second by the fill of the current indicator, so the picture and the timer
273
+ * are one number. A consumer may still write the first in its own container
274
+ * query when it passes no prop; neither is a value a theme can hold.
275
+ */
276
+ '--slotted-carousel-slides-per-view',
277
+ '--slotted-carousel-autoplay-delay',
278
+ /**
279
+ * `carousel` — how far a drag has pulled the slides past an end, written on
280
+ * the viewport by `@slotted/core/carousel` frame by frame as a translate
281
+ * value, and sprung back to nothing on release. A scroller cannot draw past
282
+ * its ends, so the pull is the slides' own `translate`.
283
+ */
284
+ '--slotted-carousel-overscroll',
285
+ /**
286
+ * `color-picker` — the colour this instance holds, with and without its
287
+ * alpha, the hue it remembers when the colour has none, where the area's
288
+ * thumb stands (saturation and brightness, 0 to 1), how opaque the colour
289
+ * is (0 to 1), and the colour the panel opened with. Each is written on the
290
+ * root by the binding from the value `@slotted/core/color` parsed; a colour
291
+ * the reader picked is a fact about this instance, which no theme can hold.
292
+ */
293
+ '--slotted-color-picker-color',
294
+ '--slotted-color-picker-opaque',
295
+ '--slotted-color-picker-hue',
296
+ '--slotted-color-picker-x',
297
+ '--slotted-color-picker-y',
298
+ '--slotted-color-picker-alpha',
299
+ '--slotted-color-picker-previous',
300
+ '--slotted-color-picker-preset',
301
+ '--slotted-color-picker-contrast-with',
302
+ /**
303
+ * `navigation-menu` — the open panel's measured size, where the shared
304
+ * surface stands under the row (or beside the column), where the arrow
305
+ * points from, and how much room is left before the window's edge. Written
306
+ * on the root by `@slotted/core/navigation-menu` from the open content and
307
+ * its trigger; the family also owns theme tokens under the same prefix — its
308
+ * column size, its offset, its radius — so each is named one by one.
309
+ */
310
+ '--slotted-navigation-menu-viewport-inline-size',
311
+ '--slotted-navigation-menu-viewport-block-size',
312
+ '--slotted-navigation-menu-viewport-inline-start',
313
+ '--slotted-navigation-menu-viewport-block-start',
314
+ '--slotted-navigation-menu-arrow-offset',
315
+ '--slotted-navigation-menu-available-inline-size',
316
+ ];
317
+
318
+ /** Whether a custom property is written by script rather than by a theme. */
319
+ export function isRuntimeProperty(name) {
320
+ return RUNTIME_PROPERTY_PREFIXES.some((prefix) => name.startsWith(prefix));
321
+ }