@stll/ui 0.0.1-placeholder.0 → 0.2.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.
- package/README.md +84 -0
- package/dist/components/accordion.d.ts +8 -0
- package/dist/components/accordion.js +38 -0
- package/dist/components/alert-dialog.d.ts +32 -0
- package/dist/components/alert-dialog.js +75 -0
- package/dist/components/avatar.d.ts +7 -0
- package/dist/components/avatar.js +22 -0
- package/dist/components/bidi-text.d.ts +24 -0
- package/dist/components/bidi-text.js +38 -0
- package/dist/components/brand-icons.d.ts +7 -0
- package/dist/components/brand-icons.js +18 -0
- package/dist/components/breadcrumb.d.ts +12 -0
- package/dist/components/breadcrumb.js +61 -0
- package/dist/components/button-variants.d.ts +17 -0
- package/dist/components/button-variants.js +43 -0
- package/dist/components/button.d.ts +20 -0
- package/dist/components/button.js +53 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.js +44 -0
- package/dist/components/color-picker.d.ts +47 -0
- package/dist/components/color-picker.js +249 -0
- package/dist/components/combobox.d.ts +40 -0
- package/dist/components/combobox.js +208 -0
- package/dist/components/command.d.ts +34 -0
- package/dist/components/command.js +100 -0
- package/dist/components/date-picker-popover.d.ts +29 -0
- package/dist/components/date-picker-popover.js +548 -0
- package/dist/components/date-picker-popover.logic.d.ts +14 -0
- package/dist/components/date-picker-popover.logic.js +26 -0
- package/dist/components/destructive-action-confirmation.d.ts +21 -0
- package/dist/components/destructive-action-confirmation.js +60 -0
- package/dist/components/destructive-confirm-dialog.d.ts +17 -0
- package/dist/components/destructive-confirm-dialog.js +49 -0
- package/dist/components/dialog.d.ts +37 -0
- package/dist/components/dialog.js +92 -0
- package/dist/components/directional-icon.d.ts +30 -0
- package/dist/components/directional-icon.js +12 -0
- package/dist/components/field.d.ts +11 -0
- package/dist/components/field.js +34 -0
- package/dist/components/form.d.ts +5 -0
- package/dist/components/form.js +12 -0
- package/dist/components/frame.d.ts +10 -0
- package/dist/components/frame.js +35 -0
- package/dist/components/hex-color-picker.d.ts +11 -0
- package/dist/components/hex-color-picker.js +366 -0
- package/dist/components/input-group.d.ts +15 -0
- package/dist/components/input-group.js +53 -0
- package/dist/components/input-otp.d.ts +13 -0
- package/dist/components/input-otp.js +39 -0
- package/dist/components/input.d.ts +12 -0
- package/dist/components/input.js +46 -0
- package/dist/components/label.d.ts +5 -0
- package/dist/components/label.js +18 -0
- package/dist/components/menu.d.ts +44 -0
- package/dist/components/menu.js +152 -0
- package/dist/components/outline-rail.d.ts +39 -0
- package/dist/components/outline-rail.js +405 -0
- package/dist/components/pagination.d.ts +17 -0
- package/dist/components/pagination.js +78 -0
- package/dist/components/popover.d.ts +34 -0
- package/dist/components/popover.js +67 -0
- package/dist/components/preview-card.d.ts +12 -0
- package/dist/components/preview-card.js +25 -0
- package/dist/components/preview-pane.d.ts +23 -0
- package/dist/components/preview-pane.js +33 -0
- package/dist/components/scroll-area.d.ts +19 -0
- package/dist/components/scroll-area.js +38 -0
- package/dist/components/scroll-to-top.d.ts +12 -0
- package/dist/components/scroll-to-top.js +43 -0
- package/dist/components/secret-input.d.ts +9 -0
- package/dist/components/secret-input.js +38 -0
- package/dist/components/segmented-icon-toggle.d.ts +22 -0
- package/dist/components/segmented-icon-toggle.js +30 -0
- package/dist/components/select.d.ts +25 -0
- package/dist/components/select.js +196 -0
- package/dist/components/separator.d.ts +16 -0
- package/dist/components/separator.js +26 -0
- package/dist/components/sheet.d.ts +29 -0
- package/dist/components/sheet.js +87 -0
- package/dist/components/skeleton.d.ts +4 -0
- package/dist/components/skeleton.js +10 -0
- package/dist/components/stella-mark.d.ts +5 -0
- package/dist/components/stella-mark.js +12 -0
- package/dist/components/stella-wordmark.d.ts +5 -0
- package/dist/components/stella-wordmark.js +21 -0
- package/dist/components/table.d.ts +20 -0
- package/dist/components/table.js +80 -0
- package/dist/components/tabs.d.ts +11 -0
- package/dist/components/tabs.js +46 -0
- package/dist/components/textarea.d.ts +9 -0
- package/dist/components/textarea.js +31 -0
- package/dist/components/toast.d.ts +60 -0
- package/dist/components/toast.js +261 -0
- package/dist/components/tooltip-trigger-helper.d.ts +11 -0
- package/dist/components/tooltip-trigger-helper.js +14 -0
- package/dist/components/tooltip.d.ts +15 -0
- package/dist/components/tooltip.js +32 -0
- package/dist/hooks/use-contained-handler.d.ts +55 -0
- package/dist/hooks/use-contained-handler.js +54 -0
- package/dist/hooks/use-content-dir.d.ts +48 -0
- package/dist/hooks/use-content-dir.js +45 -0
- package/dist/hooks/use-mobile.d.ts +4 -0
- package/dist/hooks/use-mobile.js +16 -0
- package/dist/hooks/use-viewport-width.d.ts +5 -0
- package/dist/hooks/use-viewport-width.js +14 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.js +59 -0
- package/dist/inspector/chrome.d.ts +72 -0
- package/dist/inspector/chrome.js +153 -0
- package/dist/inspector/dock.d.ts +48 -0
- package/dist/inspector/dock.js +36 -0
- package/dist/inspector/index.d.ts +6 -0
- package/dist/inspector/index.js +6 -0
- package/dist/inspector/layout-tokens.d.ts +28 -0
- package/dist/inspector/layout-tokens.js +28 -0
- package/dist/inspector/pane-width.d.ts +64 -0
- package/dist/inspector/pane-width.js +53 -0
- package/dist/inspector/use-pane-width.d.ts +99 -0
- package/dist/inspector/use-pane-width.js +149 -0
- package/dist/lib/button-disposition.d.ts +63 -0
- package/dist/lib/button-disposition.js +52 -0
- package/dist/lib/overlay-layer.d.ts +22 -0
- package/dist/lib/overlay-layer.js +21 -0
- package/dist/lib/tab-order.d.ts +15 -0
- package/dist/lib/tab-order.js +15 -0
- package/dist/lib/tooltip-content.d.ts +13 -0
- package/dist/lib/tooltip-content.js +12 -0
- package/dist/lib/utils.d.ts +20 -0
- package/dist/lib/utils.js +41 -0
- package/dist/lib/week.d.ts +25 -0
- package/dist/lib/week.js +40 -0
- package/dist/styles/theme.css +1209 -0
- package/package.json +506 -2
|
@@ -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,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 };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
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 { containedEventHandler, containedHandler } from "./hooks/use-contained-handler.js";
|
|
49
|
+
import { contentDir, isStructuredInputType, useContentDir } from "./hooks/use-content-dir.js";
|
|
50
|
+
import { useIsMobile } from "./hooks/use-mobile.js";
|
|
51
|
+
import { useViewportWidth } from "./hooks/use-viewport-width.js";
|
|
52
|
+
import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
|
|
53
|
+
import { InspectorDock } from "./inspector/dock.js";
|
|
54
|
+
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";
|
|
55
|
+
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";
|
|
56
|
+
import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./inspector/use-pane-width.js";
|
|
57
|
+
import "./inspector/index.js";
|
|
58
|
+
import { cn, composeRefs } from "./lib/utils.js";
|
|
59
|
+
import { getFirstWeekday, getLocaleWeekInfo, getWeekendDays } from "./lib/week.js";
|
|
60
|
+
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, 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, Label, MenuPreviewLayout, OVERLAY_LAYER_CLASS_NAMES, 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, 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, TableFooter, TableHead, TableHeader, TableRow, 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, getFirstWeekday, getLocaleWeekInfo, getWeekendDays, isStructuredInputType, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKeyboardWidth, shouldForceSidebarCollapsed, stellaToast, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useViewportWidth };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
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 { useIsMobile } from "./hooks/use-mobile.js";
|
|
53
|
+
import { useViewportWidth } from "./hooks/use-viewport-width.js";
|
|
54
|
+
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";
|
|
55
|
+
import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
|
|
56
|
+
import { InspectorDock } from "./inspector/dock.js";
|
|
57
|
+
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";
|
|
58
|
+
import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./inspector/use-pane-width.js";
|
|
59
|
+
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, 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, getFirstWeekday, getLocaleWeekInfo, getWeekendDays, isStructuredInputType, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKeyboardWidth, shouldForceSidebarCollapsed, stellaToast, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useViewportWidth };
|
|
@@ -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 };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/inspector/dock.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Docked inspector pane: an in-flow spacer plus a fixed overlay.
|
|
5
|
+
*
|
|
6
|
+
* The spacer is what makes the content column reflow: the pane itself is
|
|
7
|
+
* `position: fixed`, so without a same-width sibling in the flow it would
|
|
8
|
+
* cover the content instead of displacing it. Keeping the pane fixed
|
|
9
|
+
* (rather than in the flow) is what lets it span the full viewport height
|
|
10
|
+
* regardless of the topbar above the content.
|
|
11
|
+
*
|
|
12
|
+
* The root carries the reserved inline size itself rather than leaving it to
|
|
13
|
+
* the spacer alone: a block-level root in a plain block host would otherwise
|
|
14
|
+
* take the full containing width and push the content column off-screen,
|
|
15
|
+
* which is exactly the failure the spacer exists to prevent. With the width
|
|
16
|
+
* on the root, the dock reserves the same footprint in a flex row, a grid
|
|
17
|
+
* track, or a plain block.
|
|
18
|
+
*/
|
|
19
|
+
type InspectorResizeHandleProps = {
|
|
20
|
+
"aria-orientation": "vertical";
|
|
21
|
+
"aria-valuemax": number;
|
|
22
|
+
"aria-valuemin": number;
|
|
23
|
+
"aria-valuenow": number;
|
|
24
|
+
onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
|
|
25
|
+
onLostPointerCapture: (event: React.PointerEvent<HTMLElement>) => void;
|
|
26
|
+
onPointerCancel: (event: React.PointerEvent<HTMLElement>) => void;
|
|
27
|
+
onPointerDown: (event: React.PointerEvent<HTMLElement>) => void;
|
|
28
|
+
onPointerMove: (event: React.PointerEvent<HTMLElement>) => void;
|
|
29
|
+
onPointerUp: (event: React.PointerEvent<HTMLElement>) => void;
|
|
30
|
+
tabIndex: number;
|
|
31
|
+
};
|
|
32
|
+
type InspectorDockProps = {
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
className?: string | undefined;
|
|
35
|
+
/** Accessible name for the drag handle. */
|
|
36
|
+
resizeHandleLabel: string;
|
|
37
|
+
/** Handlers and ARIA state from `useInspectorPaneWidth`. */
|
|
38
|
+
resizeHandleProps: InspectorResizeHandleProps;
|
|
39
|
+
/** Double-click affordance restoring the default width. */
|
|
40
|
+
onResetWidth?: (() => void) | undefined;
|
|
41
|
+
/** Whether the full pane is shown, as opposed to the bare rail. */
|
|
42
|
+
showPaneContent: boolean;
|
|
43
|
+
/** Inline size the dock reserves, in CSS pixels. */
|
|
44
|
+
width: number;
|
|
45
|
+
};
|
|
46
|
+
declare const InspectorDock: ({ children, className, onResetWidth, resizeHandleLabel, resizeHandleProps, showPaneContent, width }: InspectorDockProps) => import("react").JSX.Element;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { InspectorDock };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/inspector/dock.tsx
|
|
4
|
+
const InspectorDock = ({ children, className, onResetWidth, resizeHandleLabel, resizeHandleProps, showPaneContent, width }) => {
|
|
5
|
+
const widthPx = `${width}px`;
|
|
6
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
7
|
+
className: cn("text-sidebar-foreground hidden shrink-0 md:block", className),
|
|
8
|
+
"data-side": "inline-end",
|
|
9
|
+
"data-slot": "inspector-dock",
|
|
10
|
+
"data-state": showPaneContent ? "expanded" : "collapsed",
|
|
11
|
+
style: { width: widthPx },
|
|
12
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
13
|
+
"aria-hidden": "true",
|
|
14
|
+
className: "bg-sidebar relative w-full",
|
|
15
|
+
"data-slot": "inspector-dock-spacer"
|
|
16
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
17
|
+
className: "fixed inset-y-0 end-0 z-10 hidden h-svh md:flex",
|
|
18
|
+
"data-slot": "inspector-dock-pane",
|
|
19
|
+
style: { width: widthPx },
|
|
20
|
+
children: [showPaneContent && /* @__PURE__ */ jsx("div", {
|
|
21
|
+
"aria-label": resizeHandleLabel,
|
|
22
|
+
className: "hover:bg-border active:bg-border focus-visible:bg-primary focus-visible:outline-primary absolute inset-y-0 -start-px z-20 flex w-1 cursor-col-resize items-center justify-center border-s focus-visible:outline-2",
|
|
23
|
+
"data-slot": "inspector-resize-handle",
|
|
24
|
+
role: "separator",
|
|
25
|
+
...resizeHandleProps,
|
|
26
|
+
tabIndex: 0,
|
|
27
|
+
onDoubleClick: onResetWidth
|
|
28
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
29
|
+
className: "bg-sidebar flex h-full w-full flex-col",
|
|
30
|
+
children
|
|
31
|
+
})]
|
|
32
|
+
})]
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
//#endregion
|
|
36
|
+
export { InspectorDock };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./chrome.js";
|
|
2
|
+
import { InspectorDock } from "./dock.js";
|
|
3
|
+
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 "./layout-tokens.js";
|
|
4
|
+
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 "./pane-width.js";
|
|
5
|
+
import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./use-pane-width.js";
|
|
6
|
+
export { 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, Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorDock, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle, 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, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKeyboardWidth, shouldForceSidebarCollapsed, useInspectorPaneWidth };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
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 "./layout-tokens.js";
|
|
2
|
+
import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./chrome.js";
|
|
3
|
+
import { InspectorDock } from "./dock.js";
|
|
4
|
+
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 "./pane-width.js";
|
|
5
|
+
import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./use-pane-width.js";
|
|
6
|
+
export { 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, Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorDock, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle, 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, parsePersistedPaneWidth, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKeyboardWidth, shouldForceSidebarCollapsed, useInspectorPaneWidth };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/inspector/layout-tokens.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Layout constants the inspector chrome is built from.
|
|
4
|
+
*
|
|
5
|
+
* The rail's cells, the header strip, and the property rows all share one
|
|
6
|
+
* height, so a pane assembled from these parts keeps a single vertical
|
|
7
|
+
* rhythm no matter which of them a section happens to use.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Every inspector row, header strip, and rail cell is exactly this tall.
|
|
11
|
+
* A *fixed* height, not a minimum: rows that grow with their content break
|
|
12
|
+
* the vertical rhythm the rail's 48px cells establish, and a list of
|
|
13
|
+
* key/value rows stops scanning as a list once the rows differ in height.
|
|
14
|
+
*/
|
|
15
|
+
declare const TOOLBAR_ROW_HEIGHT: "h-12";
|
|
16
|
+
declare const TOOLBAR_ROW_HEIGHT_PX: 48;
|
|
17
|
+
declare const SIDE_RAIL_WIDTH: "w-12";
|
|
18
|
+
/**
|
|
19
|
+
* Borders sit on both inline edges of the rail box so the total footprint
|
|
20
|
+
* stays exactly 48px under `border-box`.
|
|
21
|
+
*/
|
|
22
|
+
declare const SIDE_RAIL_CONTAINER_CLASS: "bg-sidebar flex shrink-0 flex-col border-s border-e w-12";
|
|
23
|
+
declare const SIDE_RAIL_ICON_BUTTON_SIZE: "size-8";
|
|
24
|
+
declare const SIDE_RAIL_TAB_ICON_SIZE: "size-3.5";
|
|
25
|
+
/** Two-column grid the key/value rows share. */
|
|
26
|
+
declare const PROPERTY_ROW_GRID: "grid-cols-[8rem_minmax(0,1fr)]";
|
|
27
|
+
//#endregion
|
|
28
|
+
export { 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 };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/inspector/layout-tokens.ts
|
|
2
|
+
/**
|
|
3
|
+
* Layout constants the inspector chrome is built from.
|
|
4
|
+
*
|
|
5
|
+
* The rail's cells, the header strip, and the property rows all share one
|
|
6
|
+
* height, so a pane assembled from these parts keeps a single vertical
|
|
7
|
+
* rhythm no matter which of them a section happens to use.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Every inspector row, header strip, and rail cell is exactly this tall.
|
|
11
|
+
* A *fixed* height, not a minimum: rows that grow with their content break
|
|
12
|
+
* the vertical rhythm the rail's 48px cells establish, and a list of
|
|
13
|
+
* key/value rows stops scanning as a list once the rows differ in height.
|
|
14
|
+
*/
|
|
15
|
+
const TOOLBAR_ROW_HEIGHT = "h-12";
|
|
16
|
+
const TOOLBAR_ROW_HEIGHT_PX = 48;
|
|
17
|
+
const SIDE_RAIL_WIDTH = "w-12";
|
|
18
|
+
/**
|
|
19
|
+
* Borders sit on both inline edges of the rail box so the total footprint
|
|
20
|
+
* stays exactly 48px under `border-box`.
|
|
21
|
+
*/
|
|
22
|
+
const SIDE_RAIL_CONTAINER_CLASS = `bg-sidebar flex shrink-0 flex-col border-s border-e ${SIDE_RAIL_WIDTH}`;
|
|
23
|
+
const SIDE_RAIL_ICON_BUTTON_SIZE = "size-8";
|
|
24
|
+
const SIDE_RAIL_TAB_ICON_SIZE = "size-3.5";
|
|
25
|
+
/** Two-column grid the key/value rows share. */
|
|
26
|
+
const PROPERTY_ROW_GRID = "grid-cols-[8rem_minmax(0,1fr)]";
|
|
27
|
+
//#endregion
|
|
28
|
+
export { 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 };
|