@actioneer/ads 0.5.7 → 0.5.8
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/bin/ads-init.mjs +6 -0
- package/components/accordion.js +50 -48
- package/components/agent-icon.d.ts +12 -0
- package/components/agent-icon.js +133 -120
- package/components/ai-elements/chain-of-thought.d.ts +1 -1
- package/components/ai-elements/chain-of-thought.js +108 -108
- package/components/ai-elements/chart.js +16 -14
- package/components/ai-elements/inline-citation.js +41 -41
- package/components/ai-elements/message.js +4 -4
- package/components/ai-elements/queue.js +7 -7
- package/components/ai-elements/research-activity.js +114 -114
- package/components/ai-elements/shimmer.d.ts +2 -2
- package/components/ai-elements/speech-input.js +28 -28
- package/components/ai-elements/task-progress.js +26 -16
- package/components/ai-elements/task.js +17 -17
- package/components/ai-elements/tool.js +6 -6
- package/components/ai-elements/transcript.js +6 -5
- package/components/ai-elements/voice.js +1 -1
- package/components/alert.js +10 -10
- package/components/answer-sources.js +1 -1
- package/components/answer.js +115 -114
- package/components/assistant-ui/action-bar.js +94 -48
- package/components/assistant-ui/attachment.js +103 -75
- package/components/assistant-ui/badge.d.ts +1 -1
- package/components/assistant-ui/badge.js +17 -17
- package/components/assistant-ui/chain-of-thought.d.ts +1 -1
- package/components/assistant-ui/composer-add-context.js +9 -9
- package/components/assistant-ui/composer-deep-research.js +5 -5
- package/components/assistant-ui/composer-harness.js +11 -9
- package/components/assistant-ui/composer-trigger-popover.js +45 -34
- package/components/assistant-ui/composer.js +59 -59
- package/components/assistant-ui/error.js +14 -14
- package/components/assistant-ui/file.d.ts +1 -1
- package/components/assistant-ui/image.d.ts +1 -1
- package/components/assistant-ui/image.js +113 -103
- package/components/assistant-ui/markdown-text.js +18 -18
- package/components/assistant-ui/message.js +46 -45
- package/components/assistant-ui/quote.js +1 -1
- package/components/assistant-ui/reasoning.d.ts +1 -1
- package/components/assistant-ui/reasoning.js +66 -77
- package/components/assistant-ui/suggestions.js +4 -4
- package/components/assistant-ui/thread.js +22 -22
- package/components/assistant-ui/tool-fallback.js +60 -63
- package/components/assistant-ui/tool-group.d.ts +1 -1
- package/components/assistant-ui/tool-group.js +36 -42
- package/components/audio-waveform.js +25 -24
- package/components/autocomplete.d.ts +1 -0
- package/components/autocomplete.js +45 -43
- package/components/avatar.js +24 -24
- package/components/badge.d.ts +1 -1
- package/components/breadcrumbs.js +2 -2
- package/components/button.d.ts +2 -2
- package/components/button.js +22 -20
- package/components/card.js +8 -8
- package/components/carousel.js +105 -104
- package/components/chart.js +9 -7
- package/components/checkbox.js +74 -38
- package/components/chip.d.ts +1 -1
- package/components/code-block.js +3 -3
- package/components/collapsible.js +67 -23
- package/components/connector-card.js +6 -6
- package/components/drawer.d.ts +15 -10
- package/components/drawer.js +78 -77
- package/components/dropdown.d.ts +2 -0
- package/components/dropdown.js +88 -79
- package/components/empty-state.d.ts +1 -1
- package/components/empty-state.js +7 -7
- package/components/field.d.ts +4 -0
- package/components/field.js +45 -34
- package/components/file-dropzone.js +12 -12
- package/components/index.d.ts +3 -0
- package/components/index.js +584 -558
- package/components/input-field.js +51 -46
- package/components/input.js +20 -20
- package/components/link.js +9 -9
- package/components/modal.js +105 -73
- package/components/navbar.d.ts +1 -1
- package/components/navbar.js +1 -1
- package/components/number-field.js +38 -29
- package/components/page-header.js +12 -12
- package/components/pagination.js +19 -19
- package/components/panel.js +2 -2
- package/components/pixel-blast-svg.js +3 -3
- package/components/pixel-icon.js +0 -1
- package/components/popover.d.ts +1 -1
- package/components/popover.js +66 -64
- package/components/progress-circle.js +36 -32
- package/components/progress.js +28 -24
- package/components/radio.js +59 -49
- package/components/resizable-panel.js +1 -1
- package/components/reveal.d.ts +2 -2
- package/components/ripple.d.ts +3 -3
- package/components/scroll-area.js +17 -16
- package/components/segmented.js +26 -26
- package/components/select.d.ts +2 -0
- package/components/select.js +61 -57
- package/components/setting-row.js +45 -42
- package/components/sidebar.js +131 -127
- package/components/skeleton.js +5 -5
- package/components/spinner.d.ts +13 -4
- package/components/spinner.js +42 -42
- package/components/stepper.js +21 -21
- package/components/switch.js +41 -39
- package/components/table.d.ts +9 -0
- package/components/table.js +370 -247
- package/components/tabs.js +149 -137
- package/components/toast.js +66 -66
- package/components/tooltip.js +2 -2
- package/components/tree.js +62 -51
- package/components/typography.d.ts +2 -1
- package/components/typography.js +33 -32
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +19 -19
- package/components/ui/collapsible.d.ts +1 -5
- package/components/ui/dialog.d.ts +3 -3
- package/components/ui/dialog.js +95 -58
- package/components/ui/tooltip.d.ts +2 -2
- package/components/ui/tooltip.js +67 -33
- package/components/viz-charts.js +95 -95
- package/demo/components/add-to-artifact.js +341 -0
- package/demo/lib/artifact-library.js +134 -0
- package/fonts/aribau-grotesk-medium.woff2 +0 -0
- package/fonts/aribau-grotesk-regular.woff2 +0 -0
- package/fonts.css +11 -11
- package/hooks/agents-ui/use-agent-audio-visualizer-aura.js +17 -16
- package/hooks/agents-ui/use-agent-audio-visualizer-wave.js +21 -20
- package/lib/icons.d.ts +4 -0
- package/lib/icons.js +103 -102
- package/lib/motion.d.ts +42 -39
- package/lib/motion.js +112 -52
- package/lib/spinner-mark.d.ts +9 -0
- package/lib/spinner-mark.js +98 -0
- package/llms.txt +52 -18
- package/manifest.json +240 -31
- package/package.json +1 -1
- package/styles.css +143 -124
- package/theme.css +90 -93
- package/components/ui/collapsible.js +0 -35
- package/fonts/aribau-grotesk-500.otf +0 -0
- package/fonts/aribau-grotesk-600.woff2 +0 -0
package/llms.txt
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
- `ToastProvider` (from `@actioneer/ads`) — required to render toasts
|
|
12
12
|
- `<MotionConfig reducedMotion="user">` (from `motion/react`) — honor the OS reduced-motion setting
|
|
13
13
|
4. Import contract: `import { Button } from "@actioneer/ads";` — the exact named export, never `@actioneer/ads/button`, never an alias, never a local copy.
|
|
14
|
+
5. Motion contract: every imported component keeps its built-in ADS motion. For consumer-authored semantic state motion, import the matching named preset from `@actioneer/ads`; never copy raw spring values or introduce a separate timing system. Apply principle 3 on every component import/use change.
|
|
14
15
|
|
|
15
16
|
## Tokens
|
|
16
17
|
|
|
@@ -34,16 +35,17 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
34
35
|
- `fill` — Quiet fill — secondary buttons, avatars, chips
|
|
35
36
|
- `fill-foreground` — Quiet fill — secondary buttons, avatars, chips
|
|
36
37
|
- `table-shell` — Quiet fill — secondary buttons, avatars, chips
|
|
38
|
+
- `artifact-canvas`
|
|
37
39
|
- `accent`
|
|
38
40
|
- `accent-foreground`
|
|
39
|
-
- `success`
|
|
40
|
-
- `success-foreground`
|
|
41
|
-
- `warning`
|
|
42
|
-
- `warning-foreground`
|
|
43
|
-
- `danger`
|
|
44
|
-
- `danger-foreground`
|
|
45
|
-
- `info`
|
|
46
|
-
- `info-foreground`
|
|
41
|
+
- `success` — success-700 on white = 5.48:1 (600 was 3.77:1, failed AA).
|
|
42
|
+
- `success-foreground` — success-700 on white = 5.48:1 (600 was 3.77:1, failed AA).
|
|
43
|
+
- `warning` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
44
|
+
- `warning-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
45
|
+
- `danger` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
46
|
+
- `danger-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
47
|
+
- `info` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
48
|
+
- `info-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
47
49
|
- `border-primary`
|
|
48
50
|
- `border-secondary`
|
|
49
51
|
- `border-tertiary`
|
|
@@ -71,21 +73,25 @@ Delineate SURFACES (cards, panels, sidebars, page regions) with color contrast,
|
|
|
71
73
|
|
|
72
74
|
The single shadow-elevation token is an affordance: it goes ONLY on surfaces the user can act on. Never elevate something that can't be clicked. There is no shadow scale.
|
|
73
75
|
|
|
74
|
-
- Do: Elevate actionable surfaces: pressable/hoverable cards, primary CTAs, control thumbs (Switch, Slider, active
|
|
76
|
+
- Do: Elevate actionable surfaces: pressable/hoverable cards, primary CTAs, control thumbs (Switch, Slider, active tab segments), and interactive floating layers (Modal, Drawer, Popover, Dropdown, listboxes, Toast).
|
|
75
77
|
- Do: Keep static surfaces flat: Panel, plain Card, Kbd, Navbar, headers, rails, docs boxes, Tooltip, InlineDrawer — they read by fill/color.
|
|
76
78
|
- Do: Ask 'can the user click this surface?' — if no, it's flat.
|
|
77
79
|
- Don't: Reintroduce a shadow scale (shadow-xs/sm/md/lg/xl) — there is one token only, shadow-elevation.
|
|
78
80
|
- Don't: Put a shadow on a non-interactive surface for decoration.
|
|
79
81
|
|
|
80
|
-
### 3. Motion follows the
|
|
82
|
+
### 3. Motion follows the interaction [lint: unbounded-transition, sluggish-easing, zero-scale-entrance, undersized-zoom-entrance, raw-spring-config]
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
Component motion follows the closest Animate UI interaction pattern, using role-specific presets defined in src/lib/motion.ts and exported from the ADS root barrel. Direct manipulation stays immediate, small CSS feedback stays local, and reduced motion is respected everywhere.
|
|
83
85
|
|
|
84
|
-
- Do:
|
|
85
|
-
- Do:
|
|
86
|
-
- Do:
|
|
87
|
-
-
|
|
86
|
+
- Do: Treat motion as part of every ADS component import: preserve the component's built-in motion, and import any composition-level preset from the ADS root barrel.
|
|
87
|
+
- Do: Map the component family before choosing motion: tabs/segments use control; checkbox/radio/switch use selection; menus use highlight; popovers/tooltips use overlay; modal/drawer use dialog/sheet; accordion/collapsible use disclosure; progress, carousel, and sidebar use their matching presets.
|
|
88
|
+
- Do: Keep sliders, drag-resize, scrolling, and other pointer-following interactions immediate; motion begins after the committed value or destination changes.
|
|
89
|
+
- Do: Give pressable elements local active feedback (text/link exempt); start entrances ≥ scale 0.95 with opacity.
|
|
90
|
+
- Do: Wrap Motion components in MotionConfig reducedMotion='user'; keep useful opacity/color feedback and drop spatial movement.
|
|
91
|
+
- Don't: Invent raw spring values inside a component, recreate a global duration/easing token scale, use an unbounded all-property transition, or start an entrance at scale zero.
|
|
92
|
+
- Don't: Override or duplicate the motion already shipped inside an imported ADS component.
|
|
88
93
|
- Don't: Animate keyboard-initiated or 100×/day actions (e.g. a command-palette toggle).
|
|
94
|
+
- Don't: Add motion to a component only because it is visible; static structure and decorative chrome stay still.
|
|
89
95
|
|
|
90
96
|
### 4. Icons: Hugeicons, stroke only [lint: icon-package-import]
|
|
91
97
|
|
|
@@ -164,12 +170,37 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
164
170
|
|
|
165
171
|
## Components
|
|
166
172
|
|
|
173
|
+
Before using any component below, preserve its built-in motion and apply the motion contract in Setup step 5.
|
|
174
|
+
|
|
167
175
|
### Primitives / utilities
|
|
168
176
|
|
|
169
177
|
- [TooltipProvider] — component [docs](https://ads.actioneer.dev/#/tooltip)
|
|
170
178
|
- [InteractiveProps] — TypeScript type
|
|
179
|
+
- [backdropVariants] — utility
|
|
180
|
+
- [checkDrawTransition] — utility
|
|
171
181
|
- [cn] — utility
|
|
182
|
+
- [drawerBackdropVariants] — utility
|
|
183
|
+
- [drawerOffset] — utility
|
|
184
|
+
- [fadeTransition] — utility
|
|
185
|
+
- [floatVariants] — utility
|
|
172
186
|
- [interactive] — utility
|
|
187
|
+
- [menuVariants] — utility
|
|
188
|
+
- [modalPanelVariants] — utility
|
|
189
|
+
- [screenVariants] — utility
|
|
190
|
+
- [springCarousel] — utility
|
|
191
|
+
- [springControl] — utility
|
|
192
|
+
- [springDialog] — utility
|
|
193
|
+
- [springDisclosure] — utility
|
|
194
|
+
- [springEffect] — utility
|
|
195
|
+
- [springHighlight] — utility
|
|
196
|
+
- [springOverlay] — utility
|
|
197
|
+
- [springProgress] — utility
|
|
198
|
+
- [springRadio] — utility
|
|
199
|
+
- [springSheet] — utility
|
|
200
|
+
- [springSidebar] — utility
|
|
201
|
+
- [springSwitch] — utility
|
|
202
|
+
- [toastVariants] — utility
|
|
203
|
+
- [tooltipVariants] — utility
|
|
173
204
|
|
|
174
205
|
### Foundations
|
|
175
206
|
|
|
@@ -193,7 +224,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
193
224
|
- [ScrollBar] — component [docs](https://ads.actioneer.dev/#/review/scroll-area)
|
|
194
225
|
- [SettingList] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
|
|
195
226
|
- [SettingRow] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
|
|
196
|
-
- [Spinner] — Use for
|
|
227
|
+
- [Spinner] — Use the nine-squircle Spinner for indeterminate work; choose its variant by work scope and use Progress or ProgressCircle when completion can be measured. (variants: size: xs|sm|md|lg; color: current|primary|muted) [docs](https://ads.actioneer.dev/#/spinner)
|
|
197
228
|
- [Stepper] — component (variants: status: complete|current|upcoming|error; size: sm|md) [docs](https://ads.actioneer.dev/#/review/stepper)
|
|
198
229
|
- [Text] — Use Text for any body copy, caption, or inline run of prose instead of a raw p/span tag. [docs](https://ads.actioneer.dev/#/typography)
|
|
199
230
|
- [Tooltip] — Use to label a single hover/focus-triggered element (icon-only buttons, avatars, truncated text) with a short informational hint — not for actions or content that needs to stay open. [docs](https://ads.actioneer.dev/#/tooltip)
|
|
@@ -215,6 +246,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
215
246
|
- [SettingListProps] — TypeScript type
|
|
216
247
|
- [SettingRowProps] — TypeScript type
|
|
217
248
|
- [SpinnerProps] — TypeScript type
|
|
249
|
+
- [SpinnerVariant] — TypeScript type
|
|
218
250
|
- [StepperProps] — TypeScript type
|
|
219
251
|
- [StepperStatus] — TypeScript type
|
|
220
252
|
- [StepperStep] — TypeScript type
|
|
@@ -225,6 +257,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
225
257
|
- [fileDropzoneVariants] — utility
|
|
226
258
|
- [inputBaseClass] — utility
|
|
227
259
|
- [settingRowVariants] — utility
|
|
260
|
+
- [SPINNER_VARIANTS] — utility
|
|
228
261
|
- [stepperMarkerVariants] — utility
|
|
229
262
|
|
|
230
263
|
### Form controls
|
|
@@ -237,7 +270,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
237
270
|
- [NumberField] — Use for a bounded numeric quantity (e.g. seats, width, count) that benefits from stepper buttons and min/max clamping, not free-form numeric text entry. [docs](https://ads.actioneer.dev/#/number-field)
|
|
238
271
|
- [Radio] — Use for choosing exactly one option from a small, fully visible set — wrap Radio options in a RadioGroup that owns the shared name and controlled value. [docs](https://ads.actioneer.dev/#/radio)
|
|
239
272
|
- [RadioGroup] — component [docs](https://ads.actioneer.dev/#/radio)
|
|
240
|
-
- [SegmentedControl] — Use for a small set (2-4) of mutually exclusive, always-visible options — like a range or view-mode switcher — not for navigation or long lists. (variants: size: sm|md|lg; selected: true|false) [docs](https://ads.actioneer.dev/#/segmented)
|
|
273
|
+
- [SegmentedControl] — Use for a small set (2-4) of mutually exclusive, always-visible options — like a range or view-mode switcher — not for navigation or long lists. Radius follows control size: 4px at sm and 8px at md/lg; tracks and options are never fully rounded. (variants: size: sm|md|lg; selected: true|false) [docs](https://ads.actioneer.dev/#/segmented)
|
|
241
274
|
- [Select] — Use for a single choice from a closed list of options in a form, especially when pairing with Field for a labeled control. (variants: size: sm|md|lg) [docs](https://ads.actioneer.dev/#/select)
|
|
242
275
|
- [Slider] — Use for a single controlled numeric value picked from a bounded range (volume, brightness, threshold) — pair with Field or Label/Text for an accessible, labeled control. [docs](https://ads.actioneer.dev/#/slider)
|
|
243
276
|
- [Switch] — Use for a single binary on/off preference that applies immediately, not as part of a form submitted later. [docs](https://ads.actioneer.dev/#/switch)
|
|
@@ -381,7 +414,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
381
414
|
- [TableRow] — component [docs](https://ads.actioneer.dev/#/table)
|
|
382
415
|
- [TabList] — component (variants: variant: primary|secondary|pill; orientation: horizontal|vertical; size: sm|md|lg) [docs](https://ads.actioneer.dev/#/tabs)
|
|
383
416
|
- [TabPanel] — component (variants: variant: primary|secondary|pill; orientation: horizontal|vertical; size: sm|md|lg; selected: true|false) [docs](https://ads.actioneer.dev/#/tabs)
|
|
384
|
-
- [Tabs] — Use Tabs to switch between mutually exclusive views/sections that share the same page context, not for page-level navigation. Always reach for the primary
|
|
417
|
+
- [Tabs] — Use Tabs to switch between mutually exclusive views/sections that share the same page context, not for page-level navigation. Always reach for the primary recessed-track variant — it is the default; use secondary only when explicitly asked for it. Tab radius follows control size (4px sm, 8px md/lg), never rounded-full. When Tabs and a scoped search field coexist, compose one responsive control row with tabs leading and search trailing; do not stack search above tabs at widths where both fit. (variants: variant: primary|secondary|pill; orientation: horizontal|vertical; size: sm|md|lg; selected: true|false) [docs](https://ads.actioneer.dev/#/tabs)
|
|
385
418
|
- [TabSeparator] — component (variants: variant: primary|secondary|pill; orientation: horizontal|vertical; size: sm|md|lg; selected: true|false) [docs](https://ads.actioneer.dev/#/tabs)
|
|
386
419
|
- [Timeline] — Use for a vertical rail of dated events — version history, audit trails, activity/status feeds. [docs](https://ads.actioneer.dev/#/timeline)
|
|
387
420
|
- [TimelineItem] — component [docs](https://ads.actioneer.dev/#/timeline)
|
|
@@ -582,6 +615,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
582
615
|
- [ProgressCircle] — Use for a compact circular loading/progress indicator (determinate or indeterminate) where a linear bar doesn't fit, e.g. inline with a caption or a small avatar-sized control. [docs](https://ads.actioneer.dev/#/progress-circle)
|
|
583
616
|
- [Ripple] — component [docs](https://ads.actioneer.dev/#/ripple)
|
|
584
617
|
- [Skeleton] — Placeholder the shape of content that's still loading — size it via className and pair with circle for avatars. [docs](https://ads.actioneer.dev/#/skeleton)
|
|
618
|
+
- [AgentIconColorPreset] — TypeScript type
|
|
585
619
|
- [AgentIconName] — TypeScript type
|
|
586
620
|
- [AgentIconProps] — TypeScript type
|
|
587
621
|
- [AgentIconState] — TypeScript type
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actioneer/ads",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.8",
|
|
4
4
|
"importPath": "@actioneer/ads",
|
|
5
5
|
"styleImport": "@import \"@actioneer/ads/styles.css\";",
|
|
6
6
|
"families": [
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
"Chat"
|
|
17
17
|
],
|
|
18
18
|
"counts": {
|
|
19
|
-
"total":
|
|
19
|
+
"total": 818,
|
|
20
20
|
"component": 357,
|
|
21
|
-
"type":
|
|
21
|
+
"type": 349,
|
|
22
22
|
"hook": 10,
|
|
23
|
-
"util":
|
|
23
|
+
"util": 102
|
|
24
24
|
},
|
|
25
25
|
"tokens": [
|
|
26
26
|
{
|
|
@@ -208,6 +208,16 @@
|
|
|
208
208
|
],
|
|
209
209
|
"description": "Quiet fill — secondary buttons, avatars, chips"
|
|
210
210
|
},
|
|
211
|
+
{
|
|
212
|
+
"name": "--color-artifact-canvas",
|
|
213
|
+
"role": "artifact-canvas",
|
|
214
|
+
"utilities": [
|
|
215
|
+
"bg-artifact-canvas",
|
|
216
|
+
"text-artifact-canvas",
|
|
217
|
+
"border-artifact-canvas"
|
|
218
|
+
],
|
|
219
|
+
"description": ""
|
|
220
|
+
},
|
|
211
221
|
{
|
|
212
222
|
"name": "--color-accent",
|
|
213
223
|
"role": "accent",
|
|
@@ -235,7 +245,7 @@
|
|
|
235
245
|
"text-success",
|
|
236
246
|
"border-success"
|
|
237
247
|
],
|
|
238
|
-
"description": ""
|
|
248
|
+
"description": "success-700 on white = 5.48:1 (600 was 3.77:1, failed AA)."
|
|
239
249
|
},
|
|
240
250
|
{
|
|
241
251
|
"name": "--color-success-foreground",
|
|
@@ -244,7 +254,7 @@
|
|
|
244
254
|
"text-success-foreground",
|
|
245
255
|
"bg-success-foreground"
|
|
246
256
|
],
|
|
247
|
-
"description": ""
|
|
257
|
+
"description": "success-700 on white = 5.48:1 (600 was 3.77:1, failed AA)."
|
|
248
258
|
},
|
|
249
259
|
{
|
|
250
260
|
"name": "--color-warning",
|
|
@@ -254,7 +264,7 @@
|
|
|
254
264
|
"text-warning",
|
|
255
265
|
"border-warning"
|
|
256
266
|
],
|
|
257
|
-
"description": ""
|
|
267
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
258
268
|
},
|
|
259
269
|
{
|
|
260
270
|
"name": "--color-warning-foreground",
|
|
@@ -263,7 +273,7 @@
|
|
|
263
273
|
"text-warning-foreground",
|
|
264
274
|
"bg-warning-foreground"
|
|
265
275
|
],
|
|
266
|
-
"description": ""
|
|
276
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
267
277
|
},
|
|
268
278
|
{
|
|
269
279
|
"name": "--color-danger",
|
|
@@ -273,7 +283,7 @@
|
|
|
273
283
|
"text-danger",
|
|
274
284
|
"border-danger"
|
|
275
285
|
],
|
|
276
|
-
"description": ""
|
|
286
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
277
287
|
},
|
|
278
288
|
{
|
|
279
289
|
"name": "--color-danger-foreground",
|
|
@@ -282,7 +292,7 @@
|
|
|
282
292
|
"text-danger-foreground",
|
|
283
293
|
"bg-danger-foreground"
|
|
284
294
|
],
|
|
285
|
-
"description": ""
|
|
295
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
286
296
|
},
|
|
287
297
|
{
|
|
288
298
|
"name": "--color-info",
|
|
@@ -292,7 +302,7 @@
|
|
|
292
302
|
"text-info",
|
|
293
303
|
"border-info"
|
|
294
304
|
],
|
|
295
|
-
"description": ""
|
|
305
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
296
306
|
},
|
|
297
307
|
{
|
|
298
308
|
"name": "--color-info-foreground",
|
|
@@ -301,7 +311,7 @@
|
|
|
301
311
|
"text-info-foreground",
|
|
302
312
|
"bg-info-foreground"
|
|
303
313
|
],
|
|
304
|
-
"description": ""
|
|
314
|
+
"description": "Amber-500 fill kept (it IS the caution signal); dark ink foreground"
|
|
305
315
|
},
|
|
306
316
|
{
|
|
307
317
|
"name": "--color-border-primary",
|
|
@@ -398,6 +408,20 @@
|
|
|
398
408
|
"importPath": "@actioneer/ads",
|
|
399
409
|
"module": "interactive"
|
|
400
410
|
},
|
|
411
|
+
{
|
|
412
|
+
"name": "backdropVariants",
|
|
413
|
+
"family": "Primitives / utilities",
|
|
414
|
+
"kind": "util",
|
|
415
|
+
"importPath": "@actioneer/ads",
|
|
416
|
+
"module": "motion"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "checkDrawTransition",
|
|
420
|
+
"family": "Primitives / utilities",
|
|
421
|
+
"kind": "util",
|
|
422
|
+
"importPath": "@actioneer/ads",
|
|
423
|
+
"module": "motion"
|
|
424
|
+
},
|
|
401
425
|
{
|
|
402
426
|
"name": "cn",
|
|
403
427
|
"family": "Primitives / utilities",
|
|
@@ -405,6 +429,34 @@
|
|
|
405
429
|
"importPath": "@actioneer/ads",
|
|
406
430
|
"module": "cn"
|
|
407
431
|
},
|
|
432
|
+
{
|
|
433
|
+
"name": "drawerBackdropVariants",
|
|
434
|
+
"family": "Primitives / utilities",
|
|
435
|
+
"kind": "util",
|
|
436
|
+
"importPath": "@actioneer/ads",
|
|
437
|
+
"module": "motion"
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"name": "drawerOffset",
|
|
441
|
+
"family": "Primitives / utilities",
|
|
442
|
+
"kind": "util",
|
|
443
|
+
"importPath": "@actioneer/ads",
|
|
444
|
+
"module": "motion"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"name": "fadeTransition",
|
|
448
|
+
"family": "Primitives / utilities",
|
|
449
|
+
"kind": "util",
|
|
450
|
+
"importPath": "@actioneer/ads",
|
|
451
|
+
"module": "motion"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "floatVariants",
|
|
455
|
+
"family": "Primitives / utilities",
|
|
456
|
+
"kind": "util",
|
|
457
|
+
"importPath": "@actioneer/ads",
|
|
458
|
+
"module": "motion"
|
|
459
|
+
},
|
|
408
460
|
{
|
|
409
461
|
"name": "interactive",
|
|
410
462
|
"family": "Primitives / utilities",
|
|
@@ -412,6 +464,125 @@
|
|
|
412
464
|
"importPath": "@actioneer/ads",
|
|
413
465
|
"module": "interactive"
|
|
414
466
|
},
|
|
467
|
+
{
|
|
468
|
+
"name": "menuVariants",
|
|
469
|
+
"family": "Primitives / utilities",
|
|
470
|
+
"kind": "util",
|
|
471
|
+
"importPath": "@actioneer/ads",
|
|
472
|
+
"module": "motion"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"name": "modalPanelVariants",
|
|
476
|
+
"family": "Primitives / utilities",
|
|
477
|
+
"kind": "util",
|
|
478
|
+
"importPath": "@actioneer/ads",
|
|
479
|
+
"module": "motion"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"name": "screenVariants",
|
|
483
|
+
"family": "Primitives / utilities",
|
|
484
|
+
"kind": "util",
|
|
485
|
+
"importPath": "@actioneer/ads",
|
|
486
|
+
"module": "motion"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"name": "springCarousel",
|
|
490
|
+
"family": "Primitives / utilities",
|
|
491
|
+
"kind": "util",
|
|
492
|
+
"importPath": "@actioneer/ads",
|
|
493
|
+
"module": "motion"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "springControl",
|
|
497
|
+
"family": "Primitives / utilities",
|
|
498
|
+
"kind": "util",
|
|
499
|
+
"importPath": "@actioneer/ads",
|
|
500
|
+
"module": "motion"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"name": "springDialog",
|
|
504
|
+
"family": "Primitives / utilities",
|
|
505
|
+
"kind": "util",
|
|
506
|
+
"importPath": "@actioneer/ads",
|
|
507
|
+
"module": "motion"
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "springDisclosure",
|
|
511
|
+
"family": "Primitives / utilities",
|
|
512
|
+
"kind": "util",
|
|
513
|
+
"importPath": "@actioneer/ads",
|
|
514
|
+
"module": "motion"
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"name": "springEffect",
|
|
518
|
+
"family": "Primitives / utilities",
|
|
519
|
+
"kind": "util",
|
|
520
|
+
"importPath": "@actioneer/ads",
|
|
521
|
+
"module": "motion"
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"name": "springHighlight",
|
|
525
|
+
"family": "Primitives / utilities",
|
|
526
|
+
"kind": "util",
|
|
527
|
+
"importPath": "@actioneer/ads",
|
|
528
|
+
"module": "motion"
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"name": "springOverlay",
|
|
532
|
+
"family": "Primitives / utilities",
|
|
533
|
+
"kind": "util",
|
|
534
|
+
"importPath": "@actioneer/ads",
|
|
535
|
+
"module": "motion"
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"name": "springProgress",
|
|
539
|
+
"family": "Primitives / utilities",
|
|
540
|
+
"kind": "util",
|
|
541
|
+
"importPath": "@actioneer/ads",
|
|
542
|
+
"module": "motion"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"name": "springRadio",
|
|
546
|
+
"family": "Primitives / utilities",
|
|
547
|
+
"kind": "util",
|
|
548
|
+
"importPath": "@actioneer/ads",
|
|
549
|
+
"module": "motion"
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
"name": "springSheet",
|
|
553
|
+
"family": "Primitives / utilities",
|
|
554
|
+
"kind": "util",
|
|
555
|
+
"importPath": "@actioneer/ads",
|
|
556
|
+
"module": "motion"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"name": "springSidebar",
|
|
560
|
+
"family": "Primitives / utilities",
|
|
561
|
+
"kind": "util",
|
|
562
|
+
"importPath": "@actioneer/ads",
|
|
563
|
+
"module": "motion"
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"name": "springSwitch",
|
|
567
|
+
"family": "Primitives / utilities",
|
|
568
|
+
"kind": "util",
|
|
569
|
+
"importPath": "@actioneer/ads",
|
|
570
|
+
"module": "motion"
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"name": "toastVariants",
|
|
574
|
+
"family": "Primitives / utilities",
|
|
575
|
+
"kind": "util",
|
|
576
|
+
"importPath": "@actioneer/ads",
|
|
577
|
+
"module": "motion"
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"name": "tooltipVariants",
|
|
581
|
+
"family": "Primitives / utilities",
|
|
582
|
+
"kind": "util",
|
|
583
|
+
"importPath": "@actioneer/ads",
|
|
584
|
+
"module": "motion"
|
|
585
|
+
},
|
|
415
586
|
{
|
|
416
587
|
"name": "AudioWaveform",
|
|
417
588
|
"family": "Foundations",
|
|
@@ -544,7 +715,9 @@
|
|
|
544
715
|
"description",
|
|
545
716
|
"error",
|
|
546
717
|
"required",
|
|
547
|
-
"htmlFor"
|
|
718
|
+
"htmlFor",
|
|
719
|
+
"errorId",
|
|
720
|
+
"descriptionId"
|
|
548
721
|
]
|
|
549
722
|
},
|
|
550
723
|
{
|
|
@@ -740,20 +913,22 @@
|
|
|
740
913
|
"kind": "component",
|
|
741
914
|
"importPath": "@actioneer/ads",
|
|
742
915
|
"module": "spinner",
|
|
743
|
-
"description": "Use for
|
|
916
|
+
"description": "Use the nine-squircle Spinner for indeterminate work; choose its variant by work scope and use Progress or ProgressCircle when completion can be measured.",
|
|
744
917
|
"showcaseUrl": "https://ads.actioneer.dev/#/spinner",
|
|
745
918
|
"variants": {
|
|
746
919
|
"size": {
|
|
747
920
|
"values": [
|
|
921
|
+
"xs",
|
|
748
922
|
"sm",
|
|
749
923
|
"md",
|
|
750
924
|
"lg"
|
|
751
925
|
],
|
|
752
926
|
"default": "md",
|
|
753
927
|
"options": {
|
|
754
|
-
"
|
|
755
|
-
"
|
|
756
|
-
"
|
|
928
|
+
"xs": "Dense 14px control slot, reserved for the tightest inline UI.",
|
|
929
|
+
"sm": "Standard 16px icon slot for buttons, rows, fields, and modal copy.",
|
|
930
|
+
"md": "Default 24px standalone loading state inside a bounded region.",
|
|
931
|
+
"lg": "Prominent 32px state for a blocked surface or page."
|
|
757
932
|
}
|
|
758
933
|
},
|
|
759
934
|
"color": {
|
|
@@ -766,6 +941,7 @@
|
|
|
766
941
|
}
|
|
767
942
|
},
|
|
768
943
|
"props": [
|
|
944
|
+
"variant",
|
|
769
945
|
"label"
|
|
770
946
|
]
|
|
771
947
|
},
|
|
@@ -959,6 +1135,13 @@
|
|
|
959
1135
|
"importPath": "@actioneer/ads",
|
|
960
1136
|
"module": "spinner"
|
|
961
1137
|
},
|
|
1138
|
+
{
|
|
1139
|
+
"name": "SpinnerVariant",
|
|
1140
|
+
"family": "Foundations",
|
|
1141
|
+
"kind": "type",
|
|
1142
|
+
"importPath": "@actioneer/ads",
|
|
1143
|
+
"module": "spinner"
|
|
1144
|
+
},
|
|
962
1145
|
{
|
|
963
1146
|
"name": "StepperProps",
|
|
964
1147
|
"family": "Foundations",
|
|
@@ -1029,6 +1212,13 @@
|
|
|
1029
1212
|
"importPath": "@actioneer/ads",
|
|
1030
1213
|
"module": "setting-row"
|
|
1031
1214
|
},
|
|
1215
|
+
{
|
|
1216
|
+
"name": "SPINNER_VARIANTS",
|
|
1217
|
+
"family": "Foundations",
|
|
1218
|
+
"kind": "util",
|
|
1219
|
+
"importPath": "@actioneer/ads",
|
|
1220
|
+
"module": "spinner"
|
|
1221
|
+
},
|
|
1032
1222
|
{
|
|
1033
1223
|
"name": "stepperMarkerVariants",
|
|
1034
1224
|
"family": "Foundations",
|
|
@@ -1170,7 +1360,7 @@
|
|
|
1170
1360
|
"kind": "component",
|
|
1171
1361
|
"importPath": "@actioneer/ads",
|
|
1172
1362
|
"module": "segmented",
|
|
1173
|
-
"description": "Use for a small set (2-4) of mutually exclusive, always-visible options — like a range or view-mode switcher — not for navigation or long lists.",
|
|
1363
|
+
"description": "Use for a small set (2-4) of mutually exclusive, always-visible options — like a range or view-mode switcher — not for navigation or long lists. Radius follows control size: 4px at sm and 8px at md/lg; tracks and options are never fully rounded.",
|
|
1174
1364
|
"showcaseUrl": "https://ads.actioneer.dev/#/segmented",
|
|
1175
1365
|
"variants": {
|
|
1176
1366
|
"size": {
|
|
@@ -1589,6 +1779,7 @@
|
|
|
1589
1779
|
"startContent",
|
|
1590
1780
|
"danger",
|
|
1591
1781
|
"disabled",
|
|
1782
|
+
"restoreFocus",
|
|
1592
1783
|
"onSelect"
|
|
1593
1784
|
]
|
|
1594
1785
|
},
|
|
@@ -3100,7 +3291,8 @@
|
|
|
3100
3291
|
"sortDescriptor",
|
|
3101
3292
|
"onSortChange",
|
|
3102
3293
|
"allowsSorting",
|
|
3103
|
-
"isStatic"
|
|
3294
|
+
"isStatic",
|
|
3295
|
+
"resizableColumns"
|
|
3104
3296
|
]
|
|
3105
3297
|
},
|
|
3106
3298
|
{
|
|
@@ -3263,7 +3455,7 @@
|
|
|
3263
3455
|
"kind": "component",
|
|
3264
3456
|
"importPath": "@actioneer/ads",
|
|
3265
3457
|
"module": "tabs",
|
|
3266
|
-
"description": "Use Tabs to switch between mutually exclusive views/sections that share the same page context, not for page-level navigation. Always reach for the primary
|
|
3458
|
+
"description": "Use Tabs to switch between mutually exclusive views/sections that share the same page context, not for page-level navigation. Always reach for the primary recessed-track variant — it is the default; use secondary only when explicitly asked for it. Tab radius follows control size (4px sm, 8px md/lg), never rounded-full. When Tabs and a scoped search field coexist, compose one responsive control row with tabs leading and search trailing; do not stack search above tabs at widths where both fit.",
|
|
3267
3459
|
"showcaseUrl": "https://ads.actioneer.dev/#/tabs",
|
|
3268
3460
|
"variants": {
|
|
3269
3461
|
"variant": {
|
|
@@ -3274,8 +3466,8 @@
|
|
|
3274
3466
|
],
|
|
3275
3467
|
"default": "primary",
|
|
3276
3468
|
"options": {
|
|
3277
|
-
"primary": "Filled muted
|
|
3278
|
-
"secondary": "No
|
|
3469
|
+
"primary": "Filled muted track with tabs sliding behind a shared elevated segment. The house default — use it for every tab surface unless the underline is explicitly requested.",
|
|
3470
|
+
"secondary": "No track background — a thin neutral-ink underline (or side rail when vertical) slides beneath the active tab against a hairline rail; use for flush, lower-emphasis section tabs."
|
|
3279
3471
|
}
|
|
3280
3472
|
},
|
|
3281
3473
|
"orientation": {
|
|
@@ -4652,7 +4844,12 @@
|
|
|
4652
4844
|
"state",
|
|
4653
4845
|
"interactive",
|
|
4654
4846
|
"size",
|
|
4847
|
+
"tileGridSize",
|
|
4848
|
+
"eyeScale",
|
|
4849
|
+
"eyeColor",
|
|
4850
|
+
"animateOnMount",
|
|
4655
4851
|
"color",
|
|
4852
|
+
"colorPreset",
|
|
4656
4853
|
"trackPointer"
|
|
4657
4854
|
]
|
|
4658
4855
|
},
|
|
@@ -4917,6 +5114,13 @@
|
|
|
4917
5114
|
"circle"
|
|
4918
5115
|
]
|
|
4919
5116
|
},
|
|
5117
|
+
{
|
|
5118
|
+
"name": "AgentIconColorPreset",
|
|
5119
|
+
"family": "Feedback",
|
|
5120
|
+
"kind": "type",
|
|
5121
|
+
"importPath": "@actioneer/ads",
|
|
5122
|
+
"module": "agent-icon"
|
|
5123
|
+
},
|
|
4920
5124
|
{
|
|
4921
5125
|
"name": "AgentIconName",
|
|
4922
5126
|
"family": "Feedback",
|
|
@@ -8688,7 +8892,7 @@
|
|
|
8688
8892
|
"title": "Elevation = actionability",
|
|
8689
8893
|
"rule": "The single shadow-elevation token is an affordance: it goes ONLY on surfaces the user can act on. Never elevate something that can't be clicked. There is no shadow scale.",
|
|
8690
8894
|
"do": [
|
|
8691
|
-
"Elevate actionable surfaces: pressable/hoverable cards, primary CTAs, control thumbs (Switch, Slider, active
|
|
8895
|
+
"Elevate actionable surfaces: pressable/hoverable cards, primary CTAs, control thumbs (Switch, Slider, active tab segments), and interactive floating layers (Modal, Drawer, Popover, Dropdown, listboxes, Toast).",
|
|
8692
8896
|
"Keep static surfaces flat: Panel, plain Card, Kbd, Navbar, headers, rails, docs boxes, Tooltip, InlineDrawer — they read by fill/color.",
|
|
8693
8897
|
"Ask 'can the user click this surface?' — if no, it's flat."
|
|
8694
8898
|
],
|
|
@@ -8701,23 +8905,28 @@
|
|
|
8701
8905
|
{
|
|
8702
8906
|
"id": "motion-follows-guide",
|
|
8703
8907
|
"number": 3,
|
|
8704
|
-
"title": "Motion follows the
|
|
8705
|
-
"rule": "
|
|
8908
|
+
"title": "Motion follows the interaction",
|
|
8909
|
+
"rule": "Component motion follows the closest Animate UI interaction pattern, using role-specific presets defined in src/lib/motion.ts and exported from the ADS root barrel. Direct manipulation stays immediate, small CSS feedback stays local, and reduced motion is respected everywhere.",
|
|
8706
8910
|
"do": [
|
|
8707
|
-
"
|
|
8708
|
-
"
|
|
8709
|
-
"
|
|
8911
|
+
"Treat motion as part of every ADS component import: preserve the component's built-in motion, and import any composition-level preset from the ADS root barrel.",
|
|
8912
|
+
"Map the component family before choosing motion: tabs/segments use control; checkbox/radio/switch use selection; menus use highlight; popovers/tooltips use overlay; modal/drawer use dialog/sheet; accordion/collapsible use disclosure; progress, carousel, and sidebar use their matching presets.",
|
|
8913
|
+
"Keep sliders, drag-resize, scrolling, and other pointer-following interactions immediate; motion begins after the committed value or destination changes.",
|
|
8914
|
+
"Give pressable elements local active feedback (text/link exempt); start entrances ≥ scale 0.95 with opacity.",
|
|
8915
|
+
"Wrap Motion components in MotionConfig reducedMotion='user'; keep useful opacity/color feedback and drop spatial movement."
|
|
8710
8916
|
],
|
|
8711
8917
|
"dont": [
|
|
8712
|
-
"
|
|
8713
|
-
"
|
|
8918
|
+
"Invent raw spring values inside a component, recreate a global duration/easing token scale, use an unbounded all-property transition, or start an entrance at scale zero.",
|
|
8919
|
+
"Override or duplicate the motion already shipped inside an imported ADS component.",
|
|
8920
|
+
"Animate keyboard-initiated or 100×/day actions (e.g. a command-palette toggle).",
|
|
8921
|
+
"Add motion to a component only because it is visible; static structure and decorative chrome stay still."
|
|
8714
8922
|
],
|
|
8715
8923
|
"enforcedByLint": true,
|
|
8716
8924
|
"lintRules": [
|
|
8717
8925
|
"unbounded-transition",
|
|
8718
8926
|
"sluggish-easing",
|
|
8719
8927
|
"zero-scale-entrance",
|
|
8720
|
-
"undersized-zoom-entrance"
|
|
8928
|
+
"undersized-zoom-entrance",
|
|
8929
|
+
"raw-spring-config"
|
|
8721
8930
|
]
|
|
8722
8931
|
},
|
|
8723
8932
|
{
|