@stll/ui 0.26.3 → 0.26.5

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 (87) hide show
  1. package/dist/calendar/primitives.d.ts +7 -8
  2. package/dist/calendar/resource-calendar.d.ts +6 -7
  3. package/dist/calendar/resource-calendar.logic.d.ts +9 -10
  4. package/dist/components/application-rail.d.ts +11 -12
  5. package/dist/components/bidi-text.d.ts +3 -3
  6. package/dist/components/brand-icons.d.ts +3 -4
  7. package/dist/components/button-variants.d.ts +5 -6
  8. package/dist/components/command.d.ts +1 -1
  9. package/dist/components/composer.d.ts +18 -19
  10. package/dist/components/context-menu.d.ts +4 -5
  11. package/dist/components/date-picker-popover.js +20 -18
  12. package/dist/components/date-picker-popover.logic.d.ts +6 -7
  13. package/dist/components/dialog.d.ts +1 -1
  14. package/dist/components/directional-icon.d.ts +2 -3
  15. package/dist/components/input-control.d.ts +4 -5
  16. package/dist/components/landing.d.ts +10 -11
  17. package/dist/components/menu.d.ts +1 -1
  18. package/dist/components/outline-rail.d.ts +4 -5
  19. package/dist/components/preview-card.d.ts +4 -4
  20. package/dist/components/scroll-to-top.d.ts +3 -4
  21. package/dist/components/segmented-icon-toggle.d.ts +2 -3
  22. package/dist/components/sheet.d.ts +1 -1
  23. package/dist/components/sidebar.d.ts +4 -4
  24. package/dist/components/sidebar.logic.d.ts +7 -8
  25. package/dist/components/stella-mark.d.ts +2 -3
  26. package/dist/components/stella-wordmark.d.ts +2 -3
  27. package/dist/components/tooltip.d.ts +1 -1
  28. package/dist/components/workspace-shell.d.ts +3 -3
  29. package/dist/data-table/schema.d.ts +11 -12
  30. package/dist/data-table/table.d.ts +8 -9
  31. package/dist/hooks/use-contained-handler.d.ts +3 -4
  32. package/dist/hooks/use-content-dir.d.ts +4 -5
  33. package/dist/hooks/use-latest.d.ts +2 -3
  34. package/dist/hooks/use-mobile.d.ts +2 -3
  35. package/dist/hooks/use-viewport-width.d.ts +2 -3
  36. package/dist/index.d.ts +2 -2
  37. package/dist/inspector/chrome.d.ts +21 -22
  38. package/dist/inspector/dock.d.ts +11 -3
  39. package/dist/inspector/dock.js +7 -2
  40. package/dist/inspector/entity-tab.d.ts +4 -5
  41. package/dist/inspector/entity-tab.logic.d.ts +4 -5
  42. package/dist/inspector/facet-bar.d.ts +3 -4
  43. package/dist/inspector/facet-bar.logic.d.ts +4 -5
  44. package/dist/inspector/index.d.ts +2 -2
  45. package/dist/inspector/layout-tokens.d.ts +8 -9
  46. package/dist/inspector/pane-width.d.ts +21 -12
  47. package/dist/inspector/pane-width.js +12 -2
  48. package/dist/inspector/tabs.d.ts +7 -8
  49. package/dist/inspector/use-pane-width.d.ts +15 -10
  50. package/dist/inspector/use-pane-width.js +9 -3
  51. package/dist/kanban/band-peek.d.ts +7 -8
  52. package/dist/kanban/card-properties.d.ts +3 -4
  53. package/dist/kanban/card-shell.d.ts +3 -4
  54. package/dist/kanban/cell-action.d.ts +3 -4
  55. package/dist/kanban/column-band-header.d.ts +4 -5
  56. package/dist/kanban/column-bands.d.ts +9 -10
  57. package/dist/kanban/column-header.d.ts +3 -4
  58. package/dist/kanban/drag-interactions.d.ts +7 -8
  59. package/dist/kanban/grouping.d.ts +14 -15
  60. package/dist/kanban/layout-tokens.d.ts +6 -7
  61. package/dist/kanban/matrix.d.ts +20 -21
  62. package/dist/kanban/sortable-edge.d.ts +7 -8
  63. package/dist/kanban/sortable-interactions.d.ts +27 -27
  64. package/dist/kanban/sortable-interactions.logic.d.ts +14 -15
  65. package/dist/kanban/sticky-lane.d.ts +10 -11
  66. package/dist/kanban/subgroup-board.d.ts +10 -11
  67. package/dist/kanban/subgroup-board.js +8 -4
  68. package/dist/kanban/touch-identity.d.ts +2 -3
  69. package/dist/kanban/virtual-cell.d.ts +6 -7
  70. package/dist/lib/button-disposition.d.ts +6 -7
  71. package/dist/lib/control-size.d.ts +1 -1
  72. package/dist/lib/initials.d.ts +2 -3
  73. package/dist/lib/option-color.d.ts +6 -7
  74. package/dist/lib/overlay-layer.d.ts +6 -7
  75. package/dist/lib/positioner-sizing.d.ts +3 -4
  76. package/dist/lib/tab-order.d.ts +2 -3
  77. package/dist/lib/tooltip-content.d.ts +2 -3
  78. package/dist/lib/utils.d.ts +3 -4
  79. package/dist/lib/week.d.ts +4 -5
  80. package/dist/review/review-author-avatar.d.ts +3 -4
  81. package/dist/review/review-comment-card.d.ts +3 -4
  82. package/dist/review/review-decision-actions.d.ts +4 -5
  83. package/dist/review/review-diff-text.d.ts +9 -10
  84. package/dist/review/review-out-of-date-notice.d.ts +4 -5
  85. package/dist/review/review-severity-dot.d.ts +5 -6
  86. package/dist/review/review-status-badge.d.ts +5 -6
  87. package/package.json +8 -8
