@stll/ui 0.0.1-placeholder.0 → 0.3.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 (149) hide show
  1. package/README.md +84 -0
  2. package/dist/components/accordion.d.ts +8 -0
  3. package/dist/components/accordion.js +38 -0
  4. package/dist/components/alert-dialog.d.ts +32 -0
  5. package/dist/components/alert-dialog.js +75 -0
  6. package/dist/components/avatar.d.ts +7 -0
  7. package/dist/components/avatar.js +22 -0
  8. package/dist/components/bidi-text.d.ts +24 -0
  9. package/dist/components/bidi-text.js +38 -0
  10. package/dist/components/brand-icons.d.ts +7 -0
  11. package/dist/components/brand-icons.js +18 -0
  12. package/dist/components/breadcrumb.d.ts +12 -0
  13. package/dist/components/breadcrumb.js +61 -0
  14. package/dist/components/button-variants.d.ts +17 -0
  15. package/dist/components/button-variants.js +43 -0
  16. package/dist/components/button.d.ts +20 -0
  17. package/dist/components/button.js +53 -0
  18. package/dist/components/checkbox.d.ts +5 -0
  19. package/dist/components/checkbox.js +44 -0
  20. package/dist/components/color-picker.d.ts +47 -0
  21. package/dist/components/color-picker.js +249 -0
  22. package/dist/components/combobox.d.ts +40 -0
  23. package/dist/components/combobox.js +208 -0
  24. package/dist/components/command.d.ts +34 -0
  25. package/dist/components/command.js +100 -0
  26. package/dist/components/date-picker-popover.d.ts +29 -0
  27. package/dist/components/date-picker-popover.js +548 -0
  28. package/dist/components/date-picker-popover.logic.d.ts +14 -0
  29. package/dist/components/date-picker-popover.logic.js +26 -0
  30. package/dist/components/destructive-action-confirmation.d.ts +21 -0
  31. package/dist/components/destructive-action-confirmation.js +60 -0
  32. package/dist/components/destructive-confirm-dialog.d.ts +17 -0
  33. package/dist/components/destructive-confirm-dialog.js +49 -0
  34. package/dist/components/dialog.d.ts +37 -0
  35. package/dist/components/dialog.js +92 -0
  36. package/dist/components/directional-icon.d.ts +30 -0
  37. package/dist/components/directional-icon.js +12 -0
  38. package/dist/components/field.d.ts +11 -0
  39. package/dist/components/field.js +34 -0
  40. package/dist/components/form.d.ts +5 -0
  41. package/dist/components/form.js +12 -0
  42. package/dist/components/frame.d.ts +10 -0
  43. package/dist/components/frame.js +35 -0
  44. package/dist/components/hex-color-picker.d.ts +11 -0
  45. package/dist/components/hex-color-picker.js +366 -0
  46. package/dist/components/input-group.d.ts +15 -0
  47. package/dist/components/input-group.js +53 -0
  48. package/dist/components/input-otp.d.ts +13 -0
  49. package/dist/components/input-otp.js +39 -0
  50. package/dist/components/input.d.ts +12 -0
  51. package/dist/components/input.js +46 -0
  52. package/dist/components/label.d.ts +5 -0
  53. package/dist/components/label.js +18 -0
  54. package/dist/components/menu.d.ts +44 -0
  55. package/dist/components/menu.js +152 -0
  56. package/dist/components/outline-rail.d.ts +43 -0
  57. package/dist/components/outline-rail.js +416 -0
  58. package/dist/components/pagination.d.ts +17 -0
  59. package/dist/components/pagination.js +78 -0
  60. package/dist/components/popover.d.ts +34 -0
  61. package/dist/components/popover.js +67 -0
  62. package/dist/components/preview-card.d.ts +12 -0
  63. package/dist/components/preview-card.js +25 -0
  64. package/dist/components/preview-pane.d.ts +23 -0
  65. package/dist/components/preview-pane.js +33 -0
  66. package/dist/components/scroll-area.d.ts +19 -0
  67. package/dist/components/scroll-area.js +38 -0
  68. package/dist/components/scroll-to-top.d.ts +12 -0
  69. package/dist/components/scroll-to-top.js +43 -0
  70. package/dist/components/secret-input.d.ts +9 -0
  71. package/dist/components/secret-input.js +38 -0
  72. package/dist/components/segmented-icon-toggle.d.ts +22 -0
  73. package/dist/components/segmented-icon-toggle.js +30 -0
  74. package/dist/components/select.d.ts +25 -0
  75. package/dist/components/select.js +196 -0
  76. package/dist/components/separator.d.ts +16 -0
  77. package/dist/components/separator.js +26 -0
  78. package/dist/components/sheet.d.ts +29 -0
  79. package/dist/components/sheet.js +87 -0
  80. package/dist/components/skeleton.d.ts +4 -0
  81. package/dist/components/skeleton.js +10 -0
  82. package/dist/components/stella-mark.d.ts +5 -0
  83. package/dist/components/stella-mark.js +12 -0
  84. package/dist/components/stella-wordmark.d.ts +5 -0
  85. package/dist/components/stella-wordmark.js +21 -0
  86. package/dist/components/table.d.ts +20 -0
  87. package/dist/components/table.js +80 -0
  88. package/dist/components/tabs.d.ts +11 -0
  89. package/dist/components/tabs.js +46 -0
  90. package/dist/components/textarea.d.ts +9 -0
  91. package/dist/components/textarea.js +31 -0
  92. package/dist/components/toast.d.ts +60 -0
  93. package/dist/components/toast.js +261 -0
  94. package/dist/components/tooltip-trigger-helper.d.ts +11 -0
  95. package/dist/components/tooltip-trigger-helper.js +14 -0
  96. package/dist/components/tooltip.d.ts +15 -0
  97. package/dist/components/tooltip.js +32 -0
  98. package/dist/data-table/index.d.ts +2 -0
  99. package/dist/data-table/index.js +2 -0
  100. package/dist/data-table/schema.d.ts +70 -0
  101. package/dist/data-table/schema.js +40 -0
  102. package/dist/hooks/use-contained-handler.d.ts +55 -0
  103. package/dist/hooks/use-contained-handler.js +54 -0
  104. package/dist/hooks/use-content-dir.d.ts +48 -0
  105. package/dist/hooks/use-content-dir.js +45 -0
  106. package/dist/hooks/use-mobile.d.ts +4 -0
  107. package/dist/hooks/use-mobile.js +16 -0
  108. package/dist/hooks/use-viewport-width.d.ts +5 -0
  109. package/dist/hooks/use-viewport-width.js +14 -0
  110. package/dist/index.d.ts +67 -0
  111. package/dist/index.js +65 -0
  112. package/dist/inspector/chrome.d.ts +72 -0
  113. package/dist/inspector/chrome.js +153 -0
  114. package/dist/inspector/dock.d.ts +48 -0
  115. package/dist/inspector/dock.js +36 -0
  116. package/dist/inspector/index.d.ts +6 -0
  117. package/dist/inspector/index.js +6 -0
  118. package/dist/inspector/layout-tokens.d.ts +28 -0
  119. package/dist/inspector/layout-tokens.js +28 -0
  120. package/dist/inspector/pane-width.d.ts +64 -0
  121. package/dist/inspector/pane-width.js +53 -0
  122. package/dist/inspector/use-pane-width.d.ts +99 -0
  123. package/dist/inspector/use-pane-width.js +149 -0
  124. package/dist/kanban/card-properties.d.ts +27 -0
  125. package/dist/kanban/card-properties.js +19 -0
  126. package/dist/kanban/card-shell.d.ts +32 -0
  127. package/dist/kanban/card-shell.js +46 -0
  128. package/dist/kanban/column-header.d.ts +23 -0
  129. package/dist/kanban/column-header.js +24 -0
  130. package/dist/kanban/grouping.d.ts +84 -0
  131. package/dist/kanban/grouping.js +76 -0
  132. package/dist/kanban/index.d.ts +5 -0
  133. package/dist/kanban/index.js +5 -0
  134. package/dist/lib/button-disposition.d.ts +63 -0
  135. package/dist/lib/button-disposition.js +52 -0
  136. package/dist/lib/option-color.d.ts +28 -0
  137. package/dist/lib/option-color.js +59 -0
  138. package/dist/lib/overlay-layer.d.ts +22 -0
  139. package/dist/lib/overlay-layer.js +21 -0
  140. package/dist/lib/tab-order.d.ts +15 -0
  141. package/dist/lib/tab-order.js +15 -0
  142. package/dist/lib/tooltip-content.d.ts +13 -0
  143. package/dist/lib/tooltip-content.js +12 -0
  144. package/dist/lib/utils.d.ts +20 -0
  145. package/dist/lib/utils.js +41 -0
  146. package/dist/lib/week.d.ts +25 -0
  147. package/dist/lib/week.js +40 -0
  148. package/dist/styles/theme.css +1209 -0
  149. package/package.json +518 -2
