@scattered-light/loomiere-mojave 0.6.0 → 0.7.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 (40) hide show
  1. package/dist/exports/AGENTS.md +24 -8
  2. package/dist/exports/catalog.json +21 -0
  3. package/dist/exports/chakra.js +333 -0
  4. package/dist/exports/design-system/README.md +23 -7
  5. package/dist/exports/design-system/components/Badge/README.md +35 -0
  6. package/dist/exports/design-system/components/Badge/preview.html +19 -0
  7. package/dist/exports/design-system/components/Collection/README.md +14 -0
  8. package/dist/exports/design-system/components/CollectionPagination/README.md +15 -0
  9. package/dist/exports/design-system/components/CollectionToolbar/README.md +24 -0
  10. package/dist/exports/design-system/components/DataList/README.md +39 -0
  11. package/dist/exports/design-system/components/DataList/preview.html +475 -0
  12. package/dist/exports/design-system/components/DataTable/README.md +41 -0
  13. package/dist/exports/design-system/components/DataTable/preview.html +475 -0
  14. package/dist/exports/design-system/components/DatePicker/README.md +55 -0
  15. package/dist/exports/design-system/components/DatePicker/preview.html +475 -0
  16. package/dist/exports/design-system/components/EditableList/README.md +33 -0
  17. package/dist/exports/design-system/components/EditableList/preview.html +475 -0
  18. package/dist/exports/design-system/components/EmptyState/README.md +60 -0
  19. package/dist/exports/design-system/components/EmptyState/preview.html +475 -0
  20. package/dist/exports/design-system/components/ListDetail/README.md +43 -0
  21. package/dist/exports/design-system/components/ListDetail/preview.html +475 -0
  22. package/dist/exports/design-system/components/MoneyField/README.md +52 -0
  23. package/dist/exports/design-system/components/MoneyField/preview.html +475 -0
  24. package/dist/exports/design-system/components/Splitter/README.md +42 -0
  25. package/dist/exports/design-system/components/Splitter/preview.html +475 -0
  26. package/dist/exports/design-system/components/Table/README.md +2 -1
  27. package/dist/exports/design-system/components/Table/preview.html +1 -1
  28. package/dist/exports/design-system/components/bundle.css +2377 -190
  29. package/dist/exports/design-system/components/bundle.js +7 -5
  30. package/dist/exports/design-system/components/index.d.ts +3 -21
  31. package/dist/exports/design-system/tokens.json +15 -0
  32. package/dist/exports/figma.json +1 -1
  33. package/dist/exports/mui.js +727 -0
  34. package/dist/exports/tailwind.css +36 -0
  35. package/dist/exports/tokens.dtcg.json +316 -2
  36. package/dist/tokens.css +111 -4
  37. package/dist/tokens.d.ts +93 -0
  38. package/dist/tokens.js +94 -1
  39. package/dist/tokens.json +572 -2
  40. package/package.json +2 -2
package/dist/tokens.css CHANGED
@@ -740,6 +740,7 @@
740
740
  --sl-a11y-focus-outline-width: 2px; /** Focus ring thickness. 2px is the WCAG 2.2 minimum that stays visible on every surface. */
741
741
  --sl-a11y-link-focus-outline-offset: 0.25em; /** Links sit inside text, so the offset scales with the font (em) instead of a fixed px. */
742
742
  --sl-a11y-link-focus-ring-radius: 0.125em; /** A slight em-based rounding so inline focus rings hug the text. */
743
+ --sl-a11y-min-target: 24px; /** Smallest target for a fine pointer (WCAG 2.5.8). A mouse can hit 24px; a finger still needs min-touch-target. The splitter handle uses this so the grab area does not cover the scrollbar beside it. */
743
744
  --sl-a11y-min-touch-target: 44px; /** Smallest tap area for any control (WCAG 2.5.5 and Apple HIG both use 44px). */
744
745
  --sl-check-dot-scale: 0.4; /** A radio's dot as a share of the circle, so it scales with the size. */
745
746
  --sl-check-opacity-disabled: 0.5; /** A disabled box fades as a whole; its label turns to disabled text. */
@@ -779,11 +780,17 @@
779
780
  --sl-button-opacity-disabled: 0.5; /** A disabled button fades as a whole, keeping its shape so the layout doesn't jump. */
780
781
  --sl-drawer-popup-size: min(420px, 90vw); /** Width of a side drawer. A bottom or top drawer sizes to its content up to max-size. */
781
782
  --sl-drawer-popup-max-size: 85vh; /** Tallest a bottom or top drawer gets, leaving the page visible above it. */
783
+ --sl-list-detail-split-min-width: 720px; /** Side by side once this element, not the window, is this wide. Dryden used 1100px of the window. A container needs less: a list around 320px and a form around 400px still read at 720px. Narrower, the detail becomes a drawer or a page. */
784
+ --sl-list-detail-detail-default-size: 45%; /** The detail's share when it opens. The list fills the rest, about 55%, which is the split Dryden started from. */
785
+ --sl-list-detail-detail-min-size: 35%; /** The detail cannot be dragged narrower than this, so the form stays readable. */
786
+ --sl-list-detail-detail-max-size: 65%; /** The detail cannot cover more than this, so the list stays usable. Dryden kept the detail between 35% and 65%. */
782
787
  --sl-navigation-menu-popup-min-width: 400px; /** Narrowest a navigation panel gets on wider screens, and the widest a single column of links grows. */
783
788
  --sl-navigation-menu-column-width: 12rem; /** Width of each column in a two-column link list. */
784
789
  --sl-preview-card-popup-min-width: 300px; /** Narrowest a preview card gets, so a short title still has room for its image. */
785
790
  --sl-preview-card-popup-max-width: 450px; /** Widest a preview card gets, so its description keeps a comfortable line length. */
786
791
  --sl-slider-vertical-height: 200px; /** Default length of a vertical slider. */
792
+ --sl-splitter-key-step: 5%; /** One arrow press moves the handle by 5% of the splitter. Dryden used 5%: a nudge you can see, not a jump. */
793
+ --sl-splitter-key-step-large: 10%; /** The Shift step. Twice the arrow step, so a few presses cross the panel without holding the key. */
787
794
  --sl-switch-track-width: 48px; /** Wide enough for the thumb plus the ON/OFF text. */
788
795
  --sl-switch-track-width-sm: 44px;
