@starci/grammar 0.16.2 → 0.16.3

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 (38) hide show
  1. package/README.md +3 -3
  2. package/dist/.build-stamp.json +4 -4
  3. package/dist/common/registry.d.ts +3 -1
  4. package/dist/common/registry.d.ts.map +1 -1
  5. package/dist/common/registry.js +2 -2
  6. package/dist/common/registry.js.map +1 -1
  7. package/dist/common/renderers.d.ts +2 -1
  8. package/dist/common/renderers.d.ts.map +1 -1
  9. package/dist/common/renderers.js +2 -1
  10. package/dist/common/renderers.js.map +1 -1
  11. package/dist/common/styles.css +119 -84
  12. package/dist/core/composite/ChatBubble/index.d.ts +1 -1
  13. package/dist/core/composite/ChatBubble/index.js +1 -1
  14. package/dist/core/composite/FillViewport/index.d.ts +1 -1
  15. package/dist/core/composite/FillViewport/index.js +1 -1
  16. package/dist/core/composite/Freestyle/index.d.ts +19 -0
  17. package/dist/core/composite/Freestyle/index.d.ts.map +1 -0
  18. package/dist/core/composite/Freestyle/index.js +9 -0
  19. package/dist/core/composite/Freestyle/index.js.map +1 -0
  20. package/dist/core/composition/Page/index.d.ts +1 -1
  21. package/dist/core/composition/Page/index.js +1 -1
  22. package/dist/core/composition/PaneGrid/index.d.ts +78 -0
  23. package/dist/core/composition/PaneGrid/index.d.ts.map +1 -0
  24. package/dist/core/composition/PaneGrid/index.js +93 -0
  25. package/dist/core/composition/PaneGrid/index.js.map +1 -0
  26. package/dist/core/composition/PaneGrid/layout.d.ts +48 -0
  27. package/dist/core/composition/PaneGrid/layout.d.ts.map +1 -0
  28. package/dist/core/composition/PaneGrid/layout.js +83 -0
  29. package/dist/core/composition/PaneGrid/layout.js.map +1 -0
  30. package/package.json +1 -1
  31. package/dist/core/composition/ChatWorkspace/classNames.d.ts +0 -37
  32. package/dist/core/composition/ChatWorkspace/classNames.d.ts.map +0 -1
  33. package/dist/core/composition/ChatWorkspace/classNames.js +0 -38
  34. package/dist/core/composition/ChatWorkspace/classNames.js.map +0 -1
  35. package/dist/core/composition/ChatWorkspace/index.d.ts +0 -48
  36. package/dist/core/composition/ChatWorkspace/index.d.ts.map +0 -1
  37. package/dist/core/composition/ChatWorkspace/index.js +0 -42
  38. package/dist/core/composition/ChatWorkspace/index.js.map +0 -1
package/README.md CHANGED
@@ -409,8 +409,8 @@ The package requires Node 22 or newer, as does the pinned DiceBear engine.
409
409
  MarkdownTableFrame, MediaFrame, Rail, SectionHeader, StaticStateRow, SurfaceAccordionCard,
410
410
  SurfaceCard, SurfaceCopyGroup, SurfaceListCard, VerticalScrollRegion.
411
411
 
412
- **Compositions (11).** BottomNav, ChatWorkspace, Footer, NavigationFeatureNav, Page, PageContainer, PageHeader,
413
- PrimaryRailLayout, Sidebar, TopBar, WorkspaceShell. Storybook pins settings and data-list content
412
+ **Compositions (11).** BottomNav, Footer, NavigationFeatureNav, Page, PageContainer, PageHeader,
413
+ PaneGrid, PrimaryRailLayout, Sidebar, TopBar, WorkspaceShell. Storybook pins settings and data-list content
414
414
  recipes to each family; the mobile app recipes reuse the fixed App shell with its left navigation drawer.
415
415
 
