@stll/ui 0.9.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +90 -15
  2. package/dist/components/breadcrumb.d.ts +1 -1
  3. package/dist/components/button-variants.d.ts +2 -2
  4. package/dist/components/button.d.ts +1 -1
  5. package/dist/components/combobox.js +1 -1
  6. package/dist/components/command.d.ts +1 -1
  7. package/dist/components/command.js +1 -1
  8. package/dist/components/date-picker-popover.js +1 -1
  9. package/dist/components/input-group.d.ts +1 -1
  10. package/dist/components/pagination.d.ts +1 -1
  11. package/dist/components/pagination.js +1 -1
  12. package/dist/components/select.d.ts +1 -1
  13. package/dist/components/select.js +8 -10
  14. package/dist/components/workspace-shell.d.ts +77 -0
  15. package/dist/components/workspace-shell.js +106 -0
  16. package/dist/index.d.ts +7 -6
  17. package/dist/index.js +11 -10
  18. package/dist/inspector/chrome.d.ts +5 -1
  19. package/dist/inspector/chrome.js +14 -2
  20. package/dist/inspector/index.d.ts +2 -2
  21. package/dist/inspector/index.js +2 -2
  22. package/dist/inspector/layout-tokens.d.ts +5 -1
  23. package/dist/inspector/layout-tokens.js +5 -1
  24. package/dist/kanban/grouping.d.ts +17 -17
  25. package/dist/kanban/index.d.ts +4 -3
  26. package/dist/kanban/index.js +3 -2
  27. package/dist/kanban/matrix.d.ts +15 -15
  28. package/dist/kanban/sortable-interactions.d.ts +75 -13
  29. package/dist/kanban/sortable-interactions.js +345 -28
  30. package/dist/kanban/sortable-interactions.logic.d.ts +79 -0
  31. package/dist/kanban/sortable-interactions.logic.js +205 -0
  32. package/dist/kanban/virtual-cell.d.ts +19 -2
  33. package/dist/kanban/virtual-cell.js +53 -7
  34. package/dist/lib/control-size.d.ts +1 -1
  35. package/dist/lib/overlay-layer.d.ts +2 -1
  36. package/dist/lib/overlay-layer.js +2 -1
  37. package/dist/review/review-comment-card.js +1 -1
  38. package/package.json +7 -7
  39. package/dist/components/application-shell.d.ts +0 -27
  40. package/dist/components/application-shell.js +0 -25
package/dist/index.js CHANGED
@@ -2,24 +2,27 @@ import { cn, composeRefs } from "./lib/utils.js";
2
2
  import { Accordion, AccordionContent as AccordionPanel, AccordionItem, AccordionTrigger } from "./components/accordion.js";
3
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 "./inspector/layout-tokens.js";
4
4
  import { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator } from "./components/application-rail.js";
5
- import { OVERLAY_LAYER_CLASS_NAMES } from "./lib/overlay-layer.js";
5
+ import { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_LAYER_CLASS_NAMES } from "./lib/overlay-layer.js";
6
6
  import { Tooltip, TooltipContent as TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger } from "./components/tooltip.js";
7
7
  import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
8
- import { ApplicationShell } from "./components/application-shell.js";
8
+ import { useIsMobile } from "./hooks/use-mobile.js";
9
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
10
+ import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button-variants.js";
11
+ import { Button } from "./components/button.js";
12
+ import { ScrollArea, ScrollBar } from "./components/scroll-area.js";
13
+ import { Sheet, SheetBackdrop, SheetClose, SheetContent as SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, SheetTitle, SheetTrigger } from "./components/sheet.js";
14
+ import { WorkspaceEndRail, WorkspaceShell } from "./components/workspace-shell.js";
9
15
  import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
10
16
  import { BidiText, UserText } from "./components/bidi-text.js";
11
17
  import { DiscordLogoIcon, GitHubLogoIcon } from "./components/brand-icons.js";
12
18
  import { DirectionalIcon } from "./components/directional-icon.js";
13
19
  import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./components/breadcrumb.js";
14
- import { buttonAccessibleDisabledClass, buttonVariants } from "./components/button-variants.js";
15
- import { Button } from "./components/button.js";
16
20
  import { Checkbox } from "./components/checkbox.js";
17
21
  import { ColorPicker, ColorPickerContent, DEFAULT_PRESETS } from "./components/color-picker.js";
18
22
  import { containedEventHandler, containedHandler } from "./hooks/use-contained-handler.js";
19
23
  import { CONTROL_SIZE, CONTROL_SIZES } from "./lib/control-size.js";
20
24
  import { contentDir, isStructuredInputType, useContentDir } from "./hooks/use-content-dir.js";
21
25
  import { Input } from "./components/input.js";
22
- import { ScrollArea, ScrollBar } from "./components/scroll-area.js";
23
26
  import { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, useComboboxFilter } from "./components/combobox.js";
24
27
  import { Dialog, DialogBackdrop, DialogClose, DialogContent as DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport } from "./components/dialog.js";
