@xemahq/ui-kernel 0.1.4

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 (208) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +72 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +19 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/biome-host/biome-mode.d.ts +2 -0
  8. package/dist/lib/biome-host/biome-mode.d.ts.map +1 -0
  9. package/dist/lib/biome-host/biome-mode.js +3 -0
  10. package/dist/lib/biome-host/biome-mode.js.map +1 -0
  11. package/dist/lib/biome-host/biome-registry.d.ts +30 -0
  12. package/dist/lib/biome-host/biome-registry.d.ts.map +1 -0
  13. package/dist/lib/biome-host/biome-registry.js +134 -0
  14. package/dist/lib/biome-host/biome-registry.js.map +1 -0
  15. package/dist/lib/biome-host/composition-validation.d.ts +22 -0
  16. package/dist/lib/biome-host/composition-validation.d.ts.map +1 -0
  17. package/dist/lib/biome-host/composition-validation.js +127 -0
  18. package/dist/lib/biome-host/composition-validation.js.map +1 -0
  19. package/dist/lib/biome-host/frontend-biome.d.ts +47 -0
  20. package/dist/lib/biome-host/frontend-biome.d.ts.map +1 -0
  21. package/dist/lib/biome-host/frontend-biome.js +3 -0
  22. package/dist/lib/biome-host/frontend-biome.js.map +1 -0
  23. package/dist/lib/biome-host/host-bridge.d.ts +55 -0
  24. package/dist/lib/biome-host/host-bridge.d.ts.map +1 -0
  25. package/dist/lib/biome-host/host-bridge.js +16 -0
  26. package/dist/lib/biome-host/host-bridge.js.map +1 -0
  27. package/dist/lib/biome-host/host-sources.d.ts +12 -0
  28. package/dist/lib/biome-host/host-sources.d.ts.map +1 -0
  29. package/dist/lib/biome-host/host-sources.js +3 -0
  30. package/dist/lib/biome-host/host-sources.js.map +1 -0
  31. package/dist/lib/biome-host/index.d.ts +10 -0
  32. package/dist/lib/biome-host/index.d.ts.map +1 -0
  33. package/dist/lib/biome-host/index.js +26 -0
  34. package/dist/lib/biome-host/index.js.map +1 -0
  35. package/dist/lib/biome-host/nav.d.ts +17 -0
  36. package/dist/lib/biome-host/nav.d.ts.map +1 -0
  37. package/dist/lib/biome-host/nav.js +52 -0
  38. package/dist/lib/biome-host/nav.js.map +1 -0
  39. package/dist/lib/biome-host/session-contributions.d.ts +143 -0
  40. package/dist/lib/biome-host/session-contributions.d.ts.map +1 -0
  41. package/dist/lib/biome-host/session-contributions.js +3 -0
  42. package/dist/lib/biome-host/session-contributions.js.map +1 -0
  43. package/dist/lib/biome-host/session-profiles.d.ts +18 -0
  44. package/dist/lib/biome-host/session-profiles.d.ts.map +1 -0
  45. package/dist/lib/biome-host/session-profiles.js +39 -0
  46. package/dist/lib/biome-host/session-profiles.js.map +1 -0
  47. package/dist/lib/system-bus/capability-invoke.d.ts +18 -0
  48. package/dist/lib/system-bus/capability-invoke.d.ts.map +1 -0
  49. package/dist/lib/system-bus/capability-invoke.js +3 -0
  50. package/dist/lib/system-bus/capability-invoke.js.map +1 -0
  51. package/dist/lib/system-bus/deeplink.d.ts +33 -0
  52. package/dist/lib/system-bus/deeplink.d.ts.map +1 -0
  53. package/dist/lib/system-bus/deeplink.js +99 -0
  54. package/dist/lib/system-bus/deeplink.js.map +1 -0
  55. package/dist/lib/system-bus/enums.d.ts +27 -0
  56. package/dist/lib/system-bus/enums.d.ts.map +1 -0
  57. package/dist/lib/system-bus/enums.js +35 -0
  58. package/dist/lib/system-bus/enums.js.map +1 -0
  59. package/dist/lib/system-bus/host-ports.d.ts +24 -0
  60. package/dist/lib/system-bus/host-ports.d.ts.map +1 -0
  61. package/dist/lib/system-bus/host-ports.js +3 -0
  62. package/dist/lib/system-bus/host-ports.js.map +1 -0
  63. package/dist/lib/system-bus/index.d.ts +11 -0
  64. package/dist/lib/system-bus/index.d.ts.map +1 -0
  65. package/dist/lib/system-bus/index.js +27 -0
  66. package/dist/lib/system-bus/index.js.map +1 -0
  67. package/dist/lib/system-bus/intent-registry.d.ts +14 -0
  68. package/dist/lib/system-bus/intent-registry.d.ts.map +1 -0
  69. package/dist/lib/system-bus/intent-registry.js +66 -0
  70. package/dist/lib/system-bus/intent-registry.js.map +1 -0
  71. package/dist/lib/system-bus/intents.d.ts +30 -0
  72. package/dist/lib/system-bus/intents.d.ts.map +1 -0
  73. package/dist/lib/system-bus/intents.js +3 -0
  74. package/dist/lib/system-bus/intents.js.map +1 -0
  75. package/dist/lib/system-bus/palette.d.ts +25 -0
  76. package/dist/lib/system-bus/palette.d.ts.map +1 -0
  77. package/dist/lib/system-bus/palette.js +3 -0
  78. package/dist/lib/system-bus/palette.js.map +1 -0
  79. package/dist/lib/system-bus/system-bus-builder.d.ts +10 -0
  80. package/dist/lib/system-bus/system-bus-builder.d.ts.map +1 -0
  81. package/dist/lib/system-bus/system-bus-builder.js +82 -0
  82. package/dist/lib/system-bus/system-bus-builder.js.map +1 -0
  83. package/dist/lib/system-bus/system-bus.d.ts +13 -0
  84. package/dist/lib/system-bus/system-bus.d.ts.map +1 -0
  85. package/dist/lib/system-bus/system-bus.js +3 -0
  86. package/dist/lib/system-bus/system-bus.js.map +1 -0
  87. package/dist/lib/system-bus/windows.d.ts +21 -0
  88. package/dist/lib/system-bus/windows.d.ts.map +1 -0
  89. package/dist/lib/system-bus/windows.js +3 -0
  90. package/dist/lib/system-bus/windows.js.map +1 -0
  91. package/dist/org-db/components/DbResultTable.d.ts +13 -0
  92. package/dist/org-db/components/DbResultTable.d.ts.map +1 -0
  93. package/dist/org-db/components/DbResultTable.js +58 -0
  94. package/dist/org-db/components/DbResultTable.js.map +1 -0
  95. package/dist/org-db/index.d.ts +2 -0
  96. package/dist/org-db/index.d.ts.map +1 -0
  97. package/dist/org-db/index.js +6 -0
  98. package/dist/org-db/index.js.map +1 -0
  99. package/dist/registry/index.d.ts +9 -0
  100. package/dist/registry/index.d.ts.map +1 -0
  101. package/dist/registry/index.js +25 -0
  102. package/dist/registry/index.js.map +1 -0
  103. package/dist/registry/lib/biome-slot.d.ts +7 -0
  104. package/dist/registry/lib/biome-slot.d.ts.map +1 -0
  105. package/dist/registry/lib/biome-slot.js +18 -0
  106. package/dist/registry/lib/biome-slot.js.map +1 -0
  107. package/dist/registry/lib/biomes-enabled-context.d.ts +3 -0
  108. package/dist/registry/lib/biomes-enabled-context.d.ts.map +1 -0
  109. package/dist/registry/lib/biomes-enabled-context.js +11 -0
  110. package/dist/registry/lib/biomes-enabled-context.js.map +1 -0
  111. package/dist/registry/lib/composition-validation-host.d.ts +3 -0
  112. package/dist/registry/lib/composition-validation-host.d.ts.map +1 -0
  113. package/dist/registry/lib/composition-validation-host.js +10 -0
  114. package/dist/registry/lib/composition-validation-host.js.map +1 -0
  115. package/dist/registry/lib/extension-points.d.ts +15 -0
  116. package/dist/registry/lib/extension-points.d.ts.map +1 -0
  117. package/dist/registry/lib/extension-points.js +17 -0
  118. package/dist/registry/lib/extension-points.js.map +1 -0
  119. package/dist/registry/lib/primitives/SessionEventCard.d.ts +14 -0
  120. package/dist/registry/lib/primitives/SessionEventCard.d.ts.map +1 -0
  121. package/dist/registry/lib/primitives/SessionEventCard.js +60 -0
  122. package/dist/registry/lib/primitives/SessionEventCard.js.map +1 -0
  123. package/dist/registry/lib/primitives/SessionEventTimeline.d.ts +13 -0
  124. package/dist/registry/lib/primitives/SessionEventTimeline.d.ts.map +1 -0
  125. package/dist/registry/lib/primitives/SessionEventTimeline.js +35 -0
  126. package/dist/registry/lib/primitives/SessionEventTimeline.js.map +1 -0
  127. package/dist/registry/lib/primitives/SessionMutationBar.d.ts +10 -0
  128. package/dist/registry/lib/primitives/SessionMutationBar.d.ts.map +1 -0
  129. package/dist/registry/lib/primitives/SessionMutationBar.js +37 -0
  130. package/dist/registry/lib/primitives/SessionMutationBar.js.map +1 -0
  131. package/dist/registry/lib/primitives/SessionTabbedDrawer.d.ts +19 -0
  132. package/dist/registry/lib/primitives/SessionTabbedDrawer.d.ts.map +1 -0
  133. package/dist/registry/lib/primitives/SessionTabbedDrawer.js +75 -0
  134. package/dist/registry/lib/primitives/SessionTabbedDrawer.js.map +1 -0
  135. package/dist/registry/lib/primitives/index.d.ts +5 -0
  136. package/dist/registry/lib/primitives/index.d.ts.map +1 -0
  137. package/dist/registry/lib/primitives/index.js +21 -0
  138. package/dist/registry/lib/primitives/index.js.map +1 -0
  139. package/dist/registry/lib/session-context-builder.d.ts +13 -0
  140. package/dist/registry/lib/session-context-builder.d.ts.map +1 -0
  141. package/dist/registry/lib/session-context-builder.js +39 -0
  142. package/dist/registry/lib/session-context-builder.js.map +1 -0
  143. package/dist/registry/lib/session-context-provider.d.ts +10 -0
  144. package/dist/registry/lib/session-context-provider.d.ts.map +1 -0
  145. package/dist/registry/lib/session-context-provider.js +24 -0
  146. package/dist/registry/lib/session-context-provider.js.map +1 -0
  147. package/dist/registry/lib/session-selectors.d.ts +9 -0
  148. package/dist/registry/lib/session-selectors.d.ts.map +1 -0
  149. package/dist/registry/lib/session-selectors.js +149 -0
  150. package/dist/registry/lib/session-selectors.js.map +1 -0
  151. package/dist/session/comments/CommentRail.d.ts +20 -0
  152. package/dist/session/comments/CommentRail.d.ts.map +1 -0
  153. package/dist/session/comments/CommentRail.js +16 -0
  154. package/dist/session/comments/CommentRail.js.map +1 -0
  155. package/dist/session/index.d.ts +4 -0
  156. package/dist/session/index.d.ts.map +1 -0
  157. package/dist/session/index.js +10 -0
  158. package/dist/session/index.js.map +1 -0
  159. package/dist/session/lib/cn.d.ts +3 -0
  160. package/dist/session/lib/cn.d.ts.map +1 -0
  161. package/dist/session/lib/cn.js +9 -0
  162. package/dist/session/lib/cn.js.map +1 -0
  163. package/dist/session/shell/SessionWorkspaceShell.d.ts +16 -0
  164. package/dist/session/shell/SessionWorkspaceShell.d.ts.map +1 -0
  165. package/dist/session/shell/SessionWorkspaceShell.js +15 -0
  166. package/dist/session/shell/SessionWorkspaceShell.js.map +1 -0
  167. package/package.json +84 -0
  168. package/src/index.ts +2 -0
  169. package/src/lib/biome-host/biome-mode.ts +6 -0
  170. package/src/lib/biome-host/biome-registry.ts +245 -0
  171. package/src/lib/biome-host/composition-validation.ts +215 -0
  172. package/src/lib/biome-host/frontend-biome.ts +162 -0
  173. package/src/lib/biome-host/host-bridge.ts +178 -0
  174. package/src/lib/biome-host/host-sources.ts +41 -0
  175. package/src/lib/biome-host/index.ts +23 -0
  176. package/src/lib/biome-host/nav.ts +83 -0
  177. package/src/lib/biome-host/session-contributions.ts +293 -0
  178. package/src/lib/biome-host/session-profiles.ts +99 -0
  179. package/src/lib/system-bus/capability-invoke.ts +92 -0
  180. package/src/lib/system-bus/deeplink.ts +200 -0
  181. package/src/lib/system-bus/enums.ts +86 -0
  182. package/src/lib/system-bus/host-ports.ts +96 -0
  183. package/src/lib/system-bus/index.ts +16 -0
  184. package/src/lib/system-bus/intent-registry.ts +106 -0
  185. package/src/lib/system-bus/intents.ts +109 -0
  186. package/src/lib/system-bus/palette.ts +77 -0
  187. package/src/lib/system-bus/system-bus-builder.ts +157 -0
  188. package/src/lib/system-bus/system-bus.ts +37 -0
  189. package/src/lib/system-bus/windows.ts +51 -0
  190. package/src/org-db/components/DbResultTable.tsx +143 -0
  191. package/src/org-db/index.ts +1 -0
  192. package/src/registry/index.ts +8 -0
  193. package/src/registry/lib/biome-slot.tsx +47 -0
  194. package/src/registry/lib/biomes-enabled-context.ts +20 -0
  195. package/src/registry/lib/composition-validation-host.ts +37 -0
  196. package/src/registry/lib/extension-points.ts +134 -0
  197. package/src/registry/lib/primitives/SessionEventCard.tsx +138 -0
  198. package/src/registry/lib/primitives/SessionEventTimeline.tsx +89 -0
  199. package/src/registry/lib/primitives/SessionMutationBar.tsx +76 -0
  200. package/src/registry/lib/primitives/SessionTabbedDrawer.tsx +155 -0
  201. package/src/registry/lib/primitives/index.ts +18 -0
  202. package/src/registry/lib/session-context-builder.ts +68 -0
  203. package/src/registry/lib/session-context-provider.tsx +50 -0
  204. package/src/registry/lib/session-selectors.ts +231 -0
  205. package/src/session/comments/CommentRail.tsx +164 -0
  206. package/src/session/index.ts +3 -0
  207. package/src/session/lib/cn.ts +11 -0
  208. package/src/session/shell/SessionWorkspaceShell.tsx +141 -0
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BiomeSlot = BiomeSlot;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const index_1 = require("../../index");
7
+ const biomes_enabled_context_1 = require("./biomes-enabled-context");
8
+ function BiomeSlot(props) {
9
+ (0, index_1.useBiomeRegistryRevision)();
10
+ const enabled = (0, biomes_enabled_context_1.useBiomesEnabled)();
11
+ if (!enabled)
12
+ return props.fallback ?? null;
13
+ const panels = index_1.biomeRegistry.panelsForSlot(props.name);
14
+ if (panels.length === 0)
15
+ return props.fallback ?? null;
16
+ return ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: panels.map((panel) => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: panel.render() }, panel.id))) }));
17
+ }
18
+ //# sourceMappingURL=biome-slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome-slot.js","sourceRoot":"","sources":["../../../src/registry/lib/biome-slot.tsx"],"names":[],"mappings":";;AAgCA,8BAcC;;AA9CD,iCAAoD;AAEpD,uCAAsE;AAEtE,qEAA4D;AA4B5D,SAAgB,SAAS,CAAC,KAAqB;IAE7C,IAAA,gCAAwB,GAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAA,yCAAgB,GAAE,CAAC;IACnC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,qBAAa,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;IACvD,OAAO,CACL,uBAAC,gBAAQ,cACN,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,uBAAC,gBAAQ,cAAiB,KAAK,CAAC,MAAM,EAAE,IAAzB,KAAK,CAAC,EAAE,CAA6B,CACrD,CAAC,GACO,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const BiomesEnabledContext: import("react").Context<boolean>;
2
+ export declare function useBiomesEnabled(): boolean;
3
+ //# sourceMappingURL=biomes-enabled-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biomes-enabled-context.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/biomes-enabled-context.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,kCAA+B,CAAC;AAGjE,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BiomesEnabledContext = void 0;
4
+ exports.useBiomesEnabled = useBiomesEnabled;
5
+ const react_1 = require("react");
6
+ exports.BiomesEnabledContext = (0, react_1.createContext)(true);
7
+ exports.BiomesEnabledContext.displayName = 'BiomesEnabledContext';
8
+ function useBiomesEnabled() {
9
+ return (0, react_1.useContext)(exports.BiomesEnabledContext);
10
+ }
11
+ //# sourceMappingURL=biomes-enabled-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biomes-enabled-context.js","sourceRoot":"","sources":["../../../src/registry/lib/biomes-enabled-context.ts"],"names":[],"mappings":";;;AAiBA,4CAEC;AAnBD,iCAAkD;AAcrC,QAAA,oBAAoB,GAAG,IAAA,qBAAa,EAAU,IAAI,CAAC,CAAC;AACjE,4BAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE1D,SAAgB,gBAAgB;IAC9B,OAAO,IAAA,kBAAU,EAAC,4BAAoB,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type CompositionDiagnostic, type FrontendBiome } from '../../index';
2
+ export declare function validateHostBiomeComposition(biomes: readonly FrontendBiome[]): readonly CompositionDiagnostic[];
3
+ //# sourceMappingURL=composition-validation-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-validation-host.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/composition-validation-host.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAEnB,MAAM,aAAa,CAAC;AAkBrB,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,SAAS,qBAAqB,EAAE,CAElC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateHostBiomeComposition = validateHostBiomeComposition;
4
+ const index_1 = require("../../index");
5
+ const extension_points_1 = require("./extension-points");
6
+ const HOST_SLOT_IDS = new Set(Object.values(extension_points_1.HostExtensionSlots));
7
+ function validateHostBiomeComposition(biomes) {
8
+ return (0, index_1.validateBiomeComposition)(biomes, { knownSlots: HOST_SLOT_IDS });
9
+ }
10
+ //# sourceMappingURL=composition-validation-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition-validation-host.js","sourceRoot":"","sources":["../../../src/registry/lib/composition-validation-host.ts"],"names":[],"mappings":";;AAgCA,oEAIC;AA1BD,uCAIqB;AAErB,yDAAwD;AAOxD,MAAM,aAAa,GAAwB,IAAI,GAAG,CAChD,MAAM,CAAC,MAAM,CAAC,qCAAkB,CAAC,CAClC,CAAC;AAOF,SAAgB,4BAA4B,CAC1C,MAAgC;IAEhC,OAAO,IAAA,gCAAwB,EAAC,MAAM,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare const HostExtensionSlots: {
2
+ readonly OrgHeaderActions: "org-header-actions";
3
+ readonly BiomesOverviewCards: "biomes-overview-cards";
4
+ readonly ProjectOverviewCards: "project-overview-cards";
5
+ readonly ProjectOverviewSecondary: "project-overview-secondary";
6
+ readonly DashboardEmptyState: "dashboard-empty-state";
7
+ readonly RunDetailActions: "run-detail-actions";
8
+ readonly RunDetailSidePanel: "run-detail-side-panel";
9
+ readonly SessionActions: "session-actions";
10
+ readonly SessionSidePanel: "session-side-panel";
11
+ readonly SessionRightHeader: "session-right-header";
12
+ readonly SettingsTabs: "settings-tabs";
13
+ };
14
+ export type HostExtensionSlot = (typeof HostExtensionSlots)[keyof typeof HostExtensionSlots];
15
+ //# sourceMappingURL=extension-points.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-points.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/extension-points.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAqFrB,CAAC;AAQX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HostExtensionSlots = void 0;
4
+ exports.HostExtensionSlots = {
5
+ OrgHeaderActions: 'org-header-actions',
6
+ BiomesOverviewCards: 'biomes-overview-cards',
7
+ ProjectOverviewCards: 'project-overview-cards',
8
+ ProjectOverviewSecondary: 'project-overview-secondary',
9
+ DashboardEmptyState: 'dashboard-empty-state',
10
+ RunDetailActions: 'run-detail-actions',
11
+ RunDetailSidePanel: 'run-detail-side-panel',
12
+ SessionActions: 'session-actions',
13
+ SessionSidePanel: 'session-side-panel',
14
+ SessionRightHeader: 'session-right-header',
15
+ SettingsTabs: 'settings-tabs',
16
+ };
17
+ //# sourceMappingURL=extension-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-points.js","sourceRoot":"","sources":["../../../src/registry/lib/extension-points.ts"],"names":[],"mappings":";;;AAuCa,QAAA,kBAAkB,GAAG;IAOhC,gBAAgB,EAAE,oBAAoB;IAOtC,mBAAmB,EAAE,uBAAuB;IAQ5C,oBAAoB,EAAE,wBAAwB;IAO9C,wBAAwB,EAAE,4BAA4B;IAMtD,mBAAmB,EAAE,uBAAuB;IAQ5C,gBAAgB,EAAE,oBAAoB;IAQtC,kBAAkB,EAAE,uBAAuB;IAQ3C,cAAc,EAAE,iBAAiB;IAMjC,gBAAgB,EAAE,oBAAoB;IAUtC,kBAAkB,EAAE,sBAAsB;IAS1C,YAAY,EAAE,eAAe;CACrB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type CSSProperties, type ReactNode, type ReactElement } from 'react';
2
+ export type SessionEventCardTone = 'default' | 'pending' | 'success' | 'error' | 'info';
3
+ export interface SessionEventCardProps {
4
+ readonly time: string;
5
+ readonly icon?: ReactNode;
6
+ readonly title: ReactNode;
7
+ readonly detail?: ReactNode;
8
+ readonly children?: ReactNode;
9
+ readonly tone?: SessionEventCardTone;
10
+ readonly style?: CSSProperties;
11
+ readonly className?: string;
12
+ }
13
+ export declare function SessionEventCard({ time, icon, title, detail, children, tone, style, className, }: SessionEventCardProps): ReactElement;
14
+ //# sourceMappingURL=SessionEventCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEventCard.d.ts","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionEventCard.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAkBxF,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAE5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAgB,EAChB,KAAK,EACL,SAAS,GACV,EAAE,qBAAqB,GAAG,YAAY,CA+DtC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionEventCard = SessionEventCard;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const TONE_DOT = {
6
+ default: 'hsl(var(--ink-4, 228 6% 58%))',
7
+ pending: 'hsl(var(--info, 220 70% 50%))',
8
+ success: 'hsl(var(--success, 152 50% 35%))',
9
+ error: 'hsl(var(--destructive, 8 70% 50%))',
10
+ info: 'hsl(var(--info, 220 70% 50%))',
11
+ };
12
+ const TONE_BG = {
13
+ default: 'hsl(var(--paper-elev, 0 0% 100%))',
14
+ pending: 'hsl(var(--info, 220 70% 50%) / 0.08)',
15
+ success: 'hsl(var(--success, 152 50% 35%) / 0.08)',
16
+ error: 'hsl(var(--destructive, 8 70% 50%) / 0.10)',
17
+ info: 'hsl(var(--info, 220 70% 50%) / 0.08)',
18
+ };
19
+ function formatTime(iso) {
20
+ const date = new Date(iso);
21
+ if (Number.isNaN(date.getTime()))
22
+ return '—';
23
+ return date.toLocaleTimeString([], {
24
+ hour: '2-digit',
25
+ minute: '2-digit',
26
+ second: '2-digit',
27
+ });
28
+ }
29
+ function SessionEventCard({ time, icon, title, detail, children, tone = 'default', style, className, }) {
30
+ return ((0, jsx_runtime_1.jsxs)("div", { className: className, style: {
31
+ display: 'flex',
32
+ gap: 10,
33
+ padding: '4px 8px',
34
+ borderRadius: 6,
35
+ fontSize: 12,
36
+ ...style,
37
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
38
+ width: 56,
39
+ flexShrink: 0,
40
+ fontFamily: 'var(--font-mono, ui-monospace, monospace)',
41
+ fontSize: 11,
42
+ color: 'hsl(var(--ink-4, 228 6% 58%))',
43
+ fontVariantNumeric: 'tabular-nums',
44
+ }, children: formatTime(time) }), (0, jsx_runtime_1.jsx)("div", { style: {
45
+ width: 20,
46
+ height: 20,
47
+ flexShrink: 0,
48
+ display: 'flex',
49
+ alignItems: 'center',
50
+ justifyContent: 'center',
51
+ borderRadius: 4,
52
+ background: TONE_BG[tone],
53
+ }, children: icon ?? ((0, jsx_runtime_1.jsx)("span", { style: {
54
+ width: 6,
55
+ height: 6,
56
+ borderRadius: '50%',
57
+ background: TONE_DOT[tone],
58
+ } })) }), (0, jsx_runtime_1.jsxs)("div", { style: { minWidth: 0, flex: 1 }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: 6, alignItems: 'baseline', flexWrap: 'wrap' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { color: 'hsl(var(--ink, 228 14% 11%))', wordBreak: 'break-word' }, children: title }), detail != null && ((0, jsx_runtime_1.jsx)("span", { style: { color: 'hsl(var(--ink-3, 228 6% 40%))', wordBreak: 'break-word' }, children: detail }))] }), children != null && (0, jsx_runtime_1.jsx)("div", { style: { marginTop: 4 }, children: children })] })] }));
59
+ }
60
+ //# sourceMappingURL=SessionEventCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEventCard.js","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionEventCard.tsx"],"names":[],"mappings":";;AAiEA,4CAwEC;;AA/GD,MAAM,QAAQ,GAAyC;IACrD,OAAO,EAAE,+BAA+B;IACxC,OAAO,EAAE,+BAA+B;IACxC,OAAO,EAAE,kCAAkC;IAC3C,KAAK,EAAE,oCAAoC;IAC3C,IAAI,EAAE,+BAA+B;CACtC,CAAC;AAEF,MAAM,OAAO,GAAyC;IACpD,OAAO,EAAE,mCAAmC;IAC5C,OAAO,EAAE,sCAAsC;IAC/C,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,2CAA2C;IAClD,IAAI,EAAE,sCAAsC;CAC7C,CAAC;AAeF,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,GAAG,CAAC;IAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE;QACjC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,GAAG,SAAS,EAChB,KAAK,EACL,SAAS,GACa;IACtB,OAAO,CACL,iCACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,EAAE;YACZ,GAAG,KAAK;SACT,aAED,iCACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,CAAC;oBACb,UAAU,EAAE,2CAA2C;oBACvD,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,+BAA+B;oBACtC,kBAAkB,EAAE,cAAc;iBACnC,YAEA,UAAU,CAAC,IAAI,CAAC,GACZ,EACP,gCACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,EAAE;oBACV,UAAU,EAAE,CAAC;oBACb,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,QAAQ;oBACxB,YAAY,EAAE,CAAC;oBACf,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC;iBAC1B,YAEA,IAAI,IAAI,CACP,iCACE,KAAK,EAAE;wBACL,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,CAAC;wBACT,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;qBAC3B,GACD,CACH,GACG,EACN,iCAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAClC,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,aAC/E,iCAAM,KAAK,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,YAAY,EAAE,YAC5E,KAAK,GACD,EACN,MAAM,IAAI,IAAI,IAAI,CACjB,iCAAM,KAAK,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,SAAS,EAAE,YAAY,EAAE,YAC7E,MAAM,GACF,CACR,IACG,EACL,QAAQ,IAAI,IAAI,IAAI,gCAAK,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,YAAG,QAAQ,GAAO,IAC/D,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type CSSProperties, type ReactElement, type ReactNode } from 'react';
2
+ export interface SessionEventTimelineProps<TItem> {
3
+ readonly items: readonly TItem[];
4
+ readonly getKey: (item: TItem) => string;
5
+ readonly renderItem: (item: TItem) => ReactNode;
6
+ readonly banner?: ReactNode;
7
+ readonly empty?: ReactNode;
8
+ readonly stickThreshold?: number;
9
+ readonly style?: CSSProperties;
10
+ readonly className?: string;
11
+ }
12
+ export declare function SessionEventTimeline<TItem>({ items, getKey, renderItem, banner, empty, stickThreshold, style, className, }: SessionEventTimelineProps<TItem>): ReactElement;
13
+ //# sourceMappingURL=SessionEventTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEventTimeline.d.ts","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionEventTimeline.tsx"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,yBAAyB,CAAC,KAAK;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,KAAK,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC;IAEhD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAE5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAE3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,EAC1C,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,cAAmB,EACnB,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,CAAC,KAAK,CAAC,GAAG,YAAY,CAyCjD"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionEventTimeline = SessionEventTimeline;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ function SessionEventTimeline({ items, getKey, renderItem, banner, empty, stickThreshold = 32, style, className, }) {
7
+ const scrollRef = (0, react_1.useRef)(null);
8
+ const [stuckToBottom, setStuckToBottom] = (0, react_1.useState)(true);
9
+ (0, react_1.useEffect)(() => {
10
+ const node = scrollRef.current;
11
+ if (!node)
12
+ return;
13
+ const handler = () => {
14
+ const distanceFromBottom = node.scrollHeight - node.scrollTop - node.clientHeight;
15
+ setStuckToBottom(distanceFromBottom < stickThreshold);
16
+ };
17
+ node.addEventListener('scroll', handler, { passive: true });
18
+ return () => node.removeEventListener('scroll', handler);
19
+ }, [stickThreshold]);
20
+ (0, react_1.useLayoutEffect)(() => {
21
+ if (!stuckToBottom)
22
+ return;
23
+ const node = scrollRef.current;
24
+ if (!node)
25
+ return;
26
+ node.scrollTop = node.scrollHeight;
27
+ }, [items, stuckToBottom]);
28
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: scrollRef, className: className, style: {
29
+ height: '100%',
30
+ overflowY: 'auto',
31
+ padding: '8px 4px',
32
+ ...style,
33
+ }, children: [banner, items.length === 0 && empty, items.map((item) => ((0, jsx_runtime_1.jsx)("div", { children: renderItem(item) }, getKey(item))))] }));
34
+ }
35
+ //# sourceMappingURL=SessionEventTimeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionEventTimeline.js","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionEventTimeline.tsx"],"names":[],"mappings":";;AAsCA,oDAkDC;;AA1ED,iCAQe;AAgBf,SAAgB,oBAAoB,CAAQ,EAC1C,KAAK,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,KAAK,EACL,cAAc,GAAG,EAAE,EACnB,KAAK,EACL,SAAS,GACwB;IACjC,MAAM,SAAS,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEzD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,kBAAkB,GACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;YACzD,gBAAgB,CAAC,kBAAkB,GAAG,cAAc,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,IAAI,CAAC,aAAa;YAAE,OAAO;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,iCACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,SAAS;YAClB,GAAG,KAAK;SACT,aAEA,MAAM,EACN,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,EAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,0CAAyB,UAAU,CAAC,IAAI,CAAC,IAA/B,MAAM,CAAC,IAAI,CAAC,CAA0B,CACjD,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type CSSProperties, type ReactNode, type ReactElement } from 'react';
2
+ export type SessionMutationBarTone = 'default' | 'accent' | 'warning' | 'destructive';
3
+ export interface SessionMutationBarProps {
4
+ readonly tone?: SessionMutationBarTone;
5
+ readonly children: ReactNode;
6
+ readonly style?: CSSProperties;
7
+ readonly className?: string;
8
+ }
9
+ export declare function SessionMutationBar({ tone, children, style, className, }: SessionMutationBarProps): ReactElement;
10
+ //# sourceMappingURL=SessionMutationBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionMutationBar.d.ts","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionMutationBar.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;AAwBtF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAM7B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAE/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAgB,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,uBAAuB,GAAG,YAAY,CAiBxC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionMutationBar = SessionMutationBar;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const TONE_STYLES = {
6
+ default: {
7
+ background: 'hsl(var(--paper-elev, 0 0% 100%))',
8
+ borderBottom: '1px solid hsl(var(--rule, 40 14% 86%))',
9
+ },
10
+ accent: {
11
+ background: 'hsl(var(--accent-tint, 230 50% 96%))',
12
+ borderBottom: '1px solid hsl(var(--rule, 40 14% 86%))',
13
+ color: 'hsl(var(--accent-ink, 230 50% 30%))',
14
+ },
15
+ warning: {
16
+ background: 'hsl(var(--warning, 32 80% 50%) / 0.10)',
17
+ borderBottom: '1px solid hsl(var(--warning, 32 80% 50%) / 0.30)',
18
+ color: 'hsl(var(--ink, 228 14% 11%))',
19
+ },
20
+ destructive: {
21
+ background: 'hsl(var(--destructive, 8 70% 50%) / 0.10)',
22
+ borderBottom: '1px solid hsl(var(--destructive, 8 70% 50%) / 0.30)',
23
+ color: 'hsl(var(--ink, 228 14% 11%))',
24
+ },
25
+ };
26
+ function SessionMutationBar({ tone = 'default', children, style, className, }) {
27
+ return ((0, jsx_runtime_1.jsx)("div", { className: className, style: {
28
+ ...TONE_STYLES[tone],
29
+ padding: '6px 12px',
30
+ fontSize: 13,
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ gap: 8,
34
+ ...style,
35
+ }, children: children }));
36
+ }
37
+ //# sourceMappingURL=SessionMutationBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionMutationBar.js","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionMutationBar.tsx"],"names":[],"mappings":";;AAqDA,gDAsBC;;AAzDD,MAAM,WAAW,GAAkD;IACjE,OAAO,EAAE;QACP,UAAU,EAAE,mCAAmC;QAC/C,YAAY,EAAE,wCAAwC;KACvD;IACD,MAAM,EAAE;QACN,UAAU,EAAE,sCAAsC;QAClD,YAAY,EAAE,wCAAwC;QACtD,KAAK,EAAE,qCAAqC;KAC7C;IACD,OAAO,EAAE;QACP,UAAU,EAAE,wCAAwC;QACpD,YAAY,EAAE,kDAAkD;QAChE,KAAK,EAAE,8BAA8B;KACtC;IACD,WAAW,EAAE;QACX,UAAU,EAAE,2CAA2C;QACvD,YAAY,EAAE,qDAAqD;QACnE,KAAK,EAAE,8BAA8B;KACtC;CACF,CAAC;AAeF,SAAgB,kBAAkB,CAAC,EACjC,IAAI,GAAG,SAAS,EAChB,QAAQ,EACR,KAAK,EACL,SAAS,GACe;IACxB,OAAO,CACL,gCACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE;YACL,GAAG,WAAW,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,UAAU;YACnB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,GAAG,KAAK;SACT,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type CSSProperties, type ReactElement, type ReactNode } from 'react';
2
+ export interface SessionTabbedDrawerTab {
3
+ readonly id: string;
4
+ readonly label: ReactNode;
5
+ readonly icon?: ReactNode;
6
+ readonly badge?: ReactNode;
7
+ readonly render: () => ReactNode;
8
+ }
9
+ export interface SessionTabbedDrawerProps {
10
+ readonly tabs: readonly SessionTabbedDrawerTab[];
11
+ readonly initialTabId?: string;
12
+ readonly activeTabId?: string;
13
+ readonly onActiveTabChange?: (id: string) => void;
14
+ readonly enableKeyboardShortcuts?: boolean;
15
+ readonly style?: CSSProperties;
16
+ readonly className?: string;
17
+ }
18
+ export declare function SessionTabbedDrawer({ tabs, initialTabId, activeTabId, onActiveTabChange, enableKeyboardShortcuts, style, className, }: SessionTabbedDrawerProps): ReactElement;
19
+ //# sourceMappingURL=SessionTabbedDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTabbedDrawer.d.ts","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionTabbedDrawer.tsx"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAKlD,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,uBAA8B,EAC9B,KAAK,EACL,SAAS,GACV,EAAE,wBAAwB,GAAG,YAAY,CAsGzC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionTabbedDrawer = SessionTabbedDrawer;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ function SessionTabbedDrawer({ tabs, initialTabId, activeTabId, onActiveTabChange, enableKeyboardShortcuts = true, style, className, }) {
7
+ const fallbackTabId = initialTabId ?? tabs[0]?.id ?? '';
8
+ const [internalActive, setInternalActive] = (0, react_1.useState)(fallbackTabId);
9
+ const effectiveActive = activeTabId ?? internalActive;
10
+ const select = (0, react_1.useMemo)(() => {
11
+ return (id) => {
12
+ if (activeTabId === undefined)
13
+ setInternalActive(id);
14
+ onActiveTabChange?.(id);
15
+ };
16
+ }, [activeTabId, onActiveTabChange]);
17
+ (0, react_1.useEffect)(() => {
18
+ if (!enableKeyboardShortcuts)
19
+ return;
20
+ const handler = (event) => {
21
+ if (!(event.metaKey || event.ctrlKey))
22
+ return;
23
+ const idx = Number.parseInt(event.key, 10);
24
+ if (Number.isNaN(idx) || idx < 1 || idx > tabs.length)
25
+ return;
26
+ const target = tabs[idx - 1];
27
+ if (!target)
28
+ return;
29
+ event.preventDefault();
30
+ select(target.id);
31
+ };
32
+ window.addEventListener('keydown', handler);
33
+ return () => window.removeEventListener('keydown', handler);
34
+ }, [enableKeyboardShortcuts, tabs, select]);
35
+ const active = tabs.find((tab) => tab.id === effectiveActive) ?? tabs[0];
36
+ return ((0, jsx_runtime_1.jsxs)("div", { className: className, style: {
37
+ display: 'flex',
38
+ flexDirection: 'column',
39
+ height: '100%',
40
+ minHeight: 0,
41
+ ...style,
42
+ }, children: [(0, jsx_runtime_1.jsx)("div", { role: "tablist", style: {
43
+ display: 'flex',
44
+ alignItems: 'center',
45
+ gap: 4,
46
+ padding: '8px 16px 0',
47
+ borderBottom: '1px solid hsl(var(--rule, 40 14% 86%))',
48
+ overflowX: 'auto',
49
+ }, children: tabs.map((tab, idx) => {
50
+ const isActive = tab.id === active?.id;
51
+ return ((0, jsx_runtime_1.jsxs)("button", { type: "button", role: "tab", "aria-selected": isActive, onClick: () => select(tab.id), title: `${typeof tab.label === 'string' ? tab.label : 'Tab'} (⌘${idx + 1})`, style: {
52
+ position: 'relative',
53
+ display: 'inline-flex',
54
+ alignItems: 'center',
55
+ gap: 6,
56
+ padding: '8px 12px',
57
+ fontSize: 13,
58
+ background: 'transparent',
59
+ border: 'none',
60
+ cursor: 'pointer',
61
+ color: isActive
62
+ ? 'hsl(var(--ink, 228 14% 11%))'
63
+ : 'hsl(var(--ink-3, 228 6% 40%))',
64
+ whiteSpace: 'nowrap',
65
+ }, children: [tab.icon, tab.label, tab.badge, isActive && ((0, jsx_runtime_1.jsx)("span", { "aria-hidden": true, style: {
66
+ position: 'absolute',
67
+ inset: '0 4px -1px',
68
+ top: 'auto',
69
+ height: 2,
70
+ background: 'hsl(var(--primary, 230 50% 45%))',
71
+ borderRadius: 1,
72
+ } }))] }, tab.id));
73
+ }) }), (0, jsx_runtime_1.jsx)("div", { style: { flex: 1, minHeight: 0, overflow: 'auto' }, children: active?.render() })] }));
74
+ }
75
+ //# sourceMappingURL=SessionTabbedDrawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTabbedDrawer.js","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/SessionTabbedDrawer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './SessionEventCard';
2
+ export * from './SessionEventTimeline';
3
+ export * from './SessionMutationBar';
4
+ export * from './SessionTabbedDrawer';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/index.ts"],"names":[],"mappings":"AAcA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SessionEventCard"), exports);
18
+ __exportStar(require("./SessionEventTimeline"), exports);
19
+ __exportStar(require("./SessionMutationBar"), exports);
20
+ __exportStar(require("./SessionTabbedDrawer"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/registry/lib/primitives/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAcA,qDAAmC;AACnC,yDAAuC;AACvC,uDAAqC;AACrC,wDAAsC"}
@@ -0,0 +1,13 @@
1
+ import { type SessionContext } from '../../index';
2
+ export interface BuildSessionContextInput {
3
+ readonly sessionId: string;
4
+ readonly orgId: string;
5
+ readonly projectId: string;
6
+ readonly biomeId?: string;
7
+ readonly profileKey?: string;
8
+ readonly status: string;
9
+ readonly isActive: boolean;
10
+ }
11
+ export declare function isStatusActive(status: string): boolean;
12
+ export declare function useSessionContext(input: BuildSessionContextInput): SessionContext;
13
+ //# sourceMappingURL=session-context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context-builder.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/session-context-builder.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAUD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,GAAG,cAAc,CAwBjF"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStatusActive = isStatusActive;
4
+ exports.useSessionContext = useSessionContext;
5
+ const react_1 = require("react");
6
+ const index_1 = require("../../index");
7
+ const TERMINAL_STATUSES = new Set([
8
+ 'paused',
9
+ 'completed',
10
+ 'cancelled',
11
+ 'failed',
12
+ 'terminated',
13
+ ]);
14
+ function isStatusActive(status) {
15
+ return !TERMINAL_STATUSES.has(status);
16
+ }
17
+ function useSessionContext(input) {
18
+ const descriptor = (0, index_1.useSessionProfileDescriptor)(input.biomeId, input.profileKey);
19
+ return (0, react_1.useMemo)(() => ({
20
+ sessionId: input.sessionId,
21
+ orgId: input.orgId,
22
+ projectId: input.projectId,
23
+ biomeId: input.biomeId ?? descriptor.biomeId,
24
+ profileKey: input.profileKey ?? descriptor.key,
25
+ status: input.status,
26
+ capabilities: Object.freeze(new Set(descriptor.capabilities)),
27
+ isActive: input.isActive,
28
+ }), [
29
+ input.sessionId,
30
+ input.orgId,
31
+ input.projectId,
32
+ input.biomeId,
33
+ input.profileKey,
34
+ input.status,
35
+ input.isActive,
36
+ descriptor,
37
+ ]);
38
+ }
39
+ //# sourceMappingURL=session-context-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context-builder.js","sourceRoot":"","sources":["../../../src/registry/lib/session-context-builder.ts"],"names":[],"mappings":";;AAuCA,wCAEC;AAED,8CAwBC;AArDD,iCAAgC;AAEhC,uCAGqB;AAYrB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,QAAQ;IACR,WAAW;IACX,WAAW;IACX,QAAQ;IACR,YAAY;CACb,CAAC,CAAC;AAEH,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAA+B;IAC/D,MAAM,UAAU,GAAG,IAAA,mCAA2B,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAChF,OAAO,IAAA,eAAO,EACZ,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO;QAC5C,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG;QAC9C,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,EACF;QACE,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,KAAK;QACX,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,UAAU;QAChB,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,QAAQ;QACd,UAAU;KACX,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ReactNode, type ReactElement } from 'react';
2
+ import type { SessionContext } from '../../index';
3
+ export interface SessionContextProviderProps {
4
+ readonly value: SessionContext;
5
+ readonly children: ReactNode;
6
+ }
7
+ export declare function SessionContextProvider({ value, children, }: SessionContextProviderProps): ReactElement;
8
+ export declare function useCurrentSessionContext(): SessionContext;
9
+ export declare function useOptionalSessionContext(): SessionContext | null;
10
+ //# sourceMappingURL=session-context-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context-provider.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/session-context-provider.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAA6B,MAAM,OAAO,CAAC;AAErF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,QAAQ,GACT,EAAE,2BAA2B,GAAG,YAAY,CAE5C;AAED,wBAAgB,wBAAwB,IAAI,cAAc,CASzD;AAOD,wBAAgB,yBAAyB,IAAI,cAAc,GAAG,IAAI,CAEjE"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionContextProvider = SessionContextProvider;
4
+ exports.useCurrentSessionContext = useCurrentSessionContext;
5
+ exports.useOptionalSessionContext = useOptionalSessionContext;
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const Ctx = (0, react_1.createContext)(null);
9
+ Ctx.displayName = 'SessionContext';
10
+ function SessionContextProvider({ value, children, }) {
11
+ return (0, jsx_runtime_1.jsx)(Ctx.Provider, { value: value, children: children });
12
+ }
13
+ function useCurrentSessionContext() {
14
+ const ctx = (0, react_1.useContext)(Ctx);
15
+ if (!ctx) {
16
+ throw new Error('[biome-registry-web] useCurrentSessionContext() called outside <SessionContextProvider>. ' +
17
+ 'The host shell must wrap session UI with the provider before any biome reads it.');
18
+ }
19
+ return ctx;
20
+ }
21
+ function useOptionalSessionContext() {
22
+ return (0, react_1.useContext)(Ctx);
23
+ }
24
+ //# sourceMappingURL=session-context-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context-provider.js","sourceRoot":"","sources":["../../../src/registry/lib/session-context-provider.tsx"],"names":[],"mappings":";;AAwBA,wDAKC;AAED,4DASC;AAOD,8DAEC;;AArCD,iCAAqF;AAIrF,MAAM,GAAG,GAAG,IAAA,qBAAa,EAAwB,IAAI,CAAC,CAAC;AACvD,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAOnC,SAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,QAAQ,GACoB;IAC5B,OAAO,uBAAC,GAAG,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAgB,CAAC;AAC/D,CAAC;AAED,SAAgB,wBAAwB;IACtC,MAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,2FAA2F;YACzF,kFAAkF,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,SAAgB,yBAAyB;IACvC,OAAO,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type ActivityRendererContribution, type AttachmentClassContribution, type HeaderChipContribution, type MutationBarContribution, type SecondaryDrawerTabContribution, type SessionActivityEvent, type SessionContext, type SessionToolCallEvent, type SlashCommandContribution, type ToolCallRendererContribution } from '../../index';
2
+ export declare function useSessionSlashCommands(session: SessionContext): readonly SlashCommandContribution[];
3
+ export declare function useSessionDrawerTabs(session: SessionContext): readonly SecondaryDrawerTabContribution[];
4
+ export declare function useActivityRenderer(session: SessionContext, event: SessionActivityEvent): ActivityRendererContribution | null;
5
+ export declare function useToolCallRenderer(session: SessionContext, event: SessionToolCallEvent): ToolCallRendererContribution | null;
6
+ export declare function useSessionMutationBars(session: SessionContext): readonly MutationBarContribution[];
7
+ export declare function useSessionHeaderChips(session: SessionContext): readonly HeaderChipContribution[];
8
+ export declare function useSessionAttachmentClasses(session: SessionContext): readonly AttachmentClassContribution[];
9
+ //# sourceMappingURL=session-selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-selectors.d.ts","sourceRoot":"","sources":["../../../src/registry/lib/session-selectors.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EAGlC,MAAM,aAAa,CAAC;AA2BrB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,GACtB,SAAS,wBAAwB,EAAE,CAarC;AAID,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,cAAc,GACtB,SAAS,8BAA8B,EAAE,CAa3C;AAcD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,oBAAoB,GAC1B,4BAA4B,GAAG,IAAI,CAerC;AAoCD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,oBAAoB,GAC1B,4BAA4B,GAAG,IAAI,CASrC;AAID,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,GACtB,SAAS,uBAAuB,EAAE,CAapC;AAID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,GACtB,SAAS,sBAAsB,EAAE,CAanC;AAID,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,GACtB,SAAS,2BAA2B,EAAE,CAaxC"}