@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,179 @@
1
+ @layer slotted.components {
2
+ /**
3
+ * The column of a screen: who scrolls, how wide the content is, where the
4
+ * footer stays, how much air the body has.
5
+ *
6
+ * main[data-ui=page]
7
+ * ├─ scroll ▸ page-header · body ▸ container ▸ …
8
+ * └─ footer ▸ container ▸ actions
9
+ *
10
+ * Two answers to "who scrolls", as one axis. Under `ancestor` the page is
11
+ * inside whatever scrolls — the document, a shell's content column — and
12
+ * is at least as tall as it, so the footer has a bottom to stick to. Under
13
+ * `self` the scroll part is the scroller, the page is exactly as tall as its
14
+ * parent lets it be, and the footer sits below the scroller in the flow.
15
+ */
16
+ [data-ui='page'] {
17
+ --_ground: var(--slotted-page-background-sunken, var(--slotted-surface-sunken, Canvas));
18
+ --_padding-block: var(--slotted-page-padding-block, var(--slotted-space-8, 1.5rem));
19
+ --_footer-ground: var(--slotted-page-footer-background, var(--slotted-surface, Canvas));
20
+ --_footer-rule: var(--slotted-page-footer-border, var(--slotted-border-subtle, ButtonBorder));
21
+ --_footer-padding-block: var(
22
+ --slotted-page-footer-padding-block,
23
+ var(--slotted-space-4, 0.5rem)
24
+ );
25
+ --_duration: var(--slotted-duration-medium);
26
+ --_easing: var(--slotted-easing-standard, cubic-bezier(0.2, 0, 0, 1));
27
+ /**
28
+ * The ground, stated where a descendant can read it: a section's sticky
29
+ * header paints it, so the rows passing under the header are covered.
30
+ */
31
+ --slotted-page-ground: var(--_ground);
32
+ /**
33
+ * The bridge to table. A table with `stickyTo="page"` stops its header
34
+ * under the page's fixed chrome and its summary above the footer, and the
35
+ * page is the only element that knows where either ends. The cost is
36
+ * recorded in the contract: a theme that sets the table's offset for the
37
+ * whole application loses it inside a page.
38
+ */
39
+ --slotted-table-sticky-offset: var(--slotted-page-sticky-top, 0px);
40
+ --slotted-table-sticky-offset-end: var(--slotted-page-sticky-bottom, 0px);
41
+
42
+ background-color: var(--_ground);
43
+ color: var(--slotted-text, CanvasText);
44
+ /**
45
+ * The page answers its own width, not the viewport's. The inline axis
46
+ * alone: the block axis is what `min-block-size`, `self` and `fill`
47
+ * decide, and containing it would size the page by nothing.
48
+ */
49
+ container: slotted-page / inline-size;
50
+ display: flex;
51
+ flex-direction: column;
52
+ font-family: var(--slotted-font-family-sans, ui-sans-serif, system-ui, sans-serif);
53
+ min-block-size: 100%;
54
+ min-inline-size: 0;
55
+ }
56
+
57
+ [data-ui='page'][data-ground='surface'] {
58
+ --_ground: var(--slotted-page-background-surface, var(--slotted-surface, Canvas));
59
+ }
60
+
61
+ [data-ui='page'] > [data-part='scroll'] {
62
+ display: flex;
63
+ flex: 1 0 auto;
64
+ flex-direction: column;
65
+ min-inline-size: 0;
66
+ /**
67
+ * Nothing in here anchors the scroll. The header's chrome changes height
68
+ * by a few pixels as it snaps and reveals, and scroll anchoring would move
69
+ * the scroll position by as much to keep the content still: a scroll event
70
+ * the reader did not make, which ended a reveal the instant it began.
71
+ */
72
+ overflow-anchor: none;
73
+ }
74
+
75
+ [data-ui='page'][data-scroll='self'] {
76
+ block-size: 100%;
77
+ min-block-size: 0;
78
+ }
79
+ [data-ui='page'][data-scroll='self'] > [data-part='scroll'] {
80
+ flex: 1 1 auto;
81
+ min-block-size: 0;
82
+ overflow: auto;
83
+ overscroll-behavior: contain;
84
+ }
85
+
86
+ /* ── The body ────────────────────────────────────────────────────────── */
87
+
88
+ [data-ui='page'] > [data-part='scroll'] > [data-part='body'] {
89
+ flex: 1 0 auto;
90
+ min-inline-size: 0;
91
+ padding-block: var(--_padding-block);
92
+ }
93
+
94
+ /**
95
+ * Filled: the body stops growing with its content and the container inside
96
+ * stretches to what is left, for a master–detail, a splitter or a canvas
97
+ * that scroll their own panes. No scroll outside it, so no collapse on
98
+ * scroll — the contract records the cost.
99
+ *
100
+ * From the compact size class up only. Below 600 pixels the page scrolls
101
+ * as any page does and the body grows with its content: on a phone the
102
+ * chrome above a filled list left its rows 155 of 667 pixels.
103
+ */
104
+ @container slotted-page (width >= 600px) {
105
+ [data-ui='page'][data-fill] > [data-part='scroll'] > [data-part='body'] {
106
+ display: flex;
107
+ flex: 1 1 auto;
108
+ flex-direction: column;
109
+ min-block-size: 0;
110
+ }
111
+ [data-ui='page'][data-fill] > [data-part='scroll'] > [data-part='body'] > * {
112
+ flex: 1 1 auto;
113
+ min-block-size: 0;
114
+ }
115
+ }
116
+
117
+ [data-ui='page'][data-loading] > [data-part='scroll'] > [data-part='body'] {
118
+ cursor: progress;
119
+ }
120
+
121
+ /* ── The footer ──────────────────────────────────────────────────────── */
122
+
123
+ /**
124
+ * In the flow and stuck to the bottom of the root, never fixed: it takes
125
+ * its own height, so the last line of content scrolls up to it rather than
126
+ * under it. It enters from below and leaves the same way; presence holds
127
+ * it through the exit.
128
+ */
129
+ [data-ui='page'] > [data-part='footer'] {
130
+ background-color: var(--_footer-ground);
131
+ border-block-start: var(--slotted-border-width-thin, 1px) solid var(--_footer-rule);
132
+ inset-block-end: 0;
133
+ min-inline-size: 0;
134
+ padding-block: var(--_footer-padding-block);
135
+ position: sticky;
136
+ transition:
137
+ translate var(--_duration) var(--_easing),
138
+ opacity var(--_duration) var(--_easing);
139
+ z-index: var(--slotted-z-index-sticky, 100);
140
+ }
141
+ [data-ui='page'][data-scroll='self'] > [data-part='footer'] {
142
+ position: static;
143
+ }
144
+ [data-ui='page'] > [data-part='footer'][data-status='entering'],
145
+ [data-ui='page'] > [data-part='footer'][data-status='exiting'] {
146
+ opacity: 0;
147
+ translate: 0 100%;
148
+ }
149
+
150
+ [data-ui='page'] > [data-part='footer'] > * > [data-part='actions'] {
151
+ align-items: center;
152
+ display: flex;
153
+ flex-wrap: wrap;
154
+ gap: var(--slotted-control-gap-md, 8px);
155
+ justify-content: flex-end;
156
+ min-inline-size: 0;
157
+ }
158
+
159
+ /* ── Compact ─────────────────────────────────────────────────────────── */
160
+
161
+ /**
162
+ * Below 600 pixels, the compact size class: the gutters of every container
163
+ * in the page stop at step 4 of the space scale. At the default inset,
164
+ * step 6, the two gutters took 32 of a 390-pixel phone's pixels; at step 4
165
+ * they take 16. The steps under 4 keep their own value.
166
+ */
167
+ @container slotted-page (width < 600px) {
168
+ [data-ui='page'] [data-ui='container'][data-inset='5'],
169
+ [data-ui='page'] [data-ui='container'][data-inset='6'],
170
+ [data-ui='page'] [data-ui='container'][data-inset='7'],
171
+ [data-ui='page'] [data-ui='container'][data-inset='8'],
172
+ [data-ui='page'] [data-ui='container'][data-inset='9'],
173
+ [data-ui='page'] [data-ui='container'][data-inset='10'],
174
+ [data-ui='page'] [data-ui='container'][data-inset='11'],
175
+ [data-ui='page'] [data-ui='container'][data-inset='12'] {
176
+ --_inset: var(--slotted-space-4, 0.5rem);
177
+ }
178
+ }
179
+ }
@@ -0,0 +1,20 @@
1
+ [
2
+ "--slotted-border-subtle",
3
+ "--slotted-border-width-thin",
4
+ "--slotted-control-gap-md",
5
+ "--slotted-duration-medium",
6
+ "--slotted-easing-standard",
7
+ "--slotted-font-family-sans",
8
+ "--slotted-page-background-sunken",
9
+ "--slotted-page-background-surface",
10
+ "--slotted-page-footer-background",
11
+ "--slotted-page-footer-border",
12
+ "--slotted-page-footer-padding-block",
13
+ "--slotted-page-padding-block",
14
+ "--slotted-space-4",
15
+ "--slotted-space-8",
16
+ "--slotted-surface",
17
+ "--slotted-surface-sunken",
18
+ "--slotted-text",
19
+ "--slotted-z-index-sticky"
20
+ ]