@@ -11,19 +11,19 @@
11
11
  * The host application's sidebar width is a parameter rather than an
12
12
  * import, so the policy carries no coupling to any particular shell.
13
13
  */
14
- declare const INSPECTOR_PANE_DEFAULT_WIDTH = 512;
15
- declare const INSPECTOR_PANE_MIN_WIDTH = 320;
14
+ export declare const INSPECTOR_PANE_DEFAULT_WIDTH = 512;
15
+ export declare const INSPECTOR_PANE_MIN_WIDTH = 320;
16
16
  /**
17
17
  * Absolute ceiling, reached only on a very wide viewport. Past this the pane
18
18
  * is no longer a reading column, and the two documents it compares stop
19
19
  * being scannable side by side.
20
20
  */
21
- declare const INSPECTOR_PANE_MAX_WIDTH = 1400;
21
+ export declare const INSPECTOR_PANE_MAX_WIDTH = 1400;
22
22
  /**
23
23
  * Floor for the content column beside the pane. Below this the content
24
24
  * surface stops being usable, so the pane yields space first.
25
25
  */
26
- declare const INSPECTOR_CONTENT_MIN_WIDTH = 400;
26
+ export declare const INSPECTOR_CONTENT_MIN_WIDTH = 400;
27
27
  /**
28
28
  * Comfortable measure for the document editor beside the pane, distinct from
29
29
  * {@link INSPECTOR_CONTENT_MIN_WIDTH}: that one is the hard floor any content
@@ -32,9 +32,9 @@ declare const INSPECTOR_CONTENT_MIN_WIDTH = 400;
32
32
  * respects the readable measure; the hard floor still wins when the viewport
33
33
  * cannot give both.
34
34
  */
35
- declare const INSPECTOR_EDITOR_MIN_WIDTH = 560;
35
+ export declare const INSPECTOR_EDITOR_MIN_WIDTH = 560;
36
36
  /** Inline size of the collapsed icon rail, in CSS pixels. */
