@tangle-network/sandbox-ui 0.10.1 → 0.10.3

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/dist/styles.css CHANGED
@@ -705,6 +705,9 @@
705
705
  .-top-1 {
706
706
  top: calc(var(--spacing) * -1);
707
707
  }
708
+ .-top-1\.5 {
709
+ top: calc(var(--spacing) * -1.5);
710
+ }
708
711
  .-top-4 {
709
712
  top: calc(var(--spacing) * -4);
710
713
  }
@@ -744,6 +747,9 @@
744
747
  .-right-1 {
745
748
  right: calc(var(--spacing) * -1);
746
749
  }
750
+ .-right-1\.5 {
751
+ right: calc(var(--spacing) * -1.5);
752
+ }
747
753
  .right-0 {
748
754
  right: calc(var(--spacing) * 0);
749
755
  }
@@ -1164,9 +1170,6 @@
1164
1170
  .min-h-\[200px\] {
1165
1171
  min-height: 200px;
1166
1172
  }
1167
- .min-h-\[240px\] {
1168
- min-height: 240px;
1169
- }
1170
1173
  .min-h-full {
1171
1174
  min-height: 100%;
1172
1175
  }
@@ -1631,6 +1634,9 @@
1631
1634
  .justify-end {
1632
1635
  justify-content: flex-end;
1633
1636
  }
1637
+ .justify-start {
1638
+ justify-content: flex-start;
1639
+ }
1634
1640
  .gap-0\.5 {
1635
1641
  gap: calc(var(--spacing) * 0.5);
1636
1642
  }
@@ -2116,30 +2122,18 @@
2116
2122
  border-color: color-mix(in oklab, var(--color-yellow-500) 30%, transparent);
2117
2123
  }
2118
2124
  }
2119
- .border-t-blue-500 {
2120
- border-top-color: var(--color-blue-500);
2121
- }
2122
2125
  .border-t-transparent {
2123
2126
  border-top-color: transparent;
2124
2127
  }
2125
2128
  .bg-\[\#8E59FF\] {
2126
2129
  background-color: #8E59FF;
2127
2130
  }