25
28
  import { Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut } from "./components/command.js";
@@ -50,7 +53,6 @@ import { SecretInput } from "./components/secret-input.js";
50
53
  import { SegmentedIconToggle } from "./components/segmented-icon-toggle.js";
51
54
  import { Select, SelectContent as SelectPopup, SelectGroup, SelectGroupLabel, SelectItem, SelectSeparator, SelectTrigger, SelectValue } from "./components/select.js";
52
55
  import { Separator, TextSeparator } from "./components/separator.js";
53
- import { Sheet, SheetBackdrop, SheetClose, SheetContent as SheetPopup, SheetDescription, SheetFooter, SheetHeader, SheetPanel, SheetPortal, SheetTitle, SheetTrigger } from "./components/sheet.js";
54
56
  import { Skeleton } from "./components/skeleton.js";
55
57
  import { StellaMark } from "./components/stella-mark.js";
56
58
  import { StellaWordmarkLatin } from "./components/stella-wordmark.js";
@@ -59,9 +61,7 @@ import { Tabs, TabsContent as TabsPanel, TabsList, TabsTab } from "./components/
59
61
  import { AnchoredToastProvider, TOAST_RIGHT_OFFSET_VAR, ToastProvider, stellaToast } from "./components/toast.js";
60
62
  import { duplicateColumnIds, findTableColumn, hideableColumnIds, sortableColumnIds, tableColumnIds, tableColumnSizing, visibleColumnIds } from "./data-table/schema.js";
61
63
  import { DataTable } from "./data-table/table.js";
62
- import { useIsMobile } from "./hooks/use-mobile.js";
63
64
  import { useViewportWidth } from "./hooks/use-viewport-width.js";
64
- import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./inspector/chrome.js";
65
65
  import { InspectorDock } from "./inspector/dock.js";
66
66
  import { InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs } from "./inspector/tabs.js";
67
67
  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";
@@ -69,7 +69,8 @@ import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parseP
69
69
  import { selectKanbanCardFieldIds } from "./kanban/card-properties.js";
70
70
  import { KanbanCardShell } from "./kanban/card-shell.js";
71
71
  import { KanbanColumnHeader } from "./kanban/column-header.js";
72
- import { KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, useKanbanSortable, useKanbanSortableSensors } from "./kanban/sortable-interactions.js";
72
+ import { KANBAN_BOARD_COLLISION_DETECTION, kanbanKeyboardCoordinates } from "./kanban/sortable-interactions.logic.js";
73
+ import { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors } from "./kanban/sortable-interactions.js";
73
74
  import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, getKanbanHorizontalEdge } from "./kanban/sortable-edge.js";
74
75
  import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./kanban/drag-interactions.js";
75
76
  import { getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./kanban/grouping.js";
@@ -85,4 +86,4 @@ import { ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffText, TRACKED_DELETI
85
86
  import { ReviewOutOfDateNotice } from "./review/review-out-of-date-notice.js";
86
87
  import { ReviewSeverityDot, ReviewStatusDot, reviewSeverityTone } from "./review/review-severity-dot.js";
87
88
  import { ReviewStatusBadge } from "./review/review-status-badge.js";
88
- export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, ApplicationShell, Avatar, AvatarFallback, AvatarImage, BidiText, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, 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, DataTable, 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, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardShell, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, 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, ResourceCalendar, ReviewAuthorAvatar, ReviewCommentCard, ReviewDecisionActions, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffText, ReviewOutOfDateNotice, ReviewSeverityDot, ReviewStatusBadge, ReviewStatusDot, 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, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, 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, UNKNOWN_AUTHOR_LABEL, UserText, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getInitials, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanSortable, useKanbanSortableSensors, useLatest, useViewportWidth, visibleColumnIds };
89
+ export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, Avatar, AvatarFallback, AvatarImage, BOARD_DRAG_OVERLAY_Z_INDEX, BidiText, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, 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, DataTable, 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, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, 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, ResourceCalendar, ReviewAuthorAvatar, ReviewCommentCard, ReviewDecisionActions, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffText, ReviewOutOfDateNotice, ReviewSeverityDot, ReviewStatusBadge, ReviewStatusDot, 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, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, 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, UNKNOWN_AUTHOR_LABEL, UserText, WorkspaceEndRail, WorkspaceShell, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, findTableColumn, getFirstWeekday, getInitials, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useViewportWidth, visibleColumnIds };
@@ -29,6 +29,10 @@ declare const Inspector: ({ className, ...props }: React$1.ComponentProps<"aside
29
29
  declare const InspectorRail: ({ className, ...props }: React$1.ComponentProps<"nav">) => React$1.JSX.Element;
30
30
  /** A rail cell: same height as every header strip and property row. */
31
31
  declare const InspectorRailCell: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
32
+ /** Scroll owner for rail tabs and other middle actions. */
33
+ declare const InspectorRailContent: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
34
+ /** Permanent inline-end action row, normally the new-chat affordance. */
35
+ declare const InspectorRailFooter: ({ className, ...props }: React$1.ComponentProps<"div">) => React$1.JSX.Element;
32
36
  declare const InspectorRailIconButton: ({ className, ...props }: React$1.ComponentProps<"button">) => React$1.JSX.Element;
33
37
  /**
34
38
  * A rail tab: one full-width row, bordered like every other rail cell, so
@@ -70,4 +74,4 @@ declare const InspectorPropertyValue: ({ className, ...props }: React$1.Componen
70
74
  /** Row-height empty state, so an empty list keeps the list's rhythm. */
71
75
  declare const InspectorEmptyRow: ({ className, ...props }: React$1.ComponentProps<"p">) => React$1.JSX.Element;
72
76
  //#endregion
73
- export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };
77
+ export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };
@@ -43,8 +43,20 @@ const InspectorRailCell = ({ className, ...props }) => /* @__PURE__ */ jsx("div"
43
43
  "data-slot": "inspector-rail-cell",
44
44
  ...props
45
45
  });