416
416
  `PageHeader` heads one page: `breadcrumbs`, `title` (the page's `h1`), `description`, `meta`, `status` chips beside the
@@ -423,7 +423,7 @@ children are the body, and `measure` (`reading`, `product`, `full`) is the one m
423
423
  body. The band runs full width; the body sits in the measure and gutter one region step below it (one region step
424
424
  from the top without a header), its sections a region step apart, and it clips past its content box so nothing in it
425
425
  reaches across the gutter. `isSkeleton` passes to the header. Page is the single owner of the page inset: the layout
426
- frames (`WorkspaceShell`, `PrimaryRailLayout`, `ChatWorkspace`) never wrap a page in a `PageContainer`.
426
+ frames (`WorkspaceShell`, `PrimaryRailLayout`, `PaneGrid`) never wrap a page in a `PageContainer`.
427
427
 
428
428
  ```tsx
429
429
  <Page measure="reading" header={{ breadcrumbs, title: "Profile", tabs: { label: "Profile", items, selectedKey, onSelect } }}>
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "starci/grammar-build-stamp@1",
3
3
  "package": "@starci/grammar",
4
- "version": "0.16.2",
4
+ "version": "0.16.3",
5
5
  "algorithm": "starci/grammar-source-digest@1",
6
- "sourceDigest": "sha256:33d7d44998b8db935e8642e9db16cfe9e10932bef2fd3094408628fb8a3e9926",
7
- "distDigest": "sha256:91c2743707461ddd250e960d5c19e8a162e77412712076d04f0eafe2721500b0",
8
- "builtAt": "2026-10-30T18:56:40.084Z"
6
+ "sourceDigest": "sha256:123a1964677dbd34c395444bcb0df6b538ef593979eecf29bd4ae93fee76af0a",
7
+ "distDigest": "sha256:e349ceb6a4bb1332c5f85dd799b2a6d047d60bfe3b9947c03a1a27efe6874a84",
8
+ "builtAt": "2026-10-31T04:17:04.329Z"
9
9
  }
@@ -75,11 +75,13 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
75
75
  readonly Button: (props: import("./renderers.js").ButtonProps) => import("react").JSX.Element;
76
76
  readonly Code: ({ children, isSkeleton }: import("./renderers.js").CodeProps) => import("react").JSX.Element;
77
77
  readonly ChatBubble: ({ children, side, author, avatar, meta, status, actions, footer, isHighlight, id, isSkeleton, }: import("./renderers.js").ChatBubbleProps) => import("react").JSX.Element;
78
- readonly ChatWorkspace: (props: import("./renderers.js").ChatWorkspaceProps) => import("react").JSX.Element;
78
+ readonly PaneGrid: (props: import("./renderers.js").PaneGridProps) => import("react").JSX.Element;
79
+ readonly Pane: (props: import("./renderers.js").PaneProps) => import("react").JSX.Element;
79
80
  readonly Divider: (props: import("./renderers.js").DividerProps) => import("react").JSX.Element;
80
81
  readonly EmptyNotice: ({ message, description, iconSource, artwork, actionLabel, actionStartContent, actionVariant, isActionPending, onAction, }: import("./renderers.js").EmptyNoticeProps) => import("react").JSX.Element;
81
82
  readonly FencedCodeBlock: (props: import("./renderers.js").FencedCodeBlockProps) => import("react").JSX.Element;
82
83
  readonly FillViewport: ({ children, minHeight, bottomInset, label }: import("./renderers.js").FillViewportProps) => import("react").JSX.Element;
84
+ readonly Freestyle: ({ children, className, reason }: import("./renderers.js").FreestyleProps) => import("react").JSX.Element;
83
85
  readonly GrammarRoot: ({ className, theme, navigate, useHref, ...props }: import("./renderers.js").GrammarRootProps) => import("react").JSX.Element;
84
86
  readonly Heading: ({ children, level, scale, isSkeleton, isVisuallyHidden, }: import("./renderers.js").HeadingProps) => import("react").JSX.Element;
85
87
  readonly HorizontalScrollRegion: import("react").ForwardRefExoticComponent<Omit<import("./renderers.js").HorizontalScrollRegionProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { Backdrop, Badge, Button, Code, ChatBubble, ChatWorkspace, Divider, EmptyNotice, FencedCodeBlock, FillViewport, GrammarRoot, Heading, HorizontalScrollRegion, Icon, IconButton, IconTile, IncludedMark, Input, Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame, NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout, Progress, Rail, RankArtwork, Region, RelativeTime, SectionHeader, Sidebar, StateMark, StaticStateRow, StatusDot, Subnav, SurfaceAccordionCard, SurfaceCard, SurfaceCopyGroup, SurfaceListCard, Tabs, Terminal, Text, TextAction, Tooltip, VerticalScrollRegion, WorkspaceShell, } from "./renderers.js";
2
+ import { Backdrop, Badge, Button, Code, ChatBubble, PaneGrid, Pane, Divider, EmptyNotice, FencedCodeBlock, FillViewport, Freestyle, GrammarRoot, Heading, HorizontalScrollRegion, Icon, IconButton, IconTile, IncludedMark, Input, Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame, NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout, Progress, Rail, RankArtwork, Region, RelativeTime, SectionHeader, Sidebar, StateMark, StaticStateRow, StatusDot, Subnav, SurfaceAccordionCard, SurfaceCard, SurfaceCopyGroup, SurfaceListCard, Tabs, Terminal, Text, TextAction, Tooltip, VerticalScrollRegion, WorkspaceShell, } from "./renderers.js";
3
3
  import { COMMON_FORMS_COMPONENTS } from "./renderers-forms.js";
4
4
  import { COMMON_OVERLAYS_COMPONENTS } from "./renderers-overlays.js";
5
5
  import { COMMON_NAVIGATION_COMPONENTS } from "./renderers-navigation.js";
6
6
  export const COMMON_GRAMMAR_COMPONENTS = Object.freeze({
7
- Backdrop, Badge, Button, Code, ChatBubble, ChatWorkspace, Divider, EmptyNotice, FencedCodeBlock, FillViewport, GrammarRoot,
7
+ Backdrop, Badge, Button, Code, ChatBubble, PaneGrid, Pane, Divider, EmptyNotice, FencedCodeBlock, FillViewport, Freestyle, GrammarRoot,
8
8
  Heading, HorizontalScrollRegion, Icon, IconButton, IconTile, IncludedMark, Input,
9
9
  Label, LeadingNumber, List, ListItem, ListRow, MarkdownArticle, MarkdownTableFrame, Mascot, MediaFrame,
10
10
  NavigationFeatureNav, NavLandmark, OtpInput, Page, PageContainer, PageHeader, PinnedActionBar, PressableField, PrimaryRailLayout,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"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"}
@@ -38,13 +38,14 @@ export { PrimaryRailLayout, type PrimaryRailLayoutProps } from "../core/composit
38
38
  export { NavigationFeatureNav, type NavigationFeatureNavProps } from "../core/composition/NavigationFeatureNav/index.js";
39
39
  export { Sidebar, type SidebarGroup, type SidebarItem, type SidebarProps } from "../core/composition/Sidebar/index.js";
40
40
  export { WorkspaceShell, type WorkspaceShellHeaderLandmark, type WorkspaceShellNavigationDrawer, type WorkspaceShellProps } from "../core/composition/WorkspaceShell/index.js";
41
- export { ChatWorkspace, type ChatWorkspaceProps } from "../core/composition/ChatWorkspace/index.js";
41
+ export { PaneGrid, Pane, type PaneGridProps, type PaneProps, type PaneTrack } from "../core/composition/PaneGrid/index.js";
42
42
  export { StateMark, type StateMarkProps } from "../core/StateMark.js";
43
43
  export { LeadingNumber, type LeadingNumberProps } from "../core/LeadingNumber.js";
44
44
  export { OtpInput, type OtpInputProps } from "../core/OtpInput.js";
45
45
  export { StaticStateRow, type RowVerdict, type StaticStateRowData, type StaticStateRowProps } from "../core/composite/StaticStateRow/index.js";
46
46
  export { ListRow, type ListRowProps } from "../core/composite/ListRow/index.js";
47
47
  export { Backdrop, type BackdropProps } from "../core/composite/Backdrop/index.js";
48
+ export { Freestyle, type FreestyleProps } from "../core/composite/Freestyle/index.js";
48
49
  export { EmptyNotice, type EmptyNoticeArtwork, type EmptyNoticeProps } from "../core/composite/EmptyNotice/index.js";
49
50
  export { ChatBubble, ChatBubbleSkeletons, type ChatBubbleProps, type ChatBubbleSide, type ChatBubbleSkeletonsProps } from "../core/composite/ChatBubble/index.js";
50
51
  export { FillViewport, type FillViewportBottomInset, type FillViewportMinHeight, type FillViewportProps } from "../core/composite/FillViewport/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
@@ -39,13 +39,14 @@ export { PrimaryRailLayout } from "../core/composition/PrimaryRailLayout/index.j
39
39
  export { NavigationFeatureNav } from "../core/composition/NavigationFeatureNav/index.js";
40
40
  export { Sidebar } from "../core/composition/Sidebar/index.js";
41
41
  export { WorkspaceShell } from "../core/composition/WorkspaceShell/index.js";
42
- export { ChatWorkspace } from "../core/composition/ChatWorkspace/index.js";
42
+ export { PaneGrid, Pane } from "../core/composition/PaneGrid/index.js";
43
43
  export { StateMark } from "../core/StateMark.js";
44
44
  export { LeadingNumber } from "../core/LeadingNumber.js";
45
45
  export { OtpInput } from "../core/OtpInput.js";
46
46
  export { StaticStateRow } from "../core/composite/StaticStateRow/index.js";
47
47
  export { ListRow } from "../core/composite/ListRow/index.js";
48
48
  export { Backdrop } from "../core/composite/Backdrop/index.js";
49
+ export { Freestyle } from "../core/composite/Freestyle/index.js";
49
50
  export { EmptyNotice } from "../core/composite/EmptyNotice/index.js";
50
51
  export { ChatBubble, ChatBubbleSkeletons } from "../core/composite/ChatBubble/index.js";
51
52
  export { FillViewport } from "../core/composite/FillViewport/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
@@ -955,6 +955,18 @@
955
955
  * inset; its corners stay square but the accent one). The copy sits at the top; the artwork takes the height left, so
956
956
  * a hero Mascot fills it.
957
957
  */
958
+ /*
959
+ * Freestyle (ruling grammar-freestyle-region): the app's own region. It fills its host and adds no paint, inset or
960
+ * radius of its own; what is inside is the app's.
961
+ */
962
+ .starci-core-freestyle {
963
+ display: block;
964
+ box-sizing: border-box;
965
+ min-width: 0;
966
+ inline-size: 100%;
967
+ block-size: 100%;
968
+ }
969
+
958
970
  .starci-core-backdrop {
959
971
  position: relative;
960
972
  display: flex;
@@ -2730,74 +2742,50 @@
2730
2742
  }
2731
2743
  }
2732
2744
 
2733
- .starci-core-chat-workspace {
2745
+ /* --- PaneGrid: named areas laid out flush; the divider is the start edge of the later pane (n-1 lines, never doubled). --- */
2746
+ .starci-core-pane-grid {
2734
2747
  display: flex;
2748
+ width: 100%;
2735
2749
  height: 100%;
2736
2750
  min-height: 0;
2737
2751
  min-width: 0;
2738
2752
  flex-direction: column;
2739
2753
  overflow: hidden;
2740
2754
  background: var(--background, var(--starci-core-canvas, Canvas));
2755
+ container: starci-core-pane-grid / inline-size;
2741
2756
  }
2742
2757
 
2743
- .starci-core-chat-workspace-header,
2744
- .starci-core-chat-workspace-composer,
2745
- .starci-core-chat-workspace-rail-trigger-boundary {
2746
- min-width: 0;
2747
- flex: none;
2748
- }
2749
-
2750
- .starci-core-chat-workspace-rail-trigger-boundary {
2751
- display: flex;
2752
- justify-content: flex-end;
2753
- padding: 0.5rem 1rem;
2754
- border-bottom: 1px solid var(--separator, var(--starci-core-separator, GrayText));
2755
- }
2756
-
2757
- .starci-core-chat-workspace-rail-trigger {
2758
- display: inline-flex;
2759
- min-width: var(--starci-core-control-min-size, 2.5rem);
2760
- min-height: var(--starci-core-control-min-size, 2.5rem);
2761
- align-items: center;
2762
- justify-content: center;
2763
- padding-inline: 0.75rem;
2764
- border: 1px solid var(--separator, var(--starci-core-separator, GrayText));
2765
- border-radius: var(--starci-core-control-radius, 0.75rem);
2766
- background: var(--surface, var(--starci-core-surface, Canvas));
2767
- color: var(--foreground, var(--starci-core-foreground, CanvasText));
2768
- font-size: 0.875rem;
2769
- font-weight: 500;
2770
- }
2771
-
2772
- .starci-core-chat-workspace-rail-trigger:focus-visible,
2773
- .starci-core-chat-workspace-conversation:focus-visible,
2774
- .starci-core-chat-workspace-overlay-rail:focus-visible {
2775
- outline: 2px solid var(--focus, var(--starci-core-focus, Highlight));
2776
- outline-offset: -2px;
2777
- }
2778
-
2779
- .starci-core-chat-workspace-layout {
2758
+ /* The arrangement and the pane edges are chosen by the grid's own width: base, medium from 48rem, wide from 70rem. */
2759
+ .starci-core-pane-grid-tracks {
2780
2760
  display: grid;
2781
2761
  min-height: 0;
2782
2762
  min-width: 0;
2783
2763
  flex: 1;
2784
- grid-template-columns: minmax(0, 1fr);
2785
- gap: var(--grammar-region-gap, 1.5rem);
2786
- }
2787
-
2788
- .starci-core-chat-workspace-layout-without-rail {
2789
- grid-template-columns: minmax(0, 1fr);
2764
+ gap: 0;
2765
+ grid-template-areas: var(--starci-core-pane-grid-areas-base);
2766
+ grid-template-columns: var(--starci-core-pane-grid-columns-base);
2767
+ grid-template-rows: var(--starci-core-pane-grid-rows-base);
2790
2768
  }
2791
2769
 
2792
- .starci-core-chat-workspace-primary {
2793
- display: flex;
2770
+ /* A pane only fills its cell: its children are laid out by the app. */
2771
+ .starci-core-pane {
2794
2772
  min-height: 0;
2795
2773
  min-width: 0;
2796
- flex-direction: column;
2797
2774
  overflow: hidden;
2775
+ --starci-core-pane-d: var(--starci-core-pane-d-base);
2776
+ --starci-core-pane-i: var(--starci-core-pane-i-base);
2777
+ --starci-core-pane-b: var(--starci-core-pane-b-base);
2778
+ display: var(--starci-core-pane-d, block);
2779
+ flex-direction: column;
2780
+ border-inline-start: var(--starci-core-pane-i, 0px) solid var(--separator, var(--starci-core-separator, GrayText));
2781
+ border-block-start: var(--starci-core-pane-b, 0px) solid var(--separator, var(--starci-core-separator, GrayText));
2798
2782
  }
2799
2783
 
2800
- .starci-core-chat-workspace-conversation {
2784
+ .starci-core-pane[data-grammar-pane-surface="true"] {
2785
+ background: var(--surface, var(--starci-core-surface, Canvas));
2786
+ }
2787
+
2788
+ .starci-core-pane-scroll {
2801
2789
  min-height: 0;
2802
2790
  min-width: 0;
2803
2791
  flex: 1;
@@ -2806,44 +2794,67 @@
2806
2794
  scroll-behavior: smooth;
2807
2795
  }
2808
2796
 
2809
- .starci-core-chat-workspace-composer {
2810
- border-top: 1px solid var(--separator, var(--starci-core-separator, GrayText));
2811
- background: var(--background, var(--starci-core-canvas, Canvas));
2797
+ .starci-core-pane-scroll:focus-visible,
2798
+ .starci-core-pane-drawer-scroll:focus-visible,
2799
+ .starci-core-pane-trigger:focus-visible {
2800
+ outline: 2px solid var(--focus, var(--starci-core-focus, Highlight));
2801
+ outline-offset: -2px;
2812
2802
  }
2813
2803
 
2814
- .starci-core-chat-workspace-inline-rail { display: none; }
2804
+ .starci-core-pane-grid-triggers {
2805
+ display: var(--starci-core-pane-grid-triggers-base, flex);
2806
+ min-width: 0;
2807
+ flex: none;
2808
+ flex-wrap: wrap;
2809
+ justify-content: flex-end;
2810
+ gap: var(--grammar-inline-gap, 0.5rem);
2811
+ padding: 0.5rem 1rem;
2812
+ border-bottom: 1px solid var(--separator, var(--starci-core-separator, GrayText));
2813
+ }
2814
+
2815
+ .starci-core-pane-trigger {
2816
+ display: var(--starci-core-pane-trigger-base, inline-flex);
2817
+ min-width: var(--starci-core-control-min-size, 2.5rem);
2818
+ min-height: var(--starci-core-control-min-size, 2.5rem);
2819
+ align-items: center;
2820
+ justify-content: center;
2821
+ padding-inline: 0.75rem;
2822
+ border: 1px solid var(--separator, var(--starci-core-separator, GrayText));
2823
+ border-radius: var(--starci-core-control-radius, 0.75rem);
2824
+ background: var(--surface, var(--starci-core-surface, Canvas));
2825
+ color: var(--foreground, var(--starci-core-foreground, CanvasText));
2826
+ font-size: 0.875rem;
2827
+ font-weight: 500;
2828
+ }
2815
2829
 
2816
- .starci-core-chat-workspace-drawer-content {
2817
- right: 0 !important;
2818
- left: auto !important;
2830
+ .starci-core-pane-drawer-content {
2819
2831
  width: min(24rem, calc(100dvw - 1rem)) !important;
2820
2832
  max-width: calc(100dvw - 1rem) !important;
2821
2833
  }
2822
2834
 
2823
- .starci-core-chat-workspace-drawer-dialog {
2835
+ .starci-core-pane-drawer-dialog {
2824
2836
  width: 100% !important;
2825
2837
  height: 100% !important;
2826
2838
  min-height: 0 !important;
2827
2839
  max-width: none !important;
2828
2840
  }
2829
2841
 
2830
- .starci-core-chat-workspace-drawer-body {
2842
+ .starci-core-pane-drawer-body {
2831
2843
  min-height: 0;
2832
2844
  min-width: 0;
2833
2845
  padding: 0;
2834
2846
  overflow: hidden;
2835
2847
  }
2836
2848
 
2837
- .starci-core-chat-workspace-overlay-rail {
2849
+ .starci-core-pane-drawer-scroll {
2838
2850
  height: 100%;
2839
2851
  min-height: 0;
2840
2852
  min-width: 0;
2841
- padding: 1rem;
2842
2853
  overflow-y: auto;
2843
2854
  overscroll-behavior: contain;
2844
2855
  }
2845
2856
 
2846
- .starci-core-chat-workspace-drawer-close {
2857
+ .starci-core-pane-drawer-close {
2847
2858
  width: 2.5rem !important;
2848
2859
  height: 2.5rem !important;
2849
2860
  border: 1px solid var(--separator, var(--starci-core-separator, GrayText)) !important;
@@ -2852,6 +2863,50 @@
2852
2863
  color: var(--foreground, var(--starci-core-foreground, CanvasText)) !important;
2853
2864
  }
2854
2865
 
2866
+ @container starci-core-pane-grid (min-width: 48rem) {
2867
+ .starci-core-pane-grid-tracks {
2868
+ grid-template-areas: var(--starci-core-pane-grid-areas-medium);
2869
+ grid-template-columns: var(--starci-core-pane-grid-columns-medium);
2870
+ grid-template-rows: var(--starci-core-pane-grid-rows-medium);
2871
+ }
2872
+
2873
+ .starci-core-pane {
2874
+ --starci-core-pane-d: var(--starci-core-pane-d-medium);
2875
+ --starci-core-pane-i: var(--starci-core-pane-i-medium);
2876
+ --starci-core-pane-b: var(--starci-core-pane-b-medium);
2877
+ }
2878
+
2879
+ .starci-core-pane-grid-triggers {
2880
+ display: var(--starci-core-pane-grid-triggers-medium, flex);
2881
+ }
2882
+
2883
+ .starci-core-pane-trigger {
2884
+ display: var(--starci-core-pane-trigger-medium, inline-flex);
2885
+ }
2886
+ }
2887
+
2888
+ @container starci-core-pane-grid (min-width: 70rem) {
2889
+ .starci-core-pane-grid-tracks {
2890
+ grid-template-areas: var(--starci-core-pane-grid-areas-wide);
2891
+ grid-template-columns: var(--starci-core-pane-grid-columns-wide);
2892
+ grid-template-rows: var(--starci-core-pane-grid-rows-wide);
2893
+ }
2894
+
2895
+ .starci-core-pane {
2896
+ --starci-core-pane-d: var(--starci-core-pane-d-wide);
2897
+ --starci-core-pane-i: var(--starci-core-pane-i-wide);
2898
+ --starci-core-pane-b: var(--starci-core-pane-b-wide);
2899
+ }
2900
+
2901
+ .starci-core-pane-grid-triggers {
2902
+ display: var(--starci-core-pane-grid-triggers-wide, flex);
2903
+ }
2904
+
2905
+ .starci-core-pane-trigger {
2906
+ display: var(--starci-core-pane-trigger-wide, inline-flex);
2907
+ }
2908
+ }
2909
+
2855
2910
  @container starci-core-workspace-shell (max-width: 72rem) {
2856
2911
  .starci-core-workspace-shell-rail .starci-core-rail {
2857
2912
  max-width: none;
@@ -2923,26 +2978,6 @@
2923
2978
  }
2924
2979
  }
2925
2980
 
2926
- @media (min-width: 48rem) {
2927
- .starci-core-chat-workspace-layout[data-grammar-chat-workspace-rail-width="compact"] {
2928
- grid-template-columns: minmax(0, 1fr) minmax(14rem, var(--starci-core-rail-compact, 16rem));
2929
- }
2930
-
2931
- .starci-core-chat-workspace-layout[data-grammar-chat-workspace-rail-width="standard"] {
2932
- grid-template-columns: minmax(0, 1fr) minmax(16rem, var(--starci-core-rail-standard, 20rem));
2933
- }
2934
-
2935
- .starci-core-chat-workspace-layout[data-grammar-chat-workspace-rail-width="wide"] {
2936
- grid-template-columns: minmax(0, 1fr) minmax(20rem, var(--starci-core-rail-wide, 24rem));
2937
- }
2938
-
2939
- .starci-core-chat-workspace-inline-rail {
2940
- display: block;
2941
- min-height: 0;
2942
- min-width: 0;
2943
- }
2944
- }
2945
-
2946
2981
  @media (prefers-reduced-motion: reduce) {
2947
2982
  [data-grammar-motion="animated"] {
2948
2983
  scroll-behavior: auto;
@@ -3790,19 +3825,19 @@
3790
3825
  white-space: normal !important;
3791
3826
  }
3792
3827
 
3793
- /* --- Chat workspace: the compact rail trigger's resting paint. --- */
3794
- .starci-core-chat-workspace-rail-trigger {
3828
+ /* --- PaneGrid: the compact drawer trigger's resting paint. --- */
3829
+ .starci-core-pane-trigger {
3795
3830
  box-shadow: 0 1px 2px 0 color-mix(in srgb, CanvasText 8%, transparent);
3796
3831
  outline: none;
3797
3832
  transition: background-color var(--starci-core-motion-duration, 180ms) var(--starci-core-motion-easing, cubic-bezier(0.2, 0, 0, 1));
3798
3833
  }
3799
3834
 
3800
- .starci-core-chat-workspace-rail-trigger:hover {
3835
+ .starci-core-pane-trigger:hover {
3801
3836
  background: var(--default, var(--starci-core-surface-secondary, Canvas));
3802
3837
  }
3803
3838
 
3804
3839
  @media (prefers-reduced-motion: reduce) {
3805
- .starci-core-chat-workspace-rail-trigger {
3840
+ .starci-core-pane-trigger {
3806
3841
  transition: none;
3807
3842
  }
3808
3843
  }
@@ -47,7 +47,7 @@ export type ChatBubbleSkeletonsProps = {
47
47
  };
48
48
  /**
49
49
  * A loading conversation: `count` skeleton bubbles that alternate incoming and outgoing, inside one `aria-busy` thread.
50
- * Place it as the conversation content of a `ChatWorkspace` (or any scroll owner) while the messages are unresolved.
50
+ * Place it as the conversation content of a `PaneGrid` (or any scroll owner) while the messages are unresolved.
51
51
  */
52
52
  export declare const ChatBubbleSkeletons: ({ count, hasAvatar }: ChatBubbleSkeletonsProps) => import("react").JSX.Element;
53
53
  //# sourceMappingURL=index.d.ts.map
@@ -16,7 +16,7 @@ export const ChatBubble = ({ children, side = "incoming", author, avatar, meta,
16
16
  };
17
17
  /**
18
18
  * A loading conversation: `count` skeleton bubbles that alternate incoming and outgoing, inside one `aria-busy` thread.
19
- * Place it as the conversation content of a `ChatWorkspace` (or any scroll owner) while the messages are unresolved.
19
+ * Place it as the conversation content of a `PaneGrid` (or any scroll owner) while the messages are unresolved.
20
20
  */
21
21
  export const ChatBubbleSkeletons = ({ count = 3, hasAvatar = false }) => (_jsx("div", { className: "starci-core-chat-bubble-thread", "data-grammar-chat-skeleton-thread": "true", "data-loading": "true", "aria-busy": "true", children: Array.from({ length: Math.min(12, Math.max(1, Math.floor(Number.isFinite(count) ? count : 3))) }, (_, index) => (_jsx(ChatBubble, { isSkeleton: true, side: index % 2 === 0 ? "incoming" : "outgoing", avatar: hasAvatar && index % 2 === 0 ? _jsx("span", {}) : undefined }, index))) }));
22
22
  //# sourceMappingURL=index.js.map
@@ -22,7 +22,7 @@ export declare const bottomChromeHeight: () => number;
22
22
  * `--starci-core-fill-top` and any Grammar bottom chrome (a phone navigation bar) into `--starci-core-fill-bottom`; CSS
23
23
  * does the rest (`100dvh` minus both minus the bottom inset), so the server
24
24
  * render already has a sensible full-height fallback. Children fill it (a SurfaceCard with `height="fill"`, a
25
- * ChatWorkspace).
25
+ * PaneGrid).
26
26
  */
27
27
  export declare const FillViewport: ({ children, minHeight, bottomInset, label }: FillViewportProps) => import("react").JSX.Element;
28
28
  //# sourceMappingURL=index.d.ts.map
@@ -23,7 +23,7 @@ const useIsoLayoutEffect = typeof window === "undefined" ? () => { } : useLayout
23
23
  * `--starci-core-fill-top` and any Grammar bottom chrome (a phone navigation bar) into `--starci-core-fill-bottom`; CSS
24
24
  * does the rest (`100dvh` minus both minus the bottom inset), so the server
25
25
  * render already has a sensible full-height fallback. Children fill it (a SurfaceCard with `height="fill"`, a
26
- * ChatWorkspace).
26
+ * PaneGrid).
27
27
  */
28
28
  export const FillViewport = ({ children, minHeight = "md", bottomInset = "page", label }) => {
29
29
  const ref = useRef(null);
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from "react";
2
+ export type FreestyleProps = {
3
+ /** The app's own elements. Grammar components used inside keep their Grammar paint and contract. */
4
+ readonly children?: ReactNode;
5
+ /** The app's own CSS class for this region. */
6
+ readonly className?: string;
7
+ /**
8
+ * Why no Grammar component fits, in a few words (for example "sign-in brand art"). Required: Freestyle is a last
9
+ * resort, and the reason is stamped on the DOM as `data-grammar-freestyle-reason`.
10
+ */
11
+ readonly reason: string;
12
+ };
13
+ /**
14
+ * The sanctioned escape hatch (owner ruling grammar-freestyle-region): a region that fills its host where the app writes its
15
+ * own plain elements and app CSS (layout, paint, radius, arbitrary values, absolutely positioned art) because no Grammar
16
+ * component fits. The rest of the page still follows the Grammar. It adds no paint of its own and is a last resort.
17
+ */
18
+ export declare const Freestyle: ({ children, className, reason }: FreestyleProps) => import("react").JSX.Element;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composite/Freestyle/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,cAAc,GAAG;IACzB,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,iCAAiC,cAAc,gCAUxE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "@heroui/react";
3
+ /**
4
+ * The sanctioned escape hatch (owner ruling grammar-freestyle-region): a region that fills its host where the app writes its
5
+ * own plain elements and app CSS (layout, paint, radius, arbitrary values, absolutely positioned art) because no Grammar
6
+ * component fits. The rest of the page still follows the Grammar. It adds no paint of its own and is a last resort.
7
+ */
8
+ export const Freestyle = ({ children, className, reason }) => (_jsx("div", { className: cn("starci-core-freestyle", className), "data-component": "Freestyle", "data-tier": "composite", "data-grammar-freestyle": "true", "data-grammar-freestyle-reason": reason, children: children }));
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composite/Freestyle/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAelC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAkB,EAAE,EAAE,CAAC,CAC1E,cACI,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,oBAClC,WAAW,eAChB,WAAW,4BACE,MAAM,mCACE,MAAM,YAEpC,QAAQ,GACP,CACT,CAAA"}
@@ -47,7 +47,7 @@ export type PageProps = PageStandardProps | PageBleedProps;
47
47
  /**
48
48
  * One route page: the header band across the region, then the body in the page measure and gutter, one region step
49
49
  * below it. Page is the single owner of the page inset and the page's vertical rhythm; layout frames (WorkspaceShell,
50
- * PrimaryRailLayout, ChatWorkspace) only place regions and never wrap a page in a PageContainer. Page tabs are the
50
+ * PrimaryRailLayout, PaneGrid) only place regions and never wrap a page in a PageContainer. Page tabs are the
51
51
  * header's `tabs`, never a Tabs at the top of the body (lint `page-tabs-in-header`), and a route page renders nothing
52
52
  * beside its Page (lint `route-page-is-one-page`). `chrome="bleed"` is the app surface: the body fills the region edge to
53
53
  * edge, under the trail alone or under a band.
@@ -8,7 +8,7 @@ const isBand = (chrome, header) => chrome === "standard" || header.title !== und
8
8
  /**
9
9
  * One route page: the header band across the region, then the body in the page measure and gutter, one region step
10
10
  * below it. Page is the single owner of the page inset and the page's vertical rhythm; layout frames (WorkspaceShell,
11
- * PrimaryRailLayout, ChatWorkspace) only place regions and never wrap a page in a PageContainer. Page tabs are the
11
+ * PrimaryRailLayout, PaneGrid) only place regions and never wrap a page in a PageContainer. Page tabs are the
12
12
  * header's `tabs`, never a Tabs at the top of the body (lint `page-tabs-in-header`), and a route page renders nothing
13
13
  * beside its Page (lint `route-page-is-one-page`). `chrome="bleed"` is the app surface: the body fills the region edge to
14
14
  * edge, under the trail alone or under a band.
@@ -0,0 +1,78 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ import { type PaneResponsive, type PaneTrack } from "./layout.js";
3
+ export type { PaneBreakpoint, PaneByBreakpoint, PaneResponsive, PaneTrack } from "./layout.js";
4
+ type PaneBaseProps = {
5
+ /** The name of this pane in the grid's `areas`. */
6
+ readonly area: string;
7
+ /** `true`: the pane stands on the grammar surface ground (flat: no border, radius or shadow). Default: transparent on the host canvas. */
8
+ readonly surface?: boolean;
9
+ readonly className?: string;
10
+ /** Rendered as given: the pane imposes no padding, layout or structure on it. */
11
+ readonly children?: ReactNode;
12
+ };
13
+ type PaneScrollProps = {
14
+ /** The pane is its own vertical scroll owner; it then needs an accessible name. */
15
+ readonly scroll: true;
16
+ readonly label: string;
17
+ } | {
18
+ readonly scroll?: false;
19
+ /** Accessible name; a pane with a label is exposed as a region. */
20
+ readonly label?: string;
21
+ };
22
+ type PaneCollapseProps = {
23
+ /** Wherever the pane's area is not arranged (below 48rem for a single `areas`) the pane becomes a Drawer opened from a trigger above the grid. */
24
+ readonly collapse: "drawer";
25
+ /** Accessible name of the drawer. */
26
+ readonly collapseLabel: string;
27
+ /** Visible and accessible label of the trigger. */
28
+ readonly openLabel: string;
29
+ /** Accessible label of the drawer's close control. */
30
+ readonly closeLabel: string;
31
+ /** Controlled drawer state. */
32
+ readonly isOpen: boolean;
33
+ /** Receives trigger, backdrop, close-control and Escape changes. */
34
+ readonly onOpenChange: (isOpen: boolean) => void;
35
+ } | {
36
+ readonly collapse?: undefined;
37
+ readonly collapseLabel?: never;
38
+ readonly openLabel?: never;
39
+ readonly closeLabel?: never;
40
+ readonly isOpen?: never;
41
+ readonly onOpenChange?: never;
42
+ };
43
+ export type PaneProps = PaneBaseProps & PaneScrollProps & PaneCollapseProps;
44
+ /**
45
+ * One pane of a PaneGrid, placed by `area`. Panes sit flush; the divider on its start edges is drawn from the grid's
46
+ * layout at each breakpoint, and the pane paints nothing else unless `surface` is set.
47
+ */
48
+ export declare const Pane: (props: PaneProps) => import("react").JSX.Element;
49
+ export type PaneGridProps = Omit<ComponentPropsWithoutRef<"section">, "aria-label" | "children"> & {
50
+ /** Accessible name for the whole grid landmark. */
51
+ readonly label: string;
52
+ /**
53
+ * `grid-template-areas` rows, for example `["a b c", "d d d"]`; `.` is an empty cell. Give an object keyed by
54
+ * breakpoint (`base`, `medium` from 48rem, `wide` from 70rem) to rearrange: a pane whose area is missing at a
55
+ * breakpoint is hidden there, or becomes a drawer when it has `collapse="drawer"`. A single array arranges the
56
+ * grid from `base` up, except that a pane with `collapse="drawer"` leaves it below 48rem.
57
+ */
58
+ readonly areas: PaneResponsive<ReadonlyArray<string>>;
59
+ /** Column tracks, left to right (also per breakpoint); a missing track is `fill`. */
60
+ readonly columns?: PaneResponsive<ReadonlyArray<PaneTrack>>;
61
+ /** Row tracks, top to bottom (also per breakpoint); a missing track is `fill`. */
62
+ readonly rows?: PaneResponsive<ReadonlyArray<PaneTrack>>;
63
+ /** `Pane` elements as direct children. */
64
+ readonly children?: ReactNode;
65
+ };
66
+ /**
67
+ * Generic bounded pane grid: named areas laid out flush, a divider between adjacent panes, each pane optionally on the
68
+ * surface ground and optionally its own scroll owner.
69
+ *
70
+ * The host supplies a height; the grid fills it and owns the height chain below. Panes sit with no gap and one
71
+ * divider line (n-1, never doubled, none on an outer edge) separates neighbours: vertical between columns, horizontal
72
+ * between rows. The arrangement is chosen per breakpoint by CSS container queries on the
73
+ * grid's own width, so there is no layout shift. A pane with `collapse="drawer"` becomes a Drawer opened from a
74
+ * trigger above the grid wherever its area is not arranged. Grammar supplies layout only and no business meaning:
75
+ * the app composes its own pieces into the panes. While a drawer is open its pane renders a second time inside it.
76
+ */
77
+ export declare const PaneGrid: (props: PaneGridProps) => import("react").JSX.Element;
78
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/PaneGrid/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAMH,KAAK,wBAAwB,EAG7B,KAAK,SAAS,EACjB,MAAM,OAAO,CAAA;AAGd,OAAO,EAQH,KAAK,cAAc,EACnB,KAAK,SAAS,EACjB,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAO9F,KAAK,aAAa,GAAG;IACjB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0IAA0I;IAC1I,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAChC,CAAA;AAED,KAAK,eAAe,GACd;IACE,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACzB,GACC;IACE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;IACvB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAEL,KAAK,iBAAiB,GAChB;IACE,kJAAkJ;IAClJ,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CACnD,GACC;IACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAChC,CAAA;AAEL,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAA;AAE3E;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,SAAS,gCA0CpC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,GAAG;IAC/F,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IACrD,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IAC3D,kFAAkF;IAClF,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;IACxD,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAChC,CAAA;AAqBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,gCA6C5C,CAAA"}
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { cn, Drawer } from "@heroui/react";
4
+ import { Children, createContext, isValidElement, useContext, useMemo, } from "react";
5
+ import { VerticalScrollRegion } from "../../composite/VerticalScrollRegion/index.js";
6
+ import { SurfaceNesting } from "../../surfaceContext.js";
7
+ import { buildResponsivePaneGridModels, paneBreakpoints, parseAreas, trackToCss, } from "./layout.js";
8
+ const PaneModelsContext = createContext(undefined);
9
+ /**
10
+ * One pane of a PaneGrid, placed by `area`. Panes sit flush; the divider on its start edges is drawn from the grid's
11
+ * layout at each breakpoint, and the pane paints nothing else unless `surface` is set.
12
+ */
13
+ export const Pane = (props) => {
14
+ const { area, surface = false, className, label, scroll = false, children } = props;
15
+ const models = useContext(PaneModelsContext);
16
+ const shown = scroll ? "flex" : "block";
17
+ const vars = {};
18
+ let hasEdge = false;
19
+ if (models !== undefined) {
20
+ for (const breakpoint of paneBreakpoints) {
21
+ const edges = models[breakpoint].edges[area];
22
+ vars[`--starci-core-pane-d-${breakpoint}`] = edges === undefined ? "none" : shown;
23
+ vars[`--starci-core-pane-i-${breakpoint}`] = edges?.inline === true ? "1px" : "0px";
24
+ vars[`--starci-core-pane-b-${breakpoint}`] = edges?.block === true ? "1px" : "0px";
25
+ hasEdge = hasEdge || edges?.inline === true || edges?.block === true;
26
+ }
27
+ }
28
+ const style = { gridArea: area, ...vars };
29
+ const body = scroll
30
+ ? (_jsx(VerticalScrollRegion, { "aria-label": label, className: "starci-core-pane-scroll", "data-contract": "OVERFLOW-4 OVERFLOW-5", isScrollable: true, children: children }))
31
+ : children;
32
+ const content = surface ? _jsx(SurfaceNesting, { children: body }) : body;
33
+ const shared = {
34
+ className: cn("starci-core-pane", className),
35
+ "data-component": "Pane",
36
+ "data-tier": "composition",
37
+ "data-grammar-pane-area": area,
38
+ "data-grammar-pane-surface": surface ? "true" : undefined,
39
+ "data-grammar-pane-scroll": scroll ? "true" : undefined,
40
+ "data-contract": hasEdge ? "BOUNDARY-1" : undefined,
41
+ style,
42
+ };
43
+ return label === undefined || scroll
44
+ ? _jsx("div", { ...shared, children: content })
45
+ : _jsx("section", { ...shared, "aria-label": label, children: content });
46
+ };
47
+ const isPane = (child) => isValidElement(child) && child.type === Pane;
48
+ /** Whether the area is in the first grid column wherever it appears: its drawer then opens from the start side. */
49
+ const isStartColumn = (models, area) => paneBreakpoints.some((breakpoint) => parseAreas(models[breakpoint].areas).some((row) => row[0] === area));
50
+ const gridVars = (models, hasTrigger) => {
51
+ const vars = {};
52
+ for (const breakpoint of paneBreakpoints) {
53
+ const model = models[breakpoint];
54
+ vars[`--starci-core-pane-grid-areas-${breakpoint}`] = model.areas.map((row) => `"${row}"`).join(" ");
55
+ vars[`--starci-core-pane-grid-columns-${breakpoint}`] = model.columns.map(trackToCss).join(" ");
56
+ vars[`--starci-core-pane-grid-rows-${breakpoint}`] = model.rows.map(trackToCss).join(" ");
57
+ vars[`--starci-core-pane-grid-triggers-${breakpoint}`] = hasTrigger(breakpoint) ? "flex" : "none";
58
+ }
59
+ return vars;
60
+ };
61
+ /**
62
+ * Generic bounded pane grid: named areas laid out flush, a divider between adjacent panes, each pane optionally on the
63
+ * surface ground and optionally its own scroll owner.
64
+ *
65
+ * The host supplies a height; the grid fills it and owns the height chain below. Panes sit with no gap and one
66
+ * divider line (n-1, never doubled, none on an outer edge) separates neighbours: vertical between columns, horizontal
67
+ * between rows. The arrangement is chosen per breakpoint by CSS container queries on the
68
+ * grid's own width, so there is no layout shift. A pane with `collapse="drawer"` becomes a Drawer opened from a
69
+ * trigger above the grid wherever its area is not arranged. Grammar supplies layout only and no business meaning:
70
+ * the app composes its own pieces into the panes. While a drawer is open its pane renders a second time inside it.
71
+ */
72
+ export const PaneGrid = (props) => {
73
+ const { label, areas, columns, rows, className, children, ...sectionProps } = props;
74
+ const panes = Children.toArray(children).filter(isPane);
75
+ const drawers = panes.filter((pane) => pane.props.collapse === "drawer");
76
+ const collapsedKey = drawers.map((pane) => pane.props.area).join(" ");
77
+ const models = useMemo(() => buildResponsivePaneGridModels(areas, columns, rows, new Set(collapsedKey === "" ? [] : collapsedKey.split(" "))), [areas, columns, rows, collapsedKey]);
78
+ const style = gridVars(models, (breakpoint) => drawers.some((pane) => models[breakpoint].edges[pane.props.area] === undefined));
79
+ return (_jsxs("section", { ...sectionProps, "aria-label": label, className: cn("starci-core-pane-grid", className), "data-component": "PaneGrid", "data-tier": "composition", "data-grammar-pane-grid": "true", children: [drawers.length === 0 ? null : (_jsx("div", { className: "starci-core-pane-grid-triggers", "data-contract": "BOUNDARY-1 PADDING-4 PADDING-2", style: style, children: drawers.map((pane) => (_jsx(PaneDrawer, { pane: pane, placement: isStartColumn(models, pane.props.area) ? "left" : "right", models: models }, pane.props.area))) })), _jsx(PaneModelsContext.Provider, { value: models, children: _jsx("div", { className: "starci-core-pane-grid-tracks", "data-contract": "GAP-0", style: style, children: panes }) })] }));
80
+ };
81
+ const PaneDrawer = ({ pane, placement, models }) => {
82
+ const { props } = pane;
83
+ if (props.collapse !== "drawer")
84
+ return null;
85
+ const triggerStyle = {};
86
+ const vars = {};
87
+ for (const breakpoint of paneBreakpoints) {
88
+ vars[`--starci-core-pane-trigger-${breakpoint}`] = models[breakpoint].edges[props.area] === undefined ? "inline-flex" : "none";
89
+ }
90
+ Object.assign(triggerStyle, vars);
91
+ return (_jsxs(Drawer, { isOpen: props.isOpen, onOpenChange: props.onOpenChange, children: [_jsx(Drawer.Trigger, { className: "starci-core-pane-trigger", style: triggerStyle, "data-contract": "PADDING-3 SURFACE-2 FONT-2 TONE-1", children: props.openLabel }), _jsx(Drawer.Backdrop, { children: _jsx(Drawer.Content, { className: "starci-core-pane-drawer-content", placement: placement, children: _jsx(Drawer.Dialog, { className: "starci-core-pane-drawer-dialog", "data-grammar-nesting": "surface", children: _jsxs(SurfaceNesting, { children: [_jsx(Drawer.Header, { children: _jsx(Drawer.Heading, { children: props.collapseLabel }) }), _jsx(Drawer.CloseTrigger, { "aria-label": props.closeLabel, className: "starci-core-pane-drawer-close", "data-contract": "SURFACE-2 TONE-1" }), _jsx(Drawer.Body, { className: "starci-core-pane-drawer-body", "data-contract": "OVERFLOW-2 PADDING-0", children: _jsx(VerticalScrollRegion, { "aria-label": props.collapseLabel, className: "starci-core-pane-drawer-scroll", "data-contract": "OVERFLOW-4 OVERFLOW-5", "data-grammar-pane-area": props.area, isScrollable: true, children: props.children }) })] }) }) }) })] }));
92
+ };
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/PaneGrid/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Pure layout maths for PaneGrid: reads `grid-template-areas` rows and answers, for every named area, which of its
3
+ * start edges touch another pane. The divider is drawn on exactly those edges, so n panes in a row have n-1 lines and
4
+ * none is doubled.
5
+ */
6
+ /**
7
+ * A track size by role. `fill`, `fill-2` and `fill-3` share the free space in proportion 1, 2 and 3 (1fr, 2fr, 3fr);
8
+ * `compact`, `standard` and `wide` are the grammar's Rail widths; `auto` is the content's size.
9
+ */
10
+ export type PaneTrack = "auto" | "fill" | "fill-2" | "fill-3" | "compact" | "standard" | "wide";
11
+ export declare const trackToCss: (track: PaneTrack) => string;
12
+ export declare const isPaneTrack: (value: string) => value is PaneTrack;
13
+ export type PaneEdges = {
14
+ /** A pane sits to the inline-start of this one: the vertical divider is drawn on its start edge. */
15
+ readonly inline: boolean;
16
+ /** A pane sits above this one: the horizontal divider is drawn on its block-start edge. */
17
+ readonly block: boolean;
18
+ };
19
+ export type PaneGridModel = {
20
+ readonly areas: ReadonlyArray<string>;
21
+ readonly columns: ReadonlyArray<PaneTrack>;
22
+ readonly rows: ReadonlyArray<PaneTrack>;
23
+ readonly edges: Readonly<Record<string, PaneEdges>>;
24
+ };
25
+ export declare const parseAreas: (areas: ReadonlyArray<string>) => ReadonlyArray<ReadonlyArray<string>>;
26
+ /**
27
+ * Build the model. `collapsed` names the areas that leave the grid (they became drawers): a column or row that holds
28
+ * only collapsed areas disappears with its track, so the remaining panes close the gap.
29
+ */
30
+ export declare const buildPaneGridModel: (areas: ReadonlyArray<string>, columns: ReadonlyArray<PaneTrack> | undefined, rows: ReadonlyArray<PaneTrack> | undefined, collapsed: ReadonlySet<string>) => PaneGridModel;
31
+ /** The grammar's pane breakpoints, mobile first: `base` below 48rem (the compact boundary), `medium` from 48rem, `wide` from 70rem. */
32
+ export declare const paneBreakpoints: readonly ["base", "medium", "wide"];
33
+ export type PaneBreakpoint = typeof paneBreakpoints[number];
34
+ /** A value per breakpoint; a missing `medium` or `wide` inherits the next smaller one. */
35
+ export type PaneByBreakpoint<T> = {
36
+ readonly base: T;
37
+ readonly medium?: T;
38
+ readonly wide?: T;
39
+ };
40
+ /** One value for every breakpoint, or one per breakpoint. */
41
+ export type PaneResponsive<T> = T | PaneByBreakpoint<T>;
42
+ export declare const resolvePaneValue: <T>(value: PaneResponsive<T>, breakpoint: PaneBreakpoint) => T;
43
+ /**
44
+ * The grid model at every breakpoint. A single `areas` with collapsing panes arranges the full grid from `medium` up and,
45
+ * at `base`, the same grid without the collapsed areas (their columns and rows leave with them).
46
+ */
47
+ export declare const buildResponsivePaneGridModels: (areas: PaneResponsive<ReadonlyArray<string>>, columns: PaneResponsive<ReadonlyArray<PaneTrack>> | undefined, rows: PaneResponsive<ReadonlyArray<PaneTrack>> | undefined, collapsed: ReadonlySet<string>) => Readonly<Record<PaneBreakpoint, PaneGridModel>>;
48
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/PaneGrid/layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAA;AAY/F,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,KAAG,MAAyB,CAAA;AAGvE,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,KAAK,IAAI,SAA8B,CAAA;AAInF,MAAM,MAAM,SAAS,GAAG;IACpB,oGAAoG;IACpG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,aAAa,CAAC,MAAM,CAAC,KAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAChB,CAAA;AAK7E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,OAAO,aAAa,CAAC,MAAM,CAAC,EAC5B,SAAS,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,EAC7C,MAAM,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,EAC1C,WAAW,WAAW,CAAC,MAAM,CAAC,KAC/B,aAsCF,CAAA;AAED,uIAAuI;AACvI,eAAO,MAAM,eAAe,qCAAsC,CAAA;AAClE,MAAM,MAAM,cAAc,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;AAE3D,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAC9B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;CACpB,CAAA;AAED,6DAA6D;AAC7D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAKvD,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,cAAc,KAAG,CAK1F,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GACtC,OAAO,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAC5C,SAAS,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,EAC7D,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,EAC1D,WAAW,WAAW,CAAC,MAAM,CAAC,KAC/B,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAUhD,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Pure layout maths for PaneGrid: reads `grid-template-areas` rows and answers, for every named area, which of its
3
+ * start edges touch another pane. The divider is drawn on exactly those edges, so n panes in a row have n-1 lines and
4
+ * none is doubled.
5
+ */
6
+ const trackCss = {
7
+ auto: "auto",
8
+ fill: "minmax(0, 1fr)",
9
+ "fill-2": "minmax(0, 2fr)",
10
+ "fill-3": "minmax(0, 3fr)",
11
+ compact: "minmax(14rem, var(--starci-core-rail-compact, 16rem))",
12
+ standard: "minmax(16rem, var(--starci-core-rail-standard, 20rem))",
13
+ wide: "minmax(20rem, var(--starci-core-rail-wide, 24rem))",
14
+ };
15
+ export const trackToCss = (track) => trackCss[track];
16
+ const tracks = new Set(["auto", "fill", "fill-2", "fill-3", "compact", "standard", "wide"]);
17
+ export const isPaneTrack = (value) => tracks.has(value);
18
+ const emptyCell = ".";
19
+ export const parseAreas = (areas) => areas.map((row) => row.trim().split(/\s+/).filter((cell) => cell !== ""));
20
+ const fillTracks = (given, count) => Array.from({ length: count }, (_, index) => given?.[index] ?? "fill");
21
+ /**
22
+ * Build the model. `collapsed` names the areas that leave the grid (they became drawers): a column or row that holds
23
+ * only collapsed areas disappears with its track, so the remaining panes close the gap.
24
+ */
25
+ export const buildPaneGridModel = (areas, columns, rows, collapsed) => {
26
+ const matrix = parseAreas(areas);
27
+ const columnCount = matrix.reduce((max, row) => Math.max(max, row.length), 0);
28
+ const allColumns = fillTracks(columns, columnCount);
29
+ const allRows = fillTracks(rows, matrix.length);
30
+ const isGone = (cell) => cell === undefined || collapsed.has(cell);
31
+ const keepColumn = Array.from({ length: columnCount }, (_, c) => collapsed.size === 0 || !matrix.every((row) => isGone(row[c])));
32
+ const keepRow = matrix.map((row) => collapsed.size === 0 || !row.every((cell) => isGone(cell)));
33
+ const kept = matrix
34
+ .filter((_, r) => keepRow[r])
35
+ .map((row) => row.filter((_, c) => keepColumn[c]).map((cell) => (collapsed.has(cell) ? emptyCell : cell)));
36
+ const box = new Map();
37
+ kept.forEach((row, r) => row.forEach((cell, c) => {
38
+ if (cell === emptyCell)
39
+ return;
40
+ const known = box.get(cell);
41
+ box.set(cell, known === undefined
42
+ ? { r0: r, c0: c, c1: c }
43
+ : { r0: Math.min(known.r0, r), c0: Math.min(known.c0, c), c1: Math.max(known.c1, c) });
44
+ }));
45
+ const edges = {};
46
+ box.forEach(({ r0, c0, c1 }, name) => {
47
+ const left = kept[r0]?.[c0 - 1];
48
+ const above = Array.from({ length: c1 - c0 + 1 }, (_, i) => kept[r0 - 1]?.[c0 + i]);
49
+ edges[name] = {
50
+ inline: left !== undefined && left !== emptyCell,
51
+ block: above.some((cell) => cell !== undefined && cell !== emptyCell),
52
+ };
53
+ });
54
+ return {
55
+ areas: kept.map((row) => row.join(" ")),
56
+ columns: allColumns.filter((_, c) => keepColumn[c]),
57
+ rows: allRows.filter((_, r) => keepRow[r]),
58
+ edges,
59
+ };
60
+ };
61
+ /** The grammar's pane breakpoints, mobile first: `base` below 48rem (the compact boundary), `medium` from 48rem, `wide` from 70rem. */
62
+ export const paneBreakpoints = ["base", "medium", "wide"];
63
+ const isByBreakpoint = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && "base" in value;
64
+ export const resolvePaneValue = (value, breakpoint) => {
65
+ if (!isByBreakpoint(value))
66
+ return value;
67
+ if (breakpoint === "base")
68
+ return value.base;
69
+ if (breakpoint === "medium")
70
+ return value.medium ?? value.base;
71
+ return value.wide ?? value.medium ?? value.base;
72
+ };
73
+ /**
74
+ * The grid model at every breakpoint. A single `areas` with collapsing panes arranges the full grid from `medium` up and,
75
+ * at `base`, the same grid without the collapsed areas (their columns and rows leave with them).
76
+ */
77
+ export const buildResponsivePaneGridModels = (areas, columns, rows, collapsed) => {
78
+ const none = new Set();
79
+ const dropsAtBase = !isByBreakpoint(areas);
80
+ const model = (breakpoint) => buildPaneGridModel(resolvePaneValue(areas, breakpoint), columns === undefined ? undefined : resolvePaneValue(columns, breakpoint), rows === undefined ? undefined : resolvePaneValue(rows, breakpoint), dropsAtBase && breakpoint === "base" ? collapsed : none);
81
+ return { base: model("base"), medium: model("medium"), wide: model("wide") };
82
+ };
83
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../src/core/composition/PaneGrid/layout.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starci/grammar",
3
- "version": "0.16.2",
3
+ "version": "0.16.3",
4
4
  "description": "Reusable StarCi React components, compositions, and packaged visual DNA.",
5
5
  "keywords": [
6
6
  "starci",
@@ -1,37 +0,0 @@
1
- /**
2
- * Chat-workspace geometry is SHIPPED.
3
- *
4
- * The bounded height chain, the rail track, the composer boundary and the compact drawer are all
5
- * drawn by `.starci-core-chat-workspace*` in `src/common/styles.css`. The names below are hooks;
6
- * the rail-less layout keeps its own class because it is a structural variant, not a utility.
7
- */
8
- /** Bounded height chain for a workbench supplied with height by its host. */
9
- export declare const chatWorkspaceClassName: string;
10
- /** Header remains outside every workspace-owned scroll region. */
11
- export declare const chatWorkspaceHeaderClassName: string;
12
- /** Compact rail disclosure has its own non-scrolling action boundary. */
13
- export declare const chatWorkspaceRailTriggerBoundaryClassName: string;
14
- /** Visible, keyboard-sized trigger for the compact supporting overlay. */
15
- export declare const chatWorkspaceRailTriggerClassName: string;
16
- /** Primary work region and the persistent rail share the remaining bounded height. */
17
- export declare const chatWorkspaceLayoutClassName: string;
18
- /** Bind the layout column to the same authored widths as Core Rail. */
19
- export declare const getChatWorkspaceLayoutClassName: (_railWidth: "compact" | "standard" | "wide", hasRail: boolean) => import("tailwind-variants").CnReturn;
20
- /** Main task owner: only its conversation child scrolls. */
21
- export declare const chatWorkspacePrimaryClassName: string;
22
- /** The conversation is the single primary bounded scroll owner. */
23
- export declare const chatWorkspaceConversationClassName: string;
24
- /** Composer remains reachable at the terminal edge without duplicating scroll padding. */
25
- export declare const chatWorkspaceComposerClassName: string;
26
- /** Persistent supporting rail fills the same bounded layout track as the task owner. */
27
- export declare const chatWorkspaceInlineRailClassName: string;
28
- /** Keep the compact vendor drawer on one safe viewport width. */
29
- export declare const chatWorkspaceDrawerContentClassName: string;
30
- /** The dialog and its body extend the bounded height chain into the overlay. */
31
- export declare const chatWorkspaceDrawerDialogClassName: string;
32
- export declare const chatWorkspaceDrawerBodyClassName: string;
33
- /** Scroll owner inside the compact supporting overlay. */
34
- export declare const chatWorkspaceOverlayRailClassName: string;
35
- /** Make the vendor-provided overlay exit easy to target in every input mode. */
36
- export declare const chatWorkspaceDrawerCloseClassName: string;
37
- //# sourceMappingURL=classNames.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/ChatWorkspace/classNames.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,QAAmE,CAAA;AAEtG,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,QAAiF,CAAA;AAE1H,yEAAyE;AACzE,eAAO,MAAM,yCAAyC,QAA+G,CAAA;AAErK,0EAA0E;AAC1E,eAAO,MAAM,iCAAiC,QAA6F,CAAA;AAE3I,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,QAAiF,CAAA;AAE1H,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,GACxC,YAAY,SAAS,GAAG,UAAU,GAAG,MAAM,EAC3C,SAAS,OAAO,yCAC+E,CAAA;AAEnG,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,QAAmF,CAAA;AAE7H,mEAAmE;AACnE,eAAO,MAAM,kCAAkC,QAA6F,CAAA;AAE5I,0FAA0F;AAC1F,eAAO,MAAM,8BAA8B,QAAqF,CAAA;AAEhI,wFAAwF;AACxF,eAAO,MAAM,gCAAgC,QAA2F,CAAA;AAExI,iEAAiE;AACjE,eAAO,MAAM,mCAAmC,QAAiG,CAAA;AAEjJ,gFAAgF;AAChF,eAAO,MAAM,kCAAkC,QAA+F,CAAA;AAC9I,eAAO,MAAM,gCAAgC,QAA2F,CAAA;AAExI,0DAA0D;AAC1D,eAAO,MAAM,iCAAiC,QAA6F,CAAA;AAE3I,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,QAA6F,CAAA"}
@@ -1,38 +0,0 @@
1
- import { cn } from "@heroui/react";
2
- /**
3
- * Chat-workspace geometry is SHIPPED.
4
- *
5
- * The bounded height chain, the rail track, the composer boundary and the compact drawer are all
6
- * drawn by `.starci-core-chat-workspace*` in `src/common/styles.css`. The names below are hooks;
7
- * the rail-less layout keeps its own class because it is a structural variant, not a utility.
8
- */
9
- /** Bounded height chain for a workbench supplied with height by its host. */
10
- export const chatWorkspaceClassName = cn("starci-core-chat-workspace") ?? "starci-core-chat-workspace";
11
- /** Header remains outside every workspace-owned scroll region. */
12
- export const chatWorkspaceHeaderClassName = cn("starci-core-chat-workspace-header") ?? "starci-core-chat-workspace-header";
13
- /** Compact rail disclosure has its own non-scrolling action boundary. */
14
- export const chatWorkspaceRailTriggerBoundaryClassName = cn("starci-core-chat-workspace-rail-trigger-boundary") ?? "starci-core-chat-workspace-rail-trigger-boundary";
15
- /** Visible, keyboard-sized trigger for the compact supporting overlay. */
16
- export const chatWorkspaceRailTriggerClassName = cn("starci-core-chat-workspace-rail-trigger") ?? "starci-core-chat-workspace-rail-trigger";
17
- /** Primary work region and the persistent rail share the remaining bounded height. */
18
- export const chatWorkspaceLayoutClassName = cn("starci-core-chat-workspace-layout") ?? "starci-core-chat-workspace-layout";
19
- /** Bind the layout column to the same authored widths as Core Rail. */
20
- export const getChatWorkspaceLayoutClassName = (_railWidth, hasRail) => cn(chatWorkspaceLayoutClassName, !hasRail && "starci-core-chat-workspace-layout-without-rail");
21
- /** Main task owner: only its conversation child scrolls. */
22
- export const chatWorkspacePrimaryClassName = cn("starci-core-chat-workspace-primary") ?? "starci-core-chat-workspace-primary";
23
- /** The conversation is the single primary bounded scroll owner. */
24
- export const chatWorkspaceConversationClassName = cn("starci-core-chat-workspace-conversation") ?? "starci-core-chat-workspace-conversation";
25
- /** Composer remains reachable at the terminal edge without duplicating scroll padding. */
26
- export const chatWorkspaceComposerClassName = cn("starci-core-chat-workspace-composer") ?? "starci-core-chat-workspace-composer";
27
- /** Persistent supporting rail fills the same bounded layout track as the task owner. */
28
- export const chatWorkspaceInlineRailClassName = cn("starci-core-chat-workspace-inline-rail") ?? "starci-core-chat-workspace-inline-rail";
29
- /** Keep the compact vendor drawer on one safe viewport width. */
30
- export const chatWorkspaceDrawerContentClassName = cn("starci-core-chat-workspace-drawer-content") ?? "starci-core-chat-workspace-drawer-content";
31
- /** The dialog and its body extend the bounded height chain into the overlay. */
32
- export const chatWorkspaceDrawerDialogClassName = cn("starci-core-chat-workspace-drawer-dialog") ?? "starci-core-chat-workspace-drawer-dialog";
33
- export const chatWorkspaceDrawerBodyClassName = cn("starci-core-chat-workspace-drawer-body") ?? "starci-core-chat-workspace-drawer-body";
34
- /** Scroll owner inside the compact supporting overlay. */
35
- export const chatWorkspaceOverlayRailClassName = cn("starci-core-chat-workspace-overlay-rail") ?? "starci-core-chat-workspace-overlay-rail";
36
- /** Make the vendor-provided overlay exit easy to target in every input mode. */
37
- export const chatWorkspaceDrawerCloseClassName = cn("starci-core-chat-workspace-drawer-close") ?? "starci-core-chat-workspace-drawer-close";
38
- //# sourceMappingURL=classNames.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classNames.js","sourceRoot":"","sources":["../../../../src/core/composition/ChatWorkspace/classNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC;;;;;;GAMG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC,4BAA4B,CAAC,IAAI,4BAA4B,CAAA;AAEtG,kEAAkE;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC,mCAAmC,CAAC,IAAI,mCAAmC,CAAA;AAE1H,yEAAyE;AACzE,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,CAAC,kDAAkD,CAAC,IAAI,kDAAkD,CAAA;AAErK,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC,yCAAyC,CAAC,IAAI,yCAAyC,CAAA;AAE3I,sFAAsF;AACtF,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC,mCAAmC,CAAC,IAAI,mCAAmC,CAAA;AAE1H,uEAAuE;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC3C,UAA2C,EAC3C,OAAgB,EAClB,EAAE,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,OAAO,IAAI,gDAAgD,CAAC,CAAA;AAEnG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC,oCAAoC,CAAC,IAAI,oCAAoC,CAAA;AAE7H,mEAAmE;AACnE,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC,yCAAyC,CAAC,IAAI,yCAAyC,CAAA;AAE5I,0FAA0F;AAC1F,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC,qCAAqC,CAAC,IAAI,qCAAqC,CAAA;AAEhI,wFAAwF;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC,wCAAwC,CAAC,IAAI,wCAAwC,CAAA;AAExI,iEAAiE;AACjE,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC,2CAA2C,CAAC,IAAI,2CAA2C,CAAA;AAEjJ,gFAAgF;AAChF,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC,0CAA0C,CAAC,IAAI,0CAA0C,CAAA;AAC9I,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC,wCAAwC,CAAC,IAAI,wCAAwC,CAAA;AAExI,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC,yCAAyC,CAAC,IAAI,yCAAyC,CAAA;AAE3I,gFAAgF;AAChF,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC,yCAAyC,CAAC,IAAI,yCAAyC,CAAA"}
@@ -1,48 +0,0 @@
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
@@ -1 +0,0 @@
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;AAqCd,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,gCAiKtD,CAAA"}
@@ -1,42 +0,0 @@
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 { SurfaceNesting } from "../../surfaceContext.js";
8
- import { ButtonPlacementProvider } from "../../buttonIntent.js";
9
- import { chatWorkspaceClassName, chatWorkspaceComposerClassName, chatWorkspaceConversationClassName, chatWorkspaceDrawerBodyClassName, chatWorkspaceDrawerCloseClassName, chatWorkspaceDrawerContentClassName, chatWorkspaceDrawerDialogClassName, chatWorkspaceHeaderClassName, chatWorkspaceInlineRailClassName, chatWorkspaceOverlayRailClassName, chatWorkspacePrimaryClassName, chatWorkspaceRailTriggerBoundaryClassName, chatWorkspaceRailTriggerClassName, getChatWorkspaceLayoutClassName, } from "./classNames.js";
10
- const compactRailQuery = "(max-width: 47.999rem)";
11
- const subscribeToCompactRail = (onStoreChange) => {
12
- if (typeof window === "undefined")
13
- return () => undefined;
14
- const query = window.matchMedia(compactRailQuery);
15
- query.addEventListener("change", onStoreChange);
16
- return () => query.removeEventListener("change", onStoreChange);
17
- };
18
- const getCompactRailSnapshot = () => (typeof window === "undefined" ? false : window.matchMedia(compactRailQuery).matches);
19
- const getCompactRailServerSnapshot = () => false;
20
- export const ChatWorkspace = (props) => {
21
- const { className, composer, conversation, conversationLabel, header, label, rail, railCloseLabel, railLabel, railOpenLabel, railWidth: requestedRailWidth, isRailOpen: requestedRailOpen, onRailOpenChange: requestedRailOpenChange, ...sectionProps } = props;
22
- const isCompactRail = useSyncExternalStore(subscribeToCompactRail, getCompactRailSnapshot, getCompactRailServerSnapshot);
23
- const railConfig = rail === undefined ? undefined : {
24
- content: rail,
25
- label: railLabel ?? "",
26
- openLabel: railOpenLabel ?? "",
27
- closeLabel: railCloseLabel ?? "",
28
- isOpen: requestedRailOpen ?? false,
29
- onOpenChange: requestedRailOpenChange,
30
- width: requestedRailWidth ?? "standard",
31
- };
32
- const hasRail = railConfig !== undefined;
33
- const railWidth = railConfig?.width ?? "standard";
34
- const isRailOpen = railConfig?.isOpen ?? false;
35
- const onRailOpenChange = railConfig?.onOpenChange;
36
- useEffect(() => {
37
- if (hasRail && !isCompactRail && isRailOpen)
38
- onRailOpenChange?.(false);
39
- }, [hasRail, isCompactRail, isRailOpen, onRailOpenChange]);
40
- return (_jsxs("section", { ...sectionProps, "aria-label": label, className: cn(chatWorkspaceClassName, className), "data-grammar-chat-workspace": "true", "data-component": "ChatWorkspace", "data-tier": "composition", "data-grammar-chat-workspace-rail": hasRail ? "present" : "absent", children: [header === undefined ? null : (_jsx("header", { className: chatWorkspaceHeaderClassName, "data-grammar-chat-workspace-slot": "header", children: _jsx(ButtonPlacementProvider, { placement: "chrome", 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: _jsx(Drawer.Dialog, { className: chatWorkspaceDrawerDialogClassName, "data-grammar-nesting": "surface", children: _jsxs(SurfaceNesting, { 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] })] }));
41
- };
42
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/ChatWorkspace/index.tsx"],"names":[],"mappings":"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"}