@agent-native/toolkit 0.9.1 → 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 (162) hide show
  1. package/agent-native.eject.json +71 -0
  2. package/dist/chat-history/ChatHistoryRail.d.ts +15 -1
  3. package/dist/chat-history/ChatHistoryRail.d.ts.map +1 -1
  4. package/dist/chat-history/ChatHistoryRail.js +26 -13
  5. package/dist/chat-history/ChatHistoryRail.js.map +1 -1
  6. package/dist/chat-history/ChatHistoryRail.spec.js +77 -1
  7. package/dist/chat-history/ChatHistoryRail.spec.js.map +1 -1
  8. package/dist/chat-history/index.d.ts +2 -1
  9. package/dist/chat-history/index.d.ts.map +1 -1
  10. package/dist/chat-history/index.js +2 -1
  11. package/dist/chat-history/index.js.map +1 -1
  12. package/dist/chat-history/useChatHistoryRailController.d.ts +26 -0
  13. package/dist/chat-history/useChatHistoryRailController.d.ts.map +1 -0
  14. package/dist/chat-history/useChatHistoryRailController.js +36 -0
  15. package/dist/chat-history/useChatHistoryRailController.js.map +1 -0
  16. package/dist/chat-history/useChatHistoryRailController.spec.d.ts +2 -0
  17. package/dist/chat-history/useChatHistoryRailController.spec.d.ts.map +1 -0
  18. package/dist/chat-history/useChatHistoryRailController.spec.js +101 -0
  19. package/dist/chat-history/useChatHistoryRailController.spec.js.map +1 -0
  20. package/dist/chat-history.css +2 -0
  21. package/dist/composer/ComposerPlusMenu.js +1 -1
  22. package/dist/composer/ComposerPlusMenu.js.map +1 -1
  23. package/dist/composer/PromptComposer.d.ts.map +1 -1
  24. package/dist/composer/PromptComposer.js +22 -4
  25. package/dist/composer/PromptComposer.js.map +1 -1
  26. package/dist/composer/useRealtimeVoiceMode.d.ts +7 -0
  27. package/dist/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  28. package/dist/composer/useRealtimeVoiceMode.js +91 -19
  29. package/dist/composer/useRealtimeVoiceMode.js.map +1 -1
  30. package/dist/composer/useRealtimeVoiceMode.spec.js +58 -9
  31. package/dist/composer/useRealtimeVoiceMode.spec.js.map +1 -1
  32. package/dist/conformance/__fixtures__/css-in-js-adapter.d.ts +7 -0
  33. package/dist/conformance/__fixtures__/css-in-js-adapter.d.ts.map +1 -0
  34. package/dist/conformance/__fixtures__/css-in-js-adapter.js +84 -0
  35. package/dist/conformance/__fixtures__/css-in-js-adapter.js.map +1 -0
  36. package/dist/conformance/conformance.spec.d.ts +2 -0
  37. package/dist/conformance/conformance.spec.d.ts.map +1 -0
  38. package/dist/conformance/conformance.spec.js +58 -0
  39. package/dist/conformance/conformance.spec.js.map +1 -0
  40. package/dist/conformance/index.d.ts +4 -0
  41. package/dist/conformance/index.d.ts.map +1 -0
  42. package/dist/conformance/index.js +4 -0
  43. package/dist/conformance/index.js.map +1 -0
  44. package/dist/conformance/runner.d.ts +12 -0
  45. package/dist/conformance/runner.d.ts.map +1 -0
  46. package/dist/conformance/runner.js +441 -0
  47. package/dist/conformance/runner.js.map +1 -0
  48. package/dist/conformance/types.d.ts +26 -0
  49. package/dist/conformance/types.d.ts.map +1 -0
  50. package/dist/conformance/types.js +13 -0
  51. package/dist/conformance/types.js.map +1 -0
  52. package/dist/conformance/version.d.ts +6 -0
  53. package/dist/conformance/version.d.ts.map +1 -0
  54. package/dist/conformance/version.js +14 -0
  55. package/dist/conformance/version.js.map +1 -0
  56. package/dist/design-system/components.d.ts +64 -0
  57. package/dist/design-system/components.d.ts.map +1 -0
  58. package/dist/design-system/components.js +50 -0
  59. package/dist/design-system/components.js.map +1 -0
  60. package/dist/design-system/context.d.ts +11 -0
  61. package/dist/design-system/context.d.ts.map +1 -0
  62. package/dist/design-system/context.js +17 -0
  63. package/dist/design-system/context.js.map +1 -0
  64. package/dist/design-system/default-adapter.d.ts +3 -0
  65. package/dist/design-system/default-adapter.d.ts.map +1 -0
  66. package/dist/design-system/default-adapter.js +166 -0
  67. package/dist/design-system/default-adapter.js.map +1 -0
  68. package/dist/design-system/default-adapter.spec.d.ts +2 -0
  69. package/dist/design-system/default-adapter.spec.d.ts.map +1 -0
  70. package/dist/design-system/default-adapter.spec.js +96 -0
  71. package/dist/design-system/default-adapter.spec.js.map +1 -0
  72. package/dist/design-system/definition.d.ts +9 -0
  73. package/dist/design-system/definition.d.ts.map +1 -0
  74. package/dist/design-system/definition.js +4 -0
  75. package/dist/design-system/definition.js.map +1 -0
  76. package/dist/design-system/design-system.spec.d.ts +2 -0
  77. package/dist/design-system/design-system.spec.d.ts.map +1 -0
  78. package/dist/design-system/design-system.spec.js +121 -0
  79. package/dist/design-system/design-system.spec.js.map +1 -0
  80. package/dist/design-system/error-boundary.d.ts +18 -0
  81. package/dist/design-system/error-boundary.d.ts.map +1 -0
  82. package/dist/design-system/error-boundary.js +16 -0
  83. package/dist/design-system/error-boundary.js.map +1 -0
  84. package/dist/design-system/index.d.ts +8 -0
  85. package/dist/design-system/index.d.ts.map +1 -0
  86. package/dist/design-system/index.js +8 -0
  87. package/dist/design-system/index.js.map +1 -0
  88. package/dist/design-system/theme.d.ts +30 -0
  89. package/dist/design-system/theme.d.ts.map +1 -0
  90. package/dist/design-system/theme.js +95 -0
  91. package/dist/design-system/theme.js.map +1 -0
  92. package/dist/design-system/theme.spec.d.ts +2 -0
  93. package/dist/design-system/theme.spec.d.ts.map +1 -0
  94. package/dist/design-system/theme.spec.js +43 -0
  95. package/dist/design-system/theme.spec.js.map +1 -0
  96. package/dist/design-system/types.d.ts +288 -0
  97. package/dist/design-system/types.d.ts.map +1 -0
  98. package/dist/design-system/types.js +2 -0
  99. package/dist/design-system/types.js.map +1 -0
  100. package/dist/provider.d.ts +4 -3
  101. package/dist/provider.d.ts.map +1 -1
  102. package/dist/provider.js +46 -4
  103. package/dist/provider.js.map +1 -1
  104. package/dist/ui/button.d.ts +5 -0
  105. package/dist/ui/button.d.ts.map +1 -1
  106. package/dist/ui/button.js +25 -4
  107. package/dist/ui/button.js.map +1 -1
  108. package/dist/ui/dialog.d.ts +4 -0
  109. package/dist/ui/dialog.d.ts.map +1 -1
  110. package/dist/ui/dialog.js +2 -2
  111. package/dist/ui/dialog.js.map +1 -1
  112. package/dist/ui/popover.d.ts +1 -0
  113. package/dist/ui/popover.d.ts.map +1 -1
  114. package/dist/ui/popover.js +2 -2
  115. package/dist/ui/popover.js.map +1 -1
  116. package/dist/ui/select.d.ts +3 -1
  117. package/dist/ui/select.d.ts.map +1 -1
  118. package/dist/ui/select.js +1 -1
  119. package/dist/ui/select.js.map +1 -1
  120. package/dist/ui/sidebar.d.ts +6 -2
  121. package/dist/ui/sidebar.d.ts.map +1 -1
  122. package/dist/ui/sidebar.js +12 -15
  123. package/dist/ui/sidebar.js.map +1 -1
  124. package/dist/ui/tooltip.d.ts +3 -1
  125. package/dist/ui/tooltip.d.ts.map +1 -1
  126. package/dist/ui/tooltip.js +2 -2
  127. package/dist/ui/tooltip.js.map +1 -1
  128. package/package.json +31 -1
  129. package/src/chat-history/ChatHistoryRail.spec.tsx +174 -0
  130. package/src/chat-history/ChatHistoryRail.tsx +100 -39
  131. package/src/chat-history/index.ts +9 -0
  132. package/src/chat-history/useChatHistoryRailController.spec.tsx +131 -0
  133. package/src/chat-history/useChatHistoryRailController.ts +76 -0
  134. package/src/chat-history.css +2 -0
  135. package/src/composer/ComposerPlusMenu.tsx +11 -8
  136. package/src/composer/PromptComposer.tsx +27 -6
  137. package/src/composer/useRealtimeVoiceMode.spec.ts +82 -8
  138. package/src/composer/useRealtimeVoiceMode.tsx +107 -22
  139. package/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
  140. package/src/conformance/conformance.spec.tsx +83 -0
  141. package/src/conformance/index.ts +3 -0
  142. package/src/conformance/runner.tsx +710 -0
  143. package/src/conformance/types.ts +45 -0
  144. package/src/conformance/version.ts +22 -0
  145. package/src/design-system/components.tsx +146 -0
  146. package/src/design-system/context.tsx +31 -0
  147. package/src/design-system/default-adapter.spec.tsx +143 -0
  148. package/src/design-system/default-adapter.tsx +915 -0
  149. package/src/design-system/definition.ts +14 -0
  150. package/src/design-system/design-system.spec.tsx +183 -0
  151. package/src/design-system/error-boundary.tsx +37 -0
  152. package/src/design-system/index.ts +7 -0
  153. package/src/design-system/theme.spec.ts +61 -0
  154. package/src/design-system/theme.ts +145 -0
  155. package/src/design-system/types.ts +363 -0
  156. package/src/provider.tsx +98 -5
  157. package/src/ui/button.tsx +95 -6
  158. package/src/ui/dialog.tsx +48 -23
  159. package/src/ui/popover.tsx +16 -2
  160. package/src/ui/select.tsx +7 -3
  161. package/src/ui/sidebar.tsx +47 -48
  162. package/src/ui/tooltip.tsx +7 -3