46
+ /** Scroll owner for rail tabs and other middle actions. */
47
+ const InspectorRailContent = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
48
+ className: cn("flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto overscroll-contain", className),
49
+ "data-slot": "inspector-rail-content",
50
+ ...props
51
+ });
52
+ /** Permanent inline-end action row, normally the new-chat affordance. */
53
+ const InspectorRailFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
54
+ className: cn("flex w-full shrink-0 items-center justify-center border-t", TOOLBAR_ROW_HEIGHT, className),
55
+ "data-slot": "inspector-rail-footer",
56
+ ...props
57
+ });
46
58
  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),
59
+ className: cn("text-muted-foreground hover:bg-accent hover:text-foreground flex items-center justify-center rounded-md outline-hidden transition-colors focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50", SIDE_RAIL_ICON_BUTTON_SIZE, className),
48
60
  "data-slot": "inspector-rail-icon-button",
49
61
  type: "button",
50
62
  ...props
@@ -151,4 +163,4 @@ const InspectorEmptyRow = ({ className, ...props }) => /* @__PURE__ */ jsx("p",
151
163
  ...props
152
164
  });
153
165
  //#endregion
154
- export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };
166
+ export { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle };
@@ -1,7 +1,7 @@
1
- import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./chrome.js";
1
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./chrome.js";
2
2
  import { InspectorDock } from "./dock.js";
3
3
  import { InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs } from "./tabs.js";
4
4
  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";
5
5
  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";
6
6
  import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./use-pane-width.js";
7
- 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, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, 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 };
7
+ 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, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, 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 };
@@ -1,7 +1,7 @@
1
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";
2
+ import { Inspector, InspectorActions, InspectorContent, InspectorDescription, InspectorEmptyRow, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTitle } from "./chrome.js";
3
3
  import { InspectorDock } from "./dock.js";
4
4
  import { InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs } from "./tabs.js";
5
5
  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";
6
6
  import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth } from "./use-pane-width.js";
7
- 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, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, 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 };
7
+ 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, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, 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 };
@@ -20,7 +20,11 @@ declare const SIDE_RAIL_WIDTH: "w-12";
20
20
  * stays exactly 48px under `border-box`.
21
21
  */
22
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";
23
+ /**
24
+ * Rail actions fill a 44px touch target inside the 48px row. The glyph stays
25
+ * visually compact; only the interactive surface grows.
26
+ */
27
+ declare const SIDE_RAIL_ICON_BUTTON_SIZE: "size-11";
24
28
  declare const SIDE_RAIL_TAB_ICON_SIZE: "size-3.5";
25
29
  /** Two-column grid the key/value rows share. */
26
30
  declare const PROPERTY_ROW_GRID: "grid-cols-[8rem_minmax(0,1fr)]";
@@ -20,7 +20,11 @@ const SIDE_RAIL_WIDTH = "w-12";
20
20
  * stays exactly 48px under `border-box`.
21
21
  */
22
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";
23
+ /**
24
+ * Rail actions fill a 44px touch target inside the 48px row. The glyph stays
25
+ * visually compact; only the interactive surface grows.
26
+ */
27
+ const SIDE_RAIL_ICON_BUTTON_SIZE = "size-11";
24
28
  const SIDE_RAIL_TAB_ICON_SIZE = "size-3.5";
25
29
  /** Two-column grid the key/value rows share. */
26
30
  const PROPERTY_ROW_GRID = "grid-cols-[8rem_minmax(0,1fr)]";
