@starci/grammar 0.3.0 → 0.4.2

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 (250) hide show
  1. package/README.md +74 -39
  2. package/dist/common/conformance.d.ts +31 -0
  3. package/dist/common/conformance.d.ts.map +1 -0
  4. package/dist/common/conformance.js +33 -0
  5. package/dist/common/conformance.js.map +1 -0
  6. package/dist/common/index.d.ts +5 -5
  7. package/dist/common/index.d.ts.map +1 -1
  8. package/dist/common/index.js +5 -10
  9. package/dist/common/index.js.map +1 -1
  10. package/dist/common/registry.d.ts +79 -0
  11. package/dist/common/registry.d.ts.map +1 -0
  12. package/dist/common/registry.js +34 -0
  13. package/dist/common/registry.js.map +1 -0
  14. package/dist/common/renderers.d.ts +41 -0
  15. package/dist/common/renderers.d.ts.map +1 -0
  16. package/dist/common/renderers.js +44 -0
  17. package/dist/common/renderers.js.map +1 -0
  18. package/dist/common/rule-catalog.generated.d.ts +40 -0
  19. package/dist/common/rule-catalog.generated.d.ts.map +1 -0
  20. package/dist/common/rule-catalog.generated.js +230 -0
  21. package/dist/common/rule-catalog.generated.js.map +1 -0
  22. package/dist/common/spacing.d.ts +20 -0
  23. package/dist/common/spacing.d.ts.map +1 -0
  24. package/dist/common/spacing.js +18 -0
  25. package/dist/common/spacing.js.map +1 -0
  26. package/dist/common/state.d.ts +6 -0
  27. package/dist/common/state.d.ts.map +1 -0
  28. package/dist/common/state.js +11 -0
  29. package/dist/common/state.js.map +1 -0
  30. package/dist/common/styles.css +1566 -2
  31. package/dist/core/OtpInput.d.ts.map +1 -1
  32. package/dist/core/OtpInput.js +2 -1
  33. package/dist/core/OtpInput.js.map +1 -1
  34. package/dist/core/branch/MarkdownArticle/index.d.ts.map +1 -1
  35. package/dist/core/branch/MarkdownArticle/index.js +2 -2
  36. package/dist/core/branch/MarkdownArticle/index.js.map +1 -1
  37. package/dist/core/branch/Rail/classNames.d.ts.map +1 -1
  38. package/dist/core/branch/Rail/classNames.js +4 -4
  39. package/dist/core/branch/Rail/classNames.js.map +1 -1
  40. package/dist/core/branch/Rail/index.d.ts +4 -0
  41. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  42. package/dist/core/branch/Rail/index.js +12 -2
  43. package/dist/core/branch/Rail/index.js.map +1 -1
  44. package/dist/core/branch/Subnav/classNames.d.ts +8 -0
  45. package/dist/core/branch/Subnav/classNames.d.ts.map +1 -0
  46. package/dist/core/branch/Subnav/classNames.js +9 -0
  47. package/dist/core/branch/Subnav/classNames.js.map +1 -0
  48. package/dist/core/branch/Subnav/index.d.ts +17 -0
  49. package/dist/core/branch/Subnav/index.d.ts.map +1 -0
  50. package/dist/core/branch/Subnav/index.js +6 -0
  51. package/dist/core/branch/Subnav/index.js.map +1 -0
  52. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts +6 -2
  53. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts.map +1 -1
  54. package/dist/core/branch/SurfaceAccordionCard/classNames.js +14 -9
  55. package/dist/core/branch/SurfaceAccordionCard/classNames.js.map +1 -1
  56. package/dist/core/branch/SurfaceAccordionCard/index.d.ts +8 -1
  57. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
  58. package/dist/core/branch/SurfaceAccordionCard/index.js +29 -11
  59. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
  60. package/dist/core/branch/SurfaceCard/classNames.d.ts +11 -1
  61. package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -1
  62. package/dist/core/branch/SurfaceCard/classNames.js +16 -7
  63. package/dist/core/branch/SurfaceCard/classNames.js.map +1 -1
  64. package/dist/core/branch/SurfaceCard/index.d.ts +11 -1
  65. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  66. package/dist/core/branch/SurfaceCard/index.js +15 -4
  67. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  68. package/dist/core/branch/SurfaceListCard/classNames.d.ts +2 -0
  69. package/dist/core/branch/SurfaceListCard/classNames.d.ts.map +1 -1
  70. package/dist/core/branch/SurfaceListCard/classNames.js +7 -5
  71. package/dist/core/branch/SurfaceListCard/classNames.js.map +1 -1
  72. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  73. package/dist/core/branch/SurfaceListCard/index.js +3 -2
  74. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  75. package/dist/core/branch/Tabs/classNames.d.ts +11 -0
  76. package/dist/core/branch/Tabs/classNames.d.ts.map +1 -0
  77. package/dist/core/branch/Tabs/classNames.js +13 -0
  78. package/dist/core/branch/Tabs/classNames.js.map +1 -0
  79. package/dist/core/branch/Tabs/index.d.ts +22 -0
  80. package/dist/core/branch/Tabs/index.d.ts.map +1 -0
  81. package/dist/core/branch/Tabs/index.js +28 -0
  82. package/dist/core/branch/Tabs/index.js.map +1 -0
  83. package/dist/core/branch/Tooltip/classNames.d.ts +3 -0
  84. package/dist/core/branch/Tooltip/classNames.d.ts.map +1 -0
  85. package/dist/core/branch/Tooltip/classNames.js +4 -0
  86. package/dist/core/branch/Tooltip/classNames.js.map +1 -0
  87. package/dist/core/branch/Tooltip/index.d.ts +18 -0
  88. package/dist/core/branch/Tooltip/index.d.ts.map +1 -0
  89. package/dist/core/branch/Tooltip/index.js +14 -0
  90. package/dist/core/branch/Tooltip/index.js.map +1 -0
  91. package/dist/core/classNames.d.ts.map +1 -1
  92. package/dist/core/classNames.js +3 -3
  93. package/dist/core/classNames.js.map +1 -1
  94. package/dist/core/composite/EmptyNotice/index.d.ts +17 -0
  95. package/dist/core/composite/EmptyNotice/index.d.ts.map +1 -0
  96. package/dist/core/composite/EmptyNotice/index.js +7 -0
  97. package/dist/core/composite/EmptyNotice/index.js.map +1 -0
  98. package/dist/core/composite/HorizontalScrollRegion/index.d.ts +2 -0
  99. package/dist/core/composite/HorizontalScrollRegion/index.d.ts.map +1 -1
  100. package/dist/core/composite/HorizontalScrollRegion/index.js +5 -2
  101. package/dist/core/composite/HorizontalScrollRegion/index.js.map +1 -1
  102. package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -1
  103. package/dist/core/composite/StaticStateRow/index.js +1 -1
  104. package/dist/core/composite/StaticStateRow/index.js.map +1 -1
  105. package/dist/core/composite/VerticalScrollRegion/index.d.ts +2 -0
  106. package/dist/core/composite/VerticalScrollRegion/index.d.ts.map +1 -1
  107. package/dist/core/composite/VerticalScrollRegion/index.js +2 -2
  108. package/dist/core/composite/VerticalScrollRegion/index.js.map +1 -1
  109. package/dist/core/composition/ChatWorkspace/classNames.d.ts +30 -0
  110. package/dist/core/composition/ChatWorkspace/classNames.d.ts.map +1 -0
  111. package/dist/core/composition/ChatWorkspace/classNames.js +31 -0
  112. package/dist/core/composition/ChatWorkspace/classNames.js.map +1 -0
  113. package/dist/core/composition/ChatWorkspace/index.d.ts +48 -0
  114. package/dist/core/composition/ChatWorkspace/index.d.ts.map +1 -0
  115. package/dist/core/composition/ChatWorkspace/index.js +40 -0
  116. package/dist/core/composition/ChatWorkspace/index.js.map +1 -0
  117. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts +9 -0
  118. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts.map +1 -0
  119. package/dist/core/composition/NavigationFeatureNav/classNames.js +10 -0
  120. package/dist/core/composition/NavigationFeatureNav/classNames.js.map +1 -0
  121. package/dist/core/composition/NavigationFeatureNav/index.d.ts +26 -0
  122. package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -0
  123. package/dist/core/composition/NavigationFeatureNav/index.js +13 -0
  124. package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -0
  125. package/dist/core/composition/PrimaryRailLayout/index.d.ts +14 -0
  126. package/dist/core/composition/PrimaryRailLayout/index.d.ts.map +1 -0
  127. package/dist/core/composition/PrimaryRailLayout/index.js +8 -0
  128. package/dist/core/composition/PrimaryRailLayout/index.js.map +1 -0
  129. package/dist/core/composition/Sidebar/index.d.ts +31 -0
  130. package/dist/core/composition/Sidebar/index.d.ts.map +1 -0
  131. package/dist/core/composition/Sidebar/index.js +40 -0
  132. package/dist/core/composition/Sidebar/index.js.map +1 -0
  133. package/dist/core/composition/WorkspaceShell/classNames.d.ts +11 -0
  134. package/dist/core/composition/WorkspaceShell/classNames.d.ts.map +1 -0
  135. package/dist/core/composition/WorkspaceShell/classNames.js +12 -0
  136. package/dist/core/composition/WorkspaceShell/classNames.js.map +1 -0
  137. package/dist/core/composition/WorkspaceShell/index.d.ts +67 -0
  138. package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -0
  139. package/dist/core/composition/WorkspaceShell/index.js +20 -0
  140. package/dist/core/composition/WorkspaceShell/index.js.map +1 -0
  141. package/dist/core/dna.d.ts +180 -0
  142. package/dist/core/dna.d.ts.map +1 -0
  143. package/dist/core/dna.js +175 -0
  144. package/dist/core/dna.js.map +1 -0
  145. package/dist/core/index.d.ts +59 -11
  146. package/dist/core/index.d.ts.map +1 -1
  147. package/dist/core/index.js +31 -11
  148. package/dist/core/index.js.map +1 -1
  149. package/dist/core/primitive/Badge/index.d.ts +12 -0
  150. package/dist/core/primitive/Badge/index.d.ts.map +1 -0
  151. package/dist/core/primitive/Badge/index.js +15 -0
  152. package/dist/core/primitive/Badge/index.js.map +1 -0
  153. package/dist/core/primitive/Button/index.d.ts +52 -0
  154. package/dist/core/primitive/Button/index.d.ts.map +1 -0
  155. package/dist/core/primitive/Button/index.js +26 -0
  156. package/dist/core/primitive/Button/index.js.map +1 -0
  157. package/dist/core/primitive/Divider/index.d.ts +7 -0
  158. package/dist/core/primitive/Divider/index.d.ts.map +1 -0
  159. package/dist/core/primitive/Divider/index.js +5 -0
  160. package/dist/core/primitive/Divider/index.js.map +1 -0
  161. package/dist/core/primitive/GrammarRoot/index.d.ts +10 -0
  162. package/dist/core/primitive/GrammarRoot/index.d.ts.map +1 -0
  163. package/dist/core/primitive/GrammarRoot/index.js +5 -0
  164. package/dist/core/primitive/GrammarRoot/index.js.map +1 -0
  165. package/dist/core/primitive/Heading/index.d.ts +15 -0
  166. package/dist/core/primitive/Heading/index.d.ts.map +1 -0
  167. package/dist/core/primitive/Heading/index.js +26 -0
  168. package/dist/core/primitive/Heading/index.js.map +1 -0
  169. package/dist/core/primitive/Icon/index.d.ts +31 -0
  170. package/dist/core/primitive/Icon/index.d.ts.map +1 -0
  171. package/dist/core/primitive/Icon/index.js +23 -0
  172. package/dist/core/primitive/Icon/index.js.map +1 -0
  173. package/dist/core/primitive/IconButton/index.d.ts +13 -0
  174. package/dist/core/primitive/IconButton/index.d.ts.map +1 -0
  175. package/dist/core/primitive/IconButton/index.js +9 -0
  176. package/dist/core/primitive/IconButton/index.js.map +1 -0
  177. package/dist/core/primitive/IconTile/index.d.ts +17 -0
  178. package/dist/core/primitive/IconTile/index.d.ts.map +1 -0
  179. package/dist/core/primitive/IconTile/index.js +32 -0
  180. package/dist/core/primitive/IconTile/index.js.map +1 -0
  181. package/dist/core/primitive/IncludedMark/index.d.ts +10 -0
  182. package/dist/core/primitive/IncludedMark/index.d.ts.map +1 -0
  183. package/dist/core/primitive/IncludedMark/index.js +8 -0
  184. package/dist/core/primitive/IncludedMark/index.js.map +1 -0
  185. package/dist/core/primitive/Input/index.d.ts +31 -0
  186. package/dist/core/primitive/Input/index.d.ts.map +1 -0
  187. package/dist/core/primitive/Input/index.js +27 -0
  188. package/dist/core/primitive/Input/index.js.map +1 -0
  189. package/dist/core/primitive/Label/classNames.d.ts +12 -0
  190. package/dist/core/primitive/Label/classNames.d.ts.map +1 -0
  191. package/dist/core/primitive/Label/classNames.js +13 -0
  192. package/dist/core/primitive/Label/classNames.js.map +1 -0
  193. package/dist/core/primitive/Label/index.d.ts +11 -0
  194. package/dist/core/primitive/Label/index.d.ts.map +1 -0
  195. package/dist/core/primitive/Label/index.js +14 -0
  196. package/dist/core/primitive/Label/index.js.map +1 -0
  197. package/dist/core/primitive/MediaFrame/index.d.ts +15 -0
  198. package/dist/core/primitive/MediaFrame/index.d.ts.map +1 -0
  199. package/dist/core/primitive/MediaFrame/index.js +8 -0
  200. package/dist/core/primitive/MediaFrame/index.js.map +1 -0
  201. package/dist/core/primitive/PageContainer/index.d.ts +9 -0
  202. package/dist/core/primitive/PageContainer/index.d.ts.map +1 -0
  203. package/dist/core/primitive/PageContainer/index.js +8 -0
  204. package/dist/core/primitive/PageContainer/index.js.map +1 -0
  205. package/dist/core/primitive/Progress/index.d.ts +11 -0
  206. package/dist/core/primitive/Progress/index.d.ts.map +1 -0
  207. package/dist/core/primitive/Progress/index.js +13 -0
  208. package/dist/core/primitive/Progress/index.js.map +1 -0
  209. package/dist/core/primitive/RankArtwork/index.d.ts +12 -0
  210. package/dist/core/primitive/RankArtwork/index.d.ts.map +1 -0
  211. package/dist/core/primitive/RankArtwork/index.js +14 -0
  212. package/dist/core/primitive/RankArtwork/index.js.map +1 -0
  213. package/dist/core/primitive/SectionHeader/index.d.ts +15 -0
  214. package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -0
  215. package/dist/core/primitive/SectionHeader/index.js +6 -0
  216. package/dist/core/primitive/SectionHeader/index.js.map +1 -0
  217. package/dist/core/primitive/SurfaceCopyGroup/index.d.ts +7 -0
  218. package/dist/core/primitive/SurfaceCopyGroup/index.d.ts.map +1 -0
  219. package/dist/core/primitive/SurfaceCopyGroup/index.js +5 -0
  220. package/dist/core/primitive/SurfaceCopyGroup/index.js.map +1 -0
  221. package/dist/core/primitive/Text/index.d.ts +25 -0
  222. package/dist/core/primitive/Text/index.d.ts.map +1 -0
  223. package/dist/core/primitive/Text/index.js +57 -0
  224. package/dist/core/primitive/Text/index.js.map +1 -0
  225. package/dist/core/primitive/TextAction/index.d.ts +45 -0
  226. package/dist/core/primitive/TextAction/index.d.ts.map +1 -0
  227. package/dist/core/primitive/TextAction/index.js +112 -0
  228. package/dist/core/primitive/TextAction/index.js.map +1 -0
  229. package/dist/core/primitive/actionStyles.d.ts +5 -0
  230. package/dist/core/primitive/actionStyles.d.ts.map +1 -0
  231. package/dist/core/primitive/actionStyles.js +19 -0
  232. package/dist/core/primitive/actionStyles.js.map +1 -0
  233. package/dist/core/state.d.ts +2 -2
  234. package/dist/core/state.js +1 -1
  235. package/dist/core/styles.css +163 -592
  236. package/dist/heritage/index.d.ts +27 -0
  237. package/dist/heritage/index.d.ts.map +1 -0
  238. package/dist/heritage/index.js +44 -0
  239. package/dist/heritage/index.js.map +1 -0
  240. package/dist/heritage/styles.css +165 -0
  241. package/dist/offset-pop/index.d.ts +12 -0
  242. package/dist/offset-pop/index.d.ts.map +1 -0
  243. package/dist/offset-pop/index.js +41 -0
  244. package/dist/offset-pop/index.js.map +1 -0
  245. package/dist/offset-pop/styles.css +292 -393
  246. package/package.json +78 -68
  247. package/dist/core/scrollable-surfaces.spec.d.ts +0 -2
  248. package/dist/core/scrollable-surfaces.spec.d.ts.map +0 -1
  249. package/dist/core/scrollable-surfaces.spec.js +0 -37
  250. package/dist/core/scrollable-surfaces.spec.js.map +0 -1
