@slotted/angular 0.1.0-beta.2 → 0.1.0-beta.4

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 (150) hide show
  1. package/docs/app-shell.json +1 -1
  2. package/docs/button-group.json +1 -0
  3. package/docs/button-group.md +1 -1
  4. package/docs/button.json +45 -11
  5. package/docs/button.md +10 -6
  6. package/docs/calendar.json +7 -0
  7. package/docs/calendar.md +1 -0
  8. package/docs/chart.json +7 -0
  9. package/docs/chart.md +1 -0
  10. package/docs/currency-field.json +32 -1
  11. package/docs/currency-field.md +4 -1
  12. package/docs/date-field.json +8 -1
  13. package/docs/date-field.md +2 -1
  14. package/docs/date-picker.examples.md +36 -0
  15. package/docs/date-picker.json +20 -5
  16. package/docs/date-picker.md +5 -4
  17. package/docs/dialog.examples.md +20 -0
  18. package/docs/dialog.json +14 -2
  19. package/docs/dialog.md +1 -1
  20. package/docs/guidelines/composition.md +10 -0
  21. package/docs/guidelines/index.md +2 -0
  22. package/docs/guidelines/list-pages.md +12 -1
  23. package/docs/list.json +19 -1
  24. package/docs/list.md +3 -1
  25. package/docs/page.json +1 -0
  26. package/docs/page.md +1 -0
  27. package/docs/popover.json +1 -1
  28. package/docs/segmented-control.json +29 -1
  29. package/docs/segmented-control.md +17 -1
  30. package/docs/skills/compose-screen/SKILL.md +7 -0
  31. package/docs/skills/theme-app/SKILL.md +5 -0
  32. package/docs/split-button.json +1 -0
  33. package/docs/split-button.md +1 -1
  34. package/docs/stat-card.json +1 -0
  35. package/docs/stat-card.md +1 -1
  36. package/docs/table.examples.md +1 -1
  37. package/docs/table.json +83 -1
  38. package/docs/table.md +12 -1
  39. package/docs/text-field.json +1 -1
  40. package/docs/text-field.md +1 -1
  41. package/docs/toggle-group.json +14 -3
  42. package/docs/toggle-group.md +3 -3
  43. package/docs/toggle.json +12 -3
  44. package/docs/toggle.md +3 -3
  45. package/docs/tokens.md +25 -1
  46. package/docs/tour.json +1 -1
  47. package/fesm2022/slotted-angular-app-shell.mjs +48 -16
  48. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-button-group.mjs +4 -4
  50. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-button.mjs +51 -19
  52. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  53. package/fesm2022/slotted-angular-calendar.mjs +158 -33
  54. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  55. package/fesm2022/slotted-angular-cascader.mjs +1 -1
  56. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  57. package/fesm2022/slotted-angular-chart.mjs +41 -20
  58. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  59. package/fesm2022/slotted-angular-column-manager.mjs +1 -1
  60. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  61. package/fesm2022/slotted-angular-combobox.mjs +25 -4
  62. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  63. package/fesm2022/slotted-angular-currency-field.mjs +59 -8
  64. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  65. package/fesm2022/slotted-angular-dashboard-grid.mjs +1 -1
  66. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  67. package/fesm2022/slotted-angular-data-grid.mjs +4 -4
  68. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-data-list.mjs +2 -2
  70. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-date-field.mjs +35 -12
  72. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-date-picker.mjs +91 -27
  74. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-date-range-picker.mjs +1 -1
  76. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-datetime-picker.mjs +1 -1
  78. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1 -1
  80. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-dialog.mjs +4 -4
  82. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-event-calendar.mjs +1 -1
  84. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-filter-bar.mjs +9 -9
  86. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
  88. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-list.mjs +28 -17
  90. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-markdown.mjs +1 -1
  92. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-multi-select.mjs +24 -3
  94. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-notification-center.mjs +1 -1
  96. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-page.mjs +20 -1
  98. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-saved-views.mjs +1 -1
  100. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
  102. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-split-button.mjs +4 -4
  104. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  105. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  106. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  107. package/fesm2022/slotted-angular-table.mjs +107 -9
  108. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  109. package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
  110. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  111. package/fesm2022/slotted-angular-toggle.mjs +2 -2
  112. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  113. package/fesm2022/slotted-angular-tour.mjs +1 -1
  114. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-transfer.mjs +1 -1
  116. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-wizard.mjs +1 -1
  118. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  119. package/package.json +3 -3
  120. package/types/slotted-angular-app-shell.d.ts +6 -0
  121. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  122. package/types/slotted-angular-button-group.d.ts +1 -1
  123. package/types/slotted-angular-button.d.ts +33 -13
  124. package/types/slotted-angular-button.d.ts.map +1 -1
  125. package/types/slotted-angular-calendar.d.ts +28 -2
  126. package/types/slotted-angular-calendar.d.ts.map +1 -1
  127. package/types/slotted-angular-chart.d.ts +9 -0
  128. package/types/slotted-angular-chart.d.ts.map +1 -1
  129. package/types/slotted-angular-combobox.d.ts +4 -0
  130. package/types/slotted-angular-combobox.d.ts.map +1 -1
  131. package/types/slotted-angular-currency-field.d.ts +25 -3
  132. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  133. package/types/slotted-angular-date-field.d.ts +11 -1
  134. package/types/slotted-angular-date-field.d.ts.map +1 -1
  135. package/types/slotted-angular-date-picker.d.ts +38 -11
  136. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  137. package/types/slotted-angular-list.d.ts +42 -27
  138. package/types/slotted-angular-list.d.ts.map +1 -1
  139. package/types/slotted-angular-multi-select.d.ts +4 -0
  140. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  141. package/types/slotted-angular-page.d.ts.map +1 -1
  142. package/types/slotted-angular-segmented-control.d.ts +15 -2
  143. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  144. package/types/slotted-angular-split-button.d.ts +2 -2
  145. package/types/slotted-angular-table.d.ts +59 -5
  146. package/types/slotted-angular-table.d.ts.map +1 -1
  147. package/types/slotted-angular-toggle-group.d.ts +8 -2
  148. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  149. package/types/slotted-angular-toggle.d.ts +1 -1
  150. package/types/slotted-angular-toggle.d.ts.map +1 -1