789
796
  --sl-switch-track-width-lg: 68px;
@@ -1444,6 +1451,11 @@
1444
1451
  --sl-bar-group-gap: var(--sl-space-2); /** Space between groups in a toolbar, wider than inside a group. */
1445
1452
  --sl-bar-separator-length: var(--sl-space-6); /** Divider height, shorter than the controls so the groups still read as one strip. */
1446
1453
  --sl-bar-separator-spacing: var(--sl-space-1); /** Extra space either side of a divider. */
1454
+ --sl-calendar-day-size: var(--sl-space-10); /** A day cell on a pointer. space.10 keeps seven columns inside a phone; touch layouts raise the cell to the minimum touch target in CSS. */
1455
+ --sl-calendar-grid-gap: var(--sl-space-0-5); /** Space between week rows. Days in a week share an edge, so the range band reads as one shape. */
1456
+ --sl-calendar-month-gap: var(--sl-space-4); /** Space between months shown side by side, the same step as panel padding so the two columns line up. */
1457
+ --sl-calendar-header-gap: var(--sl-space-2); /** Space between the month title and the weekday row. */
1458
+ --sl-calendar-panel-padding: var(--sl-space-4); /** Padding inside the popup. The shared popup padding is one step and is too tight for a calendar. */
1447
1459
  --sl-overlay-base: var(--sl-color-black); /** Base color for scrims behind modals. Components apply their own opacity. */
1448
1460
  --sl-disclosure-animation-duration: var(--sl-duration-normal); /** How long a panel takes to open or close, and the chevron to turn. */
1449
1461
  --sl-disclosure-animation-easing: var(--sl-easing-in-out); /** Panels grow and shrink in place, so they ease both ways. */
@@ -1454,6 +1466,22 @@
1454
1466
  --sl-elevation-sm: var(--sl-shadow-sm);
1455
1467
  --sl-elevation-xl: var(--sl-shadow-xl);
1456
1468
  --sl-elevation-xs: var(--sl-shadow-xs);
1469
+ --sl-empty-padding-block-compact: var(--sl-space-6); /** 24px above and below a compact empty state. The same room a popup already gives a plain 'No results' line, so the two stay one height. */
1470
+ --sl-empty-padding-block-standard: var(--sl-space-10); /** 40px. A pane or a section needs more air than a table row, or the block looks stuck to the content around it. */
1471
+ --sl-empty-padding-block-spacious: var(--sl-space-16); /** 64px. A page with nothing else on it. The extra space above keeps the block off the top of the viewport. */
1472
+ --sl-empty-padding-inline-compact: var(--sl-space-4); /** 16px. Enough that a compact row doesn't touch the cell or popup edge. */
1473
+ --sl-empty-padding-inline-standard: var(--sl-space-6); /** 24px. A pane can be wide; the inline padding keeps the block off the sides before the description's own cap does. */
1474
+ --sl-empty-padding-inline-spacious: var(--sl-space-8); /** 32px. A full page, a step wider than a pane. */
1475
+ --sl-empty-gap-compact: var(--sl-space-3); /** 12px between the icon, the text and the actions in a table row or a popup. Tight, because the row is short. */
1476
+ --sl-empty-gap-standard: var(--sl-space-4); /** 16px. The stack in a pane: media, then words, then actions. */
1477
+ --sl-empty-gap-spacious: var(--sl-space-6); /** 24px. A page-sized stack needs the steps to separate, or the circle sits on the title. */
1478
+ --sl-empty-text-gap-compact: var(--sl-space-1); /** 4px between the title and the description in a compact row. They read as one message. */
1479
+ --sl-empty-text-gap-standard: var(--sl-space-1); /** 4px. Same as compact: the description belongs to the title, so it stays close. */
1480
+ --sl-empty-text-gap-spacious: var(--sl-space-2); /** 8px. The page title is larger, so the description steps down a little further. */
1481
+ --sl-empty-media-size-standard: var(--sl-space-12); /** 48px circle around a magnify icon (20px). The icon needs a field, or it reads as a bullet. */
1482
+ --sl-empty-media-size-spacious: var(--sl-space-16); /** 64px circle around a maximize icon (24px). A page can carry a larger mark. Compact has no circle: the icon is icon-size.condense on its own. */
1483
+ --sl-empty-description-max-width: var(--sl-measure-narrow); /** 45ch. A description is one sentence. Past a caption's measure it stretches across a wide pane and stops being a sentence. */
1484
+ --sl-empty-actions-gap: var(--sl-space-2); /** 8px between actions, the same gap a control uses between its icon and its label. The first action is the main one; the rest sit beside it. */
1457
1485
  --sl-field-gap: var(--sl-space-1-5); /** Between a field's label, control and messages. */
1458
1486
  --sl-field-label-spacing: var(--sl-space-1); /** Extra room under the label, so it reads as belonging to the control below it. */
1459
1487
  --sl-field-message-spacing: var(--sl-space-1); /** Extra room above a description or error, so it reads as a note on the control. */
@@ -1496,7 +1524,6 @@
1496
1524
  --sl-popup-separator-spacing: var(--sl-space-1); /** Space above and below a separator. */
1497
1525
  --sl-popup-group-label-padding-top: var(--sl-space-2); /** Space above a group label, so it sits closer to its own rows than to the group before. */
1498
1526
  --sl-popup-group-label-padding-bottom: var(--sl-space-1); /** Space between a group label and its first row. */
1499
- --sl-popup-empty-padding-block: var(--sl-space-6); /** Room around a 'No results' message, so an empty list doesn't collapse to a sliver. */
1500
1527
  --sl-control-height-lg: var(--sl-space-13);
1501
1528
  --sl-control-height-md: var(--sl-space-11);
1502
1529
  --sl-control-height-sm: var(--sl-space-9);
@@ -1807,11 +1834,35 @@
1807
1834
  --sl-avatar-initials-font-size-md: var(--sl-font-size-md); /** Sized to the avatar, not a text style: initials have to fit inside the circle at each size. The rest of the type is title-base. */
1808
1835
  --sl-avatar-initials-font-size-lg: var(--sl-font-size-lg); /** Sized to the avatar, not a text style: initials have to fit inside the circle at each size. The rest of the type is title-base. */
1809
1836
  --sl-avatar-initials-font-size-xl: var(--sl-font-size-2xl); /** Sized to the avatar, not a text style: initials have to fit inside the circle at each size. The rest of the type is title-base. */