@@ -0,0 +1,54 @@
1
+ //#region src/hooks/use-contained-handler.ts
2
+ /**
3
+ * Wrap a React event handler so it only fires when the event target
4
+ * is a DOM descendant of the given ref.
5
+ *
6
+ * React forwards synthetic events through the parent React tree even
7
+ * when descendants are rendered via createPortal. That makes it unsafe
8
+ * for a parent element to attach `onMouseDown`, `onClick`, `onFocus`,
9
+ * etc. that side-effect (focus steal, preventDefault, selection changes)
10
+ * under the assumption "the target lives inside me" — a portaled popup
11
+ * (Dialog, Combobox, Tooltip) silently bypasses the DOM boundary and
12
+ * triggers the side effect, dismissing itself.
13
+ *
14
+ * Only use for event types whose `target` is the meaningful subject of
15
+ * the event: pointer/mouse/touch/click and `focus`. Do **not** wrap
16
+ * `onBlur`: blur's `target` is the element losing focus, not the new
17
+ * focus destination, so the containment test cannot answer "is focus
18
+ * leaving for a portaled child?". For that case test `relatedTarget`
19
+ * directly inside the handler.
20
+ *
21
+ * The `require-contained-handler` oxlint rule enforces this on any JSX
22
+ * element carrying both `ref={…}` and one of the watched handler props;
23
+ * `containedEventHandler` covers elements that do not otherwise need a ref.
24
+ *
25
+ * @example
26
+ * const barRef = useRef<HTMLDivElement>(null);
27
+ * return (
28
+ * <div
29
+ * ref={barRef}
30
+ * onMouseDown={containedHandler(barRef, (e) => {
31
+ * e.preventDefault();
32
+ * focusEditor();
33
+ * })}
34
+ * >
35
+ * ...
36
+ * </div>
37
+ * );
38
+ */
39
+ const containedHandler = (ref, handler) => (event) => {
40
+ if (handler === void 0) return;
41
+ const container = ref?.current ?? null;
42
+ if (container !== null && event.target instanceof Node && !container.contains(event.target)) return;
43
+ handler(event);
44
+ };
45
+ /**
46
+ * Contain a synchronous JSX handler to its own DOM subtree without a ref.
47
+ * Prefer this form when the element does not otherwise need a ref.
48
+ */
49
+ const containedEventHandler = (handler) => (event) => {
50
+ if (event.currentTarget instanceof Node && event.target instanceof Node && !event.currentTarget.contains(event.target)) return;
51
+ handler(event);
52
+ };
53
+ //#endregion
54
+ export { containedEventHandler, containedHandler };
@@ -0,0 +1,48 @@
1
+ //#region src/hooks/use-content-dir.d.ts
2
+ /**
3
+ * Resolve the `dir` for a free-text field so the caret and alignment follow
4
+ * the ambient UI direction while the field is empty, then switch to the typed
5
+ * content's own direction once the user starts writing.
6
+ *
7
+ * `dir="auto"` on its own is wrong for this: the bidi heuristic reads the
8
+ * field's *value*, and an empty value has no strong directional character, so
9
+ * it falls back to LTR — leaving the caret on the left even under an RTL UI.
10
+ * Here an empty field omits `dir` entirely (so it inherits the document
11
+ * direction: caret on the right in Arabic), and a non-empty field uses
12
+ * `dir="auto"` (Arabic content → RTL, Latin content → LTR, re-evaluated live).
13
+ *
14
+ * An explicit `dir="ltr"`/`dir="rtl"` is treated as a forced direction and
15
+ * returned unchanged (e.g. always-LTR numeric fields).
16
+ *
17
+ * Empty↔non-empty is the only transition that changes direction, so the
18
+ * uncontrolled path stores a boolean and the state setter no-ops (no re-render)
19
+ * on every keystroke that doesn't cross that boundary.
20
+ */
21
+ type FieldValue = string | number | readonly string[] | undefined;
22
+ type UseContentDirArgs = {
23
+ dir: string | undefined;
24
+ value: FieldValue;
25
+ defaultValue: FieldValue;
26
+ };
27
+ type UseContentDirResult = {
28
+ dir: "ltr" | "rtl" | "auto" | undefined;
29
+ /**
30
+ * Feed the field's current text on every change so the uncontrolled path can
31
+ * detect the empty↔non-empty transition. No-op for controlled fields, whose
32
+ * direction is derived from `value` on render.
33
+ */
34
+ trackValue: (text: string) => void;
35
+ };
36
+ declare const isStructuredInputType: (type: string | undefined) => boolean;
37
+ /**
38
+ * Content-derived direction for a controlled field value: `"auto"` when there
39
+ * is content, `undefined` when empty (so the field inherits the ambient UI
40
+ * direction — caret on the RTL side under Arabic). Use this for a raw
41
+ * `<input>`/`<textarea>` whose value you already control; the shared
42
+ * `<Input>`/`<Textarea>` apply it for you via `useContentDir`, which also
43
+ * tracks the empty↔non-empty transition for uncontrolled fields.
44
+ */
45
+ declare const contentDir: (value: FieldValue) => "auto" | undefined;
46
+ declare const useContentDir: ({ dir, value, defaultValue }: UseContentDirArgs) => UseContentDirResult;
47
+ //#endregion
48
+ export { contentDir, isStructuredInputType, useContentDir };
@@ -0,0 +1,45 @@
1
+ import { useState } from "react";
2
+ //#region src/hooks/use-content-dir.ts
3
+ const STRUCTURED_INPUT_TYPES = /* @__PURE__ */ new Set([
4
+ "email",
5
+ "url",
6
+ "tel",
7
+ "number",
8
+ "password",
9
+ "date",
10
+ "datetime-local",
11
+ "time",
12
+ "month",
13
+ "week"
14
+ ]);
15
+ const isStructuredInputType = (type) => type !== void 0 && STRUCTURED_INPUT_TYPES.has(type);
16
+ const hasText = (value) => {
17
+ if (typeof value === "string") return value.length > 0;
18
+ if (typeof value === "number") return true;
19
+ return Array.isArray(value) && value.length > 0;
20
+ };
21
+ /**
22
+ * Content-derived direction for a controlled field value: `"auto"` when there
23
+ * is content, `undefined` when empty (so the field inherits the ambient UI
24
+ * direction — caret on the RTL side under Arabic). Use this for a raw
25
+ * `<input>`/`<textarea>` whose value you already control; the shared
26
+ * `<Input>`/`<Textarea>` apply it for you via `useContentDir`, which also
27
+ * tracks the empty↔non-empty transition for uncontrolled fields.
28
+ */
29
+ const contentDir = (value) => hasText(value) ? "auto" : void 0;
30
+ const useContentDir = ({ dir, value, defaultValue }) => {
31
+ const forcedDir = dir === "ltr" || dir === "rtl" ? dir : void 0;
32
+ const isControlled = value !== void 0;
33
+ const [uncontrolledHasText, setUncontrolledHasText] = useState(() => hasText(defaultValue));
34
+ const contentPresent = isControlled ? hasText(value) : uncontrolledHasText;
35
+ return {
36
+ dir: forcedDir ?? (contentPresent ? "auto" : void 0),
37
+ trackValue: (text) => {
38
+ if (isControlled) return;
39
+ const next = text.length > 0;
40
+ setUncontrolledHasText((previous) => previous === next ? previous : next);
41
+ }
42
+ };
43
+ };
44
+ //#endregion
45
+ export { contentDir, isStructuredInputType, useContentDir };
@@ -0,0 +1,4 @@
1
+ //#region src/hooks/use-mobile.d.ts
2
+ declare function useIsMobile(): boolean;
3
+ //#endregion
4
+ export { useIsMobile };
@@ -0,0 +1,16 @@
1
+ import * as React$1 from "react";
2
+ //#region src/hooks/use-mobile.ts
3
+ const MOBILE_BREAKPOINT = 768;
4
+ const MOBILE_QUERY = `(max-width: 767px)`;
5
+ const subscribe = (onChange) => {
6
+ const mql = window.matchMedia(MOBILE_QUERY);
7
+ mql.addEventListener("change", onChange);
8
+ return () => mql.removeEventListener("change", onChange);
9
+ };
10
+ const getSnapshot = () => window.innerWidth < MOBILE_BREAKPOINT;
11
+ const getServerSnapshot = () => false;
12
+ function useIsMobile() {
13
+ return React$1.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
14
+ }
15
+ //#endregion
16
+ export { useIsMobile };
@@ -0,0 +1,5 @@
1
+ //#region src/hooks/use-viewport-width.d.ts
2
+ /** Viewport width in CSS pixels, tracked across resizes. */
3
+ declare function useViewportWidth(): number;
4
+ //#endregion
5
+ export { useViewportWidth };
@@ -0,0 +1,14 @@
1
+ import * as React$1 from "react";
2
+ //#region src/hooks/use-viewport-width.ts
3
+ const subscribe = (onChange) => {
4
+ window.addEventListener("resize", onChange);
5
+ return () => window.removeEventListener("resize", onChange);
6
+ };
7
+ const getSnapshot = () => window.innerWidth;
8
+ const getServerSnapshot = () => 0;
9
+ /** Viewport width in CSS pixels, tracked across resizes. */
10
+ function useViewportWidth() {
11
+ return React$1.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
12
+ }
13
+ //#endregion
14
+ export { useViewportWidth };
@@ -0,0 +1,67 @@
1
+ import { Accordion, AccordionContent as AccordionPanel, AccordionItem, AccordionTrigger } from "./components/accordion.js";
2
+ import { OVERLAY_LAYER_CLASS_NAMES, OverlayLayer } from "./lib/overlay-layer.js";
3
+ import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
4
+ import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
5
+ import { BidiDirection, BidiText, BidiTextProps, UserText } from "./components/bidi-text.js";
6
+ import { DiscordLogoIcon, GitHubLogoIcon } from "./components/brand-icons.js";
7
+ import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/breadcrumb.js";
8
+ import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button-variants.js";
9
+ import { Button } from "./components/button.js";
10
+ import { Checkbox } from "./components/checkbox.js";
11
+ import { ColorPicker, ColorPickerContent, ColorPickerContentProps, ColorPickerProps, ColorPreset, DEFAULT_PRESETS } from "./components/color-picker.js";
12
+ import { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, useComboboxFilter } from "./components/combobox.js";
13
+ import { Dialog, DialogBackdrop, DialogClose, DialogContent as DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport } from "./components/dialog.js";
14
+ import { Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut } from "./components/command.js";
15
+ import { DatePickerPopover, DatePickerPopoverProps } from "./components/date-picker-popover.js";
16
+ import { Input, InputProps } from "./components/input.js";
17
+ import { DestructiveActionConfirmation, useDestructiveActionConfirmation } from "./components/destructive-action-confirmation.js";
18
+ import { DestructiveConfirmDialog, DestructiveConfirmDialogProps } from "./components/destructive-confirm-dialog.js";
19
+ import { DirectionalIcon } from "./components/directional-icon.js";
20
+ import { Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity } from "./components/field.js";
21
+ import { Form } from "./components/form.js";
22
+ import { Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle } from "./components/frame.js";
23
+ import { HexColorPicker, HexColorPickerProps } from "./components/hex-color-picker.js";
24
+ import { Textarea, TextareaProps } from "./components/textarea.js";
25
+ import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea } from "./components/input-group.js";
26
+ import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from "./components/input-otp.js";
27
+ import { Label } from "./components/label.js";
28
+ import { DropdownMenu as Menu, DropdownMenuCheckboxItem as MenuCheckboxItem, DropdownMenuContent as MenuPopup, DropdownMenuCreateHandle as MenuCreateHandle, DropdownMenuGroup as MenuGroup, DropdownMenuItem as MenuItem, DropdownMenuLabel as MenuGroupLabel, DropdownMenuPortal as MenuPortal, DropdownMenuRadioGroup as MenuRadioGroup, DropdownMenuRadioItem as MenuRadioItem, DropdownMenuSeparator as MenuSeparator, DropdownMenuShortcut as MenuShortcut, DropdownMenuSub as MenuSub, DropdownMenuSubContent as MenuSubPopup, DropdownMenuSubTrigger as MenuSubTrigger, DropdownMenuTrigger as MenuTrigger } from "./components/menu.js";
29
+ import { OutlineItem, OutlineRail, OutlineRailProps } from "./components/outline-rail.js";
30
+ import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/pagination.js";
31
+ import { Popover, PopoverClose, PopoverContent as PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger } from "./components/popover.js";
32
+ import { HoverCard as PreviewCard, HoverCardContent as PreviewCardPopup, HoverCardTrigger as PreviewCardTrigger, PreviewCardPrimitive } from "./components/preview-card.js";
33
+ import { MenuPreviewLayout, PreviewPane } from "./components/preview-pane.js";
34
+ import { ScrollArea, ScrollBar } from "./components/scroll-area.js";
35
+ import { ScrollToTop, ScrollToTopProps } from "./components/scroll-to-top.js";
36
+ import { SecretInput, SecretInputProps } from "./components/secret-input.js";
37
+ import { SegmentedIconToggle } from "./components/segmented-icon-toggle.js";
38
+ import { Select, SelectContent as SelectPopup, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from "./components/select.js";
39
+ import { Separator, TextSeparator } from "./components/separator.js";
40
+ import { Sheet, SheetBackdrop, SheetClose, SheetContent as SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, SheetSide, SheetTitle, SheetTrigger } from "./components/sheet.js";
41
+ import { Skeleton } from "./components/skeleton.js";
42
+ import { StellaMark } from "./components/stella-mark.js";
43
+ import { StellaWordmarkLatin } from "./components/stella-wordmark.js";
44
+ import { SortDirection, SortableHead, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/table.js";
45
+ import { Tabs, TabsContent as TabsPanel, TabsList, TabsTab } from "./components/tabs.js";
46
+ import { AnchoredToastProvider, TOAST_RIGHT_OFFSET_VAR, ToastPosition, ToastProvider, stellaToast } from "./components/toast.js";
47
+ import { Tooltip, TooltipContent as TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger } from "./components/tooltip.js";
48
+ import { TableColumnCapabilities, TableColumnDescriptor, TableSchema, duplicateColumnIds, findTableColumn, hideableColumnIds, sortableColumnIds, tableColumnIds, tableColumnSizing, visibleColumnIds } from "./data-table/schema.js";
49
+ import { containedEventHandler, containedHandler } from "./hooks/use-contained-handler.js";
50
+ import { contentDir, isStructuredInputType, useContentDir } from "./hooks/use-content-dir.js";
51
+ import { useIsMobile } from "./hooks/use-mobile.js";
52
+ import { useViewportWidth } from "./hooks/use-viewport-width.js";
53
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
54
+ import { InspectorDock } from "./inspector/dock.js";
55
+ 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";
56
+ import { INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, shouldForceSidebarCollapsed } from "./inspector/pane-width.js";
57
+ import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./inspector/use-pane-width.js";
58
+ import "./inspector/index.js";
59
+ import { KanbanCardFieldSelection, selectKanbanCardFieldIds } from "./kanban/card-properties.js";
60
+ import { KanbanCardShell, KanbanCardShellProps } from "./kanban/card-shell.js";
61
+ import { KanbanColumnHeader, KanbanColumnHeaderProps } from "./kanban/column-header.js";
62
+ import { ColorVariants, OptionColor, emptyColor, optionColors, resolveOptionColor } from "./lib/option-color.js";
63
+ import { KanbanBuiltInGroup, KanbanGroup, KanbanGroupOption, KanbanGrouping, KanbanSchema, ResolveKanbanGroupingParams, getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./kanban/grouping.js";
64
+ import "./kanban/index.js";
65
+ import { cn, composeRefs } from "./lib/utils.js";
66
+ import { getFirstWeekday, getLocaleWeekInfo, getWeekendDays } from "./lib/week.js";
67
+ export { 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, Avatar, AvatarFallback, AvatarImage, type BidiDirection, BidiText, type BidiTextProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, 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, DEFAULT_PRESETS, 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, InspectorTitle, type KanbanBuiltInGroup, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanSchema, Label, MenuPreviewLayout, OVERLAY_LAYER_CLASS_NAMES, OptionColor, 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 ResolveKanbanGroupingParams, 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, 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, UserText, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getKanbanGroupingPropertyId, getKanbanGroups, getLocaleWeekInfo, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, optionColors, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useViewportWidth, visibleColumnIds };
package/dist/index.js ADDED
@@ -0,0 +1,65 @@
1
+ import { cn, composeRefs } from "./lib/utils.js";
2
+ import { Accordion, AccordionContent as AccordionPanel, AccordionItem, AccordionTrigger } from "./components/accordion.js";
3
+ import { OVERLAY_LAYER_CLASS_NAMES } from "./lib/overlay-layer.js";
4
+ import { Tooltip, TooltipContent as TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger } from "./components/tooltip.js";
5
+ import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
6
+ import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
7
+ import { BidiText, UserText } from "./components/bidi-text.js";
8
+ import { DiscordLogoIcon, GitHubLogoIcon } from "./components/brand-icons.js";
9
+ import { DirectionalIcon } from "./components/directional-icon.js";
10
+ import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/breadcrumb.js";
11
+ import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button-variants.js";
12
+ import { Button } from "./components/button.js";
13
+ import { Checkbox } from "./components/checkbox.js";
14
+ import { ColorPicker, ColorPickerContent, DEFAULT_PRESETS } from "./components/color-picker.js";
15
+ import { containedEventHandler, containedHandler } from "./hooks/use-contained-handler.js";
16
+ import { contentDir, isStructuredInputType, useContentDir } from "./hooks/use-content-dir.js";
17
+ import { Input } from "./components/input.js";
18
+ import { ScrollArea, ScrollBar } from "./components/scroll-area.js";
19
+ import { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, useComboboxFilter } from "./components/combobox.js";
20
+ import { Dialog, DialogBackdrop, DialogClose, DialogContent as DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport } from "./components/dialog.js";
21
+ import { Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut } from "./components/command.js";
22
+ import { getFirstWeekday, getLocaleWeekInfo, getWeekendDays } from "./lib/week.js";
23
+ import { Popover, PopoverClose, PopoverContent as PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger } from "./components/popover.js";
24
+ import { DatePickerPopover } from "./components/date-picker-popover.js";
25
+ import { Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity } from "./components/field.js";
26
+ import { DestructiveActionConfirmation, useDestructiveActionConfirmation } from "./components/destructive-action-confirmation.js";
27
+ import { DestructiveConfirmDialog } from "./components/destructive-confirm-dialog.js";
28
+ import { Form } from "./components/form.js";
29
+ import { Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle } from "./components/frame.js";
30
+ import { HexColorPicker } from "./components/hex-color-picker.js";
31
+ import { Textarea } from "./components/textarea.js";
32
+ import { InputGroup, InputGroupAddon, InputGroupInput, InputGroupText, InputGroupTextarea } from "./components/input-group.js";
33
+ import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from "./components/input-otp.js";
34
+ import { Label } from "./components/label.js";
35
+ import { DropdownMenu as Menu, DropdownMenuCheckboxItem as MenuCheckboxItem, DropdownMenuContent as MenuPopup, DropdownMenuCreateHandle as MenuCreateHandle, DropdownMenuGroup as MenuGroup, DropdownMenuItem as MenuItem, DropdownMenuLabel as MenuGroupLabel, DropdownMenuPortal as MenuPortal, DropdownMenuRadioGroup as MenuRadioGroup, DropdownMenuRadioItem as MenuRadioItem, DropdownMenuSeparator as MenuSeparator, DropdownMenuShortcut as MenuShortcut, DropdownMenuSub as MenuSub, DropdownMenuSubContent as MenuSubPopup, DropdownMenuSubTrigger as MenuSubTrigger, DropdownMenuTrigger as MenuTrigger } from "./components/menu.js";
36
+ import { OutlineRail } from "./components/outline-rail.js";
37
+ import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "./components/pagination.js";
38
+ import { HoverCard as PreviewCard, HoverCardContent as PreviewCardPopup, HoverCardTrigger as PreviewCardTrigger, PreviewCardPrimitive } from "./components/preview-card.js";
39
+ import { MenuPreviewLayout, PreviewPane } from "./components/preview-pane.js";
40
+ import { ScrollToTop } from "./components/scroll-to-top.js";
41
+ import { SecretInput } from "./components/secret-input.js";
42
+ import { SegmentedIconToggle } from "./components/segmented-icon-toggle.js";
43
+ import { Select, SelectContent as SelectPopup, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from "./components/select.js";
44
+ import { Separator, TextSeparator } from "./components/separator.js";
45
+ import { Sheet, SheetBackdrop, SheetClose, SheetContent as SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, SheetTitle, SheetTrigger } from "./components/sheet.js";
46
+ import { Skeleton } from "./components/skeleton.js";
47
+ import { StellaMark } from "./components/stella-mark.js";
48
+ import { StellaWordmarkLatin } from "./components/stella-wordmark.js";
49
+ import { SortableHead, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from "./components/table.js";
50
+ import { Tabs, TabsContent as TabsPanel, TabsList, TabsTab } from "./components/tabs.js";
51
+ import { AnchoredToastProvider, TOAST_RIGHT_OFFSET_VAR, ToastProvider, stellaToast } from "./components/toast.js";
52
+ import { duplicateColumnIds, findTableColumn, hideableColumnIds, sortableColumnIds, tableColumnIds, tableColumnSizing, visibleColumnIds } from "./data-table/schema.js";
53
+ import { useIsMobile } from "./hooks/use-mobile.js";
54
+ import { useViewportWidth } from "./hooks/use-viewport-width.js";
55
+ 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";
56
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
57
+ import { InspectorDock } from "./inspector/dock.js";
58
+ import { INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, shouldForceSidebarCollapsed } from "./inspector/pane-width.js";
59
+ import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./inspector/use-pane-width.js";
60
+ import { selectKanbanCardFieldIds } from "./kanban/card-properties.js";
61
+ import { KanbanCardShell } from "./kanban/card-shell.js";
62
+ import { KanbanColumnHeader } from "./kanban/column-header.js";
63
+ import { getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./kanban/grouping.js";
64
+ import { emptyColor, optionColors, resolveOptionColor } from "./lib/option-color.js";
65
+ export { 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, Avatar, AvatarFallback, AvatarImage, BidiText, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Checkbox, ColorPicker, ColorPickerContent, 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, DEFAULT_PRESETS, DatePickerPopover, DestructiveActionConfirmation, DestructiveConfirmDialog, 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, 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, Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorDock, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle, KanbanCardShell, KanbanColumnHeader, Label, MenuPreviewLayout, OVERLAY_LAYER_CLASS_NAMES, OutlineRail, PROPERTY_ROW_GRID, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger, PreviewCardPrimitive, PreviewPane, SIDE_RAIL_CONTAINER_CLASS, SIDE_RAIL_ICON_BUTTON_SIZE, SIDE_RAIL_TAB_ICON_SIZE, SIDE_RAIL_WIDTH, ScrollArea, ScrollBar, ScrollToTop, SecretInput, 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, SheetTitle, SheetTrigger, Skeleton, SortableHead, StellaMark, StellaWordmarkLatin, TOAST_RIGHT_OFFSET_VAR, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsPanel, TabsList, TabsTab, TabsTab as TabsTrigger, TextSeparator, Textarea, ToastProvider, Tooltip, TooltipPopup as TooltipContent, TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger, UserText, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getKanbanGroupingPropertyId, getKanbanGroups, getLocaleWeekInfo, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, optionColors, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useViewportWidth, visibleColumnIds };
@@ -0,0 +1,72 @@
1
+ import * as React$1 from "react";
2
+ //#region src/inspector/chrome.d.ts
3
+ /**
4
+ * Inspector chrome: the shell, the icon rail, the header strip, and the
5
+ * fixed-height key/value rows.
6
+ *
7
+ * The class strings are the workspace inspector's own, so an application
8
+ * built on this package renders that component family rather than something
9
+ * merely similar.
10
+ *
11
+ * Deliberately headless where a component library would otherwise leak: the
12
+ * rail and the tab strip take rendered children, so the host picks its own
13
+ * tabs primitive instead of inheriting one.
14
+ *
15
+ * Record-data slots (title, description, property value) hold caller-supplied
16
+ * values such as case numbers, ECLI identifiers, and filenames. They isolate
17
+ * their own bidi context so a Latin value inside an RTL inspector keeps its
18
+ * character order and truncates from the correct end; chrome slots stay in
19
+ * the surrounding direction. `dir` precedes the prop spread so callers can
20
+ * force a direction. `chrome.test.tsx` pins which slots belong to each group.
21
+ */
22
+ /** Outermost inspector surface. Fills the dock; owns no scrolling. */
23
+ declare const Inspector: ({ className, ...props }: React$1.ComponentProps<"aside">) => React$1.JSX.Element;
24
+ /**
25
+ * Vertical 48px icon rail. Hidden below the desktop breakpoint, where the
26
+ * pane becomes a full-screen sheet and the rail's affordances move into
27
+ * the header.
28
+ */
29
+ declare const InspectorRail: ({ className, ...props }: React$1.ComponentProps<"nav">) => React$1.JSX.Element;
30
+ /** A rail cell: same height as every header strip and property row. */
31
+ declare const InspectorRailCell: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
32
+ declare const InspectorRailIconButton: ({ className, ...props }: React$1.ComponentProps<"button">) => React$1.JSX.Element;
33
+ /**
34
+ * A rail tab. The active tab carries a 2px spine on the rail's inline-start
35
+ * edge — the same affordance the workspace rail uses to say "this pane is
36
+ * showing that tab".
37
+ */
38
+ declare const InspectorRailTab: ({ active, className, ...props }: React$1.ComponentProps<"button"> & {
39
+ active?: boolean;
40
+ }) => React$1.JSX.Element;
41
+ /** Header strip. One row tall, bordered below, never scrolls. */
42
+ declare const InspectorHeader: ({ className, ...props }: React$1.ComponentProps<"header">) => React$1.JSX.Element;
43
+ declare const InspectorHeaderText: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
44
+ declare const InspectorTitle: ({ children, className, ...props }: React$1.ComponentProps<"h2">) => React$1.JSX.Element;
45
+ declare const InspectorDescription: ({ className, ...props }: React$1.ComponentProps<"p">) => React$1.JSX.Element;
46
+ declare const InspectorActions: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
47
+ /**
48
+ * Scroll owner for the active tab. Exactly one of these is mounted at a
49
+ * time: two nested scrollers inside a 512px pane is how a side panel stops
50
+ * being navigable.
51
+ */
52
+ declare const InspectorContent: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
53
+ declare const InspectorSection: ({ className, ...props }: React$1.ComponentProps<"section">) => React$1.JSX.Element;
54
+ /** Section header. Same row height as the properties beneath it. */
55
+ declare const InspectorSectionTitle: ({ children, className, ...props }: React$1.ComponentProps<"h3">) => React$1.JSX.Element;
56
+ declare const InspectorPropertyList: ({ className, ...props }: React$1.ComponentProps<"dl">) => React$1.JSX.Element;
57
+ /**
58
+ * A key/value row.
59
+ *
60
+ * The height is fixed, not a minimum. A row that grows to fit its value
61
+ * breaks the rhythm the rail's cells set, and a column of rows at differing
62
+ * heights stops reading as a scannable list — which is the whole point of
63
+ * the layout. Long values truncate; the full text belongs in a tooltip or
64
+ * an expanded view, not in a taller row.
65
+ */
66
+ declare const InspectorProperty: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
67
+ declare const InspectorPropertyLabel: ({ className, ...props }: React$1.ComponentProps<"dt">) => React$1.JSX.Element;
68
+ declare const InspectorPropertyValue: ({ className, ...props }: React$1.ComponentProps<"dd">) => React$1.JSX.Element;
69
+ /** Row-height empty state, so an empty list keeps the list's rhythm. */
70
+ declare const InspectorEmptyRow: ({ className, ...props }: React$1.ComponentProps<"p">) => React$1.JSX.Element;
71
+ //#endregion
72
+ export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };
@@ -0,0 +1,153 @@
1
+ import { cn } from "../lib/utils.js";
2
+ import { PROPERTY_ROW_GRID, SIDE_RAIL_CONTAINER_CLASS, SIDE_RAIL_ICON_BUTTON_SIZE, TOOLBAR_ROW_HEIGHT } from "./layout-tokens.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/inspector/chrome.tsx
5
+ /**
6
+ * Inspector chrome: the shell, the icon rail, the header strip, and the
7
+ * fixed-height key/value rows.
8
+ *
9
+ * The class strings are the workspace inspector's own, so an application
10
+ * built on this package renders that component family rather than something
11
+ * merely similar.
12
+ *
13
+ * Deliberately headless where a component library would otherwise leak: the
14
+ * rail and the tab strip take rendered children, so the host picks its own
15
+ * tabs primitive instead of inheriting one.
16
+ *
17
+ * Record-data slots (title, description, property value) hold caller-supplied
18
+ * values such as case numbers, ECLI identifiers, and filenames. They isolate
19
+ * their own bidi context so a Latin value inside an RTL inspector keeps its
20
+ * character order and truncates from the correct end; chrome slots stay in
21
+ * the surrounding direction. `dir` precedes the prop spread so callers can
22
+ * force a direction. `chrome.test.tsx` pins which slots belong to each group.
23
+ */
24
+ /** Outermost inspector surface. Fills the dock; owns no scrolling. */
25
+ const Inspector = ({ className, ...props }) => /* @__PURE__ */ jsx("aside", {
26
+ className: cn("bg-background text-foreground flex h-full min-h-0 w-full overflow-hidden shadow-lg", className),
27
+ "data-slot": "inspector",
28
+ ...props
29
+ });
30
+ /**
31
+ * Vertical 48px icon rail. Hidden below the desktop breakpoint, where the
32
+ * pane becomes a full-screen sheet and the rail's affordances move into
33
+ * the header.
34
+ */
35
+ const InspectorRail = ({ className, ...props }) => /* @__PURE__ */ jsx("nav", {
36
+ className: cn(SIDE_RAIL_CONTAINER_CLASS, "hidden md:flex", className),
37
+ "data-slot": "inspector-rail",
38
+ ...props
39
+ });
40
+ /** A rail cell: same height as every header strip and property row. */
41
+ const InspectorRailCell = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
42
+ className: cn("flex w-full shrink-0 items-center justify-center border-b", TOOLBAR_ROW_HEIGHT, className),
43
+ "data-slot": "inspector-rail-cell",
44
+ ...props
45
+ });
46
+ const InspectorRailIconButton = ({ className, ...props }) => /* @__PURE__ */ jsx("button", {
47
+ className: cn("text-muted-foreground hover:bg-accent hover:text-foreground flex items-center justify-center rounded-md transition-colors", SIDE_RAIL_ICON_BUTTON_SIZE, className),
48
+ "data-slot": "inspector-rail-icon-button",
49
+ type: "button",
50
+ ...props
51
+ });
52
+ /**
53
+ * A rail tab. The active tab carries a 2px spine on the rail's inline-start
54
+ * edge — the same affordance the workspace rail uses to say "this pane is
55
+ * showing that tab".
56
+ */
57
+ const InspectorRailTab = ({ active = false, className, ...props }) => /* @__PURE__ */ jsx("button", {
58
+ "aria-current": active ? "true" : void 0,
59
+ className: cn("group/tab relative flex min-h-8 w-full items-center justify-center border-b transition-colors", TOOLBAR_ROW_HEIGHT, active ? "bg-background text-foreground before:bg-primary before:absolute before:inset-y-0 before:inset-s-0 before:w-0.5" : "text-muted-foreground hover:bg-accent hover:text-foreground", className),
60
+ "data-active": active ? "" : void 0,
61
+ "data-slot": "inspector-rail-tab",
62
+ type: "button",
63
+ ...props
64
+ });
65
+ /** Header strip. One row tall, bordered below, never scrolls. */
66
+ const InspectorHeader = ({ className, ...props }) => /* @__PURE__ */ jsx("header", {
67
+ className: cn("flex shrink-0 items-center justify-between border-b px-3", TOOLBAR_ROW_HEIGHT, className),
68
+ "data-slot": "inspector-header",
69
+ ...props
70
+ });
71
+ const InspectorHeaderText = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
72
+ className: cn("flex min-w-0 items-center gap-2 overflow-hidden", className),
73
+ "data-slot": "inspector-header-text",
74
+ ...props
75
+ });
76
+ const InspectorTitle = ({ children, className, ...props }) => /* @__PURE__ */ jsx("h2", {
77
+ className: cn("truncate text-xs font-medium [unicode-bidi:isolate]", className),
78
+ "data-slot": "inspector-title",
79
+ dir: "auto",
80
+ ...props,
81
+ children
82
+ });
83
+ const InspectorDescription = ({ className, ...props }) => /* @__PURE__ */ jsx("p", {
84
+ className: cn("text-muted-foreground truncate text-[11px] [unicode-bidi:isolate]", className),
85
+ "data-slot": "inspector-description",
86
+ dir: "auto",
87
+ ...props
88
+ });
89
+ const InspectorActions = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
90
+ className: cn("flex shrink-0 items-center gap-1 ps-4", className),
91
+ "data-slot": "inspector-actions",
92
+ ...props
93
+ });
94
+ /**
95
+ * Scroll owner for the active tab. Exactly one of these is mounted at a
96
+ * time: two nested scrollers inside a 512px pane is how a side panel stops
97
+ * being navigable.
98
+ */
99
+ const InspectorContent = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
100
+ className: cn("flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto overscroll-contain", className),
101
+ "data-slot": "inspector-content",
102
+ ...props
103
+ });
104
+ const InspectorSection = ({ className, ...props }) => /* @__PURE__ */ jsx("section", {
105
+ className: cn("shrink-0", className),
106
+ "data-slot": "inspector-section",
107
+ ...props
108
+ });
109
+ /** Section header. Same row height as the properties beneath it. */
110
+ const InspectorSectionTitle = ({ children, className, ...props }) => /* @__PURE__ */ jsx("h3", {
111
+ className: cn("text-muted-foreground flex shrink-0 items-center border-b px-3 text-sm font-medium", TOOLBAR_ROW_HEIGHT, className),
112
+ "data-slot": "inspector-section-title",
113
+ ...props,
114
+ children
115
+ });
116
+ const InspectorPropertyList = ({ className, ...props }) => /* @__PURE__ */ jsx("dl", {
117
+ className: cn("min-w-0", className),
118
+ "data-slot": "inspector-property-list",
119
+ ...props
120
+ });
121
+ /**
122
+ * A key/value row.
123
+ *
124
+ * The height is fixed, not a minimum. A row that grows to fit its value
125
+ * breaks the rhythm the rail's cells set, and a column of rows at differing
126
+ * heights stops reading as a scannable list — which is the whole point of
127
+ * the layout. Long values truncate; the full text belongs in a tooltip or
128
+ * an expanded view, not in a taller row.
129
+ */
130
+ const InspectorProperty = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
131
+ className: cn("grid shrink-0 items-center gap-3 border-b px-3", PROPERTY_ROW_GRID, TOOLBAR_ROW_HEIGHT, className),
132
+ "data-slot": "inspector-property",
133
+ ...props
134
+ });
135
+ const InspectorPropertyLabel = ({ className, ...props }) => /* @__PURE__ */ jsx("dt", {
136
+ className: cn("text-muted-foreground min-w-0 truncate text-sm font-medium", className),
137
+ "data-slot": "inspector-property-label",
138
+ ...props
139
+ });
140
+ const InspectorPropertyValue = ({ className, ...props }) => /* @__PURE__ */ jsx("dd", {
141
+ className: cn("min-w-0 truncate text-sm [unicode-bidi:isolate]", className),
142
+ "data-slot": "inspector-property-value",
143
+ dir: "auto",
144
+ ...props
145
+ });
146
+ /** Row-height empty state, so an empty list keeps the list's rhythm. */
147
+ const InspectorEmptyRow = ({ className, ...props }) => /* @__PURE__ */ jsx("p", {
148
+ className: cn("text-muted-foreground flex shrink-0 items-center border-b px-3 text-sm italic", TOOLBAR_ROW_HEIGHT, className),
149
+ "data-slot": "inspector-empty-row",
150
+ ...props
151
+ });
152
+ //#endregion
153
+ export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };