@stll/ui 0.9.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +90 -15
  2. package/dist/components/breadcrumb.d.ts +1 -1
  3. package/dist/components/button-variants.d.ts +2 -2
  4. package/dist/components/button.d.ts +1 -1
  5. package/dist/components/combobox.js +1 -1
  6. package/dist/components/command.d.ts +1 -1
  7. package/dist/components/command.js +1 -1
  8. package/dist/components/date-picker-popover.js +1 -1
  9. package/dist/components/input-group.d.ts +1 -1
  10. package/dist/components/pagination.d.ts +1 -1
  11. package/dist/components/pagination.js +1 -1
  12. package/dist/components/select.d.ts +1 -1
  13. package/dist/components/select.js +8 -10
  14. package/dist/components/workspace-shell.d.ts +77 -0
  15. package/dist/components/workspace-shell.js +106 -0
  16. package/dist/index.d.ts +7 -6
  17. package/dist/index.js +11 -10
  18. package/dist/inspector/chrome.d.ts +5 -1
  19. package/dist/inspector/chrome.js +14 -2
  20. package/dist/inspector/index.d.ts +2 -2
  21. package/dist/inspector/index.js +2 -2
  22. package/dist/inspector/layout-tokens.d.ts +5 -1
  23. package/dist/inspector/layout-tokens.js +5 -1
  24. package/dist/inspector/tabs.d.ts +1 -1
  25. package/dist/kanban/index.d.ts +4 -3
  26. package/dist/kanban/index.js +3 -2
  27. package/dist/kanban/sortable-interactions.d.ts +75 -13
  28. package/dist/kanban/sortable-interactions.js +345 -28
  29. package/dist/kanban/sortable-interactions.logic.d.ts +79 -0
  30. package/dist/kanban/sortable-interactions.logic.js +205 -0
  31. package/dist/kanban/virtual-cell.d.ts +19 -2
  32. package/dist/kanban/virtual-cell.js +53 -7
  33. package/dist/lib/control-size.d.ts +1 -1
  34. package/dist/lib/overlay-layer.d.ts +2 -1
  35. package/dist/lib/overlay-layer.js +2 -1
  36. package/dist/review/review-comment-card.js +1 -1
  37. package/package.json +7 -7
  38. package/dist/components/application-shell.d.ts +0 -27
  39. package/dist/components/application-shell.js +0 -25
package/README.md CHANGED
@@ -20,35 +20,78 @@ so a bundler keeps only what is imported:
20
20
 
21
21
  ```tsx
22
22
  import { Button } from "@stll/ui/button";
23
- import { ApplicationShell } from "@stll/ui/application-shell";
24
23
  import { Dialog, DialogPopup } from "@stll/ui/dialog";
25
24
  import { Inspector, InspectorDock } from "@stll/ui/inspector";
26
25
  import { cn } from "@stll/ui/utils";
26
+ import { WorkspaceShell } from "@stll/ui/workspace-shell";
27
27
  ```
28
28
 
29
29
  One flat subpath per module: `@stll/ui/<name>` for components, hooks, and
30
30
  helpers alike. `@stll/ui` re-exports all of them under one specifier for
31
31
  convenience; the subpaths are the real surface, and in-repo code uses those.
32
32
 
33
- ## Application shell
33
+ ## Workspace shell
34
34
 
35
- `ApplicationShell` keeps the navigation, page chrome and content, and an
36
- optional inline-end inspector as sibling columns. Pass the host application's
37
- surfaces as slots; route state, navigation behavior, and inspector behavior
38
- remain in the host.
35
+ `WorkspaceShell` is the complete desktop and tablet application frame. It
36
+ keeps navigation, sticky top chrome, the active route, and a required
37
+ inline-end dock as sibling surfaces inside one dynamic viewport. Route content
38
+ is the sole scroller, so a feature cannot accidentally render an app inside
39
+ the app.
39
40
 
40
41
  ```tsx
41
- import { ApplicationShell } from "@stll/ui/application-shell";
42
+ import { WorkspaceEndRail, WorkspaceShell } from "@stll/ui/workspace-shell";
43
+
44
+ <WorkspaceShell
45
+ endDock={
46
+ <WorkspaceEndRail
47
+ chatAction={{
48
+ label: "New chat",
49
+ onActivate: openChat,
50
+ status: "enabled",
51
+ }}
52
+ label="Workspace inspector"
53
+ topAction={<InspectorToggle />}
54
+ />
55
+ }
56
+ navigation={{ content: <Navigation />, mode: "responsive" }}
57
+ topBar={() => <WorkspaceHeader />}
58
+ >
59
+ <Workspace />
60
+ </WorkspaceShell>;
61
+ ```
42
62
 
43
- <ApplicationShell
44
- header={<PageHeader />}
45
- inspector={<InspectorDock />}
46
- sidebar={<Navigation />}
63
+ Applications without their own responsive navigation use the shell-managed
64
+ contract. Stella then owns the desktop/compact cutoff, sheet portal, backdrop,
65
+ Escape and viewport-close behavior; the top-bar callback places the supplied
66
+ trigger in product-specific chrome.
67
+
68
+ ```tsx
69
+ <WorkspaceShell
70
+ endDock={<WorkspaceInspector />}
71
+ navigation={{
72
+ compact: {
73
+ content: <Navigation expanded />,
74
+ label: "Open navigation",
75
+ onOpenChange: setNavigationOpen,
76
+ open: navigationOpen,
77
+ trigger: <button type="button">Menu</button>,
78
+ },
79
+ desktop: <NavigationRail />,
80
+ mode: "shell-managed",
81
+ }}
82
+ topBar={({ compactNavigationTrigger }) => (
83
+ <WorkspaceHeader navigationTrigger={compactNavigationTrigger} />
84
+ )}
47
85
  >
48
- <Page />
49
- </ApplicationShell>;
86
+ <Workspace />
87
+ </WorkspaceShell>
50
88
  ```
