@dowel-ui/react 0.1.0 → 0.2.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 (195) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +187 -0
  3. package/dist/components/ai-action-ledger/ai-action-ledger.d.ts +77 -0
  4. package/dist/components/ai-action-ledger/ai-action-ledger.d.ts.map +1 -0
  5. package/dist/components/ai-action-ledger/ai-action-ledger.js +224 -0
  6. package/dist/components/ai-action-ledger/ai-action-ledger.js.map +1 -0
  7. package/dist/components/ai-action-ledger/index.d.ts +2 -0
  8. package/dist/components/ai-action-ledger/index.js +2 -0
  9. package/dist/components/ai-action-ledger/meta.js +17 -0
  10. package/dist/components/ai-action-ledger/meta.js.map +1 -0
  11. package/dist/components/ai-agent-status/ai-agent-status.d.ts +1 -1
  12. package/dist/components/ai-inline-completion/ai-inline-completion.d.ts +45 -0
  13. package/dist/components/ai-inline-completion/ai-inline-completion.d.ts.map +1 -0
  14. package/dist/components/ai-inline-completion/ai-inline-completion.js +110 -0
  15. package/dist/components/ai-inline-completion/ai-inline-completion.js.map +1 -0
  16. package/dist/components/ai-inline-completion/index.d.ts +2 -0
  17. package/dist/components/ai-inline-completion/index.js +2 -0
  18. package/dist/components/ai-inline-completion/meta.js +17 -0
  19. package/dist/components/ai-inline-completion/meta.js.map +1 -0
  20. package/dist/components/ai-structured-output/ai-structured-output.d.ts +75 -0
  21. package/dist/components/ai-structured-output/ai-structured-output.d.ts.map +1 -0
  22. package/dist/components/ai-structured-output/ai-structured-output.js +126 -0
  23. package/dist/components/ai-structured-output/ai-structured-output.js.map +1 -0
  24. package/dist/components/ai-structured-output/index.d.ts +2 -0
  25. package/dist/components/ai-structured-output/index.js +2 -0
  26. package/dist/components/ai-structured-output/meta.js +17 -0
  27. package/dist/components/ai-structured-output/meta.js.map +1 -0
  28. package/dist/components/ai-tool/ai-tool.d.ts +1 -1
  29. package/dist/components/alert/alert.d.ts +1 -1
  30. package/dist/components/avatar/avatar.d.ts +1 -1
  31. package/dist/components/badge/badge.d.ts +1 -1
  32. package/dist/components/button/button.d.ts +1 -1
  33. package/dist/components/meter/index.d.ts +2 -0
  34. package/dist/components/meter/index.js +2 -0
  35. package/dist/components/meter/meta.js +17 -0
  36. package/dist/components/meter/meta.js.map +1 -0
  37. package/dist/components/meter/meter.d.ts +69 -0
  38. package/dist/components/meter/meter.d.ts.map +1 -0
  39. package/dist/components/meter/meter.js +144 -0
  40. package/dist/components/meter/meter.js.map +1 -0
  41. package/dist/components/metric-delta/index.d.ts +2 -0
  42. package/dist/components/metric-delta/index.js +2 -0
  43. package/dist/components/metric-delta/meta.js +17 -0
  44. package/dist/components/metric-delta/meta.js.map +1 -0
  45. package/dist/components/metric-delta/metric-delta.d.ts +59 -0
  46. package/dist/components/metric-delta/metric-delta.d.ts.map +1 -0
  47. package/dist/components/metric-delta/metric-delta.js +82 -0
  48. package/dist/components/metric-delta/metric-delta.js.map +1 -0
  49. package/dist/components/progress/progress.d.ts +1 -1
  50. package/dist/components/record-diff/index.d.ts +2 -0
  51. package/dist/components/record-diff/index.js +2 -0
  52. package/dist/components/record-diff/meta.js +17 -0
  53. package/dist/components/record-diff/meta.js.map +1 -0
  54. package/dist/components/record-diff/record-diff.d.ts +56 -0
  55. package/dist/components/record-diff/record-diff.d.ts.map +1 -0
  56. package/dist/components/record-diff/record-diff.js +199 -0
  57. package/dist/components/record-diff/record-diff.js.map +1 -0
  58. package/dist/components/spinner/spinner.d.ts +1 -1
  59. package/dist/components/toast/toast.d.ts +1 -1
  60. package/dist/index.d.ts +13 -1
  61. package/dist/index.js +7 -1
  62. package/dist/registry/components.d.ts.map +1 -1
  63. package/dist/registry/components.js +57 -45
  64. package/dist/registry/components.js.map +1 -1
  65. package/package.json +40 -5
  66. package/src/components/ai-action-ledger/ai-action-ledger.tsx +381 -0
  67. package/src/components/ai-action-ledger/index.ts +14 -0
  68. package/src/components/ai-action-ledger/meta.ts +19 -0
  69. package/src/components/ai-inline-completion/ai-inline-completion.tsx +214 -0
  70. package/src/components/ai-inline-completion/index.ts +1 -0
  71. package/src/components/ai-inline-completion/meta.ts +20 -0
  72. package/src/components/ai-structured-output/ai-structured-output.tsx +244 -0
  73. package/src/components/ai-structured-output/index.ts +10 -0
  74. package/src/components/ai-structured-output/meta.ts +18 -0
  75. package/src/components/meter/index.ts +8 -0
  76. package/src/components/meter/meta.ts +20 -0
  77. package/src/components/meter/meter.tsx +219 -0
  78. package/src/components/metric-delta/index.ts +6 -0
  79. package/src/components/metric-delta/meta.ts +18 -0
  80. package/src/components/metric-delta/metric-delta.tsx +180 -0
  81. package/src/components/record-diff/index.ts +10 -0
  82. package/src/components/record-diff/meta.ts +19 -0
  83. package/src/components/record-diff/record-diff.tsx +341 -0
  84. package/src/index.ts +6 -0
  85. package/src/registry/components.ts +12 -0
  86. package/src/blocks/admin-users/admin-users.stories.tsx +0 -83
  87. package/src/blocks/admin-users/admin-users.test.tsx +0 -159
  88. package/src/blocks/ai-chat/ai-chat.stories.tsx +0 -149
  89. package/src/blocks/ai-chat/ai-chat.test.tsx +0 -166
  90. package/src/blocks/dashboard/dashboard.stories.tsx +0 -106
  91. package/src/blocks/dashboard/dashboard.test.tsx +0 -94
  92. package/src/blocks/forgot-password/forgot-password.stories.tsx +0 -41
  93. package/src/blocks/forgot-password/forgot-password.test.tsx +0 -62
  94. package/src/blocks/login/login.stories.tsx +0 -46
  95. package/src/blocks/login/login.test.tsx +0 -100
  96. package/src/blocks/pricing/pricing.stories.tsx +0 -62
  97. package/src/blocks/pricing/pricing.test.tsx +0 -101
  98. package/src/blocks/settings/settings.stories.tsx +0 -94
  99. package/src/blocks/settings/settings.test.tsx +0 -167
  100. package/src/blocks/signup/signup.stories.tsx +0 -27
  101. package/src/blocks/signup/signup.test.tsx +0 -97
  102. package/src/components/accordion/accordion.stories.tsx +0 -90
  103. package/src/components/accordion/accordion.test.tsx +0 -156
  104. package/src/components/activity-feed/activity-feed.stories.tsx +0 -163
  105. package/src/components/activity-feed/activity-feed.test.tsx +0 -125
  106. package/src/components/ai-agent-status/ai-agent-status.stories.tsx +0 -86
  107. package/src/components/ai-agent-status/ai-agent-status.test.tsx +0 -66
  108. package/src/components/ai-conversation/ai-conversation.stories.tsx +0 -126
  109. package/src/components/ai-conversation/ai-conversation.test.tsx +0 -144
  110. package/src/components/ai-message/ai-message.stories.tsx +0 -106
  111. package/src/components/ai-message/ai-message.test.tsx +0 -160
  112. package/src/components/ai-model-selector/ai-model-selector.stories.tsx +0 -66
  113. package/src/components/ai-model-selector/ai-model-selector.test.tsx +0 -120
  114. package/src/components/ai-prompt-input/ai-prompt-input.stories.tsx +0 -145
  115. package/src/components/ai-prompt-input/ai-prompt-input.test.tsx +0 -273
  116. package/src/components/ai-reasoning/ai-reasoning.stories.tsx +0 -60
  117. package/src/components/ai-reasoning/ai-reasoning.test.tsx +0 -95
  118. package/src/components/ai-response/ai-response.stories.tsx +0 -75
  119. package/src/components/ai-response/ai-response.test.tsx +0 -96
  120. package/src/components/ai-sources/ai-sources.stories.tsx +0 -93
  121. package/src/components/ai-sources/ai-sources.test.tsx +0 -102
  122. package/src/components/ai-token-usage/ai-token-usage.stories.tsx +0 -59
  123. package/src/components/ai-token-usage/ai-token-usage.test.tsx +0 -83
  124. package/src/components/ai-tool/ai-tool.stories.tsx +0 -96
  125. package/src/components/ai-tool/ai-tool.test.tsx +0 -137
  126. package/src/components/alert/alert.stories.tsx +0 -101
  127. package/src/components/alert/alert.test.tsx +0 -94
  128. package/src/components/avatar/avatar.stories.tsx +0 -58
  129. package/src/components/avatar/avatar.test.tsx +0 -64
  130. package/src/components/badge/badge.stories.tsx +0 -68
  131. package/src/components/badge/badge.test.tsx +0 -61
  132. package/src/components/button/button.stories.tsx +0 -128
  133. package/src/components/button/button.test.tsx +0 -224
  134. package/src/components/calendar/calendar.stories.tsx +0 -105
  135. package/src/components/calendar/calendar.test.tsx +0 -255
  136. package/src/components/card/card.stories.tsx +0 -61
  137. package/src/components/card/card.test.tsx +0 -66
  138. package/src/components/checkbox/checkbox.stories.tsx +0 -124
  139. package/src/components/checkbox/checkbox.test.tsx +0 -121
  140. package/src/components/code-block/code-block.stories.tsx +0 -62
  141. package/src/components/code-block/code-block.test.tsx +0 -139
  142. package/src/components/combobox/combobox.stories.tsx +0 -171
  143. package/src/components/combobox/combobox.test.tsx +0 -429
  144. package/src/components/command/command.stories.tsx +0 -152
  145. package/src/components/command/command.test.tsx +0 -380
  146. package/src/components/data-table/data-table.stories.tsx +0 -151
  147. package/src/components/data-table/data-table.test.tsx +0 -288
  148. package/src/components/date-picker/date-picker.stories.tsx +0 -103
  149. package/src/components/date-picker/date-picker.test.tsx +0 -205
  150. package/src/components/dialog/dialog.stories.tsx +0 -140
  151. package/src/components/dialog/dialog.test.tsx +0 -186
  152. package/src/components/drawer/drawer.stories.tsx +0 -111
  153. package/src/components/drawer/drawer.test.tsx +0 -187
  154. package/src/components/dropdown-menu/dropdown-menu.stories.tsx +0 -128
  155. package/src/components/dropdown-menu/dropdown-menu.test.tsx +0 -321
  156. package/src/components/empty-state/empty-state.stories.tsx +0 -70
  157. package/src/components/empty-state/empty-state.test.tsx +0 -97
  158. package/src/components/form/form.stories.tsx +0 -144
  159. package/src/components/form/form.test.tsx +0 -203
  160. package/src/components/input/input.stories.tsx +0 -84
  161. package/src/components/input/input.test.tsx +0 -108
  162. package/src/components/label/label.stories.tsx +0 -51
  163. package/src/components/label/label.test.tsx +0 -55
  164. package/src/components/pagination/pagination.stories.tsx +0 -129
  165. package/src/components/pagination/pagination.test.tsx +0 -119
  166. package/src/components/popover/popover.stories.tsx +0 -84
  167. package/src/components/popover/popover.test.tsx +0 -163
  168. package/src/components/progress/progress.stories.tsx +0 -90
  169. package/src/components/progress/progress.test.tsx +0 -78
  170. package/src/components/radio-group/radio-group.stories.tsx +0 -102
  171. package/src/components/radio-group/radio-group.test.tsx +0 -152
  172. package/src/components/select/select.stories.tsx +0 -137
  173. package/src/components/select/select.test.tsx +0 -209
  174. package/src/components/separator/separator.stories.tsx +0 -42
  175. package/src/components/separator/separator.test.tsx +0 -46
  176. package/src/components/sheet/sheet.stories.tsx +0 -107
  177. package/src/components/sheet/sheet.test.tsx +0 -152
  178. package/src/components/skeleton/skeleton.stories.tsx +0 -46
  179. package/src/components/skeleton/skeleton.test.tsx +0 -57
  180. package/src/components/slider/slider.stories.tsx +0 -87
  181. package/src/components/slider/slider.test.tsx +0 -148
  182. package/src/components/spinner/spinner.stories.tsx +0 -47
  183. package/src/components/spinner/spinner.test.tsx +0 -41
  184. package/src/components/switch/switch.stories.tsx +0 -70
  185. package/src/components/switch/switch.test.tsx +0 -101
  186. package/src/components/table/table.stories.tsx +0 -131
  187. package/src/components/table/table.test.tsx +0 -153
  188. package/src/components/tabs/tabs.stories.tsx +0 -139
  189. package/src/components/tabs/tabs.test.tsx +0 -148
  190. package/src/components/toast/toast.stories.tsx +0 -167
  191. package/src/components/toast/toast.test.tsx +0 -306
  192. package/src/components/tooltip/tooltip.stories.tsx +0 -89
  193. package/src/components/tooltip/tooltip.test.tsx +0 -120
  194. package/src/lib/utils.test.ts +0 -32
  195. package/src/registry/meta.test.ts +0 -234
