canvas-ui-sdk 0.1.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.
@@ -0,0 +1,4810 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React$1 from 'react';
3
+ import { ReactNode } from 'react';
4
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { VariantProps } from 'class-variance-authority';
7
+ import { DayPicker } from 'react-day-picker';
8
+ import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
9
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
10
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
11
+ import * as LabelPrimitive from '@radix-ui/react-label';
12
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
13
+ import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
14
+ import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
15
+ import * as SelectPrimitive from '@radix-ui/react-select';
16
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
17
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
18
+ import * as SliderPrimitive from '@radix-ui/react-slider';
19
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
20
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
21
+ import { LucideIcon } from 'lucide-react';
22
+ import { ClassValue } from 'clsx';
23
+
24
+ declare function Avatar({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Root>): react_jsx_runtime.JSX.Element;
25
+ declare function AvatarImage({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Image>): react_jsx_runtime.JSX.Element;
26
+ declare function AvatarFallback({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Fallback>): react_jsx_runtime.JSX.Element;
27
+
28
+ declare const buttonVariants: (props?: ({
29
+ variant?: "link" | "primary" | "primary-outline" | "primary-neutral" | "neutral" | "neutral-delete" | "delete" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
30
+ size?: "default" | "mini" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
31
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
32
+ declare function Button({ className, variant, size, asChild, style, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
33
+ asChild?: boolean;
34
+ }): react_jsx_runtime.JSX.Element;
35
+
36
+ declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React$1.ComponentProps<typeof DayPicker> & {
37
+ buttonVariant?: React$1.ComponentProps<typeof Button>["variant"];
38
+ }): react_jsx_runtime.JSX.Element;
39
+
40
+ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
41
+ interface CheckboxWithLabelProps extends React$1.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {
42
+ children: React$1.ReactNode;
43
+ size?: "default" | "sm";
44
+ }
45
+ declare const CheckboxWithLabel: React$1.ForwardRefExoticComponent<CheckboxWithLabelProps & React$1.RefAttributes<HTMLButtonElement>>;
46
+
47
+ interface DateInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange"> {
48
+ inputSize?: "sm" | "default" | "lg";
49
+ value?: string;
50
+ onChange?: (value: string) => void;
51
+ }
52
+ declare const DateInput: React$1.ForwardRefExoticComponent<DateInputProps & React$1.RefAttributes<HTMLInputElement>>;
53
+
54
+ declare function Dialog({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
55
+ declare function DialogTrigger({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
56
+ declare function DialogPortal({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Portal>): react_jsx_runtime.JSX.Element;
57
+ declare function DialogClose({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Close>): react_jsx_runtime.JSX.Element;
58
+ declare function DialogOverlay({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Overlay>): react_jsx_runtime.JSX.Element;
59
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Content> & {
60
+ showCloseButton?: boolean;
61
+ }): react_jsx_runtime.JSX.Element;
62
+ declare function DialogHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
63
+ declare function DialogFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
64
+ declare function DialogTitle({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
65
+ declare function DialogDescription({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Description>): react_jsx_runtime.JSX.Element;
66
+
67
+ declare function DropdownMenu({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Root>): react_jsx_runtime.JSX.Element;
68
+ declare function DropdownMenuPortal({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Portal>): react_jsx_runtime.JSX.Element;
69
+ declare function DropdownMenuTrigger({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
70
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Content>): react_jsx_runtime.JSX.Element;
71
+ declare function DropdownMenuGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Group>): react_jsx_runtime.JSX.Element;
72
+ declare function DropdownMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
73
+ inset?: boolean;
74
+ variant?: "default" | "destructive";
75
+ }): react_jsx_runtime.JSX.Element;
76
+ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): react_jsx_runtime.JSX.Element;
77
+ declare function DropdownMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): react_jsx_runtime.JSX.Element;
78
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): react_jsx_runtime.JSX.Element;
79
+ declare function DropdownMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
80
+ inset?: boolean;
81
+ }): react_jsx_runtime.JSX.Element;
82
+ declare function DropdownMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Separator>): react_jsx_runtime.JSX.Element;
83
+ declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
84
+ declare function DropdownMenuSub({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Sub>): react_jsx_runtime.JSX.Element;
85
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
86
+ inset?: boolean;
87
+ }): react_jsx_runtime.JSX.Element;
88
+ declare function DropdownMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): react_jsx_runtime.JSX.Element;
89
+
90
+ interface UploadedFile {
91
+ id: string;
92
+ name: string;
93
+ size: number;
94
+ type?: string;
95
+ }
96
+ interface FileUploaderProps {
97
+ files?: UploadedFile[];
98
+ onFilesChange?: (files: UploadedFile[]) => void;
99
+ placeholder?: string;
100
+ accept?: string;
101
+ disabled?: boolean;
102
+ className?: string;
103
+ }
104
+ declare const FileUploader: React$1.ForwardRefExoticComponent<FileUploaderProps & React$1.RefAttributes<HTMLDivElement>>;
105
+
106
+ interface UploadedImage {
107
+ id: string;
108
+ url: string;
109
+ name?: string;
110
+ }
111
+ interface ImageUploaderProps {
112
+ images?: UploadedImage[];
113
+ selectedImageId?: string;
114
+ onImagesChange?: (images: UploadedImage[]) => void;
115
+ onSelectImage?: (imageId: string) => void;
116
+ placeholder?: string;
117
+ disabled?: boolean;
118
+ className?: string;
119
+ }
120
+ declare const ImageUploader: React$1.ForwardRefExoticComponent<ImageUploaderProps & React$1.RefAttributes<HTMLDivElement>>;
121
+
122
+ declare function Input({ className, type, ...props }: React$1.ComponentProps<"input">): react_jsx_runtime.JSX.Element;
123
+
124
+ declare function Label({ className, style, ...props }: React$1.ComponentProps<typeof LabelPrimitive.Root>): react_jsx_runtime.JSX.Element;
125
+
126
+ interface LineTab {
127
+ id: string;
128
+ label: string;
129
+ }
130
+ interface LineTabsProps {
131
+ /** Array of tab items */
132
+ tabs: LineTab[];
133
+ /** ID of the currently active tab */
134
+ activeTab?: string;
135
+ /** Callback when a tab is clicked */
136
+ onTabChange?: (tabId: string) => void;
137
+ /** Additional class names */
138
+ className?: string;
139
+ }
140
+ /**
141
+ * Canvas Design System - Line Tabs Component
142
+ *
143
+ * Horizontal underline-style tabs for page navigation.
144
+ * Active tab has blue text with 2px blue bottom border.
145
+ * Inactive tabs have gray text with 1px gray bottom border.
146
+ *
147
+ * @example
148
+ * ```tsx
149
+ * <LineTabs
150
+ * tabs={[
151
+ * { id: "tab1", label: "Tab 1" },
152
+ * { id: "tab2", label: "Tab 2" },
153
+ * ]}
154
+ * activeTab="tab1"
155
+ * onTabChange={(id) => console.log(id)}
156
+ * />
157
+ * ```
158
+ */
159
+ declare function LineTabs({ tabs, activeTab: controlledActiveTab, onTabChange, className, }: LineTabsProps): react_jsx_runtime.JSX.Element;
160
+
161
+ interface CheckboxOption {
162
+ id: string;
163
+ label: string;
164
+ }
165
+ interface MultiselectCheckboxFieldProps {
166
+ options?: CheckboxOption[];
167
+ selectedValues?: string[];
168
+ onChange?: (values: string[]) => void;
169
+ inputSize?: "sm" | "default" | "lg";
170
+ disabled?: boolean;
171
+ className?: string;
172
+ }
173
+ declare const MultiselectCheckboxField: React$1.ForwardRefExoticComponent<MultiselectCheckboxFieldProps & React$1.RefAttributes<HTMLDivElement>>;
174
+
175
+ interface MultiselectTagsProps {
176
+ tags?: string[];
177
+ placeholder?: string;
178
+ inputSize?: "sm" | "default" | "lg";
179
+ onAdd?: (tag: string) => void;
180
+ onRemove?: (tag: string) => void;
181
+ disabled?: boolean;
182
+ className?: string;
183
+ }
184
+ declare const MultiselectTags: React$1.ForwardRefExoticComponent<MultiselectTagsProps & React$1.RefAttributes<HTMLInputElement>>;
185
+
186
+ declare function Popover({ ...props }: React$1.ComponentProps<typeof PopoverPrimitive.Root>): react_jsx_runtime.JSX.Element;
187
+ declare function PopoverTrigger({ ...props }: React$1.ComponentProps<typeof PopoverPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
188
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof PopoverPrimitive.Content>): react_jsx_runtime.JSX.Element;
189
+ declare function PopoverAnchor({ ...props }: React$1.ComponentProps<typeof PopoverPrimitive.Anchor>): react_jsx_runtime.JSX.Element;
190
+
191
+ declare function RadioGroup({ className, ...props }: React$1.ComponentProps<typeof RadioGroupPrimitive.Root>): react_jsx_runtime.JSX.Element;
192
+ declare function RadioGroupItem({ className, ...props }: React$1.ComponentProps<typeof RadioGroupPrimitive.Item>): react_jsx_runtime.JSX.Element;
193
+
194
+ interface RangeInputProps {
195
+ inputSize?: "sm" | "default" | "lg";
196
+ minValue?: string;
197
+ maxValue?: string;
198
+ onMinChange?: (value: string) => void;
199
+ onMaxChange?: (value: string) => void;
200
+ minPlaceholder?: string;
201
+ maxPlaceholder?: string;
202
+ disabled?: boolean;
203
+ className?: string;
204
+ }
205
+ declare const RangeInput: React$1.ForwardRefExoticComponent<RangeInputProps & React$1.RefAttributes<HTMLDivElement>>;
206
+
207
+ declare function ScrollArea({ className, children, ...props }: React$1.ComponentProps<typeof ScrollAreaPrimitive.Root>): react_jsx_runtime.JSX.Element;
208
+ declare function ScrollBar({ className, orientation, ...props }: React$1.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>): react_jsx_runtime.JSX.Element;
209
+
210
+ interface SearchboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size" | "onChange"> {
211
+ inputSize?: "sm" | "default" | "lg";
212
+ value?: string;
213
+ onChange?: (value: string) => void;
214
+ }
215
+ declare const Searchbox: React$1.ForwardRefExoticComponent<SearchboxProps & React$1.RefAttributes<HTMLInputElement>>;
216
+
217
+ declare const selectTriggerVariants: (props?: ({
218
+ inputSize?: "default" | "sm" | "lg" | null | undefined;
219
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
220
+ declare function Select({ ...props }: React$1.ComponentProps<typeof SelectPrimitive.Root>): react_jsx_runtime.JSX.Element;
221
+ declare function SelectGroup({ ...props }: React$1.ComponentProps<typeof SelectPrimitive.Group>): react_jsx_runtime.JSX.Element;
222
+ declare function SelectValue({ ...props }: React$1.ComponentProps<typeof SelectPrimitive.Value>): react_jsx_runtime.JSX.Element;
223
+ declare function SelectTrigger({ className, inputSize, children, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Trigger> & VariantProps<typeof selectTriggerVariants>): react_jsx_runtime.JSX.Element;
224
+ declare function SelectContent({ className, children, position, sideOffset, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Content>): react_jsx_runtime.JSX.Element;
225
+ declare function SelectLabel({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Label>): react_jsx_runtime.JSX.Element;
226
+ declare function SelectItem({ className, children, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Item>): react_jsx_runtime.JSX.Element;
227
+ declare function SelectSeparator({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Separator>): react_jsx_runtime.JSX.Element;
228
+ declare function SelectScrollUpButton({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.ScrollUpButton>): react_jsx_runtime.JSX.Element;
229
+ declare function SelectScrollDownButton({ className, ...props }: React$1.ComponentProps<typeof SelectPrimitive.ScrollDownButton>): react_jsx_runtime.JSX.Element;
230
+
231
+ interface PillOption {
232
+ id: string;
233
+ label: string;
234
+ }
235
+ interface SelectablePillsProps {
236
+ inputSize?: "sm" | "default" | "lg";
237
+ options: PillOption[];
238
+ selected: string[];
239
+ onSelectionChange: (selected: string[]) => void;
240
+ allowMultiple?: boolean;
241
+ className?: string;
242
+ disabled?: boolean;
243
+ }
244
+ declare const SelectablePills: React$1.ForwardRefExoticComponent<SelectablePillsProps & React$1.RefAttributes<HTMLDivElement>>;
245
+
246
+ declare function Separator({ className, orientation, decorative, ...props }: React$1.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime.JSX.Element;
247
+
248
+ declare function Sheet({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
249
+ declare function SheetTrigger({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
250
+ declare function SheetClose({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Close>): react_jsx_runtime.JSX.Element;
251
+ declare function SheetPortal({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Portal>): react_jsx_runtime.JSX.Element;
252
+ declare function SheetOverlay({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Overlay>): react_jsx_runtime.JSX.Element;
253
+ declare function SheetContent({ className, children, side, overlayClassName, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Content> & {
254
+ side?: "top" | "right" | "bottom" | "left";
255
+ overlayClassName?: string;
256
+ }): react_jsx_runtime.JSX.Element;
257
+ declare function SheetHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
258
+ declare function SheetFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
259
+ declare function SheetTitle({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
260
+ declare function SheetDescription({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Description>): react_jsx_runtime.JSX.Element;
261
+
262
+ declare function TooltipProvider({ delayDuration, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime.JSX.Element;
263
+ declare function Tooltip({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Root>): react_jsx_runtime.JSX.Element;
264
+ declare function TooltipTrigger({ ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
265
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React$1.ComponentProps<typeof TooltipPrimitive.Content>): react_jsx_runtime.JSX.Element;
266
+
267
+ type SidebarContextProps = {
268
+ state: "expanded" | "collapsed";
269
+ open: boolean;
270
+ setOpen: (open: boolean) => void;
271
+ openMobile: boolean;
272
+ setOpenMobile: (open: boolean) => void;
273
+ isMobile: boolean;
274
+ toggleSidebar: () => void;
275
+ };
276
+ declare function useSidebar(): SidebarContextProps;
277
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React$1.ComponentProps<"div"> & {
278
+ defaultOpen?: boolean;
279
+ open?: boolean;
280
+ onOpenChange?: (open: boolean) => void;
281
+ }): react_jsx_runtime.JSX.Element;
282
+ declare function Sidebar$1({ side, variant, collapsible, className, children, ...props }: React$1.ComponentProps<"div"> & {
283
+ side?: "left" | "right";
284
+ variant?: "sidebar" | "floating" | "inset";
285
+ collapsible?: "offcanvas" | "icon" | "none";
286
+ }): react_jsx_runtime.JSX.Element;
287
+ declare function SidebarTrigger({ className, onClick, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
288
+ declare function SidebarRail({ className, ...props }: React$1.ComponentProps<"button">): react_jsx_runtime.JSX.Element;
289
+ declare function SidebarInset({ className, ...props }: React$1.ComponentProps<"main">): react_jsx_runtime.JSX.Element;
290
+ declare function SidebarInput({ className, ...props }: React$1.ComponentProps<typeof Input>): react_jsx_runtime.JSX.Element;
291
+ declare function SidebarHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
292
+ declare function SidebarFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
293
+ declare function SidebarSeparator({ className, ...props }: React$1.ComponentProps<typeof Separator>): react_jsx_runtime.JSX.Element;
294
+ declare function SidebarContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
295
+ declare function SidebarGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
296
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React$1.ComponentProps<"div"> & {
297
+ asChild?: boolean;
298
+ }): react_jsx_runtime.JSX.Element;
299
+ declare function SidebarGroupAction({ className, asChild, ...props }: React$1.ComponentProps<"button"> & {
300
+ asChild?: boolean;
301
+ }): react_jsx_runtime.JSX.Element;
302
+ declare function SidebarGroupContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
303
+ declare function SidebarMenu({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
304
+ declare function SidebarMenuItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
305
+ declare const sidebarMenuButtonVariants: (props?: ({
306
+ variant?: "default" | "outline" | null | undefined;
307
+ size?: "default" | "sm" | "lg" | null | undefined;
308
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
309
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React$1.ComponentProps<"button"> & {
310
+ asChild?: boolean;
311
+ isActive?: boolean;
312
+ tooltip?: string | React$1.ComponentProps<typeof TooltipContent>;
313
+ } & VariantProps<typeof sidebarMenuButtonVariants>): react_jsx_runtime.JSX.Element;
314
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React$1.ComponentProps<"button"> & {
315
+ asChild?: boolean;
316
+ showOnHover?: boolean;
317
+ }): react_jsx_runtime.JSX.Element;
318
+ declare function SidebarMenuBadge({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
319
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React$1.ComponentProps<"div"> & {
320
+ showIcon?: boolean;
321
+ }): react_jsx_runtime.JSX.Element;
322
+ declare function SidebarMenuSub({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
323
+ declare function SidebarMenuSubItem({ className, ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
324
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React$1.ComponentProps<"a"> & {
325
+ asChild?: boolean;
326
+ size?: "sm" | "md";
327
+ isActive?: boolean;
328
+ }): react_jsx_runtime.JSX.Element;
329
+
330
+ declare function Skeleton({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
331
+
332
+ interface SliderProps extends Omit<React$1.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>, "value" | "onValueChange"> {
333
+ inputSize?: "sm" | "default" | "lg";
334
+ value?: number[];
335
+ onValueChange?: (value: number[]) => void;
336
+ showLabel?: boolean;
337
+ labelFormatter?: (value: number[]) => string;
338
+ }
339
+ declare const Slider: React$1.ForwardRefExoticComponent<SliderProps & React$1.RefAttributes<HTMLSpanElement>>;
340
+
341
+ declare function Switch({ className, ...props }: React$1.ComponentProps<typeof SwitchPrimitive.Root>): react_jsx_runtime.JSX.Element;
342
+
343
+ declare function Tabs({ className, ...props }: React$1.ComponentProps<typeof TabsPrimitive.Root>): react_jsx_runtime.JSX.Element;
344
+ declare function TabsList({ className, ...props }: React$1.ComponentProps<typeof TabsPrimitive.List>): react_jsx_runtime.JSX.Element;
345
+ declare function TabsTrigger({ className, ...props }: React$1.ComponentProps<typeof TabsPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
346
+ declare function TabsContent({ className, ...props }: React$1.ComponentProps<typeof TabsPrimitive.Content>): react_jsx_runtime.JSX.Element;
347
+
348
+ interface TextInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "size"> {
349
+ inputSize?: "sm" | "default" | "lg";
350
+ }
351
+ declare const TextInput: React$1.ForwardRefExoticComponent<TextInputProps & React$1.RefAttributes<HTMLInputElement>>;
352
+
353
+ declare const textareaVariants: (props?: ({
354
+ inputSize?: "default" | "sm" | "lg" | "expandable" | null | undefined;
355
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
356
+ interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, VariantProps<typeof textareaVariants> {
357
+ }
358
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
359
+
360
+ type TypographyVariant = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "body-xl" | "body-l" | "body-m" | "body-s" | "body-xs";
361
+ type TypographyColor = "default" | "muted";
362
+ type TypographyElement = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div" | "label";
363
+ interface TypographyProps extends React$1.HTMLAttributes<HTMLElement> {
364
+ /** Typography style variant */
365
+ variant?: TypographyVariant;
366
+ /** Color variant */
367
+ color?: TypographyColor;
368
+ /** Override the rendered HTML element */
369
+ as?: TypographyElement;
370
+ /** Additional CSS classes */
371
+ className?: string;
372
+ /** Content */
373
+ children?: React$1.ReactNode;
374
+ }
375
+ /**
376
+ * Typography component that renders text with design system styling.
377
+ *
378
+ * @example
379
+ * // Headings
380
+ * <Typography variant="h1">Page Title</Typography>
381
+ * <Typography variant="h2" color="muted">Subtitle</Typography>
382
+ *
383
+ * // Body text
384
+ * <Typography variant="body-m">Paragraph text</Typography>
385
+ * <Typography variant="body-s" color="muted">Caption</Typography>
386
+ *
387
+ * // Override element
388
+ * <Typography variant="body-m" as="span">Inline text</Typography>
389
+ */
390
+ declare const Typography: React$1.ForwardRefExoticComponent<TypographyProps & React$1.RefAttributes<HTMLElement>>;
391
+
392
+ interface CartItem {
393
+ id: string;
394
+ name: string;
395
+ price: number;
396
+ image: string;
397
+ }
398
+ interface Message {
399
+ id: string;
400
+ senderName: string;
401
+ senderAvatar: string;
402
+ timestamp: string;
403
+ }
404
+ interface Notification {
405
+ id: string;
406
+ userName: string;
407
+ userAvatar: string;
408
+ action: string;
409
+ timestamp: string;
410
+ }
411
+ interface NavItem$1 {
412
+ id: string;
413
+ label: string;
414
+ icon?: LucideIcon;
415
+ href?: string;
416
+ onClick?: () => void;
417
+ }
418
+ interface HeaderProps {
419
+ /** Callback when mobile menu button is clicked */
420
+ onMenuClick?: () => void;
421
+ /** Whether to show the logo on desktop (for no-sidebar pages) */
422
+ showDesktopLogo?: boolean;
423
+ /** Visual variant - light (default) or dark mode */
424
+ variant?: "light" | "dark";
425
+ /** Callback when "My Account" is clicked */
426
+ onAccountClick?: () => void;
427
+ /** Callback when "Logout" is clicked */
428
+ onLogout?: () => void;
429
+ /** Avatar image URL */
430
+ avatarUrl?: string;
431
+ /** Cart items to display */
432
+ cartItems?: CartItem[];
433
+ /** Callback when checkout button is clicked */
434
+ onCheckout?: () => void;
435
+ /** Callback when remove item is clicked */
436
+ onRemoveCartItem?: (id: string) => void;
437
+ /** Messages to display */
438
+ messages?: Message[];
439
+ /** Callback when "Mark as read" is clicked for messages */
440
+ onMarkAsRead?: () => void;
441
+ /** Callback when "view more" is clicked for messages */
442
+ onViewMoreMessages?: () => void;
443
+ /** Notifications to display */
444
+ notifications?: Notification[];
445
+ /** Callback when "Mark as read" is clicked for notifications */
446
+ onMarkNotificationsAsRead?: () => void;
447
+ /** Callback when "view more" is clicked for notifications */
448
+ onViewMoreNotifications?: () => void;
449
+ /** Navigation items for header and mobile menu */
450
+ navItems?: NavItem$1[];
451
+ /** Callback when Login button is clicked */
452
+ onLogin?: () => void;
453
+ /** Callback when Sign up button is clicked */
454
+ onSignUp?: () => void;
455
+ /** Whether to show auth buttons (Login/Sign up) */
456
+ showAuthButtons?: boolean;
457
+ }
458
+ /**
459
+ * Canvas Design System - Header/Navbar Component
460
+ *
461
+ * Desktop (lg+): Full logo with wordmark, icon cluster, avatar
462
+ * Mobile/Tablet: Favicon only, avatar, hamburger menu
463
+ *
464
+ * For pages without a sidebar, set showDesktopLogo={true} to display
465
+ * the logo in the header on desktop.
466
+ *
467
+ * Set variant="dark" for a dark themed header that matches the sidebar.
468
+ */
469
+ declare function Header({ onMenuClick, showDesktopLogo, variant, onAccountClick, onLogout, avatarUrl, cartItems, onCheckout, onRemoveCartItem, messages, onMarkAsRead, onViewMoreMessages, notifications, onMarkNotificationsAsRead, onViewMoreNotifications, navItems, onLogin, onSignUp, showAuthButtons, }: HeaderProps): react_jsx_runtime.JSX.Element;
470
+
471
+ interface NavItem {
472
+ id: string;
473
+ label: string;
474
+ icon: LucideIcon;
475
+ href?: string;
476
+ isActive?: boolean;
477
+ /** Nested subtabs - when present, the item becomes expandable */
478
+ children?: Omit<NavItem, "children" | "icon">[];
479
+ }
480
+ interface NavSection {
481
+ id: string;
482
+ title: string;
483
+ items: NavItem[];
484
+ }
485
+ interface SidebarNavProps {
486
+ sections: NavSection[];
487
+ variant?: "dark" | "light";
488
+ onItemClick?: (item: NavItem | Omit<NavItem, "children" | "icon">) => void;
489
+ }
490
+ /**
491
+ * Canvas Design System - Sidebar Navigation
492
+ *
493
+ * Renders navigation sections with collapsible groups and nav items.
494
+ * Supports dark (desktop) and light (mobile sheet) variants.
495
+ * Items with children become expandable with nested subtabs.
496
+ */
497
+ declare function SidebarNav({ sections, variant, onItemClick }: SidebarNavProps): react_jsx_runtime.JSX.Element;
498
+
499
+ interface SidebarProps {
500
+ /** Navigation sections to display */
501
+ sections: NavSection[];
502
+ /** Visual variant - dark for desktop, light for mobile sheet */
503
+ variant?: "dark" | "light";
504
+ /** Callback when a nav item or subtab is clicked */
505
+ onItemClick?: (item: NavItem | Omit<NavItem, "children" | "icon">) => void;
506
+ /** Additional class names */
507
+ className?: string;
508
+ }
509
+ /**
510
+ * Canvas Design System - Sidebar Component
511
+ *
512
+ * Desktop: Fixed dark sidebar (320px width) on the left
513
+ * Mobile: Light theme sidebar rendered inside a Sheet
514
+ */
515
+ declare function Sidebar({ sections, variant, onItemClick, className }: SidebarProps): react_jsx_runtime.JSX.Element;
516
+
517
+ interface DashboardShellProps {
518
+ /** Navigation sections for the sidebar */
519
+ navigation: NavSection[];
520
+ /** Optional page header content (e.g., breadcrumbs, page title) */
521
+ pageHeader?: React.ReactNode;
522
+ /** Main content - the modular blocks */
523
+ children: React.ReactNode;
524
+ /** Callback when a nav item or subtab is clicked */
525
+ onNavItemClick?: (item: NavItem | Omit<NavItem, "children" | "icon">) => void;
526
+ /** Callback when app menu (hamburger) is clicked - for future app-level menu */
527
+ onAppMenuClick?: () => void;
528
+ /** Additional class name for the main content area */
529
+ contentClassName?: string;
530
+ }
531
+ /**
532
+ * Canvas Design System - Dashboard Shell
533
+ *
534
+ * A composable page layout that provides:
535
+ * - Fixed header (80px)
536
+ * - Fixed dark sidebar on desktop (320px, hidden on mobile)
537
+ * - Floating sidebar toggle button on mobile (left edge)
538
+ * - Mobile sheet navigation for dashboard sidebar
539
+ * - Hamburger menu in header for app-level menu (future)
540
+ * - Main content area with pageHeader slot and children slot for blocks
541
+ *
542
+ * @example
543
+ * ```tsx
544
+ * <DashboardShell
545
+ * navigation={navSections}
546
+ * pageHeader={<Breadcrumbs />}
547
+ * >
548
+ * <StatsBlock />
549
+ * <ChartBlock />
550
+ * <TableBlock />
551
+ * </DashboardShell>
552
+ * ```
553
+ */
554
+ declare function DashboardShell({ navigation, pageHeader, children, onNavItemClick, onAppMenuClick, contentClassName, }: DashboardShellProps): react_jsx_runtime.JSX.Element;
555
+
556
+ interface IconNavItemConfig {
557
+ id: string;
558
+ label: string;
559
+ icon: LucideIcon;
560
+ href?: string;
561
+ isActive?: boolean;
562
+ hasNotification?: boolean;
563
+ }
564
+ declare const defaultIconNavItems: IconNavItemConfig[];
565
+ interface IconSidebarProps {
566
+ /** Navigation items to display */
567
+ items?: IconNavItemConfig[];
568
+ /** Visual variant - dark for desktop, light for mobile sheet */
569
+ variant?: "dark" | "light";
570
+ /** Callback when a nav item is clicked */
571
+ onItemClick?: (item: IconNavItemConfig) => void;
572
+ /** Additional class names */
573
+ className?: string;
574
+ }
575
+ /**
576
+ * Canvas Design System - Icon Sidebar Component
577
+ *
578
+ * A narrow sidebar (96px) with vertically stacked icon navigation.
579
+ * Desktop: Fixed dark sidebar on the left
580
+ * Mobile: Light theme sidebar rendered inside a Sheet
581
+ */
582
+ declare function IconSidebar({ items, variant, onItemClick, className }: IconSidebarProps): react_jsx_runtime.JSX.Element;
583
+
584
+ interface IconSidebarShellProps {
585
+ /** Navigation items for the icon sidebar */
586
+ navigation?: IconNavItemConfig[];
587
+ /** Optional page header content (e.g., breadcrumbs, page title) */
588
+ pageHeader?: React.ReactNode;
589
+ /** Main content - the modular blocks */
590
+ children: React.ReactNode;
591
+ /** Callback when a nav item is clicked */
592
+ onNavItemClick?: (item: IconNavItemConfig) => void;
593
+ /** Callback when app menu (hamburger) is clicked - for future app-level menu */
594
+ onAppMenuClick?: () => void;
595
+ /** Additional class name for the main content area */
596
+ contentClassName?: string;
597
+ }
598
+ /**
599
+ * Canvas Design System - Icon Sidebar Shell
600
+ *
601
+ * A composable page layout with a narrow icon sidebar that provides:
602
+ * - Fixed header (80px)
603
+ * - Fixed narrow dark icon sidebar on desktop (96px, hidden on mobile)
604
+ * - Floating sidebar toggle button on mobile (left edge)
605
+ * - Mobile sheet navigation for icon sidebar
606
+ * - Hamburger menu in header for app-level menu (future)
607
+ * - Main content area with pageHeader slot and children slot for blocks
608
+ *
609
+ * Uses the same styling and spacing as DashboardShell for non-sidebar content.
610
+ *
611
+ * @example
612
+ * ```tsx
613
+ * <IconSidebarShell navigation={iconNavItems}>
614
+ * <ContentDropzone label="Main content area" />
615
+ * </IconSidebarShell>
616
+ * ```
617
+ */
618
+ declare function IconSidebarShell({ navigation, pageHeader, children, onNavItemClick, onAppMenuClick, contentClassName, }: IconSidebarShellProps): react_jsx_runtime.JSX.Element;
619
+
620
+ interface NavTab {
621
+ id: string;
622
+ label: string;
623
+ isActive?: boolean;
624
+ }
625
+ interface DoubleSidebarSection {
626
+ id: string;
627
+ icon: LucideIcon;
628
+ label: string;
629
+ badge?: boolean;
630
+ tabs: NavTab[];
631
+ }
632
+ declare const defaultDoubleSidebarSections: DoubleSidebarSection[];
633
+ interface DoubleSidebarProps {
634
+ /** Navigation sections - each section maps to an icon and has tabs */
635
+ sections?: DoubleSidebarSection[];
636
+ /** Visual variant for the icon column */
637
+ iconVariant?: "dark" | "light";
638
+ /** Visual variant for the navigation column */
639
+ navVariant?: "dark" | "light";
640
+ /** Callback when a tab is clicked */
641
+ onTabClick?: (section: DoubleSidebarSection, tab: NavTab) => void;
642
+ /** Callback when closing (for mobile sheet) */
643
+ onClose?: () => void;
644
+ /** Additional class names */
645
+ className?: string;
646
+ }
647
+ /**
648
+ * Canvas Design System - Double Sidebar Component
649
+ *
650
+ * A two-column sidebar where:
651
+ * - Left column (96px): Icon buttons that switch the active section
652
+ * - Right column (280px): Text-based navigation tabs for the active section
653
+ *
654
+ * Each column can be independently themed (light/dark).
655
+ */
656
+ declare function DoubleSidebar({ sections, iconVariant, navVariant, onTabClick, onClose, className }: DoubleSidebarProps): react_jsx_runtime.JSX.Element;
657
+
658
+ interface DoubleSidebarShellProps {
659
+ /** Navigation sections for the double sidebar */
660
+ sections?: DoubleSidebarSection[];
661
+ /** Visual variant for the icon column */
662
+ iconVariant?: "dark" | "light";
663
+ /** Visual variant for the navigation column */
664
+ navVariant?: "dark" | "light";
665
+ /** Optional page header content (e.g., breadcrumbs, page title) */
666
+ pageHeader?: React.ReactNode;
667
+ /** Main content - the modular blocks */
668
+ children: React.ReactNode;
669
+ /** Callback when a tab is clicked */
670
+ onTabClick?: (section: DoubleSidebarSection, tab: NavTab) => void;
671
+ /** Callback when app menu (hamburger) is clicked - for future app-level menu */
672
+ onAppMenuClick?: () => void;
673
+ /** Additional class name for the main content area */
674
+ contentClassName?: string;
675
+ }
676
+ /**
677
+ * Canvas Design System - Double Sidebar Shell
678
+ *
679
+ * A composable page layout with a two-column sidebar that provides:
680
+ * - Fixed header (80px)
681
+ * - Fixed double sidebar on desktop (96px icons + 280px nav = 376px total)
682
+ * - Floating sidebar toggle button on mobile (left edge)
683
+ * - Mobile sheet navigation with both sidebar columns
684
+ * - Each sidebar column can be independently themed (light/dark)
685
+ * - Main content area with pageHeader slot and children slot for blocks
686
+ *
687
+ * Uses the same styling and spacing as DashboardShell for non-sidebar content.
688
+ *
689
+ * @example
690
+ * ```tsx
691
+ * <DoubleSidebarShell
692
+ * sections={sections}
693
+ * iconVariant="light"
694
+ * navVariant="light"
695
+ * >
696
+ * <ContentDropzone label="Main content area" />
697
+ * </DoubleSidebarShell>
698
+ * ```
699
+ */
700
+ declare function DoubleSidebarShell({ sections, iconVariant, navVariant, pageHeader, children, onTabClick, onAppMenuClick, contentClassName, }: DoubleSidebarShellProps): react_jsx_runtime.JSX.Element;
701
+
702
+ interface StandardPageShellProps {
703
+ /** Flair banner title */
704
+ bannerTitle?: string;
705
+ /** Flair banner description */
706
+ bannerDescription?: string;
707
+ /** Whether to show the flair banner */
708
+ showBanner?: boolean;
709
+ /** Page title */
710
+ pageTitle?: string;
711
+ /** Page description */
712
+ pageDescription?: string;
713
+ /** Array of tab items */
714
+ tabs?: LineTab[];
715
+ /** ID of the currently active tab */
716
+ activeTab?: string;
717
+ /** Callback when a tab is clicked */
718
+ onTabChange?: (tabId: string) => void;
719
+ /** Whether to show the tabs */
720
+ showTabs?: boolean;
721
+ /** Whether to show the page header section */
722
+ showPageHeader?: boolean;
723
+ /** Main content - the modular blocks */
724
+ children: React.ReactNode;
725
+ /** Callback when app menu (hamburger) is clicked - for future app-level menu */
726
+ onAppMenuClick?: () => void;
727
+ /** Additional class name for the main content area */
728
+ contentClassName?: string;
729
+ }
730
+ /**
731
+ * Canvas Design System - Standard Page Shell
732
+ *
733
+ * A no-sidebar layout with:
734
+ * - Fixed header with logo (no sidebar)
735
+ * - Optional flair banner (dark blue hero section)
736
+ * - Optional page header section with title, description, and tabs
737
+ * - Centered content area (max-width 992px)
738
+ *
739
+ * @example
740
+ * ```tsx
741
+ * <StandardPageShell
742
+ * bannerTitle="Large title"
743
+ * bannerDescription="Description"
744
+ * pageTitle="Page title"
745
+ * pageDescription="Description"
746
+ * tabs={[{ id: "tab1", label: "Tab 1" }]}
747
+ * >
748
+ * <ContentDropzone />
749
+ * </StandardPageShell>
750
+ * ```
751
+ */
752
+ declare function StandardPageShell({ bannerTitle, bannerDescription, showBanner, pageTitle, pageDescription, tabs, activeTab, onTabChange, showTabs, showPageHeader, children, onAppMenuClick, contentClassName, }: StandardPageShellProps): react_jsx_runtime.JSX.Element;
753
+
754
+ interface MobileNavTabConfig {
755
+ id: string;
756
+ label: string;
757
+ icon: LucideIcon;
758
+ isActive?: boolean;
759
+ }
760
+ interface MobileBottomNavProps {
761
+ /** Navigation tabs to display */
762
+ tabs?: MobileNavTabConfig[];
763
+ /** Visual variant - dark or light theme */
764
+ variant?: "dark" | "light";
765
+ /** Callback when a tab is clicked */
766
+ onTabClick?: (tab: MobileNavTabConfig) => void;
767
+ /** Additional class names */
768
+ className?: string;
769
+ }
770
+ /**
771
+ * Canvas Design System - Mobile Bottom Navigation
772
+ *
773
+ * A sticky bottom navigation bar with icon tabs.
774
+ * Styling matches the icon-sidebar for consistency.
775
+ * Supports both dark and light themes via the variant prop.
776
+ *
777
+ * @example
778
+ * ```tsx
779
+ * <MobileBottomNav
780
+ * variant="light"
781
+ * tabs={defaultMobileNavTabs}
782
+ * onTabClick={(tab) => console.log(tab.id)}
783
+ * />
784
+ * ```
785
+ */
786
+ declare function MobileBottomNav({ tabs, variant, onTabClick, className, }: MobileBottomNavProps): react_jsx_runtime.JSX.Element;
787
+
788
+ interface MobileMenuShellProps {
789
+ /** Navigation tabs for the bottom nav */
790
+ tabs?: MobileNavTabConfig[];
791
+ /** Visual variant for the bottom nav - dark or light theme */
792
+ variant?: "dark" | "light";
793
+ /** ID of the currently active tab */
794
+ activeTab?: string;
795
+ /** Callback when a tab is clicked */
796
+ onTabChange?: (tabId: string) => void;
797
+ /** Main content */
798
+ children: React.ReactNode;
799
+ /** Additional class name for the main content area */
800
+ contentClassName?: string;
801
+ }
802
+ /**
803
+ * Canvas Design System - Mobile Menu Shell
804
+ *
805
+ * A layout with:
806
+ * - Fixed header with logo (no sidebar)
807
+ * - Main scrollable content area
808
+ * - Sticky bottom navigation bar (supports dark/light themes)
809
+ *
810
+ * @example
811
+ * ```tsx
812
+ * <MobileMenuShell variant="light">
813
+ * <ContentDropzone />
814
+ * </MobileMenuShell>
815
+ * ```
816
+ */
817
+ declare function MobileMenuShell({ tabs, variant, activeTab, onTabChange, children, contentClassName, }: MobileMenuShellProps): react_jsx_runtime.JSX.Element;
818
+
819
+ interface FilterOption$c {
820
+ id: string;
821
+ label: string;
822
+ }
823
+ interface FilterDropdownConfig {
824
+ id: string;
825
+ label: string;
826
+ placeholder: string;
827
+ options: FilterOption$c[];
828
+ }
829
+ interface FilterCheckboxGroupConfig {
830
+ id: string;
831
+ label: string;
832
+ options: FilterOption$c[];
833
+ }
834
+ interface FilterDateRangeConfig {
835
+ id: string;
836
+ label: string;
837
+ startPlaceholder?: string;
838
+ endPlaceholder?: string;
839
+ }
840
+ interface FilterState {
841
+ dropdowns: Record<string, string>;
842
+ checkboxes: Record<string, boolean>;
843
+ dateRange: {
844
+ start: string;
845
+ end: string;
846
+ };
847
+ }
848
+ interface FilterPopoverProps {
849
+ /** Dropdown filter configurations */
850
+ dropdowns?: FilterDropdownConfig[];
851
+ /** Checkbox group configuration */
852
+ checkboxGroup?: FilterCheckboxGroupConfig;
853
+ /** Date range configuration */
854
+ dateRange?: FilterDateRangeConfig;
855
+ /** Current filter state */
856
+ filterState?: FilterState;
857
+ /** Callback when filters are applied */
858
+ onApply?: (state: FilterState) => void;
859
+ /** Callback when filters are cleared */
860
+ onClear?: () => void;
861
+ /** Trigger style variant - "button" for button style, "dropdown" for select-like style */
862
+ triggerVariant?: "button" | "dropdown";
863
+ /** Placeholder text shown in the trigger (used for both variants) */
864
+ triggerPlaceholder?: string;
865
+ /** Additional class names for the trigger */
866
+ className?: string;
867
+ }
868
+ /**
869
+ * Canvas Design System - Filter Popover Component
870
+ *
871
+ * A filter button that opens a popover with various filter options.
872
+ * Inspired by shadcnstudio Category Filter 6 structure.
873
+ *
874
+ * @example
875
+ * ```tsx
876
+ * // Button variant (default)
877
+ * <FilterPopover
878
+ * onApply={(filters) => console.log(filters)}
879
+ * onClear={() => console.log("Cleared")}
880
+ * />
881
+ *
882
+ * // Dropdown variant
883
+ * <FilterPopover
884
+ * triggerVariant="dropdown"
885
+ * triggerPlaceholder="Filter"
886
+ * onApply={(filters) => console.log(filters)}
887
+ * />
888
+ * ```
889
+ */
890
+ declare function FilterPopover({ dropdowns, checkboxGroup, dateRange, filterState, onApply, onClear, triggerVariant, triggerPlaceholder, className, }: FilterPopoverProps): react_jsx_runtime.JSX.Element;
891
+
892
+ interface SearchBarShellProps {
893
+ /** Flair banner title */
894
+ bannerTitle?: string;
895
+ /** Flair banner description */
896
+ bannerDescription?: string;
897
+ /** Page title */
898
+ pageTitle?: string;
899
+ /** Page description */
900
+ pageDescription?: string;
901
+ /** Search bar placeholder */
902
+ searchPlaceholder?: string;
903
+ /** Callback when search is triggered */
904
+ onSearch?: (query: string) => void;
905
+ /** Callback when filters are applied */
906
+ onFilterApply?: (filters: FilterState) => void;
907
+ /** Main content */
908
+ children: React.ReactNode;
909
+ /** Additional class name for the main content area */
910
+ contentClassName?: string;
911
+ }
912
+ /**
913
+ * Canvas Design System - Search Bar Shell
914
+ *
915
+ * A layout with:
916
+ * - Fixed header with logo (no sidebar)
917
+ * - Page header section with title and description
918
+ * - Search bar with filter button
919
+ * - Content area for search results
920
+ *
921
+ * @example
922
+ * ```tsx
923
+ * <SearchBarShell
924
+ * pageTitle="Page title"
925
+ * pageDescription="Description"
926
+ * onSearch={(query) => console.log(query)}
927
+ * >
928
+ * <ContentDropzone />
929
+ * </SearchBarShell>
930
+ * ```
931
+ */
932
+ declare function SearchBarShell({ bannerTitle, bannerDescription, pageTitle, pageDescription, searchPlaceholder, onSearch, onFilterApply, children, contentClassName, }: SearchBarShellProps): react_jsx_runtime.JSX.Element;
933
+
934
+ interface Step {
935
+ id: string;
936
+ label: string;
937
+ /** Optional description for the step content area */
938
+ description?: string;
939
+ }
940
+ interface StepTrackerProps {
941
+ /** Array of step objects with id and label */
942
+ steps: Step[];
943
+ /** Current active step (0-indexed) */
944
+ currentStep: number;
945
+ /** Optional callback when a step is clicked */
946
+ onStepClick?: (stepIndex: number) => void;
947
+ /** Additional class name */
948
+ className?: string;
949
+ }
950
+ /**
951
+ * Canvas Design System - Step Tracker
952
+ *
953
+ * A horizontal multi-step progress tracker showing:
954
+ * - Numbered circles for each step (36px)
955
+ * - Connecting lines between steps
956
+ * - Completed steps show checkmark
957
+ * - Active step has primary border
958
+ * - Inactive steps have gray background
959
+ */
960
+ declare function StepTracker({ steps, currentStep, onStepClick, className, }: StepTrackerProps): react_jsx_runtime.JSX.Element;
961
+ /** Default steps for demo/placeholder purposes */
962
+ declare const defaultSteps: Step[];
963
+
964
+ interface MultistepShellProps {
965
+ /** Array of step objects */
966
+ steps?: Step[];
967
+ /** Current active step (0-indexed) */
968
+ currentStep?: number;
969
+ /** Callback when a step is clicked */
970
+ onStepClick?: (stepIndex: number) => void;
971
+ /** Main content */
972
+ children: React.ReactNode;
973
+ /** Callback when Cancel/Back is clicked */
974
+ onCancel?: () => void;
975
+ /** Callback when Continue/Submit is clicked */
976
+ onContinue?: () => void;
977
+ /** Cancel button text */
978
+ cancelText?: string;
979
+ /** Continue button text */
980
+ continueText?: string;
981
+ /** Whether Continue button is disabled */
982
+ continueDisabled?: boolean;
983
+ /** Callback when app menu (hamburger) is clicked */
984
+ onAppMenuClick?: () => void;
985
+ /** Additional class name for the main content area */
986
+ contentClassName?: string;
987
+ }
988
+ /**
989
+ * Canvas Design System - Multistep Shell
990
+ *
991
+ * A layout for multi-step processes/wizards with:
992
+ * - Fixed header with logo
993
+ * - Horizontal step tracker below header
994
+ * - Step title and description
995
+ * - Centered content area (max-width 768px)
996
+ * - Navigation buttons (Cancel, Continue)
997
+ *
998
+ * @example
999
+ * ```tsx
1000
+ * <MultistepShell
1001
+ * steps={[
1002
+ * { id: "step1", label: "Step 1", description: "First step" },
1003
+ * { id: "step2", label: "Step 2", description: "Second step" },
1004
+ * ]}
1005
+ * currentStep={0}
1006
+ * onCancel={() => router.back()}
1007
+ * onContinue={() => setStep(step + 1)}
1008
+ * >
1009
+ * <ContentDropzone />
1010
+ * </MultistepShell>
1011
+ * ```
1012
+ */
1013
+ declare function MultistepShell({ steps, currentStep, onStepClick, children, onCancel, onContinue, cancelText, continueText, continueDisabled, onAppMenuClick, contentClassName, }: MultistepShellProps): react_jsx_runtime.JSX.Element;
1014
+
1015
+ interface InfoCardProps {
1016
+ /** Card title (displayed as uppercase header) */
1017
+ title?: string;
1018
+ /** Card description text */
1019
+ description?: string;
1020
+ /** Additional class name */
1021
+ className?: string;
1022
+ }
1023
+ /**
1024
+ * Canvas Design System - Info Card
1025
+ *
1026
+ * A sidebar card displaying a title and descriptive text.
1027
+ * Used for "About Us" style content.
1028
+ */
1029
+ declare function InfoCard({ title, description, className, }: InfoCardProps): react_jsx_runtime.JSX.Element;
1030
+ interface LinkItem {
1031
+ id: string;
1032
+ label: string;
1033
+ icon: LucideIcon;
1034
+ href?: string;
1035
+ onClick?: () => void;
1036
+ }
1037
+ interface LinksCardProps {
1038
+ /** Card title (displayed as uppercase header) */
1039
+ title?: string;
1040
+ /** Array of link items */
1041
+ links?: LinkItem[];
1042
+ /** Additional class name */
1043
+ className?: string;
1044
+ }
1045
+ /** Default support links */
1046
+ declare const defaultSupportLinks: LinkItem[];
1047
+ /**
1048
+ * Canvas Design System - Links Card
1049
+ *
1050
+ * A sidebar card displaying a title and a list of icon links.
1051
+ * Used for "Support" style contact links.
1052
+ */
1053
+ declare function LinksCard({ title, links, className, }: LinksCardProps): react_jsx_runtime.JSX.Element;
1054
+
1055
+ interface MultistepSidebarShellProps {
1056
+ /** Array of step objects */
1057
+ steps?: Step[];
1058
+ /** Current active step (0-indexed) */
1059
+ currentStep?: number;
1060
+ /** Callback when a step is clicked */
1061
+ onStepClick?: (stepIndex: number) => void;
1062
+ /** Info card title */
1063
+ infoTitle?: string;
1064
+ /** Info card description */
1065
+ infoDescription?: string;
1066
+ /** Links card title */
1067
+ linksTitle?: string;
1068
+ /** Links card items */
1069
+ links?: LinkItem[];
1070
+ /** Main content */
1071
+ children: React.ReactNode;
1072
+ /** Callback when Cancel/Back is clicked */
1073
+ onCancel?: () => void;
1074
+ /** Callback when Continue/Submit is clicked */
1075
+ onContinue?: () => void;
1076
+ /** Cancel button text */
1077
+ cancelText?: string;
1078
+ /** Continue button text */
1079
+ continueText?: string;
1080
+ /** Whether Continue button is disabled */
1081
+ continueDisabled?: boolean;
1082
+ /** Callback when app menu (hamburger) is clicked */
1083
+ onAppMenuClick?: () => void;
1084
+ /** Additional class name for the main content area */
1085
+ contentClassName?: string;
1086
+ }
1087
+ /**
1088
+ * Canvas Design System - Multistep Sidebar Shell
1089
+ *
1090
+ * A layout for multi-step processes with a sidebar:
1091
+ * - Fixed header with logo
1092
+ * - Horizontal step tracker below header
1093
+ * - Step title and description
1094
+ * - Two-column layout:
1095
+ * - Left: Main content with navigation buttons
1096
+ * - Right: Sidebar (320px) with Info and Links cards
1097
+ *
1098
+ * @example
1099
+ * ```tsx
1100
+ * <MultistepSidebarShell
1101
+ * steps={defaultSteps}
1102
+ * currentStep={0}
1103
+ * onCancel={() => router.back()}
1104
+ * onContinue={() => setStep(step + 1)}
1105
+ * >
1106
+ * <ContentDropzone />
1107
+ * </MultistepSidebarShell>
1108
+ * ```
1109
+ */
1110
+ declare function MultistepSidebarShell({ steps, currentStep, onStepClick, infoTitle, infoDescription, linksTitle, links, children, onCancel, onContinue, cancelText, continueText, continueDisabled, onAppMenuClick, contentClassName, }: MultistepSidebarShellProps): react_jsx_runtime.JSX.Element;
1111
+
1112
+ interface MultistepProgressBarStep {
1113
+ id: string;
1114
+ title: string;
1115
+ description?: string;
1116
+ }
1117
+ interface MultistepProgressBarShellProps {
1118
+ /** Flair banner title */
1119
+ bannerTitle?: string;
1120
+ /** Flair banner description */
1121
+ bannerDescription?: string;
1122
+ /** Page title shown below the flair banner */
1123
+ pageTitle?: string;
1124
+ /** Page description shown below the flair banner */
1125
+ pageDescription?: string;
1126
+ /** Array of step objects */
1127
+ steps?: MultistepProgressBarStep[];
1128
+ /** Current active step (0-indexed) */
1129
+ currentStep?: number;
1130
+ /** Main content */
1131
+ children: React.ReactNode;
1132
+ /** Callback when Cancel is clicked */
1133
+ onCancel?: () => void;
1134
+ /** Callback when Continue is clicked */
1135
+ onContinue?: () => void;
1136
+ /** Cancel button text */
1137
+ cancelText?: string;
1138
+ /** Continue button text */
1139
+ continueText?: string;
1140
+ /** Whether Continue button is disabled */
1141
+ continueDisabled?: boolean;
1142
+ /** Callback when app menu (hamburger) is clicked */
1143
+ onAppMenuClick?: () => void;
1144
+ /** Additional class name for the content area */
1145
+ contentClassName?: string;
1146
+ }
1147
+ /** Default steps for demo/placeholder purposes */
1148
+ declare const defaultProgressBarSteps: MultistepProgressBarStep[];
1149
+ /**
1150
+ * Canvas Design System - Multistep Progress Bar Shell
1151
+ *
1152
+ * A layout for multi-step processes/wizards featuring:
1153
+ * - Fixed header with logo
1154
+ * - Page title and description section
1155
+ * - Horizontal progress bar showing completion
1156
+ * - Step-specific title and description
1157
+ * - Centered content area (max-width 992px)
1158
+ * - Navigation buttons (Cancel, Continue)
1159
+ *
1160
+ * @example
1161
+ * ```tsx
1162
+ * <MultistepProgressBarShell
1163
+ * pageTitle="Page title"
1164
+ * pageDescription="Description"
1165
+ * steps={[
1166
+ * { id: "step1", title: "Step 1", description: "First step" },
1167
+ * { id: "step2", title: "Step 2", description: "Second step" },
1168
+ * ]}
1169
+ * currentStep={0}
1170
+ * onCancel={() => router.back()}
1171
+ * onContinue={() => setStep(step + 1)}
1172
+ * >
1173
+ * <ContentDropzone />
1174
+ * </MultistepProgressBarShell>
1175
+ * ```
1176
+ */
1177
+ declare function MultistepProgressBarShell({ bannerTitle, bannerDescription, pageTitle, pageDescription, steps, currentStep, children, onCancel, onContinue, cancelText, continueText, continueDisabled, onAppMenuClick, contentClassName, }: MultistepProgressBarShellProps): react_jsx_runtime.JSX.Element;
1178
+
1179
+ interface VerticalMultistepShellProps {
1180
+ /** Array of step objects */
1181
+ steps?: Step[];
1182
+ /** Current active step (0-indexed) */
1183
+ currentStep?: number;
1184
+ /** Callback when a step is clicked */
1185
+ onStepClick?: (stepIndex: number) => void;
1186
+ /** Section title for the step tracker (e.g., "REGISTRATION") */
1187
+ sectionTitle?: string;
1188
+ /** Flair banner title */
1189
+ bannerTitle?: string;
1190
+ /** Flair banner description */
1191
+ bannerDescription?: string;
1192
+ /** Page title */
1193
+ pageTitle?: string;
1194
+ /** Page description */
1195
+ pageDescription?: string;
1196
+ /** Main content */
1197
+ children: React.ReactNode;
1198
+ /** Callback when Cancel/Back is clicked */
1199
+ onCancel?: () => void;
1200
+ /** Callback when Continue/Submit is clicked */
1201
+ onContinue?: () => void;
1202
+ /** Cancel button text */
1203
+ cancelText?: string;
1204
+ /** Continue button text */
1205
+ continueText?: string;
1206
+ /** Whether Continue button is disabled */
1207
+ continueDisabled?: boolean;
1208
+ /** Callback when app menu (hamburger) is clicked */
1209
+ onAppMenuClick?: () => void;
1210
+ /** Additional class name for the content area */
1211
+ contentClassName?: string;
1212
+ }
1213
+ /**
1214
+ * Canvas Design System - Vertical Multistep Shell
1215
+ *
1216
+ * A layout for multi-step processes with vertical step tracker:
1217
+ *
1218
+ * **Desktop**: Two-column layout
1219
+ * - Left: Sidebar card (320px) with vertical step tracker
1220
+ * - Right: Content area with step title, description, content, and navigation
1221
+ *
1222
+ * **Mobile**: Stacked layout
1223
+ * - Header with hamburger menu
1224
+ * - Page title and description
1225
+ * - Vertical step list (no card)
1226
+ * - Content area with navigation
1227
+ *
1228
+ * @example
1229
+ * ```tsx
1230
+ * <VerticalMultistepShell
1231
+ * steps={defaultVerticalSteps}
1232
+ * currentStep={0}
1233
+ * sectionTitle="REGISTRATION"
1234
+ * onCancel={() => router.back()}
1235
+ * onContinue={() => setStep(step + 1)}
1236
+ * >
1237
+ * <ContentDropzone />
1238
+ * </VerticalMultistepShell>
1239
+ * ```
1240
+ */
1241
+ declare function VerticalMultistepShell({ steps, currentStep, onStepClick, sectionTitle, bannerTitle, bannerDescription, pageTitle, pageDescription, children, onCancel, onContinue, cancelText, continueText, continueDisabled, onAppMenuClick, contentClassName, }: VerticalMultistepShellProps): react_jsx_runtime.JSX.Element;
1242
+
1243
+ type AccountTab = "profile" | "security" | "payments" | "notifications";
1244
+ interface AccountTabConfig {
1245
+ id: AccountTab;
1246
+ label: string;
1247
+ icon: LucideIcon;
1248
+ }
1249
+ declare const accountTabs: AccountTabConfig[];
1250
+ interface AccountSettingsShellProps {
1251
+ /** Currently active tab */
1252
+ activeTab?: AccountTab;
1253
+ /** Callback when tab changes */
1254
+ onTabChange?: (tab: AccountTab) => void;
1255
+ /** Main content - renders based on active tab */
1256
+ children: React.ReactNode;
1257
+ /** Page title */
1258
+ pageTitle?: string;
1259
+ }
1260
+ /**
1261
+ * Canvas Design System - Account Settings Shell
1262
+ *
1263
+ * A layout for account/settings pages with:
1264
+ * - Fixed header with logo (no sidebar)
1265
+ * - Page title section with bottom border
1266
+ * - Two-column layout: sidebar navigation (320px) + content area
1267
+ * - Mobile responsive: sidebar stacks above content
1268
+ *
1269
+ * @example
1270
+ * ```tsx
1271
+ * <AccountSettingsShell
1272
+ * activeTab={activeTab}
1273
+ * onTabChange={setActiveTab}
1274
+ * >
1275
+ * {activeTab === "profile" && <ProfileContent />}
1276
+ * {activeTab === "security" && <SecurityContent />}
1277
+ * </AccountSettingsShell>
1278
+ * ```
1279
+ */
1280
+ declare function AccountSettingsShell({ activeTab: controlledActiveTab, onTabChange, children, pageTitle, }: AccountSettingsShellProps): react_jsx_runtime.JSX.Element;
1281
+
1282
+ type ProjectContextTab = "scope" | "personas" | "screens" | "prompts";
1283
+ interface ProjectContextShellProps {
1284
+ children: ReactNode;
1285
+ activeTab: ProjectContextTab;
1286
+ onTabChange: (tab: ProjectContextTab) => void;
1287
+ }
1288
+ declare function ProjectContextShell({ children, activeTab, onTabChange, }: ProjectContextShellProps): react_jsx_runtime.JSX.Element;
1289
+
1290
+ interface ChatBubbleMessage {
1291
+ id: string;
1292
+ content: string;
1293
+ timestamp: string;
1294
+ isSent: boolean;
1295
+ senderName?: string;
1296
+ senderAvatar?: string;
1297
+ }
1298
+ interface ChatBubbleProps {
1299
+ message: ChatBubbleMessage;
1300
+ }
1301
+ declare function ChatBubble({ message }: ChatBubbleProps): react_jsx_runtime.JSX.Element;
1302
+ interface ChatDateSeparatorProps {
1303
+ date: string;
1304
+ }
1305
+ declare function ChatDateSeparator({ date }: ChatDateSeparatorProps): react_jsx_runtime.JSX.Element;
1306
+ interface AttachmentPill {
1307
+ id: string;
1308
+ name: string;
1309
+ type: "image" | "file";
1310
+ url?: string;
1311
+ }
1312
+ interface MessengerInputProps {
1313
+ attachments?: AttachmentPill[];
1314
+ onRemoveAttachment?: (id: string) => void;
1315
+ onSend?: () => void;
1316
+ }
1317
+ declare function MessengerInput({ attachments, onRemoveAttachment, onSend, }: MessengerInputProps): react_jsx_runtime.JSX.Element;
1318
+ declare const ChatInput: typeof MessengerInput;
1319
+ interface ChatMessageListProps {
1320
+ messages?: ChatBubbleMessage[];
1321
+ className?: string;
1322
+ }
1323
+ declare function ChatMessageList({ messages, className }: ChatMessageListProps): react_jsx_runtime.JSX.Element;
1324
+
1325
+ interface MessengerSidebarProps {
1326
+ selectedThreadId?: string;
1327
+ onSelectThread?: (threadId: string) => void;
1328
+ className?: string;
1329
+ }
1330
+ declare function MessengerSidebar({ selectedThreadId, onSelectThread, className, }: MessengerSidebarProps): react_jsx_runtime.JSX.Element;
1331
+
1332
+ interface ChatThread {
1333
+ id: string;
1334
+ name: string;
1335
+ avatarUrl?: string;
1336
+ preview: string;
1337
+ unreadCount?: number;
1338
+ }
1339
+ interface ChatMessageData {
1340
+ id: string;
1341
+ senderName: string;
1342
+ senderAvatar?: string;
1343
+ content: string;
1344
+ timestamp: string;
1345
+ }
1346
+ interface BottomInputChatWidgetProps {
1347
+ variant?: "threads" | "conversation";
1348
+ title?: string;
1349
+ threads?: ChatThread[];
1350
+ messages?: ChatMessageData[];
1351
+ conversationName?: string;
1352
+ onThreadClick?: (threadId: string) => void;
1353
+ onBackClick?: () => void;
1354
+ onSend?: (message: string) => void;
1355
+ className?: string;
1356
+ }
1357
+ declare function BottomInputChatWidget({ variant, title, threads, messages, conversationName, onThreadClick, onBackClick, onSend, className, }: BottomInputChatWidgetProps): react_jsx_runtime.JSX.Element;
1358
+
1359
+ interface ContentDropzoneProps {
1360
+ /** Height of the dropzone (only applies when empty) */
1361
+ height?: string;
1362
+ /** Additional class names */
1363
+ className?: string;
1364
+ /** Content elements */
1365
+ children?: ReactNode;
1366
+ }
1367
+ /**
1368
+ * Canvas Design System - Content Dropzone
1369
+ *
1370
+ * A placeholder component representing where content blocks would be inserted.
1371
+ * When empty, shows a dashed border placeholder.
1372
+ * When children are added, becomes a flex column with 40px gap spacing.
1373
+ */
1374
+ declare function ContentDropzone({ height, className, children, }: ContentDropzoneProps): react_jsx_runtime.JSX.Element;
1375
+
1376
+ interface FlairBannerProps {
1377
+ /** Large title text */
1378
+ title?: string;
1379
+ /** Additional class names */
1380
+ className?: string;
1381
+ /** Optional background image URL */
1382
+ backgroundImage?: string;
1383
+ /** Opacity of the flair color overlay when using background image (0-1, default 0.7) */
1384
+ overlayOpacity?: number;
1385
+ }
1386
+ /**
1387
+ * Canvas Design System - Flair Banner Component
1388
+ *
1389
+ * A hero banner with centered title. Supports solid flair color background
1390
+ * or an image background with a semi-transparent flair color overlay.
1391
+ * Typically used at the top of standard pages below the header.
1392
+ *
1393
+ * @example
1394
+ * ```tsx
1395
+ * // Solid color background (default)
1396
+ * <FlairBanner title="Large title" />
1397
+ *
1398
+ * // Image background with flair overlay
1399
+ * <FlairBanner
1400
+ * title="Large title"
1401
+ * backgroundImage="/brand-assets/bg.jpg"
1402
+ * overlayOpacity={0.6}
1403
+ * />
1404
+ * ```
1405
+ */
1406
+ declare function FlairBanner({ title, className, backgroundImage, overlayOpacity, }: FlairBannerProps): react_jsx_runtime.JSX.Element;
1407
+
1408
+ interface GradientBannerProps {
1409
+ /** Height of the banner */
1410
+ height?: string;
1411
+ /** Additional class names */
1412
+ className?: string;
1413
+ /** Children to render inside the banner */
1414
+ children?: React.ReactNode;
1415
+ }
1416
+ /**
1417
+ * Canvas Design System - Gradient Banner Component
1418
+ *
1419
+ * A dynamic gradient banner that generates analogous colors
1420
+ * based on the primary theme color. Updates live when the
1421
+ * primary color changes.
1422
+ */
1423
+ declare function GradientBanner({ height, className, children, }: GradientBannerProps): react_jsx_runtime.JSX.Element;
1424
+
1425
+ interface LoginBrandingPanelProps {
1426
+ /** Background image URL */
1427
+ backgroundImage?: string;
1428
+ /** Title text */
1429
+ title?: string;
1430
+ /** Description text */
1431
+ description?: string;
1432
+ /** Opacity of the flair color overlay (0-1, default 0.7) */
1433
+ overlayOpacity?: number;
1434
+ /** Additional class names */
1435
+ className?: string;
1436
+ }
1437
+ /**
1438
+ * Canvas Design System - Login Branding Panel Component
1439
+ *
1440
+ * A right-side branding panel for login/signup pages featuring:
1441
+ * - Full-height background image with semi-transparent flair color overlay
1442
+ * - Title and description text at the bottom
1443
+ *
1444
+ * The overlay uses the flair background CSS variable for live theming.
1445
+ */
1446
+ declare function LoginBrandingPanel({ backgroundImage, title, description, overlayOpacity, className, }: LoginBrandingPanelProps): react_jsx_runtime.JSX.Element;
1447
+
1448
+ interface PageHeaderSectionProps {
1449
+ /** Page title */
1450
+ title?: string;
1451
+ /** Page description */
1452
+ description?: string;
1453
+ /** Array of tab items */
1454
+ tabs?: LineTab[];
1455
+ /** ID of the currently active tab */
1456
+ activeTab?: string;
1457
+ /** Callback when a tab is clicked */
1458
+ onTabChange?: (tabId: string) => void;
1459
+ /** Whether to show the tabs */
1460
+ showTabs?: boolean;
1461
+ /** Additional class names */
1462
+ className?: string;
1463
+ }
1464
+ /**
1465
+ * Canvas Design System - Page Header Section Component
1466
+ *
1467
+ * A section combining page title, description, and line tabs.
1468
+ * Centered with max-width constraint.
1469
+ *
1470
+ * @example
1471
+ * ```tsx
1472
+ * <PageHeaderSection
1473
+ * title="Page title"
1474
+ * description="Description"
1475
+ * tabs={[
1476
+ * { id: "tab1", label: "Tab 1" },
1477
+ * { id: "tab2", label: "Tab 2" },
1478
+ * ]}
1479
+ * />
1480
+ * ```
1481
+ */
1482
+ declare function PageHeaderSection({ title, description, tabs, activeTab, onTabChange, showTabs, className, }: PageHeaderSectionProps): react_jsx_runtime.JSX.Element;
1483
+
1484
+ interface EmptyStateProps {
1485
+ icon: string;
1486
+ title: string;
1487
+ description?: string;
1488
+ className?: string;
1489
+ }
1490
+ declare function EmptyState({ icon, title, description, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1491
+
1492
+ interface MenuSectionProps {
1493
+ /** Array of menu items */
1494
+ items: Array<{
1495
+ id: string;
1496
+ label: string;
1497
+ children?: React.ReactNode;
1498
+ defaultExpanded?: boolean;
1499
+ }>;
1500
+ /** Additional class names */
1501
+ className?: string;
1502
+ }
1503
+ /**
1504
+ * Canvas Design System - Menu Section Component
1505
+ *
1506
+ * A group of expandable menu items with border separators.
1507
+ *
1508
+ * @example
1509
+ * ```tsx
1510
+ * <MenuSection
1511
+ * items={[
1512
+ * { id: "1", label: "Menu tab" },
1513
+ * { id: "2", label: "Another menu tab" },
1514
+ * ]}
1515
+ * />
1516
+ * ```
1517
+ */
1518
+ declare function MenuSection({ items, className, }: MenuSectionProps): react_jsx_runtime.JSX.Element;
1519
+
1520
+ type TabIconType = "briefcase" | "star" | "user";
1521
+ interface PillTab {
1522
+ id: string;
1523
+ label: string;
1524
+ icon?: TabIconType;
1525
+ }
1526
+ interface PillTabsProps {
1527
+ tabs: PillTab[];
1528
+ activeTab?: string;
1529
+ onTabChange?: (tabId: string) => void;
1530
+ className?: string;
1531
+ }
1532
+ /**
1533
+ * Canvas Design System - Pill Tabs Component
1534
+ *
1535
+ * A horizontal tab navigation with pill-shaped tabs.
1536
+ * Each tab can have an optional icon.
1537
+ */
1538
+ declare function PillTabs({ tabs, activeTab, onTabChange, className, }: PillTabsProps): react_jsx_runtime.JSX.Element;
1539
+
1540
+ interface SearchBarProps {
1541
+ /** Placeholder text for the input */
1542
+ placeholder?: string;
1543
+ /** Current search value */
1544
+ value?: string;
1545
+ /** Callback when the input value changes */
1546
+ onChange?: (value: string) => void;
1547
+ /** Callback when search is triggered (button click or Enter key) */
1548
+ onSearch?: () => void;
1549
+ /** Search button label */
1550
+ buttonLabel?: string;
1551
+ /** Additional class names */
1552
+ className?: string;
1553
+ }
1554
+ /**
1555
+ * Canvas Design System - Search Bar Component
1556
+ *
1557
+ * A search input with a search icon on the left and a conditional search button.
1558
+ * The button appears only when the input has content.
1559
+ * Uses standard input sizing variables for consistent styling.
1560
+ *
1561
+ * @example
1562
+ * ```tsx
1563
+ * <SearchBar
1564
+ * placeholder="Search"
1565
+ * value={searchValue}
1566
+ * onChange={setSearchValue}
1567
+ * onSearch={handleSearch}
1568
+ * />
1569
+ * ```
1570
+ */
1571
+ declare function SearchBar({ placeholder, value, onChange, onSearch, buttonLabel, className, }: SearchBarProps): react_jsx_runtime.JSX.Element;
1572
+
1573
+ interface SearchSidebarState {
1574
+ specials: string[];
1575
+ languages: string[];
1576
+ priceMin: string;
1577
+ priceMax: string;
1578
+ starRating: string;
1579
+ distance: number[];
1580
+ membershipDeals: boolean;
1581
+ }
1582
+ interface SearchSidebarProps {
1583
+ className?: string;
1584
+ state: SearchSidebarState;
1585
+ onStateChange: (state: SearchSidebarState) => void;
1586
+ }
1587
+ declare function SearchSidebar({ className, state, onStateChange, }: SearchSidebarProps): react_jsx_runtime.JSX.Element;
1588
+
1589
+ interface TableColumn {
1590
+ id: string;
1591
+ label: string;
1592
+ /** Width class or style for the column */
1593
+ width?: string;
1594
+ }
1595
+ interface TableRow {
1596
+ id: string;
1597
+ name: string;
1598
+ avatarUrl?: string;
1599
+ email: string;
1600
+ title: string;
1601
+ role: string;
1602
+ }
1603
+ interface SortOption$b {
1604
+ id: string;
1605
+ label: string;
1606
+ }
1607
+ interface FilterOption$b {
1608
+ id: string;
1609
+ label: string;
1610
+ }
1611
+ interface StandardDataTableProps {
1612
+ /** Table title */
1613
+ title?: string;
1614
+ /** Number of results to display */
1615
+ resultCount?: number;
1616
+ /** Custom result count text (overrides default "{count} results") */
1617
+ resultCountText?: string;
1618
+ /** Column definitions */
1619
+ columns?: TableColumn[];
1620
+ /** Table data rows */
1621
+ data?: TableRow[];
1622
+ /** Sort options for the sort dropdown */
1623
+ sortOptions?: SortOption$b[];
1624
+ /** Filter options for the filter dropdown */
1625
+ filterOptions?: FilterOption$b[];
1626
+ /** Primary action button text */
1627
+ actionButtonText?: string;
1628
+ /** Callback when add/action button is clicked */
1629
+ onAddNew?: () => void;
1630
+ /** Callback when sort value changes */
1631
+ onSort?: (value: string) => void;
1632
+ /** Callback when filter value changes */
1633
+ onFilter?: (value: string) => void;
1634
+ /** Callback when row action is clicked */
1635
+ onRowAction?: (action: string, row: TableRow) => void;
1636
+ /** Additional class names */
1637
+ className?: string;
1638
+ }
1639
+ /**
1640
+ * Canvas Design System - Standard Data Table Block
1641
+ *
1642
+ * A configurable data table with header section including title,
1643
+ * sort/filter dropdowns, and action button. Displays tabular data
1644
+ * with avatar support in the name column.
1645
+ *
1646
+ * @example
1647
+ * ```tsx
1648
+ * <StandardDataTable
1649
+ * title="Teammates"
1650
+ * data={[
1651
+ * { id: "1", name: "John", email: "john@example.com", title: "Engineer", role: "Admin" }
1652
+ * ]}
1653
+ * onAddNew={() => console.log("Add new")}
1654
+ * />
1655
+ * ```
1656
+ */
1657
+ declare function StandardDataTable({ title, resultCount, resultCountText, columns, data, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onRowAction, className, }: StandardDataTableProps): react_jsx_runtime.JSX.Element;
1658
+
1659
+ type FixedColumnTableStatus = "pending" | "paid" | "overdue";
1660
+ interface FixedColumnTableRow {
1661
+ id: string;
1662
+ name: string;
1663
+ avatarUrl?: string;
1664
+ amount: string;
1665
+ status: FixedColumnTableStatus;
1666
+ logoUrl?: string;
1667
+ company: string;
1668
+ dateSent: string;
1669
+ }
1670
+ interface SortOption$a {
1671
+ id: string;
1672
+ label: string;
1673
+ }
1674
+ interface FilterOption$a {
1675
+ id: string;
1676
+ label: string;
1677
+ }
1678
+ interface FixedColumnDataTableProps {
1679
+ /** Table title */
1680
+ title?: string;
1681
+ /** Number of results to display */
1682
+ resultCount?: number;
1683
+ /** Custom result count text (overrides default "{count} results") */
1684
+ resultCountText?: string;
1685
+ /** Table data rows */
1686
+ data?: FixedColumnTableRow[];
1687
+ /** Sort options for the sort dropdown */
1688
+ sortOptions?: SortOption$a[];
1689
+ /** Filter options for the filter dropdown */
1690
+ filterOptions?: FilterOption$a[];
1691
+ /** Primary action button text */
1692
+ actionButtonText?: string;
1693
+ /** Callback when add/action button is clicked */
1694
+ onAddNew?: () => void;
1695
+ /** Callback when sort value changes */
1696
+ onSort?: (value: string) => void;
1697
+ /** Callback when filter value changes */
1698
+ onFilter?: (value: string) => void;
1699
+ /** Callback when row action is clicked */
1700
+ onRowAction?: (action: string, row: FixedColumnTableRow) => void;
1701
+ /** Additional class names */
1702
+ className?: string;
1703
+ }
1704
+ /**
1705
+ * Canvas Design System - Fixed Column Data Table Block
1706
+ *
1707
+ * A data table with a fixed first column (Name with avatar) that stays
1708
+ * visible during horizontal scrolling. Ideal for invoice-style tables
1709
+ * with many columns that need horizontal scrolling on smaller screens.
1710
+ *
1711
+ * @example
1712
+ * ```tsx
1713
+ * <FixedColumnDataTable
1714
+ * title="Invoices"
1715
+ * data={[
1716
+ * { id: "1", name: "John", amount: "$1,000", status: "paid", company: "Acme", dateSent: "1/1/2024" }
1717
+ * ]}
1718
+ * onAddNew={() => console.log("Add new")}
1719
+ * />
1720
+ * ```
1721
+ */
1722
+ declare function FixedColumnDataTable({ title, resultCount, resultCountText, data, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onRowAction, className, }: FixedColumnDataTableProps): react_jsx_runtime.JSX.Element;
1723
+
1724
+ interface ChildRow {
1725
+ id: string;
1726
+ name: string;
1727
+ avatarUrl?: string;
1728
+ email: string;
1729
+ phone: string;
1730
+ }
1731
+ interface ParentRow {
1732
+ id: string;
1733
+ location: string;
1734
+ ftes: number;
1735
+ contractors: number;
1736
+ hrContact: {
1737
+ name: string;
1738
+ phone: string;
1739
+ };
1740
+ children: ChildRow[];
1741
+ }
1742
+ interface SortOption$9 {
1743
+ id: string;
1744
+ label: string;
1745
+ }
1746
+ interface FilterOption$9 {
1747
+ id: string;
1748
+ label: string;
1749
+ }
1750
+ interface NestedDataTableProps {
1751
+ /** Table title */
1752
+ title?: string;
1753
+ /** Number of results to display */
1754
+ resultCount?: number;
1755
+ /** Custom result count text (overrides default "{count} results") */
1756
+ resultCountText?: string;
1757
+ /** Table data rows */
1758
+ data?: ParentRow[];
1759
+ /** Sort options for the sort dropdown */
1760
+ sortOptions?: SortOption$9[];
1761
+ /** Filter options for the filter dropdown */
1762
+ filterOptions?: FilterOption$9[];
1763
+ /** Primary action button text */
1764
+ actionButtonText?: string;
1765
+ /** Callback when add/action button is clicked */
1766
+ onAddNew?: () => void;
1767
+ /** Callback when sort value changes */
1768
+ onSort?: (value: string) => void;
1769
+ /** Callback when filter value changes */
1770
+ onFilter?: (value: string) => void;
1771
+ /** Callback when parent row action is clicked */
1772
+ onRowAction?: (action: string, row: ParentRow) => void;
1773
+ /** Callback when child row action is clicked */
1774
+ onChildAction?: (action: string, child: ChildRow, parent: ParentRow) => void;
1775
+ /** Additional class names */
1776
+ className?: string;
1777
+ }
1778
+ /**
1779
+ * Canvas Design System - Nested Data Table Block
1780
+ *
1781
+ * An expandable data table with parent rows that reveal nested child tables.
1782
+ * Ideal for displaying hierarchical data like locations with employees,
1783
+ * departments with team members, or categories with items.
1784
+ *
1785
+ * @example
1786
+ * ```tsx
1787
+ * <NestedDataTable
1788
+ * title="FTEs & Contractors by Location"
1789
+ * data={locationData}
1790
+ * onAddNew={() => console.log("Add new")}
1791
+ * />
1792
+ * ```
1793
+ */
1794
+ declare function NestedDataTable({ title, resultCount, resultCountText, data, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onRowAction, onChildAction, className, }: NestedDataTableProps): react_jsx_runtime.JSX.Element;
1795
+
1796
+ interface ReviewItem {
1797
+ id: string;
1798
+ name: string;
1799
+ avatarUrl?: string;
1800
+ rating: number;
1801
+ date: string;
1802
+ reviewText: string;
1803
+ }
1804
+ interface SortOption$8 {
1805
+ id: string;
1806
+ label: string;
1807
+ }
1808
+ interface FilterOption$8 {
1809
+ id: string;
1810
+ label: string;
1811
+ }
1812
+ interface ReviewsTableProps {
1813
+ /** Table title */
1814
+ title?: string;
1815
+ /** Number of reviews to display in subtitle */
1816
+ reviewCount?: number;
1817
+ /** Custom review count text (overrides default "{count} customer reviews") */
1818
+ reviewCountText?: string;
1819
+ /** Review data */
1820
+ reviews?: ReviewItem[];
1821
+ /** Sort options for the sort dropdown */
1822
+ sortOptions?: SortOption$8[];
1823
+ /** Filter options for the filter dropdown */
1824
+ filterOptions?: FilterOption$8[];
1825
+ /** Primary action button text */
1826
+ actionButtonText?: string;
1827
+ /** Callback when add/action button is clicked */
1828
+ onAddNew?: () => void;
1829
+ /** Callback when sort value changes */
1830
+ onSort?: (value: string) => void;
1831
+ /** Callback when filter value changes */
1832
+ onFilter?: (value: string) => void;
1833
+ /** Callback when "More" is clicked on a review */
1834
+ onReadMore?: (review: ReviewItem) => void;
1835
+ /** Additional class names */
1836
+ className?: string;
1837
+ }
1838
+ /**
1839
+ * Canvas Design System - Reviews Table Block
1840
+ *
1841
+ * A configurable reviews listing with header section including title,
1842
+ * sort/filter dropdowns, and action button. Displays review items
1843
+ * with avatar, star rating, date, and expandable text.
1844
+ *
1845
+ * @example
1846
+ * ```tsx
1847
+ * <ReviewsTable
1848
+ * title="Reviews"
1849
+ * reviews={[
1850
+ * { id: "1", name: "John Doe", rating: 5, date: "Jul 22, 2024", reviewText: "Great experience!" }
1851
+ * ]}
1852
+ * onAddNew={() => console.log("Add new")}
1853
+ * />
1854
+ * ```
1855
+ */
1856
+ declare function ReviewsTable({ title, reviewCount, reviewCountText, reviews, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onReadMore, className, }: ReviewsTableProps): react_jsx_runtime.JSX.Element;
1857
+
1858
+ interface PostAuthor$2 {
1859
+ id: string;
1860
+ name: string;
1861
+ avatarUrl?: string;
1862
+ }
1863
+ interface PostComment {
1864
+ id: string;
1865
+ author: PostAuthor$2;
1866
+ content: string;
1867
+ timestamp: string;
1868
+ likes: number;
1869
+ isLiked?: boolean;
1870
+ replies?: PostComment[];
1871
+ }
1872
+ interface Post {
1873
+ id: string;
1874
+ author: PostAuthor$2;
1875
+ date: string;
1876
+ title: string;
1877
+ content: string;
1878
+ imageUrl?: string;
1879
+ upvotes: number;
1880
+ isUpvoted?: boolean;
1881
+ comments?: PostComment[];
1882
+ }
1883
+ interface SortOption$7 {
1884
+ id: string;
1885
+ label: string;
1886
+ }
1887
+ interface FilterOption$7 {
1888
+ id: string;
1889
+ label: string;
1890
+ }
1891
+ interface UpvotingPostsTableProps {
1892
+ /** Table title */
1893
+ title?: string;
1894
+ /** Subtitle text */
1895
+ subtitle?: string;
1896
+ /** Posts data */
1897
+ posts?: Post[];
1898
+ /** Current user for comment input avatars */
1899
+ currentUser?: PostAuthor$2;
1900
+ /** Sort options for the sort dropdown */
1901
+ sortOptions?: SortOption$7[];
1902
+ /** Filter options for the filter dropdown */
1903
+ filterOptions?: FilterOption$7[];
1904
+ /** Primary action button text */
1905
+ actionButtonText?: string;
1906
+ /** Callback when add/action button is clicked */
1907
+ onAddNew?: () => void;
1908
+ /** Callback when sort value changes */
1909
+ onSort?: (value: string) => void;
1910
+ /** Callback when filter value changes */
1911
+ onFilter?: (value: string) => void;
1912
+ /** Callback when upvote is clicked */
1913
+ onUpvote?: (postId: string) => void;
1914
+ /** Callback when comment is submitted */
1915
+ onComment?: (postId: string, content: string) => void;
1916
+ /** Callback when reply is submitted */
1917
+ onReply?: (postId: string, commentId: string, content: string) => void;
1918
+ /** Callback when like is clicked */
1919
+ onLike?: (postId: string, commentId: string) => void;
1920
+ /** Additional class names */
1921
+ className?: string;
1922
+ }
1923
+ /**
1924
+ * Canvas Design System - Upvoting Posts Table Block
1925
+ *
1926
+ * A social feed component with upvoting, comments, and nested replies.
1927
+ * Features header with sort/filter controls and action button.
1928
+ *
1929
+ * @example
1930
+ * ```tsx
1931
+ * <UpvotingPostsTable
1932
+ * title="My posts"
1933
+ * subtitle="In the past year"
1934
+ * posts={[...]}
1935
+ * onUpvote={(postId) => console.log("Upvoted", postId)}
1936
+ * />
1937
+ * ```
1938
+ */
1939
+ declare function UpvotingPostsTable({ title, subtitle, posts, currentUser, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onUpvote, onComment, onReply, onLike, className, }: UpvotingPostsTableProps): react_jsx_runtime.JSX.Element;
1940
+
1941
+ interface CommentAuthor {
1942
+ id: string;
1943
+ name: string;
1944
+ avatarUrl?: string;
1945
+ }
1946
+ interface Comment {
1947
+ id: string;
1948
+ author: CommentAuthor;
1949
+ content: string;
1950
+ timestamp: string;
1951
+ likes: number;
1952
+ isLiked?: boolean;
1953
+ replies?: Comment[];
1954
+ }
1955
+ interface NestedCommentsTableProps {
1956
+ /** Section title */
1957
+ title?: string;
1958
+ /** Section subtitle */
1959
+ subtitle?: string;
1960
+ /** Comments data */
1961
+ comments?: Comment[];
1962
+ /** Current user for comment input avatars */
1963
+ currentUser?: CommentAuthor;
1964
+ /** Callback when main comment is submitted */
1965
+ onComment?: (content: string) => void;
1966
+ /** Callback when reply is submitted */
1967
+ onReply?: (commentId: string, content: string) => void;
1968
+ /** Callback when like is clicked */
1969
+ onLike?: (commentId: string) => void;
1970
+ /** Additional class names */
1971
+ className?: string;
1972
+ }
1973
+ /**
1974
+ * Canvas Design System - Nested Comments Table Block
1975
+ *
1976
+ * A threaded discussion component with nested comments, reply/like actions,
1977
+ * and collapsible threads. Perfect for discussion sections, comment threads,
1978
+ * or messaging interfaces.
1979
+ *
1980
+ * @example
1981
+ * ```tsx
1982
+ * <NestedCommentsTable
1983
+ * title="My discussions"
1984
+ * subtitle="In the past year"
1985
+ * comments={[...]}
1986
+ * onComment={(content) => console.log("Comment:", content)}
1987
+ * />
1988
+ * ```
1989
+ */
1990
+ declare function NestedCommentsTable({ title, subtitle, comments, currentUser, onComment, onReply, onLike, className, }: NestedCommentsTableProps): react_jsx_runtime.JSX.Element;
1991
+
1992
+ interface FAQItem {
1993
+ id: string;
1994
+ question: string;
1995
+ answer: string;
1996
+ }
1997
+ interface FaqsTableProps {
1998
+ /** Table title */
1999
+ title?: string;
2000
+ /** FAQ items to display */
2001
+ items?: FAQItem[];
2002
+ /** ID of the item that should be expanded by default */
2003
+ defaultExpandedId?: string;
2004
+ /** Additional class names */
2005
+ className?: string;
2006
+ }
2007
+ /**
2008
+ * Canvas Design System - FAQs Table Block
2009
+ *
2010
+ * An expandable FAQ list with plus/minus toggle icons.
2011
+ * Displays one item expanded at a time (accordion behavior).
2012
+ *
2013
+ * @example
2014
+ * ```tsx
2015
+ * <FaqsTable
2016
+ * title="Common questions"
2017
+ * items={[
2018
+ * { id: "1", question: "What is Canvas?", answer: "..." }
2019
+ * ]}
2020
+ * />
2021
+ * ```
2022
+ */
2023
+ declare function FaqsTable({ title, items, defaultExpandedId, className, }: FaqsTableProps): react_jsx_runtime.JSX.Element;
2024
+
2025
+ interface ProfileStat {
2026
+ value: string;
2027
+ label: string;
2028
+ }
2029
+ interface ProfileTag {
2030
+ label: string;
2031
+ }
2032
+ interface SocialLink {
2033
+ type: "website" | "facebook" | "twitter" | "linkedin" | "instagram";
2034
+ label: string;
2035
+ href?: string;
2036
+ }
2037
+ interface ProfileCardProps {
2038
+ /** Profile avatar image URL */
2039
+ avatarUrl?: string;
2040
+ /** Avatar fallback initials */
2041
+ avatarFallback?: string;
2042
+ /** Whether to show online status indicator */
2043
+ showStatus?: boolean;
2044
+ /** User's display name */
2045
+ name: string;
2046
+ /** User's username (with @) */
2047
+ username: string;
2048
+ /** Star rating (0-5) */
2049
+ rating?: number;
2050
+ /** Location text */
2051
+ location?: string;
2052
+ /** Join date text */
2053
+ joinDate?: string;
2054
+ /** Stats to display */
2055
+ stats?: ProfileStat[];
2056
+ /** Bio text */
2057
+ bio?: string;
2058
+ /** Tags/skills */
2059
+ tags?: ProfileTag[];
2060
+ /** Social links */
2061
+ socialLinks?: SocialLink[];
2062
+ /** Additional class names */
2063
+ className?: string;
2064
+ /** Show menu button */
2065
+ showMenu?: boolean;
2066
+ /** Menu click handler */
2067
+ onMenuClick?: () => void;
2068
+ }
2069
+ /**
2070
+ * Canvas Design System - Profile Card Component
2071
+ *
2072
+ * A centered profile card with avatar overlapping banner, stats, tags, and social links.
2073
+ * Uses CSS variables for theming to support live preview.
2074
+ */
2075
+ declare function ProfileCard({ avatarUrl, avatarFallback, showStatus, name, username, rating, location, joinDate, stats, bio, tags, socialLinks, className, showMenu, onMenuClick, }: ProfileCardProps): react_jsx_runtime.JSX.Element;
2076
+
2077
+ interface InfoRow {
2078
+ icon: "location" | "education" | "sessions" | "earnings";
2079
+ label: string;
2080
+ value: string;
2081
+ }
2082
+ interface SidebarProfileCardProps {
2083
+ /** Profile avatar image URL */
2084
+ avatarUrl?: string;
2085
+ /** Avatar fallback initials */
2086
+ avatarFallback?: string;
2087
+ /** Whether to show online status indicator */
2088
+ showStatus?: boolean;
2089
+ /** User's display name */
2090
+ name: string;
2091
+ /** User's role/title */
2092
+ role?: string;
2093
+ /** Star rating value */
2094
+ rating?: number;
2095
+ /** Number of reviews */
2096
+ reviewCount?: string;
2097
+ /** Certification text */
2098
+ certification?: string;
2099
+ /** Info rows (location, education, sessions, earnings) */
2100
+ infoRows?: InfoRow[];
2101
+ /** Contact button click handler */
2102
+ onContactClick?: () => void;
2103
+ /** Hire button click handler */
2104
+ onHireClick?: () => void;
2105
+ /** Additional class names */
2106
+ className?: string;
2107
+ }
2108
+ /**
2109
+ * Canvas Design System - Sidebar Profile Card Component
2110
+ *
2111
+ * A profile card designed for sidebar placement with avatar,
2112
+ * name, rating, action buttons, info rows, and social icons.
2113
+ */
2114
+ declare function SidebarProfileCard({ avatarUrl, avatarFallback, showStatus, name, role, rating, reviewCount, certification, infoRows, onContactClick, onHireClick, className, }: SidebarProfileCardProps): react_jsx_runtime.JSX.Element;
2115
+
2116
+ interface Stat {
2117
+ value: string;
2118
+ label: string;
2119
+ }
2120
+ interface StatsCardProps {
2121
+ stats: Stat[];
2122
+ className?: string;
2123
+ }
2124
+ declare function StatsCard({ stats, className }: StatsCardProps): react_jsx_runtime.JSX.Element;
2125
+ interface PortfolioImage {
2126
+ src: string;
2127
+ alt?: string;
2128
+ }
2129
+ interface PortfolioCardProps {
2130
+ title?: string;
2131
+ viewAllHref?: string;
2132
+ images: PortfolioImage[];
2133
+ className?: string;
2134
+ }
2135
+ declare function PortfolioCard({ title, viewAllHref, images, className, }: PortfolioCardProps): react_jsx_runtime.JSX.Element;
2136
+ interface DescriptionCardProps {
2137
+ title?: string;
2138
+ content: string;
2139
+ className?: string;
2140
+ }
2141
+ declare function DescriptionCard({ title, content, className, }: DescriptionCardProps): react_jsx_runtime.JSX.Element;
2142
+ interface Skill {
2143
+ label: string;
2144
+ }
2145
+ interface SkillsCardProps {
2146
+ title?: string;
2147
+ skills: Skill[];
2148
+ className?: string;
2149
+ }
2150
+ declare function SkillsCard({ title, skills, className, }: SkillsCardProps): react_jsx_runtime.JSX.Element;
2151
+ interface Badge {
2152
+ icon: "zap" | "star" | "check";
2153
+ title: string;
2154
+ description: string;
2155
+ iconColor?: string;
2156
+ }
2157
+ interface BadgesCardProps {
2158
+ badges: Badge[];
2159
+ className?: string;
2160
+ }
2161
+ declare function BadgesCard({ badges, className }: BadgesCardProps): react_jsx_runtime.JSX.Element;
2162
+
2163
+ interface ProfileImageUploaderProps {
2164
+ /** Current image URL */
2165
+ imageUrl?: string;
2166
+ /** Callback when image is selected */
2167
+ onImageChange?: (file: File) => void;
2168
+ /** Size of the uploader */
2169
+ size?: number;
2170
+ /** Class name for customization */
2171
+ className?: string;
2172
+ }
2173
+ /**
2174
+ * Profile Image Uploader
2175
+ *
2176
+ * A circular avatar with upload functionality.
2177
+ * Shows a placeholder user icon when no image is set.
2178
+ * Hover state shows camera overlay for upload interaction.
2179
+ */
2180
+ declare function ProfileImageUploader({ imageUrl, onImageChange, size, className, }: ProfileImageUploaderProps): react_jsx_runtime.JSX.Element;
2181
+
2182
+ interface Participant {
2183
+ id: string;
2184
+ name: string;
2185
+ role: string;
2186
+ avatarUrl?: string;
2187
+ }
2188
+ interface ParticipantListProps {
2189
+ /** Array of participants */
2190
+ participants: Participant[];
2191
+ /** Additional class names */
2192
+ className?: string;
2193
+ }
2194
+ /**
2195
+ * Canvas Design System - Participant List Component
2196
+ *
2197
+ * Displays a list of video chat participants with avatars.
2198
+ *
2199
+ * @example
2200
+ * ```tsx
2201
+ * <ParticipantList
2202
+ * participants={[
2203
+ * { id: "1", name: "John Doe", role: "Developer", avatarUrl: "/avatar.jpg" },
2204
+ * ]}
2205
+ * />
2206
+ * ```
2207
+ */
2208
+ declare function ParticipantList({ participants, className, }: ParticipantListProps): react_jsx_runtime.JSX.Element;
2209
+
2210
+ interface Tag {
2211
+ id: string;
2212
+ label: string;
2213
+ }
2214
+ interface ListItem$1 {
2215
+ id: string;
2216
+ title: string;
2217
+ author: string;
2218
+ date: string;
2219
+ description: string;
2220
+ imageUrl: string;
2221
+ tags?: Tag[];
2222
+ }
2223
+ interface SortOption$6 {
2224
+ id: string;
2225
+ label: string;
2226
+ }
2227
+ interface FilterOption$6 {
2228
+ id: string;
2229
+ label: string;
2230
+ }
2231
+ interface StandardListWithImageProps {
2232
+ /** Block title */
2233
+ title?: string;
2234
+ /** Block subtitle/description */
2235
+ subtitle?: string;
2236
+ /** List items to display */
2237
+ items?: ListItem$1[];
2238
+ /** Sort options for the sort dropdown */
2239
+ sortOptions?: SortOption$6[];
2240
+ /** Filter options for the filter dropdown */
2241
+ filterOptions?: FilterOption$6[];
2242
+ /** Callback when sort value changes */
2243
+ onSort?: (value: string) => void;
2244
+ /** Callback when filter value changes */
2245
+ onFilter?: (value: string) => void;
2246
+ /** Callback when an item is clicked */
2247
+ onItemClick?: (item: ListItem$1) => void;
2248
+ /** Additional class names */
2249
+ className?: string;
2250
+ }
2251
+ /**
2252
+ * Canvas Design System - Standard List with Image Block
2253
+ *
2254
+ * A configurable list block with image thumbnails, commonly used for
2255
+ * blog posts, articles, or any content with featured images.
2256
+ * Includes header section with title, subtitle, and sort/filter controls.
2257
+ *
2258
+ * @example
2259
+ * ```tsx
2260
+ * <StandardListWithImage
2261
+ * title="Blog"
2262
+ * subtitle="Read our latest articles"
2263
+ * items={blogPosts}
2264
+ * onItemClick={(item) => console.log("Clicked:", item.title)}
2265
+ * />
2266
+ * ```
2267
+ */
2268
+ declare function StandardListWithImage({ title, subtitle, items, sortOptions, filterOptions, onSort, onFilter, onItemClick, className, }: StandardListWithImageProps): react_jsx_runtime.JSX.Element;
2269
+
2270
+ interface IconLabelConfig {
2271
+ id: string;
2272
+ icon: "heart" | "users" | "zap" | "map-pin" | "briefcase";
2273
+ label: string;
2274
+ }
2275
+ interface ListItem {
2276
+ id: string;
2277
+ imageUrl: string;
2278
+ title: string;
2279
+ price: string;
2280
+ priceUnit?: string;
2281
+ rating: number;
2282
+ reviewCount: number;
2283
+ location: string;
2284
+ description: string;
2285
+ labels: IconLabelConfig[];
2286
+ tag?: string;
2287
+ isFavorite?: boolean;
2288
+ }
2289
+ interface SortOption$5 {
2290
+ id: string;
2291
+ label: string;
2292
+ }
2293
+ interface FilterOption$5 {
2294
+ id: string;
2295
+ label: string;
2296
+ }
2297
+ interface LargeImageLabelsListProps {
2298
+ /** Section title */
2299
+ title?: string;
2300
+ /** Number of results (defaults to items.length) */
2301
+ resultCount?: number;
2302
+ /** Custom result count text (overrides default "{count} results") */
2303
+ resultCountText?: string;
2304
+ /** List items to display */
2305
+ items?: ListItem[];
2306
+ /** Sort options for the sort dropdown */
2307
+ sortOptions?: SortOption$5[];
2308
+ /** Filter options for the filter dropdown */
2309
+ filterOptions?: FilterOption$5[];
2310
+ /** Callback when sort value changes */
2311
+ onSort?: (value: string) => void;
2312
+ /** Callback when filter value changes */
2313
+ onFilter?: (value: string) => void;
2314
+ /** Callback when favorite button is clicked */
2315
+ onFavorite?: (item: ListItem) => void;
2316
+ /** Callback when item is clicked */
2317
+ onItemClick?: (item: ListItem) => void;
2318
+ /** Additional class names */
2319
+ className?: string;
2320
+ }
2321
+ /**
2322
+ * Canvas Design System - Large Image Labels List Block
2323
+ *
2324
+ * A property-style listing component with large images, ratings, prices,
2325
+ * and icon labels. Includes a header section with title, result count,
2326
+ * and sort/filter controls.
2327
+ *
2328
+ * @example
2329
+ * ```tsx
2330
+ * <LargeImageLabelsList
2331
+ * title="Properties"
2332
+ * items={[
2333
+ * {
2334
+ * id: "1",
2335
+ * imageUrl: "https://example.com/image.jpg",
2336
+ * title: "Beach Apartment",
2337
+ * price: "$140",
2338
+ * priceUnit: "/night",
2339
+ * rating: 5,
2340
+ * reviewCount: 210,
2341
+ * location: "Honolulu, HI",
2342
+ * description: "Beautiful beachfront property...",
2343
+ * labels: [{ id: "1", icon: "heart", label: "Popular" }],
2344
+ * tag: "Popular",
2345
+ * }
2346
+ * ]}
2347
+ * onFavorite={(item) => console.log("Favorited:", item.title)}
2348
+ * />
2349
+ * ```
2350
+ */
2351
+ declare function LargeImageLabelsList({ title, resultCount, resultCountText, items, sortOptions, filterOptions, onSort, onFilter, onFavorite, onItemClick, className, }: LargeImageLabelsListProps): react_jsx_runtime.JSX.Element;
2352
+
2353
+ interface ProgressListItem {
2354
+ id: string;
2355
+ title: string;
2356
+ description: string;
2357
+ /** Progress percentage (0-100) */
2358
+ progress: number;
2359
+ }
2360
+ interface SortOption$4 {
2361
+ id: string;
2362
+ label: string;
2363
+ }
2364
+ interface FilterOption$4 {
2365
+ id: string;
2366
+ label: string;
2367
+ }
2368
+ interface CircularProgressBarProps {
2369
+ /** Progress percentage (0-100) */
2370
+ progress: number;
2371
+ /** Size of the progress bar in pixels */
2372
+ size?: number;
2373
+ /** Stroke width of the progress arc */
2374
+ strokeWidth?: number;
2375
+ /** Additional class names */
2376
+ className?: string;
2377
+ }
2378
+ interface CircularProgressBarListProps {
2379
+ /** List title */
2380
+ title?: string;
2381
+ /** Number of results to display */
2382
+ resultCount?: number;
2383
+ /** Custom result count text (overrides default "{count} results") */
2384
+ resultCountText?: string;
2385
+ /** List items data */
2386
+ items?: ProgressListItem[];
2387
+ /** Sort options for the sort dropdown */
2388
+ sortOptions?: SortOption$4[];
2389
+ /** Filter options for the filter dropdown */
2390
+ filterOptions?: FilterOption$4[];
2391
+ /** Callback when sort value changes */
2392
+ onSort?: (value: string) => void;
2393
+ /** Callback when filter value changes */
2394
+ onFilter?: (value: string) => void;
2395
+ /** Callback when item action is clicked */
2396
+ onItemAction?: (action: string, item: ProgressListItem) => void;
2397
+ /** Additional class names */
2398
+ className?: string;
2399
+ }
2400
+ /**
2401
+ * Canvas Design System - Circular Progress Bar
2402
+ *
2403
+ * An SVG-based circular progress indicator that displays a percentage.
2404
+ * Uses CSS variables for theming support.
2405
+ */
2406
+ declare function CircularProgressBar({ progress, size, strokeWidth, className, }: CircularProgressBarProps): react_jsx_runtime.JSX.Element;
2407
+ /**
2408
+ * Canvas Design System - Circular Progress Bar List Block
2409
+ *
2410
+ * A list block displaying items with circular progress indicators.
2411
+ * Features a header section with title, result count, and sort/filter controls.
2412
+ * Each item shows a progress bar, title, description, and action menu.
2413
+ *
2414
+ * @example
2415
+ * ```tsx
2416
+ * <CircularProgressBarList
2417
+ * title="Courses"
2418
+ * items={[
2419
+ * { id: "1", title: "Design 101", description: "Learn design basics", progress: 50 }
2420
+ * ]}
2421
+ * />
2422
+ * ```
2423
+ */
2424
+ declare function CircularProgressBarList({ title, resultCount, resultCountText, items, sortOptions, filterOptions, onSort, onFilter, onItemAction, className, }: CircularProgressBarListProps): react_jsx_runtime.JSX.Element;
2425
+
2426
+ interface ActivityAuthor {
2427
+ id: string;
2428
+ name: string;
2429
+ avatarUrl?: string;
2430
+ }
2431
+ interface ActivityAttachment {
2432
+ id: string;
2433
+ name: string;
2434
+ size: string;
2435
+ type?: "document" | "image" | "other";
2436
+ }
2437
+ interface BaseActivityItem {
2438
+ id: string;
2439
+ author: ActivityAuthor;
2440
+ timestamp: string;
2441
+ }
2442
+ interface StatusChangeActivity extends BaseActivityItem {
2443
+ type: "status_change";
2444
+ action: "completed" | "updated" | "started" | "archived";
2445
+ projectName: string;
2446
+ }
2447
+ interface CommentActivity extends BaseActivityItem {
2448
+ type: "comment";
2449
+ projectName: string;
2450
+ content: string;
2451
+ likes: number;
2452
+ replies: number;
2453
+ isLiked?: boolean;
2454
+ }
2455
+ interface AttachmentActivity extends BaseActivityItem {
2456
+ type: "attachment";
2457
+ action: "completed" | "uploaded" | "shared";
2458
+ projectName: string;
2459
+ attachment: ActivityAttachment;
2460
+ }
2461
+ type ActivityItem = StatusChangeActivity | CommentActivity | AttachmentActivity;
2462
+ interface ActivityFeedProps {
2463
+ /** Section title */
2464
+ title?: string;
2465
+ /** Section subtitle */
2466
+ subtitle?: string;
2467
+ /** Activity items to display */
2468
+ items?: ActivityItem[];
2469
+ /** Callback when like button is clicked */
2470
+ onLike?: (itemId: string) => void;
2471
+ /** Callback when reply button is clicked */
2472
+ onReply?: (itemId: string) => void;
2473
+ /** Callback when attachment is clicked */
2474
+ onAttachmentClick?: (itemId: string, attachmentId: string) => void;
2475
+ /** Additional class names */
2476
+ className?: string;
2477
+ }
2478
+ /**
2479
+ * Canvas Design System - Activity Feed Block
2480
+ *
2481
+ * A timeline-style activity feed showing user actions, comments, and file
2482
+ * attachments with connecting lines. Useful for project updates, notifications,
2483
+ * and collaboration views.
2484
+ *
2485
+ * @example
2486
+ * ```tsx
2487
+ * <ActivityFeed
2488
+ * title="Project status"
2489
+ * subtitle="Last updated today"
2490
+ * items={activityItems}
2491
+ * onLike={(id) => console.log("Liked", id)}
2492
+ * />
2493
+ * ```
2494
+ */
2495
+ declare function ActivityFeed({ title, subtitle, items, onLike, onReply, onAttachmentClick, className, }: ActivityFeedProps): react_jsx_runtime.JSX.Element;
2496
+
2497
+ interface PostAuthor$1 {
2498
+ id: string;
2499
+ name: string;
2500
+ avatarUrl?: string;
2501
+ }
2502
+ interface LinkPreview {
2503
+ url: string;
2504
+ domain: string;
2505
+ title: string;
2506
+ description?: string;
2507
+ imageUrl?: string;
2508
+ }
2509
+ interface VideoMedia {
2510
+ thumbnailUrl: string;
2511
+ videoUrl?: string;
2512
+ }
2513
+ interface RepostContent {
2514
+ author: PostAuthor$1;
2515
+ date: string;
2516
+ content: string;
2517
+ images?: string[];
2518
+ }
2519
+ interface SocialFeedPost {
2520
+ id: string;
2521
+ author: PostAuthor$1;
2522
+ date: string;
2523
+ content: string;
2524
+ /** Image URLs for the post */
2525
+ images?: string[];
2526
+ /** Video media */
2527
+ video?: VideoMedia;
2528
+ /** Link preview card */
2529
+ linkPreview?: LinkPreview;
2530
+ /** Reposted/quoted content */
2531
+ repost?: RepostContent;
2532
+ likesCount: number;
2533
+ repliesCount: number;
2534
+ isLiked?: boolean;
2535
+ /** Nested replies */
2536
+ replies?: SocialFeedPost[];
2537
+ /** Whether this is a reply (for indentation) */
2538
+ isReply?: boolean;
2539
+ }
2540
+ interface SocialFeedProps {
2541
+ /** Section title */
2542
+ title?: string;
2543
+ /** Posts data */
2544
+ posts?: SocialFeedPost[];
2545
+ /** Current user for composer */
2546
+ currentUser?: PostAuthor$1;
2547
+ /** Placeholder text for composer */
2548
+ composerPlaceholder?: string;
2549
+ /** Image preview in composer */
2550
+ composerImagePreview?: string;
2551
+ /** Callback when post is submitted */
2552
+ onPost?: (content: string) => void;
2553
+ /** Callback when like is clicked */
2554
+ onLike?: (postId: string) => void;
2555
+ /** Callback when comment is clicked */
2556
+ onComment?: (postId: string) => void;
2557
+ /** Callback when repost is clicked */
2558
+ onRepost?: (postId: string) => void;
2559
+ /** Callback when share is clicked */
2560
+ onShare?: (postId: string) => void;
2561
+ /** Callback when menu is clicked */
2562
+ onMenuClick?: (postId: string) => void;
2563
+ /** Additional class names */
2564
+ className?: string;
2565
+ }
2566
+ /**
2567
+ * Canvas Design System - Social Feed Block
2568
+ *
2569
+ * A social media-style feed component with post composer, posts with various
2570
+ * content types (text, images, video, reposts, link cards), social interactions,
2571
+ * and threaded replies.
2572
+ *
2573
+ * @example
2574
+ * ```tsx
2575
+ * <SocialFeed
2576
+ * title="Social Feed"
2577
+ * posts={[...]}
2578
+ * onLike={(postId) => console.log("Liked", postId)}
2579
+ * onPost={(content) => console.log("Posted", content)}
2580
+ * />
2581
+ * ```
2582
+ */
2583
+ declare function SocialFeed({ title, posts, currentUser, composerPlaceholder, composerImagePreview, onPost, onLike, onComment, onRepost, onShare, onMenuClick, className, }: SocialFeedProps): react_jsx_runtime.JSX.Element;
2584
+
2585
+ interface PostAuthor {
2586
+ id: string;
2587
+ name: string;
2588
+ username?: string;
2589
+ avatarUrl?: string;
2590
+ }
2591
+ interface ImagePost {
2592
+ id: string;
2593
+ author: PostAuthor;
2594
+ date: string;
2595
+ imageUrl: string;
2596
+ caption?: string;
2597
+ likesCount: number;
2598
+ likedByText?: string;
2599
+ commentsCount: number;
2600
+ isLiked?: boolean;
2601
+ isBookmarked?: boolean;
2602
+ comments?: Comment[];
2603
+ }
2604
+ interface ImageFeedWithNestedCommentsProps {
2605
+ /** Section title */
2606
+ title?: string;
2607
+ /** Section subtitle */
2608
+ subtitle?: string;
2609
+ /** Posts data */
2610
+ posts?: ImagePost[];
2611
+ /** Current user for comment avatars */
2612
+ currentUser?: CommentAuthor;
2613
+ /** Callback when post like is clicked */
2614
+ onLike?: (postId: string) => void;
2615
+ /** Callback when new comment is submitted */
2616
+ onComment?: (postId: string, content: string) => void;
2617
+ /** Callback when share is clicked */
2618
+ onShare?: (postId: string) => void;
2619
+ /** Callback when bookmark is clicked */
2620
+ onBookmark?: (postId: string) => void;
2621
+ /** Callback when reply is submitted */
2622
+ onReply?: (postId: string, commentId: string, content: string) => void;
2623
+ /** Callback when comment like is clicked */
2624
+ onCommentLike?: (postId: string, commentId: string) => void;
2625
+ /** Additional class names */
2626
+ className?: string;
2627
+ }
2628
+ /**
2629
+ * Canvas Design System - Image Feed with Nested Comments Block
2630
+ *
2631
+ * An Instagram-style image feed component with large images, social interactions
2632
+ * (like/comment/share/bookmark), and nested comment threads. Uses NestedCommentsTable
2633
+ * internally for the comments section.
2634
+ *
2635
+ * @example
2636
+ * ```tsx
2637
+ * <ImageFeedWithNestedComments
2638
+ * title="My posts"
2639
+ * subtitle="In the past year"
2640
+ * posts={[...]}
2641
+ * onLike={(postId) => console.log("Liked", postId)}
2642
+ * />
2643
+ * ```
2644
+ */
2645
+ declare function ImageFeedWithNestedComments({ title, subtitle, posts, currentUser, onLike, onComment, onShare, onBookmark, onReply, onCommentLike, className, }: ImageFeedWithNestedCommentsProps): react_jsx_runtime.JSX.Element;
2646
+
2647
+ interface ProgressBarProps {
2648
+ /** Progress value (0-100) */
2649
+ progress?: number;
2650
+ /** Total number of steps */
2651
+ totalSteps?: number;
2652
+ /** Current step (0-indexed) - alternative to progress */
2653
+ currentStep?: number;
2654
+ /** Additional class name */
2655
+ className?: string;
2656
+ }
2657
+ /**
2658
+ * Canvas Design System - Progress Bar
2659
+ *
2660
+ * A horizontal progress indicator with:
2661
+ * - 8px height
2662
+ * - Pill-shaped (fully rounded)
2663
+ * - Background: --canvas-border
2664
+ * - Fill: --canvas-primary
2665
+ *
2666
+ * Can be controlled via either:
2667
+ * - `progress` prop (0-100 percentage)
2668
+ * - `currentStep` and `totalSteps` props (calculates percentage automatically)
2669
+ *
2670
+ * @example
2671
+ * ```tsx
2672
+ * // Using percentage
2673
+ * <ProgressBar progress={33} />
2674
+ *
2675
+ * // Using steps
2676
+ * <ProgressBar currentStep={1} totalSteps={3} />
2677
+ * ```
2678
+ */
2679
+ declare function ProgressBar({ progress, totalSteps, currentStep, className, }: ProgressBarProps): react_jsx_runtime.JSX.Element;
2680
+
2681
+ interface VerticalStepTrackerProps {
2682
+ /** Array of step objects with id, label, and optional description */
2683
+ steps: Step[];
2684
+ /** Current active step (0-indexed) */
2685
+ currentStep: number;
2686
+ /** Optional callback when a step is clicked */
2687
+ onStepClick?: (stepIndex: number) => void;
2688
+ /** Optional section title (e.g., "REGISTRATION") */
2689
+ title?: string;
2690
+ /** Additional class name */
2691
+ className?: string;
2692
+ }
2693
+ /**
2694
+ * Canvas Design System - Vertical Step Tracker
2695
+ *
2696
+ * A vertical step progress indicator with:
2697
+ * - 24px circles with 8px white inner dot
2698
+ * - Vertical connecting lines between steps
2699
+ * - Active step: primary background + white dot + primary text
2700
+ * - Inactive steps: border background + white dot + placeholder text
2701
+ * - Optional section title (uppercase)
2702
+ *
2703
+ * @example
2704
+ * ```tsx
2705
+ * <VerticalStepTracker
2706
+ * steps={[
2707
+ * { id: "step1", label: "Step 1" },
2708
+ * { id: "step2", label: "Step 2" },
2709
+ * ]}
2710
+ * currentStep={0}
2711
+ * title="REGISTRATION"
2712
+ * />
2713
+ * ```
2714
+ */
2715
+ declare function VerticalStepTracker({ steps, currentStep, onStepClick, title, className, }: VerticalStepTrackerProps): react_jsx_runtime.JSX.Element;
2716
+ /** Default steps for vertical tracker demo */
2717
+ declare const defaultVerticalSteps: Step[];
2718
+
2719
+ interface VideoChatControlsProps {
2720
+ /** Whether the video is currently on */
2721
+ isVideoOn?: boolean;
2722
+ /** Whether the mic is currently on */
2723
+ isMicOn?: boolean;
2724
+ /** Callback when video toggle is clicked */
2725
+ onToggleVideo?: () => void;
2726
+ /** Callback when mic toggle is clicked */
2727
+ onToggleMic?: () => void;
2728
+ /** Callback when cast button is clicked */
2729
+ onCast?: () => void;
2730
+ /** Callback when leave button is clicked */
2731
+ onLeave?: () => void;
2732
+ /** Additional class names */
2733
+ className?: string;
2734
+ }
2735
+ /**
2736
+ * Canvas Design System - Video Chat Controls Component
2737
+ *
2738
+ * Row of circular control buttons for video chat: Camera, Mic, Cast, Leave.
2739
+ *
2740
+ * @example
2741
+ * ```tsx
2742
+ * <VideoChatControls
2743
+ * isVideoOn={true}
2744
+ * isMicOn={true}
2745
+ * onToggleVideo={() => setVideoOn(!videoOn)}
2746
+ * onToggleMic={() => setMicOn(!micOn)}
2747
+ * onLeave={() => router.push('/')}
2748
+ * />
2749
+ * ```
2750
+ */
2751
+ declare function VideoChatControls({ isVideoOn, isMicOn, onToggleVideo, onToggleMic, onCast, onLeave, className, }: VideoChatControlsProps): react_jsx_runtime.JSX.Element;
2752
+
2753
+ interface VideoContentSectionProps {
2754
+ /** Section title */
2755
+ title: string;
2756
+ /** Content (can be text or React nodes) */
2757
+ children: ReactNode;
2758
+ /** Additional class names */
2759
+ className?: string;
2760
+ }
2761
+ /**
2762
+ * Canvas Design System - Video Content Section Component
2763
+ *
2764
+ * A reusable section with a title and flexible content area.
2765
+ * Used for Overview, Notes, and similar text sections.
2766
+ *
2767
+ * @example
2768
+ * ```tsx
2769
+ * <VideoContentSection title="Overview">
2770
+ * <p>Lorem ipsum...</p>
2771
+ * </VideoContentSection>
2772
+ * ```
2773
+ */
2774
+ declare function VideoContentSection({ title, children, className, }: VideoContentSectionProps): react_jsx_runtime.JSX.Element;
2775
+
2776
+ interface VideoPlaylistItemData {
2777
+ id: string;
2778
+ title: string;
2779
+ duration: string;
2780
+ thumbnail?: string;
2781
+ }
2782
+ interface VideoPlaylistItemProps {
2783
+ /** Item index (1-based for display) */
2784
+ index: number;
2785
+ /** Item data */
2786
+ item: VideoPlaylistItemData;
2787
+ /** Whether this item is currently active/playing */
2788
+ isActive?: boolean;
2789
+ /** Click handler */
2790
+ onClick?: () => void;
2791
+ }
2792
+ /**
2793
+ * Individual lesson row in the playlist
2794
+ */
2795
+ declare function VideoPlaylistItem({ index, item, isActive, onClick, }: VideoPlaylistItemProps): react_jsx_runtime.JSX.Element;
2796
+ interface VideoPlaylistCardProps {
2797
+ /** Card title */
2798
+ title?: string;
2799
+ /** Playlist items */
2800
+ items: VideoPlaylistItemData[];
2801
+ /** Currently active item ID */
2802
+ activeId?: string;
2803
+ /** Callback when an item is clicked */
2804
+ onItemClick?: (id: string) => void;
2805
+ /** Whether the playlist starts collapsed (mobile only) */
2806
+ defaultCollapsed?: boolean;
2807
+ /** Additional class names */
2808
+ className?: string;
2809
+ }
2810
+ /**
2811
+ * Canvas Design System - Video Playlist Card Component
2812
+ *
2813
+ * A card container showing lesson list with collapsible behavior.
2814
+ * Features shadow, border, and hover states.
2815
+ *
2816
+ * @example
2817
+ * ```tsx
2818
+ * <VideoPlaylistCard
2819
+ * title="Lessons in this course"
2820
+ * items={lessons}
2821
+ * activeId="lesson-2"
2822
+ * onItemClick={(id) => setActiveLesson(id)}
2823
+ * />
2824
+ * ```
2825
+ */
2826
+ declare function VideoPlaylistCard({ title, items, activeId, onItemClick, defaultCollapsed, className, }: VideoPlaylistCardProps): react_jsx_runtime.JSX.Element;
2827
+
2828
+ interface WebcamPreviewProps {
2829
+ /** Additional class names */
2830
+ className?: string;
2831
+ /** Whether the video should be muted (default true for self-view) */
2832
+ muted?: boolean;
2833
+ /** Whether the video should be mirrored (default true for self-view) */
2834
+ mirrored?: boolean;
2835
+ /** Fallback content when camera is not available */
2836
+ fallbackText?: string;
2837
+ }
2838
+ /**
2839
+ * Canvas Design System - Webcam Preview Component
2840
+ *
2841
+ * Displays live webcam feed using the browser's MediaDevices API.
2842
+ * Handles permission denied and unavailable camera gracefully.
2843
+ *
2844
+ * @example
2845
+ * ```tsx
2846
+ * <WebcamPreview className="w-full h-full rounded-[20px]" />
2847
+ * ```
2848
+ */
2849
+ declare function WebcamPreview({ className, muted, mirrored, fallbackText, }: WebcamPreviewProps): react_jsx_runtime.JSX.Element;
2850
+
2851
+ interface YouTubePlayerProps {
2852
+ /** YouTube video ID (e.g., "dQw4w9WgXcQ") */
2853
+ videoId: string;
2854
+ /** Additional class names */
2855
+ className?: string;
2856
+ }
2857
+ /**
2858
+ * Canvas Design System - YouTube Player Component
2859
+ *
2860
+ * A responsive YouTube video embed with 16:9 aspect ratio.
2861
+ * Rounded corners are larger on desktop (20px) and smaller on mobile (8px).
2862
+ *
2863
+ * @example
2864
+ * ```tsx
2865
+ * <YouTubePlayer videoId="dQw4w9WgXcQ" />
2866
+ * ```
2867
+ */
2868
+ declare function YouTubePlayer({ videoId, className, }: YouTubePlayerProps): react_jsx_runtime.JSX.Element;
2869
+
2870
+ interface SettingsListRowProps {
2871
+ /** Label for the setting */
2872
+ label: string;
2873
+ /** Value or description text */
2874
+ value?: string;
2875
+ /** Type of action on the right side */
2876
+ actionType?: "edit" | "toggle" | "more" | "none";
2877
+ /** For toggle: whether it's checked */
2878
+ checked?: boolean;
2879
+ /** For toggle: callback when changed */
2880
+ onCheckedChange?: (checked: boolean) => void;
2881
+ /** For edit/more: callback when clicked */
2882
+ onActionClick?: () => void;
2883
+ /** Whether this is the first row (has top border) */
2884
+ isFirst?: boolean;
2885
+ /** Whether this is the last row (no bottom border) */
2886
+ isLast?: boolean;
2887
+ /** Additional class name */
2888
+ className?: string;
2889
+ }
2890
+ /**
2891
+ * Settings List Row
2892
+ *
2893
+ * A reusable row for settings lists with:
2894
+ * - Label on the left
2895
+ * - Value/description in the middle
2896
+ * - Action on the right (edit icon, toggle, or more menu)
2897
+ */
2898
+ declare function SettingsListRow({ label, value, actionType, checked, onCheckedChange, onActionClick, isFirst, isLast, className, }: SettingsListRowProps): react_jsx_runtime.JSX.Element;
2899
+
2900
+ interface CreditCardDisplayProps {
2901
+ /** Card type (visa, mastercard, amex, etc.) */
2902
+ cardType?: "visa" | "mastercard" | "amex" | "discover";
2903
+ /** Last 4 digits of card number */
2904
+ lastFourDigits?: string;
2905
+ /** Cardholder name */
2906
+ cardholderName?: string;
2907
+ /** Expiry date (MM/YY format) */
2908
+ expiryDate?: string;
2909
+ /** Additional class name */
2910
+ className?: string;
2911
+ }
2912
+ /**
2913
+ * Credit Card Display
2914
+ *
2915
+ * A visual credit card representation for payment settings.
2916
+ * Shows card type, masked number, cardholder name, and expiry.
2917
+ * Uses the flair background color with a subtle lighting gradient.
2918
+ */
2919
+ declare function CreditCardDisplay({ cardType, lastFourDigits, cardholderName, expiryDate, className, }: CreditCardDisplayProps): react_jsx_runtime.JSX.Element;
2920
+
2921
+ interface CanvasItemData {
2922
+ id: string;
2923
+ componentType: string;
2924
+ x: number;
2925
+ y: number;
2926
+ width?: number;
2927
+ height?: number;
2928
+ }
2929
+ interface CanvasItemProps {
2930
+ item: CanvasItemData;
2931
+ isSelected: boolean;
2932
+ onSelect: (id: string) => void;
2933
+ onDelete: (id: string) => void;
2934
+ onDragStart: (id: string, startX: number, startY: number, itemX: number, itemY: number) => void;
2935
+ scale: number;
2936
+ children: React.ReactNode;
2937
+ }
2938
+ /**
2939
+ * Canvas Item - Wrapper for components placed on the infinity canvas
2940
+ *
2941
+ * Handles:
2942
+ * - Absolute positioning based on x, y coordinates
2943
+ * - Selection state with visual border
2944
+ * - Drag handle for repositioning
2945
+ * - Delete button when selected
2946
+ */
2947
+ declare function CanvasItem({ item, isSelected, onSelect, onDelete, onDragStart, scale, children, }: CanvasItemProps): react_jsx_runtime.JSX.Element;
2948
+
2949
+ interface ComponentPaletteProps {
2950
+ className?: string;
2951
+ }
2952
+ /**
2953
+ * Component Palette - Sidebar with draggable components
2954
+ *
2955
+ * Features:
2956
+ * - Organized by category (Page Templates, Blocks, Components)
2957
+ * - Collapsible sections
2958
+ * - Drag to add to canvas
2959
+ */
2960
+ declare function ComponentPalette({ className }: ComponentPaletteProps): react_jsx_runtime.JSX.Element;
2961
+
2962
+ interface ComponentOption {
2963
+ id: string;
2964
+ name: string;
2965
+ category: string;
2966
+ path: string;
2967
+ description: string;
2968
+ }
2969
+ interface ComponentSearchProps {
2970
+ selectedComponents: ComponentOption[];
2971
+ onSelectionChange: (components: ComponentOption[]) => void;
2972
+ className?: string;
2973
+ }
2974
+ declare function ComponentSearch({ selectedComponents, onSelectionChange, className, }: ComponentSearchProps): react_jsx_runtime.JSX.Element;
2975
+
2976
+ interface CustomComponentHelperProps {
2977
+ className?: string;
2978
+ }
2979
+ declare function CustomComponentHelper({ className }: CustomComponentHelperProps): react_jsx_runtime.JSX.Element;
2980
+
2981
+ interface SlideshowTileItem {
2982
+ id: string;
2983
+ /** Array of image URLs for the slideshow */
2984
+ images: string[];
2985
+ /** User/creator info */
2986
+ user: {
2987
+ name: string;
2988
+ avatarUrl?: string;
2989
+ location: string;
2990
+ };
2991
+ /** Like/upvote count */
2992
+ likes: number | string;
2993
+ /** View count */
2994
+ views: number | string;
2995
+ }
2996
+ interface SortOption$3 {
2997
+ id: string;
2998
+ label: string;
2999
+ }
3000
+ interface FilterOption$3 {
3001
+ id: string;
3002
+ label: string;
3003
+ }
3004
+ interface SlideshowGridTilesProps {
3005
+ /** Block title */
3006
+ title?: string;
3007
+ /** Subtitle text (e.g., "Showing 20 designs") */
3008
+ subtitle?: string;
3009
+ /** Array of tile items */
3010
+ items?: SlideshowTileItem[];
3011
+ /** Sort options for the sort dropdown */
3012
+ sortOptions?: SortOption$3[];
3013
+ /** Filter options for the filter dropdown */
3014
+ filterOptions?: FilterOption$3[];
3015
+ /** Primary action button text */
3016
+ actionButtonText?: string;
3017
+ /** Callback when action button is clicked */
3018
+ onAddNew?: () => void;
3019
+ /** Callback when sort value changes */
3020
+ onSort?: (value: string) => void;
3021
+ /** Callback when filter value changes */
3022
+ onFilter?: (value: string) => void;
3023
+ /** Callback when save button is clicked on a tile */
3024
+ onSave?: (item: SlideshowTileItem) => void;
3025
+ /** Callback when a tile is clicked */
3026
+ onItemClick?: (item: SlideshowTileItem) => void;
3027
+ /** Additional class names */
3028
+ className?: string;
3029
+ }
3030
+ /**
3031
+ * Canvas Design System - Slideshow Grid Tiles Block
3032
+ *
3033
+ * A 2-column grid of portfolio/slideshow tiles with hover states
3034
+ * showing navigation arrows and save button. Each tile displays
3035
+ * a large image, user info, and engagement stats.
3036
+ *
3037
+ * @example
3038
+ * ```tsx
3039
+ * <SlideshowGridTiles
3040
+ * title="Portfolios"
3041
+ * subtitle="Showing 20 designs"
3042
+ * onSave={(item) => console.log("Saved", item)}
3043
+ * />
3044
+ * ```
3045
+ */
3046
+ declare function SlideshowGridTiles({ title, subtitle, items, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onSave, onItemClick, className, }: SlideshowGridTilesProps): react_jsx_runtime.JSX.Element;
3047
+
3048
+ interface GridTileItem {
3049
+ id: string;
3050
+ /** Image URL for the tile */
3051
+ imageUrl: string;
3052
+ /** Tile title */
3053
+ title: string;
3054
+ /** Rating from 1-5 */
3055
+ rating: number;
3056
+ /** Location text */
3057
+ location: string;
3058
+ /** Price (e.g., "$205") */
3059
+ price: string;
3060
+ /** Price unit (e.g., "night") */
3061
+ priceUnit?: string;
3062
+ /** Optional tag badge (e.g., "Popular") */
3063
+ tag?: string;
3064
+ /** Whether item is favorited */
3065
+ isFavorite?: boolean;
3066
+ }
3067
+ interface SortOption$2 {
3068
+ id: string;
3069
+ label: string;
3070
+ }
3071
+ interface FilterOption$2 {
3072
+ id: string;
3073
+ label: string;
3074
+ }
3075
+ interface GridTilesListProps {
3076
+ /** Block title */
3077
+ title?: string;
3078
+ /** Subtitle text (e.g., "20 listings") */
3079
+ subtitle?: string;
3080
+ /** Array of tile items */
3081
+ items?: GridTileItem[];
3082
+ /** Number of grid columns (2, 3, 4, or 5) */
3083
+ columns?: 2 | 3 | 4 | 5;
3084
+ /** Sort options for the sort dropdown */
3085
+ sortOptions?: SortOption$2[];
3086
+ /** Filter options for the filter dropdown */
3087
+ filterOptions?: FilterOption$2[];
3088
+ /** Primary action button text */
3089
+ actionButtonText?: string;
3090
+ /** Callback when action button is clicked */
3091
+ onAddNew?: () => void;
3092
+ /** Callback when sort value changes */
3093
+ onSort?: (value: string) => void;
3094
+ /** Callback when filter value changes */
3095
+ onFilter?: (value: string) => void;
3096
+ /** Callback when favorite button is clicked on a tile */
3097
+ onFavorite?: (item: GridTileItem) => void;
3098
+ /** Callback when a tile is clicked */
3099
+ onItemClick?: (item: GridTileItem) => void;
3100
+ /** Additional class names */
3101
+ className?: string;
3102
+ }
3103
+ /**
3104
+ * Canvas Design System - Grid Tiles List Block
3105
+ *
3106
+ * A responsive grid of property/listing tiles with configurable columns,
3107
+ * images, star ratings, prices, and favorite buttons. Includes header
3108
+ * section with title, subtitle, and sort/filter controls.
3109
+ *
3110
+ * @example
3111
+ * ```tsx
3112
+ * <GridTilesList
3113
+ * title="Properties"
3114
+ * columns={4}
3115
+ * onFavorite={(item) => console.log("Favorited:", item.title)}
3116
+ * />
3117
+ * ```
3118
+ */
3119
+ declare function GridTilesList({ title, subtitle, items, columns, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onFavorite, onItemClick, className, }: GridTilesListProps): react_jsx_runtime.JSX.Element;
3120
+
3121
+ interface ProfileTileItem {
3122
+ id: string;
3123
+ name: string;
3124
+ avatarUrl?: string;
3125
+ isOnline?: boolean;
3126
+ subject: string;
3127
+ pricePerHour: number;
3128
+ rating: number;
3129
+ reviewCount: string;
3130
+ certification?: string;
3131
+ location: string;
3132
+ education: string;
3133
+ sessionsCount: string;
3134
+ earnings: string;
3135
+ }
3136
+ interface SortOption$1 {
3137
+ id: string;
3138
+ label: string;
3139
+ }
3140
+ interface FilterOption$1 {
3141
+ id: string;
3142
+ label: string;
3143
+ }
3144
+ interface ProfileGridTilesListProps {
3145
+ /** Block title */
3146
+ title?: string;
3147
+ /** Subtitle text (e.g., "23 english tutors near you") */
3148
+ subtitle?: string;
3149
+ /** Array of profile tile items */
3150
+ items?: ProfileTileItem[];
3151
+ /** Number of columns in the grid (2-5) */
3152
+ columns?: 2 | 3 | 4 | 5;
3153
+ /** Sort options for the sort dropdown */
3154
+ sortOptions?: SortOption$1[];
3155
+ /** Filter options for the filter dropdown */
3156
+ filterOptions?: FilterOption$1[];
3157
+ /** Primary action button text */
3158
+ actionButtonText?: string;
3159
+ /** Callback when action button is clicked */
3160
+ onAddNew?: () => void;
3161
+ /** Callback when sort value changes */
3162
+ onSort?: (value: string) => void;
3163
+ /** Callback when filter value changes */
3164
+ onFilter?: (value: string) => void;
3165
+ /** Callback when a profile is clicked */
3166
+ onItemClick?: (item: ProfileTileItem) => void;
3167
+ /** Additional class names */
3168
+ className?: string;
3169
+ }
3170
+ /**
3171
+ * Canvas Design System - Profile Grid Tiles List Block
3172
+ *
3173
+ * A responsive grid of profile cards with avatar, ratings, certifications,
3174
+ * and metadata. Supports 2-5 column layouts that adapt to screen size.
3175
+ *
3176
+ * @example
3177
+ * ```tsx
3178
+ * <ProfileGridTilesList
3179
+ * title="Tutors near you"
3180
+ * subtitle="23 english tutors near you"
3181
+ * columns={4}
3182
+ * onItemClick={(item) => console.log("Clicked", item)}
3183
+ * />
3184
+ * ```
3185
+ */
3186
+ declare function ProfileGridTilesList({ title, subtitle, items, columns, sortOptions, filterOptions, actionButtonText, onAddNew, onSort, onFilter, onItemClick, className, }: ProfileGridTilesListProps): react_jsx_runtime.JSX.Element;
3187
+
3188
+ interface MetricCardData {
3189
+ id: string;
3190
+ label: string;
3191
+ value: string;
3192
+ change?: {
3193
+ value: string;
3194
+ direction: "up" | "down";
3195
+ };
3196
+ }
3197
+ interface MetricListItem {
3198
+ id: string;
3199
+ date?: string;
3200
+ label: string;
3201
+ value: string;
3202
+ }
3203
+ interface DonutChartLegendItem {
3204
+ id: string;
3205
+ label: string;
3206
+ value: string;
3207
+ color: string;
3208
+ }
3209
+ interface ProgressBarItem {
3210
+ id: string;
3211
+ label: string;
3212
+ sublabel?: string;
3213
+ value?: string;
3214
+ progress: number;
3215
+ imageUrl?: string;
3216
+ color?: string;
3217
+ }
3218
+ interface MetricCardProps {
3219
+ label: string;
3220
+ value: string;
3221
+ change?: {
3222
+ value: string;
3223
+ direction: "up" | "down";
3224
+ };
3225
+ className?: string;
3226
+ }
3227
+ declare function MetricCard({ label, value, change, className }: MetricCardProps): react_jsx_runtime.JSX.Element;
3228
+ interface MetricCardsRowProps {
3229
+ metrics: MetricCardData[];
3230
+ columns?: 2 | 3 | 4;
3231
+ className?: string;
3232
+ }
3233
+ declare function MetricCardsRow({ metrics, columns, className }: MetricCardsRowProps): react_jsx_runtime.JSX.Element;
3234
+ interface LineChartWidgetProps {
3235
+ label: string;
3236
+ value: string;
3237
+ description?: string;
3238
+ chartData?: number[];
3239
+ chartLabels?: string[];
3240
+ className?: string;
3241
+ onMenuClick?: () => void;
3242
+ onManageClick?: () => void;
3243
+ onViewDetailsClick?: () => void;
3244
+ }
3245
+ declare function LineChartWidget({ label, value, description, chartData, chartLabels, className, onMenuClick, onManageClick, onViewDetailsClick, }: LineChartWidgetProps): react_jsx_runtime.JSX.Element;
3246
+ interface DonutChartWidgetProps {
3247
+ label: string;
3248
+ value: string;
3249
+ description?: string;
3250
+ legendItems?: DonutChartLegendItem[];
3251
+ className?: string;
3252
+ onMenuClick?: () => void;
3253
+ onManageClick?: () => void;
3254
+ onViewDetailsClick?: () => void;
3255
+ }
3256
+ declare function DonutChartWidget({ label, value, description, legendItems, className, onMenuClick, onManageClick, onViewDetailsClick, }: DonutChartWidgetProps): react_jsx_runtime.JSX.Element;
3257
+ interface MetricListCardProps {
3258
+ headerLabel: string;
3259
+ title: string;
3260
+ subtitle?: string;
3261
+ items: MetricListItem[];
3262
+ viewDetailsLabel?: string;
3263
+ className?: string;
3264
+ onMenuClick?: () => void;
3265
+ onManageClick?: () => void;
3266
+ onViewDetailsClick?: () => void;
3267
+ }
3268
+ declare function MetricListCard({ headerLabel, title, subtitle, items, viewDetailsLabel, className, onMenuClick, onManageClick, onViewDetailsClick, }: MetricListCardProps): react_jsx_runtime.JSX.Element;
3269
+ interface ProgressMetricCardProps {
3270
+ headerLabel: string;
3271
+ title: string;
3272
+ subtitle?: string;
3273
+ items: ProgressBarItem[];
3274
+ className?: string;
3275
+ onMenuClick?: () => void;
3276
+ onManageClick?: () => void;
3277
+ onViewDetailsClick?: () => void;
3278
+ }
3279
+ declare function ProgressMetricCard({ headerLabel, title, subtitle, items, className, onMenuClick, onManageClick, onViewDetailsClick, }: ProgressMetricCardProps): react_jsx_runtime.JSX.Element;
3280
+ interface TwoColumnWidgetsProps {
3281
+ children: React.ReactNode;
3282
+ className?: string;
3283
+ }
3284
+ declare function TwoColumnWidgets({ children, className }: TwoColumnWidgetsProps): react_jsx_runtime.JSX.Element;
3285
+ interface DashboardHeaderProps {
3286
+ title: string;
3287
+ subtitle?: string;
3288
+ className?: string;
3289
+ }
3290
+ declare function DashboardHeader({ title, subtitle, className }: DashboardHeaderProps): react_jsx_runtime.JSX.Element;
3291
+ interface GraphMetricTilesDemoProps {
3292
+ className?: string;
3293
+ }
3294
+ declare function GraphMetricTilesDemo({ className }: GraphMetricTilesDemoProps): react_jsx_runtime.JSX.Element;
3295
+
3296
+ interface FormFieldConfig {
3297
+ id: string;
3298
+ label: string;
3299
+ type: "text" | "textarea" | "select" | "date" | "multiselect-checkbox" | "checkbox-group" | "radio-group" | "multiselect-tags" | "image-uploader" | "file-uploader" | "slider";
3300
+ placeholder?: string;
3301
+ options?: {
3302
+ id: string;
3303
+ label: string;
3304
+ }[];
3305
+ value?: string | string[] | number[] | UploadedImage[] | UploadedFile[];
3306
+ min?: number;
3307
+ max?: number;
3308
+ step?: number;
3309
+ fullWidth?: boolean;
3310
+ disabled?: boolean;
3311
+ }
3312
+ interface FormRowConfig {
3313
+ id: string;
3314
+ fields: FormFieldConfig[];
3315
+ }
3316
+ interface SortOption {
3317
+ id: string;
3318
+ label: string;
3319
+ }
3320
+ interface FilterOption {
3321
+ id: string;
3322
+ label: string;
3323
+ }
3324
+ interface FormGroupProps {
3325
+ /** Form title */
3326
+ title?: string;
3327
+ /** Form description */
3328
+ description?: string;
3329
+ /** Row configurations containing field definitions */
3330
+ rows?: FormRowConfig[];
3331
+ /** Sort options for the sort dropdown */
3332
+ sortOptions?: SortOption[];
3333
+ /** Filter options for the filter dropdown */
3334
+ filterOptions?: FilterOption[];
3335
+ /** Primary action button text */
3336
+ actionButtonText?: string;
3337
+ /** Cancel button text */
3338
+ cancelButtonText?: string;
3339
+ /** Save button text */
3340
+ saveButtonText?: string;
3341
+ /** Input size variant */
3342
+ inputSize?: "sm" | "default" | "lg";
3343
+ /** Callback when action button is clicked */
3344
+ onAddNew?: () => void;
3345
+ /** Callback when sort value changes */
3346
+ onSort?: (value: string) => void;
3347
+ /** Callback when filter value changes */
3348
+ onFilter?: (value: string) => void;
3349
+ /** Callback when cancel button is clicked */
3350
+ onCancel?: () => void;
3351
+ /** Callback when save button is clicked */
3352
+ onSave?: () => void;
3353
+ /** Callback when a field value changes */
3354
+ onFieldChange?: (fieldId: string, value: unknown) => void;
3355
+ /** Show header section */
3356
+ showHeader?: boolean;
3357
+ /** Show footer section */
3358
+ showFooter?: boolean;
3359
+ /** Additional class names */
3360
+ className?: string;
3361
+ }
3362
+ /**
3363
+ * Canvas Design System - Form Group Block
3364
+ *
3365
+ * A comprehensive form layout block with various input types arranged
3366
+ * in responsive rows. Includes header section with title, description,
3367
+ * sort/filter controls, and footer with action buttons.
3368
+ *
3369
+ * @example
3370
+ * ```tsx
3371
+ * <FormGroup
3372
+ * title="Create Entry"
3373
+ * description="Fill in the details below"
3374
+ * onSave={() => console.log("Save")}
3375
+ * onCancel={() => console.log("Cancel")}
3376
+ * />
3377
+ * ```
3378
+ */
3379
+ declare function FormGroup({ title, description, rows, sortOptions, filterOptions, actionButtonText, cancelButtonText, saveButtonText, inputSize, onAddNew, onSort, onFilter, onCancel, onSave, onFieldChange, showHeader, showFooter, className, }: FormGroupProps): react_jsx_runtime.JSX.Element;
3380
+
3381
+ interface PricedDate {
3382
+ date: Date;
3383
+ price: string;
3384
+ }
3385
+ interface DateRange {
3386
+ start: Date | null;
3387
+ end: Date | null;
3388
+ }
3389
+ interface MonthlyCalendarWidgetProps {
3390
+ /** Widget title */
3391
+ title?: string;
3392
+ /** Widget subtitle */
3393
+ subtitle?: string;
3394
+ /** Initial month to display (defaults to current month) */
3395
+ initialMonth?: Date;
3396
+ /** Currently selected date range */
3397
+ selectedRange?: DateRange;
3398
+ /** Array of dates that should be disabled/unavailable */
3399
+ disabledDates?: Date[];
3400
+ /** Array of dates with prices to display */
3401
+ pricedDates?: PricedDate[];
3402
+ /** Override for "today" (useful for demos) */
3403
+ todayDate?: Date;
3404
+ /** Callback when a date is selected */
3405
+ onDateSelect?: (date: Date) => void;
3406
+ /** Callback when the date range changes */
3407
+ onRangeChange?: (range: DateRange) => void;
3408
+ /** Callback when Confirm button is clicked */
3409
+ onConfirm?: () => void;
3410
+ /** Callback when Cancel button is clicked */
3411
+ onCancel?: () => void;
3412
+ /** Additional class names */
3413
+ className?: string;
3414
+ }
3415
+ /**
3416
+ * Canvas Design System - Monthly Calendar Widget Block
3417
+ *
3418
+ * A dual-month calendar widget for date range selection with support for
3419
+ * disabled dates, price labels, and today indicator. Commonly used for
3420
+ * booking and scheduling interfaces.
3421
+ *
3422
+ * @example
3423
+ * ```tsx
3424
+ * <MonthlyCalendarWidget
3425
+ * title="Browse availability"
3426
+ * subtitle="Book your stay"
3427
+ * onRangeChange={(range) => console.log(range)}
3428
+ * onConfirm={() => console.log("Confirmed")}
3429
+ * />
3430
+ * ```
3431
+ */
3432
+ declare function MonthlyCalendarWidget({ title, subtitle, initialMonth, selectedRange: controlledRange, disabledDates, pricedDates, todayDate, onDateSelect, onRangeChange, onConfirm, onCancel, className, }: MonthlyCalendarWidgetProps): react_jsx_runtime.JSX.Element;
3433
+
3434
+ interface PaginationProps {
3435
+ /** Current active page (1-indexed) */
3436
+ currentPage?: number;
3437
+ /** Total number of pages */
3438
+ totalPages?: number;
3439
+ /** Total number of items (for results text) */
3440
+ totalItems?: number;
3441
+ /** Items displayed per page */
3442
+ itemsPerPage?: number;
3443
+ /** Available items per page options */
3444
+ itemsPerPageOptions?: number[];
3445
+ /** Callback when page changes */
3446
+ onPageChange?: (page: number) => void;
3447
+ /** Callback when items per page changes */
3448
+ onItemsPerPageChange?: (itemsPerPage: number) => void;
3449
+ /** Show "Viewing X-Y of Z results" text (desktop only) */
3450
+ showResultsText?: boolean;
3451
+ /** Show "Show per page" dropdown (desktop only) */
3452
+ showItemsPerPage?: boolean;
3453
+ /** Maximum number of visible page buttons on desktop */
3454
+ maxVisiblePages?: number;
3455
+ /** Maximum number of visible page buttons on mobile (default: 3) */
3456
+ mobileMaxVisiblePages?: number;
3457
+ /** Force compact mode (fewer visible pages) regardless of viewport */
3458
+ compact?: boolean;
3459
+ /** Additional class names */
3460
+ className?: string;
3461
+ }
3462
+ /**
3463
+ * Canvas Design System - Pagination Component
3464
+ *
3465
+ * A responsive pagination component with results text, items per page dropdown,
3466
+ * and page navigation. Automatically adjusts layout for mobile screens.
3467
+ *
3468
+ * @example
3469
+ * ```tsx
3470
+ * // Basic usage
3471
+ * <Pagination
3472
+ * currentPage={1}
3473
+ * totalPages={10}
3474
+ * onPageChange={(page) => setPage(page)}
3475
+ * />
3476
+ *
3477
+ * // With all features
3478
+ * <Pagination
3479
+ * currentPage={1}
3480
+ * totalPages={50}
3481
+ * totalItems={2500}
3482
+ * itemsPerPage={50}
3483
+ * itemsPerPageOptions={[30, 50, 100]}
3484
+ * showResultsText
3485
+ * showItemsPerPage
3486
+ * onPageChange={(page) => setPage(page)}
3487
+ * onItemsPerPageChange={(perPage) => setPerPage(perPage)}
3488
+ * />
3489
+ * ```
3490
+ */
3491
+ declare function Pagination({ currentPage, totalPages, totalItems, itemsPerPage, itemsPerPageOptions, onPageChange, onItemsPerPageChange, showResultsText, showItemsPerPage, maxVisiblePages, mobileMaxVisiblePages, compact, className, }: PaginationProps): react_jsx_runtime.JSX.Element;
3492
+
3493
+ interface PromptTemplateProps {
3494
+ prompt: string;
3495
+ title?: string;
3496
+ className?: string;
3497
+ }
3498
+ declare function PromptTemplate({ prompt, title, className }: PromptTemplateProps): react_jsx_runtime.JSX.Element;
3499
+ interface PromptChip {
3500
+ label: string;
3501
+ prompt: string;
3502
+ }
3503
+ interface PromptChipsRowProps {
3504
+ chips: PromptChip[];
3505
+ label?: string;
3506
+ }
3507
+ declare function PromptChipsRow({ chips, label }: PromptChipsRowProps): react_jsx_runtime.JSX.Element;
3508
+
3509
+ declare function ScreenPromptTemplate(): react_jsx_runtime.JSX.Element;
3510
+
3511
+ interface ScreenPromptBuilderProps {
3512
+ className?: string;
3513
+ }
3514
+ declare function ScreenPromptBuilder({ className }: ScreenPromptBuilderProps): react_jsx_runtime.JSX.Element;
3515
+
3516
+ /**
3517
+ * Project Context Type Definitions
3518
+ *
3519
+ * These types define the structure for project data that Cursor AI
3520
+ * generates and maintains based on the scope document.
3521
+ */
3522
+ interface Persona {
3523
+ id: string;
3524
+ name: string;
3525
+ role: string;
3526
+ avatar?: string;
3527
+ goals: string[];
3528
+ painPoints: string[];
3529
+ quote: string;
3530
+ }
3531
+ type ScreenType = "page" | "tab" | "modal" | "drawer" | "state";
3532
+ type ScreenStatus = "draft" | "review" | "approved";
3533
+ interface Screen {
3534
+ id: string;
3535
+ name: string;
3536
+ slug: string;
3537
+ type: ScreenType;
3538
+ icon?: string;
3539
+ description?: string;
3540
+ parentId?: string | null;
3541
+ position: {
3542
+ x: number;
3543
+ y: number;
3544
+ };
3545
+ status: ScreenStatus;
3546
+ template?: string;
3547
+ }
3548
+ interface ScreenConnection {
3549
+ id: string;
3550
+ sourceId: string;
3551
+ targetId: string;
3552
+ label?: string;
3553
+ type?: "navigation" | "modal" | "redirect" | "back";
3554
+ }
3555
+ interface ProjectContext {
3556
+ name: string;
3557
+ description?: string;
3558
+ personas: Persona[];
3559
+ screens: Screen[];
3560
+ connections: ScreenConnection[];
3561
+ designGoals: string[];
3562
+ tone: string[];
3563
+ }
3564
+ /**
3565
+ * Get the full URL path for a screen, accounting for parent hierarchy
3566
+ */
3567
+ declare function getScreenUrl(screen: Screen, allScreens: Screen[]): string;
3568
+ /**
3569
+ * Get child screens for a given parent
3570
+ */
3571
+ declare function getChildScreens(parentId: string, allScreens: Screen[]): Screen[];
3572
+ /**
3573
+ * Get top-level screens (no parent)
3574
+ */
3575
+ declare function getTopLevelScreens(allScreens: Screen[]): Screen[];
3576
+
3577
+ interface ScreenFlowchartProps {
3578
+ screens: Screen[];
3579
+ connections: ScreenConnection[];
3580
+ className?: string;
3581
+ onOpenFullscreen?: () => void;
3582
+ }
3583
+ declare function ScreenFlowchart({ screens, connections, className, onOpenFullscreen, }: ScreenFlowchartProps): react_jsx_runtime.JSX.Element | null;
3584
+
3585
+ interface PersonaCardProps {
3586
+ persona: Persona;
3587
+ className?: string;
3588
+ }
3589
+ declare function PersonaCard({ persona, className }: PersonaCardProps): react_jsx_runtime.JSX.Element;
3590
+ interface PersonaGridProps {
3591
+ personas: Persona[];
3592
+ }
3593
+ declare function PersonaGrid({ personas }: PersonaGridProps): react_jsx_runtime.JSX.Element | null;
3594
+
3595
+ interface LoaderProps {
3596
+ /** The current state of the loader */
3597
+ state?: "loading" | "success";
3598
+ /** Title text displayed below the icon */
3599
+ title?: string;
3600
+ /** Description text displayed below the title */
3601
+ description?: string;
3602
+ /** Text for the action button (success state only) */
3603
+ buttonText?: string;
3604
+ /** Callback when the action button is clicked */
3605
+ onButtonClick?: () => void;
3606
+ /** Additional class name */
3607
+ className?: string;
3608
+ }
3609
+ /**
3610
+ * Canvas Design System - Loader Component
3611
+ *
3612
+ * A loading feedback component with two states:
3613
+ * - Loading: Animated spinner with title and description
3614
+ * - Success: Green checkmark with title, description, and optional action button
3615
+ *
3616
+ * Uses CSS variables for theming:
3617
+ * - --loader-spinner-size: Size of the spinner (default: 64px)
3618
+ * - --loader-spinner-stroke: Background stroke color
3619
+ * - --loader-spinner-fill: Animated arc color
3620
+ * - --loader-success-size: Size of success checkmark (default: 48px)
3621
+ * - --loader-success-bg: Background color of success circle
3622
+ * - --loader-gap: Gap between elements
3623
+ *
3624
+ * @example
3625
+ * ```tsx
3626
+ * // Loading state
3627
+ * <Loader
3628
+ * state="loading"
3629
+ * title="Please wait..."
3630
+ * description="We are processing your request"
3631
+ * />
3632
+ *
3633
+ * // Success state with button
3634
+ * <Loader
3635
+ * state="success"
3636
+ * title="Success!"
3637
+ * description="Your payment has been processed"
3638
+ * buttonText="Go to portal"
3639
+ * onButtonClick={() => router.push('/portal')}
3640
+ * />
3641
+ * ```
3642
+ */
3643
+ declare function Loader({ state, title, description, buttonText, onButtonClick, className, }: LoaderProps): react_jsx_runtime.JSX.Element;
3644
+
3645
+ interface MenufocusItem {
3646
+ /** Unique identifier for the menu item */
3647
+ id: string;
3648
+ /** Display label for the menu item */
3649
+ label: string;
3650
+ /** Callback when item is clicked */
3651
+ onClick?: () => void;
3652
+ /** Visual variant - use "destructive" for delete actions */
3653
+ variant?: "default" | "destructive";
3654
+ /** Whether the item is disabled */
3655
+ disabled?: boolean;
3656
+ }
3657
+ interface MenufocusTemplateProps {
3658
+ /** Array of menu items to display */
3659
+ items?: MenufocusItem[];
3660
+ /** Accessible label for the trigger button */
3661
+ ariaLabel?: string;
3662
+ /** Size of the trigger button */
3663
+ size?: "sm" | "default";
3664
+ /** Additional class names for the trigger button */
3665
+ className?: string;
3666
+ /** Alignment of the dropdown menu */
3667
+ align?: "start" | "center" | "end";
3668
+ }
3669
+ /**
3670
+ * Canvas Design System - Menufocus Template
3671
+ *
3672
+ * A reusable ellipsis menu component with configurable menu items.
3673
+ * Commonly used for row actions in tables, card actions, or any
3674
+ * context where a compact action menu is needed.
3675
+ *
3676
+ * @example
3677
+ * ```tsx
3678
+ * <MenufocusTemplate
3679
+ * items={[
3680
+ * { id: "edit", label: "Edit", onClick: handleEdit },
3681
+ * { id: "delete", label: "Delete", variant: "destructive", onClick: handleDelete },
3682
+ * ]}
3683
+ * />
3684
+ * ```
3685
+ */
3686
+ declare function MenufocusTemplate({ items, ariaLabel, size, className, align, }: MenufocusTemplateProps): react_jsx_runtime.JSX.Element;
3687
+
3688
+ interface HeroSectionProps {
3689
+ title: string;
3690
+ subtitle: string;
3691
+ searchPlaceholder?: string;
3692
+ backgroundImage?: string;
3693
+ }
3694
+ declare function HeroSection({ title, subtitle, searchPlaceholder, backgroundImage }: HeroSectionProps): react_jsx_runtime.JSX.Element;
3695
+
3696
+ interface HeroDarkWithImageProps {
3697
+ title?: string;
3698
+ subtitle?: string;
3699
+ searchPlaceholder?: string;
3700
+ image?: string;
3701
+ }
3702
+ declare function HeroDarkWithImage({ title, subtitle, searchPlaceholder, image }: HeroDarkWithImageProps): react_jsx_runtime.JSX.Element;
3703
+
3704
+ interface HeroDarkCenteredProps {
3705
+ title?: string;
3706
+ subtitle?: string;
3707
+ }
3708
+ declare function HeroDarkCentered({ title, subtitle, }: HeroDarkCenteredProps): react_jsx_runtime.JSX.Element;
3709
+
3710
+ interface HeroFullwidthImageProps {
3711
+ title?: string;
3712
+ subtitle?: string;
3713
+ backgroundImage?: string;
3714
+ }
3715
+ declare function HeroFullwidthImage({ title, subtitle, backgroundImage }: HeroFullwidthImageProps): react_jsx_runtime.JSX.Element;
3716
+
3717
+ interface DestinationCard {
3718
+ id: string;
3719
+ name: string;
3720
+ count: string;
3721
+ price: string;
3722
+ image: string;
3723
+ }
3724
+ interface DestinationCardsProps {
3725
+ title: string;
3726
+ destinations: DestinationCard[];
3727
+ onExploreMore?: () => void;
3728
+ }
3729
+ declare function DestinationCards({ title, destinations, onExploreMore }: Partial<DestinationCardsProps>): react_jsx_runtime.JSX.Element;
3730
+
3731
+ declare function FeaturedPlaces(): react_jsx_runtime.JSX.Element;
3732
+
3733
+ interface FeatureItem {
3734
+ id: string;
3735
+ title: string;
3736
+ description: string;
3737
+ icon: React.ReactNode;
3738
+ }
3739
+ interface HowItWorksProps {
3740
+ variant?: "light" | "dark";
3741
+ features?: FeatureItem[];
3742
+ }
3743
+ declare function HowItWorks({ variant, features }: HowItWorksProps): react_jsx_runtime.JSX.Element;
3744
+
3745
+ interface CategoryItem {
3746
+ id: string;
3747
+ title: string;
3748
+ count: string;
3749
+ icon: React.ReactNode;
3750
+ }
3751
+ interface CategoryGridProps {
3752
+ title?: string;
3753
+ categories?: CategoryItem[];
3754
+ }
3755
+ declare function CategoryGrid({ title, categories }: CategoryGridProps): react_jsx_runtime.JSX.Element;
3756
+
3757
+ interface Testimonial {
3758
+ id: string;
3759
+ quote: string;
3760
+ highlightedWords?: string[];
3761
+ author: string;
3762
+ location: string;
3763
+ image: string;
3764
+ }
3765
+ interface TestimonialCarouselProps {
3766
+ testimonials?: Testimonial[];
3767
+ }
3768
+ declare function TestimonialCarousel({ testimonials }: TestimonialCarouselProps): react_jsx_runtime.JSX.Element;
3769
+
3770
+ interface StepItem {
3771
+ id: string;
3772
+ title: string;
3773
+ description: string;
3774
+ icon: React.ReactNode;
3775
+ }
3776
+ interface VerticalHowItWorksProps {
3777
+ variant?: "light" | "dark";
3778
+ subtitle?: string;
3779
+ title?: string;
3780
+ description?: string;
3781
+ steps?: StepItem[];
3782
+ image?: string;
3783
+ }
3784
+ declare function VerticalHowItWorks({ variant, subtitle, title, description, steps, image }: VerticalHowItWorksProps): react_jsx_runtime.JSX.Element;
3785
+
3786
+ interface GallerySectionProps {
3787
+ variant?: "light" | "dark";
3788
+ subtitle?: string;
3789
+ title?: string;
3790
+ description1?: string;
3791
+ description2?: string;
3792
+ images?: string[];
3793
+ }
3794
+ declare function GallerySection({ variant, subtitle, title, description1, description2, images, }: GallerySectionProps): react_jsx_runtime.JSX.Element;
3795
+
3796
+ interface FeatureBenefit {
3797
+ id: string;
3798
+ text: string;
3799
+ }
3800
+ interface FeatureWithImageProps {
3801
+ title?: string;
3802
+ description?: string;
3803
+ benefits?: FeatureBenefit[];
3804
+ ctaText?: string;
3805
+ onCtaClick?: () => void;
3806
+ image?: string;
3807
+ imagePosition?: "left" | "right";
3808
+ }
3809
+ declare function FeatureWithImage({ title, description, benefits, ctaText, onCtaClick, image, imagePosition, }: FeatureWithImageProps): react_jsx_runtime.JSX.Element;
3810
+
3811
+ interface SocialProofProps {
3812
+ label?: string;
3813
+ logos?: {
3814
+ name: string;
3815
+ width: number;
3816
+ }[];
3817
+ }
3818
+ declare function SocialProof({ label, logos, }: SocialProofProps): react_jsx_runtime.JSX.Element;
3819
+
3820
+ interface Review {
3821
+ id: string;
3822
+ quote: string;
3823
+ author: string;
3824
+ location: string;
3825
+ avatar: string;
3826
+ }
3827
+ interface ReviewsGridProps {
3828
+ title?: string;
3829
+ subtitle?: string;
3830
+ reviews?: Review[];
3831
+ }
3832
+ declare function ReviewsGrid({ title, subtitle, reviews }: ReviewsGridProps): react_jsx_runtime.JSX.Element;
3833
+
3834
+ interface BlogPost {
3835
+ id: string;
3836
+ title: string;
3837
+ description: string;
3838
+ image: string;
3839
+ }
3840
+ interface BlogCardsProps {
3841
+ subtitle?: string;
3842
+ title?: string;
3843
+ posts?: BlogPost[];
3844
+ }
3845
+ declare function BlogCards({ subtitle, title, posts, }: BlogCardsProps): react_jsx_runtime.JSX.Element;
3846
+
3847
+ interface CtaBannerProps {
3848
+ title?: string;
3849
+ buttonText?: string;
3850
+ onButtonClick?: () => void;
3851
+ }
3852
+ declare function CtaBanner({ title, buttonText, onButtonClick }: CtaBannerProps): react_jsx_runtime.JSX.Element;
3853
+
3854
+ interface FooterNavbarProps {
3855
+ companyName?: string;
3856
+ }
3857
+ declare function FooterNavbar({ companyName }: FooterNavbarProps): react_jsx_runtime.JSX.Element;
3858
+
3859
+ interface CenteredHeroProps {
3860
+ title?: string;
3861
+ subtitle?: string;
3862
+ image?: string;
3863
+ }
3864
+ declare function CenteredHero({ title, subtitle, image, }: CenteredHeroProps): react_jsx_runtime.JSX.Element;
3865
+
3866
+ interface Metric {
3867
+ value: string;
3868
+ label: string;
3869
+ }
3870
+ interface MetricsSectionProps {
3871
+ subtitle?: string;
3872
+ title?: string;
3873
+ metrics?: Metric[];
3874
+ }
3875
+ declare function MetricsSection({ subtitle, title, metrics, }: MetricsSectionProps): react_jsx_runtime.JSX.Element;
3876
+
3877
+ interface Value {
3878
+ icon: ReactNode;
3879
+ title: string;
3880
+ description: string;
3881
+ }
3882
+ interface CoreValuesGridProps {
3883
+ variant?: "light" | "dark";
3884
+ subtitle?: string;
3885
+ title?: string;
3886
+ description?: string;
3887
+ values?: Value[];
3888
+ }
3889
+ declare function CoreValuesGrid({ variant, subtitle, title, description, values, }: CoreValuesGridProps): react_jsx_runtime.JSX.Element;
3890
+
3891
+ interface ContentWithImageProps {
3892
+ subtitle?: string;
3893
+ title?: string;
3894
+ description?: string;
3895
+ image?: string;
3896
+ imagePosition?: "left" | "right";
3897
+ }
3898
+ declare function ContentWithImage({ subtitle, title, description, image, imagePosition, }: ContentWithImageProps): react_jsx_runtime.JSX.Element;
3899
+
3900
+ interface TeamMember$1 {
3901
+ name: string;
3902
+ role: string;
3903
+ image: string;
3904
+ linkedIn?: string;
3905
+ twitter?: string;
3906
+ }
3907
+ interface TeamCardsGridProps {
3908
+ subtitle?: string;
3909
+ title?: string;
3910
+ description?: string;
3911
+ members?: TeamMember$1[];
3912
+ }
3913
+ declare function TeamCardsGrid({ subtitle, title, description, members, }: TeamCardsGridProps): react_jsx_runtime.JSX.Element;
3914
+
3915
+ interface TeamMember {
3916
+ name: string;
3917
+ role: string;
3918
+ image: string;
3919
+ linkedIn?: string;
3920
+ twitter?: string;
3921
+ }
3922
+ interface TeamCircularGridProps {
3923
+ subtitle?: string;
3924
+ title?: string;
3925
+ description?: string;
3926
+ members?: TeamMember[];
3927
+ }
3928
+ declare function TeamCircularGrid({ subtitle, title, description, members, }: TeamCircularGridProps): react_jsx_runtime.JSX.Element;
3929
+
3930
+ interface NewsItem {
3931
+ title: string;
3932
+ description: string;
3933
+ image: string;
3934
+ href?: string;
3935
+ }
3936
+ interface FeaturedNewsCardsProps {
3937
+ variant?: "light" | "dark";
3938
+ subtitle?: string;
3939
+ title?: string;
3940
+ description?: string;
3941
+ items?: NewsItem[];
3942
+ }
3943
+ declare function FeaturedNewsCards({ variant, subtitle, title, description, items, }: FeaturedNewsCardsProps): react_jsx_runtime.JSX.Element;
3944
+
3945
+ interface Office {
3946
+ city: string;
3947
+ address: string[];
3948
+ }
3949
+ interface OfficeLocationsProps {
3950
+ subtitle?: string;
3951
+ title?: string;
3952
+ description?: string;
3953
+ offices?: Office[];
3954
+ }
3955
+ declare function OfficeLocations({ subtitle, title, description, offices, }: OfficeLocationsProps): react_jsx_runtime.JSX.Element;
3956
+
3957
+ declare function PricingCards(): react_jsx_runtime.JSX.Element;
3958
+
3959
+ declare function FeaturesComparison(): react_jsx_runtime.JSX.Element;
3960
+
3961
+ declare function FaqAccordion(): react_jsx_runtime.JSX.Element;
3962
+
3963
+ interface PricingCtaProps {
3964
+ title?: string;
3965
+ primaryButtonText?: string;
3966
+ secondaryButtonText?: string;
3967
+ onPrimaryClick?: () => void;
3968
+ onSecondaryClick?: () => void;
3969
+ }
3970
+ declare function PricingCta({ title, primaryButtonText, secondaryButtonText, onPrimaryClick, onSecondaryClick, }: PricingCtaProps): react_jsx_runtime.JSX.Element;
3971
+
3972
+ declare function cn(...inputs: ClassValue[]): string;
3973
+
3974
+ /**
3975
+ * Canvas Design System - Theme Defaults
3976
+ *
3977
+ * This file contains all default values for the design system.
3978
+ * These are used by:
3979
+ * - The Reset button in the Design Variables drawer
3980
+ * - Initial state when no saved theme exists
3981
+ *
3982
+ * Keep these in sync with globals.css CSS variable defaults.
3983
+ */
3984
+ declare const colorVariables: {
3985
+ category: string;
3986
+ variables: {
3987
+ name: string;
3988
+ default: string;
3989
+ label: string;
3990
+ }[];
3991
+ }[];
3992
+ declare const allColorVariables: {
3993
+ name: string;
3994
+ default: string;
3995
+ label: string;
3996
+ }[];
3997
+ declare const defaultColors: Record<string, string>;
3998
+ type IconShapeId$1 = "rounded" | "circle" | "square";
3999
+ declare const defaultBranding: {
4000
+ iconShape: IconShapeId$1;
4001
+ iconName: string;
4002
+ bgColor: string;
4003
+ iconColor: string;
4004
+ wordmark: string;
4005
+ };
4006
+ type ImageKey = "logoLight" | "logoDark" | "faviconLight" | "faviconDark";
4007
+ declare const defaultImages: Record<ImageKey, string>;
4008
+ declare const defaultTypography: Record<string, string>;
4009
+ declare const defaultButtonSizes: Record<string, string>;
4010
+ declare const defaultButtonColorStyles: {
4011
+ id: string;
4012
+ label: string;
4013
+ description: string;
4014
+ isDefault: boolean;
4015
+ }[];
4016
+ interface CustomButtonStyle {
4017
+ id: string;
4018
+ label: string;
4019
+ description: string;
4020
+ bg: string;
4021
+ text: string;
4022
+ border: string;
4023
+ bgHover: string;
4024
+ textHover: string;
4025
+ borderHover: string;
4026
+ }
4027
+ declare const defaultCustomButtonStyles: CustomButtonStyle[];
4028
+ declare const defaultButtonColors: Record<string, string>;
4029
+ declare const defaultInputSizes: Record<string, string>;
4030
+
4031
+ /**
4032
+ * Component Registry
4033
+ *
4034
+ * A lightweight reference for AI assistants to understand available components
4035
+ * without reading all source files. Check this file first when working on
4036
+ * page templates, blocks, or layouts.
4037
+ *
4038
+ * Each component entry includes:
4039
+ * - path: Import path for the component
4040
+ * - description: Brief explanation of what the component does
4041
+ * - props: Key props (not exhaustive, see source for full interface)
4042
+ */
4043
+ declare const layoutShells: {
4044
+ readonly DashboardShell: {
4045
+ readonly path: "@/components/layout";
4046
+ readonly description: "Main dashboard layout with dark sidebar (320px) and fixed header. Sidebar has collapsible sections with nav items.";
4047
+ readonly props: readonly ["navigation: NavSection[]", "pageHeader?", "children", "onNavItemClick?"];
4048
+ };
4049
+ readonly IconSidebarShell: {
4050
+ readonly path: "@/components/layout";
4051
+ readonly description: "Layout with narrow icon-only sidebar (96px). Good for apps with few main sections.";
4052
+ readonly props: readonly ["navigation?: IconNavItemConfig[]", "pageHeader?", "children", "onNavItemClick?"];
4053
+ };
4054
+ readonly DoubleSidebarShell: {
4055
+ readonly path: "@/components/layout";
4056
+ readonly description: "Two-column sidebar layout (96px icons + 280px nav). Each column can be light/dark themed independently.";
4057
+ readonly props: readonly ["sections?: DoubleSidebarSection[]", "iconVariant?", "navVariant?", "children", "onTabClick?"];
4058
+ };
4059
+ readonly StandardPageShell: {
4060
+ readonly path: "@/components/layout";
4061
+ readonly description: "No-sidebar layout with centered content (max 992px). Has optional flair banner and page header with tabs.";
4062
+ readonly props: readonly ["bannerTitle?", "pageTitle?", "tabs?", "activeTab?", "showBanner?", "showTabs?", "children"];
4063
+ };
4064
+ readonly AccountSettingsShell: {
4065
+ readonly path: "@/components/layout";
4066
+ readonly description: "Settings page layout with left sidebar navigation (Profile, Security, Payments, Notifications tabs).";
4067
+ readonly props: readonly ["activeTab?: AccountTab", "onTabChange?", "pageTitle?", "children"];
4068
+ };
4069
+ readonly MultistepShell: {
4070
+ readonly path: "@/components/layout";
4071
+ readonly description: "Multi-step wizard layout with horizontal step tracker, step title/description, and navigation buttons.";
4072
+ readonly props: readonly ["steps?: Step[]", "currentStep?", "onStepClick?", "onCancel?", "onContinue?", "children"];
4073
+ };
4074
+ readonly MultistepSidebarShell: {
4075
+ readonly path: "@/components/layout";
4076
+ readonly description: "Multi-step wizard with sidebar step list instead of horizontal tracker.";
4077
+ readonly props: readonly ["steps?: Step[]", "currentStep?", "children"];
4078
+ };
4079
+ readonly MultistepProgressBarShell: {
4080
+ readonly path: "@/components/layout";
4081
+ readonly description: "Multi-step wizard with a horizontal progress bar at top.";
4082
+ readonly props: readonly ["steps?: MultistepProgressBarStep[]", "currentStep?", "children"];
4083
+ };
4084
+ readonly VerticalMultistepShell: {
4085
+ readonly path: "@/components/layout";
4086
+ readonly description: "Multi-step wizard with vertical step tracker on the left side.";
4087
+ readonly props: readonly ["steps?: Step[]", "currentStep?", "children"];
4088
+ };
4089
+ readonly MobileMenuShell: {
4090
+ readonly path: "@/components/layout";
4091
+ readonly description: "Mobile-first layout with bottom navigation bar. Good for mobile app-like experiences.";
4092
+ readonly props: readonly ["children", "bottomNavItems?"];
4093
+ };
4094
+ readonly SearchBarShell: {
4095
+ readonly path: "@/components/layout";
4096
+ readonly description: "Layout with prominent search bar in header area.";
4097
+ readonly props: readonly ["children", "onSearch?"];
4098
+ };
4099
+ };
4100
+ declare const layoutPrimitives: {
4101
+ readonly Header: {
4102
+ readonly path: "@/components/layout";
4103
+ readonly description: "Top navigation bar with logo, nav links, icon cluster (search, notifications, messages, cart), and avatar dropdown.";
4104
+ readonly props: readonly ["onMenuClick?", "showDesktopLogo?", "variant?: 'light' | 'dark'", "navItems?", "showAuthButtons?"];
4105
+ };
4106
+ readonly Sidebar: {
4107
+ readonly path: "@/components/layout";
4108
+ readonly description: "Dark or light sidebar with logo and collapsible nav sections. Used inside DashboardShell.";
4109
+ readonly props: readonly ["sections: NavSection[]", "variant?: 'dark' | 'light'", "onItemClick?"];
4110
+ };
4111
+ readonly SidebarNav: {
4112
+ readonly path: "@/components/layout";
4113
+ readonly description: "Navigation items component used inside Sidebar. Handles section titles and item rendering.";
4114
+ readonly props: readonly ["sections: NavSection[]", "variant?", "onItemClick?"];
4115
+ };
4116
+ readonly IconSidebar: {
4117
+ readonly path: "@/components/layout";
4118
+ readonly description: "Narrow sidebar with only icons and tooltips. Used inside IconSidebarShell.";
4119
+ readonly props: readonly ["items?: IconNavItemConfig[]", "variant?", "onItemClick?"];
4120
+ };
4121
+ readonly DoubleSidebar: {
4122
+ readonly path: "@/components/layout";
4123
+ readonly description: "Two-column sidebar with icon strip and nav panel. Used inside DoubleSidebarShell.";
4124
+ readonly props: readonly ["sections?", "iconVariant?", "navVariant?", "onTabClick?"];
4125
+ };
4126
+ };
4127
+ declare const blocks: {
4128
+ readonly ActivityFeed: {
4129
+ readonly path: "@/components/blocks";
4130
+ readonly description: "Timeline-style activity feed showing user actions, comments, and file attachments with connecting lines. Supports status changes, comments with reactions, and file attachments.";
4131
+ readonly props: readonly ["title?", "subtitle?", "items?: ActivityItem[]", "onLike?", "onReply?", "onAttachmentClick?"];
4132
+ };
4133
+ readonly CircularProgressBarList: {
4134
+ readonly path: "@/components/blocks";
4135
+ readonly description: "List block with circular progress indicators showing completion percentages. Features header with sort/filter controls and item action menus.";
4136
+ readonly props: readonly ["title?", "items?: ProgressListItem[]", "sortOptions?", "filterOptions?", "onSort?", "onFilter?", "onItemAction?"];
4137
+ };
4138
+ readonly CircularProgressBar: {
4139
+ readonly path: "@/components/blocks";
4140
+ readonly description: "SVG-based circular progress indicator showing a percentage value. Can be used standalone or within CircularProgressBarList.";
4141
+ readonly props: readonly ["progress: number", "size?", "strokeWidth?", "className?"];
4142
+ };
4143
+ readonly FaqsTable: {
4144
+ readonly path: "@/components/blocks";
4145
+ readonly description: "Expandable FAQ list with accordion behavior. Shows questions with plus/minus toggle icons, revealing answers one at a time.";
4146
+ readonly props: readonly ["title?", "items?: FAQItem[]", "defaultExpandedId?", "className?"];
4147
+ };
4148
+ readonly StandardDataTable: {
4149
+ readonly path: "@/components/blocks";
4150
+ readonly description: "Data table with title, result count, sort/filter dropdowns, and action button. Rows have avatar + name/email/title/role columns.";
4151
+ readonly props: readonly ["title?", "data?: TableRow[]", "columns?", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?"];
4152
+ };
4153
+ readonly FixedColumnDataTable: {
4154
+ readonly path: "@/components/blocks";
4155
+ readonly description: "Data table with fixed first column (Name with avatar) that stays visible during horizontal scroll. Ideal for invoice-style tables with columns: Amount, Status badge, Logo, Company, Date Sent.";
4156
+ readonly props: readonly ["title?", "data?: FixedColumnTableRow[]", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onRowAction?"];
4157
+ };
4158
+ readonly NestedDataTable: {
4159
+ readonly path: "@/components/blocks";
4160
+ readonly description: "Expandable data table with parent rows that reveal nested child tables. Shows hierarchical data like locations with employees.";
4161
+ readonly props: readonly ["title?", "data?: ParentRow[]", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onRowAction?", "onChildAction?"];
4162
+ };
4163
+ readonly ReviewsTable: {
4164
+ readonly path: "@/components/blocks";
4165
+ readonly description: "Review listing with user avatars, star ratings, dates, and expandable text. Includes sort/filter dropdowns and action button.";
4166
+ readonly props: readonly ["title?", "reviews?: ReviewItem[]", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onReadMore?"];
4167
+ };
4168
+ readonly MessengerSidebar: {
4169
+ readonly path: "@/components/blocks";
4170
+ readonly description: "Thread list sidebar for messaging with search, avatars, timestamps, and unread badges.";
4171
+ readonly props: readonly ["selectedThreadId?", "onSelectThread?", "className?"];
4172
+ };
4173
+ readonly ChatBubble: {
4174
+ readonly path: "@/components/blocks";
4175
+ readonly description: "Single chat message bubble. Sent messages align right with primary color, received align left with avatar.";
4176
+ readonly props: readonly ["message: ChatBubbleMessage"];
4177
+ };
4178
+ readonly ChatDateSeparator: {
4179
+ readonly path: "@/components/blocks";
4180
+ readonly description: "Date separator line between chat messages (e.g., 'Jan 25, 2024').";
4181
+ readonly props: readonly ["date: string"];
4182
+ };
4183
+ readonly MessengerInput: {
4184
+ readonly path: "@/components/blocks";
4185
+ readonly description: "Chat input with textarea, attachment pills, file upload button, and send button.";
4186
+ readonly props: readonly ["attachments?", "onRemoveAttachment?", "onSend?"];
4187
+ };
4188
+ readonly ProfileCard: {
4189
+ readonly path: "@/components/blocks";
4190
+ readonly description: "Centered profile card with avatar overlapping banner, stats, bio, tags, and social links.";
4191
+ readonly props: readonly ["name", "username", "avatarUrl?", "rating?", "location?", "stats?", "bio?", "tags?", "socialLinks?"];
4192
+ };
4193
+ readonly StepTracker: {
4194
+ readonly path: "@/components/blocks";
4195
+ readonly description: "Horizontal multi-step progress indicator with numbered circles and connecting lines.";
4196
+ readonly props: readonly ["steps: Step[]", "currentStep: number", "onStepClick?"];
4197
+ };
4198
+ readonly VerticalStepTracker: {
4199
+ readonly path: "@/components/blocks";
4200
+ readonly description: "Vertical step tracker for sidebar placement in multi-step flows.";
4201
+ readonly props: readonly ["steps: Step[]", "currentStep: number", "onStepClick?"];
4202
+ };
4203
+ readonly ProgressBar: {
4204
+ readonly path: "@/components/blocks";
4205
+ readonly description: "Horizontal progress bar. Can use percentage or currentStep/totalSteps.";
4206
+ readonly props: readonly ["progress?", "currentStep?", "totalSteps?"];
4207
+ };
4208
+ readonly FlairBanner: {
4209
+ readonly path: "@/components/blocks";
4210
+ readonly description: "Dark blue hero banner with large title text. Used at top of pages.";
4211
+ readonly props: readonly ["title: string"];
4212
+ };
4213
+ readonly Loader: {
4214
+ readonly path: "@/components/blocks";
4215
+ readonly description: "Loading feedback component with animated spinner (loading state) and checkmark (success state). Includes title, description, and optional action button.";
4216
+ readonly props: readonly ["state?: 'loading' | 'success'", "title?", "description?", "buttonText?", "onButtonClick?", "className?"];
4217
+ };
4218
+ readonly GradientBanner: {
4219
+ readonly path: "@/components/blocks";
4220
+ readonly description: "Banner with gradient background. Alternative to FlairBanner.";
4221
+ readonly props: readonly ["title?", "subtitle?"];
4222
+ };
4223
+ readonly PageHeaderSection: {
4224
+ readonly path: "@/components/blocks";
4225
+ readonly description: "Page title, description, and optional line tabs. Used below banners.";
4226
+ readonly props: readonly ["title", "description?", "tabs?", "activeTab?", "onTabChange?", "showTabs?"];
4227
+ };
4228
+ readonly SearchBar: {
4229
+ readonly path: "@/components/blocks";
4230
+ readonly description: "Prominent search input with icon.";
4231
+ readonly props: readonly ["placeholder?", "value?", "onChange?", "onSearch?"];
4232
+ };
4233
+ readonly SearchSidebar: {
4234
+ readonly path: "@/components/blocks";
4235
+ readonly description: "Sidebar with search results or filters.";
4236
+ readonly props: readonly ["results?", "onResultClick?"];
4237
+ };
4238
+ readonly FilterPopover: {
4239
+ readonly path: "@/components/blocks";
4240
+ readonly description: "Popover with filter controls (checkboxes, date ranges, etc.).";
4241
+ readonly props: readonly ["filters?", "onApply?", "onReset?"];
4242
+ };
4243
+ readonly MenuSection: {
4244
+ readonly path: "@/components/blocks";
4245
+ readonly description: "Section within sidebar navigation with title and items.";
4246
+ readonly props: readonly ["title?", "items: NavItem[]"];
4247
+ };
4248
+ readonly MenufocusTemplate: {
4249
+ readonly path: "@/components/blocks";
4250
+ readonly description: "Dropdown menu with trigger button (three dots). Used for row actions in tables.";
4251
+ readonly props: readonly ["items: MenuItem[]", "ariaLabel?"];
4252
+ };
4253
+ readonly SidebarCards: {
4254
+ readonly path: "@/components/blocks";
4255
+ readonly description: "Card list for sidebar showing items with images/titles.";
4256
+ readonly props: readonly ["cards: SidebarCard[]", "onCardClick?"];
4257
+ };
4258
+ readonly SidebarProfileCard: {
4259
+ readonly path: "@/components/blocks";
4260
+ readonly description: "Compact profile card for sidebar with avatar and key info.";
4261
+ readonly props: readonly ["name", "role?", "avatarUrl?"];
4262
+ };
4263
+ readonly ProfileInfoCards: {
4264
+ readonly path: "@/components/blocks";
4265
+ readonly description: "Grid of info cards for profile pages (contact, stats, etc.).";
4266
+ readonly props: readonly ["cards: InfoCard[]"];
4267
+ };
4268
+ readonly ProfileImageUploader: {
4269
+ readonly path: "@/components/blocks";
4270
+ readonly description: "Avatar upload component with preview and edit button.";
4271
+ readonly props: readonly ["currentImage?", "onUpload?"];
4272
+ };
4273
+ readonly SettingsListRow: {
4274
+ readonly path: "@/components/blocks";
4275
+ readonly description: "Row item for settings lists with label, value, and edit action.";
4276
+ readonly props: readonly ["label", "value?", "onEdit?"];
4277
+ };
4278
+ readonly CreditCardDisplay: {
4279
+ readonly path: "@/components/blocks";
4280
+ readonly description: "Visual credit card display showing card details.";
4281
+ readonly props: readonly ["cardNumber?", "cardHolder?", "expiry?", "type?"];
4282
+ };
4283
+ readonly PillTabs: {
4284
+ readonly path: "@/components/blocks";
4285
+ readonly description: "Horizontal pill-style tab navigation.";
4286
+ readonly props: readonly ["tabs: Tab[]", "activeTab?", "onTabChange?"];
4287
+ };
4288
+ readonly LoginBrandingPanel: {
4289
+ readonly path: "@/components/blocks";
4290
+ readonly description: "Branding side panel for login/signup pages with logo and background.";
4291
+ readonly props: readonly ["backgroundImage?", "logo?"];
4292
+ };
4293
+ readonly ContentDropzone: {
4294
+ readonly path: "@/components/blocks";
4295
+ readonly description: "Placeholder dropzone for content areas during development.";
4296
+ readonly props: readonly ["label?", "className?"];
4297
+ };
4298
+ readonly UpvotingPostsTable: {
4299
+ readonly path: "@/components/blocks";
4300
+ readonly description: "Social feed with upvoting posts, comments, and nested replies. Features header with sort/filter controls.";
4301
+ readonly props: readonly ["title?", "subtitle?", "posts?: Post[]", "currentUser?", "sortOptions?", "filterOptions?", "actionButtonText?", "onUpvote?", "onComment?", "onReply?", "onLike?"];
4302
+ };
4303
+ readonly NestedCommentsTable: {
4304
+ readonly path: "@/components/blocks";
4305
+ readonly description: "Threaded discussion component with nested comments, reply/like actions, and collapsible threads.";
4306
+ readonly props: readonly ["title?", "subtitle?", "comments?: Comment[]", "currentUser?", "onComment?", "onReply?", "onLike?"];
4307
+ };
4308
+ readonly ImageFeedWithNestedComments: {
4309
+ readonly path: "@/components/blocks";
4310
+ readonly description: "Instagram-style image feed with large images, social interactions (like/comment/share/bookmark), and nested comment threads.";
4311
+ readonly props: readonly ["title?", "subtitle?", "posts?: ImagePost[]", "currentUser?", "onLike?", "onComment?", "onShare?", "onBookmark?", "onReply?", "onCommentLike?"];
4312
+ };
4313
+ readonly MobileBottomNav: {
4314
+ readonly path: "@/components/blocks";
4315
+ readonly description: "Fixed bottom navigation bar for mobile layouts.";
4316
+ readonly props: readonly ["items: BottomNavItem[]", "activeItem?", "onItemClick?"];
4317
+ };
4318
+ readonly MonthlyCalendarWidget: {
4319
+ readonly path: "@/components/blocks";
4320
+ readonly description: "Dual-month calendar for date range selection with price labels, disabled dates, and today indicator. Used for booking and scheduling interfaces.";
4321
+ readonly props: readonly ["title?", "subtitle?", "initialMonth?", "selectedRange?", "disabledDates?", "pricedDates?", "todayDate?", "onDateSelect?", "onRangeChange?", "onConfirm?", "onCancel?"];
4322
+ };
4323
+ readonly BottomInputChatWidget: {
4324
+ readonly path: "@/components/blocks";
4325
+ readonly description: "Slack-style chat widget with message threads list and conversation view. Features bottom input bar with attachment support.";
4326
+ readonly props: readonly ["variant?: 'threads' | 'conversation'", "title?", "threads?", "messages?", "conversationName?", "onThreadClick?", "onBackClick?", "onSend?"];
4327
+ };
4328
+ readonly LargeImageLabelsList: {
4329
+ readonly path: "@/components/blocks";
4330
+ readonly description: "Property-style listing with large images, ratings, prices, and icon labels. Includes header with sort/filter controls.";
4331
+ readonly props: readonly ["title?", "items?: ListItem[]", "sortOptions?", "filterOptions?", "onFavorite?", "onItemClick?"];
4332
+ };
4333
+ readonly SocialFeed: {
4334
+ readonly path: "@/components/blocks";
4335
+ readonly description: "Social media-style feed with post composer, various content types (text, images, video, reposts, link cards), social interactions (like/comment/repost/share), and threaded replies.";
4336
+ readonly props: readonly ["title?", "posts?: SocialFeedPost[]", "currentUser?", "composerPlaceholder?", "composerImagePreview?", "onPost?", "onLike?", "onComment?", "onRepost?", "onShare?"];
4337
+ };
4338
+ readonly StandardListWithImage: {
4339
+ readonly path: "@/components/blocks";
4340
+ readonly description: "Blog/article-style list block with image thumbnails, title, author, date, description, and tags. Includes header with sort/filter controls.";
4341
+ readonly props: readonly ["title?", "subtitle?", "items?: ListItem[]", "sortOptions?", "filterOptions?", "onSort?", "onFilter?", "onItemClick?"];
4342
+ };
4343
+ readonly SlideshowGridTiles: {
4344
+ readonly path: "@/components/blocks";
4345
+ readonly description: "2-column grid of portfolio/slideshow tiles with hover states. Features large images with slideshow navigation, save button, user info with avatar, and engagement stats (likes/views).";
4346
+ readonly props: readonly ["title?", "subtitle?", "items?: SlideshowTileItem[]", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onSort?", "onFilter?", "onSave?", "onItemClick?"];
4347
+ };
4348
+ readonly ProfileGridTilesList: {
4349
+ readonly path: "@/components/blocks";
4350
+ readonly description: "Responsive grid of profile cards with avatar, ratings, certifications, and metadata. Configurable 2-5 columns with mobile responsiveness. Ideal for tutors, team members, or user directories.";
4351
+ readonly props: readonly ["title?", "subtitle?", "items?: ProfileTileItem[]", "columns?: 2|3|4|5", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onSort?", "onFilter?", "onItemClick?"];
4352
+ };
4353
+ readonly GridTilesList: {
4354
+ readonly path: "@/components/blocks";
4355
+ readonly description: "Responsive grid of property/listing tiles with configurable 2-5 columns. Features images, star ratings, prices, favorite buttons, and optional tags. Includes header with sort/filter controls.";
4356
+ readonly props: readonly ["title?", "subtitle?", "columns?: 2|3|4|5", "items?: GridTileItem[]", "sortOptions?", "filterOptions?", "actionButtonText?", "onAddNew?", "onFavorite?", "onItemClick?"];
4357
+ };
4358
+ readonly Pagination: {
4359
+ readonly path: "@/components/blocks";
4360
+ readonly description: "Responsive pagination with results summary, items per page dropdown, and page navigation. Shows 'Viewing X-Y of Z results' on desktop, compact navigation on mobile.";
4361
+ readonly props: readonly ["currentPage?", "totalPages?", "totalItems?", "itemsPerPage?", "itemsPerPageOptions?", "onPageChange?", "onItemsPerPageChange?", "showResultsText?", "showItemsPerPage?", "maxVisiblePages?"];
4362
+ };
4363
+ readonly MetricCard: {
4364
+ readonly path: "@/components/blocks/graph-metric-tiles";
4365
+ readonly description: "Single KPI card displaying a large value with label and optional change indicator (up/down arrow with color).";
4366
+ readonly props: readonly ["label: string", "value: string", "change?: { value: string, direction: 'up' | 'down' }", "className?"];
4367
+ };
4368
+ readonly MetricCardsRow: {
4369
+ readonly path: "@/components/blocks/graph-metric-tiles";
4370
+ readonly description: "Horizontal row of 2-4 MetricCard components with automatic flex layout and spacing.";
4371
+ readonly props: readonly ["metrics: MetricCardData[]", "columns?: 2|3|4", "className?"];
4372
+ };
4373
+ readonly LineChartWidget: {
4374
+ readonly path: "@/components/blocks/graph-metric-tiles";
4375
+ readonly description: "Full-width widget with Chart.js line/area chart. Includes header, value display, and footer actions. Chart colors update live with CSS variables.";
4376
+ readonly props: readonly ["label: string", "value: string", "description?", "chartData?: number[]", "chartLabels?: string[]", "onMenuClick?", "onManageClick?", "onViewDetailsClick?"];
4377
+ };
4378
+ readonly DonutChartWidget: {
4379
+ readonly path: "@/components/blocks/graph-metric-tiles";
4380
+ readonly description: "Widget with Chart.js doughnut chart and legend metrics grid. Colors mapped to --chart-color-1 through --chart-color-5 CSS variables.";
4381
+ readonly props: readonly ["label: string", "value: string", "description?", "legendItems?: DonutChartLegendItem[]", "onMenuClick?", "onManageClick?", "onViewDetailsClick?"];
4382
+ };
4383
+ readonly MetricListCard: {
4384
+ readonly path: "@/components/blocks/graph-metric-tiles";
4385
+ readonly description: "Card displaying a list of transactions or metrics with optional date, label, and value columns.";
4386
+ readonly props: readonly ["headerLabel: string", "title: string", "subtitle?", "items: MetricListItem[]", "viewDetailsLabel?", "onMenuClick?", "onManageClick?", "onViewDetailsClick?"];
4387
+ };
4388
+ readonly ProgressMetricCard: {
4389
+ readonly path: "@/components/blocks/graph-metric-tiles";
4390
+ readonly description: "Card with horizontal progress bars, optional images/sublabels, and value display. Uses --canvas-primary for bar color by default.";
4391
+ readonly props: readonly ["headerLabel: string", "title: string", "subtitle?", "items: ProgressBarItem[]", "onMenuClick?", "onManageClick?", "onViewDetailsClick?"];
4392
+ };
4393
+ readonly TwoColumnWidgets: {
4394
+ readonly path: "@/components/blocks/graph-metric-tiles";
4395
+ readonly description: "Simple flex layout wrapper for arranging two widget cards side by side with proper gap spacing.";
4396
+ readonly props: readonly ["children: React.ReactNode", "className?"];
4397
+ };
4398
+ readonly DashboardHeader: {
4399
+ readonly path: "@/components/blocks/graph-metric-tiles";
4400
+ readonly description: "Page header for dashboards with title and optional subtitle.";
4401
+ readonly props: readonly ["title: string", "subtitle?", "className?"];
4402
+ };
4403
+ readonly GraphMetricTilesDemo: {
4404
+ readonly path: "@/components/blocks/graph-metric-tiles";
4405
+ readonly description: "Complete dashboard demo composing all metric tile components together. Use as reference for dashboard layouts.";
4406
+ readonly props: readonly ["className?"];
4407
+ };
4408
+ };
4409
+ declare const groupModalDrawerBlocks: {
4410
+ readonly FormGroup: {
4411
+ readonly path: "@/components/blocks";
4412
+ readonly description: "Comprehensive form layout with header, responsive 2-column rows, and footer. Supports text inputs, selects, date pickers, checkboxes, radio buttons, multiselect tags, image/file uploaders, and sliders.";
4413
+ readonly props: readonly ["title?", "description?", "rows?: FormRowConfig[]", "sortOptions?", "filterOptions?", "inputSize?: 'sm' | 'default' | 'lg'", "onAddNew?", "onCancel?", "onSave?", "onFieldChange?", "showHeader?", "showFooter?"];
4414
+ };
4415
+ };
4416
+ declare const canvasBlocks: {
4417
+ readonly InfinityCanvas: {
4418
+ readonly path: "@/components/blocks";
4419
+ readonly description: "Pannable, zoomable infinite canvas for placing components. Supports drag-and-drop from palette.";
4420
+ readonly props: readonly ["items: CanvasItemData[]", "onItemsChange", "selectedId", "onSelectItem"];
4421
+ };
4422
+ readonly ComponentPalette: {
4423
+ readonly path: "@/components/blocks";
4424
+ readonly description: "Sidebar listing draggable components grouped by category. Used with InfinityCanvas.";
4425
+ readonly props: readonly ["className?"];
4426
+ };
4427
+ readonly CanvasItem: {
4428
+ readonly path: "@/components/blocks";
4429
+ readonly description: "Wrapper for components placed on the infinity canvas. Handles positioning and selection.";
4430
+ readonly props: readonly ["item: CanvasItemData", "isSelected", "onSelect", "onDelete", "children"];
4431
+ };
4432
+ };
4433
+ declare const videoBlocks: {
4434
+ readonly VideoChatControls: {
4435
+ readonly path: "@/components/blocks";
4436
+ readonly description: "Row of circular buttons for video calls: camera, mic, cast, leave.";
4437
+ readonly props: readonly ["isVideoOn?", "isMicOn?", "onToggleVideo?", "onToggleMic?", "onCast?", "onLeave?"];
4438
+ };
4439
+ readonly WebcamPreview: {
4440
+ readonly path: "@/components/blocks";
4441
+ readonly description: "Live webcam preview component with optional overlay controls.";
4442
+ readonly props: readonly ["className?", "showControls?"];
4443
+ };
4444
+ readonly ParticipantList: {
4445
+ readonly path: "@/components/blocks";
4446
+ readonly description: "List of video call participants with avatars and status.";
4447
+ readonly props: readonly ["participants: Participant[]"];
4448
+ };
4449
+ readonly VideoPlaylist: {
4450
+ readonly path: "@/components/blocks";
4451
+ readonly description: "Sidebar playlist for video content with thumbnails.";
4452
+ readonly props: readonly ["videos: Video[]", "currentVideo?", "onVideoSelect?"];
4453
+ };
4454
+ readonly VideoContentSection: {
4455
+ readonly path: "@/components/blocks";
4456
+ readonly description: "Video player area with metadata and description.";
4457
+ readonly props: readonly ["video: Video", "onPlay?"];
4458
+ };
4459
+ readonly YouTubePlayer: {
4460
+ readonly path: "@/components/blocks";
4461
+ readonly description: "Embedded YouTube player component.";
4462
+ readonly props: readonly ["videoId: string", "autoplay?"];
4463
+ };
4464
+ };
4465
+ declare const marketingBlocks: {
4466
+ readonly HeroSection: {
4467
+ readonly path: "@/components/blocks/marketing";
4468
+ readonly description: "Hero with background image and simple search bar overlay.";
4469
+ readonly props: readonly ["title", "subtitle", "searchPlaceholder?", "backgroundImage?"];
4470
+ };
4471
+ readonly HeroDarkWithImage: {
4472
+ readonly path: "@/components/blocks/marketing";
4473
+ readonly description: "Dark hero section with text on left and image on right.";
4474
+ readonly props: readonly ["title", "subtitle", "image"];
4475
+ };
4476
+ readonly HeroDarkCentered: {
4477
+ readonly path: "@/components/blocks/marketing";
4478
+ readonly description: "Dark centered hero with multi-field search (location, dates, guests).";
4479
+ readonly props: readonly ["title", "subtitle"];
4480
+ };
4481
+ readonly HeroFullwidthImage: {
4482
+ readonly path: "@/components/blocks/marketing";
4483
+ readonly description: "Full-width hero image with centered content and multi-field search.";
4484
+ readonly props: readonly ["title", "subtitle", "backgroundImage"];
4485
+ };
4486
+ readonly CenteredHero: {
4487
+ readonly path: "@/components/blocks/marketing";
4488
+ readonly description: "Simple centered hero for about/landing pages.";
4489
+ readonly props: readonly ["title", "subtitle?"];
4490
+ };
4491
+ readonly DestinationCards: {
4492
+ readonly path: "@/components/blocks/marketing";
4493
+ readonly description: "Grid of destination cards with images and titles.";
4494
+ readonly props: readonly ["title?", "destinations?"];
4495
+ };
4496
+ readonly FeaturedPlaces: {
4497
+ readonly path: "@/components/blocks/marketing";
4498
+ readonly description: "Featured places section with filter pills and card grid.";
4499
+ readonly props: readonly ["title?", "filters?", "places?"];
4500
+ };
4501
+ readonly CategoryGrid: {
4502
+ readonly path: "@/components/blocks/marketing";
4503
+ readonly description: "Grid of category cards with icons/images.";
4504
+ readonly props: readonly ["categories?"];
4505
+ };
4506
+ readonly GallerySection: {
4507
+ readonly path: "@/components/blocks/marketing";
4508
+ readonly description: "Image gallery with title and grid layout.";
4509
+ readonly props: readonly ["title?", "subtitle?", "images?"];
4510
+ };
4511
+ readonly BlogCards: {
4512
+ readonly path: "@/components/blocks/marketing";
4513
+ readonly description: "Grid of blog post cards with images, titles, dates.";
4514
+ readonly props: readonly ["title?", "subtitle?", "posts?"];
4515
+ };
4516
+ readonly HowItWorks: {
4517
+ readonly path: "@/components/blocks/marketing";
4518
+ readonly description: "Horizontal 3-step how it works section.";
4519
+ readonly props: readonly ["steps?"];
4520
+ };
4521
+ readonly VerticalHowItWorks: {
4522
+ readonly path: "@/components/blocks/marketing";
4523
+ readonly description: "Vertical how it works with large numbers. Has light/dark variants.";
4524
+ readonly props: readonly ["variant?: 'light' | 'dark'", "title", "description", "steps?"];
4525
+ };
4526
+ readonly TestimonialCarousel: {
4527
+ readonly path: "@/components/blocks/marketing";
4528
+ readonly description: "Dark testimonial carousel with quote, author, and navigation arrows.";
4529
+ readonly props: readonly ["testimonials?"];
4530
+ };
4531
+ readonly ReviewsGrid: {
4532
+ readonly path: "@/components/blocks/marketing";
4533
+ readonly description: "Grid of review cards with ratings and text.";
4534
+ readonly props: readonly ["title?", "subtitle?", "reviews?"];
4535
+ };
4536
+ readonly SocialProof: {
4537
+ readonly path: "@/components/blocks/marketing";
4538
+ readonly description: "Logo bar showing 'as featured on' brands.";
4539
+ readonly props: readonly ["label?", "logos?"];
4540
+ };
4541
+ readonly MetricsSection: {
4542
+ readonly path: "@/components/blocks/marketing";
4543
+ readonly description: "Row of large metric numbers with labels.";
4544
+ readonly props: readonly ["metrics?"];
4545
+ };
4546
+ readonly FeatureWithImage: {
4547
+ readonly path: "@/components/blocks/marketing";
4548
+ readonly description: "Feature highlight with image and text side by side.";
4549
+ readonly props: readonly ["title", "description", "ctaText?", "imagePosition?: 'left' | 'right'"];
4550
+ };
4551
+ readonly ContentWithImage: {
4552
+ readonly path: "@/components/blocks/marketing";
4553
+ readonly description: "Generic content section with image. Similar to FeatureWithImage.";
4554
+ readonly props: readonly ["title", "content", "image", "imagePosition?"];
4555
+ };
4556
+ readonly CoreValuesGrid: {
4557
+ readonly path: "@/components/blocks/marketing";
4558
+ readonly description: "Grid of value cards with icons and descriptions.";
4559
+ readonly props: readonly ["values?"];
4560
+ };
4561
+ readonly TeamCardsGrid: {
4562
+ readonly path: "@/components/blocks/marketing";
4563
+ readonly description: "Grid of team member cards with photos and roles.";
4564
+ readonly props: readonly ["title?", "members?"];
4565
+ };
4566
+ readonly TeamCircularGrid: {
4567
+ readonly path: "@/components/blocks/marketing";
4568
+ readonly description: "Team grid with circular avatar photos.";
4569
+ readonly props: readonly ["title?", "members?"];
4570
+ };
4571
+ readonly CtaBanner: {
4572
+ readonly path: "@/components/blocks/marketing";
4573
+ readonly description: "Call to action banner with title and button.";
4574
+ readonly props: readonly ["title", "buttonText", "onButtonClick?"];
4575
+ };
4576
+ readonly FooterNavbar: {
4577
+ readonly path: "@/components/blocks/marketing";
4578
+ readonly description: "Footer with logo, nav links, and social icons.";
4579
+ readonly props: readonly ["companyName?", "links?", "socialLinks?"];
4580
+ };
4581
+ readonly FeaturedNewsCards: {
4582
+ readonly path: "@/components/blocks/marketing";
4583
+ readonly description: "Featured news/press cards section.";
4584
+ readonly props: readonly ["title?", "articles?"];
4585
+ };
4586
+ readonly OfficeLocations: {
4587
+ readonly path: "@/components/blocks/marketing";
4588
+ readonly description: "Grid of office location cards with addresses.";
4589
+ readonly props: readonly ["title?", "locations?"];
4590
+ };
4591
+ };
4592
+ declare const pricingBlocks: {
4593
+ readonly PricingCards: {
4594
+ readonly path: "@/components/blocks/pricing";
4595
+ readonly description: "Three-tier pricing cards with monthly/annual toggle, features list, and CTA buttons.";
4596
+ readonly props: readonly ["plans?"];
4597
+ };
4598
+ readonly FaqAccordion: {
4599
+ readonly path: "@/components/blocks/pricing";
4600
+ readonly description: "Expandable FAQ accordion for pricing pages.";
4601
+ readonly props: readonly ["faqs?: FAQ[]"];
4602
+ };
4603
+ readonly FeaturesComparison: {
4604
+ readonly path: "@/components/blocks/pricing";
4605
+ readonly description: "Feature comparison table across pricing tiers.";
4606
+ readonly props: readonly ["features?", "plans?"];
4607
+ };
4608
+ readonly PricingCta: {
4609
+ readonly path: "@/components/blocks/pricing";
4610
+ readonly description: "CTA section for pricing page (contact sales, etc.).";
4611
+ readonly props: readonly ["title?", "description?", "buttonText?"];
4612
+ };
4613
+ };
4614
+ declare const pageTemplates: {
4615
+ readonly "page-admin-portal": {
4616
+ readonly path: "/page-admin-portal";
4617
+ readonly description: "Admin dashboard with dark sidebar, collapsible nav sections, and data table.";
4618
+ readonly shell: "DashboardShell";
4619
+ readonly blocks: readonly ["StandardDataTable", "Header"];
4620
+ };
4621
+ readonly "page-messenger": {
4622
+ readonly path: "/page-messenger";
4623
+ readonly description: "Full messaging interface with thread sidebar and chat area.";
4624
+ readonly shell: "custom (no shell)";
4625
+ readonly blocks: readonly ["MessengerSidebar", "ChatBubble", "ChatDateSeparator", "MessengerInput"];
4626
+ };
4627
+ readonly "page-product-homepage": {
4628
+ readonly path: "/page-product-homepage";
4629
+ readonly description: "Marketing landing page with multiple hero variations and content blocks.";
4630
+ readonly shell: "custom (no shell)";
4631
+ readonly blocks: readonly ["Header", "HeroSection", "HeroDarkWithImage", "DestinationCards", "TestimonialCarousel", "FooterNavbar"];
4632
+ };
4633
+ readonly "page-pricing": {
4634
+ readonly path: "/page-pricing";
4635
+ readonly description: "Pricing page with tier cards, FAQ, and feature comparison.";
4636
+ readonly shell: "custom (no shell)";
4637
+ readonly blocks: readonly ["Header", "PricingCards", "FaqAccordion", "FeaturesComparison"];
4638
+ };
4639
+ readonly "page-about": {
4640
+ readonly path: "/page-about";
4641
+ readonly description: "About page with hero, metrics, values, team, and locations.";
4642
+ readonly shell: "custom (no shell)";
4643
+ readonly blocks: readonly ["Header", "CenteredHero", "MetricsSection", "CoreValuesGrid", "TeamCardsGrid"];
4644
+ };
4645
+ readonly "page-account": {
4646
+ readonly path: "/page-account";
4647
+ readonly description: "Account settings with tabbed sidebar navigation.";
4648
+ readonly shell: "AccountSettingsShell";
4649
+ readonly blocks: readonly ["ProfileImageUploader", "SettingsListRow", "CreditCardDisplay"];
4650
+ };
4651
+ readonly "page-centered-profile": {
4652
+ readonly path: "/page-centered-profile";
4653
+ readonly description: "Profile page with centered layout and banner.";
4654
+ readonly shell: "StandardPageShell";
4655
+ readonly blocks: readonly ["ProfileCard", "FlairBanner"];
4656
+ };
4657
+ readonly "page-double-sidebar": {
4658
+ readonly path: "/page-double-sidebar";
4659
+ readonly description: "Dashboard with two-column sidebar navigation.";
4660
+ readonly shell: "DoubleSidebarShell";
4661
+ readonly blocks: readonly ["StandardDataTable"];
4662
+ };
4663
+ readonly "page-icon-sidebar": {
4664
+ readonly path: "/page-icon-sidebar";
4665
+ readonly description: "Dashboard with narrow icon-only sidebar.";
4666
+ readonly shell: "IconSidebarShell";
4667
+ readonly blocks: readonly ["StandardDataTable"];
4668
+ };
4669
+ readonly "page-login": {
4670
+ readonly path: "/page-login";
4671
+ readonly description: "Login page with form and branding panel.";
4672
+ readonly shell: "custom (split layout)";
4673
+ readonly blocks: readonly ["LoginBrandingPanel"];
4674
+ };
4675
+ readonly "page-standard": {
4676
+ readonly path: "/page-standard";
4677
+ readonly description: "Standard centered page with banner and tabs.";
4678
+ readonly shell: "StandardPageShell";
4679
+ readonly blocks: readonly ["FlairBanner", "PageHeaderSection"];
4680
+ };
4681
+ readonly "page-standard-multistep": {
4682
+ readonly path: "/page-standard-multistep";
4683
+ readonly description: "Multi-step form wizard with horizontal step tracker.";
4684
+ readonly shell: "MultistepShell";
4685
+ readonly blocks: readonly ["StepTracker", "ContentDropzone"];
4686
+ };
4687
+ readonly "page-video-chat": {
4688
+ readonly path: "/page-video-chat";
4689
+ readonly description: "Video conferencing interface with webcam, participants, and chat.";
4690
+ readonly shell: "custom (no shell)";
4691
+ readonly blocks: readonly ["WebcamPreview", "VideoChatControls", "ParticipantList", "ChatMessageList"];
4692
+ };
4693
+ readonly "page-video-list": {
4694
+ readonly path: "/page-video-list";
4695
+ readonly description: "Video content page with player and playlist sidebar.";
4696
+ readonly shell: "custom (no shell)";
4697
+ readonly blocks: readonly ["VideoContentSection", "VideoPlaylist", "YouTubePlayer"];
4698
+ };
4699
+ readonly "page-canvas": {
4700
+ readonly path: "/page-canvas";
4701
+ readonly description: "Figma-style infinite canvas whiteboard. Drag components from sidebar palette onto a pannable, zoomable canvas.";
4702
+ readonly shell: "custom (no shell)";
4703
+ readonly blocks: readonly ["InfinityCanvas", "ComponentPalette", "CanvasItem", "Header"];
4704
+ };
4705
+ };
4706
+
4707
+ /**
4708
+ * CSS Variable Sync Utility
4709
+ *
4710
+ * Provides functions to set CSS variables and broadcast them to iframes
4711
+ * for live preview synchronization.
4712
+ */
4713
+ /**
4714
+ * Sets a CSS variable on the document and broadcasts it to all iframes
4715
+ */
4716
+ declare function setCSSVariable(name: string, value: string): void;
4717
+ /**
4718
+ * Sets multiple CSS variables and broadcasts them to all iframes
4719
+ */
4720
+ declare function setCSSVariables(variables: Record<string, string>): void;
4721
+ /**
4722
+ * Broadcasts CSS variable changes to all iframes via postMessage
4723
+ */
4724
+ declare function broadcastCSSVariables(variables: Record<string, string>): void;
4725
+ /**
4726
+ * Hook for pages to listen for CSS variable updates from parent window
4727
+ * Call this in page layouts that might be rendered in iframes
4728
+ */
4729
+ declare function setupCSSVariableListener(): () => void;
4730
+
4731
+ /**
4732
+ * Hook that listens for CSS variable updates from parent window.
4733
+ * Use this in page layouts that might be rendered in iframes.
4734
+ *
4735
+ * @example
4736
+ * ```tsx
4737
+ * export function MyPageLayout() {
4738
+ * useCSSVariableSync();
4739
+ * return <div>...</div>;
4740
+ * }
4741
+ * ```
4742
+ */
4743
+ declare function useCSSVariableSync(): void;
4744
+
4745
+ declare function useIsMobile(): boolean;
4746
+
4747
+ type IconShapeId = "rounded" | "circle" | "square";
4748
+ interface ThemeBranding {
4749
+ iconShape: IconShapeId;
4750
+ iconName: string;
4751
+ bgColor: string;
4752
+ iconColor: string;
4753
+ wordmark: string;
4754
+ }
4755
+ interface ThemeImages {
4756
+ logoLight: string;
4757
+ logoDark: string;
4758
+ faviconLight: string;
4759
+ faviconDark: string;
4760
+ }
4761
+ interface BrandAsset {
4762
+ id: string;
4763
+ name: string;
4764
+ url: string;
4765
+ storedInPublic?: boolean;
4766
+ }
4767
+ interface ThemeContextValue {
4768
+ images: ThemeImages;
4769
+ branding: ThemeBranding;
4770
+ brandAssets: BrandAsset[];
4771
+ isMounted: boolean;
4772
+ }
4773
+ interface PreviewBrandingContextValue {
4774
+ previewBranding: ThemeBranding | null;
4775
+ setPreviewBranding: (branding: ThemeBranding | null) => void;
4776
+ }
4777
+ declare const ThemeContext: React$1.Context<ThemeContextValue>;
4778
+ declare const PreviewBrandingContext: React$1.Context<PreviewBrandingContextValue>;
4779
+ declare function useThemeImages(): ThemeImages;
4780
+ declare function useThemeBranding(): {
4781
+ branding: ThemeBranding;
4782
+ isMounted: boolean;
4783
+ };
4784
+ declare function usePreviewBranding(): PreviewBrandingContextValue;
4785
+ declare function useThemeBrandAssets(): BrandAsset[];
4786
+ interface ThemeProviderProps {
4787
+ children: ReactNode;
4788
+ images?: ThemeImages;
4789
+ branding?: ThemeBranding;
4790
+ brandAssets?: BrandAsset[];
4791
+ }
4792
+ /**
4793
+ * ThemeProvider for the SDK
4794
+ *
4795
+ * This provider allows parent applications to pass in theme values.
4796
+ * If no values are provided, sensible defaults are used.
4797
+ *
4798
+ * Usage in your app:
4799
+ * ```tsx
4800
+ * <ThemeProvider
4801
+ * images={{ logoLight: "/logo.png", ... }}
4802
+ * branding={{ wordmark: "MyApp", ... }}
4803
+ * >
4804
+ * <App />
4805
+ * </ThemeProvider>
4806
+ * ```
4807
+ */
4808
+ declare function ThemeProvider({ children, images, branding, brandAssets, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
4809
+
4810
+ export { AccountSettingsShell, type AccountTab, ActivityFeed, Avatar, AvatarFallback, AvatarImage, BadgesCard, BlogCards, BottomInputChatWidget, type BrandAsset, Button, Calendar, CanvasItem, CategoryGrid, CenteredHero, ChatBubble, type ChatBubbleMessage, ChatDateSeparator, ChatInput, ChatMessageList, Checkbox, CheckboxWithLabel, CircularProgressBar, CircularProgressBarList, type CircularProgressBarListProps, type CircularProgressBarProps, ComponentPalette, ComponentSearch, ContentDropzone, ContentWithImage, CoreValuesGrid, CreditCardDisplay, CtaBanner, type CustomButtonStyle, CustomComponentHelper, DashboardHeader, type DashboardHeaderProps, DashboardShell, DateInput, DescriptionCard, DestinationCards, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, type DonutChartLegendItem, DonutChartWidget, type DonutChartWidgetProps, DoubleSidebar, type DoubleSidebarSection, DoubleSidebarShell, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FaqAccordion, FaqsTable, FeatureWithImage, FeaturedNewsCards, FeaturedPlaces, FeaturesComparison, FileUploader, type FilterCheckboxGroupConfig, type FilterDateRangeConfig, type FilterDropdownConfig, type FilterOption$c as FilterOption, FilterPopover, type FilterState, FixedColumnDataTable, FlairBanner, FooterNavbar, FormGroup, GallerySection, GradientBanner, GraphMetricTilesDemo, type GraphMetricTilesDemoProps, GridTilesList, Header, HeroDarkCentered, HeroDarkWithImage, HeroFullwidthImage, HeroSection, HowItWorks, type IconNavItemConfig, type IconShapeId, IconSidebar, IconSidebarShell, ImageFeedWithNestedComments, type ImageKey, ImageUploader, InfoCard, type InfoCardProps, Input, Label, LargeImageLabelsList, Sidebar as LayoutSidebar, LineChartWidget, type LineChartWidgetProps, type LineTab, LineTabs, type LinkItem, LinksCard, type LinksCardProps, Loader, LoginBrandingPanel, MenuSection, type MenufocusItem, MenufocusTemplate, type MenufocusTemplateProps, MessengerInput, MessengerSidebar, MetricCard, type MetricCardData, type MetricCardProps, MetricCardsRow, type MetricCardsRowProps, MetricListCard, type MetricListCardProps, type MetricListItem, MetricsSection, MobileBottomNav, MobileMenuShell, type MobileNavTabConfig, MonthlyCalendarWidget, MultiselectCheckboxField, MultiselectTags, MultistepProgressBarShell, type MultistepProgressBarShellProps, type MultistepProgressBarStep, MultistepShell, MultistepSidebarShell, type NavItem, type NavSection, type NavTab, NestedCommentsTable, NestedDataTable, OfficeLocations, PageHeaderSection, Pagination, ParticipantList, type Persona, PersonaCard, PersonaGrid, PillTabs, type PillTabsProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortfolioCard, PreviewBrandingContext, PricingCards, PricingCta, ProfileCard, ProfileGridTilesList, ProfileImageUploader, ProgressBar, type ProgressBarItem, ProgressMetricCard, type ProgressMetricCardProps, type ProjectContext, ProjectContextShell, type ProjectContextTab, PromptChipsRow, PromptTemplate, RadioGroup, RadioGroupItem, RangeInput, ReviewsGrid, ReviewsTable, type Screen, type ScreenConnection, ScreenFlowchart, ScreenPromptBuilder, ScreenPromptTemplate, type ScreenStatus, type ScreenType, ScrollArea, ScrollBar, SearchBar, SearchBarShell, SearchSidebar, Searchbox, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectablePills, Separator, SettingsListRow, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar$1 as Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarNav, SidebarProfileCard, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, SkillsCard, Slider, SlideshowGridTiles, SocialFeed, SocialProof, type SortOption$b as SortOption, StandardDataTable, StandardListWithImage, StandardPageShell, StatsCard, type Step, StepTracker, Switch, type TableColumn, type TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TeamCardsGrid, TeamCircularGrid, TestimonialCarousel, TextInput, Textarea, type ThemeBranding, ThemeContext, type ThemeImages, ThemeProvider, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TwoColumnWidgets, type TwoColumnWidgetsProps, Typography, UpvotingPostsTable, VerticalHowItWorks, VerticalMultistepShell, VerticalStepTracker, VideoChatControls, VideoContentSection, VideoPlaylistCard, VideoPlaylistItem, WebcamPreview, YouTubePlayer, accountTabs, allColorVariables, blocks, broadcastCSSVariables, buttonVariants, canvasBlocks, cn, colorVariables, defaultBranding, defaultButtonColorStyles, defaultButtonColors, defaultButtonSizes, defaultColors, defaultCustomButtonStyles, defaultDoubleSidebarSections, defaultIconNavItems, defaultImages, defaultInputSizes, defaultProgressBarSteps, defaultSteps, defaultSupportLinks, defaultTypography, defaultVerticalSteps, getChildScreens, getScreenUrl, getTopLevelScreens, groupModalDrawerBlocks, layoutPrimitives, layoutShells, marketingBlocks, pageTemplates, pricingBlocks, setCSSVariable, setCSSVariables, setupCSSVariableListener, useCSSVariableSync, useIsMobile, usePreviewBranding, useSidebar, useThemeBrandAssets, useThemeBranding, useThemeImages, videoBlocks };