@agent-native/toolkit 0.9.0 → 0.10.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 (190) hide show
  1. package/README.md +12 -3
  2. package/agent-native.eject.json +71 -0
  3. package/dist/chat-history/ChatHistoryRail.d.ts +33 -0
  4. package/dist/chat-history/ChatHistoryRail.d.ts.map +1 -0
  5. package/dist/chat-history/ChatHistoryRail.js +35 -0
  6. package/dist/chat-history/ChatHistoryRail.js.map +1 -0
  7. package/dist/chat-history/ChatHistoryRail.spec.d.ts +2 -0
  8. package/dist/chat-history/ChatHistoryRail.spec.d.ts.map +1 -0
  9. package/dist/chat-history/ChatHistoryRail.spec.js +157 -0
  10. package/dist/chat-history/ChatHistoryRail.spec.js.map +1 -0
  11. package/dist/chat-history/index.d.ts +2 -0
  12. package/dist/chat-history/index.d.ts.map +1 -1
  13. package/dist/chat-history/index.js +2 -0
  14. package/dist/chat-history/index.js.map +1 -1
  15. package/dist/chat-history/useChatHistoryRailController.d.ts +26 -0
  16. package/dist/chat-history/useChatHistoryRailController.d.ts.map +1 -0
  17. package/dist/chat-history/useChatHistoryRailController.js +36 -0
  18. package/dist/chat-history/useChatHistoryRailController.js.map +1 -0
  19. package/dist/chat-history/useChatHistoryRailController.spec.d.ts +2 -0
  20. package/dist/chat-history/useChatHistoryRailController.spec.d.ts.map +1 -0
  21. package/dist/chat-history/useChatHistoryRailController.spec.js +101 -0
  22. package/dist/chat-history/useChatHistoryRailController.spec.js.map +1 -0
  23. package/dist/chat-history.css +61 -0
  24. package/dist/composer/ComposerPlusMenu.js +1 -1
  25. package/dist/composer/ComposerPlusMenu.js.map +1 -1
  26. package/dist/composer/PromptComposer.d.ts.map +1 -1
  27. package/dist/composer/PromptComposer.js +22 -4
  28. package/dist/composer/PromptComposer.js.map +1 -1
  29. package/dist/composer/RealtimeVoiceMode.d.ts +5 -1
  30. package/dist/composer/RealtimeVoiceMode.d.ts.map +1 -1
  31. package/dist/composer/RealtimeVoiceMode.js +27 -8
  32. package/dist/composer/RealtimeVoiceMode.js.map +1 -1
  33. package/dist/composer/RealtimeVoiceMode.spec.js +51 -11
  34. package/dist/composer/RealtimeVoiceMode.spec.js.map +1 -1
  35. package/dist/composer/VoiceButton.d.ts +2 -0
  36. package/dist/composer/VoiceButton.d.ts.map +1 -1
  37. package/dist/composer/VoiceButton.js +33 -1
  38. package/dist/composer/VoiceButton.js.map +1 -1
  39. package/dist/composer/VoiceButton.spec.js +9 -1
  40. package/dist/composer/VoiceButton.spec.js.map +1 -1
  41. package/dist/composer/realtime-voice-audio-level.d.ts.map +1 -1
  42. package/dist/composer/realtime-voice-audio-level.js +2 -1
  43. package/dist/composer/realtime-voice-audio-level.js.map +1 -1
  44. package/dist/composer/realtime-voice-audio-level.spec.js +7 -0
  45. package/dist/composer/realtime-voice-audio-level.spec.js.map +1 -1
  46. package/dist/composer/useRealtimeVoiceMode.d.ts +7 -0
  47. package/dist/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  48. package/dist/composer/useRealtimeVoiceMode.js +95 -23
  49. package/dist/composer/useRealtimeVoiceMode.js.map +1 -1
  50. package/dist/composer/useRealtimeVoiceMode.spec.js +58 -9
  51. package/dist/composer/useRealtimeVoiceMode.spec.js.map +1 -1
  52. package/dist/conformance/__fixtures__/css-in-js-adapter.d.ts +7 -0
  53. package/dist/conformance/__fixtures__/css-in-js-adapter.d.ts.map +1 -0
  54. package/dist/conformance/__fixtures__/css-in-js-adapter.js +84 -0
  55. package/dist/conformance/__fixtures__/css-in-js-adapter.js.map +1 -0
  56. package/dist/conformance/conformance.spec.d.ts +2 -0
  57. package/dist/conformance/conformance.spec.d.ts.map +1 -0
  58. package/dist/conformance/conformance.spec.js +58 -0
  59. package/dist/conformance/conformance.spec.js.map +1 -0
  60. package/dist/conformance/index.d.ts +4 -0
  61. package/dist/conformance/index.d.ts.map +1 -0
  62. package/dist/conformance/index.js +4 -0
  63. package/dist/conformance/index.js.map +1 -0
  64. package/dist/conformance/runner.d.ts +12 -0
  65. package/dist/conformance/runner.d.ts.map +1 -0
  66. package/dist/conformance/runner.js +441 -0
  67. package/dist/conformance/runner.js.map +1 -0
  68. package/dist/conformance/types.d.ts +26 -0
  69. package/dist/conformance/types.d.ts.map +1 -0
  70. package/dist/conformance/types.js +13 -0
  71. package/dist/conformance/types.js.map +1 -0
  72. package/dist/conformance/version.d.ts +6 -0
  73. package/dist/conformance/version.d.ts.map +1 -0
  74. package/dist/conformance/version.js +14 -0
  75. package/dist/conformance/version.js.map +1 -0
  76. package/dist/design-system/components.d.ts +64 -0
  77. package/dist/design-system/components.d.ts.map +1 -0
  78. package/dist/design-system/components.js +50 -0
  79. package/dist/design-system/components.js.map +1 -0
  80. package/dist/design-system/context.d.ts +11 -0
  81. package/dist/design-system/context.d.ts.map +1 -0
  82. package/dist/design-system/context.js +17 -0
  83. package/dist/design-system/context.js.map +1 -0
  84. package/dist/design-system/default-adapter.d.ts +3 -0
  85. package/dist/design-system/default-adapter.d.ts.map +1 -0
  86. package/dist/design-system/default-adapter.js +166 -0
  87. package/dist/design-system/default-adapter.js.map +1 -0
  88. package/dist/design-system/default-adapter.spec.d.ts +2 -0
  89. package/dist/design-system/default-adapter.spec.d.ts.map +1 -0
  90. package/dist/design-system/default-adapter.spec.js +96 -0
  91. package/dist/design-system/default-adapter.spec.js.map +1 -0
  92. package/dist/design-system/definition.d.ts +9 -0
  93. package/dist/design-system/definition.d.ts.map +1 -0
  94. package/dist/design-system/definition.js +4 -0
  95. package/dist/design-system/definition.js.map +1 -0
  96. package/dist/design-system/design-system.spec.d.ts +2 -0
  97. package/dist/design-system/design-system.spec.d.ts.map +1 -0
  98. package/dist/design-system/design-system.spec.js +121 -0
  99. package/dist/design-system/design-system.spec.js.map +1 -0
  100. package/dist/design-system/error-boundary.d.ts +18 -0
  101. package/dist/design-system/error-boundary.d.ts.map +1 -0
  102. package/dist/design-system/error-boundary.js +16 -0
  103. package/dist/design-system/error-boundary.js.map +1 -0
  104. package/dist/design-system/index.d.ts +8 -0
  105. package/dist/design-system/index.d.ts.map +1 -0
  106. package/dist/design-system/index.js +8 -0
  107. package/dist/design-system/index.js.map +1 -0
  108. package/dist/design-system/theme.d.ts +30 -0
  109. package/dist/design-system/theme.d.ts.map +1 -0
  110. package/dist/design-system/theme.js +95 -0
  111. package/dist/design-system/theme.js.map +1 -0
  112. package/dist/design-system/theme.spec.d.ts +2 -0
  113. package/dist/design-system/theme.spec.d.ts.map +1 -0
  114. package/dist/design-system/theme.spec.js +43 -0
  115. package/dist/design-system/theme.spec.js.map +1 -0
  116. package/dist/design-system/types.d.ts +288 -0
  117. package/dist/design-system/types.d.ts.map +1 -0
  118. package/dist/design-system/types.js +2 -0
  119. package/dist/design-system/types.js.map +1 -0
  120. package/dist/provider.d.ts +4 -3
  121. package/dist/provider.d.ts.map +1 -1
  122. package/dist/provider.js +46 -4
  123. package/dist/provider.js.map +1 -1
  124. package/dist/styles.css +35 -0
  125. package/dist/ui/button.d.ts +5 -0
  126. package/dist/ui/button.d.ts.map +1 -1
  127. package/dist/ui/button.js +25 -4
  128. package/dist/ui/button.js.map +1 -1
  129. package/dist/ui/dialog.d.ts +4 -0
  130. package/dist/ui/dialog.d.ts.map +1 -1
  131. package/dist/ui/dialog.js +2 -2
  132. package/dist/ui/dialog.js.map +1 -1
  133. package/dist/ui/popover.d.ts +1 -0
  134. package/dist/ui/popover.d.ts.map +1 -1
  135. package/dist/ui/popover.js +2 -2
  136. package/dist/ui/popover.js.map +1 -1
  137. package/dist/ui/select.d.ts +3 -1
  138. package/dist/ui/select.d.ts.map +1 -1
  139. package/dist/ui/select.js +1 -1
  140. package/dist/ui/select.js.map +1 -1
  141. package/dist/ui/sidebar.d.ts +6 -2
  142. package/dist/ui/sidebar.d.ts.map +1 -1
  143. package/dist/ui/sidebar.js +12 -15
  144. package/dist/ui/sidebar.js.map +1 -1
  145. package/dist/ui/tooltip.d.ts +3 -1
  146. package/dist/ui/tooltip.d.ts.map +1 -1
  147. package/dist/ui/tooltip.js +2 -2
  148. package/dist/ui/tooltip.js.map +1 -1
  149. package/package.json +31 -1
  150. package/src/chat-history/ChatHistoryRail.spec.tsx +312 -0
  151. package/src/chat-history/ChatHistoryRail.tsx +150 -0
  152. package/src/chat-history/index.ts +14 -0
  153. package/src/chat-history/useChatHistoryRailController.spec.tsx +131 -0
  154. package/src/chat-history/useChatHistoryRailController.ts +76 -0
  155. package/src/chat-history.css +61 -0
  156. package/src/composer/ComposerPlusMenu.tsx +11 -8
  157. package/src/composer/PromptComposer.tsx +27 -6
  158. package/src/composer/RealtimeVoiceMode.spec.tsx +116 -11
  159. package/src/composer/RealtimeVoiceMode.tsx +106 -36
  160. package/src/composer/VoiceButton.spec.ts +17 -1
  161. package/src/composer/VoiceButton.tsx +49 -0
  162. package/src/composer/realtime-voice-audio-level.spec.ts +15 -0
  163. package/src/composer/realtime-voice-audio-level.ts +2 -1
  164. package/src/composer/useRealtimeVoiceMode.spec.ts +82 -8
  165. package/src/composer/useRealtimeVoiceMode.tsx +112 -25
  166. package/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
  167. package/src/conformance/conformance.spec.tsx +83 -0
  168. package/src/conformance/index.ts +3 -0
  169. package/src/conformance/runner.tsx +710 -0
  170. package/src/conformance/types.ts +45 -0
  171. package/src/conformance/version.ts +22 -0
  172. package/src/design-system/components.tsx +146 -0
  173. package/src/design-system/context.tsx +31 -0
  174. package/src/design-system/default-adapter.spec.tsx +143 -0
  175. package/src/design-system/default-adapter.tsx +915 -0
  176. package/src/design-system/definition.ts +14 -0
  177. package/src/design-system/design-system.spec.tsx +183 -0
  178. package/src/design-system/error-boundary.tsx +37 -0
  179. package/src/design-system/index.ts +7 -0
  180. package/src/design-system/theme.spec.ts +61 -0
  181. package/src/design-system/theme.ts +145 -0
  182. package/src/design-system/types.ts +363 -0
  183. package/src/provider.tsx +98 -5
  184. package/src/styles.css +35 -0
  185. package/src/ui/button.tsx +95 -6
  186. package/src/ui/dialog.tsx +48 -23
  187. package/src/ui/popover.tsx +16 -2
  188. package/src/ui/select.tsx +7 -3
  189. package/src/ui/sidebar.tsx +47 -48
  190. package/src/ui/tooltip.tsx +7 -3
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useDesignSystemComponent } from "./context.js";
3
+ import { defaultDesignSystemComponents } from "./default-adapter.js";
4
+ import { DesignSystemErrorBoundary } from "./error-boundary.js";
5
+ function createComponent(name, DefaultComponent) {
6
+ function DesignSystemComponent(props) {
7
+ const CustomComponent = useDesignSystemComponent(name);
8
+ const fallback = _jsx(DefaultComponent, { ...props });
9
+ if (!CustomComponent ||
10
+ CustomComponent === DefaultComponent ||
11
+ CustomComponent === DesignSystemComponent) {
12
+ return fallback;
13
+ }
14
+ return (_jsx(DesignSystemErrorBoundary, { component: name, fallback: fallback, children: _jsx(CustomComponent, { ...props }) }));
15
+ }
16
+ DesignSystemComponent.displayName = `DesignSystem.${name}`;
17
+ return DesignSystemComponent;
18
+ }
19
+ export const ActionButton = createComponent("ActionButton", defaultDesignSystemComponents.ActionButton);
20
+ export const IconButton = createComponent("IconButton", defaultDesignSystemComponents.IconButton);
21
+ export const TextField = createComponent("TextField", defaultDesignSystemComponents.TextField);
22
+ export const TextArea = createComponent("TextArea", defaultDesignSystemComponents.TextArea);
23
+ export const Spinner = createComponent("Spinner", defaultDesignSystemComponents.Spinner);
24
+ export const Skeleton = createComponent("Skeleton", defaultDesignSystemComponents.Skeleton);
25
+ export const Status = createComponent("Status", defaultDesignSystemComponents.Status);
26
+ export const Surface = createComponent("Surface", defaultDesignSystemComponents.Surface);
27
+ export const Avatar = createComponent("Avatar", defaultDesignSystemComponents.Avatar);
28
+ export const Tooltip = createComponent("Tooltip", defaultDesignSystemComponents.Tooltip);
29
+ export const Menu = createComponent("Menu", defaultDesignSystemComponents.Menu);
30
+ export const Popover = createComponent("Popover", defaultDesignSystemComponents.Popover);
31
+ export const Dialog = createComponent("Dialog", defaultDesignSystemComponents.Dialog);
32
+ export const Checkbox = createComponent("Checkbox", defaultDesignSystemComponents.Checkbox);
33
+ export const Switch = createComponent("Switch", defaultDesignSystemComponents.Switch);
34
+ export function Picker(props) {
35
+ const CustomComponent = useDesignSystemComponent("Picker");
36
+ const DefaultComponent = defaultDesignSystemComponents.Picker;
37
+ const fallback = _jsx(DefaultComponent, { ...props });
38
+ if (!CustomComponent || CustomComponent === DefaultComponent)
39
+ return fallback;
40
+ return (_jsx(DesignSystemErrorBoundary, { component: "Picker", fallback: fallback, children: _jsx(CustomComponent, { ...props }) }));
41
+ }
42
+ export function Tabs(props) {
43
+ const CustomComponent = useDesignSystemComponent("Tabs");
44
+ const DefaultComponent = defaultDesignSystemComponents.Tabs;
45
+ const fallback = _jsx(DefaultComponent, { ...props });
46
+ if (!CustomComponent || CustomComponent === DefaultComponent)
47
+ return fallback;
48
+ return (_jsx(DesignSystemErrorBoundary, { component: "Tabs", fallback: fallback, children: _jsx(CustomComponent, { ...props }) }));
49
+ }
50
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/design-system/components.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { DesignSystemDefinition } from "./definition.js";
2
+ import type { DesignSystemComponentName, DesignSystemComponents } from "./types.js";
3
+ export interface DesignSystemContextValue {
4
+ definition?: DesignSystemDefinition;
5
+ legacyActionButton?: DesignSystemComponents["ActionButton"];
6
+ }
7
+ export declare const DesignSystemContext: import("react").Context<DesignSystemContextValue>;
8
+ export declare const LegacyButtonRenderContext: import("react").Context<boolean>;
9
+ export declare function useDesignSystem(): DesignSystemDefinition | undefined;
10
+ export declare function useDesignSystemComponent<Name extends DesignSystemComponentName>(name: Name): DesignSystemComponents[Name] | undefined;
11
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/design-system/context.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,kBAAkB,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,mBAAmB,mDAA8C,CAAC;AAC/E,eAAO,MAAM,yBAAyB,kCAAuB,CAAC;AAE9D,wBAAgB,eAAe,IAAI,sBAAsB,GAAG,SAAS,CAEpE;AAED,wBAAgB,wBAAwB,CACtC,IAAI,SAAS,yBAAyB,EACtC,IAAI,EAAE,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,SAAS,CAQtD"}
@@ -0,0 +1,17 @@
1
+ import { createContext, useContext } from "react";
2
+ export const DesignSystemContext = createContext({});
3
+ export const LegacyButtonRenderContext = createContext(false);
4
+ export function useDesignSystem() {
5
+ return useContext(DesignSystemContext).definition;
6
+ }
7
+ export function useDesignSystemComponent(name) {
8
+ const context = useContext(DesignSystemContext);
9
+ const component = context.definition?.components?.[name];
10
+ if (component)
11
+ return component;
12
+ if (name === "ActionButton" && context.legacyActionButton) {
13
+ return context.legacyActionButton;
14
+ }
15
+ return undefined;
16
+ }
17
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/design-system/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAalD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAA2B,EAAE,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAE9D,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAEtC,IAAU;IACV,MAAM,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,SAAS;QAAE,OAAO,SAAyC,CAAC;IAChE,IAAI,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC,kBAAkD,CAAC;IACpE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DesignSystemComponents } from "./types.js";
2
+ export declare const defaultDesignSystemComponents: DesignSystemComponents;
3
+ //# sourceMappingURL=default-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter.d.ts","sourceRoot":"","sources":["../../src/design-system/default-adapter.tsx"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAAE,sBAAsB,EAAY,MAAM,YAAY,CAAC;AAi0BnE,eAAO,MAAM,6BAA6B,EAAE,sBAkB3C,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconSearch } from "@tabler/icons-react";
3
+ import { createElement, } from "react";
4
+ import { Avatar, AvatarFallback, AvatarImage } from "../ui/avatar.js";
5
+ import { Badge } from "../ui/badge.js";
6
+ import { ButtonBase } from "../ui/button.js";
7
+ import { Card } from "../ui/card.js";
8
+ import { Checkbox as DefaultCheckboxPrimitive } from "../ui/checkbox.js";
9
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "../ui/dialog.js";
10
+ import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "../ui/dropdown-menu.js";
11
+ import { Input } from "../ui/input.js";
12
+ import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover.js";
13
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../ui/select.js";
14
+ import { Skeleton as DefaultSkeletonPrimitive } from "../ui/skeleton.js";
15
+ import { Spinner as DefaultSpinnerPrimitive } from "../ui/spinner.js";
16
+ import { Switch as DefaultSwitchPrimitive } from "../ui/switch.js";
17
+ import { Tabs as DefaultTabsPrimitive, TabsContent, TabsList, TabsTrigger, } from "../ui/tabs.js";
18
+ import { Textarea } from "../ui/textarea.js";
19
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "../ui/tooltip.js";
20
+ import { cn } from "../utils.js";
21
+ function buttonVariant(intent = "neutral", emphasis = "solid") {
22
+ if (emphasis === "ghost")
23
+ return "ghost";
24
+ if (emphasis === "outline")
25
+ return "outline";
26
+ if (intent === "primary")
27
+ return "default";
28
+ if (intent === "danger")
29
+ return "destructive";
30
+ return "secondary";
31
+ }
32
+ function buttonSize(size = "default") {
33
+ if (size === "compact")
34
+ return "sm";
35
+ if (size === "large")
36
+ return "lg";
37
+ return "default";
38
+ }
39
+ const DefaultActionButton = ({ children, intent, emphasis, size, pending, disabled, type = "button", leadingIcon, trailingIcon, onPress, elementRef, ...props }) => (_jsxs(ButtonBase, { ...props, ref: elementRef, type: type, variant: buttonVariant(intent, emphasis), size: buttonSize(size), disabled: disabled || pending, onClick: (event) => onPress?.(event), children: [pending ? _jsx(DefaultSpinnerPrimitive, { "aria-hidden": "true" }) : leadingIcon, children, trailingIcon] }));
40
+ const DefaultIconButton = ({ label, icon, intent, emphasis = "ghost", size, pending, disabled, type = "button", onPress, elementRef, className, ...props }) => (_jsx(ButtonBase, { ...props, ref: elementRef, type: type, variant: buttonVariant(intent, emphasis), size: "icon", className: cn(size === "compact" && "h-8 w-8", size === "large" && "h-12 w-12", className), disabled: disabled || pending, onClick: (event) => onPress?.(event), "aria-label": label, "data-size": size, children: pending ? _jsx(DefaultSpinnerPrimitive, { "aria-hidden": "true" }) : icon }));
41
+ function FieldShell({ label, description, errorMessage, className, style, children, }) {
42
+ return (_jsxs("label", { className: cn("grid gap-1.5", className), style: style, children: [label ? _jsx("span", { className: "text-sm font-medium", children: label }) : null, children, errorMessage ? (_jsx("span", { className: "text-xs text-destructive", role: "alert", children: errorMessage })) : description ? (_jsx("span", { className: "text-xs text-muted-foreground", children: description })) : null] }));
43
+ }
44
+ const DefaultTextField = ({ value, onChange, label, description, errorMessage, invalid, inputRef, leadingContent, trailingContent, className, style, onBlur, onFocus, onKeyDown, ...props }) => (_jsx(FieldShell, { label: label, description: description, errorMessage: errorMessage, className: className, style: style, children: _jsxs("div", { className: "flex items-center gap-2", children: [leadingContent, _jsx(Input, { ...props, ref: inputRef, value: value, "aria-invalid": invalid || undefined, onChange: (event) => onChange(event.currentTarget.value), onBlur: onBlur, onFocus: onFocus, onKeyDown: onKeyDown }), trailingContent] }) }));
45
+ const DefaultTextArea = ({ value, onChange, label, description, errorMessage, invalid, textAreaRef, className, style, onBlur, onFocus, onKeyDown, ...props }) => (_jsx(FieldShell, { label: label, description: description, errorMessage: errorMessage, className: className, style: style, children: _jsx(Textarea, { ...props, ref: textAreaRef, value: value, "aria-invalid": invalid || undefined, onChange: (event) => onChange(event.currentTarget.value), onBlur: onBlur, onFocus: onFocus, onKeyDown: onKeyDown }) }));
46
+ const DefaultSpinner = ({ label, size, className, ...props }) => (_jsx(DefaultSpinnerPrimitive, { ...props, "aria-label": label, className: cn(size === "compact" && "size-3", size === "large" && "size-5", className), "data-size": size, role: label ? "status" : undefined }));
47
+ const DefaultSkeleton = ({ width, height, shape = "rectangle", className, style, ...props }) => (_jsx(DefaultSkeletonPrimitive, { ...props, "aria-hidden": "true", className: cn(shape === "line" && "rounded-sm", shape === "rectangle" && "rounded-md", shape === "circle" && "rounded-full", className), style: { width, height, ...style }, "data-shape": shape }));
48
+ const DefaultStatus = ({ children, tone = "neutral", icon, size, className, ...props }) => (_jsxs(Badge, { ...props, className: cn(size === "compact" && "text-xs", size === "large" && "px-3 py-1 text-sm", className), variant: tone === "danger" ? "destructive" : "secondary", "data-tone": tone, "data-size": size, children: [icon, children] }));
49
+ const DefaultSurface = ({ children, as = "div", elevation = "low", padding = "default", interactive, onPress, className, ...props }) => {
50
+ const onKeyDown = (event) => {
51
+ if (!interactive || (event.key !== "Enter" && event.key !== " "))
52
+ return;
53
+ event.preventDefault();
54
+ onPress?.(event);
55
+ };
56
+ const elementProps = {
57
+ ...props,
58
+ className: cn("rounded-lg border bg-card text-card-foreground", elevation === "none" && "shadow-none", elevation === "low" && "shadow-sm", elevation === "medium" && "shadow-md", padding === "compact" && "p-3", padding === "default" && "p-4", padding === "spacious" && "p-6", interactive && "cursor-pointer", className),
59
+ onClick: (event) => onPress?.(event),
60
+ onKeyDown,
61
+ role: interactive ? "button" : undefined,
62
+ tabIndex: interactive ? 0 : undefined,
63
+ children,
64
+ };
65
+ if (as === "div")
66
+ return _jsx(Card, { ...elementProps });
67
+ return createElement(as, elementProps);
68
+ };
69
+ const DefaultAvatar = ({ name, src, fallback, size, status, imageRef, className, ...props }) => (_jsxs(Avatar, { ...props, className: cn(size === "compact" && "h-8 w-8", size === "default" && "h-10 w-10", size === "large" && "h-12 w-12", className), "data-size": size, "data-status": status, children: [src ? _jsx(AvatarImage, { ref: imageRef, src: src, alt: name }) : null, _jsx(AvatarFallback, { children: fallback ?? name.slice(0, 2).toUpperCase() }), status ? (_jsx("span", { "aria-label": status, className: cn("absolute bottom-0 end-0 h-2.5 w-2.5 rounded-full border-2 border-background", status === "online" && "bg-green-500", status === "offline" && "bg-muted-foreground", status === "busy" && "bg-destructive", status === "away" && "bg-yellow-500"), role: "img" })) : null] }));
70
+ const DefaultTooltip = ({ trigger, content, open, defaultOpen, onOpenChange, delayMs, disabled, portalContainer, placement = "top", align = "center", collisionPadding, className, style, }) => {
71
+ if (disabled)
72
+ return trigger;
73
+ return (_jsx(TooltipProvider, { delayDuration: delayMs, children: _jsxs(Tooltip, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: [_jsx(TooltipTrigger, { asChild: true, children: trigger }), _jsx(TooltipContent, { container: portalContainer, side: placement, align: align, collisionPadding: collisionPadding, className: className, style: style, children: content })] }) }));
74
+ };
75
+ function DefaultMenuItems({ items, onAction, closeOnAction, }) {
76
+ return items.map((item) => item.children?.length ? (_jsxs(DropdownMenuSub, { children: [_jsxs(DropdownMenuSubTrigger, { disabled: item.disabled, children: [item.icon, item.label] }), _jsx(DropdownMenuSubContent, { children: _jsx(DefaultMenuItems, { items: item.children, onAction: onAction, closeOnAction: closeOnAction }) })] }, item.id)) : item.selected !== undefined ? (_jsxs(DropdownMenuCheckboxItem, { checked: item.selected, disabled: item.disabled, onSelect: (event) => {
77
+ if (!closeOnAction)
78
+ event.preventDefault();
79
+ onAction(item.id);
80
+ }, className: item.intent === "danger" ? "text-destructive" : undefined, children: [item.icon, _jsx("span", { className: "min-w-0 flex-1", children: item.label }), item.shortcut ? (_jsx(DropdownMenuShortcut, { children: item.shortcut })) : null] }, item.id)) : (_jsxs(DropdownMenuItem, { disabled: item.disabled, onSelect: (event) => {
81
+ if (!closeOnAction)
82
+ event.preventDefault();
83
+ onAction(item.id);
84
+ }, className: item.intent === "danger" ? "text-destructive" : undefined, children: [item.icon, _jsx("span", { className: "min-w-0 flex-1", children: item.label }), item.shortcut ? (_jsx(DropdownMenuShortcut, { children: item.shortcut })) : null] }, item.id)));
85
+ }
86
+ const DefaultMenu = ({ trigger, items, sections, open, defaultOpen, onOpenChange, onAction, portalContainer, placement = "bottom", align = "start", collisionPadding, className, style, closeOnAction = true, }) => (_jsxs(DropdownMenu, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: trigger }), _jsx(DropdownMenuContent, { container: portalContainer, side: placement, align: align, collisionPadding: collisionPadding, className: className, style: style, children: sections ? (sections.map((section, index) => (_jsxs("div", { children: [index > 0 ? _jsx(DropdownMenuSeparator, {}) : null, section.label ? (_jsx(DropdownMenuLabel, { children: section.label })) : null, _jsx(DefaultMenuItems, { items: section.items, onAction: onAction, closeOnAction: closeOnAction })] }, section.id)))) : items ? (_jsx(DefaultMenuItems, { items: items, onAction: onAction, closeOnAction: closeOnAction })) : null })] }));
87
+ const DefaultPopover = ({ trigger, children, open, defaultOpen, onOpenChange, modal, dismissible = true, portalContainer, placement = "bottom", align = "center", collisionPadding, className, style, }) => (_jsxs(Popover, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, modal: modal, children: [_jsx(PopoverTrigger, { asChild: true, children: trigger }), _jsx(PopoverContent, { container: portalContainer, side: placement, align: align, collisionPadding: collisionPadding, className: className, style: style, onEscapeKeyDown: (event) => {
88
+ if (!dismissible)
89
+ event.preventDefault();
90
+ }, onInteractOutside: (event) => {
91
+ if (!dismissible)
92
+ event.preventDefault();
93
+ }, children: children })] }));
94
+ const DefaultDialog = ({ open, onOpenChange, title, description, children, footer, trigger, size = "medium", dismissible = true, closeLabel, initialFocusRef, restoreFocusRef, portalContainer, className, style, }) => (_jsxs(Dialog, { open: open, onOpenChange: onOpenChange, children: [trigger ? _jsx(DialogTrigger, { asChild: true, children: trigger }) : null, _jsxs(DialogContent, { container: portalContainer, hideClose: !dismissible, closeLabel: closeLabel, style: style, className: cn(size === "small" && "max-w-sm", size === "medium" && "max-w-lg", size === "large" && "max-w-2xl", size === "fullscreen" &&
95
+ "inset-0 h-[100dvh] max-h-none w-full max-w-none translate-x-0 translate-y-0 rounded-none", className), "data-size": size, onOpenAutoFocus: (event) => {
96
+ if (!initialFocusRef?.current)
97
+ return;
98
+ event.preventDefault();
99
+ initialFocusRef.current.focus();
100
+ }, onCloseAutoFocus: (event) => {
101
+ if (!restoreFocusRef?.current)
102
+ return;
103
+ event.preventDefault();
104
+ restoreFocusRef.current.focus();
105
+ }, onEscapeKeyDown: (event) => {
106
+ if (!dismissible)
107
+ event.preventDefault();
108
+ }, onInteractOutside: (event) => {
109
+ if (!dismissible)
110
+ event.preventDefault();
111
+ }, children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: title }), description ? (_jsx(DialogDescription, { children: description })) : null] }), children, footer ? _jsx(DialogFooter, { children: footer }) : null] })] }));
112
+ const DefaultPicker = ({ mode, options, value, onChange, label, description, errorMessage, placeholder, searchValue = "", onSearchChange, open, onOpenChange, emptyContent, loadingContent, loading, required, disabled, invalid, pickerRef, portalContainer, className, style, ...props }) => {
113
+ const selected = options.find((option) => option.value === value);
114
+ const filtered = mode === "combobox" && searchValue
115
+ ? options.filter((option) => [option.textValue, option.label, ...(option.keywords ?? [])]
116
+ .filter((part) => typeof part === "string")
117
+ .join(" ")
118
+ .toLowerCase()
119
+ .includes(searchValue.toLowerCase()))
120
+ : options;
121
+ if (mode === "select") {
122
+ return (_jsx(FieldShell, { label: label, description: description, errorMessage: errorMessage, className: className, style: style, children: _jsxs(Select, { value: value == null ? undefined : String(value), open: open, onOpenChange: onOpenChange, onValueChange: (next) => {
123
+ const option = options.find((candidate) => String(candidate.value) === next);
124
+ onChange(option?.value ?? null);
125
+ }, required: required, disabled: disabled, children: [_jsx(SelectTrigger, { ...props, ref: pickerRef, "aria-invalid": invalid || undefined, children: _jsx(SelectValue, { placeholder: placeholder, children: selected?.label }) }), _jsx(SelectContent, { container: portalContainer, children: loading
126
+ ? loadingContent
127
+ : options.length
128
+ ? options.map((option) => (_jsx(SelectItem, { value: String(option.value), disabled: option.disabled, children: option.label }, option.value)))
129
+ : emptyContent })] }) }));
130
+ }
131
+ return (_jsx(FieldShell, { label: label, description: description, errorMessage: errorMessage, className: className, style: style, children: _jsxs(Popover, { open: open, onOpenChange: onOpenChange, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(ButtonBase, { ref: pickerRef, type: "button", variant: "outline", disabled: disabled, "aria-invalid": invalid || undefined, children: selected?.label ?? placeholder }) }), _jsxs(PopoverContent, { container: portalContainer, className: "w-72 p-2", children: [_jsxs("label", { className: "flex items-center gap-2 border-b px-2 pb-2", children: [_jsx(IconSearch, { className: "size-4 text-muted-foreground" }), _jsx(Input, { value: searchValue, onChange: (event) => onSearchChange?.(event.currentTarget.value), className: "h-8 border-0 p-0 shadow-none focus-visible:ring-0" })] }), _jsx("div", { className: "max-h-64 overflow-auto py-1", role: "listbox", children: loading
132
+ ? loadingContent
133
+ : filtered.length
134
+ ? filtered.map((option) => (_jsxs("button", { type: "button", role: "option", "aria-selected": option.value === value, disabled: option.disabled, className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-start text-sm hover:bg-accent disabled:opacity-50", onClick: () => {
135
+ onChange(option.value);
136
+ onOpenChange?.(false);
137
+ }, children: [option.icon, _jsx("span", { children: option.label })] }, option.value)))
138
+ : emptyContent })] })] }) }));
139
+ };
140
+ const DefaultCheckbox = ({ checked, onChange, label, description, indeterminate, inputRef, invalid, ...props }) => (_jsxs("label", { className: "flex items-start gap-2", children: [_jsx(DefaultCheckboxPrimitive, { ...props, ref: inputRef, checked: indeterminate ? "indeterminate" : checked, "aria-invalid": invalid || undefined, onCheckedChange: (next) => onChange(next === true) }), label || description ? (_jsxs("span", { className: "grid gap-0.5", children: [label ? _jsx("span", { className: "text-sm", children: label }) : null, description ? (_jsx("span", { className: "text-xs text-muted-foreground", children: description })) : null] })) : null] }));
141
+ const DefaultSwitch = ({ checked, onChange, label, description, inputRef, ...props }) => (_jsxs("label", { className: "flex items-start gap-2", children: [_jsx(DefaultSwitchPrimitive, { ...props, ref: inputRef, checked: checked, onCheckedChange: onChange }), label || description ? (_jsxs("span", { className: "grid gap-0.5", children: [label ? _jsx("span", { className: "text-sm", children: label }) : null, description ? (_jsx("span", { className: "text-xs text-muted-foreground", children: description })) : null] })) : null] }));
142
+ const DefaultTabs = ({ items, value, onChange, orientation, activationMode, className, style, ...props }) => (_jsxs(DefaultTabsPrimitive, { ...props, value: String(value), onValueChange: (next) => {
143
+ const item = items.find((candidate) => String(candidate.value) === next);
144
+ if (item)
145
+ onChange(item.value);
146
+ }, orientation: orientation, activationMode: activationMode, className: className, style: style, children: [_jsx(TabsList, { children: items.map((item) => (_jsxs(TabsTrigger, { value: String(item.value), disabled: item.disabled, children: [item.icon, item.label] }, item.value))) }), items.map((item) => (_jsx(TabsContent, { value: String(item.value), children: item.content }, item.value)))] }));
147
+ export const defaultDesignSystemComponents = {
148
+ ActionButton: DefaultActionButton,
149
+ IconButton: DefaultIconButton,
150
+ TextField: DefaultTextField,
151
+ TextArea: DefaultTextArea,
152
+ Spinner: DefaultSpinner,
153
+ Skeleton: DefaultSkeleton,
154
+ Status: DefaultStatus,
155
+ Surface: DefaultSurface,
156
+ Avatar: DefaultAvatar,
157
+ Tooltip: DefaultTooltip,
158
+ Menu: DefaultMenu,
159
+ Popover: DefaultPopover,
160
+ Dialog: DefaultDialog,
161
+ Picker: DefaultPicker,
162
+ Checkbox: DefaultCheckbox,
163
+ Switch: DefaultSwitch,
164
+ Tabs: DefaultTabs,
165
+ };
166
+ //# sourceMappingURL=default-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter.js","sourceRoot":"","sources":["../../src/design-system/default-adapter.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=default-adapter.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter.spec.d.ts","sourceRoot":"","sources":["../../src/design-system/default-adapter.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { Children, isValidElement, } from "react";
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { defaultDesignSystemComponents } from "./default-adapter.js";
6
+ function findElement(node, predicate) {
7
+ if (Array.isArray(node)) {
8
+ for (const child of node) {
9
+ const match = findElement(child, predicate);
10
+ if (match)
11
+ return match;
12
+ }
13
+ return undefined;
14
+ }
15
+ if (!isValidElement(node))
16
+ return undefined;
17
+ const element = node;
18
+ if (predicate(element))
19
+ return element;
20
+ for (const child of Children.toArray(element.props.children)) {
21
+ const match = findElement(child, predicate);
22
+ if (match)
23
+ return match;
24
+ }
25
+ return undefined;
26
+ }
27
+ function renderComponent(component, props) {
28
+ return component(props);
29
+ }
30
+ describe("default design system adapter", () => {
31
+ it("maps visual size and shape props to default styles", () => {
32
+ const iconButton = renderComponent(defaultDesignSystemComponents.IconButton, {
33
+ label: "More",
34
+ icon: _jsx("span", {}),
35
+ size: "large",
36
+ });
37
+ const spinner = renderComponent(defaultDesignSystemComponents.Spinner, {
38
+ size: "compact",
39
+ });
40
+ const skeleton = renderComponent(defaultDesignSystemComponents.Skeleton, {
41
+ shape: "circle",
42
+ });
43
+ const avatar = renderComponent(defaultDesignSystemComponents.Avatar, {
44
+ name: "Ada Lovelace",
45
+ size: "compact",
46
+ status: "online",
47
+ });
48
+ expect(iconButton.props.className).toContain("h-12");
49
+ expect(spinner.props.className).toContain("size-3");
50
+ expect(skeleton.props.className).toContain("rounded-full");
51
+ expect(findElement(avatar, (element) => element.props.role === "img")?.props
52
+ .className).toContain("bg-green-500");
53
+ });
54
+ it("prevents outside dismissal when a dialog is not dismissible", () => {
55
+ const dialog = renderComponent(defaultDesignSystemComponents.Dialog, {
56
+ open: true,
57
+ onOpenChange: vi.fn(),
58
+ title: "Confirm",
59
+ children: _jsx("p", { children: "Confirm this action" }),
60
+ dismissible: false,
61
+ });
62
+ const content = findElement(dialog, (element) => typeof element.props.onInteractOutside === "function");
63
+ const preventDefault = vi.fn();
64
+ content?.props.onInteractOutside?.({ preventDefault });
65
+ expect(preventDefault).toHaveBeenCalledOnce();
66
+ });
67
+ it("honors menu selection state and closeOnAction", () => {
68
+ const onAction = vi.fn();
69
+ const menu = renderComponent(defaultDesignSystemComponents.Menu, {
70
+ trigger: _jsx("button", { type: "button", children: "Open" }),
71
+ items: [{ id: "selected", label: "Selected", selected: true }],
72
+ onAction,
73
+ closeOnAction: false,
74
+ });
75
+ const content = menu.props.children[1];
76
+ const items = content.props.children;
77
+ const renderedItems = items.type(items.props);
78
+ const item = findElement(renderedItems, (element) => element.props.checked === true);
79
+ const preventDefault = vi.fn();
80
+ item?.props.onSelect?.({ preventDefault });
81
+ expect(item?.props.checked).toBe(true);
82
+ expect(preventDefault).toHaveBeenCalledOnce();
83
+ expect(onAction).toHaveBeenCalledWith("selected");
84
+ });
85
+ it("maps checkbox invalid state to aria-invalid", () => {
86
+ const checkbox = renderComponent(defaultDesignSystemComponents.Checkbox, {
87
+ checked: false,
88
+ onChange: vi.fn(),
89
+ invalid: true,
90
+ });
91
+ const input = findElement(checkbox, (element) => element.props["aria-invalid"] === true);
92
+ expect(input?.props["aria-invalid"]).toBe(true);
93
+ expect(input?.props.invalid).toBeUndefined();
94
+ });
95
+ });
96
+ //# sourceMappingURL=default-adapter.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter.spec.js","sourceRoot":"","sources":["../../src/design-system/default-adapter.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { DesignSystemTheme } from "./theme.js";
2
+ import type { DesignSystemComponents } from "./types.js";
3
+ export interface DesignSystemDefinition {
4
+ name?: string;
5
+ components?: Partial<DesignSystemComponents>;
6
+ theme?: DesignSystemTheme;
7
+ }
8
+ export declare function defineDesignSystem<const Definition extends DesignSystemDefinition>(definition: Definition): Definition;
9
+ //# sourceMappingURL=definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/design-system/definition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7C,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,CAAC,UAAU,SAAS,sBAAsB,EAC/C,UAAU,EAAE,UAAU,GAAG,UAAU,CAEpC"}
@@ -0,0 +1,4 @@
1
+ export function defineDesignSystem(definition) {
2
+ return definition;
3
+ }
4
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/design-system/definition.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAEhC,UAAsB;IACtB,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=design-system.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-system.spec.d.ts","sourceRoot":"","sources":["../../src/design-system/design-system.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { act } from "react";
4
+ import { createRoot } from "react-dom/client";
5
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { ToolkitProvider } from "../provider.js";
7
+ import { Button } from "../ui/button.js";
8
+ import { ActionButton } from "./components.js";
9
+ import { defaultDesignSystemComponents } from "./default-adapter.js";
10
+ import { defineDesignSystem } from "./definition.js";
11
+ import { defineTheme } from "./theme.js";
12
+ import { DESIGN_SYSTEM_CONTRACT_VERSION } from "./types.js";
13
+ describe("design-system contract", () => {
14
+ let container;
15
+ let root;
16
+ beforeEach(() => {
17
+ vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", true);
18
+ container = document.createElement("div");
19
+ document.body.appendChild(container);
20
+ root = createRoot(container);
21
+ });
22
+ afterEach(() => {
23
+ act(() => root.unmount());
24
+ container.remove();
25
+ vi.restoreAllMocks();
26
+ vi.unstubAllGlobals();
27
+ });
28
+ it("locks the seventeen semantic component names", () => {
29
+ expect(DESIGN_SYSTEM_CONTRACT_VERSION).toBe(1);
30
+ expect(Object.keys(defaultDesignSystemComponents).sort()).toEqual([
31
+ "ActionButton",
32
+ "Avatar",
33
+ "Checkbox",
34
+ "Dialog",
35
+ "IconButton",
36
+ "Menu",
37
+ "Picker",
38
+ "Popover",
39
+ "Skeleton",
40
+ "Spinner",
41
+ "Status",
42
+ "Surface",
43
+ "Switch",
44
+ "Tabs",
45
+ "TextArea",
46
+ "TextField",
47
+ "Tooltip",
48
+ ].sort());
49
+ });
50
+ it("preserves typed design-system and theme definitions", () => {
51
+ const theme = defineTheme({
52
+ colors: {
53
+ light: { primary: "oklch(55% 0.2 260)" },
54
+ },
55
+ radius: "0.75rem",
56
+ });
57
+ const definition = defineDesignSystem({
58
+ name: "Acme",
59
+ theme,
60
+ components: {},
61
+ });
62
+ expect(definition).toEqual({ name: "Acme", theme, components: {} });
63
+ });
64
+ it("prefers ActionButton over the legacy Button override", () => {
65
+ const warning = vi.spyOn(console, "warn").mockImplementation(() => { });
66
+ const LegacyButton = () => _jsx("button", { "data-adapter": "legacy" });
67
+ const CustomActionButton = () => _jsx("button", { "data-adapter": "semantic" });
68
+ act(() => {
69
+ root.render(_jsx(ToolkitProvider, { components: { Button: LegacyButton }, designSystem: {
70
+ components: { ActionButton: CustomActionButton },
71
+ }, children: _jsx(Button, { children: "Save" }) }));
72
+ });
73
+ expect(container.querySelector("[data-adapter=semantic]")).not.toBeNull();
74
+ expect(container.querySelector("[data-adapter=legacy]")).toBeNull();
75
+ expect(warning).toHaveBeenCalledOnce();
76
+ });
77
+ it("warns when nested providers combine the effective ActionButton APIs", () => {
78
+ const warning = vi.spyOn(console, "warn").mockImplementation(() => { });
79
+ const LegacyButton = () => _jsx("button", { "data-adapter": "legacy" });
80
+ const CustomActionButton = () => _jsx("button", { "data-adapter": "semantic" });
81
+ act(() => {
82
+ root.render(_jsx(ToolkitProvider, { designSystem: {
83
+ components: { ActionButton: CustomActionButton },
84
+ }, children: _jsx(ToolkitProvider, { components: { Button: LegacyButton }, children: _jsx(Button, { children: "Save" }) }) }));
85
+ });
86
+ expect(container.querySelector("[data-adapter=semantic]")).not.toBeNull();
87
+ expect(warning).toHaveBeenCalledOnce();
88
+ });
89
+ it("forwards semantic intent independently from the legacy visual variant", () => {
90
+ const received = vi.fn();
91
+ const CustomActionButton = (props) => {
92
+ received(props.intent, props.emphasis);
93
+ return _jsx("button", { children: props.children });
94
+ };
95
+ act(() => {
96
+ root.render(_jsx(ToolkitProvider, { designSystem: { components: { ActionButton: CustomActionButton } }, children: _jsx(Button, { variant: "ghost", intent: "danger", emphasis: "outline", children: "Remove" }) }));
97
+ });
98
+ expect(received).toHaveBeenCalledWith("danger", "outline");
99
+ });
100
+ it("uses legacy Button as the lowest-precedence ActionButton adapter", () => {
101
+ const LegacyButton = (props) => (_jsx("button", { ...props, "data-adapter": "legacy" }));
102
+ act(() => {
103
+ root.render(_jsx(ToolkitProvider, { components: { Button: LegacyButton }, children: _jsx(ActionButton, { children: "Save" }) }));
104
+ });
105
+ expect(container.querySelector("[data-adapter=legacy]")?.textContent).toBe("Save");
106
+ });
107
+ it("isolates a broken customer component and renders the default control", () => {
108
+ vi.spyOn(console, "error").mockImplementation(() => { });
109
+ const BrokenActionButton = () => {
110
+ throw new Error("broken adapter");
111
+ };
112
+ act(() => {
113
+ root.render(_jsx(ToolkitProvider, { designSystem: {
114
+ components: { ActionButton: BrokenActionButton },
115
+ }, children: _jsx(ActionButton, { children: "Fallback action" }) }));
116
+ });
117
+ expect(container.querySelector("button")?.textContent).toBe("Fallback action");
118
+ expect(console.error).toHaveBeenCalled();
119
+ });
120
+ });
121
+ //# sourceMappingURL=design-system.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-system.spec.js","sourceRoot":"","sources":["../../src/design-system/design-system.spec.tsx"],"names":[],"mappings":"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"}