@robr0/design-system 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +21 -10
  2. package/components/AgentStatus/AgentStatus.css +82 -22
  3. package/components/AgentStatus/AgentStatus.d.ts +6 -2
  4. package/components/AgentStatus/AgentStatus.js +38 -6
  5. package/components/AiButton/AiButton.css +163 -0
  6. package/components/AiButton/AiButton.d.ts +36 -0
  7. package/components/AiButton/AiButton.js +58 -0
  8. package/components/ChatHeader/ChatHeader.css +35 -0
  9. package/components/ChatHeader/ChatHeader.d.ts +30 -0
  10. package/components/ChatHeader/ChatHeader.js +17 -0
  11. package/components/ChatMarker/ChatMarker.css +52 -0
  12. package/components/ChatMarker/ChatMarker.d.ts +22 -0
  13. package/components/ChatMarker/ChatMarker.js +18 -0
  14. package/components/ChatMessage/ChatMessage.css +310 -0
  15. package/components/ChatMessage/ChatMessage.d.ts +74 -0
  16. package/components/ChatMessage/ChatMessage.js +71 -0
  17. package/components/ChatThread/ChatThread.css +171 -0
  18. package/components/ChatThread/ChatThread.d.ts +41 -0
  19. package/components/ChatThread/ChatThread.js +174 -0
  20. package/components/Chip/Chip.css +27 -0
  21. package/components/Chip/Chip.d.ts +2 -2
  22. package/components/CircularButton/CircularButton.d.ts +23 -8
  23. package/components/CircularButton/CircularButton.js +54 -52
  24. package/components/CodeBlock/CodeBlock.css +2 -2
  25. package/components/Composer/Composer.css +163 -0
  26. package/components/Composer/Composer.d.ts +67 -0
  27. package/components/Composer/Composer.js +120 -0
  28. package/components/DocumentChip/DocumentChip.css +181 -0
  29. package/components/DocumentChip/DocumentChip.d.ts +41 -0
  30. package/components/DocumentChip/DocumentChip.js +78 -0
  31. package/components/InterruptCard/InterruptCard.css +164 -0
  32. package/components/InterruptCard/InterruptCard.d.ts +55 -0
  33. package/components/InterruptCard/InterruptCard.js +57 -0
  34. package/components/MessageActions/MessageActions.css +76 -0
  35. package/components/MessageActions/MessageActions.d.ts +38 -0
  36. package/components/MessageActions/MessageActions.js +33 -0
  37. package/components/MessageCard/MessageCard.css +112 -0
  38. package/components/MessageCard/MessageCard.d.ts +35 -0
  39. package/components/MessageCard/MessageCard.js +28 -0
  40. package/components/NavList/NavList.css +155 -0
  41. package/components/NavList/NavList.d.ts +56 -0
  42. package/components/NavList/NavList.js +99 -0
  43. package/components/PromptSuggestions/PromptSuggestions.css +87 -0
  44. package/components/PromptSuggestions/PromptSuggestions.d.ts +51 -0
  45. package/components/PromptSuggestions/PromptSuggestions.js +34 -0
  46. package/components/Prose/Prose.css +252 -0
  47. package/components/Prose/Prose.d.ts +21 -0
  48. package/components/Prose/Prose.js +14 -0
  49. package/components/Reasoning/Reasoning.css +149 -25
  50. package/components/Reasoning/Reasoning.d.ts +19 -0
  51. package/components/Reasoning/Reasoning.js +32 -3
  52. package/components/SourceChip/SourceChip.css +102 -0
  53. package/components/SourceChip/SourceChip.d.ts +32 -0
  54. package/components/SourceChip/SourceChip.js +31 -0
  55. package/components/Stat/Stat.css +2 -2
  56. package/components/Timeline/Timeline.css +9 -1
  57. package/components/ToolCall/ToolCall.css +3 -3
  58. package/components/registry.json +113 -1
  59. package/components/registry.json.d.ts +113 -1
  60. package/components/registry.json.js +1 -1
  61. package/index.d.ts +14 -0
  62. package/index.js +28 -0
  63. package/package.json +1 -1
  64. package/tokens/registry.json +13 -0
  65. package/tokens/registry.json.d.ts +13 -0
  66. package/tokens/registry.json.js +1 -1
  67. package/tokens/tokens-dark.css +13 -0
  68. package/tokens/tokens-light.css +43 -0
  69. package/tokens/tokens-primitives.css +5 -0
  70. package/tokens/tokens-typography.css +24 -0