1837
+ --sl-badge-height-minimize: var(--sl-space-5); /** 20px. The smallest pill that still holds trigger-minimize. */
1838
+ --sl-badge-height-condense: var(--sl-space-6); /** 24px, the default. Sits in a line of text and in dense rows. */
1839
+ --sl-badge-height-base: var(--sl-space-7); /** 28px, the small control height, for a badge beside base text. */
1840
+ --sl-badge-padding-inline-minimize: var(--sl-space-1); /** 4px. Tighter than a control so a short label stays a pill, not a button. */
1841
+ --sl-badge-padding-inline-condense: var(--sl-space-1-5); /** 6px, the default. */
1842
+ --sl-badge-padding-inline-base: var(--sl-space-2); /** 8px, still inside the small control's inline padding. */
1843
+ --sl-badge-gap-minimize: var(--sl-space-1); /** 4px between a dot or icon and the label at the smallest size. */
1844
+ --sl-badge-gap-condense: var(--sl-space-1); /** 4px, the default. The same gap as the smallest control. */
1845
+ --sl-badge-gap-base: var(--sl-space-1-5); /** 6px, a step wider once the label is base-sized. */
1846
+ --sl-badge-dot-minimize: var(--sl-space-1-5); /** 6px status dot. Smaller than icon-size-minimize so it reads as a mark, not an icon. */
1847
+ --sl-badge-dot-condense: var(--sl-space-2); /** 8px, the default. */
1848
+ --sl-badge-dot-base: var(--sl-space-2); /** 8px. The base badge is taller, but the dot stays a mark. */
1849
+ --sl-collection-tree-indent: var(--sl-space-4); /** How far each deeper level steps in, so a child sits under its parent's text. */
1850
+ --sl-collection-list-row-padding-block: var(--sl-space-3); /** Vertical padding of a list row. The row is not a fixed height, because a second line and an extra slot have to fit. */
1851
+ --sl-collection-list-row-gap: var(--sl-space-2); /** Between the checkbox, the text, the amount and the actions in a list row. */
1852
+ --sl-collection-toolbar-gap: var(--sl-space-2); /** Between the search, the filters and the actions. */
1853
+ --sl-collection-narrow-width: var(--sl-space-96); /** Below this, a table with narrow="list" becomes a list, and the toolbar's search takes the full width. A 360px pane is under it. */
1854
+ --sl-collection-editable-list-stack-width: var(--sl-space-80); /** Below this, editable rows stack and show their own labels. 320px matches. */
1855
+ --sl-collection-selection-column-width: var(--sl-space-10); /** The checkbox column. Wide enough for the control, no wider, so the data keeps the room. */
1810
1856
  --sl-drawer-handle-width: var(--sl-space-10); /** Grab bar length. */
1811
1857
  --sl-drawer-handle-height: var(--sl-space-1); /** Grab bar thickness. */
1858
+ --sl-list-detail-header-gap: var(--sl-space-3); /** Space between the title, the actions and Close. */
1859
+ --sl-list-detail-header-padding: var(--sl-space-4); /** Padding inside the detail header. One step under a dialog, because this is a pane, not a modal. */
1860
+ --sl-money-field-picker-min-inline-size: var(--sl-space-56); /** The currency list shows a code, a name and a symbol, so the popup is wider than the code trigger inside the field. */
1812
1861
  --sl-popover-text-max-width: var(--sl-measure-narrow); /** Keeps the title and description to a readable line length. The popup itself has no fixed cap, so wider content such as a calendar or a form fits; it stops at the space Base UI reports beside the trigger. */
1813
1862
  --sl-popover-popup-min-width: var(--sl-popup-min-width); /** Narrow enough for a short note, wide enough that a title doesn't wrap word by word. */
1814
1863
  --sl-slider-thumb-size: var(--sl-space-5); /** Knob diameter, big enough to grab with a finger on a 4px track. */
1864
+ --sl-splitter-handle-hit-size: var(--sl-a11y-min-touch-target); /** The part a finger grabs. The line stays one stroke. A fine pointer uses a11y.min-target (24px) instead, so the grab area does not cover the panel's scrollbar. Coarse pointers keep this 44px. */
1865
+ --sl-splitter-grip-size: var(--sl-space-1); /** 4px. The diameter of one grip dot. Small enough to sit on the hairline without becoming a second control. */
1815
1866
  --sl-switch-track-text-font-size: var(--sl-font-size-xs); /** Sized to the track, not a text style: the ON/OFF label has to fit inside the switch at each size. The rest of the label uses condense-subtitle-label. */
1816
1867
  --sl-switch-track-text-font-size-sm: var(--sl-font-size-xxs); /** Sized to the track, not a text style: the ON/OFF label has to fit inside the switch at each size. The rest of the label uses condense-subtitle-label. */
1817
1868
  --sl-switch-track-text-font-size-lg: var(--sl-font-size-sm); /** Sized to the track, not a text style: the ON/OFF label has to fit inside the switch at each size. The rest of the label uses condense-subtitle-label. */
@@ -1845,6 +1896,7 @@
1845
1896
  --sl-a11y-focus-ring-radius: var(--sl-radius-focus); /** Rounds the focus ring to match the small control radius. */
1846
1897
  --sl-bar-border-width: var(--sl-stroke-default); /** Strip edge thickness. */
1847
1898
  --sl-bar-radius: var(--sl-radius-surface); /** Strip corners. Controls inside a toggle group take radius.item, so the inner corners follow the outer ones. */
1899
+ --sl-calendar-day-radius: var(--sl-radius-pill); /** Selected days are circles. The pill radius is the same full radius badges and switches use. */
1848
1900
  --sl-check-border-width: var(--sl-stroke-default); /** Edge thickness. */
1849
1901
  --sl-check-radius: var(--sl-radius-box); /** Checkbox corners. Radios are always round. */
1850
1902
  --sl-check-transition: var(--sl-transition-input); /** Changes at the same speed as a field. */
@@ -1877,6 +1929,7 @@
1877
1929
  --sl-popup-radius: var(--sl-radius-surface); /** Corners of a free-floating popup. */
1878
1930
  --sl-popup-radius-field: var(--sl-radius-control); /** Corners of a list that drops from a field, matching the field so the two read as one control. */