package/docs/table.json CHANGED
@@ -12,6 +12,10 @@
12
12
  "ruled",
13
13
  "framed"
14
14
  ],
15
+ "edges": [
16
+ "inset",
17
+ "flush"
18
+ ],
15
19
  "striped": [
16
20
  true,
17
21
  false
@@ -71,6 +75,7 @@
71
75
  "nativeElement": "div",
72
76
  "defaults": {
73
77
  "variant": "ruled",
78
+ "edges": "inset",
74
79
  "striped": false,
75
80
  "stickyHeader": false,
76
81
  "stickyTo": "scroll",
@@ -107,6 +112,7 @@
107
112
  "active",
108
113
  "focus-visible",
109
114
  "selected",
115
+ "current",
110
116
  "expanded",
111
117
  "disabled",
112
118
  "loading"
@@ -139,6 +145,11 @@
139
145
  "selection",
140
146
  "expander",
141
147
  "detail",
148
+ "group-row",
149
+ "group-header",
150
+ "group-content",
151
+ "group-start",
152
+ "group-end",
142
153
  "empty",
143
154
  "loader",
144
155
  "footer"
@@ -321,6 +332,36 @@
321
332
  "required": false,
322
333
  "purpose": "The open row detail, one cell spanning every column. Control flow in the template keeps a closed one out of the DOM, which a host element cannot do for itself."
323
334
  },
335
+ {
336
+ "part": "group-row",
337
+ "element": "tr[slTableGroupRow]",
338
+ "required": false,
339
+ "purpose": "The band that opens a group of rows: a day of a ledger with its net at the end. One header cell spans every column, and sticky holds the band under the header while its rows scroll past."
340
+ },
341
+ {
342
+ "part": "group-header",
343
+ "element": "th",
344
+ "required": false,
345
+ "purpose": "The one cell of the band, scope=\"rowgroup\", spanning the columns of the table. It names the rows of its own tbody, so a grouped listing writes one body per group."
346
+ },
347
+ {
348
+ "part": "group-content",
349
+ "element": "div",
350
+ "required": false,
351
+ "purpose": "The line inside the band that sets the name at the start and the end content at the end."
352
+ },
353
+ {
354
+ "part": "group-start",
355
+ "element": "span",
356
+ "required": false,
357
+ "purpose": "The name of the group."
358
+ },
359
+ {
360
+ "part": "group-end",
361
+ "element": "span",
362
+ "required": false,
363
+ "purpose": "The end of the band, the element marked slTableGroupRowEnd: the total or net of the group, in tabular figures."
364
+ },
324
365
  {
325
366
  "part": "empty",
326
367
  "element": "td[slTableEmpty]",
@@ -384,6 +425,13 @@
384
425
  "appliesTo": "slTable",
385
426
  "description": "How much of a frame the set is given"
386
427
  },
428
+ {
429
+ "name": "edges",
430
+ "type": "'inset' | 'flush'",
431
+ "defaultValue": "inset",
432
+ "appliesTo": "slTable",
433
+ "description": "Whether the first and the last column keep the cell inset on their outer side. flush lines a plain or ruled table up with the heading around it, leaving the theme’s --slotted-table-edge-inset (0 unless set); a framed table ignores it. Sticky and selection columns keep their own offsets"
434
+ },
387
435
  {
388
436
  "name": "striped",
389
437
  "type": "boolean",
@@ -566,6 +614,27 @@
566
614
  "appliesTo": "slTableRow",
567
615
  "description": "The record position in the whole set, written as aria-rowindex"
568
616
  },
617
+ {
618
+ "name": "current",
619
+ "type": "boolean",
620
+ "defaultValue": "false",
621
+ "appliesTo": "slTableRow",
622
+ "description": "The record open elsewhere on the page, a detail pane beside the table, written as aria-current"
623
+ },
624
+ {
625
+ "name": "interactive",
626
+ "type": "boolean",
627
+ "defaultValue": "false",
628
+ "appliesTo": "slTableRow",
629
+ "description": "Paints the row as a thing the pointer presses; stated beside (action)"
630
+ },
631
+ {
632
+ "name": "(action)",
633
+ "type": "MouseEvent",
634
+ "defaultValue": "—",
635
+ "appliesTo": "slTableRow",
636
+ "description": "A click anywhere in the row that lands on no control of its own; the first link or button in the row is the keyboard way in"
637
+ },
569
638
  {
570
639
  "name": "column",
571
640
  "type": "string",
@@ -608,6 +677,13 @@
608
677
  "appliesTo": "the three cell parts and both selection cells",
609
678
  "description": "Which edge the column is pinned to while the table scrolls past it"
610
679
  },
680
+ {
681
+ "name": "sticky",
682
+ "type": "boolean",
683
+ "defaultValue": "false",
684
+ "appliesTo": "slTableGroupRow",
685
+ "description": "Holds the band under the header while its rows scroll past; the end of the band is the element marked slTableGroupRowEnd"
686
+ },
611
687
  {
612
688
  "name": "stickyOffset",
613
689
  "type": "string",
@@ -745,15 +821,20 @@
745
821
  "--slotted-table-color-muted",
746
822
  "--slotted-table-column-actions-size",
747
823
  "--slotted-table-control-radius",
824
+ "--slotted-table-edge-inset",
748
825
  "--slotted-table-font-family",
749
826
  "--slotted-table-font-size",
750
827
  "--slotted-table-gap",
828
+ "--slotted-table-group-color",
829
+ "--slotted-table-group-sticky-offset",
830
+ "--slotted-table-group-surface",
751
831
  "--slotted-table-header-surface",
752
832
  "--slotted-table-header-surface-hover",
753
833
  "--slotted-table-icon-size",
754
834
  "--slotted-table-radius",
755
835
  "--slotted-table-row-color-selected",
756
836
  "--slotted-table-row-min-block-size",
837
+ "--slotted-table-row-surface-current",
757
838
  "--slotted-table-row-surface-hover",
758
839
  "--slotted-table-row-surface-selected",
759
840
  "--slotted-table-row-surface-selected-hover",
@@ -771,6 +852,7 @@
771
852
  "--slotted-tone-accent-subtle-hover",
772
853
  "--slotted-tone-accent-surface",
773
854
  "--slotted-tone-accent-text",
855
+ "--slotted-tone-secondary-subtle-active",
774
856
  "--slotted-tone-secondary-subtle-hover",
775
857
  "--slotted-z-index-sticky"
776
858
  ],
@@ -898,7 +980,7 @@
898
980
  {
899
981
  "id": "sticky",
900
982
  "title": "A header, a summary and a column that stay",
901
- "note": "stickyHeader holds the head against the top of the scroller and stickyFooter holds the summary against the bottom of it, so the total is on screen at the first row and the last. stickyTo says which box that is: this table own scroller, or whatever scrolls outside it. A pinned column darkens its edge exactly while something is hidden under it, and all of it mirrors in a right-to-left document.",
983
+ "note": "stickyHeader holds the head against the top of the scroller and stickyFooter holds the summary against the bottom of it, so the total is on screen at the first row and the last. stickyTo says which box that is: this table own scroller, or whatever scrolls outside it. Under stickyTo=\"page\" the head stops at --slotted-table-sticky-offset, which a page binds to its own chrome; a table inside a scrolling box of its own sets that token to 0 on the box. A pinned column darkens its edge exactly while something is hidden under it, and all of it mirrors in a right-to-left document.",
902
984
  "language": "ts",
903
985
  "source": "import { Component } from '@angular/core';\nimport {\n SlTable,\n SlTableBody,\n SlTableCell,\n SlTableColumnHeader,\n SlTableContent,\n SlTableHead,\n SlTableRow,\n SlTableRowHeader,\n SlTableSummary,\n} from '@slotted/angular/table';\n\nconst USD = new Intl.NumberFormat('en-US', { currency: 'USD', style: 'currency' });\n\nconst CUSTOMERS = [\n 'Alfreds Futterkiste',\n \"Bon app'\",\n 'Ernst Handel',\n 'Folk och fä HB',\n 'Hanari Carnes',\n 'Island Trading',\n 'QUICK-Stop',\n 'Wartian Herkku',\n];\nconst WAREHOUSES = ['Reno', 'Columbus', 'Savannah'];\n\nconst ORDERS = Array.from({ length: 30 }, (_, index) => ({\n id: `SO-${10400 + index}`,\n customer: CUSTOMERS[index % CUSTOMERS.length],\n warehouse: WAREHOUSES[index % WAREHOUSES.length],\n total: 180 + ((index * 397) % 2400),\n}));\n\n@Component({\n selector: 'app-table-sticky',\n imports: [\n SlTable,\n SlTableBody,\n SlTableCell,\n SlTableColumnHeader,\n SlTableContent,\n SlTableHead,\n SlTableRow,\n SlTableRowHeader,\n SlTableSummary,\n ],\n template: `\n <div slTable [columns]=\"4\" stickyFooter stickyHeader>\n <div slTableContent aria-label=\"September orders\" style=\"max-block-size: 20rem\">\n <thead slTableHead>\n <tr slTableRow>\n <th slTableColumnHeader>Order</th>\n <th slTableColumnHeader>Customer</th>\n <th slTableColumnHeader>Warehouse</th>\n <th slTableColumnHeader numeric>Total</th>\n </tr>\n </thead>\n <tbody slTableBody>\n @for (order of orders; track order.id) {\n <tr slTableRow [value]=\"order.id\">\n <th slTableRowHeader text=\"nowrap\">{{ order.id }}</th>\n <td slTableCell>{{ order.customer }}</td>\n <td slTableCell>{{ order.warehouse }}</td>\n <td slTableCell numeric>{{ usd.format(order.total) }}</td>\n </tr>\n }\n </tbody>\n <tfoot slTableSummary>\n <tr slTableRow>\n <td slTableCell [attr.colspan]=\"3\">{{ orders.length }} orders</td>\n <td slTableCell numeric>{{ usd.format(total) }}</td>\n </tr>\n </tfoot>\n </div>\n </div>\n `,\n})\nexport class TableSticky {\n readonly orders = ORDERS;\n readonly total = ORDERS.reduce((sum, order) => sum + order.total, 0);\n readonly usd = USD;\n}\n",
904
986
  "verdict": "example"
package/docs/table.md CHANGED
@@ -186,6 +186,11 @@ export class TableBasic {
186
186
  | `selection` | td[slTableSelect] and th[slTableSelectAll] | no |
187
187
  | `expander` | button[slTableExpander] | no |
188
188
  | `detail` | tr[slTableDetail] | no |
189
+ | `group-row` | tr[slTableGroupRow] | no |
190
+ | `group-header` | th | no |
191
+ | `group-content` | div | no |
192
+ | `group-start` | span | no |
193
+ | `group-end` | span | no |
189
194
  | `empty` | td[slTableEmpty] | no |
190
195
  | `loader` | tbody[slTableLoader] | no |
191
196
 
@@ -200,6 +205,7 @@ export class TableBasic {
200
205
  | `expanded` | `model<readonly string[]>` | [] | slTable | The rows whose detail is open, two-way |
201
206
  | `defaultExpanded` | `model initial value` | [] | slTable | The details an unbound table starts with |
202
207
  | `variant` | `'plain' \| 'ruled' \| 'framed'` | ruled | slTable | How much of a frame the set is given |
208
+ | `edges` | `'inset' \| 'flush'` | inset | slTable | Whether the first and the last column keep the cell inset on their outer side. flush lines a plain or ruled table up with the heading around it, leaving the theme’s --slotted-table-edge-inset (0 unless set); a framed table ignores it. Sticky and selection columns keep their own offsets |
203
209
  | `striped` | `boolean` | false | slTable | A tinted ground on every second record |
204
210
  | `stickyHeader` | `boolean` | false | slTable | Whether the header stays while the body scrolls |
205
211
  | `stickyFooter` | `boolean` | false | slTable | Whether the summary rows stay while the body scrolls. It pins the tfoot and not the footer bar, which never scrolls. |
@@ -226,12 +232,16 @@ export class TableBasic {
226
232
  | `value` | `string` | — | slTableRow | The record key the selection and the expansion are held by |
227
233
  | `disabled` | `boolean` | false | slTableRow | A record the reader may not choose; it leaves the set the header covers |
228
234
  | `rowIndex` | `number` | — | slTableRow | The record position in the whole set, written as aria-rowindex |
235
+ | `current` | `boolean` | false | slTableRow | The record open elsewhere on the page, a detail pane beside the table, written as aria-current |
236
+ | `interactive` | `boolean` | false | slTableRow | Paints the row as a thing the pointer presses; stated beside (action) |
237
+ | `(action)` | `MouseEvent` | — | slTableRow | A click anywhere in the row that lands on no control of its own; the first link or button in the row is the keyboard way in |
229
238
  | `column` | `string` | — | slTableColumnHeader, slTableSort | The column key the sort descriptor names |
230
239
  | `align` | `'start' \| 'center' \| 'end'` | start | the three cell parts | Which edge the value stands on, resolved logically |
231
240
  | `numeric` | `boolean` | false | the three cell parts | Tabular figures, and the end edge unless align says otherwise |
232
241
  | `blockAlign` | `'start' \| 'center' \| 'end'` | center | the three cell parts and both selection cells | Where this cell content sits in its row, overriding the table own cellAlign |
233
242
  | `text` | `'wrap' \| 'truncate' \| 'nowrap'` | wrap | the three cell parts | What a value longer than its column does |
234
243
  | `sticky` | `'start' \| 'end'` | start | the three cell parts and both selection cells | Which edge the column is pinned to while the table scrolls past it |
244
+ | `sticky` | `boolean` | false | slTableGroupRow | Holds the band under the header while its rows scroll past; the end of the band is the element marked slTableGroupRowEnd |
235
245
  | `stickyOffset` | `string` | 0 | the three cell parts and both selection cells | Where the pinned column stops, as a CSS length. Two columns pinned to the same edge need the second to state how wide the first is — beside a selection column that is --slotted-table-selection-size, which is 3rem. |
236
246
  | `colSpan` | `number` | — | slTableDetail, slTableEmpty | How many columns the part spans, defaulting to the table own count |
237
247
  | `exportAs` | `slTable, slTableRow, slTableContent` | — | every part | Reaches the instance from the template: row.expanded(), table.rows(), content.scrollToRow() |
@@ -256,6 +266,7 @@ export class TableBasic {
256
266
  | Axis | Values | Default |
257
267
  | --- | --- | --- |
258
268
  | `variant` | `plain`, `ruled`, `framed` | `ruled` |
269
+ | `edges` | `inset`, `flush` | `inset` |
259
270
  | `striped` | `true`, `false` | `false` |
260
271
  | `stickyHeader` | `true`, `false` | `false` |
261
272
  | `stickyFooter` | `true`, `false` | `false` |
@@ -283,7 +294,7 @@ export class TableBasic {
283
294
 
284
295
  ## Tokens
285
296
 
286
- `--slotted-border-strong`, `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-font-size-md`, `--slotted-control-gap-md`, `--slotted-control-height-md`, `--slotted-control-icon-size-md`, `--slotted-control-padding-inline-md`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-foreground`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-ground`, `--slotted-line-height-md`, `--slotted-radius-md`, `--slotted-radius-sm`, `--slotted-shadow-xs`, `--slotted-space-2`, `--slotted-space-5`, `--slotted-space-9`, `--slotted-surface`, `--slotted-table-border-color`, `--slotted-table-border-color-strong`, `--slotted-table-border-width`, `--slotted-table-cell-padding-block`, `--slotted-table-cell-padding-inline`, `--slotted-table-color`, `--slotted-table-color-muted`, `--slotted-table-column-actions-size`, `--slotted-table-control-radius`, `--slotted-table-font-family`, `--slotted-table-font-size`, `--slotted-table-gap`, `--slotted-table-header-surface`, `--slotted-table-header-surface-hover`, `--slotted-table-icon-size`, `--slotted-table-radius`, `--slotted-table-row-color-selected`, `--slotted-table-row-min-block-size`, `--slotted-table-row-surface-hover`, `--slotted-table-row-surface-selected`, `--slotted-table-row-surface-selected-hover`, `--slotted-table-row-surface-stripe`, `--slotted-table-selection-size`, `--slotted-table-shadow`, `--slotted-table-sticky-inset`, `--slotted-table-sticky-offset`, `--slotted-table-sticky-offset-end`, `--slotted-table-surface`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-sticky`
297
+ `--slotted-border-strong`, `--slotted-border-subtle`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-font-size-md`, `--slotted-control-gap-md`, `--slotted-control-height-md`, `--slotted-control-icon-size-md`, `--slotted-control-padding-inline-md`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-foreground`, `--slotted-duration-short`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-xs`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-font-weight-semibold`, `--slotted-ground`, `--slotted-line-height-md`, `--slotted-radius-md`, `--slotted-radius-sm`, `--slotted-shadow-xs`, `--slotted-space-2`, `--slotted-space-5`, `--slotted-space-9`, `--slotted-surface`, `--slotted-table-border-color`, `--slotted-table-border-color-strong`, `--slotted-table-border-width`, `--slotted-table-cell-padding-block`, `--slotted-table-cell-padding-inline`, `--slotted-table-color`, `--slotted-table-color-muted`, `--slotted-table-column-actions-size`, `--slotted-table-control-radius`, `--slotted-table-edge-inset`, `--slotted-table-font-family`, `--slotted-table-font-size`, `--slotted-table-gap`, `--slotted-table-group-color`, `--slotted-table-group-sticky-offset`, `--slotted-table-group-surface`, `--slotted-table-header-surface`, `--slotted-table-header-surface-hover`, `--slotted-table-icon-size`, `--slotted-table-radius`, `--slotted-table-row-color-selected`, `--slotted-table-row-min-block-size`, `--slotted-table-row-surface-current`, `--slotted-table-row-surface-hover`, `--slotted-table-row-surface-selected`, `--slotted-table-row-surface-selected-hover`, `--slotted-table-row-surface-stripe`, `--slotted-table-selection-size`, `--slotted-table-shadow`, `--slotted-table-sticky-inset`, `--slotted-table-sticky-offset`, `--slotted-table-sticky-offset-end`, `--slotted-table-surface`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-z-index-sticky`
287
298
 
288
299
  ## Examples
289
300
 
@@ -256,7 +256,7 @@
256
256
  "type": "'text' | 'search' | 'email' | 'url' | 'tel' | 'password'",
257
257
  "defaultValue": "text",
258
258
  "appliesTo": "the input element",
259
- "description": "The input’s own type, written as a static attribute. It is read before the host binding computes, so the reveal toggle can swap it and restore what you wrote."
259
+ "description": "The input’s own type, one of the six listed, written as a static attribute. It is read before the host binding computes, so the reveal toggle can swap it and restore what you wrote. A date, a time, a month or a number is not a text field: use date-picker (forms.md FM-16), time-picker or number-field. Other strings still reach the element for compatibility and are not supported."
260
260
  },
261
261
  {
262
262
  "name": "copyable",
@@ -78,7 +78,7 @@ export class TextFieldBasic {}
78
78
  | `readOnly` | `boolean` | from the field, or false | slTextFieldInput | Unset by default, so the input takes the state of the field around it. It is the native readonly: the input stays focusable and selectable, and its value is submitted. A static readonly attribute you write is read before the binding computes. |
79
79
  | `invalid` | `boolean` | from the field, or false | slTextFieldInput | Unset by default, so the input takes the state of the field around it. It sets aria-invalid on the input and data-invalid on the frame. |
80
80
  | `required` | `boolean` | — | the input element | The input’s own attribute; slTextFieldInput never writes it. A field marks a required value with aria-required instead, because the native attribute turns on browser constraint validation. |
81
- | `type` | `'text' \| 'search' \| 'email' \| 'url' \| 'tel' \| 'password'` | text | the input element | The input’s own type, written as a static attribute. It is read before the host binding computes, so the reveal toggle can swap it and restore what you wrote. |
81
+ | `type` | `'text' \| 'search' \| 'email' \| 'url' \| 'tel' \| 'password'` | text | the input element | The input’s own type, one of the six listed, written as a static attribute. It is read before the host binding computes, so the reveal toggle can swap it and restore what you wrote. A date, a time, a month or a number is not a text field: use date-picker (forms.md FM-16), time-picker or number-field. Other strings still reach the element for compatibility and are not supported. |
82
82
  | `copyable` | `boolean` | false | slTextField | Draws a button that writes the value to the clipboard, shows a check for two seconds and announces the outcome. It is hidden while the value is empty or the input is disabled. |
83
83
  | `loading` | `boolean` | false | slTextField | Draws the shared spinner before the buttons and sets aria-busy on the input; the value stays editable. Once loading is bound, false included, the spinner keeps its place so it can leave with a transition. |
84
84
  | `messages` | `Partial<TextFieldMessages>` | — | slTextField | Replaces words of the active language, key by key. clear, reveal and copy name the buttons; reveal does not change with the state, because aria-pressed carries it. copied and copyFailed announce the outcome of a copy. capsLock is announced once when Caps Lock turns on in a focused password field. |
@@ -14,7 +14,8 @@
14
14
  ],
15
15
  "variant": [
16
16
  "outline",
17
- "ghost"
17
+ "ghost",
18
+ "chips"
18
19
  ],
19
20
  "orientation": [
20
21
  "horizontal",
@@ -133,10 +134,10 @@
133
134
  },
134
135
  {
135
136
  "name": "variant",
136
- "type": "'outline' | 'ghost'",
137
+ "type": "'outline' | 'ghost' | 'chips'",
137
138
  "defaultValue": "outline",
138
139
  "appliesTo": "slToggleGroup",
139
- "description": "Whether the bar draws its own edge. There is no tone axis: “on” is one colour across the system"
140
+ "description": "Whether the bar draws its own edge, or draws its items as chips: separate rounded items that wrap, never joined, the pressed one in the neutral tone ink. There is no tone axis: “on” is one colour across the system"
140
141
  },
141
142
  {
142
143
  "name": "orientation",
@@ -287,9 +288,16 @@
287
288
  "--slotted-focus-ring-color",
288
289
  "--slotted-focus-ring-offset",
289
290
  "--slotted-focus-ring-width",
291
+ "--slotted-font-weight-medium",
292
+ "--slotted-radius-full",
293
+ "--slotted-space-3",
290
294
  "--slotted-text",
291
295
  "--slotted-toggle-group-active-background",
292
296
  "--slotted-toggle-group-border-color",
297
+ "--slotted-toggle-group-chips-gap",
298
+ "--slotted-toggle-group-chips-pressed-background",
299
+ "--slotted-toggle-group-chips-pressed-color",
300
+ "--slotted-toggle-group-chips-radius",
293
301
  "--slotted-toggle-group-color",
294
302
  "--slotted-toggle-group-disabled-border-color",
295
303
  "--slotted-toggle-group-disabled-color",
@@ -305,6 +313,9 @@
305
313
  "--slotted-tone-accent-subtle-active",
306
314
  "--slotted-tone-accent-subtle-hover",
307
315
  "--slotted-tone-accent-text",
316
+ "--slotted-tone-neutral-on-solid",
317
+ "--slotted-tone-neutral-solid",
318
+ "--slotted-tone-neutral-solid-hover",
308
319
  "--slotted-tone-secondary-subtle-active",
309
320
  "--slotted-tone-secondary-subtle-hover"
310
321
  ],
@@ -46,7 +46,7 @@ Excerpt — not a complete module
46
46
  | `multiple` | `boolean` | false | slToggleGroup | Whether more than one item may be on at a time. The value stays an array either way, so one signal holds it in every mode |
47
47
  | `deselectable` | `boolean` | true | slToggleGroup | Whether the last item on may be turned off. Ignored while multiple is true, where a set may always empty |
48
48
  | `size` | `'sm' \| 'md' \| 'lg'` | md | slToggleGroup | The control step the bar and every item sit at. It reads the control scale, so the bar is as tall as the field beside it |
49
- | `variant` | `'outline' \| 'ghost'` | outline | slToggleGroup | Whether the bar draws its own edge. There is no tone axis: “on” is one colour across the system |
49
+ | `variant` | `'outline' \| 'ghost' \| 'chips'` | outline | slToggleGroup | Whether the bar draws its own edge, or draws its items as chips: separate rounded items that wrap, never joined, the pressed one in the neutral tone ink. There is no tone axis: “on” is one colour across the system |
50
50
  | `orientation` | `'horizontal' \| 'vertical'` | horizontal | slToggleGroup | How the items flow, and which pair of arrows moves focus. A vertical group writes aria-orientation |
51
51
  | `attached` | `boolean` | true | slToggleGroup | Whether the items are joined into one bar or spaced apart. A joined bar overlaps its items by one border so a shared column holds one line |
52
52
  | `fullWidth` | `boolean` | false | slToggleGroup | Whether the items share the whole line. Left alone the bar is as wide as its labels |
@@ -73,7 +73,7 @@ Excerpt — not a complete module
73
73
  | Axis | Values | Default |
74
74
  | --- | --- | --- |
75
75
  | `size` | `sm`, `md`, `lg` | `md` |
76
- | `variant` | `outline`, `ghost` | `outline` |
76
+ | `variant` | `outline`, `ghost`, `chips` | `outline` |
77
77
  | `orientation` | `horizontal`, `vertical` | `horizontal` |
78
78
 
79
79
  ## Rules
@@ -87,7 +87,7 @@ Excerpt — not a complete module
87
87
 
88
88
  ## Tokens
89
89
 
90
- `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-font-weight`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-text`, `--slotted-toggle-group-active-background`, `--slotted-toggle-group-border-color`, `--slotted-toggle-group-color`, `--slotted-toggle-group-disabled-border-color`, `--slotted-toggle-group-disabled-color`, `--slotted-toggle-group-disabled-pressed-background`, `--slotted-toggle-group-hover-background`, `--slotted-toggle-group-pressed-background`, `--slotted-toggle-group-pressed-border-color`, `--slotted-toggle-group-pressed-color`, `--slotted-toggle-group-pressed-hover-background`, `--slotted-toggle-group-radius`, `--slotted-toggle-group-shadow`, `--slotted-tone-accent-border`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
90
+ `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-font-weight`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-weight-medium`, `--slotted-radius-full`, `--slotted-space-3`, `--slotted-text`, `--slotted-toggle-group-active-background`, `--slotted-toggle-group-border-color`, `--slotted-toggle-group-chips-gap`, `--slotted-toggle-group-chips-pressed-background`, `--slotted-toggle-group-chips-pressed-color`, `--slotted-toggle-group-chips-radius`, `--slotted-toggle-group-color`, `--slotted-toggle-group-disabled-border-color`, `--slotted-toggle-group-disabled-color`, `--slotted-toggle-group-disabled-pressed-background`, `--slotted-toggle-group-hover-background`, `--slotted-toggle-group-pressed-background`, `--slotted-toggle-group-pressed-border-color`, `--slotted-toggle-group-pressed-color`, `--slotted-toggle-group-pressed-hover-background`, `--slotted-toggle-group-radius`, `--slotted-toggle-group-shadow`, `--slotted-tone-accent-border`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-neutral-on-solid`, `--slotted-tone-neutral-solid`, `--slotted-tone-neutral-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
91
91
 
92
92
  ## Examples
93
93
 
package/docs/toggle.json CHANGED
@@ -14,7 +14,8 @@
14
14
  ],
15
15
  "variant": [
16
16
  "outline",
17
- "ghost"
17
+ "ghost",
18
+ "chips"
18
19
  ]
19
20
  },
20
21
  "members": {
@@ -101,10 +102,10 @@
101
102
  },
102
103
  {
103
104
  "name": "variant",
104
- "type": "'outline' | 'ghost'",
105
+ "type": "'outline' | 'ghost' | 'chips'",
105
106
  "defaultValue": "outline",
106
107
  "appliesTo": "slToggle",
107
- "description": "Whether the control draws its own edge before it is on. There is no tone axis: a mode is one colour when it is on, and an action that persists in one of five tones is button’s ToggleButton"
108
+ "description": "Whether the control draws its own edge before it is on, or is a chip pressed in the neutral tone ink. There is no tone axis: a mode is one colour when it is on, and an action that persists in one of five tones is button’s ToggleButton"
108
109
  },
109
110
  {
110
111
  "name": "disabled",
@@ -212,9 +213,14 @@
212
213
  "--slotted-focus-ring-color",
213
214
  "--slotted-focus-ring-offset",
214
215
  "--slotted-focus-ring-width",
216
+ "--slotted-font-weight-medium",
217
+ "--slotted-radius-full",
215
218
  "--slotted-text",
216
219
  "--slotted-toggle-active-background",
217
220
  "--slotted-toggle-border-color",
221
+ "--slotted-toggle-chips-pressed-background",
222
+ "--slotted-toggle-chips-pressed-color",
223
+ "--slotted-toggle-chips-radius",
218
224
  "--slotted-toggle-color",
219
225
  "--slotted-toggle-disabled-border-color",
220
226
  "--slotted-toggle-disabled-color",
@@ -230,6 +236,9 @@
230
236
  "--slotted-tone-accent-subtle-active",
231
237
  "--slotted-tone-accent-subtle-hover",
232
238
  "--slotted-tone-accent-text",
239
+ "--slotted-tone-neutral-on-solid",
240
+ "--slotted-tone-neutral-solid",
241
+ "--slotted-tone-neutral-solid-hover",
233
242
  "--slotted-tone-secondary-subtle-active",
234
243
  "--slotted-tone-secondary-subtle-hover"
235
244
  ],
package/docs/toggle.md CHANGED
@@ -37,7 +37,7 @@ Excerpt — not a complete module
37
37
  | `pressed` | `boolean` | — | slToggle | Bound, the consumer owns the state for the life of the component. Unbound, the toggle owns it and starts from defaultPressed |
38
38
  | `defaultPressed` | `boolean` | false | slToggle | What an uncontrolled toggle starts from, read once. A later change to it does not silently become new state |
39
39
  | `size` | `'sm' \| 'md' \| 'lg'` | md | slToggle | The control step. It reads the control scale, so the toggle is as tall as the field beside it |
40
- | `variant` | `'outline' \| 'ghost'` | outline | slToggle | Whether the control draws its own edge before it is on. There is no tone axis: a mode is one colour when it is on, and an action that persists in one of five tones is button’s ToggleButton |
40
+ | `variant` | `'outline' \| 'ghost' \| 'chips'` | outline | slToggle | Whether the control draws its own edge before it is on, or is a chip pressed in the neutral tone ink. There is no tone axis: a mode is one colour when it is on, and an action that persists in one of five tones is button’s ToggleButton |
41
41
  | `disabled` | `boolean` | false | slToggle | The native attribute, which is also what makes the browser refuse focus. A toggle that is on and unavailable keeps saying both |
42
42
  | `type` | `'button' \| 'submit' \| 'reset'` | button | slToggle | The native attribute, kept when the consumer wrote it. A toggle in a form is not a form control — checkbox and switch are — so it is a button unless the consumer says otherwise |
43
43
  | `slToggle` | `directive on a button` | — | the consumer’s element | The component is a directive on the consumer’s own button: every attribute, every listener and every structural directive around it stay as written. It stays a button, because aria-pressed on a link is a link announcing a state a link does not hold |
@@ -58,7 +58,7 @@ Excerpt — not a complete module
58
58
  | Axis | Values | Default |
59
59
  | --- | --- | --- |
60
60
  | `size` | `sm`, `md`, `lg` | `md` |
61
- | `variant` | `outline`, `ghost` | `outline` |
61
+ | `variant` | `outline`, `ghost`, `chips` | `outline` |
62
62
 
63
63
  ## Rules
64
64
 
@@ -70,7 +70,7 @@ Excerpt — not a complete module
70
70
 
71
71
  ## Tokens
72
72
 
73
- `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-font-weight`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-text`, `--slotted-toggle-active-background`, `--slotted-toggle-border-color`, `--slotted-toggle-color`, `--slotted-toggle-disabled-border-color`, `--slotted-toggle-disabled-color`, `--slotted-toggle-disabled-pressed-background`, `--slotted-toggle-hover-background`, `--slotted-toggle-pressed-background`, `--slotted-toggle-pressed-border-color`, `--slotted-toggle-pressed-color`, `--slotted-toggle-pressed-hover-background`, `--slotted-toggle-radius`, `--slotted-toggle-shadow`, `--slotted-tone-accent-border`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
73
+ `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-font-weight`, `--slotted-control-gap-lg`, `--slotted-control-gap-md`, `--slotted-control-gap-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-letter-spacing`, `--slotted-control-line-height`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-instant`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-weight-medium`, `--slotted-radius-full`, `--slotted-text`, `--slotted-toggle-active-background`, `--slotted-toggle-border-color`, `--slotted-toggle-chips-pressed-background`, `--slotted-toggle-chips-pressed-color`, `--slotted-toggle-chips-radius`, `--slotted-toggle-color`, `--slotted-toggle-disabled-border-color`, `--slotted-toggle-disabled-color`, `--slotted-toggle-disabled-pressed-background`, `--slotted-toggle-hover-background`, `--slotted-toggle-pressed-background`, `--slotted-toggle-pressed-border-color`, `--slotted-toggle-pressed-color`, `--slotted-toggle-pressed-hover-background`, `--slotted-toggle-radius`, `--slotted-toggle-shadow`, `--slotted-tone-accent-border`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-neutral-on-solid`, `--slotted-tone-neutral-solid`, `--slotted-tone-neutral-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
74
74
 
75
75
  ## Examples
76
76
 
package/docs/tokens.md CHANGED
@@ -92,6 +92,15 @@ Names: --slotted-line-height-{step}
92
92
  | `--slotted-line-height-3xl` | — | 1.3 |
93
93
  | `--slotted-line-height-4xl` | — | 1.2 |
94
94
 
95
+ ## letter-spacing
96
+
97
+ The tracking large type takes: the tight step at the md and lg display steps, the tighter step at 3xl and 4xl. Text at the body steps reads the face as drawn.
98
+
99
+ | Token | Meaning | Default value |
100
+ | --- | --- | --- |
101
+ | `--slotted-letter-spacing-tight` | The tracking of a display figure or a wordmark at the md and lg font-size steps. | -0.02em |
102
+ | `--slotted-letter-spacing-tighter` | The tracking of a display figure at the 3xl and 4xl font-size steps. | -0.03em |
103
+
95
104
  ## font-weight
96
105
 
97
106
  How much typographic emphasis text carries.
@@ -217,6 +226,10 @@ The grounds content stands on.
217
226
  | `--slotted-surface-raised` | The ground of a surface above another: a popover, a menu, a dialog; paired with a step of `shadow`. | by scheme |
218
227
  | `--slotted-surface-sunken` | The canvas under the content: the ground a card and a field stand out from. | by scheme |
219
228
  | `--slotted-surface-inverse` | A ground in the opposite lightness, with `--slotted-text-inverse` on it. | by scheme |
229
+ | `--slotted-surface-inverse-hover` | The inverse ground under the pointer: `--slotted-surface-inverse` moved a share toward the opposite lightness. | by scheme |
230
+ | `--slotted-surface-inverse-active` | The inverse ground while pressed, a step beyond the hover. | by scheme |
231
+ | `--slotted-surface-material` | The ground of a bar that floats over scrolling content, drawn as a material: `--slotted-surface` at a partial share over transparency, behind `--slotted-material-backdrop`. Under `prefers-reduced-transparency: reduce` it is `--slotted-surface`, and under forced colours the Canvas system colour. | by scheme |
232
+ | `--slotted-material-backdrop` | The backdrop filter a material is drawn with: the content scrolling under it, saturated and blurred. Under `prefers-reduced-transparency: reduce` it is `none`. | saturate(1.6) blur(20px) |
220
233
 
221
234
  ## text
222
235
 
@@ -271,7 +284,7 @@ How small an interactive target may be.
271
284
 
272
285
  ## tone
273
286
 
274
- What an element carrying an intent is painted with: five tones, each with the same nine roles.
287
+ What an element carrying an intent is painted with: six tones, each with the same nine roles.
275
288
 
276
289
  Names: --slotted-tone-{tone}-{role}
277
290
 
@@ -279,6 +292,7 @@ Names: --slotted-tone-{tone}-{role}
279
292
  | --- | --- |
280
293
  | accent | The product's intent: the primary action, the chosen option, the current place. |
281
294
  | secondary | A second intent beside accent, for an action or a mark that must not compete with it. |
295
+ | neutral | Ink: the inverse surface as a fill and the text colour as a label, for a primary action in a product that keeps the accent for data. |
282
296
  | success | A result that completed or a state that is healthy. |
283
297
  | warning | A state that needs attention before it becomes a failure. |
284
298
  | danger | A failure, an error or an action that destroys data. |
@@ -405,6 +419,16 @@ How the place the reader is on is marked.
405
419
  | --- | --- | --- |
406
420
  | `--slotted-current-edge` | The edge of the row the reader is on, drawn over its tone ground. | by scheme |
407
421
 
422
+ ## state
423
+
424
+ Translucent layers laid over whatever surface an element stands on, so a hovered, pressed or selected row reads the same on the page and on a raised surface. Each is the scheme's text colour at a small share over transparency. Under forced colours every layer is the Canvas system colour: the state is carried by the system colours the family draws, Highlight for selection and an outline for focus.
425
+
426
+ | Token | Meaning | Default value |
427
+ | --- | --- | --- |
428
+ | `--slotted-state-hover` | The layer under the pointer. | by scheme |
429
+ | `--slotted-state-pressed` | The layer while the element is pressed; the strongest of the three. | by scheme |
430
+ | `--slotted-state-selected` | The layer of a selected or open element, between hover and pressed. | by scheme |
431
+
408
432
  ## scrim
409
433
 
410
434
  The veil under a modal surface.
package/docs/tour.json CHANGED
@@ -176,7 +176,7 @@
176
176
  "part": "content",
177
177
  "element": "[slTourContent]",
178
178
  "required": true,
179
- "purpose": "The card: role=\"dialog\" unless you wrote a role, named by the title unless you wrote aria-label, aria-modal on a modal step. Reads the arrow keys."
179
+ "purpose": "The card: role=\"dialog\" unless you wrote a role, named by the title unless you wrote aria-label, aria-modal on a modal step. Reads the arrow keys. It draws no padding: slTourHeader, slTourBody and slTourFooter carry the card inset, set by --slotted-tour-padding-inline and --slotted-tour-padding-block."
180
180
  },
181
181
  {
182
182
  "part": "media",