@@ -0,0 +1,102 @@
1
+ /* ============================================
2
+ SOURCE CHIP COMPONENT
3
+ Numbered citation pill linking a claim to
4
+ its source. Anchor when href is set, plain
5
+ span otherwise.
6
+ ============================================ */
7
+
8
+ .ds-source-chip {
9
+ /* Layout */
10
+ display: inline-flex;
11
+ align-items: center;
12
+ gap: var(--gap-xs); /* 4px */
13
+
14
+ /* Spacing */
15
+ padding: var(--padding-xxxs) var(--padding-sm); /* 2px 8px */
16
+
17
+ /* Shape — borderless pill on the secondary container */
18
+ border-radius: var(--radius-full);
19
+ background-color: var(--color-bg-container-secondary);
20
+
21
+ /* Typography */
22
+ font-family: var(--font-paragraph-sm-family);
23
+ font-size: var(--font-paragraph-sm-size);
24
+ font-weight: var(--font-paragraph-sm-weight);
25
+ line-height: var(--font-paragraph-sm-line-height);
26
+ letter-spacing: var(--font-paragraph-sm-letter-spacing);
27
+ color: var(--color-text-secondary);
28
+
29
+ /* The pill shape is the affordance — never an underline */
30
+ text-decoration: none;
31
+ cursor: default;
32
+
33
+ transition: background-color var(--motion-duration-fast) var(--motion-ease-standard),
34
+ color var(--motion-duration-fast) var(--motion-ease-standard);
35
+ }
36
+
37
+ /* ============================================
38
+ INDEX — citation numeral in its own circle
39
+ ============================================ */
40
+
41
+ .ds-source-chip__index {
42
+ display: inline-flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ flex-shrink: 0;
46
+ min-width: var(--icon-size-sm);
47
+ height: var(--icon-size-sm);
48
+ border-radius: var(--radius-full);
49
+ background-color: var(--color-bg-container-tertiary);
50
+
51
+ font-family: var(--font-paragraph-sm-em-family);
52
+ font-size: var(--font-paragraph-sm-em-size);
53
+ font-weight: var(--font-paragraph-sm-em-weight);
54
+ letter-spacing: var(--font-paragraph-sm-em-letter-spacing);
55
+ line-height: 1;
56
+ font-variant-numeric: tabular-nums;
57
+ color: var(--color-text-tertiary);
58
+ }
59
+
60
+ /* ============================================
61
+ ICON (leading, when no index)
62
+ ============================================ */
63
+
64
+ .ds-source-chip__icon {
65
+ flex-shrink: 0;
66
+ --icon-size: var(--icon-size-sm);
67
+ line-height: 1;
68
+ color: var(--color-icon-primary);
69
+ }
70
+
71
+ /* ============================================
72
+ TITLE — truncates with an ellipsis
73
+ ============================================ */
74
+
75
+ .ds-source-chip__title {
76
+ max-width: 24ch;
77
+ overflow: hidden;
78
+ white-space: nowrap;
79
+ text-overflow: ellipsis;
80
+ }
81
+
82
+ /* ============================================
83
+ LINK (rendered as <a>)
84
+ ============================================ */
85
+
86
+ .ds-source-chip--link {
87
+ cursor: pointer;
88
+ }
89
+
90
+ .ds-source-chip--link:hover {
91
+ background-color: var(--color-bg-container-tertiary);
92
+ color: var(--color-text-primary);
93
+ }
94
+
95
+ /* ============================================
96
+ FOCUS
97
+ ============================================ */
98
+
99
+ .ds-source-chip--link:focus-visible {
100
+ outline: 2px solid var(--color-action-primary-bg);
101
+ outline-offset: 2px;
102
+ }
@@ -0,0 +1,32 @@
1
+ import { default as React } from 'react';
2
+ /** Props owned by SourceChip itself — everything else falls through to the root element. */
3
+ type SourceChipOwnProps = {
4
+ /** The source name, e.g. "Design tokens quarterly". Truncates with an ellipsis when long. */
5
+ title: string;
6
+ /** Citation number, rendered as a leading numeral in its own small badge circle. */
7
+ index?: number;
8
+ /**
9
+ * Leading icon — a Material Symbol name (string) or custom element (ReactNode).
10
+ * The icon and the index share the leading slot: when both are passed, `index` wins
11
+ * and the icon is not rendered.
12
+ */
13
+ icon?: string | React.ReactNode;
14
+ /** Optional href — renders as an `<a>` instead of a `<span>`. */
15
+ href?: string;
16
+ /** Additional CSS classes */
17
+ className?: string;
18
+ };
19
+ export interface SourceChipProps extends SourceChipOwnProps, Omit<React.ComponentPropsWithoutRef<'a'>, keyof SourceChipOwnProps> {
20
+ }
21
+ /**
22
+ * SourceChip is the numbered citation pill linking a claim to its source.
23
+ * It renders inline after a sentence or in a sources row under an assistant
24
+ * chat message: a leading citation number (or icon) beside a truncating
25
+ * source title.
26
+ *
27
+ * Renders an `<a>` when `href` is supplied, a plain `<span>` otherwise.
28
+ * Forwards a ref to whichever element it renders, and spreads unrecognised
29
+ * props onto it — `target` and `rel` pass through as native anchor attributes.
30
+ */
31
+ export declare const SourceChip: React.ForwardRefExoticComponent<SourceChipProps & React.RefAttributes<HTMLSpanElement | HTMLAnchorElement>>;
32
+ export {};
@@ -0,0 +1,31 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import "./SourceChip.css";
4
+ import "../../fonts/material-symbols.css";
5
+ const SourceChip = React.forwardRef(
6
+ ({ title, index, icon, href, className = "", ...rest }, ref) => {
7
+ const baseClass = "ds-source-chip";
8
+ const classes = [baseClass, href ? `${baseClass}--link` : "", className].filter(Boolean).join(" ");
9
+ const leading = index !== void 0 ? /* @__PURE__ */ jsx("span", { className: `${baseClass}__index`, children: index }) : icon ? /* @__PURE__ */ jsx("span", { className: `${baseClass}__icon`, "aria-hidden": "true", children: typeof icon === "string" ? /* @__PURE__ */ jsx("span", { className: "material-symbols-rounded", children: icon }) : icon }) : null;
10
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
11
+ leading,
12
+ /* @__PURE__ */ jsx("span", { className: `${baseClass}__title`, children: title })
13
+ ] });
14
+ if (href) {
15
+ return /* @__PURE__ */ jsx("a", { ...rest, ref, className: classes, href, children: content });
16
+ }
17
+ return /* @__PURE__ */ jsx(
18
+ "span",
19
+ {
20
+ ...rest,
21
+ ref,
22
+ className: classes,
23
+ children: content
24
+ }
25
+ );
26
+ }
27
+ );
28
+ SourceChip.displayName = "SourceChip";
29
+ export {
30
+ SourceChip
31
+ };
@@ -66,11 +66,11 @@
66
66
  }