@@ -0,0 +1,199 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.js";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import { createContext, useContext, useMemo, useState } from "react";
5
+ //#region src/components/record-diff/record-diff.tsx
6
+ /** Values that read as absent, so "" → null is not reported as a change. */
7
+ function isEmpty(value) {
8
+ return value === null || value === void 0 || value === "";
9
+ }
10
+ function classify(before, after) {
11
+ const hadBefore = !isEmpty(before);
12
+ const hasAfter = !isEmpty(after);
13
+ if (!hadBefore && hasAfter) return "added";
14
+ if (hadBefore && !hasAfter) return "removed";
15
+ if (!hadBefore && !hasAfter) return "unchanged";
16
+ return stableStringify(before) === stableStringify(after) ? "unchanged" : "changed";
17
+ }
18
+ function stableStringify(value) {
19
+ if (value === null || typeof value !== "object") return JSON.stringify(value) ?? "";
20
+ if (Array.isArray(value)) return `[${value.map(stableStringify).join(",")}]`;
21
+ return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${k}:${stableStringify(v)}`).join(",")}}`;
22
+ }
23
+ function defaultFormatValue(value) {
24
+ if (value === null || value === void 0) return "—";
25
+ if (value === "") return "empty";
26
+ if (typeof value === "string") return value;
27
+ if (typeof value === "boolean") return value ? "yes" : "no";
28
+ if (typeof value === "number" || typeof value === "bigint") return String(value);
29
+ if (Array.isArray(value)) return value.length === 0 ? "none" : value.map(defaultFormatValue).join(", ");
30
+ if (typeof value === "object") return JSON.stringify(value);
31
+ return `[${typeof value}]`;
32
+ }
33
+ /** Keys whose values must never be rendered, however the record was built. */
34
+ const DEFAULT_REDACT = /password|secret|token|api[-_]?key|authorization|credential/i;
35
+ const RecordDiffContext = createContext(null);
36
+ function useRecordDiffContext(component) {
37
+ const context = useContext(RecordDiffContext);
38
+ if (!context) throw new Error(`${component} must be rendered inside <RecordDiff>.`);
39
+ return context;
40
+ }
41
+ /** "billingEmail" and "billing_email" both read as "Billing email". */
42
+ function humanise(key) {
43
+ const spaced = key.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").trim();
44
+ return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();
45
+ }
46
+ function diffRecords(before, after, options = {}) {
47
+ const { labels = {}, redact = DEFAULT_REDACT, fields } = options;
48
+ return (fields ?? [.../* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)])]).map((key) => ({
49
+ key,
50
+ label: labels[key] ?? humanise(key),
51
+ change: classify(before[key], after[key]),
52
+ before: before[key],
53
+ after: after[key],
54
+ redacted: redact.test(key)
55
+ }));
56
+ }
57
+ const CHANGE_STYLES = {
58
+ added: "text-success",
59
+ removed: "text-destructive",
60
+ changed: "text-foreground",
61
+ unchanged: "text-muted-foreground"
62
+ };
63
+ function RecordDiff({ className, before, after, labels, redact = DEFAULT_REDACT, fields: fieldKeys, collapseUnchanged = true, formatValue = defaultFormatValue, children, ...props }) {
64
+ const fields = useMemo(() => diffRecords(before, after, {
65
+ labels,
66
+ redact,
67
+ fields: fieldKeys
68
+ }), [
69
+ before,
70
+ after,
71
+ labels,
72
+ redact,
73
+ fieldKeys
74
+ ]);
75
+ const changedCount = fields.filter((field) => field.change !== "unchanged").length;
76
+ const context = useMemo(() => ({
77
+ fields,
78
+ changedCount,
79
+ formatValue
80
+ }), [
81
+ fields,
82
+ changedCount,
83
+ formatValue
84
+ ]);
85
+ return /* @__PURE__ */ jsx(RecordDiffContext.Provider, {
86
+ value: context,
87
+ children: /* @__PURE__ */ jsx("div", {
88
+ "data-slot": "record-diff",
89
+ "data-changed": changedCount,
90
+ className: cn("flex flex-col gap-2", className),
91
+ ...props,
92
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(RecordDiffSummary, {}), /* @__PURE__ */ jsx(RecordDiffTable, { collapseUnchanged })] })
93
+ })
94
+ });
95
+ }
96
+ /** "3 fields changed" — the thing a reviewer scanning a log needs first. */
97
+ function RecordDiffSummary({ className, ...props }) {
98
+ const { changedCount, fields } = useRecordDiffContext("RecordDiffSummary");
99
+ return /* @__PURE__ */ jsx("p", {
100
+ "data-slot": "record-diff-summary",
101
+ className: cn("text-xs text-muted-foreground", className),
102
+ ...props,
103
+ children: changedCount === 0 ? "No fields changed" : `${String(changedCount)} of ${String(fields.length)} field${fields.length === 1 ? "" : "s"} changed`
104
+ });
105
+ }
106
+ function RecordDiffTable({ className, collapseUnchanged = true, ...props }) {
107
+ const { fields, formatValue, changedCount } = useRecordDiffContext("RecordDiffTable");
108
+ const [showUnchanged, setShowUnchanged] = useState(!collapseUnchanged);
109
+ const unchangedCount = fields.length - changedCount;
110
+ const visible = showUnchanged ? fields : fields.filter((field) => field.change !== "unchanged");
111
+ return /* @__PURE__ */ jsxs("div", {
112
+ className: "flex flex-col gap-2",
113
+ children: [/* @__PURE__ */ jsx("div", {
114
+ className: "overflow-x-auto",
115
+ children: /* @__PURE__ */ jsxs("table", {
116
+ "data-slot": "record-diff-table",
117
+ className: cn("w-full border-collapse text-sm", className),
118
+ ...props,
119
+ children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", {
120
+ className: "border-b border-border",
121
+ children: [
122
+ /* @__PURE__ */ jsx("th", {
123
+ scope: "col",
124
+ className: "px-3 py-2 text-left text-xs font-medium text-muted-foreground",
125
+ children: "Field"
126
+ }),
127
+ /* @__PURE__ */ jsx("th", {
128
+ scope: "col",
129
+ className: "px-3 py-2 text-left text-xs font-medium text-muted-foreground",
130
+ children: "Before"
131
+ }),
132
+ /* @__PURE__ */ jsx("th", {
133
+ scope: "col",
134
+ className: "px-3 py-2 text-left text-xs font-medium text-muted-foreground",
135
+ children: "After"
136
+ })
137
+ ]
138
+ }) }), /* @__PURE__ */ jsx("tbody", { children: visible.map((field) => /* @__PURE__ */ jsxs("tr", {
139
+ "data-slot": "record-diff-row",
140
+ "data-change": field.change,
141
+ className: "border-b border-border last:border-0",
142
+ children: [
143
+ /* @__PURE__ */ jsxs("th", {
144
+ scope: "row",
145
+ className: "px-3 py-2 text-left align-top font-medium whitespace-nowrap",
146
+ children: [field.label, /* @__PURE__ */ jsx("span", {
147
+ className: "sr-only",
148
+ children: `, ${field.change}`
149
+ })]
150
+ }),
151
+ /* @__PURE__ */ jsx("td", {
152
+ className: "px-3 py-2 align-top text-muted-foreground",
153
+ children: field.redacted ? /* @__PURE__ */ jsx(RedactedValue, {}) : field.change === "added" ? /* @__PURE__ */ jsx("span", {
154
+ className: "text-muted-foreground",
155
+ children: "—"
156
+ }) : /* @__PURE__ */ jsx("span", {
157
+ className: "line-through decoration-muted-foreground/50",
158
+ children: formatValue(field.before, field.key)
159
+ })
160
+ }),
161
+ /* @__PURE__ */ jsx("td", {
162
+ className: cn("px-3 py-2 align-top", CHANGE_STYLES[field.change]),
163
+ children: field.redacted ? /* @__PURE__ */ jsx(RedactedValue, {}) : field.change === "removed" ? /* @__PURE__ */ jsx("span", {
164
+ className: "text-muted-foreground",
165
+ children: "—"
166
+ }) : formatValue(field.after, field.key)
167
+ })
168
+ ]
169
+ }, field.key)) })]
170
+ })
171
+ }), collapseUnchanged && unchangedCount > 0 ? /* @__PURE__ */ jsx("button", {
172
+ type: "button",
173
+ "data-slot": "record-diff-toggle",
174
+ "aria-expanded": showUnchanged,
175
+ onClick: () => {
176
+ setShowUnchanged((shown) => !shown);
177
+ },
178
+ className: cn("self-start rounded-md px-1.5 py-0.5 text-xs text-muted-foreground", "transition-colors hover:text-foreground", "outline-none focus-visible:ring-2 focus-visible:ring-ring/55"),
179
+ children: showUnchanged ? `Hide ${String(unchangedCount)} unchanged` : `Show ${String(unchangedCount)} unchanged`
180
+ }) : null]
181
+ });
182
+ }
183
+ /**
184
+ * A value that is never rendered.
185
+ *
186
+ * Redaction happens before formatting, so a secret is not passed to a formatter
187
+ * that might log or transform it — the value simply does not reach the DOM.
188
+ */
189
+ function RedactedValue() {
190
+ return /* @__PURE__ */ jsx("span", {
191
+ "data-slot": "record-diff-redacted",
192
+ className: "text-muted-foreground italic",
193
+ children: "redacted"
194
+ });
195
+ }
196
+ //#endregion
197
+ export { RecordDiff, RecordDiffSummary, RecordDiffTable, diffRecords };
198
+
199
+ //# sourceMappingURL=record-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-diff.js","names":[],"sources":["../../../src/components/record-diff/record-diff.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n useContext,\n useMemo,\n useState,\n type ComponentPropsWithRef,\n} from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\n/**\n * What changed about a record, field by field.\n *\n * Every diff package on npm compares lines of text. That is the wrong shape for\n * an audit entry, a settings revision or a config history, where the change is\n * \"role went from viewer to admin\" and rendering it as two lines of JSON makes\n * the reader do the comparison themselves.\n *\n * Scope is deliberately flat records. Nested objects and arrays are formatted as\n * values rather than recursed into, because a recursive differ is a different\n * and much larger component, and pretending otherwise would produce a shallow\n * one that quietly lies about deep changes. `formatValue` is the escape hatch.\n *\n * Redaction is by key pattern and applied before formatting, so a secret is\n * never handed to a formatter that might log it.\n */\n\nexport type FieldChange = \"added\" | \"removed\" | \"changed\" | \"unchanged\";\n\nexport interface RecordField {\n key: string;\n label: string;\n change: FieldChange;\n before: unknown;\n after: unknown;\n redacted: boolean;\n}\n\n/** Values that read as absent, so \"\" → null is not reported as a change. */\nfunction isEmpty(value: unknown): boolean {\n return value === null || value === undefined || value === \"\";\n}\n\nfunction classify(before: unknown, after: unknown): FieldChange {\n const hadBefore = !isEmpty(before);\n const hasAfter = !isEmpty(after);\n\n if (!hadBefore && hasAfter) return \"added\";\n if (hadBefore && !hasAfter) return \"removed\";\n // Both absent. Falling through would compare \"\" against null, which\n // serialise differently and would report a change that did not happen.\n if (!hadBefore && !hasAfter) return \"unchanged\";\n // Structural comparison, so {a:1} and {a:1} are equal. Key order differences\n // would report a false change, so keys are sorted before comparing.\n return stableStringify(before) === stableStringify(after) ? \"unchanged\" : \"changed\";\n}\n\nfunction stableStringify(value: unknown): string {\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"\";\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(\",\")}]`;\n const entries = Object.entries(value as Record<string, unknown>).sort(([a], [b]) =>\n a.localeCompare(b),\n );\n return `{${entries.map(([k, v]) => `${k}:${stableStringify(v)}`).join(\",\")}}`;\n}\n\nfunction defaultFormatValue(value: unknown): string {\n if (value === null || value === undefined) return \"—\";\n if (value === \"\") return \"empty\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"boolean\") return value ? \"yes\" : \"no\";\n if (typeof value === \"number\" || typeof value === \"bigint\") return String(value);\n if (Array.isArray(value)) {\n return value.length === 0 ? \"none\" : value.map(defaultFormatValue).join(\", \");\n }\n if (typeof value === \"object\") return JSON.stringify(value);\n // Symbols and functions have no sensible representation as a field value, and\n // String() would yield \"[object Object]\" or a function body. Say what it is.\n return `[${typeof value}]`;\n}\n\n/** Keys whose values must never be rendered, however the record was built. */\nconst DEFAULT_REDACT = /password|secret|token|api[-_]?key|authorization|credential/i;\n\nexport interface RecordDiffProps extends Omit<ComponentPropsWithRef<\"div\">, \"children\"> {\n before: Record<string, unknown>;\n after: Record<string, unknown>;\n /** Overrides the humanised key. */\n labels?: Record<string, string>;\n /** Keys to render as redacted. Defaults to common secret-shaped names. */\n redact?: RegExp;\n /** Only these keys, in this order. Anything else is ignored. */\n fields?: string[];\n /** Hides unchanged fields behind a toggle. */\n collapseUnchanged?: boolean;\n formatValue?: (value: unknown, key: string) => string;\n children?: React.ReactNode;\n}\n\ninterface RecordDiffContextValue {\n fields: RecordField[];\n changedCount: number;\n formatValue: (value: unknown, key: string) => string;\n}\n\nconst RecordDiffContext = createContext<RecordDiffContextValue | null>(null);\n\nfunction useRecordDiffContext(component: string): RecordDiffContextValue {\n const context = useContext(RecordDiffContext);\n if (!context) {\n throw new Error(`${component} must be rendered inside <RecordDiff>.`);\n }\n return context;\n}\n\n/** \"billingEmail\" and \"billing_email\" both read as \"Billing email\". */\nfunction humanise(key: string): string {\n const spaced = key\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .trim();\n return spaced.charAt(0).toUpperCase() + spaced.slice(1).toLowerCase();\n}\n\nexport function diffRecords(\n before: Record<string, unknown>,\n after: Record<string, unknown>,\n options: { labels?: Record<string, string>; redact?: RegExp; fields?: string[] } = {},\n): RecordField[] {\n const { labels = {}, redact = DEFAULT_REDACT, fields } = options;\n\n // The union of both sides, so a removed key is still reported. Iterating only\n // `after` is how removals go missing from audit logs.\n const keys = fields ?? [...new Set([...Object.keys(before), ...Object.keys(after)])];\n\n return keys.map((key) => ({\n key,\n label: labels[key] ?? humanise(key),\n change: classify(before[key], after[key]),\n before: before[key],\n after: after[key],\n redacted: redact.test(key),\n }));\n}\n\nconst CHANGE_STYLES: Record<FieldChange, string> = {\n added: \"text-success\",\n removed: \"text-destructive\",\n changed: \"text-foreground\",\n unchanged: \"text-muted-foreground\",\n};\n\nexport function RecordDiff({\n className,\n before,\n after,\n labels,\n redact = DEFAULT_REDACT,\n fields: fieldKeys,\n collapseUnchanged = true,\n formatValue = defaultFormatValue,\n children,\n ...props\n}: RecordDiffProps) {\n const fields = useMemo(\n () => diffRecords(before, after, { labels, redact, fields: fieldKeys }),\n [before, after, labels, redact, fieldKeys],\n );\n\n const changedCount = fields.filter((field) => field.change !== \"unchanged\").length;\n\n const context = useMemo<RecordDiffContextValue>(\n () => ({ fields, changedCount, formatValue }),\n [fields, changedCount, formatValue],\n );\n\n return (\n <RecordDiffContext.Provider value={context}>\n <div\n data-slot=\"record-diff\"\n data-changed={changedCount}\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {children ?? (\n <>\n <RecordDiffSummary />\n <RecordDiffTable collapseUnchanged={collapseUnchanged} />\n </>\n )}\n </div>\n </RecordDiffContext.Provider>\n );\n}\n\n/** \"3 fields changed\" — the thing a reviewer scanning a log needs first. */\nexport function RecordDiffSummary({ className, ...props }: ComponentPropsWithRef<\"p\">) {\n const { changedCount, fields } = useRecordDiffContext(\"RecordDiffSummary\");\n\n return (\n <p\n data-slot=\"record-diff-summary\"\n className={cn(\"text-xs text-muted-foreground\", className)}\n {...props}\n >\n {changedCount === 0\n ? \"No fields changed\"\n : `${String(changedCount)} of ${String(fields.length)} field${fields.length === 1 ? \"\" : \"s\"} changed`}\n </p>\n );\n}\n\nexport interface RecordDiffTableProps extends ComponentPropsWithRef<\"table\"> {\n collapseUnchanged?: boolean;\n}\n\nexport function RecordDiffTable({\n className,\n collapseUnchanged = true,\n ...props\n}: RecordDiffTableProps) {\n const { fields, formatValue, changedCount } = useRecordDiffContext(\"RecordDiffTable\");\n const [showUnchanged, setShowUnchanged] = useState(!collapseUnchanged);\n\n const unchangedCount = fields.length - changedCount;\n const visible = showUnchanged\n ? fields\n : fields.filter((field) => field.change !== \"unchanged\");\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"overflow-x-auto\">\n <table\n data-slot=\"record-diff-table\"\n className={cn(\"w-full border-collapse text-sm\", className)}\n {...props}\n >\n <thead>\n <tr className=\"border-b border-border\">\n <th\n scope=\"col\"\n className=\"px-3 py-2 text-left text-xs font-medium text-muted-foreground\"\n >\n Field\n </th>\n <th\n scope=\"col\"\n className=\"px-3 py-2 text-left text-xs font-medium text-muted-foreground\"\n >\n Before\n </th>\n <th\n scope=\"col\"\n className=\"px-3 py-2 text-left text-xs font-medium text-muted-foreground\"\n >\n After\n </th>\n </tr>\n </thead>\n <tbody>\n {visible.map((field) => (\n <tr\n key={field.key}\n data-slot=\"record-diff-row\"\n data-change={field.change}\n className=\"border-b border-border last:border-0\"\n >\n {/* scope=\"row\" so each value is announced with its field name\n rather than as a loose cell in a wall of table. */}\n <th\n scope=\"row\"\n className=\"px-3 py-2 text-left align-top font-medium whitespace-nowrap\"\n >\n {field.label}\n {/* The change kind must not be carried by row colour alone. */}\n <span className=\"sr-only\">{`, ${field.change}`}</span>\n </th>\n <td className=\"px-3 py-2 align-top text-muted-foreground\">\n {field.redacted ? (\n <RedactedValue />\n ) : field.change === \"added\" ? (\n <span className=\"text-muted-foreground\">—</span>\n ) : (\n <span className=\"line-through decoration-muted-foreground/50\">\n {formatValue(field.before, field.key)}\n </span>\n )}\n </td>\n <td className={cn(\"px-3 py-2 align-top\", CHANGE_STYLES[field.change])}>\n {field.redacted ? (\n <RedactedValue />\n ) : field.change === \"removed\" ? (\n <span className=\"text-muted-foreground\">—</span>\n ) : (\n formatValue(field.after, field.key)\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n {collapseUnchanged && unchangedCount > 0 ? (\n <button\n type=\"button\"\n data-slot=\"record-diff-toggle\"\n aria-expanded={showUnchanged}\n onClick={() => {\n setShowUnchanged((shown) => !shown);\n }}\n className={cn(\n \"self-start rounded-md px-1.5 py-0.5 text-xs text-muted-foreground\",\n \"transition-colors hover:text-foreground\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-ring/55\",\n )}\n >\n {showUnchanged\n ? `Hide ${String(unchangedCount)} unchanged`\n : `Show ${String(unchangedCount)} unchanged`}\n </button>\n ) : null}\n </div>\n );\n}\n\n/**\n * A value that is never rendered.\n *\n * Redaction happens before formatting, so a secret is not passed to a formatter\n * that might log or transform it — the value simply does not reach the DOM.\n */\nfunction RedactedValue() {\n return (\n <span data-slot=\"record-diff-redacted\" className=\"text-muted-foreground italic\">\n redacted\n </span>\n );\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { VariantProps } from "class-variance-authority";
2
2
  import { ComponentPropsWithRef } from "react";
