@stll/ui 0.52.0 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/components/alert-dialog.d.ts +1 -1
  2. package/dist/components/alert-dialog.js +2 -2
  3. package/dist/components/bidi-text.d.ts +1 -1
  4. package/dist/components/button.d.ts +33 -3
  5. package/dist/components/button.js +43 -3
  6. package/dist/components/combobox.d.ts +1 -2
  7. package/dist/components/combobox.js +1 -2
  8. package/dist/components/details-grid.js +1 -1
  9. package/dist/components/dialog.d.ts +1 -1
  10. package/dist/components/dialog.js +2 -2
  11. package/dist/components/inline-rename.js +1 -0
  12. package/dist/components/input-group.d.ts +1 -1
  13. package/dist/components/menu.d.ts +2 -2
  14. package/dist/components/menu.js +1 -1
  15. package/dist/components/outline-rail.d.ts +1 -1
  16. package/dist/components/outline-rail.js +126 -85
  17. package/dist/components/outline-rail.logic.d.ts +25 -0
  18. package/dist/components/outline-rail.logic.js +40 -0
  19. package/dist/components/popover.js +1 -1
  20. package/dist/components/prose.d.ts +1 -1
  21. package/dist/components/sheet.d.ts +1 -1
  22. package/dist/components/sheet.js +2 -2
  23. package/dist/components/sidebar.d.ts +1 -1
  24. package/dist/components/sidebar.js +1 -1
  25. package/dist/components/split-button.d.ts +3 -1
  26. package/dist/components/split-button.js +3 -1
  27. package/dist/components/steps.d.ts +2 -2
  28. package/dist/components/toast.d.ts +7 -1
  29. package/dist/components/toast.js +39 -15
  30. package/dist/components/tooltip-trigger-helper.d.ts +5 -0
  31. package/dist/components/tooltip-trigger-helper.js +5 -0
  32. package/dist/icons.d.ts +2 -2
  33. package/dist/icons.js +1 -1
  34. package/dist/index.d.ts +5 -5
  35. package/dist/index.js +3 -3
  36. package/dist/kanban/card-shell.d.ts +14 -1
  37. package/dist/kanban/card-shell.js +33 -4
  38. package/dist/kanban/column-header.js +1 -0
  39. package/dist/kanban/drag-interactions.d.ts +14 -1
  40. package/dist/kanban/drag-interactions.js +19 -7
  41. package/dist/kanban/index.d.ts +3 -3
  42. package/dist/lib/control-size.d.ts +1 -1
  43. package/dist/lib/matter-colors.d.ts +1 -1
  44. package/package.json +5 -3
@@ -1,3 +1,4 @@
1
+ import { panic } from "better-result";
1
2
  import { autoScrollForElements } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
2
3
  import { autoScrollForExternal } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/external";
3
4
  import { draggable } from "@atlaskit/pragmatic-drag-and-drop/adapter/element-adapter";
@@ -13,6 +14,15 @@ import { setCustomNativeDragPreview } from "@atlaskit/pragmatic-drag-and-drop/ut
13
14
  * reaches those native events; only data attached this way does.
14
15
  */
15
16
  const KANBAN_CARD_DRAG_MIME = "application/x-stella-kanban-card";
17
+ /** The styled card inside the shell's drag wrapper, at its rendered width. */
18
+ const appendCardClone = (element, container) => {
19
+ const card = element.firstElementChild;
20
+ if (!(card instanceof HTMLElement)) return;
21
+ const clone = card.cloneNode(true);
22
+ if (!(clone instanceof HTMLElement)) return;
23
+ clone.style.width = `${card.getBoundingClientRect().width}px`;
24
+ container.append(clone);
25
+ };
16
26
  /**
17
27
  * Register the standard kanban card drag source and native preview.
18
28
  *
@@ -20,7 +30,7 @@ const KANBAN_CARD_DRAG_MIME = "application/x-stella-kanban-card";
20
30
  * or persist a drop. It owns the interaction every card shares, including a
21
31
  * pointer-centred preview cloned from the styled card inside the shell.
22
32
  */