67
67
 
68
68
  .ds-stat__delta--up {
69
- color: var(--color-status-positive-text);
69
+ color: var(--color-core-accent-mint);
70
70
  }
71
71
 
72
72
  .ds-stat__delta--down {
73
- color: var(--color-status-error-text);
73
+ color: var(--color-core-accent-coral);
74
74
  }
75
75
 
76
76
  .ds-stat__delta--neutral {
@@ -332,8 +332,16 @@
332
332
  bottom: calc(8px - var(--gap-lg)); /* stop 8px above the next logo */
333
333
  }
334
334
 
335
- /* Last entry has no following logo — stop the bar at its own content */
335
+ /* Last entry has no following logo — the bar runs to its own content's end
336
+ and fades out: the hairline treatment (1px, dissolving to the transparent
337
+ container colour) that marks the end of the timeline. */
336
338
  .ds-timeline--company .ds-timeline__item:last-child::before {
337
339
  display: block;
338
340
  bottom: 0;
341
+ width: var(--border-xs);
342
+ background: linear-gradient(
343
+ to bottom,
344
+ var(--color-divider),
345
+ var(--color-bg-container-primary-transparent)
346
+ );
339
347
  }
@@ -72,11 +72,11 @@
72
72
  --icon-size: var(--icon-size-sm);
73
73
  }
74
74
 
