canvas-ui-sdk 0.3.17 → 0.3.19
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 +30 -75
- package/dist/index.js +550 -676
- package/dist/index.js.map +1 -1
- package/mcp/dist/index.js +2 -32
- package/package.json +1 -4
- package/registry/blocks/content-dropzone.json +2 -2
- package/registry/blocks/filter-popover.json +1 -1
- package/registry/blocks/fixed-column-data-table.json +1 -1
- package/registry/blocks/menufocus-template.json +1 -1
- package/registry/blocks/nested-comments-table.json +1 -1
- package/registry/blocks/nested-data-table.json +1 -1
- package/registry/blocks/page-previews.json +4 -14
- package/registry/blocks/standard-data-table.json +1 -1
- package/registry/blocks/title-group.json +1 -1
- package/registry/blocks/video-chat-controls.json +1 -1
- package/registry/blocks/video-playlist.json +1 -1
- package/registry/hooks/use-css-variable-sync.json +1 -1
- package/registry/index.json +1 -16
- package/registry/layout/dashboard-shell.json +1 -1
- package/registry/layout/header.json +1 -1
- package/registry/ui/checkbox.json +1 -1
- package/registry/ui/dialog.json +1 -1
- package/registry/ui/dropdown-menu.json +1 -1
- package/registry/ui/file-uploader.json +1 -1
- package/registry/ui/image-uploader.json +1 -1
- package/registry/ui/multiselect-checkbox-field.json +1 -1
- package/registry/ui/radio-group.json +1 -1
- package/registry/ui/select.json +1 -1
- package/registry/ui/sheet.json +1 -1
- package/registry/ui/slider.json +1 -1
- package/registry/ui/switch.json +1 -1
- package/registry/blocks/canvas-item.json +0 -18
- package/registry/blocks/component-palette.json +0 -21
- package/registry/blocks/infinity-canvas.json +0 -58
package/dist/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import { clsx } from 'clsx';
|
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
import * as React14 from 'react';
|
|
7
|
-
import React14__default, { createContext, useState, useContext, useEffect, useRef, Children, useMemo, useCallback } from 'react';
|
|
7
|
+
import React14__default, { createContext, useState, useContext, useEffect, useRef, Children, useMemo, useCallback, useLayoutEffect } from 'react';
|
|
8
8
|
import { Slot } from '@radix-ui/react-slot';
|
|
9
9
|
import { cva } from 'class-variance-authority';
|
|
10
|
-
import { Check, Calendar as Calendar$1, Upload, FileText, Trash2, ChevronLeft, ChevronRight, X, Search,
|
|
10
|
+
import { Check, Calendar as Calendar$1, Upload, FileText, Trash2, ChevronLeft, ChevronRight, X, Search, User, Key, CreditCard, Bell, Home, Users, MessageSquare, PieChart, ShoppingBag, Mail, Phone, MessageCircle, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, XIcon, CheckIcon, CircleIcon, ChevronUpIcon, PanelLeftIcon, Info, LayoutGrid, ShoppingCart, LogOut, Menu, ChevronDown, Filter, Wand2, Image, Paperclip, MoreHorizontal, PenSquare, Star as Star$1, Briefcase as Briefcase$1, MoreVertical, Minus, Plus, MapPin, Instagram, Linkedin, Twitter, Facebook, Globe as Globe$1, DollarSign, Video, BookOpen, Eye, CheckCircle, Zap, Camera as Camera$1, VideoOff, Mic, MicOff, Cast, Play, Pencil, ChevronUp, Sparkles, Copy, ArrowRight, GitBranch, FileBox, ExternalLink, Target as Target$1, AlertCircle, Quote, GripVertical, PanelRightClose, ArrowUp, Heart as Heart$1, Link2, FolderPlus, ThumbsUp, ChevronsRight, ChevronsLeft, RefreshCw, Send, Bookmark } from 'lucide-react';
|
|
11
11
|
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
12
12
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
13
13
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
@@ -22,10 +22,8 @@ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
|
22
22
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
23
23
|
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
24
24
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
25
|
-
import { Flag, Target, Rocket, Trophy, Shield, Heart, Megaphone
|
|
25
|
+
import { Flag, Target, Rocket, Trophy, Shield, Heart, Megaphone, Phone as Phone$1, Envelope, ChatCircle, Drop, Fire, Moon, Sun, Tree, Leaf, Lightbulb, MusicNote, Camera, PencilSimple, Palette, ChartLine, Handshake, Storefront, Buildings, Briefcase, WifiHigh, Cloud, Globe, Database, Cpu, Terminal, Code, Infinity, Sparkle, Lightning, Star, Hexagon, Diamond, ArrowUpRight, ArrowDownRight, MagnifyingGlass, MapPin as MapPin$1, Calendar as Calendar$2, Users as Users$1, ArrowRight as ArrowRight$1, CaretLeft, CaretRight, Check as Check$1, FacebookLogo, TwitterLogo, LinkedinLogo, InstagramLogo, XLogo, Info as Info$1, CaretUp, CaretDown, DotsThreeVertical, Gear, Mountains, ShieldCheck, Coffee, Coins, CurrencyDollar, Smiley, Image as Image$1, Clock, Bed, CreditCard as CreditCard$1, UserFocus, UsersFour, Eye as Eye$1, Books } from '@phosphor-icons/react';
|
|
26
26
|
import * as VisuallyHidden from '@radix-ui/react-visually-hidden';
|
|
27
|
-
import { useDraggable } from '@dnd-kit/core';
|
|
28
|
-
import { CSS } from '@dnd-kit/utilities';
|
|
29
27
|
import { Chart, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip as Tooltip$1, Legend, Filler, ArcElement } from 'chart.js';
|
|
30
28
|
import { Line, Doughnut } from 'react-chartjs-2';
|
|
31
29
|
import { startOfMonth, addMonths, isBefore, subMonths, format, endOfMonth, startOfWeek, endOfWeek, addDays, isSameMonth, isSameDay, isWithinInterval } from 'date-fns';
|
|
@@ -461,7 +459,7 @@ var Checkbox = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
461
459
|
ref,
|
|
462
460
|
className: cn(
|
|
463
461
|
"peer size-4 shrink-0 rounded-[var(--radius-xs)] border border-[var(--canvas-border-input)]",
|
|
464
|
-
"bg-[var(--canvas-background)] transition-colors",
|
|
462
|
+
"bg-[var(--canvas-background)] transition-colors cursor-pointer",
|
|
465
463
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)]",
|
|
466
464
|
"disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]",
|
|
467
465
|
"data-[state=checked]:bg-[var(--canvas-primary)] data-[state=checked]:border-[var(--canvas-primary)]",
|
|
@@ -613,7 +611,7 @@ function DialogContent({
|
|
|
613
611
|
DialogPrimitive.Close,
|
|
614
612
|
{
|
|
615
613
|
"data-slot": "dialog-close",
|
|
616
|
-
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
614
|
+
className: "cursor-pointer ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
617
615
|
children: [
|
|
618
616
|
/* @__PURE__ */ jsx(XIcon, {}),
|
|
619
617
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
@@ -731,7 +729,7 @@ function DropdownMenuItem({
|
|
|
731
729
|
"data-inset": inset,
|
|
732
730
|
"data-variant": variant,
|
|
733
731
|
className: cn(
|
|
734
|
-
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground relative flex cursor-
|
|
732
|
+
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
735
733
|
className
|
|
736
734
|
),
|
|
737
735
|
...props
|
|
@@ -749,7 +747,7 @@ function DropdownMenuCheckboxItem({
|
|
|
749
747
|
{
|
|
750
748
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
751
749
|
className: cn(
|
|
752
|
-
"focus:bg-accent focus:text-accent-foreground relative flex cursor-
|
|
750
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
753
751
|
className
|
|
754
752
|
),
|
|
755
753
|
checked,
|
|
@@ -782,7 +780,7 @@ function DropdownMenuRadioItem({
|
|
|
782
780
|
{
|
|
783
781
|
"data-slot": "dropdown-menu-radio-item",
|
|
784
782
|
className: cn(
|
|
785
|
-
"focus:bg-accent focus:text-accent-foreground relative flex cursor-
|
|
783
|
+
"focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
786
784
|
className
|
|
787
785
|
),
|
|
788
786
|
...props,
|
|
@@ -857,7 +855,7 @@ function DropdownMenuSubTrigger({
|
|
|
857
855
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
858
856
|
"data-inset": inset,
|
|
859
857
|
className: cn(
|
|
860
|
-
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-
|
|
858
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
861
859
|
className
|
|
862
860
|
),
|
|
863
861
|
...props,
|
|
@@ -1067,7 +1065,7 @@ var FileUploader = React14.forwardRef(
|
|
|
1067
1065
|
onClick: () => handleDelete(file.id),
|
|
1068
1066
|
disabled,
|
|
1069
1067
|
className: cn(
|
|
1070
|
-
"shrink-0 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-destructive)] transition-colors",
|
|
1068
|
+
"cursor-pointer shrink-0 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-destructive)] transition-colors",
|
|
1071
1069
|
disabled && "opacity-60 cursor-not-allowed"
|
|
1072
1070
|
),
|
|
1073
1071
|
children: /* @__PURE__ */ jsx(Trash2, { style: { width: "16px", height: "16px" } })
|
|
@@ -1238,7 +1236,7 @@ var ImageUploader = React14.forwardRef(
|
|
|
1238
1236
|
"div",
|
|
1239
1237
|
{
|
|
1240
1238
|
className: cn(
|
|
1241
|
-
"flex flex-col shrink-0 rounded-[var(--radius-xs)] border overflow-hidden",
|
|
1239
|
+
"cursor-pointer flex flex-col shrink-0 rounded-[var(--radius-xs)] border overflow-hidden",
|
|
1242
1240
|
isSelected ? "border-[var(--canvas-primary)]" : "border-[var(--canvas-border)]"
|
|
1243
1241
|
),
|
|
1244
1242
|
onClick: () => onSelectImage?.(image.id),
|
|
@@ -1284,7 +1282,7 @@ var ImageUploader = React14.forwardRef(
|
|
|
1284
1282
|
},
|
|
1285
1283
|
disabled: disabled || isFirst,
|
|
1286
1284
|
className: cn(
|
|
1287
|
-
"flex items-center justify-center rounded-full transition-colors",
|
|
1285
|
+
"cursor-pointer flex items-center justify-center rounded-full transition-colors",
|
|
1288
1286
|
isFirst || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)]"
|
|
1289
1287
|
),
|
|
1290
1288
|
style: { width: "24px", height: "24px" },
|
|
@@ -1301,7 +1299,7 @@ var ImageUploader = React14.forwardRef(
|
|
|
1301
1299
|
},
|
|
1302
1300
|
disabled: disabled || isLast,
|
|
1303
1301
|
className: cn(
|
|
1304
|
-
"flex items-center justify-center rounded-full transition-colors",
|
|
1302
|
+
"cursor-pointer flex items-center justify-center rounded-full transition-colors",
|
|
1305
1303
|
isLast || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)]"
|
|
1306
1304
|
),
|
|
1307
1305
|
style: { width: "24px", height: "24px" },
|
|
@@ -1317,7 +1315,7 @@ var ImageUploader = React14.forwardRef(
|
|
|
1317
1315
|
handleDelete(image.id);
|
|
1318
1316
|
},
|
|
1319
1317
|
disabled,
|
|
1320
|
-
className: "flex items-center justify-center rounded-full bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)] transition-colors",
|
|
1318
|
+
className: "cursor-pointer flex items-center justify-center rounded-full bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)] transition-colors",
|
|
1321
1319
|
style: { width: "24px", height: "24px" },
|
|
1322
1320
|
children: /* @__PURE__ */ jsx(Trash2, { style: { width: "16px", height: "16px" } })
|
|
1323
1321
|
}
|
|
@@ -1449,7 +1447,7 @@ var MultiselectCheckboxField = React14.forwardRef(
|
|
|
1449
1447
|
onClick: () => handleToggle(option.id),
|
|
1450
1448
|
disabled,
|
|
1451
1449
|
className: cn(
|
|
1452
|
-
"flex items-center gap-2 bg-[var(--canvas-background)] border overflow-hidden transition-colors",
|
|
1450
|
+
"cursor-pointer flex items-center gap-2 bg-[var(--canvas-background)] border overflow-hidden transition-colors",
|
|
1453
1451
|
"focus:outline-none focus:ring-2 focus:ring-[var(--canvas-border-input-focus)]",
|
|
1454
1452
|
isSelected ? "border-[var(--canvas-primary)]" : "border-[var(--canvas-border-input)]",
|
|
1455
1453
|
disabled && "cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)] opacity-60"
|
|
@@ -1652,7 +1650,7 @@ function RadioGroupItem({
|
|
|
1652
1650
|
{
|
|
1653
1651
|
"data-slot": "radio-group-item",
|
|
1654
1652
|
className: cn(
|
|
1655
|
-
"aspect-square size-4 shrink-0 rounded-full border border-[var(--canvas-border-input)] bg-[var(--canvas-background)] transition-colors",
|
|
1653
|
+
"cursor-pointer aspect-square size-4 shrink-0 rounded-full border border-[var(--canvas-border-input)] bg-[var(--canvas-background)] transition-colors",
|
|
1656
1654
|
"outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)]",
|
|
1657
1655
|
"aria-invalid:border-[var(--canvas-border-input-invalid)] aria-invalid:ring-[var(--canvas-border-input-invalid)]/20",
|
|
1658
1656
|
"disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]",
|
|
@@ -1871,7 +1869,7 @@ var Searchbox = React14.forwardRef(
|
|
|
1871
1869
|
Searchbox.displayName = "Searchbox";
|
|
1872
1870
|
var selectTriggerVariants = cva(
|
|
1873
1871
|
// Base styles using CSS variables
|
|
1874
|
-
"flex w-full items-center justify-between gap-2 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)] text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)] disabled:text-[var(--canvas-input-disabled-text)] aria-invalid:border-[var(--canvas-border-input-invalid)] data-[placeholder]:text-[var(--canvas-text-placeholder)] [&_svg:not([class*='text-'])]:text-[var(--canvas-text-muted)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 font-[family-name:var(--typo-global-font)]",
|
|
1872
|
+
"cursor-pointer flex w-full items-center justify-between gap-2 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)] text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)] disabled:text-[var(--canvas-input-disabled-text)] aria-invalid:border-[var(--canvas-border-input-invalid)] data-[placeholder]:text-[var(--canvas-text-placeholder)] [&_svg:not([class*='text-'])]:text-[var(--canvas-text-muted)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 font-[family-name:var(--typo-global-font)]",
|
|
1875
1873
|
{
|
|
1876
1874
|
variants: {
|
|
1877
1875
|
inputSize: {
|
|
@@ -1979,7 +1977,7 @@ function SelectItem({
|
|
|
1979
1977
|
{
|
|
1980
1978
|
"data-slot": "select-item",
|
|
1981
1979
|
className: cn(
|
|
1982
|
-
"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-
|
|
1980
|
+
"focus:bg-accent focus:text-accent-foreground data-[state=checked]:text-[var(--canvas-primary)] [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 font-[family-name:var(--typo-global-font)]",
|
|
1983
1981
|
className
|
|
1984
1982
|
),
|
|
1985
1983
|
...props,
|
|
@@ -2198,7 +2196,7 @@ function SheetContent({
|
|
|
2198
2196
|
...props,
|
|
2199
2197
|
children: [
|
|
2200
2198
|
children,
|
|
2201
|
-
/* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
2199
|
+
/* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "cursor-pointer ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
2202
2200
|
/* @__PURE__ */ jsx(XIcon, { className: "size-4" }),
|
|
2203
2201
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
2204
2202
|
] })
|
|
@@ -2988,7 +2986,7 @@ var Slider = React14.forwardRef(({
|
|
|
2988
2986
|
SliderPrimitive.Thumb,
|
|
2989
2987
|
{
|
|
2990
2988
|
className: cn(
|
|
2991
|
-
"block rounded-full border-2 border-[var(--canvas-background)] bg-[var(--canvas-primary)]",
|
|
2989
|
+
"cursor-grab active:cursor-grabbing block rounded-full border-2 border-[var(--canvas-background)] bg-[var(--canvas-primary)]",
|
|
2992
2990
|
"shadow-[0px_1px_2px_0px_rgba(0,0,0,0.08)]",
|
|
2993
2991
|
"ring-offset-background transition-colors",
|
|
2994
2992
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)]",
|
|
@@ -3023,7 +3021,7 @@ function Switch({
|
|
|
3023
3021
|
{
|
|
3024
3022
|
"data-slot": "switch",
|
|
3025
3023
|
className: cn(
|
|
3026
|
-
"peer inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-colors",
|
|
3024
|
+
"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors",
|
|
3027
3025
|
"data-[state=checked]:bg-[var(--canvas-primary)] data-[state=unchecked]:bg-[var(--canvas-border)]",
|
|
3028
3026
|
"outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)]",
|
|
3029
3027
|
"disabled:cursor-not-allowed disabled:data-[state=checked]:bg-[var(--canvas-input-disabled-text)] disabled:data-[state=unchecked]:bg-[var(--canvas-input-disabled-border)]",
|
|
@@ -3563,11 +3561,15 @@ function ThemeProvider({
|
|
|
3563
3561
|
}) {
|
|
3564
3562
|
const [previewBranding, setPreviewBranding] = useState(null);
|
|
3565
3563
|
const [previewImages, setPreviewImages] = useState(null);
|
|
3564
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
3565
|
+
useEffect(() => {
|
|
3566
|
+
setIsMounted(true);
|
|
3567
|
+
}, []);
|
|
3566
3568
|
const contextValue = {
|
|
3567
3569
|
images,
|
|
3568
3570
|
branding,
|
|
3569
3571
|
brandAssets,
|
|
3570
|
-
isMounted
|
|
3572
|
+
isMounted
|
|
3571
3573
|
};
|
|
3572
3574
|
const previewBrandingValue = {
|
|
3573
3575
|
previewBranding,
|
|
@@ -3660,7 +3662,7 @@ var iconShapes = {
|
|
|
3660
3662
|
var iconMap = {
|
|
3661
3663
|
Diamond,
|
|
3662
3664
|
Hexagon,
|
|
3663
|
-
Star
|
|
3665
|
+
Star,
|
|
3664
3666
|
Lightning,
|
|
3665
3667
|
Sparkle,
|
|
3666
3668
|
Infinity,
|
|
@@ -3690,7 +3692,7 @@ var iconMap = {
|
|
|
3690
3692
|
ChatCircle,
|
|
3691
3693
|
Envelope,
|
|
3692
3694
|
Phone: Phone$1,
|
|
3693
|
-
Megaphone
|
|
3695
|
+
Megaphone,
|
|
3694
3696
|
Heart,
|
|
3695
3697
|
Shield,
|
|
3696
3698
|
Trophy,
|
|
@@ -3864,6 +3866,7 @@ function Header({
|
|
|
3864
3866
|
/* @__PURE__ */ jsx(
|
|
3865
3867
|
Button,
|
|
3866
3868
|
{
|
|
3869
|
+
variant: "primary",
|
|
3867
3870
|
className: "w-full",
|
|
3868
3871
|
size: "default",
|
|
3869
3872
|
onClick: onCheckout,
|
|
@@ -4220,7 +4223,7 @@ function Header({
|
|
|
4220
4223
|
/* @__PURE__ */ jsx(
|
|
4221
4224
|
Button,
|
|
4222
4225
|
{
|
|
4223
|
-
variant: "outline",
|
|
4226
|
+
variant: "primary-outline",
|
|
4224
4227
|
size: "default",
|
|
4225
4228
|
onClick: onLogin,
|
|
4226
4229
|
children: "Log in"
|
|
@@ -4229,7 +4232,7 @@ function Header({
|
|
|
4229
4232
|
/* @__PURE__ */ jsx(
|
|
4230
4233
|
Button,
|
|
4231
4234
|
{
|
|
4232
|
-
variant: "
|
|
4235
|
+
variant: "primary",
|
|
4233
4236
|
size: "default",
|
|
4234
4237
|
onClick: onSignUp,
|
|
4235
4238
|
children: "Sign up"
|
|
@@ -4362,7 +4365,7 @@ function Header({
|
|
|
4362
4365
|
/* @__PURE__ */ jsx(
|
|
4363
4366
|
Button,
|
|
4364
4367
|
{
|
|
4365
|
-
variant: "outline",
|
|
4368
|
+
variant: "primary-outline",
|
|
4366
4369
|
className: "w-full",
|
|
4367
4370
|
size: "lg",
|
|
4368
4371
|
onClick: () => {
|
|
@@ -4375,7 +4378,7 @@ function Header({
|
|
|
4375
4378
|
/* @__PURE__ */ jsx(
|
|
4376
4379
|
Button,
|
|
4377
4380
|
{
|
|
4378
|
-
variant: "
|
|
4381
|
+
variant: "primary",
|
|
4379
4382
|
className: "w-full",
|
|
4380
4383
|
size: "lg",
|
|
4381
4384
|
onClick: () => {
|
|
@@ -4557,7 +4560,7 @@ var iconShapes2 = [
|
|
|
4557
4560
|
var iconMap2 = {
|
|
4558
4561
|
Diamond: Diamond,
|
|
4559
4562
|
Hexagon: Hexagon,
|
|
4560
|
-
Star: Star
|
|
4563
|
+
Star: Star,
|
|
4561
4564
|
Lightning: Lightning,
|
|
4562
4565
|
Sparkle: Sparkle,
|
|
4563
4566
|
Infinity: Infinity,
|
|
@@ -4587,7 +4590,7 @@ var iconMap2 = {
|
|
|
4587
4590
|
ChatCircle: ChatCircle,
|
|
4588
4591
|
Envelope: Envelope,
|
|
4589
4592
|
Phone: Phone$1,
|
|
4590
|
-
Megaphone: Megaphone
|
|
4593
|
+
Megaphone: Megaphone,
|
|
4591
4594
|
Heart: Heart,
|
|
4592
4595
|
Shield: Shield,
|
|
4593
4596
|
Trophy: Trophy,
|
|
@@ -4702,7 +4705,31 @@ function broadcastCSSVariables(variables) {
|
|
|
4702
4705
|
}
|
|
4703
4706
|
});
|
|
4704
4707
|
}
|
|
4705
|
-
function
|
|
4708
|
+
function broadcastBranding(branding) {
|
|
4709
|
+
const iframes = document.querySelectorAll("iframe");
|
|
4710
|
+
iframes.forEach((iframe) => {
|
|
4711
|
+
try {
|
|
4712
|
+
iframe.contentWindow?.postMessage(
|
|
4713
|
+
{ type: "branding-update", branding },
|
|
4714
|
+
"*"
|
|
4715
|
+
);
|
|
4716
|
+
} catch {
|
|
4717
|
+
}
|
|
4718
|
+
});
|
|
4719
|
+
}
|
|
4720
|
+
function broadcastImages(images) {
|
|
4721
|
+
const iframes = document.querySelectorAll("iframe");
|
|
4722
|
+
iframes.forEach((iframe) => {
|
|
4723
|
+
try {
|
|
4724
|
+
iframe.contentWindow?.postMessage(
|
|
4725
|
+
{ type: "images-update", images },
|
|
4726
|
+
"*"
|
|
4727
|
+
);
|
|
4728
|
+
} catch {
|
|
4729
|
+
}
|
|
4730
|
+
});
|
|
4731
|
+
}
|
|
4732
|
+
function setupCSSVariableListener(options) {
|
|
4706
4733
|
if (typeof window === "undefined") return () => {
|
|
4707
4734
|
};
|
|
4708
4735
|
const handler = (event) => {
|
|
@@ -4716,15 +4743,21 @@ function setupCSSVariableListener() {
|
|
|
4716
4743
|
document.documentElement.style.removeProperty(name);
|
|
4717
4744
|
});
|
|
4718
4745
|
}
|
|
4746
|
+
if (event.data?.type === "branding-update") {
|
|
4747
|
+
options?.onBrandingUpdate?.(event.data.branding);
|
|
4748
|
+
}
|
|
4749
|
+
if (event.data?.type === "images-update") {
|
|
4750
|
+
options?.onImagesUpdate?.(event.data.images);
|
|
4751
|
+
}
|
|
4719
4752
|
};
|
|
4720
4753
|
window.addEventListener("message", handler);
|
|
4721
4754
|
return () => window.removeEventListener("message", handler);
|
|
4722
4755
|
}
|
|
4723
4756
|
|
|
4724
4757
|
// src/hooks/use-css-variable-sync.ts
|
|
4725
|
-
function useCSSVariableSync() {
|
|
4758
|
+
function useCSSVariableSync(options) {
|
|
4726
4759
|
useEffect(() => {
|
|
4727
|
-
const cleanup = setupCSSVariableListener();
|
|
4760
|
+
const cleanup = setupCSSVariableListener(options);
|
|
4728
4761
|
return cleanup;
|
|
4729
4762
|
}, []);
|
|
4730
4763
|
}
|
|
@@ -4746,7 +4779,7 @@ function DashboardShell({
|
|
|
4746
4779
|
onAppMenuClick?.();
|
|
4747
4780
|
console.log("App menu clicked - implement app-level mobile menu here");
|
|
4748
4781
|
};
|
|
4749
|
-
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
|
|
4782
|
+
return /* @__PURE__ */ jsxs("div", { className: "min-h-screen min-w-0 bg-[var(--canvas-background)]", children: [
|
|
4750
4783
|
/* @__PURE__ */ jsx("div", { className: "fixed top-0 left-0 right-0 lg:left-[var(--sidebar-width)] z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick }) }),
|
|
4751
4784
|
/* @__PURE__ */ jsx("div", { className: "hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--sidebar-width)]", children: /* @__PURE__ */ jsx(
|
|
4752
4785
|
Sidebar2,
|
|
@@ -4792,7 +4825,8 @@ function DashboardShell({
|
|
|
4792
4825
|
className: cn(
|
|
4793
4826
|
"pt-[var(--header-height)]",
|
|
4794
4827
|
"lg:pl-[var(--sidebar-width)]",
|
|
4795
|
-
"min-h-screen"
|
|
4828
|
+
"min-h-screen",
|
|
4829
|
+
"overflow-x-hidden"
|
|
4796
4830
|
),
|
|
4797
4831
|
children: /* @__PURE__ */ jsxs(
|
|
4798
4832
|
"div",
|
|
@@ -4830,7 +4864,7 @@ var iconShapes3 = [
|
|
|
4830
4864
|
var iconMap3 = {
|
|
4831
4865
|
Diamond: Diamond,
|
|
4832
4866
|
Hexagon: Hexagon,
|
|
4833
|
-
Star: Star
|
|
4867
|
+
Star: Star,
|
|
4834
4868
|
Lightning: Lightning,
|
|
4835
4869
|
Sparkle: Sparkle,
|
|
4836
4870
|
Infinity: Infinity,
|
|
@@ -4860,7 +4894,7 @@ var iconMap3 = {
|
|
|
4860
4894
|
ChatCircle: ChatCircle,
|
|
4861
4895
|
Envelope: Envelope,
|
|
4862
4896
|
Phone: Phone$1,
|
|
4863
|
-
Megaphone: Megaphone
|
|
4897
|
+
Megaphone: Megaphone,
|
|
4864
4898
|
Heart: Heart,
|
|
4865
4899
|
Shield: Shield,
|
|
4866
4900
|
Trophy: Trophy,
|
|
@@ -5088,7 +5122,7 @@ var iconShapes4 = [
|
|
|
5088
5122
|
var iconMap4 = {
|
|
5089
5123
|
Diamond: Diamond,
|
|
5090
5124
|
Hexagon: Hexagon,
|
|
5091
|
-
Star: Star
|
|
5125
|
+
Star: Star,
|
|
5092
5126
|
Lightning: Lightning,
|
|
5093
5127
|
Sparkle: Sparkle,
|
|
5094
5128
|
Infinity: Infinity,
|
|
@@ -5118,7 +5152,7 @@ var iconMap4 = {
|
|
|
5118
5152
|
ChatCircle: ChatCircle,
|
|
5119
5153
|
Envelope: Envelope,
|
|
5120
5154
|
Phone: Phone$1,
|
|
5121
|
-
Megaphone: Megaphone
|
|
5155
|
+
Megaphone: Megaphone,
|
|
5122
5156
|
Heart: Heart,
|
|
5123
5157
|
Shield: Shield,
|
|
5124
5158
|
Trophy: Trophy,
|
|
@@ -5870,9 +5904,16 @@ var defaultDateRange = {
|
|
|
5870
5904
|
startPlaceholder: "Start date",
|
|
5871
5905
|
endPlaceholder: "End date"
|
|
5872
5906
|
};
|
|
5907
|
+
var filterLabelStyle = {
|
|
5908
|
+
fontFamily: "var(--typo-input-label-font)",
|
|
5909
|
+
fontSize: "var(--typo-input-label-sm-size, 12px)",
|
|
5910
|
+
fontWeight: "var(--typo-input-label-weight)",
|
|
5911
|
+
letterSpacing: "var(--typo-input-label-spacing)",
|
|
5912
|
+
lineHeight: "var(--typo-input-label-line-height)"
|
|
5913
|
+
};
|
|
5873
5914
|
function FilterDropdown({ config, value, onChange }) {
|
|
5874
5915
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
5875
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
5916
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: config.label }),
|
|
5876
5917
|
/* @__PURE__ */ jsxs(Select, { value: value || void 0, onValueChange: onChange, children: [
|
|
5877
5918
|
/* @__PURE__ */ jsx(SelectTrigger, { inputSize: "sm", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: config.placeholder }) }),
|
|
5878
5919
|
/* @__PURE__ */ jsx(SelectContent, { position: "popper", side: "bottom", sideOffset: 4, children: config.options.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: option.id, children: option.label }, option.id)) })
|
|
@@ -5947,7 +5988,7 @@ function FilterPopover({
|
|
|
5947
5988
|
"button",
|
|
5948
5989
|
{
|
|
5949
5990
|
className: cn(
|
|
5950
|
-
"flex items-center justify-between gap-2 bg-[var(--canvas-background)] border text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)]
|
|
5991
|
+
"cursor-pointer flex items-center justify-between gap-2 bg-[var(--canvas-background)] border text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] data-[state=open]:border-[var(--canvas-border-input-focus)]",
|
|
5951
5992
|
className
|
|
5952
5993
|
),
|
|
5953
5994
|
style: {
|
|
@@ -5981,11 +6022,11 @@ function FilterPopover({
|
|
|
5981
6022
|
children: [
|
|
5982
6023
|
/* @__PURE__ */ jsxs("div", { className: "p-4 space-y-5 max-h-[480px] overflow-y-auto", children: [
|
|
5983
6024
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
5984
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6025
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Text Input" }),
|
|
5985
6026
|
/* @__PURE__ */ jsx(TextInput, { inputSize: "sm", placeholder: "Enter text..." })
|
|
5986
6027
|
] }),
|
|
5987
6028
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
5988
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6029
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Searchbox" }),
|
|
5989
6030
|
/* @__PURE__ */ jsx(Searchbox, { inputSize: "sm", placeholder: "Search..." })
|
|
5990
6031
|
] }),
|
|
5991
6032
|
dropdowns.slice(0, 1).map((dropdown) => /* @__PURE__ */ jsx(
|
|
@@ -5998,11 +6039,11 @@ function FilterPopover({
|
|
|
5998
6039
|
dropdown.id
|
|
5999
6040
|
)),
|
|
6000
6041
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6001
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6042
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Date Input" }),
|
|
6002
6043
|
/* @__PURE__ */ jsx(DateInput, { inputSize: "sm" })
|
|
6003
6044
|
] }),
|
|
6004
6045
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6005
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6046
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Radio Buttons" }),
|
|
6006
6047
|
/* @__PURE__ */ jsxs(RadioGroup2, { defaultValue: "option1", className: "flex", children: [
|
|
6007
6048
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6008
6049
|
/* @__PURE__ */ jsx(RadioGroupItem, { value: "option1", id: "radio1" }),
|
|
@@ -6031,7 +6072,7 @@ function FilterPopover({
|
|
|
6031
6072
|
] })
|
|
6032
6073
|
] }),
|
|
6033
6074
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6034
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6075
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Radio Buttons List" }),
|
|
6035
6076
|
/* @__PURE__ */ jsxs(RadioGroup2, { defaultValue: "list-opt1", className: "flex flex-col gap-2", children: [
|
|
6036
6077
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6037
6078
|
/* @__PURE__ */ jsx(RadioGroupItem, { value: "list-opt1", id: "radio-list-1" }),
|
|
@@ -6072,7 +6113,7 @@ function FilterPopover({
|
|
|
6072
6113
|
] })
|
|
6073
6114
|
] }),
|
|
6074
6115
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6075
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6116
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Checkbox" }),
|
|
6076
6117
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6077
6118
|
/* @__PURE__ */ jsx(Checkbox, { id: "single-checkbox" }),
|
|
6078
6119
|
/* @__PURE__ */ jsx(
|
|
@@ -6087,7 +6128,7 @@ function FilterPopover({
|
|
|
6087
6128
|
] })
|
|
6088
6129
|
] }),
|
|
6089
6130
|
checkboxGroup && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6090
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6131
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Checkbox List" }),
|
|
6091
6132
|
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: checkboxGroup.options.map((option) => /* @__PURE__ */ jsx(
|
|
6092
6133
|
CheckboxWithLabel,
|
|
6093
6134
|
{
|
|
@@ -6099,7 +6140,7 @@ function FilterPopover({
|
|
|
6099
6140
|
)) })
|
|
6100
6141
|
] }),
|
|
6101
6142
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6102
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6143
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Toggle" }),
|
|
6103
6144
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6104
6145
|
/* @__PURE__ */ jsx(Switch, { id: "toggle-switch" }),
|
|
6105
6146
|
/* @__PURE__ */ jsx(
|
|
@@ -6114,7 +6155,7 @@ function FilterPopover({
|
|
|
6114
6155
|
] })
|
|
6115
6156
|
] }),
|
|
6116
6157
|
/* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
6117
|
-
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style:
|
|
6158
|
+
/* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: filterLabelStyle, children: "Multiselect Tags" }),
|
|
6118
6159
|
/* @__PURE__ */ jsx(MultiselectTags, { inputSize: "sm", tags: ["Tag 1", "Tag 2"], placeholder: "Add..." })
|
|
6119
6160
|
] })
|
|
6120
6161
|
] }),
|
|
@@ -6965,7 +7006,7 @@ var iconShapes5 = [
|
|
|
6965
7006
|
var iconMap5 = {
|
|
6966
7007
|
Diamond: Diamond,
|
|
6967
7008
|
Hexagon: Hexagon,
|
|
6968
|
-
Star: Star
|
|
7009
|
+
Star: Star,
|
|
6969
7010
|
Lightning: Lightning,
|
|
6970
7011
|
Sparkle: Sparkle,
|
|
6971
7012
|
Infinity: Infinity,
|
|
@@ -6995,7 +7036,7 @@ var iconMap5 = {
|
|
|
6995
7036
|
ChatCircle: ChatCircle,
|
|
6996
7037
|
Envelope: Envelope,
|
|
6997
7038
|
Phone: Phone$1,
|
|
6998
|
-
Megaphone: Megaphone
|
|
7039
|
+
Megaphone: Megaphone,
|
|
6999
7040
|
Heart: Heart,
|
|
7000
7041
|
Shield: Shield,
|
|
7001
7042
|
Trophy: Trophy,
|
|
@@ -7968,7 +8009,7 @@ function ContentDropzone({
|
|
|
7968
8009
|
"div",
|
|
7969
8010
|
{
|
|
7970
8011
|
className: cn(
|
|
7971
|
-
"flex flex-col gap-
|
|
8012
|
+
"flex flex-col gap-[var(--spacing-4xl)]",
|
|
7972
8013
|
className
|
|
7973
8014
|
),
|
|
7974
8015
|
children
|
|
@@ -8287,7 +8328,7 @@ function MenuSection({
|
|
|
8287
8328
|
}
|
|
8288
8329
|
var tabIcons = {
|
|
8289
8330
|
briefcase: Briefcase$1,
|
|
8290
|
-
star: Star,
|
|
8331
|
+
star: Star$1,
|
|
8291
8332
|
user: User
|
|
8292
8333
|
};
|
|
8293
8334
|
function PillTabs({
|
|
@@ -8423,10 +8464,7 @@ function TitleGroup({
|
|
|
8423
8464
|
paddingLeft: "var(--btn-small-px)",
|
|
8424
8465
|
paddingRight: "var(--btn-small-px)",
|
|
8425
8466
|
fontSize: "var(--btn-small-font-size)",
|
|
8426
|
-
borderRadius: "var(--btn-small-radius)"
|
|
8427
|
-
backgroundColor: "var(--btn-primary-bg)",
|
|
8428
|
-
color: "var(--btn-primary-text)",
|
|
8429
|
-
borderColor: "var(--btn-primary-border)"
|
|
8467
|
+
borderRadius: "var(--btn-small-radius)"
|
|
8430
8468
|
},
|
|
8431
8469
|
children: actionButtonText
|
|
8432
8470
|
}
|
|
@@ -8809,7 +8847,7 @@ function MenufocusTemplate({
|
|
|
8809
8847
|
"button",
|
|
8810
8848
|
{
|
|
8811
8849
|
className: cn(
|
|
8812
|
-
"flex items-center justify-center rounded-full hover:bg-[var(--canvas-surface)] transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2",
|
|
8850
|
+
"cursor-pointer flex items-center justify-center rounded-full hover:bg-[var(--canvas-surface)] transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2",
|
|
8813
8851
|
buttonSize,
|
|
8814
8852
|
className
|
|
8815
8853
|
),
|
|
@@ -8936,6 +8974,7 @@ function StandardDataTable({
|
|
|
8936
8974
|
/* @__PURE__ */ jsx("tbody", { children: data.map((row) => /* @__PURE__ */ jsxs(
|
|
8937
8975
|
"tr",
|
|
8938
8976
|
{
|
|
8977
|
+
className: "hover:bg-[var(--canvas-surface)] transition-colors",
|
|
8939
8978
|
style: { borderBottom: "1px solid var(--canvas-border)" },
|
|
8940
8979
|
children: [
|
|
8941
8980
|
/* @__PURE__ */ jsx(
|
|
@@ -9210,6 +9249,7 @@ function FixedColumnDataTable({
|
|
|
9210
9249
|
/* @__PURE__ */ jsx("tbody", { children: data.map((row) => /* @__PURE__ */ jsxs(
|
|
9211
9250
|
"tr",
|
|
9212
9251
|
{
|
|
9252
|
+
className: "hover:bg-[var(--canvas-surface)] transition-colors",
|
|
9213
9253
|
style: { borderBottom: "1px solid var(--canvas-border)" },
|
|
9214
9254
|
children: [
|
|
9215
9255
|
/* @__PURE__ */ jsx(TableCell2, { isFixed: true, className: "pr-8", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -9430,7 +9470,7 @@ function NestedTable({ children, onChildAction }) {
|
|
|
9430
9470
|
children.map((child, index) => /* @__PURE__ */ jsxs(
|
|
9431
9471
|
"div",
|
|
9432
9472
|
{
|
|
9433
|
-
className: "grid items-center",
|
|
9473
|
+
className: "grid items-center hover:bg-[var(--canvas-surface)] transition-colors rounded-sm",
|
|
9434
9474
|
style: {
|
|
9435
9475
|
borderBottom: index < children.length - 1 ? "1px solid var(--canvas-border)" : "none",
|
|
9436
9476
|
padding: "var(--spacing-md) 0",
|
|
@@ -9450,7 +9490,7 @@ function NestedTable({ children, onChildAction }) {
|
|
|
9450
9490
|
"button",
|
|
9451
9491
|
{
|
|
9452
9492
|
onClick: () => onChildAction?.("view", child),
|
|
9453
|
-
className: "flex items-center justify-center size-8 rounded-full hover:bg-[var(--canvas-surface)] transition-colors",
|
|
9493
|
+
className: "cursor-pointer flex items-center justify-center size-8 rounded-full hover:bg-[var(--canvas-surface)] transition-colors",
|
|
9454
9494
|
"aria-label": `View ${child.name}`,
|
|
9455
9495
|
children: /* @__PURE__ */ jsx(Eye, { size: 20, style: { color: "var(--canvas-text-muted)" } })
|
|
9456
9496
|
}
|
|
@@ -9530,7 +9570,7 @@ function NestedDataTable({
|
|
|
9530
9570
|
/* @__PURE__ */ jsxs(
|
|
9531
9571
|
"div",
|
|
9532
9572
|
{
|
|
9533
|
-
className: "grid items-center",
|
|
9573
|
+
className: "grid items-center hover:bg-[var(--canvas-surface)] transition-colors rounded-sm",
|
|
9534
9574
|
style: {
|
|
9535
9575
|
padding: "var(--spacing-md) 0",
|
|
9536
9576
|
minHeight: "64px",
|
|
@@ -10573,7 +10613,7 @@ function CommentInput2({
|
|
|
10573
10613
|
"button",
|
|
10574
10614
|
{
|
|
10575
10615
|
type: "button",
|
|
10576
|
-
className: "absolute right-3 top-1/2 -translate-y-1/2",
|
|
10616
|
+
className: "cursor-pointer absolute right-3 top-1/2 -translate-y-1/2",
|
|
10577
10617
|
style: { color: "var(--canvas-text-placeholder)" },
|
|
10578
10618
|
children: /* @__PURE__ */ jsx(Paperclip, { className: "w-5 h-5" })
|
|
10579
10619
|
}
|
|
@@ -10605,7 +10645,7 @@ function CommentActions2({
|
|
|
10605
10645
|
{
|
|
10606
10646
|
type: "button",
|
|
10607
10647
|
onClick: onReply,
|
|
10608
|
-
className: "flex items-center",
|
|
10648
|
+
className: "cursor-pointer flex items-center",
|
|
10609
10649
|
style: {
|
|
10610
10650
|
gap: "var(--spacing-sm)",
|
|
10611
10651
|
fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
|
|
@@ -10622,7 +10662,7 @@ function CommentActions2({
|
|
|
10622
10662
|
{
|
|
10623
10663
|
type: "button",
|
|
10624
10664
|
onClick: onLike,
|
|
10625
|
-
className: "flex items-center",
|
|
10665
|
+
className: "cursor-pointer flex items-center",
|
|
10626
10666
|
style: {
|
|
10627
10667
|
gap: "var(--spacing-sm)",
|
|
10628
10668
|
fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
|
|
@@ -10805,6 +10845,7 @@ function CommentItem({
|
|
|
10805
10845
|
"button",
|
|
10806
10846
|
{
|
|
10807
10847
|
type: "button",
|
|
10848
|
+
className: "cursor-pointer",
|
|
10808
10849
|
onClick: () => setShowReplies(!showReplies),
|
|
10809
10850
|
style: {
|
|
10810
10851
|
fontFamily: "var(--typo-body-xs-font, var(--typo-global-font))",
|
|
@@ -11105,7 +11146,7 @@ function ProfileCard({
|
|
|
11105
11146
|
/* @__PURE__ */ jsx(Typography, { variant: "body-s", color: "muted", className: "text-center", children: username })
|
|
11106
11147
|
] }),
|
|
11107
11148
|
rating > 0 && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 mt-3", children: [...Array(5)].map((_, i) => /* @__PURE__ */ jsx(
|
|
11108
|
-
Star,
|
|
11149
|
+
Star$1,
|
|
11109
11150
|
{
|
|
11110
11151
|
className: cn(
|
|
11111
11152
|
"size-4",
|
|
@@ -11205,7 +11246,7 @@ function SidebarProfileCard({
|
|
|
11205
11246
|
] })
|
|
11206
11247
|
] }),
|
|
11207
11248
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 justify-center", children: [
|
|
11208
|
-
/* @__PURE__ */ jsx(Star, { className: "size-4 fill-[var(--canvas-primary)] text-[var(--canvas-primary)]" }),
|
|
11249
|
+
/* @__PURE__ */ jsx(Star$1, { className: "size-4 fill-[var(--canvas-primary)] text-[var(--canvas-primary)]" }),
|
|
11209
11250
|
/* @__PURE__ */ jsx(Typography, { variant: "body-xs", className: "font-semibold", children: rating }),
|
|
11210
11251
|
/* @__PURE__ */ jsx(Typography, { variant: "body-xs", color: "muted", children: reviewCount })
|
|
11211
11252
|
] }),
|
|
@@ -11375,7 +11416,7 @@ function SkillsCard({
|
|
|
11375
11416
|
}
|
|
11376
11417
|
var badgeIcons = {
|
|
11377
11418
|
zap: Zap,
|
|
11378
|
-
star: Star,
|
|
11419
|
+
star: Star$1,
|
|
11379
11420
|
check: CheckCircle
|
|
11380
11421
|
};
|
|
11381
11422
|
var badgeColors = {
|
|
@@ -11818,7 +11859,7 @@ function StarRating2({ rating, reviewCount }) {
|
|
|
11818
11859
|
style: { gap: "var(--spacing-xxs, 2px)" },
|
|
11819
11860
|
children: [
|
|
11820
11861
|
[1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
|
|
11821
|
-
Star,
|
|
11862
|
+
Star$1,
|
|
11822
11863
|
{
|
|
11823
11864
|
className: "size-5",
|
|
11824
11865
|
fill: star <= rating ? "var(--canvas-primary)" : "var(--canvas-border)",
|
|
@@ -13905,7 +13946,7 @@ function ControlButton({ icon, onClick, isActive = true, label }) {
|
|
|
13905
13946
|
onClick,
|
|
13906
13947
|
"aria-label": label,
|
|
13907
13948
|
className: cn(
|
|
13908
|
-
"w-10 h-10 rounded-full flex items-center justify-center",
|
|
13949
|
+
"cursor-pointer w-10 h-10 rounded-full flex items-center justify-center",
|
|
13909
13950
|
"shadow-sm transition-colors",
|
|
13910
13951
|
isActive ? "bg-[var(--canvas-sidebar-light-text)] text-[var(--canvas-primary-foreground)] hover:opacity-80" : "bg-[var(--canvas-destructive)] text-[var(--canvas-primary-foreground)] hover:opacity-80"
|
|
13911
13952
|
),
|
|
@@ -14088,7 +14129,7 @@ function VideoPlaylistCard({
|
|
|
14088
14129
|
"button",
|
|
14089
14130
|
{
|
|
14090
14131
|
type: "button",
|
|
14091
|
-
className: "flex items-center gap-2 p-4 border-b border-[var(--canvas-border)] text-left w-full",
|
|
14132
|
+
className: "cursor-pointer flex items-center gap-2 p-4 border-b border-[var(--canvas-border)] text-left w-full",
|
|
14092
14133
|
onClick: () => setIsCollapsed(!isCollapsed),
|
|
14093
14134
|
children: [
|
|
14094
14135
|
/* @__PURE__ */ jsx("div", { className: "w-4 h-4 shrink-0 flex items-center justify-center", children: isCollapsed ? /* @__PURE__ */ jsx(Plus, { className: "w-4 h-4 text-[var(--canvas-text)]" }) : /* @__PURE__ */ jsx(Minus, { className: "w-4 h-4 text-[var(--canvas-text)]" }) }),
|
|
@@ -14478,327 +14519,6 @@ function CreditCardDisplay({
|
|
|
14478
14519
|
}
|
|
14479
14520
|
);
|
|
14480
14521
|
}
|
|
14481
|
-
function CanvasItem({
|
|
14482
|
-
item,
|
|
14483
|
-
isSelected,
|
|
14484
|
-
onSelect,
|
|
14485
|
-
onDelete,
|
|
14486
|
-
onDragStart,
|
|
14487
|
-
scale,
|
|
14488
|
-
children
|
|
14489
|
-
}) {
|
|
14490
|
-
const [isDragging, setIsDragging] = useState(false);
|
|
14491
|
-
const handleDragHandleMouseDown = (e) => {
|
|
14492
|
-
e.preventDefault();
|
|
14493
|
-
e.stopPropagation();
|
|
14494
|
-
setIsDragging(true);
|
|
14495
|
-
onSelect(item.id);
|
|
14496
|
-
onDragStart(item.id, e.clientX, e.clientY, item.x, item.y);
|
|
14497
|
-
};
|
|
14498
|
-
const handleClick = (e) => {
|
|
14499
|
-
e.stopPropagation();
|
|
14500
|
-
onSelect(item.id);
|
|
14501
|
-
};
|
|
14502
|
-
const handleDelete = (e) => {
|
|
14503
|
-
e.stopPropagation();
|
|
14504
|
-
onDelete(item.id);
|
|
14505
|
-
};
|
|
14506
|
-
return /* @__PURE__ */ jsxs(
|
|
14507
|
-
"div",
|
|
14508
|
-
{
|
|
14509
|
-
className: cn(
|
|
14510
|
-
"absolute group",
|
|
14511
|
-
"transition-shadow duration-150",
|
|
14512
|
-
isSelected && "ring-2 ring-[var(--canvas-primary)] ring-offset-2",
|
|
14513
|
-
isDragging && "opacity-90 shadow-2xl z-50"
|
|
14514
|
-
),
|
|
14515
|
-
style: {
|
|
14516
|
-
left: item.x,
|
|
14517
|
-
top: item.y
|
|
14518
|
-
},
|
|
14519
|
-
onClick: handleClick,
|
|
14520
|
-
children: [
|
|
14521
|
-
/* @__PURE__ */ jsxs(
|
|
14522
|
-
"div",
|
|
14523
|
-
{
|
|
14524
|
-
className: cn(
|
|
14525
|
-
"absolute -top-9 left-0 right-0 flex items-center justify-between px-2 py-1.5",
|
|
14526
|
-
"bg-[var(--canvas-text)] rounded-t-md",
|
|
14527
|
-
"opacity-0 group-hover:opacity-100 transition-opacity",
|
|
14528
|
-
isSelected && "opacity-100"
|
|
14529
|
-
),
|
|
14530
|
-
children: [
|
|
14531
|
-
/* @__PURE__ */ jsxs(
|
|
14532
|
-
"div",
|
|
14533
|
-
{
|
|
14534
|
-
onMouseDown: handleDragHandleMouseDown,
|
|
14535
|
-
className: "flex items-center gap-1.5 text-white/90 cursor-grab active:cursor-grabbing select-none",
|
|
14536
|
-
style: { fontSize: "var(--typo-body-xs-size)" },
|
|
14537
|
-
children: [
|
|
14538
|
-
/* @__PURE__ */ jsx(GripHorizontal, { className: "size-4" }),
|
|
14539
|
-
/* @__PURE__ */ jsx("span", { className: "text-[11px] font-medium", children: item.componentType })
|
|
14540
|
-
]
|
|
14541
|
-
}
|
|
14542
|
-
),
|
|
14543
|
-
/* @__PURE__ */ jsx(
|
|
14544
|
-
"button",
|
|
14545
|
-
{
|
|
14546
|
-
onClick: handleDelete,
|
|
14547
|
-
className: "p-1 rounded hover:bg-white/20 text-white/80 hover:text-white transition-colors",
|
|
14548
|
-
"aria-label": "Delete component",
|
|
14549
|
-
children: /* @__PURE__ */ jsx(X, { className: "size-3.5" })
|
|
14550
|
-
}
|
|
14551
|
-
)
|
|
14552
|
-
]
|
|
14553
|
-
}
|
|
14554
|
-
),
|
|
14555
|
-
/* @__PURE__ */ jsx("div", { className: "pointer-events-none", children })
|
|
14556
|
-
]
|
|
14557
|
-
}
|
|
14558
|
-
);
|
|
14559
|
-
}
|
|
14560
|
-
var paletteComponents = [
|
|
14561
|
-
// =====================
|
|
14562
|
-
// PAGE TEMPLATES
|
|
14563
|
-
// =====================
|
|
14564
|
-
{ id: "page-about", type: "PageAbout", label: "About", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14565
|
-
{ id: "page-account", type: "PageAccount", label: "Account Settings", icon: /* @__PURE__ */ jsx(Settings, { className: "size-4" }), category: "Page Templates" },
|
|
14566
|
-
{ id: "page-admin-portal", type: "PageAdminPortal", label: "Admin Portal", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14567
|
-
{ id: "page-centered-profile", type: "PageCenteredProfile", label: "Centered Profile", icon: /* @__PURE__ */ jsx(User, { className: "size-4" }), category: "Page Templates" },
|
|
14568
|
-
{ id: "page-double-sidebar", type: "PageDoubleSidebar", label: "Double Sidebar", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14569
|
-
{ id: "page-icon-sidebar", type: "PageIconSidebar", label: "Icon Sidebar", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14570
|
-
{ id: "page-login", type: "PageLogin", label: "Login / Signup", icon: /* @__PURE__ */ jsx(LogIn, { className: "size-4" }), category: "Page Templates" },
|
|
14571
|
-
{ id: "page-menu-sections", type: "PageMenuSections", label: "Menu Sections", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Page Templates" },
|
|
14572
|
-
{ id: "page-messenger", type: "PageMessenger", label: "Messenger", icon: /* @__PURE__ */ jsx(MessageSquare, { className: "size-4" }), category: "Page Templates" },
|
|
14573
|
-
{ id: "page-mobile-menu", type: "PageMobileMenu", label: "Mobile Menu", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14574
|
-
{ id: "page-multistep-progressbar", type: "PageMultistepProgressbar", label: "Multistep + Progress", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Page Templates" },
|
|
14575
|
-
{ id: "page-multistep-sidebar", type: "PageMultistepSidebar", label: "Multistep + Sidebar", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Page Templates" },
|
|
14576
|
-
{ id: "page-pricing", type: "PagePricing", label: "Pricing", icon: /* @__PURE__ */ jsx(CreditCard, { className: "size-4" }), category: "Page Templates" },
|
|
14577
|
-
{ id: "page-product-homepage", type: "PageProductHomepage", label: "Product Homepage", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14578
|
-
{ id: "page-reset-password", type: "PageResetPassword", label: "Reset Password", icon: /* @__PURE__ */ jsx(LogIn, { className: "size-4" }), category: "Page Templates" },
|
|
14579
|
-
{ id: "page-search-bar", type: "PageSearchBar", label: "Search Bar", icon: /* @__PURE__ */ jsx(Search, { className: "size-4" }), category: "Page Templates" },
|
|
14580
|
-
{ id: "page-sidebar-profile", type: "PageSidebarProfile", label: "Sidebar Profile", icon: /* @__PURE__ */ jsx(User, { className: "size-4" }), category: "Page Templates" },
|
|
14581
|
-
{ id: "page-standard", type: "PageStandard", label: "Standard Page", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Page Templates" },
|
|
14582
|
-
{ id: "page-standard-multistep", type: "PageStandardMultistep", label: "Standard Multistep", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Page Templates" },
|
|
14583
|
-
{ id: "page-standard-search", type: "PageStandardSearch", label: "Standard Search", icon: /* @__PURE__ */ jsx(Search, { className: "size-4" }), category: "Page Templates" },
|
|
14584
|
-
{ id: "page-vertical-multistep", type: "PageVerticalMultistep", label: "Vertical Multistep", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Page Templates" },
|
|
14585
|
-
{ id: "page-video-chat", type: "PageVideoChat", label: "Video Chat", icon: /* @__PURE__ */ jsx(Video, { className: "size-4" }), category: "Page Templates" },
|
|
14586
|
-
{ id: "page-video-list", type: "PageVideoList", label: "Video List", icon: /* @__PURE__ */ jsx(Play, { className: "size-4" }), category: "Page Templates" },
|
|
14587
|
-
// =====================
|
|
14588
|
-
// BLOCKS
|
|
14589
|
-
// =====================
|
|
14590
|
-
// Data & Tables
|
|
14591
|
-
{ id: "standard-data-table", type: "StandardDataTable", label: "Data Table", icon: /* @__PURE__ */ jsx(Table, { className: "size-4" }), category: "Blocks" },
|
|
14592
|
-
// Cards & Profiles
|
|
14593
|
-
{ id: "profile-card", type: "ProfileCard", label: "Profile Card", icon: /* @__PURE__ */ jsx(User, { className: "size-4" }), category: "Blocks" },
|
|
14594
|
-
{ id: "sidebar-profile-card", type: "SidebarProfileCard", label: "Sidebar Profile Card", icon: /* @__PURE__ */ jsx(User, { className: "size-4" }), category: "Blocks" },
|
|
14595
|
-
{ id: "profile-info-cards", type: "ProfileInfoCards", label: "Profile Info Cards", icon: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }), category: "Blocks" },
|
|
14596
|
-
{ id: "sidebar-cards", type: "SidebarCards", label: "Sidebar Cards", icon: /* @__PURE__ */ jsx(Layers, { className: "size-4" }), category: "Blocks" },
|
|
14597
|
-
{ id: "credit-card-display", type: "CreditCardDisplay", label: "Credit Card Display", icon: /* @__PURE__ */ jsx(CreditCard, { className: "size-4" }), category: "Blocks" },
|
|
14598
|
-
// Navigation & Progress
|
|
14599
|
-
{ id: "step-tracker", type: "StepTracker", label: "Step Tracker", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Blocks" },
|
|
14600
|
-
{ id: "vertical-step-tracker", type: "VerticalStepTracker", label: "Vertical Step Tracker", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Blocks" },
|
|
14601
|
-
{ id: "progress-bar", type: "ProgressBar", label: "Progress Bar", icon: /* @__PURE__ */ jsx(SlidersHorizontal, { className: "size-4" }), category: "Blocks" },
|
|
14602
|
-
{ id: "pill-tabs", type: "PillTabs", label: "Pill Tabs", icon: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }), category: "Blocks" },
|
|
14603
|
-
{ id: "mobile-bottom-nav", type: "MobileBottomNav", label: "Mobile Bottom Nav", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Blocks" },
|
|
14604
|
-
// Banners & Headers
|
|
14605
|
-
{ id: "flair-banner", type: "FlairBanner", label: "Flair Banner", icon: /* @__PURE__ */ jsx(Type, { className: "size-4" }), category: "Blocks" },
|
|
14606
|
-
{ id: "gradient-banner", type: "GradientBanner", label: "Gradient Banner", icon: /* @__PURE__ */ jsx(Type, { className: "size-4" }), category: "Blocks" },
|
|
14607
|
-
{ id: "page-header-section", type: "PageHeaderSection", label: "Page Header Section", icon: /* @__PURE__ */ jsx(FileText, { className: "size-4" }), category: "Blocks" },
|
|
14608
|
-
// Chat & Messaging
|
|
14609
|
-
{ id: "messenger-sidebar", type: "MessengerSidebar", label: "Messenger Sidebar", icon: /* @__PURE__ */ jsx(MessageSquare, { className: "size-4" }), category: "Blocks" },
|
|
14610
|
-
{ id: "chat-message", type: "ChatMessage", label: "Chat Message", icon: /* @__PURE__ */ jsx(MessageSquare, { className: "size-4" }), category: "Blocks" },
|
|
14611
|
-
// Video
|
|
14612
|
-
{ id: "video-chat-controls", type: "VideoChatControls", label: "Video Chat Controls", icon: /* @__PURE__ */ jsx(Video, { className: "size-4" }), category: "Blocks" },
|
|
14613
|
-
{ id: "webcam-preview", type: "WebcamPreview", label: "Webcam Preview", icon: /* @__PURE__ */ jsx(Video, { className: "size-4" }), category: "Blocks" },
|
|
14614
|
-
{ id: "participant-list", type: "ParticipantList", label: "Participant List", icon: /* @__PURE__ */ jsx(Users, { className: "size-4" }), category: "Blocks" },
|
|
14615
|
-
{ id: "video-content-section", type: "VideoContentSection", label: "Video Content Section", icon: /* @__PURE__ */ jsx(Play, { className: "size-4" }), category: "Blocks" },
|
|
14616
|
-
{ id: "video-playlist", type: "VideoPlaylist", label: "Video Playlist", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Blocks" },
|
|
14617
|
-
// Search & Filters
|
|
14618
|
-
{ id: "search-bar", type: "SearchBar", label: "Search Bar", icon: /* @__PURE__ */ jsx(Search, { className: "size-4" }), category: "Blocks" },
|
|
14619
|
-
{ id: "filter-popover", type: "FilterPopover", label: "Filter Popover", icon: /* @__PURE__ */ jsx(SlidersHorizontal, { className: "size-4" }), category: "Blocks" },
|
|
14620
|
-
// Forms & Settings
|
|
14621
|
-
{ id: "settings-list-row", type: "SettingsListRow", label: "Settings List Row", icon: /* @__PURE__ */ jsx(Settings, { className: "size-4" }), category: "Blocks" },
|
|
14622
|
-
{ id: "profile-image-uploader", type: "ProfileImageUploader", label: "Profile Image Uploader", icon: /* @__PURE__ */ jsx(Image, { className: "size-4" }), category: "Blocks" },
|
|
14623
|
-
{ id: "login-branding-panel", type: "LoginBrandingPanel", label: "Login Branding Panel", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Blocks" },
|
|
14624
|
-
// Marketing - Heroes
|
|
14625
|
-
{ id: "hero-section", type: "HeroSection", label: "Hero Section", icon: /* @__PURE__ */ jsx(Image, { className: "size-4" }), category: "Blocks" },
|
|
14626
|
-
{ id: "hero-dark-with-image", type: "HeroDarkWithImage", label: "Hero Dark + Image", icon: /* @__PURE__ */ jsx(Image, { className: "size-4" }), category: "Blocks" },
|
|
14627
|
-
{ id: "centered-hero", type: "CenteredHero", label: "Centered Hero", icon: /* @__PURE__ */ jsx(Image, { className: "size-4" }), category: "Blocks" },
|
|
14628
|
-
// Marketing - Social Proof
|
|
14629
|
-
{ id: "testimonial-carousel", type: "TestimonialCarousel", label: "Testimonial Carousel", icon: /* @__PURE__ */ jsx(MessageSquare, { className: "size-4" }), category: "Blocks" },
|
|
14630
|
-
{ id: "reviews-grid", type: "ReviewsGrid", label: "Reviews Grid", icon: /* @__PURE__ */ jsx(Star, { className: "size-4" }), category: "Blocks" },
|
|
14631
|
-
{ id: "social-proof", type: "SocialProof", label: "Social Proof (Logos)", icon: /* @__PURE__ */ jsx(Award, { className: "size-4" }), category: "Blocks" },
|
|
14632
|
-
{ id: "metrics-section", type: "MetricsSection", label: "Metrics Section", icon: /* @__PURE__ */ jsx(Hash, { className: "size-4" }), category: "Blocks" },
|
|
14633
|
-
// Marketing - Features
|
|
14634
|
-
{ id: "feature-with-image", type: "FeatureWithImage", label: "Feature + Image", icon: /* @__PURE__ */ jsx(Image, { className: "size-4" }), category: "Blocks" },
|
|
14635
|
-
{ id: "core-values-grid", type: "CoreValuesGrid", label: "Core Values Grid", icon: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }), category: "Blocks" },
|
|
14636
|
-
{ id: "destination-cards", type: "DestinationCards", label: "Destination Cards", icon: /* @__PURE__ */ jsx(MapPin, { className: "size-4" }), category: "Blocks" },
|
|
14637
|
-
// Marketing - Team
|
|
14638
|
-
{ id: "team-cards-grid", type: "TeamCardsGrid", label: "Team Cards Grid", icon: /* @__PURE__ */ jsx(Users, { className: "size-4" }), category: "Blocks" },
|
|
14639
|
-
{ id: "team-circular-grid", type: "TeamCircularGrid", label: "Team Circular Grid", icon: /* @__PURE__ */ jsx(Users, { className: "size-4" }), category: "Blocks" },
|
|
14640
|
-
// Marketing - CTA & Footer
|
|
14641
|
-
{ id: "cta-banner", type: "CtaBanner", label: "CTA Banner", icon: /* @__PURE__ */ jsx(Megaphone, { className: "size-4" }), category: "Blocks" },
|
|
14642
|
-
{ id: "footer-navbar", type: "FooterNavbar", label: "Footer Navbar", icon: /* @__PURE__ */ jsx(Layout, { className: "size-4" }), category: "Blocks" },
|
|
14643
|
-
// Marketing - Other
|
|
14644
|
-
{ id: "featured-news-cards", type: "FeaturedNewsCards", label: "Featured News Cards", icon: /* @__PURE__ */ jsx(Newspaper, { className: "size-4" }), category: "Blocks" },
|
|
14645
|
-
{ id: "office-locations", type: "OfficeLocations", label: "Office Locations", icon: /* @__PURE__ */ jsx(Building, { className: "size-4" }), category: "Blocks" },
|
|
14646
|
-
// Pricing
|
|
14647
|
-
{ id: "pricing-cards", type: "PricingCards", label: "Pricing Cards", icon: /* @__PURE__ */ jsx(CreditCard, { className: "size-4" }), category: "Blocks" },
|
|
14648
|
-
{ id: "faq-accordion", type: "FaqAccordion", label: "FAQ Accordion", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Blocks" },
|
|
14649
|
-
{ id: "features-comparison", type: "FeaturesComparison", label: "Features Comparison", icon: /* @__PURE__ */ jsx(Table, { className: "size-4" }), category: "Blocks" },
|
|
14650
|
-
// =====================
|
|
14651
|
-
// COMPONENTS (UI Primitives)
|
|
14652
|
-
// =====================
|
|
14653
|
-
{ id: "button", type: "Button", label: "Button", icon: /* @__PURE__ */ jsx(Square, { className: "size-4" }), category: "Components" },
|
|
14654
|
-
{ id: "checkbox", type: "Checkbox", label: "Checkbox", icon: /* @__PURE__ */ jsx(CheckSquare, { className: "size-4" }), category: "Components" },
|
|
14655
|
-
{ id: "date-input", type: "DateInput", label: "Date Input", icon: /* @__PURE__ */ jsx(Calendar$1, { className: "size-4" }), category: "Components" },
|
|
14656
|
-
{ id: "input", type: "Input", label: "Text Input", icon: /* @__PURE__ */ jsx(Type, { className: "size-4" }), category: "Components" },
|
|
14657
|
-
{ id: "select", type: "Select", label: "Select", icon: /* @__PURE__ */ jsx(List, { className: "size-4" }), category: "Components" },
|
|
14658
|
-
{ id: "switch", type: "Switch", label: "Switch", icon: /* @__PURE__ */ jsx(ToggleLeft, { className: "size-4" }), category: "Components" },
|
|
14659
|
-
{ id: "radio-group", type: "RadioGroup", label: "Radio Group", icon: /* @__PURE__ */ jsx(CircleDot, { className: "size-4" }), category: "Components" },
|
|
14660
|
-
{ id: "multiselect-tags", type: "MultiselectTags", label: "Multiselect Tags", icon: /* @__PURE__ */ jsx(Tags, { className: "size-4" }), category: "Components" },
|
|
14661
|
-
{ id: "avatar", type: "Avatar", label: "Avatar", icon: /* @__PURE__ */ jsx(User, { className: "size-4" }), category: "Components" },
|
|
14662
|
-
{ id: "badge", type: "Badge", label: "Badge", icon: /* @__PURE__ */ jsx(Award, { className: "size-4" }), category: "Components" }
|
|
14663
|
-
];
|
|
14664
|
-
var componentsByCategory = paletteComponents.reduce((acc, comp) => {
|
|
14665
|
-
if (!acc[comp.category]) {
|
|
14666
|
-
acc[comp.category] = [];
|
|
14667
|
-
}
|
|
14668
|
-
acc[comp.category].push(comp);
|
|
14669
|
-
return acc;
|
|
14670
|
-
}, {});
|
|
14671
|
-
var categoryOrder = ["Page Templates", "Blocks", "Components"];
|
|
14672
|
-
function DraggableComponent({ component }) {
|
|
14673
|
-
const [isMounted, setIsMounted] = useState(false);
|
|
14674
|
-
const { attributes, listeners, setNodeRef, transform, isDragging } = useDraggable({
|
|
14675
|
-
id: component.id,
|
|
14676
|
-
data: {
|
|
14677
|
-
type: component.type,
|
|
14678
|
-
label: component.label
|
|
14679
|
-
}
|
|
14680
|
-
});
|
|
14681
|
-
useEffect(() => {
|
|
14682
|
-
setIsMounted(true);
|
|
14683
|
-
}, []);
|
|
14684
|
-
const style = {
|
|
14685
|
-
transform: CSS.Transform.toString(transform),
|
|
14686
|
-
opacity: isDragging ? 0.5 : 1
|
|
14687
|
-
};
|
|
14688
|
-
return /* @__PURE__ */ jsxs(
|
|
14689
|
-
"div",
|
|
14690
|
-
{
|
|
14691
|
-
ref: setNodeRef,
|
|
14692
|
-
style,
|
|
14693
|
-
...isMounted ? attributes : {},
|
|
14694
|
-
...isMounted ? listeners : {},
|
|
14695
|
-
className: cn(
|
|
14696
|
-
"flex items-center gap-3 px-3 py-2.5 rounded-md cursor-grab active:cursor-grabbing",
|
|
14697
|
-
"border border-transparent",
|
|
14698
|
-
"hover:bg-[var(--canvas-surface)] hover:border-[var(--canvas-border)]",
|
|
14699
|
-
"transition-colors group"
|
|
14700
|
-
),
|
|
14701
|
-
children: [
|
|
14702
|
-
/* @__PURE__ */ jsx(
|
|
14703
|
-
"div",
|
|
14704
|
-
{
|
|
14705
|
-
className: "flex items-center justify-center size-8 rounded-md bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]",
|
|
14706
|
-
children: component.icon
|
|
14707
|
-
}
|
|
14708
|
-
),
|
|
14709
|
-
/* @__PURE__ */ jsx(
|
|
14710
|
-
"span",
|
|
14711
|
-
{
|
|
14712
|
-
className: "text-[var(--canvas-text)]",
|
|
14713
|
-
style: {
|
|
14714
|
-
fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
|
|
14715
|
-
fontSize: "var(--typo-body-s-size)"
|
|
14716
|
-
},
|
|
14717
|
-
children: component.label
|
|
14718
|
-
}
|
|
14719
|
-
)
|
|
14720
|
-
]
|
|
14721
|
-
}
|
|
14722
|
-
);
|
|
14723
|
-
}
|
|
14724
|
-
function CategorySection({ category, components, defaultExpanded = true }) {
|
|
14725
|
-
const [isExpanded, setIsExpanded] = useState(defaultExpanded);
|
|
14726
|
-
return /* @__PURE__ */ jsxs("div", { className: "mb-2", children: [
|
|
14727
|
-
/* @__PURE__ */ jsxs(
|
|
14728
|
-
"button",
|
|
14729
|
-
{
|
|
14730
|
-
onClick: () => setIsExpanded(!isExpanded),
|
|
14731
|
-
className: "cursor-pointer flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--canvas-surface)] rounded-md transition-colors",
|
|
14732
|
-
children: [
|
|
14733
|
-
isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-[var(--canvas-text-muted)]" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 text-[var(--canvas-text-muted)]" }),
|
|
14734
|
-
/* @__PURE__ */ jsx(
|
|
14735
|
-
"span",
|
|
14736
|
-
{
|
|
14737
|
-
className: "font-semibold uppercase tracking-wider text-[var(--canvas-text-muted)]",
|
|
14738
|
-
style: { fontSize: "var(--typo-body-xs-size)" },
|
|
14739
|
-
children: category
|
|
14740
|
-
}
|
|
14741
|
-
),
|
|
14742
|
-
/* @__PURE__ */ jsx("span", { className: "ml-auto text-[var(--canvas-text-placeholder)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: components.length })
|
|
14743
|
-
]
|
|
14744
|
-
}
|
|
14745
|
-
),
|
|
14746
|
-
isExpanded && /* @__PURE__ */ jsx("div", { className: "mt-1 ml-2 space-y-0.5", children: components.map((component) => /* @__PURE__ */ jsx(DraggableComponent, { component }, component.id)) })
|
|
14747
|
-
] });
|
|
14748
|
-
}
|
|
14749
|
-
function ComponentPalette({ className }) {
|
|
14750
|
-
return /* @__PURE__ */ jsxs(
|
|
14751
|
-
"aside",
|
|
14752
|
-
{
|
|
14753
|
-
className: cn(
|
|
14754
|
-
"w-[280px] h-full flex flex-col",
|
|
14755
|
-
"bg-[var(--canvas-background)] border-r border-[var(--canvas-border)]",
|
|
14756
|
-
className
|
|
14757
|
-
),
|
|
14758
|
-
children: [
|
|
14759
|
-
/* @__PURE__ */ jsxs("div", { className: "px-4 py-4 border-b border-[var(--canvas-border)]", children: [
|
|
14760
|
-
/* @__PURE__ */ jsx(
|
|
14761
|
-
"h2",
|
|
14762
|
-
{
|
|
14763
|
-
className: "font-semibold text-[var(--canvas-text)]",
|
|
14764
|
-
style: {
|
|
14765
|
-
fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
|
|
14766
|
-
fontSize: "var(--typo-body-s-size)"
|
|
14767
|
-
},
|
|
14768
|
-
children: "Components"
|
|
14769
|
-
}
|
|
14770
|
-
),
|
|
14771
|
-
/* @__PURE__ */ jsx(
|
|
14772
|
-
"p",
|
|
14773
|
-
{
|
|
14774
|
-
className: "text-[var(--canvas-text-muted)] mt-1",
|
|
14775
|
-
style: { fontSize: "var(--typo-body-xs-size)" },
|
|
14776
|
-
children: "Drag components onto the canvas"
|
|
14777
|
-
}
|
|
14778
|
-
)
|
|
14779
|
-
] }),
|
|
14780
|
-
/* @__PURE__ */ jsx(ScrollArea, { className: "flex-1", children: /* @__PURE__ */ jsx("div", { className: "p-3", children: categoryOrder.map((category) => {
|
|
14781
|
-
const components = componentsByCategory[category];
|
|
14782
|
-
if (!components) return null;
|
|
14783
|
-
return /* @__PURE__ */ jsx(
|
|
14784
|
-
CategorySection,
|
|
14785
|
-
{
|
|
14786
|
-
category,
|
|
14787
|
-
components,
|
|
14788
|
-
defaultExpanded: category !== "Page Templates"
|
|
14789
|
-
},
|
|
14790
|
-
category
|
|
14791
|
-
);
|
|
14792
|
-
}) }) }),
|
|
14793
|
-
/* @__PURE__ */ jsx("div", { className: "px-4 py-3 border-t border-[var(--canvas-border)] bg-[var(--canvas-surface)]", children: /* @__PURE__ */ jsxs("p", { className: "text-[var(--canvas-text-placeholder)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
|
|
14794
|
-
"Tip: Press ",
|
|
14795
|
-
/* @__PURE__ */ jsx("kbd", { className: "px-1.5 py-0.5 bg-[var(--canvas-background)] rounded border border-[var(--canvas-border)]", style: { fontSize: "10px" }, children: "Delete" }),
|
|
14796
|
-
" to remove selected"
|
|
14797
|
-
] }) })
|
|
14798
|
-
]
|
|
14799
|
-
}
|
|
14800
|
-
);
|
|
14801
|
-
}
|
|
14802
14522
|
|
|
14803
14523
|
// src/lib/component-registry.ts
|
|
14804
14524
|
var layoutShells = {
|
|
@@ -15053,8 +14773,8 @@ var blocks = {
|
|
|
15053
14773
|
},
|
|
15054
14774
|
ContentDropzone: {
|
|
15055
14775
|
path: "@/components/blocks",
|
|
15056
|
-
description: "Placeholder dropzone for content areas
|
|
15057
|
-
props: ["
|
|
14776
|
+
description: "Placeholder dropzone for content areas. Shows dashed placeholder when empty; arranges children in a flex column with 32px (--spacing-4xl) gap between blocks. Within a block, use 12px (--spacing-lg) gap between title groups and their content.",
|
|
14777
|
+
props: ["height?", "className?", "children?"]
|
|
15058
14778
|
},
|
|
15059
14779
|
UpvotingPostsTable: {
|
|
15060
14780
|
path: "@/components/blocks",
|
|
@@ -15175,23 +14895,6 @@ var groupModalDrawerBlocks = {
|
|
|
15175
14895
|
props: ["title?", "description?", "rows?: FormRowConfig[]", "sortOptions?", "filterOptions?", "inputSize?: 'sm' | 'default' | 'lg'", "onAddNew?", "onCancel?", "onSave?", "onFieldChange?", "showHeader?", "showFooter?"]
|
|
15176
14896
|
}
|
|
15177
14897
|
};
|
|
15178
|
-
var canvasBlocks = {
|
|
15179
|
-
InfinityCanvas: {
|
|
15180
|
-
path: "@/components/blocks",
|
|
15181
|
-
description: "Pannable, zoomable infinite canvas for placing components. Supports drag-and-drop from palette.",
|
|
15182
|
-
props: ["items: CanvasItemData[]", "onItemsChange", "selectedId", "onSelectItem"]
|
|
15183
|
-
},
|
|
15184
|
-
ComponentPalette: {
|
|
15185
|
-
path: "@/components/blocks",
|
|
15186
|
-
description: "Sidebar listing draggable components grouped by category. Used with InfinityCanvas.",
|
|
15187
|
-
props: ["className?"]
|
|
15188
|
-
},
|
|
15189
|
-
CanvasItem: {
|
|
15190
|
-
path: "@/components/blocks",
|
|
15191
|
-
description: "Wrapper for components placed on the infinity canvas. Handles positioning and selection.",
|
|
15192
|
-
props: ["item: CanvasItemData", "isSelected", "onSelect", "onDelete", "children"]
|
|
15193
|
-
}
|
|
15194
|
-
};
|
|
15195
14898
|
var videoBlocks = {
|
|
15196
14899
|
VideoChatControls: {
|
|
15197
14900
|
path: "@/components/blocks",
|
|
@@ -15465,12 +15168,6 @@ var pageTemplates = {
|
|
|
15465
15168
|
description: "Video content page with player and playlist sidebar.",
|
|
15466
15169
|
shell: "custom (no shell)",
|
|
15467
15170
|
blocks: ["VideoContentSection", "VideoPlaylist", "YouTubePlayer"]
|
|
15468
|
-
},
|
|
15469
|
-
"page-canvas": {
|
|
15470
|
-
path: "/page-canvas",
|
|
15471
|
-
description: "Figma-style infinite canvas whiteboard. Drag components from sidebar palette onto a pannable, zoomable canvas.",
|
|
15472
|
-
shell: "custom (no shell)",
|
|
15473
|
-
blocks: ["InfinityCanvas", "ComponentPalette", "CanvasItem", "Header"]
|
|
15474
15171
|
}
|
|
15475
15172
|
};
|
|
15476
15173
|
function buildComponentOptions() {
|
|
@@ -16411,7 +16108,7 @@ function StarRating3({ rating }) {
|
|
|
16411
16108
|
className: "flex items-center",
|
|
16412
16109
|
style: { gap: "var(--spacing-xxs, 2px)" },
|
|
16413
16110
|
children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx(
|
|
16414
|
-
Star,
|
|
16111
|
+
Star$1,
|
|
16415
16112
|
{
|
|
16416
16113
|
className: "size-5",
|
|
16417
16114
|
fill: star <= rating ? "var(--canvas-primary)" : "var(--canvas-border)",
|
|
@@ -16804,7 +16501,7 @@ function ProfileTileCard({ item, onClick }) {
|
|
|
16804
16501
|
style: { gap: "4px" },
|
|
16805
16502
|
children: [
|
|
16806
16503
|
/* @__PURE__ */ jsx(
|
|
16807
|
-
Star,
|
|
16504
|
+
Star$1,
|
|
16808
16505
|
{
|
|
16809
16506
|
className: "w-5 h-5",
|
|
16810
16507
|
style: { color: "var(--canvas-primary)", fill: "var(--canvas-primary)" }
|
|
@@ -20876,7 +20573,7 @@ function FeaturedPlaces() {
|
|
|
20876
20573
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mt-6", children: [
|
|
20877
20574
|
/* @__PURE__ */ jsx(Typography, { variant: "body-xl", as: "h3", style: { fontWeight: 600 }, children: place.name }),
|
|
20878
20575
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
20879
|
-
/* @__PURE__ */ jsx(Star
|
|
20576
|
+
/* @__PURE__ */ jsx(Star, { size: 16, weight: "fill", style: { color: "var(--canvas-primary)" } }),
|
|
20880
20577
|
/* @__PURE__ */ jsx(Typography, { variant: "body-s", as: "span", children: place.rating })
|
|
20881
20578
|
] })
|
|
20882
20579
|
] }),
|
|
@@ -20963,7 +20660,7 @@ function HowItWorks({ variant = "light", features = defaultFeatures }) {
|
|
|
20963
20660
|
}
|
|
20964
20661
|
var defaultCategories = [
|
|
20965
20662
|
{ id: "1", title: "Most popular", count: "5,000 homes", icon: /* @__PURE__ */ jsx(Heart, { size: 48 }) },
|
|
20966
|
-
{ id: "2", title: "Top rated", count: "5,000 homes", icon: /* @__PURE__ */ jsx(Star
|
|
20663
|
+
{ id: "2", title: "Top rated", count: "5,000 homes", icon: /* @__PURE__ */ jsx(Star, { size: 48 }) },
|
|
20967
20664
|
{ id: "3", title: "Unique stays", count: "5,000 homes", icon: /* @__PURE__ */ jsx(Sun, { size: 48 }) },
|
|
20968
20665
|
{ id: "4", title: "Affordable", count: "5,000 homes", icon: /* @__PURE__ */ jsx(CurrencyDollar, { size: 48 }) },
|
|
20969
20666
|
{ id: "5", title: "Friendly staff", count: "5,000 homes", icon: /* @__PURE__ */ jsx(Smiley, { size: 48 }) },
|
|
@@ -21150,7 +20847,7 @@ var defaultSteps2 = [
|
|
|
21150
20847
|
id: "4",
|
|
21151
20848
|
title: "Share your experience",
|
|
21152
20849
|
description: "Leave a review for the property and host for other users to see",
|
|
21153
|
-
icon: /* @__PURE__ */ jsx(Star
|
|
20850
|
+
icon: /* @__PURE__ */ jsx(Star, { size: 24 })
|
|
21154
20851
|
}
|
|
21155
20852
|
];
|
|
21156
20853
|
function VerticalHowItWorks({
|
|
@@ -23307,7 +23004,17 @@ var brandColorVars = [
|
|
|
23307
23004
|
"--canvas-sidebar-dark-active-bg",
|
|
23308
23005
|
"--canvas-sidebar-dark-text",
|
|
23309
23006
|
"--canvas-sidebar-dark-border",
|
|
23310
|
-
"--canvas-border-input-focus"
|
|
23007
|
+
"--canvas-border-input-focus",
|
|
23008
|
+
// Button colors that track primary
|
|
23009
|
+
"--btn-primary-bg",
|
|
23010
|
+
"--btn-primary-border",
|
|
23011
|
+
"--btn-primary-bg-hover",
|
|
23012
|
+
"--btn-primary-border-hover",
|
|
23013
|
+
"--btn-primary-outline-text",
|
|
23014
|
+
"--btn-primary-outline-border",
|
|
23015
|
+
"--btn-primary-outline-text-hover",
|
|
23016
|
+
"--btn-primary-outline-border-hover",
|
|
23017
|
+
"--btn-primary-neutral-bg-hover"
|
|
23311
23018
|
];
|
|
23312
23019
|
function isEqual(a, b) {
|
|
23313
23020
|
if (a === b) return true;
|
|
@@ -23640,11 +23347,17 @@ function useThemeState(options) {
|
|
|
23640
23347
|
setOverrides((prev) => {
|
|
23641
23348
|
const effectivePrimaryColor = newValues["--canvas-primary"] || prev["--canvas-primary"] || defaultColors["--canvas-primary"];
|
|
23642
23349
|
varsToUpdate.forEach((varName) => {
|
|
23643
|
-
if (varName === "--canvas-sidebar-light-active-text" || varName === "--canvas-border-input-focus") {
|
|
23350
|
+
if (varName === "--canvas-sidebar-light-active-text" || varName === "--canvas-border-input-focus" || varName === "--btn-primary-bg" || varName === "--btn-primary-border" || varName === "--btn-primary-outline-text" || varName === "--btn-primary-outline-border" || varName === "--btn-primary-outline-text-hover" || varName === "--btn-primary-outline-border-hover" || varName === "--btn-primary-neutral-bg-hover") {
|
|
23644
23351
|
newValues[varName] = effectivePrimaryColor;
|
|
23645
23352
|
(document.body ?? document.documentElement).style.setProperty(varName, effectivePrimaryColor);
|
|
23646
23353
|
return;
|
|
23647
23354
|
}
|
|
23355
|
+
if (varName === "--btn-primary-bg-hover" || varName === "--btn-primary-border-hover") {
|
|
23356
|
+
const primaryDarkColor = newValues["--canvas-primary-dark"] || prev["--canvas-primary-dark"] || defaultColors["--canvas-primary-dark"];
|
|
23357
|
+
newValues[varName] = primaryDarkColor;
|
|
23358
|
+
(document.body ?? document.documentElement).style.setProperty(varName, primaryDarkColor);
|
|
23359
|
+
return;
|
|
23360
|
+
}
|
|
23648
23361
|
if (varName === "--canvas-primary") return;
|
|
23649
23362
|
const defaultColor = defaultColors[varName];
|
|
23650
23363
|
if (!defaultColor || !defaultColor.startsWith("#")) return;
|
|
@@ -23693,6 +23406,9 @@ function useThemeState(options) {
|
|
|
23693
23406
|
const isDirty = useMemo(() => {
|
|
23694
23407
|
return !isEqual(overrides, savedOverrides) || !isEqual(branding, savedBranding) || !isEqual(images, savedImages) || !isEqual(customButtonStyles, savedCustomButtonStyles);
|
|
23695
23408
|
}, [overrides, savedOverrides, branding, savedBranding, images, savedImages, customButtonStyles, savedCustomButtonStyles]);
|
|
23409
|
+
const hasCustomizations = useMemo(() => {
|
|
23410
|
+
return Object.keys(savedOverrides).length > 0 || !isEqual(savedBranding, defaultBranding) || !isEqual(savedImages, defaultImages) || !isEqual(savedCustomButtonStyles, defaultCustomButtonStyles);
|
|
23411
|
+
}, [savedOverrides, savedBranding, savedImages, savedCustomButtonStyles]);
|
|
23696
23412
|
const unsavedChangesCount = useMemo(() => {
|
|
23697
23413
|
let count = 0;
|
|
23698
23414
|
const allKeys = /* @__PURE__ */ new Set([...Object.keys(overrides), ...Object.keys(savedOverrides)]);
|
|
@@ -23732,7 +23448,8 @@ function useThemeState(options) {
|
|
|
23732
23448
|
setBrandHue,
|
|
23733
23449
|
setBrandVibrancy,
|
|
23734
23450
|
setSyncRelatedColors,
|
|
23735
|
-
applyBrandHueVibrancy
|
|
23451
|
+
applyBrandHueVibrancy,
|
|
23452
|
+
hasCustomizations
|
|
23736
23453
|
};
|
|
23737
23454
|
}
|
|
23738
23455
|
function HslColorPicker({ value, onChange }) {
|
|
@@ -24010,7 +23727,6 @@ function ColorInputRow({
|
|
|
24010
23727
|
{
|
|
24011
23728
|
className: "w-auto p-0",
|
|
24012
23729
|
align: "start",
|
|
24013
|
-
onPointerDownOutside: (e) => e.preventDefault(),
|
|
24014
23730
|
children: /* @__PURE__ */ jsx(HslColorPicker, { value, onChange })
|
|
24015
23731
|
}
|
|
24016
23732
|
)
|
|
@@ -24109,7 +23825,6 @@ function VariableColorRow({
|
|
|
24109
23825
|
{
|
|
24110
23826
|
className: "w-auto p-0",
|
|
24111
23827
|
align: "start",
|
|
24112
|
-
onPointerDownOutside: (e) => e.preventDefault(),
|
|
24113
23828
|
children: /* @__PURE__ */ jsx(
|
|
24114
23829
|
HslColorPicker,
|
|
24115
23830
|
{
|
|
@@ -24251,7 +23966,6 @@ function ColorsPanel({ theme }) {
|
|
|
24251
23966
|
{
|
|
24252
23967
|
style: {
|
|
24253
23968
|
padding: "12px",
|
|
24254
|
-
background: "#f9fafb",
|
|
24255
23969
|
borderRadius: "8px",
|
|
24256
23970
|
border: "1px solid #e5e7eb"
|
|
24257
23971
|
},
|
|
@@ -24447,7 +24161,7 @@ function ColorsPanel({ theme }) {
|
|
|
24447
24161
|
var logoIcons = [
|
|
24448
24162
|
{ name: "Diamond", icon: Diamond },
|
|
24449
24163
|
{ name: "Hexagon", icon: Hexagon },
|
|
24450
|
-
{ name: "Star", icon: Star
|
|
24164
|
+
{ name: "Star", icon: Star },
|
|
24451
24165
|
{ name: "Lightning", icon: Lightning },
|
|
24452
24166
|
{ name: "Sparkle", icon: Sparkle },
|
|
24453
24167
|
{ name: "Infinity", icon: Infinity },
|
|
@@ -24477,7 +24191,7 @@ var logoIcons = [
|
|
|
24477
24191
|
{ name: "ChatCircle", icon: ChatCircle },
|
|
24478
24192
|
{ name: "Envelope", icon: Envelope },
|
|
24479
24193
|
{ name: "Phone", icon: Phone$1 },
|
|
24480
|
-
{ name: "Megaphone", icon: Megaphone
|
|
24194
|
+
{ name: "Megaphone", icon: Megaphone },
|
|
24481
24195
|
{ name: "Heart", icon: Heart },
|
|
24482
24196
|
{ name: "Shield", icon: Shield },
|
|
24483
24197
|
{ name: "Trophy", icon: Trophy },
|
|
@@ -24537,7 +24251,6 @@ function ImagesPanel({ theme, onImageUpload }) {
|
|
|
24537
24251
|
gap: "12px",
|
|
24538
24252
|
marginBottom: "16px",
|
|
24539
24253
|
padding: "16px",
|
|
24540
|
-
background: "#f9fafb",
|
|
24541
24254
|
borderRadius: "8px",
|
|
24542
24255
|
border: "1px solid #e5e7eb"
|
|
24543
24256
|
},
|
|
@@ -24690,7 +24403,10 @@ function ImagesPanel({ theme, onImageUpload }) {
|
|
|
24690
24403
|
style: {
|
|
24691
24404
|
display: "grid",
|
|
24692
24405
|
gridTemplateColumns: "repeat(8, 1fr)",
|
|
24693
|
-
gap: "4px"
|
|
24406
|
+
gap: "4px",
|
|
24407
|
+
border: "1px solid #e5e7eb",
|
|
24408
|
+
borderRadius: "8px",
|
|
24409
|
+
padding: "6px"
|
|
24694
24410
|
},
|
|
24695
24411
|
children: logoIcons.map((icon) => {
|
|
24696
24412
|
const isSelected = theme.branding.iconName === icon.name;
|
|
@@ -24816,7 +24532,6 @@ function ImageUploadRow({
|
|
|
24816
24532
|
alignItems: "center",
|
|
24817
24533
|
gap: "10px",
|
|
24818
24534
|
padding: "8px 10px",
|
|
24819
|
-
background: "#f9fafb",
|
|
24820
24535
|
borderRadius: "6px",
|
|
24821
24536
|
border: "1px solid #e5e7eb"
|
|
24822
24537
|
},
|
|
@@ -24982,7 +24697,7 @@ function TypographyPanel({ theme }) {
|
|
|
24982
24697
|
}, []);
|
|
24983
24698
|
const globalFont = theme.variables["--typo-global-font"] || "Inter";
|
|
24984
24699
|
return /* @__PURE__ */ jsxs("div", { "data-theme-drawer-panel": true, className: "p-4", children: [
|
|
24985
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-3
|
|
24700
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-3 rounded-lg border border-[var(--canvas-border)] mb-5", children: [
|
|
24986
24701
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
24987
24702
|
/* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-[var(--canvas-text)]", children: "Global Font" }),
|
|
24988
24703
|
/* @__PURE__ */ jsx("div", { className: "text-[11px] text-[var(--canvas-text-muted)] mt-0.5", children: "Default font for all text styles" })
|
|
@@ -26043,12 +25758,9 @@ var drawerStyles = {
|
|
|
26043
25758
|
},
|
|
26044
25759
|
tabBar: {
|
|
26045
25760
|
display: "flex",
|
|
26046
|
-
|
|
26047
|
-
padding: "3px",
|
|
26048
|
-
gap: "2px",
|
|
25761
|
+
gap: "8px",
|
|
26049
25762
|
flexShrink: 0,
|
|
26050
25763
|
overflowX: "auto",
|
|
26051
|
-
borderRadius: "8px",
|
|
26052
25764
|
margin: "0 16px 8px"
|
|
26053
25765
|
},
|
|
26054
25766
|
tab: (active) => ({
|
|
@@ -26056,7 +25768,7 @@ var drawerStyles = {
|
|
|
26056
25768
|
fontSize: "12px",
|
|
26057
25769
|
fontWeight: 500,
|
|
26058
25770
|
color: active ? "#ffffff" : "#6b7280",
|
|
26059
|
-
background: active ? "#171717" : "
|
|
25771
|
+
background: active ? "#171717" : "#f3f4f6",
|
|
26060
25772
|
border: "none",
|
|
26061
25773
|
borderRadius: "6px",
|
|
26062
25774
|
cursor: "pointer",
|
|
@@ -26112,7 +25824,11 @@ function ThemeDrawer({
|
|
|
26112
25824
|
storageKey,
|
|
26113
25825
|
title = "Design Variables",
|
|
26114
25826
|
width = 464,
|
|
26115
|
-
readOnly = false
|
|
25827
|
+
readOnly = false,
|
|
25828
|
+
hideSave = false,
|
|
25829
|
+
docked = false,
|
|
25830
|
+
stickyTopOffset = 0,
|
|
25831
|
+
children
|
|
26116
25832
|
}) {
|
|
26117
25833
|
if (devOnly && process.env.NODE_ENV === "production") {
|
|
26118
25834
|
return null;
|
|
@@ -26120,6 +25836,8 @@ function ThemeDrawer({
|
|
|
26120
25836
|
const [open, setOpen] = useState(defaultOpen);
|
|
26121
25837
|
const [activeTab, setActiveTab] = useState("colors");
|
|
26122
25838
|
const [resetConfirmOpen, setResetConfirmOpen] = useState(false);
|
|
25839
|
+
const [localPreviewBranding, setLocalPreviewBranding] = useState(null);
|
|
25840
|
+
const [localPreviewImages, setLocalPreviewImages] = useState(null);
|
|
26123
25841
|
const isRight = triggerPosition === "bottom-right";
|
|
26124
25842
|
const [dragPos, setDragPos] = useState({ x: 20, y: 20 });
|
|
26125
25843
|
const isDraggingRef = useRef(false);
|
|
@@ -26158,6 +25876,8 @@ function ThemeDrawer({
|
|
|
26158
25876
|
},
|
|
26159
25877
|
[]
|
|
26160
25878
|
);
|
|
25879
|
+
const contentRef = useRef(null);
|
|
25880
|
+
const prevOverrideKeysRef = useRef(/* @__PURE__ */ new Set());
|
|
26161
25881
|
const theme = useThemeState({
|
|
26162
25882
|
storageKey,
|
|
26163
25883
|
initialOverrides,
|
|
@@ -26173,13 +25893,21 @@ function ThemeDrawer({
|
|
|
26173
25893
|
useEffect(() => {
|
|
26174
25894
|
if (open) {
|
|
26175
25895
|
setPreviewBranding(theme.branding);
|
|
25896
|
+
setLocalPreviewBranding(theme.branding);
|
|
26176
25897
|
}
|
|
26177
25898
|
}, [open, theme.branding, setPreviewBranding]);
|
|
26178
25899
|
useEffect(() => {
|
|
26179
25900
|
if (open) {
|
|
26180
25901
|
setPreviewImages(theme.images);
|
|
25902
|
+
setLocalPreviewImages(theme.images);
|
|
26181
25903
|
}
|
|
26182
25904
|
}, [open, theme.images, setPreviewImages]);
|
|
25905
|
+
useEffect(() => {
|
|
25906
|
+
broadcastBranding(open ? theme.branding : null);
|
|
25907
|
+
}, [open, theme.branding]);
|
|
25908
|
+
useEffect(() => {
|
|
25909
|
+
broadcastImages(open ? theme.images : null);
|
|
25910
|
+
}, [open, theme.images]);
|
|
26183
25911
|
const handleOpenChange = useCallback(
|
|
26184
25912
|
(newOpen) => {
|
|
26185
25913
|
if (!newOpen) {
|
|
@@ -26188,6 +25916,8 @@ function ThemeDrawer({
|
|
|
26188
25916
|
}
|
|
26189
25917
|
setPreviewBranding(null);
|
|
26190
25918
|
setPreviewImages(null);
|
|
25919
|
+
setLocalPreviewBranding(null);
|
|
25920
|
+
setLocalPreviewImages(null);
|
|
26191
25921
|
setResetConfirmOpen(false);
|
|
26192
25922
|
}
|
|
26193
25923
|
setOpen(newOpen);
|
|
@@ -26204,76 +25934,401 @@ function ThemeDrawer({
|
|
|
26204
25934
|
theme.resetAll();
|
|
26205
25935
|
setPreviewBranding(null);
|
|
26206
25936
|
setPreviewImages(null);
|
|
25937
|
+
setLocalPreviewBranding(null);
|
|
25938
|
+
setLocalPreviewImages(null);
|
|
26207
25939
|
setResetConfirmOpen(false);
|
|
26208
25940
|
}, [theme, setPreviewBranding, setPreviewImages]);
|
|
26209
25941
|
const activePanels = enabledPanels ? panelConfig.filter((p) => enabledPanels.includes(p.id)) : panelConfig;
|
|
26210
|
-
const showFooter = !readOnly && (theme.isDirty || resetConfirmOpen);
|
|
26211
|
-
|
|
26212
|
-
!
|
|
25942
|
+
const showFooter = !readOnly && (!hideSave && theme.isDirty || resetConfirmOpen || theme.hasCustomizations);
|
|
25943
|
+
useEffect(() => {
|
|
25944
|
+
if (!docked || !open) return;
|
|
25945
|
+
const handleEscape = (e) => {
|
|
25946
|
+
if (e.key === "Escape") {
|
|
25947
|
+
handleOpenChange(false);
|
|
25948
|
+
}
|
|
25949
|
+
};
|
|
25950
|
+
document.addEventListener("keydown", handleEscape);
|
|
25951
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
25952
|
+
}, [docked, open, handleOpenChange]);
|
|
25953
|
+
useLayoutEffect(() => {
|
|
25954
|
+
const el = contentRef.current;
|
|
25955
|
+
if (!el) return;
|
|
25956
|
+
const currentKeys = new Set(Object.keys(theme.overrides));
|
|
25957
|
+
prevOverrideKeysRef.current.forEach((key) => {
|
|
25958
|
+
if (!currentKeys.has(key)) {
|
|
25959
|
+
const defaultValue = theme.variables[key];
|
|
25960
|
+
if (defaultValue) {
|
|
25961
|
+
el.style.setProperty(key, defaultValue);
|
|
25962
|
+
} else {
|
|
25963
|
+
el.style.removeProperty(key);
|
|
25964
|
+
}
|
|
25965
|
+
}
|
|
25966
|
+
});
|
|
25967
|
+
Object.entries(theme.overrides).forEach(([name, value]) => {
|
|
25968
|
+
el.style.setProperty(name, value);
|
|
25969
|
+
});
|
|
25970
|
+
prevOverrideKeysRef.current = currentKeys;
|
|
25971
|
+
}, [theme.overrides, theme.variables]);
|
|
25972
|
+
const scrollHeight = docked ? `calc(100vh - ${stickyTopOffset}px - ${showFooter ? 200 : 150}px)` : `calc(100vh - ${showFooter ? 200 : 150}px)`;
|
|
25973
|
+
const tabBar = /* @__PURE__ */ jsx("div", { style: drawerStyles.tabBar, children: activePanels.map((panel) => {
|
|
25974
|
+
const isActive = activeTab === panel.id;
|
|
25975
|
+
return /* @__PURE__ */ jsx(
|
|
25976
|
+
"button",
|
|
25977
|
+
{
|
|
25978
|
+
onClick: () => setActiveTab(panel.id),
|
|
25979
|
+
style: drawerStyles.tab(isActive),
|
|
25980
|
+
onMouseEnter: (e) => {
|
|
25981
|
+
if (!isActive) {
|
|
25982
|
+
e.currentTarget.style.background = "#e5e7eb";
|
|
25983
|
+
}
|
|
25984
|
+
},
|
|
25985
|
+
onMouseLeave: (e) => {
|
|
25986
|
+
if (!isActive) {
|
|
25987
|
+
e.currentTarget.style.background = "#f3f4f6";
|
|
25988
|
+
}
|
|
25989
|
+
},
|
|
25990
|
+
children: panel.label
|
|
25991
|
+
},
|
|
25992
|
+
panel.id
|
|
25993
|
+
);
|
|
25994
|
+
}) });
|
|
25995
|
+
const panelContent = /* @__PURE__ */ jsx(
|
|
25996
|
+
ScrollArea,
|
|
25997
|
+
{
|
|
25998
|
+
className: "flex-1 overflow-hidden",
|
|
25999
|
+
style: { height: scrollHeight },
|
|
26000
|
+
children: /* @__PURE__ */ jsxs("div", { style: drawerStyles.container, children: [
|
|
26001
|
+
activeTab === "colors" && /* @__PURE__ */ jsx(ColorsPanel, { theme }),
|
|
26002
|
+
activeTab === "images" && /* @__PURE__ */ jsx(ImagesPanel, { theme, onImageUpload }),
|
|
26003
|
+
activeTab === "typography" && /* @__PURE__ */ jsx(TypographyPanel, { theme }),
|
|
26004
|
+
activeTab === "buttons" && /* @__PURE__ */ jsx(ButtonsPanel, { theme }),
|
|
26005
|
+
activeTab === "inputs" && /* @__PURE__ */ jsx(InputsPanel, { theme }),
|
|
26006
|
+
activeTab === "export" && /* @__PURE__ */ jsx(ExportPanel, { theme })
|
|
26007
|
+
] })
|
|
26008
|
+
}
|
|
26009
|
+
);
|
|
26010
|
+
const footerContent = showFooter ? /* @__PURE__ */ jsx("div", { style: drawerStyles.footer, children: resetConfirmOpen ? /* @__PURE__ */ jsxs(
|
|
26011
|
+
"div",
|
|
26012
|
+
{
|
|
26013
|
+
style: {
|
|
26014
|
+
display: "flex",
|
|
26015
|
+
flexDirection: "column",
|
|
26016
|
+
gap: "8px",
|
|
26017
|
+
width: "100%"
|
|
26018
|
+
},
|
|
26019
|
+
children: [
|
|
26020
|
+
/* @__PURE__ */ jsx(
|
|
26021
|
+
"span",
|
|
26022
|
+
{
|
|
26023
|
+
style: {
|
|
26024
|
+
fontSize: "13px",
|
|
26025
|
+
color: "#374151",
|
|
26026
|
+
textAlign: "center"
|
|
26027
|
+
},
|
|
26028
|
+
children: "Reset all settings to defaults?"
|
|
26029
|
+
}
|
|
26030
|
+
),
|
|
26031
|
+
/* @__PURE__ */ jsxs(
|
|
26032
|
+
"div",
|
|
26033
|
+
{
|
|
26034
|
+
style: {
|
|
26035
|
+
display: "flex",
|
|
26036
|
+
gap: "8px",
|
|
26037
|
+
justifyContent: "center"
|
|
26038
|
+
},
|
|
26039
|
+
children: [
|
|
26040
|
+
/* @__PURE__ */ jsx(
|
|
26041
|
+
"button",
|
|
26042
|
+
{
|
|
26043
|
+
onClick: () => setResetConfirmOpen(false),
|
|
26044
|
+
style: {
|
|
26045
|
+
fontSize: "13px",
|
|
26046
|
+
fontWeight: 500,
|
|
26047
|
+
color: "#374151",
|
|
26048
|
+
background: "#ffffff",
|
|
26049
|
+
border: "1px solid #e5e7eb",
|
|
26050
|
+
cursor: "pointer",
|
|
26051
|
+
padding: "6px 16px",
|
|
26052
|
+
borderRadius: "6px"
|
|
26053
|
+
},
|
|
26054
|
+
children: "Cancel"
|
|
26055
|
+
}
|
|
26056
|
+
),
|
|
26057
|
+
/* @__PURE__ */ jsx(
|
|
26058
|
+
"button",
|
|
26059
|
+
{
|
|
26060
|
+
onClick: handleReset,
|
|
26061
|
+
style: {
|
|
26062
|
+
fontSize: "13px",
|
|
26063
|
+
fontWeight: 500,
|
|
26064
|
+
color: "#ffffff",
|
|
26065
|
+
background: "#dc2626",
|
|
26066
|
+
border: "1px solid #dc2626",
|
|
26067
|
+
cursor: "pointer",
|
|
26068
|
+
padding: "6px 16px",
|
|
26069
|
+
borderRadius: "6px"
|
|
26070
|
+
},
|
|
26071
|
+
children: "Reset All"
|
|
26072
|
+
}
|
|
26073
|
+
)
|
|
26074
|
+
]
|
|
26075
|
+
}
|
|
26076
|
+
)
|
|
26077
|
+
]
|
|
26078
|
+
}
|
|
26079
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26080
|
+
!hideSave && theme.isDirty && /* @__PURE__ */ jsxs(
|
|
26213
26081
|
"div",
|
|
26214
26082
|
{
|
|
26215
26083
|
style: {
|
|
26216
|
-
position: "fixed",
|
|
26217
|
-
bottom: `${dragPos.y}px`,
|
|
26218
|
-
...isRight ? { right: `${dragPos.x}px` } : { left: `${dragPos.x}px` },
|
|
26219
|
-
zIndex: 9999,
|
|
26220
26084
|
display: "flex",
|
|
26221
|
-
|
|
26222
|
-
|
|
26085
|
+
gap: "8px",
|
|
26086
|
+
width: "100%"
|
|
26223
26087
|
},
|
|
26224
26088
|
children: [
|
|
26225
26089
|
/* @__PURE__ */ jsx(
|
|
26226
|
-
"
|
|
26090
|
+
"button",
|
|
26227
26091
|
{
|
|
26228
|
-
|
|
26229
|
-
onPointerMove: handleDragPointerMove,
|
|
26230
|
-
onPointerUp: handleDragPointerUp,
|
|
26092
|
+
onClick: handleDiscard,
|
|
26231
26093
|
style: {
|
|
26232
|
-
|
|
26233
|
-
|
|
26234
|
-
|
|
26235
|
-
|
|
26236
|
-
|
|
26237
|
-
|
|
26094
|
+
flex: 1,
|
|
26095
|
+
fontSize: "13px",
|
|
26096
|
+
fontWeight: 500,
|
|
26097
|
+
color: "#374151",
|
|
26098
|
+
background: "#ffffff",
|
|
26099
|
+
border: "1px solid #e5e7eb",
|
|
26100
|
+
cursor: "pointer",
|
|
26101
|
+
padding: "8px 16px",
|
|
26102
|
+
borderRadius: "6px"
|
|
26238
26103
|
},
|
|
26239
|
-
children:
|
|
26104
|
+
children: "Discard"
|
|
26240
26105
|
}
|
|
26241
26106
|
),
|
|
26242
26107
|
/* @__PURE__ */ jsx(
|
|
26243
26108
|
"button",
|
|
26244
26109
|
{
|
|
26245
|
-
onClick:
|
|
26110
|
+
onClick: handleSave,
|
|
26246
26111
|
style: {
|
|
26247
|
-
|
|
26248
|
-
|
|
26249
|
-
|
|
26250
|
-
|
|
26251
|
-
|
|
26252
|
-
border: "1px solid #
|
|
26112
|
+
flex: 1,
|
|
26113
|
+
fontSize: "13px",
|
|
26114
|
+
fontWeight: 600,
|
|
26115
|
+
color: "#ffffff",
|
|
26116
|
+
background: "#1f2937",
|
|
26117
|
+
border: "1px solid #1f2937",
|
|
26253
26118
|
cursor: "pointer",
|
|
26254
|
-
|
|
26255
|
-
|
|
26256
|
-
justifyContent: "center",
|
|
26257
|
-
boxShadow: "0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06)",
|
|
26258
|
-
transition: "transform 150ms, box-shadow 150ms, border-color 150ms"
|
|
26259
|
-
},
|
|
26260
|
-
onMouseEnter: (e) => {
|
|
26261
|
-
e.currentTarget.style.transform = "scale(1.06)";
|
|
26262
|
-
e.currentTarget.style.boxShadow = "0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06)";
|
|
26263
|
-
e.currentTarget.style.borderColor = "#d1d5db";
|
|
26119
|
+
padding: "8px 16px",
|
|
26120
|
+
borderRadius: "6px"
|
|
26264
26121
|
},
|
|
26265
|
-
|
|
26266
|
-
e.currentTarget.style.transform = "scale(1)";
|
|
26267
|
-
e.currentTarget.style.boxShadow = "0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06)";
|
|
26268
|
-
e.currentTarget.style.borderColor = "#e5e7eb";
|
|
26269
|
-
},
|
|
26270
|
-
"aria-label": "Open theme editor",
|
|
26271
|
-
children: /* @__PURE__ */ jsx(PaletteIcon6, {})
|
|
26122
|
+
children: "Save"
|
|
26272
26123
|
}
|
|
26273
26124
|
)
|
|
26274
26125
|
]
|
|
26275
26126
|
}
|
|
26276
26127
|
),
|
|
26128
|
+
/* @__PURE__ */ jsx(
|
|
26129
|
+
"button",
|
|
26130
|
+
{
|
|
26131
|
+
onClick: () => setResetConfirmOpen(true),
|
|
26132
|
+
style: {
|
|
26133
|
+
fontSize: "12px",
|
|
26134
|
+
fontWeight: 400,
|
|
26135
|
+
color: "#9ca3af",
|
|
26136
|
+
background: "none",
|
|
26137
|
+
border: "none",
|
|
26138
|
+
cursor: "pointer",
|
|
26139
|
+
padding: "2px 0",
|
|
26140
|
+
textAlign: "center",
|
|
26141
|
+
textDecoration: "underline",
|
|
26142
|
+
textUnderlineOffset: "2px"
|
|
26143
|
+
},
|
|
26144
|
+
children: "Reset all to defaults"
|
|
26145
|
+
}
|
|
26146
|
+
)
|
|
26147
|
+
] }) }) : null;
|
|
26148
|
+
const headerBlock = /* @__PURE__ */ jsxs("div", { style: { padding: "16px 0 0" }, children: [
|
|
26149
|
+
/* @__PURE__ */ jsx(
|
|
26150
|
+
"div",
|
|
26151
|
+
{
|
|
26152
|
+
style: {
|
|
26153
|
+
fontSize: "16px",
|
|
26154
|
+
fontWeight: 700,
|
|
26155
|
+
color: "#1f2937",
|
|
26156
|
+
fontFamily: drawerStyles.container.fontFamily
|
|
26157
|
+
},
|
|
26158
|
+
children: title
|
|
26159
|
+
}
|
|
26160
|
+
),
|
|
26161
|
+
/* @__PURE__ */ jsx(
|
|
26162
|
+
"div",
|
|
26163
|
+
{
|
|
26164
|
+
style: {
|
|
26165
|
+
fontSize: "13px",
|
|
26166
|
+
color: "#6b7280",
|
|
26167
|
+
marginTop: "2px",
|
|
26168
|
+
marginBottom: "12px",
|
|
26169
|
+
fontFamily: drawerStyles.container.fontFamily
|
|
26170
|
+
},
|
|
26171
|
+
children: theme.unsavedChangesCount > 0 ? `${theme.unsavedChangesCount} unsaved change${theme.unsavedChangesCount !== 1 ? "s" : ""}` : "Customize your design system"
|
|
26172
|
+
}
|
|
26173
|
+
)
|
|
26174
|
+
] });
|
|
26175
|
+
const triggerButton = !open && /* @__PURE__ */ jsxs(
|
|
26176
|
+
"div",
|
|
26177
|
+
{
|
|
26178
|
+
style: {
|
|
26179
|
+
position: "fixed",
|
|
26180
|
+
bottom: `${dragPos.y}px`,
|
|
26181
|
+
...isRight ? { right: `${dragPos.x}px` } : { left: `${dragPos.x}px` },
|
|
26182
|
+
zIndex: 9999,
|
|
26183
|
+
display: "flex",
|
|
26184
|
+
alignItems: "center",
|
|
26185
|
+
gap: "0"
|
|
26186
|
+
},
|
|
26187
|
+
children: [
|
|
26188
|
+
/* @__PURE__ */ jsx(
|
|
26189
|
+
"div",
|
|
26190
|
+
{
|
|
26191
|
+
onPointerDown: handleDragPointerDown,
|
|
26192
|
+
onPointerMove: handleDragPointerMove,
|
|
26193
|
+
onPointerUp: handleDragPointerUp,
|
|
26194
|
+
style: {
|
|
26195
|
+
cursor: "grab",
|
|
26196
|
+
padding: "4px 2px",
|
|
26197
|
+
display: "flex",
|
|
26198
|
+
alignItems: "center",
|
|
26199
|
+
opacity: 0.25,
|
|
26200
|
+
touchAction: "none"
|
|
26201
|
+
},
|
|
26202
|
+
children: /* @__PURE__ */ jsx(GripVertical, { size: 12, color: "#9ca3af" })
|
|
26203
|
+
}
|
|
26204
|
+
),
|
|
26205
|
+
/* @__PURE__ */ jsx(
|
|
26206
|
+
"button",
|
|
26207
|
+
{
|
|
26208
|
+
onClick: () => setOpen(true),
|
|
26209
|
+
style: {
|
|
26210
|
+
width: "36px",
|
|
26211
|
+
height: "36px",
|
|
26212
|
+
borderRadius: "10px",
|
|
26213
|
+
background: "#ffffff",
|
|
26214
|
+
color: "#6b7280",
|
|
26215
|
+
border: "1px solid #e5e7eb",
|
|
26216
|
+
cursor: "pointer",
|
|
26217
|
+
display: "flex",
|
|
26218
|
+
alignItems: "center",
|
|
26219
|
+
justifyContent: "center",
|
|
26220
|
+
boxShadow: "0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06)",
|
|
26221
|
+
transition: "transform 150ms, box-shadow 150ms, border-color 150ms"
|
|
26222
|
+
},
|
|
26223
|
+
onMouseEnter: (e) => {
|
|
26224
|
+
e.currentTarget.style.transform = "scale(1.06)";
|
|
26225
|
+
e.currentTarget.style.boxShadow = "0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06)";
|
|
26226
|
+
e.currentTarget.style.borderColor = "#d1d5db";
|
|
26227
|
+
},
|
|
26228
|
+
onMouseLeave: (e) => {
|
|
26229
|
+
e.currentTarget.style.transform = "scale(1)";
|
|
26230
|
+
e.currentTarget.style.boxShadow = "0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06)";
|
|
26231
|
+
e.currentTarget.style.borderColor = "#e5e7eb";
|
|
26232
|
+
},
|
|
26233
|
+
"aria-label": "Open theme editor",
|
|
26234
|
+
children: /* @__PURE__ */ jsx(PaletteIcon6, {})
|
|
26235
|
+
}
|
|
26236
|
+
)
|
|
26237
|
+
]
|
|
26238
|
+
}
|
|
26239
|
+
);
|
|
26240
|
+
const dockedAside = /* @__PURE__ */ jsx(
|
|
26241
|
+
"aside",
|
|
26242
|
+
{
|
|
26243
|
+
"data-theme-drawer": true,
|
|
26244
|
+
style: {
|
|
26245
|
+
width: open ? `${width}px` : "0px",
|
|
26246
|
+
transition: "width 300ms cubic-bezier(0.4, 0, 0.2, 1)",
|
|
26247
|
+
overflow: "hidden",
|
|
26248
|
+
flexShrink: 0
|
|
26249
|
+
},
|
|
26250
|
+
children: /* @__PURE__ */ jsxs(
|
|
26251
|
+
"div",
|
|
26252
|
+
{
|
|
26253
|
+
style: {
|
|
26254
|
+
width: `${width}px`,
|
|
26255
|
+
height: `calc(100vh - ${stickyTopOffset}px)`,
|
|
26256
|
+
position: "sticky",
|
|
26257
|
+
top: `${stickyTopOffset}px`,
|
|
26258
|
+
display: "flex",
|
|
26259
|
+
flexDirection: "column",
|
|
26260
|
+
borderLeft: "1px solid #e5e7eb",
|
|
26261
|
+
background: "#ffffff",
|
|
26262
|
+
...drawerStyles.container
|
|
26263
|
+
},
|
|
26264
|
+
children: [
|
|
26265
|
+
/* @__PURE__ */ jsx(
|
|
26266
|
+
"button",
|
|
26267
|
+
{
|
|
26268
|
+
onClick: () => handleOpenChange(false),
|
|
26269
|
+
style: {
|
|
26270
|
+
position: "absolute",
|
|
26271
|
+
top: 16,
|
|
26272
|
+
right: 16,
|
|
26273
|
+
width: 24,
|
|
26274
|
+
height: 24,
|
|
26275
|
+
display: "flex",
|
|
26276
|
+
alignItems: "center",
|
|
26277
|
+
justifyContent: "center",
|
|
26278
|
+
background: "transparent",
|
|
26279
|
+
border: "none",
|
|
26280
|
+
cursor: "pointer",
|
|
26281
|
+
opacity: 0.5,
|
|
26282
|
+
transition: "opacity 150ms",
|
|
26283
|
+
zIndex: 10
|
|
26284
|
+
},
|
|
26285
|
+
onMouseEnter: (e) => {
|
|
26286
|
+
e.currentTarget.style.opacity = "1";
|
|
26287
|
+
},
|
|
26288
|
+
onMouseLeave: (e) => {
|
|
26289
|
+
e.currentTarget.style.opacity = "0.5";
|
|
26290
|
+
},
|
|
26291
|
+
"aria-label": "Close theme editor",
|
|
26292
|
+
children: /* @__PURE__ */ jsx(PanelRightClose, { size: 16, color: "#6b7280" })
|
|
26293
|
+
}
|
|
26294
|
+
),
|
|
26295
|
+
/* @__PURE__ */ jsx("div", { style: { padding: "16px 16px 12px", background: "#ffffff" }, children: headerBlock }),
|
|
26296
|
+
tabBar,
|
|
26297
|
+
panelContent,
|
|
26298
|
+
footerContent
|
|
26299
|
+
]
|
|
26300
|
+
}
|
|
26301
|
+
)
|
|
26302
|
+
}
|
|
26303
|
+
);
|
|
26304
|
+
if (docked && children) {
|
|
26305
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26306
|
+
triggerButton,
|
|
26307
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "flex", minHeight: "100vh" }, children: [
|
|
26308
|
+
/* @__PURE__ */ jsx(
|
|
26309
|
+
PreviewBrandingContext.Provider,
|
|
26310
|
+
{
|
|
26311
|
+
value: {
|
|
26312
|
+
previewBranding: localPreviewBranding,
|
|
26313
|
+
setPreviewBranding: setLocalPreviewBranding,
|
|
26314
|
+
previewImages: localPreviewImages,
|
|
26315
|
+
setPreviewImages: setLocalPreviewImages
|
|
26316
|
+
},
|
|
26317
|
+
children: /* @__PURE__ */ jsx("div", { ref: contentRef, style: { flex: 1, minWidth: 0, overflow: "auto", transform: "translateZ(0)" }, children })
|
|
26318
|
+
}
|
|
26319
|
+
),
|
|
26320
|
+
dockedAside
|
|
26321
|
+
] })
|
|
26322
|
+
] });
|
|
26323
|
+
}
|
|
26324
|
+
if (docked) {
|
|
26325
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26326
|
+
triggerButton,
|
|
26327
|
+
dockedAside
|
|
26328
|
+
] });
|
|
26329
|
+
}
|
|
26330
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26331
|
+
triggerButton,
|
|
26277
26332
|
/* @__PURE__ */ jsx(Sheet, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs(
|
|
26278
26333
|
SheetContent,
|
|
26279
26334
|
{
|
|
@@ -26286,7 +26341,7 @@ function ThemeDrawer({
|
|
|
26286
26341
|
maxWidth: `${width}px`
|
|
26287
26342
|
},
|
|
26288
26343
|
children: [
|
|
26289
|
-
/* @__PURE__ */
|
|
26344
|
+
/* @__PURE__ */ jsxs(
|
|
26290
26345
|
SheetHeader,
|
|
26291
26346
|
{
|
|
26292
26347
|
className: "!p-0",
|
|
@@ -26294,197 +26349,16 @@ function ThemeDrawer({
|
|
|
26294
26349
|
padding: "16px 16px 12px",
|
|
26295
26350
|
background: "#ffffff"
|
|
26296
26351
|
},
|
|
26297
|
-
children: /* @__PURE__ */ jsxs("div", { style: { padding: "16px 16px 0" }, children: [
|
|
26298
|
-
/* @__PURE__ */ jsx(
|
|
26299
|
-
SheetTitle,
|
|
26300
|
-
{
|
|
26301
|
-
style: {
|
|
26302
|
-
fontSize: "16px",
|
|
26303
|
-
fontWeight: 700,
|
|
26304
|
-
color: "#1f2937",
|
|
26305
|
-
fontFamily: drawerStyles.container.fontFamily
|
|
26306
|
-
},
|
|
26307
|
-
children: title
|
|
26308
|
-
}
|
|
26309
|
-
),
|
|
26310
|
-
/* @__PURE__ */ jsx(
|
|
26311
|
-
SheetDescription,
|
|
26312
|
-
{
|
|
26313
|
-
style: {
|
|
26314
|
-
fontSize: "13px",
|
|
26315
|
-
color: "#6b7280",
|
|
26316
|
-
marginTop: "2px",
|
|
26317
|
-
marginBottom: "12px",
|
|
26318
|
-
fontFamily: drawerStyles.container.fontFamily
|
|
26319
|
-
},
|
|
26320
|
-
children: theme.unsavedChangesCount > 0 ? `${theme.unsavedChangesCount} unsaved change${theme.unsavedChangesCount !== 1 ? "s" : ""}` : "Customize your design system"
|
|
26321
|
-
}
|
|
26322
|
-
)
|
|
26323
|
-
] })
|
|
26324
|
-
}
|
|
26325
|
-
),
|
|
26326
|
-
/* @__PURE__ */ jsx("div", { style: drawerStyles.tabBar, children: activePanels.map((panel) => /* @__PURE__ */ jsx(
|
|
26327
|
-
"button",
|
|
26328
|
-
{
|
|
26329
|
-
onClick: () => setActiveTab(panel.id),
|
|
26330
|
-
style: drawerStyles.tab(activeTab === panel.id),
|
|
26331
|
-
children: panel.label
|
|
26332
|
-
},
|
|
26333
|
-
panel.id
|
|
26334
|
-
)) }),
|
|
26335
|
-
/* @__PURE__ */ jsx(
|
|
26336
|
-
ScrollArea,
|
|
26337
|
-
{
|
|
26338
|
-
className: "flex-1 overflow-hidden",
|
|
26339
|
-
style: { height: `calc(100vh - ${showFooter ? 200 : 150}px)` },
|
|
26340
|
-
children: /* @__PURE__ */ jsxs("div", { style: drawerStyles.container, children: [
|
|
26341
|
-
activeTab === "colors" && /* @__PURE__ */ jsx(ColorsPanel, { theme }),
|
|
26342
|
-
activeTab === "images" && /* @__PURE__ */ jsx(ImagesPanel, { theme, onImageUpload }),
|
|
26343
|
-
activeTab === "typography" && /* @__PURE__ */ jsx(TypographyPanel, { theme }),
|
|
26344
|
-
activeTab === "buttons" && /* @__PURE__ */ jsx(ButtonsPanel, { theme }),
|
|
26345
|
-
activeTab === "inputs" && /* @__PURE__ */ jsx(InputsPanel, { theme }),
|
|
26346
|
-
activeTab === "export" && /* @__PURE__ */ jsx(ExportPanel, { theme })
|
|
26347
|
-
] })
|
|
26348
|
-
}
|
|
26349
|
-
),
|
|
26350
|
-
showFooter && /* @__PURE__ */ jsx("div", { style: drawerStyles.footer, children: resetConfirmOpen ? /* @__PURE__ */ jsxs(
|
|
26351
|
-
"div",
|
|
26352
|
-
{
|
|
26353
|
-
style: {
|
|
26354
|
-
display: "flex",
|
|
26355
|
-
flexDirection: "column",
|
|
26356
|
-
gap: "8px",
|
|
26357
|
-
width: "100%"
|
|
26358
|
-
},
|
|
26359
26352
|
children: [
|
|
26360
|
-
/* @__PURE__ */ jsx(
|
|
26361
|
-
|
|
26362
|
-
|
|
26363
|
-
style: {
|
|
26364
|
-
fontSize: "13px",
|
|
26365
|
-
color: "#374151",
|
|
26366
|
-
textAlign: "center"
|
|
26367
|
-
},
|
|
26368
|
-
children: "Reset all settings to defaults?"
|
|
26369
|
-
}
|
|
26370
|
-
),
|
|
26371
|
-
/* @__PURE__ */ jsxs(
|
|
26372
|
-
"div",
|
|
26373
|
-
{
|
|
26374
|
-
style: {
|
|
26375
|
-
display: "flex",
|
|
26376
|
-
gap: "8px",
|
|
26377
|
-
justifyContent: "center"
|
|
26378
|
-
},
|
|
26379
|
-
children: [
|
|
26380
|
-
/* @__PURE__ */ jsx(
|
|
26381
|
-
"button",
|
|
26382
|
-
{
|
|
26383
|
-
onClick: () => setResetConfirmOpen(false),
|
|
26384
|
-
style: {
|
|
26385
|
-
fontSize: "13px",
|
|
26386
|
-
fontWeight: 500,
|
|
26387
|
-
color: "#374151",
|
|
26388
|
-
background: "#ffffff",
|
|
26389
|
-
border: "1px solid #e5e7eb",
|
|
26390
|
-
cursor: "pointer",
|
|
26391
|
-
padding: "6px 16px",
|
|
26392
|
-
borderRadius: "6px"
|
|
26393
|
-
},
|
|
26394
|
-
children: "Cancel"
|
|
26395
|
-
}
|
|
26396
|
-
),
|
|
26397
|
-
/* @__PURE__ */ jsx(
|
|
26398
|
-
"button",
|
|
26399
|
-
{
|
|
26400
|
-
onClick: handleReset,
|
|
26401
|
-
style: {
|
|
26402
|
-
fontSize: "13px",
|
|
26403
|
-
fontWeight: 500,
|
|
26404
|
-
color: "#ffffff",
|
|
26405
|
-
background: "#dc2626",
|
|
26406
|
-
border: "1px solid #dc2626",
|
|
26407
|
-
cursor: "pointer",
|
|
26408
|
-
padding: "6px 16px",
|
|
26409
|
-
borderRadius: "6px"
|
|
26410
|
-
},
|
|
26411
|
-
children: "Reset All"
|
|
26412
|
-
}
|
|
26413
|
-
)
|
|
26414
|
-
]
|
|
26415
|
-
}
|
|
26416
|
-
)
|
|
26353
|
+
/* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: title }),
|
|
26354
|
+
/* @__PURE__ */ jsx(SheetDescription, { className: "sr-only", children: "Customize your design system" }),
|
|
26355
|
+
headerBlock
|
|
26417
26356
|
]
|
|
26418
26357
|
}
|
|
26419
|
-
)
|
|
26420
|
-
|
|
26421
|
-
|
|
26422
|
-
|
|
26423
|
-
style: {
|
|
26424
|
-
display: "flex",
|
|
26425
|
-
gap: "8px",
|
|
26426
|
-
width: "100%"
|
|
26427
|
-
},
|
|
26428
|
-
children: [
|
|
26429
|
-
/* @__PURE__ */ jsx(
|
|
26430
|
-
"button",
|
|
26431
|
-
{
|
|
26432
|
-
onClick: handleDiscard,
|
|
26433
|
-
style: {
|
|
26434
|
-
flex: 1,
|
|
26435
|
-
fontSize: "13px",
|
|
26436
|
-
fontWeight: 500,
|
|
26437
|
-
color: "#374151",
|
|
26438
|
-
background: "#ffffff",
|
|
26439
|
-
border: "1px solid #e5e7eb",
|
|
26440
|
-
cursor: "pointer",
|
|
26441
|
-
padding: "8px 16px",
|
|
26442
|
-
borderRadius: "6px"
|
|
26443
|
-
},
|
|
26444
|
-
children: "Discard"
|
|
26445
|
-
}
|
|
26446
|
-
),
|
|
26447
|
-
/* @__PURE__ */ jsx(
|
|
26448
|
-
"button",
|
|
26449
|
-
{
|
|
26450
|
-
onClick: handleSave,
|
|
26451
|
-
style: {
|
|
26452
|
-
flex: 1,
|
|
26453
|
-
fontSize: "13px",
|
|
26454
|
-
fontWeight: 600,
|
|
26455
|
-
color: "#ffffff",
|
|
26456
|
-
background: "#1f2937",
|
|
26457
|
-
border: "1px solid #1f2937",
|
|
26458
|
-
cursor: "pointer",
|
|
26459
|
-
padding: "8px 16px",
|
|
26460
|
-
borderRadius: "6px"
|
|
26461
|
-
},
|
|
26462
|
-
children: "Save"
|
|
26463
|
-
}
|
|
26464
|
-
)
|
|
26465
|
-
]
|
|
26466
|
-
}
|
|
26467
|
-
),
|
|
26468
|
-
/* @__PURE__ */ jsx(
|
|
26469
|
-
"button",
|
|
26470
|
-
{
|
|
26471
|
-
onClick: () => setResetConfirmOpen(true),
|
|
26472
|
-
style: {
|
|
26473
|
-
fontSize: "12px",
|
|
26474
|
-
fontWeight: 400,
|
|
26475
|
-
color: "#9ca3af",
|
|
26476
|
-
background: "none",
|
|
26477
|
-
border: "none",
|
|
26478
|
-
cursor: "pointer",
|
|
26479
|
-
padding: "2px 0",
|
|
26480
|
-
textAlign: "center",
|
|
26481
|
-
textDecoration: "underline",
|
|
26482
|
-
textUnderlineOffset: "2px"
|
|
26483
|
-
},
|
|
26484
|
-
children: "Reset all to defaults"
|
|
26485
|
-
}
|
|
26486
|
-
)
|
|
26487
|
-
] }) })
|
|
26358
|
+
),
|
|
26359
|
+
tabBar,
|
|
26360
|
+
panelContent,
|
|
26361
|
+
footerContent
|
|
26488
26362
|
]
|
|
26489
26363
|
}
|
|
26490
26364
|
) })
|
|
@@ -26510,6 +26384,6 @@ function getTopLevelScreens(allScreens) {
|
|
|
26510
26384
|
return allScreens.filter((s) => !s.parentId);
|
|
26511
26385
|
}
|
|
26512
26386
|
|
|
26513
|
-
export { AccountSettingsShell, ActivityFeed, Avatar, AvatarFallback, AvatarImage, BadgesCard, BlogCards, BottomInputChatWidget, Button, Calendar,
|
|
26387
|
+
export { AccountSettingsShell, ActivityFeed, Avatar, AvatarFallback, AvatarImage, BadgesCard, BlogCards, BottomInputChatWidget, Button, Calendar, CategoryGrid, CenteredHero, ChatBubble, ChatDateSeparator, ChatInput, ChatMessageList, Checkbox, CheckboxWithLabel, CircularProgressBar, CircularProgressBarList, ColorInputRow, ComponentSearch, ContentDropzone, ContentWithImage, CoreValuesGrid, CreditCardDisplay, CtaBanner, CustomComponentHelper, DashboardHeader, DashboardShell, DateInput, DescriptionCard, DestinationCards, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChartWidget, DoubleSidebar, DoubleSidebarShell, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, FaqAccordion, FaqsTable, FeatureWithImage, FeaturedNewsCards, FeaturedPlaces, FeaturesComparison, FileUploader, FilterPopover, FixedColumnDataTable, FlairBanner, FooterNavbar, FormGroup, GallerySection, GradientBanner, GraphMetricTilesDemo, GridTilesList, Header, HeroDarkCentered, HeroDarkWithImage, HeroFullwidthImage, HeroSection, HowItWorks, HslColorPicker, IconSidebar, IconSidebarShell, ImageFeedWithNestedComments, ImageUploader, InfoCard, Input, Label2 as Label, LargeImageLabelsList, Sidebar2 as LayoutSidebar, LineChartWidget, LineTabs, LinksCard, Loader, LoginBrandingPanel, MenuSection, MenufocusTemplate, MessengerInput, MessengerSidebar, MetricCard, MetricCardsRow, MetricListCard, MetricsSection, MobileBottomNav, MobileMenuShell, MonthlyCalendarWidget, MultiselectCheckboxField, MultiselectTags, MultistepProgressBarShell, MultistepShell, MultistepSidebarShell, NestedCommentsTable, NestedDataTable, OfficeLocations, PageHeaderSection, Pagination, ParticipantList, PersonaCard, PersonaGrid, PillTabs, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PortfolioCard, PreviewBrandingContext, PricingCards, PricingCta, ProfileCard, ProfileGridTilesList, ProfileImageUploader, ProgressBar, ProgressMetricCard, ProjectContextShell, PromptChipsRow, PromptTemplate, RadioGroup2 as RadioGroup, RadioGroupItem, RangeInput, ReviewsGrid, ReviewsTable, ScreenFlowchart, ScreenPromptBuilder, ScreenPromptTemplate, ScrollArea, ScrollBar, SearchBar, SearchBarShell, SearchSidebar, Searchbox, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SelectablePills, Separator3 as Separator, SettingsListRow, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, 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, StandardDataTable, StandardListWithImage, StandardPageShell, StatsCard, StepTracker, Switch, Tabs, TabsContent, TabsList, TabsTrigger, TeamCardsGrid, TeamCircularGrid, TestimonialCarousel, TextInput, Textarea, ThemeContext, ThemeDrawer, ThemeProvider, TitleGroup, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TwoColumnWidgets, Typography, UpvotingPostsTable, 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 };
|
|
26514
26388
|
//# sourceMappingURL=index.js.map
|
|
26515
26389
|
//# sourceMappingURL=index.js.map
|