@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.3
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.
- package/README.md +4 -0
- package/docs/AGENTS.snippet.md +10 -0
- package/docs/app-shell.json +1 -1
- package/docs/button-group.json +1 -0
- package/docs/button-group.md +1 -1
- package/docs/button.json +45 -11
- package/docs/button.md +10 -6
- package/docs/chart.json +7 -0
- package/docs/chart.md +1 -0
- package/docs/checkbox.json +7 -0
- package/docs/checkbox.md +1 -0
- package/docs/currency-field.json +32 -1
- package/docs/currency-field.md +4 -1
- package/docs/dialog.examples.md +20 -0
- package/docs/dialog.json +14 -2
- package/docs/dialog.md +1 -1
- package/docs/event-calendar.json +7 -0
- package/docs/event-calendar.md +1 -0
- package/docs/guidelines/README.md +27 -0
- package/docs/guidelines/async-feedback.md +108 -0
- package/docs/guidelines/browsing.md +74 -0
- package/docs/guidelines/builders.md +97 -0
- package/docs/guidelines/composition.md +129 -0
- package/docs/guidelines/conversations.md +59 -0
- package/docs/guidelines/errors-and-conflicts.md +71 -0
- package/docs/guidelines/forms.md +192 -0
- package/docs/guidelines/index.md +121 -0
- package/docs/guidelines/layout-alignment.md +95 -0
- package/docs/guidelines/ledgers.md +45 -0
- package/docs/guidelines/list-pages.md +165 -0
- package/docs/guidelines/overviews.md +66 -0
- package/docs/guidelines/own-elements.md +115 -0
- package/docs/guidelines/reading-permissions.md +55 -0
- package/docs/guidelines/record-pages.md +178 -0
- package/docs/guidelines/reports.md +123 -0
- package/docs/guidelines/shell-composition.md +94 -0
- package/docs/guidelines/workspaces.md +46 -0
- package/docs/index.md +12 -0
- package/docs/list.json +19 -1
- package/docs/list.md +3 -1
- package/docs/popover.json +1 -1
- package/docs/progress-indicator.json +1 -2
- package/docs/progress-indicator.md +2 -2
- package/docs/segmented-control.json +29 -1
- package/docs/segmented-control.md +17 -1
- package/docs/skills/build-own-element/SKILL.md +90 -0
- package/docs/skills/compose-screen/SKILL.md +76 -0
- package/docs/skills/index.md +9 -0
- package/docs/skills/review-screen/SKILL.md +70 -0
- package/docs/skills/theme-app/SKILL.md +79 -0
- package/docs/skills/waiting-states/SKILL.md +139 -0
- package/docs/split-button.json +1 -0
- package/docs/split-button.md +1 -1
- package/docs/stat-card.json +2 -0
- package/docs/stat-card.md +1 -1
- package/docs/table.examples.md +1 -1
- package/docs/table.json +70 -1
- package/docs/table.md +10 -1
- package/docs/tabs.json +1 -4
- package/docs/tabs.md +1 -1
- package/docs/toggle-group.json +14 -3
- package/docs/toggle-group.md +3 -3
- package/docs/toggle.json +12 -3
- package/docs/toggle.md +3 -3
- package/docs/tokens.md +448 -0
- package/docs/tour.json +1 -1
- package/fesm2022/slotted-angular-app-shell.mjs +48 -16
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
- package/fesm2022/slotted-angular-button-group.mjs +4 -4
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-button.mjs +51 -19
- package/fesm2022/slotted-angular-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-cascader.mjs +1 -1
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
- package/fesm2022/slotted-angular-chart.mjs +41 -20
- package/fesm2022/slotted-angular-chart.mjs.map +1 -1
- package/fesm2022/slotted-angular-checkbox.mjs +11 -2
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs +1 -1
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
- package/fesm2022/slotted-angular-combobox.mjs +12 -6
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
- package/fesm2022/slotted-angular-currency-field.mjs +59 -8
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-dashboard-grid.mjs +18 -22
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-grid.mjs +7 -3
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
- package/fesm2022/slotted-angular-data-list.mjs +2 -2
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-dialog.mjs +4 -4
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
- package/fesm2022/slotted-angular-drawer.mjs +5 -1
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
- package/fesm2022/slotted-angular-event-calendar.mjs +18 -8
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
- package/fesm2022/slotted-angular-filter-bar.mjs +8 -8
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-list.mjs +28 -17
- package/fesm2022/slotted-angular-list.mjs.map +1 -1
- package/fesm2022/slotted-angular-loading-overlay.mjs +2 -2
- package/fesm2022/slotted-angular-markdown.mjs +1 -1
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
- package/fesm2022/slotted-angular-multi-select.mjs +32 -27
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs +1 -1
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
- package/fesm2022/slotted-angular-number-field.mjs +2 -2
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
- package/fesm2022/slotted-angular-progress-indicator.mjs +6 -6
- package/fesm2022/slotted-angular-saved-views.mjs +1 -1
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
- package/fesm2022/slotted-angular-segmented-control.mjs +25 -5
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
- package/fesm2022/slotted-angular-select.mjs +1 -25
- package/fesm2022/slotted-angular-select.mjs.map +1 -1
- package/fesm2022/slotted-angular-split-button.mjs +4 -4
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
- package/fesm2022/slotted-angular-stat-card.mjs +2 -2
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
- package/fesm2022/slotted-angular-table.mjs +97 -10
- package/fesm2022/slotted-angular-table.mjs.map +1 -1
- package/fesm2022/slotted-angular-tabs.mjs +2 -2
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle-group.mjs +17 -4
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
- package/fesm2022/slotted-angular-toggle.mjs +2 -2
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
- package/fesm2022/slotted-angular-tour.mjs +1 -1
- package/fesm2022/slotted-angular-tour.mjs.map +1 -1
- package/fesm2022/slotted-angular-transfer.mjs +1 -1
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
- package/fesm2022/slotted-angular-upload.mjs +2 -2
- package/fesm2022/slotted-angular-wizard.mjs +1 -1
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
- package/package.json +3 -3
- package/types/slotted-angular-app-shell.d.ts +6 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -1
- package/types/slotted-angular-button-group.d.ts +1 -1
- package/types/slotted-angular-button.d.ts +33 -13
- package/types/slotted-angular-button.d.ts.map +1 -1
- package/types/slotted-angular-chart.d.ts +9 -0
- package/types/slotted-angular-chart.d.ts.map +1 -1
- package/types/slotted-angular-checkbox.d.ts +7 -1
- package/types/slotted-angular-checkbox.d.ts.map +1 -1
- package/types/slotted-angular-combobox.d.ts.map +1 -1
- package/types/slotted-angular-currency-field.d.ts +25 -3
- package/types/slotted-angular-currency-field.d.ts.map +1 -1
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
- package/types/slotted-angular-data-grid.d.ts.map +1 -1
- package/types/slotted-angular-drawer.d.ts.map +1 -1
- package/types/slotted-angular-event-calendar.d.ts +9 -2
- package/types/slotted-angular-event-calendar.d.ts.map +1 -1
- package/types/slotted-angular-list.d.ts +42 -27
- package/types/slotted-angular-list.d.ts.map +1 -1
- package/types/slotted-angular-multi-select.d.ts +10 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -1
- package/types/slotted-angular-segmented-control.d.ts +15 -2
- package/types/slotted-angular-segmented-control.d.ts.map +1 -1
- package/types/slotted-angular-select.d.ts.map +1 -1
- package/types/slotted-angular-split-button.d.ts +2 -2
- package/types/slotted-angular-table.d.ts +43 -3
- package/types/slotted-angular-table.d.ts.map +1 -1
- package/types/slotted-angular-toggle-group.d.ts +8 -2
- package/types/slotted-angular-toggle-group.d.ts.map +1 -1
- package/types/slotted-angular-toggle.d.ts +1 -1
- package/types/slotted-angular-toggle.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -47,6 +47,10 @@ export const appConfig = {
|
|
|
47
47
|
};
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
## Agents
|
|
51
|
+
|
|
52
|
+
`docs/AGENTS.snippet.md` is the section an application adds to the instructions its coding agent reads: `AGENTS.md`, or `CLAUDE.md` for Claude Code, directly or through `@AGENTS.md`. It points the agent at the family pages, the guidelines and the skills of the installed version.
|
|
53
|
+
|
|
50
54
|
## License
|
|
51
55
|
|
|
52
56
|
MIT
|
package/docs/AGENTS.snippet.md
CHANGED
|
@@ -8,3 +8,13 @@ Before writing or changing UI, read `node_modules/@slotted/angular/docs/index.md
|
|
|
8
8
|
- Change a family's appearance through its inputs (`size`, `variant`, `tone` where it has them), not with CSS that targets its parts.
|
|
9
9
|
- Application CSS uses `var(--slotted-*)` tokens for color, spacing and radius, inside a layer declared after the library's: `@layer slotted, app;`.
|
|
10
10
|
- In CSS and tests, select a family by `[data-ui="<family>"]` and its parts by `[data-part="<part>"]`.
|
|
11
|
+
|
|
12
|
+
### Tasks
|
|
13
|
+
|
|
14
|
+
Read the skill before the task:
|
|
15
|
+
|
|
16
|
+
- Compose or change a screen — a list, a record, a form, an overview: `node_modules/@slotted/angular/docs/skills/compose-screen/SKILL.md`
|
|
17
|
+
- Show what a screen draws while it waits, and its empty and error states: `node_modules/@slotted/angular/docs/skills/waiting-states/SKILL.md`
|
|
18
|
+
- Review a screen against the guidelines, or fix what a review found: `node_modules/@slotted/angular/docs/skills/review-screen/SKILL.md`
|
|
19
|
+
- Write a component or element that no family draws: `node_modules/@slotted/angular/docs/skills/build-own-element/SKILL.md`
|
|
20
|
+
- Change the brand colour, the scheme, the density or a control's shape: `node_modules/@slotted/angular/docs/skills/theme-app/SKILL.md`
|
package/docs/app-shell.json
CHANGED
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
"part": "nav",
|
|
197
197
|
"element": "nav",
|
|
198
198
|
"required": false,
|
|
199
|
-
"purpose": "The navigation landmark, and one element across all three modes: the rail is this nav at another inline size, which keeps the focus and the scroll position where the reader left them. A query container of its own, named slotted-app-shell-nav, so the rows inside answer the rail without the shell telling them anything."
|
|
199
|
+
"purpose": "The navigation landmark, and one element across all three modes: the rail is this nav at another inline size, which keeps the focus and the scroll position where the reader left them. Its inline axis clips and its block axis scrolls, so a single column taller than the region keeps its foot reachable. A footer that must stay visible goes in nav-footer, between nav-header and a nav-body that scrolls. A query container of its own, named slotted-app-shell-nav, so the rows inside answer the rail without the shell telling them anything."
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
"part": "nav-rail",
|
package/docs/button-group.json
CHANGED
|
@@ -133,6 +133,7 @@
|
|
|
133
133
|
"--slotted-text-muted",
|
|
134
134
|
"--slotted-tone-accent-solid-active",
|
|
135
135
|
"--slotted-tone-danger-solid-active",
|
|
136
|
+
"--slotted-tone-neutral-solid-active",
|
|
136
137
|
"--slotted-tone-secondary-solid-active",
|
|
137
138
|
"--slotted-tone-success-solid-active",
|
|
138
139
|
"--slotted-tone-warning-solid-active"
|
package/docs/button-group.md
CHANGED
|
@@ -50,7 +50,7 @@ Excerpt — not a complete module
|
|
|
50
50
|
|
|
51
51
|
## Tokens
|
|
52
52
|
|
|
53
|
-
`--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-radius`, `--slotted-text-muted`, `--slotted-tone-accent-solid-active`, `--slotted-tone-danger-solid-active`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-success-solid-active`, `--slotted-tone-warning-solid-active`
|
|
53
|
+
`--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-radius`, `--slotted-text-muted`, `--slotted-tone-accent-solid-active`, `--slotted-tone-danger-solid-active`, `--slotted-tone-neutral-solid-active`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-success-solid-active`, `--slotted-tone-warning-solid-active`
|
|
54
54
|
|
|
55
55
|
## Examples
|
|
56
56
|
|
package/docs/button.json
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"tone": [
|
|
11
11
|
"accent",
|
|
12
12
|
"secondary",
|
|
13
|
+
"neutral",
|
|
13
14
|
"success",
|
|
14
15
|
"warning",
|
|
15
16
|
"danger"
|
|
@@ -27,6 +28,10 @@
|
|
|
27
28
|
"shape": [
|
|
28
29
|
"square",
|
|
29
30
|
"circle"
|
|
31
|
+
],
|
|
32
|
+
"justify": [
|
|
33
|
+
"center",
|
|
34
|
+
"between"
|
|
30
35
|
]
|
|
31
36
|
},
|
|
32
37
|
"members": {
|
|
@@ -38,6 +43,7 @@
|
|
|
38
43
|
"size": "md",
|
|
39
44
|
"type": "button",
|
|
40
45
|
"fullWidth": false,
|
|
46
|
+
"justify": "center",
|
|
41
47
|
"disabled": false,
|
|
42
48
|
"focusableWhenDisabled": false,
|
|
43
49
|
"loading": false,
|
|
@@ -73,6 +79,7 @@
|
|
|
73
79
|
"variant": "solid",
|
|
74
80
|
"size": "md",
|
|
75
81
|
"fullWidth": false,
|
|
82
|
+
"justify": "center",
|
|
76
83
|
"disabled": false
|
|
77
84
|
},
|
|
78
85
|
"capabilities": [
|
|
@@ -138,6 +145,7 @@
|
|
|
138
145
|
"size": "md",
|
|
139
146
|
"type": "button",
|
|
140
147
|
"fullWidth": false,
|
|
148
|
+
"justify": "center",
|
|
141
149
|
"disabled": false,
|
|
142
150
|
"focusableWhenDisabled": false,
|
|
143
151
|
"loading": false,
|
|
@@ -182,7 +190,7 @@
|
|
|
182
190
|
"part": "root",
|
|
183
191
|
"element": "the button element you write",
|
|
184
192
|
"required": true,
|
|
185
|
-
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width, data-disabled and data-loading when they apply."
|
|
193
|
+
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width, data-disabled and data-loading when they apply."
|
|
186
194
|
},
|
|
187
195
|
{
|
|
188
196
|
"part": "start",
|
|
@@ -212,10 +220,10 @@
|
|
|
212
220
|
"api": [
|
|
213
221
|
{
|
|
214
222
|
"name": "tone",
|
|
215
|
-
"type": "accent | secondary | success | warning | danger",
|
|
223
|
+
"type": "accent | secondary | neutral | success | warning | danger",
|
|
216
224
|
"defaultValue": "accent",
|
|
217
225
|
"appliesTo": "SlButton",
|
|
218
|
-
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
|
|
226
|
+
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
|
|
219
227
|
},
|
|
220
228
|
{
|
|
221
229
|
"name": "variant",
|
|
@@ -252,6 +260,13 @@
|
|
|
252
260
|
"appliesTo": "SlButton",
|
|
253
261
|
"description": "Fills the inline size of the container."
|
|
254
262
|
},
|
|
263
|
+
{
|
|
264
|
+
"name": "justify",
|
|
265
|
+
"type": "center | between",
|
|
266
|
+
"defaultValue": "center",
|
|
267
|
+
"appliesTo": "SlButton",
|
|
268
|
+
"description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
|
|
269
|
+
},
|
|
255
270
|
{
|
|
256
271
|
"name": "disabled",
|
|
257
272
|
"type": "boolean",
|
|
@@ -326,7 +341,7 @@
|
|
|
326
341
|
"part": "root",
|
|
327
342
|
"element": "the anchor element you write",
|
|
328
343
|
"required": true,
|
|
329
|
-
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width and data-disabled when they apply."
|
|
344
|
+
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width and data-disabled when they apply."
|
|
330
345
|
},
|
|
331
346
|
{
|
|
332
347
|
"part": "start",
|
|
@@ -357,10 +372,10 @@
|
|
|
357
372
|
},
|
|
358
373
|
{
|
|
359
374
|
"name": "tone",
|
|
360
|
-
"type": "accent | secondary | success | warning | danger",
|
|
375
|
+
"type": "accent | secondary | neutral | success | warning | danger",
|
|
361
376
|
"defaultValue": "accent",
|
|
362
377
|
"appliesTo": "SlButtonLink",
|
|
363
|
-
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
|
|
378
|
+
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
|
|
364
379
|
},
|
|
365
380
|
{
|
|
366
381
|
"name": "variant",
|
|
@@ -397,6 +412,13 @@
|
|
|
397
412
|
"appliesTo": "SlButtonLink",
|
|
398
413
|
"description": "Fills the inline size of the container."
|
|
399
414
|
},
|
|
415
|
+
{
|
|
416
|
+
"name": "justify",
|
|
417
|
+
"type": "center | between",
|
|
418
|
+
"defaultValue": "center",
|
|
419
|
+
"appliesTo": "SlButtonLink",
|
|
420
|
+
"description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
|
|
421
|
+
},
|
|
400
422
|
{
|
|
401
423
|
"name": "disabled",
|
|
402
424
|
"type": "boolean",
|
|
@@ -450,10 +472,10 @@
|
|
|
450
472
|
},
|
|
451
473
|
{
|
|
452
474
|
"name": "tone",
|
|
453
|
-
"type": "accent | secondary | success | warning | danger",
|
|
475
|
+
"type": "accent | secondary | neutral | success | warning | danger",
|
|
454
476
|
"defaultValue": "secondary",
|
|
455
477
|
"appliesTo": "SlIconButton",
|
|
456
|
-
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
|
|
478
|
+
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
|
|
457
479
|
},
|
|
458
480
|
{
|
|
459
481
|
"name": "variant",
|
|
@@ -562,7 +584,7 @@
|
|
|
562
584
|
"part": "root",
|
|
563
585
|
"element": "the button element you write",
|
|
564
586
|
"required": true,
|
|
565
|
-
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-full-width, data-disabled, data-loading and data-pressed when they apply."
|
|
587
|
+
"purpose": "The control. Carries data-ui=\"button\", data-tone, data-variant and data-size. It also carries data-justify, and data-full-width, data-disabled, data-loading and data-pressed when they apply."
|
|
566
588
|
},
|
|
567
589
|
{
|
|
568
590
|
"part": "start",
|
|
@@ -592,10 +614,10 @@
|
|
|
592
614
|
"api": [
|
|
593
615
|
{
|
|
594
616
|
"name": "tone",
|
|
595
|
-
"type": "accent | secondary | success | warning | danger",
|
|
617
|
+
"type": "accent | secondary | neutral | success | warning | danger",
|
|
596
618
|
"defaultValue": "secondary",
|
|
597
619
|
"appliesTo": "SlToggleButton",
|
|
598
|
-
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does."
|
|
620
|
+
"description": "The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does."
|
|
599
621
|
},
|
|
600
622
|
{
|
|
601
623
|
"name": "variant",
|
|
@@ -632,6 +654,13 @@
|
|
|
632
654
|
"appliesTo": "SlToggleButton",
|
|
633
655
|
"description": "Fills the inline size of the container."
|
|
634
656
|
},
|
|
657
|
+
{
|
|
658
|
+
"name": "justify",
|
|
659
|
+
"type": "center | between",
|
|
660
|
+
"defaultValue": "center",
|
|
661
|
+
"appliesTo": "SlToggleButton",
|
|
662
|
+
"description": "Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document."
|
|
663
|
+
},
|
|
635
664
|
{
|
|
636
665
|
"name": "disabled",
|
|
637
666
|
"type": "boolean",
|
|
@@ -762,6 +791,11 @@
|
|
|
762
791
|
"--slotted-tone-danger-solid-active",
|
|
763
792
|
"--slotted-tone-danger-solid-hover",
|
|
764
793
|
"--slotted-tone-danger-text",
|
|
794
|
+
"--slotted-tone-neutral-on-solid",
|
|
795
|
+
"--slotted-tone-neutral-solid",
|
|
796
|
+
"--slotted-tone-neutral-solid-active",
|
|
797
|
+
"--slotted-tone-neutral-solid-hover",
|
|
798
|
+
"--slotted-tone-neutral-text",
|
|
765
799
|
"--slotted-tone-secondary-on-solid",
|
|
766
800
|
"--slotted-tone-secondary-solid",
|
|
767
801
|
"--slotted-tone-secondary-solid-active",
|
package/docs/button.md
CHANGED
|
@@ -90,12 +90,13 @@ export class ButtonBasic {
|
|
|
90
90
|
|
|
91
91
|
| Name | Type | Default | Applies to | Description |
|
|
92
92
|
| --- | --- | --- | --- | --- |
|
|
93
|
-
| `tone` | `accent \| secondary \| success \| warning \| danger` | accent | SlButton | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
|
|
93
|
+
| `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | accent | SlButton | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
|
|
94
94
|
| `variant` | `solid \| outline \| ghost` | solid | SlButton | How the tone is painted: solid, outline or ghost. |
|
|
95
95
|
| `size` | `sm \| md \| lg` | md | SlButton | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
|
|
96
96
|
| `start` | `[slButtonStart]` | — | SlButton | Content projected before the label, such as an icon, on the element you mark with slButtonStart. It mirrors in a right-to-left document. |
|
|
97
97
|
| `end` | `[slButtonEnd]` | — | SlButton | Content projected after the label, on the element you mark with slButtonEnd. It mirrors in a right-to-left document. |
|
|
98
98
|
| `fullWidth` | `boolean` | false | SlButton | Fills the inline size of the container. |
|
|
99
|
+
| `justify` | `center \| between` | center | SlButton | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
|
|
99
100
|
| `disabled` | `boolean` | false | SlButton | Refuses the action and marks the control unavailable. On its own, it sets the native disabled property, which also removes the control from the tab sequence. |
|
|
100
101
|
| `focusableWhenDisabled` | `boolean` | false | SlButton | Keeps a disabled control in the tab sequence: aria-disabled replaces the native property, and activation is still refused. |
|
|
101
102
|
| `loading` | `boolean` | false | SlButton | Refuses activation, keeps focus, and shows a progress indicator named by messages.loading. |
|
|
@@ -109,12 +110,13 @@ export class ButtonBasic {
|
|
|
109
110
|
| Name | Type | Default | Applies to | Description |
|
|
110
111
|
| --- | --- | --- | --- | --- |
|
|
111
112
|
| `href` | `string` | — | SlButtonLink | The destination. A disabled SlButtonLink does not render it. |
|
|
112
|
-
| `tone` | `accent \| secondary \| success \| warning \| danger` | accent | SlButtonLink | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
|
|
113
|
+
| `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | accent | SlButtonLink | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
|
|
113
114
|
| `variant` | `solid \| outline \| ghost` | solid | SlButtonLink | How the tone is painted: solid, outline or ghost. |
|
|
114
115
|
| `size` | `sm \| md \| lg` | md | SlButtonLink | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
|
|
115
116
|
| `start` | `[slButtonStart]` | — | SlButtonLink | Content projected before the label, such as an icon, on the element you mark with slButtonStart. It mirrors in a right-to-left document. |
|
|
116
117
|
| `end` | `[slButtonEnd]` | — | SlButtonLink | Content projected after the label, on the element you mark with slButtonEnd. It mirrors in a right-to-left document. |
|
|
117
118
|
| `fullWidth` | `boolean` | false | SlButtonLink | Fills the inline size of the container. |
|
|
119
|
+
| `justify` | `center \| between` | center | SlButtonLink | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
|
|
118
120
|
| `disabled` | `boolean` | false | SlButtonLink | Removes the href and refuses activation. The link stays focusable with role="link" and aria-disabled. |
|
|
119
121
|
|
|
120
122
|
### iconButton
|
|
@@ -122,7 +124,7 @@ export class ButtonBasic {
|
|
|
122
124
|
| Name | Type | Default | Applies to | Description |
|
|
123
125
|
| --- | --- | --- | --- | --- |
|
|
124
126
|
| `aria-label \| aria-labelledby` | `string` | required | SlIconButton | The accessible name. Required, because an icon supplies no text. |
|
|
125
|
-
| `tone` | `accent \| secondary \| success \| warning \| danger` | secondary | SlIconButton | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
|
|
127
|
+
| `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | secondary | SlIconButton | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
|
|
126
128
|
| `variant` | `solid \| outline \| ghost` | ghost | SlIconButton | How the tone is painted: solid, outline or ghost. |
|
|
127
129
|
| `size` | `sm \| md \| lg` | md | SlIconButton | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
|
|
128
130
|
| `shape` | `square \| circle` | square | SlIconButton | The corners of the control: square keeps the radius of the control scale, circle rounds it fully. Both are as wide as they are tall. |
|
|
@@ -140,12 +142,13 @@ export class ButtonBasic {
|
|
|
140
142
|
|
|
141
143
|
| Name | Type | Default | Applies to | Description |
|
|
142
144
|
| --- | --- | --- | --- | --- |
|
|
143
|
-
| `tone` | `accent \| secondary \| success \| warning \| danger` | secondary | SlToggleButton | The semantic colour: accent for the primary action, secondary for a neutral one, and success, warning or danger for what the action does. |
|
|
145
|
+
| `tone` | `accent \| secondary \| neutral \| success \| warning \| danger` | secondary | SlToggleButton | The semantic colour: accent for the primary action, secondary for a neutral one, neutral for a primary action drawn in ink where the accent is kept for data, and success, warning or danger for what the action does. |
|
|
144
146
|
| `variant` | `solid \| outline \| ghost` | outline | SlToggleButton | How the tone is painted: solid, outline or ghost. |
|
|
145
147
|
| `size` | `sm \| md \| lg` | md | SlToggleButton | The step of the control scale. Each step reads the --slotted-control-* tokens, so the density of the theme sets the height. |
|
|
146
148
|
| `start` | `[slButtonStart]` | — | SlToggleButton | Content projected before the label, such as an icon, on the element you mark with slButtonStart. It mirrors in a right-to-left document. |
|
|
147
149
|
| `end` | `[slButtonEnd]` | — | SlToggleButton | Content projected after the label, on the element you mark with slButtonEnd. It mirrors in a right-to-left document. |
|
|
148
150
|
| `fullWidth` | `boolean` | false | SlToggleButton | Fills the inline size of the container. |
|
|
151
|
+
| `justify` | `center \| between` | center | SlToggleButton | Where the content sits along the inline axis: center keeps the label and end together in the middle; between sets the label at the start and end at the inline end, as a field trigger reads, with start beside the label. It mirrors in a right-to-left document. |
|
|
149
152
|
| `disabled` | `boolean` | false | SlToggleButton | Refuses the action and marks the control unavailable. On its own, it sets the native disabled property, which also removes the control from the tab sequence. |
|
|
150
153
|
| `focusableWhenDisabled` | `boolean` | false | SlToggleButton | Keeps a disabled control in the tab sequence: aria-disabled replaces the native property, and activation is still refused. |
|
|
151
154
|
| `loading` | `boolean` | false | SlToggleButton | Refuses activation, keeps focus, and shows a progress indicator named by messages.loading. |
|
|
@@ -160,10 +163,11 @@ export class ButtonBasic {
|
|
|
160
163
|
|
|
161
164
|
| Axis | Values | Default |
|
|
162
165
|
| --- | --- | --- |
|
|
163
|
-
| `tone` | `accent`, `secondary`, `success`, `warning`, `danger` | `accent`, `secondary` |
|
|
166
|
+
| `tone` | `accent`, `secondary`, `neutral`, `success`, `warning`, `danger` | `accent`, `secondary` |
|
|
164
167
|
| `variant` | `solid`, `outline`, `ghost` | `solid`, `ghost`, `outline` |
|
|
165
168
|
| `size` | `sm`, `md`, `lg` | `md` |
|
|
166
169
|
| `shape` | `square`, `circle` | `square` |
|
|
170
|
+
| `justify` | `center`, `between` | `center` |
|
|
167
171
|
|
|
168
172
|
## Rules
|
|
169
173
|
|
|
@@ -193,7 +197,7 @@ export class ButtonBasic {
|
|
|
193
197
|
|
|
194
198
|
## Tokens
|
|
195
199
|
|
|
196
|
-
`--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-duration-loop`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-line-height-sm`, `--slotted-radius-full`, `--slotted-space-2`, `--slotted-target-min`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-solid-active`, `--slotted-tone-accent-solid-hover`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-danger-on-solid`, `--slotted-tone-danger-solid`, `--slotted-tone-danger-solid-active`, `--slotted-tone-danger-solid-hover`, `--slotted-tone-danger-text`, `--slotted-tone-secondary-on-solid`, `--slotted-tone-secondary-solid`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-secondary-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-on-solid`, `--slotted-tone-success-solid`, `--slotted-tone-success-solid-active`, `--slotted-tone-success-solid-hover`, `--slotted-tone-success-text`, `--slotted-tone-warning-on-solid`, `--slotted-tone-warning-solid`, `--slotted-tone-warning-solid-active`, `--slotted-tone-warning-solid-hover`, `--slotted-tone-warning-text`
|
|
200
|
+
`--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-duration-loop`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-line-height-sm`, `--slotted-radius-full`, `--slotted-space-2`, `--slotted-target-min`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-solid-active`, `--slotted-tone-accent-solid-hover`, `--slotted-tone-accent-subtle-active`, `--slotted-tone-accent-subtle-hover`, `--slotted-tone-accent-text`, `--slotted-tone-danger-on-solid`, `--slotted-tone-danger-solid`, `--slotted-tone-danger-solid-active`, `--slotted-tone-danger-solid-hover`, `--slotted-tone-danger-text`, `--slotted-tone-neutral-on-solid`, `--slotted-tone-neutral-solid`, `--slotted-tone-neutral-solid-active`, `--slotted-tone-neutral-solid-hover`, `--slotted-tone-neutral-text`, `--slotted-tone-secondary-on-solid`, `--slotted-tone-secondary-solid`, `--slotted-tone-secondary-solid-active`, `--slotted-tone-secondary-solid-hover`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-on-solid`, `--slotted-tone-success-solid`, `--slotted-tone-success-solid-active`, `--slotted-tone-success-solid-hover`, `--slotted-tone-success-text`, `--slotted-tone-warning-on-solid`, `--slotted-tone-warning-solid`, `--slotted-tone-warning-solid-active`, `--slotted-tone-warning-solid-hover`, `--slotted-tone-warning-text`
|
|
197
201
|
|
|
198
202
|
## Examples
|
|
199
203
|
|
package/docs/chart.json
CHANGED
|
@@ -202,6 +202,7 @@
|
|
|
202
202
|
"tooltip-marker",
|
|
203
203
|
"tooltip-label",
|
|
204
204
|
"tooltip-value",
|
|
205
|
+
"tooltip-note",
|
|
205
206
|
"tooltip-total",
|
|
206
207
|
"skeleton",
|
|
207
208
|
"empty",
|
|
@@ -418,6 +419,12 @@
|
|
|
418
419
|
"required": false,
|
|
419
420
|
"purpose": "The value in the series’ format, with the share of the whole on a pie."
|
|
420
421
|
},
|
|
422
|
+
{
|
|
423
|
+
"part": "tooltip-note",
|
|
424
|
+
"element": "div",
|
|
425
|
+
"required": false,
|
|
426
|
+
"purpose": "The label of an upright line on this category, under the title. A label the plot had no room to draw is read here."
|
|
427
|
+
},
|
|
421
428
|
{
|
|
422
429
|
"part": "tooltip-total",
|
|
423
430
|
"element": "div",
|
package/docs/chart.md
CHANGED
package/docs/checkbox.json
CHANGED
|
@@ -172,6 +172,13 @@
|
|
|
172
172
|
"appliesTo": "SlCheckbox",
|
|
173
173
|
"description": "Unset rather than false. Writes aria-invalid on the input and data-invalid on the root, which draws a thicker border in the danger tone."
|
|
174
174
|
},
|
|
175
|
+
{
|
|
176
|
+
"name": "tabIndex",
|
|
177
|
+
"type": "number",
|
|
178
|
+
"defaultValue": "—",
|
|
179
|
+
"appliesTo": "SlCheckbox",
|
|
180
|
+
"description": "Written to the input as tabindex. A composite widget that owns the tab sequence, such as a data grid, passes -1 until the box’s cell is current. Unset leaves the native order."
|
|
181
|
+
},
|
|
175
182
|
{
|
|
176
183
|
"name": "required",
|
|
177
184
|
"type": "boolean",
|
package/docs/checkbox.md
CHANGED
|
@@ -62,6 +62,7 @@ export class CheckboxBasic {}
|
|
|
62
62
|
| `disabled` | `boolean` | from the form control, group or field, or false | SlCheckbox | Unset rather than false, so the box follows a disabled form control, then its checkbox group or field. Written to the input as the native attribute, which removes the box from the tab order and from form submission. |
|
|
63
63
|
| `readOnly` | `boolean` | from the group or field, or false | SlCheckbox | Unset rather than false. A native checkbox has no readonly, so SlCheckbox refuses every change and writes aria-readonly. The box keeps its tab stop, its focus ring and its contrast, and its value is still submitted. |
|
|
64
64
|
| `invalid` | `boolean` | from the group or field, or false | SlCheckbox | Unset rather than false. Writes aria-invalid on the input and data-invalid on the root, which draws a thicker border in the danger tone. |
|
|
65
|
+
| `tabIndex` | `number` | — | SlCheckbox | Written to the input as tabindex. A composite widget that owns the tab sequence, such as a data grid, passes -1 until the box’s cell is current. Unset leaves the native order. |
|
|
65
66
|
| `required` | `boolean` | — | the host element | The native attribute, read once as a static attribute and passed to the input unchanged; SlCheckbox never writes it. A field marks necessity with aria-required instead, because the native attribute turns on browser constraint validation. |
|
|
66
67
|
| `name / value` | `string` | — / on | SlCheckbox | The native submission pair: a checked box submits value under name. Inside a checkbox group, a box without a name takes the group’s, and value is the entry the group’s selection holds. |
|
|
67
68
|
| `exportAs="slCheckbox"` | `SlCheckbox` | — | a template | Reaches the component instance. Its inputElement is the input, whose own focus() and click() methods move focus and toggle the box. |
|
package/docs/currency-field.json
CHANGED
|
@@ -45,6 +45,10 @@
|
|
|
45
45
|
"formatOn": [
|
|
46
46
|
"change",
|
|
47
47
|
"commit"
|
|
48
|
+
],
|
|
49
|
+
"appearance": [
|
|
50
|
+
"control",
|
|
51
|
+
"display"
|
|
48
52
|
]
|
|
49
53
|
},
|
|
50
54
|
"members": {
|
|
@@ -61,7 +65,8 @@
|
|
|
61
65
|
"formatOn": "change",
|
|
62
66
|
"currencyDisplay": "symbol",
|
|
63
67
|
"wheel": false,
|
|
64
|
-
"allowEmpty": false
|
|
68
|
+
"allowEmpty": false,
|
|
69
|
+
"appearance": "control"
|
|
65
70
|
},
|
|
66
71
|
"capabilities": [
|
|
67
72
|
"value",
|
|
@@ -85,6 +90,7 @@
|
|
|
85
90
|
],
|
|
86
91
|
"parts": [
|
|
87
92
|
"root",
|
|
93
|
+
"symbol",
|
|
88
94
|
"input",
|
|
89
95
|
"start",
|
|
90
96
|
"end",
|
|
@@ -115,6 +121,12 @@
|
|
|
115
121
|
"required": true,
|
|
116
122
|
"purpose": "The control. Holds the formatted amount, the identifier, aria-valuenow in major units and aria-valuetext as the reader sees it. It is type=\"text\" because type=\"number\" empties itself whenever the text is not a valid floating-point number. exportAs=\"slCurrencyFieldInput\" reaches inputElement, increment() and decrement()."
|
|
117
123
|
},
|
|
124
|
+
{
|
|
125
|
+
"part": "symbol",
|
|
126
|
+
"element": "span",
|
|
127
|
+
"required": false,
|
|
128
|
+
"purpose": "The currency mark at the display appearance, drawn apart from the digits on the side the locale writes it, muted at the xl step. The input then holds the amount alone and its aria-valuetext carries the mark. Absent under currencyDisplay none and at the control appearance."
|
|
129
|
+
},
|
|
118
130
|
{
|
|
119
131
|
"part": "start",
|
|
120
132
|
"element": "the element carrying slCurrencyFieldStart",
|
|
@@ -195,6 +207,13 @@
|
|
|
195
207
|
"appliesTo": "slCurrencyField, provideCurrencyFieldDefaults",
|
|
196
208
|
"description": "When the text takes the locale’s shape under entry=\"natural\". change regroups on every keystroke; commit holds the reader’s own text until blur, Enter or a step. Cents-first entry generates the text after every edit, so it decides nothing there"
|
|
197
209
|
},
|
|
210
|
+
{
|
|
211
|
+
"name": "appearance",
|
|
212
|
+
"type": "'control' | 'display'",
|
|
213
|
+
"defaultValue": "control",
|
|
214
|
+
"appliesTo": "slCurrencyField",
|
|
215
|
+
"description": "A field among fields, or the headline amount of an entry sheet: the 4xl step, the mark apart and muted, a rule under the amount instead of a box. size and variant do not apply to display"
|
|
216
|
+
},
|
|
198
217
|
{
|
|
199
218
|
"name": "align",
|
|
200
219
|
"type": "'end' | 'start'",
|
|
@@ -446,6 +465,7 @@
|
|
|
446
465
|
},
|
|
447
466
|
"tokens": [
|
|
448
467
|
"--slotted-border-subtle",
|
|
468
|
+
"--slotted-border-width-thin",
|
|
449
469
|
"--slotted-control-border-color",
|
|
450
470
|
"--slotted-control-border-width",
|
|
451
471
|
"--slotted-control-font-family",
|
|
@@ -482,6 +502,7 @@
|
|
|
482
502
|
"--slotted-currency-field-disabled-background",
|
|
483
503
|
"--slotted-currency-field-disabled-border-color",
|
|
484
504
|
"--slotted-currency-field-disabled-color",
|
|
505
|
+
"--slotted-currency-field-display-font-size",
|
|
485
506
|
"--slotted-currency-field-hover-border-color",
|
|
486
507
|
"--slotted-currency-field-icon-size-min",
|
|
487
508
|
"--slotted-currency-field-invalid-border-color",
|
|
@@ -503,6 +524,9 @@
|
|
|
503
524
|
"--slotted-currency-field-subtle-background",
|
|
504
525
|
"--slotted-currency-field-subtle-border-color",
|
|
505
526
|
"--slotted-currency-field-subtle-hover-background",
|
|
527
|
+
"--slotted-currency-field-symbol-color",
|
|
528
|
+
"--slotted-currency-field-symbol-font-size",
|
|
529
|
+
"--slotted-currency-field-underline-color",
|
|
506
530
|
"--slotted-disabled-background",
|
|
507
531
|
"--slotted-disabled-border",
|
|
508
532
|
"--slotted-disabled-foreground",
|
|
@@ -510,10 +534,17 @@
|
|
|
510
534
|
"--slotted-focus-ring-color-invalid",
|
|
511
535
|
"--slotted-focus-ring-offset",
|
|
512
536
|
"--slotted-focus-ring-width",
|
|
537
|
+
"--slotted-font-size-4xl",
|
|
538
|
+
"--slotted-font-size-xl",
|
|
539
|
+
"--slotted-font-weight-medium",
|
|
540
|
+
"--slotted-font-weight-regular",
|
|
541
|
+
"--slotted-letter-spacing-tighter",
|
|
542
|
+
"--slotted-line-height-4xl",
|
|
513
543
|
"--slotted-radius-none",
|
|
514
544
|
"--slotted-radius-xs",
|
|
515
545
|
"--slotted-space-1",
|
|
516
546
|
"--slotted-space-2",
|
|
547
|
+
"--slotted-space-3",
|
|
517
548
|
"--slotted-surface-sunken",
|
|
518
549
|
"--slotted-target-comfortable",
|
|
519
550
|
"--slotted-target-min",
|
package/docs/currency-field.md
CHANGED
|
@@ -38,6 +38,7 @@ Excerpt — not a complete module
|
|
|
38
38
|
| --- | --- | --- |
|
|
39
39
|
| `root` | the element carrying slCurrencyField | yes |
|
|
40
40
|
| `input` | input[slCurrencyFieldInput], as text with role="spinbutton" | yes |
|
|
41
|
+
| `symbol` | span | no |
|
|
41
42
|
| `start` | the element carrying slCurrencyFieldStart | no |
|
|
42
43
|
| `end` | the element carrying slCurrencyFieldEnd | no |
|
|
43
44
|
| `scrub` | any element carrying slCurrencyFieldScrub, inside an adornment | no |
|
|
@@ -55,6 +56,7 @@ Excerpt — not a complete module
|
|
|
55
56
|
| `defaultValue` | `number \| null` | — | slCurrencyFieldInput | What an uncontrolled control starts from, read once. A Reactive Form writes over it through ControlValueAccessor |
|
|
56
57
|
| `entry` | `'cents' \| 'natural'` | cents | slCurrencyFieldInput, provideCurrencyFieldDefaults | How the reader types. cents is the cash register: digits enter at the minor unit and shift left, the separator is never typed and the caret has one legal position. natural is the spreadsheet, and the model number-field uses. The frame paints what the control resolved |
|
|
57
58
|
| `formatOn` | `'change' \| 'commit'` | change | slCurrencyField, provideCurrencyFieldDefaults | When the text takes the locale’s shape under entry="natural". change regroups on every keystroke; commit holds the reader’s own text until blur, Enter or a step. Cents-first entry generates the text after every edit, so it decides nothing there |
|
|
59
|
+
| `appearance` | `'control' \| 'display'` | control | slCurrencyField | A field among fields, or the headline amount of an entry sheet: the 4xl step, the mark apart and muted, a rule under the amount instead of a box. size and variant do not apply to display |
|
|
58
60
|
| `align` | `'end' \| 'start'` | end | slCurrencyField, provideCurrencyFieldDefaults | Which edge the amount is set against. end by default: a column of amounts is compared on its last digit, and the cents-first caret already lives there |
|
|
59
61
|
| `locale` | `string` | the language in force | slCurrencyFieldInput | BCP 47. It decides the separators, where the symbol goes and the numbering system — never the symbol itself, which is the currency’s |
|
|
60
62
|
| `format` | `Intl.NumberFormatOptions` | — | slCurrencyFieldInput | Any other Intl option: currencySign for accounting parentheses, signDisplay, useGrouping, roundingMode. Every key here wins over the family’s own; style and currency are the family’s |
|
|
@@ -107,6 +109,7 @@ Excerpt — not a complete module
|
|
|
107
109
|
| `clamp` | `blur`, `strict`, `none` | `blur` |
|
|
108
110
|
| `currencyDisplay` | `symbol`, `narrowSymbol`, `code`, `name`, `none` | `symbol` |
|
|
109
111
|
| `formatOn` | `change`, `commit` | `change` |
|
|
112
|
+
| `appearance` | `control`, `display` | `control` |
|
|
110
113
|
|
|
111
114
|
## Rules
|
|
112
115
|
|
|
@@ -121,7 +124,7 @@ Excerpt — not a complete module
|
|
|
121
124
|
|
|
122
125
|
## Tokens
|
|
123
126
|
|
|
124
|
-
`--slotted-border-subtle`, `--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-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-inner-size-lg`, `--slotted-control-inner-size-md`, `--slotted-control-inner-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-currency-field-action-size`, `--slotted-currency-field-adornment-color`, `--slotted-currency-field-background`, `--slotted-currency-field-border-color`, `--slotted-currency-field-color`, `--slotted-currency-field-disabled-background`, `--slotted-currency-field-disabled-border-color`, `--slotted-currency-field-disabled-color`, `--slotted-currency-field-hover-border-color`, `--slotted-currency-field-icon-size-min`, `--slotted-currency-field-invalid-border-color`, `--slotted-currency-field-invalid-edge-width`, `--slotted-currency-field-invalid-focus-ring-color`, `--slotted-currency-field-placeholder-color`, `--slotted-currency-field-plain-hover-background`, `--slotted-currency-field-radius`, `--slotted-currency-field-readonly-background`, `--slotted-currency-field-readonly-border-color`, `--slotted-currency-field-scrub-active-color`, `--slotted-currency-field-shadow`, `--slotted-currency-field-stepper-active-background`, `--slotted-currency-field-stepper-color`, `--slotted-currency-field-stepper-disabled-background`, `--slotted-currency-field-stepper-disabled-color`, `--slotted-currency-field-stepper-hover-background`, `--slotted-currency-field-stepper-size`, `--slotted-currency-field-subtle-background`, `--slotted-currency-field-subtle-border-color`, `--slotted-currency-field-subtle-hover-background`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
|
|
127
|
+
`--slotted-border-subtle`, `--slotted-border-width-thin`, `--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-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-inner-size-lg`, `--slotted-control-inner-size-md`, `--slotted-control-inner-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-padding-inline-lg`, `--slotted-control-padding-inline-md`, `--slotted-control-padding-inline-sm`, `--slotted-control-radius`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-currency-field-action-size`, `--slotted-currency-field-adornment-color`, `--slotted-currency-field-background`, `--slotted-currency-field-border-color`, `--slotted-currency-field-color`, `--slotted-currency-field-disabled-background`, `--slotted-currency-field-disabled-border-color`, `--slotted-currency-field-disabled-color`, `--slotted-currency-field-display-font-size`, `--slotted-currency-field-hover-border-color`, `--slotted-currency-field-icon-size-min`, `--slotted-currency-field-invalid-border-color`, `--slotted-currency-field-invalid-edge-width`, `--slotted-currency-field-invalid-focus-ring-color`, `--slotted-currency-field-placeholder-color`, `--slotted-currency-field-plain-hover-background`, `--slotted-currency-field-radius`, `--slotted-currency-field-readonly-background`, `--slotted-currency-field-readonly-border-color`, `--slotted-currency-field-scrub-active-color`, `--slotted-currency-field-shadow`, `--slotted-currency-field-stepper-active-background`, `--slotted-currency-field-stepper-color`, `--slotted-currency-field-stepper-disabled-background`, `--slotted-currency-field-stepper-disabled-color`, `--slotted-currency-field-stepper-hover-background`, `--slotted-currency-field-stepper-size`, `--slotted-currency-field-subtle-background`, `--slotted-currency-field-subtle-border-color`, `--slotted-currency-field-subtle-hover-background`, `--slotted-currency-field-symbol-color`, `--slotted-currency-field-symbol-font-size`, `--slotted-currency-field-underline-color`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-size-4xl`, `--slotted-font-size-xl`, `--slotted-font-weight-medium`, `--slotted-font-weight-regular`, `--slotted-letter-spacing-tighter`, `--slotted-line-height-4xl`, `--slotted-radius-none`, `--slotted-radius-xs`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
|
|
125
128
|
|
|
126
129
|
## Examples
|
|
127
130
|
|
package/docs/dialog.examples.md
CHANGED
|
@@ -622,6 +622,26 @@ Excerpt — not a complete module
|
|
|
622
622
|
<button slButton variant="outline" [slDialogTrigger]="d">Edit project</button>
|
|
623
623
|
```
|
|
624
624
|
|
|
625
|
+
### A layout of its own
|
|
626
|
+
|
|
627
|
+
The panel draws no padding: the header, the body and the footer carry the inset. A layout of its own — one field, a preview, a footer — reads --slotted-dialog-inset-inline and --slotted-dialog-inset-block, so it stands in the column the parts stand in.
|
|
628
|
+
|
|
629
|
+
Excerpt — not a complete module
|
|
630
|
+
|
|
631
|
+
```html
|
|
632
|
+
<sl-dialog #d="slDialog">
|
|
633
|
+
<div class="rename">
|
|
634
|
+
<h2 slDialogTitle>Rename file</h2>
|
|
635
|
+
<input slTextField aria-label="Name" value="report-q3.pdf" />
|
|
636
|
+
<img alt="First page of report-q3.pdf" [src]="preview" />
|
|
637
|
+
</div>
|
|
638
|
+
<footer slDialogFooter><button slButton size="sm">Rename</button></footer>
|
|
639
|
+
</sl-dialog>
|
|
640
|
+
<!-- .rename { display: grid; gap: var(--slotted-space-5);
|
|
641
|
+
padding-block: var(--slotted-dialog-inset-block);
|
|
642
|
+
padding-inline: var(--slotted-dialog-inset-inline); } -->
|
|
643
|
+
```
|
|
644
|
+
|
|
625
645
|
### Deciding once for the application
|
|
626
646
|
|
|
627
647
|
Eight decisions an application takes once instead of eight props on every dialog in a product. Angular Material is the only surveyed library with an equivalent, and a dialog that states one itself still wins.
|
package/docs/dialog.json
CHANGED
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
"part": "content",
|
|
209
209
|
"element": "div",
|
|
210
210
|
"required": true,
|
|
211
|
-
"purpose": "The panel. It carries role=\"dialog\" and, while modal, aria-modal=\"true\". It is a grid of three rows, header, body and footer, and only the body row shrinks, so the actions stay on screen when the body is long."
|
|
211
|
+
"purpose": "The panel. It carries role=\"dialog\" and, while modal, aria-modal=\"true\". It is a grid of three rows, header, body and footer, and only the body row shrinks, so the actions stay on screen when the body is long. It draws no padding: slDialogHeader, slDialogBody and slDialogFooter carry the panel inset. A layout that skips them reads --slotted-dialog-inset-inline and --slotted-dialog-inset-block, which the panel states, and a theme sets the inset with --slotted-dialog-padding-inline and --slotted-dialog-padding-block."
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
214
|
"part": "header",
|
|
@@ -497,7 +497,7 @@
|
|
|
497
497
|
"part": "content",
|
|
498
498
|
"element": "div",
|
|
499
499
|
"required": true,
|
|
500
|
-
"purpose": "The panel. It carries role=\"alertdialog\" and, while modal, aria-modal=\"true\". It is a grid of three rows, header, body and footer, and only the body row shrinks, so the actions stay on screen when the body is long."
|
|
500
|
+
"purpose": "The panel. It carries role=\"alertdialog\" and, while modal, aria-modal=\"true\". It is a grid of three rows, header, body and footer, and only the body row shrinks, so the actions stay on screen when the body is long. It draws no padding: slDialogHeader, slDialogBody and slDialogFooter carry the panel inset. A layout that skips them reads --slotted-dialog-inset-inline and --slotted-dialog-inset-block, which the panel states, and a theme sets the inset with --slotted-dialog-padding-inline and --slotted-dialog-padding-block."
|
|
501
501
|
},
|
|
502
502
|
{
|
|
503
503
|
"part": "header",
|
|
@@ -769,6 +769,10 @@
|
|
|
769
769
|
"--slotted-dialog-description-color",
|
|
770
770
|
"--slotted-dialog-footer-surface",
|
|
771
771
|
"--slotted-dialog-measure",
|
|
772
|
+
"--slotted-dialog-padding-block",
|
|
773
|
+
"--slotted-dialog-padding-block-sm",
|
|
774
|
+
"--slotted-dialog-padding-inline",
|
|
775
|
+
"--slotted-dialog-padding-inline-sm",
|
|
772
776
|
"--slotted-dialog-radius",
|
|
773
777
|
"--slotted-dialog-rule-color",
|
|
774
778
|
"--slotted-dialog-scrim",
|
|
@@ -921,6 +925,14 @@
|
|
|
921
925
|
"source": "<button slButton variant=\"outline\" [slDialogTrigger]=\"d\">Edit project</button>\n",
|
|
922
926
|
"verdict": "excerpt"
|
|
923
927
|
},
|
|
928
|
+
{
|
|
929
|
+
"id": "layout",
|
|
930
|
+
"title": "A layout of its own",
|
|
931
|
+
"note": "The panel draws no padding: the header, the body and the footer carry the inset. A layout of its own — one field, a preview, a footer — reads --slotted-dialog-inset-inline and --slotted-dialog-inset-block, so it stands in the column the parts stand in.",
|
|
932
|
+
"language": "html",
|
|
933
|
+
"source": "<sl-dialog #d=\"slDialog\">\n <div class=\"rename\">\n <h2 slDialogTitle>Rename file</h2>\n <input slTextField aria-label=\"Name\" value=\"report-q3.pdf\" />\n <img alt=\"First page of report-q3.pdf\" [src]=\"preview\" />\n </div>\n <footer slDialogFooter><button slButton size=\"sm\">Rename</button></footer>\n</sl-dialog>\n<!-- .rename { display: grid; gap: var(--slotted-space-5);\n padding-block: var(--slotted-dialog-inset-block);\n padding-inline: var(--slotted-dialog-inset-inline); } -->\n",
|
|
934
|
+
"verdict": "excerpt"
|
|
935
|
+
},
|
|
924
936
|
{
|
|
925
937
|
"id": "defaults",
|
|
926
938
|
"title": "Deciding once for the application",
|
package/docs/dialog.md
CHANGED
|
@@ -210,7 +210,7 @@ See [dialog.props.md](./dialog.props.md).
|
|
|
210
210
|
|
|
211
211
|
## Tokens
|
|
212
212
|
|
|
213
|
-
`--slotted-border-subtle`, `--slotted-border-width-thick`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-icon-size-lg`, `--slotted-control-inner-size-lg`, `--slotted-control-radius`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-dialog-body-color`, `--slotted-dialog-border-color`, `--slotted-dialog-close-active-background`, `--slotted-dialog-close-color`, `--slotted-dialog-close-hover-background`, `--slotted-dialog-color`, `--slotted-dialog-description-color`, `--slotted-dialog-footer-surface`, `--slotted-dialog-measure`, `--slotted-dialog-radius`, `--slotted-dialog-rule-color`, `--slotted-dialog-scrim`, `--slotted-dialog-surface`, `--slotted-dialog-title-color`, `--slotted-dialog-title-font-family`, `--slotted-duration-long`, `--slotted-duration-medium`, `--slotted-duration-short`, `--slotted-easing-exit`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-heading`, `--slotted-font-family-sans`, `--slotted-font-size-lg`, `--slotted-font-size-md`, `--slotted-font-size-xl`, `--slotted-font-weight-semibold`, `--slotted-line-height-md`, `--slotted-radius-lg`, `--slotted-radius-sm`, `--slotted-scrim`, `--slotted-shadow-lg`, `--slotted-space-12`, `--slotted-space-2`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-6`, `--slotted-space-7`, `--slotted-space-8`, `--slotted-surface-raised`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-text`, `--slotted-tone-danger-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-text`, `--slotted-tone-warning-text`, `--slotted-z-index-overlay`
|
|
213
|
+
`--slotted-border-subtle`, `--slotted-border-width-thick`, `--slotted-border-width-thin`, `--slotted-control-font-family`, `--slotted-control-icon-size-lg`, `--slotted-control-inner-size-lg`, `--slotted-control-radius`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-dialog-body-color`, `--slotted-dialog-border-color`, `--slotted-dialog-close-active-background`, `--slotted-dialog-close-color`, `--slotted-dialog-close-hover-background`, `--slotted-dialog-color`, `--slotted-dialog-description-color`, `--slotted-dialog-footer-surface`, `--slotted-dialog-measure`, `--slotted-dialog-padding-block`, `--slotted-dialog-padding-block-sm`, `--slotted-dialog-padding-inline`, `--slotted-dialog-padding-inline-sm`, `--slotted-dialog-radius`, `--slotted-dialog-rule-color`, `--slotted-dialog-scrim`, `--slotted-dialog-surface`, `--slotted-dialog-title-color`, `--slotted-dialog-title-font-family`, `--slotted-duration-long`, `--slotted-duration-medium`, `--slotted-duration-short`, `--slotted-easing-exit`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-family-heading`, `--slotted-font-family-sans`, `--slotted-font-size-lg`, `--slotted-font-size-md`, `--slotted-font-size-xl`, `--slotted-font-weight-semibold`, `--slotted-line-height-md`, `--slotted-radius-lg`, `--slotted-radius-sm`, `--slotted-scrim`, `--slotted-shadow-lg`, `--slotted-space-12`, `--slotted-space-2`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-space-6`, `--slotted-space-7`, `--slotted-space-8`, `--slotted-surface-raised`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-text`, `--slotted-tone-danger-text`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`, `--slotted-tone-secondary-text`, `--slotted-tone-success-text`, `--slotted-tone-warning-text`, `--slotted-z-index-overlay`
|
|
214
214
|
|
|
215
215
|
## Examples
|
|
216
216
|
|
package/docs/event-calendar.json
CHANGED
|
@@ -559,6 +559,13 @@
|
|
|
559
559
|
"appliesTo": "slEventCalendar",
|
|
560
560
|
"description": "Read once; pass it when rendering on a server"
|
|
561
561
|
},
|
|
562
|
+
{
|
|
563
|
+
"name": "now",
|
|
564
|
+
"type": "PlainDateTime",
|
|
565
|
+
"defaultValue": "the clock in timeZone, ticked each minute",
|
|
566
|
+
"appliesTo": "slEventCalendar",
|
|
567
|
+
"description": "Present means the consumer owns it: the clock is no longer read, and today and the now line follow it. A page dated by its content passes it."
|
|
568
|
+
},
|
|
562
569
|
{
|
|
563
570
|
"name": "view",
|
|
564
571
|
"type": "model<EventCalendarView | undefined>",
|
package/docs/event-calendar.md
CHANGED
|
@@ -112,6 +112,7 @@ Excerpt — not a complete module
|
|
|
112
112
|
| `calendars` | `readonly EventCalendarCalendar[]` | [] | slEventCalendar | Key, label and an optional colour slot 1–8 |
|
|
113
113
|
| `date` | `model<PlainDate \| undefined>` | — | slEventCalendar | The day the calendar is on; [(date)] two-way |
|
|
114
114
|
| `defaultDate` | `PlainDate` | today in timeZone | slEventCalendar | Read once; pass it when rendering on a server |
|
|
115
|
+
| `now` | `PlainDateTime` | the clock in timeZone, ticked each minute | slEventCalendar | Present means the consumer owns it: the clock is no longer read, and today and the now line follow it. A page dated by its content passes it. |
|
|
115
116
|
| `view` | `model<EventCalendarView \| undefined>` | month | slEventCalendar | [(view)] two-way; unbound opens on the first of views |
|
|
116
117
|
| `defaultView` | `EventCalendarView` | views[0] | slEventCalendar | Read once |
|
|
117
118
|
| `views` | `readonly EventCalendarView[]` | month,week,day,list | slEventCalendar | The switcher, in order |
|