@uxuissk/design-system 0.7.2 → 0.8.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/dist/sellsuki-ds.css +1 -1
- package/dist/sellsuki-ds.js +5105 -2347
- package/dist/sellsuki-ds.umd.cjs +80 -80
- package/dist/types/index.d.ts +1000 -9
- package/package.json +1 -1
package/dist/types/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare namespace Accordion {
|
|
|
7
7
|
var displayName: string;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export declare function AccordionItem({ title, children, open, onToggle, icon }: AccordionItemProps): JSX.Element;
|
|
10
|
+
export declare function AccordionItem({ title, children, open, onToggle, icon, disabled }: AccordionItemProps): JSX.Element;
|
|
11
11
|
|
|
12
12
|
export declare namespace AccordionItem {
|
|
13
13
|
var displayName: string;
|
|
@@ -24,6 +24,8 @@ export declare interface AccordionItemProps {
|
|
|
24
24
|
onToggle: () => void;
|
|
25
25
|
/** Optional leading icon */
|
|
26
26
|
icon?: default_2.ReactNode;
|
|
27
|
+
/** Disable interaction for this item */
|
|
28
|
+
disabled?: boolean;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
export declare interface AccordionProps {
|
|
@@ -35,6 +37,7 @@ export declare interface AccordionProps {
|
|
|
35
37
|
title: string;
|
|
36
38
|
content: default_2.ReactNode;
|
|
37
39
|
icon?: default_2.ReactNode;
|
|
40
|
+
disabled?: boolean;
|
|
38
41
|
}[];
|
|
39
42
|
/** Initially open item(s) */
|
|
40
43
|
defaultOpen?: string | string[];
|
|
@@ -121,6 +124,11 @@ export declare interface AdvancedDataTableProps<T = Record<string, any>> {
|
|
|
121
124
|
|
|
122
125
|
export declare type AdvancedTableSize = "sm" | "md" | "lg";
|
|
123
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Akita brand config — placeholder, theme TBD.
|
|
129
|
+
*/
|
|
130
|
+
export declare const akitaBrandConfig: ProductBrandConfig;
|
|
131
|
+
|
|
124
132
|
export declare function Alert({ variant, title, children, dismissible, onDismiss, action, icon, className }: AlertProps): JSX.Element | null;
|
|
125
133
|
|
|
126
134
|
declare interface AlertProps {
|
|
@@ -136,6 +144,173 @@ declare interface AlertProps {
|
|
|
136
144
|
|
|
137
145
|
export declare type AlertVariant = "info" | "success" | "warning" | "error";
|
|
138
146
|
|
|
147
|
+
/**
|
|
148
|
+
* AppShell — top-level layout shell for Sellsuki products.
|
|
149
|
+
*
|
|
150
|
+
* Combines AppShellProvider + TopNavbar + Sidebar + content frame.
|
|
151
|
+
* Handles responsive sidebar (desktop collapse, mobile drawer overlay).
|
|
152
|
+
* Sets data-product attribute for CSS theme token override.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* <AppShell product={sellsukiBrandConfig} user={user} navResolver={nav}>
|
|
156
|
+
* <FeaturePageScaffold layout="list" ... />
|
|
157
|
+
* </AppShell>
|
|
158
|
+
*/
|
|
159
|
+
export declare function AppShell({ product, user, navResolver, ...rest }: AppShellProps): JSX.Element;
|
|
160
|
+
|
|
161
|
+
export declare namespace AppShell {
|
|
162
|
+
var displayName: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The context value provided by AppShellProvider and consumed by useAppShell().
|
|
167
|
+
* Feature pages use this to read shell state and push breadcrumbs.
|
|
168
|
+
*/
|
|
169
|
+
export declare interface AppShellContextValue {
|
|
170
|
+
/** Whether the sidebar is currently open */
|
|
171
|
+
sidebarOpen: boolean;
|
|
172
|
+
/** Toggle sidebar open/closed */
|
|
173
|
+
setSidebarOpen: (open: boolean) => void;
|
|
174
|
+
/** The current authenticated user */
|
|
175
|
+
user: ShellUser | null;
|
|
176
|
+
/** The current product config */
|
|
177
|
+
product: ProductBrandConfig | null;
|
|
178
|
+
/** Current breadcrumb items */
|
|
179
|
+
breadcrumbs: BreadcrumbEntry[];
|
|
180
|
+
/**
|
|
181
|
+
* Set breadcrumbs from a feature page.
|
|
182
|
+
* Call this in a useEffect when the page mounts.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* const { setBreadcrumbs } = useAppShell();
|
|
186
|
+
* useEffect(() => {
|
|
187
|
+
* setBreadcrumbs([
|
|
188
|
+
* { label: "Orders", href: "/orders" },
|
|
189
|
+
* { label: "Order #12345" },
|
|
190
|
+
* ]);
|
|
191
|
+
* }, []);
|
|
192
|
+
*/
|
|
193
|
+
setBreadcrumbs: (items: BreadcrumbEntry[]) => void;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Error boundary for AppShell content.
|
|
198
|
+
* Prevents a feature page crash from taking down the entire shell.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* <AppShellProvider ...>
|
|
202
|
+
* <AppShellErrorBoundary fallback={<ErrorPage />}>
|
|
203
|
+
* <FeaturePage />
|
|
204
|
+
* </AppShellErrorBoundary>
|
|
205
|
+
* </AppShellProvider>
|
|
206
|
+
*/
|
|
207
|
+
export declare class AppShellErrorBoundary extends default_2.Component<AppShellErrorBoundaryProps, ErrorBoundaryState> {
|
|
208
|
+
constructor(props: AppShellErrorBoundaryProps);
|
|
209
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
210
|
+
componentDidCatch(error: Error, info: default_2.ErrorInfo): void;
|
|
211
|
+
render(): string | number | bigint | boolean | Iterable<default_2.ReactNode> | Promise<string | number | bigint | boolean | default_2.ReactPortal | default_2.ReactElement<unknown, string | default_2.JSXElementConstructor<any>> | Iterable<default_2.ReactNode> | null | undefined> | JSX.Element | null | undefined;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
declare interface AppShellErrorBoundaryProps {
|
|
215
|
+
children: default_2.ReactNode;
|
|
216
|
+
fallback?: default_2.ReactNode;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export declare interface AppShellFullContextValue extends AppShellContextValue {
|
|
220
|
+
/** Navigation groups resolved from navResolver */
|
|
221
|
+
navGroups: ShellSidebarGroup[];
|
|
222
|
+
/** Whether nav is loading (async navResolver in flight) */
|
|
223
|
+
navLoading: boolean;
|
|
224
|
+
/** Nav load error — display fallback nav when set */
|
|
225
|
+
navError: string | null;
|
|
226
|
+
/** Manually refresh nav (re-call navResolver) */
|
|
227
|
+
refreshNav: () => void;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export declare interface AppShellProps {
|
|
231
|
+
/** Product brand config — drives theme and brand identity */
|
|
232
|
+
product: ProductBrandConfig;
|
|
233
|
+
/** Authenticated user */
|
|
234
|
+
user: ShellUser;
|
|
235
|
+
/** Async nav resolver — permission-filtered nav groups */
|
|
236
|
+
navResolver?: NavResolver;
|
|
237
|
+
/** Currently active nav item ID */
|
|
238
|
+
activeItemId?: string;
|
|
239
|
+
/** Navigation handler — called when user clicks a nav item */
|
|
240
|
+
onNavigate?: (item: NavItem) => void;
|
|
241
|
+
/** Notification count (0 = hidden) */
|
|
242
|
+
notificationCount?: number;
|
|
243
|
+
/** Notification click handler */
|
|
244
|
+
onNotificationClick?: () => void;
|
|
245
|
+
/** User click handler (profile menu, logout) */
|
|
246
|
+
onUserClick?: () => void;
|
|
247
|
+
/** Search click handler */
|
|
248
|
+
onSearchClick?: () => void;
|
|
249
|
+
/** Show search in TopNavbar */
|
|
250
|
+
showSearch?: boolean;
|
|
251
|
+
/** App version string */
|
|
252
|
+
version?: string;
|
|
253
|
+
/** App version date */
|
|
254
|
+
versionDate?: string;
|
|
255
|
+
/** Whether content area has padding (default: true) */
|
|
256
|
+
contentPadding?: boolean;
|
|
257
|
+
/** Children — feature page content */
|
|
258
|
+
children: default_2.ReactNode;
|
|
259
|
+
/** Additional class name on root element */
|
|
260
|
+
className?: string;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export declare function AppShellProvider({ user, product, navResolver, sidebarOpen: controlledOpen, onSidebarChange, defaultSidebarOpen, children, }: AppShellProviderProps): JSX.Element;
|
|
264
|
+
|
|
265
|
+
export declare namespace AppShellProvider {
|
|
266
|
+
var displayName: string;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export declare interface AppShellProviderProps {
|
|
270
|
+
/** The authenticated user for the session */
|
|
271
|
+
user?: ShellUser | null;
|
|
272
|
+
/** The product brand config — drives theme token override and brand identity */
|
|
273
|
+
product?: ProductBrandConfig | null;
|
|
274
|
+
/**
|
|
275
|
+
* Async nav resolver — called once on mount (and when user changes).
|
|
276
|
+
* Return permission-filtered SidebarGroups.
|
|
277
|
+
* If omitted the nav state is empty (product drives its own nav externally).
|
|
278
|
+
*/
|
|
279
|
+
navResolver?: NavResolver;
|
|
280
|
+
/**
|
|
281
|
+
* Override sidebar open state from outside (controlled mode).
|
|
282
|
+
* Pair with onSidebarChange for fully controlled behavior.
|
|
283
|
+
*/
|
|
284
|
+
sidebarOpen?: boolean;
|
|
285
|
+
/** Sidebar change callback (controlled mode) */
|
|
286
|
+
onSidebarChange?: (open: boolean) => void;
|
|
287
|
+
/** Initial sidebar open state (uncontrolled, default: true on desktop) */
|
|
288
|
+
defaultSidebarOpen?: boolean;
|
|
289
|
+
/** Children */
|
|
290
|
+
children: default_2.ReactNode;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Full-page loading skeleton for AppShell.
|
|
295
|
+
* Use while the user session or product config is loading.
|
|
296
|
+
*/
|
|
297
|
+
export declare function AppShellSkeleton(): JSX.Element;
|
|
298
|
+
|
|
299
|
+
export declare namespace AppShellSkeleton {
|
|
300
|
+
var displayName: string;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
export declare function AreaChart({ series, height, width, showXAxis, showYAxis, showGrid, showLegend, showTooltip, showDots, smooth, fillOpacity, className, }: AreaChartProps): JSX.Element | null;
|
|
304
|
+
|
|
305
|
+
export declare namespace AreaChart {
|
|
306
|
+
var displayName: string;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export declare interface AreaChartProps extends LineChartProps {
|
|
310
|
+
/** Opacity of fill area */
|
|
311
|
+
fillOpacity?: number;
|
|
312
|
+
}
|
|
313
|
+
|
|
139
314
|
export declare function Avatar({ src, name, size, status, className }: AvatarProps): JSX.Element;
|
|
140
315
|
|
|
141
316
|
export declare namespace Avatar {
|
|
@@ -191,8 +366,56 @@ export declare type BadgeSize = "sm" | "md" | "lg";
|
|
|
191
366
|
|
|
192
367
|
export declare type BadgeVariant = "default" | "secondary" | "outline" | "destructive" | "success" | "warning";
|
|
193
368
|
|
|
369
|
+
export declare function BarChart({ series, height, width, showXAxis, showYAxis, showGrid, showLegend, showTooltip, stacked, radius, className, }: BarChartProps): JSX.Element | null;
|
|
370
|
+
|
|
371
|
+
export declare namespace BarChart {
|
|
372
|
+
var displayName: string;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
export declare interface BarChartProps extends BaseChartProps {
|
|
376
|
+
/** Horizontal bar chart */
|
|
377
|
+
horizontal?: boolean;
|
|
378
|
+
/** Stack bars (when multiple series) */
|
|
379
|
+
stacked?: boolean;
|
|
380
|
+
/** Bar corner radius */
|
|
381
|
+
radius?: number;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
export declare interface BaseChartProps {
|
|
385
|
+
/** Chart series (single or multiple) */
|
|
386
|
+
series: ChartSeries[];
|
|
387
|
+
/** Chart height */
|
|
388
|
+
height?: number;
|
|
389
|
+
/** Chart width (default: 100% of container) */
|
|
390
|
+
width?: number;
|
|
391
|
+
/** Show X-axis labels */
|
|
392
|
+
showXAxis?: boolean;
|
|
393
|
+
/** Show Y-axis labels */
|
|
394
|
+
showYAxis?: boolean;
|
|
395
|
+
/** Show grid lines */
|
|
396
|
+
showGrid?: boolean;
|
|
397
|
+
/** Show legend */
|
|
398
|
+
showLegend?: boolean;
|
|
399
|
+
/** Show tooltip on hover */
|
|
400
|
+
showTooltip?: boolean;
|
|
401
|
+
/** Y-axis label */
|
|
402
|
+
yAxisLabel?: string;
|
|
403
|
+
/** Additional class name */
|
|
404
|
+
className?: string;
|
|
405
|
+
}
|
|
406
|
+
|
|
194
407
|
export declare function Breadcrumb({ items, separator, size, maxItems, }: BreadcrumbProps): JSX.Element;
|
|
195
408
|
|
|
409
|
+
/**
|
|
410
|
+
* A breadcrumb entry set by feature pages via setBreadcrumbs().
|
|
411
|
+
*/
|
|
412
|
+
export declare interface BreadcrumbEntry {
|
|
413
|
+
/** Display label */
|
|
414
|
+
label: string;
|
|
415
|
+
/** Navigation href — omit for current page (last item) */
|
|
416
|
+
href?: string;
|
|
417
|
+
}
|
|
418
|
+
|
|
196
419
|
export declare interface BreadcrumbItem {
|
|
197
420
|
label: string;
|
|
198
421
|
href?: string;
|
|
@@ -273,6 +496,22 @@ export declare interface CardProps {
|
|
|
273
496
|
elevation?: "none" | "sm" | "md" | "lg";
|
|
274
497
|
}
|
|
275
498
|
|
|
499
|
+
export declare interface ChartDataPoint {
|
|
500
|
+
/** X-axis label */
|
|
501
|
+
label: string;
|
|
502
|
+
/** Numeric value */
|
|
503
|
+
value: number;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
export declare interface ChartSeries {
|
|
507
|
+
/** Series name (shown in legend/tooltip) */
|
|
508
|
+
name: string;
|
|
509
|
+
/** Data points */
|
|
510
|
+
data: ChartDataPoint[];
|
|
511
|
+
/** Color override (defaults to token palette) */
|
|
512
|
+
color?: string;
|
|
513
|
+
}
|
|
514
|
+
|
|
276
515
|
export declare function CheckboxGroup({ label, children, direction, className }: CheckboxGroupProps): JSX.Element;
|
|
277
516
|
|
|
278
517
|
declare interface CheckboxGroupProps {
|
|
@@ -298,7 +537,67 @@ declare interface CheckboxProps {
|
|
|
298
537
|
|
|
299
538
|
export declare type CheckboxSize = "sm" | "md" | "lg";
|
|
300
539
|
|
|
301
|
-
export declare function
|
|
540
|
+
export declare function ChoiceCard({ value, title, description, icon, badge, selected, disabled, showArrow, showCheck, size, layout, onClick, className, }: ChoiceCardProps): JSX.Element;
|
|
541
|
+
|
|
542
|
+
export declare namespace ChoiceCard {
|
|
543
|
+
var displayName: string;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
export declare function ChoiceCardGroup({ value, onChange, layout, size, children, className, }: ChoiceCardGroupProps): JSX.Element;
|
|
547
|
+
|
|
548
|
+
export declare namespace ChoiceCardGroup {
|
|
549
|
+
var displayName: string;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
export declare interface ChoiceCardGroupProps {
|
|
553
|
+
/** Currently selected value */
|
|
554
|
+
value?: string;
|
|
555
|
+
/** Change handler */
|
|
556
|
+
onChange?: (value: string) => void;
|
|
557
|
+
/** Layout of the group */
|
|
558
|
+
layout?: ChoiceCardLayout;
|
|
559
|
+
/** Size applied to all cards */
|
|
560
|
+
size?: ChoiceCardSize;
|
|
561
|
+
/** Cards */
|
|
562
|
+
children: default_2.ReactNode;
|
|
563
|
+
/** Additional class name */
|
|
564
|
+
className?: string;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
declare type ChoiceCardLayout = "horizontal" | "vertical";
|
|
568
|
+
|
|
569
|
+
export declare interface ChoiceCardProps {
|
|
570
|
+
/** Unique value for this card */
|
|
571
|
+
value: string;
|
|
572
|
+
/** Card title */
|
|
573
|
+
title: string;
|
|
574
|
+
/** Subtitle / description */
|
|
575
|
+
description?: string;
|
|
576
|
+
/** Leading icon or image */
|
|
577
|
+
icon?: default_2.ReactNode;
|
|
578
|
+
/** Badge label (top-right) */
|
|
579
|
+
badge?: string;
|
|
580
|
+
/** Whether this card is selected */
|
|
581
|
+
selected?: boolean;
|
|
582
|
+
/** Disabled state */
|
|
583
|
+
disabled?: boolean;
|
|
584
|
+
/** Show arrow indicator (horizontal layout only) */
|
|
585
|
+
showArrow?: boolean;
|
|
586
|
+
/** Show checkmark instead of arrow on selection */
|
|
587
|
+
showCheck?: boolean;
|
|
588
|
+
/** Card size */
|
|
589
|
+
size?: ChoiceCardSize;
|
|
590
|
+
/** Layout direction */
|
|
591
|
+
layout?: ChoiceCardLayout;
|
|
592
|
+
/** Click handler */
|
|
593
|
+
onClick?: (value: string) => void;
|
|
594
|
+
/** Additional class name */
|
|
595
|
+
className?: string;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
declare type ChoiceCardSize = "sm" | "md" | "lg";
|
|
599
|
+
|
|
600
|
+
export declare function ColorPicker({ value, onChange, label, presets, showInput, showFormats, size, disabled, }: ColorPickerProps): JSX.Element;
|
|
302
601
|
|
|
303
602
|
export declare interface ColorPickerProps {
|
|
304
603
|
value: string;
|
|
@@ -308,6 +607,7 @@ export declare interface ColorPickerProps {
|
|
|
308
607
|
showInput?: boolean;
|
|
309
608
|
showFormats?: boolean;
|
|
310
609
|
size?: ColorPickerSize;
|
|
610
|
+
disabled?: boolean;
|
|
311
611
|
}
|
|
312
612
|
|
|
313
613
|
export declare type ColorPickerSize = "sm" | "md" | "lg";
|
|
@@ -392,6 +692,73 @@ export declare type DatePickerState = "default" | "error" | "success";
|
|
|
392
692
|
|
|
393
693
|
export declare type DatePickerVariant = "default" | "outlined" | "filled" | "ghost";
|
|
394
694
|
|
|
695
|
+
export declare interface DateRange {
|
|
696
|
+
from: Date | null;
|
|
697
|
+
to: Date | null;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
export declare function DateRangePicker({ value, onChange, presets, placeholder, size, minDate, maxDate, clearable, disabled, className, }: DateRangePickerProps): JSX.Element;
|
|
701
|
+
|
|
702
|
+
export declare namespace DateRangePicker {
|
|
703
|
+
var displayName: string;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
export declare interface DateRangePickerProps {
|
|
707
|
+
/** Current range */
|
|
708
|
+
value?: DateRange;
|
|
709
|
+
/** Change handler */
|
|
710
|
+
onChange?: (range: DateRange, preset?: DateRangePreset) => void;
|
|
711
|
+
/** Available presets (default: today, last7, last30, custom) */
|
|
712
|
+
presets?: DateRangePreset[];
|
|
713
|
+
/** Placeholder text */
|
|
714
|
+
placeholder?: string;
|
|
715
|
+
/** Component size */
|
|
716
|
+
size?: DateRangePickerSize;
|
|
717
|
+
/** Min selectable date */
|
|
718
|
+
minDate?: Date;
|
|
719
|
+
/** Max selectable date */
|
|
720
|
+
maxDate?: Date;
|
|
721
|
+
/** Show clear button */
|
|
722
|
+
clearable?: boolean;
|
|
723
|
+
/** Disabled state */
|
|
724
|
+
disabled?: boolean;
|
|
725
|
+
/** Additional class name */
|
|
726
|
+
className?: string;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
declare type DateRangePickerSize = "sm" | "md" | "lg";
|
|
730
|
+
|
|
731
|
+
export declare type DateRangePreset = "today" | "yesterday" | "last7" | "last30" | "thisMonth" | "lastMonth" | "custom";
|
|
732
|
+
|
|
733
|
+
export declare function DateTimePicker({ value, onChange, format, showSeconds, placeholder, size, minDate, maxDate, disabled, className, }: DateTimePickerProps): JSX.Element;
|
|
734
|
+
|
|
735
|
+
export declare namespace DateTimePicker {
|
|
736
|
+
var displayName: string;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
export declare interface DateTimePickerProps {
|
|
740
|
+
/** Combined date+time value */
|
|
741
|
+
value?: Date;
|
|
742
|
+
/** Change handler */
|
|
743
|
+
onChange?: (date: Date) => void;
|
|
744
|
+
/** Time format */
|
|
745
|
+
format?: TimePickerFormat;
|
|
746
|
+
/** Show seconds */
|
|
747
|
+
showSeconds?: boolean;
|
|
748
|
+
/** Placeholder */
|
|
749
|
+
placeholder?: string;
|
|
750
|
+
/** Component size */
|
|
751
|
+
size?: TimePickerSize;
|
|
752
|
+
/** Min date */
|
|
753
|
+
minDate?: Date;
|
|
754
|
+
/** Max date */
|
|
755
|
+
maxDate?: Date;
|
|
756
|
+
/** Disabled state */
|
|
757
|
+
disabled?: boolean;
|
|
758
|
+
/** Additional class name */
|
|
759
|
+
className?: string;
|
|
760
|
+
}
|
|
761
|
+
|
|
395
762
|
export declare function Divider({ label, orientation, dashed, spacing, className, }: DividerProps): JSX.Element;
|
|
396
763
|
|
|
397
764
|
export declare namespace Divider {
|
|
@@ -410,6 +777,35 @@ export declare interface DividerProps {
|
|
|
410
777
|
|
|
411
778
|
export declare type DividerSpacing = "sm" | "md" | "lg";
|
|
412
779
|
|
|
780
|
+
export declare function DonutChart({ data, size, innerRatio, centerLabel, centerValue, showLegend, showTooltip, className, }: DonutChartProps): JSX.Element | null;
|
|
781
|
+
|
|
782
|
+
export declare namespace DonutChart {
|
|
783
|
+
var displayName: string;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
export declare interface DonutChartProps {
|
|
787
|
+
/** Data segments */
|
|
788
|
+
data: {
|
|
789
|
+
label: string;
|
|
790
|
+
value: number;
|
|
791
|
+
color?: string;
|
|
792
|
+
}[];
|
|
793
|
+
/** Outer radius */
|
|
794
|
+
size?: number;
|
|
795
|
+
/** Inner radius ratio (0=pie, 0.6=donut) */
|
|
796
|
+
innerRatio?: number;
|
|
797
|
+
/** Center label */
|
|
798
|
+
centerLabel?: string;
|
|
799
|
+
/** Center value (overrides auto-sum) */
|
|
800
|
+
centerValue?: string;
|
|
801
|
+
/** Show legend */
|
|
802
|
+
showLegend?: boolean;
|
|
803
|
+
/** Show tooltip */
|
|
804
|
+
showTooltip?: boolean;
|
|
805
|
+
/** Additional class name */
|
|
806
|
+
className?: string;
|
|
807
|
+
}
|
|
808
|
+
|
|
413
809
|
export declare function Drawer({ open, onClose, title, children, side, size, footer, className, }: DrawerProps): JSX.Element | null;
|
|
414
810
|
|
|
415
811
|
export declare namespace Drawer {
|
|
@@ -527,6 +923,8 @@ declare interface DSInputProps extends Omit<default_2.InputHTMLAttributes<HTMLIn
|
|
|
527
923
|
loading?: boolean;
|
|
528
924
|
fullWidth?: boolean;
|
|
529
925
|
required?: boolean;
|
|
926
|
+
/** Show character count below input (requires maxLength) */
|
|
927
|
+
showCount?: boolean;
|
|
530
928
|
onClear?: () => void;
|
|
531
929
|
}
|
|
532
930
|
export { DSInputProps }
|
|
@@ -536,7 +934,7 @@ declare function DSRadio({ value, label, description, disabled: localDisabled, s
|
|
|
536
934
|
export { DSRadio }
|
|
537
935
|
export { DSRadio as Radio }
|
|
538
936
|
|
|
539
|
-
declare function DSTable<T extends Record<string, any>>({ columns, data, size, striped, hoverable, bordered, selectable, selectedRows: controlledSelected, onSelectionChange, loading, emptyMessage, stickyHeader, flush, className, }: TableProps<T>): JSX.Element;
|
|
937
|
+
declare function DSTable<T extends Record<string, any>>({ columns, data, size, striped, hoverable, bordered, selectable, selectedRows: controlledSelected, onSelectionChange, loading, error, emptyMessage, stickyHeader, flush, className, }: TableProps<T>): JSX.Element;
|
|
540
938
|
export { DSTable }
|
|
541
939
|
export { DSTable as Table }
|
|
542
940
|
|
|
@@ -581,6 +979,75 @@ export declare interface EmptyStateProps {
|
|
|
581
979
|
|
|
582
980
|
export declare type EmptyStateSize = "sm" | "md" | "lg";
|
|
583
981
|
|
|
982
|
+
declare interface ErrorBoundaryState {
|
|
983
|
+
hasError: boolean;
|
|
984
|
+
error?: Error;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
export declare type FeaturePageLayout = "list" | "detail" | "settings" | "wizard" | "dashboard" | "form" | "report";
|
|
988
|
+
|
|
989
|
+
export declare function FeaturePageScaffold(props: FeaturePageScaffoldProps): JSX.Element;
|
|
990
|
+
|
|
991
|
+
export declare namespace FeaturePageScaffold {
|
|
992
|
+
var displayName: string;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
export declare interface FeaturePageScaffoldProps {
|
|
996
|
+
/**
|
|
997
|
+
* Layout variant — determines the region structure.
|
|
998
|
+
* @default "list"
|
|
999
|
+
*/
|
|
1000
|
+
layout?: FeaturePageLayout;
|
|
1001
|
+
/** Page header — use <PageHeader> component */
|
|
1002
|
+
header?: default_2.ReactNode;
|
|
1003
|
+
/** Page-level alert / announcement banner */
|
|
1004
|
+
banner?: default_2.ReactNode;
|
|
1005
|
+
/** Stat cards row — shown above filters in list/dashboard layouts */
|
|
1006
|
+
stats?: default_2.ReactNode;
|
|
1007
|
+
/** Filter bar — shown between stats and content in list layout */
|
|
1008
|
+
filters?: default_2.ReactNode;
|
|
1009
|
+
/** Main content area — table, grid, cards */
|
|
1010
|
+
content?: default_2.ReactNode;
|
|
1011
|
+
/** Footer — pagination, bulk action bar */
|
|
1012
|
+
footer?: default_2.ReactNode;
|
|
1013
|
+
/** Main content column (left, wider) — detail layout */
|
|
1014
|
+
main?: default_2.ReactNode;
|
|
1015
|
+
/** Side panel (right, narrower) — detail layout */
|
|
1016
|
+
aside?: default_2.ReactNode;
|
|
1017
|
+
/** Aside width class — default: "w-80" */
|
|
1018
|
+
asideWidth?: string;
|
|
1019
|
+
/** Whether aside appears on the left instead of right */
|
|
1020
|
+
asideLeft?: boolean;
|
|
1021
|
+
/** Sections list — settings layout (array of ReactNode) */
|
|
1022
|
+
sections?: default_2.ReactNode;
|
|
1023
|
+
/** Stepper — wizard layout */
|
|
1024
|
+
stepper?: default_2.ReactNode;
|
|
1025
|
+
/** Form body — wizard/form layouts */
|
|
1026
|
+
form?: default_2.ReactNode;
|
|
1027
|
+
/** Sticky action bar — wizard/form layouts */
|
|
1028
|
+
actions?: default_2.ReactNode;
|
|
1029
|
+
/** Primary chart area — dashboard */
|
|
1030
|
+
primaryChart?: default_2.ReactNode;
|
|
1031
|
+
/** Secondary chart(s) — dashboard (2-column) */
|
|
1032
|
+
secondaryCharts?: default_2.ReactNode;
|
|
1033
|
+
/** Quick stats / KPI cards */
|
|
1034
|
+
kpis?: default_2.ReactNode;
|
|
1035
|
+
/** Date range picker + period selector */
|
|
1036
|
+
dateRange?: default_2.ReactNode;
|
|
1037
|
+
/** Chart section */
|
|
1038
|
+
charts?: default_2.ReactNode;
|
|
1039
|
+
/** Data table section */
|
|
1040
|
+
table?: default_2.ReactNode;
|
|
1041
|
+
/** Outer max width (e.g. "max-w-7xl") — defaults to full width */
|
|
1042
|
+
maxWidth?: string;
|
|
1043
|
+
/** Page padding — default "p-6" desktop, "p-4" mobile */
|
|
1044
|
+
padding?: string;
|
|
1045
|
+
/** Gap between regions — default "gap-6" */
|
|
1046
|
+
gap?: string;
|
|
1047
|
+
/** Additional className on root element */
|
|
1048
|
+
className?: string;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
584
1051
|
export declare function FileUpload({ accept, maxSize, multiple, disabled, variant, label, description, value, onChange, onUpload, onRemove, }: FileUploadProps): JSX.Element;
|
|
585
1052
|
|
|
586
1053
|
export declare interface FileUploadProps {
|
|
@@ -705,6 +1172,16 @@ export declare interface FormSuccessProps {
|
|
|
705
1172
|
className?: string;
|
|
706
1173
|
}
|
|
707
1174
|
|
|
1175
|
+
export declare interface GalleryImage {
|
|
1176
|
+
id: string;
|
|
1177
|
+
src: string;
|
|
1178
|
+
alt?: string;
|
|
1179
|
+
name?: string;
|
|
1180
|
+
size?: string;
|
|
1181
|
+
/** Extra metadata */
|
|
1182
|
+
meta?: Record<string, string>;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
708
1185
|
export declare const IconButton: default_2.ForwardRefExoticComponent<IconButtonProps & default_2.RefAttributes<HTMLButtonElement>>;
|
|
709
1186
|
|
|
710
1187
|
export declare interface IconButtonProps extends default_2.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
@@ -715,6 +1192,45 @@ export declare interface IconButtonProps extends default_2.ButtonHTMLAttributes<
|
|
|
715
1192
|
"aria-label": string;
|
|
716
1193
|
}
|
|
717
1194
|
|
|
1195
|
+
export declare function ImageGallery({ images, selectable, selectedIds, onSelectChange, maxSelect, lightbox, uploadable, onUpload, onDelete, defaultLayout, columns, disabled, className, }: ImageGalleryProps): JSX.Element;
|
|
1196
|
+
|
|
1197
|
+
export declare namespace ImageGallery {
|
|
1198
|
+
var displayName: string;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
declare type ImageGalleryColumns = 2 | 3 | 4 | 5 | 6;
|
|
1202
|
+
|
|
1203
|
+
declare type ImageGalleryLayout = "grid" | "list";
|
|
1204
|
+
|
|
1205
|
+
export declare interface ImageGalleryProps {
|
|
1206
|
+
/** Images to display */
|
|
1207
|
+
images: GalleryImage[];
|
|
1208
|
+
/** Allow selecting images */
|
|
1209
|
+
selectable?: boolean;
|
|
1210
|
+
/** Currently selected image IDs */
|
|
1211
|
+
selectedIds?: string[];
|
|
1212
|
+
/** Selection change handler */
|
|
1213
|
+
onSelectChange?: (ids: string[]) => void;
|
|
1214
|
+
/** Max selectable images (default: unlimited) */
|
|
1215
|
+
maxSelect?: number;
|
|
1216
|
+
/** Show lightbox on click */
|
|
1217
|
+
lightbox?: boolean;
|
|
1218
|
+
/** Allow upload (calls onUpload) */
|
|
1219
|
+
uploadable?: boolean;
|
|
1220
|
+
/** Upload handler */
|
|
1221
|
+
onUpload?: (files: FileList) => void;
|
|
1222
|
+
/** Delete handler */
|
|
1223
|
+
onDelete?: (id: string) => void;
|
|
1224
|
+
/** Default layout */
|
|
1225
|
+
defaultLayout?: ImageGalleryLayout;
|
|
1226
|
+
/** Grid columns */
|
|
1227
|
+
columns?: ImageGalleryColumns;
|
|
1228
|
+
/** Disabled state */
|
|
1229
|
+
disabled?: boolean;
|
|
1230
|
+
/** Additional class name */
|
|
1231
|
+
className?: string;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
718
1234
|
export declare function ImagePreview({ images, initialIndex }: ImagePreviewProps): JSX.Element;
|
|
719
1235
|
|
|
720
1236
|
export declare interface ImagePreviewItem {
|
|
@@ -734,6 +1250,19 @@ export declare type InputState = "default" | "error" | "success" | "warning";
|
|
|
734
1250
|
|
|
735
1251
|
export declare type InputVariant = "default" | "outlined" | "filled" | "ghost";
|
|
736
1252
|
|
|
1253
|
+
export declare function LineChart({ series, height, width, showXAxis, showYAxis, showGrid, showLegend, showTooltip, showDots, smooth, className, }: LineChartProps): JSX.Element | null;
|
|
1254
|
+
|
|
1255
|
+
export declare namespace LineChart {
|
|
1256
|
+
var displayName: string;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
export declare interface LineChartProps extends BaseChartProps {
|
|
1260
|
+
/** Show dots on data points */
|
|
1261
|
+
showDots?: boolean;
|
|
1262
|
+
/** Smooth curves (catmull-rom) */
|
|
1263
|
+
smooth?: boolean;
|
|
1264
|
+
}
|
|
1265
|
+
|
|
737
1266
|
export declare function Menu({ items, open, onClose, triggerRef, className }: MenuProps): default_2.ReactPortal | null;
|
|
738
1267
|
|
|
739
1268
|
export declare namespace Menu {
|
|
@@ -774,6 +1303,31 @@ export declare interface MenuProps {
|
|
|
774
1303
|
className?: string;
|
|
775
1304
|
}
|
|
776
1305
|
|
|
1306
|
+
export declare function MiniSparkline({ values, type, width, height, color, showValue, trend, className, }: MiniSparklineProps): JSX.Element | null;
|
|
1307
|
+
|
|
1308
|
+
export declare namespace MiniSparkline {
|
|
1309
|
+
var displayName: string;
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
export declare interface MiniSparklineProps {
|
|
1313
|
+
/** Data values (no labels needed) */
|
|
1314
|
+
values: number[];
|
|
1315
|
+
/** Type */
|
|
1316
|
+
type?: "line" | "bar" | "area";
|
|
1317
|
+
/** Width */
|
|
1318
|
+
width?: number;
|
|
1319
|
+
/** Height */
|
|
1320
|
+
height?: number;
|
|
1321
|
+
/** Color */
|
|
1322
|
+
color?: string;
|
|
1323
|
+
/** Show last value as label */
|
|
1324
|
+
showValue?: boolean;
|
|
1325
|
+
/** Trend direction override (auto-computed if omitted) */
|
|
1326
|
+
trend?: "up" | "down" | "neutral";
|
|
1327
|
+
/** Additional class name */
|
|
1328
|
+
className?: string;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
777
1331
|
export declare function Modal({ open, onClose, title, description, size, children, footer, closeOnOverlay, showCloseButton, className, }: ModalProps): JSX.Element | null;
|
|
778
1332
|
|
|
779
1333
|
declare interface ModalProps {
|
|
@@ -791,6 +1345,47 @@ declare interface ModalProps {
|
|
|
791
1345
|
|
|
792
1346
|
export declare type ModalSize = "sm" | "md" | "lg" | "xl" | "full";
|
|
793
1347
|
|
|
1348
|
+
/**
|
|
1349
|
+
* A single navigation item in the sidebar.
|
|
1350
|
+
* Supports static badge, async badge, and permission gating.
|
|
1351
|
+
*/
|
|
1352
|
+
export declare interface NavItem {
|
|
1353
|
+
/** Unique identifier — used for active state matching */
|
|
1354
|
+
id: string;
|
|
1355
|
+
/** Display label */
|
|
1356
|
+
label: string;
|
|
1357
|
+
/** Leading icon (ReactNode — use lucide-react icons) */
|
|
1358
|
+
icon?: default_2.ReactNode;
|
|
1359
|
+
/** Navigation target — href or route path */
|
|
1360
|
+
href?: string;
|
|
1361
|
+
/** Badge count or label — static string/number or async resolver */
|
|
1362
|
+
badge?: string | number | (() => Promise<number>);
|
|
1363
|
+
/** Child items for nested navigation (one level only) */
|
|
1364
|
+
children?: NavItem[];
|
|
1365
|
+
/** Permission key required to show this item — matched against ShellUser.permissions */
|
|
1366
|
+
permission?: string;
|
|
1367
|
+
/** Disable click and dim the item */
|
|
1368
|
+
disabled?: boolean;
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
/**
|
|
1372
|
+
* A resolver function that returns navigation groups for a given user.
|
|
1373
|
+
* Used by AppShell to support permission-filtered, async navigation.
|
|
1374
|
+
*
|
|
1375
|
+
* @example
|
|
1376
|
+
* const navResolver: NavResolver = async (user) => {
|
|
1377
|
+
* const counts = await fetchBadgeCounts(user.id);
|
|
1378
|
+
* return buildNavGroups(user.permissions, counts);
|
|
1379
|
+
* };
|
|
1380
|
+
*/
|
|
1381
|
+
export declare type NavResolver = (user: ShellUser) => ShellSidebarGroup[] | Promise<ShellSidebarGroup[]>;
|
|
1382
|
+
|
|
1383
|
+
export declare interface NavState {
|
|
1384
|
+
groups: ShellSidebarGroup[];
|
|
1385
|
+
loading: boolean;
|
|
1386
|
+
error: string | null;
|
|
1387
|
+
}
|
|
1388
|
+
|
|
794
1389
|
declare function Notification_2({ type, title, message, closable, onClose, action, avatar, time, read, }: NotificationProps): JSX.Element;
|
|
795
1390
|
export { Notification_2 as Notification }
|
|
796
1391
|
|
|
@@ -945,6 +1540,12 @@ export declare type PaginationSize = "sm" | "md" | "lg";
|
|
|
945
1540
|
|
|
946
1541
|
export declare type PaginationVariant = "default" | "outlined" | "filled" | "minimal";
|
|
947
1542
|
|
|
1543
|
+
/**
|
|
1544
|
+
* Patona brand config — Orange-500 primary.
|
|
1545
|
+
* Logo and workspaceSwitcher should be provided by the Patona product repo.
|
|
1546
|
+
*/
|
|
1547
|
+
export declare const patonaBrandConfig: ProductBrandConfig;
|
|
1548
|
+
|
|
948
1549
|
export declare function Popover({ trigger, children, placement, title, open: controlled, onOpenChange, }: PopoverProps): JSX.Element;
|
|
949
1550
|
|
|
950
1551
|
export declare type PopoverPlacement = "top" | "bottom" | "left" | "right";
|
|
@@ -958,6 +1559,45 @@ export declare interface PopoverProps {
|
|
|
958
1559
|
onOpenChange?: (v: boolean) => void;
|
|
959
1560
|
}
|
|
960
1561
|
|
|
1562
|
+
/**
|
|
1563
|
+
* Static brand identity config for a product.
|
|
1564
|
+
*
|
|
1565
|
+
* This is the config that ships in the npm package (or product repo).
|
|
1566
|
+
* It does NOT include navigation — nav lives in the product repo (dynamic).
|
|
1567
|
+
*
|
|
1568
|
+
* @example
|
|
1569
|
+
* const sellsukiBrandConfig: ProductBrandConfig = {
|
|
1570
|
+
* product: "sellsuki",
|
|
1571
|
+
* brand: {
|
|
1572
|
+
* name: "Sellsuki",
|
|
1573
|
+
* logo: <SellsukiLogo />,
|
|
1574
|
+
* theme: "sellsuki",
|
|
1575
|
+
* },
|
|
1576
|
+
* };
|
|
1577
|
+
*/
|
|
1578
|
+
export declare interface ProductBrandConfig {
|
|
1579
|
+
/** Product identifier — sets data-product attribute on shell root */
|
|
1580
|
+
product: ProductId;
|
|
1581
|
+
/** Brand identity */
|
|
1582
|
+
brand: {
|
|
1583
|
+
/** Brand/product name shown in sidebar header and nav title */
|
|
1584
|
+
name: string;
|
|
1585
|
+
/** Logo component or image URL */
|
|
1586
|
+
logo?: default_2.ReactNode;
|
|
1587
|
+
/** CSS theme class or data-product value — used for token overrides */
|
|
1588
|
+
theme?: string;
|
|
1589
|
+
/** Optional workspace/shop switcher rendered after brand logo in TopNavbar */
|
|
1590
|
+
workspaceSwitcher?: default_2.ReactNode;
|
|
1591
|
+
};
|
|
1592
|
+
/** Optional shell layout preferences */
|
|
1593
|
+
shell?: ShellPrefs;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
/**
|
|
1597
|
+
* Product identifier — all current and planned Sellsuki products.
|
|
1598
|
+
*/
|
|
1599
|
+
export declare type ProductId = "sellsuki" | "patona" | "sukispace" | "shipmunk" | "akita" | "oc2plus" | (string & {});
|
|
1600
|
+
|
|
961
1601
|
export declare function ProgressBar({ value, max, size, color, label, showValue, indeterminate, className, }: ProgressBarProps): JSX.Element;
|
|
962
1602
|
|
|
963
1603
|
export declare namespace ProgressBar {
|
|
@@ -977,6 +1617,50 @@ export declare interface ProgressBarProps {
|
|
|
977
1617
|
|
|
978
1618
|
export declare type ProgressBarSize = "sm" | "md" | "lg";
|
|
979
1619
|
|
|
1620
|
+
export declare function RadioCard({ options, value, onChange, columns, layout, size, name, className, }: RadioCardProps): JSX.Element;
|
|
1621
|
+
|
|
1622
|
+
export declare namespace RadioCard {
|
|
1623
|
+
var displayName: string;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
declare type RadioCardLayout = "grid" | "list";
|
|
1627
|
+
|
|
1628
|
+
export declare interface RadioCardOption {
|
|
1629
|
+
/** Unique value */
|
|
1630
|
+
value: string;
|
|
1631
|
+
/** Card title */
|
|
1632
|
+
title: string;
|
|
1633
|
+
/** Description text */
|
|
1634
|
+
description?: string;
|
|
1635
|
+
/** Icon, logo, or image */
|
|
1636
|
+
icon?: default_2.ReactNode;
|
|
1637
|
+
/** Badge label */
|
|
1638
|
+
badge?: string;
|
|
1639
|
+
/** Disabled state */
|
|
1640
|
+
disabled?: boolean;
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
export declare interface RadioCardProps {
|
|
1644
|
+
/** Options to render */
|
|
1645
|
+
options: RadioCardOption[];
|
|
1646
|
+
/** Currently selected value */
|
|
1647
|
+
value?: string;
|
|
1648
|
+
/** Change handler */
|
|
1649
|
+
onChange?: (value: string) => void;
|
|
1650
|
+
/** Grid columns */
|
|
1651
|
+
columns?: 1 | 2 | 3 | 4;
|
|
1652
|
+
/** Layout */
|
|
1653
|
+
layout?: RadioCardLayout;
|
|
1654
|
+
/** Card size */
|
|
1655
|
+
size?: RadioCardSize;
|
|
1656
|
+
/** Name for the radio group (for form semantics) */
|
|
1657
|
+
name?: string;
|
|
1658
|
+
/** Additional class name */
|
|
1659
|
+
className?: string;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
declare type RadioCardSize = "sm" | "md" | "lg";
|
|
1663
|
+
|
|
980
1664
|
export declare function RadioGroup({ name, value: controlled, defaultValue, onChange, label, size, disabled, direction, children, error, className, }: RadioGroupProps): JSX.Element;
|
|
981
1665
|
|
|
982
1666
|
declare interface RadioGroupProps {
|
|
@@ -1022,6 +1706,117 @@ export declare interface RatingProps {
|
|
|
1022
1706
|
|
|
1023
1707
|
export declare type RatingSize = "sm" | "md" | "lg";
|
|
1024
1708
|
|
|
1709
|
+
export declare interface RepeatableFieldColumn {
|
|
1710
|
+
/** Column key matching values[key] */
|
|
1711
|
+
key: string;
|
|
1712
|
+
/** Column header label */
|
|
1713
|
+
label: string;
|
|
1714
|
+
/** Render function — receive current value + onChange */
|
|
1715
|
+
render: (value: unknown, onChange: (val: unknown) => void, rowIndex: number) => default_2.ReactNode;
|
|
1716
|
+
/** Column width (CSS, e.g. "200px", "1fr") */
|
|
1717
|
+
width?: string;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
export declare function RepeatableFieldList({ columns, value, onChange, defaultRow, minRows, maxRows, addLabel, sortable, disabled, className, }: RepeatableFieldListProps): JSX.Element;
|
|
1721
|
+
|
|
1722
|
+
export declare namespace RepeatableFieldList {
|
|
1723
|
+
var displayName: string;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
export declare interface RepeatableFieldListProps {
|
|
1727
|
+
/** Column definitions */
|
|
1728
|
+
columns: RepeatableFieldColumn[];
|
|
1729
|
+
/** Current rows */
|
|
1730
|
+
value?: RepeatableFieldRow[];
|
|
1731
|
+
/** Change handler */
|
|
1732
|
+
onChange?: (rows: RepeatableFieldRow[]) => void;
|
|
1733
|
+
/** Default values for a new row */
|
|
1734
|
+
defaultRow?: Record<string, unknown>;
|
|
1735
|
+
/** Minimum number of rows (shows disabled remove when at min) */
|
|
1736
|
+
minRows?: number;
|
|
1737
|
+
/** Maximum number of rows (hides add button when at max) */
|
|
1738
|
+
maxRows?: number;
|
|
1739
|
+
/** Add button label */
|
|
1740
|
+
addLabel?: string;
|
|
1741
|
+
/** Whether rows can be reordered */
|
|
1742
|
+
sortable?: boolean;
|
|
1743
|
+
/** Disabled state */
|
|
1744
|
+
disabled?: boolean;
|
|
1745
|
+
/** Additional class name */
|
|
1746
|
+
className?: string;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
export declare interface RepeatableFieldRow {
|
|
1750
|
+
/** Internal unique ID */
|
|
1751
|
+
id: string;
|
|
1752
|
+
/** Row data values keyed by field name */
|
|
1753
|
+
values: Record<string, unknown>;
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
export declare function RichTextEditor({ value, onChange, placeholder, minHeight, maxHeight, toolbar, fullscreen: allowFullscreen, disabled, readOnly, size, className, }: RichTextEditorProps): JSX.Element;
|
|
1757
|
+
|
|
1758
|
+
export declare namespace RichTextEditor {
|
|
1759
|
+
var displayName: string;
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
export declare interface RichTextEditorProps {
|
|
1763
|
+
/** HTML content value */
|
|
1764
|
+
value?: string;
|
|
1765
|
+
/** Change handler (receives HTML string) */
|
|
1766
|
+
onChange?: (html: string) => void;
|
|
1767
|
+
/** Placeholder text */
|
|
1768
|
+
placeholder?: string;
|
|
1769
|
+
/** Min height (px) */
|
|
1770
|
+
minHeight?: number;
|
|
1771
|
+
/** Max height (px, scroll beyond) */
|
|
1772
|
+
maxHeight?: number;
|
|
1773
|
+
/** Toolbar groups to show */
|
|
1774
|
+
toolbar?: ("format" | "list" | "align" | "link" | "block" | "history")[];
|
|
1775
|
+
/** Allow fullscreen toggle */
|
|
1776
|
+
fullscreen?: boolean;
|
|
1777
|
+
/** Disabled state */
|
|
1778
|
+
disabled?: boolean;
|
|
1779
|
+
/** Read-only state */
|
|
1780
|
+
readOnly?: boolean;
|
|
1781
|
+
/** Component size */
|
|
1782
|
+
size?: RichTextEditorSize;
|
|
1783
|
+
/** Additional class name */
|
|
1784
|
+
className?: string;
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
declare type RichTextEditorSize = "sm" | "md" | "lg";
|
|
1788
|
+
|
|
1789
|
+
/**
|
|
1790
|
+
* KPI stat card row for dashboard layout.
|
|
1791
|
+
* Wraps children in an equal-width responsive grid.
|
|
1792
|
+
*/
|
|
1793
|
+
export declare function ScaffoldKPIRow({ children, className }: {
|
|
1794
|
+
children: default_2.ReactNode;
|
|
1795
|
+
className?: string;
|
|
1796
|
+
}): JSX.Element;
|
|
1797
|
+
|
|
1798
|
+
export declare namespace ScaffoldKPIRow {
|
|
1799
|
+
var displayName: string;
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
export declare function ScaffoldSection({ title, description, action, children, className }: ScaffoldSectionProps): JSX.Element;
|
|
1803
|
+
|
|
1804
|
+
export declare namespace ScaffoldSection {
|
|
1805
|
+
var displayName: string;
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1808
|
+
/**
|
|
1809
|
+
* Scaffold section for settings layout.
|
|
1810
|
+
* Provides consistent heading + description + content region.
|
|
1811
|
+
*/
|
|
1812
|
+
export declare interface ScaffoldSectionProps {
|
|
1813
|
+
title: string;
|
|
1814
|
+
description?: string;
|
|
1815
|
+
action?: default_2.ReactNode;
|
|
1816
|
+
children: default_2.ReactNode;
|
|
1817
|
+
className?: string;
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1025
1820
|
export declare function SearchField({ value: controlled, onChange, onSearch, placeholder, size, variant, loading, suggestions, onSuggestionSelect, clearable, disabled, autoFocus, debounce, className, }: SearchFieldProps): JSX.Element;
|
|
1026
1821
|
|
|
1027
1822
|
declare interface SearchFieldProps {
|
|
@@ -1052,6 +1847,61 @@ declare interface SearchSuggestion {
|
|
|
1052
1847
|
|
|
1053
1848
|
export declare type SearchVariant = "default" | "outlined" | "filled";
|
|
1054
1849
|
|
|
1850
|
+
/**
|
|
1851
|
+
* Sellsuki brand config — Sky-500 primary, DB HeaventRounded font.
|
|
1852
|
+
* Use this as the default for Sellsuki Admin product.
|
|
1853
|
+
*/
|
|
1854
|
+
export declare const sellsukiBrandConfig: ProductBrandConfig;
|
|
1855
|
+
|
|
1856
|
+
/**
|
|
1857
|
+
* Shell layout preferences that can be overridden per product.
|
|
1858
|
+
*/
|
|
1859
|
+
export declare interface ShellPrefs {
|
|
1860
|
+
/** Whether the sidebar can be collapsed — default true */
|
|
1861
|
+
sidebarCollapsible?: boolean;
|
|
1862
|
+
/** Sidebar open by default on desktop — default true */
|
|
1863
|
+
sidebarDefaultOpen?: boolean;
|
|
1864
|
+
/** Max width of the content area — default undefined (full width) */
|
|
1865
|
+
contentMaxWidth?: string;
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
/**
|
|
1869
|
+
* A group of navigation items used by AppShell — richer than the standalone Sidebar's SidebarGroup.
|
|
1870
|
+
* Use this type when configuring AppShell navigation via NavResolver.
|
|
1871
|
+
* @alias ShellSidebarGroup
|
|
1872
|
+
*/
|
|
1873
|
+
export declare interface ShellSidebarGroup {
|
|
1874
|
+
/** Group label shown as section header — omit for ungrouped items */
|
|
1875
|
+
title?: string;
|
|
1876
|
+
/** Navigation items in this group */
|
|
1877
|
+
items: NavItem[];
|
|
1878
|
+
/** Whether the group can be collapsed — default false */
|
|
1879
|
+
collapsible?: boolean;
|
|
1880
|
+
/** Default collapsed state — only applies if collapsible=true */
|
|
1881
|
+
defaultCollapsed?: boolean;
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1884
|
+
/**
|
|
1885
|
+
* The authenticated user shown in the shell (top nav user menu, sidebar account).
|
|
1886
|
+
*/
|
|
1887
|
+
export declare interface ShellUser {
|
|
1888
|
+
/** Display name */
|
|
1889
|
+
name: string;
|
|
1890
|
+
/** Avatar image URL — falls back to initials if not provided */
|
|
1891
|
+
avatar?: string;
|
|
1892
|
+
/** Email address */
|
|
1893
|
+
email?: string;
|
|
1894
|
+
/** User role label (e.g. "Admin", "Staff", "Owner") */
|
|
1895
|
+
role?: string;
|
|
1896
|
+
/** Permission keys for nav item filtering — e.g. ["orders:read", "settings:write"] */
|
|
1897
|
+
permissions: string[];
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
/**
|
|
1901
|
+
* Shipmunk brand config — placeholder, theme TBD.
|
|
1902
|
+
*/
|
|
1903
|
+
export declare const shipmunkBrandConfig: ProductBrandConfig;
|
|
1904
|
+
|
|
1055
1905
|
export declare function Sidebar({ brand, accountSwitcher, groups, activeItem, onNavigate, collapsed, onCollapsedChange, showCollapseToggle, version, versionDate, className, }: SidebarProps): JSX.Element;
|
|
1056
1906
|
|
|
1057
1907
|
export declare namespace Sidebar {
|
|
@@ -1111,8 +1961,8 @@ export declare interface SidebarItem {
|
|
|
1111
1961
|
label: string;
|
|
1112
1962
|
/** Leading icon */
|
|
1113
1963
|
icon?: default_2.ReactNode;
|
|
1114
|
-
/** Badge text
|
|
1115
|
-
badge?: string;
|
|
1964
|
+
/** Badge text or count — shown next to item label */
|
|
1965
|
+
badge?: string | number;
|
|
1116
1966
|
}
|
|
1117
1967
|
|
|
1118
1968
|
export declare interface SidebarProps {
|
|
@@ -1146,7 +1996,9 @@ export declare function Skeleton({ width, height, variant, animate, className, }
|
|
|
1146
1996
|
|
|
1147
1997
|
export declare function SkeletonCard(): JSX.Element;
|
|
1148
1998
|
|
|
1149
|
-
export declare function SkeletonList(
|
|
1999
|
+
export declare function SkeletonList({ rows }: {
|
|
2000
|
+
rows?: number;
|
|
2001
|
+
}): JSX.Element;
|
|
1150
2002
|
|
|
1151
2003
|
export declare interface SkeletonProps {
|
|
1152
2004
|
width?: string | number;
|
|
@@ -1217,6 +2069,8 @@ export declare interface StepDefinition {
|
|
|
1217
2069
|
title: string;
|
|
1218
2070
|
/** Optional step description */
|
|
1219
2071
|
description?: string;
|
|
2072
|
+
/** Disable click navigation to this step */
|
|
2073
|
+
disabled?: boolean;
|
|
1220
2074
|
}
|
|
1221
2075
|
|
|
1222
2076
|
export declare function Stepper({ steps, current, orientation, onStepClick, className, }: StepperProps): JSX.Element;
|
|
@@ -1238,6 +2092,11 @@ export declare interface StepperProps {
|
|
|
1238
2092
|
className?: string;
|
|
1239
2093
|
}
|
|
1240
2094
|
|
|
2095
|
+
/**
|
|
2096
|
+
* Sukispace brand config — Sky-500 primary (same as Sellsuki, identity TBD).
|
|
2097
|
+
*/
|
|
2098
|
+
export declare const sukispaceBrandConfig: ProductBrandConfig;
|
|
2099
|
+
|
|
1241
2100
|
export declare function Switch({ checked, onChange, label, description, size, disabled, color, }: SwitchProps): JSX.Element;
|
|
1242
2101
|
|
|
1243
2102
|
export declare type SwitchColor = "primary" | "success" | "warning" | "destructive";
|
|
@@ -1283,6 +2142,7 @@ declare interface TableProps<T = any> {
|
|
|
1283
2142
|
selectedRows?: Set<number>;
|
|
1284
2143
|
onSelectionChange?: (selected: Set<number>) => void;
|
|
1285
2144
|
loading?: boolean;
|
|
2145
|
+
error?: string;
|
|
1286
2146
|
emptyMessage?: string;
|
|
1287
2147
|
stickyHeader?: boolean;
|
|
1288
2148
|
/** Remove border and border-radius — use when table is already inside a bordered container */
|
|
@@ -1361,6 +2221,29 @@ export declare interface TagProps {
|
|
|
1361
2221
|
|
|
1362
2222
|
export declare type TagSize = "sm" | "md" | "lg";
|
|
1363
2223
|
|
|
2224
|
+
export declare function ThumbnailCell({ src, alt, caption, subCaption, size, onClick, className, }: ThumbnailCellProps): JSX.Element;
|
|
2225
|
+
|
|
2226
|
+
export declare namespace ThumbnailCell {
|
|
2227
|
+
var displayName: string;
|
|
2228
|
+
}
|
|
2229
|
+
|
|
2230
|
+
export declare interface ThumbnailCellProps {
|
|
2231
|
+
/** Image source */
|
|
2232
|
+
src: string;
|
|
2233
|
+
/** Alt text */
|
|
2234
|
+
alt?: string;
|
|
2235
|
+
/** Caption below image */
|
|
2236
|
+
caption?: string;
|
|
2237
|
+
/** Sub-caption (muted) */
|
|
2238
|
+
subCaption?: string;
|
|
2239
|
+
/** Thumbnail size */
|
|
2240
|
+
size?: "xs" | "sm" | "md";
|
|
2241
|
+
/** Click handler */
|
|
2242
|
+
onClick?: () => void;
|
|
2243
|
+
/** Additional class name */
|
|
2244
|
+
className?: string;
|
|
2245
|
+
}
|
|
2246
|
+
|
|
1364
2247
|
export declare function Timeline({ items, variant, size, }: TimelineProps): JSX.Element;
|
|
1365
2248
|
|
|
1366
2249
|
export declare interface TimelineItem {
|
|
@@ -1384,6 +2267,43 @@ export declare type TimelineSize = "sm" | "md" | "lg";
|
|
|
1384
2267
|
|
|
1385
2268
|
export declare type TimelineVariant = "default" | "alternate" | "compact";
|
|
1386
2269
|
|
|
2270
|
+
export declare function TimePicker({ value, onChange, format, showSeconds, minuteStep, placeholder, size, disabled, className, }: TimePickerProps): JSX.Element;
|
|
2271
|
+
|
|
2272
|
+
export declare namespace TimePicker {
|
|
2273
|
+
var displayName: string;
|
|
2274
|
+
}
|
|
2275
|
+
|
|
2276
|
+
export declare type TimePickerFormat = "12h" | "24h";
|
|
2277
|
+
|
|
2278
|
+
export declare interface TimePickerProps {
|
|
2279
|
+
/** Current time value */
|
|
2280
|
+
value?: TimeValue;
|
|
2281
|
+
/** Change handler */
|
|
2282
|
+
onChange?: (time: TimeValue) => void;
|
|
2283
|
+
/** 12-hour or 24-hour format */
|
|
2284
|
+
format?: TimePickerFormat;
|
|
2285
|
+
/** Show seconds column */
|
|
2286
|
+
showSeconds?: boolean;
|
|
2287
|
+
/** Minute step (default: 1) */
|
|
2288
|
+
minuteStep?: number;
|
|
2289
|
+
/** Placeholder text */
|
|
2290
|
+
placeholder?: string;
|
|
2291
|
+
/** Component size */
|
|
2292
|
+
size?: TimePickerSize;
|
|
2293
|
+
/** Disabled state */
|
|
2294
|
+
disabled?: boolean;
|
|
2295
|
+
/** Additional class name */
|
|
2296
|
+
className?: string;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
declare type TimePickerSize = "sm" | "md" | "lg";
|
|
2300
|
+
|
|
2301
|
+
export declare interface TimeValue {
|
|
2302
|
+
hours: number;
|
|
2303
|
+
minutes: number;
|
|
2304
|
+
seconds?: number;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
1387
2307
|
export declare const toast: {
|
|
1388
2308
|
show: (opts: Omit<ToastData, "id">) => void;
|
|
1389
2309
|
info: (message: string, title?: string) => void;
|
|
@@ -1422,7 +2342,7 @@ export declare interface TooltipProps {
|
|
|
1422
2342
|
className?: string;
|
|
1423
2343
|
}
|
|
1424
2344
|
|
|
1425
|
-
export declare function TopNavbar({ brand, breadcrumbs, title, actions, user, height, showSearch, searchPlaceholder, onSearchClick, notificationCount, onNotificationClick, onMobileMenuClick, onSidebarToggle, onUserClick, onBreadcrumbClick, className, }: TopNavbarProps): JSX.Element;
|
|
2345
|
+
export declare function TopNavbar({ brand, breadcrumbs, title, actions, user, height, showSearch, searchPlaceholder, onSearchClick, notificationCount, onNotificationClick, onMobileMenuClick, onSidebarToggle, onUserClick, onBreadcrumbClick, workspaceSwitcher, className, }: TopNavbarProps): JSX.Element;
|
|
1426
2346
|
|
|
1427
2347
|
export declare namespace TopNavbar {
|
|
1428
2348
|
var displayName: string;
|
|
@@ -1466,6 +2386,8 @@ export declare interface TopNavbarProps {
|
|
|
1466
2386
|
onUserClick?: () => void;
|
|
1467
2387
|
/** Breadcrumb click handler */
|
|
1468
2388
|
onBreadcrumbClick?: (item: BreadcrumbItem_2, index: number) => void;
|
|
2389
|
+
/** Workspace/shop switcher rendered after brand logo — for multi-workspace products */
|
|
2390
|
+
workspaceSwitcher?: default_2.ReactNode;
|
|
1469
2391
|
/** Additional class name */
|
|
1470
2392
|
className?: string;
|
|
1471
2393
|
}
|
|
@@ -1483,7 +2405,7 @@ export declare interface TransferItem {
|
|
|
1483
2405
|
disabled?: boolean;
|
|
1484
2406
|
}
|
|
1485
2407
|
|
|
1486
|
-
export declare function TransferList({ sourceTitle, targetTitle, items, defaultTarget, searchable, value, onChange, }: TransferListProps): JSX.Element;
|
|
2408
|
+
export declare function TransferList({ sourceTitle, targetTitle, items, defaultTarget, searchable, value, onChange, loading, error, }: TransferListProps): JSX.Element;
|
|
1487
2409
|
|
|
1488
2410
|
export declare interface TransferListProps {
|
|
1489
2411
|
sourceTitle?: string;
|
|
@@ -1495,9 +2417,13 @@ export declare interface TransferListProps {
|
|
|
1495
2417
|
value?: string[];
|
|
1496
2418
|
/** Called when target list changes */
|
|
1497
2419
|
onChange?: (targetIds: string[]) => void;
|
|
2420
|
+
/** Show loading skeleton overlay */
|
|
2421
|
+
loading?: boolean;
|
|
2422
|
+
/** Show error message instead of content */
|
|
2423
|
+
error?: string;
|
|
1498
2424
|
}
|
|
1499
2425
|
|
|
1500
|
-
export declare function Tree({ data, selectable, showLines, defaultExpanded, expandedItems, onExpandChange, selectedItems, onSelect, }: TreeProps): JSX.Element;
|
|
2426
|
+
export declare function Tree({ data, selectable, showLines, defaultExpanded, expandedItems, onExpandChange, selectedItems, onSelect, loading, error, emptyMessage, }: TreeProps): JSX.Element;
|
|
1501
2427
|
|
|
1502
2428
|
export declare interface TreeNode {
|
|
1503
2429
|
id: string;
|
|
@@ -1520,6 +2446,12 @@ export declare interface TreeProps {
|
|
|
1520
2446
|
selectedItems?: string[];
|
|
1521
2447
|
/** Called when selection changes */
|
|
1522
2448
|
onSelect?: (selectedIds: string[]) => void;
|
|
2449
|
+
/** Show loading skeleton */
|
|
2450
|
+
loading?: boolean;
|
|
2451
|
+
/** Show error message */
|
|
2452
|
+
error?: string;
|
|
2453
|
+
/** Message shown when data is empty */
|
|
2454
|
+
emptyMessage?: string;
|
|
1523
2455
|
}
|
|
1524
2456
|
|
|
1525
2457
|
export declare interface UploadedFile {
|
|
@@ -1531,6 +2463,65 @@ export declare interface UploadedFile {
|
|
|
1531
2463
|
status: "uploading" | "done" | "error";
|
|
1532
2464
|
}
|
|
1533
2465
|
|
|
2466
|
+
/**
|
|
2467
|
+
* Access shell state from any descendant component.
|
|
2468
|
+
*
|
|
2469
|
+
* @throws Error if called outside of AppShellProvider
|
|
2470
|
+
*
|
|
2471
|
+
* @example
|
|
2472
|
+
* function OrderDetailPage() {
|
|
2473
|
+
* const { setBreadcrumbs, user, sidebarOpen } = useAppShell();
|
|
2474
|
+
*
|
|
2475
|
+
* useEffect(() => {
|
|
2476
|
+
* setBreadcrumbs([
|
|
2477
|
+
* { label: "Orders", href: "/orders" },
|
|
2478
|
+
* { label: "Order #12345" },
|
|
2479
|
+
* ]);
|
|
2480
|
+
* }, []);
|
|
2481
|
+
*
|
|
2482
|
+
* return <div>...</div>;
|
|
2483
|
+
* }
|
|
2484
|
+
*/
|
|
2485
|
+
export declare function useAppShell(): AppShellContextValue;
|
|
2486
|
+
|
|
2487
|
+
/**
|
|
2488
|
+
* Extended hook that also exposes nav state.
|
|
2489
|
+
* Use this in the Sidebar/TopNavbar wrappers that need nav groups.
|
|
2490
|
+
*
|
|
2491
|
+
* @throws Error if called outside of AppShellProvider
|
|
2492
|
+
*/
|
|
2493
|
+
export declare function useAppShellFull(): AppShellFullContextValue;
|
|
2494
|
+
|
|
2495
|
+
/**
|
|
2496
|
+
* Convenience hook for setting breadcrumbs from a feature page.
|
|
2497
|
+
* Handles the useEffect pattern automatically.
|
|
2498
|
+
*
|
|
2499
|
+
* @example
|
|
2500
|
+
* function ProductDetailPage({ productId }: { productId: string }) {
|
|
2501
|
+
* useBreadcrumbs([
|
|
2502
|
+
* { label: "Products", href: "/products" },
|
|
2503
|
+
* { label: product.name },
|
|
2504
|
+
* ]);
|
|
2505
|
+
* return <div>...</div>;
|
|
2506
|
+
* }
|
|
2507
|
+
*/
|
|
2508
|
+
export declare function useBreadcrumbs(items: BreadcrumbEntry[]): void;
|
|
2509
|
+
|
|
1534
2510
|
export declare function useFormField(): FormFieldContextValue;
|
|
1535
2511
|
|
|
2512
|
+
/**
|
|
2513
|
+
* Standalone hook for products that manage nav outside of AppShellProvider.
|
|
2514
|
+
* Returns nav groups, loading state, error, and a refresh function.
|
|
2515
|
+
*
|
|
2516
|
+
* @example
|
|
2517
|
+
* function AppSidebar() {
|
|
2518
|
+
* const { groups, loading, error, refresh } = useNavResolver(navResolver, currentUser);
|
|
2519
|
+
* if (loading) return <SkeletonList />;
|
|
2520
|
+
* return <Sidebar groups={mapGroupsForSidebar(groups)} />;
|
|
2521
|
+
* }
|
|
2522
|
+
*/
|
|
2523
|
+
export declare function useNavResolver(resolver: NavResolver | undefined, user: ShellUser | null): NavState & {
|
|
2524
|
+
refresh: () => void;
|
|
2525
|
+
};
|
|
2526
|
+
|
|
1536
2527
|
export { }
|