@actioneer/ads-mcp 1.0.8 → 1.0.9
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/manifest.json +1601 -83
- package/package.json +1 -1
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actioneer/ads",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"importPath": "@actioneer/ads",
|
|
5
5
|
"styleImport": "@import \"@actioneer/ads/styles.css\";",
|
|
6
6
|
"families": [
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"Chat"
|
|
17
17
|
],
|
|
18
18
|
"counts": {
|
|
19
|
-
"total":
|
|
20
|
-
"component":
|
|
21
|
-
"type":
|
|
19
|
+
"total": 751,
|
|
20
|
+
"component": 325,
|
|
21
|
+
"type": 318,
|
|
22
22
|
"hook": 10,
|
|
23
23
|
"util": 98
|
|
24
24
|
},
|
|
@@ -820,10 +820,10 @@
|
|
|
820
820
|
],
|
|
821
821
|
"default": "md",
|
|
822
822
|
"options": {
|
|
823
|
-
"xs": "
|
|
824
|
-
"sm": "
|
|
825
|
-
"md": "
|
|
826
|
-
"lg": "
|
|
823
|
+
"xs": "Deprecated alias — renders identically to md (32px). Use md.",
|
|
824
|
+
"sm": "Deprecated alias — renders identically to md (32px). Use md.",
|
|
825
|
+
"md": "The default 32px button for nearly every action, form, toolbar and table row.",
|
|
826
|
+
"lg": "The 48px button (20px inline padding, 8px radius) for a standalone high-emphasis CTA such as a full-screen step or empty state.",
|
|
827
827
|
"icon": "Default square icon-only button; always pair with aria-label since there's no visible text.",
|
|
828
828
|
"icon-sm": "Compact square icon-only button for toolbars and dense rows.",
|
|
829
829
|
"icon-xs": "Smallest square icon-only button, for the tightest inline contexts."
|
|
@@ -831,6 +831,7 @@
|
|
|
831
831
|
}
|
|
832
832
|
},
|
|
833
833
|
"props": [
|
|
834
|
+
"size",
|
|
834
835
|
"isLoading",
|
|
835
836
|
"startContent",
|
|
836
837
|
"endContent",
|
|
@@ -1200,6 +1201,13 @@
|
|
|
1200
1201
|
"importPath": "@actioneer/ads",
|
|
1201
1202
|
"module": "button"
|
|
1202
1203
|
},
|
|
1204
|
+
{
|
|
1205
|
+
"name": "ButtonSize",
|
|
1206
|
+
"family": "Foundations",
|
|
1207
|
+
"kind": "type",
|
|
1208
|
+
"importPath": "@actioneer/ads",
|
|
1209
|
+
"module": "button"
|
|
1210
|
+
},
|
|
1203
1211
|
{
|
|
1204
1212
|
"name": "CodeBlockProps",
|
|
1205
1213
|
"family": "Foundations",
|
|
@@ -1464,6 +1472,25 @@
|
|
|
1464
1472
|
"className"
|
|
1465
1473
|
]
|
|
1466
1474
|
},
|
|
1475
|
+
{
|
|
1476
|
+
"name": "Filters",
|
|
1477
|
+
"family": "Form controls",
|
|
1478
|
+
"kind": "component",
|
|
1479
|
+
"importPath": "@actioneer/ads",
|
|
1480
|
+
"module": "filters",
|
|
1481
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/filters",
|
|
1482
|
+
"props": [
|
|
1483
|
+
"groups",
|
|
1484
|
+
"onChange",
|
|
1485
|
+
"onClearAll",
|
|
1486
|
+
"title",
|
|
1487
|
+
"triggerLabel",
|
|
1488
|
+
"align",
|
|
1489
|
+
"open",
|
|
1490
|
+
"defaultOpen",
|
|
1491
|
+
"onOpenChange"
|
|
1492
|
+
]
|
|
1493
|
+
},
|
|
1467
1494
|
{
|
|
1468
1495
|
"name": "Input",
|
|
1469
1496
|
"family": "Form controls",
|
|
@@ -1725,6 +1752,27 @@
|
|
|
1725
1752
|
"importPath": "@actioneer/ads",
|
|
1726
1753
|
"module": "select"
|
|
1727
1754
|
},
|
|
1755
|
+
{
|
|
1756
|
+
"name": "FilterGroup",
|
|
1757
|
+
"family": "Form controls",
|
|
1758
|
+
"kind": "type",
|
|
1759
|
+
"importPath": "@actioneer/ads",
|
|
1760
|
+
"module": "filters"
|
|
1761
|
+
},
|
|
1762
|
+
{
|
|
1763
|
+
"name": "FilterOption",
|
|
1764
|
+
"family": "Form controls",
|
|
1765
|
+
"kind": "type",
|
|
1766
|
+
"importPath": "@actioneer/ads",
|
|
1767
|
+
"module": "filters"
|
|
1768
|
+
},
|
|
1769
|
+
{
|
|
1770
|
+
"name": "FiltersProps",
|
|
1771
|
+
"family": "Form controls",
|
|
1772
|
+
"kind": "type",
|
|
1773
|
+
"importPath": "@actioneer/ads",
|
|
1774
|
+
"module": "filters"
|
|
1775
|
+
},
|
|
1728
1776
|
{
|
|
1729
1777
|
"name": "InputFieldProps",
|
|
1730
1778
|
"family": "Form controls",
|
|
@@ -2118,6 +2166,13 @@
|
|
|
2118
2166
|
"top"
|
|
2119
2167
|
],
|
|
2120
2168
|
"default": "center"
|
|
2169
|
+
},
|
|
2170
|
+
"height": {
|
|
2171
|
+
"values": [
|
|
2172
|
+
"content",
|
|
2173
|
+
"fixed"
|
|
2174
|
+
],
|
|
2175
|
+
"default": "content"
|
|
2121
2176
|
}
|
|
2122
2177
|
},
|
|
2123
2178
|
"props": [
|
|
@@ -2160,6 +2215,13 @@
|
|
|
2160
2215
|
"top"
|
|
2161
2216
|
],
|
|
2162
2217
|
"default": "center"
|
|
2218
|
+
},
|
|
2219
|
+
"height": {
|
|
2220
|
+
"values": [
|
|
2221
|
+
"content",
|
|
2222
|
+
"fixed"
|
|
2223
|
+
],
|
|
2224
|
+
"default": "content"
|
|
2163
2225
|
}
|
|
2164
2226
|
},
|
|
2165
2227
|
"props": [
|
|
@@ -2190,6 +2252,13 @@
|
|
|
2190
2252
|
"top"
|
|
2191
2253
|
],
|
|
2192
2254
|
"default": "center"
|
|
2255
|
+
},
|
|
2256
|
+
"height": {
|
|
2257
|
+
"values": [
|
|
2258
|
+
"content",
|
|
2259
|
+
"fixed"
|
|
2260
|
+
],
|
|
2261
|
+
"default": "content"
|
|
2193
2262
|
}
|
|
2194
2263
|
}
|
|
2195
2264
|
},
|
|
@@ -2217,6 +2286,13 @@
|
|
|
2217
2286
|
"top"
|
|
2218
2287
|
],
|
|
2219
2288
|
"default": "center"
|
|
2289
|
+
},
|
|
2290
|
+
"height": {
|
|
2291
|
+
"values": [
|
|
2292
|
+
"content",
|
|
2293
|
+
"fixed"
|
|
2294
|
+
],
|
|
2295
|
+
"default": "content"
|
|
2220
2296
|
}
|
|
2221
2297
|
}
|
|
2222
2298
|
},
|
|
@@ -2277,6 +2353,13 @@
|
|
|
2277
2353
|
"top"
|
|
2278
2354
|
],
|
|
2279
2355
|
"default": "center"
|
|
2356
|
+
},
|
|
2357
|
+
"height": {
|
|
2358
|
+
"values": [
|
|
2359
|
+
"content",
|
|
2360
|
+
"fixed"
|
|
2361
|
+
],
|
|
2362
|
+
"default": "content"
|
|
2280
2363
|
}
|
|
2281
2364
|
}
|
|
2282
2365
|
},
|
|
@@ -2304,6 +2387,13 @@
|
|
|
2304
2387
|
"top"
|
|
2305
2388
|
],
|
|
2306
2389
|
"default": "center"
|
|
2390
|
+
},
|
|
2391
|
+
"height": {
|
|
2392
|
+
"values": [
|
|
2393
|
+
"content",
|
|
2394
|
+
"fixed"
|
|
2395
|
+
],
|
|
2396
|
+
"default": "content"
|
|
2307
2397
|
}
|
|
2308
2398
|
}
|
|
2309
2399
|
},
|
|
@@ -2331,6 +2421,13 @@
|
|
|
2331
2421
|
"top"
|
|
2332
2422
|
],
|
|
2333
2423
|
"default": "center"
|
|
2424
|
+
},
|
|
2425
|
+
"height": {
|
|
2426
|
+
"values": [
|
|
2427
|
+
"content",
|
|
2428
|
+
"fixed"
|
|
2429
|
+
],
|
|
2430
|
+
"default": "content"
|
|
2334
2431
|
}
|
|
2335
2432
|
}
|
|
2336
2433
|
},
|
|
@@ -2358,6 +2455,13 @@
|
|
|
2358
2455
|
"top"
|
|
2359
2456
|
],
|
|
2360
2457
|
"default": "center"
|
|
2458
|
+
},
|
|
2459
|
+
"height": {
|
|
2460
|
+
"values": [
|
|
2461
|
+
"content",
|
|
2462
|
+
"fixed"
|
|
2463
|
+
],
|
|
2464
|
+
"default": "content"
|
|
2361
2465
|
}
|
|
2362
2466
|
}
|
|
2363
2467
|
},
|
|
@@ -2371,7 +2475,9 @@
|
|
|
2371
2475
|
"showcaseUrl": "https://ads.actioneer.dev/#/popover",
|
|
2372
2476
|
"props": [
|
|
2373
2477
|
"children",
|
|
2374
|
-
"defaultOpen"
|
|
2478
|
+
"defaultOpen",
|
|
2479
|
+
"open",
|
|
2480
|
+
"onOpenChange"
|
|
2375
2481
|
]
|
|
2376
2482
|
},
|
|
2377
2483
|
{
|
|
@@ -2909,7 +3015,8 @@
|
|
|
2909
3015
|
"variant": {
|
|
2910
3016
|
"values": [
|
|
2911
3017
|
"solid",
|
|
2912
|
-
"outline"
|
|
3018
|
+
"outline",
|
|
3019
|
+
"plain"
|
|
2913
3020
|
],
|
|
2914
3021
|
"default": "solid",
|
|
2915
3022
|
"options": {
|
|
@@ -3729,7 +3836,8 @@
|
|
|
3729
3836
|
"defaultExpanded",
|
|
3730
3837
|
"onExpandedChange",
|
|
3731
3838
|
"disclosureLabel",
|
|
3732
|
-
"isInteractive"
|
|
3839
|
+
"isInteractive",
|
|
3840
|
+
"isActive"
|
|
3733
3841
|
]
|
|
3734
3842
|
},
|
|
3735
3843
|
{
|
|
@@ -4182,6 +4290,13 @@
|
|
|
4182
4290
|
"importPath": "@actioneer/ads",
|
|
4183
4291
|
"module": "chart"
|
|
4184
4292
|
},
|
|
4293
|
+
{
|
|
4294
|
+
"name": "ChartLegendPlacement",
|
|
4295
|
+
"family": "Data display",
|
|
4296
|
+
"kind": "type",
|
|
4297
|
+
"importPath": "@actioneer/ads",
|
|
4298
|
+
"module": "chart"
|
|
4299
|
+
},
|
|
4185
4300
|
{
|
|
4186
4301
|
"name": "ChartTickFormatter",
|
|
4187
4302
|
"family": "Data display",
|
|
@@ -5689,6 +5804,19 @@
|
|
|
5689
5804
|
"module": "sidebar",
|
|
5690
5805
|
"showcaseUrl": "https://ads.actioneer.dev/#/sidebar"
|
|
5691
5806
|
},
|
|
5807
|
+
{
|
|
5808
|
+
"name": "SidebarWorkspace",
|
|
5809
|
+
"family": "Navigation",
|
|
5810
|
+
"kind": "component",
|
|
5811
|
+
"importPath": "@actioneer/ads",
|
|
5812
|
+
"module": "sidebar",
|
|
5813
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/sidebar",
|
|
5814
|
+
"props": [
|
|
5815
|
+
"name",
|
|
5816
|
+
"logoSrc",
|
|
5817
|
+
"showName"
|
|
5818
|
+
]
|
|
5819
|
+
},
|
|
5692
5820
|
{
|
|
5693
5821
|
"name": "BodyPageHeaderProps",
|
|
5694
5822
|
"family": "Navigation",
|
|
@@ -5787,6 +5915,13 @@
|
|
|
5787
5915
|
"importPath": "@actioneer/ads",
|
|
5788
5916
|
"module": "sidebar"
|
|
5789
5917
|
},
|
|
5918
|
+
{
|
|
5919
|
+
"name": "SidebarWorkspaceProps",
|
|
5920
|
+
"family": "Navigation",
|
|
5921
|
+
"kind": "type",
|
|
5922
|
+
"importPath": "@actioneer/ads",
|
|
5923
|
+
"module": "sidebar"
|
|
5924
|
+
},
|
|
5790
5925
|
{
|
|
5791
5926
|
"name": "useSidebar",
|
|
5792
5927
|
"family": "Navigation",
|
|
@@ -8685,7 +8820,7 @@
|
|
|
8685
8820
|
"Prefer more, smaller steps over dense ones; ask one thing at a time.",
|
|
8686
8821
|
"Derive instead of asking whenever possible (a name from a work email, the company from its domain).",
|
|
8687
8822
|
"Prefer clear text-only buttons; add an icon only when it communicates essential meaning the label cannot carry alone, or for a compact conventional icon-only control.",
|
|
8688
|
-
"
|
|
8823
|
+
"Open a multi-step create task launched from a collection (New campaign) as a Modal over that list: title-only header, one scrolling form (for New campaign: Campaign name, Caller numbers, Audience), and Cancel + Create together in the footer — the user never loses their place. Add a Stepper only when the task truly has separate steps. Form modals use a fixed height (Modal height=\"fixed\", 640px) so the frame never resizes: the header and footer stay put and ModalBody scrolls. Standalone onboarding flows render full-screen with a single content container holding the inputs and its own Back/Continue."
|
|
8689
8824
|
],
|
|
8690
8825
|
"dont": [
|
|
8691
8826
|
"Add section eyebrows above a title that already names the screen, or helper text that restates the obvious / duplicates a disabled button's meaning.",
|
|
@@ -8714,13 +8849,15 @@
|
|
|
8714
8849
|
{
|
|
8715
8850
|
"id": "leading-back-navigation",
|
|
8716
8851
|
"number": 10,
|
|
8717
|
-
"title": "Back navigation is leading",
|
|
8718
|
-
"rule": "A
|
|
8852
|
+
"title": "Back navigation is leading; drill-downs use the breadcrumb",
|
|
8853
|
+
"rule": "A record or drill-down page (a campaign inside Voice campaigns, a connector inside Data Integrations) is titled by its Breadcrumbs trail — parent / record at 16px — with no back arrow and no repeated H1; the page's one primary action sits at the right end of the same row. A standalone page-level Back control, when one is needed outside a hierarchy, sits immediately before the title and never on the right.",
|
|
8719
8854
|
"do": [
|
|
8720
|
-
"
|
|
8721
|
-
"
|
|
8855
|
+
"Title a drill-down with Breadcrumbs (16px trail: muted parent links, Medium current item) and put its primary action (e.g. Pause campaign) right-aligned on the same row.",
|
|
8856
|
+
"Use PageHeader with onBack only for a standalone page that has no parent hierarchy to show.",
|
|
8857
|
+
"Reserve the trailing header area for forward or page-level actions such as Add, Save, Pause, or Share."
|
|
8722
8858
|
],
|
|
8723
8859
|
"dont": [
|
|
8860
|
+
"Stack a back arrow and a large H1 above a page whose parent is already known — the breadcrumb says both.",
|
|
8724
8861
|
"Place Back on the right side of a page header.",
|
|
8725
8862
|
"Render a redundant visible Back label when the standard left arrow and accessible label are sufficient."
|
|
8726
8863
|
],
|
|
@@ -8730,15 +8867,91 @@
|
|
|
8730
8867
|
"id": "tabs-search-opposed",
|
|
8731
8868
|
"number": 11,
|
|
8732
8869
|
"title": "Tabs lead; scoped search trails",
|
|
8733
|
-
"rule": "When tabs and a search field control the same content, they share one responsive control row: the tab list leads with its triggers left-aligned at their natural width over a baseline that fades from WG3 to transparent, and search sits at the trailing edge.
|
|
8870
|
+
"rule": "When tabs and a search field control the same content, they share one responsive control row: the tab list leads with its triggers left-aligned at their natural width over a baseline that fades from WG3 to transparent, and search sits at the trailing edge. On collection screens the trailing controls are icon triggers — SearchDisclosure (expands into the field) then Filters — and tab labels are 14px with a quieter count after each label.",
|
|
8734
8871
|
"do": [
|
|
8735
|
-
"Keep tab triggers left-aligned at their natural width, then place the scoped search
|
|
8872
|
+
"Keep tab triggers left-aligned at their natural width, then place the scoped search opposite them in the same toolbar.",
|
|
8873
|
+
"On collection screens use SearchDisclosure followed by Filters as 32px icon triggers at the trailing edge; keep the page header for the title and one primary action only.",
|
|
8874
|
+
"Give each status tab its count (All 42 · Active 14 · Paused 4); the count renders Regular in tertiary grey, teal on the active tab.",
|
|
8736
8875
|
"On constrained containers, stack tabs first and search second while preserving their relationship."
|
|
8737
8876
|
],
|
|
8738
8877
|
"dont": [
|
|
8739
8878
|
"Stretch the tab track to fill the space between its labels and the search field.",
|
|
8740
8879
|
"Put a scoped search field on a separate row above its tabs when both controls fit side by side.",
|
|
8741
|
-
"Place search before tabs in the reading or keyboard order."
|
|
8880
|
+
"Place search before tabs in the reading or keyboard order.",
|
|
8881
|
+
"Put a Search button or a full-width search field in the page header of a collection screen."
|
|
8882
|
+
],
|
|
8883
|
+
"enforcedByLint": false
|
|
8884
|
+
},
|
|
8885
|
+
{
|
|
8886
|
+
"id": "collection-screens",
|
|
8887
|
+
"number": 12,
|
|
8888
|
+
"title": "Collection screens fill the panel",
|
|
8889
|
+
"rule": "A collection screen (campaigns, call logs, leads) is one white panel: BodyPageHeader (title + one primary action), the tab/search/filter row, then a Table whose rows fill the panel's height with Pagination pinned to its bottom edge. Rows open details in a shell-level side panel; the list stays visible.",
|
|
8890
|
+
"do": [
|
|
8891
|
+
"Size the page so the rows fill the panel to its 24px bottom inset and Pagination sits at the bottom; let only the rows scroll.",
|
|
8892
|
+
"Show row checkboxes only on hover/focus (and while checked or mixed); keep the header select-all checkbox always visible.",
|
|
8893
|
+
"When a row's details are open, mark it with TableRow isActive (the soft-teal fade) — no radio and no selection column for that purpose.",
|
|
8894
|
+
"Put status in a Chip using business language (see status-language) and keep cell values at text-m.",
|
|
8895
|
+
"Show the customer's workspace logo in the Sidebar brand slot (SidebarWorkspace) when the product runs inside a customer workspace."
|
|
8896
|
+
],
|
|
8897
|
+
"dont": [
|
|
8898
|
+
"Leave an empty band under a short table, or float Pagination mid-panel.",
|
|
8899
|
+
"Use single-selection radios to mean 'this row is open'.",
|
|
8900
|
+
"Show a checkbox on every resting row of a multi-select table.",
|
|
8901
|
+
"Open record details in a modal over the list you are scanning."
|
|
8902
|
+
],
|
|
8903
|
+
"enforcedByLint": false
|
|
8904
|
+
},
|
|
8905
|
+
{
|
|
8906
|
+
"id": "record-detail-panels",
|
|
8907
|
+
"number": 13,
|
|
8908
|
+
"title": "Record detail panels are grouped by question",
|
|
8909
|
+
"rule": "A selection-driven detail panel reads top-down as: kicker (the KIND of record), title, then the record's status Chip and its one-line context directly under the title; then titled sections 32px apart — Performance (stat cards + chart card) and Details (label–value rows with inset dividers); then footer actions (secondary outline + one solid primary).",
|
|
8910
|
+
"do": [
|
|
8911
|
+
"Put the status Chip and its context (\"Finished Oct 21\") in the header, 4px under the title, so status never floats on its own.",
|
|
8912
|
+
"Group numbers in small outlined stat cards (WG3 edge, radius-l, 12px padding, 8px apart) and the trend in its own chart card.",
|
|
8913
|
+
"List attributes (owner, started, calling windows) as label–value rows: label secondary left, value primary right, inset WG3 dividers.",
|
|
8914
|
+
"Separate sections with 32px and keep items inside a section ≤16px apart; give each section a 14px Medium title."
|
|
8915
|
+
],
|
|
8916
|
+
"dont": [
|
|
8917
|
+
"Mix attributes (owner) into the metric grid.",
|
|
8918
|
+
"Leave a lone chip or line of metadata between the title and the first section.",
|
|
8919
|
+
"Repeat the same fact (finish date) in the header and in Details."
|
|
8920
|
+
],
|
|
8921
|
+
"enforcedByLint": false
|
|
8922
|
+
},
|
|
8923
|
+
{
|
|
8924
|
+
"id": "analytics-surfaces",
|
|
8925
|
+
"number": 14,
|
|
8926
|
+
"title": "Stats and charts sit in their own containers, values visible",
|
|
8927
|
+
"rule": "On analytics/record pages every stat and every chart is its own outlined container (1px WG3 border, radius-l, 20px padding, white, flat) on the white panel, 16px apart. Values are printed on the chart by default — never hover-only — and the legend sits at the right end of the chart's title row.",
|
|
8928
|
+
"do": [
|
|
8929
|
+
"Stat card: label (14px secondary) → number (32px) with its scope (\"of 4,800 calls\") 4px apart, then a Progress bar 12px below that fills the card width.",
|
|
8930
|
+
"Chart card: title (16px Medium) + scope subtitle (12px secondary) on the left, the legend right-aligned on the same row, ~40px from the title block to the plot.",
|
|
8931
|
+
"Bar charts print each bar's value; stacked bars print each segment that fits plus the stack total. Line charts print every point's value in the series colour (secondary grey for light amber/grey series).",
|
|
8932
|
+
"Size charts so the cards end on the panel's 24px bottom inset."
|
|
8933
|
+
],
|
|
8934
|
+
"dont": [
|
|
8935
|
+
"Separate stats with vertical hairlines while their bars run into the next stat — proximity breaks.",
|
|
8936
|
+
"Hide numbers behind a hover tooltip.",
|
|
8937
|
+
"Give a legend its own row under the subtitle when it fits beside the title.",
|
|
8938
|
+
"Put the same spacing between a label and its value as between two separate cards."
|
|
8939
|
+
],
|
|
8940
|
+
"enforcedByLint": false
|
|
8941
|
+
},
|
|
8942
|
+
{
|
|
8943
|
+
"id": "status-language",
|
|
8944
|
+
"number": 15,
|
|
8945
|
+
"title": "Status speaks the business, with one tone per meaning",
|
|
8946
|
+
"rule": "Status labels name the business state, not the machine's activity, and tabs use the same words. Campaign statuses: Active and Scheduled (info blue), Paused (warning amber), Completed (success green), Draft (default grey), Failed (danger red). Teal is reserved for actions and selection, not for a status.",
|
|
8947
|
+
"do": [
|
|
8948
|
+
"Say Active, not Dialing; name the tab Active too (All · Draft · Active · Paused · Completed).",
|
|
8949
|
+
"Use Chip tones consistently for the same status everywhere (table cell, detail header, filters).",
|
|
8950
|
+
"Use the plain Chip appearance (square dot + 14px text) where a column of filled chips would shout louder than the record names."
|
|
8951
|
+
],
|
|
8952
|
+
"dont": [
|
|
8953
|
+
"Colour a status with the primary teal — it competes with the primary action and the selected-row fade.",
|
|
8954
|
+
"Use different words for the same state in the tab, the chip and the filter."
|
|
8742
8955
|
],
|
|
8743
8956
|
"enforcedByLint": false
|
|
8744
8957
|
}
|
|
@@ -8996,95 +9209,223 @@
|
|
|
8996
9209
|
"story": "ADS/Components/Data display/Tabs"
|
|
8997
9210
|
},
|
|
8998
9211
|
{
|
|
8999
|
-
"id": "
|
|
9000
|
-
"name": "
|
|
9212
|
+
"id": "collection-screen",
|
|
9213
|
+
"name": "Collection screen with record detail",
|
|
9001
9214
|
"intents": [
|
|
9002
|
-
"
|
|
9003
|
-
"
|
|
9004
|
-
"
|
|
9005
|
-
"
|
|
9006
|
-
"
|
|
9215
|
+
"campaigns",
|
|
9216
|
+
"call logs",
|
|
9217
|
+
"leads",
|
|
9218
|
+
"records list",
|
|
9219
|
+
"collection",
|
|
9220
|
+
"list page",
|
|
9221
|
+
"new campaign"
|
|
9007
9222
|
],
|
|
9008
|
-
"description": "
|
|
9223
|
+
"description": "BodyPageHeader (title + one primary action), a control row with counted Tabs leading and SearchDisclosure + Filters trailing, a Table whose rows fill the panel with Pagination at its bottom edge, a shell-level Drawer for the open record, and a fixed-height Modal for the create task.",
|
|
9009
9224
|
"roots": [
|
|
9010
9225
|
{
|
|
9011
|
-
"
|
|
9226
|
+
"native": "div",
|
|
9227
|
+
"slot": "shell-canvas-row",
|
|
9012
9228
|
"children": [
|
|
9013
9229
|
{
|
|
9014
|
-
"
|
|
9230
|
+
"native": "section",
|
|
9231
|
+
"slot": "collection-panel",
|
|
9015
9232
|
"children": [
|
|
9016
9233
|
{
|
|
9017
|
-
"component": "
|
|
9234
|
+
"component": "BodyPageHeader",
|
|
9235
|
+
"children": [
|
|
9236
|
+
{
|
|
9237
|
+
"component": "Button",
|
|
9238
|
+
"slot": "primary-action"
|
|
9239
|
+
}
|
|
9240
|
+
]
|
|
9018
9241
|
},
|
|
9019
9242
|
{
|
|
9020
|
-
"
|
|
9021
|
-
"
|
|
9243
|
+
"native": "div",
|
|
9244
|
+
"slot": "control-row",
|
|
9245
|
+
"children": [
|
|
9246
|
+
{
|
|
9247
|
+
"component": "Tabs",
|
|
9248
|
+
"children": [
|
|
9249
|
+
{
|
|
9250
|
+
"component": "TabList",
|
|
9251
|
+
"children": [
|
|
9252
|
+
{
|
|
9253
|
+
"component": "Tab",
|
|
9254
|
+
"repeat": true,
|
|
9255
|
+
"note": "count={n}"
|
|
9256
|
+
}
|
|
9257
|
+
]
|
|
9258
|
+
}
|
|
9259
|
+
]
|
|
9260
|
+
},
|
|
9261
|
+
{
|
|
9262
|
+
"component": "SearchDisclosure",
|
|
9263
|
+
"slot": "trailing-search"
|
|
9264
|
+
},
|
|
9265
|
+
{
|
|
9266
|
+
"component": "Filters",
|
|
9267
|
+
"slot": "trailing-filters"
|
|
9268
|
+
}
|
|
9269
|
+
]
|
|
9270
|
+
},
|
|
9271
|
+
{
|
|
9272
|
+
"component": "Table",
|
|
9273
|
+
"note": "selectionMode=\"multiple\"; footer={<Pagination />}; page size derived from the panel height",
|
|
9274
|
+
"children": [
|
|
9275
|
+
{
|
|
9276
|
+
"component": "TableHeader",
|
|
9277
|
+
"children": [
|
|
9278
|
+
{
|
|
9279
|
+
"component": "TableRow",
|
|
9280
|
+
"children": [
|
|
9281
|
+
{
|
|
9282
|
+
"component": "TableColumn",
|
|
9283
|
+
"repeat": true
|
|
9284
|
+
}
|
|
9285
|
+
]
|
|
9286
|
+
}
|
|
9287
|
+
]
|
|
9288
|
+
},
|
|
9289
|
+
{
|
|
9290
|
+
"component": "TableBody",
|
|
9291
|
+
"children": [
|
|
9292
|
+
{
|
|
9293
|
+
"component": "TableRow",
|
|
9294
|
+
"repeat": true,
|
|
9295
|
+
"note": "isActive while its detail is open",
|
|
9296
|
+
"children": [
|
|
9297
|
+
{
|
|
9298
|
+
"component": "TableCell",
|
|
9299
|
+
"repeat": true
|
|
9300
|
+
}
|
|
9301
|
+
]
|
|
9302
|
+
}
|
|
9303
|
+
]
|
|
9304
|
+
}
|
|
9305
|
+
]
|
|
9022
9306
|
}
|
|
9023
9307
|
]
|
|
9024
9308
|
},
|
|
9025
9309
|
{
|
|
9026
|
-
"component": "
|
|
9027
|
-
"
|
|
9310
|
+
"component": "Drawer",
|
|
9311
|
+
"slot": "selected-record-detail",
|
|
9312
|
+
"optional": true,
|
|
9313
|
+
"children": [
|
|
9314
|
+
{
|
|
9315
|
+
"component": "DrawerHeader",
|
|
9316
|
+
"children": [
|
|
9317
|
+
{
|
|
9318
|
+
"component": "DrawerTitle"
|
|
9319
|
+
},
|
|
9320
|
+
{
|
|
9321
|
+
"component": "Chip",
|
|
9322
|
+
"slot": "status-under-title"
|
|
9323
|
+
}
|
|
9324
|
+
]
|
|
9325
|
+
},
|
|
9326
|
+
{
|
|
9327
|
+
"component": "DrawerBody",
|
|
9328
|
+
"note": "Performance (stat cards + chart card), then Details (label–value rows)"
|
|
9329
|
+
},
|
|
9330
|
+
{
|
|
9331
|
+
"component": "DrawerFooter"
|
|
9332
|
+
}
|
|
9333
|
+
]
|
|
9028
9334
|
},
|
|
9029
9335
|
{
|
|
9030
|
-
"component": "
|
|
9336
|
+
"component": "Modal",
|
|
9337
|
+
"slot": "create-task",
|
|
9338
|
+
"optional": true,
|
|
9339
|
+
"note": "height=\"fixed\"",
|
|
9031
9340
|
"children": [
|
|
9032
9341
|
{
|
|
9033
|
-
"component": "
|
|
9034
|
-
"
|
|
9342
|
+
"component": "ModalHeader",
|
|
9343
|
+
"children": [
|
|
9344
|
+
{
|
|
9345
|
+
"component": "ModalTitle"
|
|
9346
|
+
}
|
|
9347
|
+
]
|
|
9348
|
+
},
|
|
9349
|
+
{
|
|
9350
|
+
"component": "ModalBody",
|
|
9351
|
+
"children": [
|
|
9352
|
+
{
|
|
9353
|
+
"component": "InputField"
|
|
9354
|
+
},
|
|
9355
|
+
{
|
|
9356
|
+
"component": "SegmentedControl"
|
|
9357
|
+
},
|
|
9358
|
+
{
|
|
9359
|
+
"component": "FileDropzone",
|
|
9360
|
+
"optional": true
|
|
9361
|
+
}
|
|
9362
|
+
]
|
|
9363
|
+
},
|
|
9364
|
+
{
|
|
9365
|
+
"component": "ModalFooter"
|
|
9035
9366
|
}
|
|
9036
9367
|
]
|
|
9037
9368
|
}
|
|
9038
9369
|
]
|
|
9039
9370
|
}
|
|
9040
9371
|
],
|
|
9041
|
-
"jsx": "<
|
|
9372
|
+
"jsx": "<div className=\"flex h-screen gap-3 bg-background p-3\">\n <section className=\"flex min-w-0 flex-1 flex-col overflow-hidden rounded-l bg-card\">\n <BodyPageHeader title=\"Voice campaigns\" actions={<Button onClick={openCreate}>New campaign</Button>} />\n <div className=\"flex items-center justify-between gap-4 px-6\">\n <Tabs value={tab} onValueChange={setTab}>\n <TabList>{tabs.map(t => <Tab key={t.value} value={t.value} count={t.count}>{t.label}</Tab>)}</TabList>\n </Tabs>\n <div className=\"flex items-center gap-2\">\n <SearchDisclosure value={query} onValueChange={setQuery} triggerLabel=\"Search campaigns\" />\n <Filters groups={filters} onChange={setFilter} triggerLabel=\"Filter campaigns\" />\n </div>\n </div>\n <div ref={rowsRef} className=\"min-h-0 flex-1 px-6 pt-4 pb-6\">\n <Table selectionMode=\"multiple\" footer={<Pagination total={pages} page={page} onChange={setPage} summary={summary} />}>\n <TableHeader><TableRow>{columns}</TableRow></TableHeader>\n <TableBody>\n {rows.map(row => (\n <TableRow key={row.id} rowKey={row.id} isActive={row.id === openId} onClick={() => open(row.id)} aria-label={`Open ${row.name}`}>{cells(row)}</TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </section>\n <Drawer open={Boolean(openId)} onOpenChange={close}>{detail}</Drawer>\n <Modal open={creating} onOpenChange={setCreating} height=\"fixed\">{createForm}</Modal>\n</div>",
|
|
9042
9373
|
"constraints": [
|
|
9043
|
-
"
|
|
9044
|
-
"Keep
|
|
9045
|
-
"
|
|
9374
|
+
"Derive the page size from the panel height so rows fill it and Pagination sits on the bottom edge.",
|
|
9375
|
+
"Keep the page header to the title and ONE primary action; search and filters are trailing icon triggers on the tab row.",
|
|
9376
|
+
"Row checkboxes appear on hover/focus only; the header select-all is always visible.",
|
|
9377
|
+
"Mark the row whose detail is open with TableRow isActive — never a radio column.",
|
|
9378
|
+
"Put the status Chip in the Drawer header under the title; group the body into Performance and Details sections 32px apart.",
|
|
9379
|
+
"Status words are business words (Active, Scheduled, Paused, Completed, Draft, Failed) with one tone each; tabs use the same words.",
|
|
9380
|
+
"The create task is a Modal with height=\"fixed\" over the list, never a separate screen."
|
|
9046
9381
|
],
|
|
9047
9382
|
"principles": [
|
|
9048
|
-
"
|
|
9049
|
-
"
|
|
9050
|
-
"
|
|
9383
|
+
"collection-screens",
|
|
9384
|
+
"record-detail-panels",
|
|
9385
|
+
"status-language",
|
|
9386
|
+
"tabs-search-opposed",
|
|
9387
|
+
"shell-owns-the-frame",
|
|
9388
|
+
"minimal-information"
|
|
9051
9389
|
],
|
|
9052
|
-
"story": "ADS/Components/
|
|
9390
|
+
"story": "ADS/Components/Table"
|
|
9053
9391
|
},
|
|
9054
9392
|
{
|
|
9055
|
-
"id": "
|
|
9056
|
-
"name": "
|
|
9393
|
+
"id": "record-analytics",
|
|
9394
|
+
"name": "Record analytics page",
|
|
9057
9395
|
"intents": [
|
|
9058
|
-
"
|
|
9059
|
-
"
|
|
9060
|
-
"
|
|
9061
|
-
"
|
|
9396
|
+
"analysis",
|
|
9397
|
+
"analytics tab",
|
|
9398
|
+
"record page",
|
|
9399
|
+
"campaign analysis",
|
|
9400
|
+
"metrics",
|
|
9401
|
+
"dashboard tab"
|
|
9062
9402
|
],
|
|
9063
|
-
"description": "A
|
|
9403
|
+
"description": "A drill-down page titled by its Breadcrumbs (parent / record) with the primary action on the same row, record Tabs, then outlined stat cards and outlined chart cards whose legends sit in their title row and whose values are printed.",
|
|
9064
9404
|
"roots": [
|
|
9065
9405
|
{
|
|
9066
|
-
"
|
|
9406
|
+
"native": "main",
|
|
9067
9407
|
"children": [
|
|
9068
9408
|
{
|
|
9069
|
-
"component": "
|
|
9409
|
+
"component": "Breadcrumbs",
|
|
9070
9410
|
"children": [
|
|
9071
9411
|
{
|
|
9072
|
-
"component": "
|
|
9412
|
+
"component": "BreadcrumbItem",
|
|
9413
|
+
"repeat": true
|
|
9073
9414
|
},
|
|
9074
9415
|
{
|
|
9075
|
-
"component": "
|
|
9076
|
-
"
|
|
9416
|
+
"component": "Button",
|
|
9417
|
+
"slot": "actions"
|
|
9077
9418
|
}
|
|
9078
9419
|
]
|
|
9079
9420
|
},
|
|
9080
9421
|
{
|
|
9081
|
-
"component": "
|
|
9422
|
+
"component": "Tabs",
|
|
9082
9423
|
"children": [
|
|
9083
9424
|
{
|
|
9084
|
-
"component": "
|
|
9425
|
+
"component": "TabList",
|
|
9085
9426
|
"children": [
|
|
9086
9427
|
{
|
|
9087
|
-
"component": "
|
|
9428
|
+
"component": "Tab",
|
|
9088
9429
|
"repeat": true
|
|
9089
9430
|
}
|
|
9090
9431
|
]
|
|
@@ -9092,15 +9433,171 @@
|
|
|
9092
9433
|
]
|
|
9093
9434
|
},
|
|
9094
9435
|
{
|
|
9095
|
-
"
|
|
9436
|
+
"native": "div",
|
|
9437
|
+
"slot": "stat-cards",
|
|
9096
9438
|
"children": [
|
|
9097
9439
|
{
|
|
9098
|
-
"
|
|
9099
|
-
"repeat": true
|
|
9440
|
+
"native": "section",
|
|
9441
|
+
"repeat": true,
|
|
9442
|
+
"slot": "stat-card",
|
|
9443
|
+
"children": [
|
|
9444
|
+
{
|
|
9445
|
+
"component": "Progress"
|
|
9446
|
+
}
|
|
9447
|
+
]
|
|
9100
9448
|
}
|
|
9101
9449
|
]
|
|
9102
|
-
}
|
|
9103
|
-
|
|
9450
|
+
},
|
|
9451
|
+
{
|
|
9452
|
+
"native": "div",
|
|
9453
|
+
"slot": "chart-cards",
|
|
9454
|
+
"children": [
|
|
9455
|
+
{
|
|
9456
|
+
"native": "section",
|
|
9457
|
+
"slot": "chart-card",
|
|
9458
|
+
"children": [
|
|
9459
|
+
{
|
|
9460
|
+
"component": "BarChart",
|
|
9461
|
+
"note": "title, subtitle, legendPlacement=\"header\""
|
|
9462
|
+
}
|
|
9463
|
+
]
|
|
9464
|
+
},
|
|
9465
|
+
{
|
|
9466
|
+
"native": "section",
|
|
9467
|
+
"slot": "chart-card",
|
|
9468
|
+
"children": [
|
|
9469
|
+
{
|
|
9470
|
+
"component": "LineChart",
|
|
9471
|
+
"note": "title, subtitle, legendPlacement=\"header\""
|
|
9472
|
+
}
|
|
9473
|
+
]
|
|
9474
|
+
}
|
|
9475
|
+
]
|
|
9476
|
+
}
|
|
9477
|
+
]
|
|
9478
|
+
}
|
|
9479
|
+
],
|
|
9480
|
+
"jsx": "<main className=\"flex min-w-0 flex-1 flex-col rounded-l bg-card\">\n <Breadcrumbs actions={<Button>Pause campaign</Button>}>\n <BreadcrumbItem href=\"/campaigns\">Voice campaigns</BreadcrumbItem>\n <BreadcrumbItem isCurrent>{campaign.name}</BreadcrumbItem>\n </Breadcrumbs>\n <Tabs value={tab} onValueChange={setTab}><TabList>{tabs}</TabList></Tabs>\n <div className=\"grid grid-cols-[repeat(auto-fill,minmax(16rem,1fr))] gap-4\">\n {stats.map(stat => (\n <section key={stat.label} className=\"rounded-l border border-tertiary p-5\">\n <p className=\"text-m text-secondary\">{stat.label}</p>\n <p className=\"mt-1 text-3xl tabular-nums\">{stat.value} <span className=\"text-m text-secondary\">{stat.of}</span></p>\n <Progress className=\"mt-3\" value={stat.percent} label={stat.label} />\n </section>\n ))}\n </div>\n <section className=\"rounded-l border border-tertiary p-5\">\n <BarChart title=\"Who was in the segment\" subtitle={scope} legendPlacement=\"header\" data={data} categoryKey=\"day\" series={series} stacked />\n </section>\n</main>",
|
|
9481
|
+
"constraints": [
|
|
9482
|
+
"Title a drill-down with Breadcrumbs (16px); no back arrow and no repeated H1.",
|
|
9483
|
+
"Give every stat and every chart its own outlined card (1px WG3, radius-l, 20px padding, flat), 16px apart.",
|
|
9484
|
+
"Keep a stat's label, number and scope 4px apart and its Progress 12px below, filling the card.",
|
|
9485
|
+
"Put chart legends in the title row (legendPlacement=\"header\") and leave showValues on — values are never hover-only."
|
|
9486
|
+
],
|
|
9487
|
+
"principles": [
|
|
9488
|
+
"analytics-surfaces",
|
|
9489
|
+
"leading-back-navigation",
|
|
9490
|
+
"status-language",
|
|
9491
|
+
"responsive-container-fluid"
|
|
9492
|
+
],
|
|
9493
|
+
"story": "ADS/Components/Chart"
|
|
9494
|
+
},
|
|
9495
|
+
{
|
|
9496
|
+
"id": "modal-task",
|
|
9497
|
+
"name": "Blocking modal task",
|
|
9498
|
+
"intents": [
|
|
9499
|
+
"modal",
|
|
9500
|
+
"confirmation",
|
|
9501
|
+
"short form",
|
|
9502
|
+
"blocking task",
|
|
9503
|
+
"destructive action"
|
|
9504
|
+
],
|
|
9505
|
+
"description": "A focused interruption with one title, body, and decisive footer.",
|
|
9506
|
+
"roots": [
|
|
9507
|
+
{
|
|
9508
|
+
"component": "Modal",
|
|
9509
|
+
"children": [
|
|
9510
|
+
{
|
|
9511
|
+
"component": "ModalHeader",
|
|
9512
|
+
"children": [
|
|
9513
|
+
{
|
|
9514
|
+
"component": "ModalTitle"
|
|
9515
|
+
},
|
|
9516
|
+
{
|
|
9517
|
+
"component": "ModalDescription",
|
|
9518
|
+
"optional": true
|
|
9519
|
+
}
|
|
9520
|
+
]
|
|
9521
|
+
},
|
|
9522
|
+
{
|
|
9523
|
+
"component": "ModalBody",
|
|
9524
|
+
"optional": true
|
|
9525
|
+
},
|
|
9526
|
+
{
|
|
9527
|
+
"component": "ModalFooter",
|
|
9528
|
+
"children": [
|
|
9529
|
+
{
|
|
9530
|
+
"component": "Button",
|
|
9531
|
+
"repeat": true
|
|
9532
|
+
}
|
|
9533
|
+
]
|
|
9534
|
+
}
|
|
9535
|
+
]
|
|
9536
|
+
}
|
|
9537
|
+
],
|
|
9538
|
+
"jsx": "<Modal open={open} onOpenChange={setOpen} aria-label={title}>\n <ModalHeader><ModalTitle>{title}</ModalTitle></ModalHeader>\n <ModalBody>{task}</ModalBody>\n <ModalFooter><Button variant=\"ghost\">Cancel</Button><Button>Continue</Button></ModalFooter>\n</Modal>",
|
|
9539
|
+
"constraints": [
|
|
9540
|
+
"Add ModalDescription only when the user explicitly requested supporting header copy.",
|
|
9541
|
+
"Keep one primary footer action; use danger only for an irreversible destructive action.",
|
|
9542
|
+
"Do not wrap or replace the Modal's built-in focus, backdrop, or motion behavior."
|
|
9543
|
+
],
|
|
9544
|
+
"principles": [
|
|
9545
|
+
"minimal-information",
|
|
9546
|
+
"motion-follows-guide",
|
|
9547
|
+
"ads-first"
|
|
9548
|
+
],
|
|
9549
|
+
"story": "ADS/Components/Overlays/Modal"
|
|
9550
|
+
},
|
|
9551
|
+
{
|
|
9552
|
+
"id": "settings-card",
|
|
9553
|
+
"name": "Settings card",
|
|
9554
|
+
"intents": [
|
|
9555
|
+
"settings",
|
|
9556
|
+
"preferences",
|
|
9557
|
+
"configuration",
|
|
9558
|
+
"toggles"
|
|
9559
|
+
],
|
|
9560
|
+
"description": "A compact settings surface with grouped SettingRows and one save action.",
|
|
9561
|
+
"roots": [
|
|
9562
|
+
{
|
|
9563
|
+
"component": "Card",
|
|
9564
|
+
"children": [
|
|
9565
|
+
{
|
|
9566
|
+
"component": "CardHeader",
|
|
9567
|
+
"children": [
|
|
9568
|
+
{
|
|
9569
|
+
"component": "CardTitle"
|
|
9570
|
+
},
|
|
9571
|
+
{
|
|
9572
|
+
"component": "CardDescription",
|
|
9573
|
+
"optional": true
|
|
9574
|
+
}
|
|
9575
|
+
]
|
|
9576
|
+
},
|
|
9577
|
+
{
|
|
9578
|
+
"component": "CardBody",
|
|
9579
|
+
"children": [
|
|
9580
|
+
{
|
|
9581
|
+
"component": "SettingList",
|
|
9582
|
+
"children": [
|
|
9583
|
+
{
|
|
9584
|
+
"component": "SettingRow",
|
|
9585
|
+
"repeat": true
|
|
9586
|
+
}
|
|
9587
|
+
]
|
|
9588
|
+
}
|
|
9589
|
+
]
|
|
9590
|
+
},
|
|
9591
|
+
{
|
|
9592
|
+
"component": "CardFooter",
|
|
9593
|
+
"children": [
|
|
9594
|
+
{
|
|
9595
|
+
"component": "Button",
|
|
9596
|
+
"repeat": true
|
|
9597
|
+
}
|
|
9598
|
+
]
|
|
9599
|
+
}
|
|
9600
|
+
]
|
|
9104
9601
|
}
|
|
9105
9602
|
],
|
|
9106
9603
|
"jsx": "<Card>\n <CardHeader><CardTitle>{title}</CardTitle></CardHeader>\n <CardBody>\n <SettingList aria-label={title}>\n {settings.map(setting => <SettingRow key={setting.id} {...setting} />)}\n </SettingList>\n </CardBody>\n <CardFooter><Button>Save changes</Button></CardFooter>\n</Card>",
|
|
@@ -9116,7 +9613,7 @@
|
|
|
9116
9613
|
"minimal-information",
|
|
9117
9614
|
"ads-first"
|
|
9118
9615
|
],
|
|
9119
|
-
"story": "ADS/
|
|
9616
|
+
"story": "ADS/Components/Under review/SettingList / SettingRow"
|
|
9120
9617
|
},
|
|
9121
9618
|
{
|
|
9122
9619
|
"id": "research-trace",
|
|
@@ -9520,6 +10017,16 @@
|
|
|
9520
10017
|
"id": "horizontal-overflow",
|
|
9521
10018
|
"description": "Scroll hints and sticky edges respond to hidden content.",
|
|
9522
10019
|
"required": true
|
|
10020
|
+
},
|
|
10021
|
+
{
|
|
10022
|
+
"id": "hover-revealed-selection",
|
|
10023
|
+
"description": "Multi-select row checkboxes hidden at rest, shown on hover/focus and while checked; header checkbox always visible.",
|
|
10024
|
+
"required": true
|
|
10025
|
+
},
|
|
10026
|
+
{
|
|
10027
|
+
"id": "row-active",
|
|
10028
|
+
"description": "The row whose detail panel is open carries the soft-teal fade via isActive, with no selection control.",
|
|
10029
|
+
"required": true
|
|
9523
10030
|
}
|
|
9524
10031
|
],
|
|
9525
10032
|
"representativeCombinations": [
|
|
@@ -9660,13 +10167,13 @@
|
|
|
9660
10167
|
]
|
|
9661
10168
|
},
|
|
9662
10169
|
"counts": {
|
|
9663
|
-
"nodes":
|
|
9664
|
-
"edges":
|
|
9665
|
-
"component":
|
|
9666
|
-
"state":
|
|
9667
|
-
"principle":
|
|
9668
|
-
"production":
|
|
9669
|
-
"layout":
|
|
10170
|
+
"nodes": 844,
|
|
10171
|
+
"edges": 625,
|
|
10172
|
+
"component": 325,
|
|
10173
|
+
"state": 482,
|
|
10174
|
+
"principle": 15,
|
|
10175
|
+
"production": 11,
|
|
10176
|
+
"layout": 11
|
|
9670
10177
|
},
|
|
9671
10178
|
"nodes": [
|
|
9672
10179
|
{
|
|
@@ -9778,7 +10285,7 @@
|
|
|
9778
10285
|
"required": false,
|
|
9779
10286
|
"derived": true,
|
|
9780
10287
|
"isDefault": false,
|
|
9781
|
-
"description": "
|
|
10288
|
+
"description": "Deprecated alias — renders identically to md (32px). Use md."
|
|
9782
10289
|
},
|
|
9783
10290
|
{
|
|
9784
10291
|
"id": "state:Button:size=sm",
|
|
@@ -9790,7 +10297,7 @@
|
|
|
9790
10297
|
"required": false,
|
|
9791
10298
|
"derived": true,
|
|
9792
10299
|
"isDefault": false,
|
|
9793
|
-
"description": "
|
|
10300
|
+
"description": "Deprecated alias — renders identically to md (32px). Use md."
|
|
9794
10301
|
},
|
|
9795
10302
|
{
|
|
9796
10303
|
"id": "state:Button:size=md",
|
|
@@ -9802,7 +10309,7 @@
|
|
|
9802
10309
|
"required": false,
|
|
9803
10310
|
"derived": true,
|
|
9804
10311
|
"isDefault": true,
|
|
9805
|
-
"description": "
|
|
10312
|
+
"description": "The default 32px button for nearly every action, form, toolbar and table row."
|
|
9806
10313
|
},
|
|
9807
10314
|
{
|
|
9808
10315
|
"id": "state:Button:size=lg",
|
|
@@ -9814,7 +10321,7 @@
|
|
|
9814
10321
|
"required": false,
|
|
9815
10322
|
"derived": true,
|
|
9816
10323
|
"isDefault": false,
|
|
9817
|
-
"description": "
|
|
10324
|
+
"description": "The 48px button (20px inline padding, 8px radius) for a standalone high-emphasis CTA such as a full-screen step or empty state."
|
|
9818
10325
|
},
|
|
9819
10326
|
{
|
|
9820
10327
|
"id": "state:Button:size=icon",
|
|
@@ -10377,6 +10884,15 @@
|
|
|
10377
10884
|
"showcaseUrl": "https://ads.actioneer.dev/#/date-range-picker",
|
|
10378
10885
|
"description": ""
|
|
10379
10886
|
},
|
|
10887
|
+
{
|
|
10888
|
+
"id": "component:Filters",
|
|
10889
|
+
"kind": "component",
|
|
10890
|
+
"label": "Filters",
|
|
10891
|
+
"family": "Form controls",
|
|
10892
|
+
"module": "filters",
|
|
10893
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/filters",
|
|
10894
|
+
"description": ""
|
|
10895
|
+
},
|
|
10380
10896
|
{
|
|
10381
10897
|
"id": "component:Input",
|
|
10382
10898
|
"kind": "component",
|
|
@@ -11286,6 +11802,30 @@
|
|
|
11286
11802
|
"isDefault": false,
|
|
11287
11803
|
"description": ""
|
|
11288
11804
|
},
|
|
11805
|
+
{
|
|
11806
|
+
"id": "state:Modal:height=content",
|
|
11807
|
+
"kind": "state",
|
|
11808
|
+
"label": "height=content",
|
|
11809
|
+
"component": "Modal",
|
|
11810
|
+
"axis": "height",
|
|
11811
|
+
"value": "content",
|
|
11812
|
+
"required": false,
|
|
11813
|
+
"derived": true,
|
|
11814
|
+
"isDefault": true,
|
|
11815
|
+
"description": ""
|
|
11816
|
+
},
|
|
11817
|
+
{
|
|
11818
|
+
"id": "state:Modal:height=fixed",
|
|
11819
|
+
"kind": "state",
|
|
11820
|
+
"label": "height=fixed",
|
|
11821
|
+
"component": "Modal",
|
|
11822
|
+
"axis": "height",
|
|
11823
|
+
"value": "fixed",
|
|
11824
|
+
"required": false,
|
|
11825
|
+
"derived": true,
|
|
11826
|
+
"isDefault": false,
|
|
11827
|
+
"description": ""
|
|
11828
|
+
},
|
|
11289
11829
|
{
|
|
11290
11830
|
"id": "component:ModalBody",
|
|
11291
11831
|
"kind": "component",
|
|
@@ -11379,6 +11919,30 @@
|
|
|
11379
11919
|
"isDefault": false,
|
|
11380
11920
|
"description": ""
|
|
11381
11921
|
},
|
|
11922
|
+
{
|
|
11923
|
+
"id": "state:ModalBody:height=content",
|
|
11924
|
+
"kind": "state",
|
|
11925
|
+
"label": "height=content",
|
|
11926
|
+
"component": "ModalBody",
|
|
11927
|
+
"axis": "height",
|
|
11928
|
+
"value": "content",
|
|
11929
|
+
"required": false,
|
|
11930
|
+
"derived": true,
|
|
11931
|
+
"isDefault": true,
|
|
11932
|
+
"description": ""
|
|
11933
|
+
},
|
|
11934
|
+
{
|
|
11935
|
+
"id": "state:ModalBody:height=fixed",
|
|
11936
|
+
"kind": "state",
|
|
11937
|
+
"label": "height=fixed",
|
|
11938
|
+
"component": "ModalBody",
|
|
11939
|
+
"axis": "height",
|
|
11940
|
+
"value": "fixed",
|
|
11941
|
+
"required": false,
|
|
11942
|
+
"derived": true,
|
|
11943
|
+
"isDefault": false,
|
|
11944
|
+
"description": ""
|
|
11945
|
+
},
|
|
11382
11946
|
{
|
|
11383
11947
|
"id": "component:ModalClose",
|
|
11384
11948
|
"kind": "component",
|
|
@@ -11472,6 +12036,30 @@
|
|
|
11472
12036
|
"isDefault": false,
|
|
11473
12037
|
"description": ""
|
|
11474
12038
|
},
|
|
12039
|
+
{
|
|
12040
|
+
"id": "state:ModalClose:height=content",
|
|
12041
|
+
"kind": "state",
|
|
12042
|
+
"label": "height=content",
|
|
12043
|
+
"component": "ModalClose",
|
|
12044
|
+
"axis": "height",
|
|
12045
|
+
"value": "content",
|
|
12046
|
+
"required": false,
|
|
12047
|
+
"derived": true,
|
|
12048
|
+
"isDefault": true,
|
|
12049
|
+
"description": ""
|
|
12050
|
+
},
|
|
12051
|
+
{
|
|
12052
|
+
"id": "state:ModalClose:height=fixed",
|
|
12053
|
+
"kind": "state",
|
|
12054
|
+
"label": "height=fixed",
|
|
12055
|
+
"component": "ModalClose",
|
|
12056
|
+
"axis": "height",
|
|
12057
|
+
"value": "fixed",
|
|
12058
|
+
"required": false,
|
|
12059
|
+
"derived": true,
|
|
12060
|
+
"isDefault": false,
|
|
12061
|
+
"description": ""
|
|
12062
|
+
},
|
|
11475
12063
|
{
|
|
11476
12064
|
"id": "component:ModalDescription",
|
|
11477
12065
|
"kind": "component",
|
|
@@ -11565,6 +12153,30 @@
|
|
|
11565
12153
|
"isDefault": false,
|
|
11566
12154
|
"description": ""
|
|
11567
12155
|
},
|
|
12156
|
+
{
|
|
12157
|
+
"id": "state:ModalDescription:height=content",
|
|
12158
|
+
"kind": "state",
|
|
12159
|
+
"label": "height=content",
|
|
12160
|
+
"component": "ModalDescription",
|
|
12161
|
+
"axis": "height",
|
|
12162
|
+
"value": "content",
|
|
12163
|
+
"required": false,
|
|
12164
|
+
"derived": true,
|
|
12165
|
+
"isDefault": true,
|
|
12166
|
+
"description": ""
|
|
12167
|
+
},
|
|
12168
|
+
{
|
|
12169
|
+
"id": "state:ModalDescription:height=fixed",
|
|
12170
|
+
"kind": "state",
|
|
12171
|
+
"label": "height=fixed",
|
|
12172
|
+
"component": "ModalDescription",
|
|
12173
|
+
"axis": "height",
|
|
12174
|
+
"value": "fixed",
|
|
12175
|
+
"required": false,
|
|
12176
|
+
"derived": true,
|
|
12177
|
+
"isDefault": false,
|
|
12178
|
+
"description": ""
|
|
12179
|
+
},
|
|
11568
12180
|
{
|
|
11569
12181
|
"id": "component:ModalDrawer",
|
|
11570
12182
|
"kind": "component",
|
|
@@ -11751,6 +12363,30 @@
|
|
|
11751
12363
|
"isDefault": false,
|
|
11752
12364
|
"description": ""
|
|
11753
12365
|
},
|
|
12366
|
+
{
|
|
12367
|
+
"id": "state:ModalFooter:height=content",
|
|
12368
|
+
"kind": "state",
|
|
12369
|
+
"label": "height=content",
|
|
12370
|
+
"component": "ModalFooter",
|
|
12371
|
+
"axis": "height",
|
|
12372
|
+
"value": "content",
|
|
12373
|
+
"required": false,
|
|
12374
|
+
"derived": true,
|
|
12375
|
+
"isDefault": true,
|
|
12376
|
+
"description": ""
|
|
12377
|
+
},
|
|
12378
|
+
{
|
|
12379
|
+
"id": "state:ModalFooter:height=fixed",
|
|
12380
|
+
"kind": "state",
|
|
12381
|
+
"label": "height=fixed",
|
|
12382
|
+
"component": "ModalFooter",
|
|
12383
|
+
"axis": "height",
|
|
12384
|
+
"value": "fixed",
|
|
12385
|
+
"required": false,
|
|
12386
|
+
"derived": true,
|
|
12387
|
+
"isDefault": false,
|
|
12388
|
+
"description": ""
|
|
12389
|
+
},
|
|
11754
12390
|
{
|
|
11755
12391
|
"id": "component:ModalHeader",
|
|
11756
12392
|
"kind": "component",
|
|
@@ -11844,6 +12480,30 @@
|
|
|
11844
12480
|
"isDefault": false,
|
|
11845
12481
|
"description": ""
|
|
11846
12482
|
},
|
|
12483
|
+
{
|
|
12484
|
+
"id": "state:ModalHeader:height=content",
|
|
12485
|
+
"kind": "state",
|
|
12486
|
+
"label": "height=content",
|
|
12487
|
+
"component": "ModalHeader",
|
|
12488
|
+
"axis": "height",
|
|
12489
|
+
"value": "content",
|
|
12490
|
+
"required": false,
|
|
12491
|
+
"derived": true,
|
|
12492
|
+
"isDefault": true,
|
|
12493
|
+
"description": ""
|
|
12494
|
+
},
|
|
12495
|
+
{
|
|
12496
|
+
"id": "state:ModalHeader:height=fixed",
|
|
12497
|
+
"kind": "state",
|
|
12498
|
+
"label": "height=fixed",
|
|
12499
|
+
"component": "ModalHeader",
|
|
12500
|
+
"axis": "height",
|
|
12501
|
+
"value": "fixed",
|
|
12502
|
+
"required": false,
|
|
12503
|
+
"derived": true,
|
|
12504
|
+
"isDefault": false,
|
|
12505
|
+
"description": ""
|
|
12506
|
+
},
|
|
11847
12507
|
{
|
|
11848
12508
|
"id": "component:ModalSection",
|
|
11849
12509
|
"kind": "component",
|
|
@@ -11937,6 +12597,30 @@
|
|
|
11937
12597
|
"isDefault": false,
|
|
11938
12598
|
"description": ""
|
|
11939
12599
|
},
|
|
12600
|
+
{
|
|
12601
|
+
"id": "state:ModalSection:height=content",
|
|
12602
|
+
"kind": "state",
|
|
12603
|
+
"label": "height=content",
|
|
12604
|
+
"component": "ModalSection",
|
|
12605
|
+
"axis": "height",
|
|
12606
|
+
"value": "content",
|
|
12607
|
+
"required": false,
|
|
12608
|
+
"derived": true,
|
|
12609
|
+
"isDefault": true,
|
|
12610
|
+
"description": ""
|
|
12611
|
+
},
|
|
12612
|
+
{
|
|
12613
|
+
"id": "state:ModalSection:height=fixed",
|
|
12614
|
+
"kind": "state",
|
|
12615
|
+
"label": "height=fixed",
|
|
12616
|
+
"component": "ModalSection",
|
|
12617
|
+
"axis": "height",
|
|
12618
|
+
"value": "fixed",
|
|
12619
|
+
"required": false,
|
|
12620
|
+
"derived": true,
|
|
12621
|
+
"isDefault": false,
|
|
12622
|
+
"description": ""
|
|
12623
|
+
},
|
|
11940
12624
|
{
|
|
11941
12625
|
"id": "component:ModalTitle",
|
|
11942
12626
|
"kind": "component",
|
|
@@ -12031,8 +12715,32 @@
|
|
|
12031
12715
|
"description": ""
|
|
12032
12716
|
},
|
|
12033
12717
|
{
|
|
12034
|
-
"id": "
|
|
12035
|
-
"kind": "
|
|
12718
|
+
"id": "state:ModalTitle:height=content",
|
|
12719
|
+
"kind": "state",
|
|
12720
|
+
"label": "height=content",
|
|
12721
|
+
"component": "ModalTitle",
|
|
12722
|
+
"axis": "height",
|
|
12723
|
+
"value": "content",
|
|
12724
|
+
"required": false,
|
|
12725
|
+
"derived": true,
|
|
12726
|
+
"isDefault": true,
|
|
12727
|
+
"description": ""
|
|
12728
|
+
},
|
|
12729
|
+
{
|
|
12730
|
+
"id": "state:ModalTitle:height=fixed",
|
|
12731
|
+
"kind": "state",
|
|
12732
|
+
"label": "height=fixed",
|
|
12733
|
+
"component": "ModalTitle",
|
|
12734
|
+
"axis": "height",
|
|
12735
|
+
"value": "fixed",
|
|
12736
|
+
"required": false,
|
|
12737
|
+
"derived": true,
|
|
12738
|
+
"isDefault": false,
|
|
12739
|
+
"description": ""
|
|
12740
|
+
},
|
|
12741
|
+
{
|
|
12742
|
+
"id": "component:Popover",
|
|
12743
|
+
"kind": "component",
|
|
12036
12744
|
"label": "Popover",
|
|
12037
12745
|
"family": "Overlays",
|
|
12038
12746
|
"module": "popover",
|
|
@@ -12558,6 +13266,18 @@
|
|
|
12558
13266
|
"isDefault": false,
|
|
12559
13267
|
"description": "Transparent background with a border — use on tinted/colored surfaces where solid or soft would clash."
|
|
12560
13268
|
},
|
|
13269
|
+
{
|
|
13270
|
+
"id": "state:Chip:variant=plain",
|
|
13271
|
+
"kind": "state",
|
|
13272
|
+
"label": "variant=plain",
|
|
13273
|
+
"component": "Chip",
|
|
13274
|
+
"axis": "variant",
|
|
13275
|
+
"value": "plain",
|
|
13276
|
+
"required": false,
|
|
13277
|
+
"derived": true,
|
|
13278
|
+
"isDefault": false,
|
|
13279
|
+
"description": ""
|
|
13280
|
+
},
|
|
12561
13281
|
{
|
|
12562
13282
|
"id": "state:Chip:color=default",
|
|
12563
13283
|
"kind": "state",
|
|
@@ -15051,6 +15771,15 @@
|
|
|
15051
15771
|
"showcaseUrl": "https://ads.actioneer.dev/#/sidebar",
|
|
15052
15772
|
"description": ""
|
|
15053
15773
|
},
|
|
15774
|
+
{
|
|
15775
|
+
"id": "component:SidebarWorkspace",
|
|
15776
|
+
"kind": "component",
|
|
15777
|
+
"label": "SidebarWorkspace",
|
|
15778
|
+
"family": "Navigation",
|
|
15779
|
+
"module": "sidebar",
|
|
15780
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/sidebar",
|
|
15781
|
+
"description": ""
|
|
15782
|
+
},
|
|
15054
15783
|
{
|
|
15055
15784
|
"id": "component:Collapsible",
|
|
15056
15785
|
"kind": "component",
|
|
@@ -17574,16 +18303,44 @@
|
|
|
17574
18303
|
{
|
|
17575
18304
|
"id": "principle:leading-back-navigation",
|
|
17576
18305
|
"kind": "principle",
|
|
17577
|
-
"label": "Back navigation is leading",
|
|
18306
|
+
"label": "Back navigation is leading; drill-downs use the breadcrumb",
|
|
17578
18307
|
"number": 10,
|
|
17579
|
-
"rule": "A
|
|
18308
|
+
"rule": "A record or drill-down page (a campaign inside Voice campaigns, a connector inside Data Integrations) is titled by its Breadcrumbs trail — parent / record at 16px — with no back arrow and no repeated H1; the page's one primary action sits at the right end of the same row. A standalone page-level Back control, when one is needed outside a hierarchy, sits immediately before the title and never on the right."
|
|
17580
18309
|
},
|
|
17581
18310
|
{
|
|
17582
18311
|
"id": "principle:tabs-search-opposed",
|
|
17583
18312
|
"kind": "principle",
|
|
17584
18313
|
"label": "Tabs lead; scoped search trails",
|
|
17585
18314
|
"number": 11,
|
|
17586
|
-
"rule": "When tabs and a search field control the same content, they share one responsive control row: the tab list leads with its triggers left-aligned at their natural width over a baseline that fades from WG3 to transparent, and search sits at the trailing edge.
|
|
18315
|
+
"rule": "When tabs and a search field control the same content, they share one responsive control row: the tab list leads with its triggers left-aligned at their natural width over a baseline that fades from WG3 to transparent, and search sits at the trailing edge. On collection screens the trailing controls are icon triggers — SearchDisclosure (expands into the field) then Filters — and tab labels are 14px with a quieter count after each label."
|
|
18316
|
+
},
|
|
18317
|
+
{
|
|
18318
|
+
"id": "principle:collection-screens",
|
|
18319
|
+
"kind": "principle",
|
|
18320
|
+
"label": "Collection screens fill the panel",
|
|
18321
|
+
"number": 12,
|
|
18322
|
+
"rule": "A collection screen (campaigns, call logs, leads) is one white panel: BodyPageHeader (title + one primary action), the tab/search/filter row, then a Table whose rows fill the panel's height with Pagination pinned to its bottom edge. Rows open details in a shell-level side panel; the list stays visible."
|
|
18323
|
+
},
|
|
18324
|
+
{
|
|
18325
|
+
"id": "principle:record-detail-panels",
|
|
18326
|
+
"kind": "principle",
|
|
18327
|
+
"label": "Record detail panels are grouped by question",
|
|
18328
|
+
"number": 13,
|
|
18329
|
+
"rule": "A selection-driven detail panel reads top-down as: kicker (the KIND of record), title, then the record's status Chip and its one-line context directly under the title; then titled sections 32px apart — Performance (stat cards + chart card) and Details (label–value rows with inset dividers); then footer actions (secondary outline + one solid primary)."
|
|
18330
|
+
},
|
|
18331
|
+
{
|
|
18332
|
+
"id": "principle:analytics-surfaces",
|
|
18333
|
+
"kind": "principle",
|
|
18334
|
+
"label": "Stats and charts sit in their own containers, values visible",
|
|
18335
|
+
"number": 14,
|
|
18336
|
+
"rule": "On analytics/record pages every stat and every chart is its own outlined container (1px WG3 border, radius-l, 20px padding, white, flat) on the white panel, 16px apart. Values are printed on the chart by default — never hover-only — and the legend sits at the right end of the chart's title row."
|
|
18337
|
+
},
|
|
18338
|
+
{
|
|
18339
|
+
"id": "principle:status-language",
|
|
18340
|
+
"kind": "principle",
|
|
18341
|
+
"label": "Status speaks the business, with one tone per meaning",
|
|
18342
|
+
"number": 15,
|
|
18343
|
+
"rule": "Status labels name the business state, not the machine's activity, and tabs use the same words. Campaign statuses: Active and Scheduled (info blue), Paused (warning amber), Completed (success green), Draft (default grey), Failed (danger red). Teal is reserved for actions and selection, not for a status."
|
|
17587
18344
|
},
|
|
17588
18345
|
{
|
|
17589
18346
|
"id": "state:Button:interaction=default",
|
|
@@ -18036,6 +18793,28 @@
|
|
|
18036
18793
|
"derived": false,
|
|
18037
18794
|
"description": "Scroll hints and sticky edges respond to hidden content."
|
|
18038
18795
|
},
|
|
18796
|
+
{
|
|
18797
|
+
"id": "state:Table:interaction=hover-revealed-selection",
|
|
18798
|
+
"kind": "state",
|
|
18799
|
+
"label": "hover-revealed-selection",
|
|
18800
|
+
"component": "Table",
|
|
18801
|
+
"axis": "interaction",
|
|
18802
|
+
"value": "hover-revealed-selection",
|
|
18803
|
+
"required": true,
|
|
18804
|
+
"derived": false,
|
|
18805
|
+
"description": "Multi-select row checkboxes hidden at rest, shown on hover/focus and while checked; header checkbox always visible."
|
|
18806
|
+
},
|
|
18807
|
+
{
|
|
18808
|
+
"id": "state:Table:interaction=row-active",
|
|
18809
|
+
"kind": "state",
|
|
18810
|
+
"label": "row-active",
|
|
18811
|
+
"component": "Table",
|
|
18812
|
+
"axis": "interaction",
|
|
18813
|
+
"value": "row-active",
|
|
18814
|
+
"required": true,
|
|
18815
|
+
"derived": false,
|
|
18816
|
+
"description": "The row whose detail panel is open carries the soft-teal fade via isActive, with no selection control."
|
|
18817
|
+
},
|
|
18039
18818
|
{
|
|
18040
18819
|
"id": "state:ResearchActivity:interaction=active",
|
|
18041
18820
|
"kind": "state",
|
|
@@ -18254,6 +19033,125 @@
|
|
|
18254
19033
|
"slot": "responsive-control-row",
|
|
18255
19034
|
"production": "tabbed-results"
|
|
18256
19035
|
},
|
|
19036
|
+
{
|
|
19037
|
+
"id": "production:collection-screen",
|
|
19038
|
+
"kind": "production",
|
|
19039
|
+
"label": "Collection screen with record detail",
|
|
19040
|
+
"description": "BodyPageHeader (title + one primary action), a control row with counted Tabs leading and SearchDisclosure + Filters trailing, a Table whose rows fill the panel with Pagination at its bottom edge, a shell-level Drawer for the open record, and a fixed-height Modal for the create task.",
|
|
19041
|
+
"intents": [
|
|
19042
|
+
"campaigns",
|
|
19043
|
+
"call logs",
|
|
19044
|
+
"leads",
|
|
19045
|
+
"records list",
|
|
19046
|
+
"collection",
|
|
19047
|
+
"list page",
|
|
19048
|
+
"new campaign"
|
|
19049
|
+
],
|
|
19050
|
+
"story": "ADS/Components/Table",
|
|
19051
|
+
"jsx": "<div className=\"flex h-screen gap-3 bg-background p-3\">\n <section className=\"flex min-w-0 flex-1 flex-col overflow-hidden rounded-l bg-card\">\n <BodyPageHeader title=\"Voice campaigns\" actions={<Button onClick={openCreate}>New campaign</Button>} />\n <div className=\"flex items-center justify-between gap-4 px-6\">\n <Tabs value={tab} onValueChange={setTab}>\n <TabList>{tabs.map(t => <Tab key={t.value} value={t.value} count={t.count}>{t.label}</Tab>)}</TabList>\n </Tabs>\n <div className=\"flex items-center gap-2\">\n <SearchDisclosure value={query} onValueChange={setQuery} triggerLabel=\"Search campaigns\" />\n <Filters groups={filters} onChange={setFilter} triggerLabel=\"Filter campaigns\" />\n </div>\n </div>\n <div ref={rowsRef} className=\"min-h-0 flex-1 px-6 pt-4 pb-6\">\n <Table selectionMode=\"multiple\" footer={<Pagination total={pages} page={page} onChange={setPage} summary={summary} />}>\n <TableHeader><TableRow>{columns}</TableRow></TableHeader>\n <TableBody>\n {rows.map(row => (\n <TableRow key={row.id} rowKey={row.id} isActive={row.id === openId} onClick={() => open(row.id)} aria-label={`Open ${row.name}`}>{cells(row)}</TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </section>\n <Drawer open={Boolean(openId)} onOpenChange={close}>{detail}</Drawer>\n <Modal open={creating} onOpenChange={setCreating} height=\"fixed\">{createForm}</Modal>\n</div>",
|
|
19052
|
+
"constraints": [
|
|
19053
|
+
"Derive the page size from the panel height so rows fill it and Pagination sits on the bottom edge.",
|
|
19054
|
+
"Keep the page header to the title and ONE primary action; search and filters are trailing icon triggers on the tab row.",
|
|
19055
|
+
"Row checkboxes appear on hover/focus only; the header select-all is always visible.",
|
|
19056
|
+
"Mark the row whose detail is open with TableRow isActive — never a radio column.",
|
|
19057
|
+
"Put the status Chip in the Drawer header under the title; group the body into Performance and Details sections 32px apart.",
|
|
19058
|
+
"Status words are business words (Active, Scheduled, Paused, Completed, Draft, Failed) with one tone each; tabs use the same words.",
|
|
19059
|
+
"The create task is a Modal with height=\"fixed\" over the list, never a separate screen."
|
|
19060
|
+
]
|
|
19061
|
+
},
|
|
19062
|
+
{
|
|
19063
|
+
"id": "layout:collection-screen:0",
|
|
19064
|
+
"kind": "layout",
|
|
19065
|
+
"label": "shell-canvas-row",
|
|
19066
|
+
"element": "div",
|
|
19067
|
+
"slot": "shell-canvas-row",
|
|
19068
|
+
"production": "collection-screen"
|
|
19069
|
+
},
|
|
19070
|
+
{
|
|
19071
|
+
"id": "layout:collection-screen:0.0",
|
|
19072
|
+
"kind": "layout",
|
|
19073
|
+
"label": "collection-panel",
|
|
19074
|
+
"element": "section",
|
|
19075
|
+
"slot": "collection-panel",
|
|
19076
|
+
"production": "collection-screen"
|
|
19077
|
+
},
|
|
19078
|
+
{
|
|
19079
|
+
"id": "layout:collection-screen:0.0.1",
|
|
19080
|
+
"kind": "layout",
|
|
19081
|
+
"label": "control-row",
|
|
19082
|
+
"element": "div",
|
|
19083
|
+
"slot": "control-row",
|
|
19084
|
+
"production": "collection-screen"
|
|
19085
|
+
},
|
|
19086
|
+
{
|
|
19087
|
+
"id": "production:record-analytics",
|
|
19088
|
+
"kind": "production",
|
|
19089
|
+
"label": "Record analytics page",
|
|
19090
|
+
"description": "A drill-down page titled by its Breadcrumbs (parent / record) with the primary action on the same row, record Tabs, then outlined stat cards and outlined chart cards whose legends sit in their title row and whose values are printed.",
|
|
19091
|
+
"intents": [
|
|
19092
|
+
"analysis",
|
|
19093
|
+
"analytics tab",
|
|
19094
|
+
"record page",
|
|
19095
|
+
"campaign analysis",
|
|
19096
|
+
"metrics",
|
|
19097
|
+
"dashboard tab"
|
|
19098
|
+
],
|
|
19099
|
+
"story": "ADS/Components/Chart",
|
|
19100
|
+
"jsx": "<main className=\"flex min-w-0 flex-1 flex-col rounded-l bg-card\">\n <Breadcrumbs actions={<Button>Pause campaign</Button>}>\n <BreadcrumbItem href=\"/campaigns\">Voice campaigns</BreadcrumbItem>\n <BreadcrumbItem isCurrent>{campaign.name}</BreadcrumbItem>\n </Breadcrumbs>\n <Tabs value={tab} onValueChange={setTab}><TabList>{tabs}</TabList></Tabs>\n <div className=\"grid grid-cols-[repeat(auto-fill,minmax(16rem,1fr))] gap-4\">\n {stats.map(stat => (\n <section key={stat.label} className=\"rounded-l border border-tertiary p-5\">\n <p className=\"text-m text-secondary\">{stat.label}</p>\n <p className=\"mt-1 text-3xl tabular-nums\">{stat.value} <span className=\"text-m text-secondary\">{stat.of}</span></p>\n <Progress className=\"mt-3\" value={stat.percent} label={stat.label} />\n </section>\n ))}\n </div>\n <section className=\"rounded-l border border-tertiary p-5\">\n <BarChart title=\"Who was in the segment\" subtitle={scope} legendPlacement=\"header\" data={data} categoryKey=\"day\" series={series} stacked />\n </section>\n</main>",
|
|
19101
|
+
"constraints": [
|
|
19102
|
+
"Title a drill-down with Breadcrumbs (16px); no back arrow and no repeated H1.",
|
|
19103
|
+
"Give every stat and every chart its own outlined card (1px WG3, radius-l, 20px padding, flat), 16px apart.",
|
|
19104
|
+
"Keep a stat's label, number and scope 4px apart and its Progress 12px below, filling the card.",
|
|
19105
|
+
"Put chart legends in the title row (legendPlacement=\"header\") and leave showValues on — values are never hover-only."
|
|
19106
|
+
]
|
|
19107
|
+
},
|
|
19108
|
+
{
|
|
19109
|
+
"id": "layout:record-analytics:0",
|
|
19110
|
+
"kind": "layout",
|
|
19111
|
+
"label": "main",
|
|
19112
|
+
"element": "main",
|
|
19113
|
+
"production": "record-analytics"
|
|
19114
|
+
},
|
|
19115
|
+
{
|
|
19116
|
+
"id": "layout:record-analytics:0.2",
|
|
19117
|
+
"kind": "layout",
|
|
19118
|
+
"label": "stat-cards",
|
|
19119
|
+
"element": "div",
|
|
19120
|
+
"slot": "stat-cards",
|
|
19121
|
+
"production": "record-analytics"
|
|
19122
|
+
},
|
|
19123
|
+
{
|
|
19124
|
+
"id": "layout:record-analytics:0.2.0",
|
|
19125
|
+
"kind": "layout",
|
|
19126
|
+
"label": "stat-card",
|
|
19127
|
+
"element": "section",
|
|
19128
|
+
"slot": "stat-card",
|
|
19129
|
+
"production": "record-analytics"
|
|
19130
|
+
},
|
|
19131
|
+
{
|
|
19132
|
+
"id": "layout:record-analytics:0.3",
|
|
19133
|
+
"kind": "layout",
|
|
19134
|
+
"label": "chart-cards",
|
|
19135
|
+
"element": "div",
|
|
19136
|
+
"slot": "chart-cards",
|
|
19137
|
+
"production": "record-analytics"
|
|
19138
|
+
},
|
|
19139
|
+
{
|
|
19140
|
+
"id": "layout:record-analytics:0.3.0",
|
|
19141
|
+
"kind": "layout",
|
|
19142
|
+
"label": "chart-card",
|
|
19143
|
+
"element": "section",
|
|
19144
|
+
"slot": "chart-card",
|
|
19145
|
+
"production": "record-analytics"
|
|
19146
|
+
},
|
|
19147
|
+
{
|
|
19148
|
+
"id": "layout:record-analytics:0.3.1",
|
|
19149
|
+
"kind": "layout",
|
|
19150
|
+
"label": "chart-card",
|
|
19151
|
+
"element": "section",
|
|
19152
|
+
"slot": "chart-card",
|
|
19153
|
+
"production": "record-analytics"
|
|
19154
|
+
},
|
|
18257
19155
|
{
|
|
18258
19156
|
"id": "production:modal-task",
|
|
18259
19157
|
"kind": "production",
|
|
@@ -18285,7 +19183,7 @@
|
|
|
18285
19183
|
"configuration",
|
|
18286
19184
|
"toggles"
|
|
18287
19185
|
],
|
|
18288
|
-
"story": "ADS/
|
|
19186
|
+
"story": "ADS/Components/Under review/SettingList / SettingRow",
|
|
18289
19187
|
"jsx": "<Card>\n <CardHeader><CardTitle>{title}</CardTitle></CardHeader>\n <CardBody>\n <SettingList aria-label={title}>\n {settings.map(setting => <SettingRow key={setting.id} {...setting} />)}\n </SettingList>\n </CardBody>\n <CardFooter><Button>Save changes</Button></CardFooter>\n</Card>",
|
|
18290
19188
|
"constraints": [
|
|
18291
19189
|
"Use SettingRow.action for the corresponding ADS control; do not hand-roll label/action rows.",
|
|
@@ -18926,6 +19824,18 @@
|
|
|
18926
19824
|
"target": "state:Modal:position=top",
|
|
18927
19825
|
"relation": "supports-state"
|
|
18928
19826
|
},
|
|
19827
|
+
{
|
|
19828
|
+
"id": "component:Modal:supports-state:state:Modal:height=content:global",
|
|
19829
|
+
"source": "component:Modal",
|
|
19830
|
+
"target": "state:Modal:height=content",
|
|
19831
|
+
"relation": "supports-state"
|
|
19832
|
+
},
|
|
19833
|
+
{
|
|
19834
|
+
"id": "component:Modal:supports-state:state:Modal:height=fixed:global",
|
|
19835
|
+
"source": "component:Modal",
|
|
19836
|
+
"target": "state:Modal:height=fixed",
|
|
19837
|
+
"relation": "supports-state"
|
|
19838
|
+
},
|
|
18929
19839
|
{
|
|
18930
19840
|
"id": "component:ModalBody:supports-state:state:ModalBody:size=sm:global",
|
|
18931
19841
|
"source": "component:ModalBody",
|
|
@@ -18968,6 +19878,18 @@
|
|
|
18968
19878
|
"target": "state:ModalBody:position=top",
|
|
18969
19879
|
"relation": "supports-state"
|
|
18970
19880
|
},
|
|
19881
|
+
{
|
|
19882
|
+
"id": "component:ModalBody:supports-state:state:ModalBody:height=content:global",
|
|
19883
|
+
"source": "component:ModalBody",
|
|
19884
|
+
"target": "state:ModalBody:height=content",
|
|
19885
|
+
"relation": "supports-state"
|
|
19886
|
+
},
|
|
19887
|
+
{
|
|
19888
|
+
"id": "component:ModalBody:supports-state:state:ModalBody:height=fixed:global",
|
|
19889
|
+
"source": "component:ModalBody",
|
|
19890
|
+
"target": "state:ModalBody:height=fixed",
|
|
19891
|
+
"relation": "supports-state"
|
|
19892
|
+
},
|
|
18971
19893
|
{
|
|
18972
19894
|
"id": "component:ModalClose:supports-state:state:ModalClose:size=sm:global",
|
|
18973
19895
|
"source": "component:ModalClose",
|
|
@@ -19010,6 +19932,18 @@
|
|
|
19010
19932
|
"target": "state:ModalClose:position=top",
|
|
19011
19933
|
"relation": "supports-state"
|
|
19012
19934
|
},
|
|
19935
|
+
{
|
|
19936
|
+
"id": "component:ModalClose:supports-state:state:ModalClose:height=content:global",
|
|
19937
|
+
"source": "component:ModalClose",
|
|
19938
|
+
"target": "state:ModalClose:height=content",
|
|
19939
|
+
"relation": "supports-state"
|
|
19940
|
+
},
|
|
19941
|
+
{
|
|
19942
|
+
"id": "component:ModalClose:supports-state:state:ModalClose:height=fixed:global",
|
|
19943
|
+
"source": "component:ModalClose",
|
|
19944
|
+
"target": "state:ModalClose:height=fixed",
|
|
19945
|
+
"relation": "supports-state"
|
|
19946
|
+
},
|
|
19013
19947
|
{
|
|
19014
19948
|
"id": "component:ModalDescription:supports-state:state:ModalDescription:size=sm:global",
|
|
19015
19949
|
"source": "component:ModalDescription",
|
|
@@ -19052,6 +19986,18 @@
|
|
|
19052
19986
|
"target": "state:ModalDescription:position=top",
|
|
19053
19987
|
"relation": "supports-state"
|
|
19054
19988
|
},
|
|
19989
|
+
{
|
|
19990
|
+
"id": "component:ModalDescription:supports-state:state:ModalDescription:height=content:global",
|
|
19991
|
+
"source": "component:ModalDescription",
|
|
19992
|
+
"target": "state:ModalDescription:height=content",
|
|
19993
|
+
"relation": "supports-state"
|
|
19994
|
+
},
|
|
19995
|
+
{
|
|
19996
|
+
"id": "component:ModalDescription:supports-state:state:ModalDescription:height=fixed:global",
|
|
19997
|
+
"source": "component:ModalDescription",
|
|
19998
|
+
"target": "state:ModalDescription:height=fixed",
|
|
19999
|
+
"relation": "supports-state"
|
|
20000
|
+
},
|
|
19055
20001
|
{
|
|
19056
20002
|
"id": "component:ModalDrawer:supports-state:state:ModalDrawer:side=right:global",
|
|
19057
20003
|
"source": "component:ModalDrawer",
|
|
@@ -19136,6 +20082,18 @@
|
|
|
19136
20082
|
"target": "state:ModalFooter:position=top",
|
|
19137
20083
|
"relation": "supports-state"
|
|
19138
20084
|
},
|
|
20085
|
+
{
|
|
20086
|
+
"id": "component:ModalFooter:supports-state:state:ModalFooter:height=content:global",
|
|
20087
|
+
"source": "component:ModalFooter",
|
|
20088
|
+
"target": "state:ModalFooter:height=content",
|
|
20089
|
+
"relation": "supports-state"
|
|
20090
|
+
},
|
|
20091
|
+
{
|
|
20092
|
+
"id": "component:ModalFooter:supports-state:state:ModalFooter:height=fixed:global",
|
|
20093
|
+
"source": "component:ModalFooter",
|
|
20094
|
+
"target": "state:ModalFooter:height=fixed",
|
|
20095
|
+
"relation": "supports-state"
|
|
20096
|
+
},
|
|
19139
20097
|
{
|
|
19140
20098
|
"id": "component:ModalHeader:supports-state:state:ModalHeader:size=sm:global",
|
|
19141
20099
|
"source": "component:ModalHeader",
|
|
@@ -19178,6 +20136,18 @@
|
|
|
19178
20136
|
"target": "state:ModalHeader:position=top",
|
|
19179
20137
|
"relation": "supports-state"
|
|
19180
20138
|
},
|
|
20139
|
+
{
|
|
20140
|
+
"id": "component:ModalHeader:supports-state:state:ModalHeader:height=content:global",
|
|
20141
|
+
"source": "component:ModalHeader",
|
|
20142
|
+
"target": "state:ModalHeader:height=content",
|
|
20143
|
+
"relation": "supports-state"
|
|
20144
|
+
},
|
|
20145
|
+
{
|
|
20146
|
+
"id": "component:ModalHeader:supports-state:state:ModalHeader:height=fixed:global",
|
|
20147
|
+
"source": "component:ModalHeader",
|
|
20148
|
+
"target": "state:ModalHeader:height=fixed",
|
|
20149
|
+
"relation": "supports-state"
|
|
20150
|
+
},
|
|
19181
20151
|
{
|
|
19182
20152
|
"id": "component:ModalSection:supports-state:state:ModalSection:size=sm:global",
|
|
19183
20153
|
"source": "component:ModalSection",
|
|
@@ -19220,6 +20190,18 @@
|
|
|
19220
20190
|
"target": "state:ModalSection:position=top",
|
|
19221
20191
|
"relation": "supports-state"
|
|
19222
20192
|
},
|
|
20193
|
+
{
|
|
20194
|
+
"id": "component:ModalSection:supports-state:state:ModalSection:height=content:global",
|
|
20195
|
+
"source": "component:ModalSection",
|
|
20196
|
+
"target": "state:ModalSection:height=content",
|
|
20197
|
+
"relation": "supports-state"
|
|
20198
|
+
},
|
|
20199
|
+
{
|
|
20200
|
+
"id": "component:ModalSection:supports-state:state:ModalSection:height=fixed:global",
|
|
20201
|
+
"source": "component:ModalSection",
|
|
20202
|
+
"target": "state:ModalSection:height=fixed",
|
|
20203
|
+
"relation": "supports-state"
|
|
20204
|
+
},
|
|
19223
20205
|
{
|
|
19224
20206
|
"id": "component:ModalTitle:supports-state:state:ModalTitle:size=sm:global",
|
|
19225
20207
|
"source": "component:ModalTitle",
|
|
@@ -19262,6 +20244,18 @@
|
|
|
19262
20244
|
"target": "state:ModalTitle:position=top",
|
|
19263
20245
|
"relation": "supports-state"
|
|
19264
20246
|
},
|
|
20247
|
+
{
|
|
20248
|
+
"id": "component:ModalTitle:supports-state:state:ModalTitle:height=content:global",
|
|
20249
|
+
"source": "component:ModalTitle",
|
|
20250
|
+
"target": "state:ModalTitle:height=content",
|
|
20251
|
+
"relation": "supports-state"
|
|
20252
|
+
},
|
|
20253
|
+
{
|
|
20254
|
+
"id": "component:ModalTitle:supports-state:state:ModalTitle:height=fixed:global",
|
|
20255
|
+
"source": "component:ModalTitle",
|
|
20256
|
+
"target": "state:ModalTitle:height=fixed",
|
|
20257
|
+
"relation": "supports-state"
|
|
20258
|
+
},
|
|
19265
20259
|
{
|
|
19266
20260
|
"id": "component:AnswerRenderer:supports-state:state:AnswerRenderer:tone=default:global",
|
|
19267
20261
|
"source": "component:AnswerRenderer",
|
|
@@ -19382,6 +20376,12 @@
|
|
|
19382
20376
|
"target": "state:Chip:variant=outline",
|
|
19383
20377
|
"relation": "supports-state"
|
|
19384
20378
|
},
|
|
20379
|
+
{
|
|
20380
|
+
"id": "component:Chip:supports-state:state:Chip:variant=plain:global",
|
|
20381
|
+
"source": "component:Chip",
|
|
20382
|
+
"target": "state:Chip:variant=plain",
|
|
20383
|
+
"relation": "supports-state"
|
|
20384
|
+
},
|
|
19385
20385
|
{
|
|
19386
20386
|
"id": "component:Chip:supports-state:state:Chip:color=default:global",
|
|
19387
20387
|
"source": "component:Chip",
|
|
@@ -21068,6 +22068,18 @@
|
|
|
21068
22068
|
"target": "state:Table:interaction=horizontal-overflow",
|
|
21069
22069
|
"relation": "supports-state"
|
|
21070
22070
|
},
|
|
22071
|
+
{
|
|
22072
|
+
"id": "component:Table:supports-state:state:Table:interaction=hover-revealed-selection:global",
|
|
22073
|
+
"source": "component:Table",
|
|
22074
|
+
"target": "state:Table:interaction=hover-revealed-selection",
|
|
22075
|
+
"relation": "supports-state"
|
|
22076
|
+
},
|
|
22077
|
+
{
|
|
22078
|
+
"id": "component:Table:supports-state:state:Table:interaction=row-active:global",
|
|
22079
|
+
"source": "component:Table",
|
|
22080
|
+
"target": "state:Table:interaction=row-active",
|
|
22081
|
+
"relation": "supports-state"
|
|
22082
|
+
},
|
|
21071
22083
|
{
|
|
21072
22084
|
"id": "component:ResearchActivity:supports-state:state:ResearchActivity:interaction=active:global",
|
|
21073
22085
|
"source": "component:ResearchActivity",
|
|
@@ -21475,6 +22487,512 @@
|
|
|
21475
22487
|
"optional": false,
|
|
21476
22488
|
"repeat": false
|
|
21477
22489
|
},
|
|
22490
|
+
{
|
|
22491
|
+
"id": "production:collection-screen:constrained-by:principle:collection-screens:collection-screen",
|
|
22492
|
+
"source": "production:collection-screen",
|
|
22493
|
+
"target": "principle:collection-screens",
|
|
22494
|
+
"relation": "constrained-by",
|
|
22495
|
+
"production": "collection-screen"
|
|
22496
|
+
},
|
|
22497
|
+
{
|
|
22498
|
+
"id": "production:collection-screen:constrained-by:principle:record-detail-panels:collection-screen",
|
|
22499
|
+
"source": "production:collection-screen",
|
|
22500
|
+
"target": "principle:record-detail-panels",
|
|
22501
|
+
"relation": "constrained-by",
|
|
22502
|
+
"production": "collection-screen"
|
|
22503
|
+
},
|
|
22504
|
+
{
|
|
22505
|
+
"id": "production:collection-screen:constrained-by:principle:status-language:collection-screen",
|
|
22506
|
+
"source": "production:collection-screen",
|
|
22507
|
+
"target": "principle:status-language",
|
|
22508
|
+
"relation": "constrained-by",
|
|
22509
|
+
"production": "collection-screen"
|
|
22510
|
+
},
|
|
22511
|
+
{
|
|
22512
|
+
"id": "production:collection-screen:constrained-by:principle:tabs-search-opposed:collection-screen",
|
|
22513
|
+
"source": "production:collection-screen",
|
|
22514
|
+
"target": "principle:tabs-search-opposed",
|
|
22515
|
+
"relation": "constrained-by",
|
|
22516
|
+
"production": "collection-screen"
|
|
22517
|
+
},
|
|
22518
|
+
{
|
|
22519
|
+
"id": "production:collection-screen:constrained-by:principle:shell-owns-the-frame:collection-screen",
|
|
22520
|
+
"source": "production:collection-screen",
|
|
22521
|
+
"target": "principle:shell-owns-the-frame",
|
|
22522
|
+
"relation": "constrained-by",
|
|
22523
|
+
"production": "collection-screen"
|
|
22524
|
+
},
|
|
22525
|
+
{
|
|
22526
|
+
"id": "production:collection-screen:constrained-by:principle:minimal-information:collection-screen",
|
|
22527
|
+
"source": "production:collection-screen",
|
|
22528
|
+
"target": "principle:minimal-information",
|
|
22529
|
+
"relation": "constrained-by",
|
|
22530
|
+
"production": "collection-screen"
|
|
22531
|
+
},
|
|
22532
|
+
{
|
|
22533
|
+
"id": "production:collection-screen:renders:layout:collection-screen:0:collection-screen",
|
|
22534
|
+
"source": "production:collection-screen",
|
|
22535
|
+
"target": "layout:collection-screen:0",
|
|
22536
|
+
"relation": "renders",
|
|
22537
|
+
"production": "collection-screen",
|
|
22538
|
+
"slot": "shell-canvas-row",
|
|
22539
|
+
"optional": false,
|
|
22540
|
+
"repeat": false
|
|
22541
|
+
},
|
|
22542
|
+
{
|
|
22543
|
+
"id": "layout:collection-screen:0:contains:layout:collection-screen:0.0:collection-screen",
|
|
22544
|
+
"source": "layout:collection-screen:0",
|
|
22545
|
+
"target": "layout:collection-screen:0.0",
|
|
22546
|
+
"relation": "contains",
|
|
22547
|
+
"production": "collection-screen",
|
|
22548
|
+
"slot": "collection-panel",
|
|
22549
|
+
"optional": false,
|
|
22550
|
+
"repeat": false
|
|
22551
|
+
},
|
|
22552
|
+
{
|
|
22553
|
+
"id": "layout:collection-screen:0.0:contains:component:BodyPageHeader:collection-screen",
|
|
22554
|
+
"source": "layout:collection-screen:0.0",
|
|
22555
|
+
"target": "component:BodyPageHeader",
|
|
22556
|
+
"relation": "contains",
|
|
22557
|
+
"production": "collection-screen",
|
|
22558
|
+
"optional": false,
|
|
22559
|
+
"repeat": false
|
|
22560
|
+
},
|
|
22561
|
+
{
|
|
22562
|
+
"id": "component:BodyPageHeader:contains:component:Button:collection-screen",
|
|
22563
|
+
"source": "component:BodyPageHeader",
|
|
22564
|
+
"target": "component:Button",
|
|
22565
|
+
"relation": "contains",
|
|
22566
|
+
"production": "collection-screen",
|
|
22567
|
+
"slot": "primary-action",
|
|
22568
|
+
"optional": false,
|
|
22569
|
+
"repeat": false
|
|
22570
|
+
},
|
|
22571
|
+
{
|
|
22572
|
+
"id": "layout:collection-screen:0.0:contains:layout:collection-screen:0.0.1:collection-screen",
|
|
22573
|
+
"source": "layout:collection-screen:0.0",
|
|
22574
|
+
"target": "layout:collection-screen:0.0.1",
|
|
22575
|
+
"relation": "contains",
|
|
22576
|
+
"production": "collection-screen",
|
|
22577
|
+
"slot": "control-row",
|
|
22578
|
+
"optional": false,
|
|
22579
|
+
"repeat": false
|
|
22580
|
+
},
|
|
22581
|
+
{
|
|
22582
|
+
"id": "layout:collection-screen:0.0.1:contains:component:Tabs:collection-screen",
|
|
22583
|
+
"source": "layout:collection-screen:0.0.1",
|
|
22584
|
+
"target": "component:Tabs",
|
|
22585
|
+
"relation": "contains",
|
|
22586
|
+
"production": "collection-screen",
|
|
22587
|
+
"optional": false,
|
|
22588
|
+
"repeat": false
|
|
22589
|
+
},
|
|
22590
|
+
{
|
|
22591
|
+
"id": "component:Tabs:contains:component:TabList:collection-screen",
|
|
22592
|
+
"source": "component:Tabs",
|
|
22593
|
+
"target": "component:TabList",
|
|
22594
|
+
"relation": "contains",
|
|
22595
|
+
"production": "collection-screen",
|
|
22596
|
+
"optional": false,
|
|
22597
|
+
"repeat": false
|
|
22598
|
+
},
|
|
22599
|
+
{
|
|
22600
|
+
"id": "component:TabList:contains:component:Tab:collection-screen",
|
|
22601
|
+
"source": "component:TabList",
|
|
22602
|
+
"target": "component:Tab",
|
|
22603
|
+
"relation": "contains",
|
|
22604
|
+
"production": "collection-screen",
|
|
22605
|
+
"optional": false,
|
|
22606
|
+
"repeat": true,
|
|
22607
|
+
"note": "count={n}"
|
|
22608
|
+
},
|
|
22609
|
+
{
|
|
22610
|
+
"id": "layout:collection-screen:0.0.1:contains:component:SearchDisclosure:collection-screen",
|
|
22611
|
+
"source": "layout:collection-screen:0.0.1",
|
|
22612
|
+
"target": "component:SearchDisclosure",
|
|
22613
|
+
"relation": "contains",
|
|
22614
|
+
"production": "collection-screen",
|
|
22615
|
+
"slot": "trailing-search",
|
|
22616
|
+
"optional": false,
|
|
22617
|
+
"repeat": false
|
|
22618
|
+
},
|
|
22619
|
+
{
|
|
22620
|
+
"id": "layout:collection-screen:0.0.1:contains:component:Filters:collection-screen",
|
|
22621
|
+
"source": "layout:collection-screen:0.0.1",
|
|
22622
|
+
"target": "component:Filters",
|
|
22623
|
+
"relation": "contains",
|
|
22624
|
+
"production": "collection-screen",
|
|
22625
|
+
"slot": "trailing-filters",
|
|
22626
|
+
"optional": false,
|
|
22627
|
+
"repeat": false
|
|
22628
|
+
},
|
|
22629
|
+
{
|
|
22630
|
+
"id": "layout:collection-screen:0.0:contains:component:Table:collection-screen",
|
|
22631
|
+
"source": "layout:collection-screen:0.0",
|
|
22632
|
+
"target": "component:Table",
|
|
22633
|
+
"relation": "contains",
|
|
22634
|
+
"production": "collection-screen",
|
|
22635
|
+
"optional": false,
|
|
22636
|
+
"repeat": false,
|
|
22637
|
+
"note": "selectionMode=\"multiple\"; footer={<Pagination />}; page size derived from the panel height"
|
|
22638
|
+
},
|
|
22639
|
+
{
|
|
22640
|
+
"id": "component:Table:contains:component:TableHeader:collection-screen",
|
|
22641
|
+
"source": "component:Table",
|
|
22642
|
+
"target": "component:TableHeader",
|
|
22643
|
+
"relation": "contains",
|
|
22644
|
+
"production": "collection-screen",
|
|
22645
|
+
"optional": false,
|
|
22646
|
+
"repeat": false
|
|
22647
|
+
},
|
|
22648
|
+
{
|
|
22649
|
+
"id": "component:TableHeader:contains:component:TableRow:collection-screen",
|
|
22650
|
+
"source": "component:TableHeader",
|
|
22651
|
+
"target": "component:TableRow",
|
|
22652
|
+
"relation": "contains",
|
|
22653
|
+
"production": "collection-screen",
|
|
22654
|
+
"optional": false,
|
|
22655
|
+
"repeat": false
|
|
22656
|
+
},
|
|
22657
|
+
{
|
|
22658
|
+
"id": "component:TableRow:contains:component:TableColumn:collection-screen",
|
|
22659
|
+
"source": "component:TableRow",
|
|
22660
|
+
"target": "component:TableColumn",
|
|
22661
|
+
"relation": "contains",
|
|
22662
|
+
"production": "collection-screen",
|
|
22663
|
+
"optional": false,
|
|
22664
|
+
"repeat": true
|
|
22665
|
+
},
|
|
22666
|
+
{
|
|
22667
|
+
"id": "component:Table:contains:component:TableBody:collection-screen",
|
|
22668
|
+
"source": "component:Table",
|
|
22669
|
+
"target": "component:TableBody",
|
|
22670
|
+
"relation": "contains",
|
|
22671
|
+
"production": "collection-screen",
|
|
22672
|
+
"optional": false,
|
|
22673
|
+
"repeat": false
|
|
22674
|
+
},
|
|
22675
|
+
{
|
|
22676
|
+
"id": "component:TableBody:contains:component:TableRow:collection-screen",
|
|
22677
|
+
"source": "component:TableBody",
|
|
22678
|
+
"target": "component:TableRow",
|
|
22679
|
+
"relation": "contains",
|
|
22680
|
+
"production": "collection-screen",
|
|
22681
|
+
"optional": false,
|
|
22682
|
+
"repeat": true,
|
|
22683
|
+
"note": "isActive while its detail is open"
|
|
22684
|
+
},
|
|
22685
|
+
{
|
|
22686
|
+
"id": "component:TableRow:contains:component:TableCell:collection-screen",
|
|
22687
|
+
"source": "component:TableRow",
|
|
22688
|
+
"target": "component:TableCell",
|
|
22689
|
+
"relation": "contains",
|
|
22690
|
+
"production": "collection-screen",
|
|
22691
|
+
"optional": false,
|
|
22692
|
+
"repeat": true
|
|
22693
|
+
},
|
|
22694
|
+
{
|
|
22695
|
+
"id": "layout:collection-screen:0:contains:component:Drawer:collection-screen",
|
|
22696
|
+
"source": "layout:collection-screen:0",
|
|
22697
|
+
"target": "component:Drawer",
|
|
22698
|
+
"relation": "contains",
|
|
22699
|
+
"production": "collection-screen",
|
|
22700
|
+
"slot": "selected-record-detail",
|
|
22701
|
+
"optional": true,
|
|
22702
|
+
"repeat": false
|
|
22703
|
+
},
|
|
22704
|
+
{
|
|
22705
|
+
"id": "component:Drawer:contains:component:DrawerHeader:collection-screen",
|
|
22706
|
+
"source": "component:Drawer",
|
|
22707
|
+
"target": "component:DrawerHeader",
|
|
22708
|
+
"relation": "contains",
|
|
22709
|
+
"production": "collection-screen",
|
|
22710
|
+
"optional": false,
|
|
22711
|
+
"repeat": false
|
|
22712
|
+
},
|
|
22713
|
+
{
|
|
22714
|
+
"id": "component:DrawerHeader:contains:component:DrawerTitle:collection-screen",
|
|
22715
|
+
"source": "component:DrawerHeader",
|
|
22716
|
+
"target": "component:DrawerTitle",
|
|
22717
|
+
"relation": "contains",
|
|
22718
|
+
"production": "collection-screen",
|
|
22719
|
+
"optional": false,
|
|
22720
|
+
"repeat": false
|
|
22721
|
+
},
|
|
22722
|
+
{
|
|
22723
|
+
"id": "component:DrawerHeader:contains:component:Chip:collection-screen",
|
|
22724
|
+
"source": "component:DrawerHeader",
|
|
22725
|
+
"target": "component:Chip",
|
|
22726
|
+
"relation": "contains",
|
|
22727
|
+
"production": "collection-screen",
|
|
22728
|
+
"slot": "status-under-title",
|
|
22729
|
+
"optional": false,
|
|
22730
|
+
"repeat": false
|
|
22731
|
+
},
|
|
22732
|
+
{
|
|
22733
|
+
"id": "component:Drawer:contains:component:DrawerBody:collection-screen",
|
|
22734
|
+
"source": "component:Drawer",
|
|
22735
|
+
"target": "component:DrawerBody",
|
|
22736
|
+
"relation": "contains",
|
|
22737
|
+
"production": "collection-screen",
|
|
22738
|
+
"optional": false,
|
|
22739
|
+
"repeat": false,
|
|
22740
|
+
"note": "Performance (stat cards + chart card), then Details (label–value rows)"
|
|
22741
|
+
},
|
|
22742
|
+
{
|
|
22743
|
+
"id": "component:Drawer:contains:component:DrawerFooter:collection-screen",
|
|
22744
|
+
"source": "component:Drawer",
|
|
22745
|
+
"target": "component:DrawerFooter",
|
|
22746
|
+
"relation": "contains",
|
|
22747
|
+
"production": "collection-screen",
|
|
22748
|
+
"optional": false,
|
|
22749
|
+
"repeat": false
|
|
22750
|
+
},
|
|
22751
|
+
{
|
|
22752
|
+
"id": "layout:collection-screen:0:contains:component:Modal:collection-screen",
|
|
22753
|
+
"source": "layout:collection-screen:0",
|
|
22754
|
+
"target": "component:Modal",
|
|
22755
|
+
"relation": "contains",
|
|
22756
|
+
"production": "collection-screen",
|
|
22757
|
+
"slot": "create-task",
|
|
22758
|
+
"optional": true,
|
|
22759
|
+
"repeat": false,
|
|
22760
|
+
"note": "height=\"fixed\""
|
|
22761
|
+
},
|
|
22762
|
+
{
|
|
22763
|
+
"id": "component:Modal:contains:component:ModalHeader:collection-screen",
|
|
22764
|
+
"source": "component:Modal",
|
|
22765
|
+
"target": "component:ModalHeader",
|
|
22766
|
+
"relation": "contains",
|
|
22767
|
+
"production": "collection-screen",
|
|
22768
|
+
"optional": false,
|
|
22769
|
+
"repeat": false
|
|
22770
|
+
},
|
|
22771
|
+
{
|
|
22772
|
+
"id": "component:ModalHeader:contains:component:ModalTitle:collection-screen",
|
|
22773
|
+
"source": "component:ModalHeader",
|
|
22774
|
+
"target": "component:ModalTitle",
|
|
22775
|
+
"relation": "contains",
|
|
22776
|
+
"production": "collection-screen",
|
|
22777
|
+
"optional": false,
|
|
22778
|
+
"repeat": false
|
|
22779
|
+
},
|
|
22780
|
+
{
|
|
22781
|
+
"id": "component:Modal:contains:component:ModalBody:collection-screen",
|
|
22782
|
+
"source": "component:Modal",
|
|
22783
|
+
"target": "component:ModalBody",
|
|
22784
|
+
"relation": "contains",
|
|
22785
|
+
"production": "collection-screen",
|
|
22786
|
+
"optional": false,
|
|
22787
|
+
"repeat": false
|
|
22788
|
+
},
|
|
22789
|
+
{
|
|
22790
|
+
"id": "component:ModalBody:contains:component:InputField:collection-screen",
|
|
22791
|
+
"source": "component:ModalBody",
|
|
22792
|
+
"target": "component:InputField",
|
|
22793
|
+
"relation": "contains",
|
|
22794
|
+
"production": "collection-screen",
|
|
22795
|
+
"optional": false,
|
|
22796
|
+
"repeat": false
|
|
22797
|
+
},
|
|
22798
|
+
{
|
|
22799
|
+
"id": "component:ModalBody:contains:component:SegmentedControl:collection-screen",
|
|
22800
|
+
"source": "component:ModalBody",
|
|
22801
|
+
"target": "component:SegmentedControl",
|
|
22802
|
+
"relation": "contains",
|
|
22803
|
+
"production": "collection-screen",
|
|
22804
|
+
"optional": false,
|
|
22805
|
+
"repeat": false
|
|
22806
|
+
},
|
|
22807
|
+
{
|
|
22808
|
+
"id": "component:ModalBody:contains:component:FileDropzone:collection-screen",
|
|
22809
|
+
"source": "component:ModalBody",
|
|
22810
|
+
"target": "component:FileDropzone",
|
|
22811
|
+
"relation": "contains",
|
|
22812
|
+
"production": "collection-screen",
|
|
22813
|
+
"optional": true,
|
|
22814
|
+
"repeat": false
|
|
22815
|
+
},
|
|
22816
|
+
{
|
|
22817
|
+
"id": "component:Modal:contains:component:ModalFooter:collection-screen",
|
|
22818
|
+
"source": "component:Modal",
|
|
22819
|
+
"target": "component:ModalFooter",
|
|
22820
|
+
"relation": "contains",
|
|
22821
|
+
"production": "collection-screen",
|
|
22822
|
+
"optional": false,
|
|
22823
|
+
"repeat": false
|
|
22824
|
+
},
|
|
22825
|
+
{
|
|
22826
|
+
"id": "production:record-analytics:constrained-by:principle:analytics-surfaces:record-analytics",
|
|
22827
|
+
"source": "production:record-analytics",
|
|
22828
|
+
"target": "principle:analytics-surfaces",
|
|
22829
|
+
"relation": "constrained-by",
|
|
22830
|
+
"production": "record-analytics"
|
|
22831
|
+
},
|
|
22832
|
+
{
|
|
22833
|
+
"id": "production:record-analytics:constrained-by:principle:leading-back-navigation:record-analytics",
|
|
22834
|
+
"source": "production:record-analytics",
|
|
22835
|
+
"target": "principle:leading-back-navigation",
|
|
22836
|
+
"relation": "constrained-by",
|
|
22837
|
+
"production": "record-analytics"
|
|
22838
|
+
},
|
|
22839
|
+
{
|
|
22840
|
+
"id": "production:record-analytics:constrained-by:principle:status-language:record-analytics",
|
|
22841
|
+
"source": "production:record-analytics",
|
|
22842
|
+
"target": "principle:status-language",
|
|
22843
|
+
"relation": "constrained-by",
|
|
22844
|
+
"production": "record-analytics"
|
|
22845
|
+
},
|
|
22846
|
+
{
|
|
22847
|
+
"id": "production:record-analytics:constrained-by:principle:responsive-container-fluid:record-analytics",
|
|
22848
|
+
"source": "production:record-analytics",
|
|
22849
|
+
"target": "principle:responsive-container-fluid",
|
|
22850
|
+
"relation": "constrained-by",
|
|
22851
|
+
"production": "record-analytics"
|
|
22852
|
+
},
|
|
22853
|
+
{
|
|
22854
|
+
"id": "production:record-analytics:renders:layout:record-analytics:0:record-analytics",
|
|
22855
|
+
"source": "production:record-analytics",
|
|
22856
|
+
"target": "layout:record-analytics:0",
|
|
22857
|
+
"relation": "renders",
|
|
22858
|
+
"production": "record-analytics",
|
|
22859
|
+
"optional": false,
|
|
22860
|
+
"repeat": false
|
|
22861
|
+
},
|
|
22862
|
+
{
|
|
22863
|
+
"id": "layout:record-analytics:0:contains:component:Breadcrumbs:record-analytics",
|
|
22864
|
+
"source": "layout:record-analytics:0",
|
|
22865
|
+
"target": "component:Breadcrumbs",
|
|
22866
|
+
"relation": "contains",
|
|
22867
|
+
"production": "record-analytics",
|
|
22868
|
+
"optional": false,
|
|
22869
|
+
"repeat": false
|
|
22870
|
+
},
|
|
22871
|
+
{
|
|
22872
|
+
"id": "component:Breadcrumbs:contains:component:BreadcrumbItem:record-analytics",
|
|
22873
|
+
"source": "component:Breadcrumbs",
|
|
22874
|
+
"target": "component:BreadcrumbItem",
|
|
22875
|
+
"relation": "contains",
|
|
22876
|
+
"production": "record-analytics",
|
|
22877
|
+
"optional": false,
|
|
22878
|
+
"repeat": true
|
|
22879
|
+
},
|
|
22880
|
+
{
|
|
22881
|
+
"id": "component:Breadcrumbs:contains:component:Button:record-analytics",
|
|
22882
|
+
"source": "component:Breadcrumbs",
|
|
22883
|
+
"target": "component:Button",
|
|
22884
|
+
"relation": "contains",
|
|
22885
|
+
"production": "record-analytics",
|
|
22886
|
+
"slot": "actions",
|
|
22887
|
+
"optional": false,
|
|
22888
|
+
"repeat": false
|
|
22889
|
+
},
|
|
22890
|
+
{
|
|
22891
|
+
"id": "layout:record-analytics:0:contains:component:Tabs:record-analytics",
|
|
22892
|
+
"source": "layout:record-analytics:0",
|
|
22893
|
+
"target": "component:Tabs",
|
|
22894
|
+
"relation": "contains",
|
|
22895
|
+
"production": "record-analytics",
|
|
22896
|
+
"optional": false,
|
|
22897
|
+
"repeat": false
|
|
22898
|
+
},
|
|
22899
|
+
{
|
|
22900
|
+
"id": "component:Tabs:contains:component:TabList:record-analytics",
|
|
22901
|
+
"source": "component:Tabs",
|
|
22902
|
+
"target": "component:TabList",
|
|
22903
|
+
"relation": "contains",
|
|
22904
|
+
"production": "record-analytics",
|
|
22905
|
+
"optional": false,
|
|
22906
|
+
"repeat": false
|
|
22907
|
+
},
|
|
22908
|
+
{
|
|
22909
|
+
"id": "component:TabList:contains:component:Tab:record-analytics",
|
|
22910
|
+
"source": "component:TabList",
|
|
22911
|
+
"target": "component:Tab",
|
|
22912
|
+
"relation": "contains",
|
|
22913
|
+
"production": "record-analytics",
|
|
22914
|
+
"optional": false,
|
|
22915
|
+
"repeat": true
|
|
22916
|
+
},
|
|
22917
|
+
{
|
|
22918
|
+
"id": "layout:record-analytics:0:contains:layout:record-analytics:0.2:record-analytics",
|
|
22919
|
+
"source": "layout:record-analytics:0",
|
|
22920
|
+
"target": "layout:record-analytics:0.2",
|
|
22921
|
+
"relation": "contains",
|
|
22922
|
+
"production": "record-analytics",
|
|
22923
|
+
"slot": "stat-cards",
|
|
22924
|
+
"optional": false,
|
|
22925
|
+
"repeat": false
|
|
22926
|
+
},
|
|
22927
|
+
{
|
|
22928
|
+
"id": "layout:record-analytics:0.2:contains:layout:record-analytics:0.2.0:record-analytics",
|
|
22929
|
+
"source": "layout:record-analytics:0.2",
|
|
22930
|
+
"target": "layout:record-analytics:0.2.0",
|
|
22931
|
+
"relation": "contains",
|
|
22932
|
+
"production": "record-analytics",
|
|
22933
|
+
"slot": "stat-card",
|
|
22934
|
+
"optional": false,
|
|
22935
|
+
"repeat": true
|
|
22936
|
+
},
|
|
22937
|
+
{
|
|
22938
|
+
"id": "layout:record-analytics:0.2.0:contains:component:Progress:record-analytics",
|
|
22939
|
+
"source": "layout:record-analytics:0.2.0",
|
|
22940
|
+
"target": "component:Progress",
|
|
22941
|
+
"relation": "contains",
|
|
22942
|
+
"production": "record-analytics",
|
|
22943
|
+
"optional": false,
|
|
22944
|
+
"repeat": false
|
|
22945
|
+
},
|
|
22946
|
+
{
|
|
22947
|
+
"id": "layout:record-analytics:0:contains:layout:record-analytics:0.3:record-analytics",
|
|
22948
|
+
"source": "layout:record-analytics:0",
|
|
22949
|
+
"target": "layout:record-analytics:0.3",
|
|
22950
|
+
"relation": "contains",
|
|
22951
|
+
"production": "record-analytics",
|
|
22952
|
+
"slot": "chart-cards",
|
|
22953
|
+
"optional": false,
|
|
22954
|
+
"repeat": false
|
|
22955
|
+
},
|
|
22956
|
+
{
|
|
22957
|
+
"id": "layout:record-analytics:0.3:contains:layout:record-analytics:0.3.0:record-analytics",
|
|
22958
|
+
"source": "layout:record-analytics:0.3",
|
|
22959
|
+
"target": "layout:record-analytics:0.3.0",
|
|
22960
|
+
"relation": "contains",
|
|
22961
|
+
"production": "record-analytics",
|
|
22962
|
+
"slot": "chart-card",
|
|
22963
|
+
"optional": false,
|
|
22964
|
+
"repeat": false
|
|
22965
|
+
},
|
|
22966
|
+
{
|
|
22967
|
+
"id": "layout:record-analytics:0.3.0:contains:component:BarChart:record-analytics",
|
|
22968
|
+
"source": "layout:record-analytics:0.3.0",
|
|
22969
|
+
"target": "component:BarChart",
|
|
22970
|
+
"relation": "contains",
|
|
22971
|
+
"production": "record-analytics",
|
|
22972
|
+
"optional": false,
|
|
22973
|
+
"repeat": false,
|
|
22974
|
+
"note": "title, subtitle, legendPlacement=\"header\""
|
|
22975
|
+
},
|
|
22976
|
+
{
|
|
22977
|
+
"id": "layout:record-analytics:0.3:contains:layout:record-analytics:0.3.1:record-analytics",
|
|
22978
|
+
"source": "layout:record-analytics:0.3",
|
|
22979
|
+
"target": "layout:record-analytics:0.3.1",
|
|
22980
|
+
"relation": "contains",
|
|
22981
|
+
"production": "record-analytics",
|
|
22982
|
+
"slot": "chart-card",
|
|
22983
|
+
"optional": false,
|
|
22984
|
+
"repeat": false
|
|
22985
|
+
},
|
|
22986
|
+
{
|
|
22987
|
+
"id": "layout:record-analytics:0.3.1:contains:component:LineChart:record-analytics",
|
|
22988
|
+
"source": "layout:record-analytics:0.3.1",
|
|
22989
|
+
"target": "component:LineChart",
|
|
22990
|
+
"relation": "contains",
|
|
22991
|
+
"production": "record-analytics",
|
|
22992
|
+
"optional": false,
|
|
22993
|
+
"repeat": false,
|
|
22994
|
+
"note": "title, subtitle, legendPlacement=\"header\""
|
|
22995
|
+
},
|
|
21478
22996
|
{
|
|
21479
22997
|
"id": "production:modal-task:constrained-by:principle:minimal-information:modal-task",
|
|
21480
22998
|
"source": "production:modal-task",
|