@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,88 @@
1
+ [
2
+ "--slotted-app-shell-aside-color",
3
+ "--slotted-app-shell-aside-extent",
4
+ "--slotted-app-shell-aside-size-lg",
5
+ "--slotted-app-shell-aside-size-md",
6
+ "--slotted-app-shell-aside-size-sm",
7
+ "--slotted-app-shell-aside-surface",
8
+ "--slotted-app-shell-banner-block-size",
9
+ "--slotted-app-shell-banner-color",
10
+ "--slotted-app-shell-banner-surface",
11
+ "--slotted-app-shell-border-color",
12
+ "--slotted-app-shell-brand-overflow",
13
+ "--slotted-app-shell-brand-wrap",
14
+ "--slotted-app-shell-canvas",
15
+ "--slotted-app-shell-color",
16
+ "--slotted-app-shell-elevation",
17
+ "--slotted-app-shell-footer-color",
18
+ "--slotted-app-shell-footer-surface",
19
+ "--slotted-app-shell-frame",
20
+ "--slotted-app-shell-frame-image",
21
+ "--slotted-app-shell-gutter",
22
+ "--slotted-app-shell-main-color",
23
+ "--slotted-app-shell-main-surface",
24
+ "--slotted-app-shell-nav-color",
25
+ "--slotted-app-shell-nav-overlay-size",
26
+ "--slotted-app-shell-nav-size-lg",
27
+ "--slotted-app-shell-nav-size-md",
28
+ "--slotted-app-shell-nav-size-sm",
29
+ "--slotted-app-shell-nav-surface",
30
+ "--slotted-app-shell-radius",
31
+ "--slotted-app-shell-rail-size",
32
+ "--slotted-app-shell-resizer-color",
33
+ "--slotted-app-shell-row-inset-size",
34
+ "--slotted-app-shell-row-mark-size",
35
+ "--slotted-app-shell-row-text-line-height",
36
+ "--slotted-app-shell-row-text-size",
37
+ "--slotted-app-shell-scrim",
38
+ "--slotted-app-shell-scrollbar-thumb-color",
39
+ "--slotted-app-shell-scrollbar-track-color",
40
+ "--slotted-app-shell-tone-surface",
41
+ "--slotted-border-strong",
42
+ "--slotted-border-subtle",
43
+ "--slotted-border-width-thick",
44
+ "--slotted-border-width-thin",
45
+ "--slotted-control-font-size-md",
46
+ "--slotted-control-font-size-sm",
47
+ "--slotted-control-gap-lg",
48
+ "--slotted-control-gap-md",
49
+ "--slotted-control-gap-sm",
50
+ "--slotted-control-height-lg",
51
+ "--slotted-control-height-md",
52
+ "--slotted-control-icon-size-md",
53
+ "--slotted-control-radius",
54
+ "--slotted-control-transition-duration",
55
+ "--slotted-control-transition-easing",
56
+ "--slotted-duration-medium",
57
+ "--slotted-easing-enter",
58
+ "--slotted-easing-exit",
59
+ "--slotted-easing-standard",
60
+ "--slotted-focus-ring-color",
61
+ "--slotted-focus-ring-offset",
62
+ "--slotted-focus-ring-width",
63
+ "--slotted-font-family-sans",
64
+ "--slotted-font-size-sm",
65
+ "--slotted-font-weight-medium",
66
+ "--slotted-font-weight-semibold",
67
+ "--slotted-line-height-sm",
68
+ "--slotted-radius-lg",
69
+ "--slotted-scrim",
70
+ "--slotted-shadow-lg",
71
+ "--slotted-shadow-md",
72
+ "--slotted-shadow-xs",
73
+ "--slotted-space-1",
74
+ "--slotted-space-2",
75
+ "--slotted-space-3",
76
+ "--slotted-space-4",
77
+ "--slotted-space-5",
78
+ "--slotted-space-6",
79
+ "--slotted-surface",
80
+ "--slotted-surface-sunken",
81
+ "--slotted-target-min",
82
+ "--slotted-text",
83
+ "--slotted-text-muted",
84
+ "--slotted-tone-secondary-subtle-active",
85
+ "--slotted-tone-secondary-subtle-hover",
86
+ "--slotted-z-index-overlay",
87
+ "--slotted-z-index-popover"
88
+ ]
@@ -0,0 +1,131 @@
1
+ @layer slotted.components {
2
+ /**
3
+ * ── The frame ──────────────────────────────────────────────────────────
4
+ *
5
+ * A box that is a stated proportion of its own width before anything is in
6
+ * it, so a picture, a map or an embedded player arrives into room already
7
+ * held for it and moves nothing below. The ratio is the consumer's
8
+ * decision: there is no default, and the DOM says which one was taken.
9
+ *
10
+ * Two attributes on every selector, always. The frame holds whatever the
11
+ * consumer put in it, and the pair is what stops a rule meant for the box
12
+ * from reaching the thing inside.
13
+ *
14
+ * The ratio is the platform's `aspect-ratio`, not the padding hack Radix
15
+ * and Chakra v2 use, and the difference is what happens to content taller
16
+ * than the box. The hack positions the child absolutely, so a longer
17
+ * translation or a caption that wraps leaves the box and lands on whatever
18
+ * comes next. A box with `aspect-ratio` keeps the automatic minimum
19
+ * css-sizing-4 §5.2.1 gives it — its own min-content height — so it holds
20
+ * the ratio while the content fits and grows when it does not. Nothing is
21
+ * clipped and nothing escapes: the frame reserves, and it never crops. The
22
+ * crop is `image`'s decision, taken with `fit`.
23
+ *
24
+ * A replaced child contributes nothing to that minimum: css-sizing-3 §5.2.1
25
+ * resolves a cyclic percentage on a replaced element against zero for the
26
+ * min-content contribution, so a 4000-pixel photograph at `block-size: 100%`
27
+ * does not grow the frame to 4000 pixels. Only content with a height of its
28
+ * own — text, a control, a card — can.
29
+ */
30
+ [data-ui='aspect-ratio'][data-part='root'] {
31
+ /**
32
+ * The proportion, as the public token. A named ratio writes it below; a
33
+ * number the consumer stated is written on the instance, as `w / h`, and
34
+ * the instance wins because a declaration on the element beats one from
35
+ * a stylesheet. `1 / 1` is the fallback for a frame that named nothing,
36
+ * which the bindings never produce: a square is the honest shape of a
37
+ * box nobody thought about.
38
+ */
39
+ aspect-ratio: var(--slotted-aspect-ratio, 1 / 1);
40
+ /**
41
+ * A grid of one cell rather than a block, so every child lands in the
42
+ * same place and is stretched to the frame. A child that has a height of
43
+ * its own keeps it and the frame grows around it; a second child stacks
44
+ * on the first, which is how a caption sits over a map without the
45
+ * consumer positioning anything. The row is `1fr` and not `minmax(0, 1fr)`:
46
+ * a track with a zero minimum would have no content minimum to grow from.
47
+ */
48
+ display: grid;
49
+ grid-template-columns: minmax(0, 1fr);
50
+ grid-template-rows: 1fr;
51
+ /* The width the container gives, and never more. */
52
+ max-inline-size: 100%;
53
+ min-inline-size: 0;
54
+ }
55
+
56
+ /* ── The five named ratios ────────────────────────────────────────────── */
57
+
58
+ /**
59
+ * Named for what they hold rather than for their numbers, so a product
60
+ * decides once that a thumbnail is `landscape` and a hero is `wide`, and
61
+ * the decision reads in the DOM. Written as the public token so a theme
62
+ * that disagrees about what `wide` means retunes it in one place.
63
+ */
64
+ [data-ui='aspect-ratio'][data-part='root'][data-ratio='square'] {
65
+ --slotted-aspect-ratio: 1 / 1;
66
+ }
67
+
68
+ [data-ui='aspect-ratio'][data-part='root'][data-ratio='landscape'] {
69
+ --slotted-aspect-ratio: 4 / 3;
70
+ }
71
+
72
+ [data-ui='aspect-ratio'][data-part='root'][data-ratio='portrait'] {
73
+ --slotted-aspect-ratio: 3 / 4;
74
+ }
75
+
76
+ [data-ui='aspect-ratio'][data-part='root'][data-ratio='video'] {
77
+ --slotted-aspect-ratio: 16 / 9;
78
+ }
79
+
80
+ [data-ui='aspect-ratio'][data-part='root'][data-ratio='wide'] {
81
+ --slotted-aspect-ratio: 21 / 9;
82
+ }
83
+
84
+ /*
85
+ * `custom` has no rule: the base rule already reads the token the binding
86
+ * wrote on the instance, and a rule here would only restate the fallback.
87
+ */
88
+
89
+ /* ── What is inside ───────────────────────────────────────────────────── */
90
+
91
+ /**
92
+ * Every child takes the one cell and stretches to it. `min-inline-size: 0`
93
+ * is what lets an embedded player narrower than its own `width` attribute
94
+ * shrink with the frame; the block minimum is left alone on purpose, so a
95
+ * child taller than the ratio still grows the box.
96
+ */
97
+ [data-ui='aspect-ratio'][data-part='root'] > * {
98
+ grid-area: 1 / 1;
99
+ min-inline-size: 0;
100
+ }
101
+
102
+ /**
103
+ * A replaced element does not stretch in a grid — its ratio makes `normal`
104
+ * behave as `start` — so it is sized to the cell explicitly, and told to
105
+ * fit rather than to fill. `contain` is the one value that neither crops
106
+ * nor distorts: the frame reserves, and what it holds is shown whole. A
107
+ * consumer who wants the picture to cover the frame is asking for a crop,
108
+ * and `image` is the family that decides that.
109
+ *
110
+ * `picture` is in the list so its `img` sees a definite box to be 100 %
111
+ * of; an `iframe` and a `canvas` take the size and have no `object-fit`.
112
+ *
113
+ * `min-block-size: 0` is what keeps the frame at its ratio around a
114
+ * photograph. A grid item's automatic minimum is content-based, and while
115
+ * the row is being sized the percentage height is treated as `auto`, so
116
+ * the item asked for its natural height and a 4:3 photograph grew a 16:9
117
+ * frame to 4:3 (measured in the first capture of the `media` scene). A
118
+ * replaced element has nothing to say about the frame's height; the text
119
+ * child above keeps its automatic minimum, and the growth rule with it.
120
+ */
121
+ [data-ui='aspect-ratio'][data-part='root'] > :is(img, video, canvas, svg, iframe, picture) {
122
+ block-size: 100%;
123
+ display: block;
124
+ inline-size: 100%;
125
+ min-block-size: 0;
126
+ }
127
+
128
+ [data-ui='aspect-ratio'][data-part='root'] > :is(img, video) {
129
+ object-fit: contain;
130
+ }
131
+ }
@@ -0,0 +1 @@
1
+ ["--slotted-aspect-ratio"]