75
- /* The tool name is an identifier, so it takes the same monospace
76
- context CodeBlock uses — the one place the system leaves Nunito Sans */
75
+ /* The tool name is an identifier, so it takes the code stack —
76
+ the one place the system leaves Nunito Sans */
77
77
  .ds-tool-call__name {
78
78
  flex: none;
79
- font-family: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
79
+ font-family: var(--font-family-code);
80
80
  font-size: var(--font-paragraph-sm-size);
81
81
  line-height: var(--font-paragraph-sm-line-height);
82
82
  color: var(--color-text-primary);
@@ -28,6 +28,14 @@
28
28
  "category": "ai",
29
29
  "client": true
30
30
  },
31
+ {
32
+ "name": "AiButton",
33
+ "label": "AI button",
34
+ "slug": "ai-button",
35
+ "description": "The AI entry point: icon and label on a transparent field, ringed by a slowly turning gradient and a soft glow.",
36
+ "category": "ai",
37
+ "client": true
38
+ },
31
39
  {
32
40
  "name": "Alert",
33
41
  "label": "Alert",
@@ -124,6 +132,38 @@
124
132
  "category": "charts",
125
133
  "client": false
126
134
  },
135
+ {
136
+ "name": "ChatHeader",
137
+ "label": "Chat header",
138
+ "slug": "chat-header",
139
+ "description": "The top row of a chat surface, with the conversation title and its controls.",
140
+ "category": "ai",
141
+ "client": false
142
+ },
143
+ {
144
+ "name": "ChatMarker",
145
+ "label": "Chat marker",
146
+ "slug": "chat-marker",
147
+ "description": "An inline conversation separator for date breaks and system notes.",
148
+ "category": "ai",
149
+ "client": false
150
+ },
151
+ {
152
+ "name": "ChatMessage",
153
+ "label": "Chat message",
154
+ "slug": "chat-message",
155
+ "description": "A single chat turn with avatar, author, timestamp, and bubble or plain content aligned by role.",
156
+ "category": "ai",
157
+ "client": false
158
+ },
159
+ {
160
+ "name": "ChatThread",
161
+ "label": "Chat thread",
162
+ "slug": "chat-thread",
163
+ "description": "A scrollable conversation column with edge fades, send anchoring, and a subtle scrollbar.",
164
+ "category": "ai",
165
+ "client": true
166
+ },
127
167
  {
128
168
  "name": "Checkbox",
129
169
  "label": "Checkbox",
@@ -180,6 +220,14 @@
180
220
  "category": "overlays",
181
221
  "client": true
182
222
  },
223
+ {
224
+ "name": "Composer",
225
+ "label": "Composer",
226
+ "slug": "composer",
227
+ "description": "An auto-growing message input with send and stop states, an attachment slot, and Enter-to-send.",
228
+ "category": "ai",
229
+ "client": true
230
+ },
183
231
  {
184
232
  "name": "ContactCard",
185
233
  "label": "Contact card",
@@ -236,6 +284,14 @@
236
284
  "category": "layout",
237
285
  "client": false
238
286
  },
287
+ {
288
+ "name": "DocumentChip",
289
+ "label": "Document chip",
290
+ "slug": "document-chip",
291
+ "description": "A compact file reference with a type icon, name, metadata, and optional remove.",
292
+ "category": "ai",
293
+ "client": false
294
+ },
239
295
  {
240
296
  "name": "Drawer",
241
297
  "label": "Drawer",
@@ -316,6 +372,14 @@
316
372
  "category": "data-display",
317
373
  "client": false
318
374
  },
375
+ {
376
+ "name": "InterruptCard",
377
+ "label": "Interrupt card",
378
+ "slug": "interrupt-card",
379
+ "description": "A human-in-the-loop checkpoint with a question from the agent and option buttons to decide.",
380
+ "category": "ai",
381
+ "client": false
382
+ },
319
383
  {
320
384
  "name": "Kbd",
321
385
  "label": "Kbd",
@@ -332,14 +396,38 @@
332
396
  "category": "data-display",
333
397
  "client": false
334
398
  },