1879
1931
  --sl-popup-shadow: var(--sl-elevation-lg); /** Lifts the popup above the page. */
1932
+ --sl-popup-empty-padding-block: var(--sl-empty-padding-block-compact); /** Room around a plain 'No results' line. The same padding as a compact empty state, so a sentence and an EmptyState in that slot take the same space. An EmptyState drops this padding and uses its own. */
1880
1933
  --sl-table-row-height: var(--sl-control-height-sm); /** Row height: the small control height, so a checkbox, input or button in a cell fits without growing the row. */
1881
1934
  --sl-table-header-height: var(--sl-control-height-md); /** Header row height: the regular control height, a little taller than rows so the header reads as its own band. */
1882
1935
  --sl-table-cell-padding-inline: var(--sl-control-padding-inline-sm); /** Space either side of cell text, matching small controls. */
@@ -2060,7 +2113,13 @@
2060
2113
  --sl-status-level-error-quiet-border: var(--sl-scope-error-border); /** quiet in error: outline in error */
2061
2114
  --sl-status-level-error-quiet-border-hover: var(--sl-scope-error-solid-hover); /** quiet in error: outline in error */
2062
2115
  --sl-button-radius: var(--sl-radius-pill); /** Buttons are pills, so they read as actions and never as fields or cards. */
2116
+ --sl-collection-row-height-sm: var(--sl-control-height-sm); /** The dense row, the same height the plain table already uses, so a checkbox fits. */
2117
+ --sl-collection-row-height-md: var(--sl-control-height-md); /** A roomier row when the collection is the page rather than a dense register. */
2118
+ --sl-collection-header-height-sm: var(--sl-control-height-md); /** The dense header, a step above the dense row, matching today's table header. */
2119
+ --sl-collection-header-height-md: var(--sl-control-height-lg); /** The header for the roomier row. */
2120
+ --sl-splitter-handle-size: var(--sl-stroke-default); /** The visible separator. One stroke, the same hairline as Separator, so a splitter reads as a divider you can grab. */
2063
2121
  --sl-focus-shadow-3px-error: 0 0 0 3px var(--sl-status-error); /** Focus halo for a field with an error. */
2122
+ --sl-calendar-day-color: var(--sl-text-primary); /** A day in the month being shown. */
2064
2123
  --sl-border-accent: var(--sl-scope-accent-border); /** Borders that signal selection or the active item. */
2065
2124
  --sl-border-default: var(--sl-scope-chrome-divider); /** Everyday dividers and control outlines. Darkens under prefers-contrast: more. */
2066
2125
  --sl-border-strong: var(--sl-scope-chrome-border-strong); /** Borders that identify a control, such as inputs and unchecked checkboxes. 3:1 against the canvas, as WCAG asks for control boundaries. */
@@ -2160,6 +2219,12 @@
2160
2219
  --sl-bar-background: var(--sl-surface-tray); /** Strip fill. */
2161
2220
  --sl-bar-border-color: var(--sl-border-default); /** Strip edge. */
2162
2221
  --sl-bar-separator-color: var(--sl-border-default); /** Divider between groups. */
2222
+ --sl-calendar-day-color-outside: var(--sl-text-tertiary); /** A day from the previous or next month, still selectable, drawn back so it does not compete with this month. */
2223
+ --sl-calendar-day-color-disabled: var(--sl-text-disabled); /** A day outside the allowed period, or one a length rule rejects. It stays in the tab order so the reason can be read. */
2224
+ --sl-calendar-range-background: var(--sl-interactive-tint-active); /** The band between the start and end of a period. Same tint as a selected list item, quieter than the start and end circles. */
2225
+ --sl-calendar-range-color: var(--sl-text-on-tint-strong); /** Day numbers that sit on the range band. The on-tint text color is the one that stays readable on interactive.tint-active. */
2226
+ --sl-calendar-today-ring: var(--sl-border-accent); /** An inset ring on today, including when today is also selected, so today is never only a color of the number. */
2227
+ --sl-calendar-weekday-color: var(--sl-text-tertiary); /** Weekday initials and week numbers are labels, not choices. */
2163
2228
  --sl-check-border-color: var(--sl-border-control); /** Empty box edge. Passes 3:1 so the box can be found before it's ticked. */
2164
2229
  --sl-check-border-color-hover: var(--sl-border-control-hover); /** Edge under the pointer. */
2165
2230
  --sl-check-background-checked: var(--sl-interactive-default); /** Ticked box fill, the brand's interactive color. */
@@ -2202,6 +2267,7 @@
2202
2267
  --sl-field-color-disabled: var(--sl-text-disabled); /** The value in a disabled field. */
2203
2268
  --sl-field-placeholder-color: var(--sl-text-tertiary); /** Hint text before anything is typed. */
2204
2269
  --sl-field-shadow-focus-error: var(--sl-focus-shadow-3px-error); /** Halo while typing in an invalid field. */
2270
+ --sl-field-affix-color: var(--sl-text-secondary); /** A prefix or suffix drawn inside the field (a currency symbol, a unit). Muted so it reads as part of the control, not as the value. */
2205
2271
  --sl-gauge-track-color: var(--sl-fill-track); /** The empty part of the bar. Every palette's fill reads 3:1 on it, so the amount is clear in both themes. */
2206
2272
  --sl-gauge-value-color: var(--sl-text-secondary); /** The number, quieter than its label. */
2207
2273
  --sl-icon-button-color: var(--sl-text-tertiary); /** Quiet at rest so it doesn't compete with the content. */
@@ -2224,12 +2290,15 @@
2224
2290
  --sl-table-header-background-hover: var(--sl-fill-subtle); /** A header cell under the pointer, showing it can be clicked to sort. */
2225
2291
  --sl-table-border-color: var(--sl-border-default); /** The grid's outer edge and the line under the header. */
2226
2292
  --sl-table-row-border-color: var(--sl-border-subtle); /** Hairlines between rows, quiet so the data leads. */
2293
+ --sl-table-row-current: var(--sl-surface-tray); /** The open row beside a detail pane. The tray, a step off the page, so secondary text on it still passes AA in dark. A selected row keeps its own tint, so a checked row and the row you are reading can both show. */
2294
+ --sl-table-group-header-background: var(--sl-surface-tray); /** A group header. The tray, like the column header, so a group reads as chrome rather than another data row. */
2227
2295
  --sl-table-column-hover: var(--sl-fill-subtle); /** Column under the pointer, when column hover is on. Neutral so it never reads as a selection. */