@@ -0,0 +1,48 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ type ChatWorkspaceBaseProps = Omit<ComponentPropsWithoutRef<"section">, "aria-label" | "children"> & {
3
+ /** Accessible name for the complete workspace landmark. */
4
+ readonly label: string;
5
+ /** Optional non-scrolling workspace heading or toolbar. */
6
+ readonly header?: ReactNode;
7
+ /** Caller-owned task content. Grammar supplies no message or business-state semantics. */
8
+ readonly conversation: ReactNode;
9
+ /** Accessible name for the independently scrollable task region. */
10
+ readonly conversationLabel: string;
11
+ /** Caller-owned input/action region pinned after the conversation scroll owner. */
12
+ readonly composer: ReactNode;
13
+ };
14
+ type ChatWorkspaceWithRailProps = {
15
+ /** Caller-owned supporting content; Grammar supplies only layout and overlay mechanics. */
16
+ readonly rail: ReactNode;
17
+ /** Accessible name shared by the persistent rail and compact drawer. */
18
+ readonly railLabel: string;
19
+ /** Visible and accessible label for the compact drawer trigger. */
20
+ readonly railOpenLabel: string;
21
+ /** Accessible label for the compact drawer close control. */
22
+ readonly railCloseLabel: string;
23
+ /** Controlled compact drawer state. Ignored while the persistent rail is active. */
24
+ readonly isRailOpen: boolean;
25
+ /** Receives trigger, backdrop, close-control, Escape, and breakpoint closure changes. */
26
+ readonly onRailOpenChange: (isOpen: boolean) => void;
27
+ readonly railWidth?: "compact" | "standard" | "wide";
28
+ };
29
+ type ChatWorkspaceWithoutRailProps = {
30
+ readonly rail?: undefined;
31
+ readonly railLabel?: never;
32
+ readonly railOpenLabel?: never;
33
+ readonly railCloseLabel?: never;
34
+ readonly isRailOpen?: never;
35
+ readonly onRailOpenChange?: never;
36
+ readonly railWidth?: never;
37
+ };
38
+ /**
39
+ * Generic bounded chat workbench composition.
40
+ *
41
+ * The host supplies a height. ChatWorkspace owns the remaining height chain,
42
+ * keeps the composer outside the conversation scroll owner, and transforms one
43
+ * optional persistent supporting rail into a controlled compact drawer.
44
+ */
45
+ export type ChatWorkspaceProps = ChatWorkspaceBaseProps & (ChatWorkspaceWithRailProps | ChatWorkspaceWithoutRailProps);
46
+ export declare const ChatWorkspace: (props: ChatWorkspaceProps) => import("react").JSX.Element;
47
+ export {};
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/ChatWorkspace/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACjB,MAAM,OAAO,CAAA;AAmCd,KAAK,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG;IACjG,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAA;IAChC,oEAAoE;IACpE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;CAC/B,CAAA;AAED,KAAK,0BAA0B,GAAG;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAA;CACvD,CAAA;AAED,KAAK,6BAA6B,GAAG;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAA;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAC7B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,CACtD,0BAA0B,GAAG,6BAA6B,CAC7D,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,gCA6JtD,CAAA"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn, Drawer } from "@heroui/react";
4
+ import { useEffect, useSyncExternalStore, } from "react";
5
+ import { Rail } from "../../branch/Rail/index.js";
6
+ import { VerticalScrollRegion } from "../../composite/VerticalScrollRegion/index.js";
7
+ import { chatWorkspaceClassName, chatWorkspaceComposerClassName, chatWorkspaceConversationClassName, chatWorkspaceDrawerBodyClassName, chatWorkspaceDrawerCloseClassName, chatWorkspaceDrawerContentClassName, chatWorkspaceDrawerDialogClassName, chatWorkspaceHeaderClassName, chatWorkspaceInlineRailClassName, chatWorkspaceOverlayRailClassName, chatWorkspacePrimaryClassName, chatWorkspaceRailTriggerBoundaryClassName, chatWorkspaceRailTriggerClassName, getChatWorkspaceLayoutClassName, } from "./classNames.js";
8
+ const compactRailQuery = "(max-width: 47.999rem)";
9
+ const subscribeToCompactRail = (onStoreChange) => {
10
+ if (typeof window === "undefined")
11
+ return () => undefined;
12
+ const query = window.matchMedia(compactRailQuery);
13
+ query.addEventListener("change", onStoreChange);
14
+ return () => query.removeEventListener("change", onStoreChange);
15
+ };
16
+ const getCompactRailSnapshot = () => (typeof window === "undefined" ? false : window.matchMedia(compactRailQuery).matches);
17
+ const getCompactRailServerSnapshot = () => false;
18
+ export const ChatWorkspace = (props) => {
19
+ const { className, composer, conversation, conversationLabel, header, label, rail, railCloseLabel, railLabel, railOpenLabel, railWidth: requestedRailWidth, isRailOpen: requestedRailOpen, onRailOpenChange: requestedRailOpenChange, ...sectionProps } = props;
20
+ const isCompactRail = useSyncExternalStore(subscribeToCompactRail, getCompactRailSnapshot, getCompactRailServerSnapshot);
21
+ const railConfig = rail === undefined ? undefined : {
22
+ content: rail,
23
+ label: railLabel ?? "",
24
+ openLabel: railOpenLabel ?? "",
25
+ closeLabel: railCloseLabel ?? "",
26
+ isOpen: requestedRailOpen ?? false,
27
+ onOpenChange: requestedRailOpenChange,
28
+ width: requestedRailWidth ?? "standard",
29
+ };
30
+ const hasRail = railConfig !== undefined;
31
+ const railWidth = railConfig?.width ?? "standard";
32
+ const isRailOpen = railConfig?.isOpen ?? false;
33
+ const onRailOpenChange = railConfig?.onOpenChange;
34
+ useEffect(() => {
35
+ if (hasRail && !isCompactRail && isRailOpen)
36
+ onRailOpenChange?.(false);
37
+ }, [hasRail, isCompactRail, isRailOpen, onRailOpenChange]);
38
+ return (_jsxs("section", { ...sectionProps, "aria-label": label, className: cn(chatWorkspaceClassName, className), "data-grammar-chat-workspace": "true", "data-grammar-chat-workspace-rail": hasRail ? "present" : "absent", children: [header === undefined ? null : (_jsx("header", { className: chatWorkspaceHeaderClassName, "data-grammar-chat-workspace-slot": "header", children: header })), hasRail && isCompactRail ? (_jsxs(Drawer, { isOpen: railConfig.isOpen, onOpenChange: railConfig.onOpenChange, children: [_jsx("div", { className: chatWorkspaceRailTriggerBoundaryClassName, "data-contract": "BOUNDARY-1 PADDING-4 PADDING-2", children: _jsx(Drawer.Trigger, { className: chatWorkspaceRailTriggerClassName, "data-contract": "PADDING-3 SURFACE-2 FONT-2 TONE-1", children: railConfig.openLabel }) }), _jsx(Drawer.Backdrop, { children: _jsx(Drawer.Content, { className: chatWorkspaceDrawerContentClassName, placement: "right", children: _jsxs(Drawer.Dialog, { className: chatWorkspaceDrawerDialogClassName, children: [_jsx(Drawer.Header, { children: _jsx(Drawer.Heading, { children: railConfig.label }) }), _jsx(Drawer.CloseTrigger, { "aria-label": railConfig.closeLabel, className: chatWorkspaceDrawerCloseClassName, "data-contract": "SURFACE-2 TONE-1" }), _jsx(Drawer.Body, { className: chatWorkspaceDrawerBodyClassName, "data-contract": "OVERFLOW-2 PADDING-0", children: _jsx(VerticalScrollRegion, { "aria-label": railConfig.label, className: chatWorkspaceOverlayRailClassName, "data-contract": "OVERFLOW-4 OVERFLOW-5 PADDING-4", "data-grammar-chat-workspace-rail-presentation": "overlay", "data-grammar-chat-workspace-slot": "rail", isScrollable: true, role: "region", tabIndex: 0, children: railConfig.content }) })] }) }) })] })) : null, _jsxs("div", { className: getChatWorkspaceLayoutClassName(railWidth, hasRail), "data-contract": "GAP-5", "data-grammar-chat-workspace-layout": "true", "data-grammar-chat-workspace-rail-width": hasRail ? railWidth : undefined, children: [_jsxs("div", { className: chatWorkspacePrimaryClassName, "data-grammar-chat-workspace-slot": "primary", children: [_jsx(VerticalScrollRegion, { "aria-label": conversationLabel, className: chatWorkspaceConversationClassName, "data-contract": "OVERFLOW-4 OVERFLOW-5", "data-grammar-chat-workspace-scroll-owner": "conversation", "data-grammar-chat-workspace-slot": "conversation", isScrollable: true, role: "region", tabIndex: 0, children: conversation }), _jsx("div", { className: chatWorkspaceComposerClassName, "data-contract": "BOUNDARY-1", "data-grammar-chat-workspace-slot": "composer", children: composer })] }), hasRail && !isCompactRail ? (_jsx("div", { className: chatWorkspaceInlineRailClassName, children: _jsx(Rail, { height: "fill", inset: "none", isLabelHidden: true, label: railConfig.label, mode: "flow", width: railWidth, children: _jsx(VerticalScrollRegion, { "aria-label": railConfig.label, className: chatWorkspaceOverlayRailClassName, "data-contract": "OVERFLOW-4 OVERFLOW-5 PADDING-4", "data-grammar-chat-workspace-rail-presentation": "inline", "data-grammar-chat-workspace-slot": "rail", isScrollable: true, role: "region", tabIndex: 0, children: railConfig.content }) }) })) : null] })] }));
39
+ };
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/ChatWorkspace/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare const navigationFeatureNavClassName: import("tailwind-variants").CnReturn;
2
+ export declare const navigationFeatureNavStickyClassName: import("tailwind-variants").CnReturn;
3
+ export declare const navigationFeatureNavPrimaryClassName: import("tailwind-variants").CnReturn;
4
+ export declare const navigationFeatureNavIdentityClassName: import("tailwind-variants").CnReturn;
5
+ export declare const navigationFeatureNavNavigationClassName: import("tailwind-variants").CnReturn;
6
+ export declare const navigationFeatureNavCompactNavigationClassName: import("tailwind-variants").CnReturn;
7
+ export declare const navigationFeatureNavActionsClassName: import("tailwind-variants").CnReturn;
8
+ export declare const navigationFeatureNavFeatureClassName: import("tailwind-variants").CnReturn;
9
+ //# sourceMappingURL=classNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/classNames.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,6BAA6B,sCAOzC,CAAA;AAED,eAAO,MAAM,mCAAmC,sCAAgC,CAAA;AAEhF,eAAO,MAAM,oCAAoC,sCAEhD,CAAA;AAED,eAAO,MAAM,qCAAqC,sCAA+D,CAAA;AACjH,eAAO,MAAM,uCAAuC,sCAAiE,CAAA;AACrH,eAAO,MAAM,8CAA8C,sCAAyE,CAAA;AACpI,eAAO,MAAM,oCAAoC,sCAA8G,CAAA;AAC/J,eAAO,MAAM,oCAAoC,sCAA8D,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { cn } from "@heroui/react";
2
+ export const navigationFeatureNavClassName = cn("starci-core-navigation-feature-nav", "w-full", "border-b", "border-separator", "bg-background", "text-foreground");
3
+ export const navigationFeatureNavStickyClassName = cn("sticky", "top-0", "z-50");
4
+ export const navigationFeatureNavPrimaryClassName = cn("starci-core-navigation-feature-nav-primary");
5
+ export const navigationFeatureNavIdentityClassName = cn("starci-core-navigation-feature-nav-identity", "min-w-0");
6
+ export const navigationFeatureNavNavigationClassName = cn("starci-core-navigation-feature-nav-navigation", "min-w-0");
7
+ export const navigationFeatureNavCompactNavigationClassName = cn("starci-core-navigation-feature-nav-compact-navigation", "min-w-0");
8
+ export const navigationFeatureNavActionsClassName = cn("starci-core-navigation-feature-nav-actions", "flex", "min-w-0", "items-center", "justify-end", "gap-2");
9
+ export const navigationFeatureNavFeatureClassName = cn("starci-core-navigation-feature-nav-feature", "min-w-0");
10
+ //# sourceMappingURL=classNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classNames.js","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/classNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAC3C,oCAAoC,EACpC,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,CACpB,CAAA;AAED,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAEhF,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAClD,4CAA4C,CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAA;AACjH,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAA;AACrH,MAAM,CAAC,MAAM,8CAA8C,GAAG,EAAE,CAAC,uDAAuD,EAAE,SAAS,CAAC,CAAA;AACpI,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC,4CAA4C,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;AAC/J,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ import { type PageContainerProps } from "../../primitive/PageContainer/index.js";
3
+ export type NavigationFeatureNavProps = Omit<ComponentPropsWithoutRef<"header">, "children"> & {
4
+ readonly identity: ReactNode;
5
+ readonly navigation: ReactNode;
6
+ readonly navigationLabel: string;
7
+ /** Compact trigger for an application-owned drawer containing the same primary destinations. */
8
+ readonly compactNavigationTrigger: ReactNode;
9
+ readonly compactNavigationTriggerLabel: string;
10
+ readonly actions?: ReactNode;
11
+ readonly actionsLabel?: string;
12
+ /** Optional second and final layer. A third navigation scope must use the separate Subnav branch. */
13
+ readonly featureNavigation?: ReactNode;
14
+ readonly featureNavigationLabel?: string;
15
+ readonly measure?: PageContainerProps["measure"];
16
+ readonly position?: "static" | "sticky";
17
+ };
18
+ /**
19
+ * Global navigation with at most one feature layer.
20
+ *
21
+ * The composition owns the single outer separator: the primary and feature
22
+ * layers are intentionally continuous. Deeper responsive navigation belongs
23
+ * to the independent Subnav branch instead of becoming a third navbar layer.
24
+ */
25
+ export declare const NavigationFeatureNav: ({ identity, navigation, navigationLabel, compactNavigationTrigger, compactNavigationTriggerLabel, actions, actionsLabel, featureNavigation, featureNavigationLabel, measure, position, className, ...headerProps }: NavigationFeatureNavProps) => import("react").JSX.Element;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAY/F,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IAC3F,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAA;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,gGAAgG;IAChG,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAA;IAC5C,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAA;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,qGAAqG;IACrG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC1C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,oNAclC,yBAAyB,gCA2C3B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "@heroui/react";
3
+ import { PageContainer } from "../../primitive/PageContainer/index.js";
4
+ import { navigationFeatureNavActionsClassName, navigationFeatureNavClassName, navigationFeatureNavCompactNavigationClassName, navigationFeatureNavFeatureClassName, navigationFeatureNavIdentityClassName, navigationFeatureNavNavigationClassName, navigationFeatureNavPrimaryClassName, navigationFeatureNavStickyClassName, } from "./classNames.js";
5
+ /**
6
+ * Global navigation with at most one feature layer.
7
+ *
8
+ * The composition owns the single outer separator: the primary and feature
9
+ * layers are intentionally continuous. Deeper responsive navigation belongs
10
+ * to the independent Subnav branch instead of becoming a third navbar layer.
11
+ */
12
+ export const NavigationFeatureNav = ({ identity, navigation, navigationLabel, compactNavigationTrigger, compactNavigationTriggerLabel, actions, actionsLabel, featureNavigation, featureNavigationLabel, measure = "full", position = "sticky", className, ...headerProps }) => (_jsxs("header", { ...headerProps, className: cn(navigationFeatureNavClassName, position === "sticky" && navigationFeatureNavStickyClassName, className), "data-contract": "MEASURE-2 BOUNDARY-1", "data-grammar-navigation-feature-nav": "true", "data-grammar-navigation-feature-nav-layers": featureNavigation === undefined ? "one" : "two", "data-grammar-navigation-feature-nav-position": position, children: [_jsxs(PageContainer, { className: navigationFeatureNavPrimaryClassName, "data-contract": "GAP-3 PADDING-3", "data-grammar-navigation-feature-nav-primary": "true", measure: measure, children: [_jsx("div", { className: navigationFeatureNavIdentityClassName, "data-grammar-navigation-feature-nav-identity": "true", children: identity }), _jsx("nav", { "aria-label": navigationLabel, className: navigationFeatureNavNavigationClassName, "data-grammar-navigation-feature-nav-navigation": "true", children: navigation }), _jsx("div", { "aria-label": compactNavigationTriggerLabel, className: navigationFeatureNavCompactNavigationClassName, "data-grammar-navigation-feature-nav-compact-navigation": "true", role: "group", children: compactNavigationTrigger }), actions === undefined ? null : (_jsx("div", { "aria-label": actionsLabel, className: navigationFeatureNavActionsClassName, "data-contract": "GAP-2", "data-grammar-navigation-feature-nav-actions": "true", role: actionsLabel === undefined ? undefined : "group", children: actions }))] }), featureNavigation === undefined ? null : (_jsx("div", { "aria-label": featureNavigationLabel, className: navigationFeatureNavFeatureClassName, "data-grammar-navigation-feature-nav-feature": "true", role: featureNavigationLabel === undefined ? undefined : "region", children: featureNavigation }))] }));
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,OAAO,EAAE,aAAa,EAA2B,MAAM,wCAAwC,CAAA;AAC/F,OAAO,EACH,oCAAoC,EACpC,6BAA6B,EAC7B,8CAA8C,EAC9C,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,EACvC,oCAAoC,EACpC,mCAAmC,GACtC,MAAM,iBAAiB,CAAA;AAkBxB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,GAAG,WAAW,EACU,EAAE,EAAE,CAAC,CAC7B,qBACQ,WAAW,EACf,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,QAAQ,KAAK,QAAQ,IAAI,mCAAmC,EAAE,SAAS,CAAC,mBACvG,sBAAsB,yCACA,MAAM,gDACE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,kDAC7C,QAAQ,aAEtD,MAAC,aAAa,IAAC,SAAS,EAAE,oCAAoC,mBAAgB,iBAAiB,iDAA6C,MAAM,EAAC,OAAO,EAAE,OAAO,aAC/J,cAAK,SAAS,EAAE,qCAAqC,kDAA+C,MAAM,YAAE,QAAQ,GAAO,EAC3H,4BAAiB,eAAe,EAAE,SAAS,EAAE,uCAAuC,oDAAiD,MAAM,YAAE,UAAU,GAAO,EAC9J,4BACgB,6BAA6B,EACzC,SAAS,EAAE,8CAA8C,4DACF,MAAM,EAC7D,IAAI,EAAC,OAAO,YAEX,wBAAwB,GACvB,EACL,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,4BACgB,YAAY,EACxB,SAAS,EAAE,oCAAoC,mBACjC,OAAO,iDACuB,MAAM,EAClD,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,YAErD,OAAO,GACN,CACT,IACW,EACf,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,4BACgB,sBAAsB,EAClC,SAAS,EAAE,oCAAoC,iDACH,MAAM,EAClD,IAAI,EAAE,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAEhE,iBAAiB,GAChB,CACT,IACI,CACZ,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from "react";
2
+ export type PrimaryRailLayoutProps = {
3
+ readonly primary: ReactNode;
4
+ readonly rail?: ReactNode;
5
+ readonly railWidth?: "compact" | "standard" | "wide";
6
+ readonly align?: "start" | "stretch";
7
+ readonly className?: string;
8
+ };
9
+ /**
10
+ * Dominant product content plus one subordinate rail. The composition changes
11
+ * to a single reading flow when the owning container becomes constrained.
12
+ */
13
+ export declare const PrimaryRailLayout: ({ primary, rail, railWidth, align, className, }: PrimaryRailLayoutProps) => import("react").JSX.Element;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/PrimaryRailLayout/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,sBAAsB,GAAG;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAA;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,iDAM/B,sBAAsB,gCAaxB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "@heroui/react";
3
+ /**
4
+ * Dominant product content plus one subordinate rail. The composition changes
5
+ * to a single reading flow when the owning container becomes constrained.
6
+ */
7
+ export const PrimaryRailLayout = ({ primary, rail, railWidth = "standard", align = "start", className, }) => (_jsx("div", { className: cn("starci-core-primary-rail-container", className), children: _jsxs("div", { className: "starci-core-primary-rail-layout", "data-contract": "GAP-5", "data-grammar-layout-align": align, "data-grammar-layout-rail": rail === undefined ? "absent" : "present", "data-grammar-layout-rail-width": railWidth, children: [_jsx("div", { className: "starci-core-primary-region", "data-grammar-primary-region": "true", children: primary }), rail === undefined ? null : _jsx("div", { className: "starci-core-rail-region", "data-grammar-rail-region": "true", children: rail })] }) }));
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/PrimaryRailLayout/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAWlC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAC9B,OAAO,EACP,IAAI,EACJ,SAAS,GAAG,UAAU,EACtB,KAAK,GAAG,OAAO,EACf,SAAS,GACY,EAAE,EAAE,CAAC,CAC1B,cAAK,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,YAC/D,eACI,SAAS,EAAC,iCAAiC,mBAC7B,OAAO,+BACM,KAAK,8BACN,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,oCACnC,SAAS,aAEzC,cAAK,SAAS,EAAC,4BAA4B,iCAA6B,MAAM,YAAE,OAAO,GAAO,EAC7F,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,yBAAyB,8BAA0B,MAAM,YAAE,IAAI,GAAO,IAChH,GACJ,CACT,CAAA"}
@@ -0,0 +1,31 @@
1
+ import type { ReactNode } from "react";
2
+ import { type IconSource } from "../../primitive/Icon/index.js";
3
+ export type SidebarItem = {
4
+ readonly id: string;
5
+ readonly label: string;
6
+ readonly source?: IconSource;
7
+ readonly trailing?: ReactNode;
8
+ readonly isDisabled?: boolean;
9
+ };
10
+ export type SidebarGroup = {
11
+ readonly id: string;
12
+ readonly label?: string;
13
+ readonly items: ReadonlyArray<SidebarItem>;
14
+ };
15
+ export type SidebarProps = {
16
+ readonly label: string;
17
+ readonly groups: ReadonlyArray<SidebarGroup>;
18
+ readonly selectedKey?: string;
19
+ readonly presentation?: "rail" | "drawer";
20
+ readonly isCollapsed?: boolean;
21
+ readonly collapseLabel?: string;
22
+ readonly expandLabel?: string;
23
+ readonly toggleSource?: IconSource;
24
+ readonly header?: ReactNode;
25
+ readonly footer?: ReactNode;
26
+ readonly onAction?: (id: string) => void;
27
+ readonly onCollapsedChange?: (collapsed: boolean) => void;
28
+ };
29
+ /** Shared grouped sidebar renderer; apps own route, permission, copy and persistence policy. */
30
+ export declare const Sidebar: ({ label, groups, selectedKey, presentation, isCollapsed, collapseLabel, expandLabel, toggleSource, header, footer, onAction, onCollapsedChange, }: SidebarProps) => import("react").JSX.Element;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/Sidebar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAGrE,MAAM,MAAM,WAAW,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAA;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5D,CAAA;AAoBD,gGAAgG;AAChG,eAAO,MAAM,OAAO,GAAI,mJAarB,YAAY,gCA8Ed,CAAA"}
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Header, ListBox } from "@heroui/react";
4
+ import { Icon } from "../../primitive/Icon/index.js";
5
+ import { IconButton } from "../../primitive/IconButton/index.js";
6
+ /**
7
+ * Sections and items share ONE key namespace inside the collection.
8
+ *
9
+ * A caller naturally writes `{ id: "home", items: [{ id: "home" }] }` - the group that holds the
10
+ * home destination, named after it. That duplicate key made the collection unresolvable: every
11
+ * section after the first was dropped from the render, and a re-render (collapsing the rail) sent
12
+ * reconciliation into a loop that never settled, which under Vitest reads as a worker that never
13
+ * reports. Prefixing the section key keeps the caller's vocabulary free: a group id and an item id
14
+ * may be the same word, because only the item id is ever a real collection key.
15
+ */
16
+ const sectionKey = (id) => `sidebar-section:${id}`;
17
+ const firstKey = (keys) => {
18
+ if (keys === "all")
19
+ return undefined;
20
+ const value = keys.values().next().value;
21
+ return value === undefined ? undefined : String(value);
22
+ };
23
+ /** Shared grouped sidebar renderer; apps own route, permission, copy and persistence policy. */
24
+ export const Sidebar = ({ label, groups, selectedKey, presentation = "rail", isCollapsed = false, collapseLabel, expandLabel, toggleSource, header, footer, onAction, onCollapsedChange, }) => {
25
+ const collapsed = presentation === "rail" && isCollapsed;
26
+ const toggleLabel = collapsed ? expandLabel : collapseLabel;
27
+ const canToggle = presentation === "rail" && toggleSource !== undefined && toggleLabel !== undefined && onCollapsedChange !== undefined;
28
+ return (_jsxs("div", { "data-tier": "composition", "data-component": "Sidebar", "data-presentation": presentation, "data-collapsed": collapsed ? "true" : "false", className: [
29
+ "flex min-h-0 flex-col overflow-hidden bg-background text-foreground",
30
+ presentation === "drawer" ? "w-full" : collapsed ? "h-full w-16" : "h-full w-64",
31
+ presentation === "rail" ? "border-r border-separator transition-[width] motion-reduce:transition-none" : "",
32
+ ].join(" "), "data-contract": ["OVERFLOW-2", presentation === "drawer" ? "MEASURE-2" : "MEASURE-6"].join(" "), children: [canToggle ? (_jsx("div", { className: collapsed ? "flex justify-center p-2" : "flex justify-end p-2", "data-contract": "PADDING-2", children: _jsx(IconButton, { source: toggleSource, label: toggleLabel, isActive: collapsed, onPress: () => onCollapsedChange(!collapsed) }) })) : null, collapsed || header == null ? null : _jsx("div", { className: "px-3 pb-3", "data-contract": "PADDING-3", children: header }), _jsx(ListBox, { "aria-label": label, selectionMode: "single", selectedKeys: selectedKey === undefined ? [] : [selectedKey], onSelectionChange: (keys) => {
33
+ const key = firstKey(keys);
34
+ if (key !== undefined)
35
+ onAction?.(key);
36
+ }, className: collapsed ? "min-h-0 flex-1 items-center gap-1 overflow-y-auto p-2" : "min-h-0 flex-1 gap-1 overflow-y-auto p-3", "data-contract": collapsed ? "GAP-1 PADDING-2" : "GAP-1 PADDING-3", children: groups.map((group) => (_jsxs(ListBox.Section, { id: sectionKey(group.id), className: collapsed ? "flex flex-col items-center gap-1" : "flex flex-col gap-1", "data-contract": "GAP-1", children: [group.label === undefined ? null : (_jsx(Header, { className: collapsed ? "sr-only" : "px-2 pb-1 pt-3 text-xs font-medium text-muted", ...(collapsed ? {} : { "data-contract": "PADDING-2 PADDING-1 PADDING-3 FONT-1 TONE-2" }), children: group.label })), group.items.map((item) => (_jsxs(ListBox.Item, { id: item.id, textValue: item.label, className: collapsed
37
+ ? "group flex size-11 cursor-pointer items-center justify-center rounded-full text-foreground outline-none data-[disabled=true]:cursor-default data-[disabled=true]:opacity-50 data-[focus-visible=true]:ring-2 data-[focus-visible=true]:ring-accent data-[hovered=true]:bg-default data-[selected=true]:bg-accent-soft data-[selected=true]:text-accent-soft-foreground"
38
+ : "flex cursor-pointer items-center gap-3 rounded-large px-3 py-2 text-foreground outline-none data-[disabled=true]:cursor-default data-[disabled=true]:opacity-50 data-[focus-visible=true]:ring-2 data-[focus-visible=true]:ring-accent data-[hovered=true]:bg-default data-[selected=true]:bg-accent-soft data-[selected=true]:text-accent-soft-foreground", "data-contract": collapsed ? "TONE-1 SURFACE-4" : "GAP-3 PADDING-3 PADDING-2 TONE-1 SURFACE-4", ...(collapsed ? { "aria-label": item.label } : {}), ...(item.isDisabled === undefined ? {} : { isDisabled: item.isDisabled }), children: [item.source === undefined ? null : _jsx(Icon, { source: item.source, usage: "leading" }), collapsed ? null : _jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium", "data-contract": "FLOW-4 FONT-2", children: item.label }), collapsed || item.trailing == null ? null : _jsx("span", { className: "shrink-0", children: item.trailing })] }, item.id)))] }, group.id))) }), collapsed || footer == null ? null : _jsx("div", { className: "p-3 pt-0", "data-contract": "PADDING-3 PADDING-0", children: footer })] }));
39
+ };
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/Sidebar/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const workspaceShellClassName: import("tailwind-variants").CnReturn;
2
+ export declare const workspaceShellHeaderClassName: import("tailwind-variants").CnReturn;
3
+ export declare const workspaceShellCompactHeaderClassName: import("tailwind-variants").CnReturn;
4
+ export declare const workspaceShellLayoutClassName: import("tailwind-variants").CnReturn;
5
+ export declare const workspaceShellNavigationClassName: import("tailwind-variants").CnReturn;
6
+ export declare const workspaceShellPrimaryClassName: import("tailwind-variants").CnReturn;
7
+ export declare const workspaceShellRailClassName: import("tailwind-variants").CnReturn;
8
+ export declare const workspaceShellLeadingRuleClassName: import("tailwind-variants").CnReturn;
9
+ export declare const workspaceShellCompactNavigationClassName: import("tailwind-variants").CnReturn;
10
+ export declare const workspaceShellFloatingLayerClassName: import("tailwind-variants").CnReturn;
11
+ //# sourceMappingURL=classNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/classNames.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,sCAAoC,CAAA;AACxE,eAAO,MAAM,6BAA6B,sCAA2C,CAAA;AACrF,eAAO,MAAM,oCAAoC,sCAAmD,CAAA;AACpG,eAAO,MAAM,6BAA6B,sCAA2C,CAAA;AACrF,eAAO,MAAM,iCAAiC,sCAA+C,CAAA;AAC7F,eAAO,MAAM,8BAA8B,sCAA4C,CAAA;AACvF,eAAO,MAAM,2BAA2B,sCAAyC,CAAA;AACjF,eAAO,MAAM,kCAAkC,sCAAiD,CAAA;AAChG,eAAO,MAAM,wCAAwC,sCAAuD,CAAA;AAC5G,eAAO,MAAM,oCAAoC,sCAAmD,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { cn } from "@heroui/react";
2
+ export const workspaceShellClassName = cn("starci-core-workspace-shell");
3
+ export const workspaceShellHeaderClassName = cn("starci-core-workspace-shell-header");
4
+ export const workspaceShellCompactHeaderClassName = cn("starci-core-workspace-shell-compact-header");
5
+ export const workspaceShellLayoutClassName = cn("starci-core-workspace-shell-layout");
6
+ export const workspaceShellNavigationClassName = cn("starci-core-workspace-shell-navigation");
7
+ export const workspaceShellPrimaryClassName = cn("starci-core-workspace-shell-primary");
8
+ export const workspaceShellRailClassName = cn("starci-core-workspace-shell-rail");
9
+ export const workspaceShellLeadingRuleClassName = cn("starci-core-workspace-shell-leading-rule");
10
+ export const workspaceShellCompactNavigationClassName = cn("starci-core-workspace-shell-compact-navigation");
11
+ export const workspaceShellFloatingLayerClassName = cn("starci-core-workspace-shell-floating-layer");
12
+ //# sourceMappingURL=classNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classNames.js","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/classNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC,6BAA6B,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC,4CAA4C,CAAC,CAAA;AACpG,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC,oCAAoC,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC,wCAAwC,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC,qCAAqC,CAAC,CAAA;AACvF,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC,kCAAkC,CAAC,CAAA;AACjF,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC,0CAA0C,CAAC,CAAA;AAChG,MAAM,CAAC,MAAM,wCAAwC,GAAG,EAAE,CAAC,gDAAgD,CAAC,CAAA;AAC5G,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC,4CAA4C,CAAC,CAAA"}
@@ -0,0 +1,67 @@
1
+ import type { ReactNode } from "react";
2
+ type SlotContent = Exclude<ReactNode, null | undefined | boolean>;
3
+ type ShellOwnedMain = ({
4
+ readonly primaryLabel: string;
5
+ readonly primaryLabelledBy?: never;
6
+ } | {
7
+ readonly primaryLabel?: never;
8
+ readonly primaryLabelledBy: string;
9
+ }) & {
10
+ readonly mainLandmark?: "shell";
11
+ };
12
+ type CallerOwnedMain = {
13
+ readonly mainLandmark: "caller";
14
+ readonly primaryLabel?: never;
15
+ readonly primaryLabelledBy?: never;
16
+ };
17
+ type WithNavigation = {
18
+ readonly navigation: SlotContent;
19
+ readonly navigationLabel: string;
20
+ readonly navigationTrack?: "fixed" | "intrinsic";
21
+ readonly navigationVisibility?: "always" | "wide";
22
+ };
23
+ type WithoutNavigation = {
24
+ readonly navigation?: undefined;
25
+ readonly navigationLabel?: never;
26
+ readonly navigationTrack?: never;
27
+ readonly navigationVisibility?: never;
28
+ };
29
+ type WithRail = {
30
+ readonly rail: SlotContent;
31
+ readonly railLabel: string;
32
+ readonly railMode?: "flow" | "sticky";
33
+ readonly railWidth?: "compact" | "standard" | "wide";
34
+ readonly railInset?: "none" | "content";
35
+ readonly railPosition?: "leading" | "trailing";
36
+ readonly isRailLabelHidden?: boolean;
37
+ };
38
+ type WithoutRail = {
39
+ readonly rail?: undefined;
40
+ readonly railLabel?: never;
41
+ readonly railMode?: never;
42
+ readonly railWidth?: never;
43
+ readonly railInset?: never;
44
+ readonly railPosition?: never;
45
+ readonly isRailLabelHidden?: never;
46
+ };
47
+ type WithCompactNavigation = {
48
+ readonly compactNavigation: SlotContent;
49
+ readonly compactNavigationLabel: string;
50
+ };
51
+ type WithoutCompactNavigation = {
52
+ readonly compactNavigation?: undefined;
53
+ readonly compactNavigationLabel?: never;
54
+ };
55
+ export type WorkspaceShellProps = (ShellOwnedMain | CallerOwnedMain) & (WithNavigation | WithoutNavigation) & (WithRail | WithoutRail) & (WithCompactNavigation | WithoutCompactNavigation) & {
56
+ readonly header?: ReactNode;
57
+ readonly compactHeader?: ReactNode;
58
+ readonly primary: ReactNode;
59
+ readonly primaryId?: string;
60
+ readonly floatingLayer?: ReactNode;
61
+ readonly align?: "start" | "stretch";
62
+ readonly className?: string;
63
+ };
64
+ /** Shared product workspace anatomy; connected apps supply every route and business slot. */
65
+ export declare const WorkspaceShell: (props: WorkspaceShellProps) => import("react").JSX.Element;
66
+ export {};
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "@heroui/react";
3
+ import { Rail } from "../../branch/Rail/index.js";
4
+ import { workspaceShellClassName, workspaceShellCompactHeaderClassName, workspaceShellCompactNavigationClassName, workspaceShellFloatingLayerClassName, workspaceShellHeaderClassName, workspaceShellLayoutClassName, workspaceShellLeadingRuleClassName, workspaceShellNavigationClassName, workspaceShellPrimaryClassName, workspaceShellRailClassName, } from "./classNames.js";
5
+ /** Shared product workspace anatomy; connected apps supply every route and business slot. */
6
+ export const WorkspaceShell = (props) => {
7
+ const hasHeader = props.header != null && typeof props.header !== "boolean";
8
+ const hasCompactHeader = props.compactHeader != null && typeof props.compactHeader !== "boolean";
9
+ const hasNavigation = props.navigation !== undefined;
10
+ const hasRail = props.rail !== undefined;
11
+ const hasCompactNavigation = props.compactNavigation !== undefined;
12
+ const railPosition = hasRail ? props.railPosition ?? "trailing" : undefined;
13
+ const hasFloatingLayer = props.floatingLayer != null && typeof props.floatingLayer !== "boolean";
14
+ const mainLandmark = props.mainLandmark ?? "shell";
15
+ const primary = mainLandmark === "caller" ? _jsx("div", { className: workspaceShellPrimaryClassName, "data-contract": "GAP-5", "data-grammar-workspace-primary": "true", "data-grammar-main-landmark": "caller", id: props.primaryId, tabIndex: -1, children: props.primary }) : _jsx("main", { "aria-label": props.primaryLabel, "aria-labelledby": props.primaryLabelledBy, className: workspaceShellPrimaryClassName, "data-contract": "GAP-5", "data-grammar-workspace-primary": "true", "data-grammar-main-landmark": "shell", id: props.primaryId, tabIndex: -1, children: props.primary });
16
+ const rail = hasRail ? _jsx("div", { className: workspaceShellRailClassName, "data-grammar-workspace-rail-region": "true", children: _jsx(Rail, { inset: props.railInset ?? "none", isLabelHidden: props.isRailLabelHidden ?? true, label: props.railLabel, mode: props.railMode ?? "flow", width: props.railWidth ?? "standard", children: props.rail }) }) : null;
17
+ const leadingRule = railPosition === "leading" ? _jsx("div", { "aria-hidden": "true", className: workspaceShellLeadingRuleClassName, "data-contract": "BOUNDARY-4", "data-grammar-workspace-leading-rule": "true" }) : null;
18
+ return _jsxs("div", { className: cn(workspaceShellClassName, props.className), "data-grammar-workspace-floating": hasFloatingLayer ? "present" : "absent", "data-grammar-workspace-shell": "true", children: [hasHeader ? _jsx("header", { className: workspaceShellHeaderClassName, "data-contract": "MARGIN-5", "data-grammar-workspace-header": "true", children: props.header }) : null, hasCompactHeader ? _jsx("div", { className: workspaceShellCompactHeaderClassName, "data-grammar-workspace-compact-header": "true", children: props.compactHeader }) : null, _jsxs("div", { className: workspaceShellLayoutClassName, "data-contract": "GAP-5 MEASURE-1", "data-grammar-workspace-align": props.align ?? "start", "data-grammar-workspace-navigation": hasNavigation ? "present" : "absent", "data-grammar-workspace-navigation-track": hasNavigation ? props.navigationTrack ?? "fixed" : undefined, "data-grammar-workspace-navigation-visibility": hasNavigation ? props.navigationVisibility ?? "always" : undefined, "data-grammar-workspace-rail": hasRail ? "present" : "absent", "data-grammar-workspace-rail-position": railPosition, "data-grammar-workspace-rail-width": hasRail ? props.railWidth ?? "standard" : undefined, children: [hasNavigation ? _jsx("nav", { "aria-label": props.navigationLabel, className: workspaceShellNavigationClassName, "data-grammar-workspace-navigation-region": "true", children: props.navigation }) : null, railPosition === "leading" ? rail : null, leadingRule, primary, railPosition === "trailing" ? rail : null] }), hasCompactNavigation ? _jsx("nav", { "aria-label": props.compactNavigationLabel, className: workspaceShellCompactNavigationClassName, "data-contract": "BOUNDARY-1", "data-grammar-workspace-compact-navigation": "true", children: props.compactNavigation }) : null, hasFloatingLayer ? _jsx("div", { className: workspaceShellFloatingLayerClassName, "data-contract": "OVERFLOW-4", "data-grammar-workspace-floating-layer": "true", children: props.floatingLayer }) : null] });
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":"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"}