@stll/ui 0.23.1 → 0.25.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 +4 -2
- package/dist/components/button-variants.d.ts +2 -2
- package/dist/components/sidebar.d.ts +2 -2
- package/dist/components/workspace-shell.d.ts +9 -2
- package/dist/components/workspace-shell.js +5 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +3 -2
- package/dist/kanban/card-shell.d.ts +26 -1
- package/dist/kanban/card-shell.js +48 -7
- package/dist/kanban/cell-action.d.ts +10 -2
- package/dist/kanban/cell-action.js +12 -3
- package/dist/kanban/column-band-header.d.ts +6 -2
- package/dist/kanban/column-band-header.js +12 -7
- package/dist/kanban/column-header.d.ts +4 -4
- package/dist/kanban/column-header.js +19 -13
- package/dist/kanban/index.d.ts +3 -2
- package/dist/kanban/index.js +2 -1
- package/dist/kanban/layout-tokens.d.ts +51 -0
- package/dist/kanban/layout-tokens.js +51 -0
- package/dist/kanban/sticky-lane.js +1 -1
- package/dist/kanban/subgroup-board.d.ts +30 -2
- package/dist/kanban/subgroup-board.js +67 -26
- package/dist/lib/control-size.d.ts +1 -1
- package/dist/lib/overlay-layer.d.ts +14 -1
- package/dist/lib/overlay-layer.js +14 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -33,8 +33,10 @@ convenience; the subpaths are the real surface, and in-repo code uses those.
|
|
|
33
33
|
## Workspace shell
|
|
34
34
|
|
|
35
35
|
`WorkspaceShell` is the complete desktop and tablet application frame. It
|
|
36
|
-
keeps navigation, sticky top chrome, the active route, and
|
|
37
|
-
inline-end dock as sibling surfaces inside one dynamic viewport.
|
|
36
|
+
keeps navigation, sticky top chrome, the active route, and an optional
|
|
37
|
+
inline-end dock as sibling surfaces inside one dynamic viewport. A host with
|
|
38
|
+
nothing for the inline-end edge omits `endDock`, and the content column
|
|
39
|
+
extends to the frame's edge instead of reserving width for an empty rail. Route content
|
|
38
40
|
is the sole scroller, so a feature cannot accidentally render an app inside
|
|
39
41
|
the app.
|
|
40
42
|
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
declare const buttonAccessibleDisabledClass = "cursor-not-allowed opacity-64";
|
|
12
12
|
declare const buttonVariants: (props?: ({
|
|
13
|
-
size?: "
|
|
14
|
-
variant?: "link" | "
|
|
13
|
+
size?: "default" | "chip" | "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "sm" | "xl" | "xs" | null | undefined;
|
|
14
|
+
variant?: "link" | "default" | "destructive" | "destructive-outline" | "ghost" | "outline" | "secondary" | null | undefined;
|
|
15
15
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
16
16
|
//#endregion
|
|
17
17
|
export { buttonAccessibleDisabledClass, buttonVariants };
|
|
@@ -82,8 +82,8 @@ declare const SidebarGroupContent: ({ className, ...props }: React.ComponentProp
|
|
|
82
82
|
declare const SidebarMenu: ({ className, ...props }: React.ComponentProps<"ul">) => import("react").JSX.Element;
|
|
83
83
|
declare const SidebarMenuItem: ({ className, ...props }: React.ComponentProps<"li">) => import("react").JSX.Element;
|
|
84
84
|
declare const sidebarMenuButtonVariants: (props?: ({
|
|
85
|
-
variant?: "
|
|
86
|
-
size?: "
|
|
85
|
+
variant?: "default" | "outline" | null | undefined;
|
|
86
|
+
size?: "default" | "lg" | "sm" | "rail" | null | undefined;
|
|
87
87
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
88
88
|
declare const SidebarMenuButton: ({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
|
|
89
89
|
asChild?: boolean;
|
|
@@ -31,8 +31,12 @@ type WorkspaceShellProps = {
|
|
|
31
31
|
navigation: WorkspaceNavigation;
|
|
32
32
|
/** Sticky route chrome; managed navigation exposes its compact trigger here. */
|
|
33
33
|
topBar: (context: WorkspaceTopBarContext) => ReactElement;
|
|
34
|
-
/**
|
|
35
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Inline-end rail or inspector dock. Omit it and the shell mounts no end
|
|
36
|
+
* dock at all: no rail, none of its inline-end width reservation, and the
|
|
37
|
+
* content column extends to the frame's inline-end edge.
|
|
38
|
+
*/
|
|
39
|
+
endDock?: ReactElement | undefined;
|
|
36
40
|
/** Active route content. */
|
|
37
41
|
children: ReactNode;
|
|
38
42
|
};
|
|
@@ -40,6 +44,9 @@ type WorkspaceShellProps = {
|
|
|
40
44
|
* Stella's complete authenticated workspace frame. It owns the dynamic
|
|
41
45
|
* viewport, sibling rail geometry, sticky top chrome, and sole content
|
|
42
46
|
* scroller so product routes cannot create an app inside the app.
|
|
47
|
+
*
|
|
48
|
+
* The end dock is optional: a host with nothing to put on the inline-end edge
|
|
49
|
+
* omits it rather than reserving width for an empty rail.
|
|
43
50
|
*/
|
|
44
51
|
declare const WorkspaceShell: ({ children, endDock, navigation, topBar }: WorkspaceShellProps) => import("react").JSX.Element;
|
|
45
52
|
type WorkspaceEndRailChatAction = {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/utils.js";
|
|
3
|
+
import { SHELL_CHROME_LAYER_CLASS_NAME } from "../lib/overlay-layer.js";
|
|
3
4
|
import { useIsMobile } from "../hooks/use-mobile.js";
|
|
4
5
|
import { InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton } from "../inspector/chrome.js";
|
|
5
6
|
import { Sheet, SheetContent as SheetPopup, SheetTitle, SheetTrigger } from "./sheet.js";
|
|
@@ -11,6 +12,9 @@ import { useEffect } from "react";
|
|
|
11
12
|
* Stella's complete authenticated workspace frame. It owns the dynamic
|
|
12
13
|
* viewport, sibling rail geometry, sticky top chrome, and sole content
|
|
13
14
|
* scroller so product routes cannot create an app inside the app.
|
|
15
|
+
*
|
|
16
|
+
* The end dock is optional: a host with nothing to put on the inline-end edge
|
|
17
|
+
* omits it rather than reserving width for an empty rail.
|
|
14
18
|
*/
|
|
15
19
|
const WorkspaceShell = ({ children, endDock, navigation, topBar }) => {
|
|
16
20
|
const isCompact = useIsMobile();
|
|
@@ -40,7 +44,7 @@ const WorkspaceShell = ({ children, endDock, navigation, topBar }) => {
|
|
|
40
44
|
className: cn("bg-background relative flex w-full min-w-0 flex-1 flex-col overflow-hidden", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2"),
|
|
41
45
|
"data-slot": "workspace-shell-main",
|
|
42
46
|
children: [/* @__PURE__ */ jsx("div", {
|
|
43
|
-
className: "bg-background sticky top-0
|
|
47
|
+
className: cn("bg-background sticky top-0 shrink-0", SHELL_CHROME_LAYER_CLASS_NAME),
|
|
44
48
|
"data-slot": "workspace-shell-top-bar",
|
|
45
49
|
children: topBar({ compactNavigationTrigger })
|
|
46
50
|
}), /* @__PURE__ */ jsx("div", {
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { CalendarDateRange, ResourceCalendarLaneLayout, ResourceCalendarLanePlac
|
|
|
3
3
|
import { ResourceCalendar, ResourceCalendarColumn, ResourceCalendarEntry, ResourceCalendarEntryTone, ResourceCalendarResource } from "./calendar/resource-calendar.js";
|
|
4
4
|
import "./calendar/index.js";
|
|
5
5
|
import { Accordion, AccordionContent as AccordionPanel, AccordionItem, AccordionTrigger } from "./components/accordion.js";
|
|
6
|
-
import { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OverlayLayer } from "./lib/overlay-layer.js";
|
|
6
|
+
import { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OverlayLayer, SHELL_CHROME_LAYER_CLASS_NAME } from "./lib/overlay-layer.js";
|
|
7
7
|
import { AlertDialog, AlertDialogBackdrop, AlertDialogClose, AlertDialogContent as AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport } from "./components/alert-dialog.js";
|
|
8
8
|
import { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator } from "./components/application-rail.js";
|
|
9
9
|
import { Avatar, AvatarFallback, AvatarImage } from "./components/avatar.js";
|
|
@@ -79,11 +79,12 @@ import { KanbanBuiltInGroup, KanbanColumnBand, KanbanGroup, KanbanGroupOption, K
|
|
|
79
79
|
import { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOARD_AXES, KanbanBoardAxis, KanbanBoardCell, KanbanBoardColumn, KanbanBoardCoordinate, KanbanBoardDestination, KanbanBoardLane, KanbanBoardMatrix, KanbanDropAxisChange, KanbanDropIntent, OrderKanbanCellsByColumnsParams, ResolveKanbanGroupValueParams, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, orderKanbanCellsByColumns } from "./kanban/matrix.js";
|
|
80
80
|
import { KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KanbanColumnBandSpan, hasKanbanColumnBands, resolveKanbanColumnBands } from "./kanban/column-bands.js";
|
|
81
81
|
import { KanbanColumnHeader, KanbanColumnHeaderProps } from "./kanban/column-header.js";
|
|
82
|
+
import { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX } from "./kanban/layout-tokens.js";
|
|
82
83
|
import { KANBAN_BOARD_COLLISION_DETECTION, KanbanCellVirtualNavigation, KanbanSortableCellPosition, KanbanVirtualScrollRequest, kanbanKeyboardCoordinates } from "./kanban/sortable-interactions.logic.js";
|
|
83
84
|
import { KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KanbanCardDragSurface, KanbanCardDragSurfaceProps, KanbanDragCancelEvent, KanbanDragEndEvent, KanbanDragHandle, KanbanDragHandleProps, KanbanDragOverEvent, KanbanDragStartEvent, KanbanSortableActivationMode, KanbanSortableBindings, KanbanSortableBoard, KanbanSortableBoardProps, KanbanSortableColumns, KanbanSortableColumnsProps, KanbanSortableList, KanbanSortableListProps, UseKanbanDropTargetOptions, UseKanbanSortableOptions, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors } from "./kanban/sortable-interactions.js";
|
|
84
85
|
import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KanbanDirection, KanbanHorizontalEdge, getKanbanHorizontalEdge } from "./kanban/sortable-edge.js";
|
|
85
86
|
import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./kanban/drag-interactions.js";
|
|
86
|
-
import { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneIdentityContext } from "./kanban/subgroup-board.js";
|
|
87
|
+
import { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneColumnActionContext, KanbanSubgroupLaneColumnSummaryContext, KanbanSubgroupLaneIdentityContext } from "./kanban/subgroup-board.js";
|
|
87
88
|
import { KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS } from "./kanban/band-peek.js";
|
|
88
89
|
import { KANBAN_CARD_STICKY_TOP_VAR, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption, KanbanCollapsedBandCaptionProps } from "./kanban/sticky-lane.js";
|
|
89
90
|
import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps, KanbanVirtualCellSortableContext } from "./kanban/virtual-cell.js";
|
|
@@ -98,4 +99,4 @@ import { ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffS
|
|
|
98
99
|
import { ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone } from "./review/review-out-of-date-notice.js";
|
|
99
100
|
import { ReviewStatusBadge, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant } from "./review/review-status-badge.js";
|
|
100
101
|
import { ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusDot, reviewSeverityTone } from "./review/review-severity-dot.js";
|
|
101
|
-
export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, Avatar, AvatarFallback, AvatarImage, BOARD_DRAG_OVERLAY_Z_INDEX, type BidiDirection, BidiText, type BidiTextProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, type BuildKanbanBoardMatrixParams, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, type CalendarDateRange, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, Checkbox, ColorPicker, ColorPickerContent, type ColorPickerContentProps, type ColorPickerProps, type ColorPreset, ColorVariants, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, type ControlSize, type CreateKanbanDropIntentParams, DEFAULT_PRESETS, DataTable, type DataTableAriaSort, type DataTableColumn, type DataTableProps, type DataTableRowAction, DatePickerPopover, type DatePickerPopoverProps, DestructiveActionConfirmation, DestructiveConfirmDialog, type DestructiveConfirmDialogProps, Dialog, DialogBackdrop, DialogBackdrop as DialogOverlay, DialogClose, DialogPopup as DialogContent, DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, DirectionalIcon, DiscordLogoIcon, Menu as DropdownMenu, Menu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuPopup, MenuCreateHandle as DropdownMenuCreateHandle, MenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuGroup, MenuItem as DropdownMenuItem, MenuItem, MenuGroupLabel as DropdownMenuLabel, MenuGroupLabel, MenuPortal as DropdownMenuPortal, MenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuShortcut, MenuSub as DropdownMenuSub, MenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubPopup, MenuSubTrigger as DropdownMenuSubTrigger, MenuSubTrigger, MenuTrigger as DropdownMenuTrigger, MenuTrigger, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GitHubLogoIcon, HexColorPicker, type HexColorPickerProps, PreviewCard as HoverCard, PreviewCard, PreviewCardPopup as HoverCardContent, PreviewCardPopup, PreviewCardTrigger as HoverCardTrigger, PreviewCardTrigger, INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_EDITOR_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, InspectorEntityTab, InspectorFacetBar, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, type KanbanCellVirtualNavigation, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, 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, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type KanbanVirtualCellSortableContext, type KanbanVirtualScrollRequest, Label, MenuPreviewLayout, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OptionColor, type OrderKanbanCellsByColumnsParams, OutlineItem, OutlineRail, OutlineRailProps, OverlayLayer, PROPERTY_ROW_GRID, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger, PreviewCardPrimitive, PreviewPane, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, ResourceCalendar, type ResourceCalendarColumn, type ResourceCalendarEntry, type ResourceCalendarEntryTone, type ResourceCalendarLaneLayout, type ResourceCalendarLanePlacement, type ResourceCalendarPlacement, type ResourceCalendarResource, ReviewAuthorAvatar, ReviewCommentAuthor, ReviewCommentCard, ReviewDecisionActions, ReviewDecisionSize, ReviewDecisionState, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffSegmentType, ReviewDiffText, ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone, ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusBadge, ReviewStatusDot, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant, SIDEBAR_WIDTH_ICON_PX, SIDEBAR_WIDTH_PX, 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, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SortDirection, SortableHead, StellaMark, StellaWordmarkLatin, TOAST_RIGHT_OFFSET_VAR, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, Table, TableBody, TableCaption, TableCell, type TableColumnCapabilities, type TableColumnDescriptor, TableFooter, TableHead, TableHeader, TableRow, type TableSchema, Tabs, TabsPanel as TabsContent, TabsPanel, TabsList, TabsTab, TabsTab as TabsTrigger, TextSeparator, Textarea, type TextareaProps, type ToastPosition, ToastProvider, Tooltip, TooltipPopup as TooltipContent, TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger, UNKNOWN_AUTHOR_LABEL, type UseKanbanDropTargetOptions, type UseKanbanSortableOptions, UserText, type WorkspaceCompactNavigation, WorkspaceEndRail, type WorkspaceEndRailChatAction, type WorkspaceEndRailProps, type WorkspaceNavigation, WorkspaceShell, type WorkspaceShellProps, type WorkspaceTopBarContext, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, entityTabGlyph, findTableColumn, getFirstWeekday, getInitials, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hasKanbanColumnBands, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useSidebar, useSidebarInlineSize, useViewportWidth, visibleColumnIds };
|
|
102
|
+
export { APPLICATION_RAIL_BUTTON_SIZE, APPLICATION_RAIL_ICON_SIZE, APPLICATION_RAIL_WIDTH, Accordion, AccordionPanel as AccordionContent, AccordionPanel, AccordionItem, AccordionTrigger, AlertDialog, AlertDialogBackdrop, AlertDialogBackdrop as AlertDialogOverlay, AlertDialogClose, AlertDialogPopup as AlertDialogContent, AlertDialogPopup, AlertDialogCreateHandle, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogPanel, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertDialogViewport, AnchoredToastProvider, ApplicationRail, ApplicationRailButton, ApplicationRailContent, ApplicationRailFooter, ApplicationRailHeader, ApplicationRailMenu, ApplicationRailSeparator, Avatar, AvatarFallback, AvatarImage, BOARD_DRAG_OVERLAY_Z_INDEX, type BidiDirection, BidiText, type BidiTextProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, type BuildKanbanBoardMatrixParams, Button, CONTROL_SIZE, CONTROL_SIZES, CalendarCell, type CalendarDateRange, CalendarEntryButton, CalendarEntrySurface, CalendarGrid, CalendarHeaderCell, CalendarHeaderRow, Checkbox, ColorPicker, ColorPickerContent, type ColorPickerContentProps, type ColorPickerProps, type ColorPreset, ColorVariants, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCollection, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue, Command, CommandCollection, CommandDialog, CommandDialogPopup, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandGroupLabel, CommandInput, CommandItem, CommandList, CommandPanel, CommandSeparator, CommandShortcut, type ControlSize, type CreateKanbanDropIntentParams, DEFAULT_PRESETS, DataTable, type DataTableAriaSort, type DataTableColumn, type DataTableProps, type DataTableRowAction, DatePickerPopover, type DatePickerPopoverProps, DestructiveActionConfirmation, DestructiveConfirmDialog, type DestructiveConfirmDialogProps, Dialog, DialogBackdrop, DialogBackdrop as DialogOverlay, DialogClose, DialogPopup as DialogContent, DialogPopup, DialogCreateHandle, DialogDescription, DialogFooter, DialogHeader, DialogPanel, DialogPortal, DialogTitle, DialogTrigger, DialogViewport, DirectionalIcon, DiscordLogoIcon, Menu as DropdownMenu, Menu, MenuCheckboxItem as DropdownMenuCheckboxItem, MenuCheckboxItem, MenuPopup as DropdownMenuContent, MenuPopup, MenuCreateHandle as DropdownMenuCreateHandle, MenuCreateHandle, MenuGroup as DropdownMenuGroup, MenuGroup, MenuItem as DropdownMenuItem, MenuItem, MenuGroupLabel as DropdownMenuLabel, MenuGroupLabel, MenuPortal as DropdownMenuPortal, MenuPortal, MenuRadioGroup as DropdownMenuRadioGroup, MenuRadioGroup, MenuRadioItem as DropdownMenuRadioItem, MenuRadioItem, MenuSeparator as DropdownMenuSeparator, MenuSeparator, MenuShortcut as DropdownMenuShortcut, MenuShortcut, MenuSub as DropdownMenuSub, MenuSub, MenuSubPopup as DropdownMenuSubContent, MenuSubPopup, MenuSubTrigger as DropdownMenuSubTrigger, MenuSubTrigger, MenuTrigger as DropdownMenuTrigger, MenuTrigger, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, Form, Frame, FrameDescription, FrameFooter, FrameHeader, FramePanel, FrameTitle, GitHubLogoIcon, HexColorPicker, type HexColorPickerProps, PreviewCard as HoverCard, PreviewCard, PreviewCardPopup as HoverCardContent, PreviewCardPopup, PreviewCardTrigger as HoverCardTrigger, PreviewCardTrigger, INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_EDITOR_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, InspectorEntityTab, InspectorFacetBar, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, type KanbanCellVirtualNavigation, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, 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, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneColumnActionContext, type KanbanSubgroupLaneColumnSummaryContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type KanbanVirtualCellSortableContext, type KanbanVirtualScrollRequest, Label, MenuPreviewLayout, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OptionColor, type OrderKanbanCellsByColumnsParams, OutlineItem, OutlineRail, OutlineRailProps, OverlayLayer, PROPERTY_ROW_GRID, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverClose, PopoverPopup as PopoverContent, PopoverPopup, PopoverCreateHandle, PopoverDescription, PopoverPanel, PopoverTitle, PopoverTrigger, PreviewCardPrimitive, PreviewPane, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, ResourceCalendar, type ResourceCalendarColumn, type ResourceCalendarEntry, type ResourceCalendarEntryTone, type ResourceCalendarLaneLayout, type ResourceCalendarLanePlacement, type ResourceCalendarPlacement, type ResourceCalendarResource, ReviewAuthorAvatar, ReviewCommentAuthor, ReviewCommentCard, ReviewDecisionActions, ReviewDecisionSize, ReviewDecisionState, ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffSegment, ReviewDiffSegmentType, ReviewDiffText, ReviewOutOfDateNotice, ReviewOutOfDateReason, ReviewOutOfDateTone, ReviewSeverityDot, ReviewSeverityLevel, ReviewStatusBadge, ReviewStatusDot, ReviewStatusSize, ReviewStatusTone, ReviewStatusVariant, SHELL_CHROME_LAYER_CLASS_NAME, SIDEBAR_WIDTH_ICON_PX, SIDEBAR_WIDTH_PX, 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, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SortDirection, SortableHead, StellaMark, StellaWordmarkLatin, TOAST_RIGHT_OFFSET_VAR, TOOLBAR_ROW_HEIGHT, TOOLBAR_ROW_HEIGHT_PX, TRACKED_DELETION_STYLE, TRACKED_INSERTION_STYLE, Table, TableBody, TableCaption, TableCell, type TableColumnCapabilities, type TableColumnDescriptor, TableFooter, TableHead, TableHeader, TableRow, type TableSchema, Tabs, TabsPanel as TabsContent, TabsPanel, TabsList, TabsTab, TabsTab as TabsTrigger, TextSeparator, Textarea, type TextareaProps, type ToastPosition, ToastProvider, Tooltip, TooltipPopup as TooltipContent, TooltipPopup, TooltipCreateHandle, TooltipProvider, TooltipTrigger, UNKNOWN_AUTHOR_LABEL, type UseKanbanDropTargetOptions, type UseKanbanSortableOptions, UserText, type WorkspaceCompactNavigation, WorkspaceEndRail, type WorkspaceEndRailChatAction, type WorkspaceEndRailProps, type WorkspaceNavigation, WorkspaceShell, type WorkspaceShellProps, type WorkspaceTopBarContext, assertConsecutiveCalendarDates, buildKanbanBoardMatrix, buttonAccessibleDisabledClass, buttonVariants, cn, composeRefs, containedEventHandler, containedHandler, contentDir, createKanbanDropIntent, duplicateColumnIds, emptyColor, entityTabGlyph, findTableColumn, getFirstWeekday, getInitials, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hasKanbanColumnBands, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useSidebar, useSidebarInlineSize, useViewportWidth, visibleColumnIds };
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ 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 { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES } from "./lib/overlay-layer.js";
|
|
5
|
+
import { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, SHELL_CHROME_LAYER_CLASS_NAME } 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
8
|
import { useIsMobile } from "./hooks/use-mobile.js";
|
|
@@ -72,6 +72,7 @@ import { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parseP
|
|
|
72
72
|
import { selectKanbanCardFieldIds } from "./kanban/card-properties.js";
|
|
73
73
|
import { KANBAN_CARD_STICKY_TOP_VAR, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption } from "./kanban/sticky-lane.js";
|
|
74
74
|
import { KanbanCardShell } from "./kanban/card-shell.js";
|
|
75
|
+
import { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX } from "./kanban/layout-tokens.js";
|
|
75
76
|
import { KanbanCellAction } from "./kanban/cell-action.js";
|
|
76
77
|
import { KanbanColumnBandHeader } from "./kanban/column-band-header.js";
|
|
77
78
|
import { getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./kanban/grouping.js";
|
|
@@ -94,4 +95,4 @@ import { ReviewDiffDeletion, ReviewDiffInsertion, ReviewDiffText, TRACKED_DELETI
|
|
|
94
95
|
import { ReviewOutOfDateNotice } from "./review/review-out-of-date-notice.js";
|
|
95
96
|
import { ReviewSeverityDot, ReviewStatusDot, reviewSeverityTone } from "./review/review-severity-dot.js";
|
|
96
97
|
import { ReviewStatusBadge } from "./review/review-status-badge.js";
|
|
97
|
-
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_EDITOR_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, InspectorEntityTab, InspectorFacetBar, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanCellAction, KanbanCollapsedBandCaption, KanbanColumnBandHeader, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, Label, MenuPreviewLayout, OVERLAY_COLLISION_PADDING, 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, SIDEBAR_WIDTH_ICON_PX, SIDEBAR_WIDTH_PX, 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, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, 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, entityTabGlyph, findTableColumn, getFirstWeekday, getInitials, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hasKanbanColumnBands, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useSidebar, useSidebarInlineSize, useViewportWidth, visibleColumnIds };
|
|
98
|
+
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_EDITOR_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, InspectorEntityTab, InspectorFacetBar, InspectorHeader, InspectorHeaderText, InspectorProperty, InspectorPropertyLabel, InspectorPropertyList, InspectorPropertyValue, InspectorRail, InspectorRailCell, InspectorRailContent, InspectorRailFooter, InspectorRailIconButton, InspectorRailTab, InspectorSection, InspectorSectionTitle, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, InspectorTitle, KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanCellAction, KanbanCollapsedBandCaption, KanbanColumnBandHeader, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, Label, MenuPreviewLayout, OVERLAY_COLLISION_PADDING, 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, SHELL_CHROME_LAYER_CLASS_NAME, SIDEBAR_WIDTH_ICON_PX, SIDEBAR_WIDTH_PX, 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, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, 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, entityTabGlyph, findTableColumn, getFirstWeekday, getInitials, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, getLocaleWeekInfo, getResourceCalendarPlacement, getWeekendDays, hasKanbanColumnBands, hideableColumnIds, isKanbanGroupingRenderable, isStructuredInputType, kanbanKeyboardCoordinates, layoutResourceCalendarEntries, nextCalendarDate, optionColors, orderKanbanCellsByColumns, parsePersistedPaneWidth, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveDragWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, resolveKeyboardWidth, resolveOptionColor, reviewDiffSegmentKeys, reviewSeverityTone, selectKanbanCardFieldIds, selectKanbanRows, shouldForceSidebarCollapsed, sortableColumnIds, stellaToast, tableColumnIds, tableColumnSizing, useComboboxFilter, useContentDir, useDestructiveActionConfirmation, useInspectorPaneWidth, useIsMobile, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors, useLatest, useSidebar, useSidebarInlineSize, useViewportWidth, visibleColumnIds };
|
|
@@ -4,12 +4,37 @@ type KanbanCardShellProps = {
|
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
/** Overlay slot pinned to the top-end corner (row actions). */
|
|
6
6
|
actions?: ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Whether `actions` are drawn at all times or only once the card is under
|
|
9
|
+
* the pointer. `"hover"` also hands their placement to the shell, so the
|
|
10
|
+
* quiet actions of every board rest in the same corner and a caller passes
|
|
11
|
+
* bare icon buttons; `"always"` (the default) leaves a caller's own overlay
|
|
12
|
+
* exactly where it put it.
|
|
13
|
+
*
|
|
14
|
+
* While they are hidden they are also inert: they take no pointer events at
|
|
15
|
+
* all, so a touch anywhere over the card — including the corner they will
|
|
16
|
+
* appear in — reaches the card itself. A hidden overlay that still answered
|
|
17
|
+
* a press would sit as a small dead zone on every card, and a long press
|
|
18
|
+
* landing in it would never start the card's drag.
|
|
19
|
+
*
|
|
20
|
+
* Each pointer has its own way in. A pointer that hovers reveals them by
|
|
21
|
+
* hovering the card; the keyboard reveals them by tabbing into them, which
|
|
22
|
+
* being inert to a pointer never blocked. A finger has neither, so `active`
|
|
23
|
+
* is its route: the card a tap opened shows its actions for as long as it
|
|
24
|
+
* stays open. A board that never marks a card active leaves touch without
|
|
25
|
+
* one, and should keep `"always"`.
|
|
26
|
+
*/
|
|
27
|
+
actionsVisibility?: "always" | "hover" | undefined;
|
|
7
28
|
/**
|
|
8
29
|
* The card's identity row: whatever says which card this is, held at the top
|
|
9
30
|
* of the card while the card scrolls past under it, and released where the
|
|
10
31
|
* card ends. A card taller than the viewport otherwise loses its own name
|
|
11
32
|
* halfway down. Omit it and the card renders exactly as it did before.
|
|
12
33
|
*
|
|
34
|
+
* The row runs the card's full width and the actions overlay leads the same
|
|
35
|
+
* corner over it, so leave the row's end side clear of anything the actions
|
|
36
|
+
* would cover.
|
|
37
|
+
*
|
|
13
38
|
* Booleans are excluded so `condition && <Row />` cannot reach the slot: a
|
|
14
39
|
* `false` React renders as nothing would still leave the row's divider and
|
|
15
40
|
* spacing behind. Write the absent case as `condition ? <Row /> : null`.
|
|
@@ -41,6 +66,6 @@ type KanbanCardShellProps = {
|
|
|
41
66
|
* Nothing here clips its overflow: a pinned identity row stops sticking the
|
|
42
67
|
* moment anything between it and the scroll container clips.
|
|
43
68
|
*/
|
|
44
|
-
declare const KanbanCardShell: ({ children, actions, stickyHeader, active, onOpen, bodyRef, dragRef, className }: KanbanCardShellProps) => import("react").JSX.Element;
|
|
69
|
+
declare const KanbanCardShell: ({ children, actions, actionsVisibility, stickyHeader, active, onOpen, bodyRef, dragRef, className }: KanbanCardShellProps) => import("react").JSX.Element;
|
|
45
70
|
//#endregion
|
|
46
71
|
export { KanbanCardShell, KanbanCardShellProps };
|
|
@@ -15,7 +15,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
* Nothing here clips its overflow: a pinned identity row stops sticking the
|
|
16
16
|
* moment anything between it and the scroll container clips.
|
|
17
17
|
*/
|
|
18
|
-
const KanbanCardShell = ({ children, actions, stickyHeader, active, onOpen, bodyRef, dragRef, className }) => {
|
|
18
|
+
const KanbanCardShell = ({ children, actions, actionsVisibility = "always", stickyHeader, active, onOpen, bodyRef, dragRef, className }) => {
|
|
19
19
|
const body = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
20
20
|
stickyHeader === void 0 || stickyHeader === null ? null : /* @__PURE__ */ jsx("div", {
|
|
21
21
|
className: cn(STICKY_HEADER_CLASS, KANBAN_CARD_STICKY_TOP_CLASS),
|
|
@@ -23,10 +23,15 @@ const KanbanCardShell = ({ children, actions, stickyHeader, active, onOpen, body
|
|
|
23
23
|
children: stickyHeader
|
|
24
24
|
}),
|
|
25
25
|
children,
|
|
26
|
-
actions
|
|
26
|
+
actionsVisibility === "hover" && actions !== void 0 ? /* @__PURE__ */ jsx("div", {
|
|
27
|
+
className: HOVER_ACTIONS_CLASS,
|
|
28
|
+
"data-kanban-card-actions": "hover",
|
|
29
|
+
children: actions
|
|
30
|
+
}) : actions
|
|
27
31
|
] });
|
|
28
32
|
if (!onOpen) return /* @__PURE__ */ jsx("div", {
|
|
29
33
|
className: "group/card",
|
|
34
|
+
"data-active": active ? "true" : void 0,
|
|
30
35
|
ref: dragRef,
|
|
31
36
|
children: /* @__PURE__ */ jsx("div", {
|
|
32
37
|
className: cn(CARD_CLASS, active && ACTIVE_CLASS, className),
|
|
@@ -36,6 +41,7 @@ const KanbanCardShell = ({ children, actions, stickyHeader, active, onOpen, body
|
|
|
36
41
|
});
|
|
37
42
|
return /* @__PURE__ */ jsx("div", {
|
|
38
43
|
className: "group/card",
|
|
44
|
+
"data-active": active ? "true" : void 0,
|
|
39
45
|
ref: dragRef,
|
|
40
46
|
children: /* @__PURE__ */ jsx("div", {
|
|
41
47
|
className: cn(CARD_CLASS, "cursor-pointer transition-shadow hover:shadow-md", active && ACTIVE_CLASS, className),
|
|
@@ -59,11 +65,46 @@ const ACTIVE_CLASS = "ring-primary/30 ring-2";
|
|
|
59
65
|
* passes behind it instead of reading through it, ruled off with the card's own
|
|
60
66
|
* border weight.
|
|
61
67
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
68
|
+
* `bg-card` on its own is not enough: a consumer is free to define that token
|
|
69
|
+
* with an alpha channel, and a translucent pinned row lets the very cards it
|
|
70
|
+
* is holding back read through it. The card colour goes down as a flat
|
|
71
|
+
* gradient layer over the opaque page background instead, which is the card's
|
|
72
|
+
* own surface at full opacity whatever the token turns out to be.
|
|
73
|
+
*
|
|
74
|
+
* The row takes a layer of its own. Being positioned only beats the card's
|
|
75
|
+
* flow content: a card whose body carries positioned controls of its own (a
|
|
76
|
+
* band of selects at its foot, say) renders them after the row, and tree order
|
|
77
|
+
* alone paints them straight over the name of the card they belong to. An
|
|
78
|
+
* overlay meant to stay reachable over the row takes the same layer and wins
|
|
79
|
+
* on tree order, which is what the hover `actions` slot below does; a caller
|
|
80
|
+
* anchoring its own always-visible overlay to that corner does the same.
|
|
81
|
+
*/
|
|
82
|
+
const STICKY_HEADER_CLASS = "bg-background bg-[linear-gradient(var(--color-card),var(--color-card))] sticky z-10 mb-2 border-b pb-2";
|
|
83
|
+
/**
|
|
84
|
+
* Where the shell puts the actions it reveals on hover.
|
|
85
|
+
*
|
|
86
|
+
* The overlay takes a layer of its own here, unlike the always-visible slot:
|
|
87
|
+
* it has to stay over the pinned identity row that leads the same corner, and
|
|
88
|
+
* the row now takes a layer too. Sharing it is enough, because the overlay is
|
|
89
|
+
* rendered after the row. An open menu holds the actions on through its
|
|
90
|
+
* trigger's `aria-expanded`, or the trigger would disappear from under the
|
|
91
|
+
* popup it just opened.
|
|
92
|
+
*
|
|
93
|
+
* The fade is decoration: a reader who asked for less motion still gets the
|
|
94
|
+
* actions, they simply arrive at once.
|
|
95
|
+
*
|
|
96
|
+
* Every state that shows them also makes them answer a pointer again, and
|
|
97
|
+
* nothing else does: an invisible overlay that still took a press would leave
|
|
98
|
+
* a small dead zone in the corner of every card, and on a touch device that
|
|
99
|
+
* dead zone swallows the long press that starts the card's drag. Hiding alone
|
|
100
|
+
* would not have been enough — a transparent element is still the topmost hit.
|
|
101
|
+
* Focus is unaffected by `pointer-events`, so the keyboard path is untouched.
|
|
102
|
+
*
|
|
103
|
+
* The active card is what leaves a finger a way in, since it has neither
|
|
104
|
+
* hover nor tab: the card a tap opened keeps its actions out while it is
|
|
105
|
+
* open. It reads the state off the group rather than its own card box, so
|
|
106
|
+
* the pair stays in one class string.
|
|
66
107
|
*/
|
|
67
|
-
const
|
|
108
|
+
const HOVER_ACTIONS_CLASS = "absolute end-1.5 top-1.5 z-10 flex items-center gap-0.5 opacity-0 pointer-events-none transition-opacity group-hover/card:pointer-events-auto group-hover/card:opacity-100 group-data-[active=true]/card:pointer-events-auto group-data-[active=true]/card:opacity-100 focus-within:pointer-events-auto focus-within:opacity-100 has-[[aria-expanded=true]]:pointer-events-auto has-[[aria-expanded=true]]:opacity-100 motion-reduce:transition-none";
|
|
68
109
|
//#endregion
|
|
69
110
|
export { KanbanCardShell };
|
|
@@ -3,12 +3,20 @@ import { ComponentProps } from "react";
|
|
|
3
3
|
//#region src/kanban/cell-action.d.ts
|
|
4
4
|
type KanbanCellActionProps = Omit<ComponentProps<typeof Button>, "variant">;
|
|
5
5
|
/**
|
|
6
|
-
* The quiet action at the end of a cell: a full-width
|
|
7
|
-
*
|
|
6
|
+
* The quiet action at the end of a cell: a full-width row that adds a card to
|
|
7
|
+
* that column and lane.
|
|
8
8
|
*
|
|
9
9
|
* Every board rendered its own copy of this row and the copies drifted in
|
|
10
10
|
* height, tone, and icon size. One primitive keeps the footer of every cell on
|
|
11
11
|
* the same rhythm as a card, so an empty cell and a full one end the same way.
|
|
12
|
+
*
|
|
13
|
+
* It is drawn as the outline of a card rather than as a button: the row stands
|
|
14
|
+
* where the next card will, so a dashed card-shaped slot says what pressing it
|
|
15
|
+
* produces, which a ghost button in the same place never did. It stays a
|
|
16
|
+
* `Button` underneath for the focus ring and the coarse-pointer touch target
|
|
17
|
+
* the variant already carries; only the height is restated per breakpoint,
|
|
18
|
+
* since the button's own size drops a step at `sm` and the row has to hold the
|
|
19
|
+
* board's chrome rhythm at every width.
|
|
12
20
|
*/
|
|
13
21
|
declare const KanbanCellAction: ({ children, className, ...props }: KanbanCellActionProps) => import("react").JSX.Element;
|
|
14
22
|
//#endregion
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { cn } from "../lib/utils.js";
|
|
2
2
|
import { Button } from "../components/button.js";
|
|
3
|
+
import "./layout-tokens.js";
|
|
3
4
|
import { PlusIcon } from "lucide-react";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
//#region src/kanban/cell-action.tsx
|
|
6
7
|
/**
|
|
7
|
-
* The quiet action at the end of a cell: a full-width
|
|
8
|
-
*
|
|
8
|
+
* The quiet action at the end of a cell: a full-width row that adds a card to
|
|
9
|
+
* that column and lane.
|
|
9
10
|
*
|
|
10
11
|
* Every board rendered its own copy of this row and the copies drifted in
|
|
11
12
|
* height, tone, and icon size. One primitive keeps the footer of every cell on
|
|
12
13
|
* the same rhythm as a card, so an empty cell and a full one end the same way.
|
|
14
|
+
*
|
|
15
|
+
* It is drawn as the outline of a card rather than as a button: the row stands
|
|
16
|
+
* where the next card will, so a dashed card-shaped slot says what pressing it
|
|
17
|
+
* produces, which a ghost button in the same place never did. It stays a
|
|
18
|
+
* `Button` underneath for the focus ring and the coarse-pointer touch target
|
|
19
|
+
* the variant already carries; only the height is restated per breakpoint,
|
|
20
|
+
* since the button's own size drops a step at `sm` and the row has to hold the
|
|
21
|
+
* board's chrome rhythm at every width.
|
|
13
22
|
*/
|
|
14
23
|
const KanbanCellAction = ({ children, className, ...props }) => /* @__PURE__ */ jsxs(Button, {
|
|
15
|
-
className: cn("text-muted-foreground hover:text-foreground
|
|
24
|
+
className: cn("border-border/70 text-muted-foreground hover:bg-muted/40 hover:text-foreground flex w-full items-center justify-start gap-1.5 rounded-lg border border-dashed px-3 text-sm", "h-9", "sm:h-9", className),
|
|
16
25
|
"data-slot": "kanban-cell-action",
|
|
17
26
|
...props,
|
|
18
27
|
variant: "ghost",
|
|
@@ -30,8 +30,12 @@ type KanbanColumnBandHeaderProps = {
|
|
|
30
30
|
actions?: ReactNode;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
33
|
-
* The band line above a run of columns: one
|
|
34
|
-
*
|
|
33
|
+
* The band line above a run of columns: one `KANBAN_BAND_CAPTION_ROW_HEIGHT`
|
|
34
|
+
* row of toggle, swatch, name, and count.
|
|
35
|
+
*
|
|
36
|
+
* The line carries the chrome row height and sets its name a step heavier than
|
|
37
|
+
* a column title, because the band names the columns under it: a smaller label
|
|
38
|
+
* on a shorter line read as subordinate to the very columns it groups.
|
|
35
39
|
* Folded, only the toggle remains in this line; the band's name moves down
|
|
36
40
|
* into the narrow column body, where the height is already there.
|
|
37
41
|
*/
|
|
@@ -1,37 +1,42 @@
|
|
|
1
1
|
import { cn } from "../lib/utils.js";
|
|
2
2
|
import { DirectionalIcon } from "../components/directional-icon.js";
|
|
3
|
+
import { KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS } from "./layout-tokens.js";
|
|
3
4
|
import { ChevronDownIcon } from "lucide-react";
|
|
4
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
//#region src/kanban/column-band-header.tsx
|
|
6
7
|
/**
|
|
7
|
-
* The band line above a run of columns: one
|
|
8
|
-
*
|
|
8
|
+
* The band line above a run of columns: one `KANBAN_BAND_CAPTION_ROW_HEIGHT`
|
|
9
|
+
* row of toggle, swatch, name, and count.
|
|
10
|
+
*
|
|
11
|
+
* The line carries the chrome row height and sets its name a step heavier than
|
|
12
|
+
* a column title, because the band names the columns under it: a smaller label
|
|
13
|
+
* on a shorter line read as subordinate to the very columns it groups.
|
|
9
14
|
* Folded, only the toggle remains in this line; the band's name moves down
|
|
10
15
|
* into the narrow column body, where the height is already there.
|
|
11
16
|
*/
|
|
12
17
|
const KanbanColumnBandHeader = ({ title, swatch, meta, collapsed, compact = collapsed, toggleLabel, onCollapsedChange, actions }) => /* @__PURE__ */ jsxs("div", {
|
|
13
|
-
className: cn("flex
|
|
18
|
+
className: cn("flex items-center gap-1", "h-9", compact ? "justify-center" : "pe-1"),
|
|
14
19
|
"data-collapsed": collapsed ? "" : void 0,
|
|
15
20
|
"data-compact": compact ? "" : void 0,
|
|
16
21
|
"data-slot": "kanban-column-band-header",
|
|
17
22
|
children: [/* @__PURE__ */ jsx("button", {
|
|
18
23
|
"aria-expanded": !collapsed,
|
|
19
24
|
"aria-label": toggleLabel,
|
|
20
|
-
className: "hover:bg-muted/60 text-muted-foreground hover:text-foreground flex size-
|
|
25
|
+
className: cn("hover:bg-muted/60 text-muted-foreground hover:text-foreground flex size-7 shrink-0 items-center justify-center rounded-md transition-[background-color]", KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS),
|
|
21
26
|
onClick: (event) => onCollapsedChange(!collapsed, { viaPointer: event.detail > 0 }),
|
|
22
27
|
title: toggleLabel,
|
|
23
28
|
type: "button",
|
|
24
29
|
children: /* @__PURE__ */ jsx(DirectionalIcon, {
|
|
25
|
-
className: cn("size-
|
|
30
|
+
className: cn("size-4 transition-transform", collapsed && "-rotate-90"),
|
|
26
31
|
flip: collapsed,
|
|
27
32
|
icon: ChevronDownIcon
|
|
28
33
|
})
|
|
29
34
|
}), compact ? null : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
30
35
|
swatch,
|
|
31
36
|
/* @__PURE__ */ jsxs("span", {
|
|
32
|
-
className: "flex min-w-0 flex-1 items-baseline gap-1.5 truncate text-
|
|
37
|
+
className: "flex min-w-0 flex-1 items-baseline gap-1.5 truncate text-sm font-semibold",
|
|
33
38
|
children: [title, meta !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
34
|
-
className: "text-muted-foreground font-normal tabular-nums",
|
|
39
|
+
className: "text-muted-foreground text-xs font-normal tabular-nums",
|
|
35
40
|
children: meta
|
|
36
41
|
})]
|
|
37
42
|
}),
|
|
@@ -20,10 +20,10 @@ type KanbanColumnHeaderProps = {
|
|
|
20
20
|
* The column header row: one rhythm for the swatch, the name, the count, the
|
|
21
21
|
* calculation, and the column's controls, so every board's header lines up.
|
|
22
22
|
*
|
|
23
|
-
* Fixed at `
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
23
|
+
* Fixed at `KANBAN_CHROME_ROW_HEIGHT`, the height a lane's own rows take, so
|
|
24
|
+
* every chrome row on the board sits on one rhythm and a column's top edge
|
|
25
|
+
* lines up with the lane rows under it. The title clips instead of wrapping
|
|
26
|
+
* so a long name can never grow the row past that height.
|
|
27
27
|
*/
|
|
28
28
|
declare const KanbanColumnHeader: ({ swatch, title, meta, calculation, dragHandle, actions, className }: KanbanColumnHeaderProps) => import("react").JSX.Element;
|
|
29
29
|
//#endregion
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
import { cn } from "../lib/utils.js";
|
|
2
|
-
import
|
|
2
|
+
import "./layout-tokens.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
//#region src/kanban/column-header.tsx
|
|
5
5
|
/**
|
|
6
6
|
* The column header row: one rhythm for the swatch, the name, the count, the
|
|
7
7
|
* calculation, and the column's controls, so every board's header lines up.
|
|
8
8
|
*
|
|
9
|
-
* Fixed at `
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Fixed at `KANBAN_CHROME_ROW_HEIGHT`, the height a lane's own rows take, so
|
|
10
|
+
* every chrome row on the board sits on one rhythm and a column's top edge
|
|
11
|
+
* lines up with the lane rows under it. The title clips instead of wrapping
|
|
12
|
+
* so a long name can never grow the row past that height.
|
|
13
13
|
*/
|
|
14
14
|
const KanbanColumnHeader = ({ swatch, title, meta, calculation, dragHandle, actions, className }) => /* @__PURE__ */ jsxs("div", {
|
|
15
|
-
className: cn("flex items-center gap-2 px-3",
|
|
15
|
+
className: cn("flex items-center gap-2 px-3", "h-9", className),
|
|
16
16
|
children: [
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
children:
|
|
23
|
-
|
|
17
|
+
/* @__PURE__ */ jsx("div", {
|
|
18
|
+
className: "flex min-w-0 flex-1",
|
|
19
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
20
|
+
className: "sticky start-0 z-10 flex w-fit max-w-full items-center gap-2 bg-inherit",
|
|
21
|
+
"data-kanban-column-title": "",
|
|
22
|
+
children: [swatch, /* @__PURE__ */ jsxs("span", {
|
|
23
|
+
className: "flex min-w-0 flex-1 items-center gap-1.5 truncate",
|
|
24
|
+
children: [title, meta !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
25
|
+
className: "text-muted-foreground text-xs",
|
|
26
|
+
children: meta
|
|
27
|
+
})]
|
|
28
|
+
})]
|
|
29
|
+
})
|
|
24
30
|
}),
|
|
25
31
|
calculation,
|
|
26
32
|
dragHandle,
|
package/dist/kanban/index.d.ts
CHANGED
|
@@ -6,12 +6,13 @@ import { KanbanBuiltInGroup, KanbanColumnBand, KanbanGroup, KanbanGroupOption, K
|
|
|
6
6
|
import { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOARD_AXES, KanbanBoardAxis, KanbanBoardCell, KanbanBoardColumn, KanbanBoardCoordinate, KanbanBoardDestination, KanbanBoardLane, KanbanBoardMatrix, KanbanDropAxisChange, KanbanDropIntent, OrderKanbanCellsByColumnsParams, ResolveKanbanGroupValueParams, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, orderKanbanCellsByColumns } from "./matrix.js";
|
|
7
7
|
import { KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KanbanColumnBandSpan, hasKanbanColumnBands, resolveKanbanColumnBands } from "./column-bands.js";
|
|
8
8
|
import { KanbanColumnHeader, KanbanColumnHeaderProps } from "./column-header.js";
|
|
9
|
+
import { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX } from "./layout-tokens.js";
|
|
9
10
|
import { KANBAN_BOARD_COLLISION_DETECTION, KanbanCellVirtualNavigation, KanbanSortableCellPosition, KanbanVirtualScrollRequest, kanbanKeyboardCoordinates } from "./sortable-interactions.logic.js";
|
|
10
11
|
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";
|
|
11
12
|
import { KANBAN_DIRECTIONS, KANBAN_HORIZONTAL_EDGES, KanbanDirection, KanbanHorizontalEdge, getKanbanHorizontalEdge } from "./sortable-edge.js";
|
|
12
13
|
import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./drag-interactions.js";
|
|
13
|
-
import { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneIdentityContext } from "./subgroup-board.js";
|
|
14
|
+
import { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneColumnActionContext, KanbanSubgroupLaneColumnSummaryContext, KanbanSubgroupLaneIdentityContext } from "./subgroup-board.js";
|
|
14
15
|
import { KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS } from "./band-peek.js";
|
|
15
16
|
import { KANBAN_CARD_STICKY_TOP_VAR, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption, KanbanCollapsedBandCaptionProps } from "./sticky-lane.js";
|
|
16
17
|
import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps, KanbanVirtualCellSortableContext } from "./virtual-cell.js";
|
|
17
|
-
export { type BuildKanbanBoardMatrixParams, type CreateKanbanDropIntentParams, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, type KanbanCellVirtualNavigation, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, 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, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, 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, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, hasKanbanColumnBands, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
|
|
18
|
+
export { type BuildKanbanBoardMatrixParams, type CreateKanbanDropIntentParams, KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, KanbanCardDragSurface, type KanbanCardDragSurfaceProps, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, type KanbanCellVirtualNavigation, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, 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, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneColumnActionContext, type KanbanSubgroupLaneColumnSummaryContext, 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, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, hasKanbanColumnBands, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
|
package/dist/kanban/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { selectKanbanCardFieldIds } from "./card-properties.js";
|
|
2
2
|
import { KANBAN_CARD_STICKY_TOP_VAR, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption } from "./sticky-lane.js";
|
|
3
3
|
import { KanbanCardShell } from "./card-shell.js";
|
|
4
|
+
import { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX } from "./layout-tokens.js";
|
|
4
5
|
import { KanbanCellAction } from "./cell-action.js";
|
|
5
6
|
import { KanbanColumnBandHeader } from "./column-band-header.js";
|
|
6
7
|
import { getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./grouping.js";
|
|
@@ -14,4 +15,4 @@ import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, registerKanban
|
|
|
14
15
|
import { KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS } from "./band-peek.js";
|
|
15
16
|
import { KanbanSubgroupBoard } from "./subgroup-board.js";
|
|
16
17
|
import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell } from "./virtual-cell.js";
|
|
17
|
-
export { KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanCellAction, KanbanCollapsedBandCaption, KanbanColumnBandHeader, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, hasKanbanColumnBands, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
|
|
18
|
+
export { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, KANBAN_BOARD_AUTO_SCROLL_OPTIONS, KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_BOARD_AXES, KANBAN_BOARD_COLLISION_DETECTION, KANBAN_CARD_DRAG_MIME, KANBAN_CARD_STICKY_TOP_VAR, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLLAPSED_BAND_WIDTH_PX, KANBAN_COLUMN_GAP_PX, KANBAN_COLUMN_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_PX, KANBAN_DIRECTIONS, KANBAN_DRAG_OVERLAY_Z_INDEX, KANBAN_HORIZONTAL_EDGES, KANBAN_MOUSE_ACTIVATION_DISTANCE, KANBAN_SORTABLE_ACTIVATION_MODES, KANBAN_STICKY_TOP_VAR, KANBAN_TOUCH_ACTIVATION_CONSTRAINT, KANBAN_VIRTUAL_CELL_PAGINATION, KanbanCardDragSurface, KanbanCardShell, KanbanCellAction, KanbanCollapsedBandCaption, KanbanColumnBandHeader, KanbanColumnHeader, KanbanDragHandle, KanbanSortableBoard, KanbanSortableColumns, KanbanSortableList, KanbanSubgroupBoard, KanbanVirtualCell, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, getKanbanHorizontalEdge, hasKanbanColumnBands, isKanbanGroupingRenderable, kanbanKeyboardCoordinates, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows, useKanbanDropTarget, useKanbanSortable, useKanbanSortableSensors };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region src/kanban/layout-tokens.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The heights the board's chrome rows are built from.
|
|
4
|
+
*
|
|
5
|
+
* A board stacks several rows of chrome above the first card — the band
|
|
6
|
+
* caption, the column headers, a lane's identity and its per-column
|
|
7
|
+
* summaries — and every one of them is pinned at some point, so their heights
|
|
8
|
+
* are what a card's own pinned row is offset by. Naming them once keeps the
|
|
9
|
+
* rows on a single rhythm and keeps the pixel value that offsets a sticky
|
|
10
|
+
* control in step with the class that draws the row.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Where the board's chrome stacks: its header block at `z-20`, a lane's own
|
|
14
|
+
* row at `z-10` under it. Both stay below the shell's chrome
|
|
15
|
+
* (`SHELL_CHROME_LAYER_CLASS_NAME`), which pins a top bar around whatever the
|
|
16
|
+
* board is rendered in: when the shell's content column rather than the board
|
|
17
|
+
* is the scroll container, board and shell chrome are pinned in the same
|
|
18
|
+
* scroller, and equal z-indexes would leave paint order to decide.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* The column header row and a lane's rows: a *fixed* height, tighter than the
|
|
22
|
+
* inspector's 48px toolbar row, because a board shows three of these before
|
|
23
|
+
* the first card and each one costs the cards their space. Fixed rather than
|
|
24
|
+
* minimum: a row that grows with its content moves every offset below it.
|
|
25
|
+
*/
|
|
26
|
+
declare const KANBAN_CHROME_ROW_HEIGHT: "h-9";
|
|
27
|
+
declare const KANBAN_CHROME_ROW_HEIGHT_PX: 36;
|
|
28
|
+
/**
|
|
29
|
+
* The band caption line, on the chrome row height like everything else: a band
|
|
30
|
+
* names the run of columns under it, so its caption reads as their parent. A
|
|
31
|
+
* shorter line with a smaller label read as a note *about* the header row, and
|
|
32
|
+
* left a group looking subordinate to its own columns.
|
|
33
|
+
*
|
|
34
|
+
* Still named for the caption, because that row is the one a caller composes
|
|
35
|
+
* against when it renders a band header of its own.
|
|
36
|
+
*/
|
|
37
|
+
declare const KANBAN_BAND_CAPTION_ROW_HEIGHT: "h-9";
|
|
38
|
+
declare const KANBAN_BAND_CAPTION_ROW_HEIGHT_PX: 36;
|
|
39
|
+
/**
|
|
40
|
+
* A finger's 44px target on a control the chrome row keeps at its own height.
|
|
41
|
+
*
|
|
42
|
+
* The same pseudo-element the shared `Button` extends its own targets with:
|
|
43
|
+
* the visible control keeps the row's height, and only the touch surface
|
|
44
|
+
* grows. The surface is a fixed 44px centred on the control rather than an
|
|
45
|
+
* inset off its edges, so a 28px toggle and a 36px one both reach the same
|
|
46
|
+
* distance either way, and neither spills into the row underneath: an inset
|
|
47
|
+
* grows a short control downwards by whatever it is short by.
|
|
48
|
+
*/
|
|
49
|
+
declare const KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS = "relative pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:top-1/2 pointer-coarse:after:h-11 pointer-coarse:after:-translate-y-1/2";
|
|
50
|
+
//#endregion
|
|
51
|
+
export { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//#region src/kanban/layout-tokens.ts
|
|
2
|
+
/**
|
|
3
|
+
* The heights the board's chrome rows are built from.
|
|
4
|
+
*
|
|
5
|
+
* A board stacks several rows of chrome above the first card — the band
|
|
6
|
+
* caption, the column headers, a lane's identity and its per-column
|
|
7
|
+
* summaries — and every one of them is pinned at some point, so their heights
|
|
8
|
+
* are what a card's own pinned row is offset by. Naming them once keeps the
|
|
9
|
+
* rows on a single rhythm and keeps the pixel value that offsets a sticky
|
|
10
|
+
* control in step with the class that draws the row.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Where the board's chrome stacks: its header block at `z-20`, a lane's own
|
|
14
|
+
* row at `z-10` under it. Both stay below the shell's chrome
|
|
15
|
+
* (`SHELL_CHROME_LAYER_CLASS_NAME`), which pins a top bar around whatever the
|
|
16
|
+
* board is rendered in: when the shell's content column rather than the board
|
|
17
|
+
* is the scroll container, board and shell chrome are pinned in the same
|
|
18
|
+
* scroller, and equal z-indexes would leave paint order to decide.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* The column header row and a lane's rows: a *fixed* height, tighter than the
|
|
22
|
+
* inspector's 48px toolbar row, because a board shows three of these before
|
|
23
|
+
* the first card and each one costs the cards their space. Fixed rather than
|
|
24
|
+
* minimum: a row that grows with its content moves every offset below it.
|
|
25
|
+
*/
|
|
26
|
+
const KANBAN_CHROME_ROW_HEIGHT = "h-9";
|
|
27
|
+
const KANBAN_CHROME_ROW_HEIGHT_PX = 36;
|
|
28
|
+
/**
|
|
29
|
+
* The band caption line, on the chrome row height like everything else: a band
|
|
30
|
+
* names the run of columns under it, so its caption reads as their parent. A
|
|
31
|
+
* shorter line with a smaller label read as a note *about* the header row, and
|
|
32
|
+
* left a group looking subordinate to its own columns.
|
|
33
|
+
*
|
|
34
|
+
* Still named for the caption, because that row is the one a caller composes
|
|
35
|
+
* against when it renders a band header of its own.
|
|
36
|
+
*/
|
|
37
|
+
const KANBAN_BAND_CAPTION_ROW_HEIGHT = "h-9";
|
|
38
|
+
const KANBAN_BAND_CAPTION_ROW_HEIGHT_PX = 36;
|
|
39
|
+
/**
|
|
40
|
+
* A finger's 44px target on a control the chrome row keeps at its own height.
|
|
41
|
+
*
|
|
42
|
+
* The same pseudo-element the shared `Button` extends its own targets with:
|
|
43
|
+
* the visible control keeps the row's height, and only the touch surface
|
|
44
|
+
* grows. The surface is a fixed 44px centred on the control rather than an
|
|
45
|
+
* inset off its edges, so a 28px toggle and a 36px one both reach the same
|
|
46
|
+
* distance either way, and neither spills into the row underneath: an inset
|
|
47
|
+
* grows a short control downwards by whatever it is short by.
|
|
48
|
+
*/
|
|
49
|
+
const KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS = "relative pointer-coarse:after:absolute pointer-coarse:after:inset-x-0 pointer-coarse:after:top-1/2 pointer-coarse:after:h-11 pointer-coarse:after:-translate-y-1/2";
|
|
50
|
+
//#endregion
|
|
51
|
+
export { KANBAN_BAND_CAPTION_ROW_HEIGHT, KANBAN_BAND_CAPTION_ROW_HEIGHT_PX, KANBAN_CHROME_ROW_HEIGHT, KANBAN_CHROME_ROW_HEIGHT_PX, KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS };
|
|
@@ -59,7 +59,7 @@ const KanbanCollapsedBandCaption = ({ className, label, meta }) => /* @__PURE__
|
|
|
59
59
|
className: cn("text-muted-foreground sticky flex w-full flex-col items-center gap-2 self-start py-2 text-xs", KANBAN_STICKY_TOP_CLASS, className),
|
|
60
60
|
"data-kanban-collapsed-band-caption": "",
|
|
61
61
|
children: [/* @__PURE__ */ jsx("span", {
|
|
62
|
-
className: "max-h-40 truncate font-
|
|
62
|
+
className: "max-h-40 truncate font-semibold [writing-mode:vertical-rl]",
|
|
63
63
|
children: label
|
|
64
64
|
}), /* @__PURE__ */ jsx("span", {
|
|
65
65
|
className: "tabular-nums",
|
|
@@ -11,6 +11,17 @@ type KanbanSubgroupLaneIdentityContext = {
|
|
|
11
11
|
group: KanbanGroup;
|
|
12
12
|
count: number;
|
|
13
13
|
};
|
|
14
|
+
/** One column's cell in a lane's own row, and what that cell stands for. */
|
|
15
|
+
type KanbanSubgroupLaneColumnSummaryContext = {
|
|
16
|
+
lane: KanbanGroup;
|
|
17
|
+
column: KanbanBoardColumn;
|
|
18
|
+
/** Rows in this lane/column intersection, including zero. */
|
|
19
|
+
count: number;
|
|
20
|
+
};
|
|
21
|
+
type KanbanSubgroupLaneColumnActionContext = {
|
|
22
|
+
lane: KanbanGroup;
|
|
23
|
+
column: KanbanBoardColumn;
|
|
24
|
+
};
|
|
14
25
|
type KanbanSubgroupCellContext<TRow> = {
|
|
15
26
|
cell: KanbanBoardCell<TRow>;
|
|
16
27
|
/** Number of rows in this lane/column intersection, including zero. */
|
|
@@ -66,6 +77,18 @@ type KanbanSubgroupBoardProps<TRow> = {
|
|
|
66
77
|
renderColumnHeader: (context: KanbanSubgroupColumnHeaderContext) => ReactNode;
|
|
67
78
|
renderLaneIdentity: (context: KanbanSubgroupLaneIdentityContext) => ReactNode;
|
|
68
79
|
renderCell: (context: KanbanSubgroupCellContext<TRow>) => ReactNode;
|
|
80
|
+
/**
|
|
81
|
+
* What a lane's own row says about one column: its count by default. The
|
|
82
|
+
* row is pinned, so this is the one line about a column that survives a
|
|
83
|
+
* scroll down a lane hundreds of cards tall — a calculation belongs here
|
|
84
|
+
* rather than at the end of a cell nobody reaches.
|
|
85
|
+
*/
|
|
86
|
+
renderLaneColumnSummary?: ((context: KanbanSubgroupLaneColumnSummaryContext) => ReactNode) | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* The control at the end of a lane's cell for one column, such as adding a
|
|
89
|
+
* card straight into that intersection. None by default.
|
|
90
|
+
*/
|
|
91
|
+
renderLaneColumnAction?: ((context: KanbanSubgroupLaneColumnActionContext) => ReactNode) | undefined;
|
|
69
92
|
/**
|
|
70
93
|
* The line above a band's columns. Defaults to `KanbanColumnBandHeader`
|
|
71
94
|
* with the band's label and count.
|
|
@@ -115,6 +138,11 @@ type KanbanSubgroupBoardProps<TRow> = {
|
|
|
115
138
|
/**
|
|
116
139
|
* Reusable swimlane layout over the canonical two-axis Kanban matrix.
|
|
117
140
|
*
|
|
141
|
+
* Every lane leads with a row of its own, pinned on both axes: its name at the
|
|
142
|
+
* visible inline edge, and beside each column what that column holds in this
|
|
143
|
+
* lane, so a reader deep inside a lane still knows which lane it is and what
|
|
144
|
+
* is around them.
|
|
145
|
+
*
|
|
118
146
|
* Columns that carry band metadata render under a one-line band caption and
|
|
119
147
|
* can be collapsed as a run: the band folds into one narrow slot in every
|
|
120
148
|
* row, whose cells stay reachable (a host renders its drop target in them),
|
|
@@ -124,6 +152,6 @@ type KanbanSubgroupBoardProps<TRow> = {
|
|
|
124
152
|
* in every state; the caption line never grows past its own height, so a
|
|
125
153
|
* folded band costs no vertical space.
|
|
126
154
|
*/
|
|
127
|
-
declare const KanbanSubgroupBoard: <TRow>({ matrix, renderColumnHeader, renderLaneIdentity, renderCell, renderBandHeader, renderCollapsedBandCell, formatBandToggleLabel, formatCount, isLaneCollapsed, onLaneCollapsedChange, isBandCollapsed, onBandCollapsedChange, footer, className, dragOverBandId, isDragging }: KanbanSubgroupBoardProps<TRow>) => import("react").JSX.Element;
|
|
155
|
+
declare const KanbanSubgroupBoard: <TRow>({ matrix, renderColumnHeader, renderLaneIdentity, renderCell, renderLaneColumnSummary, renderLaneColumnAction, renderBandHeader, renderCollapsedBandCell, formatBandToggleLabel, formatCount, isLaneCollapsed, onLaneCollapsedChange, isBandCollapsed, onBandCollapsedChange, footer, className, dragOverBandId, isDragging }: KanbanSubgroupBoardProps<TRow>) => import("react").JSX.Element;
|
|
128
156
|
//#endregion
|
|
129
|
-
export { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneIdentityContext };
|
|
157
|
+
export { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneColumnActionContext, KanbanSubgroupLaneColumnSummaryContext, KanbanSubgroupLaneIdentityContext };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cn } from "../lib/utils.js";
|
|
2
2
|
import { DirectionalIcon } from "../components/directional-icon.js";
|
|
3
|
-
import { KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption } from "./sticky-lane.js";
|
|
3
|
+
import { KANBAN_STICKY_TOP_CLASS, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption } from "./sticky-lane.js";
|
|
4
|
+
import { KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS } from "./layout-tokens.js";
|
|
4
5
|
import { KanbanColumnBandHeader } from "./column-band-header.js";
|
|
5
6
|
import { KANBAN_COLLAPSED_BAND_WIDTH_CLASS, KANBAN_COLUMN_WIDTH_CLASS, resolveKanbanColumnBands } from "./column-bands.js";
|
|
6
7
|
import { KANBAN_CARD_DRAG_MIME } from "./drag-interactions.js";
|
|
@@ -9,6 +10,17 @@ import { ChevronDownIcon } from "lucide-react";
|
|
|
9
10
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
11
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
11
12
|
//#region src/kanban/subgroup-board.tsx
|
|
13
|
+
/**
|
|
14
|
+
* How far a lane's own pinned row reaches: its identity line over the line of
|
|
15
|
+
* per-column summaries, each fixed at the chrome row height.
|
|
16
|
+
*
|
|
17
|
+
* Stated rather than measured, because both lines are fixed by construction —
|
|
18
|
+
* a caller's summary or action renders inside a row that cannot grow — and the
|
|
19
|
+
* cells below have to know the offset before the first paint, or every card's
|
|
20
|
+
* pinned identity row spends that frame parked where the lane row is about
|
|
21
|
+
* to be.
|
|
22
|
+
*/
|
|
23
|
+
const LANE_ROW_HEIGHT_PX = 72;
|
|
12
24
|
const groupValueKey = (value) => value === null ? "null" : `value:${value.length}:${value}`;
|
|
13
25
|
const columnKey = (column) => column.type === "group" ? `group:${groupValueKey(column.group.value)}` : `destination:${column.destination.id}`;
|
|
14
26
|
const spanKey = (span) => span.band === null ? `single:${span.columns.map(columnKey).join("|")}` : `band:${span.band.id}`;
|
|
@@ -16,6 +28,11 @@ const rowsIn = (cells) => cells.reduce((sum, cell) => sum + cell.rows.length, 0)
|
|
|
16
28
|
/**
|
|
17
29
|
* Reusable swimlane layout over the canonical two-axis Kanban matrix.
|
|
18
30
|
*
|
|
31
|
+
* Every lane leads with a row of its own, pinned on both axes: its name at the
|
|
32
|
+
* visible inline edge, and beside each column what that column holds in this
|
|
33
|
+
* lane, so a reader deep inside a lane still knows which lane it is and what
|
|
34
|
+
* is around them.
|
|
35
|
+
*
|
|
19
36
|
* Columns that carry band metadata render under a one-line band caption and
|
|
20
37
|
* can be collapsed as a run: the band folds into one narrow slot in every
|
|
21
38
|
* row, whose cells stay reachable (a host renders its drop target in them),
|
|
@@ -25,7 +42,7 @@ const rowsIn = (cells) => cells.reduce((sum, cell) => sum + cell.rows.length, 0)
|
|
|
25
42
|
* in every state; the caption line never grows past its own height, so a
|
|
26
43
|
* folded band costs no vertical space.
|
|
27
44
|
*/
|
|
28
|
-
const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, renderCell, renderBandHeader, renderCollapsedBandCell, formatBandToggleLabel, formatCount = String, isLaneCollapsed, onLaneCollapsedChange, isBandCollapsed, onBandCollapsedChange, footer, className, dragOverBandId, isDragging }) => {
|
|
45
|
+
const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, renderCell, renderLaneColumnSummary, renderLaneColumnAction, renderBandHeader, renderCollapsedBandCell, formatBandToggleLabel, formatCount = String, isLaneCollapsed, onLaneCollapsedChange, isBandCollapsed, onBandCollapsedChange, footer, className, dragOverBandId, isDragging }) => {
|
|
29
46
|
const [collapsedLaneValues, setCollapsedLaneValues] = useState(() => /* @__PURE__ */ new Set());
|
|
30
47
|
const [expandedEmptyLaneValues, setExpandedEmptyLaneValues] = useState(() => /* @__PURE__ */ new Set());
|
|
31
48
|
const [collapsedBandIds, setCollapsedBandIds] = useState(() => /* @__PURE__ */ new Set());
|
|
@@ -221,7 +238,7 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
221
238
|
const foldedCount = (span, cells) => {
|
|
222
239
|
const count = rowsIn(cellsOf(span, cells));
|
|
223
240
|
return /* @__PURE__ */ jsx("div", {
|
|
224
|
-
className: "flex justify-center",
|
|
241
|
+
className: cn("flex items-center justify-center", "h-9"),
|
|
225
242
|
"data-kanban-lane-column-count": count,
|
|
226
243
|
children: /* @__PURE__ */ jsx("span", {
|
|
227
244
|
className: "text-muted-foreground text-xs tabular-nums",
|
|
@@ -229,7 +246,33 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
229
246
|
})
|
|
230
247
|
});
|
|
231
248
|
};
|
|
249
|
+
/** One column's cell in a lane's row: what it holds, then what it offers. */
|
|
250
|
+
const laneColumnCell = (group, column, count) => /* @__PURE__ */ jsxs("div", {
|
|
251
|
+
className: cn("flex items-center gap-1 px-3", "h-9"),
|
|
252
|
+
"data-kanban-lane-column-count": count,
|
|
253
|
+
children: [renderLaneColumnSummary ? renderLaneColumnSummary({
|
|
254
|
+
column,
|
|
255
|
+
count,
|
|
256
|
+
lane: group
|
|
257
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
258
|
+
className: "text-muted-foreground text-xs tabular-nums",
|
|
259
|
+
children: formatCount(count)
|
|
260
|
+
}), renderLaneColumnAction === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
261
|
+
className: "ms-auto flex items-center",
|
|
262
|
+
children: renderLaneColumnAction({
|
|
263
|
+
column,
|
|
264
|
+
lane: group
|
|
265
|
+
})
|
|
266
|
+
})]
|
|
267
|
+
});
|
|
232
268
|
const stickyTopStyle = { [KANBAN_STICKY_TOP_VAR]: `${String(headerHeight)}px` };
|
|
269
|
+
/**
|
|
270
|
+
* What a lane's cells find pinned above them: the board's header and the
|
|
271
|
+
* lane's own row. Restating the offset rather than adding to the inherited
|
|
272
|
+
* one, because a custom property that reads itself is a cycle and resolves
|
|
273
|
+
* to nothing at all.
|
|
274
|
+
*/
|
|
275
|
+
const laneCellsStickyTopStyle = { [KANBAN_STICKY_TOP_VAR]: `${String(headerHeight + LANE_ROW_HEIGHT_PX)}px` };
|
|
233
276
|
return /* @__PURE__ */ jsx("div", {
|
|
234
277
|
className: cn("h-full overflow-auto px-4 pb-4", className),
|
|
235
278
|
style: stickyTopStyle,
|
|
@@ -237,7 +280,7 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
237
280
|
className: "min-w-max",
|
|
238
281
|
children: [
|
|
239
282
|
/* @__PURE__ */ jsxs("div", {
|
|
240
|
-
className: "bg-background sticky top-0 z-20
|
|
283
|
+
className: "bg-background sticky top-0 z-20",
|
|
241
284
|
"data-kanban-board-header": "",
|
|
242
285
|
ref: headerRef,
|
|
243
286
|
children: [hasBands ? /* @__PURE__ */ jsx("div", {
|
|
@@ -265,7 +308,11 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
265
308
|
onDragLeave: (event) => {
|
|
266
309
|
if (leavesElement(event) && isKanbanCardDragEvent(event)) peek.openDragLeave(band.id);
|
|
267
310
|
},
|
|
268
|
-
children:
|
|
311
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
312
|
+
className: "bg-background sticky start-0 z-10 w-fit max-w-full",
|
|
313
|
+
"data-kanban-band-caption": "",
|
|
314
|
+
children: bandHeader(band, span)
|
|
315
|
+
})
|
|
269
316
|
}, spanKey(span));
|
|
270
317
|
})
|
|
271
318
|
}) : null, renderRow({
|
|
@@ -299,12 +346,15 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
299
346
|
const cellFor = (column) => cells.find((candidate) => columnKey(candidate.coordinate.column) === columnKey(column));
|
|
300
347
|
return /* @__PURE__ */ jsxs("section", {
|
|
301
348
|
className: "border-border/60 border-b py-1 first:pt-0 last:border-b-0",
|
|
302
|
-
children: [
|
|
303
|
-
|
|
304
|
-
|
|
349
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
350
|
+
className: cn("bg-background sticky z-10", KANBAN_STICKY_TOP_CLASS),
|
|
351
|
+
"data-kanban-lane-row": "",
|
|
352
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
353
|
+
className: cn("bg-background sticky start-0 z-10 flex w-fit items-center", "h-9"),
|
|
354
|
+
"data-kanban-lane-identity": "",
|
|
305
355
|
children: /* @__PURE__ */ jsxs("button", {
|
|
306
356
|
"aria-expanded": !collapsed,
|
|
307
|
-
className: "hover:bg-muted/60 flex
|
|
357
|
+
className: cn("hover:bg-muted/60 flex items-center gap-2 rounded-lg px-2 text-start transition-[background-color]", "h-9", KANBAN_CHROME_TOGGLE_COARSE_TARGET_CLASS),
|
|
308
358
|
onClick: () => setLaneCollapsed(group, count, !collapsed),
|
|
309
359
|
type: "button",
|
|
310
360
|
children: [
|
|
@@ -323,23 +373,14 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
323
373
|
})
|
|
324
374
|
]
|
|
325
375
|
})
|
|
326
|
-
}),
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
renderColumn: (column) => {
|
|
330
|
-
const columnRows = cellFor(column)?.rows.length ?? 0;
|
|
331
|
-
return /* @__PURE__ */ jsx("div", {
|
|
332
|
-
className: "px-3",
|
|
333
|
-
"data-kanban-lane-column-count": columnRows,
|
|
334
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
335
|
-
className: "text-muted-foreground text-xs tabular-nums",
|
|
336
|
-
children: formatCount(columnRows)
|
|
337
|
-
})
|
|
338
|
-
});
|
|
339
|
-
},
|
|
376
|
+
}), renderRow({
|
|
377
|
+
label: "Lane column summaries",
|
|
378
|
+
renderColumn: (column) => laneColumnCell(group, column, cellFor(column)?.rows.length ?? 0),
|
|
340
379
|
renderFoldedBand: (_band, span) => foldedCount(span, cells)
|
|
341
|
-
})
|
|
342
|
-
|
|
380
|
+
})]
|
|
381
|
+
}), !collapsed && /* @__PURE__ */ jsx("div", {
|
|
382
|
+
style: laneCellsStickyTopStyle,
|
|
383
|
+
children: renderRow({
|
|
343
384
|
className: "pb-1",
|
|
344
385
|
renderColumn: (column, band) => {
|
|
345
386
|
const cell = cellFor(column);
|
|
@@ -352,7 +393,7 @@ const KanbanSubgroupBoard = ({ matrix, renderColumnHeader, renderLaneIdentity, r
|
|
|
352
393
|
},
|
|
353
394
|
renderFoldedBand: (band, span) => foldedCell(band, span, cells, group.value)
|
|
354
395
|
})
|
|
355
|
-
]
|
|
396
|
+
})]
|
|
356
397
|
}, groupValueKey(group.value));
|
|
357
398
|
}),
|
|
358
399
|
footer
|
|
@@ -5,6 +5,6 @@ declare const CONTROL_SIZE: Readonly<{
|
|
|
5
5
|
readonly lg: "lg";
|
|
6
6
|
}>;
|
|
7
7
|
type ControlSize = (typeof CONTROL_SIZE)[keyof typeof CONTROL_SIZE];
|
|
8
|
-
declare const CONTROL_SIZES: readonly ("
|
|
8
|
+
declare const CONTROL_SIZES: readonly ("default" | "lg" | "sm")[];
|
|
9
9
|
//#endregion
|
|
10
10
|
export { CONTROL_SIZE, CONTROL_SIZES, type ControlSize };
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
//#region src/lib/overlay-layer.d.ts
|
|
2
2
|
declare const BOARD_DRAG_OVERLAY_Z_INDEX = 75;
|
|
3
|
+
/**
|
|
4
|
+
* The shell's own sticky chrome: its top bar, and anything else the shell pins
|
|
5
|
+
* around a view.
|
|
6
|
+
*
|
|
7
|
+
* Not part of the ladder below, which is for portalled surfaces: this one
|
|
8
|
+
* stays in flow, so it only ever competes with the sticky chrome a view paints
|
|
9
|
+
* inside the shell's scroller. A kanban board pins its header at z-20 and a
|
|
10
|
+
* lane's row at z-10, and when the shell's content column (not the board) is
|
|
11
|
+
* the scroll container the two tie and paint order decides which one wins.
|
|
12
|
+
* Stated one step above that, and far below every portalled surface here,
|
|
13
|
+
* which must still cover the shell.
|
|
14
|
+
*/
|
|
15
|
+
declare const SHELL_CHROME_LAYER_CLASS_NAME = "z-30";
|
|
3
16
|
declare const OVERLAY_LAYER_CLASS_NAMES: {
|
|
4
17
|
/** Docked composer, suggestion chips, and other in-pane floating chrome. */
|
|
5
18
|
readonly chrome: "z-[80]";
|
|
@@ -27,4 +40,4 @@ type OverlayLayer = keyof typeof OVERLAY_LAYER_CLASS_NAMES;
|
|
|
27
40
|
*/
|
|
28
41
|
declare const OVERLAY_COLLISION_PADDING = 8;
|
|
29
42
|
//#endregion
|
|
30
|
-
export { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OverlayLayer };
|
|
43
|
+
export { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, OverlayLayer, SHELL_CHROME_LAYER_CLASS_NAME };
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
//#region src/lib/overlay-layer.ts
|
|
2
2
|
const BOARD_DRAG_OVERLAY_Z_INDEX = 75;
|
|
3
|
+
/**
|
|
4
|
+
* The shell's own sticky chrome: its top bar, and anything else the shell pins
|
|
5
|
+
* around a view.
|
|
6
|
+
*
|
|
7
|
+
* Not part of the ladder below, which is for portalled surfaces: this one
|
|
8
|
+
* stays in flow, so it only ever competes with the sticky chrome a view paints
|
|
9
|
+
* inside the shell's scroller. A kanban board pins its header at z-20 and a
|
|
10
|
+
* lane's row at z-10, and when the shell's content column (not the board) is
|
|
11
|
+
* the scroll container the two tie and paint order decides which one wins.
|
|
12
|
+
* Stated one step above that, and far below every portalled surface here,
|
|
13
|
+
* which must still cover the shell.
|
|
14
|
+
*/
|
|
15
|
+
const SHELL_CHROME_LAYER_CLASS_NAME = "z-30";
|
|
3
16
|
const OVERLAY_LAYER_CLASS_NAMES = {
|
|
4
17
|
/** Docked composer, suggestion chips, and other in-pane floating chrome. */
|
|
5
18
|
chrome: "z-[80]",
|
|
@@ -26,4 +39,4 @@ const OVERLAY_LAYER_CLASS_NAMES = {
|
|
|
26
39
|
*/
|
|
27
40
|
const OVERLAY_COLLISION_PADDING = 8;
|
|
28
41
|
//#endregion
|
|
29
|
-
export { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES };
|
|
42
|
+
export { BOARD_DRAG_OVERLAY_Z_INDEX, OVERLAY_COLLISION_PADDING, OVERLAY_LAYER_CLASS_NAMES, SHELL_CHROME_LAYER_CLASS_NAME };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stll/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "Stella's design system: bidi-aware React primitives built on Base UI, the dockable inspector pane, and the Tailwind v4 theme they are styled with.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"base-ui",
|
|
@@ -581,7 +581,7 @@
|
|
|
581
581
|
"typecheck": "bun ../../packages/scripts/src/tsc-native.ts --noEmit",
|
|
582
582
|
"lint": "cd ../.. && bun --bun oxlint -c oxlint.config.ts --report-unused-disable-directives-severity=error --deny-warnings --type-aware packages/ui",
|
|
583
583
|
"lint:fix": "cd ../.. && bun --bun oxlint -c oxlint.config.ts --type-aware --fix packages/ui",
|
|
584
|
-
"format": "oxfmt .",
|
|
584
|
+
"format": "bun ../../scripts/run-oxfmt.ts .",
|
|
585
585
|
"prepack": "bun run build"
|
|
586
586
|
},
|
|
587
587
|
"dependencies": {
|
|
@@ -593,8 +593,8 @@
|
|
|
593
593
|
"tailwind-merge": "^3.6.0"
|
|
594
594
|
},
|
|
595
595
|
"devDependencies": {
|
|
596
|
-
"@atlaskit/pragmatic-drag-and-drop": "^3.
|
|
597
|
-
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.
|
|
596
|
+
"@atlaskit/pragmatic-drag-and-drop": "^3.1.0",
|
|
597
|
+
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.2.0",
|
|
598
598
|
"@base-ui/react": "1.7.0",
|
|
599
599
|
"@dnd-kit/core": "^6.3.1",
|
|
600
600
|
"@dnd-kit/sortable": "^10.0.0",
|
|
@@ -604,7 +604,7 @@
|
|
|
604
604
|
"@tanstack/react-virtual": "^3.14.10",
|
|
605
605
|
"@types/react": "^19.2.17",
|
|
606
606
|
"@types/react-dom": "^19.2.3",
|
|
607
|
-
"bun-types": "1.4.
|
|
607
|
+
"bun-types": "1.4.1",
|
|
608
608
|
"react": "^19.2.8",
|
|
609
609
|
"react-dom": "^19.2.8",
|
|
610
610
|
"tailwindcss": "4.3.3",
|
|
@@ -612,8 +612,8 @@
|
|
|
612
612
|
"vite": "8.2.1"
|
|
613
613
|
},
|
|
614
614
|
"peerDependencies": {
|
|
615
|
-
"@atlaskit/pragmatic-drag-and-drop": "^3.
|
|
616
|
-
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.
|
|
615
|
+
"@atlaskit/pragmatic-drag-and-drop": "^3.1.0",
|
|
616
|
+
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.2.0",
|
|
617
617
|
"@base-ui/react": "^1.7.0",
|
|
618
618
|
"@dnd-kit/core": "^6.3.1",
|
|
619
619
|
"@dnd-kit/sortable": "^10.0.0",
|