2228
2296
  --sl-table-range-background: var(--sl-interactive-tint); /** Cells inside a dragged range selection. */
2229
2297
  --sl-emphasis-bold-fg: var(--sl-scope-accent-on-solid); /** bold in default: solid in accent (primary) */
2230
2298
  --sl-status-level-default-bold-fg: var(--sl-scope-accent-on-solid); /** bold in default: solid in accent (primary) */
2231
2299
  --sl-drawer-handle-color: var(--sl-border-strong); /** The grab bar on bottom drawers. Strong border so it reads as something to drag. */
2232
2300
  --sl-shadow-outline: 0 0 0 3px color-mix(in oklab, var(--sl-focus-ring) 60%, transparent); /** Focus halo for controls that use box-shadow instead of outline: the focus ring color at 60% opacity, so it follows the accent and the theme. Becomes currentColor under prefers-contrast: more. */
2301
+ --sl-calendar-day-background-hover: var(--sl-item-background-hover); /** The same hover tint as a list item, so a day feels like a choice in a list. */
2233
2302
  --sl-check-mark-color: var(--sl-text-on-primary); /** Check mark, dash or dot on a ticked fill. */
2234
2303
  --sl-text-on-accent: var(--sl-text-on-primary); /** Alias for text placed on any accent fill. */
2235
2304
  --sl-content-kbd-text: var(--sl-text-on-inverse); /** Text on keycaps. */
@@ -5476,7 +5545,8 @@
5476
5545
  [data-emphasis='bold'],
5477
5546
  .Button[data-variant='solid']:not([data-emphasis]),
5478
5547
  .Button:not([data-variant]):not([data-emphasis]),