51
89
 
90
+ `WorkspaceEndRail` owns the 48px rail, 44px touch targets, scrolling tab
91
+ region, and permanent bottom chat position. Its chat action is a discriminated
92
+ union: a host must wire an enabled action or expose a reasoned, fail-closed
93
+ unavailable state.
94
+
52
95
  ### Deprecated grouped subpaths
53
96
 
54
97
  `@stll/ui/components/<name>`, `@stll/ui/hooks/<name>`, and
@@ -73,10 +116,16 @@ import {
73
116
  } from "@stll/ui/kanban";
74
117
 
75
118
  const Card = ({ id }: { id: string }) => {
76
- const { dragHandle, setNodeRef } = useKanbanSortable({ id });
119
+ const { activator, setNodeRef } = useKanbanSortable({
120
+ activation: { type: "handle" },
121
+ id,
122
+ });
123
+ if (activator.type !== "handle") {
124
+ return null;
125
+ }
77
126
  return (
78
127
  <article ref={setNodeRef}>
79
- <KanbanDragHandle bindings={dragHandle} label="Move card" />
128
+ <KanbanDragHandle bindings={activator.bindings} label="Move card" />
80
129
  </article>
81
130
  );
82
131
  };
@@ -136,6 +185,32 @@ const matrix = buildKanbanBoardMatrix({
136
185
  />;
137
186
  ```
138
187
 
188
+ When rows inside a virtual cell are sortable, give the cell a unique drop target
189
+ and its ordered matrix position. The cell registers its actual scroll element,
190
+ including when `rows` is empty, and owns the matching `SortableContext`.
191
+
192
+ ```tsx
193
+ <KanbanVirtualCell
194
+ getRowKey={(row) => row.id}
195
+ pagination={{ type: "none" }}
196
+ renderRow={(row) => <Card row={row} />}
197
+ rows={cell.rows}
198
+ sortable={{
199
+ dropTarget: {
200
+ id: cellId,
201
+ position: { column: columnIndex, lane: laneIndex },
202
+ },
203
+ getRowId: (row) => row.id,
204
+ }}
205
+ />
206
+ ```
207
+
208
+ The default keyboard coordinates move through items in their cell before
209
+ crossing into adjacent columns or subgroup lanes; empty cells remain reachable.
210
+ Pointer and touch drops outside registered board targets cancel. Choose an
211
+ explicit `{ type: "handle" }` activation for the 44px handle, or `{ type:
212
+ "item" }` when the whole item is the intended activation surface.
213
+
139
214
  ## Styles
140
215
 
141
216
  No compiled CSS ships. The components carry Tailwind class names, so the
@@ -1,5 +1,5 @@
1
- import { useRender } from "@base-ui/react/use-render";
2
1
  import * as React$1 from "react";
2
+ import { useRender } from "@base-ui/react/use-render";
3
3
  //#region src/components/breadcrumb.d.ts
4
4
  declare const Breadcrumb: ({ ...props }: React$1.ComponentProps<"nav">) => React$1.JSX.Element;
5
5
  declare const BreadcrumbList: ({ className, ...props }: React$1.ComponentProps<"ol">) => React$1.JSX.Element;
@@ -10,8 +10,8 @@
10
10
  */
11
11
  declare const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
12
12
  declare const buttonVariants: (props?: ({
13
- size?: "xs" | "sm" | "icon" | "default" | "lg" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "xl" | null | undefined;
14
- variant?: "link" | "destructive" | "outline" | "default" | "destructive-outline" | "ghost" | "secondary" | null | undefined;
13
+ size?: "default" | "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "sm" | "xl" | "xs" | null | undefined;
14
+ variant?: "link" | "default" | "destructive" | "destructive-outline" | "ghost" | "outline" | "secondary" | null | undefined;
15
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
16
  //#endregion
17
17
  export { buttonAccessibleDisabledClass, buttonVariants };
@@ -1,8 +1,8 @@
1
1
  import { OverlayLayer } from "../lib/overlay-layer.js";
2
2
  import { buttonVariants } from "./button-variants.js";
3
+ import * as React$1 from "react";
3
4
  import { useRender } from "@base-ui/react/use-render";
4
5
  import { VariantProps } from "class-variance-authority";
5
- import * as React$1 from "react";
6
6
  //#region src/components/button.d.ts
7
7
  type ButtonProps = {
8
8
  variant?: VariantProps<typeof buttonVariants>["variant"];
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/utils.js";
3
3
  import { OVERLAY_LAYER_CLASS_NAMES } from "../lib/overlay-layer.js";
4
+ import { ScrollArea } from "./scroll-area.js";
4
5
  import { containedHandler } from "../hooks/use-contained-handler.js";
5
6
  import { CONTROL_SIZE } from "../lib/control-size.js";
6
7
  import { Input } from "./input.js";
7
- import { ScrollArea } from "./scroll-area.js";
8
8
  import { ChevronsUpDownIcon, XIcon } from "lucide-react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import * as React$1 from "react";
@@ -1,8 +1,8 @@
1
1
  import { ControlSize } from "../lib/control-size.js";
2
2
  import { DialogContent as DialogPopup } from "./dialog.js";
3
3
  import * as React$1 from "react";
4
- import { Autocomplete } from "@base-ui/react/autocomplete";
5
4
  import { Dialog } from "@base-ui/react/dialog";
5
+ import { Autocomplete } from "@base-ui/react/autocomplete";
6
6
  //#region src/components/command.d.ts
7
7
  type CommandProps<ItemValue> = Omit<Autocomplete.Root.Props<ItemValue>, "items"> & {
8
8
  items?: readonly ItemValue[] | undefined;
@@ -5,8 +5,8 @@ import { useContentDir } from "../hooks/use-content-dir.js";
5
5
  import { DialogContent as DialogPopup } from "./dialog.js";
6
6
  import { SearchIcon } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
- import { Autocomplete } from "@base-ui/react/autocomplete";
9
8
  import { Dialog } from "@base-ui/react/dialog";
9
+ import { Autocomplete } from "@base-ui/react/autocomplete";
10
10
  //#region src/components/command.tsx
11
11
  const Command = ({ autoHighlight = "always", keepHighlight = true, open = true, ...props }) => /* @__PURE__ */ jsx(Autocomplete.Root, {
12
12
  autoHighlight,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/utils.js";
3
- import { DirectionalIcon } from "./directional-icon.js";
4
3
  import { Button } from "./button.js";
4
+ import { DirectionalIcon } from "./directional-icon.js";
5
5
  import { getLocaleWeekInfo, getWeekendDays } from "../lib/week.js";
6
6
  import { localDateFromTimestamp, millisecondsUntilNextLocalDate, resolveCalendarViewMonth } from "./date-picker-popover.logic.js";
7
7
  import { Popover, PopoverContent as PopoverPopup, PopoverTrigger } from "./popover.js";
@@ -1,7 +1,7 @@
1
1
  import { InputProps } from "./input.js";
2
2
  import { TextareaProps } from "./textarea.js";
3
- import { VariantProps } from "class-variance-authority";
4
3
  import * as React$1 from "react";
4
+ import { VariantProps } from "class-variance-authority";
5
5
  //#region src/components/input-group.d.ts
6
6
  declare const InputGroup: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
7
7
  declare const inputGroupAddonVariants: (props?: ({
@@ -1,6 +1,6 @@
1
1
  import { Button } from "./button.js";
2
- import { useRender } from "@base-ui/react/use-render";
3
2
  import * as React$1 from "react";
3
+ import { useRender } from "@base-ui/react/use-render";
4
4
  //#region src/components/pagination.d.ts
5
5
  declare const Pagination: ({ className, ...props }: React$1.ComponentProps<"nav">) => React$1.JSX.Element;
6
6
  declare const PaginationContent: ({ className, ...props }: React$1.ComponentProps<"ul">) => React$1.JSX.Element;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../lib/utils.js";
3
- import { DirectionalIcon } from "./directional-icon.js";
4
3
  import { buttonVariants } from "./button-variants.js";
4
+ import { DirectionalIcon } from "./directional-icon.js";
5
5
  import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
@@ -5,7 +5,7 @@ import { Select as Select$1 } from "@base-ui/react/select";
5
5
  type SelectItemProps = Select$1.Item.Props & {
6
6
  label?: string;
7
7
  };
8
- declare const Select: <Value, Multiple extends boolean | undefined = false>({ children, itemToStringLabel, ...props }: Select$1.Root.Props<Value, Multiple>) => React$1.JSX.Element;
8
+ declare const Select: <Value, Multiple extends boolean | undefined = false>({ children, isItemEqualToValue, itemToStringLabel, itemToStringValue, ...props }: Select$1.Root.Props<Value, Multiple>) => React$1.JSX.Element;
9
9
  declare const SelectTrigger: ({ className, size, children, ...props }: Select$1.Trigger.Props & {
10
10
  size?: ControlSize;
11
11
  }) => React$1.JSX.Element;
@@ -2,6 +2,7 @@
2
2
  import { cn } from "../lib/utils.js";
3
3
  import { OVERLAY_LAYER_CLASS_NAMES } from "../lib/overlay-layer.js";
4
4
  import { CONTROL_SIZE } from "../lib/control-size.js";
5
+ import { useLatest } from "../hooks/use-latest.js";
5
6
  import { ChevronDownIcon, ChevronUpIcon, ChevronsUpDownIcon } from "lucide-react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import * as React$1 from "react";
@@ -12,19 +13,16 @@ const renderSelectedDisplay = (displays, placeholder) => (value) => {
12
13
  if (!displays.has(value)) return placeholder ?? null;
13
14
  return displays.get(value) ?? null;
14
15
  };
15
- const Select = ({ children, itemToStringLabel, ...props }) => {
16
+ const Select = ({ children, isItemEqualToValue, itemToStringLabel, itemToStringValue, ...props }) => {
16
17
  const itemLabels = collectSelectItemLabels(children);
17
18
  const itemDisplays = collectSelectItemDisplays(children);
18
- const root = itemToStringLabel || itemLabels.size === 0 ? /* @__PURE__ */ jsx(Select$1.Root, {
19
- itemToStringLabel,
20
- ...props,
21
- children
22
- }) : /* @__PURE__ */ jsx(Select$1.Root, {
23
- itemToStringLabel: (value) => {
24
- const stringValue = String(value);
25
- return itemLabels.get(value) ?? stringValue;
26
- },
19
+ const itemLabelsRef = useLatest(itemLabels);
20
+ const resolveItemLabel = React$1.useCallback((value) => itemLabelsRef.current.get(value) ?? String(value), [itemLabelsRef]);
21
+ const root = /* @__PURE__ */ jsx(Select$1.Root, {
27
22
  ...props,
23
+ isItemEqualToValue,
24
+ itemToStringLabel: itemToStringLabel === void 0 && itemLabels.size === 0 ? void 0 : itemToStringLabel ?? resolveItemLabel,
25
+ itemToStringValue,
28
26
  children
29
27
  });
30
28
  return /* @__PURE__ */ jsx(SelectItemDisplaysContext, {
@@ -0,0 +1,77 @@
1
+ import { ReactElement, ReactNode } from "react";
2
+ //#region src/components/workspace-shell.d.ts
3
+ type WorkspaceCompactNavigation = {
4
+ /** Navigation content rendered inside Stella's compact sheet. */
5
+ content: ReactElement;
6
+ /** Accessible name shared by the trigger and sheet. */
7
+ label: string;
8
+ /** Controlled sheet state owned by the host application. */
9
+ open: boolean;
10
+ /** Receives close gestures, Escape, backdrop presses, and viewport changes. */
11
+ onOpenChange: (open: boolean) => void;
12
+ /** Host-styled button; Stella supplies trigger behavior and accessibility. */
13
+ trigger: ReactElement;
14
+ };
15
+ type WorkspaceNavigation = {
16
+ /** The host already owns its complete responsive navigation behavior. */
17
+ content: ReactElement;
18
+ mode: "responsive";
19
+ } | {
20
+ /** Stella owns the desktop/compact cutoff and compact navigation sheet. */
21
+ compact: WorkspaceCompactNavigation;
22
+ desktop: ReactElement;
23
+ mode: "shell-managed";
24
+ };
25
+ type WorkspaceTopBarContext = {
26
+ /** Place this in compact chrome; null when navigation is host-responsive. */
27
+ compactNavigationTrigger: ReactElement | null;
28
+ };
29
+ type WorkspaceShellProps = {
30
+ /** Product navigation with one explicit responsive ownership mode. */
31
+ navigation: WorkspaceNavigation;
32
+ /** Sticky route chrome; managed navigation exposes its compact trigger here. */
33
+ topBar: (context: WorkspaceTopBarContext) => ReactElement;
34
+ /** Permanent inline-end rail or inspector dock. */
35
+ endDock: ReactElement;
36
+ /** Active route content. */
37
+ children: ReactNode;
38
+ };
39
+ /**
40
+ * Stella's complete authenticated workspace frame. It owns the dynamic
41
+ * viewport, sibling rail geometry, sticky top chrome, and sole content
42
+ * scroller so product routes cannot create an app inside the app.
43
+ */
44
+ declare const WorkspaceShell: ({ children, endDock, navigation, topBar }: WorkspaceShellProps) => import("react").JSX.Element;
45
+ type WorkspaceEndRailChatAction = {
46
+ label: string;
47
+ onActivate: () => void;
48
+ status: "enabled";
49
+ } | {
50
+ label: string;
51
+ reason: string;
52
+ status: "unavailable";
53
+ };
54
+ type WorkspaceEndRailProps = {
55
+ /** Accessible name for the complete rail, independent of its chat action. */
56
+ label: string;
57
+ /** Required top-row affordance, such as opening or minimizing a pane. */
58
+ topAction: ReactNode;
59
+ /** Tabs or contextual actions between the two permanent rail rows. */
60
+ children?: ReactNode | undefined;
61
+ /** Portalled menus or overlays that must not become scrolling rail content. */
62
+ overlay?: ReactNode | undefined;
63
+ /**
64
+ * Required by construction: a host either wires a working chat action or
65
+ * exposes an explicit, fail-closed unavailable state with a reason.
66
+ */
67
+ chatAction: WorkspaceEndRailChatAction;
68
+ className?: string | undefined;
69
+ };
70
+ /**
71
+ * The permanent inline-end workspace rail. Stella owns its width, row rhythm,
72
+ * touch targets, scrolling middle region, and bottom chat position; hosts own
73
+ * only the actions and route state.
74
+ */
75
+ declare const WorkspaceEndRail: ({ chatAction, children, className, label, overlay, topAction }: WorkspaceEndRailProps) => import("react").JSX.Element;
76
+ //#endregion
77
+ export { type WorkspaceCompactNavigation, WorkspaceEndRail, type WorkspaceEndRailChatAction, type WorkspaceEndRailProps, type WorkspaceNavigation, WorkspaceShell, type WorkspaceShellProps, type WorkspaceTopBarContext };
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ import { cn } from "../lib/utils.js";
3
+ import { useIsMobile } from "../hooks/use-mobile.js";
4
+ import { InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton } from "../inspector/chrome.js";
5
+ import { Sheet, SheetContent as SheetPopup, SheetTitle, SheetTrigger } from "./sheet.js";
6
+ import { MessageSquarePlusIcon } from "lucide-react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useEffect } from "react";
9
+ //#region src/components/workspace-shell.tsx
10
+ /**
11
+ * Stella's complete authenticated workspace frame. It owns the dynamic
12
+ * viewport, sibling rail geometry, sticky top chrome, and sole content
13
+ * scroller so product routes cannot create an app inside the app.
14
+ */
15
+ const WorkspaceShell = ({ children, endDock, navigation, topBar }) => {
16
+ const isCompact = useIsMobile();
17
+ const compactNavigation = navigation.mode === "shell-managed" ? navigation.compact : null;
18
+ const compactNavigationOpen = compactNavigation?.open ?? false;
19
+ const onCompactNavigationOpenChange = compactNavigation?.onOpenChange;
20
+ useEffect(() => {
21
+ if (!isCompact && compactNavigationOpen) onCompactNavigationOpenChange?.(false);
22
+ }, [
23
+ compactNavigationOpen,
24
+ isCompact,
25
+ onCompactNavigationOpenChange
26
+ ]);
27
+ const compactNavigationTrigger = compactNavigation === null ? null : /* @__PURE__ */ jsx("span", {
28
+ className: "contents md:hidden",
29
+ children: /* @__PURE__ */ jsx(SheetTrigger, {
30
+ "aria-label": compactNavigation.label,
31
+ render: compactNavigation.trigger
32
+ })
33
+ });
34
+ const frame = /* @__PURE__ */ jsxs("div", {
35
+ className: "flex h-dvh min-h-0 w-full overflow-hidden",
36
+ "data-slot": "workspace-shell",
37
+ children: [
38
+ navigation.mode === "responsive" ? navigation.content : navigation.desktop,
39
+ /* @__PURE__ */ jsxs("main", {
40
+ className: cn("bg-background relative flex w-full min-w-0 flex-1 flex-col overflow-hidden", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2"),
41
+ "data-slot": "workspace-shell-main",
42
+ children: [/* @__PURE__ */ jsx("div", {
43
+ className: "bg-background sticky top-0 z-20 shrink-0",
44
+ "data-slot": "workspace-shell-top-bar",
45
+ children: topBar({ compactNavigationTrigger })
46
+ }), /* @__PURE__ */ jsx("div", {
47
+ className: "min-h-0 flex-1 overflow-auto overscroll-contain",
48
+ "data-slot": "workspace-shell-content",
49
+ children
50
+ })]
51
+ }),
52
+ endDock
53
+ ]
54
+ });
55
+ if (compactNavigation === null) return frame;
56
+ return /* @__PURE__ */ jsxs(Sheet, {
57
+ open: isCompact && compactNavigation.open,
58
+ onOpenChange: compactNavigation.onOpenChange,
59
+ children: [frame, isCompact ? /* @__PURE__ */ jsxs(SheetPopup, {
60
+ className: "w-[min(20rem,100vw)]",
61
+ showCloseButton: false,
62
+ side: "inline-start",
63
+ children: [/* @__PURE__ */ jsx(SheetTitle, {
64
+ className: "sr-only",
65
+ children: compactNavigation.label
66
+ }), /* @__PURE__ */ jsx("div", {
67
+ className: "bg-background flex h-full min-h-0 flex-col overflow-y-auto [padding-inline:max(0.75rem,env(safe-area-inset-left))_max(0.75rem,env(safe-area-inset-right))] [padding-block:max(0.75rem,env(safe-area-inset-top))_max(0.75rem,env(safe-area-inset-bottom))]",
68
+ "data-slot": "workspace-compact-navigation",
69
+ children: compactNavigation.content
70
+ })]
71
+ }) : null]
72
+ });
73
+ };
74
+ /**
75
+ * The permanent inline-end workspace rail. Stella owns its width, row rhythm,
76
+ * touch targets, scrolling middle region, and bottom chat position; hosts own
77
+ * only the actions and route state.
78
+ */
79
+ const WorkspaceEndRail = ({ chatAction, children, className, label, overlay, topAction }) => /* @__PURE__ */ jsxs(InspectorRail, {
80
+ "aria-label": label,
81
+ className: cn("h-dvh", className),
82
+ children: [
83
+ /* @__PURE__ */ jsx(InspectorRailCell, { children: topAction }),
84
+ /* @__PURE__ */ jsx(InspectorRailContent, { children }),
85
+ overlay,
86
+ /* @__PURE__ */ jsx(InspectorRailFooter, { children: chatAction.status === "enabled" ? /* @__PURE__ */ jsx(InspectorRailIconButton, {
87
+ "aria-label": chatAction.label,
88
+ onClick: chatAction.onActivate,
89
+ title: chatAction.label,
90
+ children: /* @__PURE__ */ jsx(MessageSquarePlusIcon, {
91
+ "aria-hidden": "true",
92
+ className: "size-4"
93
+ })
94
+ }) : /* @__PURE__ */ jsx(InspectorRailIconButton, {
95
+ "aria-label": `${chatAction.label}: ${chatAction.reason}`,
96
+ disabled: true,
97
+ title: chatAction.reason,
98
+ children: /* @__PURE__ */ jsx(MessageSquarePlusIcon, {
99
+ "aria-hidden": "true",
100
+ className: "size-4"
101
+ })
102
+ }) })
103
+ ]
104
+ });
105
+ //#endregion
106
+ export { WorkspaceEndRail, WorkspaceShell };
package/dist/index.d.ts CHANGED
@@ -3,10 +3,9 @@ import { CalendarDateRange, ResourceCalendarLaneLayout, ResourceCalendarLanePlac
3
3
  import { ResourceCalendar, ResourceCalendarColumn, ResourceCalendarEntry, ResourceCalendarEntryTone, ResourceCalendarResource } from "./calendar/resource-calendar.js";
4
4
  import "./calendar/index.js";
5
5
  import { Accordion, AccordionContent as AccordionPanel, AccordionItem, AccordionTrigger } from "./components/accordion.js";
6
- import { OVERLAY_LAYER_CLASS_NAMES, OverlayLayer } from "./lib/overlay-layer.js";
6
+ import { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_LAYER_CLASS_NAMES, OverlayLayer } from "./lib/overlay-layer.js";
7
7
  import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
8
8
  import { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator } from "./components/application-rail.js";
9
- import { ApplicationShell, ApplicationShellProps } from "./components/application-shell.js";
10
9
  import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
11
10
  import { BidiDirection, BidiText, BidiTextProps, UserText } from "./components/bidi-text.js";
12
11
  import { DiscordLogoIcon, GitHubLogoIcon } from "./components/brand-icons.js";
@@ -52,6 +51,7 @@ import { SortDirection, SortableHead, Table, TableBody, TableCaption, TableCell,
52
51
  import { Tabs, TabsContent as TabsPanel, TabsList, TabsTab } from "./components/tabs.js";
53
52
  import { AnchoredToastProvider, TOAST_RIGHT_OFFSET_VAR, ToastPosition, ToastProvider, stellaToast } from "./components/toast.js";
54
53
  import { Tooltip, TooltipContent as TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger } from "./components/tooltip.js";
54
+ import { WorkspaceCompactNavigation, WorkspaceEndRail, WorkspaceEndRailChatAction, WorkspaceEndRailProps, WorkspaceNavigation, WorkspaceShell, WorkspaceShellProps, WorkspaceTopBarContext } from "./components/workspace-shell.js";
55
55
  import { TableColumnCapabilities, TableColumnDescriptor, TableSchema, duplicateColumnIds, findTableColumn, hideableColumnIds, sortableColumnIds, tableColumnIds, tableColumnSizing, visibleColumnIds } from "./data-table/schema.js";
56
56
  import { DataTable, DataTableAriaSort, DataTableColumn, DataTableProps, DataTableRowAction } from "./data-table/table.js";
57
57
  import "./data-table/index.js";
@@ -60,7 +60,7 @@ import { contentDir, isStructuredInputType, useContentDir } from "./hooks/use-co
60
60
  import { useLatest } from "./hooks/use-latest.js";
61
61
  import { useIsMobile } from "./hooks/use-mobile.js";
62
62
  import { useViewportWidth } from "./hooks/use-viewport-width.js";
63
- import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
63
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
64
64
  import { InspectorDock } from "./inspector/dock.js";
65
65
  import { InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs } from "./inspector/tabs.js";
66
66
  import { PROPERTY_ROW_GRID, SIDE_RAIL_CONTAINER_CLASS, SIDE_RAIL_ICON_BUTTON_SIZE, SIDE_RAIL_TAB_ICON_SIZE, SIDE_RAIL_WIDTH, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX } from "./inspector/layout-tokens.js";
@@ -70,14 +70,15 @@ import "./inspector/index.js";
70
70
  import { KanbanCardFieldSelection, selectKanbanCardFieldIds } from "./kanban/card-properties.js";
71
71
  import { KanbanCardShell, KanbanCardShellProps } from "./kanban/card-shell.js";
72
72
  import { KanbanColumnHeader, KanbanColumnHeaderProps } from "./kanban/column-header.js";
73
- import { KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanDragHandle, KanbanDragHandleProps, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanSortableOptions, useKanbanSortable, useKanbanSortableSensors } from "./kanban/sortable-interactions.js";
73
+ import { KANBAN_BOARD_COLLISION_DETECTION, KanbanCellVirtualNavigation, KanbanSortableCellPosition, KanbanVirtualScrollRequest, kanbanKeyboardCoordinates } from "./kanban/sortable-interactions.logic.js";
74
+ import { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanCardDragSurfaceProps, KanbanDragCancelEvent, KanbanDragEndEvent, KanbanDragHandle, KanbanDragHandleProps, KanbanDragOverEvent, KanbanDragStartEvent, KanbanSortableActivationMode, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanDropTargetOptions, UseKanbanSortableOptions, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors } from "./kanban/sortable-interactions.js";
74
75
  import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KanbanDirection, KanbanHorizontalEdge, getKanbanHorizontalEdge } from "./kanban/sortable-edge.js";
75
76
  import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./kanban/drag-interactions.js";
76
77
  import { ColorVariants, OptionColor, emptyColor, optionColors, resolveOptionColor } from "./lib/option-color.js";
77
78
  import { KanbanBuiltInGroup, KanbanGroup, KanbanGroupOption, KanbanGrouping, KanbanSchema, ResolveKanbanGroupingParams, getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./kanban/grouping.js";
78
79
  import { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOARD_AXES, KanbanBoardAxis, KanbanBoardCell, KanbanBoardCoordinate, KanbanBoardLane, KanbanBoardMatrix, KanbanDropAxisChange, KanbanDropIntent, OrderKanbanCellsByColumnsParams, ResolveKanbanGroupValueParams, buildKanbanBoardMatrix, createKanbanDropIntent, orderKanbanCellsByColumns } from "./kanban/matrix.js";
79
80
  import { KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneIdentityContext } from "./kanban/subgroup-board.js";
80
- import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps } from "./kanban/virtual-cell.js";
81
+ import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps, KanbanVirtualCellSortableContext } from "./kanban/virtual-cell.js";
81
82
  import "./kanban/index.js";
82
83
  import { getInitials } from "./lib/initials.js";
83
84
  import { cn, composeRefs } from "./lib/utils.js";
@@ -89,4 +90,4 @@ import { ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffS
89
90
  import { ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone } from "./review/review-out-of-date-notice.js";
90
91
  import { ReviewStatusBadge, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant } from "./review/review-status-badge.js";
91
92
  import { ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusDot, reviewSeverityTone } from "./review/review-severity-dot.js";
92
- export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, ApplicationShell, type ApplicationShellProps, Avatar, AvatarFallback, AvatarImage, type BidiDirection, BidiText, type BidiTextProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, type BuildKanbanBoardMatrixParams, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, type CalendarDateRange, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, Checkbox, ColorPicker, ColorPickerContent, type ColorPickerContentProps, type ColorPickerProps, type ColorPreset, ColorVariants, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, type ControlSize, type CreateKanbanDropIntentParams, DEFAULT_PRESETS, DataTable, type DataTableAriaSort, type DataTableColumn, type DataTableProps, type DataTableRowAction, DatePickerPopover, type DatePickerPopoverProps, DestructiveActionConfirmation, DestructiveConfirmDialog, type DestructiveConfirmDialogProps, Dialog, DialogBackdrop, DialogBackdrop as DialogOverlay, DialogClose, DialogPopup as DialogContent, DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, DirectionalIcon, DiscordLogoIcon, Menu as DropdownMenu, Menu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuPopup, MenuCreateHandle as DropdownMenuCreateHandle, MenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuGroup, MenuItem as DropdownMenuItem, MenuItem, MenuGroupLabel as DropdownMenuLabel, MenuGroupLabel, MenuPortal as DropdownMenuPortal, MenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuShortcut, MenuSub as DropdownMenuSub, MenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubPopup, MenuSubTrigger as DropdownMenuSubTrigger, MenuSubTrigger, MenuTrigger as DropdownMenuTrigger, MenuTrigger, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GitHubLogoIcon, HexColorPicker, type HexColorPickerProps, PreviewCard as HoverCard, PreviewCard, PreviewCardPopup as HoverCardContent, PreviewCardPopup, PreviewCardTrigger as HoverCardTrigger, PreviewCardTrigger, INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, Input, InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorDock, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardCoordinate, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDirection, KanbanDragHandle, type KanbanDragHandleProps, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanHorizontalEdge, type KanbanSchema, type KanbanSortableBindings, KanbanSortableBoard, type KanbanSortableBoardProps, KanbanSortableColumns, type KanbanSortableColumnsProps, KanbanSortableList, type KanbanSortableListProps, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, Label, MenuPreviewLayout, OVERLAY_LAYER_CLASS_NAMES, OptionColor, type OrderKanbanCellsByColumnsParams, OutlineItem, OutlineRail, OutlineRailProps, OverlayLayer, PROPERTY_ROW_GRID, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger, PreviewCardPrimitive, PreviewPane, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, ResourceCalendar, type ResourceCalendarColumn, type ResourceCalendarEntry, type ResourceCalendarEntryTone, type ResourceCalendarLaneLayout, type ResourceCalendarLanePlacement, type ResourceCalendarPlacement, type ResourceCalendarResource, ReviewAuthorAvatar, ReviewCommentAuthor, ReviewCommentCard, ReviewDecisionActions, ReviewDecisionSize, ReviewDecisionState, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffSegmentType, ReviewDiffText, ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone, ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusBadge, ReviewStatusDot, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant, SIDE_RAIL_CONTAINER_CLASS, SIDE_RAIL_ICON_BUTTON_SIZE, SIDE_RAIL_TAB_ICON_SIZE, SIDE_RAIL_WIDTH, ScrollArea, ScrollBar, ScrollToTop, ScrollToTopProps, SecretInput, type SecretInputProps, SegmentedIconToggle, Select, SelectPopup as SelectContent, SelectPopup, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBackdrop, SheetBackdrop as SheetOverlay, SheetClose, SheetPopup as SheetContent, SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, type SheetSide, SheetTitle, SheetTrigger, Skeleton, type SortDirection, SortableHead, StellaMark, StellaWordmarkLatin, TOAST_RIGHT_OFFSET_VAR, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, Table, TableBody, TableCaption, TableCell, type TableColumnCapabilities, type TableColumnDescriptor, TableFooter, TableHead, TableHeader, TableRow, type TableSchema, Tabs, TabsPanel as TabsContent, TabsPanel, TabsList, TabsTab, TabsTab as TabsTrigger, TextSeparator, Textarea, type TextareaProps, type ToastPosition, ToastProvider, Tooltip, TooltipPopup as TooltipContent, TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger, UNKNOWN_AUTHOR_LABEL, type UseKanbanSortableOptions, UserText, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getInitials, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanSortable, useKanbanSortableSensors, useLatest, useViewportWidth, visibleColumnIds };
93
+ export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, Avatar, AvatarFallback, AvatarImage, BOARD_DRAG_OVERLAY_Z_INDEX, type BidiDirection, BidiText, type BidiTextProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, type BuildKanbanBoardMatrixParams, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, type CalendarDateRange, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, Checkbox, ColorPicker, ColorPickerContent, type ColorPickerContentProps, type ColorPickerProps, type ColorPreset, ColorVariants, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, type ControlSize, type CreateKanbanDropIntentParams, DEFAULT_PRESETS, DataTable, type DataTableAriaSort, type DataTableColumn, type DataTableProps, type DataTableRowAction, DatePickerPopover, type DatePickerPopoverProps, DestructiveActionConfirmation, DestructiveConfirmDialog, type DestructiveConfirmDialogProps, Dialog, DialogBackdrop, DialogBackdrop as DialogOverlay, DialogClose, DialogPopup as DialogContent, DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, DirectionalIcon, DiscordLogoIcon, Menu as DropdownMenu, Menu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuPopup, MenuCreateHandle as DropdownMenuCreateHandle, MenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuGroup, MenuItem as DropdownMenuItem, MenuItem, MenuGroupLabel as DropdownMenuLabel, MenuGroupLabel, MenuPortal as DropdownMenuPortal, MenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuShortcut, MenuSub as DropdownMenuSub, MenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubPopup, MenuSubTrigger as DropdownMenuSubTrigger, MenuSubTrigger, MenuTrigger as DropdownMenuTrigger, MenuTrigger, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GitHubLogoIcon, HexColorPicker, type HexColorPickerProps, PreviewCard as HoverCard, PreviewCard, PreviewCardPopup as HoverCardContent, PreviewCardPopup, PreviewCardTrigger as HoverCardTrigger, PreviewCardTrigger, INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, Input, InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorDock, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardCoordinate, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, type KanbanCellVirtualNavigation, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDirection, type KanbanDragCancelEvent, type KanbanDragEndEvent, KanbanDragHandle, type KanbanDragHandleProps, type KanbanDragOverEvent, type KanbanDragStartEvent, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanHorizontalEdge, type KanbanSchema, type KanbanSortableActivationMode, type KanbanSortableBindings, KanbanSortableBoard, type KanbanSortableBoardProps, type KanbanSortableCellPosition, KanbanSortableColumns, type KanbanSortableColumnsProps, KanbanSortableList, type KanbanSortableListProps, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type KanbanVirtualCellSortableContext, type KanbanVirtualScrollRequest, Label, MenuPreviewLayout, OVERLAY_LAYER_CLASS_NAMES, OptionColor, type OrderKanbanCellsByColumnsParams, OutlineItem, OutlineRail, OutlineRailProps, OverlayLayer, PROPERTY_ROW_GRID, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger, PreviewCardPrimitive, PreviewPane, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, ResourceCalendar, type ResourceCalendarColumn, type ResourceCalendarEntry, type ResourceCalendarEntryTone, type ResourceCalendarLaneLayout, type ResourceCalendarLanePlacement, type ResourceCalendarPlacement, type ResourceCalendarResource, ReviewAuthorAvatar, ReviewCommentAuthor, ReviewCommentCard, ReviewDecisionActions, ReviewDecisionSize, ReviewDecisionState, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffSegmentType, ReviewDiffText, ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone, ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusBadge, ReviewStatusDot, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant, SIDE_RAIL_CONTAINER_CLASS, SIDE_RAIL_ICON_BUTTON_SIZE, SIDE_RAIL_TAB_ICON_SIZE, SIDE_RAIL_WIDTH, ScrollArea, ScrollBar, ScrollToTop, ScrollToTopProps, SecretInput, type SecretInputProps, SegmentedIconToggle, Select, SelectPopup as SelectContent, SelectPopup, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetBackdrop, SheetBackdrop as SheetOverlay, SheetClose, SheetPopup as SheetContent, SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, type SheetSide, SheetTitle, SheetTrigger, Skeleton, type SortDirection, SortableHead, StellaMark, StellaWordmarkLatin, TOAST_RIGHT_OFFSET_VAR, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, Table, TableBody, TableCaption, TableCell, type TableColumnCapabilities, type TableColumnDescriptor, TableFooter, TableHead, TableHeader, TableRow, type TableSchema, Tabs, TabsPanel as TabsContent, TabsPanel, TabsList, TabsTab, TabsTab as TabsTrigger, TextSeparator, Textarea, type TextareaProps, type ToastPosition, ToastProvider, Tooltip, TooltipPopup as TooltipContent, TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger, UNKNOWN_AUTHOR_LABEL, type UseKanbanDropTargetOptions, type UseKanbanSortableOptions, UserText, type WorkspaceCompactNavigation, WorkspaceEndRail, type WorkspaceEndRailChatAction, type WorkspaceEndRailProps, type WorkspaceNavigation, WorkspaceShell, type WorkspaceShellProps, type WorkspaceTopBarContext, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getInitials, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useViewportWidth, visibleColumnIds };