399
+ {
400
+ "name": "MessageActions",
401
+ "label": "Message actions",
402
+ "slug": "message-actions",
403
+ "description": "An icon-button row for message-level actions like copy, retry, and feedback.",
404
+ "category": "ai",
405
+ "client": false
406
+ },
407
+ {
408
+ "name": "MessageCard",
409
+ "label": "Message card",
410
+ "slug": "message-card",
411
+ "description": "A structured rich-content card embedded in a chat message, with media, title, body, and actions.",
412
+ "category": "ai",
413
+ "client": false
414
+ },
335
415
  {
336
416
  "name": "Nav",
337
417
  "label": "Navigation",
338
418
  "slug": "navigation",
339
- "description": "Desktop and mobile navigation components including top-level nav bar, collapsed mobile bar, and hamburger slide-out menu.",
419
+ "description": "Desktop top navigation bar with a brand slot, horizontal button group, and optional trailing content.",
340
420
  "category": "navigation",
341
421
  "client": false
342
422
  },
423
+ {
424
+ "name": "NavList",
425
+ "label": "Nav list",
426
+ "slug": "nav-list",
427
+ "description": "Vertical list of navigation links for drawers and menus, with three indent levels and per-row expand toggles.",
428
+ "category": "navigation",
429
+ "client": true
430
+ },
343
431
  {
344
432
  "name": "Pagination",
345
433
  "label": "Pagination",
@@ -364,6 +452,22 @@
364
452
  "category": "feedback",
365
453
  "client": false
366
454
  },
455
+ {
456
+ "name": "PromptSuggestions",
457
+ "label": "Prompt suggestions",
458
+ "slug": "prompt-suggestions",
459
+ "description": "A horizontal row of tappable prompt suggestions to start or steer a conversation.",
460
+ "category": "ai",
461
+ "client": false
462
+ },
463
+ {
464
+ "name": "Prose",
465
+ "label": "Prose",
466
+ "slug": "prose",
467
+ "description": "Token-styled typography for rendered markdown and rich agent output.",
468
+ "category": "ai",
469
+ "client": false
470
+ },
367
471
  {
368
472
  "name": "Quote",
369
473
  "label": "Quote",
@@ -428,6 +532,14 @@
428
532
  "category": "forms",
429
533
  "client": true
430
534
  },