@@ -25,9 +25,9 @@ type KanbanGroup = {
25
25
  * built-in grouping is a data declaration rather than a branch this module has
26
26
  * to know about.
27
27
  */
28
- type KanbanBuiltInGroup<TRow> = {
28
+ type KanbanBuiltInGroup<TRow, TGroupId extends string = string> = {
29
29
  /** Reserved group id, distinct from any property id. */
30
- id: string;
30
+ id: TGroupId;
31
31
  /** Ordered columns, without the uncategorized bucket. */
32
32
  options: readonly KanbanGroupOption[];
33
33
  /**
@@ -43,43 +43,43 @@ type KanbanBuiltInGroup<TRow> = {
43
43
  * which keeps the decision — and the property model it depends on — with the
44
44
  * caller.
45
45
  */
46
- type KanbanSchema<TRow, TProperty> = {
47
- builtInGroups: readonly KanbanBuiltInGroup<TRow>[];
46
+ type KanbanSchema<TRow, TProperty, TGroupId extends string = string> = {
47
+ builtInGroups: readonly KanbanBuiltInGroup<TRow, TGroupId>[];
48
48
  properties: readonly TProperty[];
49
- getPropertyId: (property: TProperty) => string;
49
+ getPropertyId: (property: TProperty) => TGroupId;
50
50
  getPropertyOptions: (property: TProperty) => readonly KanbanGroupOption[] | null;
51
51
  };
52
- type KanbanGrouping<TRow, TProperty> = {
52
+ type KanbanGrouping<TRow, TProperty, TGroupId extends string = string> = {
53
53
  type: "none";
54
54
  } | {
55
55
  type: "built-in";
56
- propertyId: string;
57
- group: KanbanBuiltInGroup<TRow>;
56
+ propertyId: TGroupId;
57
+ group: KanbanBuiltInGroup<TRow, TGroupId>;
58
58
  } | {
59
59
  type: "property";
60
- propertyId: string;
60
+ propertyId: TGroupId;
61
61
  property: TProperty;
62
62
  options: readonly KanbanGroupOption[];
63
63
  };
64
- type ResolveKanbanGroupingParams<TRow, TProperty> = {
64
+ type ResolveKanbanGroupingParams<TRow, TProperty, TGroupId extends string = string> = {
65
65
  /** The group-by id the view carries; empty means no grouping. */
66
- groupBy: string;
67
- schema: KanbanSchema<TRow, TProperty>;
66
+ groupBy: TGroupId | "";
67
+ schema: KanbanSchema<TRow, TProperty, TGroupId>;
68
68
  };
69
69
  /** Resolve a stored group-by id against a schema. */
70
- declare const resolveKanbanGrouping: <TRow, TProperty>({ groupBy, schema }: ResolveKanbanGroupingParams<TRow, TProperty>) => KanbanGrouping<TRow, TProperty>;
71
- declare const getKanbanGroupingPropertyId: <TRow, TProperty>(grouping: KanbanGrouping<TRow, TProperty>) => string | null;
70
+ declare const resolveKanbanGrouping: <TRow, TProperty, TGroupId extends string = string>({ groupBy, schema }: ResolveKanbanGroupingParams<TRow, TProperty, TGroupId>) => KanbanGrouping<TRow, TProperty, TGroupId>;
71
+ declare const getKanbanGroupingPropertyId: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TGroupId | null;
72
72
  /**
73
73
  * A grouping with no columns is not a board. A built-in grouping declares its
74
74
  * columns up front, so an empty declaration is the signal that the board cannot
75
75
  * be drawn; a property grouping always draws, even when the property has no
76
76
  * options yet, because rows still land in the uncategorized bucket.
77
77
  */
78
- declare const isKanbanGroupingRenderable: <TRow, TProperty>(grouping: KanbanGrouping<TRow, TProperty>) => boolean;
78
+ declare const isKanbanGroupingRenderable: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => boolean;
79
79
  /** The rows a grouping can place on the board, in their incoming order. */
80
- declare const selectKanbanRows: <TRow, TProperty>(rows: readonly TRow[], grouping: KanbanGrouping<TRow, TProperty>) => TRow[];
80
+ declare const selectKanbanRows: <TRow, TProperty, TGroupId extends string = string>(rows: readonly TRow[], grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TRow[];
81
81
  /** The static column options for a grouping, excluding uncategorized. */
82
- declare const resolveKanbanGroupOptions: <TRow, TProperty>(grouping: KanbanGrouping<TRow, TProperty>) => readonly KanbanGroupOption[];
82
+ declare const resolveKanbanGroupOptions: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => readonly KanbanGroupOption[];
83
83
  /** Append the uncategorized bucket (null value) after the options. */
84
84
  declare const getKanbanGroups: (options: readonly KanbanGroupOption[], uncategorizedLabel: string) => KanbanGroup[];
85
85
  //#endregion
@@ -1,11 +1,12 @@
1
1
  import { KanbanCardFieldSelection, selectKanbanCardFieldIds } from "./card-properties.js";
2
2
  import { KanbanCardShell, KanbanCardShellProps } from "./card-shell.js";
3
3
  import { KanbanColumnHeader, KanbanColumnHeaderProps } from "./column-header.js";
4
- import { KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanDragHandle, KanbanDragHandleProps, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanSortableOptions, useKanbanSortable, useKanbanSortableSensors } from "./sortable-interactions.js";
4
+ import { KANBAN_BOARD_COLLISION_DETECTION, KanbanCellVirtualNavigation, KanbanSortableCellPosition, KanbanVirtualScrollRequest, kanbanKeyboardCoordinates } from "./sortable-interactions.logic.js";
5
+ import { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanCardDragSurfaceProps, KanbanDragCancelEvent, KanbanDragEndEvent, KanbanDragHandle, KanbanDragHandleProps, KanbanDragOverEvent, KanbanDragStartEvent, KanbanSortableActivationMode, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanDropTargetOptions, UseKanbanSortableOptions, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors } from "./sortable-interactions.js";
5
6
  import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KanbanDirection, KanbanHorizontalEdge, getKanbanHorizontalEdge } from "./sortable-edge.js";
6
7
  import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./drag-interactions.js";
7
8
  import { KanbanBuiltInGroup, KanbanGroup, KanbanGroupOption, KanbanGrouping, KanbanSchema, ResolveKanbanGroupingParams, getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./grouping.js";
8
9
  import { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOARD_AXES, KanbanBoardAxis, KanbanBoardCell, KanbanBoardCoordinate, KanbanBoardLane, KanbanBoardMatrix, KanbanDropAxisChange, KanbanDropIntent, OrderKanbanCellsByColumnsParams, ResolveKanbanGroupValueParams, buildKanbanBoardMatrix, createKanbanDropIntent, orderKanbanCellsByColumns } from "./matrix.js";
9
10
  import { KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneIdentityContext } from "./subgroup-board.js";
10
- import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps } from "./virtual-cell.js";
11
- export { type BuildKanbanBoardMatrixParams, type CreateKanbanDropIntentParams, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardCoordinate, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDirection, KanbanDragHandle, type KanbanDragHandleProps, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanHorizontalEdge, type KanbanSchema, type KanbanSortableBindings, KanbanSortableBoard, type KanbanSortableBoardProps, KanbanSortableColumns, type KanbanSortableColumnsProps, KanbanSortableList, type KanbanSortableListProps, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type OrderKanbanCellsByColumnsParams, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, type UseKanbanSortableOptions, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, isKanbanGroupingRenderable, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanSortable, useKanbanSortableSensors };
11
+ import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps, KanbanVirtualCellSortableContext } from "./virtual-cell.js";
12
+ export { type BuildKanbanBoardMatrixParams, type CreateKanbanDropIntentParams, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardCoordinate, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, type KanbanCellVirtualNavigation, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDirection, type KanbanDragCancelEvent, type KanbanDragEndEvent, KanbanDragHandle, type KanbanDragHandleProps, type KanbanDragOverEvent, type KanbanDragStartEvent, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanHorizontalEdge, type KanbanSchema, type KanbanSortableActivationMode, type KanbanSortableBindings, KanbanSortableBoard, type KanbanSortableBoardProps, type KanbanSortableCellPosition, KanbanSortableColumns, type KanbanSortableColumnsProps, KanbanSortableList, type KanbanSortableListProps, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type KanbanVirtualCellSortableContext, type KanbanVirtualScrollRequest, type OrderKanbanCellsByColumnsParams, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, type UseKanbanDropTargetOptions, type UseKanbanSortableOptions, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
@@ -1,11 +1,12 @@
1
1
  import { selectKanbanCardFieldIds } from "./card-properties.js";
2
2
  import { KanbanCardShell } from "./card-shell.js";
3
3
  import { KanbanColumnHeader } from "./column-header.js";
4
- import { KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, useKanbanSortable, useKanbanSortableSensors } from "./sortable-interactions.js";
4
+ import { KANBAN_BOARD_COLLISION_DETECTION, kanbanKeyboardCoordinates } from "./sortable-interactions.logic.js";
5
+ import { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors } from "./sortable-interactions.js";
5
6
  import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, getKanbanHorizontalEdge } from "./sortable-edge.js";
6
7
  import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./drag-interactions.js";
7
8
  import { getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./grouping.js";
8
9
  import { KANBAN_BOARD_AXES, buildKanbanBoardMatrix, createKanbanDropIntent, orderKanbanCellsByColumns } from "./matrix.js";
9
10
  import { KanbanSubgroupBoard } from "./subgroup-board.js";
10
11
  import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell } from "./virtual-cell.js";
11
- export { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardShell, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, isKanbanGroupingRenderable, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanSortable, useKanbanSortableSensors };
12
+ export { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
@@ -32,18 +32,18 @@ type KanbanBoardMatrix<TRow> = {
32
32
  lanes: KanbanBoardLane[];
33
33
  rows: TRow[];
34
34
  };
35
- type ResolveKanbanGroupValueParams<TRow, TProperty> = {
36
- grouping: KanbanGrouping<TRow, TProperty>;
35
+ type ResolveKanbanGroupValueParams<TRow, TProperty, TGroupId extends string = string> = {
36
+ grouping: KanbanGrouping<TRow, TProperty, TGroupId>;
37
37
  row: TRow;
38
38
  };
39
- type BuildKanbanBoardMatrixParams<TRow, TProperty> = {
39
+ type BuildKanbanBoardMatrixParams<TRow, TProperty, TGroupId extends string = string> = {
40
40
  /** The vertical board columns. This must be a renderable grouping. */
41
- group: KanbanGrouping<TRow, TProperty>;
41
+ group: KanbanGrouping<TRow, TProperty, TGroupId>;
42
42
  /** Optional horizontal swimlanes. `none` makes this a one-lane board. */
43
- subgroup: KanbanGrouping<TRow, TProperty>;
43
+ subgroup: KanbanGrouping<TRow, TProperty, TGroupId>;
44
44
  rows: readonly TRow[];
45
45
  uncategorizedLabel: string;
46
- resolveGroupValue: (params: ResolveKanbanGroupValueParams<TRow, TProperty>) => string | null;
46
+ resolveGroupValue: (params: ResolveKanbanGroupValueParams<TRow, TProperty, TGroupId>) => string | null;
47
47
  };
48
48
  type OrderKanbanCellsByColumnsParams<TRow> = {
49
49
  cells: readonly KanbanBoardCell<TRow>[];
@@ -57,22 +57,22 @@ declare const orderKanbanCellsByColumns: <TRow>({ cells, columns }: OrderKanbanC
57
57
  * A subgroup never filters the primary board scope. A row outside a subgroup's
58
58
  * declared values goes to its explicit No value lane, rather than disappearing.
59
59
  */
60
- declare const buildKanbanBoardMatrix: <TRow, TProperty>({ group, subgroup, rows, uncategorizedLabel, resolveGroupValue }: BuildKanbanBoardMatrixParams<TRow, TProperty>) => KanbanBoardMatrix<TRow>;
61
- type KanbanDropAxisChange = {
62
- groupBy: string;
60
+ declare const buildKanbanBoardMatrix: <TRow, TProperty, TGroupId extends string = string>({ group, subgroup, rows, uncategorizedLabel, resolveGroupValue }: BuildKanbanBoardMatrixParams<TRow, TProperty, TGroupId>) => KanbanBoardMatrix<TRow>;
61
+ type KanbanDropAxisChange<TGroupId extends string = string> = {
62
+ groupBy: TGroupId;
63
63
  value: string | null;
64
64
  };
65
65
  /** A complete, atomic move request for a domain mutation adapter. */
66
- type KanbanDropIntent<TCardId> = {
66
+ type KanbanDropIntent<TCardId, TGroupId extends string = string> = {
67
67
  cardId: TCardId;
68
- changes: readonly KanbanDropAxisChange[];
68
+ changes: readonly KanbanDropAxisChange<TGroupId>[];
69
69
  type: "move";
70
70
  };
71
- type CreateKanbanDropIntentParams<TRow, TProperty, TCardId> = {
71
+ type CreateKanbanDropIntentParams<TRow, TProperty, TCardId, TGroupId extends string = string> = {
72
72
  cardId: TCardId;
73
- group: KanbanGrouping<TRow, TProperty>;
73
+ group: KanbanGrouping<TRow, TProperty, TGroupId>;
74
74
  source: KanbanBoardCoordinate;
75
- subgroup: KanbanGrouping<TRow, TProperty>;
75
+ subgroup: KanbanGrouping<TRow, TProperty, TGroupId>;
76
76
  target: KanbanBoardCoordinate;
77
77
  };
78
78
  /**
@@ -80,6 +80,6 @@ type CreateKanbanDropIntentParams<TRow, TProperty, TCardId> = {
80
80
  * Diagonal drops carry both changes together; an adapter must commit this
81
81
  * intent atomically or reject it as a whole.
82
82
  */
83
- declare const createKanbanDropIntent: <TRow, TProperty, TCardId>({ cardId, group, source, subgroup, target }: CreateKanbanDropIntentParams<TRow, TProperty, TCardId>) => KanbanDropIntent<TCardId> | null;
83
+ declare const createKanbanDropIntent: <TRow, TProperty, TCardId, TGroupId extends string = string>({ cardId, group, source, subgroup, target }: CreateKanbanDropIntentParams<TRow, TProperty, TCardId, TGroupId>) => KanbanDropIntent<TCardId, TGroupId> | null;
84
84
  //#endregion
85
85
  export { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOARD_AXES, KanbanBoardAxis, KanbanBoardCell, KanbanBoardCoordinate, KanbanBoardLane, KanbanBoardMatrix, KanbanDropAxisChange, KanbanDropIntent, OrderKanbanCellsByColumnsParams, ResolveKanbanGroupValueParams, buildKanbanBoardMatrix, createKanbanDropIntent, orderKanbanCellsByColumns };
@@ -1,16 +1,36 @@
1
1
  import { Button } from "../components/button.js";
2
+ import { KANBAN_BOARD_COLLISION_DETECTION, KanbanCellVirtualNavigation, KanbanSortableCellPosition, KanbanVirtualScrollRequest, kanbanKeyboardCoordinates } from "./sortable-interactions.logic.js";
2
3
  import * as React$1 from "react";
3
- import { AutoScrollOptions, CollisionDetection, DndContextProps, DragCancelEvent, DragEndEvent, DragOverlayProps, DragStartEvent, KeyboardCoordinateGetter, UniqueIdentifier } from "@dnd-kit/core";
4
+ import { AutoScrollActivator, AutoScrollOptions, CollisionDetection, DndContextProps, DragCancelEvent, DragEndEvent, DragOverEvent, DragOverlayProps, DragStartEvent, KeyboardCoordinateGetter, UniqueIdentifier } from "@dnd-kit/core";
4
5
  import { SortableContextProps, useSortable } from "@dnd-kit/sortable";
5
6
  //#region src/kanban/sortable-interactions.d.ts
6
7
  declare const KANBAN_MOUSE_ACTIVATION_DISTANCE = 8;
8
+ /** Above sticky board chrome, below app-level floating surfaces. */
9
+ declare const KANBAN_DRAG_OVERLAY_Z_INDEX = 75;
10
+ declare const KANBAN_BOARD_AUTO_SCROLL_OPTIONS: {
11
+ readonly acceleration: 10;
12
+ readonly activator: AutoScrollActivator.Pointer;
13
+ readonly threshold: {
14
+ readonly x: 0.15;
15
+ readonly y: 0.15;
16
+ };
17
+ };
18
+ declare const KANBAN_SORTABLE_ACTIVATION_MODES: {
19
+ readonly CARD: "card";
20
+ readonly HANDLE: "handle";
21
+ readonly ITEM: "item";
22
+ };
7
23
  declare const KANBAN_TOUCH_ACTIVATION_CONSTRAINT: {
8
24
  readonly delay: 150;
9
25
  readonly tolerance: 8;
10
26
  };
27
+ type KanbanDragCancelEvent = DragCancelEvent;
28
+ type KanbanDragEndEvent = DragEndEvent;
29
+ type KanbanDragOverEvent = DragOverEvent;
30
+ type KanbanDragStartEvent = DragStartEvent;
11
31
  type KanbanSortableBoardProps = {
12
32
  children: React$1.ReactNode;
13
- onDragEnd: (event: DragEndEvent) => void;
33
+ onDragEnd: (event: KanbanDragEndEvent) => void;
14
34
  collisionDetection?: CollisionDetection | undefined;
15
35
  keyboardCoordinates?: KeyboardCoordinateGetter | undefined;
16
36
  autoScroll?: boolean | AutoScrollOptions | undefined;
@@ -18,12 +38,33 @@ type KanbanSortableBoardProps = {
18
38
  sensors?: DndContextProps["sensors"] | undefined;
19
39
  /** Overrides dnd-kit's screen-reader announcements when supplied. */
20
40
  accessibility?: DndContextProps["accessibility"] | undefined;
21
- onDragStart?: ((event: DragStartEvent) => void) | undefined;
22
- onDragCancel?: ((event: DragCancelEvent) => void) | undefined;
41
+ onDragStart?: ((event: KanbanDragStartEvent) => void) | undefined;
42
+ onDragOver?: ((event: KanbanDragOverEvent) => void) | undefined;
43
+ onDragCancel?: ((event: KanbanDragCancelEvent) => void) | undefined;
44
+ /** Called once mounted child drop targets can safely receive input. */
45
+ onInteractionReady?: (() => void) | undefined;
23
46
  /** Rendered in document.body while an item is active. */
24
47
  overlay?: ((activeId: UniqueIdentifier | null) => React$1.ReactNode) | undefined;
25
48
  overlayProps?: Omit<DragOverlayProps, "children"> | undefined;
26
49
  };
50
+ type UseKanbanDropTargetOptions = {
51
+ disabled?: boolean | undefined;
52
+ id: string;
53
+ itemIds: readonly UniqueIdentifier[];
54
+ navigation: KanbanCellVirtualNavigation;
55
+ position: KanbanSortableCellPosition;
56
+ };
57
+ /**
58
+ * Register a board-level drop target such as an empty cell or terminal lane.
59
+ *
60
+ * Board consumers should not need to couple their presentation code to the
61
+ * underlying drag-and-drop library just to receive an item from a sortable
62
+ * context.
63
+ */
64
+ declare const useKanbanDropTarget: ({ disabled, id, itemIds, navigation, position }: UseKanbanDropTargetOptions) => {
65
+ isOver: boolean;
66
+ setNodeRef: (element: HTMLElement | null) => void;
67
+ };
27
68
  /**
28
69
  * Input-complete drag context for sortable boards.
29
70
  *
@@ -31,7 +72,7 @@ type KanbanSortableBoardProps = {
31
72
  * the sensor activation rules, keyboard navigation, auto-scroll configuration,
32
73
  * and overlay lifecycle shared by sortable board UIs.
33
74
  */
34
- declare const KanbanSortableBoard: ({ children, onDragEnd, collisionDetection, keyboardCoordinates, autoScroll, sensors, accessibility, onDragStart, onDragCancel, overlay, overlayProps }: KanbanSortableBoardProps) => React$1.JSX.Element;
75
+ declare const KanbanSortableBoard: ({ children, onDragEnd, collisionDetection, keyboardCoordinates, autoScroll, sensors, accessibility, onDragStart, onDragOver, onDragCancel, onInteractionReady, overlay, overlayProps }: KanbanSortableBoardProps) => React$1.JSX.Element;
35
76
  declare const useKanbanSortableSensors: (keyboardCoordinates?: KeyboardCoordinateGetter) => import("@dnd-kit/core").SensorDescriptor<import("@dnd-kit/core").SensorOptions>[];
36
77
  type KanbanSortableListProps = SortableContextProps & React$1.ComponentProps<"div">;
37
78
  /** A vertical card list that preserves native vertical touch scrolling. */
@@ -40,26 +81,42 @@ type KanbanSortableColumnsProps = SortableContextProps & React$1.ComponentProps<
40
81
  /** A horizontal column list that keeps the board pan gesture available. */
41
82
  declare const KanbanSortableColumns: ({ className, children, id, items, strategy, disabled, ...props }: KanbanSortableColumnsProps) => React$1.JSX.Element;
42
83
  type KanbanSortableBindings = Pick<ReturnType<typeof useSortable>, "attributes" | "listeners" | "setActivatorNodeRef">;
84
+ type KanbanSortableActivationMode = {
85
+ type: "card";
86
+ } | {
87
+ type: "handle";
88
+ } | {
89
+ type: "item";
90
+ };
43
91
  type UseKanbanSortableOptions = {
92
+ activation: KanbanSortableActivationMode;
44
93
  id: UniqueIdentifier;
45
94
  disabled?: boolean | undefined;
46
95
  };
96
+ type KanbanSortableActivator = {
97
+ bindings: KanbanSortableBindings;
98
+ type: typeof KANBAN_SORTABLE_ACTIVATION_MODES.HANDLE;
99
+ } | {
100
+ bindings: KanbanSortableBindings;
101
+ type: typeof KANBAN_SORTABLE_ACTIVATION_MODES.CARD;
102
+ } | {
103
+ attributes: ReturnType<typeof useSortable>["attributes"];
104
+ listeners: ReturnType<typeof useSortable>["listeners"];
105
+ type: typeof KANBAN_SORTABLE_ACTIVATION_MODES.ITEM;
106
+ };
47
107
  /**
48
108
  * Connect a sortable item and its separate drag handle without making the
49
109
  * item's content a touch-none activation surface.
50
110
  */
51
- declare const useKanbanSortable: ({ id, disabled }: UseKanbanSortableOptions) => {
111
+ declare const useKanbanSortable: ({ activation, id, disabled }: UseKanbanSortableOptions) => {
112
+ activator: KanbanSortableActivator;
52
113
  isDragging: boolean;
53
- setNodeRef: (node: HTMLElement | null) => void;
114
+ setNodeRef: (element: HTMLElement | null) => void;
54
115
  style: {
116
+ touchAction: string | undefined;
55
117
  transform: string | undefined;
56
118
  transition: string | undefined;
57
119
  };
58
- dragHandle: {
59
- attributes: import("@dnd-kit/core").DraggableAttributes;
60
- listeners: import("@dnd-kit/core/dist/hooks/utilities").SyntheticListenerMap | undefined;
61
- setActivatorNodeRef: (element: HTMLElement | null) => void;
62
- };
63
120
  };
64
121
  type KanbanDragHandleProps = {
65
122
  bindings: KanbanSortableBindings;
@@ -71,5 +128,10 @@ type KanbanDragHandleProps = {
71
128
  * for ordinary scrolling.
72
129
  */
73
130
  declare const KanbanDragHandle: ({ bindings, label, className, ...props }: KanbanDragHandleProps) => React$1.JSX.Element;
131
+ type KanbanCardDragSurfaceProps = {
132
+ bindings: KanbanSortableBindings;
133
+ } & Omit<React$1.ComponentProps<"div">, "ref">;
134
+ /** A whole-card drag activator that preserves descendant controls and scrolling. */
135
+ declare const KanbanCardDragSurface: ({ bindings, className, ...props }: KanbanCardDragSurfaceProps) => React$1.JSX.Element;
74
136
  //#endregion
75
- export { KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanDragHandle, KanbanDragHandleProps, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanSortableOptions, useKanbanSortable, useKanbanSortableSensors };
137
+ export { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanCardDragSurfaceProps, type KanbanCellVirtualNavigation, KanbanDragCancelEvent, KanbanDragEndEvent, KanbanDragHandle, KanbanDragHandleProps, KanbanDragOverEvent, KanbanDragStartEvent, KanbanSortableActivationMode, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, type KanbanSortableCellPosition, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, type KanbanVirtualScrollRequest, UseKanbanDropTargetOptions, UseKanbanSortableOptions, kanbanKeyboardCoordinates, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };