canvas-ui-sdk 0.3.21 → 0.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/index.d.ts +680 -15
  2. package/dist/index.js +6523 -1771
  3. package/dist/index.js.map +1 -1
  4. package/mcp/dist/index.js +14 -4
  5. package/package.json +1 -1
  6. package/registry/blocks/confirmation-popup.json +18 -0
  7. package/registry/blocks/contact-form-popup.json +24 -0
  8. package/registry/blocks/detail-drawer.json +21 -0
  9. package/registry/blocks/details-popup.json +17 -0
  10. package/registry/blocks/feedback-popup.json +19 -0
  11. package/registry/blocks/form-group.json +2 -2
  12. package/registry/blocks/hero-fullwidth-image.json +1 -1
  13. package/registry/blocks/hero-section.json +1 -1
  14. package/registry/blocks/image-popup.json +17 -0
  15. package/registry/blocks/invoice-popup.json +20 -0
  16. package/registry/blocks/monthly-calendar-widget.json +1 -1
  17. package/registry/blocks/page-previews.json +1 -1
  18. package/registry/blocks/place-detail-panel.json +22 -0
  19. package/registry/blocks/pricing-cta.json +1 -1
  20. package/registry/blocks/pricing-plans-popup.json +18 -0
  21. package/registry/blocks/profile-image-uploader.json +1 -1
  22. package/registry/blocks/purchase-confirmation-popup.json +18 -0
  23. package/registry/blocks/sidebar-profile-card.json +1 -1
  24. package/registry/blocks/slideshow-popup.json +22 -0
  25. package/registry/blocks/store-location-map.json +18 -0
  26. package/registry/blocks/terms-of-service-popup.json +18 -0
  27. package/registry/blocks/video-popup.json +18 -0
  28. package/registry/blocks/view-profile-popup.json +23 -0
  29. package/registry/index.json +76 -1
  30. package/registry/layout/dashboard-shell.json +1 -1
  31. package/registry/layout/double-sidebar-shell.json +1 -1
  32. package/registry/layout/header.json +1 -1
  33. package/registry/layout/icon-sidebar-shell.json +1 -1
  34. package/registry/layout/mobile-menu-shell.json +1 -1
  35. package/registry/layout/sidebar.json +1 -1
  36. package/registry/ui/checkbox.json +1 -1
  37. package/registry/ui/date-input.json +1 -1
  38. package/registry/ui/dialog.json +1 -1
  39. package/registry/ui/dropdown-menu.json +1 -1
  40. package/registry/ui/input.json +1 -1
  41. package/registry/ui/label.json +1 -1
  42. package/registry/ui/line-tabs.json +1 -1
  43. package/registry/ui/multiselect-checkbox-field.json +1 -1
  44. package/registry/ui/multiselect-tags.json +1 -1
  45. package/registry/ui/popover.json +1 -1
  46. package/registry/ui/searchbox.json +1 -1
  47. package/registry/ui/select.json +1 -1
  48. package/registry/ui/selectable-pills.json +1 -1
  49. package/registry/ui/sheet.json +1 -1
  50. package/registry/ui/tabs.json +1 -1
  51. package/registry/ui/text-input.json +1 -1
  52. package/registry/ui/textarea.json +1 -1
  53. package/registry/ui/tooltip.json +1 -1
  54. 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
- /** Row configurations containing field definitions */
3222
- rows?: FormRowConfig[];
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 comprehensive form layout block with various input types arranged
3261
- * in responsive rows. Includes header section with title, description,
3262
- * sort/filter controls, and footer with action buttons.
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, rows, sortOptions, actionButtonText, cancelButtonText, saveButtonText, inputSize, onAddNew, onSort, onCancel, onSave, onFieldChange, showHeader, showFooter, className, }: FormGroupProps): react_jsx_runtime.JSX.Element;
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: "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.";
4308
- readonly props: readonly ["title?", "description?", "rows?: FormRowConfig[]", "sortOptions?", "filterOptions?", "inputSize?: 'sm' | 'default' | 'lg'", "onAddNew?", "onCancel?", "onSave?", "onFieldChange?", "showHeader?", "showFooter?"];
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
- export { AccountSettingsShell, type AccountTab, ActivityFeed, Avatar, AvatarFallback, AvatarImage, BadgesCard, BlogCards, BottomInputChatWidget, type BrandAsset, type BrandingState, Button, Calendar, CategoryGrid, CenteredHero, ChatBubble, type ChatBubbleMessage, ChatDateSeparator, ChatInput, ChatMessageList, Checkbox, CheckboxWithLabel, CircularProgressBar, CircularProgressBarList, type CircularProgressBarListProps, type CircularProgressBarProps, ColorInputRow, ComponentSearch, ContentDropzone, ContentWithImage, CoreValuesGrid, CreditCardDisplay, CtaBanner, type CustomButtonStyle, CustomComponentHelper, DashboardShell, DateInput, DescriptionCard, DestinationCards, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, 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, FilterPopover, type FilterState, FixedColumnDataTable, FlairBanner, FooterNavbar, FormGroup, GallerySection, GradientBanner, GridTilesList, Header, HeroDarkCentered, HeroDarkWithImage, HeroFullwidthImage, HeroSection, HowItWorks, HslColorPicker, type IconNavItemConfig, type IconShapeId, IconSidebar, IconSidebarShell, ImageFeedWithNestedComments, type ImageKey, ImageUploader, InfoCard, type InfoCardProps, Input, 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, PageHeaderSection, Pagination, ParticipantList, type Persona, PersonaCard, PersonaGrid, PillTabs, type PillTabsProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortfolioCard, PreviewBrandingContext, PricingCards, PricingCta, ProfileCard, ProfileGridTilesList, ProfileImageUploader, ProgressBar, 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, ThemeDrawer, type ThemeImages, ThemeProvider, type ThemeState, TitleGroup, type TitleGroupProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Typography, UpvotingPostsTable, type VariableOption, VerticalHowItWorks, VerticalMultistepShell, VerticalStepTracker, VideoChatControls, VideoContentSection, VideoPlaylistCard, VideoPlaylistItem, WebcamPreview, YouTubePlayer, accountTabs, allColorVariables, blocks, broadcastBranding, broadcastCSSVariables, broadcastImages, buttonVariants, 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, removeCSSVariables, setCSSVariable, setCSSVariables, setupCSSVariableListener, useCSSVariableSync, useIsMobile, usePreviewBranding, useSidebar, useThemeBrandAssets, useThemeBranding, useThemeImages, videoBlocks };
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 };