5479
- .AvatarRoot:not([data-emphasis]) {
5548
+ .AvatarRoot:not([data-emphasis]),
5549
+ .CalendarDay[data-selected]:not([data-emphasis]) {
5480
5550
  --sl-e-bg: var(--sl-scope-solid);
5481
5551
  --sl-e-bg-hover: var(--sl-scope-solid-hover);
5482
5552
  --sl-e-bg-active: var(--sl-scope-solid-active);
@@ -5496,7 +5566,9 @@
5496
5566
  --sl-e-border-hover: var(--sl-scope-solid-hover);
5497
5567
  }
5498
5568
 
5499
- [data-emphasis='subtle'] {
5569
+ [data-emphasis='subtle'],
5570
+ .Badge:not([data-emphasis]),
5571
+ .EmptyStateMedia:not([data-emphasis]) {
5500
5572
  --sl-e-bg: var(--sl-scope-soft);
5501
5573
  --sl-e-bg-hover: var(--sl-scope-soft-hover);
5502
5574
  --sl-e-bg-active: var(--sl-scope-soft-active);
@@ -5505,7 +5577,9 @@
5505
5577
  --sl-e-border-hover: var(--sl-scope-soft-hover);
5506
5578
  }
5507
5579
 
5508
- [data-emphasis='subtle']:not([data-color], [data-status], [data-status] *, .Toast[data-type], .Toast[data-type] *) {
5580
+ [data-emphasis='subtle']:not([data-color], [data-status], [data-status] *, .Toast[data-type], .Toast[data-type] *),
5581
+ .Badge:not([data-emphasis]):not([data-color], [data-status], [data-status] *, .Toast[data-type], .Toast[data-type] *),
5582
+ .EmptyStateMedia:not([data-emphasis]):not([data-color], [data-color] *, [data-status], [data-status] *, .Toast[data-type], .Toast[data-type] *) {
5509
5583
  --sl-scope-solid: var(--sl-scope-chrome-solid);
5510
5584
  --sl-scope-solid-hover: var(--sl-scope-chrome-solid-hover);
5511
5585
  --sl-scope-solid-active: var(--sl-scope-chrome-solid-active);
@@ -5644,6 +5718,13 @@
5644
5718
  --sl-bar-background: var(--sl-surface-tray);
5645
5719
  --sl-bar-border-color: var(--sl-border-default);
5646
5720
  --sl-bar-separator-color: var(--sl-border-default);
5721
+ --sl-calendar-day-color: var(--sl-text-primary);
5722
+ --sl-calendar-day-color-outside: var(--sl-text-tertiary);
5723
+ --sl-calendar-day-color-disabled: var(--sl-text-disabled);
5724
+ --sl-calendar-range-background: var(--sl-interactive-tint-active);
5725
+ --sl-calendar-range-color: var(--sl-text-on-tint-strong);
5726
+ --sl-calendar-today-ring: var(--sl-border-accent);
5727
+ --sl-calendar-weekday-color: var(--sl-text-tertiary);
5647
5728
  --sl-check-border-color: var(--sl-border-control);
5648
5729
  --sl-check-border-color-hover: var(--sl-border-control-hover);
5649
5730
  --sl-check-background-checked: var(--sl-interactive-default);
@@ -5672,6 +5753,7 @@
5672
5753
  --sl-field-color-disabled: var(--sl-text-disabled);
5673
5754
  --sl-field-placeholder-color: var(--sl-text-tertiary);
5674
5755
  --sl-field-shadow-focus: var(--sl-focus-shadow-3px-primary);
5756
+ --sl-field-affix-color: var(--sl-text-secondary);
5675
5757
  --sl-gauge-track-color: var(--sl-fill-track);
5676
5758
  --sl-gauge-label-color: var(--sl-text-primary);
5677
5759
  --sl-gauge-value-color: var(--sl-text-secondary);
@@ -5705,10 +5787,13 @@
5705
5787
  --sl-table-row-border-color: var(--sl-border-subtle);
5706
5788
  --sl-table-row-hover: var(--sl-item-background-hover);
5707
5789
  --sl-table-row-selected: var(--sl-item-background-selected);
5790
+ --sl-table-row-current: var(--sl-surface-tray);
5791
+ --sl-table-group-header-background: var(--sl-surface-tray);
5708
5792
  --sl-table-column-hover: var(--sl-fill-subtle);
5709
5793
  --sl-table-range-background: var(--sl-interactive-tint);
5710
5794
  --sl-table-range-border: var(--sl-focus-ring);
5711
5795
  --sl-drawer-handle-color: var(--sl-border-strong);
5796
+ --sl-calendar-day-background-hover: var(--sl-item-background-hover);
5712
5797
  --sl-check-background: var(--sl-field-background);
5713
5798
  }
5714
5799
 
@@ -5779,6 +5864,13 @@
5779
5864
  --sl-bar-background: var(--sl-surface-tray);
5780
5865
  --sl-bar-border-color: var(--sl-border-default);
5781
5866
  --sl-bar-separator-color: var(--sl-border-default);
5867
+ --sl-calendar-day-color: var(--sl-text-primary);
5868
+ --sl-calendar-day-color-outside: var(--sl-text-tertiary);
5869
+ --sl-calendar-day-color-disabled: var(--sl-text-disabled);
5870
+ --sl-calendar-range-background: var(--sl-interactive-tint-active);
5871
+ --sl-calendar-range-color: var(--sl-text-on-tint-strong);
5872
+ --sl-calendar-today-ring: var(--sl-border-accent);
5873
+ --sl-calendar-weekday-color: var(--sl-text-tertiary);
5782
5874
  --sl-check-border-color: var(--sl-border-control);
5783
5875
  --sl-check-border-color-hover: var(--sl-border-control-hover);
5784
5876
  --sl-check-background-checked: var(--sl-interactive-default);
@@ -5807,6 +5899,7 @@
5807
5899
  --sl-field-color-disabled: var(--sl-text-disabled);
5808
5900
  --sl-field-placeholder-color: var(--sl-text-tertiary);
5809
5901
  --sl-field-shadow-focus: var(--sl-focus-shadow-3px-primary);
5902
+ --sl-field-affix-color: var(--sl-text-secondary);
5810
5903
  --sl-gauge-track-color: var(--sl-fill-track);
5811
5904
  --sl-gauge-label-color: var(--sl-text-primary);
5812
5905
  --sl-gauge-value-color: var(--sl-text-secondary);
@@ -5840,10 +5933,13 @@
5840
5933
  --sl-table-row-border-color: var(--sl-border-subtle);
5841
5934
  --sl-table-row-hover: var(--sl-item-background-hover);
5842
5935
  --sl-table-row-selected: var(--sl-item-background-selected);
5936
+ --sl-table-row-current: var(--sl-surface-tray);
5937
+ --sl-table-group-header-background: var(--sl-surface-tray);
5843
5938
  --sl-table-column-hover: var(--sl-fill-subtle);
5844
5939
  --sl-table-range-background: var(--sl-interactive-tint);
5845
5940
  --sl-table-range-border: var(--sl-focus-ring);
5846
5941
  --sl-drawer-handle-color: var(--sl-border-strong);
5942
+ --sl-calendar-day-background-hover: var(--sl-item-background-hover);
5847
5943
  --sl-check-background: var(--sl-field-background);
5848
5944
  }
5849
5945
 
@@ -5914,6 +6010,13 @@
5914
6010
  --sl-bar-background: var(--sl-surface-tray);
5915
6011
  --sl-bar-border-color: var(--sl-border-default);
5916
6012
  --sl-bar-separator-color: var(--sl-border-default);
6013
+ --sl-calendar-day-color: var(--sl-text-primary);
6014
+ --sl-calendar-day-color-outside: var(--sl-text-tertiary);
6015
+ --sl-calendar-day-color-disabled: var(--sl-text-disabled);
6016
+ --sl-calendar-range-background: var(--sl-interactive-tint-active);
6017
+ --sl-calendar-range-color: var(--sl-text-on-tint-strong);
6018
+ --sl-calendar-today-ring: var(--sl-border-accent);
6019
+ --sl-calendar-weekday-color: var(--sl-text-tertiary);
5917
6020
  --sl-check-border-color: var(--sl-border-control);
5918
6021
  --sl-check-border-color-hover: var(--sl-border-control-hover);
5919
6022
  --sl-check-background-checked: var(--sl-interactive-default);
@@ -5942,6 +6045,7 @@
5942
6045
  --sl-field-color-disabled: var(--sl-text-disabled);
5943
6046
  --sl-field-placeholder-color: var(--sl-text-tertiary);
5944
6047
  --sl-field-shadow-focus: var(--sl-focus-shadow-3px-primary);
6048
+ --sl-field-affix-color: var(--sl-text-secondary);
5945
6049
  --sl-gauge-track-color: var(--sl-fill-track);
5946
6050
  --sl-gauge-label-color: var(--sl-text-primary);
5947
6051
  --sl-gauge-value-color: var(--sl-text-secondary);
@@ -5975,10 +6079,13 @@
5975
6079
  --sl-table-row-border-color: var(--sl-border-subtle);
5976
6080
  --sl-table-row-hover: var(--sl-item-background-hover);
5977
6081
  --sl-table-row-selected: var(--sl-item-background-selected);
6082
+ --sl-table-row-current: var(--sl-surface-tray);
6083
+ --sl-table-group-header-background: var(--sl-surface-tray);
5978
6084
  --sl-table-column-hover: var(--sl-fill-subtle);
5979
6085
  --sl-table-range-background: var(--sl-interactive-tint);
5980
6086
  --sl-table-range-border: var(--sl-focus-ring);
5981
6087
  --sl-drawer-handle-color: var(--sl-border-strong);
6088
+ --sl-calendar-day-background-hover: var(--sl-item-background-hover);
5982
6089
  --sl-check-background: var(--sl-field-background);
5983
6090
  }
5984
6091
  }
package/dist/tokens.d.ts CHANGED
@@ -1637,6 +1637,7 @@ declare const tokens: {
1637
1637
  readonly "focus-ring-radius": string;
1638
1638
  readonly "link-focus-outline-offset": string;
1639
1639
  readonly "link-focus-ring-radius": string;
1640
+ readonly "min-target": string;
1640
1641
  readonly "min-touch-target": string;
1641
1642
  };