23
- const registerKanbanCardDrag = ({ element, getInitialData, canDrag, onDragStart, onDrop }) => draggable({
33
+ const registerKanbanCardDrag = ({ element, getInitialData, canDrag, onDragStart, onDrop, getDragPreview }) => draggable({
24
34
  element,
25
35
  getInitialData,
26
36
  getInitialDataForExternal: () => ({ [KANBAN_CARD_DRAG_MIME]: "" }),
@@ -32,12 +42,14 @@ const registerKanbanCardDrag = ({ element, getInitialData, canDrag, onDragStart,
32
42
  nativeSetDragImage,
33
43
  getOffset: centerUnderPointer,
34
44
  render: ({ container }) => {
35
- const card = element.firstElementChild;
36
- if (!(card instanceof HTMLElement)) return;
37
- const clone = card.cloneNode(true);
38
- if (!(clone instanceof HTMLElement)) return;
39
- clone.style.width = `${card.getBoundingClientRect().width}px`;
40
- container.append(clone);
45
+ const preview = getDragPreview?.() ?? { type: "card" };
46
+ switch (preview.type) {
47
+ case "custom": return preview.render(container);
48
+ case "card":
49
+ appendCardClone(element, container);
50
+ return;
51
+ default: return panic(`Unhandled kanban drag preview: ${String(preview)}`);
52
+ }
41
53
  }
42
54
  });
43
55
  }
@@ -1,5 +1,5 @@
1
1
  import { KanbanCardFieldSelection, selectKanbanCardFieldIds } from "./card-properties.js";
2
- import { KanbanCardShell, KanbanCardShellProps } from "./card-shell.js";
2
+ import { KanbanCardSelectionModifiers, KanbanCardShell, KanbanCardShellProps } from "./card-shell.js";
3
3
  import { KanbanCellAction, KanbanCellActionProps } from "./cell-action.js";
4
4
  import { KanbanBandToggleActivation, KanbanColumnBandHeader, KanbanColumnBandHeaderProps } from "./column-band-header.js";
5
5
  import { KanbanBuiltInGroup, KanbanColumnBand, KanbanGroup, KanbanGroupOption, KanbanGrouping, KanbanSchema, ResolveKanbanGroupingParams, getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows } from "./grouping.js";
@@ -7,9 +7,9 @@ import { BuildKanbanBoardMatrixParams, CreateKanbanDropIntentParams, KANBAN_BOAR
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
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";
10
- import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./drag-interactions.js";
10
+ import { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, KanbanCardDragPreview, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag } from "./drag-interactions.js";
11
11
  import { KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, KanbanSubgroupBoardProps, KanbanSubgroupCellContext, KanbanSubgroupCollapsedBandCellContext, KanbanSubgroupColumnHeaderContext, KanbanSubgroupLaneColumnActionContext, KanbanSubgroupLaneColumnSummaryContext, KanbanSubgroupLaneIdentityContext } from "./subgroup-board.js";
12
12
  import { KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS } from "./band-peek.js";
13
13
  import { KANBAN_CARD_STICKY_TOP_VAR, KANBAN_STICKY_TOP_VAR, KanbanCollapsedBandCaption, KanbanCollapsedBandCaptionProps } from "./sticky-lane.js";
14
14
  import { KANBAN_VIRTUAL_CELL_PAGINATION, KanbanVirtualCell, KanbanVirtualCellPagination, KanbanVirtualCellProps } from "./virtual-cell.js";
15
- 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_SOURCES, KANBAN_BOARD_AXES, 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_STICKY_TOP_VAR, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, type KanbanCardFieldSelection, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanSchema, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneColumnActionContext, type KanbanSubgroupLaneColumnSummaryContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type OrderKanbanCellsByColumnsParams, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, hasKanbanColumnBands, isKanbanGroupingRenderable, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows };
15
+ 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_SOURCES, KANBAN_BOARD_AXES, 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_STICKY_TOP_VAR, KANBAN_VIRTUAL_CELL_PAGINATION, type KanbanBandToggleActivation, type KanbanBoardAxis, type KanbanBoardCell, type KanbanBoardColumn, type KanbanBoardCoordinate, type KanbanBoardDestination, type KanbanBoardLane, type KanbanBoardMatrix, type KanbanBuiltInGroup, type KanbanCardDragPreview, type KanbanCardFieldSelection, type KanbanCardSelectionModifiers, KanbanCardShell, type KanbanCardShellProps, KanbanCellAction, type KanbanCellActionProps, KanbanCollapsedBandCaption, type KanbanCollapsedBandCaptionProps, type KanbanColumnBand, KanbanColumnBandHeader, type KanbanColumnBandHeaderProps, type KanbanColumnBandSpan, KanbanColumnHeader, type KanbanColumnHeaderProps, type KanbanDropAxisChange, type KanbanDropIntent, type KanbanGroup, type KanbanGroupOption, type KanbanGrouping, type KanbanSchema, type KanbanSubgroupBandHeaderContext, KanbanSubgroupBoard, type KanbanSubgroupBoardProps, type KanbanSubgroupCellContext, type KanbanSubgroupCollapsedBandCellContext, type KanbanSubgroupColumnHeaderContext, type KanbanSubgroupLaneColumnActionContext, type KanbanSubgroupLaneColumnSummaryContext, type KanbanSubgroupLaneIdentityContext, KanbanVirtualCell, type KanbanVirtualCellPagination, type KanbanVirtualCellProps, type OrderKanbanCellsByColumnsParams, type RegisterKanbanBoardAutoScrollOptions, type RegisterKanbanCardDragOptions, type ResolveKanbanGroupValueParams, type ResolveKanbanGroupingParams, buildKanbanBoardMatrix, createKanbanDropIntent, getKanbanBoardColumnIdentity, getKanbanBoardLaneIdentity, getKanbanGroupingPropertyId, getKanbanGroups, hasKanbanColumnBands, isKanbanGroupingRenderable, orderKanbanCellsByColumns, registerKanbanBoardAutoScroll, registerKanbanCardDrag, resolveKanbanColumnBands, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanCardFieldIds, selectKanbanRows };
@@ -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 ("default" | "sm" | "lg")[];
8
+ declare const CONTROL_SIZES: readonly ("default" | "lg" | "sm")[];
9
9
  //#endregion
10
10
  export { CONTROL_SIZE, CONTROL_SIZES, type ControlSize };
@@ -1,7 +1,7 @@
1
1
  import { CSSProperties } from "react";
2
2
  //#region src/lib/matter-colors.d.ts
3
3
  export declare const MATTER_SWATCHES: readonly ["--option-blue", "--option-emerald", "--option-amber", "--option-violet", "--option-red", "--option-cyan", "--option-orange", "--option-teal"];
4
- export declare const getMatterSwatch: (id: string) => "--option-blue" | "--option-emerald" | "--option-amber" | "--option-violet" | "--option-red" | "--option-cyan" | "--option-orange" | "--option-teal";
4
+ export declare const getMatterSwatch: (id: string) => "--option-amber" | "--option-blue" | "--option-cyan" | "--option-emerald" | "--option-orange" | "--option-red" | "--option-teal" | "--option-violet";
5
5
  export declare const getMatterColor: (id: string) => string;
6
6
  export declare const getMatterPickerColor: (id: string, color: string | null) => string;
7
7
  export declare const toStoredMatterColor: (color: string) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/ui",
3
- "version": "0.52.0",
3
+ "version": "0.53.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",
@@ -744,16 +744,17 @@
744
744
  "class-variance-authority": "^0.7.1",
745
745
  "clsx": "^2.1.1",
746
746
  "input-otp": "^1.5.0",
747
- "lucide-react": "1.41.0",
747
+ "lucide-react": "1.59.0",
748
748
  "tailwind-merge": "^3.7.0",
749
749
  "temporal-polyfill": "1.0.5"
750
750
  },
751
751
  "devDependencies": {
752
752
  "@atlaskit/pragmatic-drag-and-drop": "^4.0.0",
753
753
  "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^3.2.1",
754
- "@base-ui/react": "1.8.0",
754
+ "@base-ui/react": "1.9.0",
755
755
  "@happy-dom/global-registrator": "21.0.4",
756
756
  "@playwright/test": "^1.63.0",
757
+ "@stll/property-testing": "0.0.0",
757
758
  "@stll/typescript-config": "0.0.0",
758
759
  "@tailwindcss/vite": "4.3.3",
759
760
  "@tanstack/react-virtual": "^3.14.21",
@@ -766,6 +767,7 @@
766
767
  "react-dom": "^19.3.0",
767
768
  "tailwindcss": "4.3.3",
768
769
  "tsdown": "0.23.0",
770
+ "tsrs": "0.18.0-ts7.1.0-dev.20260929",
769
771
  "vite": "8.3.4"
770
772
  },
771
773
  "peerDependencies": {