@@ -0,0 +1,58 @@
1
+ // @vitest-environment happy-dom
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { defaultDesignSystemComponents } from "../design-system/default-adapter.js";
4
+ import { DESIGN_SYSTEM_CONTRACT_VERSION } from "../design-system/types.js";
5
+ import { cssInJsFixtureAdapter } from "./__fixtures__/css-in-js-adapter.js";
6
+ import { assertDesignSystemConformance, DESIGN_SYSTEM_CONFORMANCE_CHECKS, runDesignSystemConformance, } from "./runner.js";
7
+ import { assertDesignSystemContractVersion, DESIGN_SYSTEM_CONTRACT_EVOLUTION_POLICY, } from "./version.js";
8
+ class ResizeObserverStub {
9
+ observe() { }
10
+ unobserve() { }
11
+ disconnect() { }
12
+ }
13
+ describe("design-system conformance kit", () => {
14
+ beforeEach(() => {
15
+ vi.stubGlobal("IS_REACT_ACT_ENVIRONMENT", false);
16
+ vi.stubGlobal("ResizeObserver", ResizeObserverStub);
17
+ HTMLElement.prototype.scrollIntoView = vi.fn();
18
+ HTMLElement.prototype.hasPointerCapture = vi.fn(() => false);
19
+ HTMLElement.prototype.setPointerCapture = vi.fn();
20
+ HTMLElement.prototype.releasePointerCapture = vi.fn();
21
+ });
22
+ afterEach(() => {
23
+ document.body.replaceChildren();
24
+ vi.restoreAllMocks();
25
+ vi.unstubAllGlobals();
26
+ });
27
+ it("publishes named coverage for all seventeen components and overlay concerns", () => {
28
+ const covered = new Set(DESIGN_SYSTEM_CONFORMANCE_CHECKS.flatMap((check) => check.components));
29
+ expect(covered.size).toBe(17);
30
+ expect(DESIGN_SYSTEM_CONFORMANCE_CHECKS.map((check) => check.id)).toEqual(expect.arrayContaining([
31
+ "overlay.portal-and-z-index-stacking",
32
+ "overlay.focus-interoperability",
33
+ ]));
34
+ });
35
+ it("enforces the published contract evolution policy", () => {
36
+ expect(DESIGN_SYSTEM_CONTRACT_EVOLUTION_POLICY.minor).toContain("optional props");
37
+ expect(DESIGN_SYSTEM_CONTRACT_EVOLUTION_POLICY.major).toContain("behavioral");
38
+ expect(() => assertDesignSystemContractVersion(DESIGN_SYSTEM_CONTRACT_VERSION)).not.toThrow();
39
+ expect(() => assertDesignSystemContractVersion(2)).toThrow(/incompatible/);
40
+ });
41
+ it("passes the styling-independent CSS-in-JS fixture", async () => {
42
+ const report = await assertDesignSystemConformance({
43
+ adapterName: "CSS-in-JS fixture",
44
+ components: cssInJsFixtureAdapter,
45
+ contractVersion: DESIGN_SYSTEM_CONTRACT_VERSION,
46
+ });
47
+ expect(report.passed).toBe(true);
48
+ });
49
+ it("passes the default shadcn and Radix adapter", async () => {
50
+ const report = await runDesignSystemConformance({
51
+ adapterName: "Toolkit default",
52
+ components: defaultDesignSystemComponents,
53
+ contractVersion: DESIGN_SYSTEM_CONTRACT_VERSION,
54
+ });
55
+ expect(report.results.filter((result) => !result.passed)).toEqual([]);
56
+ });
57
+ });
58
+ //# sourceMappingURL=conformance.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.spec.js","sourceRoot":"","sources":["../../src/conformance/conformance.spec.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./runner.js";
2
+ export * from "./types.js";
3
+ export * from "./version.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conformance/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./runner.js";
2
+ export * from "./types.js";
3
+ export * from "./version.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conformance/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from "react";
2
+ import type { DesignSystemComponents } from "../design-system/types.js";
3
+ import type { DesignSystemConformanceCategory, DesignSystemConformanceReport, RunDesignSystemConformanceOptions } from "./types.js";
4
+ export declare const DESIGN_SYSTEM_CONFORMANCE_CHECKS: {
5
+ id: string;
6
+ category: DesignSystemConformanceCategory;
7
+ components: readonly (keyof DesignSystemComponents)[];
8
+ }[];
9
+ export declare function runDesignSystemConformance({ adapterName, components, contractVersion, document: suppliedDocument, }: RunDesignSystemConformanceOptions): Promise<DesignSystemConformanceReport>;
10
+ export declare function assertDesignSystemConformance(options: RunDesignSystemConformanceOptions): Promise<DesignSystemConformanceReport>;
11
+ export declare function renderDesignSystemConformanceFixture(components: DesignSystemComponents): ReactNode;
12
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/conformance/runner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EACV,+BAA+B,EAE/B,6BAA6B,EAC7B,iCAAiC,EAClC,MAAM,YAAY,CAAC;AA8iBpB,eAAO,MAAM,gCAAgC;;;;GAE5C,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,EAC/C,WAA8B,EAC9B,UAAU,EACV,eAAe,EACf,QAAQ,EAAE,gBAAgB,GAC3B,EAAE,iCAAiC,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAyG5E;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,6BAA6B,CAAC,CAOxC;AAED,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,sBAAsB,GACjC,SAAS,CAKX"}
@@ -0,0 +1,441 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { createElement, useRef, useState, } from "react";
3
+ import { flushSync } from "react-dom";
4
+ import { createRoot } from "react-dom/client";
5
+ import { DESIGN_SYSTEM_CONTRACT_VERSION } from "../design-system/types.js";
6
+ import { assertDesignSystemContractVersion } from "./version.js";
7
+ const contractComponentNames = [
8
+ "ActionButton",
9
+ "IconButton",
10
+ "TextField",
11
+ "TextArea",
12
+ "Spinner",
13
+ "Skeleton",
14
+ "Status",
15
+ "Surface",
16
+ "Avatar",
17
+ "Tooltip",
18
+ "Menu",
19
+ "Popover",
20
+ "Dialog",
21
+ "Picker",
22
+ "Checkbox",
23
+ "Switch",
24
+ "Tabs",
25
+ ];
26
+ function invariant(value, message) {
27
+ if (!value)
28
+ throw new Error(message);
29
+ }
30
+ function dispatch(element, event) {
31
+ flushSync(() => element.dispatchEvent(event));
32
+ }
33
+ function click(element, document) {
34
+ for (const type of ["pointerdown", "mousedown"]) {
35
+ dispatch(element, new document.defaultView.MouseEvent(type, {
36
+ bubbles: true,
37
+ cancelable: true,
38
+ button: 0,
39
+ }));
40
+ }
41
+ dispatch(element, new document.defaultView.MouseEvent("click", {
42
+ bubbles: true,
43
+ cancelable: true,
44
+ button: 0,
45
+ }));
46
+ }
47
+ function keydown(element, key, document) {
48
+ dispatch(element, new document.defaultView.KeyboardEvent("keydown", {
49
+ key,
50
+ bubbles: true,
51
+ cancelable: true,
52
+ }));
53
+ }
54
+ function input(element, value) {
55
+ const prototype = element instanceof element.ownerDocument.defaultView.HTMLTextAreaElement
56
+ ? element.ownerDocument.defaultView.HTMLTextAreaElement.prototype
57
+ : element.ownerDocument.defaultView.HTMLInputElement.prototype;
58
+ Object.getOwnPropertyDescriptor(prototype, "value")?.set?.call(element, value);
59
+ dispatch(element, new element.ownerDocument.defaultView.Event("input", {
60
+ bubbles: true,
61
+ cancelable: true,
62
+ }));
63
+ }
64
+ function elementWithText(document, selector, text) {
65
+ return [...document.querySelectorAll(selector)].find((element) => element.textContent?.includes(text));
66
+ }
67
+ const checks = [
68
+ {
69
+ id: "contract.components",
70
+ category: "contract",
71
+ components: contractComponentNames,
72
+ run: ({ components }) => {
73
+ for (const name of contractComponentNames) {
74
+ invariant(typeof components[name] === "function", `${name} must be supplied as a React component.`);
75
+ }
76
+ },
77
+ },
78
+ {
79
+ id: "leaf.action-button",
80
+ category: "leaf",
81
+ components: ["ActionButton"],
82
+ run: ({ components, document, mount, unmount }) => {
83
+ let presses = 0;
84
+ const probe = mount(_jsx(components.ActionButton, { intent: "danger", emphasis: "outline", size: "compact", onPress: () => presses++, children: "Remove" }));
85
+ const button = probe.container.querySelector("button");
86
+ invariant(button, "ActionButton must render an operable button.");
87
+ click(button, document);
88
+ invariant(presses === 1, "ActionButton must call onPress once.");
89
+ unmount(probe);
90
+ },
91
+ },
92
+ {
93
+ id: "leaf.icon-button",
94
+ category: "leaf",
95
+ components: ["IconButton"],
96
+ run: ({ components, document, mount, unmount }) => {
97
+ let presses = 0;
98
+ const probe = mount(_jsx(components.IconButton, { label: "Close panel", icon: _jsx("span", { "aria-hidden": "true", children: "x" }), onPress: () => presses++ }));
99
+ const button = probe.container.querySelector('button[aria-label="Close panel"]');
100
+ invariant(button, "IconButton must expose its label as an accessible name.");
101
+ click(button, document);
102
+ invariant(presses === 1, "IconButton must call onPress once.");
103
+ unmount(probe);
104
+ },
105
+ },
106
+ {
107
+ id: "leaf.text-field",
108
+ category: "leaf",
109
+ components: ["TextField"],
110
+ run: ({ components, mount, unmount }) => {
111
+ let value = "";
112
+ const probe = mount(_jsx(components.TextField, { "aria-label": "Project name", value: value, onChange: (next) => (value = next) }));
113
+ const field = probe.container.querySelector("input");
114
+ invariant(field, "TextField must render an input.");
115
+ input(field, "Atlas");
116
+ invariant(value === "Atlas", "TextField must report string values.");
117
+ unmount(probe);
118
+ },
119
+ },
120
+ {
121
+ id: "leaf.text-area",
122
+ category: "leaf",
123
+ components: ["TextArea"],
124
+ run: ({ components, mount, unmount }) => {
125
+ let value = "";
126
+ const probe = mount(_jsx(components.TextArea, { "aria-label": "Notes", value: value, onChange: (next) => (value = next) }));
127
+ const field = probe.container.querySelector("textarea");
128
+ invariant(field, "TextArea must render a textarea.");
129
+ input(field, "Conformant");
130
+ invariant(value === "Conformant", "TextArea must report string values.");
131
+ unmount(probe);
132
+ },
133
+ },
134
+ {
135
+ id: "leaf.progress-and-placeholder",
136
+ category: "leaf",
137
+ components: ["Spinner", "Skeleton"],
138
+ run: ({ components, mount, unmount }) => {
139
+ const probe = mount(_jsxs(_Fragment, { children: [_jsx(components.Spinner, { label: "Loading records", size: "compact" }), _jsx(components.Skeleton, { width: 48, height: 12, shape: "line" })] }));
140
+ invariant(probe.container.querySelector('[role="status"]'), "A labeled Spinner must expose status semantics.");
141
+ invariant(probe.container.querySelector('[aria-hidden="true"]'), "Skeleton must be hidden from assistive technology.");
142
+ unmount(probe);
143
+ },
144
+ },
145
+ {
146
+ id: "leaf.status-surface-avatar",
147
+ category: "leaf",
148
+ components: ["Status", "Surface", "Avatar"],
149
+ run: ({ components, document, mount, unmount }) => {
150
+ let presses = 0;
151
+ const probe = mount(_jsxs(_Fragment, { children: [_jsx(components.Status, { tone: "success", children: "Connected" }), _jsx(components.Surface, { interactive: true, onPress: () => presses++, children: "Open workspace" }), _jsx(components.Avatar, { name: "Ada Lovelace", fallback: "AL" })] }));
152
+ invariant(probe.container.textContent?.includes("Connected"), "Status must render its content.");
153
+ const surface = elementWithText(document, '[role="button"]', "Open workspace");
154
+ invariant(surface, "An interactive Surface must expose button semantics.");
155
+ keydown(surface, "Enter", document);
156
+ invariant(presses === 1, "An interactive Surface must support keyboard press.");
157
+ invariant(probe.container.textContent?.includes("AL"), "Avatar must render a fallback when no image is supplied.");
158
+ unmount(probe);
159
+ },
160
+ },
161
+ {
162
+ id: "behavior.tooltip",
163
+ category: "behavior",
164
+ components: ["Tooltip"],
165
+ run: async ({ components, document, mount, settle, unmount }) => {
166
+ const portal = document.createElement("div");
167
+ portal.dataset.conformancePortal = "true";
168
+ document.body.appendChild(portal);
169
+ const probe = mount(_jsx(components.Tooltip, { trigger: _jsx("button", { children: "Help" }), content: "Helpful context", open: true, portalContainer: portal }));
170
+ await settle();
171
+ invariant(portal.textContent?.includes("Helpful context"), "Tooltip must honor controlled open and portalContainer.");
172
+ unmount(probe);
173
+ portal.remove();
174
+ },
175
+ },
176
+ {
177
+ id: "behavior.menu",
178
+ category: "behavior",
179
+ components: ["Menu"],
180
+ run: async ({ components, document, mount, settle, unmount }) => {
181
+ let selected;
182
+ const probe = mount(_jsx(components.Menu, { trigger: _jsx("button", { children: "Actions" }), items: [{ id: "archive", label: "Archive" }], open: true, onAction: (id) => (selected = id) }));
183
+ await settle();
184
+ const item = elementWithText(document, '[role="menuitem"]', "Archive");
185
+ invariant(item, "Menu must render open items with menuitem semantics.");
186
+ click(item, document);
187
+ invariant(selected === "archive", "Menu must report selected item ids.");
188
+ unmount(probe);
189
+ },
190
+ },
191
+ {
192
+ id: "behavior.popover",
193
+ category: "behavior",
194
+ components: ["Popover"],
195
+ run: async ({ components, document, mount, settle, unmount }) => {
196
+ const portal = document.createElement("div");
197
+ portal.dataset.conformancePortal = "true";
198
+ document.body.appendChild(portal);
199
+ const probe = mount(_jsx(components.Popover, { trigger: _jsx("button", { children: "Details" }), open: true, portalContainer: portal, children: "Popover details" }));
200
+ await settle();
201
+ invariant(portal.textContent?.includes("Popover details"), "Popover must honor controlled open and portalContainer.");
202
+ unmount(probe);
203
+ portal.remove();
204
+ },
205
+ },
206
+ {
207
+ id: "behavior.dialog",
208
+ category: "behavior",
209
+ components: ["Dialog"],
210
+ run: async ({ components, document, mount, settle, unmount }) => {
211
+ const portal = document.createElement("div");
212
+ portal.dataset.conformancePortal = "true";
213
+ document.body.appendChild(portal);
214
+ const probe = mount(_jsx(components.Dialog, { open: true, onOpenChange: () => { }, title: "Edit project", dismissible: false, portalContainer: portal, children: _jsx("input", { "aria-label": "Project title" }) }));
215
+ await settle();
216
+ invariant(portal.querySelector('[role="dialog"]'), "Dialog must expose dialog semantics.");
217
+ invariant(portal.textContent?.includes("Edit project"), "Dialog must expose its title and honor portalContainer.");
218
+ invariant(portal.querySelector('[role="dialog"]')?.querySelectorAll("button")
219
+ .length === 0, "Dialog must not invent actions when footer is omitted.");
220
+ unmount(probe);
221
+ portal.remove();
222
+ },
223
+ },
224
+ {
225
+ id: "behavior.picker",
226
+ category: "behavior",
227
+ components: ["Picker"],
228
+ run: async ({ components, document, mount, settle, unmount }) => {
229
+ let value = null;
230
+ const probe = mount(_jsx(components.Picker, { mode: "select", "aria-label": "Owner", options: [{ value: "ada", label: "Ada" }], value: value, onChange: (next) => (value = next), open: true }));
231
+ await settle();
232
+ const option = elementWithText(document, '[role="option"]', "Ada");
233
+ invariant(option, "An open Picker must expose options.");
234
+ click(option, document);
235
+ invariant(value === "ada", "Picker must report option values.");
236
+ unmount(probe);
237
+ },
238
+ },
239
+ {
240
+ id: "behavior.checkbox-switch",
241
+ category: "behavior",
242
+ components: ["Checkbox", "Switch"],
243
+ run: ({ components, document, mount, unmount }) => {
244
+ let checked = false;
245
+ let switched = false;
246
+ const probe = mount(_jsxs(_Fragment, { children: [_jsx(components.Checkbox, { "aria-label": "Include archived", checked: checked, onChange: (next) => (checked = next) }), _jsx(components.Switch, { "aria-label": "Notifications", checked: switched, onChange: (next) => (switched = next) })] }));
247
+ const checkbox = probe.container.querySelector('[role="checkbox"]');
248
+ const toggle = probe.container.querySelector('[role="switch"]');
249
+ invariant(checkbox, "Checkbox must expose checkbox semantics.");
250
+ invariant(toggle, "Switch must expose switch semantics.");
251
+ click(checkbox, document);
252
+ click(toggle, document);
253
+ invariant(checked && switched, "Checkbox and Switch must report state changes.");
254
+ unmount(probe);
255
+ },
256
+ },
257
+ {
258
+ id: "behavior.tabs",
259
+ category: "behavior",
260
+ components: ["Tabs"],
261
+ run: ({ components, document, mount, unmount }) => {
262
+ let value = "first";
263
+ const probe = mount(_jsx(components.Tabs, { value: value, orientation: "vertical", onChange: (next) => (value = next), items: [
264
+ { value: "first", label: "First", content: "One" },
265
+ { value: "second", label: "Second", content: "Two" },
266
+ ] }));
267
+ const tabList = probe.container.querySelector('[role="tablist"]');
268
+ invariant(tabList, "Tabs must expose a tablist.");
269
+ invariant(tabList.getAttribute("aria-orientation") === "vertical", "Tabs must honor vertical orientation in their tablist semantics.");
270
+ const second = elementWithText(document, '[role="tab"]', "Second");
271
+ invariant(second, "Tabs must expose tab semantics.");
272
+ click(second, document);
273
+ invariant(value === "second", "Tabs must report selected values.");
274
+ unmount(probe);
275
+ },
276
+ },
277
+ {
278
+ id: "overlay.portal-and-z-index-stacking",
279
+ category: "overlay-interoperability",
280
+ components: ["Dialog"],
281
+ run: async ({ components, document, mount, settle, unmount }) => {
282
+ const radixHost = document.createElement("div");
283
+ radixHost.dataset.hostedOverlay = "radix";
284
+ radixHost.dataset.conformancePortal = "true";
285
+ radixHost.style.zIndex = "40";
286
+ document.body.appendChild(radixHost);
287
+ const customerOverlayLayer = document.createElement("div");
288
+ customerOverlayLayer.dataset.designSystemOverlayLayer = "true";
289
+ customerOverlayLayer.dataset.conformancePortal = "true";
290
+ customerOverlayLayer.style.position = "relative";
291
+ customerOverlayLayer.style.zIndex = "50";
292
+ document.body.appendChild(customerOverlayLayer);
293
+ const probe = mount(_jsx(components.Dialog, { open: true, onOpenChange: () => { }, title: "Stacking probe", portalContainer: customerOverlayLayer, children: "Overlay content" }));
294
+ await settle();
295
+ invariant(customerOverlayLayer.querySelector('[role="dialog"]'), "Behavior adapters must portal into the supplied stacking layer so they can interoperate with Radix-hosted surfaces.");
296
+ invariant(Number(customerOverlayLayer.style.zIndex) >
297
+ Number(radixHost.style.zIndex), "The supplied design-system portal layer must be able to stack above an existing hosted overlay.");
298
+ unmount(probe);
299
+ customerOverlayLayer.remove();
300
+ radixHost.remove();
301
+ },
302
+ },
303
+ {
304
+ id: "overlay.focus-interoperability",
305
+ category: "overlay-interoperability",
306
+ components: ["Dialog"],
307
+ run: async ({ components, document, mount, settle, unmount }) => {
308
+ function FocusProbe() {
309
+ const [open, setOpen] = useState(true);
310
+ const initialFocusRef = useRef(null);
311
+ const restoreFocusRef = useRef(null);
312
+ return (_jsxs(_Fragment, { children: [_jsx("button", { ref: restoreFocusRef, children: "Hosted trigger" }), _jsxs(components.Dialog, { open: open, onOpenChange: setOpen, title: "Focus probe", initialFocusRef: initialFocusRef, restoreFocusRef: restoreFocusRef, children: [_jsx("input", { ref: initialFocusRef, "aria-label": "Initial focus" }), _jsx("button", { onClick: () => setOpen(false), children: "Close probe" })] })] }));
313
+ }
314
+ const probe = mount(_jsx(FocusProbe, {}));
315
+ await settle();
316
+ const initial = document.querySelector('input[aria-label="Initial focus"]');
317
+ invariant(initial, "Dialog must render its initial focus target.");
318
+ invariant(document.activeElement === initial, "Dialog must honor initialFocusRef across adapter overlay implementations.");
319
+ const close = elementWithText(document, "button", "Close probe");
320
+ invariant(close, "Focus probe close control did not render.");
321
+ click(close, document);
322
+ await settle();
323
+ invariant(document.activeElement?.textContent === "Hosted trigger", "Dialog must restore focus to a hosted trigger after its native overlay closes.");
324
+ unmount(probe);
325
+ },
326
+ },
327
+ ];
328
+ export const DESIGN_SYSTEM_CONFORMANCE_CHECKS = checks.map(({ id, category, components }) => ({ id, category, components }));
329
+ export async function runDesignSystemConformance({ adapterName = "custom adapter", components, contractVersion, document: suppliedDocument, }) {
330
+ const document = suppliedDocument ?? globalThis.document;
331
+ if (!document?.body || !document.defaultView) {
332
+ throw new Error("runDesignSystemConformance requires a browser-like document, such as Playwright, jsdom, or happy-dom.");
333
+ }
334
+ const results = [];
335
+ try {
336
+ assertDesignSystemContractVersion(contractVersion);
337
+ results.push({
338
+ id: "contract.version-policy",
339
+ category: "contract",
340
+ components: [],
341
+ passed: true,
342
+ });
343
+ }
344
+ catch (error) {
345
+ results.push({
346
+ id: "contract.version-policy",
347
+ category: "contract",
348
+ components: [],
349
+ passed: false,
350
+ message: error instanceof Error ? error.message : String(error),
351
+ });
352
+ }
353
+ const mounted = new Set();
354
+ const exercisedComponents = new Set();
355
+ const trackedComponents = new Proxy(components, {
356
+ get(target, property, receiver) {
357
+ if (typeof property === "string" && property in target) {
358
+ exercisedComponents.add(property);
359
+ }
360
+ return Reflect.get(target, property, receiver);
361
+ },
362
+ });
363
+ const context = {
364
+ components: trackedComponents,
365
+ document,
366
+ mount(element) {
367
+ const container = document.createElement("div");
368
+ container.dataset.conformanceRoot = "true";
369
+ document.body.appendChild(container);
370
+ const root = createRoot(container);
371
+ const probe = { container, root };
372
+ mounted.add(probe);
373
+ flushSync(() => root.render(element));
374
+ return probe;
375
+ },
376
+ unmount(probe) {
377
+ if (!mounted.delete(probe))
378
+ return;
379
+ flushSync(() => probe.root.unmount());
380
+ probe.container.remove();
381
+ },
382
+ async settle() {
383
+ await new Promise((resolve) => document.defaultView.setTimeout(resolve, 0));
384
+ },
385
+ };
386
+ for (const check of checks) {
387
+ try {
388
+ exercisedComponents.clear();
389
+ await check.run(context);
390
+ const missingComponents = check.components.filter((component) => !exercisedComponents.has(component));
391
+ invariant(missingComponents.length === 0, `Conformance check ${check.id} declared ${missingComponents.join(", ")} but did not exercise them.`);
392
+ results.push({
393
+ id: check.id,
394
+ category: check.category,
395
+ components: check.components,
396
+ passed: true,
397
+ });
398
+ }
399
+ catch (error) {
400
+ results.push({
401
+ id: check.id,
402
+ category: check.category,
403
+ components: check.components,
404
+ passed: false,
405
+ message: error instanceof Error ? error.message : String(error),
406
+ });
407
+ }
408
+ finally {
409
+ for (const probe of [...mounted])
410
+ context.unmount(probe);
411
+ document
412
+ .querySelectorAll("[data-radix-popper-content-wrapper]")
413
+ .forEach((element) => element.remove());
414
+ document
415
+ .querySelectorAll('[data-conformance-portal="true"]')
416
+ .forEach((element) => element.remove());
417
+ }
418
+ }
419
+ const report = {
420
+ adapterName,
421
+ contractVersion: DESIGN_SYSTEM_CONTRACT_VERSION,
422
+ passed: results.every((result) => result.passed),
423
+ results,
424
+ };
425
+ return report;
426
+ }
427
+ export async function assertDesignSystemConformance(options) {
428
+ const report = await runDesignSystemConformance(options);
429
+ if (!report.passed) {
430
+ const { DesignSystemConformanceError } = await import("./types.js");
431
+ throw new DesignSystemConformanceError(report);
432
+ }
433
+ return report;
434
+ }
435
+ export function renderDesignSystemConformanceFixture(components) {
436
+ return createElement(components.Status, {
437
+ tone: "info",
438
+ children: "Adapter loaded",
439
+ });
440
+ }
441
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/conformance/runner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { DesignSystemComponents } from "../design-system/types.js";
2
+ export type DesignSystemConformanceCategory = "contract" | "leaf" | "behavior" | "overlay-interoperability";
3
+ export interface DesignSystemConformanceCheckResult {
4
+ id: string;
5
+ category: DesignSystemConformanceCategory;
6
+ components: readonly (keyof DesignSystemComponents)[];
7
+ passed: boolean;
8
+ message?: string;
9
+ }
10
+ export interface DesignSystemConformanceReport {
11
+ contractVersion: number;
12
+ adapterName: string;
13
+ passed: boolean;
14
+ results: readonly DesignSystemConformanceCheckResult[];
15
+ }
16
+ export interface RunDesignSystemConformanceOptions {
17
+ adapterName?: string;
18
+ components: DesignSystemComponents;
19
+ contractVersion: number;
20
+ document?: Document;
21
+ }
22
+ export declare class DesignSystemConformanceError extends Error {
23
+ readonly report: DesignSystemConformanceReport;
24
+ constructor(report: DesignSystemConformanceReport);
25
+ }
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conformance/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,MAAM,+BAA+B,GACvC,UAAU,GACV,MAAM,GACN,UAAU,GACV,0BAA0B,CAAC;AAE/B,MAAM,WAAW,kCAAkC;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,UAAU,EAAE,SAAS,CAAC,MAAM,sBAAsB,CAAC,EAAE,CAAC;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACxD;AAED,MAAM,WAAW,iCAAiC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,sBAAsB,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAE/C,YAAY,MAAM,EAAE,6BAA6B,EAUhD;CACF"}
@@ -0,0 +1,13 @@
1
+ export class DesignSystemConformanceError extends Error {
2
+ report;
3
+ constructor(report) {
4
+ const failures = report.results
5
+ .filter((result) => !result.passed)
6
+ .map((result) => `${result.id}: ${result.message ?? "failed"}`)
7
+ .join("\n");
8
+ super(`Design system conformance failed for ${report.adapterName}:\n${failures}`);
9
+ this.name = "DesignSystemConformanceError";
10
+ this.report = report;
11
+ }
12
+ }
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/conformance/types.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC5C,MAAM,CAAgC;IAE/C,YAAY,MAAqC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;aAC5B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;aAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;aAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CACH,wCAAwC,MAAM,CAAC,WAAW,MAAM,QAAQ,EAAE,CAC3E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare const DESIGN_SYSTEM_CONTRACT_EVOLUTION_POLICY: {
2
+ readonly minor: "New components and optional props are backward-compatible.";
3
+ readonly major: "Required props, removed components or props, and behavioral contract changes require a new contract major.";
4
+ };
5
+ export declare function assertDesignSystemContractVersion(adapterContractVersion: number): void;
6
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/conformance/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uCAAuC;aAClD,KAAK,EAAE,4DAA4D;aACnE,KAAK,EACH,4GAA4G;CACtG,CAAC;AAEX,wBAAgB,iCAAiC,CAC/C,sBAAsB,EAAE,MAAM,GAC7B,IAAI,CAWN"}