535
+ {
536
+ "name": "SourceChip",
537
+ "label": "Source chip",
538
+ "slug": "source-chip",
539
+ "description": "A numbered citation pill linking a claim to its source.",
540
+ "category": "ai",
541
+ "client": false
542
+ },
431
543
  {
432
544
  "name": "Spinner",
433
545
  "label": "Spinner",
@@ -28,6 +28,14 @@ declare const _default: {
28
28
  "category": "ai",
29
29
  "client": true
30
30
  },
31
+ {
32
+ "name": "AiButton",
33
+ "label": "AI button",
34
+ "slug": "ai-button",
35
+ "description": "The AI entry point: icon and label on a transparent field, ringed by a slowly turning gradient and a soft glow.",
36
+ "category": "ai",
37
+ "client": true
38
+ },
31
39
  {
32
40
  "name": "Alert",
33
41
  "label": "Alert",
@@ -124,6 +132,38 @@ declare const _default: {
124
132
  "category": "charts",
125
133
  "client": false
126
134
  },
135
+ {
136
+ "name": "ChatHeader",
137
+ "label": "Chat header",
138
+ "slug": "chat-header",
139
+ "description": "The top row of a chat surface, with the conversation title and its controls.",
140
+ "category": "ai",
141
+ "client": false
142
+ },
143
+ {
144
+ "name": "ChatMarker",
145
+ "label": "Chat marker",
146
+ "slug": "chat-marker",
147
+ "description": "An inline conversation separator for date breaks and system notes.",
148
+ "category": "ai",
149
+ "client": false
150
+ },
151
+ {
152
+ "name": "ChatMessage",
153
+ "label": "Chat message",
154
+ "slug": "chat-message",
155
+ "description": "A single chat turn with avatar, author, timestamp, and bubble or plain content aligned by role.",
156
+ "category": "ai",
157
+ "client": false
158
+ },
159
+ {
160
+ "name": "ChatThread",
161
+ "label": "Chat thread",
162
+ "slug": "chat-thread",
163
+ "description": "A scrollable conversation column with edge fades, send anchoring, and a subtle scrollbar.",
164
+ "category": "ai",
165
+ "client": true
166
+ },
127
167
  {
128
168
  "name": "Checkbox",
129
169
  "label": "Checkbox",
@@ -180,6 +220,14 @@ declare const _default: {
180
220
  "category": "overlays",
181
221
  "client": true
182
222
  },
223
+ {
224
+ "name": "Composer",
225
+ "label": "Composer",
226
+ "slug": "composer",
227
+ "description": "An auto-growing message input with send and stop states, an attachment slot, and Enter-to-send.",
228
+ "category": "ai",
229
+ "client": true
230
+ },
183
231
  {
184
232
  "name": "ContactCard",
185
233
  "label": "Contact card",
@@ -236,6 +284,14 @@ declare const _default: {
236
284
  "category": "layout",
237
285
  "client": false
238
286
  },
287
+ {
288
+ "name": "DocumentChip",
289
+ "label": "Document chip",
290
+ "slug": "document-chip",
291
+ "description": "A compact file reference with a type icon, name, metadata, and optional remove.",
292
+ "category": "ai",
293
+ "client": false
294
+ },
239
295
  {
240
296
  "name": "Drawer",
241
297
  "label": "Drawer",
@@ -316,6 +372,14 @@ declare const _default: {
316
372
  "category": "data-display",
317
373
  "client": false
318
374
  },
375
+ {
376
+ "name": "InterruptCard",
377
+ "label": "Interrupt card",
378
+ "slug": "interrupt-card",
379
+ "description": "A human-in-the-loop checkpoint with a question from the agent and option buttons to decide.",
380
+ "category": "ai",
381
+ "client": false
382
+ },
319
383
  {
320
384
  "name": "Kbd",
321
385
  "label": "Kbd",
@@ -332,14 +396,38 @@ declare const _default: {
332
396
  "category": "data-display",
333
397
  "client": false
334
398
  },
399
+ {
400
+ "name": "MessageActions",
401
+ "label": "Message actions",
402
+ "slug": "message-actions",
403
+ "description": "An icon-button row for message-level actions like copy, retry, and feedback.",
404
+ "category": "ai",
405
+ "client": false
406
+ },
407
+ {
408
+ "name": "MessageCard",
409
+ "label": "Message card",
410
+ "slug": "message-card",
411
+ "description": "A structured rich-content card embedded in a chat message, with media, title, body, and actions.",
412
+ "category": "ai",
413
+ "client": false
414
+ },
335
415
  {
336
416
  "name": "Nav",
337
417
  "label": "Navigation",
338
418
  "slug": "navigation",
339
- "description": "Desktop and mobile navigation components including top-level nav bar, collapsed mobile bar, and hamburger slide-out menu.",
419
+ "description": "Desktop top navigation bar with a brand slot, horizontal button group, and optional trailing content.",
340
420
  "category": "navigation",
341
421
  "client": false
342
422
  },
423
+ {
424
+ "name": "NavList",
425
+ "label": "Nav list",
426
+ "slug": "nav-list",
427
+ "description": "Vertical list of navigation links for drawers and menus, with three indent levels and per-row expand toggles.",
428
+ "category": "navigation",
429
+ "client": true
430
+ },
343
431
  {
344
432
  "name": "Pagination",
345
433
  "label": "Pagination",
@@ -364,6 +452,22 @@ declare const _default: {
364
452
  "category": "feedback",
365
453
  "client": false
366
454
  },
455
+ {
456
+ "name": "PromptSuggestions",
457
+ "label": "Prompt suggestions",
458
+ "slug": "prompt-suggestions",
459
+ "description": "A horizontal row of tappable prompt suggestions to start or steer a conversation.",
460
+ "category": "ai",
461
+ "client": false
462
+ },
463
+ {
464
+ "name": "Prose",
465
+ "label": "Prose",
466
+ "slug": "prose",
467
+ "description": "Token-styled typography for rendered markdown and rich agent output.",
468
+ "category": "ai",
469
+ "client": false
470
+ },
367
471
  {
368
472
  "name": "Quote",
369
473
  "label": "Quote",
@@ -428,6 +532,14 @@ declare const _default: {
428
532
  "category": "forms",
429
533
  "client": true
430
534
  },
535
+ {
536
+ "name": "SourceChip",
537
+ "label": "Source chip",
538
+ "slug": "source-chip",
539
+ "description": "A numbered citation pill linking a claim to its source.",
540
+ "category": "ai",
541
+ "client": false
542
+ },
431
543
  {
432
544
  "name": "Spinner",
433
545
  "label": "Spinner",