3
3
  //#region src/components/spinner/spinner.d.ts
4
4
  declare const spinnerVariants: (props?: ({
5
- size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xs" | "xl" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  interface SpinnerProps extends Omit<ComponentPropsWithRef<"svg">, "children">, VariantProps<typeof spinnerVariants> {
8
8
  /**
@@ -12,7 +12,7 @@ import { ComponentPropsWithRef } from "react";
12
12
  * toast list from anywhere on the page.
13
13
  */
14
14
  declare const toastVariants: (props?: ({
15
- variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
15
+ variant?: "destructive" | "default" | "success" | "warning" | "info" | null | undefined;
16
16
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
17
  declare const ToastProvider: import("react").FC<Toast.ToastProviderProps>;
18
18
  interface ToastProps extends ComponentPropsWithRef<typeof Toast.Root>, VariantProps<typeof toastVariants> {}
package/dist/index.d.ts CHANGED
@@ -2,10 +2,14 @@ import { Accordion, AccordionContent, AccordionContentProps, AccordionItem, Acco
2
2
  import "./components/accordion/index.js";
3
3
  import { ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, ActivityIndicatorProps, ActivityItem, ActivityItemProps, ActivityTime, ActivityTimeProps, ActivityTitle } from "./components/activity-feed/activity-feed.js";
4
4
  import "./components/activity-feed/index.js";
5
+ import { ActionLedger, ActionLedgerEntry, ActionLedgerEntryProps, ActionLedgerList, ActionLedgerPayload, ActionLedgerProps, ActionLedgerSelectionSummary, ActionLedgerToolbar, ActionStatus, LedgerAction, Reversibility, ledgerEntryVariants } from "./components/ai-action-ledger/ai-action-ledger.js";
6
+ import "./components/ai-action-ledger/index.js";
5
7
  import { AgentState, AgentStatus, AgentStatusProps, agentStatusVariants } from "./components/ai-agent-status/ai-agent-status.js";
6
8
  import "./components/ai-agent-status/index.js";
7
9
  import { Conversation, ConversationMessages, ConversationProps, ConversationScrollButton, ConversationScrollButtonProps, ConversationStatus, ConversationStatusProps } from "./components/ai-conversation/ai-conversation.js";
8
10
  import "./components/ai-conversation/index.js";
11
+ import { InlineCompletion, InlineCompletionProps } from "./components/ai-inline-completion/ai-inline-completion.js";
12
+ import "./components/ai-inline-completion/index.js";
9
13
  import { Message, MessageActions, MessageAvatar, MessageAvatarProps, MessageBody, MessageBodyProps, MessageFooter, MessageProps, MessageRole, messageBodyVariants, messageVariants } from "./components/ai-message/ai-message.js";
10
14
  import "./components/ai-message/index.js";
11
15
  import { Select, SelectContent, SelectContentProps, SelectGroup, SelectItem, SelectItemProps, SelectLabel, SelectSeparator, SelectTrigger, SelectTriggerProps, SelectValue, selectTriggerVariants } from "./components/select/select.js";
@@ -20,6 +24,8 @@ import { Response, ResponseCaret, ResponseProps, ThinkingIndicator, ThinkingIndi
20
24
  import "./components/ai-response/index.js";
21
25
  import { InlineCitation, InlineCitationProps, Source, SourceProps, Sources, SourcesContent, SourcesProps, SourcesTrigger, SourcesTriggerProps } from "./components/ai-sources/ai-sources.js";
22
26
  import "./components/ai-sources/index.js";
27
+ import { FieldState, OutputField, StructuredConfidence, StructuredField, StructuredFieldError, StructuredFieldProps, StructuredOutput, StructuredOutputProps } from "./components/ai-structured-output/ai-structured-output.js";
28
+ import "./components/ai-structured-output/index.js";
23
29
  import { TokenCount, TokenCountProps, TokenUsage, TokenUsageProps } from "./components/ai-token-usage/ai-token-usage.js";
24
30
  import "./components/ai-token-usage/index.js";
25
31
  import { Tool, ToolContent, ToolHeader, ToolHeaderProps, ToolPayload, ToolPayloadProps, ToolProps, ToolSection, ToolSectionProps, ToolStatus, toolVariants } from "./components/ai-tool/ai-tool.js";
@@ -62,6 +68,10 @@ import { Input, InputProps, inputVariants } from "./components/input/input.js";
62
68
  import "./components/input/index.js";
63
69
  import { Label, LabelProps } from "./components/label/label.js";
64
70
  import "./components/label/index.js";
71
+ import { Meter, MeterLegend, MeterProps, MeterSegment, MeterTone, MeterValue } from "./components/meter/meter.js";
72
+ import "./components/meter/index.js";
73
+ import { MetricDelta, MetricDeltaProps, MetricPolarity, deltaVariants } from "./components/metric-delta/metric-delta.js";
74
+ import "./components/metric-delta/index.js";
65
75
  import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationLinkProps, PaginationNext, PaginationPrevious } from "./components/pagination/pagination.js";
66
76
  import "./components/pagination/index.js";
67
77
  import { Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverContentProps, PopoverTrigger } from "./components/popover/popover.js";
@@ -70,6 +80,8 @@ import { Progress, ProgressProps, progressVariants } from "./components/progress
70
80
  import "./components/progress/index.js";
71
81
  import { RadioGroup, RadioGroupItem, RadioGroupItemProps, RadioGroupProps } from "./components/radio-group/radio-group.js";
72
82
  import "./components/radio-group/index.js";
83
+ import { FieldChange, RecordDiff, RecordDiffProps, RecordDiffSummary, RecordDiffTable, RecordDiffTableProps, RecordField, diffRecords } from "./components/record-diff/record-diff.js";
84
+ import "./components/record-diff/index.js";
73
85
  import { Separator, SeparatorProps } from "./components/separator/separator.js";
74
86
  import "./components/separator/index.js";
75
87
  import { Sheet, SheetClose, SheetContent, SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, sheetVariants } from "./components/sheet/sheet.js";
@@ -94,4 +106,4 @@ import "./components/tooltip/index.js";
94
106
  import { cn } from "./lib/utils.js";
95
107
  import { disabledStyles, focusRing, focusRingInset, iconSlot, invalidStyles } from "./lib/styles.js";
96
108
  import { COMPONENT_CATEGORIES, COMPONENT_STATUSES, ComponentCategory, ComponentMeta, ComponentStatus, defineMeta } from "./registry/schema.js";
97
- export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, AccordionTrigger, type AccordionTriggerProps, ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, type ActivityIndicatorProps, ActivityItem, type ActivityItemProps, ActivityTime, type ActivityTimeProps, ActivityTitle, type AgentState, AgentStatus, type AgentStatusProps, Alert, AlertDescription, type AlertLive, type AlertProps, AlertTitle, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, COMPONENT_CATEGORIES, COMPONENT_STATUSES, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Combobox, ComboboxContent, type ComboboxContentProps, ComboboxEmpty, ComboboxInput, type ComboboxInputProps, ComboboxItem, type ComboboxItemProps, ComboboxList, type ComboboxProps, ComboboxTrigger, type ComboboxTriggerProps, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, type CommandInputProps, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, ComponentCategory, ComponentMeta, ComponentStatus, Conversation, ConversationMessages, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, ConversationStatus, type ConversationStatusProps, CopyButton, type CopyButtonProps, DEFAULT_TOAST_DURATION, DataTable, DataTableColumnHeader, type DataTableColumnHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableViewOptions, type DataTableViewOptionsProps, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, DialogClose, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, DialogTitle, type DialogTitleProps, DialogTrigger, Drawer, DrawerBody, DrawerCancel, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, type DrawerProps, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, type EmptyStateProps, EmptyStateTitle, Form, FormControl, type FormControlProps, FormDescription, FormField, type FormFieldProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, type HideableTable, InlineCitation, type InlineCitationProps, Input, type InputProps, Label, type LabelProps, Message, MessageActions, MessageAvatar, type MessageAvatarProps, MessageBody, type MessageBodyProps, MessageFooter, type MessageProps, type MessageRole, type ModelOption, ModelSelector, type ModelSelectorProps, type PaginatedTable, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, type PopoverContentProps, PopoverTrigger, Progress, type ProgressProps, PromptInput, PromptInputCounter, type PromptInputCounterProps, type PromptInputProps, PromptInputSubmit, type PromptInputSubmitProps, PromptInputTextarea, type PromptInputTextareaProps, PromptInputToolbar, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, Reasoning, ReasoningContent, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, Response, ResponseCaret, type ResponseProps, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type SeparatorProps, Sheet, SheetClose, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SliderProps, type SortableColumn, Source, type SourceProps, Sources, SourcesContent, type SourcesProps, SourcesTrigger, type SourcesTriggerProps, Spinner, type SpinnerProps, Switch, type SwitchProps, TOAST_LIMIT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, TabsTrigger, type TabsTriggerProps, ThinkingIndicator, type ThinkingIndicatorProps, Toast, ToastAction, type ToastAction$1 as ToastActionOptions, ToastClose, ToastDescription, type ToastOptions, type ToastPosition, type ToastPromiseMessages, type ToastProps, ToastProvider, type ToastRecord, ToastTitle, type ToastVariant, Toaster, type ToasterProps, TokenCount, type TokenCountProps, TokenUsage, type TokenUsageProps, Tool, ToolContent, ToolHeader, type ToolHeaderProps, ToolPayload, type ToolPayloadProps, type ToolProps, ToolSection, type ToolSectionProps, type ToolStatus, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, agentStatusVariants, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, defaultComboboxFilter, defaultCommandFilter, defineMeta, disabledStyles, emptyStateVariants, focusRing, focusRingInset, iconSlot, inputVariants, invalidStyles, messageBodyVariants, messageVariants, progressVariants, selectTriggerVariants, sheetVariants, spinnerVariants, tabsListVariants, tabsTriggerVariants, toast, toastVariants, toolVariants, useToasts };
109
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, AccordionTrigger, type AccordionTriggerProps, ActionLedger, ActionLedgerEntry, type ActionLedgerEntryProps, ActionLedgerList, ActionLedgerPayload, type ActionLedgerProps, ActionLedgerSelectionSummary, ActionLedgerToolbar, type ActionStatus, ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, type ActivityIndicatorProps, ActivityItem, type ActivityItemProps, ActivityTime, type ActivityTimeProps, ActivityTitle, type AgentState, AgentStatus, type AgentStatusProps, Alert, AlertDescription, type AlertLive, type AlertProps, AlertTitle, Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps, Badge, type BadgeProps, Button, type ButtonProps, COMPONENT_CATEGORIES, COMPONENT_STATUSES, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Combobox, ComboboxContent, type ComboboxContentProps, ComboboxEmpty, ComboboxInput, type ComboboxInputProps, ComboboxItem, type ComboboxItemProps, ComboboxList, type ComboboxProps, ComboboxTrigger, type ComboboxTriggerProps, Command, CommandDialog, type CommandDialogProps, CommandEmpty, CommandGroup, type CommandGroupProps, CommandInput, type CommandInputProps, CommandItem, type CommandItemProps, CommandList, type CommandProps, CommandSeparator, CommandShortcut, ComponentCategory, ComponentMeta, ComponentStatus, Conversation, ConversationMessages, type ConversationProps, ConversationScrollButton, type ConversationScrollButtonProps, ConversationStatus, type ConversationStatusProps, CopyButton, type CopyButtonProps, DEFAULT_TOAST_DURATION, DataTable, DataTableColumnHeader, type DataTableColumnHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableViewOptions, type DataTableViewOptionsProps, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, DialogClose, DialogContent, type DialogContentProps, DialogDescription, type DialogDescriptionProps, DialogFooter, DialogHeader, DialogOverlay, type DialogOverlayProps, DialogPortal, DialogTitle, type DialogTitleProps, DialogTrigger, Drawer, DrawerBody, DrawerCancel, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, type DrawerProps, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, type DropdownMenuContentProps, DropdownMenuGroup, DropdownMenuItem, type DropdownMenuItemProps, DropdownMenuLabel, type DropdownMenuLabelProps, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, type DropdownMenuSubTriggerProps, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, type EmptyStateProps, EmptyStateTitle, type FieldChange, type FieldState, Form, FormControl, type FormControlProps, FormDescription, FormField, type FormFieldProps, FormLabel, type FormLabelProps, FormMessage, type FormMessageProps, type FormProps, type HideableTable, InlineCitation, type InlineCitationProps, InlineCompletion, type InlineCompletionProps, Input, type InputProps, Label, type LabelProps, type LedgerAction, Message, MessageActions, MessageAvatar, type MessageAvatarProps, MessageBody, type MessageBodyProps, MessageFooter, type MessageProps, type MessageRole, Meter, MeterLegend, type MeterProps, type MeterSegment, type MeterTone, MeterValue, MetricDelta, type MetricDeltaProps, type MetricPolarity, type ModelOption, ModelSelector, type ModelSelectorProps, type OutputField, type PaginatedTable, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, type PaginationLinkProps, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, type PopoverContentProps, PopoverTrigger, Progress, type ProgressProps, PromptInput, PromptInputCounter, type PromptInputCounterProps, type PromptInputProps, PromptInputSubmit, type PromptInputSubmitProps, PromptInputTextarea, type PromptInputTextareaProps, PromptInputToolbar, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps, Reasoning, ReasoningContent, type ReasoningProps, ReasoningTrigger, type ReasoningTriggerProps, RecordDiff, type RecordDiffProps, RecordDiffSummary, RecordDiffTable, type RecordDiffTableProps, type RecordField, Response, ResponseCaret, type ResponseProps, type Reversibility, Select, SelectContent, type SelectContentProps, SelectGroup, SelectItem, type SelectItemProps, SelectLabel, SelectSeparator, SelectTrigger, type SelectTriggerProps, SelectValue, Separator, type SeparatorProps, Sheet, SheetClose, SheetContent, type SheetContentProps, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SliderProps, type SortableColumn, Source, type SourceProps, Sources, SourcesContent, type SourcesProps, SourcesTrigger, type SourcesTriggerProps, Spinner, type SpinnerProps, StructuredConfidence, StructuredField, StructuredFieldError, type StructuredFieldProps, StructuredOutput, type StructuredOutputProps, Switch, type SwitchProps, TOAST_LIMIT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, type TabsContentProps, TabsList, type TabsListProps, TabsTrigger, type TabsTriggerProps, ThinkingIndicator, type ThinkingIndicatorProps, Toast, ToastAction, type ToastAction$1 as ToastActionOptions, ToastClose, ToastDescription, type ToastOptions, type ToastPosition, type ToastPromiseMessages, type ToastProps, ToastProvider, type ToastRecord, ToastTitle, type ToastVariant, Toaster, type ToasterProps, TokenCount, type TokenCountProps, TokenUsage, type TokenUsageProps, Tool, ToolContent, ToolHeader, type ToolHeaderProps, ToolPayload, type ToolPayloadProps, type ToolProps, ToolSection, type ToolSectionProps, type ToolStatus, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, agentStatusVariants, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, defaultComboboxFilter, defaultCommandFilter, defineMeta, deltaVariants, diffRecords, disabledStyles, emptyStateVariants, focusRing, focusRingInset, iconSlot, inputVariants, invalidStyles, ledgerEntryVariants, messageBodyVariants, messageVariants, progressVariants, selectTriggerVariants, sheetVariants, spinnerVariants, tabsListVariants, tabsTriggerVariants, toast, toastVariants, toolVariants, useToasts };
package/dist/index.js CHANGED
@@ -2,6 +2,9 @@ import { disabledStyles, focusRing, focusRingInset, iconSlot, invalidStyles } fr
2
2
  import { cn } from "./lib/utils.js";
3
3
  import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./components/accordion/accordion.js";
4
4
  import { ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, ActivityItem, ActivityTime, ActivityTitle } from "./components/activity-feed/activity-feed.js";
5
+ import { ActionLedger, ActionLedgerEntry, ActionLedgerList, ActionLedgerPayload, ActionLedgerSelectionSummary, ActionLedgerToolbar, ledgerEntryVariants } from "./components/ai-action-ledger/ai-action-ledger.js";
6
+ import { InlineCompletion } from "./components/ai-inline-completion/ai-inline-completion.js";
7
+ import { StructuredConfidence, StructuredField, StructuredFieldError, StructuredOutput } from "./components/ai-structured-output/ai-structured-output.js";
5
8
  import { AgentStatus, agentStatusVariants } from "./components/ai-agent-status/ai-agent-status.js";
6
9
  import { Conversation, ConversationMessages, ConversationScrollButton, ConversationStatus } from "./components/ai-conversation/ai-conversation.js";
7
10
  import { Message, MessageActions, MessageAvatar, MessageBody, MessageFooter, messageBodyVariants, messageVariants } from "./components/ai-message/ai-message.js";
@@ -35,6 +38,9 @@ import { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, E
35
38
  import { Form, FormControl, FormDescription, FormField, FormLabel, FormMessage } from "./components/form/form.js";
36
39
  import { Input, inputVariants } from "./components/input/input.js";
37
40
  import { Label } from "./components/label/label.js";
41
+ import { Meter, MeterLegend, MeterValue } from "./components/meter/meter.js";
42
+ import { MetricDelta, deltaVariants } from "./components/metric-delta/metric-delta.js";
43
+ import { RecordDiff, RecordDiffSummary, RecordDiffTable, diffRecords } from "./components/record-diff/record-diff.js";
38
44
  import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/pagination/pagination.js";
39
45
  import { Progress, progressVariants } from "./components/progress/progress.js";
40
46
  import { RadioGroup, RadioGroupItem } from "./components/radio-group/radio-group.js";
@@ -48,4 +54,4 @@ import { DEFAULT_TOAST_DURATION, TOAST_LIMIT, toast, useToasts } from "./compone
48
54
  import { Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, Toaster, toastVariants } from "./components/toast/toast.js";
49
55
  import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./components/tooltip/tooltip.js";
50
56
  import { COMPONENT_CATEGORIES, COMPONENT_STATUSES, defineMeta } from "./registry/schema.js";
51
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, ActivityItem, ActivityTime, ActivityTitle, AgentStatus, Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Button, COMPONENT_CATEGORIES, COMPONENT_STATUSES, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CodeBlock, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Conversation, ConversationMessages, ConversationScrollButton, ConversationStatus, CopyButton, DEFAULT_TOAST_DURATION, DataTable, DataTableColumnHeader, DataTablePagination, DataTableViewOptions, DatePicker, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerCancel, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, Form, FormControl, FormDescription, FormField, FormLabel, FormMessage, InlineCitation, Input, Label, Message, MessageActions, MessageAvatar, MessageBody, MessageFooter, ModelSelector, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, PromptInput, PromptInputCounter, PromptInputSubmit, PromptInputTextarea, PromptInputToolbar, RadioGroup, RadioGroupItem, Reasoning, ReasoningContent, ReasoningTrigger, Response, ResponseCaret, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Source, Sources, SourcesContent, SourcesTrigger, Spinner, Switch, TOAST_LIMIT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, ThinkingIndicator, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, Toaster, TokenCount, TokenUsage, Tool, ToolContent, ToolHeader, ToolPayload, ToolSection, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, agentStatusVariants, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, defaultComboboxFilter, defaultCommandFilter, defineMeta, disabledStyles, emptyStateVariants, focusRing, focusRingInset, iconSlot, inputVariants, invalidStyles, messageBodyVariants, messageVariants, progressVariants, selectTriggerVariants, sheetVariants, spinnerVariants, tabsListVariants, tabsTriggerVariants, toast, toastVariants, toolVariants, useToasts };
57
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionLedger, ActionLedgerEntry, ActionLedgerList, ActionLedgerPayload, ActionLedgerSelectionSummary, ActionLedgerToolbar, ActivityContent, ActivityDescription, ActivityFeed, ActivityIndicator, ActivityItem, ActivityTime, ActivityTitle, AgentStatus, Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Button, COMPONENT_CATEGORIES, COMPONENT_STATUSES, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CodeBlock, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Conversation, ConversationMessages, ConversationScrollButton, ConversationStatus, CopyButton, DEFAULT_TOAST_DURATION, DataTable, DataTableColumnHeader, DataTablePagination, DataTableViewOptions, DatePicker, DateRangePicker, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerCancel, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, Form, FormControl, FormDescription, FormField, FormLabel, FormMessage, InlineCitation, InlineCompletion, Input, Label, Message, MessageActions, MessageAvatar, MessageBody, MessageFooter, Meter, MeterLegend, MeterValue, MetricDelta, ModelSelector, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger, Progress, PromptInput, PromptInputCounter, PromptInputSubmit, PromptInputTextarea, PromptInputToolbar, RadioGroup, RadioGroupItem, Reasoning, ReasoningContent, ReasoningTrigger, RecordDiff, RecordDiffSummary, RecordDiffTable, Response, ResponseCaret, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, Source, Sources, SourcesContent, SourcesTrigger, Spinner, StructuredConfidence, StructuredField, StructuredFieldError, StructuredOutput, Switch, TOAST_LIMIT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, ThinkingIndicator, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, Toaster, TokenCount, TokenUsage, Tool, ToolContent, ToolHeader, ToolPayload, ToolSection, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, agentStatusVariants, alertVariants, avatarVariants, badgeVariants, buttonVariants, cn, defaultComboboxFilter, defaultCommandFilter, defineMeta, deltaVariants, diffRecords, disabledStyles, emptyStateVariants, focusRing, focusRingInset, iconSlot, inputVariants, invalidStyles, ledgerEntryVariants, messageBodyVariants, messageVariants, progressVariants, selectTriggerVariants, sheetVariants, spinnerVariants, tabsListVariants, tabsTriggerVariants, toast, toastVariants, toolVariants, useToasts };
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","names":[],"sources":["../../src/registry/components.ts"],"mappings":";;;;;;;;;;;;;;cA4Da,gBAAgB"}
1
+ {"version":3,"file":"components.d.ts","names":[],"sources":["../../src/registry/components.ts"],"mappings":";;;;;;;;;;;;;;cAkEa,gBAAgB"}
@@ -1,50 +1,56 @@
1
1
  import { COMPONENT_CATEGORIES, COMPONENT_STATUSES } from "./schema.js";
2
2
  import { meta } from "../components/accordion/meta.js";
3
3
  import { meta as meta$1 } from "../components/activity-feed/meta.js";
4
- import { meta as meta$2 } from "../components/ai-agent-status/meta.js";
5
- import { meta as meta$3 } from "../components/ai-conversation/meta.js";
6
- import { meta as meta$4 } from "../components/ai-message/meta.js";
7
- import { meta as meta$5 } from "../components/ai-model-selector/meta.js";
8
- import { meta as meta$6 } from "../components/ai-prompt-input/meta.js";
9
- import { meta as meta$7 } from "../components/ai-reasoning/meta.js";
10
- import { meta as meta$8 } from "../components/ai-response/meta.js";
11
- import { meta as meta$9 } from "../components/ai-sources/meta.js";
12
- import { meta as meta$10 } from "../components/ai-token-usage/meta.js";
13
- import { meta as meta$11 } from "../components/ai-tool/meta.js";
14
- import { meta as meta$12 } from "../components/alert/meta.js";
15
- import { meta as meta$13 } from "../components/avatar/meta.js";
16
- import { meta as meta$14 } from "../components/badge/meta.js";
17
- import { meta as meta$15 } from "../components/button/meta.js";
18
- import { meta as meta$16 } from "../components/calendar/meta.js";
19
- import { meta as meta$17 } from "../components/card/meta.js";
20
- import { meta as meta$18 } from "../components/checkbox/meta.js";
21
- import { meta as meta$19 } from "../components/code-block/meta.js";
22
- import { meta as meta$20 } from "../components/combobox/meta.js";
23
- import { meta as meta$21 } from "../components/command/meta.js";
24
- import { meta as meta$22 } from "../components/data-table/meta.js";
25
- import { meta as meta$23 } from "../components/date-picker/meta.js";
26
- import { meta as meta$24 } from "../components/dialog/meta.js";
27
- import { meta as meta$25 } from "../components/drawer/meta.js";
28
- import { meta as meta$26 } from "../components/dropdown-menu/meta.js";
29
- import { meta as meta$27 } from "../components/empty-state/meta.js";
30
- import { meta as meta$28 } from "../components/form/meta.js";
31
- import { meta as meta$29 } from "../components/input/meta.js";
32
- import { meta as meta$30 } from "../components/label/meta.js";
33
- import { meta as meta$31 } from "../components/pagination/meta.js";
34
- import { meta as meta$32 } from "../components/popover/meta.js";
35
- import { meta as meta$33 } from "../components/progress/meta.js";
36
- import { meta as meta$34 } from "../components/radio-group/meta.js";
37
- import { meta as meta$35 } from "../components/select/meta.js";
38
- import { meta as meta$36 } from "../components/separator/meta.js";
39
- import { meta as meta$37 } from "../components/sheet/meta.js";
40
- import { meta as meta$38 } from "../components/skeleton/meta.js";
41
- import { meta as meta$39 } from "../components/slider/meta.js";
42
- import { meta as meta$40 } from "../components/spinner/meta.js";
43
- import { meta as meta$41 } from "../components/switch/meta.js";
44
- import { meta as meta$42 } from "../components/table/meta.js";
45
- import { meta as meta$43 } from "../components/tabs/meta.js";
46
- import { meta as meta$44 } from "../components/toast/meta.js";
47
- import { meta as meta$45 } from "../components/tooltip/meta.js";
4
+ import { meta as meta$2 } from "../components/ai-action-ledger/meta.js";
5
+ import { meta as meta$3 } from "../components/ai-agent-status/meta.js";
6
+ import { meta as meta$4 } from "../components/ai-conversation/meta.js";
7
+ import { meta as meta$5 } from "../components/ai-inline-completion/meta.js";
8
+ import { meta as meta$6 } from "../components/ai-message/meta.js";
9
+ import { meta as meta$7 } from "../components/ai-model-selector/meta.js";
10
+ import { meta as meta$8 } from "../components/ai-prompt-input/meta.js";
11
+ import { meta as meta$9 } from "../components/ai-reasoning/meta.js";
12
+ import { meta as meta$10 } from "../components/ai-response/meta.js";
13
+ import { meta as meta$11 } from "../components/ai-sources/meta.js";
14
+ import { meta as meta$12 } from "../components/ai-structured-output/meta.js";
15
+ import { meta as meta$13 } from "../components/ai-token-usage/meta.js";
16
+ import { meta as meta$14 } from "../components/ai-tool/meta.js";
17
+ import { meta as meta$15 } from "../components/alert/meta.js";
18
+ import { meta as meta$16 } from "../components/avatar/meta.js";
19
+ import { meta as meta$17 } from "../components/badge/meta.js";
20
+ import { meta as meta$18 } from "../components/button/meta.js";
21
+ import { meta as meta$19 } from "../components/calendar/meta.js";
22
+ import { meta as meta$20 } from "../components/card/meta.js";
23
+ import { meta as meta$21 } from "../components/checkbox/meta.js";
24
+ import { meta as meta$22 } from "../components/code-block/meta.js";
25
+ import { meta as meta$23 } from "../components/combobox/meta.js";
26
+ import { meta as meta$24 } from "../components/command/meta.js";
27
+ import { meta as meta$25 } from "../components/data-table/meta.js";
28
+ import { meta as meta$26 } from "../components/date-picker/meta.js";
29
+ import { meta as meta$27 } from "../components/dialog/meta.js";
30
+ import { meta as meta$28 } from "../components/drawer/meta.js";
31
+ import { meta as meta$29 } from "../components/dropdown-menu/meta.js";
32
+ import { meta as meta$30 } from "../components/empty-state/meta.js";
33
+ import { meta as meta$31 } from "../components/form/meta.js";
34
+ import { meta as meta$32 } from "../components/input/meta.js";
35
+ import { meta as meta$33 } from "../components/label/meta.js";
36
+ import { meta as meta$34 } from "../components/meter/meta.js";
37
+ import { meta as meta$35 } from "../components/metric-delta/meta.js";
38
+ import { meta as meta$36 } from "../components/pagination/meta.js";
39
+ import { meta as meta$37 } from "../components/popover/meta.js";
40
+ import { meta as meta$38 } from "../components/progress/meta.js";
41
+ import { meta as meta$39 } from "../components/radio-group/meta.js";
42
+ import { meta as meta$40 } from "../components/record-diff/meta.js";
43
+ import { meta as meta$41 } from "../components/select/meta.js";
44
+ import { meta as meta$42 } from "../components/separator/meta.js";
45
+ import { meta as meta$43 } from "../components/sheet/meta.js";
46
+ import { meta as meta$44 } from "../components/skeleton/meta.js";
47
+ import { meta as meta$45 } from "../components/slider/meta.js";
48
+ import { meta as meta$46 } from "../components/spinner/meta.js";
49
+ import { meta as meta$47 } from "../components/switch/meta.js";
50
+ import { meta as meta$48 } from "../components/table/meta.js";
51
+ import { meta as meta$49 } from "../components/tabs/meta.js";
52
+ import { meta as meta$50 } from "../components/toast/meta.js";
53
+ import { meta as meta$51 } from "../components/tooltip/meta.js";
48
54
  import { blockMetas } from "./blocks.js";
49
55
  //#region src/registry/components.ts
50
56
  /**
@@ -104,7 +110,13 @@ const componentMetas = [
104
110
  meta$42,
105
111
  meta$43,
106
112
  meta$44,
107
- meta$45
113
+ meta$45,
114
+ meta$46,
115
+ meta$47,
116
+ meta$48,
117
+ meta$49,
118
+ meta$50,
119
+ meta$51
108
120
  ];
109
121
  //#endregion
110
122
  export { COMPONENT_CATEGORIES, COMPONENT_STATUSES, blockMetas, componentMetas };
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":["accordionMeta","activityFeedMeta","aiAgentStatusMeta","aiConversationMeta","aiMessageMeta","aiModelSelectorMeta","aiPromptInputMeta","aiReasoningMeta","aiResponseMeta","aiSourcesMeta","aiTokenUsageMeta","aiToolMeta","alertMeta","avatarMeta","badgeMeta","buttonMeta","calendarMeta","cardMeta","checkboxMeta","codeBlockMeta","comboboxMeta","commandMeta","dataTableMeta","datePickerMeta","dialogMeta","drawerMeta","dropdownMenuMeta","emptyStateMeta","formMeta","inputMeta","labelMeta","paginationMeta","popoverMeta","progressMeta","radioGroupMeta","selectMeta","separatorMeta","sheetMeta","skeletonMeta","sliderMeta","spinnerMeta","switchMeta","tableMeta","tabsMeta","toastMeta","tooltipMeta"],"sources":["../../src/registry/components.ts"],"sourcesContent":["import type { ComponentMeta } from \"./schema\";\n\nimport { meta as accordionMeta } from \"@/components/accordion/meta\";\nimport { meta as activityFeedMeta } from \"@/components/activity-feed/meta\";\nimport { meta as aiAgentStatusMeta } from \"@/components/ai-agent-status/meta\";\nimport { meta as aiConversationMeta } from \"@/components/ai-conversation/meta\";\nimport { meta as aiMessageMeta } from \"@/components/ai-message/meta\";\nimport { meta as aiModelSelectorMeta } from \"@/components/ai-model-selector/meta\";\nimport { meta as aiPromptInputMeta } from \"@/components/ai-prompt-input/meta\";\nimport { meta as aiReasoningMeta } from \"@/components/ai-reasoning/meta\";\nimport { meta as aiResponseMeta } from \"@/components/ai-response/meta\";\nimport { meta as aiSourcesMeta } from \"@/components/ai-sources/meta\";\nimport { meta as aiTokenUsageMeta } from \"@/components/ai-token-usage/meta\";\nimport { meta as aiToolMeta } from \"@/components/ai-tool/meta\";\nimport { meta as alertMeta } from \"@/components/alert/meta\";\nimport { meta as avatarMeta } from \"@/components/avatar/meta\";\nimport { meta as badgeMeta } from \"@/components/badge/meta\";\nimport { meta as buttonMeta } from \"@/components/button/meta\";\nimport { meta as calendarMeta } from \"@/components/calendar/meta\";\nimport { meta as cardMeta } from \"@/components/card/meta\";\nimport { meta as checkboxMeta } from \"@/components/checkbox/meta\";\nimport { meta as codeBlockMeta } from \"@/components/code-block/meta\";\nimport { meta as comboboxMeta } from \"@/components/combobox/meta\";\nimport { meta as commandMeta } from \"@/components/command/meta\";\nimport { meta as dataTableMeta } from \"@/components/data-table/meta\";\nimport { meta as datePickerMeta } from \"@/components/date-picker/meta\";\nimport { meta as dialogMeta } from \"@/components/dialog/meta\";\nimport { meta as drawerMeta } from \"@/components/drawer/meta\";\nimport { meta as dropdownMenuMeta } from \"@/components/dropdown-menu/meta\";\nimport { meta as emptyStateMeta } from \"@/components/empty-state/meta\";\nimport { meta as formMeta } from \"@/components/form/meta\";\nimport { meta as inputMeta } from \"@/components/input/meta\";\nimport { meta as labelMeta } from \"@/components/label/meta\";\nimport { meta as paginationMeta } from \"@/components/pagination/meta\";\nimport { meta as popoverMeta } from \"@/components/popover/meta\";\nimport { meta as progressMeta } from \"@/components/progress/meta\";\nimport { meta as radioGroupMeta } from \"@/components/radio-group/meta\";\nimport { meta as selectMeta } from \"@/components/select/meta\";\nimport { meta as separatorMeta } from \"@/components/separator/meta\";\nimport { meta as sheetMeta } from \"@/components/sheet/meta\";\nimport { meta as skeletonMeta } from \"@/components/skeleton/meta\";\nimport { meta as sliderMeta } from \"@/components/slider/meta\";\nimport { meta as spinnerMeta } from \"@/components/spinner/meta\";\nimport { meta as switchMeta } from \"@/components/switch/meta\";\nimport { meta as tableMeta } from \"@/components/table/meta\";\nimport { meta as tabsMeta } from \"@/components/tabs/meta\";\nimport { meta as toastMeta } from \"@/components/toast/meta\";\nimport { meta as tooltipMeta } from \"@/components/tooltip/meta\";\n\n/**\n * Every component in the registry.\n *\n * An explicit list rather than a glob: the registry build runs in plain Node,\n * where bundler-only globbing is unavailable, and a static list is also what\n * lets the bundle tree-shake. `meta.test.ts` fails if a component directory\n * exists that is missing from here, so it cannot silently fall out of date.\n *\n * Identifiers carry a `Meta` suffix because component names include reserved\n * words — `switch` cannot be a binding name.\n */\nexport const componentMetas: ComponentMeta[] = [\n accordionMeta,\n activityFeedMeta,\n aiAgentStatusMeta,\n aiConversationMeta,\n aiMessageMeta,\n aiModelSelectorMeta,\n aiPromptInputMeta,\n aiReasoningMeta,\n aiResponseMeta,\n aiSourcesMeta,\n aiTokenUsageMeta,\n aiToolMeta,\n alertMeta,\n avatarMeta,\n badgeMeta,\n buttonMeta,\n calendarMeta,\n cardMeta,\n checkboxMeta,\n codeBlockMeta,\n comboboxMeta,\n commandMeta,\n dataTableMeta,\n datePickerMeta,\n dialogMeta,\n drawerMeta,\n dropdownMenuMeta,\n emptyStateMeta,\n formMeta,\n inputMeta,\n labelMeta,\n paginationMeta,\n popoverMeta,\n progressMeta,\n radioGroupMeta,\n selectMeta,\n separatorMeta,\n sheetMeta,\n skeletonMeta,\n sliderMeta,\n spinnerMeta,\n switchMeta,\n tableMeta,\n tabsMeta,\n toastMeta,\n tooltipMeta,\n];\n\n// This file is the `@dowel-ui/react/registry` entry point, so the block barrel is\n// re-exported here — the registry build reads both through one import.\nexport { blockMetas } from \"./blocks\";\nexport { COMPONENT_CATEGORIES, COMPONENT_STATUSES } from \"./schema\";\nexport type { ComponentCategory, ComponentMeta, ComponentStatus } from \"./schema\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,MAAa,iBAAkC;CAC7CA;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF"}
1
+ {"version":3,"file":"components.js","names":["accordionMeta","activityFeedMeta","aiActionLedgerMeta","aiAgentStatusMeta","aiConversationMeta","aiInlineCompletionMeta","aiMessageMeta","aiModelSelectorMeta","aiPromptInputMeta","aiReasoningMeta","aiResponseMeta","aiSourcesMeta","aiStructuredOutputMeta","aiTokenUsageMeta","aiToolMeta","alertMeta","avatarMeta","badgeMeta","buttonMeta","calendarMeta","cardMeta","checkboxMeta","codeBlockMeta","comboboxMeta","commandMeta","dataTableMeta","datePickerMeta","dialogMeta","drawerMeta","dropdownMenuMeta","emptyStateMeta","formMeta","inputMeta","labelMeta","meterMeta","metricDeltaMeta","paginationMeta","popoverMeta","progressMeta","radioGroupMeta","recordDiffMeta","selectMeta","separatorMeta","sheetMeta","skeletonMeta","sliderMeta","spinnerMeta","switchMeta","tableMeta","tabsMeta","toastMeta","tooltipMeta"],"sources":["../../src/registry/components.ts"],"sourcesContent":["import type { ComponentMeta } from \"./schema\";\n\nimport { meta as accordionMeta } from \"@/components/accordion/meta\";\nimport { meta as activityFeedMeta } from \"@/components/activity-feed/meta\";\nimport { meta as aiActionLedgerMeta } from \"@/components/ai-action-ledger/meta\";\nimport { meta as aiAgentStatusMeta } from \"@/components/ai-agent-status/meta\";\nimport { meta as aiConversationMeta } from \"@/components/ai-conversation/meta\";\nimport { meta as aiInlineCompletionMeta } from \"@/components/ai-inline-completion/meta\";\nimport { meta as aiMessageMeta } from \"@/components/ai-message/meta\";\nimport { meta as aiModelSelectorMeta } from \"@/components/ai-model-selector/meta\";\nimport { meta as aiPromptInputMeta } from \"@/components/ai-prompt-input/meta\";\nimport { meta as aiReasoningMeta } from \"@/components/ai-reasoning/meta\";\nimport { meta as aiResponseMeta } from \"@/components/ai-response/meta\";\nimport { meta as aiSourcesMeta } from \"@/components/ai-sources/meta\";\nimport { meta as aiStructuredOutputMeta } from \"@/components/ai-structured-output/meta\";\nimport { meta as aiTokenUsageMeta } from \"@/components/ai-token-usage/meta\";\nimport { meta as aiToolMeta } from \"@/components/ai-tool/meta\";\nimport { meta as alertMeta } from \"@/components/alert/meta\";\nimport { meta as avatarMeta } from \"@/components/avatar/meta\";\nimport { meta as badgeMeta } from \"@/components/badge/meta\";\nimport { meta as buttonMeta } from \"@/components/button/meta\";\nimport { meta as calendarMeta } from \"@/components/calendar/meta\";\nimport { meta as cardMeta } from \"@/components/card/meta\";\nimport { meta as checkboxMeta } from \"@/components/checkbox/meta\";\nimport { meta as codeBlockMeta } from \"@/components/code-block/meta\";\nimport { meta as comboboxMeta } from \"@/components/combobox/meta\";\nimport { meta as commandMeta } from \"@/components/command/meta\";\nimport { meta as dataTableMeta } from \"@/components/data-table/meta\";\nimport { meta as datePickerMeta } from \"@/components/date-picker/meta\";\nimport { meta as dialogMeta } from \"@/components/dialog/meta\";\nimport { meta as drawerMeta } from \"@/components/drawer/meta\";\nimport { meta as dropdownMenuMeta } from \"@/components/dropdown-menu/meta\";\nimport { meta as emptyStateMeta } from \"@/components/empty-state/meta\";\nimport { meta as formMeta } from \"@/components/form/meta\";\nimport { meta as inputMeta } from \"@/components/input/meta\";\nimport { meta as labelMeta } from \"@/components/label/meta\";\nimport { meta as meterMeta } from \"@/components/meter/meta\";\nimport { meta as metricDeltaMeta } from \"@/components/metric-delta/meta\";\nimport { meta as paginationMeta } from \"@/components/pagination/meta\";\nimport { meta as popoverMeta } from \"@/components/popover/meta\";\nimport { meta as progressMeta } from \"@/components/progress/meta\";\nimport { meta as radioGroupMeta } from \"@/components/radio-group/meta\";\nimport { meta as recordDiffMeta } from \"@/components/record-diff/meta\";\nimport { meta as selectMeta } from \"@/components/select/meta\";\nimport { meta as separatorMeta } from \"@/components/separator/meta\";\nimport { meta as sheetMeta } from \"@/components/sheet/meta\";\nimport { meta as skeletonMeta } from \"@/components/skeleton/meta\";\nimport { meta as sliderMeta } from \"@/components/slider/meta\";\nimport { meta as spinnerMeta } from \"@/components/spinner/meta\";\nimport { meta as switchMeta } from \"@/components/switch/meta\";\nimport { meta as tableMeta } from \"@/components/table/meta\";\nimport { meta as tabsMeta } from \"@/components/tabs/meta\";\nimport { meta as toastMeta } from \"@/components/toast/meta\";\nimport { meta as tooltipMeta } from \"@/components/tooltip/meta\";\n\n/**\n * Every component in the registry.\n *\n * An explicit list rather than a glob: the registry build runs in plain Node,\n * where bundler-only globbing is unavailable, and a static list is also what\n * lets the bundle tree-shake. `meta.test.ts` fails if a component directory\n * exists that is missing from here, so it cannot silently fall out of date.\n *\n * Identifiers carry a `Meta` suffix because component names include reserved\n * words — `switch` cannot be a binding name.\n */\nexport const componentMetas: ComponentMeta[] = [\n accordionMeta,\n activityFeedMeta,\n aiActionLedgerMeta,\n aiAgentStatusMeta,\n aiConversationMeta,\n aiInlineCompletionMeta,\n aiMessageMeta,\n aiModelSelectorMeta,\n aiPromptInputMeta,\n aiReasoningMeta,\n aiResponseMeta,\n aiSourcesMeta,\n aiStructuredOutputMeta,\n aiTokenUsageMeta,\n aiToolMeta,\n alertMeta,\n avatarMeta,\n badgeMeta,\n buttonMeta,\n calendarMeta,\n cardMeta,\n checkboxMeta,\n codeBlockMeta,\n comboboxMeta,\n commandMeta,\n dataTableMeta,\n datePickerMeta,\n dialogMeta,\n drawerMeta,\n dropdownMenuMeta,\n emptyStateMeta,\n formMeta,\n inputMeta,\n labelMeta,\n meterMeta,\n metricDeltaMeta,\n paginationMeta,\n popoverMeta,\n progressMeta,\n radioGroupMeta,\n recordDiffMeta,\n selectMeta,\n separatorMeta,\n sheetMeta,\n skeletonMeta,\n sliderMeta,\n spinnerMeta,\n switchMeta,\n tableMeta,\n tabsMeta,\n toastMeta,\n tooltipMeta,\n];\n\n// This file is the `@dowel-ui/react/registry` entry point, so the block barrel is\n// re-exported here — the registry build reads both through one import.\nexport { blockMetas } from \"./blocks\";\nexport { COMPONENT_CATEGORIES, COMPONENT_STATUSES } from \"./schema\";\nexport type { ComponentCategory, ComponentMeta, ComponentStatus } from \"./schema\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAa,iBAAkC;CAC7CA;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;CACAC;AACF"}
package/package.json CHANGED
@@ -1,12 +1,47 @@
1
1
  {
2
2
  "name": "@dowel-ui/react",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
- "description": "Source-first React components.",
5
+ "description": "Source-first React components for SaaS and AI products — 52 accessible components you install as code you own, not as a dependency.",
6
+ "keywords": [
7
+ "react",
8
+ "ui",
9
+ "components",
10
+ "component-library",
11
+ "design-system",
12
+ "tailwind",
13
+ "tailwindcss",
14
+ "radix",
15
+ "typescript",
16
+ "accessible",
17
+ "a11y",
18
+ "wcag",
19
+ "ai",
20
+ "llm",
21
+ "agent",
22
+ "saas",
23
+ "shadcn",
24
+ "headless",
25
+ "source-first",
26
+ "dowel"
27
+ ],
28
+ "license": "MIT",
29
+ "homepage": "https://dowel-eight.vercel.app",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/aqkprogrammer/dowel-ui.git",
33
+ "directory": "packages/ui"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/aqkprogrammer/dowel-ui/issues"
37
+ },
6
38
  "sideEffects": false,
7
39
  "files": [
8
40
  "dist",
9
- "src"
41
+ "src",
42
+ "!src/**/*.test.ts",
43
+ "!src/**/*.test.tsx",
44
+ "!src/**/*.stories.tsx"
10
45
  ],
11
46
  "exports": {
12
47
  ".": {
@@ -58,8 +93,8 @@
58
93
  "vite": "8.2.2",
59
94
  "vitest": "4.1.10",
60
95
  "zod": "4.5.4",
61
- "@dowel-ui/config": "0.1.0",
62
- "@dowel-ui/themes": "0.1.0"
96
+ "@dowel-ui/config": "0.2.0",
97
+ "@dowel-ui/themes": "0.2.0"
63
98
  },
64
99
  "scripts": {
65
100
  "build": "tsdown",