1642
1643
  readonly "focus": {
@@ -1663,6 +1664,22 @@ declare const tokens: {
1663
1664
  readonly "separator-length": string;
1664
1665
  readonly "separator-spacing": string;
1665
1666
  };
1667
+ readonly "calendar": {
1668
+ readonly "day-size": string;
1669
+ readonly "day-radius": string;
1670
+ readonly "day-color": string;
1671
+ readonly "day-color-outside": string;
1672
+ readonly "day-color-disabled": string;
1673
+ readonly "day-background-hover": string;
1674
+ readonly "range-background": string;
1675
+ readonly "range-color": string;
1676
+ readonly "today-ring": string;
1677
+ readonly "weekday-color": string;
1678
+ readonly "grid-gap": string;
1679
+ readonly "month-gap": string;
1680
+ readonly "header-gap": string;
1681
+ readonly "panel-padding": string;
1682
+ };
1666
1683
  readonly "check": {
1667
1684
  readonly "background": string;
1668
1685
  readonly "border-color": string;
@@ -1792,6 +1809,34 @@ declare const tokens: {
1792
1809
  readonly "xl": string;
1793
1810
  readonly "xs": string;
1794
1811
  };
1812
+ readonly "empty": {
1813
+ readonly "padding-block": {
1814
+ readonly "compact": string;
1815
+ readonly "standard": string;
1816
+ readonly "spacious": string;
1817
+ };
1818
+ readonly "padding-inline": {
1819
+ readonly "compact": string;
1820
+ readonly "standard": string;
1821
+ readonly "spacious": string;
1822
+ };
1823
+ readonly "gap": {
1824
+ readonly "compact": string;
1825
+ readonly "standard": string;
1826
+ readonly "spacious": string;
1827
+ };
1828
+ readonly "text-gap": {
1829
+ readonly "compact": string;
1830
+ readonly "standard": string;
1831
+ readonly "spacious": string;
1832
+ };
1833
+ readonly "media-size": {
1834
+ readonly "standard": string;
1835
+ readonly "spacious": string;
1836
+ };
1837
+ readonly "description-max-width": string;
1838
+ readonly "actions-gap": string;
1839
+ };
1795
1840
  readonly "field": {
1796
1841
  readonly "background": string;
1797
1842
  readonly "background-disabled": string;
@@ -1811,6 +1856,7 @@ declare const tokens: {
1811
1856
  readonly "label-spacing": string;
1812
1857
  readonly "message-spacing": string;
1813
1858
  readonly "opacity-disabled": string;
1859
+ readonly "affix-color": string;
1814
1860
  };
1815
1861
  readonly "gauge": {
1816
1862
  readonly "track-color": string;
@@ -1961,6 +2007,8 @@ declare const tokens: {
1961
2007
  readonly "row-border-color": string;
1962
2008
  readonly "row-hover": string;
1963
2009
  readonly "row-selected": string;
2010
+ readonly "row-current": string;
2011
+ readonly "group-header-background": string;
1964
2012
  readonly "column-hover": string;
1965
2013
  readonly "range-background": string;
1966
2014
  readonly "range-border": string;
@@ -2650,10 +2698,37 @@ declare const tokens: {
2650
2698
  readonly "initials-font-size-lg": string;
2651
2699
  readonly "initials-font-size-xl": string;
2652
2700
  };
2701
+ readonly "badge": {
2702
+ readonly "height-minimize": string;
2703
+ readonly "height-condense": string;
2704
+ readonly "height-base": string;
2705
+ readonly "padding-inline-minimize": string;
2706
+ readonly "padding-inline-condense": string;
2707
+ readonly "padding-inline-base": string;
2708
+ readonly "gap-minimize": string;
2709
+ readonly "gap-condense": string;
2710
+ readonly "gap-base": string;
2711
+ readonly "dot-minimize": string;
2712
+ readonly "dot-condense": string;
2713
+ readonly "dot-base": string;
2714
+ };
2653
2715
  readonly "button": {
2654
2716
  readonly "radius": string;
2655
2717
  readonly "opacity-disabled": string;
2656
2718
  };
2719
+ readonly "collection": {
2720
+ readonly "row-height-sm": string;
2721
+ readonly "row-height-md": string;
2722
+ readonly "header-height-sm": string;
2723
+ readonly "header-height-md": string;
2724
+ readonly "tree-indent": string;
2725
+ readonly "list-row-padding-block": string;
2726
+ readonly "list-row-gap": string;
2727
+ readonly "toolbar-gap": string;
2728
+ readonly "narrow-width": string;
2729
+ readonly "editable-list-stack-width": string;
2730
+ readonly "selection-column-width": string;
2731
+ };
2657
2732
  readonly "drawer": {
2658
2733
  readonly "popup-size": string;
2659
2734
  readonly "popup-max-size": string;
@@ -2661,6 +2736,17 @@ declare const tokens: {
2661
2736
  readonly "handle-width": string;
2662
2737
  readonly "handle-height": string;
2663
2738
  };
2739
+ readonly "list-detail": {
2740
+ readonly "split-min-width": string;
2741
+ readonly "detail-default-size": string;
2742
+ readonly "detail-min-size": string;
2743
+ readonly "detail-max-size": string;
2744
+ readonly "header-gap": string;
2745
+ readonly "header-padding": string;
2746
+ };
2747
+ readonly "money-field": {
2748
+ readonly "picker-min-inline-size": string;
2749
+ };
2664
2750
  readonly "navigation-menu": {
2665
2751
  readonly "popup-min-width": string;
2666
2752
  readonly "column-width": string;
@@ -2677,6 +2763,13 @@ declare const tokens: {
2677
2763
  readonly "thumb-size": string;
2678
2764
  readonly "vertical-height": string;
2679
2765
  };
2766
+ readonly "splitter": {
2767
+ readonly "handle-size": string;
2768
+ readonly "handle-hit-size": string;
2769
+ readonly "grip-size": string;
2770
+ readonly "key-step": string;
2771
+ readonly "key-step-large": string;
2772
+ };
2680
2773
  readonly "switch": {
2681
2774
  readonly "track-width": string;
2682
2775
  readonly "track-width-sm": string;
package/dist/tokens.js CHANGED
@@ -1637,6 +1637,7 @@ const tokens = {
1637
1637
  "focus-ring-radius": "0.125rem",
1638
1638
  "link-focus-outline-offset": "0.25em",
1639
1639
  "link-focus-ring-radius": "0.125em",
1640
+ "min-target": "24px",
1640
1641
  "min-touch-target": "44px"
1641
1642
  },
1642
1643
  "focus": {
@@ -1663,6 +1664,22 @@ const tokens = {
1663
1664
  "separator-length": "1.5rem",
1664
1665
  "separator-spacing": "0.25rem"
1665
1666
  },
1667
+ "calendar": {
1668
+ "day-size": "2.5rem",
1669
+ "day-radius": "9999px",
1670
+ "day-color": "#221928",
1671
+ "day-color-outside": "#667169",
1672
+ "day-color-disabled": "#bcccc1",
1673
+ "day-background-hover": "#f4e7ff",
1674
+ "range-background": "#e6c6ff",
1675
+ "range-color": "#371e4a",
1676
+ "today-ring": "#8838c4",
1677
+ "weekday-color": "#667169",
1678
+ "grid-gap": "0.125rem",
1679
+ "month-gap": "1rem",
1680
+ "header-gap": "0.5rem",
1681
+ "panel-padding": "1rem"
1682
+ },
1666
1683
  "check": {
1667
1684
  "background": "#ffffff",
1668
1685
  "border-color": "#7c8980",
@@ -1792,6 +1809,34 @@ const tokens = {
1792
1809
  "xl": "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",
1793
1810
  "xs": "0 0 0 1px rgba(0, 0, 0, 0.05)"
1794
1811
  },
1812
+ "empty": {
1813
+ "padding-block": {
1814
+ "compact": "1.5rem",
1815
+ "standard": "2.5rem",
1816
+ "spacious": "4rem"
1817
+ },
1818
+ "padding-inline": {
1819
+ "compact": "1rem",
1820
+ "standard": "1.5rem",
1821
+ "spacious": "2rem"
1822
+ },
1823
+ "gap": {
1824
+ "compact": "0.75rem",
1825
+ "standard": "1rem",
1826
+ "spacious": "1.5rem"
1827
+ },
1828
+ "text-gap": {
1829
+ "compact": "0.25rem",
1830
+ "standard": "0.25rem",
1831
+ "spacious": "0.5rem"
1832
+ },
1833
+ "media-size": {
1834
+ "standard": "3rem",
1835
+ "spacious": "4rem"
1836
+ },
1837
+ "description-max-width": "45ch",
1838
+ "actions-gap": "0.5rem"
1839
+ },
1795
1840
  "field": {
1796
1841
  "background": "#ffffff",
1797
1842
  "background-disabled": "#f6f9f6",
@@ -1810,7 +1855,8 @@ const tokens = {
1810
1855
  "gap": "0.375rem",
1811
1856
  "label-spacing": "0.25rem",
1812
1857
  "message-spacing": "0.25rem",
1813
- "opacity-disabled": "0.6"
1858
+ "opacity-disabled": "0.6",
1859
+ "affix-color": "#4f5852"
1814
1860
  },
1815
1861
  "gauge": {
1816
1862
  "track-color": "#eff3ee",
@@ -1961,6 +2007,8 @@ const tokens = {
1961
2007
  "row-border-color": "#eff3ee",
1962
2008
  "row-hover": "#f4e7ff",
1963
2009
  "row-selected": "#e6c6ff",
2010
+ "row-current": "#f8fbf9",
2011
+ "group-header-background": "#f8fbf9",
1964
2012
  "column-hover": "#eff3ee",
1965
2013
  "range-background": "#fdfaff",
1966
2014
  "range-border": "#8838c4",
@@ -2650,10 +2698,37 @@ const tokens = {
2650
2698
  "initials-font-size-lg": "clamp(1rem, 0.9333rem + 0.3333vw, 1.2rem)",
2651
2699
  "initials-font-size-xl": "clamp(1.44rem, 1.344rem + 0.48vw, 1.728rem)"
2652
2700
  },
2701
+ "badge": {
2702
+ "height-minimize": "1.25rem",
2703
+ "height-condense": "1.5rem",
2704
+ "height-base": "1.75rem",
2705
+ "padding-inline-minimize": "0.25rem",
2706
+ "padding-inline-condense": "0.375rem",
2707
+ "padding-inline-base": "0.5rem",
2708
+ "gap-minimize": "0.25rem",
2709
+ "gap-condense": "0.25rem",
2710
+ "gap-base": "0.375rem",
2711
+ "dot-minimize": "0.375rem",
2712
+ "dot-condense": "0.5rem",
2713
+ "dot-base": "0.5rem"
2714
+ },
2653
2715
  "button": {
2654
2716
  "radius": "9999px",
2655
2717
  "opacity-disabled": "0.5"
2656
2718
  },
2719
+ "collection": {
2720
+ "row-height-sm": "2.25rem",
2721
+ "row-height-md": "2.75rem",
2722
+ "header-height-sm": "2.75rem",
2723
+ "header-height-md": "3.25rem",
2724
+ "tree-indent": "1rem",
2725
+ "list-row-padding-block": "0.75rem",
2726
+ "list-row-gap": "0.5rem",
2727
+ "toolbar-gap": "0.5rem",
2728
+ "narrow-width": "24rem",
2729
+ "editable-list-stack-width": "20rem",
2730
+ "selection-column-width": "2.5rem"
2731
+ },
2657
2732
  "drawer": {
2658
2733
  "popup-size": "min(420px, 90vw)",
2659
2734
  "popup-max-size": "85vh",
@@ -2661,6 +2736,17 @@ const tokens = {
2661
2736
  "handle-width": "2.5rem",
2662
2737
  "handle-height": "0.25rem"
2663
2738
  },
2739
+ "list-detail": {
2740
+ "split-min-width": "720px",
2741
+ "detail-default-size": "45%",
2742
+ "detail-min-size": "35%",
2743
+ "detail-max-size": "65%",
2744
+ "header-gap": "0.75rem",
2745
+ "header-padding": "1rem"
2746
+ },
2747
+ "money-field": {
2748
+ "picker-min-inline-size": "14rem"
2749
+ },
2664
2750
  "navigation-menu": {
2665
2751
  "popup-min-width": "400px",
2666
2752
  "column-width": "12rem"
@@ -2677,6 +2763,13 @@ const tokens = {
2677
2763
  "thumb-size": "1.25rem",
2678
2764
  "vertical-height": "200px"
2679
2765
  },
2766
+ "splitter": {
2767
+ "handle-size": "1px",
2768
+ "handle-hit-size": "44px",
2769
+ "grip-size": "0.25rem",
2770
+ "key-step": "5%",
2771
+ "key-step-large": "10%"
2772
+ },
2680
2773
  "switch": {
2681
2774
  "track-width": "48px",
2682
2775
  "track-width-sm": "44px",