canvas-ui-sdk 0.3.21 → 0.3.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +680 -15
- package/dist/index.js +6522 -1771
- package/dist/index.js.map +1 -1
- package/mcp/dist/index.js +14 -4
- package/package.json +1 -1
- package/registry/blocks/confirmation-popup.json +18 -0
- package/registry/blocks/contact-form-popup.json +24 -0
- package/registry/blocks/detail-drawer.json +21 -0
- package/registry/blocks/details-popup.json +17 -0
- package/registry/blocks/feedback-popup.json +19 -0
- package/registry/blocks/form-group.json +2 -2
- package/registry/blocks/hero-fullwidth-image.json +1 -1
- package/registry/blocks/hero-section.json +1 -1
- package/registry/blocks/image-popup.json +17 -0
- package/registry/blocks/invoice-popup.json +20 -0
- package/registry/blocks/monthly-calendar-widget.json +1 -1
- package/registry/blocks/page-previews.json +1 -1
- package/registry/blocks/place-detail-panel.json +22 -0
- package/registry/blocks/pricing-cta.json +1 -1
- package/registry/blocks/pricing-plans-popup.json +18 -0
- package/registry/blocks/profile-image-uploader.json +1 -1
- package/registry/blocks/purchase-confirmation-popup.json +18 -0
- package/registry/blocks/sidebar-profile-card.json +1 -1
- package/registry/blocks/slideshow-popup.json +22 -0
- package/registry/blocks/store-location-map.json +18 -0
- package/registry/blocks/terms-of-service-popup.json +18 -0
- package/registry/blocks/video-popup.json +18 -0
- package/registry/blocks/view-profile-popup.json +23 -0
- package/registry/index.json +76 -1
- package/registry/layout/dashboard-shell.json +1 -1
- package/registry/layout/double-sidebar-shell.json +1 -1
- package/registry/layout/header.json +1 -1
- package/registry/layout/icon-sidebar-shell.json +1 -1
- package/registry/layout/mobile-menu-shell.json +1 -1
- package/registry/layout/sidebar.json +1 -1
- package/registry/ui/checkbox.json +1 -1
- package/registry/ui/date-input.json +1 -1
- package/registry/ui/dialog.json +1 -1
- package/registry/ui/dropdown-menu.json +1 -1
- package/registry/ui/input.json +1 -1
- package/registry/ui/label.json +1 -1
- package/registry/ui/line-tabs.json +1 -1
- package/registry/ui/multiselect-checkbox-field.json +1 -1
- package/registry/ui/multiselect-tags.json +1 -1
- package/registry/ui/popover.json +1 -1
- package/registry/ui/searchbox.json +1 -1
- package/registry/ui/select.json +1 -1
- package/registry/ui/selectable-pills.json +1 -1
- package/registry/ui/sheet.json +1 -1
- package/registry/ui/tabs.json +1 -1
- package/registry/ui/text-input.json +1 -1
- package/registry/ui/textarea.json +1 -1
- package/registry/ui/tooltip.json +1 -1
- package/styles/tokens.reference.css +5 -2
package/dist/index.d.ts
CHANGED
|
@@ -1490,6 +1490,28 @@ interface EmptyStateProps {
|
|
|
1490
1490
|
}
|
|
1491
1491
|
declare function EmptyState({ icon, title, description, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
1492
1492
|
|
|
1493
|
+
interface StoreLocationMapProps {
|
|
1494
|
+
/** Section heading rendered by TitleGroup */
|
|
1495
|
+
title?: string;
|
|
1496
|
+
/** Section subheading rendered by TitleGroup */
|
|
1497
|
+
subtitle?: string;
|
|
1498
|
+
/** Label above the store name (e.g. "Main store", "Flagship") */
|
|
1499
|
+
storeLabel?: string;
|
|
1500
|
+
/** Store name displayed prominently */
|
|
1501
|
+
storeName?: string;
|
|
1502
|
+
/** Array of address lines */
|
|
1503
|
+
addressLines?: string[];
|
|
1504
|
+
/** Text for the directions button */
|
|
1505
|
+
buttonText?: string;
|
|
1506
|
+
/** Callback when the directions button is clicked */
|
|
1507
|
+
onDirectionsClick?: () => void;
|
|
1508
|
+
/** Google Maps embed URL (or any embeddable map URL) for the right panel */
|
|
1509
|
+
mapEmbedUrl?: string;
|
|
1510
|
+
/** Additional class names for the root wrapper */
|
|
1511
|
+
className?: string;
|
|
1512
|
+
}
|
|
1513
|
+
declare function StoreLocationMap({ title, subtitle, storeLabel, storeName, addressLines, buttonText, onDirectionsClick, mapEmbedUrl, className, }: StoreLocationMapProps): react_jsx_runtime.JSX.Element;
|
|
1514
|
+
|
|
1493
1515
|
interface MenuSectionProps {
|
|
1494
1516
|
/** Array of menu items */
|
|
1495
1517
|
items: Array<{
|
|
@@ -3202,13 +3224,8 @@ interface FormFieldConfig {
|
|
|
3202
3224
|
min?: number;
|
|
3203
3225
|
max?: number;
|
|
3204
3226
|
step?: number;
|
|
3205
|
-
fullWidth?: boolean;
|
|
3206
3227
|
disabled?: boolean;
|
|
3207
3228
|
}
|
|
3208
|
-
interface FormRowConfig {
|
|
3209
|
-
id: string;
|
|
3210
|
-
fields: FormFieldConfig[];
|
|
3211
|
-
}
|
|
3212
3229
|
interface SortOption {
|
|
3213
3230
|
id: string;
|
|
3214
3231
|
label: string;
|
|
@@ -3218,8 +3235,8 @@ interface FormGroupProps {
|
|
|
3218
3235
|
title?: string;
|
|
3219
3236
|
/** Form description */
|
|
3220
3237
|
description?: string;
|
|
3221
|
-
/**
|
|
3222
|
-
|
|
3238
|
+
/** Flat array of field configurations */
|
|
3239
|
+
fields?: FormFieldConfig[];
|
|
3223
3240
|
/** Sort options for the sort dropdown */
|
|
3224
3241
|
sortOptions?: SortOption[];
|
|
3225
3242
|
/** Filter options for the filter dropdown */
|
|
@@ -3254,24 +3271,239 @@ interface FormGroupProps {
|
|
|
3254
3271
|
/** Additional class names */
|
|
3255
3272
|
className?: string;
|
|
3256
3273
|
}
|
|
3274
|
+
interface FormFieldProps {
|
|
3275
|
+
field: FormFieldConfig;
|
|
3276
|
+
inputSize?: "sm" | "default" | "lg";
|
|
3277
|
+
onChange?: (fieldId: string, value: unknown) => void;
|
|
3278
|
+
}
|
|
3279
|
+
declare function FormField({ field, inputSize, onChange }: FormFieldProps): react_jsx_runtime.JSX.Element;
|
|
3257
3280
|
/**
|
|
3258
3281
|
* Canvas Design System - Form Group Block
|
|
3259
3282
|
*
|
|
3260
|
-
* A
|
|
3261
|
-
*
|
|
3262
|
-
*
|
|
3283
|
+
* A single-column form layout block with configurable fields, header section
|
|
3284
|
+
* (title, description, sort/filter, action button), and footer with action buttons.
|
|
3285
|
+
* Supports text inputs, textareas, selects, date pickers, multiselect checkboxes,
|
|
3286
|
+
* checkbox groups, radio groups, multiselect tags, image/file uploaders, and sliders.
|
|
3263
3287
|
*
|
|
3264
3288
|
* @example
|
|
3265
3289
|
* ```tsx
|
|
3266
3290
|
* <FormGroup
|
|
3267
3291
|
* title="Create Entry"
|
|
3268
3292
|
* description="Fill in the details below"
|
|
3293
|
+
* fields={[
|
|
3294
|
+
* { id: "name", label: "Name", type: "text" },
|
|
3295
|
+
* { id: "bio", label: "Bio", type: "textarea" },
|
|
3296
|
+
* ]}
|
|
3269
3297
|
* onSave={() => console.log("Save")}
|
|
3270
3298
|
* onCancel={() => console.log("Cancel")}
|
|
3271
3299
|
* />
|
|
3272
3300
|
* ```
|
|
3273
3301
|
*/
|
|
3274
|
-
declare function FormGroup({ title, description,
|
|
3302
|
+
declare function FormGroup({ title, description, fields, sortOptions, actionButtonText, cancelButtonText, saveButtonText, inputSize, onAddNew, onSort, onCancel, onSave, onFieldChange, showHeader, showFooter, className, }: FormGroupProps): react_jsx_runtime.JSX.Element;
|
|
3303
|
+
|
|
3304
|
+
interface ConfirmationPopupProps {
|
|
3305
|
+
/** Controls dialog visibility */
|
|
3306
|
+
open?: boolean;
|
|
3307
|
+
/** Callback when dialog open state changes */
|
|
3308
|
+
onOpenChange?: (open: boolean) => void;
|
|
3309
|
+
/** Dialog title */
|
|
3310
|
+
title?: string;
|
|
3311
|
+
/** Descriptive body text */
|
|
3312
|
+
description?: string;
|
|
3313
|
+
/** Confirm button label — when omitted the dialog renders a single dismiss button (message mode) */
|
|
3314
|
+
confirmLabel?: string;
|
|
3315
|
+
/** Cancel / dismiss button label */
|
|
3316
|
+
cancelLabel?: string;
|
|
3317
|
+
/** Controls the confirm button style — "destructive" uses the delete variant, "default" uses primary */
|
|
3318
|
+
variant?: "destructive" | "default";
|
|
3319
|
+
/** Callback when the confirm button is clicked */
|
|
3320
|
+
onConfirm?: () => void;
|
|
3321
|
+
/** Callback when the cancel / dismiss button is clicked */
|
|
3322
|
+
onCancel?: () => void;
|
|
3323
|
+
/** Disables the confirm button and shows a loading state */
|
|
3324
|
+
loading?: boolean;
|
|
3325
|
+
/** Additional class names */
|
|
3326
|
+
className?: string;
|
|
3327
|
+
}
|
|
3328
|
+
declare function ConfirmationPopup({ open, onOpenChange, title, description, confirmLabel, cancelLabel, variant, onConfirm, onCancel, loading, className, }: ConfirmationPopupProps): react_jsx_runtime.JSX.Element;
|
|
3329
|
+
|
|
3330
|
+
interface ContactFormField {
|
|
3331
|
+
/** Unique field identifier, used as key in the submitted values record */
|
|
3332
|
+
id: string;
|
|
3333
|
+
/** Label text displayed above the field */
|
|
3334
|
+
label: string;
|
|
3335
|
+
/** Input type — "textarea" renders a Textarea, all others render an Input */
|
|
3336
|
+
type?: "text" | "email" | "tel" | "textarea";
|
|
3337
|
+
/** Placeholder text */
|
|
3338
|
+
placeholder?: string;
|
|
3339
|
+
/** Whether the field is required */
|
|
3340
|
+
required?: boolean;
|
|
3341
|
+
/** When true the field takes 50% width and sits side-by-side with the next half field */
|
|
3342
|
+
half?: boolean;
|
|
3343
|
+
}
|
|
3344
|
+
interface ContactFormPopupProps {
|
|
3345
|
+
/** Controls dialog visibility */
|
|
3346
|
+
open?: boolean;
|
|
3347
|
+
/** Callback when dialog open state changes */
|
|
3348
|
+
onOpenChange?: (open: boolean) => void;
|
|
3349
|
+
/** Contact name displayed in the title */
|
|
3350
|
+
name?: string;
|
|
3351
|
+
/** Descriptive text below the title */
|
|
3352
|
+
description?: string;
|
|
3353
|
+
/** Avatar image URL */
|
|
3354
|
+
avatarUrl?: string;
|
|
3355
|
+
/** Avatar fallback initials */
|
|
3356
|
+
avatarFallback?: string;
|
|
3357
|
+
/** Form field configuration */
|
|
3358
|
+
fields?: ContactFormField[];
|
|
3359
|
+
/** Submit button label */
|
|
3360
|
+
submitLabel?: string;
|
|
3361
|
+
/** Cancel button label */
|
|
3362
|
+
cancelLabel?: string;
|
|
3363
|
+
/** Callback when the form is submitted — receives a record of field id → value */
|
|
3364
|
+
onSubmit?: (values: Record<string, string>) => void;
|
|
3365
|
+
/** Callback when the cancel button is clicked */
|
|
3366
|
+
onCancel?: () => void;
|
|
3367
|
+
/** Disables the submit button */
|
|
3368
|
+
loading?: boolean;
|
|
3369
|
+
/** Additional class names for the dialog content */
|
|
3370
|
+
className?: string;
|
|
3371
|
+
}
|
|
3372
|
+
declare function ContactFormPopup({ open, onOpenChange, name, description, avatarUrl, avatarFallback, fields, submitLabel, cancelLabel, onSubmit, onCancel, loading, className, }: ContactFormPopupProps): react_jsx_runtime.JSX.Element;
|
|
3373
|
+
|
|
3374
|
+
interface FeedbackPopupProps {
|
|
3375
|
+
/** Controls dialog visibility */
|
|
3376
|
+
open?: boolean;
|
|
3377
|
+
/** Callback when dialog open state changes */
|
|
3378
|
+
onOpenChange?: (open: boolean) => void;
|
|
3379
|
+
/** Dialog title */
|
|
3380
|
+
title?: string;
|
|
3381
|
+
/** Descriptive body text */
|
|
3382
|
+
description?: string;
|
|
3383
|
+
/** Submit button label */
|
|
3384
|
+
submitLabel?: string;
|
|
3385
|
+
/** Cancel button label */
|
|
3386
|
+
cancelLabel?: string;
|
|
3387
|
+
/** Textarea placeholder text */
|
|
3388
|
+
placeholder?: string;
|
|
3389
|
+
/** Callback when the submit button is clicked — receives the textarea value */
|
|
3390
|
+
onSubmit?: (value: string) => void;
|
|
3391
|
+
/** Callback when the cancel button is clicked */
|
|
3392
|
+
onCancel?: () => void;
|
|
3393
|
+
/** Disables the submit button and indicates a loading state */
|
|
3394
|
+
loading?: boolean;
|
|
3395
|
+
/** Controlled textarea value */
|
|
3396
|
+
value?: string;
|
|
3397
|
+
/** Controlled textarea change handler */
|
|
3398
|
+
onChange?: (value: string) => void;
|
|
3399
|
+
/** Additional class names */
|
|
3400
|
+
className?: string;
|
|
3401
|
+
}
|
|
3402
|
+
/**
|
|
3403
|
+
* A centered modal popup for collecting free-text feedback from users.
|
|
3404
|
+
*
|
|
3405
|
+
* @example
|
|
3406
|
+
* ```tsx
|
|
3407
|
+
* const [open, setOpen] = useState(false);
|
|
3408
|
+
*
|
|
3409
|
+
* <FeedbackPopup
|
|
3410
|
+
* open={open}
|
|
3411
|
+
* onOpenChange={setOpen}
|
|
3412
|
+
* onSubmit={(value) => console.log("Feedback:", value)}
|
|
3413
|
+
* />
|
|
3414
|
+
* ```
|
|
3415
|
+
*/
|
|
3416
|
+
declare function FeedbackPopup({ open, onOpenChange, title, description, submitLabel, cancelLabel, placeholder, onSubmit, onCancel, loading, value, onChange, className, }: FeedbackPopupProps): react_jsx_runtime.JSX.Element;
|
|
3417
|
+
|
|
3418
|
+
interface DetailField {
|
|
3419
|
+
/** Field label */
|
|
3420
|
+
label: string;
|
|
3421
|
+
/** Plain text value */
|
|
3422
|
+
value?: string;
|
|
3423
|
+
/** Avatar to show next to the value */
|
|
3424
|
+
avatar?: {
|
|
3425
|
+
src: string;
|
|
3426
|
+
fallback: string;
|
|
3427
|
+
};
|
|
3428
|
+
/** Status badge */
|
|
3429
|
+
badge?: {
|
|
3430
|
+
text: string;
|
|
3431
|
+
variant: "default" | "success" | "warning" | "danger";
|
|
3432
|
+
};
|
|
3433
|
+
/** Render the value as a link */
|
|
3434
|
+
isLink?: boolean;
|
|
3435
|
+
href?: string;
|
|
3436
|
+
}
|
|
3437
|
+
interface DrawerAttachment {
|
|
3438
|
+
id: string;
|
|
3439
|
+
/** File name */
|
|
3440
|
+
name: string;
|
|
3441
|
+
/** File type label (e.g. "DOC", "PDF", "IMG") */
|
|
3442
|
+
type: string;
|
|
3443
|
+
/** Who uploaded the file */
|
|
3444
|
+
uploadedBy: string;
|
|
3445
|
+
url?: string;
|
|
3446
|
+
}
|
|
3447
|
+
interface DrawerComment {
|
|
3448
|
+
id: string;
|
|
3449
|
+
senderName: string;
|
|
3450
|
+
senderAvatar?: string;
|
|
3451
|
+
content: string;
|
|
3452
|
+
timestamp: string;
|
|
3453
|
+
/** true = current user's message (right-aligned, primary bg) */
|
|
3454
|
+
isSent: boolean;
|
|
3455
|
+
}
|
|
3456
|
+
interface DrawerTab {
|
|
3457
|
+
id: string;
|
|
3458
|
+
label: string;
|
|
3459
|
+
}
|
|
3460
|
+
interface DetailDrawerProps {
|
|
3461
|
+
/** Controls drawer visibility */
|
|
3462
|
+
open?: boolean;
|
|
3463
|
+
onOpenChange?: (open: boolean) => void;
|
|
3464
|
+
/** Drawer title */
|
|
3465
|
+
title?: string;
|
|
3466
|
+
/** Subtitle shown below the title */
|
|
3467
|
+
subtitle?: string;
|
|
3468
|
+
/** Tab definitions – defaults to Info / Comments */
|
|
3469
|
+
tabs?: DrawerTab[];
|
|
3470
|
+
/** Controlled active tab */
|
|
3471
|
+
activeTab?: string;
|
|
3472
|
+
onTabChange?: (tabId: string) => void;
|
|
3473
|
+
/** Detail fields displayed in the Info tab – each inner array is a row of 1-2 fields */
|
|
3474
|
+
detailFields?: DetailField[][];
|
|
3475
|
+
/** Rich content sections below the fields (e.g., "Scope of work") */
|
|
3476
|
+
richContent?: {
|
|
3477
|
+
title: string;
|
|
3478
|
+
content: React__default.ReactNode;
|
|
3479
|
+
}[];
|
|
3480
|
+
/** Attachments shown at the bottom of the Info tab */
|
|
3481
|
+
attachments?: DrawerAttachment[];
|
|
3482
|
+
/** Comments shown in the Comments tab */
|
|
3483
|
+
comments?: DrawerComment[];
|
|
3484
|
+
/** Placeholder text for the comment input */
|
|
3485
|
+
commentPlaceholder?: string;
|
|
3486
|
+
/** Callback when a comment is submitted */
|
|
3487
|
+
onComment?: (text: string) => void;
|
|
3488
|
+
/** Callback when an attachment download is clicked */
|
|
3489
|
+
onAttachmentDownload?: (attachment: DrawerAttachment) => void;
|
|
3490
|
+
className?: string;
|
|
3491
|
+
}
|
|
3492
|
+
/**
|
|
3493
|
+
* A right-side detail drawer with tabbed content — an Info tab for metadata,
|
|
3494
|
+
* rich content, and attachments, and a Comments tab with a chat-style thread.
|
|
3495
|
+
*
|
|
3496
|
+
* @example
|
|
3497
|
+
* ```tsx
|
|
3498
|
+
* <DetailDrawer
|
|
3499
|
+
* open={open}
|
|
3500
|
+
* onOpenChange={setOpen}
|
|
3501
|
+
* title="Acme Website Redesign"
|
|
3502
|
+
* subtitle="Project ID: PRJ2024-1121"
|
|
3503
|
+
* />
|
|
3504
|
+
* ```
|
|
3505
|
+
*/
|
|
3506
|
+
declare function DetailDrawer({ open, onOpenChange, title, subtitle, tabs, activeTab, onTabChange, detailFields, richContent, attachments, comments, commentPlaceholder, onComment, onAttachmentDownload, className, }: DetailDrawerProps): react_jsx_runtime.JSX.Element;
|
|
3275
3507
|
|
|
3276
3508
|
interface PricedDate {
|
|
3277
3509
|
date: Date;
|
|
@@ -3580,6 +3812,390 @@ interface MenufocusTemplateProps {
|
|
|
3580
3812
|
*/
|
|
3581
3813
|
declare function MenufocusTemplate({ items, ariaLabel, size, className, align, }: MenufocusTemplateProps): react_jsx_runtime.JSX.Element;
|
|
3582
3814
|
|
|
3815
|
+
interface PurchaseConfirmationPopupProps {
|
|
3816
|
+
/** Controls dialog visibility */
|
|
3817
|
+
open?: boolean;
|
|
3818
|
+
/** Callback when dialog open state changes */
|
|
3819
|
+
onOpenChange?: (open: boolean) => void;
|
|
3820
|
+
/** Dialog title */
|
|
3821
|
+
title?: string;
|
|
3822
|
+
/** Descriptive body text — supports React nodes for inline bold/emphasis */
|
|
3823
|
+
description?: React__default.ReactNode;
|
|
3824
|
+
/** Label for the card field */
|
|
3825
|
+
cardLabel?: string;
|
|
3826
|
+
/** Masked card number to display (e.g. "**** **** **** 8274") */
|
|
3827
|
+
cardLastFour?: string;
|
|
3828
|
+
/** Label for the change-card button */
|
|
3829
|
+
changeCardLabel?: string;
|
|
3830
|
+
/** Callback when the "Change" card button is clicked */
|
|
3831
|
+
onChangeCard?: () => void;
|
|
3832
|
+
/** Confirm button label */
|
|
3833
|
+
confirmLabel?: string;
|
|
3834
|
+
/** Cancel button label */
|
|
3835
|
+
cancelLabel?: string;
|
|
3836
|
+
/** Callback when the confirm button is clicked */
|
|
3837
|
+
onConfirm?: () => void;
|
|
3838
|
+
/** Callback when the cancel button is clicked */
|
|
3839
|
+
onCancel?: () => void;
|
|
3840
|
+
/** Disables the confirm button and shows a loading state */
|
|
3841
|
+
loading?: boolean;
|
|
3842
|
+
/** Additional class names */
|
|
3843
|
+
className?: string;
|
|
3844
|
+
}
|
|
3845
|
+
declare function PurchaseConfirmationPopup({ open, onOpenChange, title, description, cardLabel, cardLastFour, changeCardLabel, onChangeCard, confirmLabel, cancelLabel, onConfirm, onCancel, loading, className, }: PurchaseConfirmationPopupProps): react_jsx_runtime.JSX.Element;
|
|
3846
|
+
|
|
3847
|
+
interface InvoiceLineItem {
|
|
3848
|
+
description: string;
|
|
3849
|
+
quantity: number;
|
|
3850
|
+
amount: string;
|
|
3851
|
+
}
|
|
3852
|
+
interface InvoicePopupProps {
|
|
3853
|
+
/** Controls dialog visibility */
|
|
3854
|
+
open?: boolean;
|
|
3855
|
+
/** Callback when dialog open state changes */
|
|
3856
|
+
onOpenChange?: (open: boolean) => void;
|
|
3857
|
+
/** Custom logo icon — defaults to a grid icon */
|
|
3858
|
+
logoIcon?: React__default.ReactNode;
|
|
3859
|
+
/** Invoice title */
|
|
3860
|
+
title?: string;
|
|
3861
|
+
/** Invoice subtitle / description */
|
|
3862
|
+
subtitle?: string;
|
|
3863
|
+
/** Invoice number */
|
|
3864
|
+
invoiceNumber?: string;
|
|
3865
|
+
/** Invoice date */
|
|
3866
|
+
invoiceDate?: string;
|
|
3867
|
+
/** Recipient name */
|
|
3868
|
+
recipientName?: string;
|
|
3869
|
+
/** Recipient address */
|
|
3870
|
+
recipientAddress?: string;
|
|
3871
|
+
/** Line items to display in the table */
|
|
3872
|
+
lineItems?: InvoiceLineItem[];
|
|
3873
|
+
/** Formatted subtotal */
|
|
3874
|
+
subtotal?: string;
|
|
3875
|
+
/** Formatted discount (e.g. "-$300") — rendered in destructive color */
|
|
3876
|
+
discount?: string;
|
|
3877
|
+
/** Formatted total */
|
|
3878
|
+
total?: string;
|
|
3879
|
+
/** Action button label */
|
|
3880
|
+
actionLabel?: string;
|
|
3881
|
+
/** Callback when the action button is clicked */
|
|
3882
|
+
onAction?: () => void;
|
|
3883
|
+
/** Disables the action button */
|
|
3884
|
+
loading?: boolean;
|
|
3885
|
+
/** Additional class names */
|
|
3886
|
+
className?: string;
|
|
3887
|
+
}
|
|
3888
|
+
declare function InvoicePopup({ open, onOpenChange, logoIcon, title, subtitle, invoiceNumber, invoiceDate, recipientName, recipientAddress, lineItems, subtotal, discount, total, actionLabel, onAction, loading, className, }: InvoicePopupProps): react_jsx_runtime.JSX.Element;
|
|
3889
|
+
|
|
3890
|
+
type BillingPeriod = "monthly" | "annually";
|
|
3891
|
+
interface PricingPlan {
|
|
3892
|
+
/** Unique plan identifier */
|
|
3893
|
+
id: string;
|
|
3894
|
+
/** Display name (e.g. "Basic", "Professional") */
|
|
3895
|
+
name: string;
|
|
3896
|
+
/** Monthly price in dollars */
|
|
3897
|
+
monthlyPrice: number;
|
|
3898
|
+
/** Annual price in dollars — defaults to monthlyPrice * 12 if omitted */
|
|
3899
|
+
annualPrice?: number;
|
|
3900
|
+
/** Short description of what the plan includes */
|
|
3901
|
+
description: string;
|
|
3902
|
+
}
|
|
3903
|
+
interface PricingPlansPopupProps {
|
|
3904
|
+
/** Controls dialog visibility */
|
|
3905
|
+
open?: boolean;
|
|
3906
|
+
/** Callback when dialog open state changes */
|
|
3907
|
+
onOpenChange?: (open: boolean) => void;
|
|
3908
|
+
/** Dialog title */
|
|
3909
|
+
title?: string;
|
|
3910
|
+
/** Descriptive body text below the title */
|
|
3911
|
+
description?: string;
|
|
3912
|
+
/** Array of plan options to display as radio cards */
|
|
3913
|
+
plans?: PricingPlan[];
|
|
3914
|
+
/** Currently selected billing period (controlled) */
|
|
3915
|
+
billingPeriod?: BillingPeriod;
|
|
3916
|
+
/** Default billing period when uncontrolled */
|
|
3917
|
+
defaultBillingPeriod?: BillingPeriod;
|
|
3918
|
+
/** Callback when billing period changes */
|
|
3919
|
+
onBillingPeriodChange?: (period: BillingPeriod) => void;
|
|
3920
|
+
/** Currently selected plan ID (controlled) */
|
|
3921
|
+
selectedPlanId?: string;
|
|
3922
|
+
/** Default selected plan ID when uncontrolled */
|
|
3923
|
+
defaultSelectedPlanId?: string;
|
|
3924
|
+
/** Callback when selected plan changes */
|
|
3925
|
+
onPlanChange?: (planId: string) => void;
|
|
3926
|
+
/** Save/confirm button label */
|
|
3927
|
+
confirmLabel?: string;
|
|
3928
|
+
/** Cancel button label */
|
|
3929
|
+
cancelLabel?: string;
|
|
3930
|
+
/** Callback when save button is clicked — receives the selected plan ID and billing period */
|
|
3931
|
+
onConfirm?: (planId: string, billingPeriod: BillingPeriod) => void;
|
|
3932
|
+
/** Callback when cancel button is clicked */
|
|
3933
|
+
onCancel?: () => void;
|
|
3934
|
+
/** Disables the confirm button and shows a loading state */
|
|
3935
|
+
loading?: boolean;
|
|
3936
|
+
/** Additional class names */
|
|
3937
|
+
className?: string;
|
|
3938
|
+
}
|
|
3939
|
+
declare function PricingPlansPopup({ open, onOpenChange, title, description, plans, billingPeriod, defaultBillingPeriod, onBillingPeriodChange, selectedPlanId, defaultSelectedPlanId, onPlanChange, confirmLabel, cancelLabel, onConfirm, onCancel, loading, className, }: PricingPlansPopupProps): react_jsx_runtime.JSX.Element;
|
|
3940
|
+
|
|
3941
|
+
interface ProfileDetailRow {
|
|
3942
|
+
/** Label displayed on the left side of the row */
|
|
3943
|
+
label: string;
|
|
3944
|
+
/** Text value(s) — string for single line, string[] for multi-line */
|
|
3945
|
+
value: string | string[];
|
|
3946
|
+
/** Rendering mode: "text" (default), "tags" for pill badges, "icons" for social media icons */
|
|
3947
|
+
type?: "text" | "tags" | "icons";
|
|
3948
|
+
}
|
|
3949
|
+
interface ViewProfilePopupProps {
|
|
3950
|
+
/** Controls dialog visibility */
|
|
3951
|
+
open?: boolean;
|
|
3952
|
+
/** Callback when dialog open state changes */
|
|
3953
|
+
onOpenChange?: (open: boolean) => void;
|
|
3954
|
+
/** Profile name */
|
|
3955
|
+
name?: string;
|
|
3956
|
+
/** Subtitle text below the name (e.g. role/title) */
|
|
3957
|
+
subtitle?: string;
|
|
3958
|
+
/** Avatar image URL */
|
|
3959
|
+
avatarUrl?: string;
|
|
3960
|
+
/** Avatar fallback initials */
|
|
3961
|
+
avatarFallback?: string;
|
|
3962
|
+
/** Star rating from 0 to 5 */
|
|
3963
|
+
rating?: number;
|
|
3964
|
+
/** Detail rows to display */
|
|
3965
|
+
details?: ProfileDetailRow[];
|
|
3966
|
+
/** "View profile" link href */
|
|
3967
|
+
profileUrl?: string;
|
|
3968
|
+
/** Label for the profile link */
|
|
3969
|
+
profileLinkLabel?: string;
|
|
3970
|
+
/** Callback when the Message button is clicked */
|
|
3971
|
+
onMessage?: () => void;
|
|
3972
|
+
/** Callback when the more options button is clicked */
|
|
3973
|
+
onMoreOptions?: () => void;
|
|
3974
|
+
/** Additional class names */
|
|
3975
|
+
className?: string;
|
|
3976
|
+
}
|
|
3977
|
+
declare function ViewProfilePopup({ open, onOpenChange, name, subtitle, avatarUrl, avatarFallback, rating, details, profileUrl, profileLinkLabel, onMessage, onMoreOptions, className, }: ViewProfilePopupProps): react_jsx_runtime.JSX.Element;
|
|
3978
|
+
|
|
3979
|
+
interface TermsOfServicePopupProps {
|
|
3980
|
+
/** Controls dialog visibility */
|
|
3981
|
+
open?: boolean;
|
|
3982
|
+
/** Callback when dialog open state changes */
|
|
3983
|
+
onOpenChange?: (open: boolean) => void;
|
|
3984
|
+
/** Dialog title */
|
|
3985
|
+
title?: string;
|
|
3986
|
+
/** The scrollable terms content — accepts a string or React nodes */
|
|
3987
|
+
children?: React__default.ReactNode;
|
|
3988
|
+
/** Confirm / accept button label */
|
|
3989
|
+
confirmLabel?: string;
|
|
3990
|
+
/** Cancel / decline button label */
|
|
3991
|
+
cancelLabel?: string;
|
|
3992
|
+
/** Callback when the confirm button is clicked */
|
|
3993
|
+
onConfirm?: () => void;
|
|
3994
|
+
/** Callback when the cancel button is clicked */
|
|
3995
|
+
onCancel?: () => void;
|
|
3996
|
+
/** Disables the confirm button and shows a loading state */
|
|
3997
|
+
loading?: boolean;
|
|
3998
|
+
/** Additional class names */
|
|
3999
|
+
className?: string;
|
|
4000
|
+
}
|
|
4001
|
+
declare function TermsOfServicePopup({ open, onOpenChange, title, children, confirmLabel, cancelLabel, onConfirm, onCancel, loading, className, }: TermsOfServicePopupProps): react_jsx_runtime.JSX.Element;
|
|
4002
|
+
|
|
4003
|
+
interface DetailItem {
|
|
4004
|
+
/** Label displayed on the left side of the row */
|
|
4005
|
+
label: string;
|
|
4006
|
+
/** Value displayed on the right side — string for single-line, string[] for multi-line */
|
|
4007
|
+
value: string | string[];
|
|
4008
|
+
}
|
|
4009
|
+
interface DetailsPopupProps {
|
|
4010
|
+
/** Controls dialog visibility */
|
|
4011
|
+
open?: boolean;
|
|
4012
|
+
/** Callback when dialog open state changes */
|
|
4013
|
+
onOpenChange?: (open: boolean) => void;
|
|
4014
|
+
/** Popup title displayed at the top */
|
|
4015
|
+
title?: string;
|
|
4016
|
+
/** Detail rows to display */
|
|
4017
|
+
details?: DetailItem[];
|
|
4018
|
+
/** Additional class names */
|
|
4019
|
+
className?: string;
|
|
4020
|
+
}
|
|
4021
|
+
declare function DetailsPopup({ open, onOpenChange, title, details, className, }: DetailsPopupProps): react_jsx_runtime.JSX.Element;
|
|
4022
|
+
|
|
4023
|
+
interface ImagePopupProps {
|
|
4024
|
+
/** Controls dialog visibility */
|
|
4025
|
+
open?: boolean;
|
|
4026
|
+
/** Callback when dialog open state changes */
|
|
4027
|
+
onOpenChange?: (open: boolean) => void;
|
|
4028
|
+
/** Image source URL */
|
|
4029
|
+
src?: string;
|
|
4030
|
+
/** Alt text for the image */
|
|
4031
|
+
alt?: string;
|
|
4032
|
+
/** Additional class names */
|
|
4033
|
+
className?: string;
|
|
4034
|
+
}
|
|
4035
|
+
declare function ImagePopup({ open, onOpenChange, src, alt, className, }: ImagePopupProps): react_jsx_runtime.JSX.Element;
|
|
4036
|
+
|
|
4037
|
+
interface SlideshowSlide {
|
|
4038
|
+
/** Image source URL */
|
|
4039
|
+
src: string;
|
|
4040
|
+
/** Alt text for the image */
|
|
4041
|
+
alt?: string;
|
|
4042
|
+
}
|
|
4043
|
+
interface SlideshowAuthor {
|
|
4044
|
+
/** Author display name */
|
|
4045
|
+
name: string;
|
|
4046
|
+
/** Author avatar URL */
|
|
4047
|
+
avatarUrl?: string;
|
|
4048
|
+
/** Location text (e.g., "New York, NY") */
|
|
4049
|
+
location?: string;
|
|
4050
|
+
}
|
|
4051
|
+
interface SlideshowPopupProps {
|
|
4052
|
+
/** Controls dialog visibility */
|
|
4053
|
+
open?: boolean;
|
|
4054
|
+
/** Callback when dialog open state changes */
|
|
4055
|
+
onOpenChange?: (open: boolean) => void;
|
|
4056
|
+
/** Array of slides to display */
|
|
4057
|
+
slides?: SlideshowSlide[];
|
|
4058
|
+
/** Author/creator information displayed below the image */
|
|
4059
|
+
author?: SlideshowAuthor;
|
|
4060
|
+
/** Like count displayed with thumbs-up icon */
|
|
4061
|
+
likes?: number | string;
|
|
4062
|
+
/** View count displayed with eye icon */
|
|
4063
|
+
views?: number | string;
|
|
4064
|
+
/** Index of the initially displayed slide (defaults to 0) */
|
|
4065
|
+
initialIndex?: number;
|
|
4066
|
+
/** Callback when slide changes */
|
|
4067
|
+
onSlideChange?: (index: number) => void;
|
|
4068
|
+
/** Additional class names */
|
|
4069
|
+
className?: string;
|
|
4070
|
+
}
|
|
4071
|
+
declare function SlideshowPopup({ open, onOpenChange, slides, author, likes, views, initialIndex, onSlideChange, className, }: SlideshowPopupProps): react_jsx_runtime.JSX.Element;
|
|
4072
|
+
|
|
4073
|
+
interface VideoPopupProps {
|
|
4074
|
+
/** Controls dialog visibility */
|
|
4075
|
+
open?: boolean;
|
|
4076
|
+
/** Callback when dialog open state changes */
|
|
4077
|
+
onOpenChange?: (open: boolean) => void;
|
|
4078
|
+
/** YouTube video ID (e.g., "dQw4w9WgXcQ") */
|
|
4079
|
+
videoId?: string;
|
|
4080
|
+
/** Accessible title for the video (sr-only) */
|
|
4081
|
+
title?: string;
|
|
4082
|
+
/** Additional class names */
|
|
4083
|
+
className?: string;
|
|
4084
|
+
}
|
|
4085
|
+
declare function VideoPopup({ open, onOpenChange, videoId, title, className, }: VideoPopupProps): react_jsx_runtime.JSX.Element;
|
|
4086
|
+
|
|
4087
|
+
interface PlaceInfoRow {
|
|
4088
|
+
id: string;
|
|
4089
|
+
icon: "map-pin" | "globe" | "phone" | "clock";
|
|
4090
|
+
text: string;
|
|
4091
|
+
action?: "copy" | "external-link";
|
|
4092
|
+
onAction?: () => void;
|
|
4093
|
+
}
|
|
4094
|
+
interface OperatingHoursEntry {
|
|
4095
|
+
day: string;
|
|
4096
|
+
hours: string;
|
|
4097
|
+
isCurrent?: boolean;
|
|
4098
|
+
}
|
|
4099
|
+
interface AmenityItem {
|
|
4100
|
+
id: string;
|
|
4101
|
+
label: string;
|
|
4102
|
+
available: boolean;
|
|
4103
|
+
}
|
|
4104
|
+
interface AdmissionItem {
|
|
4105
|
+
id: string;
|
|
4106
|
+
name: string;
|
|
4107
|
+
description?: string;
|
|
4108
|
+
price: string;
|
|
4109
|
+
}
|
|
4110
|
+
interface RatingBreakdown {
|
|
4111
|
+
stars: number;
|
|
4112
|
+
percentage: number;
|
|
4113
|
+
}
|
|
4114
|
+
interface PlaceReview {
|
|
4115
|
+
id: string;
|
|
4116
|
+
name: string;
|
|
4117
|
+
avatarUrl?: string;
|
|
4118
|
+
date: string;
|
|
4119
|
+
rating: number;
|
|
4120
|
+
text: string;
|
|
4121
|
+
photos?: string[];
|
|
4122
|
+
}
|
|
4123
|
+
interface PlaceDetailPanelProps {
|
|
4124
|
+
/** Controls drawer visibility */
|
|
4125
|
+
open?: boolean;
|
|
4126
|
+
/** Callback when drawer open state changes */
|
|
4127
|
+
onOpenChange?: (open: boolean) => void;
|
|
4128
|
+
/** Place/business name */
|
|
4129
|
+
title?: string;
|
|
4130
|
+
/** Subtitle text (e.g., "Created by Jeffrey Connor") */
|
|
4131
|
+
subtitle?: string;
|
|
4132
|
+
/** Overall rating number (e.g., 4.8) */
|
|
4133
|
+
rating?: number;
|
|
4134
|
+
/** Total number of ratings for header display */
|
|
4135
|
+
ratingCount?: number;
|
|
4136
|
+
/** URL for the hero/cover image */
|
|
4137
|
+
heroImageUrl?: string;
|
|
4138
|
+
/** Alt text for the hero image */
|
|
4139
|
+
heroImageAlt?: string;
|
|
4140
|
+
/** Number of photos to display in badge overlay */
|
|
4141
|
+
photoCount?: number;
|
|
4142
|
+
/** Callback when photo badge is clicked */
|
|
4143
|
+
onPhotosClick?: () => void;
|
|
4144
|
+
/** Tab labels */
|
|
4145
|
+
tabs?: string[];
|
|
4146
|
+
/** Currently active tab index (controlled) */
|
|
4147
|
+
activeTab?: number;
|
|
4148
|
+
/** Callback when tab changes */
|
|
4149
|
+
onTabChange?: (index: number) => void;
|
|
4150
|
+
/** Description paragraph text */
|
|
4151
|
+
description?: string;
|
|
4152
|
+
/** Info rows (location, website, phone) */
|
|
4153
|
+
infoRows?: PlaceInfoRow[];
|
|
4154
|
+
/** Operating hours data */
|
|
4155
|
+
operatingHours?: OperatingHoursEntry[];
|
|
4156
|
+
/** Whether hours section is initially expanded */
|
|
4157
|
+
hoursExpanded?: boolean;
|
|
4158
|
+
/** Section title for amenities */
|
|
4159
|
+
amenitiesTitle?: string;
|
|
4160
|
+
/** List of amenities */
|
|
4161
|
+
amenities?: AmenityItem[];
|
|
4162
|
+
/** Section title for admission/pricing */
|
|
4163
|
+
admissionTitle?: string;
|
|
4164
|
+
/** Admission/pricing rows */
|
|
4165
|
+
admissionItems?: AdmissionItem[];
|
|
4166
|
+
/** Total reviews count */
|
|
4167
|
+
totalReviews?: number;
|
|
4168
|
+
/** Rating breakdown bars */
|
|
4169
|
+
ratingBreakdown?: RatingBreakdown[];
|
|
4170
|
+
/** Individual review cards */
|
|
4171
|
+
reviews?: PlaceReview[];
|
|
4172
|
+
/** Callback when "Read more" is clicked on a review */
|
|
4173
|
+
onReadMore?: (review: PlaceReview) => void;
|
|
4174
|
+
/** Additional class names */
|
|
4175
|
+
className?: string;
|
|
4176
|
+
}
|
|
4177
|
+
/**
|
|
4178
|
+
* Canvas Design System - Place Detail Panel Block
|
|
4179
|
+
*
|
|
4180
|
+
* A comprehensive place/business detail drawer with a hero image, tabbed
|
|
4181
|
+
* navigation, info rows, operating hours, amenities, admission pricing,
|
|
4182
|
+
* rating breakdown, and review cards.
|
|
4183
|
+
*
|
|
4184
|
+
* @example
|
|
4185
|
+
* ```tsx
|
|
4186
|
+
* <PlaceDetailPanel
|
|
4187
|
+
* open={open}
|
|
4188
|
+
* onOpenChange={setOpen}
|
|
4189
|
+
* title="Louvre Museum"
|
|
4190
|
+
* subtitle="Created by Jeffrey Connor"
|
|
4191
|
+
* rating={4.8}
|
|
4192
|
+
* ratingCount={3565}
|
|
4193
|
+
* photoCount={122}
|
|
4194
|
+
* />
|
|
4195
|
+
* ```
|
|
4196
|
+
*/
|
|
4197
|
+
declare function PlaceDetailPanel({ open, onOpenChange, title, subtitle, rating, ratingCount, heroImageUrl, heroImageAlt, photoCount, onPhotosClick, tabs, activeTab: controlledActiveTab, onTabChange, description, infoRows, operatingHours, hoursExpanded: initialHoursExpanded, amenitiesTitle, amenities, admissionTitle, admissionItems, totalReviews, ratingBreakdown, reviews, onReadMore, className, }: PlaceDetailPanelProps): react_jsx_runtime.JSX.Element;
|
|
4198
|
+
|
|
3583
4199
|
interface HeroSectionProps {
|
|
3584
4200
|
title: string;
|
|
3585
4201
|
subtitle: string;
|
|
@@ -3891,12 +4507,14 @@ declare const allColorVariables: {
|
|
|
3891
4507
|
}[];
|
|
3892
4508
|
declare const defaultColors: Record<string, string>;
|
|
3893
4509
|
type IconShapeId$1 = "rounded" | "circle" | "square";
|
|
4510
|
+
type SidebarMode$1 = "light" | "dark";
|
|
3894
4511
|
declare const defaultBranding: {
|
|
3895
4512
|
iconShape: IconShapeId$1;
|
|
3896
4513
|
iconName: string;
|
|
3897
4514
|
bgColor: string;
|
|
3898
4515
|
iconColor: string;
|
|
3899
4516
|
wordmark: string;
|
|
4517
|
+
sidebarMode: SidebarMode$1;
|
|
3900
4518
|
};
|
|
3901
4519
|
type ImageKey = "logoLight" | "logoDark" | "faviconLight" | "faviconDark";
|
|
3902
4520
|
declare const defaultImages: Record<ImageKey, string>;
|
|
@@ -3922,6 +4540,14 @@ interface CustomButtonStyle {
|
|
|
3922
4540
|
declare const defaultCustomButtonStyles: CustomButtonStyle[];
|
|
3923
4541
|
declare const defaultButtonColors: Record<string, string>;
|
|
3924
4542
|
declare const defaultInputSizes: Record<string, string>;
|
|
4543
|
+
interface BrandAssetData {
|
|
4544
|
+
id: string;
|
|
4545
|
+
name: string;
|
|
4546
|
+
url: string;
|
|
4547
|
+
source?: "unsplash" | "upload";
|
|
4548
|
+
photographer?: string;
|
|
4549
|
+
}
|
|
4550
|
+
declare const defaultBrandAssets: BrandAssetData[];
|
|
3925
4551
|
|
|
3926
4552
|
/**
|
|
3927
4553
|
* Component Registry
|
|
@@ -4165,6 +4791,11 @@ declare const blocks: {
|
|
|
4165
4791
|
readonly description: "Avatar upload component with preview and edit button.";
|
|
4166
4792
|
readonly props: readonly ["currentImage?", "onUpload?"];
|
|
4167
4793
|
};
|
|
4794
|
+
readonly StoreLocationMap: {
|
|
4795
|
+
readonly path: "@/components/blocks";
|
|
4796
|
+
readonly description: "Single store location card with address info, directions button, and embedded Google Maps iframe. Uses TitleGroup for header.";
|
|
4797
|
+
readonly props: readonly ["title?", "subtitle?", "storeLabel?", "storeName?", "addressLines?", "buttonText?", "onDirectionsClick?", "mapEmbedUrl?", "className?"];
|
|
4798
|
+
};
|
|
4168
4799
|
readonly SettingsListRow: {
|
|
4169
4800
|
readonly path: "@/components/blocks";
|
|
4170
4801
|
readonly description: "Row item for settings lists with label, value, and edit action.";
|
|
@@ -4304,8 +4935,13 @@ declare const blocks: {
|
|
|
4304
4935
|
declare const groupModalDrawerBlocks: {
|
|
4305
4936
|
readonly FormGroup: {
|
|
4306
4937
|
readonly path: "@/components/blocks";
|
|
4307
|
-
readonly description: "
|
|
4308
|
-
readonly props: readonly ["title?", "description?", "
|
|
4938
|
+
readonly description: "Single-column form layout with header (title, sort, filter, action button), configurable fields, and footer (cancel/save). Supports text inputs, textareas, selects, date pickers, multiselect checkboxes, checkbox groups, radio groups, multiselect tags, image/file uploaders, and sliders.";
|
|
4939
|
+
readonly props: readonly ["title?", "description?", "fields?: FormFieldConfig[]", "sortOptions?", "filterOptions?", "inputSize?: 'sm' | 'default' | 'lg'", "onAddNew?", "onCancel?", "onSave?", "onFieldChange?", "showHeader?", "showFooter?"];
|
|
4940
|
+
};
|
|
4941
|
+
readonly DetailDrawer: {
|
|
4942
|
+
readonly path: "@/components/blocks";
|
|
4943
|
+
readonly description: "Right-side detail drawer with tabbed content. Info tab shows metadata fields (with avatars, badges, links), rich content sections, and file attachments. Comments tab shows a chat-style thread with sender names, timestamps, and a comment input.";
|
|
4944
|
+
readonly props: readonly ["open?", "onOpenChange?", "title?", "subtitle?", "tabs?: DrawerTab[]", "activeTab?", "onTabChange?", "detailFields?: DetailField[][]", "richContent?", "attachments?: DrawerAttachment[]", "comments?: DrawerComment[]", "commentPlaceholder?", "onComment?", "onAttachmentDownload?"];
|
|
4309
4945
|
};
|
|
4310
4946
|
};
|
|
4311
4947
|
declare const videoBlocks: {
|
|
@@ -4635,12 +5271,14 @@ declare function useCSSVariableSync(options?: {
|
|
|
4635
5271
|
declare function useIsMobile(): boolean;
|
|
4636
5272
|
|
|
4637
5273
|
type IconShapeId = "rounded" | "circle" | "square";
|
|
5274
|
+
type SidebarMode = "light" | "dark";
|
|
4638
5275
|
interface ThemeBranding {
|
|
4639
5276
|
iconShape: IconShapeId;
|
|
4640
5277
|
iconName: string;
|
|
4641
5278
|
bgColor: string;
|
|
4642
5279
|
iconColor: string;
|
|
4643
5280
|
wordmark: string;
|
|
5281
|
+
sidebarMode: SidebarMode;
|
|
4644
5282
|
}
|
|
4645
5283
|
interface ThemeImages {
|
|
4646
5284
|
logoLight: string;
|
|
@@ -4652,6 +5290,8 @@ interface BrandAsset {
|
|
|
4652
5290
|
id: string;
|
|
4653
5291
|
name: string;
|
|
4654
5292
|
url: string;
|
|
5293
|
+
source?: "unsplash" | "upload";
|
|
5294
|
+
photographer?: string;
|
|
4655
5295
|
storedInPublic?: boolean;
|
|
4656
5296
|
}
|
|
4657
5297
|
interface ThemeContextValue {
|
|
@@ -4705,6 +5345,7 @@ interface BrandingState {
|
|
|
4705
5345
|
bgColor: string;
|
|
4706
5346
|
iconColor: string;
|
|
4707
5347
|
wordmark: string;
|
|
5348
|
+
sidebarMode: SidebarMode$1;
|
|
4708
5349
|
}
|
|
4709
5350
|
interface ThemeState {
|
|
4710
5351
|
variables: Record<string, string>;
|
|
@@ -4728,6 +5369,10 @@ interface ThemeState {
|
|
|
4728
5369
|
addCustomButtonStyle: () => void;
|
|
4729
5370
|
updateCustomButtonStyle: (id: string, updates: Partial<CustomButtonStyle>) => void;
|
|
4730
5371
|
deleteCustomButtonStyle: (id: string) => void;
|
|
5372
|
+
brandAssets: BrandAssetData[];
|
|
5373
|
+
addBrandAsset: (asset: BrandAssetData) => void;
|
|
5374
|
+
removeBrandAsset: (id: string) => void;
|
|
5375
|
+
renameBrandAsset: (id: string, name: string) => void;
|
|
4731
5376
|
brandHue: number;
|
|
4732
5377
|
brandVibrancy: number;
|
|
4733
5378
|
syncRelatedColors: boolean;
|
|
@@ -4753,11 +5398,23 @@ interface ThemeDrawerProps {
|
|
|
4753
5398
|
branding: BrandingState;
|
|
4754
5399
|
images: Record<ImageKey, string>;
|
|
4755
5400
|
customButtonStyles: CustomButtonStyle[];
|
|
5401
|
+
brandAssets: BrandAssetData[];
|
|
4756
5402
|
}) => void;
|
|
5403
|
+
unsplashAccessKey?: string;
|
|
5404
|
+
onBrandAssetUpload?: (file: File) => Promise<{
|
|
5405
|
+
url: string;
|
|
5406
|
+
name: string;
|
|
5407
|
+
}>;
|
|
5408
|
+
onBrandAssetSave?: (imageUrl: string, name: string) => Promise<{
|
|
5409
|
+
url: string;
|
|
5410
|
+
name: string;
|
|
5411
|
+
}>;
|
|
5412
|
+
onBrandAssetDelete?: (asset: BrandAssetData) => Promise<void>;
|
|
4757
5413
|
initialOverrides?: Record<string, string>;
|
|
4758
5414
|
initialBranding?: BrandingState;
|
|
4759
5415
|
initialImages?: Record<ImageKey, string>;
|
|
4760
5416
|
initialCustomButtonStyles?: CustomButtonStyle[];
|
|
5417
|
+
initialBrandAssets?: BrandAssetData[];
|
|
4761
5418
|
storageKey?: string;
|
|
4762
5419
|
title?: string;
|
|
4763
5420
|
width?: number;
|
|
@@ -4767,7 +5424,7 @@ interface ThemeDrawerProps {
|
|
|
4767
5424
|
stickyTopOffset?: number;
|
|
4768
5425
|
children?: React__default.ReactNode;
|
|
4769
5426
|
}
|
|
4770
|
-
declare function ThemeDrawer({ devOnly, triggerPosition, defaultOpen, panels: enabledPanels, onThemeChange, onBrandingChange, onImagesChange, onImageUpload, onSave, initialOverrides, initialBranding, initialImages, initialCustomButtonStyles, storageKey, title, width, readOnly, hideSave, docked, stickyTopOffset, children, }: ThemeDrawerProps): react_jsx_runtime.JSX.Element | null;
|
|
5427
|
+
declare function ThemeDrawer({ devOnly, triggerPosition, defaultOpen, panels: enabledPanels, onThemeChange, onBrandingChange, onImagesChange, onImageUpload, onSave, unsplashAccessKey, onBrandAssetUpload, onBrandAssetSave, onBrandAssetDelete, initialOverrides, initialBranding, initialImages, initialCustomButtonStyles, initialBrandAssets, storageKey, title, width, readOnly, hideSave, docked, stickyTopOffset, children, }: ThemeDrawerProps): react_jsx_runtime.JSX.Element | null;
|
|
4771
5428
|
|
|
4772
5429
|
interface HslColorPickerProps {
|
|
4773
5430
|
value: string;
|
|
@@ -4792,4 +5449,12 @@ interface ColorInputRowProps {
|
|
|
4792
5449
|
*/
|
|
4793
5450
|
declare function ColorInputRow({ label, value, onChange, variableOptions, }: ColorInputRowProps): react_jsx_runtime.JSX.Element;
|
|
4794
5451
|
|
|
4795
|
-
|
|
5452
|
+
/**
|
|
5453
|
+
* Unsplash API configuration
|
|
5454
|
+
*
|
|
5455
|
+
* This key is bundled into the SDK for internal use.
|
|
5456
|
+
* Consumer apps get Unsplash support with zero configuration.
|
|
5457
|
+
*/
|
|
5458
|
+
declare const UNSPLASH_ACCESS_KEY = "l6HLJ6AXvytE4eSAIh-5sXTd_NHOEa7lHS2l2XiGhAY";
|
|
5459
|
+
|
|
5460
|
+
export { AccountSettingsShell, type AccountTab, ActivityFeed, type AdmissionItem, type AmenityItem, Avatar, AvatarFallback, AvatarImage, BadgesCard, type BillingPeriod, BlogCards, BottomInputChatWidget, type BrandAsset, type BrandAssetData, type BrandingState, Button, Calendar, CategoryGrid, CenteredHero, ChatBubble, type ChatBubbleMessage, ChatDateSeparator, ChatInput, ChatMessageList, Checkbox, CheckboxWithLabel, CircularProgressBar, CircularProgressBarList, type CircularProgressBarListProps, type CircularProgressBarProps, ColorInputRow, ComponentSearch, ConfirmationPopup, type ConfirmationPopupProps, type ContactFormField, ContactFormPopup, type ContactFormPopupProps, ContentDropzone, ContentWithImage, CoreValuesGrid, CreditCardDisplay, CtaBanner, type CustomButtonStyle, CustomComponentHelper, DashboardShell, DateInput, DescriptionCard, DestinationCards, DetailDrawer, type DetailDrawerProps, type DetailField, type DetailItem, DetailsPopup, type DetailsPopupProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DoubleSidebar, type DoubleSidebarSection, DoubleSidebarShell, type DrawerAttachment, type DrawerComment, type DrawerTab, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FaqAccordion, FaqsTable, FeatureWithImage, FeaturedNewsCards, FeaturedPlaces, FeaturesComparison, FeedbackPopup, type FeedbackPopupProps, FileUploader, type FilterCheckboxGroupConfig, type FilterDateRangeConfig, type FilterDropdownConfig, type FilterOption, FilterPopover, type FilterState, FixedColumnDataTable, FlairBanner, FooterNavbar, FormField, type FormFieldConfig, FormGroup, type FormGroupProps, GallerySection, GradientBanner, GridTilesList, Header, HeroDarkCentered, HeroDarkWithImage, HeroFullwidthImage, HeroSection, HowItWorks, HslColorPicker, type IconNavItemConfig, type IconShapeId, IconSidebar, IconSidebarShell, ImageFeedWithNestedComments, type ImageKey, ImagePopup, type ImagePopupProps, ImageUploader, InfoCard, type InfoCardProps, Input, type InvoiceLineItem, InvoicePopup, type InvoicePopupProps, Label, LargeImageLabelsList, Sidebar as LayoutSidebar, type LineTab, LineTabs, type LinkItem, LinksCard, type LinksCardProps, Loader, LoginBrandingPanel, MenuSection, type MenufocusItem, MenufocusTemplate, type MenufocusTemplateProps, MessengerInput, MessengerSidebar, MetricsSection, MobileBottomNav, MobileMenuShell, type MobileNavTabConfig, MonthlyCalendarWidget, MultiselectCheckboxField, MultiselectTags, MultistepProgressBarShell, type MultistepProgressBarShellProps, type MultistepProgressBarStep, MultistepShell, MultistepSidebarShell, type NavItem, type NavSection, type NavTab, NestedCommentsTable, NestedDataTable, OfficeLocations, type OperatingHoursEntry, PageHeaderSection, Pagination, ParticipantList, type Persona, PersonaCard, PersonaGrid, PillTabs, type PillTabsProps, PlaceDetailPanel, type PlaceDetailPanelProps, type PlaceInfoRow, type PlaceReview, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortfolioCard, PreviewBrandingContext, PricingCards, PricingCta, type PricingPlan, PricingPlansPopup, type PricingPlansPopupProps, ProfileCard, type ProfileDetailRow, ProfileGridTilesList, ProfileImageUploader, ProgressBar, type ProjectContext, ProjectContextShell, type ProjectContextTab, PromptChipsRow, PromptTemplate, PurchaseConfirmationPopup, type PurchaseConfirmationPopupProps, RadioGroup, RadioGroupItem, RangeInput, type RatingBreakdown, 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, type SidebarMode, SidebarNav, SidebarProfileCard, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, SkillsCard, Slider, type SlideshowAuthor, SlideshowGridTiles, SlideshowPopup, type SlideshowPopupProps, type SlideshowSlide, SocialFeed, SocialProof, type SortOption$b as SortOption, StandardDataTable, StandardListWithImage, StandardPageShell, StatsCard, type Step, StepTracker, StoreLocationMap, type StoreLocationMapProps, Switch, type TableColumn, type TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TeamCardsGrid, TeamCircularGrid, TermsOfServicePopup, type TermsOfServicePopupProps, TestimonialCarousel, TextInput, Textarea, type ThemeBranding, ThemeContext, ThemeDrawer, type ThemeDrawerProps, type ThemeImages, ThemeProvider, type ThemeState, TitleGroup, type TitleGroupProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typography, UNSPLASH_ACCESS_KEY, UpvotingPostsTable, type VariableOption, VerticalHowItWorks, VerticalMultistepShell, VerticalStepTracker, VideoChatControls, VideoContentSection, VideoPlaylistCard, VideoPlaylistItem, VideoPopup, type VideoPopupProps, ViewProfilePopup, type ViewProfilePopupProps, WebcamPreview, YouTubePlayer, accountTabs, allColorVariables, blocks, broadcastBranding, broadcastCSSVariables, broadcastImages, buttonVariants, cn, colorVariables, defaultBrandAssets, defaultBranding, defaultButtonColorStyles, defaultButtonColors, defaultButtonSizes, defaultColors, defaultCustomButtonStyles, defaultDoubleSidebarSections, defaultIconNavItems, defaultImages, defaultInputSizes, defaultProgressBarSteps, defaultSteps, defaultSupportLinks, defaultTypography, defaultVerticalSteps, getChildScreens, getScreenUrl, getTopLevelScreens, groupModalDrawerBlocks, layoutPrimitives, layoutShells, marketingBlocks, pageTemplates, pricingBlocks, removeCSSVariables, setCSSVariable, setCSSVariables, setupCSSVariableListener, useCSSVariableSync, useIsMobile, usePreviewBranding, useSidebar, useThemeBrandAssets, useThemeBranding, useThemeImages, videoBlocks };
|