37
- declare const INSPECTOR_RAIL_WIDTH = 48;
37
+ export declare const INSPECTOR_RAIL_WIDTH = 48;
38
38
  type ForceSidebarCollapsedInput = {
39
39
  /** Inline size the expanded sidebar takes out of the layout row. */
40
40
  expandedSidebarWidth: number;
@@ -47,7 +47,7 @@ type ForceSidebarCollapsedInput = {
47
47
  * can violate its minimum. The collapsed rail plus both minimums fit at the
48
48
  * desktop breakpoint, so this policy keeps every desktop width usable.
49
49
  */
50
- declare const shouldForceSidebarCollapsed: ({ expandedSidebarWidth, inspectorPaneOpen, viewportWidth }: ForceSidebarCollapsedInput) => boolean;
50
+ export declare const shouldForceSidebarCollapsed: ({ expandedSidebarWidth, inspectorPaneOpen, viewportWidth }: ForceSidebarCollapsedInput) => boolean;
51
51
  type InspectorPaneWidthInput = {
52
52
  /** Width the user dragged the pane to. */
53
53
  desiredWidth: number;
@@ -63,16 +63,25 @@ type InspectorPaneWidthInput = {
63
63
  * and collapsing the sidebar is the escape hatch for a genuinely small
64
64
  * viewport.
65
65
  */
66
- declare const resolveInspectorPaneMaxWidth: ({ sidebarWidth, viewportWidth }: Omit<InspectorPaneWidthInput, "desiredWidth">) => number;
66
+ export declare const resolveInspectorPaneMaxWidth: ({ sidebarWidth, viewportWidth }: Omit<InspectorPaneWidthInput, "desiredWidth">) => number;
67
+ /**
68
+ * A width inside the pane's own bounds, independent of any viewport.
69
+ *
70
+ * Every width the pane keeps goes through this, because the kept width is
71
+ * also the persisted one and {@link parsePersistedPaneWidth} *rejects* —
72
+ * and so resets — anything outside these bounds. A raw cursor position is
73
+ * routinely outside them, so a drag past the edge has to be remembered as
74
+ * the bound it stopped at rather than as the pixel the pointer reached.
75
+ */
76
+ export declare const clampInspectorPaneWidth: (width: number) => number;
67
77
  /** Width the pane renders at, given the width the user asked for. */
68
- declare const resolveInspectorPaneWidth: ({ desiredWidth, sidebarWidth, viewportWidth }: InspectorPaneWidthInput) => number;
78
+ export declare const resolveInspectorPaneWidth: ({ desiredWidth, sidebarWidth, viewportWidth }: InspectorPaneWidthInput) => number;
69
79
  /**
70
80
  * Width the dock reserves in the layout: the full pane while content is
71
81
  * shown, the bare rail while it is collapsed or minimized.
72
82
  */
73
- declare const resolveInspectorDockWidth: ({ paneWidth, showPaneContent }: {
83
+ export declare const resolveInspectorDockWidth: ({ paneWidth, showPaneContent }: {
74
84
  paneWidth: number;
75
85
  showPaneContent: boolean;
76
86
  }) => number;
77
- //#endregion
78
- export { INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_EDITOR_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, shouldForceSidebarCollapsed };
87
+ //#endregion
@@ -54,8 +54,18 @@ const resolveInspectorPaneMaxWidth = ({ sidebarWidth, viewportWidth }) => {
54
54
  const available = viewportWidth - sidebarWidth - 400;
55
55
  return Math.max(320, Math.min(INSPECTOR_PANE_MAX_WIDTH, readable, available));
56
56
  };
57
+ /**
58
+ * A width inside the pane's own bounds, independent of any viewport.
59
+ *
60
+ * Every width the pane keeps goes through this, because the kept width is
61
+ * also the persisted one and {@link parsePersistedPaneWidth} *rejects* —
62
+ * and so resets — anything outside these bounds. A raw cursor position is
63
+ * routinely outside them, so a drag past the edge has to be remembered as
64
+ * the bound it stopped at rather than as the pixel the pointer reached.
65
+ */
66
+ const clampInspectorPaneWidth = (width) => Math.min(Math.max(width, 320), INSPECTOR_PANE_MAX_WIDTH);
57
67
  /** Width the pane renders at, given the width the user asked for. */
58
- const resolveInspectorPaneWidth = ({ desiredWidth, sidebarWidth, viewportWidth }) => Math.min(Math.max(desiredWidth, 320), resolveInspectorPaneMaxWidth({
68
+ const resolveInspectorPaneWidth = ({ desiredWidth, sidebarWidth, viewportWidth }) => Math.min(clampInspectorPaneWidth(desiredWidth), resolveInspectorPaneMaxWidth({
59
69
  sidebarWidth,
60
70
  viewportWidth
61
71
  }));
@@ -65,4 +75,4 @@ const resolveInspectorPaneWidth = ({ desiredWidth, sidebarWidth, viewportWidth }
65
75
  */
66
76
  const resolveInspectorDockWidth = ({ paneWidth, showPaneContent }) => showPaneContent ? paneWidth : 48;
67
77
  //#endregion
68
- export { INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_EDITOR_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, shouldForceSidebarCollapsed };
78
+ export { INSPECTOR_CONTENT_MIN_WIDTH, INSPECTOR_EDITOR_MIN_WIDTH, INSPECTOR_PANE_DEFAULT_WIDTH, INSPECTOR_PANE_MAX_WIDTH, INSPECTOR_PANE_MIN_WIDTH, INSPECTOR_RAIL_WIDTH, clampInspectorPaneWidth, resolveInspectorDockWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth, shouldForceSidebarCollapsed };
@@ -6,11 +6,10 @@ import { Tabs } from "@base-ui/react/tabs";
6
6
  * docked inspector. The mobile layout moves the rail below the header rather
7
7
  * than leaving a narrow column beside a full-screen sheet.
8
8
  */
9
- declare const InspectorTabs: ({ className, ...props }: Omit<Tabs.Root.Props, "orientation">) => React$1.JSX.Element;
10
- declare const INSPECTOR_RAIL_MEDIA_QUERY: "(min-width: 48rem)";
11
- declare const resolveInspectorTabOrientation: (isRailLayout: boolean) => "horizontal" | "vertical";
12
- declare const InspectorTabList: ({ className, ...props }: Tabs.List.Props) => React$1.JSX.Element;
13
- declare const InspectorTab: ({ className, ...props }: Tabs.Tab.Props) => React$1.JSX.Element;
14
- declare const InspectorTabPanel: ({ className, ...props }: Tabs.Panel.Props) => React$1.JSX.Element;
15
- //#endregion
16
- export { INSPECTOR_RAIL_MEDIA_QUERY, InspectorTab, InspectorTabList, InspectorTabPanel, InspectorTabs, resolveInspectorTabOrientation };
9
+ export declare const InspectorTabs: ({ className, ...props }: Omit<Tabs.Root.Props, "orientation">) => React$1.JSX.Element;
10
+ export declare const INSPECTOR_RAIL_MEDIA_QUERY: "(min-width: 48rem)";
11
+ export declare const resolveInspectorTabOrientation: (isRailLayout: boolean) => "horizontal" | "vertical";
12
+ export declare const InspectorTabList: ({ className, ...props }: Tabs.List.Props) => React$1.JSX.Element;
13
+ export declare const InspectorTab: ({ className, ...props }: Tabs.Tab.Props) => React$1.JSX.Element;
14
+ export declare const InspectorTabPanel: ({ className, ...props }: Tabs.Panel.Props) => React$1.JSX.Element;
15
+ //#endregion
@@ -7,22 +7,28 @@ import { KeyboardEvent, PointerEvent } from "react";
7
7
  * from, so an unusable value falls back to the default rather than being
8
8
  * clamped into something the user never chose.
9
9
  */
10
- declare const parsePersistedPaneWidth: (raw: string | null) => number;
10
+ export declare const parsePersistedPaneWidth: (raw: string | null) => number;
11
11
  /**
12
12
  * Width the drag produces for a pane docked to the inline-end edge.
13
13
  *
14
14
  * That edge is the right in LTR (width = distance from the right) and the
15
15
  * left in RTL (width = distance from the left). Without the RTL branch the
16
16
  * delta is inverted and the drag oscillates.
17
+ *
18
+ * A pointer can be dragged well past either bound — off the window edge, or
19
+ * across the whole viewport — so the raw distance is clamped here, before
20
+ * anything keeps it. Persisting the raw distance is what made a pane dragged
21
+ * narrower than the minimum come back at the *default* width on the next
22
+ * load, because `parsePersistedPaneWidth` refuses an out-of-range entry.
17
23
  */
18
- declare const resolveDragWidth: ({ clientX, isRtl, viewportWidth }: {
24
+ export declare const resolveDragWidth: ({ clientX, isRtl, viewportWidth }: {
19
25
  clientX: number;
20
26
  isRtl: boolean;
21
27
  viewportWidth: number;
22
28
  }) => number;
23
29
  /** Pixels one arrow press moves the edge; Page/Home/End move further. */
24
- declare const INSPECTOR_PANE_KEYBOARD_STEP = 16;
25
- declare const INSPECTOR_PANE_KEYBOARD_PAGE_STEP = 64;
30
+ export declare const INSPECTOR_PANE_KEYBOARD_STEP = 16;
31
+ export declare const INSPECTOR_PANE_KEYBOARD_PAGE_STEP = 64;
26
32
  /**
27
33
  * Width a keyboard resize produces. Returns `null` for keys the handle does
28
34
  * not own, so the caller can leave the event alone rather than swallowing
@@ -32,7 +38,7 @@ declare const INSPECTOR_PANE_KEYBOARD_PAGE_STEP = 64;
32
38
  * the inline-start arrow grows it. Under RTL the physical arrows swap, so
33
39
  * the same key keeps meaning "make it bigger" on both sides.
34
40
  */
35
- declare const resolveKeyboardWidth: ({ currentWidth, isRtl, key }: {
41
+ export declare const resolveKeyboardWidth: ({ currentWidth, isRtl, key }: {
36
42
  currentWidth: number;
37
43
  isRtl: boolean;
38
44
  key: string;
@@ -45,8 +51,8 @@ declare const resolveKeyboardWidth: ({ currentWidth, isRtl, key }: {
45
51
  * that forgets its width is a smaller failure than a pane that does not
46
52
  * render, so both directions degrade to in-memory.
47
53
  */
48
- declare const readStoredWidth: (storageKey: string) => number;
49
- declare const writeStoredWidth: (storageKey: string, width: number) => void;
54
+ export declare const readStoredWidth: (storageKey: string) => number;
55
+ export declare const writeStoredWidth: (storageKey: string, width: number) => void;
50
56
  type UseInspectorPaneWidthOptions = {
51
57
  /** Inline size the sidebar takes out of the same layout row. */
52
58
  sidebarWidth: number;
@@ -94,6 +100,5 @@ type UseInspectorPaneWidthResult = {
94
100
  * the content column. The *desired* width keeps the user's choice, so the
95
101
  * pane returns to it once the room comes back.
96
102
  */
97
- declare const useInspectorPaneWidth: ({ sidebarWidth, storageKey, viewportWidth }: UseInspectorPaneWidthOptions) => UseInspectorPaneWidthResult;
98
- //#endregion
99
- export { INSPECTOR_PANE_KEYBOARD_PAGE_STEP, INSPECTOR_PANE_KEYBOARD_STEP, parsePersistedPaneWidth, readStoredWidth, resolveDragWidth, resolveKeyboardWidth, useInspectorPaneWidth, writeStoredWidth };
103
+ export declare const useInspectorPaneWidth: ({ sidebarWidth, storageKey, viewportWidth }: UseInspectorPaneWidthOptions) => UseInspectorPaneWidthResult;
104
+ //#endregion
@@ -1,4 +1,4 @@
1
- import { INSPECTOR_PANE_MAX_WIDTH, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth } from "./pane-width.js";
1
+ import { INSPECTOR_PANE_MAX_WIDTH, clampInspectorPaneWidth, resolveInspectorPaneMaxWidth, resolveInspectorPaneWidth } from "./pane-width.js";
2
2
  import { useEffect, useRef, useState } from "react";
3
3
  //#region src/inspector/use-pane-width.ts
4
4
  /**
@@ -20,8 +20,14 @@ const parsePersistedPaneWidth = (raw) => {
20
20
  * That edge is the right in LTR (width = distance from the right) and the
21
21
  * left in RTL (width = distance from the left). Without the RTL branch the
22
22
  * delta is inverted and the drag oscillates.
23
+ *
24
+ * A pointer can be dragged well past either bound — off the window edge, or
25
+ * across the whole viewport — so the raw distance is clamped here, before
26
+ * anything keeps it. Persisting the raw distance is what made a pane dragged
27
+ * narrower than the minimum come back at the *default* width on the next
28
+ * load, because `parsePersistedPaneWidth` refuses an out-of-range entry.
23
29
  */
24
- const resolveDragWidth = ({ clientX, isRtl, viewportWidth }) => isRtl ? clientX : viewportWidth - clientX;
30
+ const resolveDragWidth = ({ clientX, isRtl, viewportWidth }) => clampInspectorPaneWidth(isRtl ? clientX : viewportWidth - clientX);
25
31
  /** Pixels one arrow press moves the edge; Page/Home/End move further. */
26
32
  const INSPECTOR_PANE_KEYBOARD_STEP = 16;
27
33
  const INSPECTOR_PANE_KEYBOARD_PAGE_STEP = 64;
@@ -121,7 +127,7 @@ const useInspectorPaneWidth = ({ sidebarWidth, storageKey, viewportWidth }) => {
121
127
  });
122
128
  if (next === null) return;
123
129
  event.preventDefault();
124
- setDesiredWidth(Math.min(Math.max(next, 320), maxWidth));
130
+ setDesiredWidth(Math.min(clampInspectorPaneWidth(next), maxWidth));
125
131
  };
126
132
  const resetWidth = () => {
127
133
  setDesiredWidth(512);
@@ -15,12 +15,12 @@
15
15
  * the peek at once.
16
16
  */
17
17
  /** How long a dragged card rests on a folded slot before the band peeks open. */
18
- declare const KANBAN_BAND_PEEK_DELAY_MS = 400;
18
+ export declare const KANBAN_BAND_PEEK_DELAY_MS = 400;
19
19
  /** How long the drag may be outside an open band before the peek ends. */
20
- declare const KANBAN_BAND_PEEK_LINGER_MS = 150;
20
+ export declare const KANBAN_BAND_PEEK_LINGER_MS = 150;
21
21
  /** Runs `callback` after `ms`; the returned function cancels it. */
22
- type BandPeekScheduler = (callback: () => void, ms: number) => () => void;
23
- type BandPeekControllerOptions = {
22
+ export type BandPeekScheduler = (callback: () => void, ms: number) => () => void;
23
+ export type BandPeekControllerOptions = {
24
24
  /** Receives the band currently peeked open, or `null`. */
25
25
  onChange: (peekingBandId: string | null) => void;
26
26
  delayMs?: number;
@@ -28,7 +28,7 @@ type BandPeekControllerOptions = {
28
28
  /** Injectable so tests drive a manual clock. */
29
29
  schedule?: BandPeekScheduler;
30
30
  };
31
- type BandPeekController = {
31
+ export type BandPeekController = {
32
32
  /** A dragged card moved over a band's folded slot. */
33
33
  slotDragOver: (bandId: string) => void;
34
34
  /** The drag left a band's folded slot. */
@@ -54,6 +54,5 @@ type BandPeekController = {
54
54
  /** Ends any pending timer, for unmount. */
55
55
  dispose: () => void;
56
56
  };
57
- declare const createBandPeekController: ({ onChange, delayMs, lingerMs, schedule }: BandPeekControllerOptions) => BandPeekController;
58
- //#endregion
59
- export { BandPeekController, BandPeekControllerOptions, BandPeekScheduler, KANBAN_BAND_PEEK_DELAY_MS, KANBAN_BAND_PEEK_LINGER_MS, createBandPeekController };
57
+ export declare const createBandPeekController: ({ onChange, delayMs, lingerMs, schedule }: BandPeekControllerOptions) => BandPeekController;
58
+ //#endregion
@@ -8,7 +8,7 @@
8
8
  * board could hold. Here the caller names its reserved ids once and vetoes the
9
9
  * rest through a predicate.
10
10
  */
11
- type KanbanCardFieldSelection = {
11
+ export type KanbanCardFieldSelection = {
12
12
  /** Field ids the card renders itself, so they are not repeated as values. */
13
13
  reservedFieldIds: readonly string[];
14
14
  /**
@@ -22,6 +22,5 @@ type KanbanCardFieldSelection = {
22
22
  * The visible field ids a card renders as property values, in view order and
23
23
  * without duplicates.
24
24
  */
25
- declare const selectKanbanCardFieldIds: (visibleFieldIds: readonly string[], { reservedFieldIds, isRenderable }: KanbanCardFieldSelection) => string[];
26
- //#endregion
27
- export { KanbanCardFieldSelection, selectKanbanCardFieldIds };
25
+ export declare const selectKanbanCardFieldIds: (visibleFieldIds: readonly string[], { reservedFieldIds, isRenderable }: KanbanCardFieldSelection) => string[];
26
+ //#endregion
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, RefObject } from "react";
2
2
  //#region src/kanban/card-shell.d.ts
3
- type KanbanCardShellProps = {
3
+ export type KanbanCardShellProps = {
4
4
  children: ReactNode;
5
5
  /** Overlay slot pinned to the top-end corner (row actions). */
6
6
  actions?: ReactNode;
@@ -66,6 +66,5 @@ type KanbanCardShellProps = {
66
66
  * Nothing here clips its overflow: a pinned identity row stops sticking the
67
67
  * moment anything between it and the scroll container clips.
68
68
  */
69
- declare const KanbanCardShell: ({ children, actions, actionsVisibility, stickyHeader, active, onOpen, bodyRef, dragRef, className }: KanbanCardShellProps) => import("react").JSX.Element;
70
- //#endregion
71
- export { KanbanCardShell, KanbanCardShellProps };
69
+ export declare const KanbanCardShell: ({ children, actions, actionsVisibility, stickyHeader, active, onOpen, bodyRef, dragRef, className }: KanbanCardShellProps) => import("react").JSX.Element;
70
+ //#endregion
@@ -1,7 +1,7 @@
1
1
  import { Button } from "../components/button.js";
2
2
  import { ComponentProps } from "react";
3
3
  //#region src/kanban/cell-action.d.ts
4
- type KanbanCellActionProps = Omit<ComponentProps<typeof Button>, "variant">;
4
+ export type KanbanCellActionProps = Omit<ComponentProps<typeof Button>, "variant">;
5
5
  /**
6
6
  * The quiet action at the end of a cell: a full-width row that adds a card to
7
7
  * that column and lane.
@@ -18,6 +18,5 @@ type KanbanCellActionProps = Omit<ComponentProps<typeof Button>, "variant">;
18
18
  * since the button's own size drops a step at `sm` and the row has to hold the
19
19
  * board's chrome rhythm at every width.
20
20
  */
21
- declare const KanbanCellAction: ({ children, className, ...props }: KanbanCellActionProps) => import("react").JSX.Element;
22
- //#endregion
23
- export { KanbanCellAction, KanbanCellActionProps };
21
+ export declare const KanbanCellAction: ({ children, className, ...props }: KanbanCellActionProps) => import("react").JSX.Element;
22
+ //#endregion
@@ -5,10 +5,10 @@ import { ReactNode } from "react";
5
5
  * over whatever replaces the caption (the folded slot), which matters to the
6
6
  * board's peek behaviour; a keyboard activation does not.
7
7
  */
8
- type KanbanBandToggleActivation = {
8
+ export type KanbanBandToggleActivation = {
9
9
  viaPointer: boolean;
10
10
  };
11
- type KanbanColumnBandHeaderProps = {
11
+ export type KanbanColumnBandHeaderProps = {
12
12
  /** The band name, or the control that has taken its place. */
13
13
  title: ReactNode;
14
14
  /** Colour swatch for the band. */
@@ -39,6 +39,5 @@ type KanbanColumnBandHeaderProps = {
39
39
  * Folded, only the toggle remains in this line; the band's name moves down
40
40
  * into the narrow column body, where the height is already there.
41
41
  */
42
- declare const KanbanColumnBandHeader: ({ title, swatch, meta, collapsed, compact, toggleLabel, onCollapsedChange, actions }: KanbanColumnBandHeaderProps) => import("react").JSX.Element;
43
- //#endregion
44
- export { KanbanBandToggleActivation, KanbanColumnBandHeader, KanbanColumnBandHeaderProps };
42
+ export declare const KanbanColumnBandHeader: ({ title, swatch, meta, collapsed, compact, toggleLabel, onCollapsedChange, actions }: KanbanColumnBandHeaderProps) => import("react").JSX.Element;
43
+ //#endregion
@@ -11,18 +11,18 @@ import { KanbanBoardColumn } from "./matrix.js";
11
11
  * `resolveKanbanColumnBands` derives from the columns' `band` metadata.
12
12
  */
13
13
  /** Every board column takes this inline size; a collapsed band takes one lane. */
14
- declare const KANBAN_COLUMN_WIDTH_CLASS = "w-[300px] shrink-0";
15
- declare const KANBAN_COLUMN_WIDTH_PX = 300;
14
+ export declare const KANBAN_COLUMN_WIDTH_CLASS = "w-[300px] shrink-0";
15
+ export declare const KANBAN_COLUMN_WIDTH_PX = 300;
16
16
  /** The `gap-3` between columns, so a band header can span its columns. */
17
- declare const KANBAN_COLUMN_GAP_PX = 12;
17
+ export declare const KANBAN_COLUMN_GAP_PX = 12;
18
18
  /** A collapsed band folds its columns into one narrow lane. */
19
- declare const KANBAN_COLLAPSED_BAND_WIDTH_CLASS = "w-12 shrink-0";
20
- declare const KANBAN_COLLAPSED_BAND_WIDTH_PX = 48;
19
+ export declare const KANBAN_COLLAPSED_BAND_WIDTH_CLASS = "w-12 shrink-0";
20
+ export declare const KANBAN_COLLAPSED_BAND_WIDTH_PX = 48;
21
21
  /**
22
22
  * A run of adjacent columns under one header. `band` is `null` for a column
23
23
  * that belongs to no band, which renders as a run of one without a header.
24
24
  */
25
- type KanbanColumnBandSpan = {
25
+ export type KanbanColumnBandSpan = {
26
26
  band: KanbanColumnBand | null;
27
27
  columns: KanbanBoardColumn[];
28
28
  };
@@ -34,8 +34,7 @@ type KanbanColumnBandSpan = {
34
34
  * not a state to render, because a header that spans two separate runs has no
35
35
  * meaning. The check fails loudly instead of silently drawing a second header.
36
36
  */
37
- declare const resolveKanbanColumnBands: (columns: readonly KanbanBoardColumn[]) => KanbanColumnBandSpan[];
37
+ export declare const resolveKanbanColumnBands: (columns: readonly KanbanBoardColumn[]) => KanbanColumnBandSpan[];
38
38
  /** Whether any presented column carries band metadata. */
39
- declare const hasKanbanColumnBands: (columns: readonly KanbanBoardColumn[]) => boolean;
40
- //#endregion
41
- export { 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 };
39
+ export declare const hasKanbanColumnBands: (columns: readonly KanbanBoardColumn[]) => boolean;
40
+ //#endregion
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from "react";
2
2
  //#region src/kanban/column-header.d.ts
3
- type KanbanColumnHeaderProps = {
3
+ export type KanbanColumnHeaderProps = {
4
4
  /** Colour swatch, or the control that changes it. */
5
5
  swatch?: ReactNode;
6
6
  /** The column name, or the editor that has taken its place. */
@@ -25,6 +25,5 @@ type KanbanColumnHeaderProps = {
25
25
  * lines up with the lane rows under it. The title clips instead of wrapping
26
26
  * so a long name can never grow the row past that height.
27
27
  */
28
- declare const KanbanColumnHeader: ({ swatch, title, meta, calculation, dragHandle, actions, className }: KanbanColumnHeaderProps) => import("react").JSX.Element;
29
- //#endregion
30
- export { KanbanColumnHeader, KanbanColumnHeaderProps };
28
+ export declare const KanbanColumnHeader: ({ swatch, title, meta, calculation, dragHandle, actions, className }: KanbanColumnHeaderProps) => import("react").JSX.Element;
29
+ //#endregion
@@ -8,8 +8,8 @@ type AtlaskitDraggableOptions = Parameters<typeof draggable>[0];
8
8
  * kanban card drag from everything else. Pragmatic's `getInitialData` never
9
9
  * reaches those native events; only data attached this way does.
10
10
  */
11
- declare const KANBAN_CARD_DRAG_MIME: "application/x-stella-kanban-card";
12
- type RegisterKanbanCardDragOptions = {
11
+ export declare const KANBAN_CARD_DRAG_MIME: "application/x-stella-kanban-card";
12
+ export type RegisterKanbanCardDragOptions = {
13
13
  /** The drag wrapper rendered by `KanbanCardShell`. */
14
14
  element: AtlaskitDraggableOptions["element"];
15
15
  /** Domain data read by the board's drop monitor. */
@@ -26,18 +26,17 @@ type RegisterKanbanCardDragOptions = {
26
26
  * or persist a drop. It owns the interaction every card shares, including a
27
27
  * pointer-centred preview cloned from the styled card inside the shell.
28
28
  */
29
- declare const registerKanbanCardDrag: ({ element, getInitialData, canDrag, onDragStart, onDrop }: RegisterKanbanCardDragOptions) => (() => void);
30
- declare const KANBAN_BOARD_AUTO_SCROLL_SOURCES: {
29
+ export declare const registerKanbanCardDrag: ({ element, getInitialData, canDrag, onDragStart, onDrop }: RegisterKanbanCardDragOptions) => (() => void);
30
+ export declare const KANBAN_BOARD_AUTO_SCROLL_SOURCES: {
31
31
  readonly elements: "elements";
32
32
  readonly elementsAndExternal: "elements-and-external";
33
33
  };
34
34
  type KanbanBoardAutoScrollSource = (typeof KANBAN_BOARD_AUTO_SCROLL_SOURCES)[keyof typeof KANBAN_BOARD_AUTO_SCROLL_SOURCES];
35
- type RegisterKanbanBoardAutoScrollOptions = {
35
+ export type RegisterKanbanBoardAutoScrollOptions = {
36
36
  element: HTMLElement;
37
37
  /** External sources include files dragged in from outside the page. */
38
38
  sources: KanbanBoardAutoScrollSource;
39
39
  };
40
40
  /** Register horizontal auto-scroll at the board's overflow boundary. */
41
- declare const registerKanbanBoardAutoScroll: ({ element, sources }: RegisterKanbanBoardAutoScrollOptions) => (() => void);
42
- //#endregion
43
- export { KANBAN_BOARD_AUTO_SCROLL_SOURCES, KANBAN_CARD_DRAG_MIME, RegisterKanbanBoardAutoScrollOptions, RegisterKanbanCardDragOptions, registerKanbanBoardAutoScroll, registerKanbanCardDrag };
41
+ export declare const registerKanbanBoardAutoScroll: ({ element, sources }: RegisterKanbanBoardAutoScrollOptions) => (() => void);
42
+ //#endregion
@@ -5,13 +5,13 @@ import { OptionColor } from "../lib/option-color.js";
5
5
  * shows under one header and can collapse as a unit. A status property's
6
6
  * option groups ("To do", "In progress", "Done") are the usual source.
7
7
  */
8
- type KanbanColumnBand = {
8
+ export type KanbanColumnBand = {
9
9
  id: string;
10
10
  label: string;
11
11
  optionColor?: OptionColor | undefined;
12
12
  };
13
13
  /** One column, before the uncategorized bucket is appended. */
14
- type KanbanGroupOption = {
14
+ export type KanbanGroupOption = {
15
15
  value: string;
16
16
  label: string;
17
17
  image?: string | null | undefined;
@@ -21,7 +21,7 @@ type KanbanGroupOption = {
21
21
  band?: KanbanColumnBand | undefined;
22
22
  };
23
23
  /** A column, including the uncategorized bucket (`value: null`). */
24
- type KanbanGroup = {
24
+ export type KanbanGroup = {
25
25
  value: string | null;
26
26
  label: string;
27
27
  image?: string | null | undefined;
@@ -37,7 +37,7 @@ type KanbanGroup = {
37
37
  * built-in grouping is a data declaration rather than a branch this module has
38
38
  * to know about.
39
39
  */
40
- type KanbanBuiltInGroup<TRow, TGroupId extends string = string> = {
40
+ export type KanbanBuiltInGroup<TRow, TGroupId extends string = string> = {
41
41
  /** Reserved group id, distinct from any property id. */
42
42
  id: TGroupId;
43
43
  /** Ordered columns, without the uncategorized bucket. */
@@ -55,13 +55,13 @@ type KanbanBuiltInGroup<TRow, TGroupId extends string = string> = {
55
55
  * which keeps the decision — and the property model it depends on — with the
56
56
  * caller.
57
57
  */
58
- type KanbanSchema<TRow, TProperty, TGroupId extends string = string> = {
58
+ export type KanbanSchema<TRow, TProperty, TGroupId extends string = string> = {
59
59
  builtInGroups: readonly KanbanBuiltInGroup<TRow, TGroupId>[];
60
60
  properties: readonly TProperty[];
61
61
  getPropertyId: (property: TProperty) => TGroupId;
62
62
  getPropertyOptions: (property: TProperty) => readonly KanbanGroupOption[] | null;
63
63
  };
64
- type KanbanGrouping<TRow, TProperty, TGroupId extends string = string> = {
64
+ export type KanbanGrouping<TRow, TProperty, TGroupId extends string = string> = {
65
65
  type: "none";
66
66
  } | {
67
67
  type: "built-in";
@@ -73,26 +73,25 @@ type KanbanGrouping<TRow, TProperty, TGroupId extends string = string> = {
73
73
  property: TProperty;
74
74
  options: readonly KanbanGroupOption[];
75
75
  };
76
- type ResolveKanbanGroupingParams<TRow, TProperty, TGroupId extends string = string> = {
76
+ export type ResolveKanbanGroupingParams<TRow, TProperty, TGroupId extends string = string> = {
77
77
  /** The group-by id the view carries; empty means no grouping. */
78
78
  groupBy: TGroupId | "";
79
79
  schema: KanbanSchema<TRow, TProperty, TGroupId>;
80
80
  };
81
81
  /** Resolve a stored group-by id against a schema. */
82
- declare const resolveKanbanGrouping: <TRow, TProperty, TGroupId extends string = string>({ groupBy, schema }: ResolveKanbanGroupingParams<TRow, TProperty, TGroupId>) => KanbanGrouping<TRow, TProperty, TGroupId>;
83
- declare const getKanbanGroupingPropertyId: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TGroupId | null;
82
+ export declare const resolveKanbanGrouping: <TRow, TProperty, TGroupId extends string = string>({ groupBy, schema }: ResolveKanbanGroupingParams<TRow, TProperty, TGroupId>) => KanbanGrouping<TRow, TProperty, TGroupId>;
83
+ export declare const getKanbanGroupingPropertyId: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TGroupId | null;
84
84
  /**
85
85
  * A grouping with no columns is not a board. A built-in grouping declares its
86
86
  * columns up front, so an empty declaration is the signal that the board cannot
87
87
  * be drawn; a property grouping always draws, even when the property has no
88
88
  * options yet, because rows still land in the uncategorized bucket.
89
89
  */
90
- declare const isKanbanGroupingRenderable: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => boolean;
90
+ export declare const isKanbanGroupingRenderable: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => boolean;
91
91
  /** The rows a grouping can place on the board, in their incoming order. */
92
- declare const selectKanbanRows: <TRow, TProperty, TGroupId extends string = string>(rows: readonly TRow[], grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TRow[];
92
+ export declare const selectKanbanRows: <TRow, TProperty, TGroupId extends string = string>(rows: readonly TRow[], grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => TRow[];
93
93
  /** The static column options for a grouping, excluding uncategorized. */
94
- declare const resolveKanbanGroupOptions: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => readonly KanbanGroupOption[];
94
+ export declare const resolveKanbanGroupOptions: <TRow, TProperty, TGroupId extends string = string>(grouping: KanbanGrouping<TRow, TProperty, TGroupId>) => readonly KanbanGroupOption[];
95
95
  /** Append the uncategorized bucket (null value) after the options. */
96
- declare const getKanbanGroups: (options: readonly KanbanGroupOption[], uncategorizedLabel: string) => KanbanGroup[];
97
- //#endregion
98
- export { KanbanBuiltInGroup, KanbanColumnBand, KanbanGroup, KanbanGroupOption, KanbanGrouping, KanbanSchema, ResolveKanbanGroupingParams, getKanbanGroupingPropertyId, getKanbanGroups, isKanbanGroupingRenderable, resolveKanbanGroupOptions, resolveKanbanGrouping, selectKanbanRows };
96
+ export declare const getKanbanGroups: (options: readonly KanbanGroupOption[], uncategorizedLabel: string) => KanbanGroup[];
97
+ //#endregion
@@ -23,8 +23,8 @@
23
23
  * the first card and each one costs the cards their space. Fixed rather than
24
24
  * minimum: a row that grows with its content moves every offset below it.
25
25
  */
26
- declare const KANBAN_CHROME_ROW_HEIGHT: "h-9";
27
- declare const KANBAN_CHROME_ROW_HEIGHT_PX: 36;
26
+ export declare const KANBAN_CHROME_ROW_HEIGHT: "h-9";
27
+ export declare const KANBAN_CHROME_ROW_HEIGHT_PX: 36;
28
28
  /**
29
29
  * The band caption line, on the chrome row height like everything else: a band
30
30
  * names the run of columns under it, so its caption reads as their parent. A
@@ -34,8 +34,8 @@ declare const KANBAN_CHROME_ROW_HEIGHT_PX: 36;
34
34
  * Still named for the caption, because that row is the one a caller composes
35
35
  * against when it renders a band header of its own.
36
36
  */
37
- declare const KANBAN_BAND_CAPTION_ROW_HEIGHT: "h-9";
38
- declare const KANBAN_BAND_CAPTION_ROW_HEIGHT_PX: 36;
37
+ export declare const KANBAN_BAND_CAPTION_ROW_HEIGHT: "h-9";
38
+ export declare const KANBAN_BAND_CAPTION_ROW_HEIGHT_PX: 36;
39
39
  /**
40
40
  * A finger's 44px target on a control the chrome row keeps at its own height.
41
41
  *
@@ -46,6 +46,5 @@ declare const KANBAN_BAND_CAPTION_ROW_HEIGHT_PX: 36;
46
46
  * distance either way, and neither spills into the row underneath: an inset
47
47
  * grows a short control downwards by whatever it is short by.
48
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 };
49
+ export 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