2128
- .bg-\[\#27c93f\]\/80 {
2129
- background-color: color-mix(in oklab, #27c93f 80%, transparent);
2130
- }
2131
2131
  .bg-\[\#FEBC2E\] {
2132
2132
  background-color: #FEBC2E;
2133
2133
  }
2134
2134
  .bg-\[\#FF5F57\] {
2135
2135
  background-color: #FF5F57;
2136
2136
  }
2137
- .bg-\[\#ff5f56\]\/80 {
2138
- background-color: color-mix(in oklab, #ff5f56 80%, transparent);
2139
- }
2140
- .bg-\[\#ffbd2e\]\/80 {
2141
- background-color: color-mix(in oklab, #ffbd2e 80%, transparent);
2142
- }
2143
2137
  .bg-\[color\:color-mix\(in_srgb\,var\(--bg-card\)_94\%\,transparent\)\] {
2144
2138
  background-color: var(--bg-card);
2145
2139
  @supports (color: color-mix(in lab, red, red)) {
@@ -2409,9 +2403,6 @@
2409
2403
  .bg-\[linear-gradient\(180deg\,rgba\(255\,255\,255\,0\.04\)\,transparent\)\] {
2410
2404
  background-image: linear-gradient(180deg,rgba(255,255,255,0.04),transparent);
2411
2405
  }
2412
- .bg-\[radial-gradient\(circle_at_top\,rgba\(173\,163\,255\,0\.05\)_0\,transparent_100\%\)\] {
2413
- background-image: radial-gradient(circle at top,rgba(173,163,255,0.05) 0,transparent 100%);
2414
- }
2415
2406
  .from-white\/5 {
2416
2407
  --tw-gradient-from: color-mix(in srgb, #fff 5%, transparent);
2417
2408
  @supports (color: color-mix(in lab, red, red)) {
@@ -2651,9 +2642,6 @@
2651
2642
  .pl-2 {
2652
2643
  padding-left: calc(var(--spacing) * 2);
2653
2644
  }
2654
- .pl-3 {
2655
- padding-left: calc(var(--spacing) * 3);
2656
- }
2657
2645
  .pl-4 {
2658
2646
  padding-left: calc(var(--spacing) * 4);
2659
2647
  }
@@ -4186,9 +4174,9 @@
4186
4174
  grid-column: span 1 / span 1;
4187
4175
  }
4188
4176
  }
4189
- .lg\:block {
4177
+ .lg\:ml-\[var\(--sb-content-margin\,0px\)\] {
4190
4178
  @media (width >= 64rem) {
4191
- display: block;
4179
+ margin-left: var(--sb-content-margin,0px);
4192
4180
  }
4193
4181
  }
4194
4182
  .lg\:flex {
@@ -4226,6 +4214,11 @@
4226
4214
  padding: calc(var(--spacing) * 4);
4227
4215
  }
4228
4216
  }
4217
+ .lg\:px-8 {
4218
+ @media (width >= 64rem) {
4219
+ padding-inline: calc(var(--spacing) * 8);
4220
+ }
4221
+ }
4229
4222
  .xl\:col-span-4 {
4230
4223
  @media (width >= 80rem) {
4231
4224
  grid-column: span 4 / span 4;
@@ -16,8 +16,14 @@ declare function Sidebar({ children, className, style }: SidebarProps): react_js
16
16
  interface SidebarRailProps {
17
17
  children: React.ReactNode;
18
18
  className?: string;
19
- }
20
- declare function SidebarRail({ children, className }: SidebarRailProps): react_jsx_runtime.JSX.Element;
19
+ /**
20
+ * Render the rail at the wider mobile-drawer width so labels fit
21
+ * beside the icons. Defaults to the 64px icon-only rail used on
22
+ * desktop.
23
+ */
24
+ wide?: boolean;
25
+ }
26
+ declare function SidebarRail({ children, className, wide }: SidebarRailProps): react_jsx_runtime.JSX.Element;
21
27
  interface SidebarRailHeaderProps {
22
28
  children: React.ReactNode;
23
29
  className?: string;
@@ -46,8 +52,10 @@ interface RailButtonProps {
46
52
  badge?: number;
47
53
  onClick?: () => void;
48
54
  className?: string;
55
+ /** Show label text next to icon (for mobile drawer) */
56
+ showLabel?: boolean;
49
57
  }
50
- declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className }: RailButtonProps): react_jsx_runtime.JSX.Element;
58
+ declare function RailButton({ icon: Icon, label, isActive, badge, onClick, className, showLabel }: RailButtonProps): react_jsx_runtime.JSX.Element;
51
59
  interface RailModeButtonProps {
52
60
  mode: string;
53
61
  icon: React.ComponentType<{
@@ -56,8 +64,10 @@ interface RailModeButtonProps {
56
64
  label: string;
57
65
  badge?: number;
58
66
  className?: string;
67
+ /** Show label text next to icon (for mobile drawer) */
68
+ showLabel?: boolean;
59
69
  }
60
- declare function RailModeButton({ mode, icon, label, badge, className }: RailModeButtonProps): react_jsx_runtime.JSX.Element;
70
+ declare function RailModeButton({ mode, icon, label, badge, className, showLabel }: RailModeButtonProps): react_jsx_runtime.JSX.Element;
61
71
  interface SidebarPanelProps {
62
72
  children: React.ReactNode;
63
73
  className?: string;
@@ -96,6 +106,12 @@ declare function ProfileAvatar({ user, isLoading, onLogout, onSettingsClick, set
96
106
  declare const SIDEBAR_RAIL_WIDTH = 64;
97
107
  declare const SIDEBAR_PANEL_WIDTH = 260;
98
108
  declare const SIDEBAR_TOTAL_WIDTH: number;
109
+ /**
110
+ * Width of the mobile drawer when the rail is rendered with labels
111
+ * (`showLabel` on {@link RailButton}). The standard 64px rail is only
112
+ * wide enough for icons; labels need a wider container to avoid truncation.
113
+ */
114
+ declare const SIDEBAR_MOBILE_WIDTH = 256;
99
115
  interface SidebarContextValue {
100
116
  /** Whether the content panel beside the rail is open */
101
117
  panelOpen: boolean;
@@ -389,4 +405,4 @@ interface VariantListProps {
389
405
  }
390
406
  declare function VariantList({ variants, selectedId, onSelect, onAccept, onReject, isActioning, className, }: VariantListProps): react_jsx_runtime.JSX.Element;
391
407
 
392
- export { type SidebarPanelProps as $, type RailSeparatorProps as A, type Backend as B, ClusterStatusBar as C, DashboardLayout as D, ResourceMeter as E, type ResourceMeterProps as F, SIDEBAR_RAIL_WIDTH as G, SIDEBAR_TOTAL_WIDTH as H, type Invoice as I, SandboxCard as J, type SandboxCardData as K, type SandboxCardProps as L, type SandboxStatus as M, type NavItem as N, SandboxTable as O, type PanelConfig as P, type SandboxTableProps as Q, RailButton as R, SIDEBAR_PANEL_WIDTH as S, Sidebar as T, SidebarContent as U, type SidebarContentProps as V, SidebarPanel as W, SidebarPanelContent as X, type SidebarPanelContentProps as Y, SidebarPanelHeader as Z, type SidebarPanelHeaderProps as _, BackendSelector as a, type SidebarProps as a0, SidebarProvider as a1, type SidebarProviderProps as a2, SidebarRail as a3, SidebarRailFooter as a4, type SidebarRailFooterProps as a5, SidebarRailHeader as a6, type SidebarRailHeaderProps as a7, SidebarRailNav as a8, type SidebarRailNavProps as a9, type SidebarRailProps as aa, type SidebarUser as ab, type TopNavLink as ac, VariantList as ad, type VariantListProps as ae, useSidebar as af, type Profile as ag, type PlanFeature as ah, type Variant as ai, type VariantOutcome as aj, type VariantStatus as ak, type BackendSelectorProps as b, type ClusterStatusBarProps as c, type ClusterStatusItem as d, CreditBalance as e, type CreditBalanceProps as f, type DashboardLayoutProps as g, type DashboardUser as h, InvoiceTable as i, type InvoiceTableProps as j, NewSandboxCard as k, type NewSandboxCardProps as l, type PlanCardData as m, PlanCards as n, type PlanCardsProps as o, type ProductVariant as p, ProfileAvatar as q, type ProfileAvatarProps as r, ProfileComparison as s, type ProfileComparisonProps as t, ProfileSelector as u, type ProfileSelectorProps as v, type RailButtonProps as w, RailModeButton as x, type RailModeButtonProps as y, RailSeparator as z };
408
+ export { type SidebarPanelHeaderProps as $, type RailSeparatorProps as A, type Backend as B, ClusterStatusBar as C, DashboardLayout as D, ResourceMeter as E, type ResourceMeterProps as F, SIDEBAR_PANEL_WIDTH as G, SIDEBAR_RAIL_WIDTH as H, type Invoice as I, SIDEBAR_TOTAL_WIDTH as J, SandboxCard as K, type SandboxCardData as L, type SandboxCardProps as M, type NavItem as N, type SandboxStatus as O, type PanelConfig as P, SandboxTable as Q, RailButton as R, SIDEBAR_MOBILE_WIDTH as S, type SandboxTableProps as T, Sidebar as U, SidebarContent as V, type SidebarContentProps as W, SidebarPanel as X, SidebarPanelContent as Y, type SidebarPanelContentProps as Z, SidebarPanelHeader as _, BackendSelector as a, type SidebarPanelProps as a0, type SidebarProps as a1, SidebarProvider as a2, type SidebarProviderProps as a3, SidebarRail as a4, SidebarRailFooter as a5, type SidebarRailFooterProps as a6, SidebarRailHeader as a7, type SidebarRailHeaderProps as a8, SidebarRailNav as a9, type SidebarRailNavProps as aa, type SidebarRailProps as ab, type SidebarUser as ac, type TopNavLink as ad, VariantList as ae, type VariantListProps as af, useSidebar as ag, type Profile as ah, type PlanFeature as ai, type Variant as aj, type VariantOutcome as ak, type VariantStatus as al, type BackendSelectorProps as b, type ClusterStatusBarProps as c, type ClusterStatusItem as d, CreditBalance as e, type CreditBalanceProps as f, type DashboardLayoutProps as g, type DashboardUser as h, InvoiceTable as i, type InvoiceTableProps as j, NewSandboxCard as k, type NewSandboxCardProps as l, type PlanCardData as m, PlanCards as n, type PlanCardsProps as o, type ProductVariant as p, ProfileAvatar as q, type ProfileAvatarProps as r, ProfileComparison as s, type ProfileComparisonProps as t, ProfileSelector as u, type ProfileSelectorProps as v, type RailButtonProps as w, RailModeButton as x, type RailModeButtonProps as y, RailSeparator as z };
@@ -348,13 +348,11 @@ interface TaskBoardItem {
348
348
  tags?: string[];
349
349
  dueDate?: Date | null;
350
350
  assigneeId?: string | null;
351
- /** Arbitrary metadata rendered by renderItemMeta */
352
351
  meta?: Record<string, unknown>;
353
352
  }
354
353
  interface TaskBoardColumn {
355
354
  id: string;
356
355
  label: string;
357
- /** Tailwind border-top color class, e.g. "border-t-blue-500" */
358
356
  accent?: string;
359
357
  }
360
358
  interface TaskBoardProps {
@@ -363,27 +361,33 @@ interface TaskBoardProps {
363
361
  className?: string;
364
362
  onMoveItem?: (itemId: string, toColumnId: string) => void;
365
363
  onClickItem?: (item: TaskBoardItem) => void;
366
- /** Render custom content inside each card below the title/description */
367
364
  renderItemMeta?: (item: TaskBoardItem) => ReactNode;
368
- /** Render actions in the column header (e.g. "+" button) */
369
365
  renderColumnAction?: (column: TaskBoardColumn) => ReactNode;
370
- /** Badge renderer for priority/tags — receives the raw value */
371
366
  renderBadge?: (value: string, type: "priority" | "tag") => ReactNode;
372
- /** Empty state shown when a column has no items */
373
367
  columnEmptyState?: ReactNode;
374
- /** Header slot above the board */
375
368
  header?: ReactNode;
376
- }
377
- /**
378
- * TaskBoard flexible kanban board for task/work-item management.
379
- *
380
- * Renders items grouped by status into columns. Does NOT manage drag-drop
381
- * internally consumers wire @hello-pangea/dnd or similar and call
382
- * onMoveItem. This keeps the component lightweight and DnD-library-agnostic.
383
- *
384
- * All visual customization happens through render props and slots.
385
- */
386
- declare function TaskBoard({ items, columns, className, onMoveItem, onClickItem, renderItemMeta, renderColumnAction, renderBadge, columnEmptyState, header, }: TaskBoardProps): react_jsx_runtime.JSX.Element;
369
+ /**
370
+ * Wrap each column's item list container. Use this to inject a DnD
371
+ * droppable zone (e.g. Droppable from @hello-pangea/dnd).
372
+ *
373
+ * Receives the column ID, the default item list element, and the column's items.
374
+ * Return a ReactNode that wraps/replaces the default element.
375
+ *
376
+ * If not provided, the default unstyled div is rendered.
377
+ */
378
+ renderColumnBody?: (columnId: string, defaultChildren: ReactNode, items: TaskBoardItem[]) => ReactNode;
379
+ /**
380
+ * Wrap each item card. Use this to inject a DnD draggable
381
+ * (e.g. Draggable from @hello-pangea/dnd).
382
+ *
383
+ * Receives the item, its index, and the default card element.
384
+ * Return a ReactNode that wraps/replaces the default element.
385
+ *
386
+ * If not provided, the default button card is rendered.
387
+ */
388
+ renderItemWrapper?: (item: TaskBoardItem, index: number, defaultCard: ReactNode) => ReactNode;
389
+ }
390
+ declare function TaskBoard({ items, columns, className, onMoveItem, onClickItem, renderItemMeta, renderColumnAction, renderBadge, columnEmptyState, header, renderColumnBody, renderItemWrapper, }: TaskBoardProps): react_jsx_runtime.JSX.Element;
387
391
 
388
392
  interface CalendarEvent {
389
393
  id: string;
package/dist/workspace.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  TaskBoard,
14
14
  TerminalPanel,
15
15
  WorkspaceLayout
16
- } from "./chunk-A5ALUT2B.js";
16
+ } from "./chunk-HEXQVHXJ.js";
17
17
  import "./chunk-OEX7NZE3.js";
18
18
  import "./chunk-MA7YKRUP.js";
19
19
  import "./chunk-WKSGQVLI.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/sandbox-ui",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "description": "Unified UI component library for Tangle Sandbox — primitives, chat, dashboard, terminal, editor, and workspace components",
5
5
  "repository": {
6
6
  "type": "git",