@uni-design-system/uni-mcp 4.2.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -44
- package/dist/{chunk-VQE52XFX.js → chunk-252ZWTTU.js} +835 -229
- package/dist/chunk-252ZWTTU.js.map +1 -0
- package/dist/http.js +1 -1
- package/dist/server.js +1 -1
- package/dist/stdio.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-VQE52XFX.js.map +0 -1
|
@@ -7,16 +7,16 @@ import { z } from "zod";
|
|
|
7
7
|
// src/data/uni-index.json
|
|
8
8
|
var uni_index_default = {
|
|
9
9
|
meta: {
|
|
10
|
-
version: "
|
|
11
|
-
builtAt: "2026-07-
|
|
10
|
+
version: "7.0.0",
|
|
11
|
+
builtAt: "2026-07-29T15:41:45.453Z",
|
|
12
12
|
frameworks: [
|
|
13
13
|
"angular"
|
|
14
14
|
],
|
|
15
15
|
counts: {
|
|
16
|
-
components:
|
|
17
|
-
tokens:
|
|
16
|
+
components: 71,
|
|
17
|
+
tokens: 305,
|
|
18
18
|
themes: 2,
|
|
19
|
-
examples:
|
|
19
|
+
examples: 133
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
components: [
|
|
@@ -27,7 +27,7 @@ var uni_index_default = {
|
|
|
27
27
|
summary: "",
|
|
28
28
|
description: "",
|
|
29
29
|
category: "feedback",
|
|
30
|
-
version: "
|
|
30
|
+
version: "7.0.0",
|
|
31
31
|
bindings: {
|
|
32
32
|
angular: {
|
|
33
33
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -82,7 +82,7 @@ var uni_index_default = {
|
|
|
82
82
|
}
|
|
83
83
|
],
|
|
84
84
|
guidelines: {
|
|
85
|
-
whenToUse: "",
|
|
85
|
+
whenToUse: "The Alert is used to communicate a state that affects a system, feature or page.\nFor instance, alerts can be used to display errors or any unexpected results from a user's action.",
|
|
86
86
|
dos: [],
|
|
87
87
|
donts: [],
|
|
88
88
|
accessibility: []
|
|
@@ -101,7 +101,7 @@ var uni_index_default = {
|
|
|
101
101
|
summary: "",
|
|
102
102
|
description: "",
|
|
103
103
|
category: "components",
|
|
104
|
-
version: "
|
|
104
|
+
version: "7.0.0",
|
|
105
105
|
bindings: {
|
|
106
106
|
angular: {
|
|
107
107
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -141,10 +141,13 @@ var uni_index_default = {
|
|
|
141
141
|
}
|
|
142
142
|
],
|
|
143
143
|
guidelines: {
|
|
144
|
-
whenToUse: "",
|
|
144
|
+
whenToUse: "Horizontal application bar for the top of a page or section. Project controls with the\n`leading` attribute (menu button, logo) and actions with `trailing` (pushed to the far\nedge); pass `title` or project your own center content. Surface color, height, the\ndivider rule, title typography and spacing all resolve from the theme's `appBar`\noptions, and `sticky` pins the bar to the top of its scroll container.\nPlace it inside your page's `<header>` landmark. It pairs with the Drawer \u2014 see the\nDrawer docs for the full dashboard-shell recipe.",
|
|
145
145
|
dos: [],
|
|
146
146
|
donts: [],
|
|
147
|
-
accessibility: [
|
|
147
|
+
accessibility: [
|
|
148
|
+
"The bar is a styled container, not a landmark \u2014 place it inside your page's `<header>` element.",
|
|
149
|
+
"Give leading/trailing icon buttons text content or `ariaLabel` so they announce."
|
|
150
|
+
]
|
|
148
151
|
},
|
|
149
152
|
relatedTokens: []
|
|
150
153
|
},
|
|
@@ -155,7 +158,7 @@ var uni_index_default = {
|
|
|
155
158
|
summary: "",
|
|
156
159
|
description: "",
|
|
157
160
|
category: "components",
|
|
158
|
-
version: "
|
|
161
|
+
version: "7.0.0",
|
|
159
162
|
bindings: {
|
|
160
163
|
angular: {
|
|
161
164
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -213,10 +216,13 @@ var uni_index_default = {
|
|
|
213
216
|
}
|
|
214
217
|
],
|
|
215
218
|
guidelines: {
|
|
216
|
-
whenToUse: "",
|
|
219
|
+
whenToUse: "Identity avatar with a graceful fallback chain: the image when it loads, initials\nderived from `name` when it doesn't (or was never given), and a themed symbol as the\nlast resort. The name doubles as the accessible label; avatars with no name are marked\ndecorative automatically.\nVariants color initials from the role's container tokens, so avatars follow the brand\npalette in light and dark. The corner radius is the theme's `avatar.options.borderRadius`\ntoken \u2014 circles by default, squares under a `sharp` shape language.",
|
|
217
220
|
dos: [],
|
|
218
221
|
donts: [],
|
|
219
|
-
accessibility: [
|
|
222
|
+
accessibility: [
|
|
223
|
+
'With a `name`, the avatar is `role="img"` labelled by that name; purely decorative avatars are `aria-hidden`.',
|
|
224
|
+
'The group is a `role="group"`; the "+N" chip reads as text.'
|
|
225
|
+
]
|
|
220
226
|
},
|
|
221
227
|
relatedTokens: [
|
|
222
228
|
"avatar.behavior.borderRadius",
|
|
@@ -231,7 +237,7 @@ var uni_index_default = {
|
|
|
231
237
|
summary: "",
|
|
232
238
|
description: "",
|
|
233
239
|
category: "components",
|
|
234
|
-
version: "
|
|
240
|
+
version: "7.0.0",
|
|
235
241
|
bindings: {
|
|
236
242
|
angular: {
|
|
237
243
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -264,7 +270,7 @@ var uni_index_default = {
|
|
|
264
270
|
summary: "",
|
|
265
271
|
description: "",
|
|
266
272
|
category: "primitives",
|
|
267
|
-
version: "
|
|
273
|
+
version: "7.0.0",
|
|
268
274
|
bindings: {
|
|
269
275
|
angular: {
|
|
270
276
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -327,10 +333,14 @@ var uni_index_default = {
|
|
|
327
333
|
}
|
|
328
334
|
],
|
|
329
335
|
guidelines: {
|
|
330
|
-
whenToUse: "",
|
|
336
|
+
whenToUse: "The Background component is a flexible container that allows you to add and control background images in your application.\nIt provides various options for positioning and sizing the background image while maintaining a clean and responsive layout.",
|
|
331
337
|
dos: [],
|
|
332
338
|
donts: [],
|
|
333
|
-
accessibility: [
|
|
339
|
+
accessibility: [
|
|
340
|
+
"Ensure any text overlaid on the background has sufficient contrast",
|
|
341
|
+
"Don't rely on background images to convey important information",
|
|
342
|
+
"Consider providing alternative visual styles for users who prefer reduced motion"
|
|
343
|
+
]
|
|
334
344
|
},
|
|
335
345
|
relatedTokens: []
|
|
336
346
|
},
|
|
@@ -341,7 +351,7 @@ var uni_index_default = {
|
|
|
341
351
|
summary: "",
|
|
342
352
|
description: "",
|
|
343
353
|
category: "feedback",
|
|
344
|
-
version: "
|
|
354
|
+
version: "7.0.0",
|
|
345
355
|
bindings: {
|
|
346
356
|
angular: {
|
|
347
357
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -406,7 +416,7 @@ var uni_index_default = {
|
|
|
406
416
|
}
|
|
407
417
|
],
|
|
408
418
|
guidelines: {
|
|
409
|
-
whenToUse: "",
|
|
419
|
+
whenToUse: "Badges are used to highlight an item's status for quick recognition.",
|
|
410
420
|
dos: [],
|
|
411
421
|
donts: [],
|
|
412
422
|
accessibility: []
|
|
@@ -422,7 +432,7 @@ var uni_index_default = {
|
|
|
422
432
|
summary: "",
|
|
423
433
|
description: "",
|
|
424
434
|
category: "directives",
|
|
425
|
-
version: "
|
|
435
|
+
version: "7.0.0",
|
|
426
436
|
bindings: {
|
|
427
437
|
angular: {
|
|
428
438
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -446,7 +456,7 @@ var uni_index_default = {
|
|
|
446
456
|
summary: "",
|
|
447
457
|
description: "",
|
|
448
458
|
category: "layout",
|
|
449
|
-
version: "
|
|
459
|
+
version: "7.0.0",
|
|
450
460
|
bindings: {
|
|
451
461
|
angular: {
|
|
452
462
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -795,7 +805,7 @@ var uni_index_default = {
|
|
|
795
805
|
}
|
|
796
806
|
],
|
|
797
807
|
guidelines: {
|
|
798
|
-
whenToUse: "",
|
|
808
|
+
whenToUse: "Box is the base Layout component. It is highly configurable.\nEach layout component extends the Box component while providing presets to support their application.",
|
|
799
809
|
dos: [],
|
|
800
810
|
donts: [],
|
|
801
811
|
accessibility: []
|
|
@@ -809,7 +819,7 @@ var uni_index_default = {
|
|
|
809
819
|
summary: "",
|
|
810
820
|
description: "",
|
|
811
821
|
category: "components",
|
|
812
|
-
version: "
|
|
822
|
+
version: "7.0.0",
|
|
813
823
|
bindings: {
|
|
814
824
|
angular: {
|
|
815
825
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -853,10 +863,15 @@ var uni_index_default = {
|
|
|
853
863
|
}
|
|
854
864
|
],
|
|
855
865
|
guidelines: {
|
|
856
|
-
whenToUse: "",
|
|
866
|
+
whenToUse: "Breadcrumbs show where the current page sits in the hierarchy and give one-click\npassage back up the trail. The component renders the WAI-ARIA pattern: a labelled\n`nav` landmark wrapping an ordered list, with the last item marked as the current page\nand separators hidden from assistive tech.\nItems with `href` render as real links. For SPA routing, omit `href` and handle\n`itemClicked` \u2014 items render as link-styled buttons instead. Typography, link and\ncurrent-page colors, the separator symbol, and spacing all resolve from the theme's\n`breadcrumb` options.",
|
|
857
867
|
dos: [],
|
|
858
868
|
donts: [],
|
|
859
|
-
accessibility: [
|
|
869
|
+
accessibility: [
|
|
870
|
+
"Renders the WAI-ARIA pattern: a labelled `nav` landmark wrapping an ordered list.",
|
|
871
|
+
'The last item is `aria-current="page"` and not a link.',
|
|
872
|
+
"Separators are `aria-hidden` \u2014 screen readers hear the trail, not the chevrons.",
|
|
873
|
+
"Set `ariaLabel` when a page has more than one breadcrumb nav."
|
|
874
|
+
]
|
|
860
875
|
},
|
|
861
876
|
relatedTokens: [
|
|
862
877
|
"breadcrumb.behavior.typeface",
|
|
@@ -873,7 +888,7 @@ var uni_index_default = {
|
|
|
873
888
|
summary: "",
|
|
874
889
|
description: "",
|
|
875
890
|
category: "primitives",
|
|
876
|
-
version: "
|
|
891
|
+
version: "7.0.0",
|
|
877
892
|
bindings: {
|
|
878
893
|
angular: {
|
|
879
894
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -996,10 +1011,13 @@ var uni_index_default = {
|
|
|
996
1011
|
}
|
|
997
1012
|
],
|
|
998
1013
|
guidelines: {
|
|
999
|
-
whenToUse: "",
|
|
1014
|
+
whenToUse: "Button is a clickable interactive element that triggers a response.\nYou can place text and icons inside of a button.\nButtons are often used for form submissions and to toggle elements into view.",
|
|
1000
1015
|
dos: [],
|
|
1001
1016
|
donts: [],
|
|
1002
|
-
accessibility: [
|
|
1017
|
+
accessibility: [
|
|
1018
|
+
"A real `<button>` element \u2014 native focus, Enter/Space activation, and `disabled` semantics.",
|
|
1019
|
+
"`aria-busy` is set while `loading`; the spinner and symbols are decorative."
|
|
1020
|
+
]
|
|
1003
1021
|
},
|
|
1004
1022
|
relatedTokens: [
|
|
1005
1023
|
"button.behavior.borderRadius",
|
|
@@ -1013,7 +1031,7 @@ var uni_index_default = {
|
|
|
1013
1031
|
summary: "",
|
|
1014
1032
|
description: "",
|
|
1015
1033
|
category: "primitives",
|
|
1016
|
-
version: "
|
|
1034
|
+
version: "7.0.0",
|
|
1017
1035
|
bindings: {
|
|
1018
1036
|
angular: {
|
|
1019
1037
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1029,10 +1047,12 @@ var uni_index_default = {
|
|
|
1029
1047
|
}
|
|
1030
1048
|
],
|
|
1031
1049
|
guidelines: {
|
|
1032
|
-
whenToUse: "",
|
|
1050
|
+
whenToUse: "The `ButtonGroup` component is used to group related buttons. It applies some base styling to the nested buttons.\nIf this is not desirable, consider using the `Row` component.",
|
|
1033
1051
|
dos: [],
|
|
1034
1052
|
donts: [],
|
|
1035
|
-
accessibility: [
|
|
1053
|
+
accessibility: [
|
|
1054
|
+
"Group the related actions; each button keeps its own accessible name."
|
|
1055
|
+
]
|
|
1036
1056
|
},
|
|
1037
1057
|
relatedTokens: []
|
|
1038
1058
|
},
|
|
@@ -1043,7 +1063,7 @@ var uni_index_default = {
|
|
|
1043
1063
|
summary: "",
|
|
1044
1064
|
description: "",
|
|
1045
1065
|
category: "layout",
|
|
1046
|
-
version: "
|
|
1066
|
+
version: "7.0.0",
|
|
1047
1067
|
bindings: {
|
|
1048
1068
|
angular: {
|
|
1049
1069
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1072,7 +1092,7 @@ var uni_index_default = {
|
|
|
1072
1092
|
}
|
|
1073
1093
|
],
|
|
1074
1094
|
guidelines: {
|
|
1075
|
-
whenToUse: "",
|
|
1095
|
+
whenToUse: "Content container with a themed frame: the border resolves from the **border\nprimitive named by its variant** (`borders.primary` \u2026 `borders.success`), the corner\nradius from the `card` theme options, and an optional elevation shadow. Compose with\nCard Header and Card Content for the standard anatomy \u2014 or point `options.border` at\na custom primitive to restyle every card in the theme at once.",
|
|
1076
1096
|
dos: [],
|
|
1077
1097
|
donts: [],
|
|
1078
1098
|
accessibility: []
|
|
@@ -1088,7 +1108,7 @@ var uni_index_default = {
|
|
|
1088
1108
|
summary: "",
|
|
1089
1109
|
description: "",
|
|
1090
1110
|
category: "layout",
|
|
1091
|
-
version: "
|
|
1111
|
+
version: "7.0.0",
|
|
1092
1112
|
bindings: {
|
|
1093
1113
|
angular: {
|
|
1094
1114
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1112,7 +1132,7 @@ var uni_index_default = {
|
|
|
1112
1132
|
summary: "",
|
|
1113
1133
|
description: "",
|
|
1114
1134
|
category: "layout",
|
|
1115
|
-
version: "
|
|
1135
|
+
version: "7.0.0",
|
|
1116
1136
|
bindings: {
|
|
1117
1137
|
angular: {
|
|
1118
1138
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1153,7 +1173,7 @@ var uni_index_default = {
|
|
|
1153
1173
|
summary: "",
|
|
1154
1174
|
description: "",
|
|
1155
1175
|
category: "layout",
|
|
1156
|
-
version: "
|
|
1176
|
+
version: "7.0.0",
|
|
1157
1177
|
bindings: {
|
|
1158
1178
|
angular: {
|
|
1159
1179
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1194,7 +1214,7 @@ var uni_index_default = {
|
|
|
1194
1214
|
}
|
|
1195
1215
|
],
|
|
1196
1216
|
guidelines: {
|
|
1197
|
-
whenToUse: "",
|
|
1217
|
+
whenToUse: "`Center` is a layout component that centers its child within itself.\n`Center` is an extension to the `Box` component and has all the `Box` attributes available to it.",
|
|
1198
1218
|
dos: [],
|
|
1199
1219
|
donts: [],
|
|
1200
1220
|
accessibility: []
|
|
@@ -1208,7 +1228,7 @@ var uni_index_default = {
|
|
|
1208
1228
|
summary: "",
|
|
1209
1229
|
description: "",
|
|
1210
1230
|
category: "forms",
|
|
1211
|
-
version: "
|
|
1231
|
+
version: "7.0.0",
|
|
1212
1232
|
bindings: {
|
|
1213
1233
|
angular: {
|
|
1214
1234
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1320,10 +1340,18 @@ var uni_index_default = {
|
|
|
1320
1340
|
}
|
|
1321
1341
|
],
|
|
1322
1342
|
guidelines: {
|
|
1323
|
-
whenToUse: "",
|
|
1324
|
-
dos: [
|
|
1325
|
-
|
|
1326
|
-
|
|
1343
|
+
whenToUse: 'Binary choice control for forms: check to opt in, submit to apply. It implements\n`FormCheckboxControl` for the Signal Forms `[field]` directive (or bind\n`[(checked)]` directly), exposes `aria-invalid` once touched, and supports an\n`indeterminate` model for "select all" parents \u2014 cleared automatically on the next\nuser interaction, matching native behavior.\nThe box color, check stroke (the variant\'s paired on-color), and size resolve from\nthe `checkbox` theme options.',
|
|
1344
|
+
dos: [
|
|
1345
|
+
"Use for choices that apply when the form is submitted"
|
|
1346
|
+
],
|
|
1347
|
+
donts: [
|
|
1348
|
+
"Use for instant on/off effects \u2014 that is a toggle"
|
|
1349
|
+
],
|
|
1350
|
+
accessibility: [
|
|
1351
|
+
'Semantic `<input type="checkbox">` + `<label>`; Space toggles.',
|
|
1352
|
+
"`aria-invalid` reflects the error state once the field was touched or is dirty.",
|
|
1353
|
+
'The indeterminate visual state is carried by the native `indeterminate` property, announced as "mixed".'
|
|
1354
|
+
]
|
|
1327
1355
|
},
|
|
1328
1356
|
relatedTokens: [
|
|
1329
1357
|
"checkbox.behavior.size",
|
|
@@ -1337,7 +1365,7 @@ var uni_index_default = {
|
|
|
1337
1365
|
summary: "",
|
|
1338
1366
|
description: "",
|
|
1339
1367
|
category: "feedback",
|
|
1340
|
-
version: "
|
|
1368
|
+
version: "7.0.0",
|
|
1341
1369
|
bindings: {
|
|
1342
1370
|
angular: {
|
|
1343
1371
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1384,7 +1412,7 @@ var uni_index_default = {
|
|
|
1384
1412
|
summary: "",
|
|
1385
1413
|
description: "",
|
|
1386
1414
|
category: "forms",
|
|
1387
|
-
version: "
|
|
1415
|
+
version: "7.0.0",
|
|
1388
1416
|
bindings: {
|
|
1389
1417
|
angular: {
|
|
1390
1418
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1453,7 +1481,7 @@ var uni_index_default = {
|
|
|
1453
1481
|
}
|
|
1454
1482
|
],
|
|
1455
1483
|
guidelines: {
|
|
1456
|
-
whenToUse: "",
|
|
1484
|
+
whenToUse: 'The Data Search input filters a `UniDatasource` as the user types. With a client-side\n`UniRecordDatasource` it applies a predicate over the record\'s fields; with a\n`UniServerSideDatasource` it sends a filter object to the data loader. Pass `fields` to\nrestrict the search to specific columns. A clear button resets the filter.\nIt pairs with the [Data Table](?path=/docs/components-data-table--docs) \u2014 see its\n"With Search" story.',
|
|
1457
1485
|
dos: [],
|
|
1458
1486
|
donts: [],
|
|
1459
1487
|
accessibility: []
|
|
@@ -1467,7 +1495,7 @@ var uni_index_default = {
|
|
|
1467
1495
|
summary: "",
|
|
1468
1496
|
description: "",
|
|
1469
1497
|
category: "data",
|
|
1470
|
-
version: "
|
|
1498
|
+
version: "7.0.0",
|
|
1471
1499
|
bindings: {
|
|
1472
1500
|
angular: {
|
|
1473
1501
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1550,10 +1578,14 @@ var uni_index_default = {
|
|
|
1550
1578
|
}
|
|
1551
1579
|
],
|
|
1552
1580
|
guidelines: {
|
|
1553
|
-
whenToUse: "",
|
|
1581
|
+
whenToUse: "Data grid for structured records: sortable column headers (Sort Header), paging\n(Paginator), field-scoped search (Data Search), row interaction, sticky columns,\nand expandable detail rows \u2014 all themed through the `dataTable` options, which\npoint at shared tokens for surfaces, borders, and typography.",
|
|
1554
1582
|
dos: [],
|
|
1555
1583
|
donts: [],
|
|
1556
|
-
accessibility: [
|
|
1584
|
+
accessibility: [
|
|
1585
|
+
'Column headers use `scope="col"`; sortable headers are real buttons with `aria-sort` on the `<th>`.',
|
|
1586
|
+
'The loading overlay is a `role="status"` region and the table is `aria-busy` while loading.',
|
|
1587
|
+
"Collapsed detail rows are `inert`, out of the accessibility tree until expanded."
|
|
1588
|
+
]
|
|
1557
1589
|
},
|
|
1558
1590
|
relatedTokens: []
|
|
1559
1591
|
},
|
|
@@ -1564,7 +1596,7 @@ var uni_index_default = {
|
|
|
1564
1596
|
summary: "",
|
|
1565
1597
|
description: "",
|
|
1566
1598
|
category: "forms",
|
|
1567
|
-
version: "
|
|
1599
|
+
version: "7.0.0",
|
|
1568
1600
|
bindings: {
|
|
1569
1601
|
angular: {
|
|
1570
1602
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1673,10 +1705,13 @@ var uni_index_default = {
|
|
|
1673
1705
|
}
|
|
1674
1706
|
],
|
|
1675
1707
|
guidelines: {
|
|
1676
|
-
whenToUse: "",
|
|
1708
|
+
whenToUse: "A themed text input that emits its `change` output only after the user pauses typing\n(400 ms by default) and only when the value actually changed \u2014 a signal-based\ndebounce with no rxjs involved. The live value is exposed as the `value` signal, and\n`clear()` empties the field immediately (cancelling any pending emit).\nIt wears the shared input chrome (color, border, typeface, focus ring) via the input\nbox, and offers `pre-input` / `post-input` attribute slots for adornments plus ARIA\npassthrough inputs (`role`, `ariaExpanded`, `ariaControls`, `ariaActivedescendant`)\nso composite widgets can annotate the real input element.\nUsed by the [Search Input](?path=/docs/components-forms-search-input--docs), which\nprojects its magnifier and clear button through the slots and drives the combobox\nARIA through the passthroughs.",
|
|
1677
1709
|
dos: [],
|
|
1678
1710
|
donts: [],
|
|
1679
|
-
accessibility: [
|
|
1711
|
+
accessibility: [
|
|
1712
|
+
"Set `label` \u2014 it becomes the accessible name (`aria-label`) of the inner input.",
|
|
1713
|
+
"The ARIA passthrough inputs (`role`, `ariaExpanded`, `ariaControls`,"
|
|
1714
|
+
]
|
|
1680
1715
|
},
|
|
1681
1716
|
relatedTokens: []
|
|
1682
1717
|
},
|
|
@@ -1687,7 +1722,7 @@ var uni_index_default = {
|
|
|
1687
1722
|
summary: "",
|
|
1688
1723
|
description: "",
|
|
1689
1724
|
category: "feedback",
|
|
1690
|
-
version: "
|
|
1725
|
+
version: "7.0.0",
|
|
1691
1726
|
bindings: {
|
|
1692
1727
|
angular: {
|
|
1693
1728
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1740,10 +1775,14 @@ var uni_index_default = {
|
|
|
1740
1775
|
}
|
|
1741
1776
|
],
|
|
1742
1777
|
guidelines: {
|
|
1743
|
-
whenToUse: "",
|
|
1778
|
+
whenToUse: "Enhanced modal dialog that extends the native HTML `<dialog>` element with built-in animations, composition components, and accessibility features.\n### Features\n- **Native HTML Dialog**: Built on the standard dialog element with full semantic support\n- **Smooth Animations**: Automatic fade transitions for open/close states\n- **Composition Components**: Optional `DialogHeader` and `DialogButtons` for consistent layouts\n- **Programmatic Control**: Open/close methods plus show property binding\n- **Backdrop Handling**: Click-outside-to-close with customizable behavior\n- **Accessibility**: Full keyboard navigation, focus trapping, and screen reader support",
|
|
1744
1779
|
dos: [],
|
|
1745
1780
|
donts: [],
|
|
1746
|
-
accessibility: [
|
|
1781
|
+
accessibility: [
|
|
1782
|
+
"Focus trapping and keyboard navigation (Tab, Escape, Enter)",
|
|
1783
|
+
"Screen reader announcements",
|
|
1784
|
+
"Semantic dialog roles"
|
|
1785
|
+
]
|
|
1747
1786
|
},
|
|
1748
1787
|
relatedTokens: [
|
|
1749
1788
|
"dialog.behavior.borderRadius",
|
|
@@ -1761,7 +1800,7 @@ var uni_index_default = {
|
|
|
1761
1800
|
summary: "",
|
|
1762
1801
|
description: "",
|
|
1763
1802
|
category: "feedback",
|
|
1764
|
-
version: "
|
|
1803
|
+
version: "7.0.0",
|
|
1765
1804
|
bindings: {
|
|
1766
1805
|
angular: {
|
|
1767
1806
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1779,7 +1818,6 @@ var uni_index_default = {
|
|
|
1779
1818
|
kind: "input",
|
|
1780
1819
|
type: "Variant",
|
|
1781
1820
|
required: false,
|
|
1782
|
-
default: "'primary'",
|
|
1783
1821
|
description: ""
|
|
1784
1822
|
},
|
|
1785
1823
|
{
|
|
@@ -1789,6 +1827,13 @@ var uni_index_default = {
|
|
|
1789
1827
|
required: false,
|
|
1790
1828
|
description: ""
|
|
1791
1829
|
},
|
|
1830
|
+
{
|
|
1831
|
+
name: "cancelButtonVariant",
|
|
1832
|
+
kind: "input",
|
|
1833
|
+
type: "Variant",
|
|
1834
|
+
required: false,
|
|
1835
|
+
description: ""
|
|
1836
|
+
},
|
|
1792
1837
|
{
|
|
1793
1838
|
name: "disableConfirm",
|
|
1794
1839
|
kind: "input",
|
|
@@ -1801,7 +1846,6 @@ var uni_index_default = {
|
|
|
1801
1846
|
kind: "input",
|
|
1802
1847
|
type: "NullableSize",
|
|
1803
1848
|
required: false,
|
|
1804
|
-
default: "'md'",
|
|
1805
1849
|
description: ""
|
|
1806
1850
|
},
|
|
1807
1851
|
{
|
|
@@ -1809,7 +1853,6 @@ var uni_index_default = {
|
|
|
1809
1853
|
kind: "input",
|
|
1810
1854
|
type: "NullableSize",
|
|
1811
1855
|
required: false,
|
|
1812
|
-
default: "'lg'",
|
|
1813
1856
|
description: ""
|
|
1814
1857
|
},
|
|
1815
1858
|
{
|
|
@@ -1817,7 +1860,6 @@ var uni_index_default = {
|
|
|
1817
1860
|
kind: "input",
|
|
1818
1861
|
type: "JustifyContent",
|
|
1819
1862
|
required: false,
|
|
1820
|
-
default: "'center'",
|
|
1821
1863
|
description: ""
|
|
1822
1864
|
},
|
|
1823
1865
|
{
|
|
@@ -1846,7 +1888,7 @@ var uni_index_default = {
|
|
|
1846
1888
|
summary: "",
|
|
1847
1889
|
description: "",
|
|
1848
1890
|
category: "feedback",
|
|
1849
|
-
version: "
|
|
1891
|
+
version: "7.0.0",
|
|
1850
1892
|
bindings: {
|
|
1851
1893
|
angular: {
|
|
1852
1894
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1870,7 +1912,7 @@ var uni_index_default = {
|
|
|
1870
1912
|
summary: "",
|
|
1871
1913
|
description: "",
|
|
1872
1914
|
category: "layout",
|
|
1873
|
-
version: "
|
|
1915
|
+
version: "7.0.0",
|
|
1874
1916
|
bindings: {
|
|
1875
1917
|
angular: {
|
|
1876
1918
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1912,7 +1954,7 @@ var uni_index_default = {
|
|
|
1912
1954
|
}
|
|
1913
1955
|
],
|
|
1914
1956
|
guidelines: {
|
|
1915
|
-
whenToUse: "",
|
|
1957
|
+
whenToUse: "Dividers are used to visually separate content in a list or group.",
|
|
1916
1958
|
dos: [],
|
|
1917
1959
|
donts: [],
|
|
1918
1960
|
accessibility: []
|
|
@@ -1926,7 +1968,7 @@ var uni_index_default = {
|
|
|
1926
1968
|
summary: "",
|
|
1927
1969
|
description: "",
|
|
1928
1970
|
category: "directives",
|
|
1929
|
-
version: "
|
|
1971
|
+
version: "7.0.0",
|
|
1930
1972
|
bindings: {
|
|
1931
1973
|
angular: {
|
|
1932
1974
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -1958,7 +2000,7 @@ var uni_index_default = {
|
|
|
1958
2000
|
summary: "",
|
|
1959
2001
|
description: "",
|
|
1960
2002
|
category: "components",
|
|
1961
|
-
version: "
|
|
2003
|
+
version: "7.0.0",
|
|
1962
2004
|
bindings: {
|
|
1963
2005
|
angular: {
|
|
1964
2006
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2012,10 +2054,14 @@ var uni_index_default = {
|
|
|
2012
2054
|
}
|
|
2013
2055
|
],
|
|
2014
2056
|
guidelines: {
|
|
2015
|
-
whenToUse: "",
|
|
2057
|
+
whenToUse: "Navigation drawer with two modes sharing one content slot:\n- **`side`** renders an in-flow `<aside>` that pushes page content \u2014 the classic\n dashboard sidenav. Opening and closing animates its width; a divider border primitive\n separates it from the content, and it is hidden from assistive tech while closed.\n- **`over`** renders a native `<dialog>` in the top layer: focus trapping, Escape, and\n the scrim backdrop come from the platform, and the panel slides in from its edge\n (`position`: `start` or `end`).\n`[(open)]` is two-way; Escape and backdrop clicks keep it in sync. Surface, width,\ndivider, elevation, padding and backdrop all resolve from the theme's `drawer` options.",
|
|
2016
2058
|
dos: [],
|
|
2017
2059
|
donts: [],
|
|
2018
|
-
accessibility: [
|
|
2060
|
+
accessibility: [
|
|
2061
|
+
"Overlay mode is a native `<dialog>`: focus is trapped by `showModal()`, Escape closes, and the backdrop click closes \u2014 all kept in sync with `[(open)]`.",
|
|
2062
|
+
'Give the overlay an accessible name via `ariaLabel` (defaults to "Navigation").',
|
|
2063
|
+
"A closed side drawer is `aria-hidden`, so its links leave the accessibility tree."
|
|
2064
|
+
]
|
|
2019
2065
|
},
|
|
2020
2066
|
relatedTokens: [
|
|
2021
2067
|
"drawer.behavior.color",
|
|
@@ -2033,7 +2079,7 @@ var uni_index_default = {
|
|
|
2033
2079
|
summary: "",
|
|
2034
2080
|
description: "",
|
|
2035
2081
|
category: "components",
|
|
2036
|
-
version: "
|
|
2082
|
+
version: "7.0.0",
|
|
2037
2083
|
bindings: {
|
|
2038
2084
|
angular: {
|
|
2039
2085
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2122,7 +2168,7 @@ var uni_index_default = {
|
|
|
2122
2168
|
summary: "",
|
|
2123
2169
|
description: "",
|
|
2124
2170
|
category: "layout",
|
|
2125
|
-
version: "
|
|
2171
|
+
version: "7.0.0",
|
|
2126
2172
|
bindings: {
|
|
2127
2173
|
angular: {
|
|
2128
2174
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2154,17 +2200,18 @@ var uni_index_default = {
|
|
|
2154
2200
|
</uni-card>
|
|
2155
2201
|
<!-- args:
|
|
2156
2202
|
{
|
|
2157
|
-
collapsed: false,
|
|
2158
2203
|
ngContent: 'Expandable Content',
|
|
2159
2204
|
}
|
|
2160
2205
|
-->`
|
|
2161
2206
|
}
|
|
2162
2207
|
],
|
|
2163
2208
|
guidelines: {
|
|
2164
|
-
whenToUse: "",
|
|
2209
|
+
whenToUse: "Expand is a group of components that can be used in concert to expand/collapse sections of information.\nThe Expand component is transparent in nature and can nest any element to collapse it out of view.\nThe Expand Toggle is an optional convenience element that can be used to trigger the expand/collapse animation.\nIt has been designed to work with the Card Header.",
|
|
2165
2210
|
dos: [],
|
|
2166
2211
|
donts: [],
|
|
2167
|
-
accessibility: [
|
|
2212
|
+
accessibility: [
|
|
2213
|
+
"The toggle carries `aria-expanded` and `aria-controls` for its region (wired automatically inside Expand Area)."
|
|
2214
|
+
]
|
|
2168
2215
|
},
|
|
2169
2216
|
relatedTokens: []
|
|
2170
2217
|
},
|
|
@@ -2175,7 +2222,7 @@ var uni_index_default = {
|
|
|
2175
2222
|
summary: "",
|
|
2176
2223
|
description: "",
|
|
2177
2224
|
category: "layout",
|
|
2178
|
-
version: "
|
|
2225
|
+
version: "7.0.0",
|
|
2179
2226
|
bindings: {
|
|
2180
2227
|
angular: {
|
|
2181
2228
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2191,9 +2238,9 @@ var uni_index_default = {
|
|
|
2191
2238
|
{
|
|
2192
2239
|
name: "initCollapsed",
|
|
2193
2240
|
kind: "input",
|
|
2194
|
-
type: "
|
|
2241
|
+
type: "unknown",
|
|
2195
2242
|
required: false,
|
|
2196
|
-
default: "false",
|
|
2243
|
+
default: "false, { transform: booleanAttribute }",
|
|
2197
2244
|
description: ""
|
|
2198
2245
|
},
|
|
2199
2246
|
{
|
|
@@ -2219,7 +2266,7 @@ var uni_index_default = {
|
|
|
2219
2266
|
title: "Primary",
|
|
2220
2267
|
framework: "angular",
|
|
2221
2268
|
code: `<!-- Storybook story: Primary -->
|
|
2222
|
-
<uni-expand-area title="\${title}" padding="\${padding}" initCollapsed="
|
|
2269
|
+
<uni-expand-area title="\${title}" padding="\${padding}" [initCollapsed]="initCollapsed" #expandArea>
|
|
2223
2270
|
<button text-button (click)="expandArea.toggleExpand()" size="md" variant="ghost" symbolLeft="collapse_all">Collapse area</button>
|
|
2224
2271
|
</uni-expand-area>
|
|
2225
2272
|
<!-- args:
|
|
@@ -2232,7 +2279,7 @@ var uni_index_default = {
|
|
|
2232
2279
|
}
|
|
2233
2280
|
],
|
|
2234
2281
|
guidelines: {
|
|
2235
|
-
whenToUse: "",
|
|
2282
|
+
whenToUse: "The batteries-included collapsible: a themed surface with a header row, an Expand\nToggle, and a content region wired together \u2014 `aria-expanded`/`aria-controls`\nhandled automatically. For custom collapse layouts, compose the lower-level Expand\nand Expand Toggle directly.",
|
|
2236
2283
|
dos: [],
|
|
2237
2284
|
donts: [],
|
|
2238
2285
|
accessibility: []
|
|
@@ -2246,7 +2293,7 @@ var uni_index_default = {
|
|
|
2246
2293
|
summary: "",
|
|
2247
2294
|
description: "",
|
|
2248
2295
|
category: "forms",
|
|
2249
|
-
version: "
|
|
2296
|
+
version: "7.0.0",
|
|
2250
2297
|
bindings: {
|
|
2251
2298
|
angular: {
|
|
2252
2299
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2278,7 +2325,7 @@ var uni_index_default = {
|
|
|
2278
2325
|
}
|
|
2279
2326
|
],
|
|
2280
2327
|
guidelines: {
|
|
2281
|
-
whenToUse: "",
|
|
2328
|
+
whenToUse: 'The Expand Toggle is a chevron icon button that controls collapsed/expanded state. It pairs\nwith the [Expand](?path=/docs/components-expand--docs) component: bind the toggle\'s\n`collapsed` model to the Expand\'s `collapsed` input to build collapsible sections.\nThe icon rotates 180\xB0 between states and shows an "Expand"/"Collapse" tooltip.',
|
|
2282
2329
|
dos: [],
|
|
2283
2330
|
donts: [],
|
|
2284
2331
|
accessibility: []
|
|
@@ -2292,7 +2339,7 @@ var uni_index_default = {
|
|
|
2292
2339
|
summary: "",
|
|
2293
2340
|
description: "",
|
|
2294
2341
|
category: "forms",
|
|
2295
|
-
version: "
|
|
2342
|
+
version: "7.0.0",
|
|
2296
2343
|
bindings: {
|
|
2297
2344
|
angular: {
|
|
2298
2345
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2434,10 +2481,12 @@ var uni_index_default = {
|
|
|
2434
2481
|
}
|
|
2435
2482
|
],
|
|
2436
2483
|
guidelines: {
|
|
2437
|
-
whenToUse: "",
|
|
2484
|
+
whenToUse: "The File Drop Zone component is used in uploading files.",
|
|
2438
2485
|
dos: [],
|
|
2439
2486
|
donts: [],
|
|
2440
|
-
accessibility: [
|
|
2487
|
+
accessibility: [
|
|
2488
|
+
'Without a browse button, the zone itself is `role="button"` with `tabindex="0"` and Enter/Space activation.'
|
|
2489
|
+
]
|
|
2441
2490
|
},
|
|
2442
2491
|
relatedTokens: []
|
|
2443
2492
|
},
|
|
@@ -2448,7 +2497,7 @@ var uni_index_default = {
|
|
|
2448
2497
|
summary: "",
|
|
2449
2498
|
description: "",
|
|
2450
2499
|
category: "layout",
|
|
2451
|
-
version: "
|
|
2500
|
+
version: "7.0.0",
|
|
2452
2501
|
bindings: {
|
|
2453
2502
|
angular: {
|
|
2454
2503
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2531,7 +2580,7 @@ var uni_index_default = {
|
|
|
2531
2580
|
}
|
|
2532
2581
|
],
|
|
2533
2582
|
guidelines: {
|
|
2534
|
-
whenToUse: "",
|
|
2583
|
+
whenToUse: "Grid is a layout component used for composing elements in a grid-like pattern.\nLike tables, grid layouts align elements into columns and rows.\nHowever, grids allow for more control when spanning elements across columns and rows.",
|
|
2535
2584
|
dos: [],
|
|
2536
2585
|
donts: [],
|
|
2537
2586
|
accessibility: []
|
|
@@ -2545,7 +2594,7 @@ var uni_index_default = {
|
|
|
2545
2594
|
summary: "",
|
|
2546
2595
|
description: "",
|
|
2547
2596
|
category: "layout",
|
|
2548
|
-
version: "
|
|
2597
|
+
version: "7.0.0",
|
|
2549
2598
|
bindings: {
|
|
2550
2599
|
angular: {
|
|
2551
2600
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2577,7 +2626,7 @@ var uni_index_default = {
|
|
|
2577
2626
|
summary: "",
|
|
2578
2627
|
description: "",
|
|
2579
2628
|
category: "primitives",
|
|
2580
|
-
version: "
|
|
2629
|
+
version: "7.0.0",
|
|
2581
2630
|
bindings: {
|
|
2582
2631
|
angular: {
|
|
2583
2632
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2593,7 +2642,7 @@ var uni_index_default = {
|
|
|
2593
2642
|
{
|
|
2594
2643
|
name: "name",
|
|
2595
2644
|
kind: "input",
|
|
2596
|
-
type: "
|
|
2645
|
+
type: "IconName",
|
|
2597
2646
|
required: true,
|
|
2598
2647
|
description: ""
|
|
2599
2648
|
}
|
|
@@ -2608,10 +2657,13 @@ var uni_index_default = {
|
|
|
2608
2657
|
}
|
|
2609
2658
|
],
|
|
2610
2659
|
guidelines: {
|
|
2611
|
-
whenToUse: "",
|
|
2660
|
+
whenToUse: "Icons are adaptive svg images. Instead of defining a size or color attributes, Icons\nwill grow to the space allotted to them and use the current color of its parent element.\nHowever, it is possible to statically set the icon color.",
|
|
2612
2661
|
dos: [],
|
|
2613
2662
|
donts: [],
|
|
2614
|
-
accessibility: [
|
|
2663
|
+
accessibility: [
|
|
2664
|
+
"Icons are decorative (`aria-hidden`) \u2014 the parent control carries the accessible name.",
|
|
2665
|
+
"Icons come from the theme's `icons` map (masked with `currentColor`); unknown names render nothing."
|
|
2666
|
+
]
|
|
2615
2667
|
},
|
|
2616
2668
|
relatedTokens: []
|
|
2617
2669
|
},
|
|
@@ -2622,7 +2674,7 @@ var uni_index_default = {
|
|
|
2622
2674
|
summary: "",
|
|
2623
2675
|
description: "",
|
|
2624
2676
|
category: "primitives",
|
|
2625
|
-
version: "
|
|
2677
|
+
version: "7.0.0",
|
|
2626
2678
|
bindings: {
|
|
2627
2679
|
angular: {
|
|
2628
2680
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2708,10 +2760,13 @@ var uni_index_default = {
|
|
|
2708
2760
|
}
|
|
2709
2761
|
],
|
|
2710
2762
|
guidelines: {
|
|
2711
|
-
whenToUse: "",
|
|
2763
|
+
whenToUse: "A square, icon-only button for toolbars, bars, and tight layouts. Renders a real\n`<button>` around a symbol or icon, with ghost as the default variant so it sits\nquietly on any surface. Because there is no visible text, the accessible name comes\nfrom projected (visually hidden) text or `ariaLabel`.",
|
|
2712
2764
|
dos: [],
|
|
2713
2765
|
donts: [],
|
|
2714
|
-
accessibility: [
|
|
2766
|
+
accessibility: [
|
|
2767
|
+
"Icon-only buttons need a name: project text (rendered visually hidden) or set `ariaLabel`.",
|
|
2768
|
+
"The icon/symbol itself is decorative (`aria-hidden`)."
|
|
2769
|
+
]
|
|
2715
2770
|
},
|
|
2716
2771
|
relatedTokens: []
|
|
2717
2772
|
},
|
|
@@ -2722,7 +2777,7 @@ var uni_index_default = {
|
|
|
2722
2777
|
summary: "",
|
|
2723
2778
|
description: "",
|
|
2724
2779
|
category: "forms",
|
|
2725
|
-
version: "
|
|
2780
|
+
version: "7.0.0",
|
|
2726
2781
|
bindings: {
|
|
2727
2782
|
angular: {
|
|
2728
2783
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2834,10 +2889,15 @@ var uni_index_default = {
|
|
|
2834
2889
|
}
|
|
2835
2890
|
],
|
|
2836
2891
|
guidelines: {
|
|
2837
|
-
whenToUse: "",
|
|
2892
|
+
whenToUse: "Single-line text field with the shared input chrome (themed color, border, typeface,\nfocus ring, error state). It implements `FormValueControl<string>`: bind a Signal\nForms field with `[field]`, or drive `[(value)]` directly. Errors style the field\nonly after the user has interacted (touched or dirty), and `required` syncs from\n`required()` validators automatically.\nProject adornments with the `pre-input` / `post-input` slots. For multi-line text\nuse Textarea; for search semantics use Search Input.",
|
|
2838
2893
|
dos: [],
|
|
2839
2894
|
donts: [],
|
|
2840
|
-
accessibility: [
|
|
2895
|
+
accessibility: [
|
|
2896
|
+
"`label` is required and becomes the accessible name (`aria-label`).",
|
|
2897
|
+
"`aria-invalid` reflects the error state once the field was touched or is dirty.",
|
|
2898
|
+
"`aria-required` mirrors the `required` state synced from validators.",
|
|
2899
|
+
"Link external error text with `ariaDescribedBy`."
|
|
2900
|
+
]
|
|
2841
2901
|
},
|
|
2842
2902
|
relatedTokens: [
|
|
2843
2903
|
"input.behavior.typeFace",
|
|
@@ -2862,7 +2922,7 @@ var uni_index_default = {
|
|
|
2862
2922
|
summary: "",
|
|
2863
2923
|
description: "",
|
|
2864
2924
|
category: "forms",
|
|
2865
|
-
version: "
|
|
2925
|
+
version: "7.0.0",
|
|
2866
2926
|
bindings: {
|
|
2867
2927
|
angular: {
|
|
2868
2928
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2921,7 +2981,7 @@ var uni_index_default = {
|
|
|
2921
2981
|
}
|
|
2922
2982
|
],
|
|
2923
2983
|
guidelines: {
|
|
2924
|
-
whenToUse: "",
|
|
2984
|
+
whenToUse: "The Input Box is the themed shell shared by all text-like form controls\n([Input](?path=/docs/components-forms-input--docs),\n[Select](?path=/docs/components-forms-select--docs), Multi Select Dropdown). It projects any\nnative `input` or `select` element, strips the platform's default styling, and applies the\n`input` component theme options: colors, border, radius, focus outline, and the error and\ndisabled states.\nUse it directly when composing a custom form control that should match the design system's\ninput styling.",
|
|
2925
2985
|
dos: [],
|
|
2926
2986
|
donts: [],
|
|
2927
2987
|
accessibility: []
|
|
@@ -2935,7 +2995,7 @@ var uni_index_default = {
|
|
|
2935
2995
|
summary: "",
|
|
2936
2996
|
description: "",
|
|
2937
2997
|
category: "components",
|
|
2938
|
-
version: "
|
|
2998
|
+
version: "7.0.0",
|
|
2939
2999
|
bindings: {
|
|
2940
3000
|
angular: {
|
|
2941
3001
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -2991,7 +3051,7 @@ var uni_index_default = {
|
|
|
2991
3051
|
}
|
|
2992
3052
|
],
|
|
2993
3053
|
guidelines: {
|
|
2994
|
-
whenToUse: "",
|
|
3054
|
+
whenToUse: "The JSON View component provides a simple way to display JSON data in a formatted, readable manner. It renders the JSON in a textarea element, making it easy for users to view and copy the content. The component automatically formats the JSON with proper indentation for better readability.",
|
|
2995
3055
|
dos: [],
|
|
2996
3056
|
donts: [],
|
|
2997
3057
|
accessibility: []
|
|
@@ -3005,7 +3065,7 @@ var uni_index_default = {
|
|
|
3005
3065
|
summary: "",
|
|
3006
3066
|
description: "",
|
|
3007
3067
|
category: "layout",
|
|
3008
|
-
version: "
|
|
3068
|
+
version: "7.0.0",
|
|
3009
3069
|
bindings: {
|
|
3010
3070
|
angular: {
|
|
3011
3071
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3065,10 +3125,13 @@ var uni_index_default = {
|
|
|
3065
3125
|
}
|
|
3066
3126
|
],
|
|
3067
3127
|
guidelines: {
|
|
3068
|
-
whenToUse: "",
|
|
3128
|
+
whenToUse: "Menus can be linked to any component, but it is recommended to use either the `text-button` or `icon-button` component.\nMenus are populated by creating an array of Menu Items (`MenuItem[]`) and binding it to the `Menu` component.\nActions are optional as the `Menu` component also emits the clicked menu item via the `menuItemClicked` output attribute.\n### Menu Item Interface\n```\nMenuItem {\n label: string;\n symbolName?: string;\n action?: () => void;\n}\n```",
|
|
3069
3129
|
dos: [],
|
|
3070
3130
|
donts: [],
|
|
3071
|
-
accessibility: [
|
|
3131
|
+
accessibility: [
|
|
3132
|
+
"Full ARIA menu pattern: arrows and Home/End move, first-letter typeahead jumps, Enter/Space activates.",
|
|
3133
|
+
"ArrowDown/ArrowUp on the trigger opens onto the first/last item; focus returns to the trigger on close."
|
|
3134
|
+
]
|
|
3072
3135
|
},
|
|
3073
3136
|
relatedTokens: []
|
|
3074
3137
|
},
|
|
@@ -3079,7 +3142,7 @@ var uni_index_default = {
|
|
|
3079
3142
|
summary: "",
|
|
3080
3143
|
description: "",
|
|
3081
3144
|
category: "layout",
|
|
3082
|
-
version: "
|
|
3145
|
+
version: "7.0.0",
|
|
3083
3146
|
bindings: {
|
|
3084
3147
|
angular: {
|
|
3085
3148
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3195,7 +3258,7 @@ var uni_index_default = {
|
|
|
3195
3258
|
summary: "",
|
|
3196
3259
|
description: "",
|
|
3197
3260
|
category: "forms",
|
|
3198
|
-
version: "
|
|
3261
|
+
version: "7.0.0",
|
|
3199
3262
|
bindings: {
|
|
3200
3263
|
angular: {
|
|
3201
3264
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3266,10 +3329,13 @@ var uni_index_default = {
|
|
|
3266
3329
|
}
|
|
3267
3330
|
],
|
|
3268
3331
|
guidelines: {
|
|
3269
|
-
whenToUse: "",
|
|
3332
|
+
whenToUse: "Inline multiple-choice: every option visible as a toggleable item, selection\nemitted as an array. Reach for it when the option set is small enough to show all\nat once and seeing the full set helps the choice; when space is tight or options\nare many, use Multi Select Dropdown instead.",
|
|
3270
3333
|
dos: [],
|
|
3271
3334
|
donts: [],
|
|
3272
|
-
accessibility: [
|
|
3335
|
+
accessibility: [
|
|
3336
|
+
"Options are real checkboxes in a labelled group \u2014 Space toggles, Tab moves between them.",
|
|
3337
|
+
"Selection state is announced per option."
|
|
3338
|
+
]
|
|
3273
3339
|
},
|
|
3274
3340
|
relatedTokens: []
|
|
3275
3341
|
},
|
|
@@ -3280,7 +3346,7 @@ var uni_index_default = {
|
|
|
3280
3346
|
summary: "",
|
|
3281
3347
|
description: "",
|
|
3282
3348
|
category: "forms",
|
|
3283
|
-
version: "
|
|
3349
|
+
version: "7.0.0",
|
|
3284
3350
|
bindings: {
|
|
3285
3351
|
angular: {
|
|
3286
3352
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3397,10 +3463,14 @@ var uni_index_default = {
|
|
|
3397
3463
|
}
|
|
3398
3464
|
],
|
|
3399
3465
|
guidelines: {
|
|
3400
|
-
whenToUse: "",
|
|
3466
|
+
whenToUse: "Multiple choice behind a compact trigger: a disclosure popover containing a search\nfield, checkbox options, and a Done action. Implements `FormValueControl` with an\narray value for Signal Forms, and shows a summarized selection in the trigger.\nThe popover surface, radius, and elevation resolve from the\n`multiSelectDropdown` theme options.",
|
|
3401
3467
|
dos: [],
|
|
3402
3468
|
donts: [],
|
|
3403
|
-
accessibility: [
|
|
3469
|
+
accessibility: [
|
|
3470
|
+
'The trigger is a disclosure (`aria-haspopup="dialog"`, `aria-expanded`); the popover contains native focusables Tab reaches normally.',
|
|
3471
|
+
"The search input is labelled; options are real checkboxes announced with their state.",
|
|
3472
|
+
"Escape closes the popover and returns focus to the trigger."
|
|
3473
|
+
]
|
|
3404
3474
|
},
|
|
3405
3475
|
relatedTokens: []
|
|
3406
3476
|
},
|
|
@@ -3411,7 +3481,7 @@ var uni_index_default = {
|
|
|
3411
3481
|
summary: "",
|
|
3412
3482
|
description: "",
|
|
3413
3483
|
category: "feedback",
|
|
3414
|
-
version: "
|
|
3484
|
+
version: "7.0.0",
|
|
3415
3485
|
bindings: {
|
|
3416
3486
|
angular: {
|
|
3417
3487
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3636,10 +3706,15 @@ var uni_index_default = {
|
|
|
3636
3706
|
}
|
|
3637
3707
|
],
|
|
3638
3708
|
guidelines: {
|
|
3639
|
-
whenToUse: "",
|
|
3709
|
+
whenToUse: 'Attention indicator anchored to whatever it wraps \u2014 an icon button, a nav item, an\navatar. Three shapes: `dot` (something is new), `count` (how many), and `pill`\n(counts that need room); `maxCount` caps the display ("99+"). Position it on any\ncorner of the wrapped content.\nRadius and offset resolve from the `notificationBadge` theme options; the badge\nwears the active `variant` color.',
|
|
3640
3710
|
dos: [],
|
|
3641
|
-
donts: [
|
|
3642
|
-
|
|
3711
|
+
donts: [
|
|
3712
|
+
"Convey urgency by color alone \u2014 the count/dot shape carries the signal"
|
|
3713
|
+
],
|
|
3714
|
+
accessibility: [
|
|
3715
|
+
'The visual badge is hidden from assistive tech; a visually-hidden text announcement carries the meaning ("3 notifications").',
|
|
3716
|
+
"Provide `ariaLabel` context when the wrapped control's purpose isn't obvious from its own name."
|
|
3717
|
+
]
|
|
3643
3718
|
},
|
|
3644
3719
|
relatedTokens: []
|
|
3645
3720
|
},
|
|
@@ -3650,7 +3725,7 @@ var uni_index_default = {
|
|
|
3650
3725
|
summary: "",
|
|
3651
3726
|
description: "",
|
|
3652
3727
|
category: "feedback",
|
|
3653
|
-
version: "
|
|
3728
|
+
version: "7.0.0",
|
|
3654
3729
|
bindings: {
|
|
3655
3730
|
angular: {
|
|
3656
3731
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3674,7 +3749,7 @@ var uni_index_default = {
|
|
|
3674
3749
|
summary: "",
|
|
3675
3750
|
description: "",
|
|
3676
3751
|
category: "data",
|
|
3677
|
-
version: "
|
|
3752
|
+
version: "7.0.0",
|
|
3678
3753
|
bindings: {
|
|
3679
3754
|
angular: {
|
|
3680
3755
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3734,10 +3809,13 @@ var uni_index_default = {
|
|
|
3734
3809
|
}
|
|
3735
3810
|
],
|
|
3736
3811
|
guidelines: {
|
|
3737
|
-
whenToUse: "",
|
|
3812
|
+
whenToUse: "The Paginator drives page navigation for any `UniDatasource`: first/previous/next/last\nbuttons, truncated page numbers, an editable page size, and a page jumper. Each section can\nbe toggled independently, so it can render as a full control bar or a minimal pager \u2014 the\n[Data Table](?path=/docs/components-data-table--docs) stories use one paginator in the header\nfor page size and another in the footer for page numbers.",
|
|
3738
3813
|
dos: [],
|
|
3739
3814
|
donts: [],
|
|
3740
|
-
accessibility: [
|
|
3815
|
+
accessibility: [
|
|
3816
|
+
'A `role="navigation"` landmark; pages are real buttons with `aria-current="page"` on the active one.',
|
|
3817
|
+
"The page-number input is labelled."
|
|
3818
|
+
]
|
|
3741
3819
|
},
|
|
3742
3820
|
relatedTokens: [
|
|
3743
3821
|
"paginator.behavior.gap",
|
|
@@ -3756,7 +3834,7 @@ var uni_index_default = {
|
|
|
3756
3834
|
summary: "",
|
|
3757
3835
|
description: "",
|
|
3758
3836
|
category: "layout",
|
|
3759
|
-
version: "
|
|
3837
|
+
version: "7.0.0",
|
|
3760
3838
|
bindings: {
|
|
3761
3839
|
angular: {
|
|
3762
3840
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3789,10 +3867,12 @@ var uni_index_default = {
|
|
|
3789
3867
|
}
|
|
3790
3868
|
],
|
|
3791
3869
|
guidelines: {
|
|
3792
|
-
whenToUse: "",
|
|
3870
|
+
whenToUse: "Popover is a non-modal dialog that floats around a trigger.\nAny type of content can be added inside a popover; however, it is most suitable for short callouts or compact actions.\n**Note:** It is important to add the `trigger` attribute to the item you want to open and be referenced to the Popover.",
|
|
3793
3871
|
dos: [],
|
|
3794
3872
|
donts: [],
|
|
3795
|
-
accessibility: [
|
|
3873
|
+
accessibility: [
|
|
3874
|
+
"The trigger carries `aria-expanded` and `aria-controls`; light-dismiss comes from the native popover."
|
|
3875
|
+
]
|
|
3796
3876
|
},
|
|
3797
3877
|
relatedTokens: []
|
|
3798
3878
|
},
|
|
@@ -3803,7 +3883,7 @@ var uni_index_default = {
|
|
|
3803
3883
|
summary: "",
|
|
3804
3884
|
description: "",
|
|
3805
3885
|
category: "feedback",
|
|
3806
|
-
version: "
|
|
3886
|
+
version: "7.0.0",
|
|
3807
3887
|
bindings: {
|
|
3808
3888
|
angular: {
|
|
3809
3889
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3851,10 +3931,12 @@ var uni_index_default = {
|
|
|
3851
3931
|
}
|
|
3852
3932
|
],
|
|
3853
3933
|
guidelines: {
|
|
3854
|
-
whenToUse: "",
|
|
3934
|
+
whenToUse: "The progress bar is a graphical way of representing progress to completion.",
|
|
3855
3935
|
dos: [],
|
|
3856
3936
|
donts: [],
|
|
3857
|
-
accessibility: [
|
|
3937
|
+
accessibility: [
|
|
3938
|
+
'`role="progressbar"` with `aria-valuenow`/`min`/`max`; name it with `ariaLabel`.'
|
|
3939
|
+
]
|
|
3858
3940
|
},
|
|
3859
3941
|
relatedTokens: []
|
|
3860
3942
|
},
|
|
@@ -3865,7 +3947,7 @@ var uni_index_default = {
|
|
|
3865
3947
|
summary: "",
|
|
3866
3948
|
description: "",
|
|
3867
3949
|
category: "feedback",
|
|
3868
|
-
version: "
|
|
3950
|
+
version: "7.0.0",
|
|
3869
3951
|
bindings: {
|
|
3870
3952
|
angular: {
|
|
3871
3953
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -3905,10 +3987,12 @@ var uni_index_default = {
|
|
|
3905
3987
|
}
|
|
3906
3988
|
],
|
|
3907
3989
|
guidelines: {
|
|
3908
|
-
whenToUse: "",
|
|
3990
|
+
whenToUse: "The progress gauge is a graphical way of representing progress to completion as well as scoring or ranking.",
|
|
3909
3991
|
dos: [],
|
|
3910
3992
|
donts: [],
|
|
3911
|
-
accessibility: [
|
|
3993
|
+
accessibility: [
|
|
3994
|
+
'`role="progressbar"` with `aria-valuenow`/`min`/`max`; name it with `ariaLabel`. The SVG is decorative.'
|
|
3995
|
+
]
|
|
3912
3996
|
},
|
|
3913
3997
|
relatedTokens: []
|
|
3914
3998
|
},
|
|
@@ -3919,7 +4003,7 @@ var uni_index_default = {
|
|
|
3919
4003
|
summary: "",
|
|
3920
4004
|
description: "",
|
|
3921
4005
|
category: "forms",
|
|
3922
|
-
version: "
|
|
4006
|
+
version: "7.0.0",
|
|
3923
4007
|
bindings: {
|
|
3924
4008
|
angular: {
|
|
3925
4009
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4044,10 +4128,18 @@ var uni_index_default = {
|
|
|
4044
4128
|
}
|
|
4045
4129
|
],
|
|
4046
4130
|
guidelines: {
|
|
4047
|
-
whenToUse: "",
|
|
4048
|
-
dos: [
|
|
4049
|
-
|
|
4050
|
-
|
|
4131
|
+
whenToUse: "Single choice among a small set of visible options. The component renders the whole\ngroup from an `options` array (`{ label, value, disabled? }`), implements\n`FormValueControl<string>` for Signal Forms, and defaults each group to a unique\n`name` so multiple groups on a page never collide.\nRing, fill, and size resolve from the `radio` theme options; the selected dot wears\nthe active `variant` color.",
|
|
4132
|
+
dos: [
|
|
4133
|
+
"Use for 2\u20135 mutually exclusive options that should all be visible"
|
|
4134
|
+
],
|
|
4135
|
+
donts: [
|
|
4136
|
+
"Use for long option lists \u2014 that is a select"
|
|
4137
|
+
],
|
|
4138
|
+
accessibility: [
|
|
4139
|
+
'`role="radiogroup"` labelled by the group label via `aria-labelledby`.',
|
|
4140
|
+
"Native radio inputs: arrow keys move selection within the group, Tab moves out.",
|
|
4141
|
+
"`aria-invalid` reflects the error state once the group was touched or is dirty."
|
|
4142
|
+
]
|
|
4051
4143
|
},
|
|
4052
4144
|
relatedTokens: [
|
|
4053
4145
|
"radio.behavior.size",
|
|
@@ -4062,7 +4154,7 @@ var uni_index_default = {
|
|
|
4062
4154
|
summary: "",
|
|
4063
4155
|
description: "",
|
|
4064
4156
|
category: "directives",
|
|
4065
|
-
version: "
|
|
4157
|
+
version: "7.0.0",
|
|
4066
4158
|
bindings: {
|
|
4067
4159
|
angular: {
|
|
4068
4160
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4086,7 +4178,7 @@ var uni_index_default = {
|
|
|
4086
4178
|
summary: "",
|
|
4087
4179
|
description: "",
|
|
4088
4180
|
category: "layout",
|
|
4089
|
-
version: "
|
|
4181
|
+
version: "7.0.0",
|
|
4090
4182
|
bindings: {
|
|
4091
4183
|
angular: {
|
|
4092
4184
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4127,7 +4219,7 @@ var uni_index_default = {
|
|
|
4127
4219
|
}
|
|
4128
4220
|
],
|
|
4129
4221
|
guidelines: {
|
|
4130
|
-
whenToUse: "",
|
|
4222
|
+
whenToUse: "`Row` is a layout component used to group elements in a horizontal arrangement and applies a uniform space between them.\n`Row` is an extension to the `Box` component and has all the `Box` attributes available to it.",
|
|
4131
4223
|
dos: [],
|
|
4132
4224
|
donts: [],
|
|
4133
4225
|
accessibility: []
|
|
@@ -4141,7 +4233,7 @@ var uni_index_default = {
|
|
|
4141
4233
|
summary: "",
|
|
4142
4234
|
description: "",
|
|
4143
4235
|
category: "layout",
|
|
4144
|
-
version: "
|
|
4236
|
+
version: "7.0.0",
|
|
4145
4237
|
bindings: {
|
|
4146
4238
|
angular: {
|
|
4147
4239
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4274,7 +4366,7 @@ var uni_index_default = {
|
|
|
4274
4366
|
}
|
|
4275
4367
|
],
|
|
4276
4368
|
guidelines: {
|
|
4277
|
-
whenToUse: "",
|
|
4369
|
+
whenToUse: "A scroll container with themed, consistent scrollbars across browsers \u2014 thin\nEmotion-styled WebKit scrollbars with a `scrollbar-width`/`scrollbar-color`\nfallback. It detects scrollable state via ResizeObserver (the `scrollable` output)\nand offers `scrollToTop`/`scrollToBottom` for programmatic control.",
|
|
4278
4370
|
dos: [],
|
|
4279
4371
|
donts: [],
|
|
4280
4372
|
accessibility: []
|
|
@@ -4288,7 +4380,7 @@ var uni_index_default = {
|
|
|
4288
4380
|
summary: "",
|
|
4289
4381
|
description: "",
|
|
4290
4382
|
category: "forms",
|
|
4291
|
-
version: "
|
|
4383
|
+
version: "7.0.0",
|
|
4292
4384
|
bindings: {
|
|
4293
4385
|
angular: {
|
|
4294
4386
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4381,10 +4473,14 @@ var uni_index_default = {
|
|
|
4381
4473
|
}
|
|
4382
4474
|
],
|
|
4383
4475
|
guidelines: {
|
|
4384
|
-
whenToUse: "",
|
|
4476
|
+
whenToUse: "Generic search field wearing the shared input chrome: a decorative leading magnifier,\na clear button while there's a query, and Enter to submit (`search`). `change` emits\ndebounced as the user types \u2014 use it to refresh results or the `suggestions` input.\nWith `suggestions`, the field becomes an ARIA combobox: entries render in a listbox\nunder the field, ArrowUp/Down move the highlight, Enter selects (emitting both\n`suggestionSelected` and `search`), and Escape closes the list first, then clears the\nquery. The suggestion list's surface, elevation and radius resolve from the theme's\n`searchInput` options, alongside the search/clear symbols.",
|
|
4385
4477
|
dos: [],
|
|
4386
4478
|
donts: [],
|
|
4387
|
-
accessibility: [
|
|
4479
|
+
accessibility: [
|
|
4480
|
+
"The field is an ARIA combobox: `aria-expanded`, `aria-controls`, and `aria-activedescendant` track the suggestion listbox.",
|
|
4481
|
+
"ArrowUp/ArrowDown move the active option, Enter selects, Escape closes the list first and clears the query second.",
|
|
4482
|
+
'The magnifier is decorative; the clear button has an accessible name ("Clear search").'
|
|
4483
|
+
]
|
|
4388
4484
|
},
|
|
4389
4485
|
relatedTokens: []
|
|
4390
4486
|
},
|
|
@@ -4395,7 +4491,7 @@ var uni_index_default = {
|
|
|
4395
4491
|
summary: "",
|
|
4396
4492
|
description: "",
|
|
4397
4493
|
category: "forms",
|
|
4398
|
-
version: "
|
|
4494
|
+
version: "7.0.0",
|
|
4399
4495
|
bindings: {
|
|
4400
4496
|
angular: {
|
|
4401
4497
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4514,10 +4610,13 @@ var uni_index_default = {
|
|
|
4514
4610
|
}
|
|
4515
4611
|
],
|
|
4516
4612
|
guidelines: {
|
|
4517
|
-
whenToUse: "",
|
|
4613
|
+
whenToUse: "Single choice from a list, on a native `<select>` \u2014 platform pickers on mobile,\nplatform keyboard behavior everywhere. Options are typed generically\n(`options: T[]` with `optionLabel`/`optionValue` accessors), and the component\nimplements `FormValueControl` for the Signal Forms `[field]` directive. Errors\nstyle the field only after interaction, matching Input.\nFor choosing several, use Multi Select; for type-to-filter over large sets, use\nSearch Input's type-ahead.",
|
|
4518
4614
|
dos: [],
|
|
4519
4615
|
donts: [],
|
|
4520
|
-
accessibility: [
|
|
4616
|
+
accessibility: [
|
|
4617
|
+
"Native `<select>`: platform keyboard interaction and mobile pickers for free.",
|
|
4618
|
+
"`label` becomes the accessible name; `aria-invalid` reflects the touched error state."
|
|
4619
|
+
]
|
|
4521
4620
|
},
|
|
4522
4621
|
relatedTokens: []
|
|
4523
4622
|
},
|
|
@@ -4528,7 +4627,7 @@ var uni_index_default = {
|
|
|
4528
4627
|
summary: "",
|
|
4529
4628
|
description: "",
|
|
4530
4629
|
category: "components",
|
|
4531
|
-
version: "
|
|
4630
|
+
version: "7.0.0",
|
|
4532
4631
|
bindings: {
|
|
4533
4632
|
angular: {
|
|
4534
4633
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4598,10 +4697,15 @@ var uni_index_default = {
|
|
|
4598
4697
|
}
|
|
4599
4698
|
],
|
|
4600
4699
|
guidelines: {
|
|
4601
|
-
whenToUse: "",
|
|
4700
|
+
whenToUse: "Loading placeholder that sketches the shape of incoming content: `text` renders one or\nmore lines (ending on a short line, as real copy would), `rect` stands in for media and\ncharts, `circle` for avatars. Skeletons paint with the theme's surface tokens so they\nsit naturally on any brand in both modes, and the shimmer sweep only animates for users\nwho allow motion \u2014 under `prefers-reduced-motion` it degrades to calm static blocks.\nSkeletons are `aria-hidden`; announce loading on the container (e.g. `aria-busy`)\nwhere your app knows what is actually loading.",
|
|
4602
4701
|
dos: [],
|
|
4603
|
-
donts: [
|
|
4604
|
-
|
|
4702
|
+
donts: [
|
|
4703
|
+
"Announce individual skeletons to assistive tech \u2014 they are decorative placeholders"
|
|
4704
|
+
],
|
|
4705
|
+
accessibility: [
|
|
4706
|
+
"Skeletons are `aria-hidden` \u2014 announce loading on the container (e.g. `aria-busy`) where your app knows what is loading.",
|
|
4707
|
+
"The shimmer respects `prefers-reduced-motion`, degrading to static blocks."
|
|
4708
|
+
]
|
|
4605
4709
|
},
|
|
4606
4710
|
relatedTokens: [
|
|
4607
4711
|
"skeleton.behavior.color",
|
|
@@ -4619,7 +4723,7 @@ var uni_index_default = {
|
|
|
4619
4723
|
summary: "",
|
|
4620
4724
|
description: "",
|
|
4621
4725
|
category: "forms",
|
|
4622
|
-
version: "
|
|
4726
|
+
version: "7.0.0",
|
|
4623
4727
|
bindings: {
|
|
4624
4728
|
angular: {
|
|
4625
4729
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4732,10 +4836,14 @@ var uni_index_default = {
|
|
|
4732
4836
|
}
|
|
4733
4837
|
],
|
|
4734
4838
|
guidelines: {
|
|
4735
|
-
whenToUse: "",
|
|
4839
|
+
whenToUse: 'Range slider for picking a number within bounds. It renders a native\n`<input type="range">`, so keyboard interaction (arrows, Home/End, Page Up/Down) and\nthe ARIA slider contract come from the platform. The same Signal Forms contract as\nInput applies \u2014 bind with the `[field]` directive or drive `[(value)]` directly.\nFill and thumb color, track color, radii and geometry resolve from the theme\'s\n`slider` options; the fill level rides a CSS custom property, so dragging never\nregenerates styles.',
|
|
4736
4840
|
dos: [],
|
|
4737
4841
|
donts: [],
|
|
4738
|
-
accessibility: [
|
|
4842
|
+
accessibility: [
|
|
4843
|
+
'Native `<input type="range">`: arrows, Home/End, and Page Up/Down come from the platform, and the ARIA slider contract (valuenow/min/max) is native.',
|
|
4844
|
+
"`label` is required and becomes the accessible name.",
|
|
4845
|
+
"Expose the current value textually nearby and link it with `ariaDescribedBy` when the number matters."
|
|
4846
|
+
]
|
|
4739
4847
|
},
|
|
4740
4848
|
relatedTokens: [
|
|
4741
4849
|
"slider.behavior.color",
|
|
@@ -4752,7 +4860,7 @@ var uni_index_default = {
|
|
|
4752
4860
|
summary: "",
|
|
4753
4861
|
description: "",
|
|
4754
4862
|
category: "feedback",
|
|
4755
|
-
version: "
|
|
4863
|
+
version: "7.0.0",
|
|
4756
4864
|
bindings: {
|
|
4757
4865
|
angular: {
|
|
4758
4866
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4826,7 +4934,7 @@ var uni_index_default = {
|
|
|
4826
4934
|
}
|
|
4827
4935
|
],
|
|
4828
4936
|
guidelines: {
|
|
4829
|
-
whenToUse: "",
|
|
4937
|
+
whenToUse: "The Snackbar component is used to give feedback to users after an action has taken place.\nIt appears near the bottom center of the screen temporarily and floats above the UI to not affect the application's layout.\nA side action can be defined (e.g. undoing a process or navigating to the details of a newly created record).",
|
|
4830
4938
|
dos: [],
|
|
4831
4939
|
donts: [],
|
|
4832
4940
|
accessibility: []
|
|
@@ -4844,7 +4952,7 @@ var uni_index_default = {
|
|
|
4844
4952
|
summary: "",
|
|
4845
4953
|
description: "",
|
|
4846
4954
|
category: "data",
|
|
4847
|
-
version: "
|
|
4955
|
+
version: "7.0.0",
|
|
4848
4956
|
bindings: {
|
|
4849
4957
|
angular: {
|
|
4850
4958
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4889,7 +4997,7 @@ var uni_index_default = {
|
|
|
4889
4997
|
}
|
|
4890
4998
|
],
|
|
4891
4999
|
guidelines: {
|
|
4892
|
-
whenToUse: "",
|
|
5000
|
+
whenToUse: "The Sort Header wraps a column heading and cycles the bound datasource's sort state\n(ascending \u2192 descending \u2192 unsorted) when clicked. An animated arrow indicates the current\nsort direction. It is used by the [Data Table](?path=/docs/components-data-table--docs)\nfor sortable columns, but can wrap any header content bound to a `UniDatasource`.",
|
|
4893
5001
|
dos: [],
|
|
4894
5002
|
donts: [],
|
|
4895
5003
|
accessibility: []
|
|
@@ -4903,7 +5011,7 @@ var uni_index_default = {
|
|
|
4903
5011
|
summary: "",
|
|
4904
5012
|
description: "",
|
|
4905
5013
|
category: "layout",
|
|
4906
|
-
version: "
|
|
5014
|
+
version: "7.0.0",
|
|
4907
5015
|
bindings: {
|
|
4908
5016
|
angular: {
|
|
4909
5017
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -4944,7 +5052,7 @@ var uni_index_default = {
|
|
|
4944
5052
|
}
|
|
4945
5053
|
],
|
|
4946
5054
|
guidelines: {
|
|
4947
|
-
whenToUse: "",
|
|
5055
|
+
whenToUse: "`Stack` is a layout component used to group elements in a vertical arrangement and applies a uniform space between them.\n`Stack` is an extension to the `Box` component and has all the `Box` attributes available to it.",
|
|
4948
5056
|
dos: [],
|
|
4949
5057
|
donts: [],
|
|
4950
5058
|
accessibility: []
|
|
@@ -4958,7 +5066,7 @@ var uni_index_default = {
|
|
|
4958
5066
|
summary: "",
|
|
4959
5067
|
description: "",
|
|
4960
5068
|
category: "components",
|
|
4961
|
-
version: "
|
|
5069
|
+
version: "7.0.0",
|
|
4962
5070
|
bindings: {
|
|
4963
5071
|
angular: {
|
|
4964
5072
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5029,10 +5137,15 @@ var uni_index_default = {
|
|
|
5029
5137
|
}
|
|
5030
5138
|
],
|
|
5031
5139
|
guidelines: {
|
|
5032
|
-
whenToUse: "",
|
|
5140
|
+
whenToUse: 'The KPI tile a dashboard leads with: a muted label, a large headline value (numbers\nauto-compact \u2014 `48234` renders "48.2K"), an optional signed delta, and an optional\ndecorative sparkline.\nThe delta\'s color is decided by **direction \xD7 whether up is good**, never direction\nalone \u2014 set `upIsGood` to `false` for measures like churn, errors, or cost, and a\nfalling number correctly reads as good news. The arrow is accompanied by\nscreen-reader text ("up"/"down"), so state never relies on color alone, and `caption`\nnames the comparison period.\nFrame (surface, border primitive, radius), typography (the type scale\'s `stat` role\nfor values), delta inks (the semantic `success`/`error`), and sparkline colors all\nresolve from the theme\'s `stat` options.',
|
|
5033
5141
|
dos: [],
|
|
5034
|
-
donts: [
|
|
5035
|
-
|
|
5142
|
+
donts: [
|
|
5143
|
+
"Rely on delta color alone \u2014 the arrow + wording carry direction for everyone"
|
|
5144
|
+
],
|
|
5145
|
+
accessibility: [
|
|
5146
|
+
'The delta arrow is decorative; screen readers hear "up"/"down" in words instead.',
|
|
5147
|
+
"The sparkline is `aria-hidden` \u2014 the value and delta carry the information."
|
|
5148
|
+
]
|
|
5036
5149
|
},
|
|
5037
5150
|
relatedTokens: [
|
|
5038
5151
|
"stat.behavior.labelTypeface",
|
|
@@ -5055,7 +5168,7 @@ var uni_index_default = {
|
|
|
5055
5168
|
summary: "",
|
|
5056
5169
|
description: "",
|
|
5057
5170
|
category: "primitives",
|
|
5058
|
-
version: "
|
|
5171
|
+
version: "7.0.0",
|
|
5059
5172
|
bindings: {
|
|
5060
5173
|
angular: {
|
|
5061
5174
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5107,10 +5220,12 @@ var uni_index_default = {
|
|
|
5107
5220
|
}
|
|
5108
5221
|
],
|
|
5109
5222
|
guidelines: {
|
|
5110
|
-
whenToUse: "",
|
|
5223
|
+
whenToUse: "The Symbol Component integrates the latest [Material Symbols](https://fonts.google.com/icons?icon.platform=web&icon.style=Rounded&icon.set=Material+Symbols&query=les).\nMaterial Symbols consolidates over 3,275 glyphs (icons) in a single font file with a wide range of design variants.\nSymbols are available in three styles and four adjustable variable font styles (fill, weight, grade, and optical size).",
|
|
5111
5224
|
dos: [],
|
|
5112
5225
|
donts: [],
|
|
5113
|
-
accessibility: [
|
|
5226
|
+
accessibility: [
|
|
5227
|
+
"Symbols are decorative (`aria-hidden`) \u2014 the parent control carries the accessible name."
|
|
5228
|
+
]
|
|
5114
5229
|
},
|
|
5115
5230
|
relatedTokens: [
|
|
5116
5231
|
"symbol.behavior.fill",
|
|
@@ -5126,7 +5241,7 @@ var uni_index_default = {
|
|
|
5126
5241
|
summary: "",
|
|
5127
5242
|
description: "",
|
|
5128
5243
|
category: "components",
|
|
5129
|
-
version: "
|
|
5244
|
+
version: "7.0.0",
|
|
5130
5245
|
bindings: {
|
|
5131
5246
|
angular: {
|
|
5132
5247
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5166,7 +5281,7 @@ var uni_index_default = {
|
|
|
5166
5281
|
summary: "",
|
|
5167
5282
|
description: "",
|
|
5168
5283
|
category: "components",
|
|
5169
|
-
version: "
|
|
5284
|
+
version: "7.0.0",
|
|
5170
5285
|
bindings: {
|
|
5171
5286
|
angular: {
|
|
5172
5287
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5196,10 +5311,20 @@ var uni_index_default = {
|
|
|
5196
5311
|
}
|
|
5197
5312
|
],
|
|
5198
5313
|
guidelines: {
|
|
5199
|
-
whenToUse: "",
|
|
5200
|
-
dos: [
|
|
5201
|
-
|
|
5202
|
-
|
|
5314
|
+
whenToUse: "Tabs organize peer views behind a single switcher. Each `uni-tab` supplies a label and\nits panel content; only the selected panel is instantiated, so heavy tab content costs\nnothing until visited.\nThe default tokens render underline tabs; a theme that sets `borderRadius: 'max'` and\nan `activeColor` gets segmented pills without any component changes.",
|
|
5315
|
+
dos: [
|
|
5316
|
+
"Use for peer views of the same subject (details, activity, settings)",
|
|
5317
|
+
"Keep labels to one or two words"
|
|
5318
|
+
],
|
|
5319
|
+
donts: [
|
|
5320
|
+
"Nest tabs inside tabs",
|
|
5321
|
+
"Use tabs for sequential steps \u2014 that is a stepper"
|
|
5322
|
+
],
|
|
5323
|
+
accessibility: [
|
|
5324
|
+
"Full WAI-ARIA tabs pattern: `tablist`/`tab`/`tabpanel` roles with wired",
|
|
5325
|
+
"Arrow keys move between tabs with selection following focus, wrapping at the ends;",
|
|
5326
|
+
"Roving tabindex: only the selected tab sits in the tab order; the panel itself is"
|
|
5327
|
+
]
|
|
5203
5328
|
},
|
|
5204
5329
|
relatedTokens: [
|
|
5205
5330
|
"tabs.behavior.typeface",
|
|
@@ -5220,7 +5345,7 @@ var uni_index_default = {
|
|
|
5220
5345
|
summary: "",
|
|
5221
5346
|
description: "",
|
|
5222
5347
|
category: "data",
|
|
5223
|
-
version: "
|
|
5348
|
+
version: "7.0.0",
|
|
5224
5349
|
bindings: {
|
|
5225
5350
|
angular: {
|
|
5226
5351
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5273,7 +5398,7 @@ var uni_index_default = {
|
|
|
5273
5398
|
}
|
|
5274
5399
|
],
|
|
5275
5400
|
guidelines: {
|
|
5276
|
-
whenToUse: "",
|
|
5401
|
+
whenToUse: "Compact label for classifying content \u2014 categories, states, filters. Tags are\ndisplay-only chips that wear the active variant's colors; for removable,\ntype-to-add chips (a future input variant), see the roadmap.",
|
|
5277
5402
|
dos: [],
|
|
5278
5403
|
donts: [],
|
|
5279
5404
|
accessibility: []
|
|
@@ -5287,7 +5412,7 @@ var uni_index_default = {
|
|
|
5287
5412
|
summary: "",
|
|
5288
5413
|
description: "",
|
|
5289
5414
|
category: "primitives",
|
|
5290
|
-
version: "
|
|
5415
|
+
version: "7.0.0",
|
|
5291
5416
|
bindings: {
|
|
5292
5417
|
angular: {
|
|
5293
5418
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5368,10 +5493,17 @@ var uni_index_default = {
|
|
|
5368
5493
|
}
|
|
5369
5494
|
],
|
|
5370
5495
|
guidelines: {
|
|
5371
|
-
whenToUse: "",
|
|
5372
|
-
dos: [
|
|
5373
|
-
|
|
5374
|
-
|
|
5496
|
+
whenToUse: 'The typography primitive, applied as an **attribute on any element** so your HTML\nsemantics stay intact. The attribute value is the typeface \u2014\n`<h1 uni-text="display-small">` \u2014 and `[uni-text]="role()"` binds it dynamically.\nWith no value, the typeface is inferred from the host element (`h1` \u2192\n`headline-large`, `p` \u2192 `body-1-long`, `small` \u2192 `caption`, `blockquote` \u2192 `quote`,\nfalling back to `title-small`), so plain semantic markup is correctly set with zero\nconfiguration. `color` takes any theme color token; `align`, `nowrap`, `maxWidth`,\nand `ellipsis` handle common text layout.',
|
|
5497
|
+
dos: [
|
|
5498
|
+
"Reach for semantic elements first and let the element-aware defaults set the type"
|
|
5499
|
+
],
|
|
5500
|
+
donts: [
|
|
5501
|
+
'Use `span uni-text="headline-large"` where a real heading belongs'
|
|
5502
|
+
],
|
|
5503
|
+
accessibility: [
|
|
5504
|
+
"Text never replaces your elements \u2014 headings stay `h1`\u2013`h6`, paragraphs stay `p`,",
|
|
5505
|
+
"Type is styling only: pick the element for meaning, the typeface for appearance"
|
|
5506
|
+
]
|
|
5375
5507
|
},
|
|
5376
5508
|
relatedTokens: []
|
|
5377
5509
|
},
|
|
@@ -5382,7 +5514,7 @@ var uni_index_default = {
|
|
|
5382
5514
|
summary: "",
|
|
5383
5515
|
description: "",
|
|
5384
5516
|
category: "primitives",
|
|
5385
|
-
version: "
|
|
5517
|
+
version: "7.0.0",
|
|
5386
5518
|
bindings: {
|
|
5387
5519
|
angular: {
|
|
5388
5520
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5492,10 +5624,13 @@ var uni_index_default = {
|
|
|
5492
5624
|
}
|
|
5493
5625
|
],
|
|
5494
5626
|
guidelines: {
|
|
5495
|
-
whenToUse: "",
|
|
5627
|
+
whenToUse: "Multi-line text field with the same Signal Forms contract as Input \u2014 use it anywhere\nfree-form text runs past one line (comments, descriptions, feedback). It shares Input's\nthemed chrome (color, border, error state, focus outline, typeface) and adds\ntextarea-specific behavior from the theme's `textarea` options: default `rows` and the\nCSS `resize` mode. Bind it to a form with the `[field]` directive, or drive `[(value)]`\ndirectly.",
|
|
5496
5628
|
dos: [],
|
|
5497
5629
|
donts: [],
|
|
5498
|
-
accessibility: [
|
|
5630
|
+
accessibility: [
|
|
5631
|
+
"`label` is required and becomes the accessible name (`aria-label`).",
|
|
5632
|
+
"Error state is exposed as `aria-invalid` once the field was touched or is dirty; wire your error text with `ariaDescribedBy`."
|
|
5633
|
+
]
|
|
5499
5634
|
},
|
|
5500
5635
|
relatedTokens: [
|
|
5501
5636
|
"textarea.behavior.rows",
|
|
@@ -5509,7 +5644,7 @@ var uni_index_default = {
|
|
|
5509
5644
|
summary: "",
|
|
5510
5645
|
description: "",
|
|
5511
5646
|
category: "primitives",
|
|
5512
|
-
version: "
|
|
5647
|
+
version: "7.0.0",
|
|
5513
5648
|
bindings: {
|
|
5514
5649
|
angular: {
|
|
5515
5650
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5532,6 +5667,64 @@ var uni_index_default = {
|
|
|
5532
5667
|
},
|
|
5533
5668
|
relatedTokens: []
|
|
5534
5669
|
},
|
|
5670
|
+
{
|
|
5671
|
+
id: "theme-switch",
|
|
5672
|
+
name: "ThemeSwitch",
|
|
5673
|
+
status: "stable",
|
|
5674
|
+
summary: "",
|
|
5675
|
+
description: "",
|
|
5676
|
+
category: "components",
|
|
5677
|
+
version: "7.0.0",
|
|
5678
|
+
bindings: {
|
|
5679
|
+
angular: {
|
|
5680
|
+
importPath: "@uni-design-system/uni-angular",
|
|
5681
|
+
selectorOrTag: "uni-theme-switch",
|
|
5682
|
+
api: [
|
|
5683
|
+
{
|
|
5684
|
+
name: "ariaLabel",
|
|
5685
|
+
kind: "input",
|
|
5686
|
+
type: "string",
|
|
5687
|
+
required: false,
|
|
5688
|
+
default: "'Theme'",
|
|
5689
|
+
description: "Accessible name for the underlying select."
|
|
5690
|
+
},
|
|
5691
|
+
{
|
|
5692
|
+
name: "themeChanged",
|
|
5693
|
+
kind: "output",
|
|
5694
|
+
type: "ThemeName",
|
|
5695
|
+
required: false,
|
|
5696
|
+
description: "Emits the selected theme key after it has been applied."
|
|
5697
|
+
}
|
|
5698
|
+
]
|
|
5699
|
+
}
|
|
5700
|
+
},
|
|
5701
|
+
examples: [
|
|
5702
|
+
{
|
|
5703
|
+
title: "Primary",
|
|
5704
|
+
framework: "angular",
|
|
5705
|
+
code: '<!-- Storybook story: Primary -->\n<div stack-layout gap="md" [width]="420">\n<uni-theme-switch></uni-theme-switch>\n<uni-card>\n <uni-card-header>Live preview</uni-card-header>\n <uni-card-content>\n <div stack-layout gap="md">\n <span uni-text typeface="body-2-long">\n Pick a theme above \u2014 every registered theme (UNI_THEMES) restyles\n this card and these buttons instantly.\n </span>\n <div row-layout gap="sm">\n <button text-button variant="primary">Primary</button>\n <button text-button variant="secondary">Secondary</button>\n <button text-button variant="warn">Danger</button>\n </div>\n </div>\n </uni-card-content>\n</uni-card>\n</div>\n<!-- args:\n{}\n-->'
|
|
5706
|
+
}
|
|
5707
|
+
],
|
|
5708
|
+
guidelines: {
|
|
5709
|
+
whenToUse: "Drop-in switcher for every theme registered via `UNI_THEMES`. Renders a `uni-select` over\n`ThemeService.themeOptions` and applies the choice through `ThemeService.selectTheme`, so the\nselection persists across reloads exactly like any other theme change. Use it wherever an app\noffers a theme choice \u2014 a settings page, an app-bar action, or a light/dark toggle backed by two\nregistered themes. Because it reads the registry from the injected `UNI_THEMES` token, adding a\nnew theme to the registry is all it takes for the switcher to offer it.",
|
|
5710
|
+
dos: [
|
|
5711
|
+
"Register every selectable theme in `UNI_THEMES`; the switcher derives its options from the registry.",
|
|
5712
|
+
'Give the control a meaningful `ariaLabel` when "Theme" is ambiguous in context (e.g. "Editor color theme").',
|
|
5713
|
+
"Use `themeChanged` for side effects like analytics or syncing a user preference to a backend."
|
|
5714
|
+
],
|
|
5715
|
+
donts: [
|
|
5716
|
+
"Don't call `ThemeService.theme.set()` alongside the switcher \u2014 bypassing `selectTheme` skips persistence and leaves the select out of sync.",
|
|
5717
|
+
"Don't hardcode theme ids in app logic; read `ThemeService.selectedThemeKey()` instead.",
|
|
5718
|
+
"Don't use it for the palette-generation workflow \u2014 that's the Theme Builder; the switcher only picks among registered themes."
|
|
5719
|
+
],
|
|
5720
|
+
accessibility: [
|
|
5721
|
+
"Built on a native `<select>` (via `uni-select`), so keyboard and screen-reader interaction come from the platform.",
|
|
5722
|
+
'Exposes `ariaLabel` (default "Theme") as the accessible name for the control.',
|
|
5723
|
+
"Theme changes restyle in place without moving focus or reloading, so context is preserved for assistive tech."
|
|
5724
|
+
]
|
|
5725
|
+
},
|
|
5726
|
+
relatedTokens: []
|
|
5727
|
+
},
|
|
5535
5728
|
{
|
|
5536
5729
|
id: "toggle",
|
|
5537
5730
|
name: "Toggle",
|
|
@@ -5539,7 +5732,7 @@ var uni_index_default = {
|
|
|
5539
5732
|
summary: "",
|
|
5540
5733
|
description: "",
|
|
5541
5734
|
category: "forms",
|
|
5542
|
-
version: "
|
|
5735
|
+
version: "7.0.0",
|
|
5543
5736
|
bindings: {
|
|
5544
5737
|
angular: {
|
|
5545
5738
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5643,10 +5836,18 @@ var uni_index_default = {
|
|
|
5643
5836
|
}
|
|
5644
5837
|
],
|
|
5645
5838
|
guidelines: {
|
|
5646
|
-
whenToUse: "",
|
|
5647
|
-
dos: [
|
|
5648
|
-
|
|
5649
|
-
|
|
5839
|
+
whenToUse: "A switch-style control for turning an option on or off with immediate effect \u2014\nprefer it over a checkbox when the change applies instantly (settings, feature\nswitches) rather than as part of a submitted form. It implements\n`FormCheckboxControl`, so it binds with the Signal Forms `[field]` directive or a\ndirect `[(checked)]` model.\nTrack, knob, and size resolve from the `toggle` theme options; the checked state\nwears the active `variant` color.",
|
|
5840
|
+
dos: [
|
|
5841
|
+
"Use for instant on/off effects (settings, feature switches)"
|
|
5842
|
+
],
|
|
5843
|
+
donts: [
|
|
5844
|
+
"Use in submitted forms where nothing happens until save \u2014 that is a checkbox"
|
|
5845
|
+
],
|
|
5846
|
+
accessibility: [
|
|
5847
|
+
'Semantic `<input type="checkbox">` with `role="switch"`, properly associated with its label.',
|
|
5848
|
+
"Space toggles; focus indicators are provided for keyboard navigation.",
|
|
5849
|
+
"Screen readers announce the label and on/off state."
|
|
5850
|
+
]
|
|
5650
5851
|
},
|
|
5651
5852
|
relatedTokens: [
|
|
5652
5853
|
"toggle.behavior.size",
|
|
@@ -5661,7 +5862,7 @@ var uni_index_default = {
|
|
|
5661
5862
|
summary: "",
|
|
5662
5863
|
description: "",
|
|
5663
5864
|
category: "feedback",
|
|
5664
|
-
version: "
|
|
5865
|
+
version: "7.0.0",
|
|
5665
5866
|
bindings: {
|
|
5666
5867
|
angular: {
|
|
5667
5868
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5717,10 +5918,14 @@ var uni_index_default = {
|
|
|
5717
5918
|
}
|
|
5718
5919
|
],
|
|
5719
5920
|
guidelines: {
|
|
5720
|
-
whenToUse: "",
|
|
5921
|
+
whenToUse: "A tooltip is a brief, informative message that appears when a user interacts with an element.\nIf using a tooltip within a body of text, set the `inlineText` option to `true`.",
|
|
5721
5922
|
dos: [],
|
|
5722
5923
|
donts: [],
|
|
5723
|
-
accessibility: [
|
|
5924
|
+
accessibility: [
|
|
5925
|
+
'`role="tooltip"` linked to the trigger via `aria-describedby` (wired once \u2014 the bubble is always in the DOM).',
|
|
5926
|
+
"Shows on keyboard focus, hides on blur and Escape; stays open while hovered (WCAG 1.4.13).",
|
|
5927
|
+
'Non-focusable triggers get `tabindex="0"` so keyboard users can reach the tooltip.'
|
|
5928
|
+
]
|
|
5724
5929
|
},
|
|
5725
5930
|
relatedTokens: [
|
|
5726
5931
|
"tooltip.behavior.borderRadius",
|
|
@@ -5736,7 +5941,7 @@ var uni_index_default = {
|
|
|
5736
5941
|
summary: "",
|
|
5737
5942
|
description: "",
|
|
5738
5943
|
category: "layout",
|
|
5739
|
-
version: "
|
|
5944
|
+
version: "7.0.0",
|
|
5740
5945
|
bindings: {
|
|
5741
5946
|
angular: {
|
|
5742
5947
|
importPath: "@uni-design-system/uni-angular",
|
|
@@ -5769,7 +5974,7 @@ var uni_index_default = {
|
|
|
5769
5974
|
}
|
|
5770
5975
|
],
|
|
5771
5976
|
guidelines: {
|
|
5772
|
-
whenToUse: "",
|
|
5977
|
+
whenToUse: "Used to add space between elements and wraps automatically if there isn't enough space.",
|
|
5773
5978
|
dos: [],
|
|
5774
5979
|
donts: [],
|
|
5775
5980
|
accessibility: []
|
|
@@ -6693,13 +6898,13 @@ var uni_index_default = {
|
|
|
6693
6898
|
},
|
|
6694
6899
|
{
|
|
6695
6900
|
id: "spacing.none",
|
|
6696
|
-
value:
|
|
6901
|
+
value: 0,
|
|
6697
6902
|
type: "spacing",
|
|
6698
6903
|
kind: "style",
|
|
6699
6904
|
target: "emotion-css",
|
|
6700
6905
|
themeValues: {
|
|
6701
|
-
LightTheme:
|
|
6702
|
-
DarkTheme:
|
|
6906
|
+
LightTheme: 0,
|
|
6907
|
+
DarkTheme: 0
|
|
6703
6908
|
}
|
|
6704
6909
|
},
|
|
6705
6910
|
{
|
|
@@ -7758,6 +7963,114 @@ var uni_index_default = {
|
|
|
7758
7963
|
DarkTheme: '{"background":"rgba(255, 255, 255, 0.6)","backdropFilter":"blur(2px)"}'
|
|
7759
7964
|
}
|
|
7760
7965
|
},
|
|
7966
|
+
{
|
|
7967
|
+
id: "dialogButtons.behavior.gap",
|
|
7968
|
+
value: "md",
|
|
7969
|
+
type: "string",
|
|
7970
|
+
kind: "behavioral",
|
|
7971
|
+
target: "component-prop",
|
|
7972
|
+
appliesTo: "dialogButtons",
|
|
7973
|
+
themeValues: {
|
|
7974
|
+
LightTheme: "md",
|
|
7975
|
+
DarkTheme: "md"
|
|
7976
|
+
}
|
|
7977
|
+
},
|
|
7978
|
+
{
|
|
7979
|
+
id: "dialogButtons.behavior.padding",
|
|
7980
|
+
value: "md",
|
|
7981
|
+
type: "string",
|
|
7982
|
+
kind: "behavioral",
|
|
7983
|
+
target: "component-prop",
|
|
7984
|
+
appliesTo: "dialogButtons",
|
|
7985
|
+
themeValues: {
|
|
7986
|
+
LightTheme: "md",
|
|
7987
|
+
DarkTheme: "md"
|
|
7988
|
+
}
|
|
7989
|
+
},
|
|
7990
|
+
{
|
|
7991
|
+
id: "dialogButtons.behavior.paddingBottom",
|
|
7992
|
+
value: "lg",
|
|
7993
|
+
type: "string",
|
|
7994
|
+
kind: "behavioral",
|
|
7995
|
+
target: "component-prop",
|
|
7996
|
+
appliesTo: "dialogButtons",
|
|
7997
|
+
themeValues: {
|
|
7998
|
+
LightTheme: "lg",
|
|
7999
|
+
DarkTheme: "lg"
|
|
8000
|
+
}
|
|
8001
|
+
},
|
|
8002
|
+
{
|
|
8003
|
+
id: "dialogButtons.behavior.justifyContent",
|
|
8004
|
+
value: "center",
|
|
8005
|
+
type: "string",
|
|
8006
|
+
kind: "behavioral",
|
|
8007
|
+
target: "component-prop",
|
|
8008
|
+
appliesTo: "dialogButtons",
|
|
8009
|
+
themeValues: {
|
|
8010
|
+
LightTheme: "center",
|
|
8011
|
+
DarkTheme: "center"
|
|
8012
|
+
}
|
|
8013
|
+
},
|
|
8014
|
+
{
|
|
8015
|
+
id: "dialogButtons.behavior.confirmButtonVariant",
|
|
8016
|
+
value: "primary",
|
|
8017
|
+
type: "string",
|
|
8018
|
+
kind: "behavioral",
|
|
8019
|
+
target: "component-prop",
|
|
8020
|
+
appliesTo: "dialogButtons",
|
|
8021
|
+
themeValues: {
|
|
8022
|
+
LightTheme: "primary",
|
|
8023
|
+
DarkTheme: "primary"
|
|
8024
|
+
}
|
|
8025
|
+
},
|
|
8026
|
+
{
|
|
8027
|
+
id: "dialogButtons.behavior.cancelButtonVariant",
|
|
8028
|
+
value: "warn",
|
|
8029
|
+
type: "string",
|
|
8030
|
+
kind: "behavioral",
|
|
8031
|
+
target: "component-prop",
|
|
8032
|
+
appliesTo: "dialogButtons",
|
|
8033
|
+
themeValues: {
|
|
8034
|
+
LightTheme: "warn",
|
|
8035
|
+
DarkTheme: "warn"
|
|
8036
|
+
}
|
|
8037
|
+
},
|
|
8038
|
+
{
|
|
8039
|
+
id: "dialogButtons.behavior.buttonSize",
|
|
8040
|
+
value: "lg",
|
|
8041
|
+
type: "string",
|
|
8042
|
+
kind: "behavioral",
|
|
8043
|
+
target: "component-prop",
|
|
8044
|
+
appliesTo: "dialogButtons",
|
|
8045
|
+
themeValues: {
|
|
8046
|
+
LightTheme: "lg",
|
|
8047
|
+
DarkTheme: "lg"
|
|
8048
|
+
}
|
|
8049
|
+
},
|
|
8050
|
+
{
|
|
8051
|
+
id: "dialogButtons.behavior.stretch",
|
|
8052
|
+
value: false,
|
|
8053
|
+
type: "boolean",
|
|
8054
|
+
kind: "behavioral",
|
|
8055
|
+
target: "component-prop",
|
|
8056
|
+
appliesTo: "dialogButtons",
|
|
8057
|
+
themeValues: {
|
|
8058
|
+
LightTheme: false,
|
|
8059
|
+
DarkTheme: false
|
|
8060
|
+
}
|
|
8061
|
+
},
|
|
8062
|
+
{
|
|
8063
|
+
id: "dialogButtons.behavior.reverseOrder",
|
|
8064
|
+
value: false,
|
|
8065
|
+
type: "boolean",
|
|
8066
|
+
kind: "behavioral",
|
|
8067
|
+
target: "component-prop",
|
|
8068
|
+
appliesTo: "dialogButtons",
|
|
8069
|
+
themeValues: {
|
|
8070
|
+
LightTheme: false,
|
|
8071
|
+
DarkTheme: false
|
|
8072
|
+
}
|
|
8073
|
+
},
|
|
7761
8074
|
{
|
|
7762
8075
|
id: "dialogHeader.behavior.borderRadius",
|
|
7763
8076
|
value: "max",
|
|
@@ -9288,7 +9601,7 @@ var uni_index_default = {
|
|
|
9288
9601
|
"radius.md": "24px",
|
|
9289
9602
|
"radius.lg": "32px",
|
|
9290
9603
|
"radius.max": "999px",
|
|
9291
|
-
"spacing.none":
|
|
9604
|
+
"spacing.none": 0,
|
|
9292
9605
|
"spacing.xxs": "2px",
|
|
9293
9606
|
"spacing.xs": "4px",
|
|
9294
9607
|
"spacing.sm": "8px",
|
|
@@ -9403,6 +9716,17 @@ var uni_index_default = {
|
|
|
9403
9716
|
elevation: "dialog",
|
|
9404
9717
|
backdrop: '{"background":"rgba(255, 255, 255, 0.6)","backdropFilter":"blur(2px)"}'
|
|
9405
9718
|
},
|
|
9719
|
+
dialogButtons: {
|
|
9720
|
+
gap: "md",
|
|
9721
|
+
padding: "md",
|
|
9722
|
+
paddingBottom: "lg",
|
|
9723
|
+
justifyContent: "center",
|
|
9724
|
+
confirmButtonVariant: "primary",
|
|
9725
|
+
cancelButtonVariant: "warn",
|
|
9726
|
+
buttonSize: "lg",
|
|
9727
|
+
stretch: false,
|
|
9728
|
+
reverseOrder: false
|
|
9729
|
+
},
|
|
9406
9730
|
dialogHeader: {
|
|
9407
9731
|
borderRadius: "max",
|
|
9408
9732
|
color: "primary",
|
|
@@ -9658,7 +9982,7 @@ var uni_index_default = {
|
|
|
9658
9982
|
"radius.md": "24px",
|
|
9659
9983
|
"radius.lg": "32px",
|
|
9660
9984
|
"radius.max": "999px",
|
|
9661
|
-
"spacing.none":
|
|
9985
|
+
"spacing.none": 0,
|
|
9662
9986
|
"spacing.xxs": "2px",
|
|
9663
9987
|
"spacing.xs": "4px",
|
|
9664
9988
|
"spacing.sm": "8px",
|
|
@@ -9773,6 +10097,17 @@ var uni_index_default = {
|
|
|
9773
10097
|
elevation: "dialog",
|
|
9774
10098
|
backdrop: '{"background":"rgba(255, 255, 255, 0.6)","backdropFilter":"blur(2px)"}'
|
|
9775
10099
|
},
|
|
10100
|
+
dialogButtons: {
|
|
10101
|
+
gap: "md",
|
|
10102
|
+
padding: "md",
|
|
10103
|
+
paddingBottom: "lg",
|
|
10104
|
+
justifyContent: "center",
|
|
10105
|
+
confirmButtonVariant: "primary",
|
|
10106
|
+
cancelButtonVariant: "warn",
|
|
10107
|
+
buttonSize: "lg",
|
|
10108
|
+
stretch: false,
|
|
10109
|
+
reverseOrder: false
|
|
10110
|
+
},
|
|
9776
10111
|
dialogHeader: {
|
|
9777
10112
|
borderRadius: "max",
|
|
9778
10113
|
color: "primary",
|
|
@@ -10667,16 +11002,39 @@ var generateShadows = (colors, mode = "light") => {
|
|
|
10667
11002
|
};
|
|
10668
11003
|
};
|
|
10669
11004
|
var BaseIcons = {
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
|
|
10673
|
-
|
|
10674
|
-
|
|
10675
|
-
|
|
10676
|
-
|
|
10677
|
-
|
|
10678
|
-
|
|
10679
|
-
|
|
11005
|
+
menu: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M140-254.62v-59.99h680v59.99H140ZM140-450v-60h680v60H140Zm0-195.39v-59.99h680v59.99H140Z'/%3e%3c/svg%3e",
|
|
11006
|
+
chevronUp: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m480-541.85-184 184L253.85-400 480-626.15 706.15-400 664-357.85l-184-184Z'/%3e%3c/svg%3e",
|
|
11007
|
+
chevronDown: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M480-357.85 253.85-584 296-626.15l184 184 184-184L706.15-584 480-357.85Z'/%3e%3c/svg%3e",
|
|
11008
|
+
chevronLeft: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M560-253.85 333.85-480 560-706.15 602.15-664l-184 184 184 184L560-253.85Z'/%3e%3c/svg%3e",
|
|
11009
|
+
chevronRight: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m517.85-480-184-184L376-706.15 602.15-480 376-253.85 333.85-296l184-184Z'/%3e%3c/svg%3e",
|
|
11010
|
+
arrowLeft: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m294.92-450 227.85 227.85L480-180 180-480l300-300 42.77 42.15L294.92-510H780v60H294.92Z'/%3e%3c/svg%3e",
|
|
11011
|
+
arrowRight: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M665.08-450H180v-60h485.08L437.23-737.85 480-780l300 300-300 300-42.77-42.15L665.08-450Z'/%3e%3c/svg%3e",
|
|
11012
|
+
home: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M240-200h133.85v-237.69h212.3V-200H720v-360L480-740.77 240-560v360Zm-60 60v-450l300-225.77L780-590v450H526.15v-237.69h-92.3V-140H180Zm300-330.38Z'/%3e%3c/svg%3e",
|
|
11013
|
+
externalLink: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M212.31-140Q182-140 161-161q-21-21-21-51.31v-535.38Q140-778 161-799q21-21 51.31-21h252.3v60h-252.3q-4.62 0-8.46 3.85-3.85 3.84-3.85 8.46v535.38q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85h535.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-252.3h60v252.3Q820-182 799-161q-21 21-51.31 21H212.31Zm176.46-206.62-42.15-42.15L717.85-760H560v-60h260v260h-60v-157.85L388.77-346.62Z'/%3e%3c/svg%3e",
|
|
11014
|
+
search: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M781.69-136.92 530.46-388.16q-30 24.77-69 38.77-39 14-80.69 14-102.46 0-173.54-71.07-71.07-71.08-71.07-173.54t71.07-173.54q71.08-71.07 173.54-71.07t173.54 71.07q71.07 71.08 71.07 173.54 0 42.85-14.38 81.85-14.39 39-38.39 67.84l251.23 251.23-42.15 42.16ZM380.77-395.38q77.31 0 130.96-53.66 53.66-53.65 53.66-130.96t-53.66-130.96q-53.65-53.66-130.96-53.66t-130.96 53.66Q196.15-657.31 196.15-580t53.66 130.96q53.65 53.66 130.96 53.66Z'/%3e%3c/svg%3e",
|
|
11015
|
+
close: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M256-213.85 213.85-256l224-224-224-224L256-746.15l224 224 224-224L746.15-704l-224 224 224 224L704-213.85l-224-224-224 224Z'/%3e%3c/svg%3e",
|
|
11016
|
+
plus: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M450-450H220v-60h230v-230h60v230h230v60H510v230h-60v-230Z'/%3e%3c/svg%3e",
|
|
11017
|
+
minus: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M220-450v-60h520v60H220Z'/%3e%3c/svg%3e",
|
|
11018
|
+
more: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M480-189.23q-24.75 0-42.37-17.63Q420-224.48 420-249.23q0-24.75 17.63-42.38 17.62-17.62 42.37-17.62 24.75 0 42.37 17.62Q540-273.98 540-249.23q0 24.75-17.63 42.37-17.62 17.63-42.37 17.63ZM480-420q-24.75 0-42.37-17.63Q420-455.25 420-480q0-24.75 17.63-42.37Q455.25-540 480-540q24.75 0 42.37 17.63Q540-504.75 540-480q0 24.75-17.63 42.37Q504.75-420 480-420Zm0-230.77q-24.75 0-42.37-17.62Q420-686.02 420-710.77q0-24.75 17.63-42.37 17.62-17.63 42.37-17.63 24.75 0 42.37 17.63Q540-735.52 540-710.77q0 24.75-17.63 42.38-17.62 17.62-42.37 17.62Z'/%3e%3c/svg%3e",
|
|
11019
|
+
delete: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M292.31-140q-29.92 0-51.12-21.19Q220-182.39 220-212.31V-720h-40v-60h180v-35.38h240V-780h180v60h-40v507.69Q740-182 719-161q-21 21-51.31 21H292.31ZM680-720H280v507.69q0 5.39 3.46 8.85t8.85 3.46h375.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46V-720ZM376.16-280h59.99v-360h-59.99v360Zm147.69 0h59.99v-360h-59.99v360ZM280-720v520-520Z'/%3e%3c/svg%3e",
|
|
11020
|
+
edit: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M200-200h50.46l409.46-409.46-50.46-50.46L200-250.46V-200Zm-60 60v-135.38l527.62-527.39q9.07-8.24 20.03-12.73 10.97-4.5 23-4.5t23.3 4.27q11.28 4.27 19.97 13.58l48.85 49.46q9.31 8.69 13.27 20 3.96 11.31 3.96 22.62 0 12.07-4.12 23.03-4.12 10.97-13.11 20.04L275.38-140H140Zm620.38-570.15-50.23-50.23 50.23 50.23Zm-126.13 75.9-24.79-25.67 50.46 50.46-25.67-24.79Z'/%3e%3c/svg%3e",
|
|
11021
|
+
download: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M480-328.46 309.23-499.23l42.16-43.38L450-444v-336h60v336l98.61-98.61 42.16 43.38L480-328.46ZM252.31-180Q222-180 201-201q-21-21-21-51.31v-108.46h60v108.46q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85h455.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-108.46h60v108.46Q780-222 759-201q-21 21-51.31 21H252.31Z'/%3e%3c/svg%3e",
|
|
11022
|
+
upload: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M450-328.46v-336l-98.61 98.61-42.16-43.38L480-780l170.77 170.77-42.16 43.38L510-664.46v336h-60ZM252.31-180Q222-180 201-201q-21-21-21-51.31v-108.46h60v108.46q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85h455.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-108.46h60v108.46Q780-222 759-201q-21 21-51.31 21H252.31Z'/%3e%3c/svg%3e",
|
|
11023
|
+
share: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M672.22-100q-44.91 0-76.26-31.41-31.34-31.41-31.34-76.28 0-6 4.15-29.16L284.31-404.31q-14.46 15-34.36 23.5t-42.64 8.5q-44.71 0-76.01-31.54Q100-435.39 100-480q0-44.61 31.3-76.15 31.3-31.54 76.01-31.54 22.74 0 42.64 8.5 19.9 8.5 34.36 23.5l284.46-167.08q-2.38-7.38-3.27-14.46-.88-7.08-.88-15.08 0-44.87 31.43-76.28Q627.49-860 672.4-860t76.25 31.44Q780-797.13 780-752.22q0 44.91-31.41 76.26-31.41 31.34-76.28 31.34-22.85 0-42.5-8.69Q610.15-662 595.69-677L311.23-509.54q2.38 7.39 3.27 14.46.88 7.08.88 15.08t-.88 15.08q-.89 7.07-3.27 14.46L595.69-283q14.46-15 34.12-23.69 19.65-8.69 42.5-8.69 44.87 0 76.28 31.43Q780-252.51 780-207.6t-31.44 76.25Q717.13-100 672.22-100Zm.09-60q20.27 0 33.98-13.71Q720-187.42 720-207.69q0-20.27-13.71-33.98-13.71-13.72-33.98-13.72-20.27 0-33.98 13.72-13.72 13.71-13.72 33.98 0 20.27 13.72 33.98Q652.04-160 672.31-160Zm-465-272.31q20.43 0 34.25-13.8 13.83-13.81 13.83-33.89t-13.83-33.89q-13.82-13.8-34.25-13.8-20.11 0-33.71 13.8Q160-500.08 160-480t13.6 33.89q13.6 13.8 33.71 13.8Zm498.88-286.02Q720-732.04 720-752.31q0-20.27-13.71-33.98Q692.58-800 672.31-800q-20.27 0-33.98 13.71-13.72 13.71-13.72 33.98 0 20.27 13.81 33.98 13.81 13.72 33.89 13.72 20.07 0 33.88-13.72Zm-33.88 510.64ZM207.69-480Zm464.62-272.31Z'/%3e%3c/svg%3e",
|
|
11024
|
+
filter: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M411.15-260v-60h137.31v60H411.15ZM256.16-450v-60h447.3v60h-447.3ZM140-640v-60h680v60H140Z'/%3e%3c/svg%3e",
|
|
11025
|
+
check: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M382-253.85 168.62-467.23 211.38-510 382-339.38 748.62-706l42.76 42.77L382-253.85Z'/%3e%3c/svg%3e",
|
|
11026
|
+
checkCircle: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m423.23-309.85 268.92-268.92L650-620.92 423.23-394.15l-114-114L267.08-466l156.15 156.15ZM480.07-100q-78.84 0-148.21-29.92t-120.68-81.21q-51.31-51.29-81.25-120.63Q100-401.1 100-479.93q0-78.84 29.92-148.21t81.21-120.68q51.29-51.31 120.63-81.25Q401.1-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.84-29.92 148.21t-81.21 120.68q-51.29 51.31-120.63 81.25Q558.9-100 480.07-100Zm-.07-60q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3e%3c/svg%3e",
|
|
11027
|
+
xCircle: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m336-293.85 144-144 144 144L666.15-336l-144-144 144-144L624-666.15l-144 144-144-144L293.85-624l144 144-144 144L336-293.85ZM480.07-100q-78.84 0-148.21-29.92t-120.68-81.21q-51.31-51.29-81.25-120.63Q100-401.1 100-479.93q0-78.84 29.92-148.21t81.21-120.68q51.29-51.31 120.63-81.25Q401.1-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.84-29.92 148.21t-81.21 120.68q-51.29 51.31-120.63 81.25Q558.9-100 480.07-100Zm-.07-60q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3e%3c/svg%3e",
|
|
11028
|
+
alertCircle: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M502.92-300.15q9.39-9.39 9.39-22.93T502.92-346q-9.38-9.38-22.92-9.38-13.54 0-22.92 9.38-9.39 9.38-9.39 22.92 0 13.54 9.39 22.93 9.38 9.38 22.92 9.38 13.54 0 22.92-9.38ZM450-436.92h60v-240h-60v240ZM480.07-100q-78.84 0-148.21-29.92t-120.68-81.21q-51.31-51.29-81.25-120.63Q100-401.1 100-479.93q0-78.84 29.92-148.21t81.21-120.68q51.29-51.31 120.63-81.25Q401.1-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.84-29.92 148.21t-81.21 120.68q-51.29 51.31-120.63 81.25Q558.9-100 480.07-100Zm-.07-60q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3e%3c/svg%3e",
|
|
11029
|
+
info: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M450-290h60v-230h-60v230Zm52.92-307.75q9.39-9.29 9.39-23.02t-9.29-23.02q-9.29-9.28-23.02-9.28t-23.02 9.28q-9.29 9.29-9.29 23.02t9.39 23.02q9.38 9.29 22.92 9.29 13.54 0 22.92-9.29ZM480.07-100q-78.84 0-148.21-29.92t-120.68-81.21q-51.31-51.29-81.25-120.63Q100-401.1 100-479.93q0-78.84 29.92-148.21t81.21-120.68q51.29-51.31 120.63-81.25Q401.1-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.84-29.92 148.21t-81.21 120.68q-51.29 51.31-120.63 81.25Q558.9-100 480.07-100Zm-.07-60q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3e%3c/svg%3e",
|
|
11030
|
+
warning: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M74.62-140 480-840l405.38 700H74.62ZM178-200h604L480-720 178-200Zm324.92-57.08q9.39-9.38 9.39-22.92 0-13.54-9.39-22.92-9.38-9.39-22.92-9.39-13.54 0-22.92 9.39-9.39 9.38-9.39 22.92 0 13.54 9.39 22.92 9.38 9.39 22.92 9.39 13.54 0 22.92-9.39ZM450-352.31h60v-200h-60v200ZM480-460Z'/%3e%3c/svg%3e",
|
|
11031
|
+
lock: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M252.31-100q-29.92 0-51.12-21.19Q180-142.39 180-172.31v-375.38q0-29.92 21.19-51.12Q222.39-620 252.31-620H300v-80q0-74.92 52.54-127.46Q405.08-880 480-880q74.92 0 127.46 52.54Q660-774.92 660-700v80h47.69q29.92 0 51.12 21.19Q780-577.61 780-547.69v375.38q0 29.92-21.19 51.12Q737.61-100 707.69-100H252.31Zm0-60h455.38q5.39 0 8.85-3.46t3.46-8.85v-375.38q0-5.39-3.46-8.85t-8.85-3.46H252.31q-5.39 0-8.85 3.46t-3.46 8.85v375.38q0 5.39 3.46 8.85t8.85 3.46Zm277.27-150.42Q550-330.85 550-360t-20.42-49.58Q509.15-430 480-430t-49.58 20.42Q410-389.15 410-360t20.42 49.58Q450.85-290 480-290t49.58-20.42ZM360-620h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM240-160v-400 400Z'/%3e%3c/svg%3e",
|
|
11032
|
+
profile: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M381.04-533.35Q340-574.38 340-632.31q0-57.92 41.04-98.96 41.04-41.04 98.96-41.04 57.92 0 98.96 41.04Q620-690.23 620-632.31q0 57.93-41.04 98.96-41.04 41.04-98.96 41.04-57.92 0-98.96-41.04ZM180-187.69v-88.93q0-29.38 15.96-54.42 15.96-25.04 42.66-38.5 59.3-29.07 119.65-43.61 60.35-14.54 121.73-14.54t121.73 14.54q60.35 14.54 119.65 43.61 26.7 13.46 42.66 38.5Q780-306 780-276.62v88.93H180Zm60-60h480v-28.93q0-12.15-7.04-22.5-7.04-10.34-19.11-16.88-51.7-25.46-105.42-38.58Q534.7-367.69 480-367.69q-54.7 0-108.43 13.11-53.72 13.12-105.42 38.58-12.07 6.54-19.11 16.88-7.04 10.35-7.04 22.5v28.93Zm296.5-328.12q23.5-23.5 23.5-56.5t-23.5-56.5q-23.5-23.5-56.5-23.5t-56.5 23.5q-23.5 23.5-23.5 56.5t23.5 56.5q23.5 23.5 56.5 23.5t56.5-23.5Zm-56.5-56.5Zm0 384.62Z'/%3e%3c/svg%3e",
|
|
11033
|
+
settings: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m387.69-100-15.23-121.85q-16.07-5.38-32.96-15.07-16.88-9.7-30.19-20.77L196.46-210l-92.3-160 97.61-73.77q-1.38-8.92-1.96-17.92-.58-9-.58-17.93 0-8.53.58-17.34t1.96-19.27L104.16-590l92.3-159.23 112.46 47.31q14.47-11.46 30.89-20.96t32.27-15.27L387.69-860h184.62l15.23 122.23q18 6.54 32.57 15.27 14.58 8.73 29.43 20.58l114-47.31L855.84-590l-99.15 74.92q2.15 9.69 2.35 18.12.19 8.42.19 16.96 0 8.15-.39 16.58-.38 8.42-2.76 19.27L854.46-370l-92.31 160-112.61-48.08q-14.85 11.85-30.31 20.96-15.46 9.12-31.69 14.89L572.31-100H387.69ZM440-160h78.62L533-267.15q30.62-8 55.96-22.73 25.35-14.74 48.89-37.89L737.23-286l39.39-68-86.77-65.38q5-15.54 6.8-30.47 1.81-14.92 1.81-30.15 0-15.62-1.81-30.15-1.8-14.54-6.8-29.7L777.38-606 738-674l-100.54 42.38q-20.08-21.46-48.11-37.92-28.04-16.46-56.73-23.31L520-800h-79.38l-13.24 106.77q-30.61 7.23-56.53 22.15-25.93 14.93-49.47 38.46L222-674l-39.38 68L269-541.62q-5 14.24-7 29.62t-2 32.38q0 15.62 2 30.62 2 15 6.62 29.62l-86 65.38L222-286l99-42q22.77 23.38 48.69 38.31 25.93 14.92 57.31 22.92L440-160Zm40.46-200q49.92 0 84.96-35.04 35.04-35.04 35.04-84.96 0-49.92-35.04-84.96Q530.38-600 480.46-600q-50.54 0-85.27 35.04T360.46-480q0 49.92 34.73 84.96Q429.92-360 480.46-360ZM480-480Z'/%3e%3c/svg%3e",
|
|
11034
|
+
notification: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M180-204.62v-59.99h72.31v-298.47q0-80.69 49.81-142.69 49.8-62 127.88-79.31V-810q0-20.83 14.57-35.42Q459.14-860 479.95-860q20.82 0 35.43 14.58Q530-830.83 530-810v24.92q78.08 17.31 127.88 79.31 49.81 62 49.81 142.69v298.47H780v59.99H180Zm300-293.07Zm-.07 405.38q-29.85 0-51.04-21.24-21.2-21.24-21.2-51.07h144.62q0 29.93-21.26 51.12-21.26 21.19-51.12 21.19Zm-167.62-172.3h335.38v-298.47q0-69.46-49.11-118.57-49.12-49.12-118.58-49.12-69.46 0-118.58 49.12-49.11 49.11-49.11 118.57v298.47Z'/%3e%3c/svg%3e",
|
|
11035
|
+
favorite: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='m480-146.93-44.15-39.69q-99.46-90.23-164.5-155.07-65.04-64.85-103.08-115.43-38.04-50.57-53.15-92.27Q100-591.08 100-634q0-85.15 57.42-142.58Q214.85-834 300-834q52.38 0 99 24.5t81 70.27q34.38-45.77 81-70.27 46.62-24.5 99-24.5 85.15 0 142.58 57.42Q860-719.15 860-634q0 42.92-15.12 84.61-15.11 41.7-53.15 92.27-38.04 50.58-102.89 115.43Q624-276.85 524.15-186.62L480-146.93Zm0-81.07q96-86.38 158-148.08 62-61.69 98-107.19t50-80.81q14-35.3 14-69.92 0-60-40-100t-100-40q-47.38 0-87.58 26.88-40.19 26.89-63.65 74.81h-57.54q-23.85-48.31-63.85-75Q347.38-774 300-774q-59.62 0-99.81 40Q160-694 160-634q0 34.62 14 69.92 14 35.31 50 80.81t98 107q62 61.5 158 148.27Zm0-273Z'/%3e%3c/svg%3e",
|
|
11036
|
+
help: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M508.5-267.21q11.81-11.83 11.81-28.97 0-17.13-11.83-28.94-11.83-11.8-28.96-11.8-17.13 0-28.94 11.83-11.81 11.83-11.81 28.96 0 17.13 11.83 28.94 11.83 11.8 28.96 11.8 17.13 0 28.94-11.82Zm-57.27-131.41h56.31q.77-29.53 8.65-47.19 7.89-17.65 38.27-46.8 26.39-26.39 40.42-48.74 14.04-22.34 14.04-52.77 0-51.65-37.11-80.69-37.12-29.03-87.81-29.03-50.08 0-82.88 26.73-32.81 26.73-46.81 62.96l51.38 20.61q7.31-19.92 25-38.81 17.69-18.88 52.54-18.88 35.46 0 52.42 19.42 16.97 19.43 16.97 42.73 0 20.39-11.62 37.31-11.61 16.92-29.61 32.69-39.39 35.54-49.77 56.7-10.39 21.15-10.39 63.76ZM480.07-100q-78.84 0-148.21-29.92t-120.68-81.21q-51.31-51.29-81.25-120.63Q100-401.1 100-479.93q0-78.84 29.92-148.21t81.21-120.68q51.29-51.31 120.63-81.25Q401.1-860 479.93-860q78.84 0 148.21 29.92t120.68 81.21q51.31 51.29 81.25 120.63Q860-558.9 860-480.07q0 78.84-29.92 148.21t-81.21 120.68q-51.29 51.31-120.63 81.25Q558.9-100 480.07-100Zm-.07-60q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z'/%3e%3c/svg%3e",
|
|
11037
|
+
calendar: "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3e%3cpath d='M212.31-100Q182-100 161-121q-21-21-21-51.31v-535.38Q140-738 161-759q21-21 51.31-21h55.38v-84.61h61.54V-780h303.08v-84.61h60V-780h55.38Q778-780 799-759q21 21 21 51.31v535.38Q820-142 799-121q-21 21-51.31 21H212.31Zm0-60h535.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-375.38H200v375.38q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85ZM200-607.69h560v-100q0-4.62-3.85-8.46-3.84-3.85-8.46-3.85H212.31q-4.62 0-8.46 3.85-3.85 3.84-3.85 8.46v100Zm0 0V-720v112.31Zm280 210.77q-14.69 0-25.04-10.35-10.34-10.34-10.34-25.04 0-14.69 10.34-25.04 10.35-10.34 25.04-10.34t25.04 10.34q10.34 10.35 10.34 25.04 0 14.7-10.34 25.04-10.35 10.35-25.04 10.35Zm-185.04-10.35q-10.34-10.34-10.34-25.04 0-14.69 10.34-25.04 10.35-10.34 25.04-10.34t25.04 10.34q10.34 10.35 10.34 25.04 0 14.7-10.34 25.04-10.35 10.35-25.04 10.35t-25.04-10.35ZM640-396.92q-14.69 0-25.04-10.35-10.34-10.34-10.34-25.04 0-14.69 10.34-25.04 10.35-10.34 25.04-10.34t25.04 10.34q10.34 10.35 10.34 25.04 0 14.7-10.34 25.04-10.35 10.35-25.04 10.35ZM480-240q-14.69 0-25.04-10.35-10.34-10.34-10.34-25.03 0-14.7 10.34-25.04 10.35-10.35 25.04-10.35t25.04 10.35q10.34 10.34 10.34 25.04 0 14.69-10.34 25.03Q494.69-240 480-240Zm-185.04-10.35q-10.34-10.34-10.34-25.03 0-14.7 10.34-25.04 10.35-10.35 25.04-10.35t25.04 10.35q10.34 10.34 10.34 25.04 0 14.69-10.34 25.03Q334.69-240 320-240t-25.04-10.35ZM640-240q-14.69 0-25.04-10.35-10.34-10.34-10.34-25.03 0-14.7 10.34-25.04 10.35-10.35 25.04-10.35t25.04 10.35q10.34 10.34 10.34 25.04 0 14.69-10.34 25.03Q654.69-240 640-240Z'/%3e%3c/svg%3e",
|
|
10680
11038
|
spinner: "data:image/svg+xml;charset=UTF-8,%3csvg stroke='%23000' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3e%3cstyle%3e .oui_spinner %7b transform-origin: center; animation: rotate_360 2s linear infinite;%7d .oui_spinner circle %7b stroke-linecap: round; animation: dash 1.5s ease-in-out infinite;%7d %40keyframes rotate_360 %7b 100%25 %7b transform: rotate(360deg);%7d %7d %40keyframes dash %7b 0%25 %7b stroke-dasharray: 0 150; stroke-dashoffset: 0;%7d 47.5%25 %7b stroke-dasharray: 42 150; stroke-dashoffset: -16;%7d 95%25, 100%25 %7b stroke-dasharray: 42 150; stroke-dashoffset: -59;%7d %7d %3c/style%3e%3cg class='oui_spinner'%3e%3ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'%3e%3c/circle%3e%3c/g%3e%3c/svg%3e "
|
|
10681
11039
|
};
|
|
10682
11040
|
var BaseTypography = {
|
|
@@ -10842,7 +11200,7 @@ var BaseShadows = {
|
|
|
10842
11200
|
warn: "0 0 5px rgba(255, 0, 0, 0.5), inset 0 0 5px rgba(255, 0, 0, 0.3)"
|
|
10843
11201
|
};
|
|
10844
11202
|
var BaseSpacing = {
|
|
10845
|
-
none:
|
|
11203
|
+
none: 0,
|
|
10846
11204
|
xxs: "2px",
|
|
10847
11205
|
xs: "4px",
|
|
10848
11206
|
sm: "8px",
|
|
@@ -10994,6 +11352,17 @@ var buildComponents = (c) => ({
|
|
|
10994
11352
|
backdropFilter: "blur(2px)"
|
|
10995
11353
|
}
|
|
10996
11354
|
} },
|
|
11355
|
+
dialogButtons: { options: {
|
|
11356
|
+
gap: "md",
|
|
11357
|
+
padding: "md",
|
|
11358
|
+
paddingBottom: "lg",
|
|
11359
|
+
justifyContent: "center",
|
|
11360
|
+
confirmButtonVariant: "primary",
|
|
11361
|
+
cancelButtonVariant: "warn",
|
|
11362
|
+
buttonSize: "lg",
|
|
11363
|
+
stretch: false,
|
|
11364
|
+
reverseOrder: false
|
|
11365
|
+
} },
|
|
10997
11366
|
dialogHeader: { options: {
|
|
10998
11367
|
borderRadius: "max",
|
|
10999
11368
|
color: "primary",
|
|
@@ -11592,11 +11961,22 @@ ${recordLiteral(shadows, " ")}
|
|
|
11592
11961
|
"const components = (colors: Colors): ComponentThemes => ({});",
|
|
11593
11962
|
"",
|
|
11594
11963
|
"/**",
|
|
11595
|
-
" * Icon primitives, merged over the built-in set
|
|
11596
|
-
" *
|
|
11597
|
-
" *
|
|
11598
|
-
" *
|
|
11599
|
-
|
|
11964
|
+
" * Icon primitives, merged over the built-in 34-icon set per name: reuse a",
|
|
11965
|
+
" * built-in name to reskin it, or add any new name. Define an icon ONCE here",
|
|
11966
|
+
" * and render it anywhere via `<uni-icon name='\u2026'/>` \u2014 never inline SVG in",
|
|
11967
|
+
" * components.",
|
|
11968
|
+
" *",
|
|
11969
|
+
" * Encode your own SVGs with `svgToIconUri` rather than by hand \u2014 it strips",
|
|
11970
|
+
" * fixed width/height, escapes the URI and rejects artwork that cannot",
|
|
11971
|
+
" * survive masking:",
|
|
11972
|
+
" *",
|
|
11973
|
+
" * import { svgToIconUri } from '@uni-design-system/uni-core';",
|
|
11974
|
+
" * const icons: Icons = { logo: svgToIconUri(readFileSync('logo.svg', 'utf8')) };",
|
|
11975
|
+
" *",
|
|
11976
|
+
" * Icons are masked with currentColor, so they recolor with the theme \u2014 but",
|
|
11977
|
+
" * that also means they are MONOCHROME: the mask uses the alpha channel, so a",
|
|
11978
|
+
" * multi-color mark flattens to its silhouette. Keep one grid (viewBox) across",
|
|
11979
|
+
" * your set, or the glyphs will not share an optical weight.",
|
|
11600
11980
|
" */",
|
|
11601
11981
|
"const icons: Icons = {};",
|
|
11602
11982
|
"",
|
|
@@ -11624,6 +12004,48 @@ ${recordLiteral(radii, " ")}
|
|
|
11624
12004
|
reportSummary
|
|
11625
12005
|
};
|
|
11626
12006
|
};
|
|
12007
|
+
var BLANK_PAINT = /* @__PURE__ */ new Set([
|
|
12008
|
+
"none",
|
|
12009
|
+
"transparent",
|
|
12010
|
+
"inherit",
|
|
12011
|
+
""
|
|
12012
|
+
]);
|
|
12013
|
+
function paintValues(svg) {
|
|
12014
|
+
const found = /* @__PURE__ */ new Set();
|
|
12015
|
+
for (const [, value] of svg.matchAll(/\b(?:fill|stroke)\s*=\s*["']([^"']*)["']/g)) {
|
|
12016
|
+
const paint = value.trim().toLowerCase();
|
|
12017
|
+
if (!BLANK_PAINT.has(paint)) found.add(paint);
|
|
12018
|
+
}
|
|
12019
|
+
for (const [, , value] of svg.matchAll(/\b(fill|stroke)\s*:\s*([^;"'}]+)/g)) {
|
|
12020
|
+
const paint = value.trim().toLowerCase();
|
|
12021
|
+
if (!BLANK_PAINT.has(paint)) found.add(paint);
|
|
12022
|
+
}
|
|
12023
|
+
return [...found];
|
|
12024
|
+
}
|
|
12025
|
+
function normalize(svg) {
|
|
12026
|
+
return svg.replace(/<\?xml[^>]*\?>/g, "").replace(/<!DOCTYPE[^>]*>/gi, "").replace(/<!--[\s\S]*?-->/g, "").replace(/\s(width|height)\s*=\s*["'][^"']*["']/g, "").replace(/\s+/g, " ").replace(/>\s+</g, "><").trim();
|
|
12027
|
+
}
|
|
12028
|
+
function encode(svg) {
|
|
12029
|
+
return "data:image/svg+xml," + svg.replace(/"/g, "'").replace(/%/g, "%25").replace(/#/g, "%23").replace(/</g, "%3c").replace(/>/g, "%3e");
|
|
12030
|
+
}
|
|
12031
|
+
function svgToIconUri(svg, options = {}) {
|
|
12032
|
+
const label = options.name ? `${options.name}: ` : "";
|
|
12033
|
+
const fail = (message) => {
|
|
12034
|
+
throw new Error(`${label}${message}`);
|
|
12035
|
+
};
|
|
12036
|
+
if (typeof svg !== "string" || !svg.trim()) fail("empty SVG source");
|
|
12037
|
+
const normalized = normalize(svg);
|
|
12038
|
+
if (!/^<svg[\s>]/i.test(normalized) || !/<\/svg>$/i.test(normalized)) fail("not a complete <svg> document");
|
|
12039
|
+
if (!/\bviewBox\s*=\s*["'][^"']+["']/i.test(normalized)) fail("no viewBox \u2014 the icon could not scale to its container");
|
|
12040
|
+
if (/<image\b/i.test(normalized)) fail("contains a raster <image>; masks need vector artwork");
|
|
12041
|
+
if (/\b(?:xlink:)?href\s*=\s*["'](?!#)/i.test(normalized)) fail("references an external resource, which a masked SVG cannot load");
|
|
12042
|
+
if (!options.allowMultiColor) {
|
|
12043
|
+
const paints = paintValues(normalized);
|
|
12044
|
+
if (paints.some((p) => p.startsWith("url("))) fail("paints with a gradient or pattern \u2014 masks use the alpha channel only, so it would flatten to a silhouette. Pass { allowMultiColor: true } to accept that.");
|
|
12045
|
+
if (paints.length > 1) fail(`paints in ${paints.length} colors (${paints.join(", ")}) \u2014 masks use the alpha channel only, so it would flatten to a silhouette in currentColor. Pass { allowMultiColor: true } to accept that.`);
|
|
12046
|
+
}
|
|
12047
|
+
return encode(normalized);
|
|
12048
|
+
}
|
|
11627
12049
|
var GetBoxShadow = ({ offset, blur, opacity }) => {
|
|
11628
12050
|
return `0 ${offset}px ${blur}px rgba(0,0,0,0.${opacity})`;
|
|
11629
12051
|
};
|
|
@@ -11774,25 +12196,119 @@ ${failing.map((f) => `- ${f.mode} \`${f.foreground}\` on \`${f.background}\`: ${
|
|
|
11774
12196
|
"- **Icons**: never inline SVG in components. Define an icon ONCE in the theme file's",
|
|
11775
12197
|
" `icons` map as an inline SVG data URI \u2014 it is masked with `currentColor`, so it",
|
|
11776
12198
|
" recolors with the theme \u2014 then render it anywhere with `<uni-icon name='\u2026'/>`.",
|
|
11777
|
-
" A built-in set
|
|
12199
|
+
" A built-in set of 34 icons ships with every theme (navigation, actions, feedback,",
|
|
12200
|
+
" user/system) \u2014 check `BaseIcons` before adding one; names are flat camelCase",
|
|
12201
|
+
" (`chevronDown`, `checkCircle`, `externalLink`) and `IconName` autocompletes them.",
|
|
12202
|
+
" To add your own, encode with `svgToIconUri` from uni-core rather than hand-writing",
|
|
12203
|
+
" a data URI \u2014 it strips fixed width/height, escapes the URI, and throws on artwork",
|
|
12204
|
+
" that cannot be masked. Icons are MONOCHROME (the mask uses the alpha channel), so a",
|
|
12205
|
+
" multi-color logo flattens to a silhouette; keep one viewBox grid across the set.",
|
|
11778
12206
|
"- Never hardcode hex values in application components: style through `ThemeService`",
|
|
11779
12207
|
" accessors and semantic token names so themes stay swappable."
|
|
11780
12208
|
].join("\n");
|
|
11781
12209
|
}
|
|
11782
12210
|
|
|
12211
|
+
// src/server/icons.ts
|
|
12212
|
+
var DATA_URI = /^data:image\/svg\+xml[^,]*,/;
|
|
12213
|
+
function toCamelCase(name) {
|
|
12214
|
+
const cleaned = name.trim().replace(/\.svg$/i, "").replace(/[^A-Za-z0-9]+(.)?/g, (_, chr) => chr ? chr.toUpperCase() : "");
|
|
12215
|
+
return cleaned.charAt(0).toLowerCase() + cleaned.slice(1);
|
|
12216
|
+
}
|
|
12217
|
+
var decode = (uri) => decodeURIComponent(uri.replace(DATA_URI, ""));
|
|
12218
|
+
var viewBoxOf = (svg) => svg.match(/viewBox\s*=\s*["']([^"']+)["']/i)?.[1] ?? "unknown";
|
|
12219
|
+
var BASE_GRID = viewBoxOf(decode(BaseIcons.chevronDown));
|
|
12220
|
+
function formatIconTokens(icons) {
|
|
12221
|
+
if (!icons.length) {
|
|
12222
|
+
return "No icons supplied. Pass `icons: [{ name, svg }]` \u2014 `svg` may be raw SVG source or an already-encoded data URI.";
|
|
12223
|
+
}
|
|
12224
|
+
const encoded = [];
|
|
12225
|
+
const rejected = [];
|
|
12226
|
+
for (const { name, svg, allowMultiColor } of icons) {
|
|
12227
|
+
const tokenName = toCamelCase(name);
|
|
12228
|
+
const source = DATA_URI.test(svg.trim()) ? decode(svg.trim()) : svg;
|
|
12229
|
+
try {
|
|
12230
|
+
const uri = svgToIconUri(source, { name: tokenName, allowMultiColor });
|
|
12231
|
+
encoded.push({ name: tokenName, originalName: name, uri, viewBox: viewBoxOf(decode(uri)) });
|
|
12232
|
+
} catch (error) {
|
|
12233
|
+
const reason = error.message.replace(`${tokenName}: `, "").replace(
|
|
12234
|
+
/Pass \{ allowMultiColor: true \} to accept that\./,
|
|
12235
|
+
`Set \`allowMultiColor: true\` on \`${tokenName}\` and call again if a silhouette is intended.`
|
|
12236
|
+
);
|
|
12237
|
+
rejected.push({ name: tokenName, reason });
|
|
12238
|
+
}
|
|
12239
|
+
}
|
|
12240
|
+
const out = [];
|
|
12241
|
+
out.push(`# Icon tokens \u2014 ${encoded.length} of ${icons.length} encoded`);
|
|
12242
|
+
out.push("");
|
|
12243
|
+
if (encoded.length) {
|
|
12244
|
+
out.push("## Add to `uni-theme.ts`");
|
|
12245
|
+
out.push("");
|
|
12246
|
+
out.push("Merge these into the `icons` const. They are merged over the built-in set per");
|
|
12247
|
+
out.push('name, then rendered anywhere with `<uni-icon name="\u2026" />` \u2014 delete the inline');
|
|
12248
|
+
out.push("`<svg>` from the component.");
|
|
12249
|
+
out.push("");
|
|
12250
|
+
out.push("```ts");
|
|
12251
|
+
out.push("const icons: Icons = {");
|
|
12252
|
+
for (const { name, uri } of encoded) out.push(` ${name}: "${uri}",`);
|
|
12253
|
+
out.push("};");
|
|
12254
|
+
out.push("```");
|
|
12255
|
+
out.push("");
|
|
12256
|
+
}
|
|
12257
|
+
if (rejected.length) {
|
|
12258
|
+
out.push("## Not encoded");
|
|
12259
|
+
out.push("");
|
|
12260
|
+
out.push("These cannot render as a mask. Fix the artwork and call again.");
|
|
12261
|
+
out.push("");
|
|
12262
|
+
for (const { name, reason } of rejected) out.push(`- \`${name}\` \u2014 ${reason}`);
|
|
12263
|
+
out.push("");
|
|
12264
|
+
}
|
|
12265
|
+
const notes = [];
|
|
12266
|
+
const renamed = encoded.filter((e) => e.name !== e.originalName);
|
|
12267
|
+
if (renamed.length) {
|
|
12268
|
+
notes.push(
|
|
12269
|
+
`Renamed to the set's flat camelCase convention: ${renamed.map((e) => `\`${e.originalName}\` \u2192 \`${e.name}\``).join(", ")}.`
|
|
12270
|
+
);
|
|
12271
|
+
}
|
|
12272
|
+
const overrides = encoded.filter((e) => e.name in BaseIcons);
|
|
12273
|
+
if (overrides.length) {
|
|
12274
|
+
notes.push(
|
|
12275
|
+
`Overrides a built-in icon: ${overrides.map((e) => `\`${e.name}\``).join(", ")}. Intentional for rebranding a standard glyph; rename if you meant to add a new one.`
|
|
12276
|
+
);
|
|
12277
|
+
}
|
|
12278
|
+
const grids = [...new Set(encoded.map((e) => e.viewBox))];
|
|
12279
|
+
if (grids.length > 1) {
|
|
12280
|
+
notes.push(
|
|
12281
|
+
`Mixed viewBox grids (${grids.map((g) => `\`${g}\``).join(", ")}). Icons drawn on different grids will not share an optical weight or size. Re-export the set on one grid.`
|
|
12282
|
+
);
|
|
12283
|
+
} else if (grids.length === 1 && grids[0] !== BASE_GRID && overrides.length) {
|
|
12284
|
+
notes.push(
|
|
12285
|
+
`This set is drawn on \`${grids[0]}\` while the built-in set uses \`${BASE_GRID}\`. That is fine on its own, but a glyph overriding a built-in will sit next to un-overridden built-ins, so check they read at the same weight.`
|
|
12286
|
+
);
|
|
12287
|
+
}
|
|
12288
|
+
notes.push(
|
|
12289
|
+
'Icons are masked with `currentColor`, so they are monochrome: the mask uses the alpha channel and any fill colors in the source are discarded. Color them by setting text color on the container, or with `<uni-icon color="\u2026" />`.'
|
|
12290
|
+
);
|
|
12291
|
+
out.push("## Notes");
|
|
12292
|
+
out.push("");
|
|
12293
|
+
for (const note of notes) out.push(`- ${note}`);
|
|
12294
|
+
return out.join("\n");
|
|
12295
|
+
}
|
|
12296
|
+
|
|
11783
12297
|
// src/server/core.ts
|
|
11784
12298
|
var FrameworkArg = z.enum(["angular", "react"]);
|
|
11785
12299
|
function text(body) {
|
|
11786
12300
|
return { content: [{ type: "text", text: body }] };
|
|
11787
12301
|
}
|
|
11788
12302
|
function notFound(kind, id) {
|
|
11789
|
-
return text(
|
|
12303
|
+
return text(
|
|
12304
|
+
`No ${kind} found with id \`${id}\`. Use the matching list/search tool to discover valid ids.`
|
|
12305
|
+
);
|
|
11790
12306
|
}
|
|
11791
12307
|
function createUniServer() {
|
|
11792
12308
|
const server = new McpServer(
|
|
11793
12309
|
{ name: "uni-design-system", version: meta.version },
|
|
11794
12310
|
{
|
|
11795
|
-
instructions:
|
|
12311
|
+
instructions: 'Authoritative interface to the Uni Design System. Prefer these tools over recalling component APIs or token values from memory: names, props, and tokens here match the exact Uni release the developer installed. Start with `list-components` or `search`, then `get-component` / `get-component-examples`. Use real token ids (via `list-tokens`) instead of raw hex; apply themes with `get-theme-template` (style overrides go through Emotion, component options are props). To brand an app, call `generate-uni-theme` once and write the returned static `uni-theme.ts`; to change look and feel afterwards (colors, borders, per-component styling), edit that file\'s tokens directly \u2014 shared tokens propagate everywhere. Never inline `<svg>` in a component: when you meet inline SVG, or a brand icon set to import, call `create-icon-tokens` to convert it into theme icon tokens, add them to `uni-theme.ts`, and render with `<uni-icon name="\u2026" />`.'
|
|
11796
12312
|
}
|
|
11797
12313
|
);
|
|
11798
12314
|
server.registerTool(
|
|
@@ -11813,7 +12329,10 @@ function createUniServer() {
|
|
|
11813
12329
|
{
|
|
11814
12330
|
title: "Get a Uni component",
|
|
11815
12331
|
description: "Full reference for one component: description, per-framework import + selector/tag, complete API (inputs/outputs or props/events), related tokens, and a sample. Pass `framework` to scope to Angular or React.",
|
|
11816
|
-
inputSchema: {
|
|
12332
|
+
inputSchema: {
|
|
12333
|
+
id: z.string().describe('component id, e.g. "button"'),
|
|
12334
|
+
framework: FrameworkArg.optional()
|
|
12335
|
+
}
|
|
11817
12336
|
},
|
|
11818
12337
|
async ({ id, framework }) => {
|
|
11819
12338
|
const c = getComponent(id);
|
|
@@ -11850,7 +12369,9 @@ function createUniServer() {
|
|
|
11850
12369
|
{
|
|
11851
12370
|
title: "Get a design token",
|
|
11852
12371
|
description: "Resolved value, type, style/behavioral classification, alias chain, and per-theme values for one token.",
|
|
11853
|
-
inputSchema: {
|
|
12372
|
+
inputSchema: {
|
|
12373
|
+
id: z.string().describe('token id, e.g. "color.primary" or "input.behavior.height"')
|
|
12374
|
+
}
|
|
11854
12375
|
},
|
|
11855
12376
|
async ({ id }) => {
|
|
11856
12377
|
const t = getToken(id);
|
|
@@ -11871,7 +12392,11 @@ function createUniServer() {
|
|
|
11871
12392
|
);
|
|
11872
12393
|
server.registerTool(
|
|
11873
12394
|
"list-themes",
|
|
11874
|
-
{
|
|
12395
|
+
{
|
|
12396
|
+
title: "List theme templates",
|
|
12397
|
+
description: "Available Uni theme templates.",
|
|
12398
|
+
inputSchema: {}
|
|
12399
|
+
},
|
|
11875
12400
|
async () => text(formatThemeList(listThemes()))
|
|
11876
12401
|
);
|
|
11877
12402
|
server.registerTool(
|
|
@@ -11892,9 +12417,13 @@ function createUniServer() {
|
|
|
11892
12417
|
title: "Generate a Uni brand theme file",
|
|
11893
12418
|
description: "Generate a complete, WCAG-AA light+dark Uni theme from brand hex color(s) and return the static `uni-theme.ts` file content (write it to `src/app/uni-theme.ts`), the `UNI_THEMES` provider registration snippet, and a contrast report. The file is plain editable data and becomes the source of truth: later restyling means editing its tokens (colors, named border primitives, sparse component overrides) \u2014 not calling this tool again. Never hardcode hex in components; reference theme tokens.",
|
|
11894
12419
|
inputSchema: {
|
|
11895
|
-
brand: z.union([z.string(), z.array(z.string()).min(1).max(3)]).describe(
|
|
12420
|
+
brand: z.union([z.string(), z.array(z.string()).min(1).max(3)]).describe(
|
|
12421
|
+
'Brand hex color(s), e.g. "#0052FF". 2\u20133 colors map to primary/secondary/tertiary.'
|
|
12422
|
+
),
|
|
11896
12423
|
vibe: z.enum(["jewel", "pastel", "earth", "neutral", "florescent"]).optional().describe("Tonal character; defaults to a category inferred from the seed chroma."),
|
|
11897
|
-
scheme: z.enum(["monochromatic", "analogous", "complimentary", "splitComplimentary", "triadic"]).optional().describe(
|
|
12424
|
+
scheme: z.enum(["monochromatic", "analogous", "complimentary", "splitComplimentary", "triadic"]).optional().describe(
|
|
12425
|
+
"Hue-wheel relationship for generated roles; auto-classified for multi-color input."
|
|
12426
|
+
),
|
|
11898
12427
|
shape: z.enum(["sharp", "modern", "playful"]).optional().describe("Shape language \u2014 emits a radii override into the file."),
|
|
11899
12428
|
name: z.string().optional().describe('Theme display name, defaults to "Brand".'),
|
|
11900
12429
|
darkMode: z.boolean().optional().describe("Emit the dark theme too. Defaults to true.")
|
|
@@ -11902,6 +12431,25 @@ function createUniServer() {
|
|
|
11902
12431
|
},
|
|
11903
12432
|
async (args) => text(formatGeneratedTheme(args))
|
|
11904
12433
|
);
|
|
12434
|
+
server.registerTool(
|
|
12435
|
+
"create-icon-tokens",
|
|
12436
|
+
{
|
|
12437
|
+
title: "Convert SVGs into Uni icon tokens",
|
|
12438
|
+
description: 'Convert raw SVG source into theme icon tokens and return a paste-ready `icons` map for `uni-theme.ts`. Use this whenever an app has inline `<svg>` in a component, or a brand icon set to import: move the artwork into the theme once, then render it anywhere with `<uni-icon name="\u2026" />`. Encodes to a `currentColor`-masked data URI (identical to the built-in set), reports which names override built-ins, flags artwork that cannot be masked (multi-color, gradients, no viewBox, raster or external references), and warns when a set mixes viewBox grids. Icons are monochrome \u2014 a multi-color logo flattens to a silhouette. Safe to re-run: already-encoded data URIs pass through unchanged.',
|
|
12439
|
+
inputSchema: {
|
|
12440
|
+
icons: z.array(
|
|
12441
|
+
z.object({
|
|
12442
|
+
name: z.string().describe('Token name, e.g. "acmeLogo". Converted to flat camelCase if needed.'),
|
|
12443
|
+
svg: z.string().describe("Raw SVG source, or an already-encoded data:image/svg+xml URI."),
|
|
12444
|
+
allowMultiColor: z.boolean().optional().describe(
|
|
12445
|
+
"Accept multi-color artwork, knowing the mask flattens it to a silhouette."
|
|
12446
|
+
)
|
|
12447
|
+
})
|
|
12448
|
+
).min(1).describe("The icons to convert. Pass the whole set at once so grids can be compared.")
|
|
12449
|
+
}
|
|
12450
|
+
},
|
|
12451
|
+
async ({ icons }) => text(formatIconTokens(icons))
|
|
12452
|
+
);
|
|
11905
12453
|
server.registerTool(
|
|
11906
12454
|
"search",
|
|
11907
12455
|
{
|
|
@@ -11921,9 +12469,15 @@ function registerResources(server) {
|
|
|
11921
12469
|
server.registerResource(
|
|
11922
12470
|
"meta",
|
|
11923
12471
|
"uni://meta",
|
|
11924
|
-
{
|
|
12472
|
+
{
|
|
12473
|
+
title: "Uni index metadata",
|
|
12474
|
+
description: "Index version, Uni release, framework coverage, counts, build time.",
|
|
12475
|
+
mimeType: "application/json"
|
|
12476
|
+
},
|
|
11925
12477
|
async (uri) => ({
|
|
11926
|
-
contents: [
|
|
12478
|
+
contents: [
|
|
12479
|
+
{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(meta, null, 2) }
|
|
12480
|
+
]
|
|
11927
12481
|
})
|
|
11928
12482
|
);
|
|
11929
12483
|
server.registerResource(
|
|
@@ -11933,23 +12487,47 @@ function registerResources(server) {
|
|
|
11933
12487
|
resources: listComponents().map((c) => ({ uri: `uni://components/${c.id}`, name: c.name, description: c.summary }))
|
|
11934
12488
|
})
|
|
11935
12489
|
}),
|
|
11936
|
-
{
|
|
12490
|
+
{
|
|
12491
|
+
title: "Uni component",
|
|
12492
|
+
description: "A component reference card.",
|
|
12493
|
+
mimeType: "text/markdown"
|
|
12494
|
+
},
|
|
11937
12495
|
async (uri, { id }) => {
|
|
11938
12496
|
const c = getComponent(String(id));
|
|
11939
|
-
return {
|
|
12497
|
+
return {
|
|
12498
|
+
contents: [
|
|
12499
|
+
{
|
|
12500
|
+
uri: uri.href,
|
|
12501
|
+
mimeType: "text/markdown",
|
|
12502
|
+
text: c ? formatComponent(c) : `Unknown component: ${id}`
|
|
12503
|
+
}
|
|
12504
|
+
]
|
|
12505
|
+
};
|
|
11940
12506
|
}
|
|
11941
12507
|
);
|
|
11942
12508
|
server.registerResource(
|
|
11943
12509
|
"token",
|
|
11944
12510
|
new ResourceTemplate("uni://tokens/{id}", {
|
|
11945
12511
|
list: async () => ({
|
|
11946
|
-
resources: listTokens().map((t) => ({
|
|
12512
|
+
resources: listTokens().map((t) => ({
|
|
12513
|
+
uri: `uni://tokens/${t.id}`,
|
|
12514
|
+
name: t.id,
|
|
12515
|
+
description: `${t.type} = ${t.value}`
|
|
12516
|
+
}))
|
|
11947
12517
|
})
|
|
11948
12518
|
}),
|
|
11949
12519
|
{ title: "Uni token", description: "A design token.", mimeType: "text/markdown" },
|
|
11950
12520
|
async (uri, { id }) => {
|
|
11951
12521
|
const t = getToken(String(id));
|
|
11952
|
-
return {
|
|
12522
|
+
return {
|
|
12523
|
+
contents: [
|
|
12524
|
+
{
|
|
12525
|
+
uri: uri.href,
|
|
12526
|
+
mimeType: "text/markdown",
|
|
12527
|
+
text: t ? formatToken(t) : `Unknown token: ${id}`
|
|
12528
|
+
}
|
|
12529
|
+
]
|
|
12530
|
+
};
|
|
11953
12531
|
}
|
|
11954
12532
|
);
|
|
11955
12533
|
server.registerResource(
|
|
@@ -11959,23 +12537,51 @@ function registerResources(server) {
|
|
|
11959
12537
|
resources: listThemes().map((t) => ({ uri: `uni://themes/${t.id}`, name: t.name, description: t.description }))
|
|
11960
12538
|
})
|
|
11961
12539
|
}),
|
|
11962
|
-
{
|
|
12540
|
+
{
|
|
12541
|
+
title: "Uni theme template",
|
|
12542
|
+
description: "A theme template (style + component options).",
|
|
12543
|
+
mimeType: "text/markdown"
|
|
12544
|
+
},
|
|
11963
12545
|
async (uri, { id }) => {
|
|
11964
12546
|
const t = getTheme(String(id));
|
|
11965
|
-
return {
|
|
12547
|
+
return {
|
|
12548
|
+
contents: [
|
|
12549
|
+
{
|
|
12550
|
+
uri: uri.href,
|
|
12551
|
+
mimeType: "text/markdown",
|
|
12552
|
+
text: t ? formatTheme(t) : `Unknown theme: ${id}`
|
|
12553
|
+
}
|
|
12554
|
+
]
|
|
12555
|
+
};
|
|
11966
12556
|
}
|
|
11967
12557
|
);
|
|
11968
12558
|
server.registerResource(
|
|
11969
12559
|
"guidelines",
|
|
11970
12560
|
new ResourceTemplate("uni://guidelines/{id}", {
|
|
11971
12561
|
list: async () => ({
|
|
11972
|
-
resources: listComponents().map((c) => ({
|
|
12562
|
+
resources: listComponents().map((c) => ({
|
|
12563
|
+
uri: `uni://guidelines/${c.id}`,
|
|
12564
|
+
name: `${c.name} guidelines`,
|
|
12565
|
+
description: c.summary
|
|
12566
|
+
}))
|
|
11973
12567
|
})
|
|
11974
12568
|
}),
|
|
11975
|
-
{
|
|
12569
|
+
{
|
|
12570
|
+
title: "Uni guidelines",
|
|
12571
|
+
description: "Authored usage guidance for a component.",
|
|
12572
|
+
mimeType: "text/markdown"
|
|
12573
|
+
},
|
|
11976
12574
|
async (uri, { id }) => {
|
|
11977
12575
|
const c = getComponent(String(id));
|
|
11978
|
-
return {
|
|
12576
|
+
return {
|
|
12577
|
+
contents: [
|
|
12578
|
+
{
|
|
12579
|
+
uri: uri.href,
|
|
12580
|
+
mimeType: "text/markdown",
|
|
12581
|
+
text: c ? formatGuidelines(c) : `Unknown component: ${id}`
|
|
12582
|
+
}
|
|
12583
|
+
]
|
|
12584
|
+
};
|
|
11979
12585
|
}
|
|
11980
12586
|
);
|
|
11981
12587
|
}
|
|
@@ -11984,4 +12590,4 @@ export {
|
|
|
11984
12590
|
meta,
|
|
11985
12591
|
createUniServer
|
|
11986
12592
|
};
|
|
11987
|
-
//# sourceMappingURL=chunk-
|
|
12593
|
+
//# sourceMappingURL=chunk-252ZWTTU.js.map
|