canvas-ui-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -0
- package/dist/index.d.ts +4810 -0
- package/dist/index.mjs +24105 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +95 -0
- package/styles/tokens.reference.css +283 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/avatar.tsx","../src/components/ui/button.tsx","../src/components/ui/calendar.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/date-input.tsx","../src/components/ui/dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/file-uploader.tsx","../src/components/ui/image-uploader.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/line-tabs.tsx","../src/components/ui/multiselect-checkbox-field.tsx","../src/components/ui/multiselect-tags.tsx","../src/components/ui/popover.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/text-input.tsx","../src/components/ui/range-input.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/searchbox.tsx","../src/components/ui/select.tsx","../src/components/ui/selectable-pills.tsx","../src/components/ui/separator.tsx","../src/components/ui/sheet.tsx","../src/hooks/use-mobile.ts","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/sidebar.tsx","../src/components/ui/slider.tsx","../src/components/ui/switch.tsx","../src/components/ui/tabs.tsx","../src/components/ui/textarea.tsx","../src/components/ui/typography.tsx","../src/lib/theme-defaults.ts","../src/context/theme-context.tsx","../src/components/layout/header.tsx","../src/components/layout/sidebar-nav.tsx","../src/components/layout/sidebar.tsx","../src/lib/css-variable-sync.ts","../src/hooks/use-css-variable-sync.ts","../src/components/layout/dashboard-shell.tsx","../src/components/layout/icon-sidebar.tsx","../src/components/layout/icon-sidebar-shell.tsx","../src/components/layout/double-sidebar.tsx","../src/components/layout/double-sidebar-shell.tsx","../src/components/blocks/flair-banner.tsx","../src/components/blocks/page-header-section.tsx","../src/components/layout/standard-page-shell.tsx","../src/components/blocks/mobile-bottom-nav.tsx","../src/components/layout/mobile-menu-shell.tsx","../src/components/blocks/search-bar.tsx","../src/components/blocks/filter-popover.tsx","../src/components/layout/search-bar-shell.tsx","../src/components/blocks/step-tracker.tsx","../src/components/layout/multistep-shell.tsx","../src/components/blocks/sidebar-cards.tsx","../src/components/layout/multistep-sidebar-shell.tsx","../src/components/blocks/progress-bar.tsx","../src/components/layout/multistep-progressbar-shell.tsx","../src/components/blocks/vertical-step-tracker.tsx","../src/components/layout/vertical-multistep-shell.tsx","../src/components/layout/account-settings-shell.tsx","../src/components/layout/project-context-shell.tsx","../src/components/blocks/chat-message.tsx","../src/components/blocks/messenger-sidebar.tsx","../src/components/blocks/bottom-input-chat-widget.tsx","../src/components/blocks/content-dropzone.tsx","../src/components/blocks/gradient-banner.tsx","../src/components/blocks/login-branding-panel.tsx","../src/components/blocks/empty-state.tsx","../src/components/blocks/menu-section.tsx","../src/components/blocks/pill-tabs.tsx","../src/components/blocks/search-sidebar.tsx","../src/components/blocks/menufocus-template.tsx","../src/components/blocks/standard-data-table.tsx","../src/components/blocks/fixed-column-data-table.tsx","../src/components/blocks/nested-data-table.tsx","../src/components/blocks/reviews-table.tsx","../src/components/blocks/upvoting-posts-table.tsx","../src/components/blocks/nested-comments-table.tsx","../src/components/blocks/faqs-table.tsx","../src/components/blocks/profile-card.tsx","../src/components/blocks/sidebar-profile-card.tsx","../src/components/blocks/profile-info-cards.tsx","../src/components/blocks/profile-image-uploader.tsx","../src/components/blocks/participant-list.tsx","../src/components/blocks/standard-list-with-image.tsx","../src/components/blocks/large-image-labels-list.tsx","../src/components/blocks/circular-progress-bar-list.tsx","../src/components/blocks/activity-feed.tsx","../src/components/blocks/social-feed.tsx","../src/components/blocks/image-feed-with-nested-comments.tsx","../src/components/blocks/video-chat-controls.tsx","../src/components/blocks/video-content-section.tsx","../src/components/blocks/video-playlist.tsx","../src/components/blocks/webcam-preview.tsx","../src/components/blocks/youtube-player.tsx","../src/components/blocks/settings-list-row.tsx","../src/components/blocks/credit-card-display.tsx","../src/components/blocks/canvas-item.tsx","../src/components/blocks/component-palette.tsx","../src/lib/component-registry.ts","../src/components/blocks/component-search.tsx","../src/data/project-context.ts","../src/components/blocks/custom-component-helper.tsx","../src/components/blocks/slideshow-grid-tiles.tsx","../src/components/blocks/grid-tiles-list.tsx","../src/components/blocks/profile-grid-tiles-list.tsx","../src/components/blocks/graph-metric-tiles.tsx","../src/components/blocks/form-group.tsx","../src/components/blocks/monthly-calendar-widget.tsx","../src/components/blocks/pagination.tsx","../src/components/blocks/prompt-template.tsx","../src/data/prompt-templates.ts","../src/components/blocks/screen-prompt-template.tsx","../src/components/blocks/screen-prompt-builder.tsx","../src/components/blocks/screen-flowchart.tsx","../src/components/blocks/persona-card.tsx","../src/components/blocks/loader.tsx","../src/components/blocks/marketing/hero-section.tsx","../src/components/blocks/marketing/hero-dark-with-image.tsx","../src/components/blocks/marketing/hero-dark-centered.tsx","../src/components/blocks/marketing/hero-fullwidth-image.tsx","../src/components/blocks/marketing/destination-cards.tsx","../src/components/blocks/marketing/featured-places.tsx","../src/components/blocks/marketing/how-it-works.tsx","../src/components/blocks/marketing/category-grid.tsx","../src/components/blocks/marketing/testimonial-carousel.tsx","../src/components/blocks/marketing/vertical-how-it-works.tsx","../src/components/blocks/marketing/gallery-section.tsx","../src/components/blocks/marketing/feature-with-image.tsx","../src/components/blocks/marketing/social-proof.tsx","../src/components/blocks/marketing/reviews-grid.tsx","../src/components/blocks/marketing/blog-cards.tsx","../src/components/blocks/marketing/cta-banner.tsx","../src/components/blocks/marketing/footer-navbar.tsx","../src/components/blocks/marketing/centered-hero.tsx","../src/components/blocks/marketing/metrics-section.tsx","../src/components/blocks/marketing/core-values-grid.tsx","../src/components/blocks/marketing/content-with-image.tsx","../src/components/blocks/marketing/team-cards-grid.tsx","../src/components/blocks/marketing/team-circular-grid.tsx","../src/components/blocks/marketing/featured-news-cards.tsx","../src/components/blocks/marketing/office-locations.tsx","../src/components/blocks/pricing/pricing-cards.tsx","../src/components/blocks/pricing/features-comparison.tsx","../src/components/blocks/pricing/faq-accordion.tsx","../src/components/blocks/pricing/pricing-cta.tsx","../src/types/project.ts"],"names":["jsx","className","props","React","React2","React3","jsxs","Calendar","ChevronRightIcon","React4","React5","Upload","Trash2","Label","tabs","useState","React6","Check","React7","RadioGroup","CircleIcon","React8","React9","React10","cva","ChevronDownIcon","CheckIcon","React11","sizeStyles","Separator","SheetPrimitive","XIcon","React12","open","Slot","React14","React15","React16","createContext","useContext","Star","PaletteIcon","Phone","Megaphone","Search","X","Icon","iconShapes","iconMap","Diamond","Hexagon","Lightning","Sparkle","Infinity","Code","Terminal","Cpu","Database","Globe","Cloud","WifiHigh","Briefcase","Buildings","Storefront","Handshake","ChartLine","PencilSimple","Camera","MusicNote","Lightbulb","Leaf","Tree","Sun","Moon","Fire","Drop","ChatCircle","Envelope","Heart","Shield","Trophy","Rocket","Target","Flag","Sidebar","useEffect","ChevronRight","Home","MessageSquare","FileText","VisuallyHidden2","Users","PieChart","ShoppingBag","VisuallyHidden3","User","ChevronDown","Bell","LayoutGrid","useRef","Image","defaultMessages","ChevronLeft","Paperclip","React17","MoreVertical","defaultData","defaultSortOptions","defaultFilterOptions","TableHeaderCell","TableCell","MessageCircle","defaultCurrentUser","CommentInput","CommentActions","defaultItems","Minus","Plus","MoreHorizontal","MapPin","Eye","Facebook","Twitter","Instagram","StarRating","Zap","ListItemCard","Fragment","defaultPosts","Video","ActionIconsRow","Send","PostCard","LogOut","Play","VideoOff","List","CreditCard","useMemo","TileCard","BookOpen","DollarSign","ChartJS","Title","Tooltip","useCallback","React18","Sparkles","Copy","MagnifyingGlass","ArrowRight","Coffee","categories","defaultSteps","defaultImages","defaultReviews","LinkedinLogo","defaultMembers","XLogo","Info","plans","CaretUp","CaretDown"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// Base button styles (layout and structure only, colors applied via CSS variables)\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n // Custom Canvas variants (styled via CSS variables in component)\n primary: \"\",\n \"primary-outline\": \"border\",\n \"primary-neutral\": \"\",\n neutral: \"border\",\n \"neutral-delete\": \"border\",\n delete: \"\",\n // Legacy shadcn variants (for backwards compatibility)\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-white hover:bg-destructive/90\",\n outline: \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n // Custom Canvas sizes (styled via CSS variables in component)\n mini: \"\",\n sm: \"\",\n default: \"\",\n lg: \"\",\n // Legacy shadcn sizes\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// CSS variable mappings for Canvas design system variants\nconst variantStyles: Record<string, React.CSSProperties> = {\n primary: {\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n },\n \"primary-outline\": {\n backgroundColor: \"var(--btn-primary-outline-bg)\",\n color: \"var(--btn-primary-outline-text)\",\n borderColor: \"var(--btn-primary-outline-border)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n },\n \"primary-neutral\": {\n backgroundColor: \"var(--btn-primary-neutral-bg)\",\n color: \"var(--btn-primary-neutral-text)\",\n borderColor: \"var(--btn-primary-neutral-border)\",\n },\n neutral: {\n backgroundColor: \"var(--btn-neutral-bg)\",\n color: \"var(--btn-neutral-text)\",\n borderColor: \"var(--btn-neutral-border)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n },\n \"neutral-delete\": {\n backgroundColor: \"var(--btn-neutral-delete-bg)\",\n color: \"var(--btn-neutral-delete-text)\",\n borderColor: \"var(--btn-neutral-delete-border)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n },\n delete: {\n backgroundColor: \"var(--btn-delete-bg)\",\n color: \"var(--btn-delete-text)\",\n borderColor: \"var(--btn-delete-border)\",\n },\n}\n\n// CSS variable mappings for Canvas design system sizes\nconst sizeStyles: Record<string, React.CSSProperties> = {\n mini: {\n height: \"var(--btn-mini-height)\",\n paddingLeft: \"var(--btn-mini-px)\",\n paddingRight: \"var(--btn-mini-px)\",\n fontSize: \"var(--btn-mini-font-size)\",\n borderRadius: \"var(--btn-mini-radius)\",\n fontWeight: \"var(--btn-mini-font-weight)\" as React.CSSProperties[\"fontWeight\"],\n letterSpacing: \"var(--btn-mini-letter-spacing)\",\n },\n sm: {\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n fontWeight: \"var(--btn-small-font-weight)\" as React.CSSProperties[\"fontWeight\"],\n letterSpacing: \"var(--btn-small-letter-spacing)\",\n },\n default: {\n height: \"var(--btn-standard-height)\",\n paddingLeft: \"var(--btn-standard-px)\",\n paddingRight: \"var(--btn-standard-px)\",\n fontSize: \"var(--btn-standard-font-size)\",\n borderRadius: \"var(--btn-standard-radius)\",\n fontWeight: \"var(--btn-standard-font-weight)\" as React.CSSProperties[\"fontWeight\"],\n letterSpacing: \"var(--btn-standard-letter-spacing)\",\n },\n lg: {\n height: \"var(--btn-large-height)\",\n paddingLeft: \"var(--btn-large-px)\",\n paddingRight: \"var(--btn-large-px)\",\n fontSize: \"var(--btn-large-font-size)\",\n borderRadius: \"var(--btn-large-radius)\",\n fontWeight: \"var(--btn-large-font-weight)\" as React.CSSProperties[\"fontWeight\"],\n letterSpacing: \"var(--btn-large-letter-spacing)\",\n },\n}\n\n// Custom Canvas variants that use CSS variables\nconst canvasVariants = [\"primary\", \"primary-outline\", \"primary-neutral\", \"neutral\", \"neutral-delete\", \"delete\"]\nconst canvasSizes = [\"mini\", \"sm\", \"default\", \"lg\"]\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n style,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n // Build style object with CSS variables for Canvas variants/sizes\n const computedStyle: React.CSSProperties = { ...style }\n \n if (variant && canvasVariants.includes(variant)) {\n Object.assign(computedStyle, variantStyles[variant])\n }\n \n if (size && canvasSizes.includes(size)) {\n Object.assign(computedStyle, sizeStyles[size])\n }\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n style={Object.keys(computedStyle).length > 0 ? computedStyle : undefined}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button, buttonVariants } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer size-4 shrink-0 rounded-[var(--radius-xs)] border border-[var(--canvas-border-input)]\",\n \"bg-white transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]\",\n \"data-[state=checked]:bg-[var(--canvas-primary)] data-[state=checked]:border-[var(--canvas-primary)]\",\n \"data-[state=checked]:disabled:bg-[var(--canvas-input-disabled-text)] data-[state=checked]:disabled:border-[var(--canvas-input-disabled-border)]\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-white\")}\n >\n <Check className=\"size-3\" strokeWidth={2.5} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\ninterface CheckboxWithLabelProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n children: React.ReactNode;\n size?: \"default\" | \"sm\";\n}\n\nconst CheckboxWithLabel = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n CheckboxWithLabelProps\n>(({ children, className, id, size = \"default\", ...props }, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n\n const isSmall = size === \"sm\";\n\n return (\n <div className={cn(\"flex items-center\", isSmall ? \"gap-1.5\" : \"gap-2\")}>\n <Checkbox \n ref={ref} \n id={checkboxId} \n className={cn(isSmall && \"size-3.5\", className)} \n {...props} \n />\n <label\n htmlFor={checkboxId}\n className={cn(\n \"cursor-pointer select-none\",\n isSmall ? \"text-xs text-[var(--canvas-text-muted)]\" : \"text-[var(--canvas-text)]\"\n )}\n style={!isSmall ? { fontSize: \"var(--input-standard-font-size)\" } : undefined}\n >\n {children}\n </label>\n </div>\n );\n});\nCheckboxWithLabel.displayName = \"CheckboxWithLabel\";\n\nexport { Checkbox, CheckboxWithLabel };\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Calendar } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n value?: string;\n onChange?: (value: string) => void;\n}\n\nconst DateInput = React.forwardRef<HTMLInputElement, DateInputProps>(\n ({ className, inputSize = \"default\", placeholder = \"mm/dd/yyyy\", disabled, value, onChange, ...props }, ref) => {\n const sizeVar = inputSize === \"default\" ? \"standard\" : inputSize === \"sm\" ? \"small\" : \"large\";\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 bg-white border border-[var(--canvas-border-input)]\",\n \"focus-within:border-[var(--canvas-border-input-focus)] focus-within:ring-2 focus-within:ring-[var(--canvas-border-input-focus)] focus-within:ring-offset-2\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-[var(--canvas-input-disabled-bg)] has-[:disabled]:border-[var(--canvas-input-disabled-border)]\",\n className\n )}\n style={{\n height: `var(--input-${sizeVar}-height)`,\n paddingLeft: `var(--input-${sizeVar}-px)`,\n paddingRight: `var(--input-${sizeVar}-px)`,\n borderRadius: `var(--input-${sizeVar}-radius)`,\n }}\n >\n <Calendar className=\"size-4 shrink-0 text-[var(--canvas-text-muted)]\" />\n <input\n type=\"text\"\n ref={ref}\n placeholder={placeholder}\n disabled={disabled}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n className={cn(\n \"flex-1 bg-transparent outline-none\",\n \"text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)]\",\n \"disabled:text-[var(--canvas-input-disabled-text)] disabled:cursor-not-allowed\"\n )}\n style={{\n fontSize: `var(--input-${sizeVar}-font-size)`,\n }}\n {...props}\n />\n </div>\n );\n }\n);\nDateInput.displayName = \"DateInput\";\n\nexport { DateInput };\n\n\n\n\n\n\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n 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\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"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-default 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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default 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\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default 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\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"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-default 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\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Upload, FileText, Trash2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface UploadedFile {\n id: string;\n name: string;\n size: number;\n type?: string;\n}\n\nexport interface FileUploaderProps {\n files?: UploadedFile[];\n onFilesChange?: (files: UploadedFile[]) => void;\n placeholder?: string;\n accept?: string;\n disabled?: boolean;\n className?: string;\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(0)) + sizes[i];\n}\n\nconst FileUploader = React.forwardRef<HTMLDivElement, FileUploaderProps>(\n (\n {\n files = [],\n onFilesChange,\n placeholder = \"Drop files here\",\n accept,\n disabled,\n className,\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n\n const droppedFiles = Array.from(e.dataTransfer.files);\n handleFiles(droppedFiles);\n };\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled || !e.target.files) return;\n const selectedFiles = Array.from(e.target.files);\n handleFiles(selectedFiles);\n e.target.value = \"\";\n };\n\n const handleFiles = (newFiles: File[]) => {\n const uploadedFiles: UploadedFile[] = newFiles.map((file) => ({\n id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n name: file.name,\n size: file.size,\n type: file.type,\n }));\n\n onFilesChange?.([...files, ...uploadedFiles]);\n };\n\n const handleDelete = (fileId: string) => {\n if (disabled) return;\n const newFiles = files.filter((f) => f.id !== fileId);\n onFilesChange?.(newFiles);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {/* Dropzone */}\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={() => !disabled && fileInputRef.current?.click()}\n onKeyDown={(e) =>\n e.key === \"Enter\" && !disabled && fileInputRef.current?.click()\n }\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"flex flex-col items-center justify-center w-full border border-dashed rounded-[var(--radius-xs)] cursor-pointer transition-colors\",\n isDragging\n ? \"border-[var(--canvas-primary)] bg-[var(--canvas-surface-brand)]\"\n : \"border-[var(--canvas-border-input)] bg-[var(--canvas-surface)]\",\n disabled &&\n \"cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)] opacity-60\"\n )}\n style={{\n height: \"var(--input-expandable-height)\",\n paddingLeft: \"var(--spacing-xl)\",\n paddingRight: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-2xl)\",\n paddingBottom: \"var(--spacing-2xl)\",\n gap: \"var(--spacing-xs)\",\n }}\n >\n <Upload\n className=\"text-[var(--canvas-text-muted)]\"\n style={{ width: \"32px\", height: \"32px\" }}\n />\n <p\n className=\"text-[var(--canvas-text-placeholder)] text-center\"\n style={{\n fontFamily: \"var(--typo-body-m-font)\",\n fontSize: \"var(--typo-body-m-size)\",\n lineHeight: \"var(--typo-body-m-line-height)\",\n }}\n >\n {placeholder}\n </p>\n </div>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple\n onChange={handleFileSelect}\n disabled={disabled}\n className=\"hidden\"\n />\n\n {/* Uploaded files list */}\n {files.length > 0 && (\n <div\n className=\"flex flex-col w-full\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-xl)\",\n }}\n >\n {files.map((file) => (\n <div\n key={file.id}\n className=\"flex items-center w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* File icon */}\n <div\n className=\"flex items-center justify-center shrink-0 bg-[var(--canvas-surface)] rounded-[var(--radius-xs)]\"\n style={{\n width: \"64px\",\n height: \"48px\",\n }}\n >\n <FileText\n className=\"text-[var(--canvas-text-muted)]\"\n style={{ width: \"32px\", height: \"32px\" }}\n />\n </div>\n\n {/* File info */}\n <div className=\"flex flex-col flex-1 min-w-0\">\n <p\n className=\"text-[var(--canvas-text)] truncate\"\n style={{\n fontFamily: \"var(--typo-body-m-font)\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-m-line-height)\",\n }}\n >\n {file.name}\n </p>\n <p\n className=\"text-[var(--canvas-text-muted)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font)\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {formatFileSize(file.size)}\n </p>\n </div>\n\n {/* Delete button */}\n <button\n type=\"button\"\n onClick={() => handleDelete(file.id)}\n disabled={disabled}\n className={cn(\n \"shrink-0 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-destructive)] transition-colors\",\n disabled && \"opacity-60 cursor-not-allowed\"\n )}\n >\n <Trash2 style={{ width: \"16px\", height: \"16px\" }} />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\nFileUploader.displayName = \"FileUploader\";\n\nexport { FileUploader };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Upload, ChevronLeft, ChevronRight, Trash2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface UploadedImage {\n id: string;\n url: string;\n name?: string;\n}\n\nexport interface ImageUploaderProps {\n images?: UploadedImage[];\n selectedImageId?: string;\n onImagesChange?: (images: UploadedImage[]) => void;\n onSelectImage?: (imageId: string) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst ImageUploader = React.forwardRef<HTMLDivElement, ImageUploaderProps>(\n (\n {\n images = [],\n selectedImageId,\n onImagesChange,\n onSelectImage,\n placeholder = \"Drop image here\",\n disabled,\n className,\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (!disabled) setIsDragging(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n if (disabled) return;\n\n const files = Array.from(e.dataTransfer.files).filter((file) =>\n file.type.startsWith(\"image/\")\n );\n handleFiles(files);\n };\n\n const handleFileSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled || !e.target.files) return;\n const files = Array.from(e.target.files);\n handleFiles(files);\n e.target.value = \"\";\n };\n\n const handleFiles = (files: File[]) => {\n const newImages: UploadedImage[] = files.map((file) => ({\n id: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n url: URL.createObjectURL(file),\n name: file.name,\n }));\n\n onImagesChange?.([...images, ...newImages]);\n };\n\n const handleDelete = (imageId: string) => {\n if (disabled) return;\n const newImages = images.filter((img) => img.id !== imageId);\n onImagesChange?.(newImages);\n };\n\n const handleMoveLeft = (imageId: string) => {\n if (disabled) return;\n const index = images.findIndex((img) => img.id === imageId);\n if (index > 0) {\n const newImages = [...images];\n [newImages[index - 1], newImages[index]] = [\n newImages[index],\n newImages[index - 1],\n ];\n onImagesChange?.(newImages);\n }\n };\n\n const handleMoveRight = (imageId: string) => {\n if (disabled) return;\n const index = images.findIndex((img) => img.id === imageId);\n if (index < images.length - 1) {\n const newImages = [...images];\n [newImages[index], newImages[index + 1]] = [\n newImages[index + 1],\n newImages[index],\n ];\n onImagesChange?.(newImages);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {/* Dropzone */}\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onClick={() => !disabled && fileInputRef.current?.click()}\n onKeyDown={(e) =>\n e.key === \"Enter\" && !disabled && fileInputRef.current?.click()\n }\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n \"flex flex-col items-center justify-center w-full border border-dashed rounded-[var(--radius-xs)] cursor-pointer transition-colors\",\n isDragging\n ? \"border-[var(--canvas-primary)] bg-[var(--canvas-surface-brand)]\"\n : \"border-[var(--canvas-border-input)] bg-[var(--canvas-surface)]\",\n disabled &&\n \"cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)] opacity-60\"\n )}\n style={{\n height: \"var(--input-expandable-height)\",\n paddingLeft: \"var(--spacing-xl)\",\n paddingRight: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-2xl)\",\n paddingBottom: \"var(--spacing-2xl)\",\n gap: \"var(--spacing-xs)\",\n }}\n >\n <Upload\n className=\"text-[var(--canvas-text-muted)]\"\n style={{ width: \"32px\", height: \"32px\" }}\n />\n <p\n className=\"text-[var(--canvas-text-placeholder)] text-center\"\n style={{\n fontFamily: \"var(--typo-body-m-font)\",\n fontSize: \"var(--typo-body-m-size)\",\n lineHeight: \"var(--typo-body-m-line-height)\",\n }}\n >\n {placeholder}\n </p>\n </div>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n onChange={handleFileSelect}\n disabled={disabled}\n className=\"hidden\"\n />\n\n {/* Uploaded images gallery */}\n {images.length > 0 && (\n <div\n className=\"flex items-start w-full overflow-x-auto\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-xl)\",\n }}\n >\n {images.map((image, index) => {\n const isSelected = selectedImageId === image.id;\n const isFirst = index === 0;\n const isLast = index === images.length - 1;\n\n return (\n <div\n key={image.id}\n className={cn(\n \"flex flex-col shrink-0 rounded-[var(--radius-xs)] border overflow-hidden\",\n isSelected\n ? \"border-[var(--canvas-primary)]\"\n : \"border-[var(--canvas-border)]\"\n )}\n onClick={() => onSelectImage?.(image.id)}\n >\n {/* Image preview */}\n <div\n className=\"relative overflow-hidden\"\n style={{\n width: \"80px\",\n height: \"92px\",\n padding: \"var(--spacing-md)\",\n }}\n >\n <img\n src={image.url}\n alt={image.name || \"Uploaded image\"}\n className=\"w-full h-full object-cover rounded-sm\"\n />\n </div>\n\n {/* Controls */}\n <div\n className=\"flex items-center justify-end border-t border-[var(--canvas-border)]\"\n style={{\n gap: \"var(--spacing-xs)\",\n paddingLeft: \"var(--spacing-md)\",\n paddingRight: \"var(--spacing-md)\",\n paddingTop: \"var(--spacing-sm)\",\n paddingBottom: \"var(--spacing-sm)\",\n }}\n >\n {/* Move left */}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n handleMoveLeft(image.id);\n }}\n disabled={disabled || isFirst}\n className={cn(\n \"flex items-center justify-center rounded-full transition-colors\",\n isFirst || disabled\n ? \"bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]\"\n : \"bg-[var(--canvas-text)] text-white\"\n )}\n style={{ width: \"24px\", height: \"24px\" }}\n >\n <ChevronLeft style={{ width: \"16px\", height: \"16px\" }} />\n </button>\n\n {/* Move right */}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n handleMoveRight(image.id);\n }}\n disabled={disabled || isLast}\n className={cn(\n \"flex items-center justify-center rounded-full transition-colors\",\n isLast || disabled\n ? \"bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]\"\n : \"bg-[var(--canvas-text)] text-white\"\n )}\n style={{ width: \"24px\", height: \"24px\" }}\n >\n <ChevronRight style={{ width: \"16px\", height: \"16px\" }} />\n </button>\n\n {/* Delete */}\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n handleDelete(image.id);\n }}\n disabled={disabled}\n className=\"flex items-center justify-center rounded-full bg-[var(--canvas-text)] text-white transition-colors\"\n style={{ width: \"24px\", height: \"24px\" }}\n >\n <Trash2 style={{ width: \"16px\", height: \"16px\" }} />\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\nImageUploader.displayName = \"ImageUploader\";\n\nexport { ImageUploader };\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Label({\n className,\n style,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-input-label-font)\",\n fontSize: \"var(--typo-input-label-size)\",\n fontWeight: \"var(--typo-input-label-weight)\",\n letterSpacing: \"var(--typo-input-label-spacing)\",\n lineHeight: \"var(--typo-input-label-line-height)\",\n color: \"var(--typo-input-label-color)\",\n ...style,\n }}\n {...props}\n />\n )\n}\n\nexport { Label }\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LineTab {\n id: string;\n label: string;\n}\n\ninterface LineTabsProps {\n /** Array of tab items */\n tabs: LineTab[];\n /** ID of the currently active tab */\n activeTab?: string;\n /** Callback when a tab is clicked */\n onTabChange?: (tabId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Line Tabs Component\n * \n * Horizontal underline-style tabs for page navigation.\n * Active tab has blue text with 2px blue bottom border.\n * Inactive tabs have gray text with 1px gray bottom border.\n * \n * @example\n * ```tsx\n * <LineTabs \n * tabs={[\n * { id: \"tab1\", label: \"Tab 1\" },\n * { id: \"tab2\", label: \"Tab 2\" },\n * ]} \n * activeTab=\"tab1\"\n * onTabChange={(id) => console.log(id)}\n * />\n * ```\n */\nexport function LineTabs({\n tabs,\n activeTab: controlledActiveTab,\n onTabChange,\n className,\n}: LineTabsProps) {\n // Use internal state if not controlled\n const [internalActiveTab, setInternalActiveTab] = useState(tabs[0]?.id || \"\");\n const activeTab = controlledActiveTab ?? internalActiveTab;\n\n const handleTabClick = (tabId: string) => {\n if (!controlledActiveTab) {\n setInternalActiveTab(tabId);\n }\n onTabChange?.(tabId);\n };\n\n return (\n <div className={cn(\"flex items-end w-full\", className)}>\n {tabs.map((tab, index) => {\n const isActive = tab.id === activeTab;\n const isLast = index === tabs.length - 1;\n\n return (\n <div key={tab.id} className=\"flex items-end h-12\">\n {/* Tab Button */}\n <button\n onClick={() => handleTabClick(tab.id)}\n className={cn(\n \"flex items-center justify-center h-full px-0 transition-colors\",\n isActive\n ? \"border-b-2 border-[var(--canvas-primary)] text-[var(--canvas-primary)]\"\n : \"border-b border-[var(--canvas-border)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)]\"\n )}\n >\n <span className=\"text-base font-medium leading-6\">\n {tab.label}\n </span>\n </button>\n\n {/* Divider - 24px wide line */}\n {!isLast && (\n <div className=\"w-6 h-0 border-b border-[var(--canvas-border)]\" />\n )}\n </div>\n );\n })}\n\n {/* Trailing line to fill remaining space */}\n <div className=\"flex-1 h-0 border-b border-[var(--canvas-border)]\" />\n </div>\n );\n}\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface CheckboxOption {\n id: string;\n label: string;\n}\n\nexport interface MultiselectCheckboxFieldProps {\n options?: CheckboxOption[];\n selectedValues?: string[];\n onChange?: (values: string[]) => void;\n inputSize?: \"sm\" | \"default\" | \"lg\";\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiselectCheckboxField = React.forwardRef<\n HTMLDivElement,\n MultiselectCheckboxFieldProps\n>(\n (\n {\n options = [],\n selectedValues = [],\n onChange,\n inputSize = \"default\",\n disabled,\n className,\n },\n ref\n ) => {\n const sizeVar =\n inputSize === \"default\"\n ? \"standard\"\n : inputSize === \"sm\"\n ? \"small\"\n : \"large\";\n\n const handleToggle = (optionId: string) => {\n if (disabled) return;\n\n const newValues = selectedValues.includes(optionId)\n ? selectedValues.filter((v) => v !== optionId)\n : [...selectedValues, optionId];\n\n onChange?.(newValues);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-wrap items-start overflow-hidden\",\n className\n )}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {options.map((option) => {\n const isSelected = selectedValues.includes(option.id);\n\n return (\n <button\n key={option.id}\n type=\"button\"\n onClick={() => handleToggle(option.id)}\n disabled={disabled}\n className={cn(\n \"flex items-center gap-2 bg-white border overflow-hidden transition-colors\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2\",\n isSelected\n ? \"border-[var(--canvas-primary)]\"\n : \"border-[var(--canvas-border-input)]\",\n disabled &&\n \"cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)] opacity-60\"\n )}\n style={{\n height: `var(--input-${sizeVar}-height)`,\n paddingLeft: `var(--input-${sizeVar}-px)`,\n paddingRight: `var(--input-${sizeVar}-px)`,\n borderRadius: `var(--input-${sizeVar}-radius)`,\n minWidth: \"fit-content\",\n flexShrink: 0,\n flexGrow: 1,\n flexBasis: 0,\n minHeight: `var(--input-${sizeVar}-height)`,\n }}\n >\n {/* Checkbox indicator */}\n <span\n className={cn(\n \"flex items-center justify-center shrink-0 rounded-[var(--radius-xs)] border transition-colors\",\n isSelected\n ? \"bg-[var(--canvas-primary)] border-[var(--canvas-primary)]\"\n : \"bg-white border-[var(--canvas-border-input)]\",\n disabled && \"opacity-60\"\n )}\n style={{\n width: inputSize === \"sm\" ? \"16px\" : \"20px\",\n height: inputSize === \"sm\" ? \"16px\" : \"20px\",\n }}\n >\n {isSelected && (\n <Check\n className=\"text-white\"\n style={{\n width: inputSize === \"sm\" ? \"12px\" : \"16px\",\n height: inputSize === \"sm\" ? \"12px\" : \"16px\",\n }}\n strokeWidth={2.5}\n />\n )}\n </span>\n\n {/* Label */}\n <span\n className={cn(\n \"whitespace-nowrap\",\n isSelected\n ? \"text-[var(--canvas-primary)]\"\n : \"text-[var(--canvas-text-muted)]\",\n disabled && \"text-[var(--canvas-input-disabled-text)]\"\n )}\n style={{\n fontSize: `var(--input-${sizeVar}-font-size)`,\n }}\n >\n {option.label}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n);\nMultiselectCheckboxField.displayName = \"MultiselectCheckboxField\";\n\nexport { MultiselectCheckboxField };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface MultiselectTagsProps {\n tags?: string[];\n placeholder?: string;\n inputSize?: \"sm\" | \"default\" | \"lg\";\n onAdd?: (tag: string) => void;\n onRemove?: (tag: string) => void;\n disabled?: boolean;\n className?: string;\n}\n\nconst MultiselectTags = React.forwardRef<HTMLInputElement, MultiselectTagsProps>(\n ({ \n tags = [], \n placeholder = \"Add...\", \n inputSize = \"default\", \n onAdd, \n onRemove, \n disabled,\n className \n }, ref) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n const sizeVar = inputSize === \"default\" ? \"standard\" : inputSize === \"sm\" ? \"small\" : \"large\";\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n e.preventDefault();\n onAdd?.(inputValue.trim());\n setInputValue(\"\");\n }\n };\n\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center gap-1.5 bg-white border border-[var(--canvas-border-input)] p-1.5\",\n \"focus-within:border-[var(--canvas-border-input-focus)] focus-within:ring-2 focus-within:ring-[var(--canvas-border-input-focus)] focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)]\",\n className\n )}\n style={{\n minHeight: `var(--input-${sizeVar}-height)`,\n borderRadius: `var(--input-${sizeVar}-radius)`,\n }}\n >\n {tags.map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)] rounded text-xs\"\n >\n {tag}\n {!disabled && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={() => onRemove?.(tag)}\n onKeyDown={(e) => e.key === \"Enter\" && onRemove?.(tag)}\n className=\"cursor-pointer hover:opacity-70\"\n >\n <X className=\"size-3\" />\n </span>\n )}\n </span>\n ))}\n <input\n type=\"text\"\n ref={ref}\n placeholder={placeholder}\n disabled={disabled}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex-1 min-w-[60px] bg-transparent outline-none\",\n \"text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)]\",\n \"disabled:text-[var(--canvas-input-disabled-text)] disabled:cursor-not-allowed\"\n )}\n style={{\n fontSize: `var(--input-${sizeVar}-font-size)`,\n }}\n />\n </div>\n );\n }\n);\nMultiselectTags.displayName = \"MultiselectTags\";\n\nexport { MultiselectTags };\n\n\n\n\n\n\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-8\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n \"aspect-square size-4 shrink-0 rounded-full border border-[var(--canvas-border-input)] bg-white transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2\",\n \"aria-invalid:border-[var(--canvas-border-input-invalid)] aria-invalid:ring-[var(--canvas-border-input-invalid)]/20\",\n \"disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]\",\n \"data-[state=checked]:border-[var(--canvas-primary)]\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-[var(--canvas-primary)] text-[var(--canvas-primary)]\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TextInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n}\n\nconst TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\n ({ className, inputSize = \"default\", disabled, ...props }, ref) => {\n const sizeVar = inputSize === \"default\" ? \"standard\" : inputSize === \"sm\" ? \"small\" : \"large\";\n\n return (\n <input\n type=\"text\"\n ref={ref}\n disabled={disabled}\n className={cn(\n \"w-full bg-white border border-[var(--canvas-border-input)]\",\n \"text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)]\",\n \"focus:outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2\",\n \"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)]\",\n className\n )}\n style={{\n height: `var(--input-${sizeVar}-height)`,\n paddingLeft: `var(--input-${sizeVar}-px)`,\n paddingRight: `var(--input-${sizeVar}-px)`,\n borderRadius: `var(--input-${sizeVar}-radius)`,\n fontSize: `var(--input-${sizeVar}-font-size)`,\n }}\n {...props}\n />\n );\n }\n);\nTextInput.displayName = \"TextInput\";\n\nexport { TextInput };\n\n\n\n\n\n\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { TextInput } from \"./text-input\";\n\nexport interface RangeInputProps {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n minValue?: string;\n maxValue?: string;\n onMinChange?: (value: string) => void;\n onMaxChange?: (value: string) => void;\n minPlaceholder?: string;\n maxPlaceholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nconst RangeInput = React.forwardRef<HTMLDivElement, RangeInputProps>(\n ({ \n inputSize = \"default\", \n minValue, \n maxValue, \n onMinChange, \n onMaxChange, \n minPlaceholder = \"Min\",\n maxPlaceholder = \"Max\",\n disabled,\n className,\n }, ref) => {\n // Gap scales with size\n const gapStyles = {\n sm: \"gap-1.5\",\n default: \"gap-2\",\n lg: \"gap-3\",\n };\n\n // Separator size scales with input\n const separatorStyles = {\n sm: \"w-2 text-xs\",\n default: \"w-2 text-sm\",\n lg: \"w-3 text-base\",\n };\n\n return (\n <div \n ref={ref}\n className={cn(\n \"flex items-center\",\n gapStyles[inputSize],\n className\n )}\n >\n <TextInput\n inputSize={inputSize}\n value={minValue}\n onChange={(e) => onMinChange?.(e.target.value)}\n placeholder={minPlaceholder}\n disabled={disabled}\n className=\"flex-1\"\n />\n <span \n className={cn(\n \"flex items-center justify-center text-[var(--canvas-text-muted)] shrink-0\",\n separatorStyles[inputSize]\n )}\n >\n –\n </span>\n <TextInput\n inputSize={inputSize}\n value={maxValue}\n onChange={(e) => onMaxChange?.(e.target.value)}\n placeholder={maxPlaceholder}\n disabled={disabled}\n className=\"flex-1\"\n />\n </div>\n );\n }\n);\n\nRangeInput.displayName = \"RangeInput\";\n\nexport { RangeInput };\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-border relative flex-1 rounded-full\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Search } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SearchboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n value?: string;\n onChange?: (value: string) => void;\n}\n\nconst Searchbox = React.forwardRef<HTMLInputElement, SearchboxProps>(\n ({ className, inputSize = \"default\", placeholder = \"Search...\", disabled, value, onChange, ...props }, ref) => {\n const sizeVar = inputSize === \"default\" ? \"standard\" : inputSize === \"sm\" ? \"small\" : \"large\";\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2 bg-white border border-[var(--canvas-border-input)]\",\n \"focus-within:border-[var(--canvas-border-input-focus)] focus-within:ring-2 focus-within:ring-[var(--canvas-border-input-focus)] focus-within:ring-offset-2\",\n \"has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-[var(--canvas-input-disabled-bg)] has-[:disabled]:border-[var(--canvas-input-disabled-border)]\",\n className\n )}\n style={{\n height: `var(--input-${sizeVar}-height)`,\n paddingLeft: `var(--input-${sizeVar}-px)`,\n paddingRight: `var(--input-${sizeVar}-px)`,\n borderRadius: `var(--input-${sizeVar}-radius)`,\n }}\n >\n <Search className=\"size-4 shrink-0 text-[var(--canvas-text-muted)]\" />\n <input\n type=\"text\"\n ref={ref}\n placeholder={placeholder}\n disabled={disabled}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n className={cn(\n \"flex-1 bg-transparent outline-none\",\n \"text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)]\",\n \"disabled:text-[var(--canvas-input-disabled-text)] disabled:cursor-not-allowed\"\n )}\n style={{\n fontSize: `var(--input-${sizeVar}-font-size)`,\n }}\n {...props}\n />\n </div>\n );\n }\n);\nSearchbox.displayName = \"Searchbox\";\n\nexport { Searchbox };\n\n\n\n\n\n\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst selectTriggerVariants = cva(\n // Base styles using CSS variables\n \"flex w-full items-center justify-between gap-2 bg-white 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)] focus:ring-offset-2 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)]\",\n {\n variants: {\n inputSize: {\n sm: \"h-[var(--input-small-height)] px-[var(--input-small-px)] text-[length:var(--input-small-font-size)] rounded-[var(--input-small-radius)]\",\n default: \"h-[var(--input-standard-height)] px-[var(--input-standard-px)] text-[length:var(--input-standard-font-size)] rounded-[var(--input-standard-radius)]\",\n lg: \"h-[var(--input-large-height)] px-[var(--input-large-px)] text-[length:var(--input-large-font-size)] rounded-[var(--input-large-radius)]\",\n },\n },\n defaultVariants: {\n inputSize: \"default\",\n },\n }\n)\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n inputSize,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> &\n VariantProps<typeof selectTriggerVariants>) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={inputSize}\n className={cn(selectTriggerVariants({ inputSize, className }))}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n sideOffset={sideOffset}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default 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)]\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n selectTriggerVariants,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface PillOption {\n id: string;\n label: string;\n}\n\nexport interface SelectablePillsProps {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n options: PillOption[];\n selected: string[];\n onSelectionChange: (selected: string[]) => void;\n allowMultiple?: boolean;\n className?: string;\n disabled?: boolean;\n}\n\nconst SelectablePills = React.forwardRef<HTMLDivElement, SelectablePillsProps>(\n ({ \n inputSize = \"default\", \n options, \n selected, \n onSelectionChange,\n allowMultiple = true,\n className,\n disabled,\n }, ref) => {\n // Size mappings - using fixed values that scale appropriately\n const sizeStyles = {\n sm: {\n pill: \"h-7 px-2.5 text-xs gap-1\",\n container: \"gap-2\",\n },\n default: {\n pill: \"h-9 px-3.5 text-sm gap-1.5\",\n container: \"gap-3\",\n },\n lg: {\n pill: \"h-11 px-4 text-base gap-2\",\n container: \"gap-4\",\n },\n };\n\n const styles = sizeStyles[inputSize];\n\n const handlePillClick = (optionId: string) => {\n if (disabled) return;\n\n if (allowMultiple) {\n // Toggle selection\n if (selected.includes(optionId)) {\n onSelectionChange(selected.filter(id => id !== optionId));\n } else {\n onSelectionChange([...selected, optionId]);\n }\n } else {\n // Single selection - toggle or replace\n if (selected.includes(optionId)) {\n onSelectionChange([]);\n } else {\n onSelectionChange([optionId]);\n }\n }\n };\n\n return (\n <div \n ref={ref}\n className={cn(\n \"flex flex-wrap\",\n styles.container,\n className\n )}\n >\n {options.map((option) => {\n const isSelected = selected.includes(option.id);\n \n return (\n <button\n key={option.id}\n type=\"button\"\n onClick={() => handlePillClick(option.id)}\n disabled={disabled}\n className={cn(\n \"inline-flex items-center justify-center rounded-[var(--radius-xs)] border transition-colors\",\n \"font-medium whitespace-nowrap\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n styles.pill,\n isSelected\n ? \"bg-[var(--canvas-surface-brand)] border-[var(--canvas-primary)] text-[var(--canvas-primary)]\"\n : \"bg-white border-[var(--canvas-border)] text-[var(--canvas-text-muted)] hover:border-[var(--canvas-text-muted)]\"\n )}\n >\n {option.label}\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nSelectablePills.displayName = \"SelectablePills\";\n\nexport { SelectablePills };\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n overlayClassName,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n overlayClassName?: string\n}) {\n return (\n <SheetPortal>\n <SheetOverlay className={overlayClassName} />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.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\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeftIcon } from \"lucide-react\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Separator } from \"./separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"./sheet\"\nimport { Skeleton } from \"./skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"./tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"size-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"bg-background relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"bg-background h-8 w-full shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"after:absolute after:-inset-2 md:after:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SliderProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>, \"value\" | \"onValueChange\"> {\n inputSize?: \"sm\" | \"default\" | \"lg\";\n value?: number[];\n onValueChange?: (value: number[]) => void;\n showLabel?: boolean;\n labelFormatter?: (value: number[]) => string;\n}\n\nconst Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({ \n className, \n inputSize = \"default\", \n value, \n onValueChange, \n showLabel = true,\n labelFormatter,\n min = 0,\n max = 100,\n step = 1,\n ...props \n}, ref) => {\n // Size mappings\n const sizeStyles = {\n sm: {\n trackHeight: \"h-1\",\n thumbSize: \"size-3\",\n labelClass: \"text-xs\",\n },\n default: {\n trackHeight: \"h-1.5\",\n thumbSize: \"size-4\",\n labelClass: \"text-sm\",\n },\n lg: {\n trackHeight: \"h-2\",\n thumbSize: \"size-5\",\n labelClass: \"text-base\",\n },\n };\n\n const styles = sizeStyles[inputSize];\n\n // Default label formatter\n const formatLabel = labelFormatter || ((values: number[]) => {\n if (values.length === 2) {\n return `${values[0]} - ${values[1]}`;\n }\n return `${values[0]}`;\n });\n\n return (\n <div className=\"flex flex-col gap-[var(--spacing-xs)]\">\n <SliderPrimitive.Root\n ref={ref}\n min={min}\n max={max}\n step={step}\n value={value}\n onValueChange={onValueChange}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n className={cn(\n \"relative w-full grow overflow-hidden rounded-full bg-[var(--canvas-border)]\",\n styles.trackHeight\n )}\n >\n <SliderPrimitive.Range className=\"absolute h-full bg-[var(--canvas-primary)]\" />\n </SliderPrimitive.Track>\n {(value || [0]).map((_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n className={cn(\n \"block rounded-full border-2 border-white bg-[var(--canvas-primary)]\",\n \"shadow-[0px_1px_2px_0px_rgba(0,0,0,0.08)]\",\n \"ring-offset-background transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n styles.thumbSize\n )}\n />\n ))}\n </SliderPrimitive.Root>\n {showLabel && value && (\n <p \n className={cn(\n \"text-center text-[var(--canvas-text-muted)]\",\n styles.labelClass\n )}\n >\n {formatLabel(value)}\n </p>\n )}\n </div>\n );\n});\n\nSlider.displayName = \"Slider\";\n\nexport { Slider };\n\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-colors\",\n \"data-[state=checked]:bg-[var(--canvas-primary)] data-[state=unchecked]:bg-[var(--canvas-border)]\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:data-[state=checked]:bg-[var(--canvas-input-disabled-text)] disabled:data-[state=unchecked]:bg-[var(--canvas-input-disabled-border)]\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"pointer-events-none block size-4 rounded-full bg-white ring-0 transition-transform\",\n \"data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../lib/utils\"\n\nconst textareaVariants = cva(\n // Base styles using CSS variables\n \"flex w-full bg-white border border-[var(--canvas-border-input)] text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] transition-colors resize-none focus:outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2 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)]\",\n {\n variants: {\n inputSize: {\n sm: \"min-h-[60px] px-[var(--input-small-px)] py-2 text-[length:var(--input-small-font-size)] rounded-[var(--input-small-radius)]\",\n default: \"min-h-[80px] px-[var(--input-standard-px)] py-2 text-[length:var(--input-standard-font-size)] rounded-[var(--input-standard-radius)]\",\n lg: \"min-h-[120px] px-[var(--input-large-px)] py-3 text-[length:var(--input-large-font-size)] rounded-[var(--input-large-radius)]\",\n expandable: \"min-h-[var(--input-expandable-height)] px-[var(--input-expandable-px)] py-2 text-[length:var(--input-expandable-font-size)] rounded-[var(--input-expandable-radius)]\",\n },\n },\n defaultVariants: {\n inputSize: \"default\",\n },\n }\n)\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, inputSize, ...props }, ref) => {\n return (\n <textarea\n className={cn(textareaVariants({ inputSize, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea, textareaVariants }\n\n\n\n\n\n\n\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\ntype TypographyVariant =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"body-xl\"\n | \"body-l\"\n | \"body-m\"\n | \"body-s\"\n | \"body-xs\";\n\ntype TypographyColor = \"default\" | \"muted\";\n\ntype TypographyElement = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\" | \"label\";\n\nexport interface TypographyProps extends React.HTMLAttributes<HTMLElement> {\n /** Typography style variant */\n variant?: TypographyVariant;\n /** Color variant */\n color?: TypographyColor;\n /** Override the rendered HTML element */\n as?: TypographyElement;\n /** Additional CSS classes */\n className?: string;\n /** Content */\n children?: React.ReactNode;\n}\n\n/**\n * Get the default HTML element for a typography variant\n */\nfunction getDefaultElement(variant: TypographyVariant): TypographyElement {\n if (variant.startsWith(\"h\")) {\n return variant as TypographyElement;\n }\n return \"p\";\n}\n\n/**\n * Typography component that renders text with design system styling.\n * \n * @example\n * // Headings\n * <Typography variant=\"h1\">Page Title</Typography>\n * <Typography variant=\"h2\" color=\"muted\">Subtitle</Typography>\n * \n * // Body text\n * <Typography variant=\"body-m\">Paragraph text</Typography>\n * <Typography variant=\"body-s\" color=\"muted\">Caption</Typography>\n * \n * // Override element\n * <Typography variant=\"body-m\" as=\"span\">Inline text</Typography>\n */\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n ({ variant = \"body-m\", color = \"default\", as, className, children, style, ...props }, ref) => {\n const Component = as || getDefaultElement(variant);\n const varPrefix = `--typo-${variant}`;\n\n return React.createElement(\n Component,\n {\n ref,\n className: cn(className),\n style: {\n fontFamily: `var(${varPrefix}-font, var(--typo-global-font))`,\n fontSize: `var(${varPrefix}-size)`,\n fontWeight: `var(${varPrefix}-weight)`,\n letterSpacing: `var(${varPrefix}-spacing)`,\n lineHeight: `var(${varPrefix}-line-height)`,\n color: color === \"muted\"\n ? `var(${varPrefix}-color-muted)`\n : `var(${varPrefix}-color)`,\n ...style,\n },\n ...props,\n },\n children\n );\n }\n);\nTypography.displayName = \"Typography\";\n\nexport { Typography };\n\n\n\n\n\n\n\n","/**\n * Canvas Design System - Theme Defaults\n * \n * This file contains all default values for the design system.\n * These are used by:\n * - The Reset button in the Design Variables drawer\n * - Initial state when no saved theme exists\n * \n * Keep these in sync with globals.css CSS variable defaults.\n */\n\n// ============================================\n// Color Variables Configuration\n// ============================================\n\nexport const colorVariables = [\n {\n category: \"Brand\",\n variables: [\n { name: \"--canvas-primary\", default: \"#1165ef\", label: \"Primary\" },\n { name: \"--canvas-primary-dark\", default: \"#093378\", label: \"Primary Dark\" },\n { name: \"--canvas-primary-foreground\", default: \"#ffffff\", label: \"Primary Text\" },\n { name: \"--canvas-flair-bg\", default: \"#093378\", label: \"Flair Background\" },\n { name: \"--canvas-destructive\", default: \"#ef4444\", label: \"Destructive\" },\n ],\n },\n {\n category: \"Text\",\n variables: [\n { name: \"--canvas-text\", default: \"#0d121c\", label: \"Dark\" },\n { name: \"--canvas-text-muted\", default: \"#4b5565\", label: \"Gray\" },\n { name: \"--canvas-text-placeholder\", default: \"#6c7684\", label: \"Placeholder\" },\n ],\n },\n {\n category: \"Surfaces\",\n variables: [\n { name: \"--canvas-background\", default: \"#ffffff\", label: \"Background\" },\n { name: \"--canvas-surface\", default: \"#f8fafc\", label: \"Neutral\" },\n { name: \"--canvas-surface-hover\", default: \"#eef1f5\", label: \"Neutral Hovered\" },\n { name: \"--canvas-surface-brand\", default: \"#ebf2ff\", label: \"Brand Surface\" },\n { name: \"--canvas-outline-bg\", default: \"#ffffff\", label: \"Outline Button Background\" },\n ],\n },\n {\n category: \"Borders\",\n variables: [\n { name: \"--canvas-border\", default: \"#e9eef3\", label: \"Border\" },\n { name: \"--canvas-border-input\", default: \"#d1d9e0\", label: \"Input Border\" },\n { name: \"--canvas-border-input-focus\", default: \"#1165ef\", label: \"Input Border Focused\" },\n { name: \"--canvas-border-input-invalid\", default: \"#ef4444\", label: \"Input Border Invalid\" },\n { name: \"--canvas-border-disabled\", default: \"#e3e8ef\", label: \"Disabled\" },\n ],\n },\n {\n category: \"Sidebar (Light)\",\n variables: [\n { name: \"--canvas-sidebar-light-bg\", default: \"#ffffff\", label: \"Background\" },\n { name: \"--canvas-sidebar-light-active-bg\", default: \"#ebf2ff\", label: \"Active Background\" },\n { name: \"--canvas-sidebar-light-active-text\", default: \"#1165ef\", label: \"Active Text\" },\n { name: \"--canvas-sidebar-light-text\", default: \"#4b5565\", label: \"Text\" },\n { name: \"--canvas-sidebar-light-border\", default: \"#e9eef3\", label: \"Border\" },\n ],\n },\n {\n category: \"Sidebar (Dark)\",\n variables: [\n { name: \"--canvas-sidebar-dark-bg\", default: \"#152135\", label: \"Background\" },\n { name: \"--canvas-sidebar-dark-active-bg\", default: \"#091222\", label: \"Active Background\" },\n { name: \"--canvas-sidebar-dark-active-text\", default: \"#ffffff\", label: \"Active Text\" },\n { name: \"--canvas-sidebar-dark-text\", default: \"#7e92b0\", label: \"Text\" },\n { name: \"--canvas-sidebar-dark-border\", default: \"#1e3a5f\", label: \"Border\" },\n ],\n },\n];\n\n// Flattened array of all color variables\nexport const allColorVariables = colorVariables.flatMap((cat) => cat.variables);\n\n// Default colors as a flat object\nexport const defaultColors: Record<string, string> = Object.fromEntries(\n allColorVariables.map(v => [v.name, v.default])\n);\n\n// ============================================\n// Branding Defaults\n// ============================================\n\nexport type IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\nexport const defaultBranding = {\n iconShape: \"rounded\" as IconShapeId,\n iconName: \"Buildings\",\n bgColor: \"var(--canvas-primary)\",\n iconColor: \"var(--canvas-primary-foreground)\",\n wordmark: \"canvas\",\n};\n\n// ============================================\n// Image Defaults\n// ============================================\n\nexport type ImageKey = \"logoLight\" | \"logoDark\" | \"faviconLight\" | \"faviconDark\";\n\nexport const defaultImages: Record<ImageKey, string> = {\n logoLight: \"\",\n logoDark: \"\",\n faviconLight: \"\",\n faviconDark: \"\",\n};\n\n// ============================================\n// Typography Defaults\n// ============================================\n\nexport const defaultTypography: Record<string, string> = {\n // Global Font\n \"--typo-global-font\": \"Inter\",\n \n // H1 - Hero headlines\n \"--typo-h1-font\": \"\",\n \"--typo-h1-size\": \"72px\",\n \"--typo-h1-size-mobile\": \"48px\",\n \"--typo-h1-weight\": \"700\",\n \"--typo-h1-spacing\": \"-0.02em\",\n \"--typo-h1-line-height\": \"1.1\",\n \"--typo-h1-color\": \"var(--canvas-text)\",\n \"--typo-h1-color-muted\": \"var(--canvas-text-muted)\",\n \n // H2 - Major section headers\n \"--typo-h2-font\": \"\",\n \"--typo-h2-size\": \"60px\",\n \"--typo-h2-size-mobile\": \"40px\",\n \"--typo-h2-weight\": \"700\",\n \"--typo-h2-spacing\": \"-0.02em\",\n \"--typo-h2-line-height\": \"1.15\",\n \"--typo-h2-color\": \"var(--canvas-text)\",\n \"--typo-h2-color-muted\": \"var(--canvas-text-muted)\",\n \n // H3 - Banner titles\n \"--typo-h3-font\": \"\",\n \"--typo-h3-size\": \"48px\",\n \"--typo-h3-size-mobile\": \"32px\",\n \"--typo-h3-weight\": \"700\",\n \"--typo-h3-spacing\": \"-0.01em\",\n \"--typo-h3-line-height\": \"1.25\",\n \"--typo-h3-color\": \"var(--canvas-text)\",\n \"--typo-h3-color-muted\": \"var(--canvas-text-muted)\",\n \n // H4 - Page titles\n \"--typo-h4-font\": \"\",\n \"--typo-h4-size\": \"36px\",\n \"--typo-h4-size-mobile\": \"28px\",\n \"--typo-h4-weight\": \"600\",\n \"--typo-h4-spacing\": \"-0.01em\",\n \"--typo-h4-line-height\": \"1.25\",\n \"--typo-h4-color\": \"var(--canvas-text)\",\n \"--typo-h4-color-muted\": \"var(--canvas-text-muted)\",\n \n // H5 - Large section headers\n \"--typo-h5-font\": \"\",\n \"--typo-h5-size\": \"30px\",\n \"--typo-h5-size-mobile\": \"24px\",\n \"--typo-h5-weight\": \"600\",\n \"--typo-h5-spacing\": \"0em\",\n \"--typo-h5-line-height\": \"1.3\",\n \"--typo-h5-color\": \"var(--canvas-text)\",\n \"--typo-h5-color-muted\": \"var(--canvas-text-muted)\",\n \n // H6 - Section titles\n \"--typo-h6-font\": \"\",\n \"--typo-h6-size\": \"24px\",\n \"--typo-h6-size-mobile\": \"20px\",\n \"--typo-h6-weight\": \"600\",\n \"--typo-h6-spacing\": \"0em\",\n \"--typo-h6-line-height\": \"1.25\",\n \"--typo-h6-color\": \"var(--canvas-text)\",\n \"--typo-h6-color-muted\": \"var(--canvas-text-muted)\",\n \n // Body XL - Lead paragraphs, card titles\n \"--typo-body-xl-font\": \"\",\n \"--typo-body-xl-size\": \"20px\",\n \"--typo-body-xl-size-mobile\": \"18px\",\n \"--typo-body-xl-weight\": \"400\",\n \"--typo-body-xl-spacing\": \"0em\",\n \"--typo-body-xl-line-height\": \"1.5\",\n \"--typo-body-xl-color\": \"var(--canvas-text)\",\n \"--typo-body-xl-color-muted\": \"var(--canvas-text-muted)\",\n \n // Body L - Descriptions\n \"--typo-body-l-font\": \"\",\n \"--typo-body-l-size\": \"18px\",\n \"--typo-body-l-size-mobile\": \"16px\",\n \"--typo-body-l-weight\": \"400\",\n \"--typo-body-l-spacing\": \"0em\",\n \"--typo-body-l-line-height\": \"1.55\",\n \"--typo-body-l-color\": \"var(--canvas-text)\",\n \"--typo-body-l-color-muted\": \"var(--canvas-text-muted)\",\n \n // Body M - Standard body text\n \"--typo-body-m-font\": \"\",\n \"--typo-body-m-size\": \"16px\",\n \"--typo-body-m-size-mobile\": \"15px\",\n \"--typo-body-m-weight\": \"400\",\n \"--typo-body-m-spacing\": \"0em\",\n \"--typo-body-m-line-height\": \"1.5\",\n \"--typo-body-m-color\": \"var(--canvas-text)\",\n \"--typo-body-m-color-muted\": \"var(--canvas-text-muted)\",\n \n // Body S - Captions, metadata\n \"--typo-body-s-font\": \"\",\n \"--typo-body-s-size\": \"14px\",\n \"--typo-body-s-size-mobile\": \"13px\",\n \"--typo-body-s-weight\": \"400\",\n \"--typo-body-s-spacing\": \"0em\",\n \"--typo-body-s-line-height\": \"1.4\",\n \"--typo-body-s-color\": \"var(--canvas-text)\",\n \"--typo-body-s-color-muted\": \"var(--canvas-text-muted)\",\n \n // Body XS - Fine print, labels\n \"--typo-body-xs-font\": \"\",\n \"--typo-body-xs-size\": \"12px\",\n \"--typo-body-xs-size-mobile\": \"11px\",\n \"--typo-body-xs-weight\": \"400\",\n \"--typo-body-xs-spacing\": \"0em\",\n \"--typo-body-xs-line-height\": \"1.4\",\n \"--typo-body-xs-color\": \"var(--canvas-text)\",\n \"--typo-body-xs-color-muted\": \"var(--canvas-text-muted)\",\n \n // Menu Label\n \"--typo-menu-label-font\": \"\",\n \"--typo-menu-label-size\": \"18px\",\n \"--typo-menu-label-size-mobile\": \"16px\",\n \"--typo-menu-label-weight\": \"600\",\n \"--typo-menu-label-spacing\": \"0em\",\n \"--typo-menu-label-line-height\": \"1.55\",\n \"--typo-menu-label-color\": \"var(--canvas-text)\",\n \n // Sidebar Labels\n \"--typo-sidebar-label-font\": \"\",\n \"--typo-sidebar-label-size\": \"12px\",\n \"--typo-sidebar-label-size-mobile\": \"11px\",\n \"--typo-sidebar-label-weight\": \"600\",\n \"--typo-sidebar-label-spacing\": \"0.05em\",\n \"--typo-sidebar-label-line-height\": \"1.5\",\n \"--typo-sidebar-label-color\": \"var(--canvas-text)\",\n \n // Sidebar Tabs\n \"--typo-sidebar-tab-font\": \"\",\n \"--typo-sidebar-tab-size\": \"14px\",\n \"--typo-sidebar-tab-size-mobile\": \"14px\",\n \"--typo-sidebar-tab-weight\": \"500\",\n \"--typo-sidebar-tab-spacing\": \"0em\",\n \"--typo-sidebar-tab-line-height\": \"1.5\",\n \"--typo-sidebar-tab-color\": \"var(--canvas-text)\",\n \n // Sidebar Subtabs\n \"--typo-sidebar-subtab-font\": \"\",\n \"--typo-sidebar-subtab-size\": \"14px\",\n \"--typo-sidebar-subtab-size-mobile\": \"14px\",\n \"--typo-sidebar-subtab-weight\": \"500\",\n \"--typo-sidebar-subtab-spacing\": \"0em\",\n \"--typo-sidebar-subtab-line-height\": \"1.5\",\n \"--typo-sidebar-subtab-color\": \"var(--canvas-text)\",\n \n // Header Texts\n \"--typo-header-font\": \"\",\n \"--typo-header-size\": \"14px\",\n \"--typo-header-size-mobile\": \"14px\",\n \"--typo-header-weight\": \"400\",\n \"--typo-header-spacing\": \"0em\",\n \"--typo-header-line-height\": \"1.5\",\n \"--typo-header-color\": \"var(--canvas-text)\",\n \n // Input Labels\n \"--typo-input-label-font\": \"\",\n \"--typo-input-label-size\": \"14px\",\n \"--typo-input-label-size-mobile\": \"13px\",\n \"--typo-input-label-weight\": \"500\",\n \"--typo-input-label-spacing\": \"0em\",\n \"--typo-input-label-line-height\": \"1.4\",\n \"--typo-input-label-color\": \"var(--canvas-text-muted)\",\n // Button Text\n \"--typo-button-font\": \"\",\n \"--typo-button-size\": \"14px\",\n \"--typo-button-size-mobile\": \"14px\",\n \"--typo-button-weight\": \"500\",\n \"--typo-button-spacing\": \"0em\",\n \"--typo-button-line-height\": \"1.5\",\n \"--typo-button-color\": \"var(--canvas-text)\",\n};\n\n// ============================================\n// Button Size Defaults\n// ============================================\n\nexport const defaultButtonSizes: Record<string, string> = {\n // Mini\n \"--btn-mini-height\": \"28px\",\n \"--btn-mini-font-size\": \"12px\",\n \"--btn-mini-px\": \"10px\",\n \"--btn-mini-radius\": \"4px\",\n \"--btn-mini-font-family\": \"\",\n \"--btn-mini-font-weight\": \"500\",\n \"--btn-mini-letter-spacing\": \"0em\",\n // Small\n \"--btn-small-height\": \"32px\",\n \"--btn-small-font-size\": \"14px\",\n \"--btn-small-px\": \"12px\",\n \"--btn-small-radius\": \"6px\",\n \"--btn-small-font-family\": \"\",\n \"--btn-small-font-weight\": \"500\",\n \"--btn-small-letter-spacing\": \"0em\",\n // Standard\n \"--btn-standard-height\": \"40px\",\n \"--btn-standard-font-size\": \"14px\",\n \"--btn-standard-px\": \"16px\",\n \"--btn-standard-radius\": \"8px\",\n \"--btn-standard-font-family\": \"\",\n \"--btn-standard-font-weight\": \"500\",\n \"--btn-standard-letter-spacing\": \"0em\",\n // Large\n \"--btn-large-height\": \"48px\",\n \"--btn-large-font-size\": \"16px\",\n \"--btn-large-px\": \"20px\",\n \"--btn-large-radius\": \"10px\",\n \"--btn-large-font-family\": \"\",\n \"--btn-large-font-weight\": \"500\",\n \"--btn-large-letter-spacing\": \"0em\",\n};\n\n// ============================================\n// Button Color Style Definitions\n// ============================================\n\n// Default (protected) button color styles - these cannot be deleted\nexport const defaultButtonColorStyles = [\n { id: \"primary\", label: \"Primary Save\", description: \"Main action button\", isDefault: true },\n { id: \"primary-outline\", label: \"Primary Outline\", description: \"Secondary action\", isDefault: true },\n { id: \"primary-neutral\", label: \"Primary Neutral\", description: \"Subtle primary action\", isDefault: true },\n { id: \"neutral\", label: \"Neutral\", description: \"Subtle action\", isDefault: true },\n { id: \"disabled\", label: \"Disabled\", description: \"Inactive state\", isDefault: true },\n { id: \"neutral-delete\", label: \"Neutral Delete\", description: \"Subtle destructive\", isDefault: true },\n { id: \"delete\", label: \"Delete\", description: \"Destructive action\", isDefault: true },\n];\n\n// Type for custom button styles\nexport interface CustomButtonStyle {\n id: string;\n label: string;\n description: string;\n bg: string;\n text: string;\n border: string;\n bgHover: string;\n textHover: string;\n borderHover: string;\n}\n\n// Default custom button styles (empty array)\nexport const defaultCustomButtonStyles: CustomButtonStyle[] = [];\n\n// ============================================\n// Button Color Defaults\n// ============================================\n\nexport const defaultButtonColors: Record<string, string> = {\n // Primary Save\n \"--btn-primary-bg\": \"var(--canvas-primary)\",\n \"--btn-primary-text\": \"var(--canvas-primary-foreground)\",\n \"--btn-primary-border\": \"var(--canvas-primary)\",\n \"--btn-primary-bg-hover\": \"var(--canvas-primary-dark)\",\n \"--btn-primary-text-hover\": \"var(--canvas-primary-foreground)\",\n \"--btn-primary-border-hover\": \"var(--canvas-primary-dark)\",\n // Primary Outline\n \"--btn-primary-outline-bg\": \"var(--canvas-outline-bg)\",\n \"--btn-primary-outline-text\": \"var(--canvas-primary)\",\n \"--btn-primary-outline-border\": \"var(--canvas-primary)\",\n \"--btn-primary-outline-bg-hover\": \"var(--canvas-surface-brand)\",\n \"--btn-primary-outline-text-hover\": \"var(--canvas-primary)\",\n \"--btn-primary-outline-border-hover\": \"var(--canvas-primary)\",\n // Primary Neutral\n \"--btn-primary-neutral-bg\": \"var(--canvas-surface-brand)\",\n \"--btn-primary-neutral-text\": \"var(--canvas-primary)\",\n \"--btn-primary-neutral-border\": \"var(--canvas-transparent)\",\n \"--btn-primary-neutral-bg-hover\": \"var(--canvas-surface-brand)\",\n \"--btn-primary-neutral-text-hover\": \"var(--canvas-primary-dark)\",\n \"--btn-primary-neutral-border-hover\": \"var(--canvas-transparent)\",\n // Neutral\n \"--btn-neutral-bg\": \"var(--canvas-background)\",\n \"--btn-neutral-text\": \"var(--canvas-text)\",\n \"--btn-neutral-border\": \"var(--canvas-border-input)\",\n \"--btn-neutral-bg-hover\": \"var(--canvas-surface-brand)\",\n \"--btn-neutral-text-hover\": \"var(--canvas-text)\",\n \"--btn-neutral-border-hover\": \"var(--canvas-border-input)\",\n // Disabled\n \"--btn-disabled-bg\": \"var(--canvas-background)\",\n \"--btn-disabled-text\": \"var(--canvas-text-muted)\",\n \"--btn-disabled-border\": \"var(--canvas-border)\",\n \"--btn-disabled-bg-hover\": \"var(--canvas-surface)\",\n \"--btn-disabled-text-hover\": \"var(--canvas-text-muted)\",\n \"--btn-disabled-border-hover\": \"var(--canvas-border)\",\n // Neutral Delete\n \"--btn-neutral-delete-bg\": \"var(--canvas-surface)\",\n \"--btn-neutral-delete-text\": \"var(--canvas-destructive)\",\n \"--btn-neutral-delete-border\": \"var(--canvas-border)\",\n \"--btn-neutral-delete-bg-hover\": \"var(--canvas-surface-brand)\",\n \"--btn-neutral-delete-text-hover\": \"var(--canvas-destructive)\",\n \"--btn-neutral-delete-border-hover\": \"var(--canvas-destructive)\",\n // Delete\n \"--btn-delete-bg\": \"var(--canvas-destructive)\",\n \"--btn-delete-text\": \"var(--canvas-primary-foreground)\",\n \"--btn-delete-border\": \"var(--canvas-destructive)\",\n \"--btn-delete-bg-hover\": \"#dc2626\",\n \"--btn-delete-text-hover\": \"var(--canvas-primary-foreground)\",\n \"--btn-delete-border-hover\": \"#dc2626\",\n};\n\n// ============================================\n// Input Size Defaults\n// ============================================\n\nexport const defaultInputSizes: Record<string, string> = {\n // Small\n \"--input-small-height\": \"30px\",\n \"--input-small-font-size\": \"13px\",\n \"--input-small-px\": \"10px\",\n \"--input-small-radius\": \"6px\",\n // Standard\n \"--input-standard-height\": \"40px\",\n \"--input-standard-font-size\": \"14px\",\n \"--input-standard-px\": \"14px\",\n \"--input-standard-radius\": \"8px\",\n // Large\n \"--input-large-height\": \"64px\",\n \"--input-large-font-size\": \"18px\",\n \"--input-large-px\": \"20px\",\n \"--input-large-radius\": \"12px\",\n // Expandable (TextArea, Image uploader, Multifile uploader)\n \"--input-expandable-height\": \"80px\",\n \"--input-expandable-font-size\": \"14px\",\n \"--input-expandable-px\": \"14px\",\n \"--input-expandable-radius\": \"8px\",\n};\n\n","\"use client\";\n\nimport { ReactNode, createContext, useContext, useState } from \"react\";\nimport { defaultBranding, defaultImages, type ImageKey } from \"../lib/theme-defaults\";\n\n// ============================================\n// Types\n// ============================================\n\nexport type IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\nexport interface ThemeBranding {\n iconShape: IconShapeId;\n iconName: string;\n bgColor: string;\n iconColor: string;\n wordmark: string;\n}\n\nexport interface ThemeImages {\n logoLight: string;\n logoDark: string;\n faviconLight: string;\n faviconDark: string;\n}\n\nexport interface BrandAsset {\n id: string;\n name: string;\n url: string;\n storedInPublic?: boolean;\n}\n\n// ============================================\n// Context Types\n// ============================================\n\ninterface ThemeContextValue {\n images: ThemeImages;\n branding: ThemeBranding;\n brandAssets: BrandAsset[];\n isMounted: boolean;\n}\n\n// Preview branding context for live preview in the logo creator\ninterface PreviewBrandingContextValue {\n previewBranding: ThemeBranding | null;\n setPreviewBranding: (branding: ThemeBranding | null) => void;\n}\n\n// ============================================\n// Default Values\n// ============================================\n\nconst defaultThemeImages: ThemeImages = {\n logoLight: defaultImages.logoLight,\n logoDark: defaultImages.logoDark,\n faviconLight: defaultImages.faviconLight,\n faviconDark: defaultImages.faviconDark,\n};\n\nconst defaultThemeBranding: ThemeBranding = {\n iconShape: defaultBranding.iconShape as IconShapeId,\n iconName: defaultBranding.iconName,\n bgColor: defaultBranding.bgColor,\n iconColor: defaultBranding.iconColor,\n wordmark: defaultBranding.wordmark,\n};\n\n// ============================================\n// Context Setup\n// ============================================\n\nconst ThemeContext = createContext<ThemeContextValue>({\n images: defaultThemeImages,\n branding: defaultThemeBranding,\n brandAssets: [],\n isMounted: true,\n});\n\nconst PreviewBrandingContext = createContext<PreviewBrandingContextValue>({\n previewBranding: null,\n setPreviewBranding: () => {},\n});\n\n// ============================================\n// Hooks\n// ============================================\n\nexport function useThemeImages() {\n return useContext(ThemeContext).images;\n}\n\nexport function useThemeBranding() {\n const { branding, isMounted } = useContext(ThemeContext);\n const { previewBranding } = useContext(PreviewBrandingContext);\n // Return preview branding if available, otherwise return saved branding\n return { branding: previewBranding ?? branding, isMounted };\n}\n\nexport function usePreviewBranding() {\n return useContext(PreviewBrandingContext);\n}\n\nexport function useThemeBrandAssets() {\n return useContext(ThemeContext).brandAssets;\n}\n\n// ============================================\n// Provider Component\n// ============================================\n\ninterface ThemeProviderProps {\n children: ReactNode;\n images?: ThemeImages;\n branding?: ThemeBranding;\n brandAssets?: BrandAsset[];\n}\n\n/**\n * ThemeProvider for the SDK\n * \n * This provider allows parent applications to pass in theme values.\n * If no values are provided, sensible defaults are used.\n * \n * Usage in your app:\n * ```tsx\n * <ThemeProvider\n * images={{ logoLight: \"/logo.png\", ... }}\n * branding={{ wordmark: \"MyApp\", ... }}\n * >\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({ \n children, \n images = defaultThemeImages,\n branding = defaultThemeBranding,\n brandAssets = [],\n}: ThemeProviderProps) {\n const [previewBranding, setPreviewBranding] = useState<ThemeBranding | null>(null);\n\n const contextValue: ThemeContextValue = {\n images,\n branding,\n brandAssets,\n isMounted: true,\n };\n\n const previewBrandingValue: PreviewBrandingContextValue = {\n previewBranding,\n setPreviewBranding,\n };\n\n return (\n <ThemeContext.Provider value={contextValue}>\n <PreviewBrandingContext.Provider value={previewBrandingValue}>\n {children}\n </PreviewBrandingContext.Provider>\n </ThemeContext.Provider>\n );\n}\n\n// Export context for advanced usage\nexport { ThemeContext, PreviewBrandingContext };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Search, Bell, ShoppingCart, Menu, User, LogOut, MessageSquare, X, Home, Info, LayoutGrid, type LucideIcon } from \"lucide-react\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../ui/popover\";\nimport { useThemeBranding } from \"../../context/theme-context\";\n\n// ============================================\n// Cart Types\n// ============================================\n\nexport interface CartItem {\n id: string;\n name: string;\n price: number;\n image: string;\n}\n\n// Sample cart items for demo\nconst defaultCartItems: CartItem[] = [\n {\n id: \"1\",\n name: \"Julian Bag\",\n price: 120,\n image: \"https://images.unsplash.com/photo-1591561954557-26941169b49e?w=150&h=150&fit=crop\",\n },\n {\n id: \"2\",\n name: \"Davis Keychain\",\n price: 60,\n image: \"https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?w=150&h=150&fit=crop&crop=center\",\n },\n];\n\n// ============================================\n// Message Types\n// ============================================\n\nexport interface Message {\n id: string;\n senderName: string;\n senderAvatar: string;\n timestamp: string;\n}\n\n// Sample messages for demo\nconst defaultMessages: Message[] = [\n {\n id: \"1\",\n senderName: \"Jeff Conner\",\n senderAvatar: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop&crop=face\",\n timestamp: \"Jun 5, 2023 8:13 AM\",\n },\n {\n id: \"2\",\n senderName: \"Emma Pérez\",\n senderAvatar: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop&crop=face\",\n timestamp: \"May 2, 2023 11:54 AM\",\n },\n {\n id: \"3\",\n senderName: \"Raj Mishra\",\n senderAvatar: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=100&h=100&fit=crop&crop=face\",\n timestamp: \"Jan 10, 2023 5:22 PM\",\n },\n {\n id: \"4\",\n senderName: \"John Freidman\",\n senderAvatar: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=100&h=100&fit=crop&crop=face\",\n timestamp: \"Dec 20, 2022 2:22 PM\",\n },\n];\n\n// ============================================\n// Notification Types\n// ============================================\n\nexport interface Notification {\n id: string;\n userName: string;\n userAvatar: string;\n action: string;\n timestamp: string;\n}\n\n// Sample notifications for demo\nconst defaultNotifications: Notification[] = [\n {\n id: \"1\",\n userName: \"Aya Williams\",\n userAvatar: \"https://images.unsplash.com/photo-1531746020798-e6953c6e8e04?w=100&h=100&fit=crop&crop=face\",\n action: \"liked your photo\",\n timestamp: \"Apr 15, 2023 6:21 AM\",\n },\n {\n id: \"2\",\n userName: \"Francis Gaddi\",\n userAvatar: \"https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=100&h=100&fit=crop&crop=face\",\n action: \"liked your photo\",\n timestamp: \"Jun 10, 2023 5:45 PM\",\n },\n {\n id: \"3\",\n userName: \"Stacy Jones\",\n userAvatar: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop&crop=face\",\n action: \"liked your photo\",\n timestamp: \"May 9, 2023 2:00 AM\",\n },\n {\n id: \"4\",\n userName: \"Gabi del Rosario\",\n userAvatar: \"https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=100&h=100&fit=crop&crop=face\",\n action: \"liked your photo\",\n timestamp: \"Apr 8, 2023 8:55 PM\",\n },\n];\n\n// ============================================\n// Navigation Types\n// ============================================\n\nexport interface NavItem {\n id: string;\n label: string;\n icon?: LucideIcon;\n href?: string;\n onClick?: () => void;\n}\n\n// Default navigation items\nconst defaultNavItems: NavItem[] = [\n { id: \"home\", label: \"Home\", icon: Home },\n { id: \"about\", label: \"About\", icon: Info },\n { id: \"dashboard\", label: \"Dashboard\", icon: LayoutGrid },\n];\n\n// Phosphor Icons for Logo\nimport { Buildings, type Icon as PhosphorIcon } from \"@phosphor-icons/react\";\nimport {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Storefront, Handshake, ChartLine,\n Palette as PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb, Leaf, Tree,\n Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone, Heart, Shield,\n Trophy, Rocket, Target, Flag,\n} from \"@phosphor-icons/react\";\n\n// Icon shape renderers - use style attribute for CSS variable support\nconst iconShapes = {\n rounded: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" rx=\"10\" style={{ fill: bgColor }} />\n </svg>\n ),\n circle: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <circle cx=\"16\" cy=\"16\" r=\"16\" style={{ fill: bgColor }} />\n </svg>\n ),\n square: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" style={{ fill: bgColor }} />\n </svg>\n ),\n};\n\n// Map icon names to components\nconst iconMap: Record<string, PhosphorIcon> = {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Buildings, Storefront, Handshake,\n ChartLine, Palette: PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb,\n Leaf, Tree, Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone,\n Heart, Shield, Trophy, Rocket, Target, Flag,\n};\n\n// Helper to resolve CSS variable references to actual hex colors\nfunction resolveBrandingColor(value: string): string {\n if (!value) return \"#ffffff\";\n if (value.startsWith(\"var(\")) {\n const varName = value.replace(\"var(\", \"\").replace(\")\", \"\");\n if (typeof window !== \"undefined\") {\n const computed = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n return computed || \"#ffffff\";\n }\n return \"#ffffff\";\n }\n return value;\n}\n\ninterface HeaderProps {\n /** Callback when mobile menu button is clicked */\n onMenuClick?: () => void;\n /** Whether to show the logo on desktop (for no-sidebar pages) */\n showDesktopLogo?: boolean;\n /** Visual variant - light (default) or dark mode */\n variant?: \"light\" | \"dark\";\n /** Callback when \"My Account\" is clicked */\n onAccountClick?: () => void;\n /** Callback when \"Logout\" is clicked */\n onLogout?: () => void;\n /** Avatar image URL */\n avatarUrl?: string;\n /** Cart items to display */\n cartItems?: CartItem[];\n /** Callback when checkout button is clicked */\n onCheckout?: () => void;\n /** Callback when remove item is clicked */\n onRemoveCartItem?: (id: string) => void;\n /** Messages to display */\n messages?: Message[];\n /** Callback when \"Mark as read\" is clicked for messages */\n onMarkAsRead?: () => void;\n /** Callback when \"view more\" is clicked for messages */\n onViewMoreMessages?: () => void;\n /** Notifications to display */\n notifications?: Notification[];\n /** Callback when \"Mark as read\" is clicked for notifications */\n onMarkNotificationsAsRead?: () => void;\n /** Callback when \"view more\" is clicked for notifications */\n onViewMoreNotifications?: () => void;\n /** Navigation items for header and mobile menu */\n navItems?: NavItem[];\n /** Callback when Login button is clicked */\n onLogin?: () => void;\n /** Callback when Sign up button is clicked */\n onSignUp?: () => void;\n /** Whether to show auth buttons (Login/Sign up) */\n showAuthButtons?: boolean;\n}\n\n/**\n * Canvas Design System - Header/Navbar Component\n * \n * Desktop (lg+): Full logo with wordmark, icon cluster, avatar\n * Mobile/Tablet: Favicon only, avatar, hamburger menu\n * \n * For pages without a sidebar, set showDesktopLogo={true} to display\n * the logo in the header on desktop.\n * \n * Set variant=\"dark\" for a dark themed header that matches the sidebar.\n */\nexport function Header({ \n onMenuClick, \n showDesktopLogo = false, \n variant = \"light\",\n onAccountClick,\n onLogout,\n avatarUrl = \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n cartItems = defaultCartItems,\n onCheckout,\n onRemoveCartItem,\n messages = defaultMessages,\n onMarkAsRead,\n onViewMoreMessages,\n notifications = defaultNotifications,\n onMarkNotificationsAsRead,\n onViewMoreNotifications,\n navItems = defaultNavItems,\n onLogin,\n onSignUp,\n showAuthButtons = false,\n}: HeaderProps) {\n const { branding, isMounted } = useThemeBranding();\n const isDark = variant === \"dark\";\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n \n // Calculate cart total\n const cartTotal = cartItems.reduce((sum, item) => sum + item.price, 0);\n\n // Cart popover content component\n const CartPopoverContent = () => (\n <div className=\"w-[320px]\">\n {/* Header */}\n <div \n className=\"flex items-center justify-between pb-[var(--spacing-xl)] border-b border-[var(--canvas-neutral-border)]\"\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n Your cart\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-neutral-text)\",\n }}\n >\n {cartItems.length} {cartItems.length === 1 ? \"item\" : \"items\"}\n </span>\n </div>\n\n {/* Cart Items */}\n <div className=\"py-[var(--spacing-xl)] space-y-[var(--spacing-xl)]\">\n {cartItems.map((item) => (\n <div key={item.id} className=\"flex gap-[var(--spacing-lg)]\">\n {/* Product Image */}\n <div \n className=\"size-16 rounded-[var(--radius-md)] overflow-hidden shrink-0 bg-[var(--canvas-neutral-surface)]\"\n >\n <img \n src={item.image} \n alt={item.name}\n className=\"size-full object-cover\"\n />\n </div>\n \n {/* Product Details */}\n <div className=\"flex flex-col justify-center min-w-0\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n ${item.price}\n </span>\n <button\n onClick={() => onRemoveCartItem?.(item.id)}\n className=\"text-left mt-[var(--spacing-xs)] hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n Remove\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {/* Total */}\n <div \n className=\"flex items-center justify-between py-[var(--spacing-xl)] border-t border-[var(--canvas-neutral-border)]\"\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n Total\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n ${cartTotal}\n </span>\n </div>\n\n {/* Checkout Button */}\n <Button \n className=\"w-full\" \n size=\"default\"\n onClick={onCheckout}\n >\n Checkout\n </Button>\n </div>\n );\n\n // Messages popover content component\n const MessagesPopoverContent = () => (\n <div className=\"w-[320px]\">\n {/* Header */}\n <div \n className=\"flex items-center justify-between pb-[var(--spacing-xl)] border-b border-[var(--canvas-neutral-border)]\"\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n Messages\n </span>\n <button\n onClick={onMarkAsRead}\n className=\"hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n Mark as read\n </button>\n </div>\n\n {/* Messages List */}\n <div className=\"py-[var(--spacing-lg)]\">\n {messages.map((message, index) => (\n <div \n key={message.id} \n className={`flex gap-[var(--spacing-lg)] py-[var(--spacing-lg)] ${\n index < messages.length - 1 ? \"border-b border-[var(--canvas-neutral-border)]\" : \"\"\n }`}\n >\n {/* Sender Avatar */}\n <Avatar className=\"size-10 shrink-0\">\n <AvatarImage src={message.senderAvatar} alt={message.senderName} />\n <AvatarFallback \n className=\"bg-[var(--canvas-neutral-surface)] text-[var(--canvas-neutral-text)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n }}\n >\n {message.senderName.split(\" \").map(n => n[0]).join(\"\")}\n </AvatarFallback>\n </Avatar>\n \n {/* Message Details */}\n <div className=\"flex flex-col justify-center min-w-0\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n <span style={{ fontWeight: 600 }}>{message.senderName}</span> sent you a message\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-neutral-text)\",\n }}\n >\n {message.timestamp}\n </span>\n </div>\n </div>\n ))}\n </div>\n\n {/* View More */}\n <div \n className=\"pt-[var(--spacing-lg)] border-t border-[var(--canvas-neutral-border)] text-center\"\n >\n <button\n onClick={onViewMoreMessages}\n className=\"hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n view more\n </button>\n </div>\n </div>\n );\n\n // Notifications popover content component\n const NotificationsPopoverContent = () => (\n <div className=\"w-[320px]\">\n {/* Header */}\n <div \n className=\"flex items-center justify-between pb-[var(--spacing-xl)] border-b border-[var(--canvas-neutral-border)]\"\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n Notifications\n </span>\n <button\n onClick={onMarkNotificationsAsRead}\n className=\"hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n Mark as read\n </button>\n </div>\n\n {/* Notifications List */}\n <div className=\"py-[var(--spacing-lg)]\">\n {notifications.map((notification, index) => (\n <div \n key={notification.id} \n className={`flex gap-[var(--spacing-lg)] py-[var(--spacing-lg)] ${\n index < notifications.length - 1 ? \"border-b border-[var(--canvas-neutral-border)]\" : \"\"\n }`}\n >\n {/* User Avatar */}\n <Avatar className=\"size-10 shrink-0\">\n <AvatarImage src={notification.userAvatar} alt={notification.userName} />\n <AvatarFallback \n className=\"bg-[var(--canvas-neutral-surface)] text-[var(--canvas-neutral-text)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n }}\n >\n {notification.userName.split(\" \").map(n => n[0]).join(\"\")}\n </AvatarFallback>\n </Avatar>\n \n {/* Notification Details */}\n <div className=\"flex flex-col justify-center min-w-0\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n <span style={{ fontWeight: 600 }}>{notification.userName}</span> {notification.action}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-neutral-text)\",\n }}\n >\n {notification.timestamp}\n </span>\n </div>\n </div>\n ))}\n </div>\n\n {/* View More */}\n <div \n className=\"pt-[var(--spacing-lg)] border-t border-[var(--canvas-neutral-border)] text-center\"\n >\n <button\n onClick={onViewMoreNotifications}\n className=\"hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n view more\n </button>\n </div>\n </div>\n );\n\n // Get the icon shape renderer\n const shapeRenderer = iconShapes[branding.iconShape as keyof typeof iconShapes] || iconShapes.rounded;\n\n // Logo component used for both mobile and desktop (when showDesktopLogo is true)\n // Uses CSS variables directly - no JavaScript resolution needed\n const LogoIcon = () => {\n // Use CSS variables directly - the browser handles resolution\n const bgColor = branding.bgColor || \"var(--canvas-primary)\";\n const iconColor = branding.iconColor || \"var(--canvas-primary-foreground)\";\n const IconComponent = iconMap[branding.iconName || \"Buildings\"] || Buildings;\n \n return (\n <div className=\"relative size-8 shrink-0\">\n {shapeRenderer(bgColor)}\n <div className=\"absolute inset-0 flex items-center justify-center z-10\">\n <IconComponent weight=\"bold\" size={18} color={iconColor} />\n </div>\n </div>\n );\n };\n\n return (\n <header \n className={`h-[var(--header-height)] w-full border-b ${\n isDark \n ? \"bg-[var(--canvas-sidebar-dark-bg)] border-[var(--canvas-sidebar-dark-border)]\" \n : \"bg-white border-[var(--canvas-neutral-border)]\"\n }`}\n >\n <div className=\"flex items-center h-full px-4 lg:px-[var(--spacing-5xl)]\">\n {/* Logo - Visible on mobile, and on desktop when showDesktopLogo is true */}\n <div className={`flex items-center gap-[var(--spacing-md)] h-8 shrink-0 ${showDesktopLogo ? '' : 'lg:hidden'}`}>\n <LogoIcon />\n {/* Wordmark - only on desktop when showDesktopLogo is true */}\n {showDesktopLogo && (\n <span \n className={`hidden lg:block ${isDark ? \"text-white\" : \"text-[var(--canvas-text)]\"}`}\n style={{\n fontFamily: \"var(--typo-header-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-header-spacing)\",\n lineHeight: \"var(--typo-header-line-height)\",\n }}\n >\n {branding.wordmark || \"canvas\"}\n </span>\n )}\n </div>\n\n {/* Spacer */}\n <div className=\"flex-1\" />\n\n {/* Navigation Links - Desktop Only */}\n <nav className=\"hidden lg:flex items-center gap-[var(--spacing-2xl)] h-full\">\n {navItems.map((item) => (\n <button\n key={item.id}\n onClick={() => {\n item.onClick?.();\n if (item.href) {\n window.location.href = item.href;\n }\n }}\n className={`cursor-pointer transition-colors ${\n isDark \n ? \"text-white/60 hover:text-white\" \n : \"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n }`}\n style={{\n fontFamily: \"var(--typo-header-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-header-size)\",\n fontWeight: \"var(--typo-header-weight)\",\n letterSpacing: \"var(--typo-header-spacing)\",\n lineHeight: \"var(--typo-header-line-height)\",\n }}\n >\n {item.label}\n </button>\n ))}\n </nav>\n\n {/* Icons - Always Visible */}\n <div className=\"flex items-center gap-[var(--spacing-2xl)] ml-[var(--spacing-2xl)]\">\n <button \n className={`transition-colors ${\n isDark \n ? \"text-white/60 hover:text-white\" \n : \"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n }`}\n aria-label=\"Search\"\n >\n <Search className=\"size-4\" />\n </button>\n \n <Popover>\n <PopoverTrigger asChild>\n <button \n className={`transition-colors ${\n isDark \n ? \"text-white/60 hover:text-white\" \n : \"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n }`}\n aria-label=\"Notifications\"\n >\n <Bell className=\"size-4\" />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" sideOffset={16} className=\"w-auto p-[var(--spacing-xl)]\">\n <NotificationsPopoverContent />\n </PopoverContent>\n </Popover>\n \n <Popover>\n <PopoverTrigger asChild>\n <button \n className={`transition-colors ${\n isDark \n ? \"text-white/60 hover:text-white\" \n : \"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n }`}\n aria-label=\"Messages\"\n >\n <MessageSquare className=\"size-4\" />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" sideOffset={16} className=\"w-auto p-[var(--spacing-xl)]\">\n <MessagesPopoverContent />\n </PopoverContent>\n </Popover>\n \n <Popover>\n <PopoverTrigger asChild>\n <button \n className={`transition-colors ${\n isDark \n ? \"text-white/60 hover:text-white\" \n : \"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n }`}\n aria-label=\"Cart\"\n >\n <ShoppingCart className=\"size-4\" />\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" sideOffset={16} className=\"w-auto p-[var(--spacing-xl)]\">\n <CartPopoverContent />\n </PopoverContent>\n </Popover>\n \n {/* Auth Buttons - Desktop Only */}\n {showAuthButtons && (\n <div className=\"hidden lg:flex items-center gap-[var(--spacing-lg)]\">\n <Button \n variant=\"outline\" \n size=\"default\"\n onClick={onLogin}\n >\n Log in\n </Button>\n <Button \n variant=\"default\" \n size=\"default\"\n onClick={onSignUp}\n >\n Sign up\n </Button>\n </div>\n )}\n \n {/* Avatar with Dropdown */}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button className=\"rounded-full focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2\">\n <Avatar className={`size-10 border cursor-pointer ${\n isDark \n ? \"border-[var(--canvas-sidebar-dark-border)]\" \n : \"border-[var(--canvas-neutral-border)]\"\n }`}>\n <AvatarImage src={avatarUrl} alt=\"User avatar\" />\n <AvatarFallback \n className={\n isDark \n ? \"bg-white/10 text-white/60\" \n : \"bg-[var(--canvas-neutral-surface)] text-[var(--canvas-neutral-text)]\"\n }\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n }}\n >\n JC\n </AvatarFallback>\n </Avatar>\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" sideOffset={8}>\n <DropdownMenuItem onClick={onAccountClick}>\n <User className=\"size-4 mr-2\" />\n My Account\n </DropdownMenuItem>\n <DropdownMenuItem onClick={onLogout}>\n <LogOut className=\"size-4 mr-2\" />\n Logout\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n\n {/* Mobile Menu Button */}\n <Button \n variant=\"ghost\" \n size=\"icon\" \n onClick={() => {\n setIsMobileMenuOpen(true);\n onMenuClick?.();\n }}\n aria-label=\"Open menu\"\n className={`lg:hidden -ml-[var(--spacing-md)] ${isDark ? \"text-white/60 hover:text-white hover:bg-white/10\" : \"text-[var(--canvas-neutral-text)]\"}`}\n >\n <Menu className=\"size-4\" />\n </Button>\n </div>\n </div>\n\n {/* Mobile Menu Overlay */}\n {isMobileMenuOpen && (\n <div className=\"fixed inset-0 z-50 lg:hidden\">\n {/* Backdrop */}\n <div \n className=\"absolute inset-0 bg-black/50\"\n onClick={() => setIsMobileMenuOpen(false)}\n />\n \n {/* Menu Panel */}\n <div className=\"absolute right-0 top-0 h-full w-full max-w-sm bg-white shadow-xl\">\n {/* Close Button */}\n <div className=\"flex justify-end p-4\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setIsMobileMenuOpen(false)}\n aria-label=\"Close menu\"\n >\n <X className=\"size-5\" />\n </Button>\n </div>\n \n {/* Navigation Items */}\n <nav className=\"px-6 py-4\">\n <div className=\"space-y-2\">\n {navItems.map((item) => {\n const Icon = item.icon;\n return (\n <button\n key={item.id}\n onClick={() => {\n item.onClick?.();\n if (item.href) {\n window.location.href = item.href;\n }\n setIsMobileMenuOpen(false);\n }}\n className=\"flex items-center gap-[var(--spacing-lg)] w-full py-[var(--spacing-lg)] text-left hover:bg-[var(--canvas-neutral-surface)] rounded-[var(--radius-md)] transition-colors\"\n >\n {Icon && (\n <div \n className=\"size-12 rounded-[var(--radius-md)] flex items-center justify-center shrink-0\"\n style={{\n backgroundColor: \"color-mix(in srgb, var(--canvas-primary) 10%, transparent)\",\n }}\n >\n <Icon \n className=\"size-5\"\n style={{ color: \"var(--canvas-primary)\" }}\n />\n </div>\n )}\n <span\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-m-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-m-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.label}\n </span>\n </button>\n );\n })}\n </div>\n </nav>\n \n {/* Auth Buttons */}\n {showAuthButtons && (\n <div className=\"absolute bottom-0 left-0 right-0 p-6 space-y-3 border-t border-[var(--canvas-neutral-border)]\">\n <Button \n variant=\"outline\" \n className=\"w-full\"\n size=\"lg\"\n onClick={() => {\n onLogin?.();\n setIsMobileMenuOpen(false);\n }}\n >\n Log in\n </Button>\n <Button \n variant=\"default\" \n className=\"w-full\"\n size=\"lg\"\n onClick={() => {\n onSignUp?.();\n setIsMobileMenuOpen(false);\n }}\n >\n Sign up\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </header>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { LucideIcon, ChevronDown } from \"lucide-react\";\n\nexport interface NavItem {\n id: string;\n label: string;\n icon: LucideIcon;\n href?: string;\n isActive?: boolean;\n /** Nested subtabs - when present, the item becomes expandable */\n children?: Omit<NavItem, \"children\" | \"icon\">[];\n}\n\nexport interface NavSection {\n id: string;\n title: string;\n items: NavItem[];\n}\n\ninterface SidebarNavProps {\n sections: NavSection[];\n variant?: \"dark\" | \"light\";\n onItemClick?: (item: NavItem | Omit<NavItem, \"children\" | \"icon\">) => void;\n}\n\n/**\n * Canvas Design System - Sidebar Navigation\n * \n * Renders navigation sections with collapsible groups and nav items.\n * Supports dark (desktop) and light (mobile sheet) variants.\n * Items with children become expandable with nested subtabs.\n */\nexport function SidebarNav({ sections, variant = \"dark\", onItemClick }: SidebarNavProps) {\n const isDark = variant === \"dark\";\n \n // Track which items are expanded (by item id)\n const [expandedItems, setExpandedItems] = useState<Set<string>>(() => {\n // Auto-expand items that have active children\n const initialExpanded = new Set<string>();\n sections.forEach(section => {\n section.items.forEach(item => {\n if (item.children?.some(child => child.isActive)) {\n initialExpanded.add(item.id);\n }\n });\n });\n return initialExpanded;\n });\n\n const toggleExpanded = (itemId: string) => {\n setExpandedItems(prev => {\n const next = new Set(prev);\n if (next.has(itemId)) {\n next.delete(itemId);\n } else {\n next.add(itemId);\n }\n return next;\n });\n };\n \n return (\n <nav className=\"flex flex-col gap-[var(--spacing-xs)] w-full\">\n {sections.map((section) => (\n <div key={section.id} className=\"flex flex-col w-full\">\n {/* Section Title */}\n <div className=\"flex items-center pt-11 pb-[var(--spacing-md)] pl-[var(--spacing-2xl)] pr-0\">\n <span\n className={cn(\n \"uppercase\",\n isDark \n ? \"text-[var(--canvas-sidebar-dark-text)]\" \n : \"text-[var(--canvas-neutral-placeholder)]\"\n )}\n style={{\n fontFamily: \"var(--typo-sidebar-label-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-sidebar-label-size)\",\n fontWeight: \"var(--typo-sidebar-label-weight)\",\n letterSpacing: \"var(--typo-sidebar-label-spacing)\",\n lineHeight: \"var(--typo-sidebar-label-line-height)\",\n }}\n >\n {section.title}\n </span>\n </div>\n \n {/* Nav Items */}\n <div className=\"flex flex-col gap-0\">\n {section.items.map((item) => {\n const Icon = item.icon;\n const isActive = item.isActive;\n const hasChildren = item.children && item.children.length > 0;\n const isExpanded = expandedItems.has(item.id);\n \n return (\n <div key={item.id} className=\"flex flex-col\">\n {/* Parent Nav Item */}\n <button\n onClick={() => {\n if (hasChildren) {\n toggleExpanded(item.id);\n } else {\n onItemClick?.(item);\n }\n }}\n className={cn(\n \"flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors\",\n // Dark variant (desktop sidebar)\n isDark && isActive && !hasChildren && \"bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n isDark && hasChildren && isExpanded && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n // Light variant (mobile sheet)\n !isDark && isActive && !hasChildren && \"bg-[var(--canvas-sidebar-light-active-bg)] text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)] hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\",\n !isDark && hasChildren && isExpanded && \"text-[var(--canvas-sidebar-light-active-text)]\"\n )}\n >\n <Icon \n className={cn(\n \"size-4 shrink-0\",\n isDark && isActive && !hasChildren && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n isDark && hasChildren && isExpanded && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n !isDark && isActive && !hasChildren && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\",\n !isDark && hasChildren && isExpanded && \"text-[var(--canvas-sidebar-light-active-text)]\"\n )} \n />\n <span \n className=\"flex-1 truncate\"\n style={{\n fontFamily: \"var(--typo-sidebar-tab-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-sidebar-tab-size)\",\n fontWeight: \"var(--typo-sidebar-tab-weight)\",\n letterSpacing: \"var(--typo-sidebar-tab-spacing)\",\n lineHeight: \"var(--typo-sidebar-tab-line-height)\",\n }}\n >\n {item.label}\n </span>\n {hasChildren && (\n <ChevronDown \n className={cn(\n \"size-4 shrink-0 transition-transform duration-200\",\n isExpanded && \"rotate-180\",\n isDark ? \"text-[var(--canvas-sidebar-dark-text)]\" : \"text-[var(--canvas-neutral-text)]\"\n )}\n />\n )}\n </button>\n\n {/* Nested Subtabs */}\n {hasChildren && isExpanded && (\n <div className=\"flex flex-col mt-1 mb-1\">\n {item.children!.map((child) => {\n const isChildActive = child.isActive;\n \n return (\n <button\n key={child.id}\n onClick={() => onItemClick?.(child)}\n className={cn(\n \"flex items-center h-9 pl-12 pr-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors\",\n // Dark variant\n isDark && isChildActive && \"bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isChildActive && \"text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n // Light variant\n !isDark && isChildActive && \"bg-[var(--canvas-sidebar-light-active-bg)] text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isChildActive && \"text-[var(--canvas-sidebar-light-text)] hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\"\n )}\n >\n <span \n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-sidebar-subtab-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-sidebar-subtab-size)\",\n fontWeight: \"var(--typo-sidebar-subtab-weight)\",\n letterSpacing: \"var(--typo-sidebar-subtab-spacing)\",\n lineHeight: \"var(--typo-sidebar-subtab-line-height)\",\n }}\n >\n {child.label}\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ))}\n </nav>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { SidebarNav, NavSection, NavItem } from \"./sidebar-nav\";\nimport { useThemeImages, useThemeBranding } from \"../../context/theme-context\";\n\n// Phosphor Icons (Bold variant) - same curated set as variables-modal\nimport {\n Diamond,\n Hexagon,\n Star,\n Lightning,\n Sparkle,\n Infinity,\n Code,\n Terminal,\n Cpu,\n Database,\n Globe,\n Cloud,\n WifiHigh,\n Briefcase,\n Buildings,\n Storefront,\n Handshake,\n ChartLine,\n Palette as PaletteIcon,\n PencilSimple,\n Camera,\n MusicNote,\n Lightbulb,\n Leaf,\n Tree,\n Sun,\n Moon,\n Fire,\n Drop,\n ChatCircle,\n Envelope,\n Phone,\n Megaphone,\n Heart,\n Shield,\n Trophy,\n Rocket,\n Target,\n Flag,\n type Icon as PhosphorIcon,\n} from \"@phosphor-icons/react\";\n\n// ============================================\n// Icon Shape Presets for Logo Creator\n// ============================================\n\ntype IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\ninterface IconShape {\n id: IconShapeId;\n renderBackground: (bgColor: string) => React.ReactNode;\n}\n\nconst iconShapes: IconShape[] = [\n {\n id: \"rounded\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" rx=\"10\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"circle\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <circle cx=\"16\" cy=\"16\" r=\"16\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"square\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n];\n\n// Map icon names to components\nconst iconMap: Record<string, PhosphorIcon> = {\n Diamond,\n Hexagon,\n Star,\n Lightning,\n Sparkle,\n Infinity,\n Code,\n Terminal,\n Cpu,\n Database,\n Globe,\n Cloud,\n WifiHigh,\n Briefcase,\n Buildings,\n Storefront,\n Handshake,\n ChartLine,\n Palette: PaletteIcon,\n PencilSimple,\n Camera,\n MusicNote,\n Lightbulb,\n Leaf,\n Tree,\n Sun,\n Moon,\n Fire,\n Drop,\n ChatCircle,\n Envelope,\n Phone,\n Megaphone,\n Heart,\n Shield,\n Trophy,\n Rocket,\n Target,\n Flag,\n};\n\n// Helper to resolve CSS variable references to actual hex colors\nfunction resolveBrandingColor(value: string): string {\n if (!value) return \"#ffffff\";\n if (value.startsWith(\"var(\")) {\n const varName = value.replace(\"var(\", \"\").replace(\")\", \"\");\n if (typeof window !== \"undefined\") {\n const computed = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n return computed || \"#ffffff\";\n }\n return \"#ffffff\";\n }\n return value;\n}\n\ninterface SidebarProps {\n /** Navigation sections to display */\n sections: NavSection[];\n /** Visual variant - dark for desktop, light for mobile sheet */\n variant?: \"dark\" | \"light\";\n /** Callback when a nav item or subtab is clicked */\n onItemClick?: (item: NavItem | Omit<NavItem, \"children\" | \"icon\">) => void;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Sidebar Component\n * \n * Desktop: Fixed dark sidebar (320px width) on the left\n * Mobile: Light theme sidebar rendered inside a Sheet\n */\nexport function Sidebar({ \n sections, \n variant = \"dark\", \n onItemClick,\n className \n}: SidebarProps) {\n const isDark = variant === \"dark\";\n const themeImages = useThemeImages();\n const { branding, isMounted } = useThemeBranding();\n \n // Get the appropriate logo based on variant\n const logoUrl = isDark ? themeImages.logoDark : themeImages.logoLight;\n \n // Get the icon shape renderer\n const iconShape = iconShapes.find(s => s.id === branding.iconShape) || iconShapes[0];\n \n return (\n <aside\n className={cn(\n \"flex flex-col h-full w-[var(--sidebar-width)]\",\n isDark && \"bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]\",\n !isDark && \"bg-white border-r border-[var(--canvas-border)]\",\n className\n )}\n >\n {/* Logo Section */}\n <div className={cn(\n \"flex items-center h-8 shrink-0\",\n \"pt-11 pb-0 pr-[var(--spacing-2xl)] pl-9\"\n )}>\n {logoUrl ? (\n // Custom logo replaces entire lockup (icon + wordmark)\n <img \n src={logoUrl} \n alt=\"Logo\" \n className={`h-8 w-auto object-contain ${isMounted ? 'opacity-100' : 'opacity-0'}`}\n />\n ) : (\n // Logo creator: dynamic icon shape + Phosphor icon + wordmark\n // Uses CSS variables directly - no JavaScript resolution needed\n <div className=\"flex items-center\">\n <div className=\"relative size-8 shrink-0\">\n {iconShape.renderBackground(branding.bgColor || \"var(--canvas-primary)\")}\n <div className=\"absolute inset-0 flex items-center justify-center z-10\">\n {(() => {\n const IconComponent = iconMap[branding.iconName || \"Buildings\"] || Buildings;\n return <IconComponent weight=\"bold\" size={18} color={branding.iconColor || \"var(--canvas-primary-foreground)\"} />;\n })()}\n </div>\n </div>\n <span className={cn(\n \"text-xl font-semibold ml-[var(--spacing-md)]\",\n isDark ? \"text-white\" : \"text-[var(--canvas-text)]\"\n )}>\n {branding.wordmark || \"canvas\"}\n </span>\n </div>\n )}\n </div>\n\n {/* Navigation */}\n <ScrollArea className=\"flex-1 px-[var(--spacing-2xl)] pb-[var(--spacing-5xl)]\">\n <SidebarNav \n sections={sections} \n variant={variant} \n onItemClick={onItemClick}\n />\n </ScrollArea>\n </aside>\n );\n}\n\n// Re-export types for convenience\nexport type { NavSection, NavItem } from \"./sidebar-nav\";\n\n","/**\n * CSS Variable Sync Utility\n * \n * Provides functions to set CSS variables and broadcast them to iframes\n * for live preview synchronization.\n */\n\n/**\n * Sets a CSS variable on the document and broadcasts it to all iframes\n */\nexport function setCSSVariable(name: string, value: string) {\n // Set on the current document\n document.documentElement.style.setProperty(name, value);\n \n // Broadcast to all iframes\n broadcastCSSVariables({ [name]: value });\n}\n\n/**\n * Sets multiple CSS variables and broadcasts them to all iframes\n */\nexport function setCSSVariables(variables: Record<string, string>) {\n // Set on the current document\n Object.entries(variables).forEach(([name, value]) => {\n document.documentElement.style.setProperty(name, value);\n });\n \n // Broadcast to all iframes\n broadcastCSSVariables(variables);\n}\n\n/**\n * Broadcasts CSS variable changes to all iframes via postMessage\n */\nexport function broadcastCSSVariables(variables: Record<string, string>) {\n // Get all iframes in the document\n const iframes = document.querySelectorAll('iframe');\n \n iframes.forEach((iframe) => {\n try {\n iframe.contentWindow?.postMessage(\n { type: 'css-vars-update', variables },\n '*'\n );\n } catch {\n // Ignore cross-origin errors\n }\n });\n}\n\n/**\n * Hook for pages to listen for CSS variable updates from parent window\n * Call this in page layouts that might be rendered in iframes\n */\nexport function setupCSSVariableListener() {\n if (typeof window === 'undefined') return () => {};\n \n const handler = (event: MessageEvent) => {\n if (event.data?.type === 'css-vars-update' && event.data.variables) {\n Object.entries(event.data.variables).forEach(([name, value]) => {\n document.documentElement.style.setProperty(name, value as string);\n });\n }\n };\n \n window.addEventListener('message', handler);\n \n // Return cleanup function\n return () => window.removeEventListener('message', handler);\n}\n\n\n\n\n\n\n\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { setupCSSVariableListener } from \"../lib/css-variable-sync\";\n\n/**\n * Hook that listens for CSS variable updates from parent window.\n * Use this in page layouts that might be rendered in iframes.\n * \n * @example\n * ```tsx\n * export function MyPageLayout() {\n * useCSSVariableSync();\n * return <div>...</div>;\n * }\n * ```\n */\nexport function useCSSVariableSync() {\n useEffect(() => {\n const cleanup = setupCSSVariableListener();\n return cleanup;\n }, []);\n}\n\n\n\n\n\n\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { Sidebar, NavSection, NavItem } from \"./sidebar\";\nimport { \n Sheet, \n SheetContent,\n SheetTitle,\n} from \"../ui/sheet\";\nimport { cn } from \"../../lib/utils\";\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\n\ninterface DashboardShellProps {\n /** Navigation sections for the sidebar */\n navigation: NavSection[];\n /** Optional page header content (e.g., breadcrumbs, page title) */\n pageHeader?: React.ReactNode;\n /** Main content - the modular blocks */\n children: React.ReactNode;\n /** Callback when a nav item or subtab is clicked */\n onNavItemClick?: (item: NavItem | Omit<NavItem, \"children\" | \"icon\">) => void;\n /** Callback when app menu (hamburger) is clicked - for future app-level menu */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Dashboard Shell\n * \n * A composable page layout that provides:\n * - Fixed header (80px)\n * - Fixed dark sidebar on desktop (320px, hidden on mobile)\n * - Floating sidebar toggle button on mobile (left edge)\n * - Mobile sheet navigation for dashboard sidebar\n * - Hamburger menu in header for app-level menu (future)\n * - Main content area with pageHeader slot and children slot for blocks\n * \n * @example\n * ```tsx\n * <DashboardShell \n * navigation={navSections}\n * pageHeader={<Breadcrumbs />}\n * >\n * <StatsBlock />\n * <ChartBlock />\n * <TableBlock />\n * </DashboardShell>\n * ```\n */\nexport function DashboardShell({\n navigation,\n pageHeader,\n children,\n onNavItemClick,\n onAppMenuClick,\n contentClassName,\n}: DashboardShellProps) {\n useCSSVariableSync();\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const handleNavItemClick = (item: NavItem | Omit<NavItem, \"children\" | \"icon\">) => {\n onNavItemClick?.(item);\n // Close sidebar when nav item is clicked\n setSidebarOpen(false);\n };\n\n const handleAppMenuClick = () => {\n // Placeholder for future app-level menu\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top, offset on desktop to not overlap sidebar */}\n <div className=\"fixed top-0 left-0 right-0 lg:left-[var(--sidebar-width)] z-40\">\n <Header onMenuClick={handleAppMenuClick} />\n </div>\n\n {/* Desktop Sidebar - Fixed on left, visible lg+ */}\n <div className=\"hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--sidebar-width)]\">\n <Sidebar \n sections={navigation} \n variant=\"dark\" \n onItemClick={handleNavItemClick}\n />\n </div>\n\n {/* Mobile Sidebar Toggle Button - Floating on left edge */}\n <button\n onClick={() => setSidebarOpen(true)}\n className={cn(\n \"lg:hidden fixed left-0 z-30\",\n \"top-[calc(var(--header-height)+4px)]\",\n \"flex items-center justify-center\",\n \"size-11\",\n \"bg-white\",\n \"border border-l-0 border-[var(--canvas-neutral-border)]\",\n \"rounded-r-[var(--radius-xs)]\",\n \"shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]\",\n \"transition-opacity hover:opacity-80\"\n )}\n aria-label=\"Open sidebar\"\n >\n <ChevronRight className=\"size-6 text-[var(--canvas-primary)]\" />\n </button>\n\n {/* Mobile Sidebar Sheet */}\n <Sheet open={sidebarOpen} onOpenChange={setSidebarOpen}>\n <SheetContent side=\"left\" className=\"p-0 w-[var(--sidebar-width)]\">\n <VisuallyHidden.Root>\n <SheetTitle>Dashboard Navigation</SheetTitle>\n </VisuallyHidden.Root>\n <Sidebar \n sections={navigation} \n variant=\"dark\" \n onItemClick={handleNavItemClick}\n />\n </SheetContent>\n </Sheet>\n\n {/* Main Content Area */}\n <main\n className={cn(\n \"pt-[var(--header-height)]\",\n \"lg:pl-[var(--sidebar-width)]\",\n \"min-h-screen\"\n )}\n >\n <div \n className={cn(\n \"flex flex-col gap-[var(--spacing-6xl)]\",\n \"px-[var(--spacing-xl)] lg:px-[var(--spacing-5xl)]\",\n \"pt-10 pb-[var(--spacing-5xl)]\",\n contentClassName\n )}\n >\n {/* Page Header Slot */}\n {pageHeader && (\n <section className=\"pt-0\">\n {pageHeader}\n </section>\n )}\n\n {/* Main Content Slot - Blocks go here */}\n <section className=\"flex flex-col gap-[var(--spacing-6xl)]\">\n {children}\n </section>\n </div>\n </main>\n </div>\n );\n}\n\n// Re-export types for convenience\nexport type { NavSection, NavItem } from \"./sidebar\";\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { LucideIcon, Home, Users, Calendar, MessageSquare, PieChart, FileText, ShoppingBag } from \"lucide-react\";\nimport { useThemeImages, useThemeBranding } from \"../../context/theme-context\";\n\n// Phosphor Icons for Logo\nimport { Buildings, type Icon as PhosphorIcon } from \"@phosphor-icons/react\";\nimport {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Storefront, Handshake, ChartLine,\n Palette as PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb, Leaf, Tree,\n Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone, Heart, Shield,\n Trophy, Rocket, Target, Flag,\n} from \"@phosphor-icons/react\";\n\n// ============================================\n// Icon Shape Presets for Logo Creator\n// ============================================\n\ntype IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\ninterface IconShape {\n id: IconShapeId;\n renderBackground: (bgColor: string) => React.ReactNode;\n}\n\nconst iconShapes: IconShape[] = [\n {\n id: \"rounded\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" rx=\"10\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"circle\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <circle cx=\"16\" cy=\"16\" r=\"16\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"square\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n];\n\n// Map icon names to components\nconst iconMap: Record<string, PhosphorIcon> = {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Buildings, Storefront, Handshake,\n ChartLine, Palette: PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb,\n Leaf, Tree, Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone,\n Heart, Shield, Trophy, Rocket, Target, Flag,\n};\n\n// Helper to resolve CSS variable references to actual hex colors\nfunction resolveBrandingColor(value: string): string {\n if (!value) return \"#ffffff\";\n if (value.startsWith(\"var(\")) {\n const varName = value.replace(\"var(\", \"\").replace(\")\", \"\");\n if (typeof window !== \"undefined\") {\n const computed = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n return computed || \"#ffffff\";\n }\n return \"#ffffff\";\n }\n return value;\n}\n\n// ============================================\n// Icon Nav Item\n// ============================================\n\nexport interface IconNavItemConfig {\n id: string;\n label: string;\n icon: LucideIcon;\n href?: string;\n isActive?: boolean;\n hasNotification?: boolean;\n}\n\ninterface IconNavItemProps {\n item: IconNavItemConfig;\n variant?: \"dark\" | \"light\";\n onClick?: () => void;\n}\n\nfunction IconNavItem({ item, variant = \"dark\", onClick }: IconNavItemProps) {\n const Icon = item.icon;\n const isDark = variant === \"dark\";\n const isActive = item.isActive;\n\n return (\n <button\n onClick={onClick}\n className={cn(\n \"relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors\",\n // Dark variant\n isDark && isActive && \"bg-[var(--canvas-sidebar-dark-active-bg)]\",\n isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n // Light variant\n !isDark && isActive && \"bg-[var(--canvas-sidebar-light-active-bg)]\",\n !isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\"\n )}\n >\n <Icon\n className={cn(\n \"size-4\",\n isDark && isActive && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n !isDark && isActive && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\"\n )}\n />\n <span\n className={cn(\n isDark && isActive && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n !isDark && isActive && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\"\n )}\n style={{\n fontFamily: \"var(--typo-sidebar-tab-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xs-size)\",\n fontWeight: \"var(--typo-sidebar-tab-weight)\",\n letterSpacing: \"var(--typo-sidebar-tab-spacing)\",\n lineHeight: \"var(--typo-sidebar-tab-line-height)\",\n }}\n >\n {item.label}\n </span>\n\n {/* Notification Badge */}\n {item.hasNotification && (\n <div className=\"absolute top-2 right-4 size-1.5 rounded-full bg-[var(--canvas-destructive)]\" />\n )}\n </button>\n );\n}\n\n// ============================================\n// Default Navigation Items\n// ============================================\n\nexport const defaultIconNavItems: IconNavItemConfig[] = [\n { id: \"home\", label: \"Home\", icon: Home, isActive: true },\n { id: \"teams\", label: \"Teams\", icon: Users },\n { id: \"calendar\", label: \"Calendar\", icon: Calendar },\n { id: \"messages\", label: \"Messages\", icon: MessageSquare, hasNotification: true },\n { id: \"reports\", label: \"Reports\", icon: PieChart },\n { id: \"docs\", label: \"Docs\", icon: FileText },\n { id: \"orders\", label: \"Orders\", icon: ShoppingBag },\n];\n\n// ============================================\n// Icon Sidebar\n// ============================================\n\ninterface IconSidebarProps {\n /** Navigation items to display */\n items?: IconNavItemConfig[];\n /** Visual variant - dark for desktop, light for mobile sheet */\n variant?: \"dark\" | \"light\";\n /** Callback when a nav item is clicked */\n onItemClick?: (item: IconNavItemConfig) => void;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Icon Sidebar Component\n * \n * A narrow sidebar (96px) with vertically stacked icon navigation.\n * Desktop: Fixed dark sidebar on the left\n * Mobile: Light theme sidebar rendered inside a Sheet\n */\nexport function IconSidebar({\n items = defaultIconNavItems,\n variant = \"dark\",\n onItemClick,\n className\n}: IconSidebarProps) {\n const isDark = variant === \"dark\";\n const themeImages = useThemeImages();\n const { branding, isMounted } = useThemeBranding();\n\n // Get the appropriate logo based on variant\n const logoUrl = isDark ? themeImages.logoDark : themeImages.logoLight;\n\n // Get the icon shape renderer\n const iconShape = iconShapes.find(s => s.id === branding.iconShape) || iconShapes[0];\n\n return (\n <aside\n className={cn(\n \"flex flex-col items-center h-full w-[var(--icon-sidebar-width)]\",\n isDark && \"bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]\",\n !isDark && \"bg-white border-r border-[var(--canvas-border)]\",\n className\n )}\n >\n {/* Logo Section - Just the icon, no wordmark */}\n {/* Hidden until mounted to prevent hydration flash */}\n <div className={`flex items-center justify-center shrink-0 py-5 ${isMounted ? 'opacity-100' : 'opacity-0'}`}>\n {logoUrl ? (\n // Custom logo\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"size-8 object-contain\"\n />\n ) : (\n // Logo creator: dynamic icon shape + Phosphor icon (no wordmark for narrow sidebar)\n // Uses CSS variables directly - no JavaScript resolution needed\n <div className=\"relative size-8 shrink-0\">\n {iconShape.renderBackground(branding.bgColor || \"var(--canvas-primary)\")}\n <div className=\"absolute inset-0 flex items-center justify-center z-10\">\n {(() => {\n const IconComponent = iconMap[branding.iconName || \"Buildings\"] || Buildings;\n return <IconComponent weight=\"bold\" size={18} color={branding.iconColor || \"var(--canvas-primary-foreground)\"} />;\n })()}\n </div>\n </div>\n )}\n </div>\n\n {/* Navigation Items */}\n <nav className=\"flex flex-col items-center gap-1 flex-1 px-4 pb-5\">\n {items.map((item) => (\n <IconNavItem\n key={item.id}\n item={item}\n variant={variant}\n onClick={() => onItemClick?.(item)}\n />\n ))}\n </nav>\n </aside>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { IconSidebar, IconNavItemConfig, defaultIconNavItems } from \"./icon-sidebar\";\nimport { \n Sheet, \n SheetContent,\n SheetTitle,\n} from \"../ui/sheet\";\nimport { cn } from \"../../lib/utils\";\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\n\ninterface IconSidebarShellProps {\n /** Navigation items for the icon sidebar */\n navigation?: IconNavItemConfig[];\n /** Optional page header content (e.g., breadcrumbs, page title) */\n pageHeader?: React.ReactNode;\n /** Main content - the modular blocks */\n children: React.ReactNode;\n /** Callback when a nav item is clicked */\n onNavItemClick?: (item: IconNavItemConfig) => void;\n /** Callback when app menu (hamburger) is clicked - for future app-level menu */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Icon Sidebar Shell\n * \n * A composable page layout with a narrow icon sidebar that provides:\n * - Fixed header (80px)\n * - Fixed narrow dark icon sidebar on desktop (96px, hidden on mobile)\n * - Floating sidebar toggle button on mobile (left edge)\n * - Mobile sheet navigation for icon sidebar\n * - Hamburger menu in header for app-level menu (future)\n * - Main content area with pageHeader slot and children slot for blocks\n * \n * Uses the same styling and spacing as DashboardShell for non-sidebar content.\n * \n * @example\n * ```tsx\n * <IconSidebarShell navigation={iconNavItems}>\n * <ContentDropzone label=\"Main content area\" />\n * </IconSidebarShell>\n * ```\n */\nexport function IconSidebarShell({\n navigation = defaultIconNavItems,\n pageHeader,\n children,\n onNavItemClick,\n onAppMenuClick,\n contentClassName,\n}: IconSidebarShellProps) {\n useCSSVariableSync();\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const handleNavItemClick = (item: IconNavItemConfig) => {\n onNavItemClick?.(item);\n // Close sidebar when nav item is clicked\n setSidebarOpen(false);\n };\n\n const handleAppMenuClick = () => {\n // Placeholder for future app-level menu\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top, offset on desktop to not overlap icon sidebar */}\n <div className=\"fixed top-0 left-0 right-0 lg:left-[var(--icon-sidebar-width)] z-40\">\n <Header onMenuClick={handleAppMenuClick} />\n </div>\n\n {/* Desktop Icon Sidebar - Fixed on left, visible lg+ */}\n <div className=\"hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--icon-sidebar-width)]\">\n <IconSidebar \n items={navigation} \n variant=\"dark\" \n onItemClick={handleNavItemClick}\n />\n </div>\n\n {/* Mobile Sidebar Toggle Button - Floating on left edge */}\n <button\n onClick={() => setSidebarOpen(true)}\n className={cn(\n \"lg:hidden fixed left-0 z-30\",\n \"top-[calc(var(--header-height)+4px)]\",\n \"flex items-center justify-center\",\n \"size-11\",\n \"bg-white\",\n \"border border-l-0 border-[var(--canvas-neutral-border)]\",\n \"rounded-r-[var(--radius-xs)]\",\n \"shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]\",\n \"transition-opacity hover:opacity-80\"\n )}\n aria-label=\"Open sidebar\"\n >\n <ChevronRight className=\"size-6 text-[var(--canvas-primary)]\" />\n </button>\n\n {/* Mobile Icon Sidebar Sheet */}\n <Sheet open={sidebarOpen} onOpenChange={setSidebarOpen}>\n <SheetContent side=\"left\" className=\"p-0 w-[var(--icon-sidebar-width)]\">\n <VisuallyHidden.Root>\n <SheetTitle>Navigation</SheetTitle>\n </VisuallyHidden.Root>\n <IconSidebar \n items={navigation} \n variant=\"dark\" \n onItemClick={handleNavItemClick}\n />\n </SheetContent>\n </Sheet>\n\n {/* Main Content Area - Same styling as DashboardShell */}\n <main\n className={cn(\n \"pt-[var(--header-height)]\",\n \"lg:pl-[var(--icon-sidebar-width)]\",\n \"min-h-screen\"\n )}\n >\n <div \n className={cn(\n \"flex flex-col gap-[var(--spacing-6xl)]\",\n \"px-[var(--spacing-xl)] lg:px-[var(--spacing-5xl)]\",\n \"pt-10 pb-[var(--spacing-5xl)]\",\n contentClassName\n )}\n >\n {/* Page Header Slot */}\n {pageHeader && (\n <section className=\"pt-0\">\n {pageHeader}\n </section>\n )}\n\n {/* Main Content Slot - Blocks go here */}\n <section className=\"flex flex-col gap-[var(--spacing-6xl)]\">\n {children}\n </section>\n </div>\n </main>\n </div>\n );\n}\n\n// Re-export types for convenience\nexport type { IconNavItemConfig } from \"./icon-sidebar\";\n\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { LucideIcon, Home, Users, Calendar, MessageSquare, PieChart, FileText, ShoppingBag } from \"lucide-react\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { useThemeImages, useThemeBranding } from \"../../context/theme-context\";\n\n// Phosphor Icons for Logo\nimport { Buildings, type Icon as PhosphorIcon } from \"@phosphor-icons/react\";\nimport {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Storefront, Handshake, ChartLine,\n Palette as PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb, Leaf, Tree,\n Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone, Heart, Shield,\n Trophy, Rocket, Target, Flag,\n} from \"@phosphor-icons/react\";\n\n// ============================================\n// Icon Shape Presets for Logo Creator\n// ============================================\n\ntype IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\ninterface IconShape {\n id: IconShapeId;\n renderBackground: (bgColor: string) => React.ReactNode;\n}\n\nconst iconShapes: IconShape[] = [\n {\n id: \"rounded\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" rx=\"10\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"circle\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <circle cx=\"16\" cy=\"16\" r=\"16\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"square\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n];\n\n// Map icon names to components\nconst iconMap: Record<string, PhosphorIcon> = {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu,\n Database, Globe, Cloud, WifiHigh, Briefcase, Buildings, Storefront, Handshake,\n ChartLine, Palette: PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb,\n Leaf, Tree, Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone,\n Heart, Shield, Trophy, Rocket, Target, Flag,\n};\n\n// Helper to resolve CSS variable references to actual hex colors\nfunction resolveBrandingColor(value: string): string {\n if (!value) return \"#ffffff\";\n if (value.startsWith(\"var(\")) {\n const varName = value.replace(\"var(\", \"\").replace(\")\", \"\");\n if (typeof window !== \"undefined\") {\n const computed = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n return computed || \"#ffffff\";\n }\n return \"#ffffff\";\n }\n return value;\n}\n\n// ============================================\n// Types\n// ============================================\n\nexport interface NavTab {\n id: string;\n label: string;\n isActive?: boolean;\n}\n\nexport interface DoubleSidebarSection {\n id: string;\n icon: LucideIcon;\n label: string;\n badge?: boolean;\n tabs: NavTab[];\n}\n\n// ============================================\n// Default Sections\n// ============================================\n\nexport const defaultDoubleSidebarSections: DoubleSidebarSection[] = [\n {\n id: \"home\",\n icon: Home,\n label: \"Home\",\n tabs: [\n { id: \"tab1\", label: \"Tab 1\", isActive: true },\n { id: \"tab2\", label: \"Tab 2\" },\n { id: \"tab3\", label: \"Tab 3\" },\n { id: \"tab4\", label: \"Tab 4\" },\n { id: \"tab5\", label: \"Tab 5\" },\n { id: \"tab6\", label: \"Tab 6\" },\n ],\n },\n {\n id: \"teams\",\n icon: Users,\n label: \"Teams\",\n tabs: [\n { id: \"all-teams\", label: \"All Teams\" },\n { id: \"my-team\", label: \"My Team\" },\n { id: \"invites\", label: \"Invites\" },\n ],\n },\n {\n id: \"calendar\",\n icon: Calendar,\n label: \"Calendar\",\n tabs: [\n { id: \"schedule\", label: \"Schedule\" },\n { id: \"events\", label: \"Events\" },\n { id: \"reminders\", label: \"Reminders\" },\n ],\n },\n {\n id: \"messages\",\n icon: MessageSquare,\n label: \"Messages\",\n badge: true,\n tabs: [\n { id: \"inbox\", label: \"Inbox\" },\n { id: \"sent\", label: \"Sent\" },\n { id: \"drafts\", label: \"Drafts\" },\n { id: \"archived\", label: \"Archived\" },\n ],\n },\n {\n id: \"reports\",\n icon: PieChart,\n label: \"Reports\",\n tabs: [\n { id: \"overview\", label: \"Overview\" },\n { id: \"analytics\", label: \"Analytics\" },\n { id: \"exports\", label: \"Exports\" },\n ],\n },\n {\n id: \"docs\",\n icon: FileText,\n label: \"Docs\",\n tabs: [\n { id: \"recent\", label: \"Recent\" },\n { id: \"shared\", label: \"Shared\" },\n { id: \"favorites\", label: \"Favorites\" },\n ],\n },\n {\n id: \"orders\",\n icon: ShoppingBag,\n label: \"Orders\",\n tabs: [\n { id: \"pending\", label: \"Pending\" },\n { id: \"completed\", label: \"Completed\" },\n { id: \"cancelled\", label: \"Cancelled\" },\n ],\n },\n];\n\n// ============================================\n// Icon Column Item\n// ============================================\n\ninterface IconColumnItemProps {\n section: DoubleSidebarSection;\n isActive: boolean;\n variant: \"dark\" | \"light\";\n onClick: () => void;\n}\n\nfunction IconColumnItem({ section, isActive, variant, onClick }: IconColumnItemProps) {\n const Icon = section.icon;\n const isDark = variant === \"dark\";\n\n return (\n <button\n onClick={onClick}\n className={cn(\n \"relative flex flex-col items-center justify-center gap-1 w-11 h-11 rounded-[var(--radius-nav)] transition-colors\",\n // Dark variant\n isDark && isActive && \"bg-[var(--canvas-sidebar-dark-active-bg)]\",\n isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n // Light variant\n !isDark && isActive && \"bg-[var(--canvas-sidebar-light-active-bg)]\",\n !isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\"\n )}\n >\n <Icon\n className={cn(\n \"size-4\",\n isDark && isActive && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n !isDark && isActive && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\"\n )}\n />\n {/* Notification Badge */}\n {section.badge && (\n <div className=\"absolute top-1.5 right-1.5 size-1.5 rounded-full bg-[var(--canvas-destructive)]\" />\n )}\n </button>\n );\n}\n\n// ============================================\n// Nav Column Tab Item\n// ============================================\n\ninterface NavTabItemProps {\n tab: NavTab;\n isActive: boolean;\n variant: \"dark\" | \"light\";\n onClick: () => void;\n}\n\nfunction NavTabItem({ tab, isActive, variant, onClick }: NavTabItemProps) {\n const isDark = variant === \"dark\";\n\n return (\n <button\n onClick={onClick}\n className={cn(\n \"flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors\",\n // Dark variant\n isDark && isActive && \"bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n // Light variant\n !isDark && isActive && \"bg-[var(--canvas-sidebar-light-active-bg)] text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)] hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\"\n )}\n >\n <span \n className=\"flex-1 truncate\"\n style={{\n fontFamily: \"var(--typo-sidebar-tab-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-sidebar-tab-size)\",\n fontWeight: \"var(--typo-sidebar-tab-weight)\",\n letterSpacing: \"var(--typo-sidebar-tab-spacing)\",\n lineHeight: \"var(--typo-sidebar-tab-line-height)\",\n }}\n >\n {tab.label}\n </span>\n </button>\n );\n}\n\n// ============================================\n// Double Sidebar Component\n// ============================================\n\ninterface DoubleSidebarProps {\n /** Navigation sections - each section maps to an icon and has tabs */\n sections?: DoubleSidebarSection[];\n /** Visual variant for the icon column */\n iconVariant?: \"dark\" | \"light\";\n /** Visual variant for the navigation column */\n navVariant?: \"dark\" | \"light\";\n /** Callback when a tab is clicked */\n onTabClick?: (section: DoubleSidebarSection, tab: NavTab) => void;\n /** Callback when closing (for mobile sheet) */\n onClose?: () => void;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Double Sidebar Component\n * \n * A two-column sidebar where:\n * - Left column (96px): Icon buttons that switch the active section\n * - Right column (280px): Text-based navigation tabs for the active section\n * \n * Each column can be independently themed (light/dark).\n */\nexport function DoubleSidebar({\n sections = defaultDoubleSidebarSections,\n iconVariant = \"light\",\n navVariant = \"light\",\n onTabClick,\n onClose,\n className\n}: DoubleSidebarProps) {\n const [activeSectionId, setActiveSectionId] = useState(sections[0]?.id || \"\");\n const [activeTabId, setActiveTabId] = useState(sections[0]?.tabs[0]?.id || \"\");\n \n const themeImages = useThemeImages();\n const { branding, isMounted } = useThemeBranding();\n\n const activeSection = sections.find(s => s.id === activeSectionId);\n const isIconDark = iconVariant === \"dark\";\n const isNavDark = navVariant === \"dark\";\n\n // Get the appropriate logo based on icon column variant\n const logoUrl = isIconDark ? themeImages.logoDark : themeImages.logoLight;\n\n // Get the icon shape renderer\n const iconShape = iconShapes.find(s => s.id === branding.iconShape) || iconShapes[0];\n\n const handleSectionClick = (section: DoubleSidebarSection) => {\n setActiveSectionId(section.id);\n // Set first tab of the section as active\n if (section.tabs.length > 0) {\n setActiveTabId(section.tabs[0].id);\n }\n };\n\n const handleTabClick = (tab: NavTab) => {\n setActiveTabId(tab.id);\n if (activeSection) {\n onTabClick?.(activeSection, tab);\n onClose?.();\n }\n };\n\n return (\n <div className={cn(\"flex h-full\", className)}>\n {/* Icon Column (96px) */}\n <div\n className={cn(\n \"flex flex-col items-center w-[var(--icon-sidebar-width)] shrink-0\",\n isIconDark && \"bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]\",\n !isIconDark && \"bg-white border-r border-[var(--canvas-border)]\"\n )}\n >\n {/* Logo - Hidden until mounted to prevent hydration flash */}\n <div className={`flex items-center justify-center shrink-0 py-5 ${isMounted ? 'opacity-100' : 'opacity-0'}`}>\n {logoUrl ? (\n <img\n src={logoUrl}\n alt=\"Logo\"\n className=\"size-8 object-contain\"\n />\n ) : (\n // Uses CSS variables directly - no JavaScript resolution needed\n <div className=\"relative size-8 shrink-0\">\n {iconShape.renderBackground(branding.bgColor || \"var(--canvas-primary)\")}\n <div className=\"absolute inset-0 flex items-center justify-center z-10\">\n {(() => {\n const IconComponent = iconMap[branding.iconName || \"Buildings\"] || Buildings;\n return <IconComponent weight=\"bold\" size={18} color={branding.iconColor || \"var(--canvas-primary-foreground)\"} />;\n })()}\n </div>\n </div>\n )}\n </div>\n\n {/* Icon Navigation */}\n <nav className=\"flex flex-col items-center gap-1 flex-1 px-4 pb-5 mt-2\">\n {sections.map((section) => (\n <IconColumnItem\n key={section.id}\n section={section}\n isActive={section.id === activeSectionId}\n variant={iconVariant}\n onClick={() => handleSectionClick(section)}\n />\n ))}\n </nav>\n </div>\n\n {/* Navigation Column (280px) */}\n <div\n className={cn(\n \"flex flex-col w-[var(--nav-sidebar-width)]\",\n isNavDark && \"bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]\",\n !isNavDark && \"bg-white border-r border-[var(--canvas-border)] shadow-[0_4px_16px_0_rgba(0,0,0,0.04)]\"\n )}\n >\n {/* Navigation Content */}\n <ScrollArea className=\"flex-1 pt-[var(--header-height)] px-[var(--spacing-2xl)] pb-[var(--spacing-5xl)]\">\n <nav className=\"flex flex-col gap-0\">\n {activeSection?.tabs.map((tab) => (\n <NavTabItem\n key={tab.id}\n tab={tab}\n isActive={tab.id === activeTabId}\n variant={navVariant}\n onClick={() => handleTabClick(tab)}\n />\n ))}\n </nav>\n </ScrollArea>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { DoubleSidebar, DoubleSidebarSection, NavTab, defaultDoubleSidebarSections } from \"./double-sidebar\";\nimport { \n Sheet, \n SheetContent,\n SheetTitle,\n} from \"../ui/sheet\";\nimport { cn } from \"../../lib/utils\";\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\n\ninterface DoubleSidebarShellProps {\n /** Navigation sections for the double sidebar */\n sections?: DoubleSidebarSection[];\n /** Visual variant for the icon column */\n iconVariant?: \"dark\" | \"light\";\n /** Visual variant for the navigation column */\n navVariant?: \"dark\" | \"light\";\n /** Optional page header content (e.g., breadcrumbs, page title) */\n pageHeader?: React.ReactNode;\n /** Main content - the modular blocks */\n children: React.ReactNode;\n /** Callback when a tab is clicked */\n onTabClick?: (section: DoubleSidebarSection, tab: NavTab) => void;\n /** Callback when app menu (hamburger) is clicked - for future app-level menu */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Double Sidebar Shell\n * \n * A composable page layout with a two-column sidebar that provides:\n * - Fixed header (80px)\n * - Fixed double sidebar on desktop (96px icons + 280px nav = 376px total)\n * - Floating sidebar toggle button on mobile (left edge)\n * - Mobile sheet navigation with both sidebar columns\n * - Each sidebar column can be independently themed (light/dark)\n * - Main content area with pageHeader slot and children slot for blocks\n * \n * Uses the same styling and spacing as DashboardShell for non-sidebar content.\n * \n * @example\n * ```tsx\n * <DoubleSidebarShell \n * sections={sections}\n * iconVariant=\"light\" \n * navVariant=\"light\"\n * >\n * <ContentDropzone label=\"Main content area\" />\n * </DoubleSidebarShell>\n * ```\n */\nexport function DoubleSidebarShell({\n sections = defaultDoubleSidebarSections,\n iconVariant = \"light\",\n navVariant = \"light\",\n pageHeader,\n children,\n onTabClick,\n onAppMenuClick,\n contentClassName,\n}: DoubleSidebarShellProps) {\n useCSSVariableSync();\n const [sidebarOpen, setSidebarOpen] = useState(false);\n\n const handleTabClick = (section: DoubleSidebarSection, tab: NavTab) => {\n onTabClick?.(section, tab);\n // Close sidebar when tab is clicked\n setSidebarOpen(false);\n };\n\n const handleAppMenuClick = () => {\n // Placeholder for future app-level menu\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top, offset on desktop to not overlap double sidebar */}\n <div className=\"fixed top-0 left-0 right-0 lg:left-[var(--double-sidebar-width)] z-40\">\n <Header onMenuClick={handleAppMenuClick} />\n </div>\n\n {/* Desktop Double Sidebar - Fixed on left, visible lg+ */}\n <div className=\"hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--double-sidebar-width)]\">\n <DoubleSidebar \n sections={sections}\n iconVariant={iconVariant}\n navVariant={navVariant}\n onTabClick={handleTabClick}\n />\n </div>\n\n {/* Mobile Sidebar Toggle Button - Floating on left edge */}\n <button\n onClick={() => setSidebarOpen(true)}\n className={cn(\n \"lg:hidden fixed left-0 z-30\",\n \"top-[calc(var(--header-height)+4px)]\",\n \"flex items-center justify-center\",\n \"size-11\",\n \"bg-white\",\n \"border border-l-0 border-[var(--canvas-neutral-border)]\",\n \"rounded-r-[var(--radius-xs)]\",\n \"shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]\",\n \"transition-opacity hover:opacity-80\"\n )}\n aria-label=\"Open sidebar\"\n >\n <ChevronRight className=\"size-6 text-[var(--canvas-primary)]\" />\n </button>\n\n {/* Mobile Double Sidebar Sheet */}\n <Sheet open={sidebarOpen} onOpenChange={setSidebarOpen}>\n <SheetContent side=\"left\" className=\"p-0 w-[var(--double-sidebar-width)]\">\n <VisuallyHidden.Root>\n <SheetTitle>Navigation</SheetTitle>\n </VisuallyHidden.Root>\n <DoubleSidebar \n sections={sections}\n iconVariant={iconVariant}\n navVariant={navVariant}\n onTabClick={handleTabClick}\n onClose={() => setSidebarOpen(false)}\n />\n </SheetContent>\n </Sheet>\n\n {/* Main Content Area - Same styling as DashboardShell */}\n <main\n className={cn(\n \"pt-[var(--header-height)]\",\n \"lg:pl-[var(--double-sidebar-width)]\",\n \"min-h-screen\"\n )}\n >\n <div \n className={cn(\n \"flex flex-col gap-[var(--spacing-6xl)]\",\n \"px-[var(--spacing-xl)] lg:px-[var(--spacing-5xl)]\",\n \"pt-10 pb-[var(--spacing-5xl)]\",\n contentClassName\n )}\n >\n {/* Page Header Slot */}\n {pageHeader && (\n <section className=\"pt-0\">\n {pageHeader}\n </section>\n )}\n\n {/* Main Content Slot - Blocks go here */}\n <section className=\"flex flex-col gap-[var(--spacing-6xl)]\">\n {children}\n </section>\n </div>\n </main>\n </div>\n );\n}\n\n// Re-export types for convenience\nexport type { DoubleSidebarSection, NavTab } from \"./double-sidebar\";\n\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\ninterface FlairBannerProps {\n /** Large title text */\n title?: string;\n /** Additional class names */\n className?: string;\n /** Optional background image URL */\n backgroundImage?: string;\n /** Opacity of the flair color overlay when using background image (0-1, default 0.7) */\n overlayOpacity?: number;\n}\n\n/**\n * Canvas Design System - Flair Banner Component\n * \n * A hero banner with centered title. Supports solid flair color background\n * or an image background with a semi-transparent flair color overlay.\n * Typically used at the top of standard pages below the header.\n * \n * @example\n * ```tsx\n * // Solid color background (default)\n * <FlairBanner title=\"Large title\" />\n * \n * // Image background with flair overlay\n * <FlairBanner \n * title=\"Large title\" \n * backgroundImage=\"/brand-assets/bg.jpg\"\n * overlayOpacity={0.6}\n * />\n * ```\n */\nexport function FlairBanner({\n title = \"Large title\",\n className,\n backgroundImage,\n overlayOpacity = 0.7,\n}: FlairBannerProps) {\n const hasImage = Boolean(backgroundImage);\n\n return (\n <div\n className={cn(\n \"relative flex flex-col items-center justify-center w-full overflow-hidden\",\n \"h-[var(--flair-banner-height)]\",\n !hasImage && \"bg-[var(--canvas-flair-bg)]\",\n className\n )}\n >\n {/* Background image layer */}\n {hasImage && (\n <div\n className=\"absolute inset-0 bg-cover bg-center bg-no-repeat\"\n style={{\n backgroundImage: `url(${backgroundImage})`,\n }}\n />\n )}\n \n {/* Flair color overlay */}\n {hasImage && (\n <div\n className=\"absolute inset-0 bg-[var(--canvas-flair-bg)]\"\n style={{\n opacity: overlayOpacity,\n }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 flex flex-col items-center justify-center text-center text-white px-[var(--spacing-xl)]\">\n {/* Title - Uses typography variables */}\n <h1 \n style={{\n fontFamily: \"var(--typo-banner-title-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-banner-title-size)\",\n fontWeight: \"var(--typo-banner-title-weight)\",\n letterSpacing: \"var(--typo-banner-title-spacing)\",\n lineHeight: \"var(--typo-banner-title-line-height)\",\n }}\n >\n {title}\n </h1>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { LineTabs, LineTab } from \"../ui/line-tabs\";\n\ninterface PageHeaderSectionProps {\n /** Page title */\n title?: string;\n /** Page description */\n description?: string;\n /** Array of tab items */\n tabs?: LineTab[];\n /** ID of the currently active tab */\n activeTab?: string;\n /** Callback when a tab is clicked */\n onTabChange?: (tabId: string) => void;\n /** Whether to show the tabs */\n showTabs?: boolean;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Page Header Section Component\n * \n * A section combining page title, description, and line tabs.\n * Centered with max-width constraint.\n * \n * @example\n * ```tsx\n * <PageHeaderSection \n * title=\"Page title\"\n * description=\"Description\"\n * tabs={[\n * { id: \"tab1\", label: \"Tab 1\" },\n * { id: \"tab2\", label: \"Tab 2\" },\n * ]}\n * />\n * ```\n */\nexport function PageHeaderSection({\n title = \"Page title\",\n description = \"Description\",\n tabs = [\n { id: \"tab1\", label: \"Tab 1\" },\n { id: \"tab2\", label: \"Tab 2\" },\n { id: \"tab3\", label: \"Tab 3\" },\n { id: \"tab4\", label: \"Tab 4\" },\n ],\n activeTab,\n onTabChange,\n showTabs = true,\n className,\n}: PageHeaderSectionProps) {\n return (\n <div className={cn(\"flex flex-col w-full border-b border-[var(--canvas-border)]\", className)}>\n {/* Page Title and Description */}\n <div\n className={cn(\n \"flex flex-col gap-1 w-full max-w-[var(--content-max-width)] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-6xl)]\"\n )}\n >\n {/* Title - Uses typography variables */}\n <h2 \n className=\"text-4xl\"\n style={{\n fontFamily: \"var(--typo-page-title-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-page-title-size)\",\n fontWeight: \"var(--typo-page-title-weight)\",\n letterSpacing: \"var(--typo-page-title-spacing)\",\n lineHeight: \"var(--typo-page-title-line-height)\",\n color: \"var(--typo-page-title-color)\",\n }}\n >\n {title}\n </h2>\n {/* Description - Uses typography variables with muted color */}\n <p \n style={{\n fontFamily: \"var(--typo-page-desc-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-page-desc-size)\",\n fontWeight: \"var(--typo-page-desc-weight)\",\n letterSpacing: \"var(--typo-page-desc-spacing)\",\n lineHeight: \"var(--typo-page-desc-line-height)\",\n color: \"var(--typo-page-desc-color-muted)\",\n }}\n >\n {description}\n </p>\n </div>\n\n {/* Line Tabs */}\n {showTabs && (\n <div className=\"w-full max-w-[var(--content-max-width)] mx-auto px-[var(--spacing-xl)] lg:px-0\">\n <LineTabs\n tabs={tabs}\n activeTab={activeTab}\n onTabChange={onTabChange}\n />\n </div>\n )}\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { FlairBanner } from \"../blocks/flair-banner\";\nimport { PageHeaderSection } from \"../blocks/page-header-section\";\nimport { LineTab } from \"../ui/line-tabs\";\n\ninterface StandardPageShellProps {\n /** Flair banner title */\n bannerTitle?: string;\n /** Flair banner description */\n bannerDescription?: string;\n /** Whether to show the flair banner */\n showBanner?: boolean;\n /** Page title */\n pageTitle?: string;\n /** Page description */\n pageDescription?: string;\n /** Array of tab items */\n tabs?: LineTab[];\n /** ID of the currently active tab */\n activeTab?: string;\n /** Callback when a tab is clicked */\n onTabChange?: (tabId: string) => void;\n /** Whether to show the tabs */\n showTabs?: boolean;\n /** Whether to show the page header section */\n showPageHeader?: boolean;\n /** Main content - the modular blocks */\n children: React.ReactNode;\n /** Callback when app menu (hamburger) is clicked - for future app-level menu */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Standard Page Shell\n * \n * A no-sidebar layout with:\n * - Fixed header with logo (no sidebar)\n * - Optional flair banner (dark blue hero section)\n * - Optional page header section with title, description, and tabs\n * - Centered content area (max-width 992px)\n * \n * @example\n * ```tsx\n * <StandardPageShell\n * bannerTitle=\"Large title\"\n * bannerDescription=\"Description\"\n * pageTitle=\"Page title\"\n * pageDescription=\"Description\"\n * tabs={[{ id: \"tab1\", label: \"Tab 1\" }]}\n * >\n * <ContentDropzone />\n * </StandardPageShell>\n * ```\n */\nexport function StandardPageShell({\n bannerTitle = \"Large title\",\n bannerDescription = \"Description\",\n showBanner = true,\n pageTitle = \"Page title\",\n pageDescription = \"Description\",\n tabs = [\n { id: \"tab1\", label: \"Tab 1\" },\n { id: \"tab2\", label: \"Tab 2\" },\n { id: \"tab3\", label: \"Tab 3\" },\n { id: \"tab4\", label: \"Tab 4\" },\n ],\n activeTab,\n onTabChange,\n showTabs = true,\n showPageHeader = true,\n children,\n onAppMenuClick,\n contentClassName,\n}: StandardPageShellProps) {\n // Sync CSS variables when rendered in iframes\n useCSSVariableSync();\n\n const handleAppMenuClick = () => {\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible (no sidebar) */}\n <header className=\"sticky top-0 z-40\">\n <Header onMenuClick={handleAppMenuClick} showDesktopLogo />\n </header>\n\n {/* Page Header Section - Banner + Title/Tabs */}\n {(showBanner || showPageHeader) && (\n <div className=\"flex flex-col w-full\">\n {/* Flair Banner */}\n {showBanner && (\n <FlairBanner title={bannerTitle} />\n )}\n\n {/* Page Title, Description, and Tabs */}\n {showPageHeader && (\n <PageHeaderSection\n title={pageTitle}\n description={pageDescription}\n tabs={tabs}\n activeTab={activeTab}\n onTabChange={onTabChange}\n showTabs={showTabs}\n />\n )}\n </div>\n )}\n\n {/* Main Content Area - Centered */}\n <main className=\"w-full\">\n <div \n className={cn(\n \"w-full max-w-[var(--content-max-width)] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-6xl)]\",\n contentClassName\n )}\n >\n {children}\n </div>\n </main>\n </div>\n );\n}\n\n// Re-export types for convenience\nexport type { LineTab } from \"../ui/line-tabs\";\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { LucideIcon, Home, MessageSquare, Search, User } from \"lucide-react\";\n\n// ============================================\n// Mobile Nav Tab Item\n// ============================================\n\nexport interface MobileNavTabConfig {\n id: string;\n label: string;\n icon: LucideIcon;\n isActive?: boolean;\n}\n\ninterface MobileNavTabProps {\n item: MobileNavTabConfig;\n variant?: \"dark\" | \"light\";\n onClick?: () => void;\n}\n\nfunction MobileNavTab({ item, variant = \"light\", onClick }: MobileNavTabProps) {\n const Icon = item.icon;\n const isActive = item.isActive;\n const isDark = variant === \"dark\";\n\n return (\n <button\n onClick={onClick}\n className={cn(\n // Match icon-sidebar dimensions: 64px × 64px\n \"relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors\",\n // Dark variant\n isDark && isActive && \"bg-[var(--canvas-sidebar-dark-active-bg)]\",\n isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50\",\n // Light variant\n !isDark && isActive && \"bg-[var(--canvas-sidebar-light-active-bg)]\",\n !isDark && !isActive && \"hover:bg-[var(--canvas-sidebar-light-active-bg)]/50\"\n )}\n >\n <Icon\n className={cn(\n // Match icon-sidebar: 16px icons\n \"size-4\",\n isDark && isActive && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n !isDark && isActive && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\"\n )}\n />\n <span\n className={cn(\n // Match icon-sidebar: 12px labels, medium weight\n \"text-xs font-medium\",\n isDark && isActive && \"text-[var(--canvas-sidebar-dark-active-text)]\",\n isDark && !isActive && \"text-[var(--canvas-sidebar-dark-text)]\",\n !isDark && isActive && \"text-[var(--canvas-sidebar-light-active-text)]\",\n !isDark && !isActive && \"text-[var(--canvas-sidebar-light-text)]\"\n )}\n >\n {item.label}\n </span>\n </button>\n );\n}\n\n// ============================================\n// Default Navigation Items\n// ============================================\n\nexport const defaultMobileNavTabs: MobileNavTabConfig[] = [\n { id: \"home\", label: \"Home\", icon: Home, isActive: true },\n { id: \"messages\", label: \"Messages\", icon: MessageSquare },\n { id: \"discover\", label: \"Discover\", icon: Search },\n { id: \"account\", label: \"Account\", icon: User },\n];\n\n// ============================================\n// Mobile Bottom Navigation\n// ============================================\n\ninterface MobileBottomNavProps {\n /** Navigation tabs to display */\n tabs?: MobileNavTabConfig[];\n /** Visual variant - dark or light theme */\n variant?: \"dark\" | \"light\";\n /** Callback when a tab is clicked */\n onTabClick?: (tab: MobileNavTabConfig) => void;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Mobile Bottom Navigation\n * \n * A sticky bottom navigation bar with icon tabs.\n * Styling matches the icon-sidebar for consistency.\n * Supports both dark and light themes via the variant prop.\n * \n * @example\n * ```tsx\n * <MobileBottomNav\n * variant=\"light\"\n * tabs={defaultMobileNavTabs}\n * onTabClick={(tab) => console.log(tab.id)}\n * />\n * ```\n */\nexport function MobileBottomNav({\n tabs = defaultMobileNavTabs,\n variant = \"light\",\n onTabClick,\n className,\n}: MobileBottomNavProps) {\n const isDark = variant === \"dark\";\n\n return (\n <nav\n className={cn(\n \"fixed bottom-0 left-0 right-0 z-50\",\n \"flex items-center justify-center gap-5\",\n \"px-4 py-3\",\n // Dark variant\n isDark && \"bg-[var(--canvas-sidebar-dark-bg)] border-t border-[var(--canvas-sidebar-dark-border)]\",\n isDark && \"shadow-[0px_-4px_16px_0px_rgba(0,0,0,0.2)]\",\n // Light variant\n !isDark && \"bg-[var(--canvas-sidebar-light-bg)] border-t border-[var(--canvas-sidebar-light-border)]\",\n !isDark && \"shadow-[0px_-4px_16px_0px_rgba(0,0,0,0.04)]\",\n className\n )}\n >\n {tabs.map((tab) => (\n <MobileNavTab\n key={tab.id}\n item={tab}\n variant={variant}\n onClick={() => onTabClick?.(tab)}\n />\n ))}\n </nav>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { MobileBottomNav, MobileNavTabConfig, defaultMobileNavTabs } from \"../blocks/mobile-bottom-nav\";\n\ninterface MobileMenuShellProps {\n /** Navigation tabs for the bottom nav */\n tabs?: MobileNavTabConfig[];\n /** Visual variant for the bottom nav - dark or light theme */\n variant?: \"dark\" | \"light\";\n /** ID of the currently active tab */\n activeTab?: string;\n /** Callback when a tab is clicked */\n onTabChange?: (tabId: string) => void;\n /** Main content */\n children: React.ReactNode;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Mobile Menu Shell\n * \n * A layout with:\n * - Fixed header with logo (no sidebar)\n * - Main scrollable content area\n * - Sticky bottom navigation bar (supports dark/light themes)\n * \n * @example\n * ```tsx\n * <MobileMenuShell variant=\"light\">\n * <ContentDropzone />\n * </MobileMenuShell>\n * ```\n */\nexport function MobileMenuShell({\n tabs = defaultMobileNavTabs,\n variant = \"light\",\n activeTab,\n onTabChange,\n children,\n contentClassName,\n}: MobileMenuShellProps) {\n useCSSVariableSync();\n // Internal state for active tab if not controlled\n const [internalActiveTab, setInternalActiveTab] = useState(\n activeTab || tabs[0]?.id || \"home\"\n );\n\n const currentActiveTab = activeTab || internalActiveTab;\n\n // Apply active state to tabs\n const tabsWithActiveState = tabs.map((tab) => ({\n ...tab,\n isActive: tab.id === currentActiveTab,\n }));\n\n const handleTabClick = (tab: MobileNavTabConfig) => {\n if (onTabChange) {\n onTabChange(tab.id);\n } else {\n setInternalActiveTab(tab.id);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible (no sidebar) */}\n <header className=\"sticky top-0 z-40\">\n <Header showDesktopLogo />\n </header>\n\n {/* Main Content Area */}\n <main className=\"w-full\">\n <div\n className={cn(\n \"w-full max-w-[var(--content-max-width)] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-[204px]\",\n \"py-[var(--spacing-6xl)]\",\n // Add bottom padding to account for fixed bottom nav (88px)\n \"pb-28\",\n contentClassName\n )}\n >\n {children}\n </div>\n </main>\n\n {/* Sticky Bottom Navigation */}\n <MobileBottomNav\n tabs={tabsWithActiveState}\n variant={variant}\n onTabClick={handleTabClick}\n />\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Search } from \"lucide-react\";\nimport { Button } from \"../ui/button\";\n\ninterface SearchBarProps {\n /** Placeholder text for the input */\n placeholder?: string;\n /** Current search value */\n value?: string;\n /** Callback when the input value changes */\n onChange?: (value: string) => void;\n /** Callback when search is triggered (button click or Enter key) */\n onSearch?: () => void;\n /** Search button label */\n buttonLabel?: string;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Search Bar Component\n * \n * A search input with a search icon on the left and a conditional search button.\n * The button appears only when the input has content.\n * Uses standard input sizing variables for consistent styling.\n * \n * @example\n * ```tsx\n * <SearchBar\n * placeholder=\"Search\"\n * value={searchValue}\n * onChange={setSearchValue}\n * onSearch={handleSearch}\n * />\n * ```\n */\nexport function SearchBar({\n placeholder = \"Search\",\n value = \"\",\n onChange,\n onSearch,\n buttonLabel = \"Search\",\n className,\n}: SearchBarProps) {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n onSearch?.();\n }\n };\n\n const hasValue = value.length > 0;\n\n return (\n <div\n className={cn(\n \"flex items-center gap-2\",\n \"bg-white border border-[var(--canvas-border-input)]\",\n \"pr-2\",\n \"transition-colors\",\n \"focus-within:border-[var(--canvas-border-input-focus)] focus-within:ring-2 focus-within:ring-[var(--canvas-border-input-focus)] focus-within:ring-offset-2\",\n className\n )}\n style={{ \n height: \"var(--input-standard-height)\",\n paddingLeft: \"var(--input-standard-px)\",\n borderRadius: \"var(--input-standard-radius)\",\n }}\n >\n {/* Search Icon */}\n <Search className=\"size-4 shrink-0 text-[var(--canvas-text-muted)]\" />\n\n {/* Input */}\n <input\n type=\"text\"\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex-1 h-full bg-transparent\",\n \"text-[var(--canvas-text)]\",\n \"placeholder:text-[var(--canvas-text-placeholder)]\",\n \"outline-none border-none\"\n )}\n style={{ fontSize: \"var(--input-standard-font-size)\" }}\n />\n\n {/* Search Button - Only visible when input has content */}\n {hasValue && (\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onSearch}\n className=\"shrink-0\"\n style={{ \n height: \"calc(var(--input-standard-height) - 8px)\",\n borderRadius: \"var(--input-standard-radius)\",\n }}\n >\n {buttonLabel}\n </Button>\n )}\n </div>\n );\n}\n\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Filter, ChevronDown } from \"lucide-react\";\nimport { Button } from \"../ui/button\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../ui/popover\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { CheckboxWithLabel, Checkbox } from \"../ui/checkbox\";\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { Switch } from \"../ui/switch\";\nimport { TextInput } from \"../ui/text-input\";\nimport { Searchbox } from \"../ui/searchbox\";\nimport { DateInput } from \"../ui/date-input\";\nimport { MultiselectTags } from \"../ui/multiselect-tags\";\n\n// ============================================\n// Filter Option Types\n// ============================================\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface FilterDropdownConfig {\n id: string;\n label: string;\n placeholder: string;\n options: FilterOption[];\n}\n\nexport interface FilterCheckboxGroupConfig {\n id: string;\n label: string;\n options: FilterOption[];\n}\n\nexport interface FilterDateRangeConfig {\n id: string;\n label: string;\n startPlaceholder?: string;\n endPlaceholder?: string;\n}\n\nexport interface FilterState {\n dropdowns: Record<string, string>;\n checkboxes: Record<string, boolean>;\n dateRange: { start: string; end: string };\n}\n\n// ============================================\n// Default Filter Configuration\n// ============================================\n\nconst defaultDropdowns: FilterDropdownConfig[] = [\n {\n id: \"category\",\n label: \"Category\",\n placeholder: \"All categories\",\n options: [\n { id: \"all\", label: \"All categories\" },\n { id: \"restaurants\", label: \"Restaurants\" },\n { id: \"hotels\", label: \"Hotels\" },\n { id: \"attractions\", label: \"Attractions\" },\n ],\n },\n {\n id: \"location\",\n label: \"Location\",\n placeholder: \"All locations\",\n options: [\n { id: \"all\", label: \"All locations\" },\n { id: \"new-york\", label: \"New York\" },\n { id: \"los-angeles\", label: \"Los Angeles\" },\n { id: \"chicago\", label: \"Chicago\" },\n ],\n },\n];\n\nconst defaultCheckboxGroup: FilterCheckboxGroupConfig = {\n id: \"status\",\n label: \"Status\",\n options: [\n { id: \"active\", label: \"Active\" },\n { id: \"pending\", label: \"Pending\" },\n { id: \"completed\", label: \"Completed\" },\n ],\n};\n\nconst defaultDateRange: FilterDateRangeConfig = {\n id: \"dateRange\",\n label: \"Date Range\",\n startPlaceholder: \"Start date\",\n endPlaceholder: \"End date\",\n};\n\n// ============================================\n// Filter Dropdown Component\n// ============================================\n\ninterface FilterDropdownProps {\n config: FilterDropdownConfig;\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction FilterDropdown({ config, value, onChange }: FilterDropdownProps) {\n return (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n {config.label}\n </label>\n <Select value={value || undefined} onValueChange={onChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder={config.placeholder} />\n </SelectTrigger>\n <SelectContent position=\"popper\" side=\"bottom\" sideOffset={4}>\n {config.options.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n}\n\n// ============================================\n// Filter Popover Component\n// ============================================\n\ninterface FilterPopoverProps {\n /** Dropdown filter configurations */\n dropdowns?: FilterDropdownConfig[];\n /** Checkbox group configuration */\n checkboxGroup?: FilterCheckboxGroupConfig;\n /** Date range configuration */\n dateRange?: FilterDateRangeConfig;\n /** Current filter state */\n filterState?: FilterState;\n /** Callback when filters are applied */\n onApply?: (state: FilterState) => void;\n /** Callback when filters are cleared */\n onClear?: () => void;\n /** Trigger style variant - \"button\" for button style, \"dropdown\" for select-like style */\n triggerVariant?: \"button\" | \"dropdown\";\n /** Placeholder text shown in the trigger (used for both variants) */\n triggerPlaceholder?: string;\n /** Additional class names for the trigger */\n className?: string;\n}\n\n/**\n * Canvas Design System - Filter Popover Component\n * \n * A filter button that opens a popover with various filter options.\n * Inspired by shadcnstudio Category Filter 6 structure.\n * \n * @example\n * ```tsx\n * // Button variant (default)\n * <FilterPopover\n * onApply={(filters) => console.log(filters)}\n * onClear={() => console.log(\"Cleared\")}\n * />\n * \n * // Dropdown variant\n * <FilterPopover\n * triggerVariant=\"dropdown\"\n * triggerPlaceholder=\"Filter\"\n * onApply={(filters) => console.log(filters)}\n * />\n * ```\n */\nexport function FilterPopover({\n dropdowns = defaultDropdowns,\n checkboxGroup = defaultCheckboxGroup,\n dateRange = defaultDateRange,\n filterState,\n onApply,\n onClear,\n triggerVariant = \"button\",\n triggerPlaceholder = \"Filter\",\n className,\n}: FilterPopoverProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [mounted, setMounted] = useState(false);\n\n // Ensure hydration consistency for Radix components\n useEffect(() => {\n setMounted(true);\n }, []);\n\n // Internal state for filter values\n const [localState, setLocalState] = useState<FilterState>(() => ({\n dropdowns: filterState?.dropdowns || {},\n checkboxes: filterState?.checkboxes || {},\n dateRange: filterState?.dateRange || { start: \"\", end: \"\" },\n }));\n\n const handleDropdownChange = (id: string, value: string) => {\n setLocalState((prev) => ({\n ...prev,\n dropdowns: { ...prev.dropdowns, [id]: value },\n }));\n };\n\n const handleCheckboxChange = (id: string, checked: boolean) => {\n setLocalState((prev) => ({\n ...prev,\n checkboxes: { ...prev.checkboxes, [id]: checked },\n }));\n };\n\n const handleDateChange = (field: \"start\" | \"end\", value: string) => {\n setLocalState((prev) => ({\n ...prev,\n dateRange: { ...prev.dateRange, [field]: value },\n }));\n };\n\n const handleClear = () => {\n const clearedState: FilterState = {\n dropdowns: {},\n checkboxes: {},\n dateRange: { start: \"\", end: \"\" },\n };\n setLocalState(clearedState);\n onClear?.();\n };\n\n const handleApply = () => {\n onApply?.(localState);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n // Reset to initial state\n setLocalState({\n dropdowns: filterState?.dropdowns || {},\n checkboxes: filterState?.checkboxes || {},\n dateRange: filterState?.dateRange || { start: \"\", end: \"\" },\n });\n setIsOpen(false);\n };\n\n // Button trigger component\n const ButtonTrigger = (\n <Button\n variant=\"neutral\"\n className={cn(\"gap-2\", className)}\n style={{ \n borderRadius: \"var(--btn-standard-radius)\",\n height: \"var(--btn-standard-height)\",\n paddingLeft: \"var(--btn-standard-px)\",\n paddingRight: \"var(--btn-standard-px)\",\n fontSize: \"var(--btn-standard-font-size)\",\n }}\n >\n <Filter className=\"size-4\" />\n {triggerPlaceholder}\n </Button>\n );\n\n // Dropdown trigger component (styled like SelectTrigger)\n const DropdownTrigger = (\n <button\n className={cn(\n \"flex items-center justify-between gap-2 bg-white 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)] focus:ring-offset-2 data-[state=open]:border-[var(--canvas-border-input-focus)]\",\n className\n )}\n style={{\n width: \"120px\",\n height: \"var(--input-small-height)\",\n paddingLeft: \"var(--input-small-px)\",\n paddingRight: \"var(--input-small-px)\",\n fontSize: \"var(--input-small-font-size)\",\n borderRadius: \"var(--input-small-radius)\",\n borderColor: \"var(--canvas-border-input)\",\n }}\n >\n <span className=\"text-[var(--canvas-text-placeholder)]\">{triggerPlaceholder}</span>\n <ChevronDown className=\"size-4 opacity-50\" />\n </button>\n );\n\n // Render placeholder during SSR to prevent hydration mismatch\n if (!mounted) {\n return triggerVariant === \"dropdown\" ? DropdownTrigger : ButtonTrigger;\n }\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n {triggerVariant === \"dropdown\" ? DropdownTrigger : ButtonTrigger}\n </PopoverTrigger>\n\n <PopoverContent\n align=\"end\"\n side=\"bottom\"\n sideOffset={4}\n avoidCollisions={false}\n className=\"w-80 p-0 bg-white border border-[var(--canvas-border)] shadow-lg\"\n >\n {/* Filter Content - All Input Types */}\n <div className=\"p-4 space-y-5 max-h-[480px] overflow-y-auto\">\n {/* Text Input */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Text Input\n </label>\n <TextInput inputSize=\"sm\" placeholder=\"Enter text...\" />\n </div>\n\n {/* Searchbox */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Searchbox\n </label>\n <Searchbox inputSize=\"sm\" placeholder=\"Search...\" />\n </div>\n\n {/* Dropdown */}\n {dropdowns.slice(0, 1).map((dropdown) => (\n <FilterDropdown\n key={dropdown.id}\n config={dropdown}\n value={localState.dropdowns[dropdown.id] || \"\"}\n onChange={(value) => handleDropdownChange(dropdown.id, value)}\n />\n ))}\n\n {/* Date Input */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Date Input\n </label>\n <DateInput inputSize=\"sm\" />\n </div>\n\n\n {/* Radio Buttons */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Radio Buttons\n </label>\n <RadioGroup defaultValue=\"option1\" className=\"flex\">\n <div className=\"flex items-center gap-2\">\n <RadioGroupItem value=\"option1\" id=\"radio1\" />\n <label \n htmlFor=\"radio1\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n Option 1\n </label>\n </div>\n <div className=\"flex items-center gap-2\">\n <RadioGroupItem value=\"option2\" id=\"radio2\" />\n <label \n htmlFor=\"radio2\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n Option 2\n </label>\n </div>\n </RadioGroup>\n </div>\n\n {/* Radio Buttons List */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Radio Buttons List\n </label>\n <RadioGroup defaultValue=\"list-opt1\" className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-2\">\n <RadioGroupItem value=\"list-opt1\" id=\"radio-list-1\" />\n <label \n htmlFor=\"radio-list-1\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n First option\n </label>\n </div>\n <div className=\"flex items-center gap-2\">\n <RadioGroupItem value=\"list-opt2\" id=\"radio-list-2\" />\n <label \n htmlFor=\"radio-list-2\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n Second option\n </label>\n </div>\n <div className=\"flex items-center gap-2\">\n <RadioGroupItem value=\"list-opt3\" id=\"radio-list-3\" />\n <label \n htmlFor=\"radio-list-3\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n Third option\n </label>\n </div>\n </RadioGroup>\n </div>\n\n {/* Checkbox */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Checkbox\n </label>\n <div className=\"flex items-center gap-2\">\n <Checkbox id=\"single-checkbox\" />\n <label \n htmlFor=\"single-checkbox\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n I agree to terms\n </label>\n </div>\n </div>\n\n {/* Checkbox List */}\n {checkboxGroup && (\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Checkbox List\n </label>\n <div className=\"space-y-2\">\n {checkboxGroup.options.map((option) => (\n <CheckboxWithLabel\n key={option.id}\n checked={localState.checkboxes[option.id] || false}\n onCheckedChange={(checked) =>\n handleCheckboxChange(option.id, checked === true)\n }\n >\n {option.label}\n </CheckboxWithLabel>\n ))}\n </div>\n </div>\n )}\n\n {/* Toggle */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Toggle\n </label>\n <div className=\"flex items-center gap-2\">\n <Switch id=\"toggle-switch\" />\n <label \n htmlFor=\"toggle-switch\" \n className=\"text-[var(--canvas-text)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n Enable notifications\n </label>\n </div>\n </div>\n\n {/* Multiselect Tags */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text-muted)]\">\n Multiselect Tags\n </label>\n <MultiselectTags inputSize=\"sm\" tags={[\"Tag 1\", \"Tag 2\"]} placeholder=\"Add...\" />\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-[var(--canvas-border)]\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n className=\"text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] hover:bg-transparent\"\n >\n Reset\n </Button>\n <Button variant=\"primary\" size=\"sm\" onClick={handleApply}>\n Apply\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { FlairBanner } from \"../blocks/flair-banner\";\nimport { PageHeaderSection } from \"../blocks/page-header-section\";\nimport { SearchBar } from \"../blocks/search-bar\";\nimport { FilterPopover, FilterState } from \"../blocks/filter-popover\";\n\ninterface SearchBarShellProps {\n /** Flair banner title */\n bannerTitle?: string;\n /** Flair banner description */\n bannerDescription?: string;\n /** Page title */\n pageTitle?: string;\n /** Page description */\n pageDescription?: string;\n /** Search bar placeholder */\n searchPlaceholder?: string;\n /** Callback when search is triggered */\n onSearch?: (query: string) => void;\n /** Callback when filters are applied */\n onFilterApply?: (filters: FilterState) => void;\n /** Main content */\n children: React.ReactNode;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Search Bar Shell\n * \n * A layout with:\n * - Fixed header with logo (no sidebar)\n * - Page header section with title and description\n * - Search bar with filter button\n * - Content area for search results\n * \n * @example\n * ```tsx\n * <SearchBarShell\n * pageTitle=\"Page title\"\n * pageDescription=\"Description\"\n * onSearch={(query) => console.log(query)}\n * >\n * <ContentDropzone />\n * </SearchBarShell>\n * ```\n */\nexport function SearchBarShell({\n bannerTitle = \"Large title\",\n bannerDescription = \"Description\",\n pageTitle = \"Page title\",\n pageDescription = \"Description\",\n searchPlaceholder = \"Search\",\n onSearch,\n onFilterApply,\n children,\n contentClassName,\n}: SearchBarShellProps) {\n useCSSVariableSync();\n const [searchValue, setSearchValue] = useState(\"\");\n const [filterState, setFilterState] = useState<FilterState>({\n dropdowns: {},\n checkboxes: {},\n dateRange: { start: \"\", end: \"\" },\n });\n\n const handleSearch = () => {\n onSearch?.(searchValue);\n };\n\n const handleFilterApply = (newFilters: FilterState) => {\n setFilterState(newFilters);\n onFilterApply?.(newFilters);\n };\n\n const handleFilterClear = () => {\n const clearedState: FilterState = {\n dropdowns: {},\n checkboxes: {},\n dateRange: { start: \"\", end: \"\" },\n };\n setFilterState(clearedState);\n onFilterApply?.(clearedState);\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible (no sidebar) */}\n <header className=\"sticky top-0 z-40\">\n <Header showDesktopLogo />\n </header>\n\n {/* Flair Banner */}\n <FlairBanner title={bannerTitle} />\n\n {/* Page Header Section - Title and Description only, no tabs */}\n <PageHeaderSection\n title={pageTitle}\n description={pageDescription}\n showTabs={false}\n />\n\n {/* Search Bar Section */}\n <div className=\"w-full\">\n <div\n className={cn(\n \"w-full max-w-[var(--content-max-width)] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"pt-10 pb-10\",\n \"border-b border-[var(--canvas-border)]\"\n )}\n >\n <div className=\"flex items-center gap-6\">\n {/* Search Bar */}\n <SearchBar\n placeholder={searchPlaceholder}\n value={searchValue}\n onChange={setSearchValue}\n onSearch={handleSearch}\n className=\"flex-1\"\n />\n\n {/* Filter Button */}\n <FilterPopover\n filterState={filterState}\n onApply={handleFilterApply}\n onClear={handleFilterClear}\n />\n </div>\n </div>\n </div>\n\n {/* Main Content Area */}\n <main className=\"w-full\">\n <div\n className={cn(\n \"w-full max-w-[var(--content-max-width)] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-6xl)]\",\n contentClassName\n )}\n >\n {children}\n </div>\n </main>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport interface Step {\n id: string;\n label: string;\n /** Optional description for the step content area */\n description?: string;\n}\n\nexport interface StepTrackerProps {\n /** Array of step objects with id and label */\n steps: Step[];\n /** Current active step (0-indexed) */\n currentStep: number;\n /** Optional callback when a step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Additional class name */\n className?: string;\n}\n\n// Constants for layout calculations\nconst STEP_WIDTH = 112; // px (w-28)\nconst GAP = 16; // px (gap-4)\nconst CIRCLE_SIZE = 36; // px (size-9)\n\n/**\n * Canvas Design System - Step Tracker\n * \n * A horizontal multi-step progress tracker showing:\n * - Numbered circles for each step (36px)\n * - Connecting lines between steps\n * - Completed steps show checkmark\n * - Active step has primary border\n * - Inactive steps have gray background\n */\nexport function StepTracker({\n steps,\n currentStep,\n onStepClick,\n className,\n}: StepTrackerProps) {\n // Calculate progress line width\n const totalWidth = steps.length * STEP_WIDTH + (steps.length - 1) * GAP;\n const progressWidth = `calc(50% - ${totalWidth / 2}px + ${currentStep * (STEP_WIDTH + GAP) + STEP_WIDTH / 2}px)`;\n\n return (\n <div \n className={cn(\n \"w-full py-4\",\n className\n )}\n >\n {/* Container with relative positioning for the background line */}\n <div className=\"relative flex justify-center\">\n {/* Background line - spans full width, positioned at circle center (18px = half of 36px) */}\n <div \n className=\"absolute left-0 right-0 h-1 bg-[var(--canvas-border)]\"\n style={{ top: `${CIRCLE_SIZE / 2}px` }} \n />\n \n {/* Progress line - colored portion up to center of current step */}\n <div \n className=\"absolute left-0 h-1 bg-[var(--canvas-primary)]\"\n style={{ \n top: `${CIRCLE_SIZE / 2}px`,\n width: progressWidth\n }} \n />\n\n {/* Steps */}\n <div className=\"relative flex gap-4\">\n {steps.map((step, index) => {\n const isCompleted = index < currentStep;\n const isActive = index === currentStep;\n const isUpcoming = index > currentStep;\n\n return (\n <div\n key={step.id}\n className=\"flex flex-col items-center w-28\"\n >\n {/* Step circle - 36px with 16px text */}\n <button\n type=\"button\"\n onClick={() => onStepClick?.(index)}\n disabled={!onStepClick}\n className={cn(\n \"relative z-10 flex items-center justify-center size-9 rounded-full shrink-0\",\n \"border-2 transition-colors\",\n onStepClick && \"cursor-pointer\",\n !onStepClick && \"cursor-default\",\n isCompleted && \"bg-[var(--canvas-primary)] border-[var(--canvas-primary)] text-[var(--canvas-primary-foreground)]\",\n isActive && \"bg-white border-[var(--canvas-primary)] text-[var(--canvas-primary)]\",\n isUpcoming && \"bg-[var(--canvas-border)] border-[var(--canvas-border)] text-[var(--canvas-text-placeholder)]\"\n )}\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"16px\",\n fontWeight: 500,\n }}\n >\n <span>{index + 1}</span>\n </button>\n\n {/* Step label */}\n <span \n className={cn(\n \"text-center w-full mt-1\",\n (isCompleted || isActive) && \"text-[var(--canvas-primary)]\",\n isUpcoming && \"text-[var(--canvas-text-placeholder)]\"\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {step.label}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\n/** Default steps for demo/placeholder purposes */\nexport const defaultSteps: Step[] = [\n { id: \"basic-info\", label: \"Basic info\", description: \"Enter your basic information\" },\n { id: \"more-details\", label: \"More details\", description: \"Provide additional details\" },\n { id: \"shipping\", label: \"Shipping\", description: \"Review and confirm shipping\" },\n];\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { StepTracker, Step, defaultSteps } from \"../blocks/step-tracker\";\nimport { Button } from \"../ui/button\";\nimport { Typography } from \"../ui/typography\";\n\ninterface MultistepShellProps {\n /** Array of step objects */\n steps?: Step[];\n /** Current active step (0-indexed) */\n currentStep?: number;\n /** Callback when a step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Main content */\n children: React.ReactNode;\n /** Callback when Cancel/Back is clicked */\n onCancel?: () => void;\n /** Callback when Continue/Submit is clicked */\n onContinue?: () => void;\n /** Cancel button text */\n cancelText?: string;\n /** Continue button text */\n continueText?: string;\n /** Whether Continue button is disabled */\n continueDisabled?: boolean;\n /** Callback when app menu (hamburger) is clicked */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Multistep Shell\n * \n * A layout for multi-step processes/wizards with:\n * - Fixed header with logo\n * - Horizontal step tracker below header\n * - Step title and description\n * - Centered content area (max-width 768px)\n * - Navigation buttons (Cancel, Continue)\n * \n * @example\n * ```tsx\n * <MultistepShell\n * steps={[\n * { id: \"step1\", label: \"Step 1\", description: \"First step\" },\n * { id: \"step2\", label: \"Step 2\", description: \"Second step\" },\n * ]}\n * currentStep={0}\n * onCancel={() => router.back()}\n * onContinue={() => setStep(step + 1)}\n * >\n * <ContentDropzone />\n * </MultistepShell>\n * ```\n */\nexport function MultistepShell({\n steps = defaultSteps,\n currentStep = 0,\n onStepClick,\n children,\n onCancel,\n onContinue,\n cancelText,\n continueText,\n continueDisabled = false,\n onAppMenuClick,\n contentClassName,\n}: MultistepShellProps) {\n useCSSVariableSync();\n\n const handleAppMenuClick = () => {\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n const currentStepData = steps[currentStep];\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === steps.length - 1;\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible */}\n <header className=\"sticky top-0 z-40\">\n <Header onMenuClick={handleAppMenuClick} showDesktopLogo />\n </header>\n\n {/* Step Tracker Section */}\n <div className=\"w-full\">\n <StepTracker\n steps={steps}\n currentStep={currentStep}\n onStepClick={onStepClick}\n />\n </div>\n\n {/* Main Content Area - Centered */}\n <main className=\"w-full\">\n <div \n className={cn(\n \"w-full max-w-[768px] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-5xl)]\",\n contentClassName\n )}\n >\n {/* Step Content Container */}\n <div className=\"flex flex-col gap-[var(--spacing-3xl)]\">\n {/* Step Title and Description */}\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"h6\" as=\"h3\">\n {currentStepData?.label || `Step ${currentStep + 1}`}\n </Typography>\n {currentStepData?.description && (\n <Typography variant=\"body-m\" color=\"muted\">\n {currentStepData.description}\n </Typography>\n )}\n </div>\n\n {/* Main Content Area */}\n <div className=\"w-full\">\n {children}\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex gap-[var(--spacing-3xl)] items-center justify-end\">\n <Button variant=\"neutral\" onClick={onCancel}>\n {cancelText || (isFirstStep ? \"Cancel\" : \"Back\")}\n </Button>\n <Button variant=\"primary\" onClick={onContinue} disabled={continueDisabled}>\n {continueText || (isLastStep ? \"Submit\" : \"Continue\")}\n </Button>\n </div>\n </div>\n </div>\n </main>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Mail, Phone, MessageCircle, User, LucideIcon } from \"lucide-react\";\n\n// Shared card styling\nconst cardClassName = cn(\n \"bg-white border border-[var(--canvas-border)]\",\n \"rounded-xl p-8\"\n);\n\n// ============================================================================\n// InfoCard\n// ============================================================================\n\nexport interface InfoCardProps {\n /** Card title (displayed as uppercase header) */\n title?: string;\n /** Card description text */\n description?: string;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Canvas Design System - Info Card\n * \n * A sidebar card displaying a title and descriptive text.\n * Used for \"About Us\" style content.\n */\nexport function InfoCard({\n title = \"ABOUT US\",\n description = \"Canvas is a no-code framework built on top of Bubble that makes creating beautiful responsive web applications easy and fast.\\n\\nCanvas is developed and maintained by AirDev in San Francisco, based on our experience with hundreds of client engagements.\",\n className,\n}: InfoCardProps) {\n return (\n <div className={cn(cardClassName, \"w-80\", className)}>\n <h3 \n className=\"text-[var(--canvas-text-placeholder)] font-semibold mb-4\"\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"16px\",\n }}\n >\n {title}\n </h3>\n <p \n className=\"text-[var(--canvas-text-muted)] whitespace-pre-line\"\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"16px\",\n lineHeight: \"24px\",\n }}\n >\n {description}\n </p>\n </div>\n );\n}\n\n// ============================================================================\n// LinksCard\n// ============================================================================\n\nexport interface LinkItem {\n id: string;\n label: string;\n icon: LucideIcon;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface LinksCardProps {\n /** Card title (displayed as uppercase header) */\n title?: string;\n /** Array of link items */\n links?: LinkItem[];\n /** Additional class name */\n className?: string;\n}\n\n/** Default support links */\nexport const defaultSupportLinks: LinkItem[] = [\n { id: \"email\", label: \"Email us\", icon: Mail },\n { id: \"phone\", label: \"Call us\", icon: Phone },\n { id: \"text\", label: \"Text us\", icon: MessageCircle },\n { id: \"chat\", label: \"Chat now\", icon: User },\n];\n\n/**\n * Canvas Design System - Links Card\n * \n * A sidebar card displaying a title and a list of icon links.\n * Used for \"Support\" style contact links.\n */\nexport function LinksCard({\n title = \"SUPPORT\",\n links = defaultSupportLinks,\n className,\n}: LinksCardProps) {\n return (\n <div className={cn(cardClassName, \"w-80\", className)}>\n <h3 \n className=\"text-[var(--canvas-text-placeholder)] font-semibold mb-4\"\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"16px\",\n }}\n >\n {title}\n </h3>\n <div className=\"flex flex-col gap-4\">\n {links.map((link) => {\n const Icon = link.icon;\n const content = (\n <>\n <Icon className=\"size-5 text-[var(--canvas-primary)]\" />\n <span \n className=\"text-[var(--canvas-primary)] font-medium\"\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n fontSize: \"16px\",\n }}\n >\n {link.label}\n </span>\n </>\n );\n\n if (link.href) {\n return (\n <a\n key={link.id}\n href={link.href}\n className=\"flex items-center gap-1.5 hover:opacity-80 transition-opacity\"\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n key={link.id}\n type=\"button\"\n onClick={link.onClick}\n className=\"flex items-center gap-1.5 hover:opacity-80 transition-opacity\"\n >\n {content}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { StepTracker, Step, defaultSteps } from \"../blocks/step-tracker\";\nimport { InfoCard, LinksCard, LinkItem, defaultSupportLinks } from \"../blocks/sidebar-cards\";\nimport { Button } from \"../ui/button\";\nimport { Typography } from \"../ui/typography\";\n\ninterface MultistepSidebarShellProps {\n /** Array of step objects */\n steps?: Step[];\n /** Current active step (0-indexed) */\n currentStep?: number;\n /** Callback when a step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Info card title */\n infoTitle?: string;\n /** Info card description */\n infoDescription?: string;\n /** Links card title */\n linksTitle?: string;\n /** Links card items */\n links?: LinkItem[];\n /** Main content */\n children: React.ReactNode;\n /** Callback when Cancel/Back is clicked */\n onCancel?: () => void;\n /** Callback when Continue/Submit is clicked */\n onContinue?: () => void;\n /** Cancel button text */\n cancelText?: string;\n /** Continue button text */\n continueText?: string;\n /** Whether Continue button is disabled */\n continueDisabled?: boolean;\n /** Callback when app menu (hamburger) is clicked */\n onAppMenuClick?: () => void;\n /** Additional class name for the main content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Multistep Sidebar Shell\n * \n * A layout for multi-step processes with a sidebar:\n * - Fixed header with logo\n * - Horizontal step tracker below header\n * - Step title and description\n * - Two-column layout:\n * - Left: Main content with navigation buttons\n * - Right: Sidebar (320px) with Info and Links cards\n * \n * @example\n * ```tsx\n * <MultistepSidebarShell\n * steps={defaultSteps}\n * currentStep={0}\n * onCancel={() => router.back()}\n * onContinue={() => setStep(step + 1)}\n * >\n * <ContentDropzone />\n * </MultistepSidebarShell>\n * ```\n */\nexport function MultistepSidebarShell({\n steps = defaultSteps,\n currentStep = 0,\n onStepClick,\n infoTitle,\n infoDescription,\n linksTitle,\n links = defaultSupportLinks,\n children,\n onCancel,\n onContinue,\n cancelText,\n continueText,\n continueDisabled = false,\n onAppMenuClick,\n contentClassName,\n}: MultistepSidebarShellProps) {\n useCSSVariableSync();\n\n const handleAppMenuClick = () => {\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n const currentStepData = steps[currentStep];\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === steps.length - 1;\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible */}\n <header className=\"sticky top-0 z-40\">\n <Header onMenuClick={handleAppMenuClick} showDesktopLogo />\n </header>\n\n {/* Step Tracker Section */}\n <div className=\"w-full\">\n <StepTracker\n steps={steps}\n currentStep={currentStep}\n onStepClick={onStepClick}\n />\n </div>\n\n {/* Main Content Area - Two Column Layout */}\n <main className=\"w-full\">\n <div \n className={cn(\n \"w-full max-w-[1200px] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-10\",\n \"flex gap-10\"\n )}\n >\n {/* Left: Main Content */}\n <div className={cn(\"flex-1 min-w-0\", contentClassName)}>\n {/* Step Content Container */}\n <div className=\"flex flex-col gap-[var(--spacing-3xl)]\">\n {/* Step Title and Description */}\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"h6\" as=\"h3\">\n {currentStepData?.label || `Step ${currentStep + 1}`}\n </Typography>\n {currentStepData?.description && (\n <Typography variant=\"body-m\" color=\"muted\">\n {currentStepData.description}\n </Typography>\n )}\n </div>\n\n {/* Main Content Area */}\n <div className=\"w-full\">\n {children}\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex gap-[var(--spacing-3xl)] items-center justify-end\">\n <Button variant=\"neutral\" onClick={onCancel}>\n {cancelText || (isFirstStep ? \"Cancel\" : \"Back\")}\n </Button>\n <Button variant=\"primary\" onClick={onContinue} disabled={continueDisabled}>\n {continueText || (isLastStep ? \"Submit\" : \"Continue\")}\n </Button>\n </div>\n </div>\n </div>\n\n {/* Right: Sidebar */}\n <aside className=\"hidden lg:flex flex-col gap-10 shrink-0\">\n <InfoCard \n title={infoTitle} \n description={infoDescription} \n />\n <LinksCard \n title={linksTitle} \n links={links} \n />\n </aside>\n </div>\n </main>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport interface ProgressBarProps {\n /** Progress value (0-100) */\n progress?: number;\n /** Total number of steps */\n totalSteps?: number;\n /** Current step (0-indexed) - alternative to progress */\n currentStep?: number;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Canvas Design System - Progress Bar\n * \n * A horizontal progress indicator with:\n * - 8px height\n * - Pill-shaped (fully rounded)\n * - Background: --canvas-border\n * - Fill: --canvas-primary\n * \n * Can be controlled via either:\n * - `progress` prop (0-100 percentage)\n * - `currentStep` and `totalSteps` props (calculates percentage automatically)\n * \n * @example\n * ```tsx\n * // Using percentage\n * <ProgressBar progress={33} />\n * \n * // Using steps\n * <ProgressBar currentStep={1} totalSteps={3} />\n * ```\n */\nexport function ProgressBar({\n progress,\n totalSteps = 3,\n currentStep = 0,\n className,\n}: ProgressBarProps) {\n // Calculate progress percentage\n // If progress prop is provided, use it directly\n // Otherwise calculate from currentStep/totalSteps\n const progressPercent = progress !== undefined \n ? Math.min(100, Math.max(0, progress))\n : totalSteps > 0 \n ? Math.min(100, Math.max(0, ((currentStep + 1) / totalSteps) * 100))\n : 0;\n\n return (\n <div \n className={cn(\n \"w-full h-2 rounded-full overflow-hidden\",\n \"bg-[var(--canvas-border)]\",\n className\n )}\n role=\"progressbar\"\n aria-valuenow={progressPercent}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div \n className=\"h-full bg-[var(--canvas-primary)] rounded-full transition-all duration-300 ease-out\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n );\n}\n\n\n\n\n\n\n\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { FlairBanner } from \"../blocks/flair-banner\";\nimport { PageHeaderSection } from \"../blocks/page-header-section\";\nimport { ProgressBar } from \"../blocks/progress-bar\";\nimport { Button } from \"../ui/button\";\nimport { Typography } from \"../ui/typography\";\n\nexport interface MultistepProgressBarStep {\n id: string;\n title: string;\n description?: string;\n}\n\nexport interface MultistepProgressBarShellProps {\n /** Flair banner title */\n bannerTitle?: string;\n /** Flair banner description */\n bannerDescription?: string;\n /** Page title shown below the flair banner */\n pageTitle?: string;\n /** Page description shown below the flair banner */\n pageDescription?: string;\n /** Array of step objects */\n steps?: MultistepProgressBarStep[];\n /** Current active step (0-indexed) */\n currentStep?: number;\n /** Main content */\n children: React.ReactNode;\n /** Callback when Cancel is clicked */\n onCancel?: () => void;\n /** Callback when Continue is clicked */\n onContinue?: () => void;\n /** Cancel button text */\n cancelText?: string;\n /** Continue button text */\n continueText?: string;\n /** Whether Continue button is disabled */\n continueDisabled?: boolean;\n /** Callback when app menu (hamburger) is clicked */\n onAppMenuClick?: () => void;\n /** Additional class name for the content area */\n contentClassName?: string;\n}\n\n/** Default steps for demo/placeholder purposes */\nexport const defaultProgressBarSteps: MultistepProgressBarStep[] = [\n { id: \"step-1\", title: \"Step 1\", description: \"Enter your basic information\" },\n { id: \"step-2\", title: \"Step 2\", description: \"Provide additional details\" },\n { id: \"step-3\", title: \"Step 3\", description: \"Review and submit\" },\n];\n\n/**\n * Canvas Design System - Multistep Progress Bar Shell\n * \n * A layout for multi-step processes/wizards featuring:\n * - Fixed header with logo\n * - Page title and description section\n * - Horizontal progress bar showing completion\n * - Step-specific title and description\n * - Centered content area (max-width 992px)\n * - Navigation buttons (Cancel, Continue)\n * \n * @example\n * ```tsx\n * <MultistepProgressBarShell\n * pageTitle=\"Page title\"\n * pageDescription=\"Description\"\n * steps={[\n * { id: \"step1\", title: \"Step 1\", description: \"First step\" },\n * { id: \"step2\", title: \"Step 2\", description: \"Second step\" },\n * ]}\n * currentStep={0}\n * onCancel={() => router.back()}\n * onContinue={() => setStep(step + 1)}\n * >\n * <ContentDropzone />\n * </MultistepProgressBarShell>\n * ```\n */\nexport function MultistepProgressBarShell({\n bannerTitle = \"Large title\",\n bannerDescription = \"Description\",\n pageTitle = \"Page title\",\n pageDescription = \"Description\",\n steps = defaultProgressBarSteps,\n currentStep = 0,\n children,\n onCancel,\n onContinue,\n cancelText = \"Cancel\",\n continueText = \"Continue\",\n continueDisabled = false,\n onAppMenuClick,\n contentClassName,\n}: MultistepProgressBarShellProps) {\n useCSSVariableSync();\n\n const handleAppMenuClick = () => {\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n const currentStepData = steps[currentStep] || { title: `Step ${currentStep + 1}`, description: \"Description\" };\n const totalSteps = steps.length;\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible */}\n <header className=\"sticky top-0 z-40\">\n <Header onMenuClick={handleAppMenuClick} showDesktopLogo />\n </header>\n\n {/* Flair Banner */}\n <FlairBanner title={bannerTitle} />\n\n {/* Page Header Section */}\n <PageHeaderSection \n title={pageTitle}\n description={pageDescription}\n showTabs={false}\n />\n\n {/* Content Section */}\n <div className=\"w-full\">\n <div \n className={cn(\n \"w-full max-w-[992px] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-5xl)]\",\n contentClassName\n )}\n >\n {/* Progress Bar */}\n <ProgressBar \n currentStep={currentStep}\n totalSteps={totalSteps}\n />\n\n {/* Step Content Container */}\n <div className=\"flex flex-col gap-[var(--spacing-3xl)] pt-[var(--spacing-5xl)]\">\n {/* Step Title and Description */}\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"h6\" as=\"h3\">\n {currentStepData.title}\n </Typography>\n {currentStepData.description && (\n <Typography variant=\"body-m\" color=\"muted\">\n {currentStepData.description}\n </Typography>\n )}\n </div>\n\n {/* Main Content Area */}\n <div className=\"w-full\">\n {children}\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex gap-[var(--spacing-3xl)] items-center justify-end\">\n <Button variant=\"neutral\" onClick={onCancel}>\n {cancelText}\n </Button>\n <Button variant=\"primary\" onClick={onContinue} disabled={continueDisabled}>\n {continueText}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Step } from \"./step-tracker\";\n\nexport interface VerticalStepTrackerProps {\n /** Array of step objects with id, label, and optional description */\n steps: Step[];\n /** Current active step (0-indexed) */\n currentStep: number;\n /** Optional callback when a step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Optional section title (e.g., \"REGISTRATION\") */\n title?: string;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Canvas Design System - Vertical Step Tracker\n * \n * A vertical step progress indicator with:\n * - 24px circles with 8px white inner dot\n * - Vertical connecting lines between steps\n * - Active step: primary background + white dot + primary text\n * - Inactive steps: border background + white dot + placeholder text\n * - Optional section title (uppercase)\n * \n * @example\n * ```tsx\n * <VerticalStepTracker\n * steps={[\n * { id: \"step1\", label: \"Step 1\" },\n * { id: \"step2\", label: \"Step 2\" },\n * ]}\n * currentStep={0}\n * title=\"REGISTRATION\"\n * />\n * ```\n */\nexport function VerticalStepTracker({\n steps,\n currentStep,\n onStepClick,\n title,\n className,\n}: VerticalStepTrackerProps) {\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {/* Optional section title */}\n {title && (\n <p\n className=\"uppercase\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {title}\n </p>\n )}\n\n {/* Steps list */}\n <div className=\"flex flex-col\">\n {steps.map((step, index) => {\n const isActive = index === currentStep;\n const isCompleted = index < currentStep;\n const isLast = index === steps.length - 1;\n\n return (\n <div key={step.id} className=\"flex gap-2 items-start\">\n {/* Circle and line container */}\n <div className=\"flex flex-col items-center\">\n {/* Step circle - 24px with 8px inner dot */}\n <button\n type=\"button\"\n onClick={() => onStepClick?.(index)}\n disabled={!onStepClick}\n className={cn(\n \"relative flex items-center justify-center size-6 rounded-full shrink-0\",\n \"border-2 transition-colors\",\n onStepClick && \"cursor-pointer hover:opacity-80\",\n !onStepClick && \"cursor-default\",\n (isActive || isCompleted) && \"bg-[var(--canvas-primary)] border-[var(--canvas-primary)]\",\n !isActive && !isCompleted && \"bg-[var(--canvas-border)] border-[var(--canvas-border)]\"\n )}\n >\n {/* White inner dot - 8px */}\n <div className=\"size-2 rounded-full bg-white\" />\n </button>\n\n {/* Connecting line to next step */}\n {!isLast && (\n <div \n className=\"w-0.5 h-6 bg-[var(--canvas-border)]\"\n />\n )}\n </div>\n\n {/* Step label */}\n <button\n type=\"button\"\n onClick={() => onStepClick?.(index)}\n disabled={!onStepClick}\n className={cn(\n \"h-6 flex items-center\",\n onStepClick && \"cursor-pointer hover:opacity-80\",\n !onStepClick && \"cursor-default\"\n )}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: (isActive || isCompleted) \n ? \"var(--canvas-primary)\" \n : \"var(--canvas-text-placeholder)\",\n }}\n >\n {step.label}\n </span>\n </button>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/** Default steps for vertical tracker demo */\nexport const defaultVerticalSteps: Step[] = [\n { id: \"step-1\", label: \"Step 1\", description: \"Enter your basic information\" },\n { id: \"step-2\", label: \"Step 2\", description: \"Verify your identity\" },\n { id: \"step-3\", label: \"Step 3\", description: \"Set up your profile\" },\n { id: \"step-4\", label: \"Step 4\", description: \"Choose your preferences\" },\n { id: \"step-5\", label: \"Step 5\", description: \"Review your details\" },\n { id: \"step-6\", label: \"Step 6\", description: \"Complete registration\" },\n];\n\n\n\n\n\n\n\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { FlairBanner } from \"../blocks/flair-banner\";\nimport { VerticalStepTracker, defaultVerticalSteps } from \"../blocks/vertical-step-tracker\";\nimport { Step } from \"../blocks/step-tracker\";\nimport { Button } from \"../ui/button\";\nimport { Typography } from \"../ui/typography\";\n\ninterface VerticalMultistepShellProps {\n /** Array of step objects */\n steps?: Step[];\n /** Current active step (0-indexed) */\n currentStep?: number;\n /** Callback when a step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Section title for the step tracker (e.g., \"REGISTRATION\") */\n sectionTitle?: string;\n /** Flair banner title */\n bannerTitle?: string;\n /** Flair banner description */\n bannerDescription?: string;\n /** Page title */\n pageTitle?: string;\n /** Page description */\n pageDescription?: string;\n /** Main content */\n children: React.ReactNode;\n /** Callback when Cancel/Back is clicked */\n onCancel?: () => void;\n /** Callback when Continue/Submit is clicked */\n onContinue?: () => void;\n /** Cancel button text */\n cancelText?: string;\n /** Continue button text */\n continueText?: string;\n /** Whether Continue button is disabled */\n continueDisabled?: boolean;\n /** Callback when app menu (hamburger) is clicked */\n onAppMenuClick?: () => void;\n /** Additional class name for the content area */\n contentClassName?: string;\n}\n\n/**\n * Canvas Design System - Vertical Multistep Shell\n * \n * A layout for multi-step processes with vertical step tracker:\n * \n * **Desktop**: Two-column layout\n * - Left: Sidebar card (320px) with vertical step tracker\n * - Right: Content area with step title, description, content, and navigation\n * \n * **Mobile**: Stacked layout\n * - Header with hamburger menu\n * - Page title and description\n * - Vertical step list (no card)\n * - Content area with navigation\n * \n * @example\n * ```tsx\n * <VerticalMultistepShell\n * steps={defaultVerticalSteps}\n * currentStep={0}\n * sectionTitle=\"REGISTRATION\"\n * onCancel={() => router.back()}\n * onContinue={() => setStep(step + 1)}\n * >\n * <ContentDropzone />\n * </VerticalMultistepShell>\n * ```\n */\nexport function VerticalMultistepShell({\n steps = defaultVerticalSteps,\n currentStep = 0,\n onStepClick,\n sectionTitle = \"REGISTRATION\",\n bannerTitle = \"Large title\",\n bannerDescription = \"Description\",\n pageTitle = \"Page title\",\n pageDescription = \"Description\",\n children,\n onCancel,\n onContinue,\n cancelText,\n continueText,\n continueDisabled = false,\n onAppMenuClick,\n contentClassName,\n}: VerticalMultistepShellProps) {\n useCSSVariableSync();\n\n const handleAppMenuClick = () => {\n onAppMenuClick?.();\n console.log(\"App menu clicked - implement app-level mobile menu here\");\n };\n\n const currentStepData = steps[currentStep];\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === steps.length - 1;\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header */}\n <header className=\"sticky top-0 z-40\">\n <Header onMenuClick={handleAppMenuClick} showDesktopLogo />\n </header>\n\n {/* Flair Banner */}\n <FlairBanner title={bannerTitle} />\n\n {/* Page Header Section - Custom aligned to match sidebar content */}\n <div className=\"w-full border-b border-[var(--canvas-border)]\">\n <div\n className={cn(\n \"w-full max-w-[1200px] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-6\",\n \"py-[var(--spacing-6xl)]\",\n \"flex flex-col gap-1\"\n )}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-page-title-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-page-title-size)\",\n fontWeight: \"var(--typo-page-title-weight)\",\n letterSpacing: \"var(--typo-page-title-spacing)\",\n lineHeight: \"var(--typo-page-title-line-height)\",\n color: \"var(--typo-page-title-color)\",\n }}\n >\n {pageTitle}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-page-desc-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-page-desc-size)\",\n fontWeight: \"var(--typo-page-desc-weight)\",\n letterSpacing: \"var(--typo-page-desc-spacing)\",\n lineHeight: \"var(--typo-page-desc-line-height)\",\n color: \"var(--typo-page-desc-color-muted)\",\n }}\n >\n {pageDescription}\n </p>\n </div>\n </div>\n\n {/* Main Container */}\n <div \n className={cn(\n \"w-full max-w-[1200px] mx-auto\",\n \"px-[var(--spacing-xl)] lg:px-0\",\n \"py-[var(--spacing-5xl)]\",\n \"flex flex-col lg:flex-row gap-[var(--spacing-5xl)]\"\n )}\n >\n {/* Sidebar - Desktop: Card, Mobile: No card styling */}\n <div className=\"lg:shrink-0\">\n {/* Desktop: Card container */}\n <div \n className={cn(\n \"lg:w-[320px]\",\n // Desktop card styling\n \"lg:bg-white lg:border lg:border-[var(--canvas-border)]\",\n \"lg:rounded-[var(--radius-xl)]\",\n \"lg:p-6\"\n )}\n >\n <VerticalStepTracker\n steps={steps}\n currentStep={currentStep}\n onStepClick={onStepClick}\n title={sectionTitle}\n />\n </div>\n </div>\n\n {/* Content Area */}\n <div className={cn(\"flex-1 min-w-0\", contentClassName)}>\n {/* Step Content Container */}\n <div className=\"flex flex-col gap-[var(--spacing-3xl)]\">\n {/* Step Title and Description */}\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"h6\" as=\"h3\">\n {currentStepData?.label || `Step ${currentStep + 1}`}\n </Typography>\n {currentStepData?.description && (\n <Typography variant=\"body-m\" color=\"muted\">\n {currentStepData.description}\n </Typography>\n )}\n </div>\n\n {/* Main Content Area */}\n <div className=\"w-full\">\n {children}\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex gap-[var(--spacing-3xl)] items-center justify-end\">\n <Button variant=\"neutral\" onClick={onCancel}>\n {cancelText || (isFirstStep ? \"Cancel\" : \"Back\")}\n </Button>\n <Button variant=\"primary\" onClick={onContinue} disabled={continueDisabled}>\n {continueText || (isLastStep ? \"Submit\" : \"Continue\")}\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Header } from \"./header\";\nimport { useCSSVariableSync } from \"../../hooks/use-css-variable-sync\";\nimport { User, Key, CreditCard, Bell, LucideIcon } from \"lucide-react\";\n\nexport type AccountTab = \"profile\" | \"security\" | \"payments\" | \"notifications\";\n\ninterface AccountTabConfig {\n id: AccountTab;\n label: string;\n icon: LucideIcon;\n}\n\nexport const accountTabs: AccountTabConfig[] = [\n { id: \"profile\", label: \"Profile\", icon: User },\n { id: \"security\", label: \"Login and security\", icon: Key },\n { id: \"payments\", label: \"Payments\", icon: CreditCard },\n { id: \"notifications\", label: \"Notifications\", icon: Bell },\n];\n\ninterface AccountSettingsShellProps {\n /** Currently active tab */\n activeTab?: AccountTab;\n /** Callback when tab changes */\n onTabChange?: (tab: AccountTab) => void;\n /** Main content - renders based on active tab */\n children: React.ReactNode;\n /** Page title */\n pageTitle?: string;\n}\n\n/**\n * Canvas Design System - Account Settings Shell\n * \n * A layout for account/settings pages with:\n * - Fixed header with logo (no sidebar)\n * - Page title section with bottom border\n * - Two-column layout: sidebar navigation (320px) + content area\n * - Mobile responsive: sidebar stacks above content\n * \n * @example\n * ```tsx\n * <AccountSettingsShell\n * activeTab={activeTab}\n * onTabChange={setActiveTab}\n * >\n * {activeTab === \"profile\" && <ProfileContent />}\n * {activeTab === \"security\" && <SecurityContent />}\n * </AccountSettingsShell>\n * ```\n */\nexport function AccountSettingsShell({\n activeTab: controlledActiveTab,\n onTabChange,\n children,\n pageTitle = \"Account settings\",\n}: AccountSettingsShellProps) {\n // Sync CSS variables when rendered in iframes\n useCSSVariableSync();\n\n // Internal state for uncontrolled mode\n const [internalActiveTab, setInternalActiveTab] = useState<AccountTab>(\"profile\");\n \n // Use controlled or uncontrolled mode\n const activeTab = controlledActiveTab ?? internalActiveTab;\n \n const handleTabChange = (tab: AccountTab) => {\n if (onTabChange) {\n onTabChange(tab);\n } else {\n setInternalActiveTab(tab);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-[var(--background)]\">\n {/* Header - Fixed at top with logo visible (no sidebar) */}\n <header className=\"sticky top-0 z-40\">\n <Header showDesktopLogo />\n </header>\n\n {/* Page Title Section */}\n <div className=\"w-full border-b border-[var(--canvas-neutral-border)]\">\n <div className=\"w-full max-w-[1200px] mx-auto px-[var(--spacing-xl)] py-[var(--spacing-6xl)]\">\n <h1\n style={{\n fontFamily: \"var(--typo-page-title-font)\",\n fontSize: \"var(--typo-page-title-size)\",\n fontWeight: \"var(--typo-page-title-weight)\",\n lineHeight: \"var(--typo-page-title-line-height)\",\n letterSpacing: \"var(--typo-page-title-spacing)\",\n color: \"var(--typo-page-title-color)\",\n }}\n >\n {pageTitle}\n </h1>\n </div>\n </div>\n\n {/* Main Content - Two Column Layout */}\n <main className=\"w-full flex justify-center pb-[var(--spacing-8xl)]\">\n <div className=\"w-full max-w-[1200px] px-[var(--spacing-xl)] pt-[var(--spacing-5xl)]\">\n <div className=\"flex flex-col lg:flex-row gap-[var(--spacing-5xl)]\">\n {/* Sidebar Navigation */}\n <aside className=\"w-full lg:w-[320px] shrink-0\">\n <div className=\"bg-white border border-[var(--canvas-neutral-border)] rounded-[var(--radius-lg)] p-[var(--spacing-xl)] lg:p-[var(--spacing-4xl)]\">\n <nav className=\"flex flex-col gap-0\">\n {accountTabs.map((tab) => {\n const Icon = tab.icon;\n const isActive = activeTab === tab.id;\n \n return (\n <button\n key={tab.id}\n onClick={() => handleTabChange(tab.id)}\n className={cn(\n \"flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-md)] w-full text-left transition-colors\",\n isActive\n ? \"bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]\"\n : \"text-[var(--canvas-neutral-text)] hover:bg-[var(--canvas-surface)]\"\n )}\n >\n <Icon \n className={cn(\n \"size-5 shrink-0\",\n isActive ? \"text-[var(--canvas-primary)]\" : \"text-[var(--canvas-neutral-text)]\"\n )} \n />\n <span\n className=\"flex-1 truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height, 20px)\",\n }}\n >\n {tab.label}\n </span>\n </button>\n );\n })}\n </nav>\n </div>\n </aside>\n\n {/* Content Area */}\n <div className=\"flex-1 min-w-0\">\n {children}\n </div>\n </div>\n </div>\n </main>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport {\n FileText,\n Users,\n LayoutGrid,\n Wand2,\n} from \"lucide-react\";\nimport { useThemeImages, useThemeBranding } from \"../../context/theme-context\";\nimport {\n Diamond,\n Hexagon,\n Star,\n Lightning,\n Sparkle,\n Infinity,\n Code,\n Terminal,\n Cpu,\n Database,\n Globe,\n Cloud,\n WifiHigh,\n Briefcase,\n Buildings,\n Storefront,\n Handshake,\n ChartLine,\n Palette as PaletteIcon,\n PencilSimple,\n Camera,\n MusicNote,\n Lightbulb,\n Leaf,\n Tree,\n Sun,\n Moon,\n Fire,\n Drop,\n ChatCircle,\n Envelope,\n Phone,\n Megaphone,\n Heart,\n Shield,\n Trophy,\n Rocket,\n Target,\n Flag,\n type Icon as PhosphorIcon,\n} from \"@phosphor-icons/react\";\n\n// ═══════════════════════════════════════════════════════════\n// LOGO ICON SHAPES\n// ═══════════════════════════════════════════════════════════\n\ntype IconShapeId = \"rounded\" | \"circle\" | \"square\";\n\nconst iconShapes: { id: IconShapeId; renderBackground: (bgColor: string) => React.ReactNode }[] = [\n {\n id: \"rounded\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" rx=\"10\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"circle\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <circle cx=\"16\" cy=\"16\" r=\"16\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n {\n id: \"square\",\n renderBackground: (bgColor: string) => (\n <svg viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"size-full absolute inset-0\">\n <rect width=\"32\" height=\"32\" style={{ fill: bgColor }} />\n </svg>\n ),\n },\n];\n\nconst iconMap: Record<string, PhosphorIcon> = {\n Diamond, Hexagon, Star, Lightning, Sparkle, Infinity, Code, Terminal, Cpu, Database,\n Globe, Cloud, WifiHigh, Briefcase, Buildings, Storefront, Handshake, ChartLine,\n Palette: PaletteIcon, PencilSimple, Camera, MusicNote, Lightbulb, Leaf, Tree,\n Sun, Moon, Fire, Drop, ChatCircle, Envelope, Phone, Megaphone, Heart, Shield,\n Trophy, Rocket, Target, Flag,\n};\n\nfunction resolveBrandingColor(value: string): string {\n if (!value) return \"#ffffff\";\n if (value.startsWith(\"var(\")) {\n const varName = value.replace(\"var(\", \"\").replace(\")\", \"\");\n if (typeof window !== \"undefined\") {\n const computed = getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n return computed || \"#ffffff\";\n }\n return \"#ffffff\";\n }\n return value;\n}\n\n// ═══════════════════════════════════════════════════════════\n// TAB TYPES\n// ═══════════════════════════════════════════════════════════\n\nexport type ProjectContextTab = \"scope\" | \"personas\" | \"screens\" | \"prompts\";\n\ninterface TabConfig {\n id: ProjectContextTab;\n label: string;\n icon: typeof FileText;\n description: string;\n}\n\nconst tabs: TabConfig[] = [\n {\n id: \"scope\",\n label: \"Scope\",\n icon: FileText,\n description: \"Upload your project scope document\",\n },\n {\n id: \"personas\",\n label: \"Personas\",\n icon: Users,\n description: \"Define who you're building for\",\n },\n {\n id: \"screens\",\n label: \"Screens\",\n icon: LayoutGrid,\n description: \"Map out your product's screens and flows\",\n },\n {\n id: \"prompts\",\n label: \"Prompt Helpers\",\n icon: Wand2,\n description: \"Build prompts with existing components\",\n },\n];\n\n// ═══════════════════════════════════════════════════════════\n// SHELL COMPONENT\n// ═══════════════════════════════════════════════════════════\n\ninterface ProjectContextShellProps {\n children: ReactNode;\n activeTab: ProjectContextTab;\n onTabChange: (tab: ProjectContextTab) => void;\n}\n\nexport function ProjectContextShell({\n children,\n activeTab,\n onTabChange,\n}: ProjectContextShellProps) {\n const activeTabConfig = tabs.find((t) => t.id === activeTab);\n const themeImages = useThemeImages();\n const { branding, isMounted } = useThemeBranding();\n \n // Get logo (use light variant for this light sidebar)\n const logoUrl = themeImages.logoLight;\n const iconShape = iconShapes.find(s => s.id === branding.iconShape) || iconShapes[0];\n\n return (\n <div className=\"min-h-screen flex bg-[var(--canvas-background)]\">\n {/* Sidebar */}\n <aside className=\"w-64 border-r border-[var(--canvas-border)] bg-[var(--canvas-background)] flex flex-col shrink-0\">\n {/* Logo + Title Header - matches main header height */}\n <div className=\"px-4 border-b border-[var(--canvas-border)] flex items-center h-[97px]\">\n {/* Logo */}\n <div className={`flex items-center ${isMounted ? 'opacity-100' : 'opacity-0'}`}>\n {logoUrl ? (\n <img \n src={logoUrl} \n alt=\"Logo\" \n className=\"h-8 w-auto object-contain\"\n />\n ) : (\n // Uses CSS variables directly - no JavaScript resolution needed\n <div className=\"flex items-center\">\n <div className=\"relative size-8 shrink-0\">\n {iconShape.renderBackground(branding.bgColor || \"var(--canvas-primary)\")}\n <div className=\"absolute inset-0 flex items-center justify-center z-10\">\n {(() => {\n const IconComponent = iconMap[branding.iconName || \"Buildings\"] || Buildings;\n return <IconComponent weight=\"bold\" size={18} color={branding.iconColor || \"var(--canvas-primary-foreground)\"} />;\n })()}\n </div>\n </div>\n <span className=\"text-xl font-semibold ml-2.5 text-[var(--canvas-text)]\">\n {branding.wordmark || \"canvas\"}\n </span>\n </div>\n )}\n </div>\n </div>\n\n <nav className=\"flex-1 p-2\">\n {tabs.map((tab) => {\n const Icon = tab.icon;\n const isActive = activeTab === tab.id;\n\n return (\n <button\n key={tab.id}\n onClick={() => onTabChange(tab.id)}\n className={cn(\n \"w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left transition-colors mb-1\",\n isActive\n ? \"bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]\"\n : \"text-[var(--canvas-text-muted)] hover:bg-[var(--canvas-surface)] hover:text-[var(--canvas-text)]\"\n )}\n >\n <Icon className=\"size-4 shrink-0\" />\n <span className=\"text-sm font-medium\">{tab.label}</span>\n </button>\n );\n })}\n </nav>\n\n {/* Help section */}\n <div className=\"p-4 border-t border-[var(--canvas-border)]\">\n <div className=\"rounded-lg bg-[var(--canvas-surface)] p-3\">\n <p className=\"text-xs text-[var(--canvas-text-muted)] leading-relaxed\">\n 💡 Use the prompt templates to generate content with Cursor AI\n </p>\n </div>\n </div>\n </aside>\n\n {/* Content Area */}\n <main className=\"flex-1 flex flex-col min-w-0 overflow-hidden\">\n {/* Tab Header */}\n <div className=\"border-b border-[var(--canvas-border)] px-8 py-6 bg-[var(--canvas-background)]\">\n {activeTabConfig && (\n <div>\n <h2 className=\"text-xl font-semibold text-[var(--canvas-text)]\">\n {activeTabConfig.label}\n </h2>\n <p className=\"text-sm text-[var(--canvas-text-muted)]\">\n {activeTabConfig.description}\n </p>\n </div>\n )}\n </div>\n\n {/* Scrollable Content */}\n <ScrollArea className=\"flex-1\">\n <div className=\"p-8\">{children}</div>\n </ScrollArea>\n </main>\n </div>\n );\n}\n","\"use client\";\n\nimport { useRef } from \"react\";\nimport { Image, Paperclip, X } from \"lucide-react\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\n\nexport interface ChatBubbleMessage {\n id: string;\n content: string;\n timestamp: string;\n isSent: boolean;\n senderName?: string;\n senderAvatar?: string;\n}\n\ninterface ChatBubbleProps {\n message: ChatBubbleMessage;\n}\n\nexport function ChatBubble({ message }: ChatBubbleProps) {\n const { content, isSent, senderAvatar, senderName } = message;\n\n if (isSent) {\n return (\n <div className=\"flex justify-end\">\n <div\n className=\"max-w-[375px] p-[var(--spacing-2xl)] rounded-tl-[var(--radius-xl)] rounded-tr-[var(--radius-xl)] rounded-bl-[var(--radius-xl)]\"\n style={{\n backgroundColor: \"var(--canvas-primary)\",\n color: \"var(--canvas-primary-foreground)\",\n }}\n >\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {content}\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-end gap-[var(--spacing-md)]\">\n <Avatar className=\"size-8 shrink-0\">\n <AvatarImage src={senderAvatar} alt={senderName} />\n <AvatarFallback\n className=\"text-[8px]\"\n style={{\n backgroundColor: \"var(--canvas-subtle)\",\n color: \"var(--canvas-muted-foreground)\",\n }}\n >\n {senderName\n ?.split(\" \")\n .map((n) => n[0])\n .join(\"\")}\n </AvatarFallback>\n </Avatar>\n <div\n className=\"max-w-[375px] p-[var(--spacing-2xl)] rounded-tl-[var(--radius-xl)] rounded-tr-[var(--radius-xl)] rounded-br-[var(--radius-xl)]\"\n style={{\n backgroundColor: \"var(--canvas-border)\",\n color: \"var(--canvas-foreground)\",\n }}\n >\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {content}\n </p>\n </div>\n </div>\n );\n}\n\ninterface ChatDateSeparatorProps {\n date: string;\n}\n\nexport function ChatDateSeparator({ date }: ChatDateSeparatorProps) {\n return (\n <div className=\"flex items-center justify-center\">\n <span\n className=\"text-xs font-medium\"\n style={{\n color: \"var(--canvas-muted-foreground)\",\n }}\n >\n {date}\n </span>\n </div>\n );\n}\n\ninterface AttachmentPill {\n id: string;\n name: string;\n type: \"image\" | \"file\";\n url?: string;\n}\n\ninterface MessengerInputProps {\n attachments?: AttachmentPill[];\n onRemoveAttachment?: (id: string) => void;\n onSend?: () => void;\n}\n\nexport function MessengerInput({\n attachments = [],\n onRemoveAttachment,\n onSend,\n}: MessengerInputProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const handleAttachmentClick = () => {\n fileInputRef.current?.click();\n };\n\n return (\n <div\n className=\"border\"\n style={{\n borderColor: \"var(--canvas-border)\",\n backgroundColor: \"var(--canvas-background)\",\n borderRadius: \"var(--radius-md)\",\n }}\n >\n {/* Textarea */}\n <textarea\n placeholder=\"Send a message\"\n rows={2}\n className=\"w-full p-3 resize-none focus:outline-none text-xs\"\n style={{\n backgroundColor: \"transparent\",\n color: \"var(--canvas-foreground)\",\n lineHeight: \"var(--typo-body-xs-line-height)\",\n }}\n />\n\n {/* Attachments Row */}\n {attachments.length > 0 && (\n <div\n className=\"flex flex-wrap gap-2 px-3 py-2 border-t\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n {attachments.map((attachment) => (\n <a\n key={attachment.id}\n href={attachment.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"relative flex items-center gap-[var(--spacing-md)] h-8 px-[var(--spacing-md)] rounded-[var(--radius-xs)] border cursor-pointer hover:opacity-80 transition-opacity\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n borderColor: \"var(--canvas-border)\",\n }}\n >\n {attachment.type === \"image\" ? (\n <Image\n className=\"size-5\"\n style={{ color: \"var(--canvas-primary)\" }}\n />\n ) : (\n <Paperclip\n className=\"size-5\"\n style={{ color: \"var(--canvas-primary)\" }}\n />\n )}\n <span\n className=\"text-xs\"\n style={{ color: \"var(--canvas-muted-foreground)\" }}\n >\n {attachment.name}\n </span>\n <button\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onRemoveAttachment?.(attachment.id);\n }}\n className=\"absolute -top-1 -right-1 size-4 rounded-full flex items-center justify-center hover:opacity-70\"\n style={{ backgroundColor: \"var(--canvas-muted-foreground)\" }}\n >\n <X className=\"size-2\" style={{ color: \"white\" }} />\n </button>\n </a>\n ))}\n </div>\n )}\n\n {/* Bottom Bar */}\n <div\n className=\"flex items-center justify-between px-[var(--spacing-xl)] py-[var(--spacing-lg)] border-t\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n aria-hidden=\"true\"\n />\n <button\n onClick={handleAttachmentClick}\n className=\"hover:opacity-70\"\n aria-label=\"Add attachment\"\n >\n <Paperclip\n className=\"size-5\"\n style={{ color: \"var(--canvas-muted-foreground)\" }}\n />\n </button>\n <button\n onClick={onSend}\n className=\"h-10 px-[var(--spacing-lg)] rounded-[var(--radius-xs)] font-semibold text-xs transition-colors hover:opacity-90\"\n style={{\n backgroundColor: \"var(--canvas-primary)\",\n color: \"var(--canvas-primary-foreground)\",\n }}\n >\n Send\n </button>\n </div>\n </div>\n );\n}\n\n// Alias for video chat compatibility\nexport const ChatInput = MessengerInput;\n\n// Simple chat message list for video chat\ninterface ChatMessageListProps {\n messages?: ChatBubbleMessage[];\n className?: string;\n}\n\nexport function ChatMessageList({ messages = [], className }: ChatMessageListProps) {\n return (\n <div className={className}>\n {messages.map((message) => (\n <ChatBubble key={message.id} message={message} />\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { MoreHorizontal, PenSquare } from \"lucide-react\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { Searchbox } from \"../ui/searchbox\";\n\ninterface ThreadItem {\n id: string;\n name: string;\n avatar?: string;\n lastMessage: string;\n timestamp: string;\n unreadCount?: number;\n isOnline?: boolean;\n}\n\nconst sampleThreads: ThreadItem[] = [\n {\n id: \"1\",\n name: \"Mary Trott\",\n avatar: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop\",\n lastMessage: \"Mary: Thank you so much for sending your...\",\n timestamp: \"Just now\",\n unreadCount: 3,\n },\n {\n id: \"2\",\n name: \"Raj, Mary, Jeff\",\n avatar: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop\",\n lastMessage: \"You: Hi Raj, could you take a look at the doc\",\n timestamp: \"30 mins ago\",\n unreadCount: 3,\n },\n {\n id: \"3\",\n name: \"Raj Mishra\",\n avatar: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=100&h=100&fit=crop\",\n lastMessage: \"You: Hi Raj, could you take a look at the doc\",\n timestamp: \"30 mins ago\",\n },\n];\n\ninterface MessengerSidebarProps {\n selectedThreadId?: string;\n onSelectThread?: (threadId: string) => void;\n className?: string;\n}\n\nexport function MessengerSidebar({\n selectedThreadId,\n onSelectThread,\n className,\n}: MessengerSidebarProps) {\n const [searchValue, setSearchValue] = useState(\"\");\n\n const filteredThreads = sampleThreads.filter((thread) =>\n thread.name.toLowerCase().includes(searchValue.toLowerCase())\n );\n\n return (\n <aside\n className={`flex flex-col h-full border-r w-full md:w-[375px] shrink-0 ${className || \"\"}`}\n style={{\n borderColor: \"var(--canvas-border)\",\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n {/* Header */}\n <div\n className=\"flex items-center justify-between px-4 lg:px-[var(--spacing-5xl)] py-[var(--spacing-xl)] border-b shrink-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <h1\n className=\"font-semibold\"\n style={{\n color: \"var(--canvas-foreground)\",\n fontSize: \"20px\",\n lineHeight: \"28px\",\n }}\n >\n Messages\n </h1>\n <div className=\"flex items-center gap-[var(--spacing-md)]\">\n <button\n className=\"flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n borderColor: \"var(--canvas-border)\",\n }}\n aria-label=\"More options\"\n >\n <MoreHorizontal\n className=\"size-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n <button\n className=\"flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n borderColor: \"var(--canvas-border)\",\n }}\n aria-label=\"Compose message\"\n >\n <PenSquare\n className=\"size-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n </div>\n </div>\n\n {/* Search */}\n <div className=\"px-4 lg:px-[var(--spacing-5xl)] py-[var(--spacing-xl)] shrink-0 border-b\" style={{ borderColor: \"var(--canvas-border)\" }}>\n <Searchbox\n value={searchValue}\n onChange={setSearchValue}\n placeholder=\"Search messages\"\n inputSize=\"sm\"\n />\n </div>\n\n {/* Thread List */}\n <div className=\"flex-1 overflow-y-auto\">\n {filteredThreads.map((thread) => (\n <ThreadRow\n key={thread.id}\n thread={thread}\n isSelected={selectedThreadId === thread.id}\n onSelect={() => onSelectThread?.(thread.id)}\n />\n ))}\n </div>\n </aside>\n );\n}\n\ninterface ThreadRowProps {\n thread: ThreadItem;\n isSelected?: boolean;\n onSelect?: () => void;\n}\n\nfunction ThreadRow({ thread, isSelected, onSelect }: ThreadRowProps) {\n return (\n <button\n onClick={onSelect}\n className=\"w-full flex items-center gap-[var(--spacing-xl)] px-4 lg:px-[var(--spacing-5xl)] py-[var(--spacing-xl)] transition-colors text-left border-b\"\n style={{\n backgroundColor: isSelected\n ? \"var(--canvas-surface)\"\n : \"var(--canvas-background)\",\n borderColor: \"var(--canvas-border)\",\n }}\n >\n {/* Avatar with unread badge */}\n <div className=\"relative shrink-0\">\n <Avatar className=\"size-12\">\n <AvatarImage src={thread.avatar} alt={thread.name} />\n <AvatarFallback\n className=\"text-xs\"\n style={{\n backgroundColor: \"var(--canvas-primary)\",\n color: \"var(--canvas-primary-foreground)\",\n }}\n >\n {thread.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")}\n </AvatarFallback>\n </Avatar>\n {thread.unreadCount && (\n <div\n className=\"absolute size-5 rounded-full flex items-center justify-center text-[10px] font-semibold\"\n style={{\n backgroundColor: \"var(--canvas-text-placeholder)\",\n color: \"var(--canvas-primary-foreground)\",\n bottom: \"1px\",\n right: \"-2px\",\n }}\n >\n {thread.unreadCount}\n </div>\n )}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-[var(--spacing-xs)]\">\n <div className=\"flex items-center justify-between gap-2\">\n <span\n className=\"font-semibold truncate\"\n style={{\n color: \"var(--canvas-foreground)\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {thread.name}\n </span>\n <span\n className=\"shrink-0 font-normal\"\n style={{\n color: \"var(--canvas-text-muted)\",\n fontSize: \"var(--typo-body-xs-size)\",\n lineHeight: \"var(--typo-body-xs-line-height)\",\n }}\n >\n {thread.timestamp}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <span\n className=\"truncate\"\n style={{\n color: \"var(--canvas-text-muted)\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {thread.lastMessage}\n </span>\n </div>\n </div>\n </button>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ChevronLeft, ChevronRight, MoreVertical, Paperclip } from \"lucide-react\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { cn } from \"../../lib/utils\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ChatThread {\n id: string;\n name: string;\n avatarUrl?: string;\n preview: string;\n unreadCount?: number;\n}\n\nexport interface ChatMessageData {\n id: string;\n senderName: string;\n senderAvatar?: string;\n content: string;\n timestamp: string;\n}\n\ninterface MessageThreadItemProps {\n thread: ChatThread;\n onClick?: () => void;\n}\n\ninterface ConversationMessageProps {\n message: ChatMessageData;\n}\n\ninterface ChatInputBarProps {\n placeholder?: string;\n onSend?: (message: string) => void;\n}\n\ninterface ConversationHeaderProps {\n name: string;\n onBackClick?: () => void;\n onMenuClick?: () => void;\n}\n\nexport interface BottomInputChatWidgetProps {\n variant?: \"threads\" | \"conversation\";\n title?: string;\n threads?: ChatThread[];\n messages?: ChatMessageData[];\n conversationName?: string;\n onThreadClick?: (threadId: string) => void;\n onBackClick?: () => void;\n onSend?: (message: string) => void;\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultThreads: ChatThread[] = [\n {\n id: \"1\",\n name: \"Jeffrey Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n preview: \"That's true. Let's go ahead and book the mountain cabin then!\",\n unreadCount: 12,\n },\n {\n id: \"2\",\n name: \"Mary Trott\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n preview: \"Sounds great! Let's meet at 2PM.\",\n },\n {\n id: \"3\",\n name: \"Taylor Reed\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n preview: \"Thanks for sending the conference agenda. I'll add my comments in the document.\",\n },\n];\n\nconst defaultMessages: ChatMessageData[] = [\n {\n id: \"1\",\n senderName: \"Jeffrey Connor\",\n senderAvatar: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n content: \"That's true. Let's go ahead and book the mountain cabin then!\",\n timestamp: \"Feb 23, 1:32 PM\",\n },\n {\n id: \"2\",\n senderName: \"Mary Trott\",\n senderAvatar: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n content: \"Sounds great! Let's meet at 2PM.\",\n timestamp: \"Feb 23, 3:50 PM\",\n },\n {\n id: \"3\",\n senderName: \"Taylor Reed\",\n senderAvatar: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n content: \"Thanks for sending the conference agenda. I'll add my comments in the document.\",\n timestamp: \"Feb 23, 6:13 PM\",\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\nfunction MessageThreadItem({ thread, onClick }: MessageThreadItemProps) {\n const initials = thread.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\");\n\n return (\n <div\n className=\"flex items-start gap-[var(--spacing-xl)] py-[var(--spacing-2xl)] cursor-pointer hover:opacity-80 transition-opacity\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n onClick={onClick}\n >\n {/* Avatar */}\n <Avatar\n className=\"size-12 shrink-0\"\n style={{\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={thread.avatarUrl} alt={thread.name} />\n <AvatarFallback\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n color: \"var(--canvas-text-muted)\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n }}\n >\n {initials}\n </AvatarFallback>\n </Avatar>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {thread.name}\n </p>\n <p\n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {thread.preview}\n </p>\n </div>\n\n {/* Right side: unread badge + chevron */}\n <div className=\"flex items-center gap-[var(--spacing-xl)] self-stretch shrink-0\">\n {thread.unreadCount && thread.unreadCount > 0 && (\n <div\n className=\"flex items-center justify-center size-10 rounded-full\"\n style={{\n backgroundColor: \"var(--canvas-primary)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary-foreground)\",\n }}\n >\n {thread.unreadCount}\n </span>\n </div>\n )}\n <ChevronRight\n className=\"size-10\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n strokeWidth={1.5}\n />\n </div>\n </div>\n );\n}\n\nfunction ConversationMessage({ message }: ConversationMessageProps) {\n const initials = message.senderName\n .split(\" \")\n .map((n) => n[0])\n .join(\"\");\n\n return (\n <div className=\"flex items-start gap-[var(--spacing-xl)] py-[var(--spacing-2xl)]\">\n {/* Avatar */}\n <Avatar\n className=\"size-12 shrink-0\"\n style={{\n borderRadius: \"var(--radius-xs)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={message.senderAvatar} alt={message.senderName} />\n <AvatarFallback\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n color: \"var(--canvas-text-muted)\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n borderRadius: \"var(--radius-xs)\",\n }}\n >\n {initials}\n </AvatarFallback>\n </Avatar>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-[var(--spacing-xl)]\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {message.senderName}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {message.timestamp}\n </span>\n </div>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {message.content}\n </p>\n </div>\n </div>\n );\n}\n\nfunction ConversationHeader({ name, onBackClick, onMenuClick }: ConversationHeaderProps) {\n return (\n <div className=\"flex items-center gap-[var(--spacing-xs)]\">\n <button\n onClick={onBackClick}\n className=\"size-10 flex items-center justify-center hover:opacity-70 transition-opacity\"\n aria-label=\"Go back\"\n >\n <ChevronLeft\n className=\"size-6\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n strokeWidth={1.5}\n />\n </button>\n <span\n className=\"flex-1\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"1.5\",\n color: \"var(--canvas-text)\",\n }}\n >\n {name}\n </span>\n <button\n onClick={onMenuClick}\n className=\"size-8 flex items-center justify-center hover:opacity-70 transition-opacity rounded-full\"\n aria-label=\"More options\"\n >\n <MoreVertical\n className=\"size-5\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n </button>\n </div>\n );\n}\n\nfunction ChatInputBar({ placeholder = \"Send a message\", onSend }: ChatInputBarProps) {\n const [value, setValue] = useState(\"\");\n\n const handleSend = () => {\n if (value.trim() && onSend) {\n onSend(value.trim());\n setValue(\"\");\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n return (\n <div\n className=\"flex items-center gap-[var(--spacing-xl)] h-20\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Input field */}\n <div className=\"flex-1 flex items-center gap-[var(--spacing-md)] h-11\">\n <input\n type=\"text\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"flex-1 bg-transparent outline-none\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n />\n <button\n className=\"size-6 flex items-center justify-center hover:opacity-70 transition-opacity\"\n aria-label=\"Attach file\"\n >\n <Paperclip\n className=\"size-6\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n </button>\n </div>\n\n {/* Send button */}\n <button\n onClick={handleSend}\n className=\"h-11 px-[var(--spacing-xl)] flex items-center justify-center transition-colors hover:opacity-90\"\n style={{\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderRadius: \"var(--radius-xs)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n Send\n </button>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\nexport function BottomInputChatWidget({\n variant = \"threads\",\n title = \"Messages\",\n threads = defaultThreads,\n messages = defaultMessages,\n conversationName = \"Mary Trott\",\n onThreadClick,\n onBackClick,\n onSend,\n className,\n}: BottomInputChatWidgetProps) {\n if (variant === \"threads\") {\n return (\n <div\n className={cn(\n \"flex flex-col gap-[var(--spacing-3xl)] py-[var(--spacing-xl)]\",\n className\n )}\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n {/* Title */}\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n </div>\n\n {/* Thread list */}\n <div className=\"flex flex-col\">\n {threads.map((thread, index) => (\n <div\n key={thread.id}\n style={{\n borderTop: index === 0 ? \"1px solid var(--canvas-border)\" : \"none\",\n }}\n >\n <MessageThreadItem\n thread={thread}\n onClick={() => onThreadClick?.(thread.id)}\n />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n // Conversation variant\n return (\n <div\n className={cn(\n \"flex flex-col gap-[var(--spacing-3xl)] py-[var(--spacing-xl)]\",\n className\n )}\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n {/* Messages section */}\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n {/* Header */}\n <ConversationHeader\n name={conversationName}\n onBackClick={onBackClick}\n />\n\n {/* Messages list */}\n <div className=\"flex flex-col\">\n {messages.map((message, index) => (\n <div\n key={message.id}\n style={{\n borderTop: index === 0 ? \"1px solid var(--canvas-border)\" : \"none\",\n }}\n >\n <ConversationMessage message={message} />\n </div>\n ))}\n </div>\n\n {/* Input bar */}\n <ChatInputBar onSend={onSend} />\n </div>\n </div>\n );\n}\n","import { cn } from \"../../lib/utils\";\nimport { ReactNode, Children } from \"react\";\n\ninterface ContentDropzoneProps {\n /** Height of the dropzone (only applies when empty) */\n height?: string;\n /** Additional class names */\n className?: string;\n /** Content elements */\n children?: ReactNode;\n}\n\n/**\n * Canvas Design System - Content Dropzone\n * \n * A placeholder component representing where content blocks would be inserted.\n * When empty, shows a dashed border placeholder.\n * When children are added, becomes a flex column with 40px gap spacing.\n */\nexport function ContentDropzone({ \n height = \"480px\",\n className,\n children,\n}: ContentDropzoneProps) {\n const hasChildren = Children.count(children) > 0;\n\n if (hasChildren) {\n return (\n <div \n className={cn(\n \"flex flex-col gap-10\",\n className\n )}\n >\n {children}\n </div>\n );\n }\n\n return (\n <div \n className={cn(\n \"flex items-center justify-center\",\n \"bg-white\",\n \"border-2 border-dashed border-[var(--canvas-border)]\",\n \"rounded-[var(--radius-nav)]\",\n \"overflow-hidden\",\n className\n )}\n style={{ minHeight: height }}\n />\n );\n}\n\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\n\ninterface GradientBannerProps {\n /** Height of the banner */\n height?: string;\n /** Additional class names */\n className?: string;\n /** Children to render inside the banner */\n children?: React.ReactNode;\n}\n\n/**\n * Convert hex color to HSL\n */\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } {\n // Remove # if present\n hex = hex.replace(/^#/, \"\");\n\n // Parse hex values\n const r = parseInt(hex.substring(0, 2), 16) / 255;\n const g = parseInt(hex.substring(2, 4), 16) / 255;\n const b = parseInt(hex.substring(4, 6), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return { h: h * 360, s: s * 100, l: l * 100 };\n}\n\n/**\n * Convert HSL to hex color\n */\nfunction hslToHex(h: number, s: number, l: number): string {\n s /= 100;\n l /= 100;\n\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = l - c / 2;\n\n let r = 0, g = 0, b = 0;\n\n if (h >= 0 && h < 60) {\n r = c; g = x; b = 0;\n } else if (h >= 60 && h < 120) {\n r = x; g = c; b = 0;\n } else if (h >= 120 && h < 180) {\n r = 0; g = c; b = x;\n } else if (h >= 180 && h < 240) {\n r = 0; g = x; b = c;\n } else if (h >= 240 && h < 300) {\n r = x; g = 0; b = c;\n } else if (h >= 300 && h < 360) {\n r = c; g = 0; b = x;\n }\n\n const toHex = (n: number) => {\n const hex = Math.round((n + m) * 255).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\n/**\n * Generate analogous colors based on a primary color\n * Creates a gradient with colors adjacent on the color wheel\n * Uses darker lightness values similar to the flair background (~25-40%)\n */\nfunction generateAnalogousGradient(primaryColor: string): string {\n const hsl = hexToHsl(primaryColor);\n \n // Target lightness around 25-40% to match flair background darkness\n const baseLightness = 30;\n \n // Create analogous colors by shifting hue\n // Spread across the color wheel for a smooth gradient with rich, dark colors\n const colors = [\n hslToHex((hsl.h - 30 + 360) % 360, Math.min(hsl.s + 15, 100), baseLightness + 10), // Shifted left\n hslToHex((hsl.h - 10 + 360) % 360, Math.min(hsl.s + 10, 100), baseLightness + 5), // Slightly shifted\n hslToHex(hsl.h, Math.min(hsl.s + 5, 100), baseLightness), // Primary base\n hslToHex((hsl.h + 20) % 360, Math.min(hsl.s + 10, 100), baseLightness + 5), // Shifted right\n hslToHex((hsl.h + 45) % 360, Math.min(hsl.s + 15, 100), baseLightness + 10), // Further right\n ];\n\n return `linear-gradient(135deg, ${colors[0]} 0%, ${colors[1]} 25%, ${colors[2]} 50%, ${colors[3]} 75%, ${colors[4]} 100%)`;\n}\n\n/**\n * Canvas Design System - Gradient Banner Component\n *\n * A dynamic gradient banner that generates analogous colors\n * based on the primary theme color. Updates live when the\n * primary color changes.\n */\nexport function GradientBanner({\n height = \"200px\",\n className,\n children,\n}: GradientBannerProps) {\n const [gradient, setGradient] = useState<string>(\n \"linear-gradient(135deg, #1a4a7a 0%, #093378 50%, #3d1a78 100%)\"\n );\n\n useEffect(() => {\n // Function to update gradient based on primary color\n const updateGradient = () => {\n const primaryColor = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--canvas-primary\")\n .trim();\n \n if (primaryColor) {\n const newGradient = generateAnalogousGradient(primaryColor);\n setGradient(newGradient);\n }\n };\n\n // Initial update\n updateGradient();\n\n // Create a MutationObserver to watch for style changes on :root\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === \"attributes\" && mutation.attributeName === \"style\") {\n updateGradient();\n }\n });\n });\n\n // Observe the document element for style attribute changes\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"style\"],\n });\n\n // Also listen for custom theme change events if they exist\n const handleThemeChange = () => updateGradient();\n window.addEventListener(\"theme-change\", handleThemeChange);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"theme-change\", handleThemeChange);\n };\n }, []);\n\n return (\n <div\n className={cn(\"relative w-full overflow-hidden\", className)}\n style={{\n height,\n background: gradient,\n }}\n >\n {children}\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\ninterface LoginBrandingPanelProps {\n /** Background image URL */\n backgroundImage?: string;\n /** Title text */\n title?: string;\n /** Description text */\n description?: string;\n /** Opacity of the flair color overlay (0-1, default 0.7) */\n overlayOpacity?: number;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Login Branding Panel Component\n *\n * A right-side branding panel for login/signup pages featuring:\n * - Full-height background image with semi-transparent flair color overlay\n * - Title and description text at the bottom\n *\n * The overlay uses the flair background CSS variable for live theming.\n */\nexport function LoginBrandingPanel({\n backgroundImage = \"/brand-assets/bg.jpg\",\n title = \"Title\",\n description = \"Description\",\n overlayOpacity = 0.7,\n className,\n}: LoginBrandingPanelProps) {\n return (\n <div\n className={cn(\n \"relative flex-1 flex flex-col overflow-hidden\",\n className\n )}\n >\n {/* Background Image */}\n <img\n src={backgroundImage}\n alt=\"\"\n className=\"absolute inset-0 w-full h-full object-cover pointer-events-none\"\n />\n\n {/* Flair Color Overlay */}\n <div\n className=\"absolute inset-0 bg-[var(--canvas-flair-bg)]\"\n style={{\n opacity: overlayOpacity,\n }}\n />\n\n {/* Text Content at Bottom */}\n <div className=\"relative z-10 flex flex-col justify-end h-full p-16\">\n <div className=\"space-y-1.5\">\n <p\n className=\"text-white font-bold\"\n style={{\n fontSize: \"var(--typo-body-l-size)\",\n lineHeight: \"var(--typo-body-l-line-height)\",\n }}\n >\n {title}\n </p>\n <p\n className=\"text-white/90\"\n style={{\n fontSize: \"var(--typo-body-l-size)\",\n lineHeight: \"var(--typo-body-l-line-height)\",\n fontWeight: \"var(--typo-body-l-weight)\",\n }}\n >\n {description}\n </p>\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\ninterface EmptyStateProps {\n icon: string;\n title: string;\n description?: string;\n className?: string;\n}\n\nexport function EmptyState({ icon, title, description, className }: EmptyStateProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 px-6\",\n \"rounded-xl border-2 border-dashed border-[var(--canvas-border)]\",\n \"bg-[var(--canvas-surface)]\",\n className\n )}\n >\n <span className=\"text-4xl mb-3\">{icon}</span>\n <p className=\"text-[var(--canvas-text-muted)] font-medium text-center\">\n {title}\n </p>\n {description && (\n <p className=\"text-sm text-[var(--canvas-text-placeholder)] text-center mt-1 max-w-md\">\n {description}\n </p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { ChevronRight } from \"lucide-react\";\n\ninterface MenuSectionItemProps {\n /** Menu item label */\n label: string;\n /** Optional children content shown when expanded */\n children?: React.ReactNode;\n /** Whether the item starts expanded */\n defaultExpanded?: boolean;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Menu Section Item Component\n * \n * An individual expandable menu item with a chevron icon that rotates when expanded.\n * \n * @example\n * ```tsx\n * <MenuSectionItem label=\"Menu tab\">\n * <p>Expanded content goes here</p>\n * </MenuSectionItem>\n * ```\n */\nexport function MenuSectionItem({\n label,\n children,\n defaultExpanded = false,\n className,\n}: MenuSectionItemProps) {\n const [expanded, setExpanded] = useState(defaultExpanded);\n\n return (\n <div className={cn(\"w-full\", className)}>\n {/* Clickable header */}\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"w-full flex items-center gap-4 py-6 text-left group\"\n >\n {/* Circular icon button with chevron */}\n <div \n className={cn(\n \"size-8 rounded-full flex items-center justify-center shrink-0\",\n \"bg-[var(--canvas-surface)] border border-[var(--canvas-border-disabled)]\",\n \"transition-colors group-hover:bg-[var(--canvas-surface-brand)]\"\n )}\n >\n <ChevronRight \n className={cn(\n \"size-5 text-[var(--canvas-text-placeholder)] transition-transform duration-200\",\n expanded && \"rotate-90\"\n )}\n />\n </div>\n \n {/* Label - Uses typography variables */}\n <span \n className=\"text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-menu-label-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-menu-label-size)\",\n fontWeight: \"var(--typo-menu-label-weight)\",\n letterSpacing: \"var(--typo-menu-label-spacing)\",\n lineHeight: \"var(--typo-menu-label-line-height)\",\n }}\n >\n {label}\n </span>\n </button>\n\n {/* Expandable content */}\n {children && (\n <div\n className={cn(\n \"overflow-hidden transition-all duration-200 ease-in-out\",\n expanded ? \"max-h-[1000px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"pl-12 pb-6\">\n {children}\n </div>\n </div>\n )}\n </div>\n );\n}\n\ninterface MenuSectionProps {\n /** Array of menu items */\n items: Array<{\n id: string;\n label: string;\n children?: React.ReactNode;\n defaultExpanded?: boolean;\n }>;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Menu Section Component\n * \n * A group of expandable menu items with border separators.\n * \n * @example\n * ```tsx\n * <MenuSection\n * items={[\n * { id: \"1\", label: \"Menu tab\" },\n * { id: \"2\", label: \"Another menu tab\" },\n * ]}\n * />\n * ```\n */\nexport function MenuSection({\n items,\n className,\n}: MenuSectionProps) {\n return (\n <div className={cn(\"w-full\", className)}>\n {items.map((item, index) => (\n <div\n key={item.id}\n className={cn(\n \"border-[var(--canvas-border)]\",\n // All items get bottom border only\n \"border-b\"\n )}\n >\n <MenuSectionItem\n label={item.label}\n defaultExpanded={item.defaultExpanded}\n >\n {item.children}\n </MenuSectionItem>\n </div>\n ))}\n </div>\n );\n}\n\ninterface SectionHeaderProps {\n /** Section title */\n title: string;\n /** Section description */\n description?: string;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Section Header Component\n * \n * A simple title and description header for content sections.\n * \n * @example\n * ```tsx\n * <SectionHeader title=\"Title\" description=\"Description\" />\n * ```\n */\nexport function SectionHeader({\n title,\n description,\n className,\n}: SectionHeaderProps) {\n return (\n <div className={cn(\"flex flex-col gap-1\", className)}>\n {/* Title - 24px semibold */}\n <h3 className=\"text-2xl font-semibold text-[var(--canvas-text)] leading-[30px]\">\n {title}\n </h3>\n {/* Description - 16px regular */}\n {description && (\n <p className=\"text-base font-normal text-[var(--canvas-text-muted)] leading-6\">\n {description}\n </p>\n )}\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Typography } from \"../ui/typography\";\nimport {\n Briefcase,\n Star,\n User,\n type LucideIcon,\n} from \"lucide-react\";\n\ntype TabIconType = \"briefcase\" | \"star\" | \"user\";\n\ninterface PillTab {\n id: string;\n label: string;\n icon?: TabIconType;\n}\n\nconst tabIcons: Record<TabIconType, LucideIcon> = {\n briefcase: Briefcase,\n star: Star,\n user: User,\n};\n\nexport interface PillTabsProps {\n tabs: PillTab[];\n activeTab?: string;\n onTabChange?: (tabId: string) => void;\n className?: string;\n}\n\n/**\n * Canvas Design System - Pill Tabs Component\n *\n * A horizontal tab navigation with pill-shaped tabs.\n * Each tab can have an optional icon.\n */\nexport function PillTabs({\n tabs,\n activeTab,\n onTabChange,\n className,\n}: PillTabsProps) {\n return (\n <div className={cn(\"flex gap-[var(--spacing-xl)]\", className)}>\n {tabs.map((tab) => {\n const isActive = activeTab === tab.id;\n const IconComponent = tab.icon ? tabIcons[tab.icon] : null;\n\n return (\n <button\n key={tab.id}\n onClick={() => onTabChange?.(tab.id)}\n className={cn(\n \"flex items-center gap-[var(--spacing-md)] h-10 px-[var(--spacing-xl)] rounded-full transition-colors\",\n \"bg-[var(--canvas-border)]\",\n isActive && \"bg-[var(--canvas-surface-brand)]\"\n )}\n >\n {IconComponent && (\n <IconComponent\n className={cn(\n \"size-4\",\n isActive\n ? \"text-[var(--canvas-text)]\"\n : \"text-[var(--canvas-text)]\"\n )}\n />\n )}\n <Typography\n variant=\"body-s\"\n className={cn(\n isActive\n ? \"text-[var(--canvas-text)]\"\n : \"text-[var(--canvas-text)]\"\n )}\n >\n {tab.label}\n </Typography>\n </button>\n );\n })}\n </div>\n );\n}\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Minus, Plus } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { CheckboxWithLabel } from \"../ui/checkbox\";\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { Switch } from \"../ui/switch\";\nimport { Slider } from \"../ui/slider\";\nimport { RangeInput } from \"../ui/range-input\";\nimport { SelectablePills, type PillOption } from \"../ui/selectable-pills\";\nimport { Label } from \"../ui/label\";\n\n// ============================================\n// Filter Section Header Component\n// ============================================\n\ninterface FilterSectionHeaderProps {\n title: string;\n isExpanded: boolean;\n onToggle: () => void;\n onClear?: () => void;\n showClear?: boolean;\n}\n\nfunction FilterSectionHeader({ title, isExpanded, onToggle, onClear, showClear = true }: FilterSectionHeaderProps) {\n return (\n <div className=\"flex items-center justify-between h-7 w-full\">\n <button\n type=\"button\"\n onClick={onToggle}\n className=\"flex items-center gap-1.5 hover:opacity-70 transition-opacity\"\n >\n {isExpanded ? (\n <Minus className=\"size-3.5 text-[var(--canvas-text)]\" />\n ) : (\n <Plus className=\"size-3.5 text-[var(--canvas-text)]\" />\n )}\n <span \n className=\"font-semibold text-[var(--canvas-text)]\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n {title}\n </span>\n </button>\n {showClear && onClear && isExpanded && (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"text-[10px] text-[var(--canvas-destructive)] hover:underline\"\n >\n Clear\n </button>\n )}\n </div>\n );\n}\n\n// ============================================\n// Checkbox Filter Section\n// ============================================\n\nexport interface CheckboxFilterOption {\n id: string;\n label: string;\n}\n\ninterface CheckboxFilterSectionProps {\n title: string;\n options: CheckboxFilterOption[];\n selected: string[];\n onSelectionChange: (selected: string[]) => void;\n onClear?: () => void;\n}\n\nfunction CheckboxFilterSection({ \n title, \n options, \n selected, \n onSelectionChange,\n onClear,\n}: CheckboxFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleToggle = (optionId: string, checked: boolean) => {\n if (checked) {\n onSelectionChange([...selected, optionId]);\n } else {\n onSelectionChange(selected.filter(id => id !== optionId));\n }\n };\n\n const handleClear = () => {\n onSelectionChange([]);\n onClear?.();\n };\n\n return (\n <div className=\"flex flex-col gap-3 pb-6 border-b border-[var(--canvas-border)]\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={selected.length > 0} \n />\n {isExpanded && (\n <div className=\"flex flex-col gap-3\">\n {options.map((option) => (\n <CheckboxWithLabel\n key={option.id}\n size=\"sm\"\n checked={selected.includes(option.id)}\n onCheckedChange={(checked) => handleToggle(option.id, checked === true)}\n >\n {option.label}\n </CheckboxWithLabel>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================\n// Pills Filter Section\n// ============================================\n\ninterface PillsFilterSectionProps {\n title: string;\n options: PillOption[];\n selected: string[];\n onSelectionChange: (selected: string[]) => void;\n onClear?: () => void;\n}\n\nfunction PillsFilterSection({ \n title, \n options, \n selected, \n onSelectionChange,\n onClear,\n}: PillsFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleClear = () => {\n onSelectionChange([]);\n onClear?.();\n };\n\n return (\n <div className=\"flex flex-col gap-3 pt-5 pb-6 border-b border-[var(--canvas-border)]\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={selected.length > 0} \n />\n {isExpanded && (\n <SelectablePills\n options={options}\n selected={selected}\n onSelectionChange={onSelectionChange}\n inputSize=\"sm\"\n />\n )}\n </div>\n );\n}\n\n// ============================================\n// Price Range Filter Section\n// ============================================\n\ninterface PriceRangeFilterSectionProps {\n title: string;\n minValue: string;\n maxValue: string;\n onMinChange: (value: string) => void;\n onMaxChange: (value: string) => void;\n onClear?: () => void;\n}\n\nfunction PriceRangeFilterSection({ \n title, \n minValue, \n maxValue, \n onMinChange,\n onMaxChange,\n onClear,\n}: PriceRangeFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleClear = () => {\n onMinChange(\"\");\n onMaxChange(\"\");\n onClear?.();\n };\n\n const hasValue = minValue !== \"\" || maxValue !== \"\";\n\n return (\n <div className=\"flex flex-col gap-3 pt-5 pb-6 border-b border-[var(--canvas-border)]\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={hasValue} \n />\n {isExpanded && (\n <RangeInput\n inputSize=\"sm\"\n minValue={minValue}\n maxValue={maxValue}\n onMinChange={onMinChange}\n onMaxChange={onMaxChange}\n minPlaceholder=\"Min\"\n maxPlaceholder=\"Max\"\n />\n )}\n </div>\n );\n}\n\n// ============================================\n// Radio Filter Section\n// ============================================\n\ninterface RadioFilterOption {\n id: string;\n label: string;\n}\n\ninterface RadioFilterSectionProps {\n title: string;\n options: RadioFilterOption[];\n selected: string;\n onSelectionChange: (selected: string) => void;\n onClear?: () => void;\n}\n\nfunction RadioFilterSection({ \n title, \n options, \n selected, \n onSelectionChange,\n onClear,\n}: RadioFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleClear = () => {\n onSelectionChange(\"\");\n onClear?.();\n };\n\n return (\n <div className=\"flex flex-col gap-3 pt-5 pb-6 border-b border-[var(--canvas-border)]\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={selected !== \"\"} \n />\n {isExpanded && (\n <RadioGroup value={selected} onValueChange={onSelectionChange} className=\"gap-3\">\n {options.map((option) => (\n <div key={option.id} className=\"flex items-center gap-2\">\n <RadioGroupItem value={option.id} id={option.id} className=\"size-3.5\" />\n <Label \n htmlFor={option.id} \n className=\"font-normal text-[var(--canvas-text-muted)] cursor-pointer\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n {option.label}\n </Label>\n </div>\n ))}\n </RadioGroup>\n )}\n </div>\n );\n}\n\n// ============================================\n// Slider Filter Section\n// ============================================\n\ninterface SliderFilterSectionProps {\n title: string;\n value: number[];\n onValueChange: (value: number[]) => void;\n min?: number;\n max?: number;\n step?: number;\n labelFormatter?: (value: number[]) => string;\n onClear?: () => void;\n}\n\nfunction SliderFilterSection({ \n title, \n value, \n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n labelFormatter,\n onClear,\n}: SliderFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleClear = () => {\n onValueChange([min, max]);\n onClear?.();\n };\n\n const isDefault = value[0] === min && value[1] === max;\n\n return (\n <div className=\"flex flex-col gap-3 pt-5 pb-6 border-b border-[var(--canvas-border)]\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={!isDefault} \n />\n {isExpanded && (\n <Slider\n inputSize=\"sm\"\n value={value}\n onValueChange={onValueChange}\n min={min}\n max={max}\n step={step}\n labelFormatter={labelFormatter}\n />\n )}\n </div>\n );\n}\n\n// ============================================\n// Toggle Filter Section\n// ============================================\n\ninterface ToggleFilterSectionProps {\n title: string;\n label: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n onClear?: () => void;\n}\n\nfunction ToggleFilterSection({ \n title, \n label,\n checked, \n onCheckedChange,\n onClear,\n}: ToggleFilterSectionProps) {\n const [isExpanded, setIsExpanded] = React.useState(true);\n\n const handleClear = () => {\n onCheckedChange(false);\n onClear?.();\n };\n\n return (\n <div className=\"flex flex-col gap-3 pt-5 pb-6\">\n <FilterSectionHeader \n title={title} \n isExpanded={isExpanded}\n onToggle={() => setIsExpanded(!isExpanded)}\n onClear={handleClear} \n showClear={checked} \n />\n {isExpanded && (\n <div className=\"flex items-center gap-3\">\n <Switch checked={checked} onCheckedChange={onCheckedChange} />\n <span \n className=\"text-[var(--canvas-text-muted)]\"\n style={{ fontSize: \"var(--input-small-font-size)\" }}\n >\n {label}\n </span>\n </div>\n )}\n </div>\n );\n}\n\n// ============================================\n// Main SearchSidebar Component\n// ============================================\n\nexport interface SearchSidebarState {\n specials: string[];\n languages: string[];\n priceMin: string;\n priceMax: string;\n starRating: string;\n distance: number[];\n membershipDeals: boolean;\n}\n\nexport interface SearchSidebarProps {\n className?: string;\n state: SearchSidebarState;\n onStateChange: (state: SearchSidebarState) => void;\n}\n\n// Default filter options\nconst defaultSpecialsOptions: CheckboxFilterOption[] = [\n { id: \"deals\", label: \"Deals & discounts\" },\n { id: \"cancellation\", label: \"Free cancellation\" },\n { id: \"sellout\", label: \"Likely to sell out\" },\n { id: \"skipline\", label: \"Skip-the-line\" },\n { id: \"private\", label: \"Private tour\" },\n { id: \"exclusive\", label: \"Exclusive deals\" },\n];\n\nconst defaultLanguageOptions: PillOption[] = [\n { id: \"english\", label: \"English\" },\n { id: \"mandarin\", label: \"Mandarin\" },\n { id: \"spanish\", label: \"Spanish\" },\n { id: \"french\", label: \"French\" },\n { id: \"german\", label: \"German\" },\n { id: \"italian\", label: \"Italian\" },\n { id: \"japanese\", label: \"Japanese\" },\n];\n\nconst defaultStarRatingOptions: RadioFilterOption[] = [\n { id: \"5\", label: \"5 stars\" },\n { id: \"4\", label: \"4 stars\" },\n { id: \"3\", label: \"3 stars\" },\n { id: \"2\", label: \"2 stars\" },\n { id: \"1\", label: \"1 star\" },\n];\n\nexport function SearchSidebar({ \n className, \n state, \n onStateChange,\n}: SearchSidebarProps) {\n const updateState = (partial: Partial<SearchSidebarState>) => {\n onStateChange({ ...state, ...partial });\n };\n\n return (\n <aside className={cn(\"w-80 shrink-0 pt-4\", className)}>\n {/* Specials - Checkbox Filter */}\n <CheckboxFilterSection\n title=\"Specials\"\n options={defaultSpecialsOptions}\n selected={state.specials}\n onSelectionChange={(specials) => updateState({ specials })}\n />\n\n {/* Languages - Pills Filter */}\n <PillsFilterSection\n title=\"Languages\"\n options={defaultLanguageOptions}\n selected={state.languages}\n onSelectionChange={(languages) => updateState({ languages })}\n />\n\n {/* Price - Range Input Filter */}\n <PriceRangeFilterSection\n title=\"Price\"\n minValue={state.priceMin}\n maxValue={state.priceMax}\n onMinChange={(priceMin) => updateState({ priceMin })}\n onMaxChange={(priceMax) => updateState({ priceMax })}\n />\n\n {/* Star Rating - Radio Filter */}\n <RadioFilterSection\n title=\"Star rating\"\n options={defaultStarRatingOptions}\n selected={state.starRating}\n onSelectionChange={(starRating) => updateState({ starRating })}\n />\n\n {/* Distance - Slider Filter */}\n <SliderFilterSection\n title=\"Distance\"\n value={state.distance}\n onValueChange={(distance) => updateState({ distance })}\n min={0}\n max={100}\n labelFormatter={(values) => `${values[0]} - ${values[1]} miles`}\n />\n\n {/* Membership Deals - Toggle Filter */}\n <ToggleFilterSection\n title=\"Membership deals\"\n label=\"Show membership pricing\"\n checked={state.membershipDeals}\n onCheckedChange={(membershipDeals) => updateState({ membershipDeals })}\n />\n </aside>\n );\n}\n\n// Export sub-components for custom usage\nexport {\n FilterSectionHeader,\n CheckboxFilterSection,\n PillsFilterSection,\n PriceRangeFilterSection,\n RadioFilterSection,\n SliderFilterSection,\n ToggleFilterSection,\n};\n\n// Export default options\nexport {\n defaultSpecialsOptions,\n defaultLanguageOptions,\n defaultStarRatingOptions,\n};\n\n","\"use client\";\n\nimport { MoreVertical } from \"lucide-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../../lib/utils\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface MenufocusItem {\n /** Unique identifier for the menu item */\n id: string;\n /** Display label for the menu item */\n label: string;\n /** Callback when item is clicked */\n onClick?: () => void;\n /** Visual variant - use \"destructive\" for delete actions */\n variant?: \"default\" | \"destructive\";\n /** Whether the item is disabled */\n disabled?: boolean;\n}\n\nexport interface MenufocusTemplateProps {\n /** Array of menu items to display */\n items?: MenufocusItem[];\n /** Accessible label for the trigger button */\n ariaLabel?: string;\n /** Size of the trigger button */\n size?: \"sm\" | \"default\";\n /** Additional class names for the trigger button */\n className?: string;\n /** Alignment of the dropdown menu */\n align?: \"start\" | \"center\" | \"end\";\n}\n\n// ============================================\n// Default Items\n// ============================================\n\nconst defaultItems: MenufocusItem[] = [\n { id: \"edit\", label: \"Edit\" },\n { id: \"view\", label: \"View details\" },\n { id: \"delete\", label: \"Delete\", variant: \"destructive\" },\n];\n\n// ============================================\n// Component\n// ============================================\n\n/**\n * Canvas Design System - Menufocus Template\n * \n * A reusable ellipsis menu component with configurable menu items.\n * Commonly used for row actions in tables, card actions, or any\n * context where a compact action menu is needed.\n * \n * @example\n * ```tsx\n * <MenufocusTemplate\n * items={[\n * { id: \"edit\", label: \"Edit\", onClick: handleEdit },\n * { id: \"delete\", label: \"Delete\", variant: \"destructive\", onClick: handleDelete },\n * ]}\n * />\n * ```\n */\nexport function MenufocusTemplate({\n items = defaultItems,\n ariaLabel = \"Actions menu\",\n size = \"default\",\n className,\n align = \"end\",\n}: MenufocusTemplateProps) {\n const buttonSize = size === \"sm\" ? \"size-7\" : \"size-8\";\n const iconSize = size === \"sm\" ? \"size-4\" : \"size-5\";\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n className={cn(\n \"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\",\n buttonSize,\n className\n )}\n aria-label={ariaLabel}\n >\n <MoreVertical \n className={iconSize}\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align} sideOffset={4}>\n {items.map((item) => (\n <DropdownMenuItem\n key={item.id}\n onClick={item.onClick}\n variant={item.variant}\n disabled={item.disabled}\n >\n {item.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n\n\n\n\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { MenufocusTemplate } from \"./menufocus-template\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface TableColumn {\n id: string;\n label: string;\n /** Width class or style for the column */\n width?: string;\n}\n\nexport interface TableRow {\n id: string;\n name: string;\n avatarUrl?: string;\n email: string;\n title: string;\n role: string;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface StandardDataTableProps {\n /** Table title */\n title?: string;\n /** Number of results to display */\n resultCount?: number;\n /** Custom result count text (overrides default \"{count} results\") */\n resultCountText?: string;\n /** Column definitions */\n columns?: TableColumn[];\n /** Table data rows */\n data?: TableRow[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when add/action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when row action is clicked */\n onRowAction?: (action: string, row: TableRow) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultColumns: TableColumn[] = [\n { id: \"name\", label: \"Name\" },\n { id: \"email\", label: \"Email\" },\n { id: \"title\", label: \"Title\" },\n { id: \"role\", label: \"Role\" },\n];\n\nconst defaultData: TableRow[] = [\n {\n id: \"1\",\n name: \"Jeff Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n email: \"jconnor@testemail.com\",\n title: \"Co-founder & CEO\",\n role: \"Standard\",\n },\n {\n id: \"2\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n email: \"ayawilliams@testemail.com\",\n title: \"Chief Marketing Officer\",\n role: \"Standard\",\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"name-asc\", label: \"Name (A-Z)\" },\n { id: \"name-desc\", label: \"Name (Z-A)\" },\n { id: \"date-newest\", label: \"Newest first\" },\n { id: \"date-oldest\", label: \"Oldest first\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All roles\" },\n { id: \"admin\", label: \"Admin\" },\n { id: \"standard\", label: \"Standard\" },\n { id: \"viewer\", label: \"Viewer\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface TableHeaderCellProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TableHeaderCell({ children, className }: TableHeaderCellProps) {\n return (\n <div\n className={cn(\n \"flex items-center h-8 overflow-hidden\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {children}\n </div>\n );\n}\n\ninterface TableCellProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TableCell({ children, className }: TableCellProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 h-8 overflow-hidden\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {children}\n </div>\n );\n}\n\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Standard Data Table Block\n * \n * A configurable data table with header section including title,\n * sort/filter dropdowns, and action button. Displays tabular data\n * with avatar support in the name column.\n * \n * @example\n * ```tsx\n * <StandardDataTable\n * title=\"Teammates\"\n * data={[\n * { id: \"1\", name: \"John\", email: \"john@example.com\", title: \"Engineer\", role: \"Admin\" }\n * ]}\n * onAddNew={() => console.log(\"Add new\")}\n * />\n * ```\n */\nexport function StandardDataTable({\n title = \"Teammates\",\n resultCount,\n resultCountText,\n columns = defaultColumns,\n data = defaultData,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onRowAction,\n className,\n}: StandardDataTableProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displayResultCount = resultCount ?? data.length;\n const displayResultText = resultCountText ?? `${displayResultCount} results`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayResultText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0 gap-3\"\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Table Section */}\n <div className=\"w-full overflow-x-auto\">\n <table className=\"w-full min-w-max border-collapse\">\n <thead>\n <tr style={{ borderBottom: \"1px solid var(--canvas-border)\" }}>\n <th className=\"text-left pr-8 min-w-[150px]\">\n <TableHeaderCell>\n {columns.find(c => c.id === \"name\")?.label || \"Name\"}\n </TableHeaderCell>\n </th>\n <th className=\"text-left px-8 min-w-[150px]\">\n <TableHeaderCell>\n {columns.find(c => c.id === \"email\")?.label || \"Email\"}\n </TableHeaderCell>\n </th>\n <th className=\"text-left px-8 min-w-[120px]\">\n <TableHeaderCell>\n {columns.find(c => c.id === \"title\")?.label || \"Title\"}\n </TableHeaderCell>\n </th>\n <th className=\"text-left px-8 min-w-[80px]\">\n <TableHeaderCell>\n {columns.find(c => c.id === \"role\")?.label || \"Role\"}\n </TableHeaderCell>\n </th>\n <th className=\"w-8 pr-1\">\n <TableHeaderCell> </TableHeaderCell>\n </th>\n </tr>\n </thead>\n <tbody>\n {data.map((row) => (\n <tr\n key={row.id}\n style={{ borderBottom: \"1px solid var(--canvas-border)\" }}\n >\n <td\n className=\"pr-8\"\n style={{\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <TableCell>\n <Avatar className=\"size-8 border border-[var(--canvas-border)]\">\n <AvatarImage src={row.avatarUrl} alt={row.name} />\n <AvatarFallback>\n {row.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <span className=\"whitespace-nowrap\">{row.name}</span>\n </TableCell>\n </td>\n <td\n className=\"px-8\"\n style={{\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.email}</span>\n </TableCell>\n </td>\n <td\n className=\"px-8\"\n style={{\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.title}</span>\n </TableCell>\n </td>\n <td\n className=\"px-8\"\n style={{\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.role}</span>\n </TableCell>\n </td>\n <td\n className=\"pr-1\"\n style={{\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <MenufocusTemplate\n ariaLabel=\"Row actions\"\n items={[\n { id: \"edit\", label: \"Edit\", onClick: () => onRowAction?.(\"edit\", row) },\n { id: \"view\", label: \"View details\", onClick: () => onRowAction?.(\"view\", row) },\n { id: \"delete\", label: \"Delete\", variant: \"destructive\", onClick: () => onRowAction?.(\"delete\", row) },\n ]}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { MenufocusTemplate } from \"./menufocus-template\";\n\n// ============================================\n// Types\n// ============================================\n\nexport type FixedColumnTableStatus = \"pending\" | \"paid\" | \"overdue\";\n\nexport interface FixedColumnTableRow {\n id: string;\n name: string;\n avatarUrl?: string;\n amount: string;\n status: FixedColumnTableStatus;\n logoUrl?: string;\n company: string;\n dateSent: string;\n}\n\nexport interface FixedColumnTableColumn {\n id: string;\n label: string;\n width?: string;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface FixedColumnDataTableProps {\n /** Table title */\n title?: string;\n /** Number of results to display */\n resultCount?: number;\n /** Custom result count text (overrides default \"{count} results\") */\n resultCountText?: string;\n /** Table data rows */\n data?: FixedColumnTableRow[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when add/action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when row action is clicked */\n onRowAction?: (action: string, row: FixedColumnTableRow) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultData: FixedColumnTableRow[] = [\n {\n id: \"1\",\n name: \"Jeff Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n amount: \"$3,200\",\n status: \"pending\",\n logoUrl: \"\",\n company: \"Airdev\",\n dateSent: \"5/23/2024\",\n },\n {\n id: \"2\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n amount: \"$2,400\",\n status: \"paid\",\n logoUrl: \"\",\n company: \"Airdev\",\n dateSent: \"2/19/2024\",\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"name-asc\", label: \"Name (A-Z)\" },\n { id: \"name-desc\", label: \"Name (Z-A)\" },\n { id: \"date-newest\", label: \"Newest first\" },\n { id: \"date-oldest\", label: \"Oldest first\" },\n { id: \"amount-high\", label: \"Amount (High)\" },\n { id: \"amount-low\", label: \"Amount (Low)\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All statuses\" },\n { id: \"pending\", label: \"Pending\" },\n { id: \"paid\", label: \"Paid\" },\n { id: \"overdue\", label: \"Overdue\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface TableHeaderCellProps {\n children: React.ReactNode;\n className?: string;\n isFixed?: boolean;\n}\n\nfunction TableHeaderCell({ children, className, isFixed }: TableHeaderCellProps) {\n return (\n <th\n className={cn(\n \"text-left h-8\",\n isFixed && \"sticky left-0 z-10\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n backgroundColor: isFixed ? \"var(--canvas-background)\" : undefined,\n }}\n >\n {children}\n </th>\n );\n}\n\ninterface TableCellProps {\n children: React.ReactNode;\n className?: string;\n isFixed?: boolean;\n}\n\nfunction TableCell({ children, className, isFixed }: TableCellProps) {\n return (\n <td\n className={cn(\n \"h-12\",\n isFixed && \"sticky left-0 z-10\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n backgroundColor: isFixed ? \"var(--canvas-background)\" : undefined,\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n {children}\n </td>\n );\n}\n\ninterface StatusBadgeProps {\n status: FixedColumnTableStatus;\n}\n\nfunction StatusBadge({ status }: StatusBadgeProps) {\n const statusConfig: Record<FixedColumnTableStatus, { label: string; bgColor: string; textColor: string }> = {\n pending: {\n label: \"Pending\",\n bgColor: \"var(--canvas-surface-brand)\",\n textColor: \"var(--canvas-primary)\",\n },\n paid: {\n label: \"Paid\",\n bgColor: \"var(--canvas-success-surface, #edfdf8)\",\n textColor: \"var(--canvas-success)\",\n },\n overdue: {\n label: \"Overdue\",\n bgColor: \"var(--canvas-destructive-surface, #fef2f2)\",\n textColor: \"var(--canvas-destructive)\",\n },\n };\n\n const config = statusConfig[status];\n\n return (\n <span\n className=\"inline-flex items-center justify-center whitespace-nowrap\"\n style={{\n backgroundColor: config.bgColor,\n color: config.textColor,\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n padding: \"var(--spacing-md) var(--spacing-xl)\",\n borderRadius: \"var(--spacing-3xl)\",\n height: \"32px\",\n }}\n >\n {config.label}\n </span>\n );\n}\n\ninterface CompanyLogoProps {\n logoUrl?: string;\n company: string;\n}\n\nfunction CompanyLogo({ logoUrl, company }: CompanyLogoProps) {\n // Default favicon-style logo if no URL provided\n if (!logoUrl) {\n return (\n <div\n className=\"flex items-center justify-center\"\n style={{\n width: \"32px\",\n height: \"32px\",\n backgroundColor: \"var(--canvas-primary)\",\n borderRadius: \"var(--radius-xs)\",\n }}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"var(--canvas-primary-foreground)\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n <polyline points=\"9,22 9,12 15,12 15,22\" />\n </svg>\n </div>\n );\n }\n\n return (\n <img\n src={logoUrl}\n alt={`${company} logo`}\n className=\"object-contain\"\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"var(--radius-xs)\",\n }}\n />\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Fixed Column Data Table Block\n * \n * A data table with a fixed first column (Name with avatar) that stays\n * visible during horizontal scrolling. Ideal for invoice-style tables\n * with many columns that need horizontal scrolling on smaller screens.\n * \n * @example\n * ```tsx\n * <FixedColumnDataTable\n * title=\"Invoices\"\n * data={[\n * { id: \"1\", name: \"John\", amount: \"$1,000\", status: \"paid\", company: \"Acme\", dateSent: \"1/1/2024\" }\n * ]}\n * onAddNew={() => console.log(\"Add new\")}\n * />\n * ```\n */\nexport function FixedColumnDataTable({\n title = \"Invoices\",\n resultCount,\n resultCountText,\n data = defaultData,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onRowAction,\n className,\n}: FixedColumnDataTableProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displayResultCount = resultCount ?? data.length;\n const displayResultText = resultCountText ?? `${displayResultCount} results`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayResultText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0 gap-3\"\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Table Section with horizontal scroll */}\n <div className=\"w-full overflow-x-auto\">\n <table className=\"w-full min-w-max border-collapse\">\n <thead>\n <tr style={{ borderBottom: \"1px solid var(--canvas-border)\" }}>\n {/* Fixed Name Column Header */}\n <TableHeaderCell isFixed className=\"pr-8 min-w-[200px]\">\n Name\n </TableHeaderCell>\n {/* Scrollable Column Headers */}\n <TableHeaderCell className=\"px-6 min-w-[160px]\">\n Amount\n </TableHeaderCell>\n <TableHeaderCell className=\"px-6 min-w-[160px]\">\n Status\n </TableHeaderCell>\n <TableHeaderCell className=\"px-6 min-w-[120px]\">\n Logo\n </TableHeaderCell>\n <TableHeaderCell className=\"px-6 min-w-[160px]\">\n Company\n </TableHeaderCell>\n <TableHeaderCell className=\"px-6 min-w-[160px]\">\n Date Sent\n </TableHeaderCell>\n <TableHeaderCell className=\"w-12 px-4\">\n \n </TableHeaderCell>\n </tr>\n </thead>\n <tbody>\n {data.map((row) => (\n <tr\n key={row.id}\n style={{ borderBottom: \"1px solid var(--canvas-border)\" }}\n >\n {/* Fixed Name Column */}\n <TableCell isFixed className=\"pr-8\">\n <div className=\"flex items-center gap-2\">\n <Avatar className=\"size-8 border border-[var(--canvas-border)]\">\n <AvatarImage src={row.avatarUrl} alt={row.name} />\n <AvatarFallback>\n {row.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <span className=\"whitespace-nowrap\">{row.name}</span>\n </div>\n </TableCell>\n {/* Scrollable Columns */}\n <TableCell className=\"px-6\">\n <span className=\"whitespace-nowrap\">{row.amount}</span>\n </TableCell>\n <TableCell className=\"px-6\">\n <StatusBadge status={row.status} />\n </TableCell>\n <TableCell className=\"px-6\">\n <CompanyLogo logoUrl={row.logoUrl} company={row.company} />\n </TableCell>\n <TableCell className=\"px-6\">\n <span className=\"whitespace-nowrap\">{row.company}</span>\n </TableCell>\n <TableCell className=\"px-6\">\n <span className=\"whitespace-nowrap\">{row.dateSent}</span>\n </TableCell>\n <TableCell className=\"px-4\">\n <MenufocusTemplate\n ariaLabel=\"Row actions\"\n items={[\n { id: \"edit\", label: \"Edit\", onClick: () => onRowAction?.(\"edit\", row) },\n { id: \"view\", label: \"View details\", onClick: () => onRowAction?.(\"view\", row) },\n { id: \"download\", label: \"Download\", onClick: () => onRowAction?.(\"download\", row) },\n { id: \"delete\", label: \"Delete\", variant: \"destructive\", onClick: () => onRowAction?.(\"delete\", row) },\n ]}\n />\n </TableCell>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { MenufocusTemplate } from \"./menufocus-template\";\nimport { ChevronRight, ChevronDown, Eye } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ChildRow {\n id: string;\n name: string;\n avatarUrl?: string;\n email: string;\n phone: string;\n}\n\nexport interface ParentRow {\n id: string;\n location: string;\n ftes: number;\n contractors: number;\n hrContact: {\n name: string;\n phone: string;\n };\n children: ChildRow[];\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface NestedDataTableProps {\n /** Table title */\n title?: string;\n /** Number of results to display */\n resultCount?: number;\n /** Custom result count text (overrides default \"{count} results\") */\n resultCountText?: string;\n /** Table data rows */\n data?: ParentRow[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when add/action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when parent row action is clicked */\n onRowAction?: (action: string, row: ParentRow) => void;\n /** Callback when child row action is clicked */\n onChildAction?: (action: string, child: ChildRow, parent: ParentRow) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultData: ParentRow[] = [\n {\n id: \"1\",\n location: \"San Francisco, CA\",\n ftes: 320,\n contractors: 66,\n hrContact: {\n name: \"Mary Trott\",\n phone: \"415-232-3434\",\n },\n children: [\n {\n id: \"1-1\",\n name: \"Jeff Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n email: \"jconner@gmail.com\",\n phone: \"508-343-5334\",\n },\n {\n id: \"1-2\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n email: \"eperez@gmail.com\",\n phone: \"234-989-6675\",\n },\n {\n id: \"1-3\",\n name: \"Lily Sun\",\n avatarUrl: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150&h=150&fit=crop&crop=face\",\n email: \"rmishra@gmail.com\",\n phone: \"205-443-4324\",\n },\n ],\n },\n {\n id: \"2\",\n location: \"New York, NY\",\n ftes: 80,\n contractors: 8,\n hrContact: {\n name: \"Raj Mishra\",\n phone: \"206-646-9834\",\n },\n children: [],\n },\n {\n id: \"3\",\n location: \"Seattle, WA\",\n ftes: 98,\n contractors: 5,\n hrContact: {\n name: \"James Clayton\",\n phone: \"312-687-8675\",\n },\n children: [],\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"location-asc\", label: \"Location (A-Z)\" },\n { id: \"location-desc\", label: \"Location (Z-A)\" },\n { id: \"ftes-high\", label: \"FTEs (High-Low)\" },\n { id: \"ftes-low\", label: \"FTEs (Low-High)\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All locations\" },\n { id: \"us-west\", label: \"US West\" },\n { id: \"us-east\", label: \"US East\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface ExpandButtonProps {\n expanded: boolean;\n onClick: () => void;\n disabled?: boolean;\n}\n\nfunction ExpandButton({ expanded, onClick, disabled }: ExpandButtonProps) {\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={cn(\n \"flex items-center justify-center shrink-0 transition-colors\",\n disabled ? \"opacity-40 cursor-not-allowed\" : \"cursor-pointer hover:bg-[var(--canvas-surface)]\"\n )}\n style={{\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"var(--radius-xs)\",\n border: \"1px solid var(--canvas-border)\",\n backgroundColor: \"var(--canvas-background)\",\n }}\n aria-label={expanded ? \"Collapse row\" : \"Expand row\"}\n >\n {expanded ? (\n <ChevronDown \n size={20} \n style={{ color: \"var(--canvas-text)\" }}\n />\n ) : (\n <ChevronRight \n size={20} \n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n )}\n </button>\n );\n}\n\ninterface TableHeaderCellProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TableHeaderCell({ children, className }: TableHeaderCellProps) {\n return (\n <div\n className={cn(\n \"flex items-center h-8 overflow-hidden\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {children}\n </div>\n );\n}\n\ninterface TableCellProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction TableCell({ children, className }: TableCellProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 overflow-hidden\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {children}\n </div>\n );\n}\n\ninterface NestedTableCellProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction NestedTableCell({ children, className }: NestedTableCellProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 h-8 overflow-hidden\",\n className\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {children}\n </div>\n );\n}\n\ninterface NestedTableProps {\n children: ChildRow[];\n onChildAction?: (action: string, child: ChildRow) => void;\n}\n\nfunction NestedTable({ children, onChildAction }: NestedTableProps) {\n if (children.length === 0) return null;\n\n return (\n <div\n className=\"w-full overflow-hidden\"\n style={{\n borderRadius: \"var(--radius-md)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Nested Table Header */}\n <div\n className=\"grid items-center\"\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n gridTemplateColumns: \"minmax(160px, 1fr) minmax(160px, 1fr) minmax(120px, 1fr) 56px\",\n }}\n >\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <TableHeaderCell>Name</TableHeaderCell>\n </div>\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <TableHeaderCell>Email</TableHeaderCell>\n </div>\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <TableHeaderCell>Phone number</TableHeaderCell>\n </div>\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <TableHeaderCell> </TableHeaderCell>\n </div>\n </div>\n\n {/* Nested Table Rows */}\n {children.map((child, index) => (\n <div\n key={child.id}\n className=\"grid items-center\"\n style={{\n borderBottom: index < children.length - 1 ? \"1px solid var(--canvas-border)\" : \"none\",\n padding: \"var(--spacing-md) 0\",\n gridTemplateColumns: \"minmax(160px, 1fr) minmax(160px, 1fr) minmax(120px, 1fr) 56px\",\n }}\n >\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <NestedTableCell>\n <Avatar className=\"size-8 border border-[var(--canvas-border)]\">\n <AvatarImage src={child.avatarUrl} alt={child.name} />\n <AvatarFallback>\n {child.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <span className=\"whitespace-nowrap\">{child.name}</span>\n </NestedTableCell>\n </div>\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <NestedTableCell>\n <span className=\"whitespace-nowrap\">{child.email}</span>\n </NestedTableCell>\n </div>\n <div style={{ padding: \"0 var(--spacing-lg)\" }}>\n <NestedTableCell>\n <span className=\"whitespace-nowrap\">{child.phone}</span>\n </NestedTableCell>\n </div>\n <div className=\"flex justify-center\" style={{ padding: \"0 var(--spacing-lg)\" }}>\n <button\n onClick={() => onChildAction?.(\"view\", child)}\n className=\"flex items-center justify-center size-8 rounded-full hover:bg-[var(--canvas-surface)] transition-colors\"\n aria-label={`View ${child.name}`}\n >\n <Eye size={20} style={{ color: \"var(--canvas-text-muted)\" }} />\n </button>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Nested Data Table Block\n * \n * An expandable data table with parent rows that reveal nested child tables.\n * Ideal for displaying hierarchical data like locations with employees,\n * departments with team members, or categories with items.\n * \n * @example\n * ```tsx\n * <NestedDataTable\n * title=\"FTEs & Contractors by Location\"\n * data={locationData}\n * onAddNew={() => console.log(\"Add new\")}\n * />\n * ```\n */\nexport function NestedDataTable({\n title = \"FTEs & Contractors by Location\",\n resultCount,\n resultCountText,\n data = defaultData,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onRowAction,\n onChildAction,\n className,\n}: NestedDataTableProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n const [expandedRows, setExpandedRows] = useState<Set<string>>(new Set([\"1\"])); // First row expanded by default\n\n const displayResultCount = resultCount ?? data.length;\n const displayResultText = resultCountText ?? `${displayResultCount} results`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n const toggleRow = (rowId: string) => {\n setExpandedRows(prev => {\n const next = new Set(prev);\n if (next.has(rowId)) {\n next.delete(rowId);\n } else {\n next.add(rowId);\n }\n return next;\n });\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayResultText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0 gap-3\"\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Table Section */}\n <div className=\"w-full overflow-x-auto\">\n <div className=\"min-w-[800px]\">\n {/* Table Header */}\n <div\n className=\"grid items-center\"\n style={{ \n borderBottom: \"1px solid var(--canvas-border)\",\n gridTemplateColumns: \"minmax(220px, 1.5fr) minmax(80px, 1fr) minmax(100px, 1fr) minmax(160px, 1.2fr) 40px\",\n }}\n >\n <div style={{ paddingLeft: \"var(--spacing-6xl)\" }}>\n <TableHeaderCell>Location</TableHeaderCell>\n </div>\n <div>\n <TableHeaderCell>FTEs</TableHeaderCell>\n </div>\n <div>\n <TableHeaderCell>Contractors</TableHeaderCell>\n </div>\n <div>\n <TableHeaderCell>HR Contact</TableHeaderCell>\n </div>\n <div>\n <TableHeaderCell> </TableHeaderCell>\n </div>\n </div>\n\n {/* Table Rows */}\n {data.map((row, index) => {\n const isExpanded = expandedRows.has(row.id);\n const hasChildren = row.children && row.children.length > 0;\n\n return (\n <div\n key={row.id}\n className=\"flex flex-col\"\n style={{\n borderBottom: index < data.length - 1 ? \"1px solid var(--canvas-border)\" : \"none\",\n paddingBottom: isExpanded ? \"var(--spacing-xl)\" : \"0\",\n }}\n >\n {/* Parent Row */}\n <div\n className=\"grid items-center\"\n style={{\n padding: \"var(--spacing-md) 0\",\n minHeight: \"64px\",\n gridTemplateColumns: \"minmax(220px, 1.5fr) minmax(80px, 1fr) minmax(100px, 1fr) minmax(160px, 1.2fr) 40px\",\n }}\n >\n {/* Location with Expand Button */}\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-xl)\" }}>\n <ExpandButton\n expanded={isExpanded}\n onClick={() => toggleRow(row.id)}\n disabled={!hasChildren}\n />\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.location}</span>\n </TableCell>\n </div>\n\n {/* FTEs */}\n <div>\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.ftes}</span>\n </TableCell>\n </div>\n\n {/* Contractors */}\n <div>\n <TableCell>\n <span className=\"whitespace-nowrap\">{row.contractors}</span>\n </TableCell>\n </div>\n\n {/* HR Contact */}\n <div>\n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-xxs, 2px)\" }}>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {row.hrContact.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {row.hrContact.phone}\n </span>\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex justify-center\">\n <MenufocusTemplate\n ariaLabel=\"Row actions\"\n items={[\n { id: \"edit\", label: \"Edit\", onClick: () => onRowAction?.(\"edit\", row) },\n { id: \"view\", label: \"View details\", onClick: () => onRowAction?.(\"view\", row) },\n { id: \"delete\", label: \"Delete\", variant: \"destructive\", onClick: () => onRowAction?.(\"delete\", row) },\n ]}\n />\n </div>\n </div>\n\n {/* Nested Table */}\n {isExpanded && hasChildren && (\n <div\n style={{\n paddingLeft: \"var(--spacing-6xl)\",\n paddingRight: \"var(--spacing-lg)\",\n }}\n >\n <NestedTable\n children={row.children}\n onChildAction={(action, child) => onChildAction?.(action, child, row)}\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ReviewItem {\n id: string;\n name: string;\n avatarUrl?: string;\n rating: number; // 1-5\n date: string;\n reviewText: string;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface ReviewsTableProps {\n /** Table title */\n title?: string;\n /** Number of reviews to display in subtitle */\n reviewCount?: number;\n /** Custom review count text (overrides default \"{count} customer reviews\") */\n reviewCountText?: string;\n /** Review data */\n reviews?: ReviewItem[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when add/action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when \"More\" is clicked on a review */\n onReadMore?: (review: ReviewItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultReviews: ReviewItem[] = [\n {\n id: \"1\",\n name: \"Jeffrey Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n rating: 5,\n date: \"Jul 22, 2024\",\n reviewText: \"Absolutely loved my experience at Sushi Ro! The ambiance was cozy, and the staff were incredibly attentive. The food was outstanding, with a diverse menu offering authentic flavors. Highly recommend trying the omakase...\",\n },\n {\n id: \"2\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n rating: 5,\n date: \"Jul 12, 2024\",\n reviewText: \"From the moment we walked in, we were greeted warmly and seated promptly. The omakase menu offered a delightful range of dishes, each bursting with flavor and beautifully presented...\",\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"date-newest\", label: \"Newest first\" },\n { id: \"date-oldest\", label: \"Oldest first\" },\n { id: \"rating-high\", label: \"Highest rated\" },\n { id: \"rating-low\", label: \"Lowest rated\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All ratings\" },\n { id: \"5-star\", label: \"5 stars\" },\n { id: \"4-star\", label: \"4 stars\" },\n { id: \"3-star\", label: \"3 stars\" },\n { id: \"2-star\", label: \"2 stars\" },\n { id: \"1-star\", label: \"1 star\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface StarRatingProps {\n rating: number;\n maxRating?: number;\n}\n\nfunction StarRating({ rating, maxRating = 5 }: StarRatingProps) {\n return (\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {Array.from({ length: maxRating }, (_, i) => (\n <svg\n key={i}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10 1.66667L12.575 6.88334L18.3333 7.725L14.1667 11.7833L15.15 17.5167L10 14.8083L4.85 17.5167L5.83333 11.7833L1.66667 7.725L7.425 6.88334L10 1.66667Z\"\n fill={i < rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n stroke={i < rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ))}\n </div>\n );\n}\n\ninterface ReviewListItemProps {\n review: ReviewItem;\n isFirst?: boolean;\n isLast?: boolean;\n onReadMore?: (review: ReviewItem) => void;\n}\n\nfunction ReviewListItem({ review, isFirst, isLast, onReadMore }: ReviewListItemProps) {\n return (\n <div\n className=\"w-full\"\n style={{\n borderTop: isFirst ? \"1px solid var(--canvas-border)\" : \"none\",\n borderBottom: \"1px solid var(--canvas-border)\",\n paddingTop: \"var(--spacing-3xl)\",\n paddingBottom: \"var(--spacing-3xl)\",\n }}\n >\n <div \n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Top Row: Avatar + Name/Rating + Date */}\n <div \n className=\"flex items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Avatar */}\n <Avatar \n className=\"shrink-0\"\n style={{ \n width: \"48px\", \n height: \"48px\",\n borderRadius: \"var(--spacing-3xl)\",\n }}\n >\n <AvatarImage src={review.avatarUrl} alt={review.name} />\n <AvatarFallback\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {review.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n\n {/* Name and Rating */}\n <div \n className=\"flex flex-col flex-1 min-w-0\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <p\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {review.name}\n </p>\n <StarRating rating={review.rating} />\n </div>\n\n {/* Date */}\n <p\n className=\"m-0 shrink-0\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {review.date}\n </p>\n </div>\n\n {/* Review Text */}\n <p\n className=\"m-0 w-full\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {review.reviewText}\n </p>\n\n {/* More Link */}\n <button\n onClick={() => onReadMore?.(review)}\n className=\"p-0 border-none bg-transparent cursor-pointer text-left\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n More\n </button>\n </div>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Reviews Table Block\n * \n * A configurable reviews listing with header section including title,\n * sort/filter dropdowns, and action button. Displays review items\n * with avatar, star rating, date, and expandable text.\n * \n * @example\n * ```tsx\n * <ReviewsTable\n * title=\"Reviews\"\n * reviews={[\n * { id: \"1\", name: \"John Doe\", rating: 5, date: \"Jul 22, 2024\", reviewText: \"Great experience!\" }\n * ]}\n * onAddNew={() => console.log(\"Add new\")}\n * />\n * ```\n */\nexport function ReviewsTable({\n title = \"Reviews\",\n reviewCount,\n reviewCountText,\n reviews = defaultReviews,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onReadMore,\n className,\n}: ReviewsTableProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displayReviewCount = reviewCount ?? reviews.length;\n const displayReviewText = reviewCountText ?? `${displayReviewCount} customer reviews`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayReviewText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0 gap-3\"\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Reviews List */}\n <div className=\"flex flex-col w-full\">\n {reviews.map((review, index) => (\n <ReviewListItem\n key={review.id}\n review={review}\n isFirst={index === 0}\n isLast={index === reviews.length - 1}\n onReadMore={onReadMore}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Input } from \"../ui/input\";\nimport { ArrowUp, MessageCircle, Heart, Paperclip } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PostAuthor {\n id: string;\n name: string;\n avatarUrl?: string;\n}\n\nexport interface PostComment {\n id: string;\n author: PostAuthor;\n content: string;\n timestamp: string;\n likes: number;\n isLiked?: boolean;\n replies?: PostComment[];\n}\n\nexport interface Post {\n id: string;\n author: PostAuthor;\n date: string;\n title: string;\n content: string;\n imageUrl?: string;\n upvotes: number;\n isUpvoted?: boolean;\n comments?: PostComment[];\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface UpvotingPostsTableProps {\n /** Table title */\n title?: string;\n /** Subtitle text */\n subtitle?: string;\n /** Posts data */\n posts?: Post[];\n /** Current user for comment input avatars */\n currentUser?: PostAuthor;\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when add/action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when upvote is clicked */\n onUpvote?: (postId: string) => void;\n /** Callback when comment is submitted */\n onComment?: (postId: string, content: string) => void;\n /** Callback when reply is submitted */\n onReply?: (postId: string, commentId: string, content: string) => void;\n /** Callback when like is clicked */\n onLike?: (postId: string, commentId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultCurrentUser: PostAuthor = {\n id: \"current\",\n name: \"Current User\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n};\n\nconst defaultPosts: Post[] = [\n {\n id: \"1\",\n author: {\n id: \"aya\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"May 23, 2024\",\n title: \"Latest travels\",\n content: \"Just touched down in the City of Lights! 🇫🇷 There's something truly magical about Paris - the cobblestone streets, the aroma of freshly baked croissants, and of course, the iconic Eiffel Tower piercing the sky. It's one of those moments where you realize dreams do come true. Can't wait to explore every corner of this enchanting city! #Paris #EiffelTower #TravelGoals\",\n imageUrl: \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=800&h=500&fit=crop\",\n upvotes: 8,\n isUpvoted: false,\n comments: [\n {\n id: \"c1\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Wow, Paris looks absolutely stunning! The Eiffel Tower is such an iconic landmark. Hope you have an amazing time exploring the city and soaking in all its beauty. Safe travels!\",\n timestamp: \"Feb 23, 1:32 PM\",\n likes: 3,\n isLiked: true,\n replies: [\n {\n id: \"r1\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Paris is truly a dream destination! The Eiffel Tower never fails to impress. Enjoy every moment of your adventure and make unforgettable memories. Can't wait to see more of your journey!\",\n timestamp: \"Mar 8, 11:23 AM\",\n likes: 0,\n isLiked: false,\n },\n ],\n },\n ],\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"newest\", label: \"Newest first\" },\n { id: \"oldest\", label: \"Oldest first\" },\n { id: \"most-upvoted\", label: \"Most upvoted\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All posts\" },\n { id: \"my-posts\", label: \"My posts\" },\n { id: \"following\", label: \"Following\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface CommentInputProps {\n avatarUrl?: string;\n avatarFallback?: string;\n placeholder?: string;\n buttonText?: string;\n size?: \"default\" | \"small\";\n showAttachment?: boolean;\n onSubmit?: (content: string) => void;\n}\n\nfunction CommentInput({\n avatarUrl,\n avatarFallback = \"U\",\n placeholder = \"Send a message\",\n buttonText = \"Send\",\n size = \"default\",\n showAttachment = true,\n onSubmit,\n}: CommentInputProps) {\n const [value, setValue] = useState(\"\");\n const avatarSize = size === \"small\" ? 40 : 48;\n\n const handleSubmit = () => {\n if (value.trim() && onSubmit) {\n onSubmit(value.trim());\n setValue(\"\");\n }\n };\n\n return (\n <div\n className=\"flex items-center w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <Avatar\n className=\"shrink-0\"\n style={{\n width: avatarSize,\n height: avatarSize,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 relative\">\n <Input\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder={placeholder}\n className=\"pr-10\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n }}\n />\n {showAttachment && (\n <button\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <Paperclip className=\"w-5 h-5\" />\n </button>\n )}\n </div>\n <Button variant=\"primary\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </div>\n );\n}\n\ninterface CommentActionsProps {\n likes: number;\n isLiked?: boolean;\n timestamp: string;\n onReply?: () => void;\n onLike?: () => void;\n}\n\nfunction CommentActions({\n likes,\n isLiked,\n timestamp,\n onReply,\n onLike,\n}: CommentActionsProps) {\n return (\n <div\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-xs)\",\n }}\n >\n <button\n type=\"button\"\n onClick={onReply}\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-sm)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n Reply\n </button>\n <button\n type=\"button\"\n onClick={onLike}\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-sm)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n <Heart\n className=\"w-5 h-5\"\n style={{\n fill: isLiked ? \"var(--canvas-destructive)\" : \"transparent\",\n stroke: isLiked ? \"var(--canvas-destructive)\" : \"currentColor\",\n }}\n />\n {likes > 0 ? `${likes} likes` : \"Like\"}\n </button>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {timestamp}\n </span>\n </div>\n );\n}\n\ninterface PostCommentItemProps {\n comment: PostComment;\n currentUser?: PostAuthor;\n depth?: number;\n onReply?: (content: string) => void;\n onLike?: () => void;\n}\n\nfunction PostCommentItem({\n comment,\n currentUser,\n depth = 0,\n onReply,\n onLike,\n}: PostCommentItemProps) {\n const [showReplyInput, setShowReplyInput] = useState(false);\n const [showReplies, setShowReplies] = useState(true);\n const hasReplies = comment.replies && comment.replies.length > 0;\n\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Comment content */}\n <div\n className=\"flex w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <Avatar\n className=\"shrink-0\"\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={comment.author.avatarUrl} />\n <AvatarFallback>\n {comment.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1 flex flex-col\" style={{ gap: \"var(--spacing-sm)\" }}>\n {/* Author and timestamp */}\n <div\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {comment.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {comment.timestamp}\n </span>\n </div>\n {/* Comment text */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {comment.content}\n </p>\n {/* Actions */}\n <CommentActions\n likes={comment.likes}\n isLiked={comment.isLiked}\n timestamp={comment.timestamp}\n onReply={() => setShowReplyInput(!showReplyInput)}\n onLike={onLike}\n />\n </div>\n </div>\n\n {/* Reply input */}\n {showReplyInput && (\n <div style={{ paddingLeft: \"var(--spacing-7xl)\" }}>\n <CommentInput\n avatarUrl={currentUser?.avatarUrl}\n avatarFallback={currentUser?.name?.charAt(0) || \"U\"}\n placeholder=\"Send a message\"\n buttonText=\"Reply\"\n size=\"small\"\n showAttachment={false}\n onSubmit={(content) => {\n onReply?.(content);\n setShowReplyInput(false);\n }}\n />\n </div>\n )}\n\n {/* Nested replies */}\n {hasReplies && showReplies && (\n <div\n className=\"flex flex-col\"\n style={{\n paddingLeft: \"var(--spacing-7xl)\",\n gap: \"var(--spacing-xl)\",\n }}\n >\n {comment.replies!.map((reply) => (\n <PostCommentItem\n key={reply.id}\n comment={reply}\n currentUser={currentUser}\n depth={depth + 1}\n onReply={onReply}\n onLike={onLike}\n />\n ))}\n </div>\n )}\n\n {/* Hide replies toggle */}\n {hasReplies && (\n <div\n className=\"flex items-center\"\n style={{\n paddingLeft: \"var(--spacing-7xl)\",\n gap: \"var(--spacing-md)\",\n }}\n >\n <div\n className=\"flex-1 h-px\"\n style={{ backgroundColor: \"var(--canvas-border)\" }}\n />\n <button\n type=\"button\"\n onClick={() => setShowReplies(!showReplies)}\n style={{\n fontFamily: \"var(--typo-body-xs-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xs-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-xs-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {showReplies ? \"Hide replies\" : \"Show replies\"}\n </button>\n </div>\n )}\n </div>\n );\n}\n\ninterface PostCardProps {\n post: Post;\n currentUser?: PostAuthor;\n onUpvote?: () => void;\n onComment?: (content: string) => void;\n onReply?: (commentId: string, content: string) => void;\n onLike?: (commentId: string) => void;\n}\n\nfunction PostCard({\n post,\n currentUser,\n onUpvote,\n onComment,\n onReply,\n onLike,\n}: PostCardProps) {\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{\n gap: \"var(--spacing-xl)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n paddingBottom: \"var(--spacing-5xl)\",\n }}\n >\n {/* Post content */}\n <div className=\"flex w-full\" style={{ gap: \"var(--spacing-3xl)\" }}>\n {/* Upvote button */}\n <div\n className=\"flex flex-col items-center shrink-0\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <button\n type=\"button\"\n onClick={onUpvote}\n className=\"flex items-center justify-center\"\n style={{\n width: 40,\n height: 40,\n borderRadius: \"var(--radius-xs)\",\n border: \"1px solid var(--canvas-border)\",\n backgroundColor: \"var(--canvas-background)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n color: post.isUpvoted ? \"var(--canvas-primary)\" : \"var(--canvas-text-muted)\",\n }}\n >\n <ArrowUp className=\"w-6 h-6\" />\n </button>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {post.upvotes}\n </span>\n </div>\n\n {/* Post main content */}\n <div\n className=\"flex-1 flex flex-col\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Author row */}\n <div className=\"flex items-start\" style={{ gap: \"var(--spacing-xl)\" }}>\n <Avatar\n className=\"shrink-0\"\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={post.author.avatarUrl} />\n <AvatarFallback>\n {post.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {post.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {post.date}\n </span>\n </div>\n </div>\n\n {/* Title and content */}\n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-xs)\" }}>\n <h3\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-xl-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {post.title}\n </h3>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {post.content}\n </p>\n </div>\n\n {/* Post image */}\n {post.imageUrl && (\n <div\n className=\"w-full overflow-hidden\"\n style={{\n maxWidth: 576,\n borderRadius: \"var(--radius-md)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <img\n src={post.imageUrl}\n alt={post.title}\n className=\"w-full h-auto object-cover\"\n style={{ maxHeight: 375 }}\n />\n </div>\n )}\n\n {/* Comment button */}\n <div\n className=\"flex items-center justify-center w-full\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n paddingTop: \"var(--spacing-lg)\",\n paddingBottom: \"var(--spacing-lg)\",\n }}\n >\n <button\n type=\"button\"\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-sm)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n <MessageCircle className=\"w-5 h-5\" />\n Comment\n </button>\n </div>\n </div>\n </div>\n\n {/* Comment input */}\n <CommentInput\n avatarUrl={currentUser?.avatarUrl}\n avatarFallback={currentUser?.name?.charAt(0) || \"U\"}\n placeholder=\"Send a message\"\n buttonText=\"Send\"\n onSubmit={onComment}\n />\n\n {/* Comments section */}\n {post.comments && post.comments.length > 0 && (\n <div\n className=\"flex flex-col\"\n style={{\n paddingLeft: \"var(--spacing-7xl)\",\n paddingTop: \"var(--spacing-xl)\",\n gap: \"var(--spacing-md)\",\n }}\n >\n {post.comments.map((comment) => (\n <PostCommentItem\n key={comment.id}\n comment={comment}\n currentUser={currentUser}\n onReply={(content) => onReply?.(comment.id, content)}\n onLike={() => onLike?.(comment.id)}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Upvoting Posts Table Block\n *\n * A social feed component with upvoting, comments, and nested replies.\n * Features header with sort/filter controls and action button.\n *\n * @example\n * ```tsx\n * <UpvotingPostsTable\n * title=\"My posts\"\n * subtitle=\"In the past year\"\n * posts={[...]}\n * onUpvote={(postId) => console.log(\"Upvoted\", postId)}\n * />\n * ```\n */\nexport function UpvotingPostsTable({\n title = \"My posts\",\n subtitle = \"In the past year\",\n posts = defaultPosts,\n currentUser = defaultCurrentUser,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onUpvote,\n onComment,\n onReply,\n onLike,\n className,\n}: UpvotingPostsTableProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Subtitle */}\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n </div>\n\n {/* Controls */}\n <div\n className=\"flex items-start justify-end shrink-0\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Posts List */}\n <div className=\"flex flex-col w-full\">\n {posts.map((post) => (\n <PostCard\n key={post.id}\n post={post}\n currentUser={currentUser}\n onUpvote={() => onUpvote?.(post.id)}\n onComment={(content) => onComment?.(post.id, content)}\n onReply={(commentId, content) => onReply?.(post.id, commentId, content)}\n onLike={(commentId) => onLike?.(post.id, commentId)}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Input } from \"../ui/input\";\nimport { Heart, Paperclip } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface CommentAuthor {\n id: string;\n name: string;\n avatarUrl?: string;\n}\n\nexport interface Comment {\n id: string;\n author: CommentAuthor;\n content: string;\n timestamp: string;\n likes: number;\n isLiked?: boolean;\n replies?: Comment[];\n}\n\nexport interface NestedCommentsTableProps {\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Comments data */\n comments?: Comment[];\n /** Current user for comment input avatars */\n currentUser?: CommentAuthor;\n /** Callback when main comment is submitted */\n onComment?: (content: string) => void;\n /** Callback when reply is submitted */\n onReply?: (commentId: string, content: string) => void;\n /** Callback when like is clicked */\n onLike?: (commentId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultCurrentUser: CommentAuthor = {\n id: \"current\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n};\n\nconst defaultComments: Comment[] = [\n {\n id: \"c1\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Wow, Paris looks absolutely stunning! The Eiffel Tower is such an iconic landmark. Hope you have an amazing time exploring the city and soaking in all its beauty. Safe travels!\",\n timestamp: \"Feb 23, 1:32 PM\",\n likes: 3,\n isLiked: true,\n replies: [\n {\n id: \"r1\",\n author: {\n id: \"mary\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Paris is truly a dream destination! The Eiffel Tower never fails to impress. Enjoy every moment of your adventure and make unforgettable memories. Can't wait to see more of your journey!\",\n timestamp: \"Mar 8, 11:23 AM\",\n likes: 0,\n isLiked: false,\n },\n ],\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface CommentInputProps {\n avatarUrl?: string;\n avatarFallback?: string;\n placeholder?: string;\n buttonText?: string;\n size?: \"default\" | \"small\";\n showAttachment?: boolean;\n onSubmit?: (content: string) => void;\n}\n\nfunction CommentInput({\n avatarUrl,\n avatarFallback = \"U\",\n placeholder = \"Send a message\",\n buttonText = \"Send\",\n size = \"default\",\n showAttachment = true,\n onSubmit,\n}: CommentInputProps) {\n const [value, setValue] = useState(\"\");\n const avatarSize = size === \"small\" ? 40 : 48;\n\n const handleSubmit = () => {\n if (value.trim() && onSubmit) {\n onSubmit(value.trim());\n setValue(\"\");\n }\n };\n\n return (\n <div\n className=\"flex items-center w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <Avatar\n className=\"shrink-0\"\n style={{\n width: avatarSize,\n height: avatarSize,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 relative\">\n <Input\n value={value}\n onChange={(e) => setValue(e.target.value)}\n placeholder={placeholder}\n className=\"pr-10\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n }}\n />\n {showAttachment && (\n <button\n type=\"button\"\n className=\"absolute right-3 top-1/2 -translate-y-1/2\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <Paperclip className=\"w-5 h-5\" />\n </button>\n )}\n </div>\n <Button variant=\"primary\" onClick={handleSubmit}>\n {buttonText}\n </Button>\n </div>\n );\n}\n\ninterface CommentActionsProps {\n likes: number;\n isLiked?: boolean;\n timestamp: string;\n onReply?: () => void;\n onLike?: () => void;\n}\n\nfunction CommentActions({\n likes,\n isLiked,\n timestamp,\n onReply,\n onLike,\n}: CommentActionsProps) {\n return (\n <div\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-xs)\",\n }}\n >\n <button\n type=\"button\"\n onClick={onReply}\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-sm)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n Reply\n </button>\n <button\n type=\"button\"\n onClick={onLike}\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-sm)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n <Heart\n className=\"w-5 h-5\"\n style={{\n fill: isLiked ? \"var(--canvas-destructive)\" : \"transparent\",\n stroke: isLiked ? \"var(--canvas-destructive)\" : \"currentColor\",\n }}\n />\n {likes > 0 ? `${likes} likes` : \"Like\"}\n </button>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {timestamp}\n </span>\n </div>\n );\n}\n\ninterface CommentItemProps {\n comment: Comment;\n currentUser?: CommentAuthor;\n depth?: number;\n onReply?: (content: string) => void;\n onLike?: () => void;\n}\n\nfunction CommentItem({\n comment,\n currentUser,\n depth = 0,\n onReply,\n onLike,\n}: CommentItemProps) {\n const [showReplyInput, setShowReplyInput] = useState(false);\n const [showReplies, setShowReplies] = useState(true);\n const hasReplies = comment.replies && comment.replies.length > 0;\n\n // Determine padding based on depth\n const getPaddingLeft = () => {\n if (depth === 0) return \"var(--spacing-7xl)\"; // 64px for first level\n return \"var(--spacing-10xl)\"; // 128px for deeper levels\n };\n\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Comment content */}\n <div\n className=\"flex w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <Avatar\n className=\"shrink-0\"\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={comment.author.avatarUrl} />\n <AvatarFallback>\n {comment.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1 flex flex-col\" style={{ gap: \"var(--spacing-sm)\" }}>\n {/* Author and timestamp */}\n <div\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {comment.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {comment.timestamp}\n </span>\n </div>\n {/* Comment text */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {comment.content}\n </p>\n {/* Actions */}\n <CommentActions\n likes={comment.likes}\n isLiked={comment.isLiked}\n timestamp={comment.timestamp}\n onReply={() => setShowReplyInput(!showReplyInput)}\n onLike={onLike}\n />\n </div>\n </div>\n\n {/* Reply input */}\n {showReplyInput && (\n <div style={{ paddingLeft: \"var(--spacing-7xl)\" }}>\n <CommentInput\n avatarUrl={currentUser?.avatarUrl}\n avatarFallback={currentUser?.name?.charAt(0) || \"U\"}\n placeholder=\"Send a message\"\n buttonText=\"Reply\"\n size=\"small\"\n showAttachment={false}\n onSubmit={(content) => {\n onReply?.(content);\n setShowReplyInput(false);\n }}\n />\n </div>\n )}\n\n {/* Hide replies toggle */}\n {hasReplies && (\n <div\n className=\"flex items-center\"\n style={{\n paddingLeft: \"var(--spacing-7xl)\",\n gap: \"var(--spacing-md)\",\n width: 196,\n }}\n >\n <div\n className=\"flex-1 h-px\"\n style={{ backgroundColor: \"var(--canvas-border)\" }}\n />\n <button\n type=\"button\"\n onClick={() => setShowReplies(!showReplies)}\n style={{\n fontFamily: \"var(--typo-body-xs-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xs-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-xs-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {showReplies ? \"Hide replies\" : \"Show replies\"}\n </button>\n </div>\n )}\n\n {/* Nested replies */}\n {hasReplies && showReplies && (\n <div\n className=\"flex flex-col\"\n style={{\n paddingLeft: getPaddingLeft(),\n paddingTop: \"var(--spacing-xl)\",\n gap: \"var(--spacing-md)\",\n }}\n >\n {comment.replies!.map((reply) => (\n <CommentItem\n key={reply.id}\n comment={reply}\n currentUser={currentUser}\n depth={depth + 1}\n onReply={onReply}\n onLike={onLike}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Nested Comments Table Block\n *\n * A threaded discussion component with nested comments, reply/like actions,\n * and collapsible threads. Perfect for discussion sections, comment threads,\n * or messaging interfaces.\n *\n * @example\n * ```tsx\n * <NestedCommentsTable\n * title=\"My discussions\"\n * subtitle=\"In the past year\"\n * comments={[...]}\n * onComment={(content) => console.log(\"Comment:\", content)}\n * />\n * ```\n */\nexport function NestedCommentsTable({\n title = \"My discussions\",\n subtitle = \"In the past year\",\n comments = defaultComments,\n currentUser = defaultCurrentUser,\n onComment,\n onReply,\n onLike,\n className,\n}: NestedCommentsTableProps) {\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Subtitle */}\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n </div>\n </div>\n\n {/* Comments List Shell */}\n <div\n className=\"flex flex-col w-full\"\n style={{\n borderBottom: \"1px solid var(--canvas-border)\",\n paddingBottom: \"var(--spacing-5xl)\",\n }}\n >\n {/* Main Comment Input */}\n <CommentInput\n avatarUrl={currentUser?.avatarUrl}\n avatarFallback={currentUser?.name?.charAt(0) || \"U\"}\n placeholder=\"Send a message\"\n buttonText=\"Send\"\n onSubmit={onComment}\n />\n\n {/* Comments */}\n {comments && comments.length > 0 && (\n <div\n className=\"flex flex-col\"\n style={{\n paddingLeft: \"var(--spacing-7xl)\",\n paddingTop: \"var(--spacing-xl)\",\n gap: \"var(--spacing-md)\",\n }}\n >\n {comments.map((comment) => (\n <CommentItem\n key={comment.id}\n comment={comment}\n currentUser={currentUser}\n onReply={(content) => onReply?.(comment.id, content)}\n onLike={() => onLike?.(comment.id)}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Plus, Minus } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface FAQItem {\n id: string;\n question: string;\n answer: string;\n}\n\nexport interface FaqsTableProps {\n /** Table title */\n title?: string;\n /** FAQ items to display */\n items?: FAQItem[];\n /** ID of the item that should be expanded by default */\n defaultExpandedId?: string;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: FAQItem[] = [\n {\n id: \"1\",\n question: \"What is Canvas?\",\n answer:\n \"Canvas uses a modular approach that allows you to easily plug in standardized components for most of your application's UX. That allows you to not reinvent the wheel and focus most of your efforts on your product's unique parts.\",\n },\n {\n id: \"2\",\n question: \"How can I purchase a license?\",\n answer:\n \"You can purchase a license directly from our website. We offer individual, team, and enterprise plans to suit your needs. All plans include access to our full component library and design system.\",\n },\n {\n id: \"3\",\n question: \"Do you offer refunds?\",\n answer:\n \"Yes, we offer a 30-day money-back guarantee. If you're not satisfied with your purchase, contact our support team for a full refund.\",\n },\n {\n id: \"4\",\n question: \"Can I use Canvas for commercial projects?\",\n answer:\n \"Absolutely! All our licenses allow for unlimited commercial projects. You can use Canvas components in client work, SaaS products, and internal tools.\",\n },\n];\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - FAQs Table Block\n *\n * An expandable FAQ list with plus/minus toggle icons.\n * Displays one item expanded at a time (accordion behavior).\n *\n * @example\n * ```tsx\n * <FaqsTable\n * title=\"Common questions\"\n * items={[\n * { id: \"1\", question: \"What is Canvas?\", answer: \"...\" }\n * ]}\n * />\n * ```\n */\nexport function FaqsTable({\n title = \"Common questions\",\n items = defaultItems,\n defaultExpandedId,\n className,\n}: FaqsTableProps) {\n const [expandedId, setExpandedId] = useState<string | null>(\n defaultExpandedId ?? items[0]?.id ?? null\n );\n\n const toggleItem = (id: string) => {\n setExpandedId((current) => (current === id ? null : id));\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n </div>\n </div>\n\n {/* FAQ List */}\n <div className=\"flex flex-col w-full\">\n {items.map((item, index) => {\n const isExpanded = expandedId === item.id;\n const isFirst = index === 0;\n const isLast = index === items.length - 1;\n\n return (\n <div\n key={item.id}\n className=\"flex flex-col w-full\"\n style={{\n borderTop: isFirst ? \"1px solid var(--canvas-border)\" : \"none\",\n borderBottom: \"1px solid var(--canvas-border)\",\n paddingTop: \"var(--spacing-xl)\",\n paddingBottom: \"var(--spacing-xl)\",\n }}\n >\n {/* Question Row */}\n <button\n onClick={() => toggleItem(item.id)}\n className=\"flex items-center justify-between w-full text-left\"\n style={{ gap: \"var(--spacing-xl)\" }}\n aria-expanded={isExpanded}\n aria-controls={`faq-answer-${item.id}`}\n >\n <span\n className=\"flex-1\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.question}\n </span>\n <div\n className=\"flex items-center justify-center shrink-0\"\n style={{\n width: \"32px\",\n height: \"32px\",\n padding: \"var(--spacing-md)\",\n borderRadius: \"var(--radius-full)\",\n }}\n >\n {isExpanded ? (\n <Minus\n size={20}\n style={{ color: \"var(--canvas-text)\" }}\n strokeWidth={1.5}\n />\n ) : (\n <Plus\n size={20}\n style={{ color: \"var(--canvas-text)\" }}\n strokeWidth={1.5}\n />\n )}\n </div>\n </button>\n\n {/* Answer (collapsible) */}\n {isExpanded && (\n <div\n id={`faq-answer-${item.id}`}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n paddingTop: \"var(--spacing-md)\",\n }}\n >\n {item.answer}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Typography } from \"../ui/typography\";\nimport {\n MapPin,\n Calendar,\n Globe,\n Star,\n Facebook,\n Twitter,\n Linkedin,\n Instagram,\n MoreHorizontal,\n} from \"lucide-react\";\n\ninterface ProfileStat {\n value: string;\n label: string;\n}\n\ninterface ProfileTag {\n label: string;\n}\n\ninterface SocialLink {\n type: \"website\" | \"facebook\" | \"twitter\" | \"linkedin\" | \"instagram\";\n label: string;\n href?: string;\n}\n\nexport interface ProfileCardProps {\n /** Profile avatar image URL */\n avatarUrl?: string;\n /** Avatar fallback initials */\n avatarFallback?: string;\n /** Whether to show online status indicator */\n showStatus?: boolean;\n /** User's display name */\n name: string;\n /** User's username (with @) */\n username: string;\n /** Star rating (0-5) */\n rating?: number;\n /** Location text */\n location?: string;\n /** Join date text */\n joinDate?: string;\n /** Stats to display */\n stats?: ProfileStat[];\n /** Bio text */\n bio?: string;\n /** Tags/skills */\n tags?: ProfileTag[];\n /** Social links */\n socialLinks?: SocialLink[];\n /** Additional class names */\n className?: string;\n /** Show menu button */\n showMenu?: boolean;\n /** Menu click handler */\n onMenuClick?: () => void;\n}\n\nconst socialIcons = {\n website: Globe,\n facebook: Facebook,\n twitter: Twitter,\n linkedin: Linkedin,\n instagram: Instagram,\n};\n\n/**\n * Canvas Design System - Profile Card Component\n *\n * A centered profile card with avatar overlapping banner, stats, tags, and social links.\n * Uses CSS variables for theming to support live preview.\n */\nexport function ProfileCard({\n avatarUrl,\n avatarFallback = \"JC\",\n showStatus = true,\n name,\n username,\n rating = 5,\n location,\n joinDate,\n stats = [],\n bio,\n tags = [],\n socialLinks = [],\n className,\n showMenu = true,\n onMenuClick,\n}: ProfileCardProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center w-full max-w-[992px] mx-auto\",\n className\n )}\n >\n {/* Avatar Section - Overlaps banner via negative margin in parent */}\n <div className=\"relative flex flex-col items-center w-full\">\n {/* Avatar with Status */}\n <div className=\"relative -mt-16\">\n <Avatar className=\"size-32 border-4 border-white\">\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback\n className=\"text-xl font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]\"\n >\n {avatarFallback}\n </AvatarFallback>\n </Avatar>\n {showStatus && (\n <div className=\"absolute bottom-[9px] right-[9px] size-5 rounded-full bg-emerald-500 border-[3px] border-white\" />\n )}\n </div>\n\n {/* Menu Button - Positioned to the right */}\n {showMenu && (\n <button\n onClick={onMenuClick}\n className=\"absolute top-4 right-0 flex items-center justify-center size-7 rounded-[var(--radius-xs)] border border-[var(--canvas-border)] bg-[var(--canvas-background)] hover:bg-[var(--canvas-surface)] transition-colors\"\n aria-label=\"More options\"\n >\n <MoreHorizontal className=\"size-4 text-[var(--canvas-text-muted)]\" />\n </button>\n )}\n </div>\n\n {/* Name & Username - Centered */}\n <div className=\"flex flex-col items-center gap-1 mt-4\">\n <Typography variant=\"body-xl\" className=\"text-center\" style={{ fontWeight: 600 }}>\n {name}\n </Typography>\n <Typography variant=\"body-s\" color=\"muted\" className=\"text-center\">\n {username}\n </Typography>\n </div>\n\n {/* Star Rating - Centered */}\n {rating > 0 && (\n <div className=\"flex items-center gap-0.5 mt-3\">\n {[...Array(5)].map((_, i) => (\n <Star\n key={i}\n className={cn(\n \"size-4\",\n i < rating\n ? \"fill-[var(--canvas-primary)] text-[var(--canvas-primary)]\"\n : \"fill-[var(--canvas-border)] text-[var(--canvas-border)]\"\n )}\n />\n ))}\n </div>\n )}\n\n {/* Location & Join Date - Centered */}\n <div className=\"flex flex-col items-center gap-2 mt-4\">\n {location && (\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n <MapPin className=\"size-4 text-[var(--canvas-text-muted)]\" />\n <Typography variant=\"body-s\" color=\"muted\">\n {location}\n </Typography>\n </div>\n )}\n {joinDate && (\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n <Calendar className=\"size-4 text-[var(--canvas-text-muted)]\" />\n <Typography variant=\"body-s\" color=\"muted\">\n {joinDate}\n </Typography>\n </div>\n )}\n </div>\n\n {/* Stats Section with top border */}\n {stats.length > 0 && (\n <div className=\"flex items-center justify-center gap-[var(--spacing-3xl)] w-full mt-6 pt-6 border-t border-[var(--canvas-border)]\">\n {stats.map((stat, index) => (\n <div key={index} className=\"flex flex-col items-center gap-0.5\">\n <Typography variant=\"body-l\" style={{ fontWeight: 600 }}>\n {stat.value}\n </Typography>\n <Typography variant=\"body-s\" color=\"muted\" className=\"text-center\">\n {stat.label}\n </Typography>\n </div>\n ))}\n </div>\n )}\n\n {/* Bio - Centered */}\n {bio && (\n <div className=\"w-full max-w-[576px] mt-6\">\n <Typography variant=\"body-s\" className=\"text-center\">\n {bio}\n </Typography>\n </div>\n )}\n\n {/* Tags - Centered */}\n {tags.length > 0 && (\n <div className=\"flex flex-wrap justify-center gap-[var(--spacing-md)] mt-6\">\n {tags.map((tag, index) => (\n <span\n key={index}\n className=\"px-[var(--spacing-lg)] py-[var(--spacing-xs)] h-7 flex items-center rounded-[var(--radius-xs)] bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {tag.label}\n </span>\n ))}\n </div>\n )}\n\n {/* Social Links - Top border only */}\n {socialLinks.length > 0 && (\n <div className=\"flex items-center justify-center w-full mt-6 pt-6 border-t border-[var(--canvas-border)]\">\n <div className=\"flex items-center justify-between w-full max-w-[700px]\">\n {socialLinks.map((link, index) => {\n const IconComponent = socialIcons[link.type];\n return (\n <a\n key={index}\n href={link.href || \"#\"}\n className=\"flex items-center gap-[var(--spacing-sm)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors\"\n >\n <IconComponent className=\"size-4\" />\n <Typography variant=\"body-s\" color=\"muted\" as=\"span\">\n {link.label}\n </Typography>\n </a>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Typography } from \"../ui/typography\";\nimport { Button } from \"../ui/button\";\nimport {\n MapPin,\n BookOpen,\n Video,\n DollarSign,\n Star,\n Globe,\n Facebook,\n Twitter,\n Instagram,\n Eye,\n} from \"lucide-react\";\n\ninterface InfoRow {\n icon: \"location\" | \"education\" | \"sessions\" | \"earnings\";\n label: string;\n value: string;\n}\n\ninterface SidebarProfileCardProps {\n /** Profile avatar image URL */\n avatarUrl?: string;\n /** Avatar fallback initials */\n avatarFallback?: string;\n /** Whether to show online status indicator */\n showStatus?: boolean;\n /** User's display name */\n name: string;\n /** User's role/title */\n role?: string;\n /** Star rating value */\n rating?: number;\n /** Number of reviews */\n reviewCount?: string;\n /** Certification text */\n certification?: string;\n /** Info rows (location, education, sessions, earnings) */\n infoRows?: InfoRow[];\n /** Contact button click handler */\n onContactClick?: () => void;\n /** Hire button click handler */\n onHireClick?: () => void;\n /** Additional class names */\n className?: string;\n}\n\nconst infoIcons = {\n location: MapPin,\n education: BookOpen,\n sessions: Video,\n earnings: DollarSign,\n};\n\n/**\n * Canvas Design System - Sidebar Profile Card Component\n *\n * A profile card designed for sidebar placement with avatar,\n * name, rating, action buttons, info rows, and social icons.\n */\nexport function SidebarProfileCard({\n avatarUrl,\n avatarFallback = \"JC\",\n showStatus = true,\n name,\n role,\n rating = 4.8,\n reviewCount = \"(2.4k)\",\n certification,\n infoRows = [],\n onContactClick,\n onHireClick,\n className,\n}: SidebarProfileCardProps) {\n return (\n <div\n className={cn(\n \"bg-[var(--canvas-background)] border border-[var(--canvas-border)] rounded-[var(--radius-md)]\",\n \"flex flex-col w-full\",\n className\n )}\n >\n {/* Main Content Section */}\n <div className=\"flex flex-col items-center gap-[var(--spacing-2xl)] px-[var(--spacing-4xl)] pt-[var(--spacing-4xl)]\">\n {/* Avatar with Status */}\n <div className=\"flex flex-col items-center gap-[var(--radius-md)]\">\n <div className=\"relative\">\n <Avatar className=\"size-[120px]\">\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback className=\"text-2xl font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]\">\n {avatarFallback}\n </AvatarFallback>\n </Avatar>\n {showStatus && (\n <div className=\"absolute bottom-[10px] right-[10px] size-5 rounded-full bg-emerald-500 border-[3px] border-white\" />\n )}\n </div>\n\n {/* Name & Role */}\n <div className=\"flex flex-col items-center gap-[var(--spacing-xs)]\">\n <Typography variant=\"body-xl\" className=\"text-center\" style={{ fontWeight: 600 }}>\n {name}\n </Typography>\n {role && (\n <Typography variant=\"body-s\" color=\"muted\" className=\"text-center\">\n {role}\n </Typography>\n )}\n </div>\n </div>\n\n {/* Star Rating */}\n <div className=\"flex items-center gap-1 justify-center\">\n <Star className=\"size-4 fill-[var(--canvas-primary)] text-[var(--canvas-primary)]\" />\n <Typography variant=\"body-xs\" className=\"font-semibold\">\n {rating}\n </Typography>\n <Typography variant=\"body-xs\" color=\"muted\">\n {reviewCount}\n </Typography>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex gap-[var(--spacing-xl)] w-full\">\n <Button\n variant=\"outline\"\n className=\"flex-1 h-10\"\n onClick={onContactClick}\n >\n Contact\n </Button>\n <Button\n variant=\"default\"\n className=\"flex-1 h-10\"\n onClick={onHireClick}\n >\n Hire me\n </Button>\n </div>\n\n {/* Divider */}\n <div className=\"w-full h-px bg-[var(--canvas-border)]\" />\n\n {/* Certification */}\n {certification && (\n <Typography variant=\"body-s\" color=\"muted\" className=\"text-center\">\n {certification}\n </Typography>\n )}\n\n {/* Info Rows */}\n {infoRows.length > 0 && (\n <div className=\"flex flex-col gap-[var(--spacing-lg)] w-full\">\n {infoRows.map((row, index) => {\n const IconComponent = infoIcons[row.icon];\n return (\n <div\n key={index}\n className=\"flex items-center justify-between w-full\"\n >\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n <IconComponent className=\"size-4 text-[var(--canvas-text-muted)]\" />\n <Typography variant=\"body-s\" color=\"muted\">\n {row.label}\n </Typography>\n </div>\n <Typography variant=\"body-s\" className=\"font-semibold text-[var(--canvas-neutral-text)]\">\n {row.value}\n </Typography>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Divider */}\n <div className=\"w-full h-px bg-[var(--canvas-border)]\" />\n\n {/* Social Icons */}\n <div className=\"flex gap-[var(--spacing-xl)] pb-[var(--spacing-3xl)]\">\n <Eye className=\"size-4 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors cursor-pointer\" />\n <Facebook className=\"size-4 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors cursor-pointer\" />\n <Twitter className=\"size-4 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors cursor-pointer\" />\n <Instagram className=\"size-4 text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors cursor-pointer\" />\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Typography } from \"../ui/typography\";\nimport {\n Globe,\n Facebook,\n Twitter,\n Instagram,\n Zap,\n Star,\n CheckCircle,\n} from \"lucide-react\";\n\n// Base card wrapper component\ninterface CardWrapperProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction CardWrapper({ children, className }: CardWrapperProps) {\n return (\n <div\n className={cn(\n \"bg-[var(--canvas-background)] border border-[var(--canvas-border)] rounded-[var(--radius-md)]\",\n \"w-full\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\n// Stats Card\ninterface Stat {\n value: string;\n label: string;\n}\n\nexport interface StatsCardProps {\n stats: Stat[];\n className?: string;\n}\n\nexport function StatsCard({ stats, className }: StatsCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-3xl)]\", className)}>\n <div className=\"flex gap-[var(--spacing-md)]\">\n {stats.map((stat, index) => (\n <div\n key={index}\n className=\"flex-1 flex flex-col items-center gap-[var(--spacing-xxs)]\"\n >\n <Typography variant=\"body-l\" style={{ fontWeight: 600 }}>\n {stat.value}\n </Typography>\n <Typography variant=\"body-s\" color=\"muted\" className=\"text-center\">\n {stat.label}\n </Typography>\n </div>\n ))}\n </div>\n </CardWrapper>\n );\n}\n\n// Portfolio Card\ninterface PortfolioImage {\n src: string;\n alt?: string;\n}\n\nexport interface PortfolioCardProps {\n title?: string;\n viewAllHref?: string;\n images: PortfolioImage[];\n className?: string;\n}\n\nexport function PortfolioCard({\n title = \"Portfolio\",\n viewAllHref,\n images,\n className,\n}: PortfolioCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-4xl)] overflow-hidden\", className)}>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <Typography variant=\"body-l\" style={{ fontWeight: 600 }}>\n {title}\n </Typography>\n {viewAllHref && (\n <a\n href={viewAllHref}\n className=\"text-[var(--canvas-primary)] hover:underline\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n }}\n >\n View all\n </a>\n )}\n </div>\n\n {/* Image Grid */}\n <div className=\"flex flex-col gap-[var(--spacing-xs)]\">\n {/* First row */}\n <div className=\"flex gap-[var(--spacing-xs)]\">\n {images.slice(0, 2).map((image, index) => (\n <div\n key={index}\n className=\"flex-1 h-20 bg-[var(--canvas-surface)] overflow-hidden\"\n >\n <img\n src={image.src}\n alt={image.alt || \"Portfolio image\"}\n className=\"w-full h-full object-cover\"\n />\n </div>\n ))}\n </div>\n {/* Second row */}\n {images.length > 2 && (\n <div className=\"flex gap-[var(--spacing-xs)]\">\n {images.slice(2, 4).map((image, index) => (\n <div\n key={index}\n className=\"flex-1 h-20 bg-[var(--canvas-surface)] overflow-hidden\"\n >\n <img\n src={image.src}\n alt={image.alt || \"Portfolio image\"}\n className=\"w-full h-full object-cover\"\n />\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </CardWrapper>\n );\n}\n\n// Description Card\nexport interface DescriptionCardProps {\n title?: string;\n content: string;\n className?: string;\n}\n\nexport function DescriptionCard({\n title = \"Description\",\n content,\n className,\n}: DescriptionCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-4xl)]\", className)}>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n <Typography variant=\"body-l\" style={{ fontWeight: 600 }}>\n {title}\n </Typography>\n <Typography variant=\"body-s\" color=\"muted\" className=\"whitespace-pre-line\">\n {content}\n </Typography>\n </div>\n </CardWrapper>\n );\n}\n\n// Skills Card\ninterface Skill {\n label: string;\n}\n\nexport interface SkillsCardProps {\n title?: string;\n skills: Skill[];\n className?: string;\n}\n\nexport function SkillsCard({\n title = \"Skills\",\n skills,\n className,\n}: SkillsCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-4xl)]\", className)}>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n <Typography variant=\"body-l\" style={{ fontWeight: 600 }}>\n {title}\n </Typography>\n <div className=\"flex flex-wrap gap-[var(--spacing-sm)]\">\n {skills.map((skill, index) => (\n <span\n key={index}\n className=\"h-7 px-[var(--spacing-lg)] flex items-center rounded-full border border-[var(--canvas-border)] bg-[var(--canvas-background)]\"\n style={{\n fontFamily: \"var(--typo-body-xs-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xs-size)\",\n fontWeight: 500,\n }}\n >\n {skill.label}\n </span>\n ))}\n </div>\n </div>\n </CardWrapper>\n );\n}\n\n// Links Card\ninterface LinkItem {\n type: \"website\" | \"facebook\" | \"twitter\" | \"instagram\";\n url: string;\n}\n\nconst linkIcons = {\n website: Globe,\n facebook: Facebook,\n twitter: Twitter,\n instagram: Instagram,\n};\n\nexport interface LinksCardProps {\n title?: string;\n links: LinkItem[];\n className?: string;\n}\n\nexport function LinksCard({\n title = \"Links\",\n links,\n className,\n}: LinksCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-4xl)]\", className)}>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n <Typography variant=\"body-m\" style={{ fontWeight: 600 }}>\n {title}\n </Typography>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n {links.map((link, index) => {\n const IconComponent = linkIcons[link.type];\n return (\n <a\n key={index}\n href={`https://${link.url}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-[var(--spacing-sm)] text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)] transition-colors\"\n >\n <IconComponent className=\"size-4\" />\n <Typography variant=\"body-s\" color=\"muted\" as=\"span\">\n {link.url}\n </Typography>\n </a>\n );\n })}\n </div>\n </div>\n </CardWrapper>\n );\n}\n\n// Badges Card\ninterface Badge {\n icon: \"zap\" | \"star\" | \"check\";\n title: string;\n description: string;\n iconColor?: string;\n}\n\nconst badgeIcons = {\n zap: Zap,\n star: Star,\n check: CheckCircle,\n};\n\nconst badgeColors = {\n zap: \"text-[var(--canvas-primary)]\",\n star: \"text-amber-600\",\n check: \"text-emerald-600\",\n};\n\nexport interface BadgesCardProps {\n badges: Badge[];\n className?: string;\n}\n\nexport function BadgesCard({ badges, className }: BadgesCardProps) {\n return (\n <CardWrapper className={cn(\"p-[var(--spacing-4xl)]\", className)}>\n <div className=\"flex flex-col gap-[var(--spacing-xl)]\">\n {badges.map((badge, index) => {\n const IconComponent = badgeIcons[badge.icon];\n const iconColor = badgeColors[badge.icon];\n return (\n <div\n key={index}\n className=\"flex items-center gap-[var(--spacing-xl)]\"\n >\n <IconComponent className={cn(\"size-4\", iconColor)} />\n <div className=\"flex-1 flex flex-col\">\n <Typography variant=\"body-s\" className=\"font-semibold\">\n {badge.title}\n </Typography>\n <Typography variant=\"body-xs\" color=\"muted\">\n {badge.description}\n </Typography>\n </div>\n </div>\n );\n })}\n </div>\n </CardWrapper>\n );\n}\n\n","\"use client\";\n\nimport { useState, useRef } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { User, Camera } from \"lucide-react\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\n\ninterface ProfileImageUploaderProps {\n /** Current image URL */\n imageUrl?: string;\n /** Callback when image is selected */\n onImageChange?: (file: File) => void;\n /** Size of the uploader */\n size?: number;\n /** Class name for customization */\n className?: string;\n}\n\n/**\n * Profile Image Uploader\n * \n * A circular avatar with upload functionality.\n * Shows a placeholder user icon when no image is set.\n * Hover state shows camera overlay for upload interaction.\n */\nexport function ProfileImageUploader({\n imageUrl,\n onImageChange,\n size = 132,\n className,\n}: ProfileImageUploaderProps) {\n const [isHovered, setIsHovered] = useState(false);\n const [previewUrl, setPreviewUrl] = useState<string | undefined>(imageUrl);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) {\n // Create preview URL\n const objectUrl = URL.createObjectURL(file);\n setPreviewUrl(objectUrl);\n onImageChange?.(file);\n }\n };\n\n return (\n <div className={cn(\"relative\", className)}>\n <button\n type=\"button\"\n onClick={handleClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className=\"relative rounded-full overflow-hidden border border-[var(--canvas-neutral-border)] transition-all hover:border-[var(--canvas-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2\"\n style={{ width: size, height: size }}\n >\n <Avatar className=\"size-full\">\n {previewUrl ? (\n <AvatarImage src={previewUrl} alt=\"Profile\" className=\"object-cover\" />\n ) : null}\n <AvatarFallback className=\"bg-[var(--canvas-neutral-surface)] size-full flex items-center justify-center\">\n <User \n className=\"text-[var(--canvas-neutral-text)]\" \n style={{ width: size * 0.4, height: size * 0.4 }} \n />\n </AvatarFallback>\n </Avatar>\n\n {/* Hover overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 flex items-center justify-center transition-opacity\",\n isHovered ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <Camera className=\"text-white\" style={{ width: size * 0.25, height: size * 0.25 }} />\n </div>\n </button>\n\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n className=\"hidden\"\n aria-label=\"Upload profile image\"\n />\n </div>\n );\n}\n\n\n\n\n\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\n\ninterface Participant {\n id: string;\n name: string;\n role: string;\n avatarUrl?: string;\n}\n\ninterface ParticipantItemProps {\n /** Participant name */\n name: string;\n /** Participant role/title */\n role: string;\n /** Avatar image URL */\n avatarUrl?: string;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Individual participant row with avatar, name, and role\n */\nexport function ParticipantItem({\n name,\n role,\n avatarUrl,\n className,\n}: ParticipantItemProps) {\n // Get initials from name\n const initials = name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n return (\n <div className={cn(\"flex items-center gap-3 py-3\", className)}>\n <Avatar className=\"w-10 h-10 shrink-0\">\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback \n className=\"bg-[var(--canvas-surface)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n color: \"var(--typo-body-s-color)\",\n }}\n >\n {initials}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p \n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--typo-body-s-color)\",\n }}\n >\n {name}\n </p>\n <p \n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--typo-body-s-color-muted)\",\n }}\n >\n {role}\n </p>\n </div>\n </div>\n );\n}\n\ninterface ParticipantListProps {\n /** Array of participants */\n participants: Participant[];\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Participant List Component\n * \n * Displays a list of video chat participants with avatars.\n * \n * @example\n * ```tsx\n * <ParticipantList\n * participants={[\n * { id: \"1\", name: \"John Doe\", role: \"Developer\", avatarUrl: \"/avatar.jpg\" },\n * ]}\n * />\n * ```\n */\nexport function ParticipantList({\n participants,\n className,\n}: ParticipantListProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {participants.map((participant) => (\n <ParticipantItem\n key={participant.id}\n name={participant.name}\n role={participant.role}\n avatarUrl={participant.avatarUrl}\n />\n ))}\n </div>\n );\n}\n\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface Tag {\n id: string;\n label: string;\n}\n\nexport interface ListItem {\n id: string;\n title: string;\n author: string;\n date: string;\n description: string;\n imageUrl: string;\n tags?: Tag[];\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface StandardListWithImageProps {\n /** Block title */\n title?: string;\n /** Block subtitle/description */\n subtitle?: string;\n /** List items to display */\n items?: ListItem[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when an item is clicked */\n onItemClick?: (item: ListItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: ListItem[] = [\n {\n id: \"1\",\n title: \"Will AI make software developers obsolete?\",\n author: \"Jeffrey Connor\",\n date: \"Sep 21\",\n description:\n \"Will AI replace software developers? Find out as we explore the potential impact of artificial intelligence on the future of software development.\",\n imageUrl:\n \"https://images.unsplash.com/photo-1677442136019-21780ecad995?w=400&h=400&fit=crop\",\n tags: [\n { id: \"ai\", label: \"AI\" },\n { id: \"software\", label: \"Software\" },\n { id: \"technology\", label: \"Technology\" },\n ],\n },\n {\n id: \"2\",\n title: \"Building software that users will love: 5 principles to follow\",\n author: \"Mary Trott\",\n date: \"Aug 2\",\n description:\n \"The most successful businesses follow a few simple rules when building software products that excite their users. See them here.\",\n imageUrl:\n \"https://images.unsplash.com/photo-1498050108023-c5249f4df085?w=400&h=400&fit=crop\",\n tags: [\n { id: \"software\", label: \"Software\" },\n { id: \"best-practices\", label: \"Best practices\" },\n ],\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"date-newest\", label: \"Newest first\" },\n { id: \"date-oldest\", label: \"Oldest first\" },\n { id: \"title-asc\", label: \"Title (A-Z)\" },\n { id: \"title-desc\", label: \"Title (Z-A)\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All categories\" },\n { id: \"ai\", label: \"AI\" },\n { id: \"software\", label: \"Software\" },\n { id: \"technology\", label: \"Technology\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface TagPillProps {\n label: string;\n}\n\nfunction TagPill({ label }: TagPillProps) {\n return (\n <span\n className=\"inline-flex items-center overflow-hidden\"\n style={{\n height: \"32px\",\n paddingLeft: \"var(--spacing-lg)\",\n paddingRight: \"var(--spacing-lg)\",\n paddingTop: \"var(--spacing-xs)\",\n paddingBottom: \"var(--spacing-xs)\",\n backgroundColor: \"var(--canvas-surface-brand)\",\n borderRadius: \"var(--radius-xs)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n {label}\n </span>\n );\n}\n\ninterface ListItemCardProps {\n item: ListItem;\n onClick?: () => void;\n}\n\nfunction ListItemCard({ item, onClick }: ListItemCardProps) {\n return (\n <div\n className={cn(\n \"flex w-full cursor-pointer\",\n onClick && \"hover:bg-[var(--canvas-surface)]\"\n )}\n style={{\n gap: \"var(--spacing-3xl)\",\n paddingTop: \"var(--spacing-3xl)\",\n paddingBottom: \"var(--spacing-3xl)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n onClick={onClick}\n >\n {/* Image */}\n <div\n className=\"shrink-0 overflow-hidden\"\n style={{\n width: \"200px\",\n height: \"200px\",\n borderRadius: \"var(--radius-md)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <img\n src={item.imageUrl}\n alt={item.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Content */}\n <div\n className=\"flex flex-col flex-1 min-w-0\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Title and Meta */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {/* Title */}\n <h3\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-xl-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.title}\n </h3>\n\n {/* Author and Date */}\n <div\n className=\"flex items-center justify-between w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <p\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n <span style={{ color: \"var(--canvas-text-muted)\" }}>by</span>{\" \"}\n <span style={{ fontWeight: 500 }}>{item.author}</span>\n </p>\n <p\n className=\"m-0 whitespace-nowrap\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {item.date}\n </p>\n </div>\n </div>\n\n {/* Description */}\n <p\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {item.description}\n </p>\n\n {/* Tags */}\n {item.tags && item.tags.length > 0 && (\n <div\n className=\"flex flex-wrap\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n {item.tags.map((tag) => (\n <TagPill key={tag.id} label={tag.label} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Standard List with Image Block\n *\n * A configurable list block with image thumbnails, commonly used for\n * blog posts, articles, or any content with featured images.\n * Includes header section with title, subtitle, and sort/filter controls.\n *\n * @example\n * ```tsx\n * <StandardListWithImage\n * title=\"Blog\"\n * subtitle=\"Read our latest articles\"\n * items={blogPosts}\n * onItemClick={(item) => console.log(\"Clicked:\", item.title)}\n * />\n * ```\n */\nexport function StandardListWithImage({\n title = \"Blog\",\n subtitle = \"Read our latest articles about tech\",\n items = defaultItems,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n onSort,\n onFilter,\n onItemClick,\n className,\n}: StandardListWithImageProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Subtitle */}\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {title}\n </h2>\n <p\n className=\"m-0\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {subtitle}\n </p>\n </div>\n\n {/* Controls */}\n <div className=\"flex items-start justify-end shrink-0 gap-3\">\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select\n value={sortValue || undefined}\n onValueChange={handleSortChange}\n >\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select\n value={filterValue || undefined}\n onValueChange={handleFilterChange}\n >\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n\n {/* List Section */}\n <div\n className=\"flex flex-col w-full\"\n style={{ borderTop: \"1px solid var(--canvas-border)\" }}\n >\n {items.map((item) => (\n <ListItemCard\n key={item.id}\n item={item}\n onClick={onItemClick ? () => onItemClick(item) : undefined}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Heart, Star, MapPin, Users, Zap, Briefcase } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface IconLabelConfig {\n id: string;\n icon: \"heart\" | \"users\" | \"zap\" | \"map-pin\" | \"briefcase\";\n label: string;\n}\n\nexport interface ListItem {\n id: string;\n imageUrl: string;\n title: string;\n price: string;\n priceUnit?: string;\n rating: number;\n reviewCount: number;\n location: string;\n description: string;\n labels: IconLabelConfig[];\n tag?: string;\n isFavorite?: boolean;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface LargeImageLabelsListProps {\n /** Section title */\n title?: string;\n /** Number of results (defaults to items.length) */\n resultCount?: number;\n /** Custom result count text (overrides default \"{count} results\") */\n resultCountText?: string;\n /** List items to display */\n items?: ListItem[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when favorite button is clicked */\n onFavorite?: (item: ListItem) => void;\n /** Callback when item is clicked */\n onItemClick?: (item: ListItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: ListItem[] = [\n {\n id: \"1\",\n imageUrl: \"https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=800&h=600&fit=crop\",\n title: \"Waikiki Beach Apartment\",\n price: \"$140\",\n priceUnit: \"/night\",\n rating: 5,\n reviewCount: 210,\n location: \"Honolulu, HI\",\n description: \"Stylish apartment near Waikiki beach that offers the perfect blend of comfort and convenience for your Hawaiian escape\",\n labels: [\n { id: \"1\", icon: \"heart\", label: \"Popular\" },\n { id: \"2\", icon: \"users\", label: \"Perfect for families\" },\n { id: \"3\", icon: \"zap\", label: \"Instant booking\" },\n ],\n tag: \"Popular\",\n isFavorite: false,\n },\n {\n id: \"2\",\n imageUrl: \"https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=800&h=600&fit=crop\",\n title: \"Central Danish Apartment\",\n price: \"$180\",\n priceUnit: \"/night\",\n rating: 5,\n reviewCount: 98,\n location: \"Copenhagen, Denmark\",\n description: \"A centrally located haven nestled in the heart of the city of Copenhagen, offering unparalleled convenience and accessibility\",\n labels: [\n { id: \"1\", icon: \"map-pin\", label: \"Central\" },\n { id: \"2\", icon: \"briefcase\", label: \"Business travelers\" },\n { id: \"3\", icon: \"zap\", label: \"Instant booking\" },\n ],\n isFavorite: false,\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"price-low\", label: \"Price (Low to High)\" },\n { id: \"price-high\", label: \"Price (High to Low)\" },\n { id: \"rating\", label: \"Highest Rated\" },\n { id: \"newest\", label: \"Newest\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All Properties\" },\n { id: \"instant\", label: \"Instant Booking\" },\n { id: \"popular\", label: \"Popular\" },\n { id: \"family\", label: \"Family Friendly\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\nfunction StarRating({ rating, reviewCount }: { rating: number; reviewCount: number }) {\n return (\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xxs, 2px)\" }}\n >\n {[1, 2, 3, 4, 5].map((star) => (\n <Star\n key={star}\n className=\"size-5\"\n fill={star <= rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n stroke={star <= rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n />\n ))}\n <span\n style={{\n fontFamily: \"var(--typo-body-xs-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xs-size)\",\n fontWeight: \"var(--typo-body-xs-weight)\",\n lineHeight: \"var(--typo-body-xs-line-height)\",\n color: \"var(--canvas-text-muted)\",\n paddingLeft: \"var(--spacing-sm)\",\n }}\n >\n {reviewCount}\n </span>\n </div>\n );\n}\n\nfunction IconLabel({ icon, label }: { icon: IconLabelConfig[\"icon\"]; label: string }) {\n const iconMap = {\n heart: Heart,\n users: Users,\n zap: Zap,\n \"map-pin\": MapPin,\n briefcase: Briefcase,\n };\n const IconComponent = iconMap[icon];\n\n return (\n <div\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-sm)\" }}\n >\n <IconComponent\n className=\"size-5\"\n style={{ color: \"var(--canvas-text)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {label}\n </span>\n </div>\n );\n}\n\ninterface ListItemCardProps {\n item: ListItem;\n onFavorite?: (item: ListItem) => void;\n onClick?: (item: ListItem) => void;\n}\n\nfunction ListItemCard({ item, onFavorite, onClick }: ListItemCardProps) {\n const [isFavorite, setIsFavorite] = useState(item.isFavorite ?? false);\n\n const handleFavorite = (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsFavorite(!isFavorite);\n onFavorite?.(item);\n };\n\n return (\n <div\n className=\"flex flex-col md:flex-row w-full cursor-pointer\"\n style={{\n gap: \"var(--spacing-3xl)\",\n paddingTop: \"var(--spacing-3xl)\",\n paddingBottom: \"var(--spacing-3xl)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n onClick={() => onClick?.(item)}\n >\n {/* Image Section */}\n <div className=\"relative md:flex-1 aspect-[4/3] md:aspect-auto md:min-h-[200px]\">\n <img\n src={item.imageUrl}\n alt={item.title}\n className=\"w-full h-full object-cover\"\n style={{\n borderRadius: \"var(--radius-md)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n />\n {/* Favorite Button */}\n <button\n onClick={handleFavorite}\n className=\"absolute flex items-center justify-center\"\n style={{\n top: \"var(--spacing-md)\",\n left: \"var(--spacing-md)\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"var(--radius-full, 24px)\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-text)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n }}\n >\n <Heart\n className=\"size-5\"\n fill={isFavorite ? \"var(--canvas-primary)\" : \"transparent\"}\n stroke=\"var(--canvas-text)\"\n />\n </button>\n {/* Tag Badge */}\n {item.tag && (\n <div\n className=\"absolute flex items-center\"\n style={{\n top: \"var(--spacing-md)\",\n left: \"47px\",\n height: \"32px\",\n paddingLeft: \"var(--spacing-lg)\",\n paddingRight: \"var(--spacing-lg)\",\n borderRadius: \"var(--radius-xs)\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-text)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.tag}\n </div>\n )}\n </div>\n\n {/* Content Section */}\n <div\n className=\"flex flex-col md:flex-1\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Info */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {/* Title and Price Row */}\n <div className=\"flex items-center justify-between w-full\">\n <h3\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-xl-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.title}\n </h3>\n <div className=\"flex items-baseline shrink-0\">\n <span\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-xl-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.price}\n </span>\n {item.priceUnit && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {item.priceUnit}\n </span>\n )}\n </div>\n </div>\n\n {/* Rating */}\n <StarRating rating={item.rating} reviewCount={item.reviewCount} />\n\n {/* Location */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.location}\n </p>\n </div>\n\n {/* Description */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.description}\n </p>\n\n {/* Labels */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n {item.labels.map((labelConfig) => (\n <IconLabel\n key={labelConfig.id}\n icon={labelConfig.icon}\n label={labelConfig.label}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Large Image Labels List Block\n * \n * A property-style listing component with large images, ratings, prices,\n * and icon labels. Includes a header section with title, result count,\n * and sort/filter controls.\n * \n * @example\n * ```tsx\n * <LargeImageLabelsList\n * title=\"Properties\"\n * items={[\n * {\n * id: \"1\",\n * imageUrl: \"https://example.com/image.jpg\",\n * title: \"Beach Apartment\",\n * price: \"$140\",\n * priceUnit: \"/night\",\n * rating: 5,\n * reviewCount: 210,\n * location: \"Honolulu, HI\",\n * description: \"Beautiful beachfront property...\",\n * labels: [{ id: \"1\", icon: \"heart\", label: \"Popular\" }],\n * tag: \"Popular\",\n * }\n * ]}\n * onFavorite={(item) => console.log(\"Favorited:\", item.title)}\n * />\n * ```\n */\nexport function LargeImageLabelsList({\n title = \"Properties\",\n resultCount,\n resultCountText,\n items = defaultItems,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n onSort,\n onFilter,\n onFavorite,\n onItemClick,\n className,\n}: LargeImageLabelsListProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displayResultCount = resultCount ?? items.length;\n const displayResultText = resultCountText ?? `${displayResultCount} results`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayResultText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0 gap-3\"\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n\n {/* List Section */}\n <div \n className=\"flex flex-col w-full\"\n style={{ borderTop: \"1px solid var(--canvas-border)\" }}\n >\n {items.map((item) => (\n <ListItemCard\n key={item.id}\n item={item}\n onFavorite={onFavorite}\n onClick={onItemClick}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { MenufocusTemplate } from \"./menufocus-template\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ProgressListItem {\n id: string;\n title: string;\n description: string;\n /** Progress percentage (0-100) */\n progress: number;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface CircularProgressBarProps {\n /** Progress percentage (0-100) */\n progress: number;\n /** Size of the progress bar in pixels */\n size?: number;\n /** Stroke width of the progress arc */\n strokeWidth?: number;\n /** Additional class names */\n className?: string;\n}\n\nexport interface CircularProgressBarListProps {\n /** List title */\n title?: string;\n /** Number of results to display */\n resultCount?: number;\n /** Custom result count text (overrides default \"{count} results\") */\n resultCountText?: string;\n /** List items data */\n items?: ProgressListItem[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when item action is clicked */\n onItemAction?: (action: string, item: ProgressListItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: ProgressListItem[] = [\n {\n id: \"1\",\n title: \"Product Design 101\",\n description: \"From ideation to prototyping, learn how to turn innovative ideas into tangible products that meet user needs and market demands.\",\n progress: 50,\n },\n {\n id: \"2\",\n title: \"Product Analytics\",\n description: \"Dive deep into understanding user behavior, optimizing features, and maximizing product performance through insightful data analysis and experimentation methodologies.\",\n progress: 75,\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"progress-asc\", label: \"Progress (Low to High)\" },\n { id: \"progress-desc\", label: \"Progress (High to Low)\" },\n { id: \"name-asc\", label: \"Name (A-Z)\" },\n { id: \"name-desc\", label: \"Name (Z-A)\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All courses\" },\n { id: \"in-progress\", label: \"In progress\" },\n { id: \"completed\", label: \"Completed\" },\n { id: \"not-started\", label: \"Not started\" },\n];\n\n// ============================================\n// CircularProgressBar Component\n// ============================================\n\n/**\n * Canvas Design System - Circular Progress Bar\n * \n * An SVG-based circular progress indicator that displays a percentage.\n * Uses CSS variables for theming support.\n */\nexport function CircularProgressBar({\n progress,\n size = 80,\n strokeWidth = 8,\n className,\n}: CircularProgressBarProps) {\n // Clamp progress between 0 and 100\n const clampedProgress = Math.min(100, Math.max(0, progress));\n \n // Calculate SVG dimensions\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (clampedProgress / 100) * circumference;\n const center = size / 2;\n\n return (\n <div \n className={cn(\"relative inline-flex items-center justify-center\", className)}\n style={{ width: size, height: size }}\n >\n <svg\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n className=\"transform -rotate-90\"\n >\n {/* Background circle (track) */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke=\"var(--progress-bar-track-color)\"\n strokeWidth={strokeWidth}\n />\n {/* Progress arc (fill) */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke=\"var(--progress-bar-fill-color)\"\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n style={{\n transition: \"stroke-dashoffset 0.3s ease-in-out\",\n }}\n />\n </svg>\n {/* Percentage text */}\n <span\n className=\"absolute inset-0 flex items-center justify-center\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: 1,\n color: \"var(--progress-bar-text-color)\",\n }}\n >\n {Math.round(clampedProgress)}%\n </span>\n </div>\n );\n}\n\n// ============================================\n// CircularProgressBarList Component\n// ============================================\n\n/**\n * Canvas Design System - Circular Progress Bar List Block\n * \n * A list block displaying items with circular progress indicators.\n * Features a header section with title, result count, and sort/filter controls.\n * Each item shows a progress bar, title, description, and action menu.\n * \n * @example\n * ```tsx\n * <CircularProgressBarList\n * title=\"Courses\"\n * items={[\n * { id: \"1\", title: \"Design 101\", description: \"Learn design basics\", progress: 50 }\n * ]}\n * />\n * ```\n */\nexport function CircularProgressBarList({\n title = \"Courses\",\n resultCount,\n resultCountText,\n items = defaultItems,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n onSort,\n onFilter,\n onItemAction,\n className,\n}: CircularProgressBarListProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displayResultCount = resultCount ?? items.length;\n const displayResultText = resultCountText ?? `${displayResultCount} results`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Count */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displayResultText}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n\n {/* List Section */}\n <div \n className=\"flex flex-col w-full\"\n style={{ \n borderTop: \"1px solid var(--canvas-border)\",\n }}\n >\n {items.map((item, index) => (\n <div\n key={item.id}\n className=\"flex w-full\"\n style={{\n borderBottom: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-3xl) 0\",\n gap: \"var(--spacing-3xl)\",\n }}\n >\n {/* Progress Bar */}\n <div className=\"shrink-0\">\n <CircularProgressBar\n progress={item.progress}\n size={80}\n strokeWidth={8}\n />\n </div>\n\n {/* Content */}\n <div \n className=\"flex flex-col flex-1 min-w-0\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {/* Title Row with Actions */}\n <div \n className=\"flex items-start w-full\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n <h3\n className=\"flex-1 min-w-0\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-xl-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.title}\n </h3>\n <div className=\"shrink-0\">\n <MenufocusTemplate\n ariaLabel=\"Item actions\"\n items={[\n { id: \"view\", label: \"View details\", onClick: () => onItemAction?.(\"view\", item) },\n { id: \"continue\", label: \"Continue\", onClick: () => onItemAction?.(\"continue\", item) },\n { id: \"reset\", label: \"Reset progress\", variant: \"destructive\", onClick: () => onItemAction?.(\"reset\", item) },\n ]}\n />\n </div>\n </div>\n\n {/* Description */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.description}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Check, Heart, MessageCircle, FileText } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ActivityAuthor {\n id: string;\n name: string;\n avatarUrl?: string;\n}\n\nexport interface ActivityAttachment {\n id: string;\n name: string;\n size: string;\n type?: \"document\" | \"image\" | \"other\";\n}\n\nexport interface BaseActivityItem {\n id: string;\n author: ActivityAuthor;\n timestamp: string;\n}\n\nexport interface StatusChangeActivity extends BaseActivityItem {\n type: \"status_change\";\n action: \"completed\" | \"updated\" | \"started\" | \"archived\";\n projectName: string;\n}\n\nexport interface CommentActivity extends BaseActivityItem {\n type: \"comment\";\n projectName: string;\n content: string;\n likes: number;\n replies: number;\n isLiked?: boolean;\n}\n\nexport interface AttachmentActivity extends BaseActivityItem {\n type: \"attachment\";\n action: \"completed\" | \"uploaded\" | \"shared\";\n projectName: string;\n attachment: ActivityAttachment;\n}\n\nexport type ActivityItem = StatusChangeActivity | CommentActivity | AttachmentActivity;\n\nexport interface ActivityFeedProps {\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Activity items to display */\n items?: ActivityItem[];\n /** Callback when like button is clicked */\n onLike?: (itemId: string) => void;\n /** Callback when reply button is clicked */\n onReply?: (itemId: string) => void;\n /** Callback when attachment is clicked */\n onAttachmentClick?: (itemId: string, attachmentId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: ActivityItem[] = [\n {\n id: \"1\",\n type: \"status_change\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n action: \"completed\",\n projectName: \"Acme Project\",\n timestamp: \"Today at 8:15 AM\",\n },\n {\n id: \"2\",\n type: \"comment\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n projectName: \"Acme Project\",\n content: \"Thank you Mary, the invoice looks great! Could you email it to Jeffrey and the Acme team and ask them to please pay by tomorrow?\",\n likes: 30,\n replies: 10,\n isLiked: true,\n timestamp: \"Yesterday at 11:25 AM\",\n },\n {\n id: \"3\",\n type: \"attachment\",\n author: {\n id: \"mary\",\n name: \"Mary Trott\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n },\n action: \"completed\",\n projectName: \"Acme Project\",\n attachment: {\n id: \"inv-1\",\n name: \"Invoice #23J2KF\",\n size: \"10 MB\",\n type: \"document\",\n },\n timestamp: \"3 days ago\",\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface ActivityLineProps {\n showLine: boolean;\n height?: string;\n}\n\nfunction ActivityLine({ showLine, height = \"64px\" }: ActivityLineProps) {\n if (!showLine) return null;\n return (\n <div\n style={{\n width: \"1px\",\n height,\n backgroundColor: \"var(--canvas-border-disabled)\",\n }}\n />\n );\n}\n\ninterface StatusIconProps {\n status: \"completed\" | \"updated\" | \"started\" | \"archived\";\n}\n\nfunction StatusIcon({ status }: StatusIconProps) {\n if (status === \"completed\") {\n return (\n <div\n className=\"flex items-center justify-center shrink-0\"\n style={{\n width: \"48px\",\n height: \"48px\",\n backgroundColor: \"var(--canvas-success)\",\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <Check size={20} color=\"white\" strokeWidth={2.5} />\n </div>\n );\n }\n \n // Default fallback for other statuses\n return (\n <div\n className=\"flex items-center justify-center shrink-0\"\n style={{\n width: \"48px\",\n height: \"48px\",\n backgroundColor: \"var(--canvas-surface)\",\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n />\n );\n}\n\ninterface ActivityAvatarProps {\n avatarUrl?: string;\n name: string;\n}\n\nfunction ActivityAvatar({ avatarUrl, name }: ActivityAvatarProps) {\n return (\n <Avatar\n className=\"shrink-0\"\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={avatarUrl} alt={name} />\n <AvatarFallback>\n {name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n );\n}\n\ninterface AttachmentCardProps {\n attachment: ActivityAttachment;\n onClick?: () => void;\n}\n\nfunction AttachmentCard({ attachment, onClick }: AttachmentCardProps) {\n return (\n <div\n className=\"flex items-center cursor-pointer\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-2xl)\",\n padding: \"var(--spacing-xl)\",\n boxShadow: \"0px 1px 8px 0px rgba(0, 0, 0, 0.03)\",\n gap: \"0\",\n }}\n onClick={onClick}\n >\n {/* Icon container */}\n <div\n className=\"flex items-center justify-center shrink-0\"\n style={{\n width: \"64px\",\n height: \"64px\",\n backgroundColor: \"var(--canvas-surface-brand)\",\n border: \"1px solid var(--canvas-primary)\",\n borderRadius: \"var(--radius-md)\",\n }}\n >\n <FileText size={32} style={{ color: \"var(--canvas-primary)\" }} />\n </div>\n \n {/* File info */}\n <div\n className=\"flex flex-col justify-center\"\n style={{\n paddingLeft: \"var(--spacing-xl)\",\n paddingRight: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {attachment.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {attachment.size}\n </span>\n </div>\n </div>\n );\n}\n\ninterface CommentCardProps {\n content: string;\n likes: number;\n replies: number;\n isLiked?: boolean;\n onLike?: () => void;\n onReply?: () => void;\n}\n\nfunction CommentCard({ content, likes, replies, isLiked, onLike, onReply }: CommentCardProps) {\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-md)\",\n padding: \"var(--spacing-4xl)\",\n boxShadow: \"0px 1px 8px 0px rgba(0, 0, 0, 0.03)\",\n gap: \"var(--spacing-lg)\",\n maxWidth: \"580px\",\n }}\n >\n {/* Comment content */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {content}\n </p>\n \n {/* Action icons */}\n <div\n className=\"flex items-center\"\n style={{\n gap: \"var(--spacing-lg)\",\n paddingTop: \"var(--spacing-xxs)\",\n paddingBottom: \"var(--spacing-xxs)\",\n }}\n >\n <button\n onClick={onLike}\n className=\"flex items-center justify-center p-0 border-0 bg-transparent cursor-pointer\"\n >\n <Heart\n size={20}\n fill={isLiked ? \"var(--canvas-destructive)\" : \"none\"}\n color={isLiked ? \"var(--canvas-destructive)\" : \"var(--canvas-text)\"}\n />\n </button>\n <button\n onClick={onReply}\n className=\"flex items-center justify-center p-0 border-0 bg-transparent cursor-pointer\"\n >\n <MessageCircle size={20} style={{ color: \"var(--canvas-text)\" }} />\n </button>\n </div>\n \n {/* Stats */}\n <div\n className=\"flex items-start\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingTop: \"var(--spacing-xs)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {likes} likes\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {replies} replies\n </span>\n </div>\n </div>\n );\n}\n\nfunction getActionText(action: string): string {\n switch (action) {\n case \"completed\":\n return \"marked\";\n case \"updated\":\n return \"updated\";\n case \"started\":\n return \"started\";\n case \"uploaded\":\n return \"uploaded\";\n case \"shared\":\n return \"shared\";\n default:\n return action;\n }\n}\n\nfunction getActionSuffix(action: string): string {\n switch (action) {\n case \"completed\":\n return \"as complete\";\n case \"updated\":\n return \"\";\n case \"started\":\n return \"\";\n default:\n return \"\";\n }\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Activity Feed Block\n * \n * A timeline-style activity feed showing user actions, comments, and file\n * attachments with connecting lines. Useful for project updates, notifications,\n * and collaboration views.\n * \n * @example\n * ```tsx\n * <ActivityFeed\n * title=\"Project status\"\n * subtitle=\"Last updated today\"\n * items={activityItems}\n * onLike={(id) => console.log(\"Liked\", id)}\n * />\n * ```\n */\nexport function ActivityFeed({\n title = \"Project status\",\n subtitle = \"Last updated today\",\n items = defaultItems,\n onLike,\n onReply,\n onAttachmentClick,\n className,\n}: ActivityFeedProps) {\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full overflow-hidden\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n </div>\n </div>\n\n {/* Activity List */}\n <div className=\"flex flex-col w-full overflow-hidden\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n \n return (\n <div\n key={item.id}\n className=\"flex flex-col w-full\"\n style={{\n paddingTop: index === 0 ? \"0\" : \"var(--spacing-xl)\",\n paddingBottom: isLast ? \"0\" : \"var(--spacing-xl)\",\n }}\n >\n <div\n className=\"flex w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Left column - Avatar/Icon with line */}\n <div\n className=\"flex flex-col items-center shrink-0\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n {item.type === \"status_change\" ? (\n <StatusIcon status={item.action} />\n ) : (\n <ActivityAvatar\n avatarUrl={item.author.avatarUrl}\n name={item.author.name}\n />\n )}\n <ActivityLine showLine={!isLast} height={item.type === \"comment\" ? \"100%\" : \"64px\"} />\n </div>\n\n {/* Right column - Content */}\n <div\n className=\"flex flex-col flex-1 min-w-0\"\n style={{ gap: \"var(--spacing-lg)\" }}\n >\n {/* Activity header row */}\n <div\n className=\"flex flex-col justify-center\"\n style={{\n minHeight: \"48px\",\n gap: \"0\",\n }}\n >\n {/* Title line */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n margin: 0,\n }}\n >\n <span\n style={{\n fontWeight: 600,\n color: \"var(--canvas-text)\",\n }}\n >\n {item.author.name}\n </span>\n {\" \"}\n <span\n style={{\n fontWeight: \"var(--typo-body-s-weight)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.type === \"comment\" ? \"comments on\" : getActionText((item as StatusChangeActivity | AttachmentActivity).action)}\n </span>\n {\" \"}\n <span\n style={{\n fontWeight: \"var(--typo-body-s-weight)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.type === \"comment\" \n ? (item as CommentActivity).projectName\n : (item as StatusChangeActivity | AttachmentActivity).projectName\n }\n </span>\n {item.type !== \"comment\" && getActionSuffix((item as StatusChangeActivity | AttachmentActivity).action) && (\n <>\n {\" \"}\n <span\n style={{\n fontWeight: \"var(--typo-body-s-weight)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {getActionSuffix((item as StatusChangeActivity | AttachmentActivity).action)}\n </span>\n </>\n )}\n </p>\n \n {/* Timestamp */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n margin: 0,\n }}\n >\n {item.timestamp}\n </p>\n </div>\n\n {/* Additional content based on type */}\n {item.type === \"comment\" && (\n <CommentCard\n content={(item as CommentActivity).content}\n likes={(item as CommentActivity).likes}\n replies={(item as CommentActivity).replies}\n isLiked={(item as CommentActivity).isLiked}\n onLike={() => onLike?.(item.id)}\n onReply={() => onReply?.(item.id)}\n />\n )}\n\n {item.type === \"attachment\" && (\n <AttachmentCard\n attachment={(item as AttachmentActivity).attachment}\n onClick={() => onAttachmentClick?.(item.id, (item as AttachmentActivity).attachment.id)}\n />\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Button } from \"../ui/button\";\nimport { \n Heart, \n MessageCircle, \n RefreshCw, \n Send, \n Paperclip, \n Video, \n Link2, \n MoreHorizontal,\n Play\n} from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PostAuthor {\n id: string;\n name: string;\n avatarUrl?: string;\n}\n\nexport interface LinkPreview {\n url: string;\n domain: string;\n title: string;\n description?: string;\n imageUrl?: string;\n}\n\nexport interface VideoMedia {\n thumbnailUrl: string;\n videoUrl?: string;\n}\n\nexport interface RepostContent {\n author: PostAuthor;\n date: string;\n content: string;\n images?: string[];\n}\n\nexport interface SocialFeedPost {\n id: string;\n author: PostAuthor;\n date: string;\n content: string;\n /** Image URLs for the post */\n images?: string[];\n /** Video media */\n video?: VideoMedia;\n /** Link preview card */\n linkPreview?: LinkPreview;\n /** Reposted/quoted content */\n repost?: RepostContent;\n likesCount: number;\n repliesCount: number;\n isLiked?: boolean;\n /** Nested replies */\n replies?: SocialFeedPost[];\n /** Whether this is a reply (for indentation) */\n isReply?: boolean;\n}\n\nexport interface SocialFeedProps {\n /** Section title */\n title?: string;\n /** Posts data */\n posts?: SocialFeedPost[];\n /** Current user for composer */\n currentUser?: PostAuthor;\n /** Placeholder text for composer */\n composerPlaceholder?: string;\n /** Image preview in composer */\n composerImagePreview?: string;\n /** Callback when post is submitted */\n onPost?: (content: string) => void;\n /** Callback when like is clicked */\n onLike?: (postId: string) => void;\n /** Callback when comment is clicked */\n onComment?: (postId: string) => void;\n /** Callback when repost is clicked */\n onRepost?: (postId: string) => void;\n /** Callback when share is clicked */\n onShare?: (postId: string) => void;\n /** Callback when menu is clicked */\n onMenuClick?: (postId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultCurrentUser: PostAuthor = {\n id: \"current\",\n name: \"You\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n};\n\nconst defaultPosts: SocialFeedPost[] = [\n {\n id: \"1\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"Feb 23, 1:32 PM\",\n content: \"Thinking about traveling to Paris again!\",\n repost: {\n author: {\n id: \"jeffrey\",\n name: \"Jeffrey Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"Nov 23, 5:34 PM\",\n content: \"What a place, the history, architecture and culture is wonderful. So many sites to see, one more amazing then the next. A must see if you are going to visit the great cities of the world.\",\n images: [\n \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=320&h=320&fit=crop\",\n \"https://images.unsplash.com/photo-1499856871958-5b9627545d1a?w=320&h=320&fit=crop\",\n ],\n },\n likesCount: 30,\n repliesCount: 10,\n isLiked: false,\n },\n {\n id: \"2\",\n author: {\n id: \"mary\",\n name: \"Mary Trott\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"Feb 23, 1:32 PM\",\n content: \"Learning how to Bubble\",\n video: {\n thumbnailUrl: \"https://images.unsplash.com/photo-1461749280684-dccba630e2f6?w=480&h=380&fit=crop\",\n },\n likesCount: 30,\n repliesCount: 10,\n isLiked: false,\n replies: [\n {\n id: \"2-reply-1\",\n author: {\n id: \"aya\",\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"Mar 12, 11:23 AM\",\n content: \"Check out these flight deals to Paris!\",\n linkPreview: {\n url: \"https://expedia.com/flights/paris\",\n domain: \"expedia.com\",\n title: \"Paris flights\",\n description: \"Your one-stop travel site for your dream vacation. Bundle your stay...\",\n imageUrl: \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=200&h=200&fit=crop\",\n },\n likesCount: 30,\n repliesCount: 10,\n isLiked: false,\n isReply: true,\n },\n ],\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface PostComposerProps {\n placeholder?: string;\n imagePreview?: string;\n onPost?: (content: string) => void;\n}\n\nfunction PostComposer({ placeholder = \"What's on your mind?\", imagePreview, onPost }: PostComposerProps) {\n const [content, setContent] = useState(\"\");\n\n const handlePost = () => {\n if (content.trim() || imagePreview) {\n onPost?.(content);\n setContent(\"\");\n }\n };\n\n return (\n <div\n className=\"flex flex-col w-full overflow-hidden\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n }}\n >\n {/* Text input area */}\n <div\n className=\"w-full\"\n style={{\n padding: \"var(--spacing-xl)\",\n background: \"var(--canvas-background)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <textarea\n value={content}\n onChange={(e) => setContent(e.target.value)}\n placeholder={placeholder}\n className=\"w-full resize-none border-0 bg-transparent outline-none\"\n rows={2}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: content ? \"var(--canvas-text)\" : \"var(--canvas-text-placeholder)\",\n }}\n />\n </div>\n\n {/* Image preview */}\n {imagePreview && (\n <div\n className=\"w-full\"\n style={{\n padding: \"0 var(--spacing-xl)\",\n background: \"var(--canvas-background)\",\n }}\n >\n <div\n className=\"overflow-hidden\"\n style={{\n width: 240,\n height: 180,\n borderRadius: \"var(--radius-md)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <img\n src={imagePreview}\n alt=\"Preview\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n )}\n\n {/* Action bar */}\n <div\n className=\"flex items-center justify-between w-full\"\n style={{\n padding: \"var(--spacing-xl)\",\n background: \"var(--canvas-background)\",\n borderTop: \"1px solid var(--canvas-border)\",\n }}\n >\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-lg)\" }}>\n <button type=\"button\" style={{ color: \"var(--canvas-text)\" }}>\n <Paperclip className=\"w-5 h-5\" />\n </button>\n <button type=\"button\" style={{ color: \"var(--canvas-text)\" }}>\n <Video className=\"w-5 h-5\" />\n </button>\n <button type=\"button\" style={{ color: \"var(--canvas-text)\" }}>\n <Link2 className=\"w-5 h-5\" />\n </button>\n </div>\n <Button variant=\"primary\" size=\"sm\" onClick={handlePost}>\n Post\n </Button>\n </div>\n </div>\n );\n}\n\ninterface ActionIconsRowProps {\n isLiked?: boolean;\n onLike?: () => void;\n onComment?: () => void;\n onRepost?: () => void;\n onShare?: () => void;\n}\n\nfunction ActionIconsRow({ isLiked, onLike, onComment, onRepost, onShare }: ActionIconsRowProps) {\n return (\n <div\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-lg)\", padding: \"var(--spacing-xxs) 0\" }}\n >\n <button\n type=\"button\"\n onClick={onLike}\n style={{ color: isLiked ? \"var(--canvas-destructive)\" : \"var(--canvas-text)\" }}\n >\n <Heart\n className=\"w-5 h-5\"\n style={{\n fill: isLiked ? \"var(--canvas-destructive)\" : \"transparent\",\n }}\n />\n </button>\n <button type=\"button\" onClick={onComment} style={{ color: \"var(--canvas-text)\" }}>\n <MessageCircle className=\"w-5 h-5\" />\n </button>\n <button type=\"button\" onClick={onRepost} style={{ color: \"var(--canvas-text)\" }}>\n <RefreshCw className=\"w-5 h-5\" />\n </button>\n <button type=\"button\" onClick={onShare} style={{ color: \"var(--canvas-text)\" }}>\n <Send className=\"w-5 h-5\" />\n </button>\n </div>\n );\n}\n\ninterface StatsRowProps {\n likesCount: number;\n repliesCount: number;\n}\n\nfunction StatsRow({ likesCount, repliesCount }: StatsRowProps) {\n return (\n <div\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xl)\", paddingTop: \"var(--spacing-xs)\" }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {likesCount} likes\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {repliesCount} replies\n </span>\n </div>\n );\n}\n\ninterface VideoThumbnailProps {\n thumbnailUrl: string;\n onClick?: () => void;\n}\n\nfunction VideoThumbnail({ thumbnailUrl, onClick }: VideoThumbnailProps) {\n return (\n <div\n className=\"relative overflow-hidden cursor-pointer\"\n style={{\n width: 480,\n height: 380,\n maxWidth: \"100%\",\n borderRadius: \"var(--radius-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n onClick={onClick}\n >\n <img\n src={thumbnailUrl}\n alt=\"Video thumbnail\"\n className=\"w-full h-full object-cover\"\n />\n {/* Play button */}\n <div\n className=\"absolute inset-0 flex items-center justify-center\"\n >\n <div\n className=\"flex items-center justify-center\"\n style={{\n width: 128,\n height: 80,\n background: \"var(--canvas-destructive)\",\n borderRadius: \"var(--radius-2xl)\",\n }}\n >\n <Play className=\"w-12 h-12 text-white fill-white\" />\n </div>\n </div>\n </div>\n );\n}\n\ninterface LinkPreviewCardProps {\n linkPreview: LinkPreview;\n onClick?: () => void;\n}\n\nfunction LinkPreviewCard({ linkPreview, onClick }: LinkPreviewCardProps) {\n return (\n <div\n className=\"flex overflow-hidden cursor-pointer\"\n style={{\n width: 580,\n maxWidth: \"100%\",\n background: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-2xl)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n }}\n onClick={onClick}\n >\n {linkPreview.imageUrl && (\n <div\n className=\"shrink-0 self-stretch overflow-hidden\"\n style={{\n width: 200,\n borderRight: \"1px solid var(--canvas-border)\",\n borderTopLeftRadius: \"var(--radius-md)\",\n borderBottomLeftRadius: \"var(--radius-md)\",\n }}\n >\n <img\n src={linkPreview.imageUrl}\n alt={linkPreview.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n <div\n className=\"flex flex-col flex-1\"\n style={{ padding: \"var(--spacing-4xl)\", gap: \"var(--spacing-lg)\" }}\n >\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {linkPreview.domain}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {linkPreview.title}\n </span>\n </div>\n {linkPreview.description && (\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {linkPreview.description}\n </p>\n )}\n </div>\n </div>\n );\n}\n\ninterface RepostCardProps {\n repost: RepostContent;\n onLike?: () => void;\n onComment?: () => void;\n onRepost?: () => void;\n onShare?: () => void;\n}\n\nfunction RepostCard({ repost, onLike, onComment, onRepost, onShare }: RepostCardProps) {\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{\n padding: \"var(--spacing-4xl)\",\n background: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-md)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n gap: \"var(--spacing-xl)\",\n }}\n >\n {/* Author row */}\n <div className=\"flex items-start w-full\" style={{ gap: \"var(--spacing-xl)\" }}>\n <Avatar\n className=\"shrink-0\"\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={repost.author.avatarUrl} />\n <AvatarFallback>\n {repost.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col flex-1\" style={{ gap: \"var(--spacing-lg)\" }}>\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {repost.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {repost.date}\n </span>\n </div>\n <button\n type=\"button\"\n className=\"flex items-center justify-center\"\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--spacing-6xl)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n <MoreHorizontal className=\"w-5 h-5\" />\n </button>\n </div>\n {/* Content */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {repost.content}\n </p>\n {/* Images */}\n {repost.images && repost.images.length > 0 && (\n <div className=\"flex\" style={{ gap: \"var(--spacing-xl)\" }}>\n {repost.images.map((img, idx) => (\n <div\n key={idx}\n className=\"overflow-hidden\"\n style={{\n width: 320,\n height: 320,\n borderRadius: \"var(--radius-2xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <img src={img} alt=\"\" className=\"w-full h-full object-cover\" />\n </div>\n ))}\n </div>\n )}\n {/* Actions */}\n <ActionIconsRow\n isLiked={false}\n onLike={onLike}\n onComment={onComment}\n onRepost={onRepost}\n onShare={onShare}\n />\n <StatsRow likesCount={30} repliesCount={10} />\n </div>\n </div>\n </div>\n );\n}\n\ninterface PostCellProps {\n post: SocialFeedPost;\n onLike?: () => void;\n onComment?: () => void;\n onRepost?: () => void;\n onShare?: () => void;\n onMenuClick?: () => void;\n}\n\nfunction PostCell({ post, onLike, onComment, onRepost, onShare, onMenuClick }: PostCellProps) {\n return (\n <div\n className=\"flex w-full\"\n style={{\n paddingLeft: post.isReply ? \"var(--spacing-7xl)\" : 0,\n paddingTop: post.isReply ? \"var(--spacing-3xl)\" : \"var(--spacing-xl)\",\n paddingBottom: post.isReply ? 0 : \"var(--spacing-3xl)\",\n borderBottom: post.isReply ? \"none\" : \"1px solid var(--canvas-border)\",\n gap: \"var(--spacing-xl)\",\n }}\n >\n {/* Avatar column with reply line */}\n <div className=\"flex flex-col items-center shrink-0\" style={{ gap: \"var(--spacing-md)\" }}>\n <Avatar\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={post.author.avatarUrl} />\n <AvatarFallback>\n {post.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n {/* Reply line */}\n {post.replies && post.replies.length > 0 && (\n <div\n className=\"flex-1 w-px\"\n style={{ background: \"var(--canvas-border)\", minHeight: 20 }}\n />\n )}\n </div>\n\n {/* Content column */}\n <div className=\"flex flex-col flex-1 min-w-0\" style={{ gap: \"var(--spacing-lg)\" }}>\n {/* Header */}\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex flex-col\" style={{ gap: 0 }}>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {post.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {post.date}\n </span>\n </div>\n <button\n type=\"button\"\n onClick={onMenuClick}\n className=\"flex items-center justify-center\"\n style={{\n width: 32,\n height: 32,\n borderRadius: \"var(--spacing-6xl)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n <MoreHorizontal className=\"w-5 h-5\" />\n </button>\n </div>\n\n {/* Content text */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {post.content}\n </p>\n\n {/* Repost card */}\n {post.repost && (\n <RepostCard\n repost={post.repost}\n onLike={onLike}\n onComment={onComment}\n onRepost={onRepost}\n onShare={onShare}\n />\n )}\n\n {/* Images */}\n {post.images && post.images.length > 0 && (\n <div className=\"flex\" style={{ gap: \"var(--spacing-xl)\" }}>\n {post.images.map((img, idx) => (\n <div\n key={idx}\n className=\"overflow-hidden\"\n style={{\n width: 320,\n height: 320,\n borderRadius: \"var(--radius-2xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <img src={img} alt=\"\" className=\"w-full h-full object-cover\" />\n </div>\n ))}\n </div>\n )}\n\n {/* Video */}\n {post.video && (\n <VideoThumbnail thumbnailUrl={post.video.thumbnailUrl} />\n )}\n\n {/* Link preview */}\n {post.linkPreview && (\n <LinkPreviewCard linkPreview={post.linkPreview} />\n )}\n\n {/* Actions */}\n <ActionIconsRow\n isLiked={post.isLiked}\n onLike={onLike}\n onComment={onComment}\n onRepost={onRepost}\n onShare={onShare}\n />\n\n {/* Stats */}\n <StatsRow likesCount={post.likesCount} repliesCount={post.repliesCount} />\n\n {/* Nested replies */}\n {post.replies && post.replies.length > 0 && (\n <div className=\"flex flex-col w-full\">\n {post.replies.map((reply) => (\n <PostCell\n key={reply.id}\n post={reply}\n onLike={onLike}\n onComment={onComment}\n onRepost={onRepost}\n onShare={onShare}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Social Feed Block\n *\n * A social media-style feed component with post composer, posts with various\n * content types (text, images, video, reposts, link cards), social interactions,\n * and threaded replies.\n *\n * @example\n * ```tsx\n * <SocialFeed\n * title=\"Social Feed\"\n * posts={[...]}\n * onLike={(postId) => console.log(\"Liked\", postId)}\n * onPost={(content) => console.log(\"Posted\", content)}\n * />\n * ```\n */\nexport function SocialFeed({\n title = \"Social Feed\",\n posts = defaultPosts,\n currentUser = defaultCurrentUser,\n composerPlaceholder = \"What's on your mind?\",\n composerImagePreview,\n onPost,\n onLike,\n onComment,\n onRepost,\n onShare,\n onMenuClick,\n className,\n}: SocialFeedProps) {\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n {title && (\n <div className=\"flex flex-wrap items-start w-full\" style={{ gap: \"var(--spacing-xl)\" }}>\n <div className=\"flex flex-col flex-1 min-w-[200px]\" style={{ gap: \"var(--spacing-xs)\" }}>\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n </div>\n </div>\n )}\n\n {/* Feed content */}\n <div className=\"flex flex-col w-full overflow-hidden\">\n {/* First section: Composer + first set of posts */}\n <div\n className=\"flex flex-col w-full\"\n style={{\n borderBottom: \"1px solid var(--canvas-border)\",\n paddingBottom: \"var(--spacing-5xl)\",\n }}\n >\n {/* Post Composer */}\n <PostComposer\n placeholder={composerPlaceholder}\n imagePreview={composerImagePreview}\n onPost={onPost}\n />\n\n {/* Posts */}\n <div className=\"flex flex-col w-full\" style={{ paddingTop: \"var(--spacing-xl)\" }}>\n {posts.map((post) => (\n <PostCell\n key={post.id}\n post={post}\n onLike={() => onLike?.(post.id)}\n onComment={() => onComment?.(post.id)}\n onRepost={() => onRepost?.(post.id)}\n onShare={() => onShare?.(post.id)}\n onMenuClick={() => onMenuClick?.(post.id)}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { Heart, MessageCircle, Send, Bookmark } from \"lucide-react\";\nimport { \n NestedCommentsTable, \n type Comment, \n type CommentAuthor \n} from \"./nested-comments-table\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PostAuthor {\n id: string;\n name: string;\n username?: string;\n avatarUrl?: string;\n}\n\nexport interface ImagePost {\n id: string;\n author: PostAuthor;\n date: string;\n imageUrl: string;\n caption?: string;\n likesCount: number;\n likedByText?: string;\n commentsCount: number;\n isLiked?: boolean;\n isBookmarked?: boolean;\n comments?: Comment[];\n}\n\nexport interface ImageFeedWithNestedCommentsProps {\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Posts data */\n posts?: ImagePost[];\n /** Current user for comment avatars */\n currentUser?: CommentAuthor;\n /** Callback when post like is clicked */\n onLike?: (postId: string) => void;\n /** Callback when new comment is submitted */\n onComment?: (postId: string, content: string) => void;\n /** Callback when share is clicked */\n onShare?: (postId: string) => void;\n /** Callback when bookmark is clicked */\n onBookmark?: (postId: string) => void;\n /** Callback when reply is submitted */\n onReply?: (postId: string, commentId: string, content: string) => void;\n /** Callback when comment like is clicked */\n onCommentLike?: (postId: string, commentId: string) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultCurrentUser: CommentAuthor = {\n id: \"current\",\n name: \"Mary Trott\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n};\n\nconst defaultPosts: ImagePost[] = [\n {\n id: \"1\",\n author: {\n id: \"aya\",\n name: \"Aya Williams\",\n username: \"ayawilliams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n },\n date: \"May 23, 2024\",\n imageUrl: \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=1200&h=800&fit=crop\",\n caption: \"Beautiful day\",\n likesCount: 42,\n likedByText: \"Liked by sc04116 and others\",\n commentsCount: 6,\n isLiked: false,\n isBookmarked: false,\n comments: [\n {\n id: \"c1\",\n author: {\n id: \"raj\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Wow, Paris looks absolutely stunning! The Eiffel Tower is such an iconic landmark. Hope you have an amazing time exploring the city and soaking in all its beauty. Safe travels!\",\n timestamp: \"Feb 23, 1:32 PM\",\n likes: 3,\n isLiked: true,\n replies: [\n {\n id: \"r1\",\n author: {\n id: \"stacy\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Ah, the City of Love! Your picture brings back memories of my own trip to Paris. The Eiffel Tower is even more breathtaking in person. Have a fantastic time exploring all the charm Paris has to offer!\",\n timestamp: \"Feb 23, 1:32 PM\",\n likes: 0,\n isLiked: false,\n replies: [\n {\n id: \"r2\",\n author: {\n id: \"mary\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n },\n content: \"Paris is truly a dream destination! The Eiffel Tower never fails to impress. Enjoy every moment of your adventure and make unforgettable memories. Can't wait to see more of your journey!\",\n timestamp: \"Mar 8, 11:23 AM\",\n likes: 0,\n isLiked: false,\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface ActionIconsRowProps {\n isLiked?: boolean;\n isBookmarked?: boolean;\n onLike?: () => void;\n onComment?: () => void;\n onShare?: () => void;\n onBookmark?: () => void;\n}\n\nfunction ActionIconsRow({\n isLiked,\n isBookmarked,\n onLike,\n onComment,\n onShare,\n onBookmark,\n}: ActionIconsRowProps) {\n return (\n <div\n className=\"flex items-center w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <button\n type=\"button\"\n onClick={onLike}\n className=\"shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <Heart\n className=\"w-6 h-6\"\n style={{\n fill: isLiked ? \"var(--canvas-destructive)\" : \"transparent\",\n stroke: isLiked ? \"var(--canvas-destructive)\" : \"currentColor\",\n }}\n />\n </button>\n <button\n type=\"button\"\n onClick={onComment}\n className=\"shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <MessageCircle className=\"w-6 h-6\" />\n </button>\n <button\n type=\"button\"\n onClick={onShare}\n className=\"shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <Send className=\"w-6 h-6\" />\n </button>\n <div className=\"flex-1 flex justify-end\">\n <button\n type=\"button\"\n onClick={onBookmark}\n className=\"shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <Bookmark\n className=\"w-6 h-6\"\n style={{\n fill: isBookmarked ? \"currentColor\" : \"transparent\",\n }}\n />\n </button>\n </div>\n </div>\n );\n}\n\ninterface SocialMetadataProps {\n likedByText?: string;\n username?: string;\n caption?: string;\n commentsCount: number;\n onViewComments?: () => void;\n}\n\nfunction SocialMetadata({\n likedByText,\n username,\n caption,\n commentsCount,\n onViewComments,\n}: SocialMetadataProps) {\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {likedByText && (\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {likedByText}\n </p>\n )}\n {caption && (\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n <span style={{ fontWeight: 600 }}>{username}</span>{\" \"}\n <span style={{ fontWeight: 400 }}>{caption}</span>\n </p>\n )}\n {commentsCount > 0 && (\n <button\n type=\"button\"\n onClick={onViewComments}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n textAlign: \"left\",\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: \"pointer\",\n }}\n >\n View all {commentsCount} comments\n </button>\n )}\n </div>\n );\n}\n\ninterface PostCardProps {\n post: ImagePost;\n currentUser?: CommentAuthor;\n onLike?: () => void;\n onComment?: (content: string) => void;\n onShare?: () => void;\n onBookmark?: () => void;\n onReply?: (commentId: string, content: string) => void;\n onCommentLike?: (commentId: string) => void;\n}\n\nfunction PostCard({\n post,\n currentUser,\n onLike,\n onComment,\n onShare,\n onBookmark,\n onReply,\n onCommentLike,\n}: PostCardProps) {\n const [showComments, setShowComments] = useState(true);\n\n return (\n <div\n className=\"flex flex-col w-full\"\n style={{\n gap: \"var(--spacing-xl)\",\n paddingBottom: \"var(--spacing-5xl)\",\n }}\n >\n {/* Author Row */}\n <div\n className=\"flex items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <Avatar\n className=\"shrink-0\"\n style={{\n width: 48,\n height: 48,\n borderRadius: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={post.author.avatarUrl} />\n <AvatarFallback>\n {post.author.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col flex-1\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {post.author.name}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {post.date}\n </span>\n </div>\n </div>\n\n {/* Post Image */}\n <div\n className=\"w-full overflow-hidden\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n <img\n src={post.imageUrl}\n alt={post.caption || \"Post image\"}\n className=\"w-full h-auto object-cover\"\n style={{ maxHeight: 768 }}\n />\n </div>\n\n {/* Action Icons */}\n <ActionIconsRow\n isLiked={post.isLiked}\n isBookmarked={post.isBookmarked}\n onLike={onLike}\n onComment={() => setShowComments(!showComments)}\n onShare={onShare}\n onBookmark={onBookmark}\n />\n\n {/* Social Metadata */}\n <SocialMetadata\n likedByText={post.likedByText}\n username={post.author.username}\n caption={post.caption}\n commentsCount={post.commentsCount}\n onViewComments={() => setShowComments(!showComments)}\n />\n\n {/* Comments Section - using NestedCommentsTable */}\n {showComments && post.comments && post.comments.length > 0 && (\n <NestedCommentsTable\n title=\"\"\n subtitle=\"\"\n comments={post.comments}\n currentUser={currentUser}\n onComment={onComment}\n onReply={onReply}\n onLike={onCommentLike}\n className=\"pt-0\"\n />\n )}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Image Feed with Nested Comments Block\n *\n * An Instagram-style image feed component with large images, social interactions\n * (like/comment/share/bookmark), and nested comment threads. Uses NestedCommentsTable\n * internally for the comments section.\n *\n * @example\n * ```tsx\n * <ImageFeedWithNestedComments\n * title=\"My posts\"\n * subtitle=\"In the past year\"\n * posts={[...]}\n * onLike={(postId) => console.log(\"Liked\", postId)}\n * />\n * ```\n */\nexport function ImageFeedWithNestedComments({\n title = \"My posts\",\n subtitle = \"In the past year\",\n posts = defaultPosts,\n currentUser = defaultCurrentUser,\n onLike,\n onComment,\n onShare,\n onBookmark,\n onReply,\n onCommentLike,\n className,\n}: ImageFeedWithNestedCommentsProps) {\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n {(title || subtitle) && (\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n {title && (\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* Posts List */}\n <div className=\"flex flex-col w-full\">\n {posts.map((post) => (\n <PostCard\n key={post.id}\n post={post}\n currentUser={currentUser}\n onLike={() => onLike?.(post.id)}\n onComment={(content) => onComment?.(post.id, content)}\n onShare={() => onShare?.(post.id)}\n onBookmark={() => onBookmark?.(post.id)}\n onReply={(commentId, content) => onReply?.(post.id, commentId, content)}\n onCommentLike={(commentId) => onCommentLike?.(post.id, commentId)}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Video, VideoOff, Mic, MicOff, Cast, LogOut } from \"lucide-react\";\n\ninterface VideoChatControlsProps {\n /** Whether the video is currently on */\n isVideoOn?: boolean;\n /** Whether the mic is currently on */\n isMicOn?: boolean;\n /** Callback when video toggle is clicked */\n onToggleVideo?: () => void;\n /** Callback when mic toggle is clicked */\n onToggleMic?: () => void;\n /** Callback when cast button is clicked */\n onCast?: () => void;\n /** Callback when leave button is clicked */\n onLeave?: () => void;\n /** Additional class names */\n className?: string;\n}\n\ninterface ControlButtonProps {\n icon: React.ReactNode;\n onClick?: () => void;\n isActive?: boolean;\n label: string;\n}\n\nfunction ControlButton({ icon, onClick, isActive = true, label }: ControlButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-label={label}\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center\",\n \"shadow-sm transition-colors\",\n isActive\n ? \"bg-[var(--canvas-sidebar-light-text)] text-white hover:opacity-80\"\n : \"bg-[var(--canvas-destructive)] text-white hover:opacity-80\"\n )}\n >\n {icon}\n </button>\n );\n}\n\n/**\n * Canvas Design System - Video Chat Controls Component\n * \n * Row of circular control buttons for video chat: Camera, Mic, Cast, Leave.\n * \n * @example\n * ```tsx\n * <VideoChatControls\n * isVideoOn={true}\n * isMicOn={true}\n * onToggleVideo={() => setVideoOn(!videoOn)}\n * onToggleMic={() => setMicOn(!micOn)}\n * onLeave={() => router.push('/')}\n * />\n * ```\n */\nexport function VideoChatControls({\n isVideoOn = true,\n isMicOn = true,\n onToggleVideo,\n onToggleMic,\n onCast,\n onLeave,\n className,\n}: VideoChatControlsProps) {\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n <ControlButton\n icon={isVideoOn ? <Video className=\"w-5 h-5\" /> : <VideoOff className=\"w-5 h-5\" />}\n onClick={onToggleVideo}\n isActive={isVideoOn}\n label={isVideoOn ? \"Turn off camera\" : \"Turn on camera\"}\n />\n <ControlButton\n icon={isMicOn ? <Mic className=\"w-5 h-5\" /> : <MicOff className=\"w-5 h-5\" />}\n onClick={onToggleMic}\n isActive={isMicOn}\n label={isMicOn ? \"Mute microphone\" : \"Unmute microphone\"}\n />\n <ControlButton\n icon={<Cast className=\"w-5 h-5\" />}\n onClick={onCast}\n label=\"Cast to device\"\n />\n <ControlButton\n icon={<LogOut className=\"w-5 h-5\" />}\n onClick={onLeave}\n label=\"Leave call\"\n />\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { ReactNode } from \"react\";\n\ninterface VideoContentSectionProps {\n /** Section title */\n title: string;\n /** Content (can be text or React nodes) */\n children: ReactNode;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Video Content Section Component\n * \n * A reusable section with a title and flexible content area.\n * Used for Overview, Notes, and similar text sections.\n * \n * @example\n * ```tsx\n * <VideoContentSection title=\"Overview\">\n * <p>Lorem ipsum...</p>\n * </VideoContentSection>\n * ```\n */\nexport function VideoContentSection({\n title,\n children,\n className,\n}: VideoContentSectionProps) {\n return (\n <div className={cn(\"flex flex-col gap-1\", className)}>\n <h3 \n className=\"text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n }}\n >\n {title}\n </h3>\n <div \n className=\"text-[var(--canvas-text-muted)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {children}\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Minus, Plus, Play } from \"lucide-react\";\nimport { useState } from \"react\";\n\ninterface VideoPlaylistItemData {\n id: string;\n title: string;\n duration: string;\n thumbnail?: string;\n}\n\ninterface VideoPlaylistItemProps {\n /** Item index (1-based for display) */\n index: number;\n /** Item data */\n item: VideoPlaylistItemData;\n /** Whether this item is currently active/playing */\n isActive?: boolean;\n /** Click handler */\n onClick?: () => void;\n}\n\n/**\n * Individual lesson row in the playlist\n */\nexport function VideoPlaylistItem({\n index,\n item,\n isActive = false,\n onClick,\n}: VideoPlaylistItemProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-3 px-6 py-3 cursor-pointer transition-colors\",\n isActive\n ? \"bg-[var(--canvas-surface-brand)]\"\n : \"hover:bg-[var(--canvas-surface)]\"\n )}\n onClick={onClick}\n >\n {/* Index or Play Icon */}\n <div className=\"w-[26px] shrink-0 flex items-center justify-center\">\n {isActive ? (\n <Play\n className=\"w-5 h-5 text-[var(--canvas-primary)] fill-[var(--canvas-primary)]\"\n />\n ) : (\n <span \n className=\"text-[var(--canvas-text-placeholder)]\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-body-xl-spacing)\",\n lineHeight: \"var(--typo-body-xl-line-height)\",\n }}\n >\n {index}\n </span>\n )}\n </div>\n\n {/* Title and Duration */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n <p\n className={cn(\n isActive\n ? \"text-[var(--canvas-primary)]\"\n : \"text-[var(--canvas-text)]\"\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {item.title}\n </p>\n <p \n className=\"text-[var(--canvas-text-muted)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {item.duration}\n </p>\n </div>\n </div>\n );\n}\n\ninterface VideoPlaylistCardProps {\n /** Card title */\n title?: string;\n /** Playlist items */\n items: VideoPlaylistItemData[];\n /** Currently active item ID */\n activeId?: string;\n /** Callback when an item is clicked */\n onItemClick?: (id: string) => void;\n /** Whether the playlist starts collapsed (mobile only) */\n defaultCollapsed?: boolean;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - Video Playlist Card Component\n * \n * A card container showing lesson list with collapsible behavior.\n * Features shadow, border, and hover states.\n * \n * @example\n * ```tsx\n * <VideoPlaylistCard\n * title=\"Lessons in this course\"\n * items={lessons}\n * activeId=\"lesson-2\"\n * onItemClick={(id) => setActiveLesson(id)}\n * />\n * ```\n */\nexport function VideoPlaylistCard({\n title = \"Lessons in this course\",\n items,\n activeId,\n onItemClick,\n defaultCollapsed = false,\n className,\n}: VideoPlaylistCardProps) {\n const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);\n\n return (\n <div\n className={cn(\n \"flex flex-col rounded-lg border border-[var(--canvas-border)]\",\n \"shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]\",\n \"bg-[var(--canvas-bg)]\",\n className\n )}\n >\n {/* Header */}\n <button\n type=\"button\"\n className=\"flex items-center gap-2 p-4 border-b border-[var(--canvas-border)] text-left w-full\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n >\n <div className=\"w-4 h-4 shrink-0 flex items-center justify-center\">\n {isCollapsed ? (\n <Plus className=\"w-4 h-4 text-[var(--canvas-text)]\" />\n ) : (\n <Minus className=\"w-4 h-4 text-[var(--canvas-text)]\" />\n )}\n </div>\n <h4 \n className=\"text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n fontWeight: 600,\n letterSpacing: \"var(--typo-body-xl-spacing)\",\n lineHeight: \"var(--typo-body-xl-line-height)\",\n }}\n >\n {title}\n </h4>\n </button>\n\n {/* List */}\n <div\n className={cn(\n \"overflow-hidden transition-all duration-200 ease-in-out\",\n isCollapsed ? \"max-h-0\" : \"max-h-[2000px]\"\n )}\n >\n <div className=\"py-4\">\n {items.map((item, index) => (\n <VideoPlaylistItem\n key={item.id}\n index={index + 1}\n item={item}\n isActive={item.id === activeId}\n onClick={() => onItemClick?.(item.id)}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { VideoOff } from \"lucide-react\";\n\ninterface WebcamPreviewProps {\n /** Additional class names */\n className?: string;\n /** Whether the video should be muted (default true for self-view) */\n muted?: boolean;\n /** Whether the video should be mirrored (default true for self-view) */\n mirrored?: boolean;\n /** Fallback content when camera is not available */\n fallbackText?: string;\n}\n\n/**\n * Canvas Design System - Webcam Preview Component\n * \n * Displays live webcam feed using the browser's MediaDevices API.\n * Handles permission denied and unavailable camera gracefully.\n * \n * @example\n * ```tsx\n * <WebcamPreview className=\"w-full h-full rounded-[20px]\" />\n * ```\n */\nexport function WebcamPreview({\n className,\n muted = true,\n mirrored = true,\n fallbackText = \"Camera unavailable\",\n}: WebcamPreviewProps) {\n const videoRef = useRef<HTMLVideoElement>(null);\n const streamRef = useRef<MediaStream | null>(null);\n const [hasPermission, setHasPermission] = useState<boolean | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n let mounted = true;\n\n async function startCamera() {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n video: { facingMode: \"user\" },\n audio: false,\n });\n\n if (!mounted) {\n // Component unmounted before we got the stream\n stream.getTracks().forEach((track) => track.stop());\n return;\n }\n\n streamRef.current = stream;\n\n if (videoRef.current) {\n videoRef.current.srcObject = stream;\n await videoRef.current.play();\n }\n\n setHasPermission(true);\n setIsLoading(false);\n } catch {\n if (mounted) {\n // Camera permission denied or unavailable - handled gracefully with fallback UI\n setHasPermission(false);\n setIsLoading(false);\n }\n }\n }\n\n startCamera();\n\n // Cleanup: stop video tracks when component unmounts\n return () => {\n mounted = false;\n if (streamRef.current) {\n streamRef.current.getTracks().forEach((track) => track.stop());\n streamRef.current = null;\n }\n };\n }, []);\n\n // Fallback UI for when camera is not available\n if (hasPermission === false) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center bg-[var(--canvas-surface)]\",\n className\n )}\n >\n <VideoOff className=\"w-12 h-12 mb-2 opacity-50 text-[var(--canvas-text-muted)]\" />\n <p \n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n letterSpacing: \"var(--typo-body-s-spacing)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--typo-body-s-color)\",\n }}\n >\n {fallbackText}\n </p>\n </div>\n );\n }\n\n return (\n <div className={cn(\"relative overflow-hidden bg-[var(--canvas-surface)]\", className)}>\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-[var(--canvas-surface)]\">\n <div className=\"w-8 h-8 border-2 border-[var(--canvas-primary)] border-t-transparent rounded-full animate-spin\" />\n </div>\n )}\n <video\n ref={videoRef}\n muted={muted}\n playsInline\n className={cn(\n \"w-full h-full object-cover\",\n mirrored && \"scale-x-[-1]\",\n isLoading && \"opacity-0\"\n )}\n />\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\ninterface YouTubePlayerProps {\n /** YouTube video ID (e.g., \"dQw4w9WgXcQ\") */\n videoId: string;\n /** Additional class names */\n className?: string;\n}\n\n/**\n * Canvas Design System - YouTube Player Component\n * \n * A responsive YouTube video embed with 16:9 aspect ratio.\n * Rounded corners are larger on desktop (20px) and smaller on mobile (8px).\n * \n * @example\n * ```tsx\n * <YouTubePlayer videoId=\"dQw4w9WgXcQ\" />\n * ```\n */\nexport function YouTubePlayer({\n videoId,\n className,\n}: YouTubePlayerProps) {\n return (\n <div\n className={cn(\n \"relative w-full overflow-hidden\",\n \"rounded-lg lg:rounded-[20px]\",\n \"border border-[var(--canvas-border)]\",\n \"aspect-video\",\n className\n )}\n >\n <iframe\n src={`https://www.youtube.com/embed/${videoId}`}\n title=\"YouTube video player\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n className=\"absolute inset-0 w-full h-full\"\n />\n </div>\n );\n}\n\n\n\n\n\n\n\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Pencil, MoreVertical } from \"lucide-react\";\nimport { Switch } from \"../ui/switch\";\nimport { Button } from \"../ui/button\";\n\ninterface SettingsListRowProps {\n /** Label for the setting */\n label: string;\n /** Value or description text */\n value?: string;\n /** Type of action on the right side */\n actionType?: \"edit\" | \"toggle\" | \"more\" | \"none\";\n /** For toggle: whether it's checked */\n checked?: boolean;\n /** For toggle: callback when changed */\n onCheckedChange?: (checked: boolean) => void;\n /** For edit/more: callback when clicked */\n onActionClick?: () => void;\n /** Whether this is the first row (has top border) */\n isFirst?: boolean;\n /** Whether this is the last row (no bottom border) */\n isLast?: boolean;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Settings List Row\n * \n * A reusable row for settings lists with:\n * - Label on the left\n * - Value/description in the middle\n * - Action on the right (edit icon, toggle, or more menu)\n */\nexport function SettingsListRow({\n label,\n value,\n actionType = \"edit\",\n checked,\n onCheckedChange,\n onActionClick,\n isFirst = false,\n isLast = false,\n className,\n}: SettingsListRowProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-[var(--spacing-xl)] min-h-[48px] py-3\",\n isFirst && \"border-t border-[var(--canvas-neutral-border)]\",\n !isLast && \"border-b border-[var(--canvas-neutral-border)]\",\n className\n )}\n >\n {/* Label */}\n <div \n className=\"w-[200px] shrink-0 text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height, 20px)\",\n }}\n >\n {label}\n </div>\n\n {/* Value */}\n <div \n className=\"flex-1 text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 400,\n lineHeight: \"var(--typo-body-s-line-height, 20px)\",\n }}\n >\n {value}\n </div>\n\n {/* Action */}\n <div className=\"shrink-0\">\n {actionType === \"toggle\" && (\n <Switch\n checked={checked}\n onCheckedChange={onCheckedChange}\n />\n )}\n {actionType === \"edit\" && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={onActionClick}\n className=\"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n >\n <Pencil className=\"size-5\" />\n </Button>\n )}\n {actionType === \"more\" && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={onActionClick}\n className=\"text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]\"\n >\n <MoreVertical className=\"size-5\" />\n </Button>\n )}\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\ninterface CreditCardDisplayProps {\n /** Card type (visa, mastercard, amex, etc.) */\n cardType?: \"visa\" | \"mastercard\" | \"amex\" | \"discover\";\n /** Last 4 digits of card number */\n lastFourDigits?: string;\n /** Cardholder name */\n cardholderName?: string;\n /** Expiry date (MM/YY format) */\n expiryDate?: string;\n /** Additional class name */\n className?: string;\n}\n\n/**\n * Credit Card Display\n * \n * A visual credit card representation for payment settings.\n * Shows card type, masked number, cardholder name, and expiry.\n * Uses the flair background color with a subtle lighting gradient.\n */\nexport function CreditCardDisplay({\n cardType = \"visa\",\n lastFourDigits = \"1234\",\n cardholderName = \"Card Holder\",\n expiryDate = \"12/24\",\n className,\n}: CreditCardDisplayProps) {\n // Card type logos (simplified text representations)\n const cardTypeDisplay: Record<string, { name: string }> = {\n visa: { name: \"VISA\" },\n mastercard: { name: \"Mastercard\" },\n amex: { name: \"AMEX\" },\n discover: { name: \"Discover\" },\n };\n\n const cardInfo = cardTypeDisplay[cardType] || cardTypeDisplay.visa;\n\n return (\n <div\n className={cn(\n \"relative w-[375px] h-[240px] rounded-[var(--radius-lg)] overflow-hidden\",\n \"p-6 flex flex-col justify-between\",\n \"shadow-lg\",\n className\n )}\n style={{\n background: `linear-gradient(135deg, \n color-mix(in srgb, var(--canvas-flair-bg) 100%, white 0%) 0%, \n var(--canvas-flair-bg) 50%, \n color-mix(in srgb, var(--canvas-flair-bg) 100%, black 20%) 100%)`,\n }}\n >\n {/* Lighting overlay for depth */}\n <div \n className=\"absolute inset-0 pointer-events-none\"\n style={{\n background: `linear-gradient(145deg, \n rgba(255,255,255,0.15) 0%, \n rgba(255,255,255,0.05) 30%, \n transparent 50%, \n rgba(0,0,0,0.1) 100%)`,\n }}\n />\n\n {/* Top row - Card type logo */}\n <div className=\"relative flex justify-between items-start\">\n <span\n className=\"text-white font-bold italic\"\n style={{\n fontSize: \"28px\",\n letterSpacing: \"1px\",\n fontFamily: \"var(--typo-global-font)\",\n }}\n >\n {cardInfo.name}\n </span>\n </div>\n\n {/* Middle - Card number */}\n <div className=\"relative flex items-center gap-4\">\n <span \n className=\"text-white tracking-[4px]\"\n style={{\n fontFamily: \"monospace\",\n fontSize: \"18px\",\n }}\n >\n ****\n </span>\n <span \n className=\"text-white tracking-[4px]\"\n style={{\n fontFamily: \"monospace\",\n fontSize: \"18px\",\n }}\n >\n ****\n </span>\n <span \n className=\"text-white tracking-[4px]\"\n style={{\n fontFamily: \"monospace\",\n fontSize: \"18px\",\n }}\n >\n ****\n </span>\n <span \n className=\"text-white tracking-[4px]\"\n style={{\n fontFamily: \"monospace\",\n fontSize: \"18px\",\n }}\n >\n {lastFourDigits}\n </span>\n </div>\n\n {/* Bottom row - Name and Expiry */}\n <div className=\"relative flex justify-between items-end\">\n <div>\n <span \n className=\"text-white/70 text-xs block mb-1\"\n style={{ fontFamily: \"var(--typo-global-font)\" }}\n >\n CARDHOLDER\n </span>\n <span \n className=\"text-white font-medium\"\n style={{\n fontSize: \"16px\",\n fontFamily: \"var(--typo-global-font)\",\n }}\n >\n {cardholderName}\n </span>\n </div>\n <div className=\"text-right\">\n <span \n className=\"text-white/70 text-xs block mb-1\"\n style={{ fontFamily: \"var(--typo-global-font)\" }}\n >\n EXPIRES\n </span>\n <span \n className=\"text-white font-medium\"\n style={{\n fontSize: \"16px\",\n fontFamily: \"var(--typo-global-font)\",\n }}\n >\n {expiryDate}\n </span>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { X, GripHorizontal } from \"lucide-react\";\n\nexport interface CanvasItemData {\n id: string;\n componentType: string;\n x: number;\n y: number;\n width?: number;\n height?: number;\n}\n\ninterface CanvasItemProps {\n item: CanvasItemData;\n isSelected: boolean;\n onSelect: (id: string) => void;\n onDelete: (id: string) => void;\n onDragStart: (id: string, startX: number, startY: number, itemX: number, itemY: number) => void;\n scale: number;\n children: React.ReactNode;\n}\n\n/**\n * Canvas Item - Wrapper for components placed on the infinity canvas\n * \n * Handles:\n * - Absolute positioning based on x, y coordinates\n * - Selection state with visual border\n * - Drag handle for repositioning\n * - Delete button when selected\n */\nexport function CanvasItem({\n item,\n isSelected,\n onSelect,\n onDelete,\n onDragStart,\n scale,\n children,\n}: CanvasItemProps) {\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragHandleMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n onSelect(item.id);\n // Pass the mouse start position and current item position\n onDragStart(item.id, e.clientX, e.clientY, item.x, item.y);\n };\n\n const handleClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n onSelect(item.id);\n };\n\n const handleDelete = (e: React.MouseEvent) => {\n e.stopPropagation();\n onDelete(item.id);\n };\n\n return (\n <div\n className={cn(\n \"absolute group\",\n \"transition-shadow duration-150\",\n isSelected && \"ring-2 ring-[var(--canvas-primary)] ring-offset-2\",\n isDragging && \"opacity-90 shadow-2xl z-50\"\n )}\n style={{\n left: item.x,\n top: item.y,\n }}\n onClick={handleClick}\n >\n {/* Control bar - visible on hover or when selected */}\n <div\n className={cn(\n \"absolute -top-9 left-0 right-0 flex items-center justify-between px-2 py-1.5\",\n \"bg-[var(--canvas-text)] rounded-t-md\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\",\n isSelected && \"opacity-100\"\n )}\n >\n {/* Drag handle - this is what you grab to drag */}\n <div\n onMouseDown={handleDragHandleMouseDown}\n className=\"flex items-center gap-1.5 text-white/90 text-xs cursor-grab active:cursor-grabbing select-none\"\n >\n <GripHorizontal className=\"size-4\" />\n <span className=\"text-[11px] font-medium\">{item.componentType}</span>\n </div>\n\n {/* Delete button */}\n <button\n onClick={handleDelete}\n className=\"p-1 rounded hover:bg-white/20 text-white/80 hover:text-white transition-colors\"\n aria-label=\"Delete component\"\n >\n <X className=\"size-3.5\" />\n </button>\n </div>\n\n {/* Component content */}\n <div className=\"pointer-events-none\">\n {children}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useDraggable } from \"@dnd-kit/core\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { cn } from \"../../lib/utils\";\nimport { \n ChevronDown, \n ChevronRight,\n Layout,\n LayoutGrid,\n MessageSquare,\n Megaphone,\n CreditCard,\n User,\n Table,\n List,\n Image,\n Type,\n Video,\n Search,\n Settings,\n LogIn,\n Phone,\n ShoppingCart,\n FileText,\n Square,\n CheckSquare,\n Calendar,\n ToggleLeft,\n CircleDot,\n Hash,\n SlidersHorizontal,\n Tags,\n Star,\n MapPin,\n Users,\n Play,\n Newspaper,\n Building,\n Award,\n Layers,\n} from \"lucide-react\";\nimport { ScrollArea } from \"../ui/scroll-area\";\n\n// Component definitions for the palette\nexport interface PaletteComponent {\n id: string;\n type: string;\n label: string;\n icon: React.ReactNode;\n category: string;\n}\n\nconst paletteComponents: PaletteComponent[] = [\n // =====================\n // PAGE TEMPLATES\n // =====================\n { id: \"page-about\", type: \"PageAbout\", label: \"About\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-account\", type: \"PageAccount\", label: \"Account Settings\", icon: <Settings className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-admin-portal\", type: \"PageAdminPortal\", label: \"Admin Portal\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-centered-profile\", type: \"PageCenteredProfile\", label: \"Centered Profile\", icon: <User className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-double-sidebar\", type: \"PageDoubleSidebar\", label: \"Double Sidebar\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-icon-sidebar\", type: \"PageIconSidebar\", label: \"Icon Sidebar\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-login\", type: \"PageLogin\", label: \"Login / Signup\", icon: <LogIn className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-menu-sections\", type: \"PageMenuSections\", label: \"Menu Sections\", icon: <List className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-messenger\", type: \"PageMessenger\", label: \"Messenger\", icon: <MessageSquare className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-mobile-menu\", type: \"PageMobileMenu\", label: \"Mobile Menu\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-multistep-progressbar\", type: \"PageMultistepProgressbar\", label: \"Multistep + Progress\", icon: <List className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-multistep-sidebar\", type: \"PageMultistepSidebar\", label: \"Multistep + Sidebar\", icon: <List className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-pricing\", type: \"PagePricing\", label: \"Pricing\", icon: <CreditCard className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-product-homepage\", type: \"PageProductHomepage\", label: \"Product Homepage\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-reset-password\", type: \"PageResetPassword\", label: \"Reset Password\", icon: <LogIn className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-search-bar\", type: \"PageSearchBar\", label: \"Search Bar\", icon: <Search className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-sidebar-profile\", type: \"PageSidebarProfile\", label: \"Sidebar Profile\", icon: <User className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-standard\", type: \"PageStandard\", label: \"Standard Page\", icon: <Layout className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-standard-multistep\", type: \"PageStandardMultistep\", label: \"Standard Multistep\", icon: <List className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-standard-search\", type: \"PageStandardSearch\", label: \"Standard Search\", icon: <Search className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-vertical-multistep\", type: \"PageVerticalMultistep\", label: \"Vertical Multistep\", icon: <List className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-video-chat\", type: \"PageVideoChat\", label: \"Video Chat\", icon: <Video className=\"size-4\" />, category: \"Page Templates\" },\n { id: \"page-video-list\", type: \"PageVideoList\", label: \"Video List\", icon: <Play className=\"size-4\" />, category: \"Page Templates\" },\n\n // =====================\n // BLOCKS\n // =====================\n // Data & Tables\n { id: \"standard-data-table\", type: \"StandardDataTable\", label: \"Data Table\", icon: <Table className=\"size-4\" />, category: \"Blocks\" },\n \n // Cards & Profiles\n { id: \"profile-card\", type: \"ProfileCard\", label: \"Profile Card\", icon: <User className=\"size-4\" />, category: \"Blocks\" },\n { id: \"sidebar-profile-card\", type: \"SidebarProfileCard\", label: \"Sidebar Profile Card\", icon: <User className=\"size-4\" />, category: \"Blocks\" },\n { id: \"profile-info-cards\", type: \"ProfileInfoCards\", label: \"Profile Info Cards\", icon: <LayoutGrid className=\"size-4\" />, category: \"Blocks\" },\n { id: \"sidebar-cards\", type: \"SidebarCards\", label: \"Sidebar Cards\", icon: <Layers className=\"size-4\" />, category: \"Blocks\" },\n { id: \"credit-card-display\", type: \"CreditCardDisplay\", label: \"Credit Card Display\", icon: <CreditCard className=\"size-4\" />, category: \"Blocks\" },\n \n // Navigation & Progress\n { id: \"step-tracker\", type: \"StepTracker\", label: \"Step Tracker\", icon: <List className=\"size-4\" />, category: \"Blocks\" },\n { id: \"vertical-step-tracker\", type: \"VerticalStepTracker\", label: \"Vertical Step Tracker\", icon: <List className=\"size-4\" />, category: \"Blocks\" },\n { id: \"progress-bar\", type: \"ProgressBar\", label: \"Progress Bar\", icon: <SlidersHorizontal className=\"size-4\" />, category: \"Blocks\" },\n { id: \"pill-tabs\", type: \"PillTabs\", label: \"Pill Tabs\", icon: <LayoutGrid className=\"size-4\" />, category: \"Blocks\" },\n { id: \"mobile-bottom-nav\", type: \"MobileBottomNav\", label: \"Mobile Bottom Nav\", icon: <Layout className=\"size-4\" />, category: \"Blocks\" },\n \n // Banners & Headers\n { id: \"flair-banner\", type: \"FlairBanner\", label: \"Flair Banner\", icon: <Type className=\"size-4\" />, category: \"Blocks\" },\n { id: \"gradient-banner\", type: \"GradientBanner\", label: \"Gradient Banner\", icon: <Type className=\"size-4\" />, category: \"Blocks\" },\n { id: \"page-header-section\", type: \"PageHeaderSection\", label: \"Page Header Section\", icon: <FileText className=\"size-4\" />, category: \"Blocks\" },\n \n // Chat & Messaging\n { id: \"messenger-sidebar\", type: \"MessengerSidebar\", label: \"Messenger Sidebar\", icon: <MessageSquare className=\"size-4\" />, category: \"Blocks\" },\n { id: \"chat-message\", type: \"ChatMessage\", label: \"Chat Message\", icon: <MessageSquare className=\"size-4\" />, category: \"Blocks\" },\n \n // Video\n { id: \"video-chat-controls\", type: \"VideoChatControls\", label: \"Video Chat Controls\", icon: <Video className=\"size-4\" />, category: \"Blocks\" },\n { id: \"webcam-preview\", type: \"WebcamPreview\", label: \"Webcam Preview\", icon: <Video className=\"size-4\" />, category: \"Blocks\" },\n { id: \"participant-list\", type: \"ParticipantList\", label: \"Participant List\", icon: <Users className=\"size-4\" />, category: \"Blocks\" },\n { id: \"video-content-section\", type: \"VideoContentSection\", label: \"Video Content Section\", icon: <Play className=\"size-4\" />, category: \"Blocks\" },\n { id: \"video-playlist\", type: \"VideoPlaylist\", label: \"Video Playlist\", icon: <List className=\"size-4\" />, category: \"Blocks\" },\n \n // Search & Filters\n { id: \"search-bar\", type: \"SearchBar\", label: \"Search Bar\", icon: <Search className=\"size-4\" />, category: \"Blocks\" },\n { id: \"filter-popover\", type: \"FilterPopover\", label: \"Filter Popover\", icon: <SlidersHorizontal className=\"size-4\" />, category: \"Blocks\" },\n \n // Forms & Settings\n { id: \"settings-list-row\", type: \"SettingsListRow\", label: \"Settings List Row\", icon: <Settings className=\"size-4\" />, category: \"Blocks\" },\n { id: \"profile-image-uploader\", type: \"ProfileImageUploader\", label: \"Profile Image Uploader\", icon: <Image className=\"size-4\" />, category: \"Blocks\" },\n { id: \"login-branding-panel\", type: \"LoginBrandingPanel\", label: \"Login Branding Panel\", icon: <Layout className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - Heroes\n { id: \"hero-section\", type: \"HeroSection\", label: \"Hero Section\", icon: <Image className=\"size-4\" />, category: \"Blocks\" },\n { id: \"hero-dark-with-image\", type: \"HeroDarkWithImage\", label: \"Hero Dark + Image\", icon: <Image className=\"size-4\" />, category: \"Blocks\" },\n { id: \"centered-hero\", type: \"CenteredHero\", label: \"Centered Hero\", icon: <Image className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - Social Proof\n { id: \"testimonial-carousel\", type: \"TestimonialCarousel\", label: \"Testimonial Carousel\", icon: <MessageSquare className=\"size-4\" />, category: \"Blocks\" },\n { id: \"reviews-grid\", type: \"ReviewsGrid\", label: \"Reviews Grid\", icon: <Star className=\"size-4\" />, category: \"Blocks\" },\n { id: \"social-proof\", type: \"SocialProof\", label: \"Social Proof (Logos)\", icon: <Award className=\"size-4\" />, category: \"Blocks\" },\n { id: \"metrics-section\", type: \"MetricsSection\", label: \"Metrics Section\", icon: <Hash className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - Features\n { id: \"feature-with-image\", type: \"FeatureWithImage\", label: \"Feature + Image\", icon: <Image className=\"size-4\" />, category: \"Blocks\" },\n { id: \"core-values-grid\", type: \"CoreValuesGrid\", label: \"Core Values Grid\", icon: <LayoutGrid className=\"size-4\" />, category: \"Blocks\" },\n { id: \"destination-cards\", type: \"DestinationCards\", label: \"Destination Cards\", icon: <MapPin className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - Team\n { id: \"team-cards-grid\", type: \"TeamCardsGrid\", label: \"Team Cards Grid\", icon: <Users className=\"size-4\" />, category: \"Blocks\" },\n { id: \"team-circular-grid\", type: \"TeamCircularGrid\", label: \"Team Circular Grid\", icon: <Users className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - CTA & Footer\n { id: \"cta-banner\", type: \"CtaBanner\", label: \"CTA Banner\", icon: <Megaphone className=\"size-4\" />, category: \"Blocks\" },\n { id: \"footer-navbar\", type: \"FooterNavbar\", label: \"Footer Navbar\", icon: <Layout className=\"size-4\" />, category: \"Blocks\" },\n \n // Marketing - Other\n { id: \"featured-news-cards\", type: \"FeaturedNewsCards\", label: \"Featured News Cards\", icon: <Newspaper className=\"size-4\" />, category: \"Blocks\" },\n { id: \"office-locations\", type: \"OfficeLocations\", label: \"Office Locations\", icon: <Building className=\"size-4\" />, category: \"Blocks\" },\n \n // Pricing\n { id: \"pricing-cards\", type: \"PricingCards\", label: \"Pricing Cards\", icon: <CreditCard className=\"size-4\" />, category: \"Blocks\" },\n { id: \"faq-accordion\", type: \"FaqAccordion\", label: \"FAQ Accordion\", icon: <List className=\"size-4\" />, category: \"Blocks\" },\n { id: \"features-comparison\", type: \"FeaturesComparison\", label: \"Features Comparison\", icon: <Table className=\"size-4\" />, category: \"Blocks\" },\n\n // =====================\n // COMPONENTS (UI Primitives)\n // =====================\n { id: \"button\", type: \"Button\", label: \"Button\", icon: <Square className=\"size-4\" />, category: \"Components\" },\n { id: \"checkbox\", type: \"Checkbox\", label: \"Checkbox\", icon: <CheckSquare className=\"size-4\" />, category: \"Components\" },\n { id: \"date-input\", type: \"DateInput\", label: \"Date Input\", icon: <Calendar className=\"size-4\" />, category: \"Components\" },\n { id: \"input\", type: \"Input\", label: \"Text Input\", icon: <Type className=\"size-4\" />, category: \"Components\" },\n { id: \"select\", type: \"Select\", label: \"Select\", icon: <List className=\"size-4\" />, category: \"Components\" },\n { id: \"switch\", type: \"Switch\", label: \"Switch\", icon: <ToggleLeft className=\"size-4\" />, category: \"Components\" },\n { id: \"radio-group\", type: \"RadioGroup\", label: \"Radio Group\", icon: <CircleDot className=\"size-4\" />, category: \"Components\" },\n { id: \"multiselect-tags\", type: \"MultiselectTags\", label: \"Multiselect Tags\", icon: <Tags className=\"size-4\" />, category: \"Components\" },\n { id: \"avatar\", type: \"Avatar\", label: \"Avatar\", icon: <User className=\"size-4\" />, category: \"Components\" },\n { id: \"badge\", type: \"Badge\", label: \"Badge\", icon: <Award className=\"size-4\" />, category: \"Components\" },\n];\n\n// Group components by category\nconst componentsByCategory = paletteComponents.reduce((acc, comp) => {\n if (!acc[comp.category]) {\n acc[comp.category] = [];\n }\n acc[comp.category].push(comp);\n return acc;\n}, {} as Record<string, PaletteComponent[]>);\n\n// Define category order\nconst categoryOrder = [\"Page Templates\", \"Blocks\", \"Components\"];\n\ninterface DraggableComponentProps {\n component: PaletteComponent;\n}\n\nfunction DraggableComponent({ component }: DraggableComponentProps) {\n const [isMounted, setIsMounted] = useState(false);\n \n const { attributes, listeners, setNodeRef, transform, isDragging } = useDraggable({\n id: component.id,\n data: {\n type: component.type,\n label: component.label,\n },\n });\n\n // Only apply dnd-kit attributes after hydration to prevent mismatch\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const style = {\n transform: CSS.Transform.toString(transform),\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n // Only spread dnd-kit attributes after client-side mount to avoid hydration mismatch\n {...(isMounted ? attributes : {})}\n {...(isMounted ? listeners : {})}\n className={cn(\n \"flex items-center gap-3 px-3 py-2.5 rounded-md cursor-grab active:cursor-grabbing\",\n \"border border-transparent\",\n \"hover:bg-[var(--canvas-surface)] hover:border-[var(--canvas-border)]\",\n \"transition-colors group\"\n )}\n >\n <div \n className=\"flex items-center justify-center size-8 rounded-md bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]\"\n >\n {component.icon}\n </div>\n <span \n className=\"text-sm text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n }}\n >\n {component.label}\n </span>\n </div>\n );\n}\n\ninterface CategorySectionProps {\n category: string;\n components: PaletteComponent[];\n defaultExpanded?: boolean;\n}\n\nfunction CategorySection({ category, components, defaultExpanded = true }: CategorySectionProps) {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n\n return (\n <div className=\"mb-2\">\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--canvas-surface)] rounded-md transition-colors\"\n >\n {isExpanded ? (\n <ChevronDown className=\"size-4 text-[var(--canvas-text-muted)]\" />\n ) : (\n <ChevronRight className=\"size-4 text-[var(--canvas-text-muted)]\" />\n )}\n <span \n className=\"text-xs font-semibold uppercase tracking-wider text-[var(--canvas-text-muted)]\"\n >\n {category}\n </span>\n <span className=\"ml-auto text-xs text-[var(--canvas-text-placeholder)]\">\n {components.length}\n </span>\n </button>\n \n {isExpanded && (\n <div className=\"mt-1 ml-2 space-y-0.5\">\n {components.map((component) => (\n <DraggableComponent key={component.id} component={component} />\n ))}\n </div>\n )}\n </div>\n );\n}\n\ninterface ComponentPaletteProps {\n className?: string;\n}\n\n/**\n * Component Palette - Sidebar with draggable components\n * \n * Features:\n * - Organized by category (Page Templates, Blocks, Components)\n * - Collapsible sections\n * - Drag to add to canvas\n */\nexport function ComponentPalette({ className }: ComponentPaletteProps) {\n return (\n <aside\n className={cn(\n \"w-[280px] h-full flex flex-col\",\n \"bg-white border-r border-[var(--canvas-border)]\",\n className\n )}\n >\n {/* Header */}\n <div className=\"px-4 py-4 border-b border-[var(--canvas-border)]\">\n <h2 \n className=\"text-sm font-semibold text-[var(--canvas-text)]\"\n style={{\n fontFamily: \"var(--typo-body-m-font, var(--typo-global-font))\",\n }}\n >\n Components\n </h2>\n <p \n className=\"text-xs text-[var(--canvas-text-muted)] mt-1\"\n >\n Drag components onto the canvas\n </p>\n </div>\n\n {/* Component List */}\n <ScrollArea className=\"flex-1\">\n <div className=\"p-3\">\n {categoryOrder.map((category) => {\n const components = componentsByCategory[category];\n if (!components) return null;\n return (\n <CategorySection\n key={category}\n category={category}\n components={components}\n defaultExpanded={category !== \"Page Templates\"} // Collapse templates by default\n />\n );\n })}\n </div>\n </ScrollArea>\n\n {/* Footer hint */}\n <div className=\"px-4 py-3 border-t border-[var(--canvas-border)] bg-[var(--canvas-surface)]\">\n <p className=\"text-xs text-[var(--canvas-text-placeholder)]\">\n Tip: Press <kbd className=\"px-1.5 py-0.5 bg-white rounded border border-[var(--canvas-border)] text-[10px]\">Delete</kbd> to remove selected\n </p>\n </div>\n </aside>\n );\n}\n","/**\n * Component Registry\n * \n * A lightweight reference for AI assistants to understand available components\n * without reading all source files. Check this file first when working on\n * page templates, blocks, or layouts.\n * \n * Each component entry includes:\n * - path: Import path for the component\n * - description: Brief explanation of what the component does\n * - props: Key props (not exhaustive, see source for full interface)\n */\n\n// ============================================\n// LAYOUT SHELLS\n// ============================================\n// These are the main page wrapper components that provide structure\n\nexport const layoutShells = {\n DashboardShell: {\n path: \"@/components/layout\",\n description: \"Main dashboard layout with dark sidebar (320px) and fixed header. Sidebar has collapsible sections with nav items.\",\n props: [\"navigation: NavSection[]\", \"pageHeader?\", \"children\", \"onNavItemClick?\"],\n },\n IconSidebarShell: {\n path: \"@/components/layout\",\n description: \"Layout with narrow icon-only sidebar (96px). Good for apps with few main sections.\",\n props: [\"navigation?: IconNavItemConfig[]\", \"pageHeader?\", \"children\", \"onNavItemClick?\"],\n },\n DoubleSidebarShell: {\n path: \"@/components/layout\",\n description: \"Two-column sidebar layout (96px icons + 280px nav). Each column can be light/dark themed independently.\",\n props: [\"sections?: DoubleSidebarSection[]\", \"iconVariant?\", \"navVariant?\", \"children\", \"onTabClick?\"],\n },\n StandardPageShell: {\n path: \"@/components/layout\",\n description: \"No-sidebar layout with centered content (max 992px). Has optional flair banner and page header with tabs.\",\n props: [\"bannerTitle?\", \"pageTitle?\", \"tabs?\", \"activeTab?\", \"showBanner?\", \"showTabs?\", \"children\"],\n },\n AccountSettingsShell: {\n path: \"@/components/layout\",\n description: \"Settings page layout with left sidebar navigation (Profile, Security, Payments, Notifications tabs).\",\n props: [\"activeTab?: AccountTab\", \"onTabChange?\", \"pageTitle?\", \"children\"],\n },\n MultistepShell: {\n path: \"@/components/layout\",\n description: \"Multi-step wizard layout with horizontal step tracker, step title/description, and navigation buttons.\",\n props: [\"steps?: Step[]\", \"currentStep?\", \"onStepClick?\", \"onCancel?\", \"onContinue?\", \"children\"],\n },\n MultistepSidebarShell: {\n path: \"@/components/layout\",\n description: \"Multi-step wizard with sidebar step list instead of horizontal tracker.\",\n props: [\"steps?: Step[]\", \"currentStep?\", \"children\"],\n },\n MultistepProgressBarShell: {\n path: \"@/components/layout\",\n description: \"Multi-step wizard with a horizontal progress bar at top.\",\n props: [\"steps?: MultistepProgressBarStep[]\", \"currentStep?\", \"children\"],\n },\n VerticalMultistepShell: {\n path: \"@/components/layout\",\n description: \"Multi-step wizard with vertical step tracker on the left side.\",\n props: [\"steps?: Step[]\", \"currentStep?\", \"children\"],\n },\n MobileMenuShell: {\n path: \"@/components/layout\",\n description: \"Mobile-first layout with bottom navigation bar. Good for mobile app-like experiences.\",\n props: [\"children\", \"bottomNavItems?\"],\n },\n SearchBarShell: {\n path: \"@/components/layout\",\n description: \"Layout with prominent search bar in header area.\",\n props: [\"children\", \"onSearch?\"],\n },\n} as const;\n\n// ============================================\n// LAYOUT PRIMITIVES\n// ============================================\n// Building blocks used by shells or standalone\n\nexport const layoutPrimitives = {\n Header: {\n path: \"@/components/layout\",\n description: \"Top navigation bar with logo, nav links, icon cluster (search, notifications, messages, cart), and avatar dropdown.\",\n props: [\"onMenuClick?\", \"showDesktopLogo?\", \"variant?: 'light' | 'dark'\", \"navItems?\", \"showAuthButtons?\"],\n },\n Sidebar: {\n path: \"@/components/layout\",\n description: \"Dark or light sidebar with logo and collapsible nav sections. Used inside DashboardShell.\",\n props: [\"sections: NavSection[]\", \"variant?: 'dark' | 'light'\", \"onItemClick?\"],\n },\n SidebarNav: {\n path: \"@/components/layout\",\n description: \"Navigation items component used inside Sidebar. Handles section titles and item rendering.\",\n props: [\"sections: NavSection[]\", \"variant?\", \"onItemClick?\"],\n },\n IconSidebar: {\n path: \"@/components/layout\",\n description: \"Narrow sidebar with only icons and tooltips. Used inside IconSidebarShell.\",\n props: [\"items?: IconNavItemConfig[]\", \"variant?\", \"onItemClick?\"],\n },\n DoubleSidebar: {\n path: \"@/components/layout\",\n description: \"Two-column sidebar with icon strip and nav panel. Used inside DoubleSidebarShell.\",\n props: [\"sections?\", \"iconVariant?\", \"navVariant?\", \"onTabClick?\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - General Purpose\n// ============================================\n\nexport const blocks = {\n ActivityFeed: {\n path: \"@/components/blocks\",\n description: \"Timeline-style activity feed showing user actions, comments, and file attachments with connecting lines. Supports status changes, comments with reactions, and file attachments.\",\n props: [\"title?\", \"subtitle?\", \"items?: ActivityItem[]\", \"onLike?\", \"onReply?\", \"onAttachmentClick?\"],\n },\n CircularProgressBarList: {\n path: \"@/components/blocks\",\n description: \"List block with circular progress indicators showing completion percentages. Features header with sort/filter controls and item action menus.\",\n props: [\"title?\", \"items?: ProgressListItem[]\", \"sortOptions?\", \"filterOptions?\", \"onSort?\", \"onFilter?\", \"onItemAction?\"],\n },\n CircularProgressBar: {\n path: \"@/components/blocks\",\n description: \"SVG-based circular progress indicator showing a percentage value. Can be used standalone or within CircularProgressBarList.\",\n props: [\"progress: number\", \"size?\", \"strokeWidth?\", \"className?\"],\n },\n FaqsTable: {\n path: \"@/components/blocks\",\n description: \"Expandable FAQ list with accordion behavior. Shows questions with plus/minus toggle icons, revealing answers one at a time.\",\n props: [\"title?\", \"items?: FAQItem[]\", \"defaultExpandedId?\", \"className?\"],\n },\n StandardDataTable: {\n path: \"@/components/blocks\",\n description: \"Data table with title, result count, sort/filter dropdowns, and action button. Rows have avatar + name/email/title/role columns.\",\n props: [\"title?\", \"data?: TableRow[]\", \"columns?\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\"],\n },\n FixedColumnDataTable: {\n path: \"@/components/blocks\",\n description: \"Data table with fixed first column (Name with avatar) that stays visible during horizontal scroll. Ideal for invoice-style tables with columns: Amount, Status badge, Logo, Company, Date Sent.\",\n props: [\"title?\", \"data?: FixedColumnTableRow[]\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onRowAction?\"],\n },\n NestedDataTable: {\n path: \"@/components/blocks\",\n description: \"Expandable data table with parent rows that reveal nested child tables. Shows hierarchical data like locations with employees.\",\n props: [\"title?\", \"data?: ParentRow[]\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onRowAction?\", \"onChildAction?\"],\n },\n ReviewsTable: {\n path: \"@/components/blocks\",\n description: \"Review listing with user avatars, star ratings, dates, and expandable text. Includes sort/filter dropdowns and action button.\",\n props: [\"title?\", \"reviews?: ReviewItem[]\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onReadMore?\"],\n },\n MessengerSidebar: {\n path: \"@/components/blocks\",\n description: \"Thread list sidebar for messaging with search, avatars, timestamps, and unread badges.\",\n props: [\"selectedThreadId?\", \"onSelectThread?\", \"className?\"],\n },\n ChatBubble: {\n path: \"@/components/blocks\",\n description: \"Single chat message bubble. Sent messages align right with primary color, received align left with avatar.\",\n props: [\"message: ChatBubbleMessage\"],\n },\n ChatDateSeparator: {\n path: \"@/components/blocks\",\n description: \"Date separator line between chat messages (e.g., 'Jan 25, 2024').\",\n props: [\"date: string\"],\n },\n MessengerInput: {\n path: \"@/components/blocks\",\n description: \"Chat input with textarea, attachment pills, file upload button, and send button.\",\n props: [\"attachments?\", \"onRemoveAttachment?\", \"onSend?\"],\n },\n ProfileCard: {\n path: \"@/components/blocks\",\n description: \"Centered profile card with avatar overlapping banner, stats, bio, tags, and social links.\",\n props: [\"name\", \"username\", \"avatarUrl?\", \"rating?\", \"location?\", \"stats?\", \"bio?\", \"tags?\", \"socialLinks?\"],\n },\n StepTracker: {\n path: \"@/components/blocks\",\n description: \"Horizontal multi-step progress indicator with numbered circles and connecting lines.\",\n props: [\"steps: Step[]\", \"currentStep: number\", \"onStepClick?\"],\n },\n VerticalStepTracker: {\n path: \"@/components/blocks\",\n description: \"Vertical step tracker for sidebar placement in multi-step flows.\",\n props: [\"steps: Step[]\", \"currentStep: number\", \"onStepClick?\"],\n },\n ProgressBar: {\n path: \"@/components/blocks\",\n description: \"Horizontal progress bar. Can use percentage or currentStep/totalSteps.\",\n props: [\"progress?\", \"currentStep?\", \"totalSteps?\"],\n },\n FlairBanner: {\n path: \"@/components/blocks\",\n description: \"Dark blue hero banner with large title text. Used at top of pages.\",\n props: [\"title: string\"],\n },\n Loader: {\n path: \"@/components/blocks\",\n description: \"Loading feedback component with animated spinner (loading state) and checkmark (success state). Includes title, description, and optional action button.\",\n props: [\"state?: 'loading' | 'success'\", \"title?\", \"description?\", \"buttonText?\", \"onButtonClick?\", \"className?\"],\n },\n GradientBanner: {\n path: \"@/components/blocks\",\n description: \"Banner with gradient background. Alternative to FlairBanner.\",\n props: [\"title?\", \"subtitle?\"],\n },\n PageHeaderSection: {\n path: \"@/components/blocks\",\n description: \"Page title, description, and optional line tabs. Used below banners.\",\n props: [\"title\", \"description?\", \"tabs?\", \"activeTab?\", \"onTabChange?\", \"showTabs?\"],\n },\n SearchBar: {\n path: \"@/components/blocks\",\n description: \"Prominent search input with icon.\",\n props: [\"placeholder?\", \"value?\", \"onChange?\", \"onSearch?\"],\n },\n SearchSidebar: {\n path: \"@/components/blocks\",\n description: \"Sidebar with search results or filters.\",\n props: [\"results?\", \"onResultClick?\"],\n },\n FilterPopover: {\n path: \"@/components/blocks\",\n description: \"Popover with filter controls (checkboxes, date ranges, etc.).\",\n props: [\"filters?\", \"onApply?\", \"onReset?\"],\n },\n MenuSection: {\n path: \"@/components/blocks\",\n description: \"Section within sidebar navigation with title and items.\",\n props: [\"title?\", \"items: NavItem[]\"],\n },\n MenufocusTemplate: {\n path: \"@/components/blocks\",\n description: \"Dropdown menu with trigger button (three dots). Used for row actions in tables.\",\n props: [\"items: MenuItem[]\", \"ariaLabel?\"],\n },\n SidebarCards: {\n path: \"@/components/blocks\",\n description: \"Card list for sidebar showing items with images/titles.\",\n props: [\"cards: SidebarCard[]\", \"onCardClick?\"],\n },\n SidebarProfileCard: {\n path: \"@/components/blocks\",\n description: \"Compact profile card for sidebar with avatar and key info.\",\n props: [\"name\", \"role?\", \"avatarUrl?\"],\n },\n ProfileInfoCards: {\n path: \"@/components/blocks\",\n description: \"Grid of info cards for profile pages (contact, stats, etc.).\",\n props: [\"cards: InfoCard[]\"],\n },\n ProfileImageUploader: {\n path: \"@/components/blocks\",\n description: \"Avatar upload component with preview and edit button.\",\n props: [\"currentImage?\", \"onUpload?\"],\n },\n SettingsListRow: {\n path: \"@/components/blocks\",\n description: \"Row item for settings lists with label, value, and edit action.\",\n props: [\"label\", \"value?\", \"onEdit?\"],\n },\n CreditCardDisplay: {\n path: \"@/components/blocks\",\n description: \"Visual credit card display showing card details.\",\n props: [\"cardNumber?\", \"cardHolder?\", \"expiry?\", \"type?\"],\n },\n PillTabs: {\n path: \"@/components/blocks\",\n description: \"Horizontal pill-style tab navigation.\",\n props: [\"tabs: Tab[]\", \"activeTab?\", \"onTabChange?\"],\n },\n LoginBrandingPanel: {\n path: \"@/components/blocks\",\n description: \"Branding side panel for login/signup pages with logo and background.\",\n props: [\"backgroundImage?\", \"logo?\"],\n },\n ContentDropzone: {\n path: \"@/components/blocks\",\n description: \"Placeholder dropzone for content areas during development.\",\n props: [\"label?\", \"className?\"],\n },\n UpvotingPostsTable: {\n path: \"@/components/blocks\",\n description: \"Social feed with upvoting posts, comments, and nested replies. Features header with sort/filter controls.\",\n props: [\"title?\", \"subtitle?\", \"posts?: Post[]\", \"currentUser?\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onUpvote?\", \"onComment?\", \"onReply?\", \"onLike?\"],\n },\n NestedCommentsTable: {\n path: \"@/components/blocks\",\n description: \"Threaded discussion component with nested comments, reply/like actions, and collapsible threads.\",\n props: [\"title?\", \"subtitle?\", \"comments?: Comment[]\", \"currentUser?\", \"onComment?\", \"onReply?\", \"onLike?\"],\n },\n ImageFeedWithNestedComments: {\n path: \"@/components/blocks\",\n description: \"Instagram-style image feed with large images, social interactions (like/comment/share/bookmark), and nested comment threads.\",\n props: [\"title?\", \"subtitle?\", \"posts?: ImagePost[]\", \"currentUser?\", \"onLike?\", \"onComment?\", \"onShare?\", \"onBookmark?\", \"onReply?\", \"onCommentLike?\"],\n },\n MobileBottomNav: {\n path: \"@/components/blocks\",\n description: \"Fixed bottom navigation bar for mobile layouts.\",\n props: [\"items: BottomNavItem[]\", \"activeItem?\", \"onItemClick?\"],\n },\n MonthlyCalendarWidget: {\n path: \"@/components/blocks\",\n description: \"Dual-month calendar for date range selection with price labels, disabled dates, and today indicator. Used for booking and scheduling interfaces.\",\n props: [\"title?\", \"subtitle?\", \"initialMonth?\", \"selectedRange?\", \"disabledDates?\", \"pricedDates?\", \"todayDate?\", \"onDateSelect?\", \"onRangeChange?\", \"onConfirm?\", \"onCancel?\"],\n },\n BottomInputChatWidget: {\n path: \"@/components/blocks\",\n description: \"Slack-style chat widget with message threads list and conversation view. Features bottom input bar with attachment support.\",\n props: [\"variant?: 'threads' | 'conversation'\", \"title?\", \"threads?\", \"messages?\", \"conversationName?\", \"onThreadClick?\", \"onBackClick?\", \"onSend?\"],\n },\n LargeImageLabelsList: {\n path: \"@/components/blocks\",\n description: \"Property-style listing with large images, ratings, prices, and icon labels. Includes header with sort/filter controls.\",\n props: [\"title?\", \"items?: ListItem[]\", \"sortOptions?\", \"filterOptions?\", \"onFavorite?\", \"onItemClick?\"],\n },\n SocialFeed: {\n path: \"@/components/blocks\",\n description: \"Social media-style feed with post composer, various content types (text, images, video, reposts, link cards), social interactions (like/comment/repost/share), and threaded replies.\",\n props: [\"title?\", \"posts?: SocialFeedPost[]\", \"currentUser?\", \"composerPlaceholder?\", \"composerImagePreview?\", \"onPost?\", \"onLike?\", \"onComment?\", \"onRepost?\", \"onShare?\"],\n },\n StandardListWithImage: {\n path: \"@/components/blocks\",\n description: \"Blog/article-style list block with image thumbnails, title, author, date, description, and tags. Includes header with sort/filter controls.\",\n props: [\"title?\", \"subtitle?\", \"items?: ListItem[]\", \"sortOptions?\", \"filterOptions?\", \"onSort?\", \"onFilter?\", \"onItemClick?\"],\n },\n SlideshowGridTiles: {\n path: \"@/components/blocks\",\n description: \"2-column grid of portfolio/slideshow tiles with hover states. Features large images with slideshow navigation, save button, user info with avatar, and engagement stats (likes/views).\",\n props: [\"title?\", \"subtitle?\", \"items?: SlideshowTileItem[]\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onSort?\", \"onFilter?\", \"onSave?\", \"onItemClick?\"],\n },\n ProfileGridTilesList: {\n path: \"@/components/blocks\",\n description: \"Responsive grid of profile cards with avatar, ratings, certifications, and metadata. Configurable 2-5 columns with mobile responsiveness. Ideal for tutors, team members, or user directories.\",\n props: [\"title?\", \"subtitle?\", \"items?: ProfileTileItem[]\", \"columns?: 2|3|4|5\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onSort?\", \"onFilter?\", \"onItemClick?\"],\n },\n GridTilesList: {\n path: \"@/components/blocks\",\n description: \"Responsive grid of property/listing tiles with configurable 2-5 columns. Features images, star ratings, prices, favorite buttons, and optional tags. Includes header with sort/filter controls.\",\n props: [\"title?\", \"subtitle?\", \"columns?: 2|3|4|5\", \"items?: GridTileItem[]\", \"sortOptions?\", \"filterOptions?\", \"actionButtonText?\", \"onAddNew?\", \"onFavorite?\", \"onItemClick?\"],\n },\n Pagination: {\n path: \"@/components/blocks\",\n description: \"Responsive pagination with results summary, items per page dropdown, and page navigation. Shows 'Viewing X-Y of Z results' on desktop, compact navigation on mobile.\",\n props: [\"currentPage?\", \"totalPages?\", \"totalItems?\", \"itemsPerPage?\", \"itemsPerPageOptions?\", \"onPageChange?\", \"onItemsPerPageChange?\", \"showResultsText?\", \"showItemsPerPage?\", \"maxVisiblePages?\"],\n },\n\n // Graph and Metric Tiles (Dashboard Widgets)\n MetricCard: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Single KPI card displaying a large value with label and optional change indicator (up/down arrow with color).\",\n props: [\"label: string\", \"value: string\", \"change?: { value: string, direction: 'up' | 'down' }\", \"className?\"],\n },\n MetricCardsRow: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Horizontal row of 2-4 MetricCard components with automatic flex layout and spacing.\",\n props: [\"metrics: MetricCardData[]\", \"columns?: 2|3|4\", \"className?\"],\n },\n LineChartWidget: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Full-width widget with Chart.js line/area chart. Includes header, value display, and footer actions. Chart colors update live with CSS variables.\",\n props: [\"label: string\", \"value: string\", \"description?\", \"chartData?: number[]\", \"chartLabels?: string[]\", \"onMenuClick?\", \"onManageClick?\", \"onViewDetailsClick?\"],\n },\n DonutChartWidget: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Widget with Chart.js doughnut chart and legend metrics grid. Colors mapped to --chart-color-1 through --chart-color-5 CSS variables.\",\n props: [\"label: string\", \"value: string\", \"description?\", \"legendItems?: DonutChartLegendItem[]\", \"onMenuClick?\", \"onManageClick?\", \"onViewDetailsClick?\"],\n },\n MetricListCard: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Card displaying a list of transactions or metrics with optional date, label, and value columns.\",\n props: [\"headerLabel: string\", \"title: string\", \"subtitle?\", \"items: MetricListItem[]\", \"viewDetailsLabel?\", \"onMenuClick?\", \"onManageClick?\", \"onViewDetailsClick?\"],\n },\n ProgressMetricCard: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Card with horizontal progress bars, optional images/sublabels, and value display. Uses --canvas-primary for bar color by default.\",\n props: [\"headerLabel: string\", \"title: string\", \"subtitle?\", \"items: ProgressBarItem[]\", \"onMenuClick?\", \"onManageClick?\", \"onViewDetailsClick?\"],\n },\n TwoColumnWidgets: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Simple flex layout wrapper for arranging two widget cards side by side with proper gap spacing.\",\n props: [\"children: React.ReactNode\", \"className?\"],\n },\n DashboardHeader: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Page header for dashboards with title and optional subtitle.\",\n props: [\"title: string\", \"subtitle?\", \"className?\"],\n },\n GraphMetricTilesDemo: {\n path: \"@/components/blocks/graph-metric-tiles\",\n description: \"Complete dashboard demo composing all metric tile components together. Use as reference for dashboard layouts.\",\n props: [\"className?\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - Group, Modal, and Drawer\n// ============================================\n\nexport const groupModalDrawerBlocks = {\n FormGroup: {\n path: \"@/components/blocks\",\n description: \"Comprehensive form layout with header, responsive 2-column rows, and footer. Supports text inputs, selects, date pickers, checkboxes, radio buttons, multiselect tags, image/file uploaders, and sliders.\",\n props: [\"title?\", \"description?\", \"rows?: FormRowConfig[]\", \"sortOptions?\", \"filterOptions?\", \"inputSize?: 'sm' | 'default' | 'lg'\", \"onAddNew?\", \"onCancel?\", \"onSave?\", \"onFieldChange?\", \"showHeader?\", \"showFooter?\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - Canvas / Whiteboard\n// ============================================\n\nexport const canvasBlocks = {\n InfinityCanvas: {\n path: \"@/components/blocks\",\n description: \"Pannable, zoomable infinite canvas for placing components. Supports drag-and-drop from palette.\",\n props: [\"items: CanvasItemData[]\", \"onItemsChange\", \"selectedId\", \"onSelectItem\"],\n },\n ComponentPalette: {\n path: \"@/components/blocks\",\n description: \"Sidebar listing draggable components grouped by category. Used with InfinityCanvas.\",\n props: [\"className?\"],\n },\n CanvasItem: {\n path: \"@/components/blocks\",\n description: \"Wrapper for components placed on the infinity canvas. Handles positioning and selection.\",\n props: [\"item: CanvasItemData\", \"isSelected\", \"onSelect\", \"onDelete\", \"children\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - Video/Media\n// ============================================\n\nexport const videoBlocks = {\n VideoChatControls: {\n path: \"@/components/blocks\",\n description: \"Row of circular buttons for video calls: camera, mic, cast, leave.\",\n props: [\"isVideoOn?\", \"isMicOn?\", \"onToggleVideo?\", \"onToggleMic?\", \"onCast?\", \"onLeave?\"],\n },\n WebcamPreview: {\n path: \"@/components/blocks\",\n description: \"Live webcam preview component with optional overlay controls.\",\n props: [\"className?\", \"showControls?\"],\n },\n ParticipantList: {\n path: \"@/components/blocks\",\n description: \"List of video call participants with avatars and status.\",\n props: [\"participants: Participant[]\"],\n },\n VideoPlaylist: {\n path: \"@/components/blocks\",\n description: \"Sidebar playlist for video content with thumbnails.\",\n props: [\"videos: Video[]\", \"currentVideo?\", \"onVideoSelect?\"],\n },\n VideoContentSection: {\n path: \"@/components/blocks\",\n description: \"Video player area with metadata and description.\",\n props: [\"video: Video\", \"onPlay?\"],\n },\n YouTubePlayer: {\n path: \"@/components/blocks\",\n description: \"Embedded YouTube player component.\",\n props: [\"videoId: string\", \"autoplay?\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - Marketing\n// ============================================\n\nexport const marketingBlocks = {\n // Hero Sections\n HeroSection: {\n path: \"@/components/blocks/marketing\",\n description: \"Hero with background image and simple search bar overlay.\",\n props: [\"title\", \"subtitle\", \"searchPlaceholder?\", \"backgroundImage?\"],\n },\n HeroDarkWithImage: {\n path: \"@/components/blocks/marketing\",\n description: \"Dark hero section with text on left and image on right.\",\n props: [\"title\", \"subtitle\", \"image\"],\n },\n HeroDarkCentered: {\n path: \"@/components/blocks/marketing\",\n description: \"Dark centered hero with multi-field search (location, dates, guests).\",\n props: [\"title\", \"subtitle\"],\n },\n HeroFullwidthImage: {\n path: \"@/components/blocks/marketing\",\n description: \"Full-width hero image with centered content and multi-field search.\",\n props: [\"title\", \"subtitle\", \"backgroundImage\"],\n },\n CenteredHero: {\n path: \"@/components/blocks/marketing\",\n description: \"Simple centered hero for about/landing pages.\",\n props: [\"title\", \"subtitle?\"],\n },\n\n // Content Sections\n DestinationCards: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of destination cards with images and titles.\",\n props: [\"title?\", \"destinations?\"],\n },\n FeaturedPlaces: {\n path: \"@/components/blocks/marketing\",\n description: \"Featured places section with filter pills and card grid.\",\n props: [\"title?\", \"filters?\", \"places?\"],\n },\n CategoryGrid: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of category cards with icons/images.\",\n props: [\"categories?\"],\n },\n GallerySection: {\n path: \"@/components/blocks/marketing\",\n description: \"Image gallery with title and grid layout.\",\n props: [\"title?\", \"subtitle?\", \"images?\"],\n },\n BlogCards: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of blog post cards with images, titles, dates.\",\n props: [\"title?\", \"subtitle?\", \"posts?\"],\n },\n\n // How It Works\n HowItWorks: {\n path: \"@/components/blocks/marketing\",\n description: \"Horizontal 3-step how it works section.\",\n props: [\"steps?\"],\n },\n VerticalHowItWorks: {\n path: \"@/components/blocks/marketing\",\n description: \"Vertical how it works with large numbers. Has light/dark variants.\",\n props: [\"variant?: 'light' | 'dark'\", \"title\", \"description\", \"steps?\"],\n },\n\n // Social Proof\n TestimonialCarousel: {\n path: \"@/components/blocks/marketing\",\n description: \"Dark testimonial carousel with quote, author, and navigation arrows.\",\n props: [\"testimonials?\"],\n },\n ReviewsGrid: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of review cards with ratings and text.\",\n props: [\"title?\", \"subtitle?\", \"reviews?\"],\n },\n SocialProof: {\n path: \"@/components/blocks/marketing\",\n description: \"Logo bar showing 'as featured on' brands.\",\n props: [\"label?\", \"logos?\"],\n },\n MetricsSection: {\n path: \"@/components/blocks/marketing\",\n description: \"Row of large metric numbers with labels.\",\n props: [\"metrics?\"],\n },\n\n // Features\n FeatureWithImage: {\n path: \"@/components/blocks/marketing\",\n description: \"Feature highlight with image and text side by side.\",\n props: [\"title\", \"description\", \"ctaText?\", \"imagePosition?: 'left' | 'right'\"],\n },\n ContentWithImage: {\n path: \"@/components/blocks/marketing\",\n description: \"Generic content section with image. Similar to FeatureWithImage.\",\n props: [\"title\", \"content\", \"image\", \"imagePosition?\"],\n },\n CoreValuesGrid: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of value cards with icons and descriptions.\",\n props: [\"values?\"],\n },\n\n // Team\n TeamCardsGrid: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of team member cards with photos and roles.\",\n props: [\"title?\", \"members?\"],\n },\n TeamCircularGrid: {\n path: \"@/components/blocks/marketing\",\n description: \"Team grid with circular avatar photos.\",\n props: [\"title?\", \"members?\"],\n },\n\n // CTA & Footer\n CtaBanner: {\n path: \"@/components/blocks/marketing\",\n description: \"Call to action banner with title and button.\",\n props: [\"title\", \"buttonText\", \"onButtonClick?\"],\n },\n FooterNavbar: {\n path: \"@/components/blocks/marketing\",\n description: \"Footer with logo, nav links, and social icons.\",\n props: [\"companyName?\", \"links?\", \"socialLinks?\"],\n },\n\n // Other\n FeaturedNewsCards: {\n path: \"@/components/blocks/marketing\",\n description: \"Featured news/press cards section.\",\n props: [\"title?\", \"articles?\"],\n },\n OfficeLocations: {\n path: \"@/components/blocks/marketing\",\n description: \"Grid of office location cards with addresses.\",\n props: [\"title?\", \"locations?\"],\n },\n} as const;\n\n// ============================================\n// BLOCKS - Pricing\n// ============================================\n\nexport const pricingBlocks = {\n PricingCards: {\n path: \"@/components/blocks/pricing\",\n description: \"Three-tier pricing cards with monthly/annual toggle, features list, and CTA buttons.\",\n props: [\"plans?\"],\n },\n FaqAccordion: {\n path: \"@/components/blocks/pricing\",\n description: \"Expandable FAQ accordion for pricing pages.\",\n props: [\"faqs?: FAQ[]\"],\n },\n FeaturesComparison: {\n path: \"@/components/blocks/pricing\",\n description: \"Feature comparison table across pricing tiers.\",\n props: [\"features?\", \"plans?\"],\n },\n PricingCta: {\n path: \"@/components/blocks/pricing\",\n description: \"CTA section for pricing page (contact sales, etc.).\",\n props: [\"title?\", \"description?\", \"buttonText?\"],\n },\n} as const;\n\n// ============================================\n// PAGE TEMPLATES\n// ============================================\n// Complete page implementations that combine shells + blocks\n\nexport const pageTemplates = {\n \"page-admin-portal\": {\n path: \"/page-admin-portal\",\n description: \"Admin dashboard with dark sidebar, collapsible nav sections, and data table.\",\n shell: \"DashboardShell\",\n blocks: [\"StandardDataTable\", \"Header\"],\n },\n \"page-messenger\": {\n path: \"/page-messenger\",\n description: \"Full messaging interface with thread sidebar and chat area.\",\n shell: \"custom (no shell)\",\n blocks: [\"MessengerSidebar\", \"ChatBubble\", \"ChatDateSeparator\", \"MessengerInput\"],\n },\n \"page-product-homepage\": {\n path: \"/page-product-homepage\",\n description: \"Marketing landing page with multiple hero variations and content blocks.\",\n shell: \"custom (no shell)\",\n blocks: [\"Header\", \"HeroSection\", \"HeroDarkWithImage\", \"DestinationCards\", \"TestimonialCarousel\", \"FooterNavbar\"],\n },\n \"page-pricing\": {\n path: \"/page-pricing\",\n description: \"Pricing page with tier cards, FAQ, and feature comparison.\",\n shell: \"custom (no shell)\",\n blocks: [\"Header\", \"PricingCards\", \"FaqAccordion\", \"FeaturesComparison\"],\n },\n \"page-about\": {\n path: \"/page-about\",\n description: \"About page with hero, metrics, values, team, and locations.\",\n shell: \"custom (no shell)\",\n blocks: [\"Header\", \"CenteredHero\", \"MetricsSection\", \"CoreValuesGrid\", \"TeamCardsGrid\"],\n },\n \"page-account\": {\n path: \"/page-account\",\n description: \"Account settings with tabbed sidebar navigation.\",\n shell: \"AccountSettingsShell\",\n blocks: [\"ProfileImageUploader\", \"SettingsListRow\", \"CreditCardDisplay\"],\n },\n \"page-centered-profile\": {\n path: \"/page-centered-profile\",\n description: \"Profile page with centered layout and banner.\",\n shell: \"StandardPageShell\",\n blocks: [\"ProfileCard\", \"FlairBanner\"],\n },\n \"page-double-sidebar\": {\n path: \"/page-double-sidebar\",\n description: \"Dashboard with two-column sidebar navigation.\",\n shell: \"DoubleSidebarShell\",\n blocks: [\"StandardDataTable\"],\n },\n \"page-icon-sidebar\": {\n path: \"/page-icon-sidebar\",\n description: \"Dashboard with narrow icon-only sidebar.\",\n shell: \"IconSidebarShell\",\n blocks: [\"StandardDataTable\"],\n },\n \"page-login\": {\n path: \"/page-login\",\n description: \"Login page with form and branding panel.\",\n shell: \"custom (split layout)\",\n blocks: [\"LoginBrandingPanel\"],\n },\n \"page-standard\": {\n path: \"/page-standard\",\n description: \"Standard centered page with banner and tabs.\",\n shell: \"StandardPageShell\",\n blocks: [\"FlairBanner\", \"PageHeaderSection\"],\n },\n \"page-standard-multistep\": {\n path: \"/page-standard-multistep\",\n description: \"Multi-step form wizard with horizontal step tracker.\",\n shell: \"MultistepShell\",\n blocks: [\"StepTracker\", \"ContentDropzone\"],\n },\n \"page-video-chat\": {\n path: \"/page-video-chat\",\n description: \"Video conferencing interface with webcam, participants, and chat.\",\n shell: \"custom (no shell)\",\n blocks: [\"WebcamPreview\", \"VideoChatControls\", \"ParticipantList\", \"ChatMessageList\"],\n },\n \"page-video-list\": {\n path: \"/page-video-list\",\n description: \"Video content page with player and playlist sidebar.\",\n shell: \"custom (no shell)\",\n blocks: [\"VideoContentSection\", \"VideoPlaylist\", \"YouTubePlayer\"],\n },\n \"page-canvas\": {\n path: \"/page-canvas\",\n description: \"Figma-style infinite canvas whiteboard. Drag components from sidebar palette onto a pannable, zoomable canvas.\",\n shell: \"custom (no shell)\",\n blocks: [\"InfinityCanvas\", \"ComponentPalette\", \"CanvasItem\", \"Header\"],\n },\n} as const;\n\n// ============================================\n// QUICK REFERENCE\n// ============================================\n\n/**\n * Common patterns:\n * \n * 1. Dashboard with sidebar:\n * DashboardShell + StandardDataTable + any content blocks\n * \n * 2. Settings page:\n * AccountSettingsShell + SettingsListRow + ProfileImageUploader\n * \n * 3. Marketing landing:\n * Header + HeroSection + content blocks + FooterNavbar\n * \n * 4. Multi-step wizard:\n * MultistepShell + StepTracker + form content\n * \n * 5. Messaging app:\n * MessengerSidebar + ChatBubble + MessengerInput\n * \n * 6. Infinity canvas/whiteboard:\n * InfinityCanvas + ComponentPalette (uses @dnd-kit + react-zoom-pan-pinch)\n */\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { Search, X, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n layoutShells,\n blocks,\n marketingBlocks,\n pricingBlocks,\n videoBlocks,\n pageTemplates,\n} from \"../../lib/component-registry\";\n\n// ═══════════════════════════════════════════════════════════\n// TYPES\n// ═══════════════════════════════════════════════════════════\n\nexport interface ComponentOption {\n id: string;\n name: string;\n category: string;\n path: string;\n description: string;\n}\n\ninterface ComponentSearchProps {\n selectedComponents: ComponentOption[];\n onSelectionChange: (components: ComponentOption[]) => void;\n className?: string;\n}\n\n// ═══════════════════════════════════════════════════════════\n// BUILD COMPONENT OPTIONS FROM REGISTRY\n// ═══════════════════════════════════════════════════════════\n\nfunction buildComponentOptions(): ComponentOption[] {\n const options: ComponentOption[] = [];\n\n // Layout Shells\n Object.entries(layoutShells).forEach(([name, config]) => {\n options.push({\n id: `shell-${name}`,\n name,\n category: \"Layout Shells\",\n path: config.path,\n description: config.description,\n });\n });\n\n // Blocks\n Object.entries(blocks).forEach(([name, config]) => {\n options.push({\n id: `block-${name}`,\n name,\n category: \"Blocks\",\n path: config.path,\n description: config.description,\n });\n });\n\n // Marketing Blocks\n Object.entries(marketingBlocks).forEach(([name, config]) => {\n options.push({\n id: `marketing-${name}`,\n name,\n category: \"Marketing\",\n path: config.path,\n description: config.description,\n });\n });\n\n // Pricing Blocks\n Object.entries(pricingBlocks).forEach(([name, config]) => {\n options.push({\n id: `pricing-${name}`,\n name,\n category: \"Pricing\",\n path: config.path,\n description: config.description,\n });\n });\n\n // Video Blocks\n Object.entries(videoBlocks).forEach(([name, config]) => {\n options.push({\n id: `video-${name}`,\n name,\n category: \"Video/Media\",\n path: config.path,\n description: config.description,\n });\n });\n\n // Page Templates\n Object.entries(pageTemplates).forEach(([name, config]) => {\n options.push({\n id: `template-${name}`,\n name,\n category: \"Page Templates\",\n path: config.path,\n description: config.description,\n });\n });\n\n return options;\n}\n\nconst ALL_COMPONENTS = buildComponentOptions();\nconst CATEGORIES = [...new Set(ALL_COMPONENTS.map((c) => c.category))];\n\n// ═══════════════════════════════════════════════════════════\n// COMPONENT\n// ═══════════════════════════════════════════════════════════\n\nexport function ComponentSearch({\n selectedComponents,\n onSelectionChange,\n className,\n}: ComponentSearchProps) {\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [expandedCategories, setExpandedCategories] = useState<Set<string>>(\n new Set(CATEGORIES)\n );\n\n // Filter components based on search\n const filteredComponents = useMemo(() => {\n if (!searchQuery.trim()) return ALL_COMPONENTS;\n\n const query = searchQuery.toLowerCase();\n return ALL_COMPONENTS.filter(\n (c) =>\n c.name.toLowerCase().includes(query) ||\n c.description.toLowerCase().includes(query) ||\n c.category.toLowerCase().includes(query)\n );\n }, [searchQuery]);\n\n // Group by category\n const groupedComponents = useMemo(() => {\n const groups: Record<string, ComponentOption[]> = {};\n filteredComponents.forEach((c) => {\n if (!groups[c.category]) groups[c.category] = [];\n groups[c.category].push(c);\n });\n return groups;\n }, [filteredComponents]);\n\n const toggleCategory = (category: string) => {\n setExpandedCategories((prev) => {\n const next = new Set(prev);\n if (next.has(category)) {\n next.delete(category);\n } else {\n next.add(category);\n }\n return next;\n });\n };\n\n const toggleComponent = (component: ComponentOption) => {\n const isSelected = selectedComponents.some((c) => c.id === component.id);\n if (isSelected) {\n onSelectionChange(selectedComponents.filter((c) => c.id !== component.id));\n } else {\n onSelectionChange([...selectedComponents, component]);\n }\n };\n\n const removeComponent = (componentId: string) => {\n onSelectionChange(selectedComponents.filter((c) => c.id !== componentId));\n };\n\n return (\n <div className={cn(\"space-y-3\", className)}>\n {/* Selected Components Chips */}\n {selectedComponents.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {selectedComponents.map((component) => (\n <div\n key={component.id}\n className=\"flex items-center gap-1.5 px-2.5 py-1 rounded-full bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)] text-sm\"\n >\n <span className=\"font-medium\">{component.name}</span>\n <button\n onClick={() => removeComponent(component.id)}\n className=\"p-0.5 rounded-full hover:bg-[var(--canvas-primary)]/20 transition-colors\"\n >\n <X className=\"size-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n\n {/* Search Input */}\n <div className=\"relative\">\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2.5 rounded-lg border bg-[var(--canvas-background)] cursor-text\",\n isOpen\n ? \"border-[var(--canvas-primary)] ring-2 ring-[var(--canvas-primary)]/20\"\n : \"border-[var(--canvas-border)]\"\n )}\n onClick={() => setIsOpen(true)}\n >\n <Search className=\"size-4 text-[var(--canvas-text-muted)]\" />\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onFocus={() => setIsOpen(true)}\n placeholder=\"Search components...\"\n className=\"flex-1 bg-transparent text-sm text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] outline-none\"\n />\n <span className=\"text-xs text-[var(--canvas-text-muted)]\">\n {selectedComponents.length} selected\n </span>\n </div>\n\n {/* Dropdown */}\n {isOpen && (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-10\"\n onClick={() => setIsOpen(false)}\n />\n\n {/* Options List */}\n <div className=\"absolute top-full left-0 right-0 mt-1 z-20 max-h-[400px] overflow-y-auto rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] shadow-lg\">\n {Object.entries(groupedComponents).map(([category, components]) => (\n <div key={category}>\n {/* Category Header */}\n <button\n onClick={() => toggleCategory(category)}\n className=\"w-full flex items-center justify-between px-3 py-2 bg-[var(--canvas-surface)] border-b border-[var(--canvas-border)] text-xs font-semibold text-[var(--canvas-text-muted)] uppercase tracking-wide hover:bg-[var(--canvas-surface-brand)]/50\"\n >\n <span>\n {category} ({components.length})\n </span>\n {expandedCategories.has(category) ? (\n <ChevronUp className=\"size-3\" />\n ) : (\n <ChevronDown className=\"size-3\" />\n )}\n </button>\n\n {/* Components in Category */}\n {expandedCategories.has(category) && (\n <div>\n {components.map((component) => {\n const isSelected = selectedComponents.some(\n (c) => c.id === component.id\n );\n return (\n <button\n key={component.id}\n onClick={() => toggleComponent(component)}\n className={cn(\n \"w-full flex items-start gap-3 px-3 py-2.5 text-left transition-colors border-b border-[var(--canvas-border)]/50 last:border-b-0\",\n isSelected\n ? \"bg-[var(--canvas-surface-brand)]/50\"\n : \"hover:bg-[var(--canvas-surface)]\"\n )}\n >\n {/* Checkbox */}\n <div\n className={cn(\n \"size-4 rounded border mt-0.5 flex items-center justify-center shrink-0\",\n isSelected\n ? \"bg-[var(--canvas-primary)] border-[var(--canvas-primary)]\"\n : \"border-[var(--canvas-border)]\"\n )}\n >\n {isSelected && (\n <svg\n className=\"size-3 text-white\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={3}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n )}\n </div>\n\n {/* Component Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n \"text-sm font-medium\",\n isSelected\n ? \"text-[var(--canvas-primary)]\"\n : \"text-[var(--canvas-text)]\"\n )}\n >\n {component.name}\n </span>\n <span className=\"text-xs text-[var(--canvas-text-placeholder)]\">\n {component.path}\n </span>\n </div>\n <p className=\"text-xs text-[var(--canvas-text-muted)] mt-0.5 line-clamp-2\">\n {component.description}\n </p>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </div>\n ))}\n\n {filteredComponents.length === 0 && (\n <div className=\"px-3 py-6 text-center text-sm text-[var(--canvas-text-muted)]\">\n No components found for \"{searchQuery}\"\n </div>\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","/**\n * Project Context Data\n * \n * This file is generated and maintained by Cursor AI.\n * User prompts Cursor to generate/update sections based on scope.md\n * \n * Usage:\n * 1. Upload your scope document to src/data/scope.md\n * 2. Use the prompt templates on the Project Context page\n * 3. Cursor will read scope.md and populate this file\n */\n\nimport type { ProjectContext } from \"../types/project\";\n\nexport const projectContext: ProjectContext = {\n // ═══════════════════════════════════════════════════════════\n // PROJECT IDENTITY\n // Update this when you start a new project\n // ═══════════════════════════════════════════════════════════\n name: \"My Project\",\n description: \"Project description will be extracted from scope.md\",\n\n // ═══════════════════════════════════════════════════════════\n // PERSONAS\n // Generated by Cursor from scope.md\n // Prompt: \"Generate 3-4 user personas based on my scope doc\"\n // ═══════════════════════════════════════════════════════════\n personas: [\n // Example persona (delete and regenerate from your scope):\n // {\n // id: \"sarah\",\n // name: \"Sarah Chen\",\n // role: \"Operations Manager\",\n // avatar: \"👩💼\",\n // goals: [\n // \"Quick access to daily metrics before 9am standup\",\n // \"Monitor team performance across departments\",\n // ],\n // painPoints: [\n // \"Current tools require too many clicks\",\n // \"Data is often stale by the time she sees it\",\n // ],\n // quote: \"I need to see everything at a glance.\",\n // },\n ],\n\n // ═══════════════════════════════════════════════════════════\n // SCREENS\n // Generated by Cursor from scope.md\n // Prompt: \"Create a screen flowchart based on the scope\"\n // ═══════════════════════════════════════════════════════════\n screens: [\n // Example screens (delete and regenerate from your scope):\n // {\n // id: \"login\",\n // name: \"Login\",\n // slug: \"login\",\n // type: \"page\",\n // icon: \"🔐\",\n // position: { x: 250, y: 0 },\n // status: \"draft\",\n // },\n // {\n // id: \"dashboard\",\n // name: \"Dashboard\",\n // slug: \"dashboard\",\n // type: \"page\",\n // icon: \"📊\",\n // position: { x: 250, y: 150 },\n // status: \"draft\",\n // },\n ],\n\n // ═══════════════════════════════════════════════════════════\n // CONNECTIONS\n // Flow between screens\n // ═══════════════════════════════════════════════════════════\n connections: [\n // Example connections:\n // { id: \"c1\", sourceId: \"login\", targetId: \"dashboard\", label: \"Sign In\" },\n ],\n\n // ═══════════════════════════════════════════════════════════\n // DESIGN GOALS\n // Generated by Cursor from scope.md and personas\n // ═══════════════════════════════════════════════════════════\n designGoals: [\n // Example goals:\n // \"Time to first insight under 30 seconds\",\n // \"Support both power users and quick-glancers\",\n ],\n\n // ═══════════════════════════════════════════════════════════\n // TONE\n // Voice and style direction for the product\n // ═══════════════════════════════════════════════════════════\n tone: [\n // Example tone words:\n // \"professional\",\n // \"efficient\",\n // \"friendly\",\n ],\n};\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { Check, Copy, Sparkles } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ComponentSearch, type ComponentOption } from \"./component-search\";\nimport { projectContext } from \"../../data/project-context\";\n\n// ═══════════════════════════════════════════════════════════\n// TYPES\n// ═══════════════════════════════════════════════════════════\n\ntype ComponentType = \"block\" | \"page-template\" | \"ui-component\";\n\ninterface CustomComponentHelperProps {\n className?: string;\n}\n\n// ═══════════════════════════════════════════════════════════\n// COMPONENT\n// ═══════════════════════════════════════════════════════════\n\nexport function CustomComponentHelper({ className }: CustomComponentHelperProps) {\n const [componentType, setComponentType] = useState<ComponentType>(\"block\");\n const [componentName, setComponentName] = useState(\"\");\n const [componentDescription, setComponentDescription] = useState(\"\");\n const [referenceComponents, setReferenceComponents] = useState<ComponentOption[]>([]);\n const [copied, setCopied] = useState(false);\n\n const { personas } = projectContext;\n\n // Generate the prompt\n const generatedPrompt = useMemo(() => {\n if (!componentName && !componentDescription) {\n return \"\";\n }\n\n const typeLabel = {\n block: \"block\",\n \"page-template\": \"page template\",\n \"ui-component\": \"UI component\",\n }[componentType];\n\n const parts: string[] = [\n \"Please create a plan for the following, then wait for my approval before making changes:\",\n \"\",\n ];\n\n // Context references\n parts.push(\"CONTEXT:\");\n parts.push(\"- Read src/data/scope.md for project scope and requirements\");\n parts.push(\"- Reference src/data/project-context.ts for user personas and project goals\");\n parts.push(\"\");\n\n parts.push(`Create a new ${typeLabel} component:`);\n parts.push(\"\");\n\n if (componentName) {\n parts.push(`Name: ${componentName}`);\n }\n\n parts.push(`Type: ${typeLabel.charAt(0).toUpperCase() + typeLabel.slice(1)}`);\n\n if (componentDescription) {\n parts.push(`Description: ${componentDescription}`);\n }\n\n // Include personas for context\n if (personas.length > 0) {\n parts.push(\"\");\n parts.push(\"Design this component to serve these user personas:\");\n personas.forEach((p) => {\n parts.push(`- ${p.name} (${p.role})`);\n });\n }\n\n // Reference components\n if (referenceComponents.length > 0) {\n parts.push(\"\");\n parts.push(\"Reference these existing components for style/patterns:\");\n referenceComponents.forEach((c) => {\n parts.push(`- ${c.name} (${c.path})`);\n });\n }\n\n // Requirements\n parts.push(\"\");\n parts.push(\"Requirements:\");\n parts.push(\"1. Build using ShadCN primitives (Button, Dialog, Input, etc.)\");\n parts.push(\"2. Implement CSS variables for theming:\");\n parts.push(\" - var(--canvas-*) for colors (primary, background, text, border, surface)\");\n parts.push(\" - var(--spacing-*) for spacing (sm, md, lg, xl)\");\n parts.push(\" - var(--radius-*) for border radius\");\n parts.push(\" - var(--typo-*) for typography\");\n\n // File location based on type\n const kebabName = toKebabCase(componentName || \"new-component\");\n if (componentType === \"block\") {\n parts.push(`3. Create file at src/components/blocks/${kebabName}.tsx`);\n parts.push(\"4. Export from src/components/blocks/index.ts\");\n } else if (componentType === \"page-template\") {\n const pageName = toKebabCase(componentName || \"new-page\");\n parts.push(`3. Create page at src/app/${pageName}/page.tsx`);\n parts.push(`4. Create layout at src/app/${pageName}/layout.tsx`);\n } else {\n parts.push(`3. Create file at src/components/ui/${kebabName}.tsx`);\n parts.push(\"4. Export from src/components/ui/index.ts (if exists)\");\n }\n\n parts.push(\"5. Add entry to src/lib/component-registry.ts after creation\");\n parts.push(\"6. Follow existing component patterns in the codebase\");\n parts.push(\"7. Ensure the component aligns with the project scope and serves the target personas\");\n\n return parts.join(\"\\n\");\n }, [componentType, componentName, componentDescription, referenceComponents, personas]);\n\n const handleCopy = async () => {\n if (!generatedPrompt) return;\n await navigator.clipboard.writeText(generatedPrompt);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n const hasContent = componentName || componentDescription;\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n {/* Section Header */}\n <div>\n <h3 className=\"text-lg font-semibold text-[var(--canvas-text)]\">\n Create Custom Component\n </h3>\n <p className=\"text-sm text-[var(--canvas-text-muted)] mt-1\">\n Generate a prompt to create a new ShadCN-based component with design variables\n </p>\n </div>\n\n {/* Component Type */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text)]\">\n Component Type\n </label>\n <div className=\"flex gap-2\">\n {[\n { id: \"block\", label: \"Block\" },\n { id: \"page-template\", label: \"Page Template\" },\n { id: \"ui-component\", label: \"UI Component\" },\n ].map((type) => (\n <button\n key={type.id}\n onClick={() => setComponentType(type.id as ComponentType)}\n className={cn(\n \"px-4 py-2 rounded-lg text-sm font-medium transition-all\",\n componentType === type.id\n ? \"bg-[var(--canvas-primary)] text-white\"\n : \"bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]\"\n )}\n >\n {type.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Component Name */}\n <div className=\"space-y-2\">\n <label\n htmlFor=\"component-name\"\n className=\"text-sm font-medium text-[var(--canvas-text)]\"\n >\n Component Name\n </label>\n <input\n id=\"component-name\"\n type=\"text\"\n value={componentName}\n onChange={(e) => setComponentName(e.target.value)}\n placeholder=\"e.g., MultiStepPopup, ImageCarousel, StatCard\"\n className=\"w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] text-sm placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent\"\n />\n </div>\n\n {/* Component Description */}\n <div className=\"space-y-2\">\n <label\n htmlFor=\"component-description\"\n className=\"text-sm font-medium text-[var(--canvas-text)]\"\n >\n Description\n </label>\n <textarea\n id=\"component-description\"\n value={componentDescription}\n onChange={(e) => setComponentDescription(e.target.value)}\n placeholder=\"Describe what this component should do, its features, and any specific requirements (e.g., a multi-step popup with steps listed on the left side and content on the right, progress indicator, next/back buttons)\"\n rows={4}\n className=\"w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] text-sm placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent resize-none\"\n />\n </div>\n\n {/* Reference Components */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text)]\">\n Reference Components (optional)\n </label>\n <p className=\"text-xs text-[var(--canvas-text-muted)] mb-2\">\n Select existing components to use as style/pattern references\n </p>\n <ComponentSearch\n selectedComponents={referenceComponents}\n onSelectionChange={setReferenceComponents}\n />\n </div>\n\n {/* Generated Prompt Preview */}\n {hasContent && (\n <div className=\"rounded-lg border border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]\">\n <Sparkles className=\"size-4 text-[var(--canvas-primary)]\" />\n Generated Prompt\n </div>\n <button\n onClick={handleCopy}\n disabled={!generatedPrompt}\n className={cn(\n \"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all\",\n copied\n ? \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"size-3\" />\n Copied!\n </>\n ) : (\n <>\n <Copy className=\"size-3\" />\n Copy prompt\n </>\n )}\n </button>\n </div>\n\n {/* Prompt Text */}\n <pre className=\"text-sm text-[var(--canvas-text)] leading-relaxed font-mono whitespace-pre-wrap bg-[var(--canvas-background)] rounded-md p-3 border border-[var(--canvas-border)] max-h-[300px] overflow-y-auto\">\n {generatedPrompt}\n </pre>\n </div>\n )}\n\n {/* Empty State */}\n {!hasContent && (\n <div className=\"rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center\">\n <p className=\"text-sm text-[var(--canvas-text-muted)]\">\n Enter a component name or description to generate a prompt\n </p>\n </div>\n )}\n </div>\n );\n}\n\n// ═══════════════════════════════════════════════════════════\n// HELPERS\n// ═══════════════════════════════════════════════════════════\n\nfunction toKebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/\\s+/g, \"-\")\n .toLowerCase();\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { ChevronLeft, ChevronRight, FolderPlus, ThumbsUp, Eye } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface SlideshowTileItem {\n id: string;\n /** Array of image URLs for the slideshow */\n images: string[];\n /** User/creator info */\n user: {\n name: string;\n avatarUrl?: string;\n location: string;\n };\n /** Like/upvote count */\n likes: number | string;\n /** View count */\n views: number | string;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface SlideshowGridTilesProps {\n /** Block title */\n title?: string;\n /** Subtitle text (e.g., \"Showing 20 designs\") */\n subtitle?: string;\n /** Array of tile items */\n items?: SlideshowTileItem[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when save button is clicked on a tile */\n onSave?: (item: SlideshowTileItem) => void;\n /** Callback when a tile is clicked */\n onItemClick?: (item: SlideshowTileItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: SlideshowTileItem[] = [\n {\n id: \"1\",\n images: [\n \"https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?w=800&h=600&fit=crop\",\n \"https://images.unsplash.com/photo-1558591710-4b4a1ae0f04d?w=800&h=600&fit=crop\",\n ],\n user: {\n name: \"Aya Williams\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n location: \"Copenhagen, Denmark\",\n },\n likes: \"25k\",\n views: \"6.5k\",\n },\n {\n id: \"2\",\n images: [\n \"https://images.unsplash.com/photo-1633356122544-f134324a6cee?w=800&h=600&fit=crop\",\n \"https://images.unsplash.com/photo-1611162617474-5b21e879e113?w=800&h=600&fit=crop\",\n ],\n user: {\n name: \"Jeffrey Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n location: \"San Francisco, CA\",\n },\n likes: \"11k\",\n views: \"2.5k\",\n },\n {\n id: \"3\",\n images: [\n \"https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=800&h=600&fit=crop\",\n \"https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=800&h=600&fit=crop\",\n ],\n user: {\n name: \"Gabi Del Rosario\",\n avatarUrl: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150&h=150&fit=crop&crop=face\",\n location: \"Honolulu, HI\",\n },\n likes: \"8k\",\n views: \"520\",\n },\n {\n id: \"4\",\n images: [\n \"https://images.unsplash.com/photo-1561998338-13ad7883b20f?w=800&h=600&fit=crop\",\n \"https://images.unsplash.com/photo-1579783902614-a3fb3927b6a5?w=800&h=600&fit=crop\",\n ],\n user: {\n name: \"Stacy Jones\",\n avatarUrl: \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=150&h=150&fit=crop&crop=face\",\n location: \"New York, NY\",\n },\n likes: \"9.5k\",\n views: \"12k\",\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"popular\", label: \"Most Popular\" },\n { id: \"recent\", label: \"Most Recent\" },\n { id: \"likes\", label: \"Most Liked\" },\n { id: \"views\", label: \"Most Viewed\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All Categories\" },\n { id: \"illustration\", label: \"Illustration\" },\n { id: \"photography\", label: \"Photography\" },\n { id: \"ui-design\", label: \"UI Design\" },\n { id: \"3d\", label: \"3D Art\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface TileCardProps {\n item: SlideshowTileItem;\n onSave?: (item: SlideshowTileItem) => void;\n onClick?: (item: SlideshowTileItem) => void;\n}\n\nfunction TileCard({ item, onSave, onClick }: TileCardProps) {\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n\n const handlePrevImage = (e: React.MouseEvent) => {\n e.stopPropagation();\n setCurrentImageIndex((prev) => \n prev === 0 ? item.images.length - 1 : prev - 1\n );\n };\n\n const handleNextImage = (e: React.MouseEvent) => {\n e.stopPropagation();\n setCurrentImageIndex((prev) => \n prev === item.images.length - 1 ? 0 : prev + 1\n );\n };\n\n const handleSave = (e: React.MouseEvent) => {\n e.stopPropagation();\n onSave?.(item);\n };\n\n return (\n <div \n className=\"flex flex-col cursor-pointer\"\n style={{ gap: \"var(--spacing-xl)\" }}\n onClick={() => onClick?.(item)}\n >\n {/* Image Container */}\n <div \n className=\"group relative w-full overflow-hidden\"\n style={{ \n height: \"240px\",\n borderRadius: \"var(--radius-md, 8px)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Main Image */}\n <img\n src={item.images[currentImageIndex]}\n alt={`${item.user.name}'s portfolio`}\n className=\"absolute inset-0 w-full h-full object-cover transition-opacity duration-300\"\n style={{ borderRadius: \"var(--radius-md, 8px)\" }}\n />\n\n {/* Hover Overlay - Navigation Arrows */}\n <div className=\"absolute inset-0 flex items-center justify-between px-2 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n {/* Left Arrow */}\n <button\n onClick={handlePrevImage}\n className=\"flex items-center justify-center shrink-0 transition-transform hover:scale-105\"\n style={{\n width: \"32px\",\n height: \"32px\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-full, 24px)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <ChevronLeft \n className=\"w-5 h-5\" \n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n\n {/* Right Arrow */}\n <button\n onClick={handleNextImage}\n className=\"flex items-center justify-center shrink-0 transition-transform hover:scale-105\"\n style={{\n width: \"32px\",\n height: \"32px\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-full, 24px)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <ChevronRight \n className=\"w-5 h-5\" \n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n </div>\n\n {/* Hover Overlay - Save Badge */}\n <div className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <button\n onClick={handleSave}\n className=\"flex items-center transition-transform hover:scale-105\"\n style={{\n height: \"var(--spacing-5xl, 40px)\",\n paddingLeft: \"var(--spacing-xl, 16px)\",\n paddingRight: \"var(--spacing-xl, 16px)\",\n gap: \"var(--spacing-md, 8px)\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-full, 40px)\",\n }}\n >\n <FolderPlus \n className=\"w-5 h-5\" \n style={{ color: \"var(--canvas-text)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n Save\n </span>\n </button>\n </div>\n </div>\n\n {/* User Info Row */}\n <div \n className=\"flex items-center w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Avatar */}\n <Avatar \n className=\"shrink-0\"\n style={{ \n width: \"48px\", \n height: \"48px\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={item.user.avatarUrl} alt={item.user.name} />\n <AvatarFallback>\n {item.user.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n\n {/* Name and Location */}\n <div className=\"flex flex-col flex-1 min-w-0 justify-center\">\n <p\n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.user.name}\n </p>\n <p\n className=\"truncate\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.user.location}\n </p>\n </div>\n\n {/* Stats */}\n <div \n className=\"flex items-center shrink-0\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n {/* Likes */}\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-sm)\" }}\n >\n <ThumbsUp \n className=\"w-5 h-5\" \n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {item.likes}\n </span>\n </div>\n\n {/* Views */}\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-sm)\" }}\n >\n <Eye \n className=\"w-5 h-5\" \n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {item.views}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Slideshow Grid Tiles Block\n * \n * A 2-column grid of portfolio/slideshow tiles with hover states\n * showing navigation arrows and save button. Each tile displays\n * a large image, user info, and engagement stats.\n * \n * @example\n * ```tsx\n * <SlideshowGridTiles\n * title=\"Portfolios\"\n * subtitle=\"Showing 20 designs\"\n * onSave={(item) => console.log(\"Saved\", item)}\n * />\n * ```\n */\nexport function SlideshowGridTiles({\n title = \"Portfolios\",\n subtitle,\n items = defaultItems,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onSave,\n onItemClick,\n className,\n}: SlideshowGridTilesProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displaySubtitle = subtitle ?? `Showing ${items.length} designs`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Subtitle */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displaySubtitle}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Grid Section */}\n <div \n className=\"grid grid-cols-1 md:grid-cols-2 w-full\"\n style={{ gap: \"var(--spacing-4xl)\" }}\n >\n {items.map((item) => (\n <TileCard\n key={item.id}\n item={item}\n onSave={onSave}\n onClick={onItemClick}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Heart, Star } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface GridTileItem {\n id: string;\n /** Image URL for the tile */\n imageUrl: string;\n /** Tile title */\n title: string;\n /** Rating from 1-5 */\n rating: number;\n /** Location text */\n location: string;\n /** Price (e.g., \"$205\") */\n price: string;\n /** Price unit (e.g., \"night\") */\n priceUnit?: string;\n /** Optional tag badge (e.g., \"Popular\") */\n tag?: string;\n /** Whether item is favorited */\n isFavorite?: boolean;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface GridTilesListProps {\n /** Block title */\n title?: string;\n /** Subtitle text (e.g., \"20 listings\") */\n subtitle?: string;\n /** Array of tile items */\n items?: GridTileItem[];\n /** Number of grid columns (2, 3, 4, or 5) */\n columns?: 2 | 3 | 4 | 5;\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when favorite button is clicked on a tile */\n onFavorite?: (item: GridTileItem) => void;\n /** Callback when a tile is clicked */\n onItemClick?: (item: GridTileItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: GridTileItem[] = [\n {\n id: \"1\",\n imageUrl: \"https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=800&h=600&fit=crop\",\n title: \"Central Danish Apartment\",\n rating: 5,\n location: \"Copenhagen, Denmark\",\n price: \"$205\",\n priceUnit: \"night\",\n tag: \"Popular\",\n isFavorite: false,\n },\n {\n id: \"2\",\n imageUrl: \"https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=800&h=600&fit=crop\",\n title: \"Condo on Market Street\",\n rating: 5,\n location: \"San Francisco, CA\",\n price: \"$280\",\n priceUnit: \"night\",\n isFavorite: false,\n },\n {\n id: \"3\",\n imageUrl: \"https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=800&h=600&fit=crop\",\n title: \"Waikiki Beach Apt\",\n rating: 4,\n location: \"Honolulu, HI\",\n price: \"$135\",\n priceUnit: \"night\",\n isFavorite: false,\n },\n {\n id: \"4\",\n imageUrl: \"https://images.unsplash.com/photo-1493809842364-78817add7ffb?w=800&h=600&fit=crop\",\n title: \"Upper East Side Apt\",\n rating: 5,\n location: \"New York, NY\",\n price: \"$320\",\n priceUnit: \"night\",\n tag: \"Popular\",\n isFavorite: false,\n },\n {\n id: \"5\",\n imageUrl: \"https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=800&h=600&fit=crop\",\n title: \"Condo on Market Street\",\n rating: 5,\n location: \"San Francisco, CA\",\n price: \"$280\",\n priceUnit: \"night\",\n isFavorite: false,\n },\n {\n id: \"6\",\n imageUrl: \"https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=800&h=600&fit=crop\",\n title: \"Central Danish Apartment\",\n rating: 5,\n location: \"Copenhagen, Denmark\",\n price: \"$205\",\n priceUnit: \"night\",\n tag: \"Popular\",\n isFavorite: false,\n },\n {\n id: \"7\",\n imageUrl: \"https://images.unsplash.com/photo-1512917774080-9991f1c4c750?w=800&h=600&fit=crop\",\n title: \"Apartment in Shoreditch\",\n rating: 5,\n location: \"London, United Kingdom\",\n price: \"$179\",\n priceUnit: \"night\",\n isFavorite: false,\n },\n {\n id: \"8\",\n imageUrl: \"https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=800&h=600&fit=crop\",\n title: \"Waikiki Beach Apt\",\n rating: 5,\n location: \"Honolulu, HI\",\n price: \"$135\",\n priceUnit: \"night\",\n isFavorite: false,\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"price-low\", label: \"Price (Low to High)\" },\n { id: \"price-high\", label: \"Price (High to Low)\" },\n { id: \"rating\", label: \"Highest Rated\" },\n { id: \"newest\", label: \"Newest\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All Properties\" },\n { id: \"popular\", label: \"Popular\" },\n { id: \"instant\", label: \"Instant Booking\" },\n { id: \"family\", label: \"Family Friendly\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\nfunction StarRating({ rating }: { rating: number }) {\n return (\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-xxs, 2px)\" }}\n >\n {[1, 2, 3, 4, 5].map((star) => (\n <Star\n key={star}\n className=\"size-5\"\n fill={star <= rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n stroke={star <= rating ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}\n />\n ))}\n </div>\n );\n}\n\ninterface TileCardProps {\n item: GridTileItem;\n onFavorite?: (item: GridTileItem) => void;\n onClick?: (item: GridTileItem) => void;\n}\n\nfunction TileCard({ item, onFavorite, onClick }: TileCardProps) {\n const [isFavorite, setIsFavorite] = useState(item.isFavorite ?? false);\n\n const handleFavorite = (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsFavorite(!isFavorite);\n onFavorite?.(item);\n };\n\n return (\n <div \n className=\"flex flex-col cursor-pointer\"\n style={{ gap: \"var(--spacing-xl, 16px)\" }}\n onClick={() => onClick?.(item)}\n >\n {/* Image Container */}\n <div \n className=\"relative w-full overflow-hidden aspect-square\"\n style={{ \n borderRadius: \"var(--radius-md, 8px)\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Main Image */}\n <img\n src={item.imageUrl}\n alt={item.title}\n className=\"absolute inset-0 w-full h-full object-cover\"\n style={{ borderRadius: \"var(--radius-md, 8px)\" }}\n />\n\n {/* Favorite Button */}\n <button\n onClick={handleFavorite}\n className=\"absolute flex items-center justify-center transition-transform hover:scale-105\"\n style={{\n top: \"var(--spacing-md, 8px)\",\n left: \"var(--spacing-md, 8px)\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"var(--radius-4xl, 24px)\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-text)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <Heart\n className=\"size-5\"\n fill={isFavorite ? \"var(--canvas-primary)\" : \"transparent\"}\n stroke=\"var(--canvas-text)\"\n />\n </button>\n\n {/* Tag Badge */}\n {item.tag && (\n <div\n className=\"absolute flex items-center\"\n style={{\n top: \"var(--spacing-md, 8px)\",\n left: \"47px\",\n height: \"32px\",\n paddingLeft: \"var(--spacing-lg, 12px)\",\n paddingRight: \"var(--spacing-lg, 12px)\",\n borderRadius: \"var(--radius-xs, 4px)\",\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-text)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.tag}\n </div>\n )}\n </div>\n\n {/* Content */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-xs, 4px)\" }}\n >\n {/* Title */}\n <h3\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.title}\n </h3>\n\n {/* Star Rating */}\n <StarRating rating={item.rating} />\n\n {/* Location */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.location}\n </p>\n\n {/* Price */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n <span style={{ fontWeight: 500 }}>{item.price}</span>\n {item.priceUnit && (\n <span style={{ fontWeight: \"var(--typo-body-s-weight)\" }}>\n {\" \"}{item.priceUnit}\n </span>\n )}\n </p>\n </div>\n </div>\n );\n}\n\n// ============================================\n// Grid Column Classes\n// ============================================\n\nfunction getGridClasses(columns: 2 | 3 | 4 | 5): string {\n const columnClassMap: Record<2 | 3 | 4 | 5, string> = {\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n 5: \"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5\",\n };\n return columnClassMap[columns];\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Grid Tiles List Block\n * \n * A responsive grid of property/listing tiles with configurable columns,\n * images, star ratings, prices, and favorite buttons. Includes header\n * section with title, subtitle, and sort/filter controls.\n * \n * @example\n * ```tsx\n * <GridTilesList\n * title=\"Properties\"\n * columns={4}\n * onFavorite={(item) => console.log(\"Favorited:\", item.title)}\n * />\n * ```\n */\nexport function GridTilesList({\n title = \"Properties\",\n subtitle,\n items = defaultItems,\n columns = 4,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onFavorite,\n onItemClick,\n className,\n}: GridTilesListProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displaySubtitle = subtitle ?? `${items.length} listings`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div \n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl, 16px)\" }}\n >\n {/* Header Section */}\n <div \n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl, 16px)\" }}\n >\n {/* Title and Subtitle */}\n <div \n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs, 4px)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displaySubtitle}\n </p>\n </div>\n\n {/* Controls */}\n <div \n className=\"flex items-start justify-end shrink-0\"\n style={{ gap: \"var(--spacing-3xl, 24px)\" }}\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Grid Section */}\n <div \n className={cn(\"grid w-full\", getGridClasses(columns))}\n style={{ gap: \"var(--spacing-4xl, 32px)\" }}\n >\n {items.map((item) => (\n <TileCard\n key={item.id}\n item={item}\n onFavorite={onFavorite}\n onClick={onItemClick}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../ui/avatar\";\nimport { MapPin, BookOpen, Video, DollarSign, Star } from \"lucide-react\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface ProfileTileItem {\n id: string;\n name: string;\n avatarUrl?: string;\n isOnline?: boolean;\n subject: string;\n pricePerHour: number;\n rating: number;\n reviewCount: string;\n certification?: string;\n location: string;\n education: string;\n sessionsCount: string;\n earnings: string;\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface ProfileGridTilesListProps {\n /** Block title */\n title?: string;\n /** Subtitle text (e.g., \"23 english tutors near you\") */\n subtitle?: string;\n /** Array of profile tile items */\n items?: ProfileTileItem[];\n /** Number of columns in the grid (2-5) */\n columns?: 2 | 3 | 4 | 5;\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Callback when action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when a profile is clicked */\n onItemClick?: (item: ProfileTileItem) => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultItems: ProfileTileItem[] = [\n {\n id: \"1\",\n name: \"Jeffrey Connor\",\n avatarUrl: \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop&crop=face\",\n isOnline: true,\n subject: \"English\",\n pricePerHour: 80,\n rating: 4.3,\n reviewCount: \"2.4k\",\n certification: \"TEFL certification\",\n location: \"San Francisco\",\n education: \"UCLA\",\n sessionsCount: \"105 sessions\",\n earnings: \"5.2k earned\",\n },\n {\n id: \"2\",\n name: \"Stacy Jones\",\n avatarUrl: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop&crop=face\",\n isOnline: true,\n subject: \"English\",\n pricePerHour: 75,\n rating: 4.3,\n reviewCount: \"2.4k\",\n certification: \"Native speaker\",\n location: \"New York\",\n education: \"Columbia\",\n sessionsCount: \"23 sessions\",\n earnings: \"2k earned\",\n },\n {\n id: \"3\",\n name: \"Raj Mishra\",\n avatarUrl: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=150&h=150&fit=crop&crop=face\",\n isOnline: true,\n subject: \"English\",\n pricePerHour: 75,\n rating: 4.3,\n reviewCount: \"2.4k\",\n certification: \"TEFL certification\",\n location: \"Newark\",\n education: \"Rutgers\",\n sessionsCount: \"34 sessions\",\n earnings: \"2.1k earned\",\n },\n {\n id: \"4\",\n name: \"Mary Trott\",\n avatarUrl: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150&h=150&fit=crop&crop=face\",\n isOnline: true,\n subject: \"English\",\n pricePerHour: 75,\n rating: 4.3,\n reviewCount: \"2.4k\",\n certification: \"TEFL certification\",\n location: \"Connecticut\",\n education: \"Yale\",\n sessionsCount: \"75 sessions\",\n earnings: \"91k earned\",\n },\n];\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"rating\", label: \"Highest Rated\" },\n { id: \"price-low\", label: \"Price: Low to High\" },\n { id: \"price-high\", label: \"Price: High to Low\" },\n { id: \"sessions\", label: \"Most Sessions\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All Tutors\" },\n { id: \"online\", label: \"Online Now\" },\n { id: \"native\", label: \"Native Speaker\" },\n { id: \"certified\", label: \"Certified\" },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface ProfileTileCardProps {\n item: ProfileTileItem;\n onClick?: (item: ProfileTileItem) => void;\n}\n\nfunction ProfileTileCard({ item, onClick }: ProfileTileCardProps) {\n return (\n <div\n className=\"flex flex-col\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-md, 8px)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n overflow: \"hidden\",\n }}\n >\n {/* Main Content */}\n <div\n className=\"flex flex-col items-center w-full\"\n style={{\n padding: \"var(--spacing-4xl) var(--spacing-4xl) 0\",\n gap: \"var(--spacing-2xl)\",\n }}\n >\n {/* Avatar Section */}\n <div className=\"flex flex-col items-center w-full\" style={{ gap: \"var(--radius-md, 8px)\" }}>\n {/* Avatar with Online Indicator */}\n <div className=\"relative shrink-0\" style={{ width: \"120px\", height: \"120px\" }}>\n <Avatar\n className=\"w-full h-full\"\n style={{\n width: \"120px\",\n height: \"120px\",\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n <AvatarImage src={item.avatarUrl} alt={item.name} />\n <AvatarFallback style={{ fontSize: \"var(--typo-h4-size)\" }}>\n {item.name.split(\" \").map(n => n[0]).join(\"\").slice(0, 2)}\n </AvatarFallback>\n </Avatar>\n {item.isOnline && (\n <div\n className=\"absolute\"\n style={{\n width: \"20px\",\n height: \"20px\",\n right: \"4px\",\n bottom: \"7px\",\n backgroundColor: \"var(--canvas-success)\",\n borderRadius: \"var(--radius-full, 50%)\",\n border: \"2px solid var(--canvas-background)\",\n }}\n />\n )}\n </div>\n\n {/* Name, Subject, Price */}\n <div\n className=\"flex flex-col items-center text-center\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.name}\n </p>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {item.subject}\n </p>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n <span style={{ fontWeight: 600 }}>${item.pricePerHour}</span> / hour\n </p>\n </div>\n </div>\n\n {/* Rating Row */}\n <div\n className=\"flex items-center justify-center w-full\"\n style={{ gap: \"4px\" }}\n >\n <Star\n className=\"w-5 h-5\"\n style={{ color: \"var(--canvas-primary)\", fill: \"var(--canvas-primary)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {item.rating}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n ({item.reviewCount})\n </span>\n </div>\n\n {/* Divider */}\n <div\n className=\"w-full\"\n style={{\n height: \"1px\",\n backgroundColor: \"var(--canvas-border)\",\n }}\n />\n\n {/* Certification Badge */}\n {item.certification && (\n <p\n className=\"text-center\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {item.certification}\n </p>\n )}\n\n {/* Metadata Rows */}\n <div\n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-lg)\" }}\n >\n {/* Location */}\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-sm)\" }}>\n <MapPin\n className=\"w-5 h-5 shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.location}\n </span>\n </div>\n\n {/* Education */}\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-sm)\" }}>\n <BookOpen\n className=\"w-5 h-5 shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.education}\n </span>\n </div>\n\n {/* Sessions */}\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-sm)\" }}>\n <Video\n className=\"w-5 h-5 shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.sessionsCount}\n </span>\n </div>\n\n {/* Earnings */}\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-sm)\" }}>\n <DollarSign\n className=\"w-5 h-5 shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.earnings}\n </span>\n </div>\n </div>\n </div>\n\n {/* Footer - View Profile Button */}\n <div\n className=\"flex items-center justify-center w-full cursor-pointer\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-xl)\",\n marginTop: \"var(--spacing-2xl)\",\n }}\n onClick={() => onClick?.(item)}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n View profile >\n </span>\n </div>\n </div>\n );\n}\n\n// ============================================\n// Grid Constants\n// ============================================\n\nconst CARD_MIN_WIDTH = 300;\nconst GRID_GAP_PX = 32; // --spacing-4xl = 32px\n\n/**\n * Get inline styles for the grid based on columns configuration\n * Uses CSS Grid with auto-fill and minmax for:\n * - Minimum card width of 300px\n * - Equal width for all cards (via 1fr)\n * - Automatic wrapping when container is narrower\n * - Maximum columns limited by the columns prop\n */\nfunction getGridStyle(columns: 2 | 3 | 4 | 5): React.CSSProperties {\n // Calculate max-width to limit the number of columns\n // Formula: columns * minWidth + (columns - 1) * gap\n const maxGridWidth = columns * CARD_MIN_WIDTH + (columns - 1) * GRID_GAP_PX;\n \n return {\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fill, minmax(${CARD_MIN_WIDTH}px, 1fr))`,\n gap: 'var(--spacing-4xl)',\n width: '100%',\n maxWidth: `${maxGridWidth}px`,\n };\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Profile Grid Tiles List Block\n *\n * A responsive grid of profile cards with avatar, ratings, certifications,\n * and metadata. Supports 2-5 column layouts that adapt to screen size.\n *\n * @example\n * ```tsx\n * <ProfileGridTilesList\n * title=\"Tutors near you\"\n * subtitle=\"23 english tutors near you\"\n * columns={4}\n * onItemClick={(item) => console.log(\"Clicked\", item)}\n * />\n * ```\n */\nexport function ProfileGridTilesList({\n title = \"Tutors near you\",\n subtitle,\n items = defaultItems,\n columns = 4,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n onAddNew,\n onSort,\n onFilter,\n onItemClick,\n className,\n}: ProfileGridTilesListProps) {\n const [sortValue, setSortValue] = useState<string>(\"\");\n const [filterValue, setFilterValue] = useState<string>(\"\");\n\n const displaySubtitle = subtitle ?? `${items.length} tutors available`;\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Header Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Subtitle */}\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {displaySubtitle}\n </p>\n </div>\n\n {/* Controls */}\n <div\n className=\"flex flex-wrap items-start justify-end shrink-0\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={filterValue || undefined} onValueChange={handleFilterChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onAddNew}\n style={{\n height: \"var(--btn-small-height)\",\n paddingLeft: \"var(--btn-small-px)\",\n paddingRight: \"var(--btn-small-px)\",\n fontSize: \"var(--btn-small-font-size)\",\n borderRadius: \"var(--btn-small-radius)\",\n backgroundColor: \"var(--btn-primary-bg)\",\n color: \"var(--btn-primary-text)\",\n borderColor: \"var(--btn-primary-border)\",\n }}\n >\n {actionButtonText}\n </Button>\n </div>\n </div>\n\n {/* Grid Section */}\n <div style={getGridStyle(columns)}>\n {items.map((item) => (\n <ProfileTileCard\n key={item.id}\n item={item}\n onClick={onItemClick}\n />\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n ArrowUpRight,\n ArrowDownRight,\n DotsThreeVertical,\n Gear,\n} from \"@phosphor-icons/react\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n Filler,\n ArcElement,\n} from \"chart.js\";\nimport { Line, Doughnut } from \"react-chartjs-2\";\n\n// Register Chart.js components\nChartJS.register(\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n Filler,\n ArcElement\n);\n\n// ============================================\n// Custom Hook: useCSSVariableColors\n// ============================================\n\ninterface CSSVariableColors {\n primary: string;\n background: string;\n text: string;\n textMuted: string;\n textPlaceholder: string;\n border: string;\n success: string;\n chartColor1: string;\n chartColor2: string;\n chartColor3: string;\n chartColor4: string;\n chartColor5: string;\n chartLineColor: string;\n chartAreaColor: string;\n}\n\nfunction useCSSVariableColors(): CSSVariableColors {\n const [colors, setColors] = useState<CSSVariableColors>({\n primary: \"#1165ef\",\n background: \"#ffffff\",\n text: \"#0d121c\",\n textMuted: \"#4b5565\",\n textPlaceholder: \"#6c7684\",\n border: \"#e9eef3\",\n success: \"#08875d\",\n chartColor1: \"#e45451\",\n chartColor2: \"#69bdbc\",\n chartColor3: \"#f8f578\",\n chartColor4: \"#f2b66b\",\n chartColor5: \"#6c7684\",\n chartLineColor: \"#1165ef\",\n chartAreaColor: \"rgba(17, 101, 239, 0.1)\",\n });\n\n const readColors = useCallback(() => {\n if (typeof window === \"undefined\") return;\n const style = getComputedStyle(document.documentElement);\n setColors({\n primary: style.getPropertyValue(\"--canvas-primary\").trim() || \"#1165ef\",\n background: style.getPropertyValue(\"--canvas-background\").trim() || \"#ffffff\",\n text: style.getPropertyValue(\"--canvas-text\").trim() || \"#0d121c\",\n textMuted: style.getPropertyValue(\"--canvas-text-muted\").trim() || \"#4b5565\",\n textPlaceholder: style.getPropertyValue(\"--canvas-text-placeholder\").trim() || \"#6c7684\",\n border: style.getPropertyValue(\"--canvas-border\").trim() || \"#e9eef3\",\n success: style.getPropertyValue(\"--canvas-success\").trim() || \"#08875d\",\n chartColor1: style.getPropertyValue(\"--chart-color-1\").trim() || \"#e45451\",\n chartColor2: style.getPropertyValue(\"--chart-color-2\").trim() || \"#69bdbc\",\n chartColor3: style.getPropertyValue(\"--chart-color-3\").trim() || \"#f8f578\",\n chartColor4: style.getPropertyValue(\"--chart-color-4\").trim() || \"#f2b66b\",\n chartColor5: style.getPropertyValue(\"--chart-color-5\").trim() || \"#6c7684\",\n chartLineColor: style.getPropertyValue(\"--chart-line-color\").trim() || \"#1165ef\",\n chartAreaColor: style.getPropertyValue(\"--chart-area-color\").trim() || \"rgba(17, 101, 239, 0.1)\",\n });\n }, []);\n\n useEffect(() => {\n readColors();\n\n // MutationObserver to watch for style attribute changes on :root\n const observer = new MutationObserver(() => {\n readColors();\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"style\"],\n });\n\n // Also listen for custom event that variables drawer might dispatch\n const handleVariableChange = () => readColors();\n window.addEventListener(\"css-variables-changed\", handleVariableChange);\n\n return () => {\n observer.disconnect();\n window.removeEventListener(\"css-variables-changed\", handleVariableChange);\n };\n }, [readColors]);\n\n return colors;\n}\n\n// ============================================\n// Types\n// ============================================\n\nexport interface MetricCardData {\n id: string;\n label: string;\n value: string;\n change?: {\n value: string;\n direction: \"up\" | \"down\";\n };\n}\n\nexport interface MetricListItem {\n id: string;\n date?: string;\n label: string;\n value: string;\n}\n\nexport interface DonutChartLegendItem {\n id: string;\n label: string;\n value: string;\n color: string;\n}\n\nexport interface ProgressBarItem {\n id: string;\n label: string;\n sublabel?: string;\n value?: string;\n progress: number; // 0-100\n imageUrl?: string;\n color?: string;\n}\n\n// ============================================\n// Shared Sub-components\n// ============================================\n\ninterface WidgetCardProps {\n children: React.ReactNode;\n className?: string;\n}\n\nfunction WidgetCard({ children, className }: WidgetCardProps) {\n return (\n <div\n className={cn(\"flex flex-col overflow-hidden\", className)}\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-nav, 8px)\",\n boxShadow: \"0px 1px 2px 0px rgba(0, 0, 0, 0.02)\",\n }}\n >\n {children}\n </div>\n );\n}\n\ninterface WidgetHeaderProps {\n label: string;\n onMenuClick?: () => void;\n}\n\nfunction WidgetHeader({ label, onMenuClick }: WidgetHeaderProps) {\n return (\n <div className=\"flex items-center justify-between w-full\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height, 1.4)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {label}\n </span>\n <button\n onClick={onMenuClick}\n className=\"flex items-center justify-center rounded-full hover:bg-[var(--canvas-surface)]\"\n style={{ width: 32, height: 32 }}\n >\n <DotsThreeVertical size={20} weight=\"bold\" color=\"var(--canvas-text-placeholder)\" />\n </button>\n </div>\n );\n}\n\ninterface WidgetFooterProps {\n manageLabel?: string;\n viewDetailsLabel?: string;\n onManageClick?: () => void;\n onViewDetailsClick?: () => void;\n}\n\nfunction WidgetFooter({\n manageLabel = \"Manage\",\n viewDetailsLabel = \"View details >\",\n onManageClick,\n onViewDetailsClick,\n}: WidgetFooterProps) {\n return (\n <div\n className=\"flex items-center justify-between w-full\"\n style={{\n borderTop: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-2xl, 20px) var(--spacing-4xl, 32px)\",\n }}\n >\n <button\n onClick={onManageClick}\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-md, 8px)\" }}\n >\n <Gear size={16} color=\"var(--canvas-text-placeholder)\" />\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height, 1.4)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {manageLabel}\n </span>\n </button>\n <button\n onClick={onViewDetailsClick}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height, 1.4)\",\n color: \"var(--canvas-primary)\",\n }}\n >\n {viewDetailsLabel}\n </button>\n </div>\n );\n}\n\n// ============================================\n// MetricCard Component\n// ============================================\n\nexport interface MetricCardProps {\n label: string;\n value: string;\n change?: {\n value: string;\n direction: \"up\" | \"down\";\n };\n className?: string;\n}\n\nexport function MetricCard({ label, value, change, className }: MetricCardProps) {\n return (\n <WidgetCard className={cn(\"flex-1 min-w-0\", className)}>\n <div\n className=\"flex flex-col justify-center\"\n style={{\n padding: \"var(--spacing-4xl, 32px)\",\n gap: \"var(--spacing-lg, 12px)\",\n }}\n >\n {/* Label */}\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height, 1.4)\",\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {label}\n </span>\n\n {/* Value */}\n <span\n style={{\n fontFamily: \"var(--typo-h4-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h4-size, 36px)\",\n fontWeight: 700,\n lineHeight: 1.25,\n letterSpacing: \"-0.01em\",\n color: \"var(--canvas-text)\",\n }}\n >\n {value}\n </span>\n\n {/* Change indicator */}\n {change && (\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-xs, 4px)\" }}>\n {change.direction === \"up\" ? (\n <ArrowUpRight size={20} weight=\"bold\" color=\"var(--canvas-success)\" />\n ) : (\n <ArrowDownRight size={20} weight=\"bold\" color=\"var(--canvas-destructive)\" />\n )}\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 600,\n lineHeight: \"var(--typo-body-s-line-height, 1.4)\",\n color: change.direction === \"up\" ? \"var(--canvas-success)\" : \"var(--canvas-destructive)\",\n }}\n >\n {change.value}\n </span>\n </div>\n )}\n </div>\n </WidgetCard>\n );\n}\n\n// ============================================\n// MetricCardsRow Component\n// ============================================\n\nexport interface MetricCardsRowProps {\n metrics: MetricCardData[];\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\nexport function MetricCardsRow({ metrics, columns = 4, className }: MetricCardsRowProps) {\n return (\n <div\n className={cn(\"flex w-full\", className)}\n style={{ gap: \"var(--spacing-4xl, 32px)\" }}\n >\n {metrics.slice(0, columns).map((metric) => (\n <MetricCard\n key={metric.id}\n label={metric.label}\n value={metric.value}\n change={metric.change}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// LineChartWidget Component\n// ============================================\n\nexport interface LineChartWidgetProps {\n label: string;\n value: string;\n description?: string;\n chartData?: number[];\n chartLabels?: string[];\n className?: string;\n onMenuClick?: () => void;\n onManageClick?: () => void;\n onViewDetailsClick?: () => void;\n}\n\nexport function LineChartWidget({\n label,\n value,\n description,\n chartData = [30, 45, 35, 50, 40, 60, 55, 70, 65, 80, 75, 90],\n chartLabels = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n className,\n onMenuClick,\n onManageClick,\n onViewDetailsClick,\n}: LineChartWidgetProps) {\n const colors = useCSSVariableColors();\n\n const data = {\n labels: chartLabels,\n datasets: [\n {\n data: chartData,\n fill: true,\n backgroundColor: colors.chartAreaColor,\n borderColor: colors.chartLineColor,\n borderWidth: 2,\n tension: 0.4,\n pointRadius: 0,\n pointHoverRadius: 4,\n pointHoverBackgroundColor: colors.chartLineColor,\n pointHoverBorderColor: colors.background,\n pointHoverBorderWidth: 2,\n },\n ],\n };\n\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n backgroundColor: colors.text,\n titleColor: colors.background,\n bodyColor: colors.background,\n padding: 12,\n cornerRadius: 8,\n displayColors: false,\n },\n },\n scales: {\n x: {\n grid: {\n display: false,\n },\n ticks: {\n color: colors.textPlaceholder,\n font: {\n size: 12,\n },\n },\n border: {\n display: false,\n },\n },\n y: {\n grid: {\n color: colors.border,\n },\n ticks: {\n color: colors.textPlaceholder,\n font: {\n size: 12,\n },\n },\n border: {\n display: false,\n },\n },\n },\n interaction: {\n intersect: false,\n mode: \"index\" as const,\n },\n };\n\n return (\n <WidgetCard className={cn(\"w-full\", className)}>\n {/* Content */}\n <div\n className=\"flex flex-col\"\n style={{\n padding: \"var(--spacing-4xl, 32px)\",\n paddingBottom: 0,\n gap: \"var(--spacing-3xl, 24px)\",\n }}\n >\n <WidgetHeader label={label} onMenuClick={onMenuClick} />\n\n {/* Value & Description */}\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-h5-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h5-size, 30px)\",\n fontWeight: 600,\n lineHeight: 1.27,\n color: \"var(--canvas-text)\",\n }}\n >\n {value}\n </span>\n {description && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {description}\n </span>\n )}\n </div>\n\n {/* Chart */}\n <div style={{ height: 300, width: \"100%\" }}>\n <Line data={data} options={options} />\n </div>\n </div>\n\n <WidgetFooter\n onManageClick={onManageClick}\n onViewDetailsClick={onViewDetailsClick}\n />\n </WidgetCard>\n );\n}\n\n// ============================================\n// DonutChartWidget Component\n// ============================================\n\nexport interface DonutChartWidgetProps {\n label: string;\n value: string;\n description?: string;\n legendItems?: DonutChartLegendItem[];\n className?: string;\n onMenuClick?: () => void;\n onManageClick?: () => void;\n onViewDetailsClick?: () => void;\n}\n\nconst defaultDonutLegendItems: DonutChartLegendItem[] = [\n { id: \"1\", label: \"Product sales\", value: \"$400,000\", color: \"chartColor1\" },\n { id: \"2\", label: \"Subscription\", value: \"$350,000\", color: \"chartColor2\" },\n { id: \"3\", label: \"Advertising\", value: \"$300,000\", color: \"chartColor3\" },\n { id: \"4\", label: \"Services fees\", value: \"$250,000\", color: \"chartColor4\" },\n { id: \"5\", label: \"Royalties\", value: \"$200,000\", color: \"chartColor5\" },\n { id: \"6\", label: \"Affiliate marketing\", value: \"$197,454\", color: \"chartColor5\" },\n { id: \"7\", label: \"Licensing\", value: \"$180,000\", color: \"chartColor5\" },\n { id: \"8\", label: \"Sponsorship\", value: \"$150,000\", color: \"chartColor5\" },\n];\n\nexport function DonutChartWidget({\n label,\n value,\n description,\n legendItems = defaultDonutLegendItems,\n className,\n onMenuClick,\n onManageClick,\n onViewDetailsClick,\n}: DonutChartWidgetProps) {\n const colors = useCSSVariableColors();\n\n const getColorValue = (colorKey: string): string => {\n const colorMap: Record<string, string> = {\n chartColor1: colors.chartColor1,\n chartColor2: colors.chartColor2,\n chartColor3: colors.chartColor3,\n chartColor4: colors.chartColor4,\n chartColor5: colors.chartColor5,\n };\n return colorMap[colorKey] || colorKey;\n };\n\n const chartColors = legendItems.map((item) => getColorValue(item.color));\n const chartValues = legendItems.map((item) => {\n const numericValue = parseFloat(item.value.replace(/[$,]/g, \"\"));\n return isNaN(numericValue) ? 0 : numericValue;\n });\n\n const data = {\n labels: legendItems.map((item) => item.label),\n datasets: [\n {\n data: chartValues,\n backgroundColor: chartColors,\n borderColor: colors.background,\n borderWidth: 3,\n hoverBorderColor: colors.background,\n hoverBorderWidth: 3,\n },\n ],\n };\n\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n cutout: \"60%\",\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n backgroundColor: colors.text,\n titleColor: colors.background,\n bodyColor: colors.background,\n padding: 12,\n cornerRadius: 8,\n },\n },\n };\n\n return (\n <WidgetCard className={cn(\"w-full\", className)}>\n {/* Content */}\n <div\n className=\"flex flex-col\"\n style={{\n padding: \"var(--spacing-4xl, 32px)\",\n paddingBottom: 0,\n gap: \"var(--spacing-3xl, 24px)\",\n }}\n >\n <WidgetHeader label={label} onMenuClick={onMenuClick} />\n\n {/* Value & Description */}\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-h5-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h5-size, 30px)\",\n fontWeight: 600,\n lineHeight: 1.27,\n color: \"var(--canvas-text)\",\n }}\n >\n {value}\n </span>\n {description && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {description}\n </span>\n )}\n </div>\n\n {/* Chart + Legend */}\n <div\n className=\"flex items-start w-full\"\n style={{\n gap: \"var(--spacing-4xl, 32px)\",\n padding: \"var(--spacing-3xl, 24px) 0\",\n borderTop: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Donut Chart */}\n <div style={{ width: 280, height: 280, flexShrink: 0 }}>\n <Doughnut data={data} options={options} />\n </div>\n\n {/* Legend Grid */}\n <div\n className=\"flex-1 grid grid-cols-2\"\n style={{ gap: \"var(--spacing-3xl, 24px)\" }}\n >\n {legendItems.map((item) => (\n <div\n key={item.id}\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-md, 8px)\" }}\n >\n <div\n className=\"rounded-full\"\n style={{\n width: 8,\n height: 8,\n backgroundColor: getColorValue(item.color),\n flexShrink: 0,\n }}\n />\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 600,\n lineHeight: 1.5,\n color: \"var(--canvas-text)\",\n }}\n >\n {item.value}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 400,\n lineHeight: 1.4,\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.label}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n <WidgetFooter\n onManageClick={onManageClick}\n onViewDetailsClick={onViewDetailsClick}\n />\n </WidgetCard>\n );\n}\n\n// ============================================\n// MetricListCard Component\n// ============================================\n\nexport interface MetricListCardProps {\n headerLabel: string;\n title: string;\n subtitle?: string;\n items: MetricListItem[];\n viewDetailsLabel?: string;\n className?: string;\n onMenuClick?: () => void;\n onManageClick?: () => void;\n onViewDetailsClick?: () => void;\n}\n\nconst defaultMetricListItems: MetricListItem[] = [\n { id: \"1\", date: \"Aug 9\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"2\", date: \"Jul 18\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"3\", date: \"Jul 12\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"4\", date: \"Jun 8\", label: \"Software subscription\", value: \"-$40\" },\n];\n\nexport function MetricListCard({\n headerLabel,\n title,\n subtitle,\n items = defaultMetricListItems,\n viewDetailsLabel = \"View transactions >\",\n className,\n onMenuClick,\n onManageClick,\n onViewDetailsClick,\n}: MetricListCardProps) {\n return (\n <WidgetCard className={cn(\"flex-1 min-w-0\", className)}>\n {/* Content */}\n <div\n className=\"flex flex-col\"\n style={{\n padding: \"var(--spacing-4xl, 32px)\",\n paddingBottom: 0,\n gap: \"var(--spacing-3xl, 24px)\",\n }}\n >\n <WidgetHeader label={headerLabel} onMenuClick={onMenuClick} />\n\n {/* Title & Subtitle */}\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-h5-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h5-size, 30px)\",\n fontWeight: 600,\n lineHeight: 1.27,\n color: \"var(--canvas-text)\",\n }}\n >\n {title}\n </span>\n {subtitle && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {subtitle}\n </span>\n )}\n </div>\n\n {/* List Items */}\n <div className=\"flex flex-col\">\n {items.map((item, index) => (\n <div\n key={item.id}\n className=\"flex items-center\"\n style={{\n padding: \"var(--spacing-lg, 12px) 0\",\n gap: \"var(--spacing-3xl, 24px)\",\n borderTop: index === 0 ? \"1px solid var(--canvas-border)\" : \"none\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n {item.date && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 600,\n lineHeight: 1.5,\n color: \"var(--canvas-text-placeholder)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.date}\n </span>\n )}\n <span\n className=\"flex-1\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text)\",\n }}\n >\n {item.label}\n </span>\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 600,\n lineHeight: 1.5,\n color: \"var(--canvas-text)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n <WidgetFooter\n onManageClick={onManageClick}\n onViewDetailsClick={onViewDetailsClick}\n viewDetailsLabel={viewDetailsLabel}\n />\n </WidgetCard>\n );\n}\n\n// ============================================\n// ProgressMetricCard Component\n// ============================================\n\nexport interface ProgressMetricCardProps {\n headerLabel: string;\n title: string;\n subtitle?: string;\n items: ProgressBarItem[];\n className?: string;\n onMenuClick?: () => void;\n onManageClick?: () => void;\n onViewDetailsClick?: () => void;\n}\n\nconst defaultProgressItems: ProgressBarItem[] = [\n { id: \"1\", label: \"$55,000\", progress: 80, imageUrl: \"/logos/shopify.png\" },\n { id: \"2\", label: \"$30,000\", progress: 50, imageUrl: \"/logos/etsy.png\" },\n { id: \"3\", label: \"$16,493\", progress: 30, imageUrl: \"/logos/amazon.png\" },\n { id: \"4\", label: \"$13,800\", progress: 25, imageUrl: \"/logos/dribbble.png\" },\n];\n\nexport function ProgressMetricCard({\n headerLabel,\n title,\n subtitle,\n items = defaultProgressItems,\n className,\n onMenuClick,\n onManageClick,\n onViewDetailsClick,\n}: ProgressMetricCardProps) {\n const colors = useCSSVariableColors();\n\n return (\n <WidgetCard className={cn(\"flex-1 min-w-0\", className)}>\n {/* Content */}\n <div\n className=\"flex flex-col\"\n style={{\n padding: \"var(--spacing-4xl, 32px)\",\n paddingBottom: 0,\n gap: \"var(--spacing-3xl, 24px)\",\n }}\n >\n <WidgetHeader label={headerLabel} onMenuClick={onMenuClick} />\n\n {/* Title & Subtitle */}\n <div className=\"flex flex-col\">\n <span\n style={{\n fontFamily: \"var(--typo-h5-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h5-size, 30px)\",\n fontWeight: 600,\n lineHeight: 1.27,\n color: \"var(--canvas-text)\",\n }}\n >\n {title}\n </span>\n {subtitle && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {subtitle}\n </span>\n )}\n </div>\n\n {/* Progress Items */}\n <div className=\"flex flex-col\">\n {items.map((item, index) => (\n <div\n key={item.id}\n className=\"flex items-center\"\n style={{\n padding: \"var(--spacing-lg, 12px) 0\",\n gap: \"var(--spacing-xl, 16px)\",\n borderTop: index === 0 ? \"1px solid var(--canvas-border)\" : \"none\",\n borderBottom: index < items.length - 1 ? \"1px solid var(--canvas-border)\" : \"none\",\n height: 64,\n }}\n >\n {/* Image */}\n {item.imageUrl && (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 32, height: 32, flexShrink: 0 }}\n >\n <img\n src={item.imageUrl}\n alt=\"\"\n style={{\n maxWidth: \"100%\",\n maxHeight: \"100%\",\n objectFit: \"contain\",\n }}\n onError={(e) => {\n // Hide image on error\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n </div>\n )}\n\n {/* Progress Bar */}\n <div\n className=\"flex-1\"\n style={{\n height: 8,\n backgroundColor: \"var(--canvas-border)\",\n borderRadius: \"var(--spacing-3xl, 24px)\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${item.progress}%`,\n height: \"100%\",\n backgroundColor: item.color || colors.primary,\n borderRadius: \"var(--spacing-3xl, 24px)\",\n }}\n />\n </div>\n\n {/* Value */}\n <div className=\"flex flex-col items-end\">\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 600,\n lineHeight: 1.5,\n color: \"var(--canvas-text)\",\n whiteSpace: \"nowrap\",\n }}\n >\n {item.label}\n </span>\n {item.sublabel && (\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 14px)\",\n fontWeight: 500,\n lineHeight: 1.4,\n color: \"var(--canvas-text-placeholder)\",\n }}\n >\n {item.sublabel}\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <WidgetFooter\n onManageClick={onManageClick}\n onViewDetailsClick={onViewDetailsClick}\n />\n </WidgetCard>\n );\n}\n\n// ============================================\n// TwoColumnWidgets Layout Component\n// ============================================\n\nexport interface TwoColumnWidgetsProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function TwoColumnWidgets({ children, className }: TwoColumnWidgetsProps) {\n return (\n <div\n className={cn(\"flex w-full\", className)}\n style={{ gap: \"var(--spacing-4xl, 32px)\" }}\n >\n {children}\n </div>\n );\n}\n\n// ============================================\n// DashboardHeader Component\n// ============================================\n\nexport interface DashboardHeaderProps {\n title: string;\n subtitle?: string;\n className?: string;\n}\n\nexport function DashboardHeader({ title, subtitle, className }: DashboardHeaderProps) {\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xs, 4px)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size, 24px)\",\n fontWeight: \"var(--typo-h6-weight, 600)\",\n lineHeight: \"var(--typo-h6-line-height, 1.25)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n {subtitle && (\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size, 16px)\",\n fontWeight: 400,\n lineHeight: 1.5,\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n )}\n </div>\n );\n}\n\n// ============================================\n// Full Dashboard Demo Component\n// ============================================\n\nexport interface GraphMetricTilesDemoProps {\n className?: string;\n}\n\nexport function GraphMetricTilesDemo({ className }: GraphMetricTilesDemoProps) {\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-3xl, 24px)\" }}\n >\n {/* Header */}\n <DashboardHeader title=\"Dashboard\" subtitle=\"View your company's metric\" />\n\n {/* 4-Column Metrics Row */}\n <MetricCardsRow\n metrics={[\n { id: \"1\", label: \"Sales\", value: \"164\", change: { value: \"34\", direction: \"up\" } },\n { id: \"2\", label: \"Revenue\", value: \"$5,462\", change: { value: \"$3,462\", direction: \"up\" } },\n { id: \"3\", label: \"Expenses\", value: \"$1,642\", change: { value: \"$642\", direction: \"up\" } },\n { id: \"4\", label: \"Profit\", value: \"$3,820\", change: { value: \"$2,820\", direction: \"up\" } },\n ]}\n columns={4}\n />\n\n {/* Line Chart Widget */}\n <LineChartWidget\n label=\"Profit and loss\"\n value=\"$127,454\"\n description=\"Your expenses decreased by 8% this month\"\n />\n\n {/* Donut Chart Widget */}\n <DonutChartWidget\n label=\"Revenue\"\n value=\"$2,127,454\"\n description=\"Your revenue increased by 25% this month\"\n />\n\n {/* Two Column - Transactions & Financial Summary */}\n <TwoColumnWidgets>\n <MetricListCard\n headerLabel=\"Recent activities\"\n title=\"Transactions\"\n subtitle=\"You spent $2,321 in the past 7 days\"\n items={[\n { id: \"1\", date: \"Aug 9\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"2\", date: \"Jul 18\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"3\", date: \"Jul 12\", label: \"Software subscription\", value: \"-$40\" },\n { id: \"4\", date: \"Jun 8\", label: \"Software subscription\", value: \"-$40\" },\n ]}\n />\n <MetricListCard\n headerLabel=\"Cash\"\n title=\"Financial Summary\"\n subtitle=\"You have positive cash flow\"\n items={[\n { id: \"1\", label: \"ProjectCo March invoice\", value: \"$80,000\" },\n { id: \"2\", label: \"Tax refund\", value: \"$5,646\" },\n { id: \"3\", label: \"Kohort February invoice\", value: \"$64,000\" },\n { id: \"4\", label: \"License fee\", value: \"$7,500\" },\n ]}\n />\n </TwoColumnWidgets>\n\n {/* Two Column - Progress Metrics */}\n <TwoColumnWidgets>\n <ProgressMetricCard\n headerLabel=\"Revenue\"\n title=\"Sources\"\n subtitle=\"Third-party marketplaces\"\n items={[\n { id: \"1\", label: \"$55,000\", progress: 80, color: \"#95bf47\" },\n { id: \"2\", label: \"$30,000\", progress: 50, color: \"#f27123\" },\n { id: \"3\", label: \"$16,493\", progress: 30, color: \"#faa11f\" },\n { id: \"4\", label: \"$13,800\", progress: 25, color: \"#ff91e9\" },\n ]}\n />\n <ProgressMetricCard\n headerLabel=\"Net income\"\n title=\"Trend analysis\"\n subtitle=\"2020 - 2024\"\n items={[\n { id: \"1\", label: \"$132,000\", sublabel: \"2024\", progress: 100 },\n { id: \"2\", label: \"$78,252\", sublabel: \"2023\", progress: 60 },\n { id: \"3\", label: \"$36,493\", sublabel: \"2022\", progress: 28 },\n { id: \"4\", label: \"$21,800\", sublabel: \"2021\", progress: 17 },\n ]}\n />\n </TwoColumnWidgets>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport { Label } from \"../ui/label\";\nimport { TextInput } from \"../ui/text-input\";\nimport { Textarea } from \"../ui/textarea\";\nimport { DateInput } from \"../ui/date-input\";\nimport { Slider } from \"../ui/slider\";\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { CheckboxWithLabel } from \"../ui/checkbox\";\nimport { MultiselectTags } from \"../ui/multiselect-tags\";\nimport { MultiselectCheckboxField, type CheckboxOption } from \"../ui/multiselect-checkbox-field\";\nimport { ImageUploader, type UploadedImage } from \"../ui/image-uploader\";\nimport { FileUploader, type UploadedFile } from \"../ui/file-uploader\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface FormFieldConfig {\n id: string;\n label: string;\n type:\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"date\"\n | \"multiselect-checkbox\"\n | \"checkbox-group\"\n | \"radio-group\"\n | \"multiselect-tags\"\n | \"image-uploader\"\n | \"file-uploader\"\n | \"slider\";\n placeholder?: string;\n options?: { id: string; label: string }[];\n value?: string | string[] | number[] | UploadedImage[] | UploadedFile[];\n min?: number;\n max?: number;\n step?: number;\n fullWidth?: boolean;\n disabled?: boolean;\n}\n\nexport interface FormRowConfig {\n id: string;\n fields: FormFieldConfig[];\n}\n\nexport interface SortOption {\n id: string;\n label: string;\n}\n\nexport interface FilterOption {\n id: string;\n label: string;\n}\n\nexport interface FormGroupProps {\n /** Form title */\n title?: string;\n /** Form description */\n description?: string;\n /** Row configurations containing field definitions */\n rows?: FormRowConfig[];\n /** Sort options for the sort dropdown */\n sortOptions?: SortOption[];\n /** Filter options for the filter dropdown */\n filterOptions?: FilterOption[];\n /** Primary action button text */\n actionButtonText?: string;\n /** Cancel button text */\n cancelButtonText?: string;\n /** Save button text */\n saveButtonText?: string;\n /** Input size variant */\n inputSize?: \"sm\" | \"default\" | \"lg\";\n /** Callback when action button is clicked */\n onAddNew?: () => void;\n /** Callback when sort value changes */\n onSort?: (value: string) => void;\n /** Callback when filter value changes */\n onFilter?: (value: string) => void;\n /** Callback when cancel button is clicked */\n onCancel?: () => void;\n /** Callback when save button is clicked */\n onSave?: () => void;\n /** Callback when a field value changes */\n onFieldChange?: (fieldId: string, value: unknown) => void;\n /** Show header section */\n showHeader?: boolean;\n /** Show footer section */\n showFooter?: boolean;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Default Data\n// ============================================\n\nconst defaultSortOptions: SortOption[] = [\n { id: \"name-asc\", label: \"Name (A-Z)\" },\n { id: \"name-desc\", label: \"Name (Z-A)\" },\n { id: \"date-newest\", label: \"Newest first\" },\n { id: \"date-oldest\", label: \"Oldest first\" },\n];\n\nconst defaultFilterOptions: FilterOption[] = [\n { id: \"all\", label: \"All\" },\n { id: \"active\", label: \"Active\" },\n { id: \"inactive\", label: \"Inactive\" },\n];\n\nconst defaultCheckboxOptions: CheckboxOption[] = [\n { id: \"option-1\", label: \"Option 1\" },\n { id: \"option-2\", label: \"Option 1\" },\n { id: \"option-3\", label: \"Option 1\" },\n { id: \"option-4\", label: \"Option 1\" },\n { id: \"option-5\", label: \"Option 1\" },\n];\n\nconst defaultRadioOptions = [\n { id: \"option-a\", label: \"Option\" },\n { id: \"option-b\", label: \"Option\" },\n { id: \"option-c\", label: \"Option\" },\n { id: \"option-d\", label: \"Option\" },\n];\n\nconst defaultSelectOptions = [\n { id: \"placeholder\", label: \"Placeholder\" },\n { id: \"option-1\", label: \"Option 1\" },\n { id: \"option-2\", label: \"Option 2\" },\n { id: \"option-3\", label: \"Option 3\" },\n];\n\nconst defaultRows: FormRowConfig[] = [\n {\n id: \"row-1\",\n fields: [\n { id: \"field-1\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n { id: \"field-2\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n ],\n },\n {\n id: \"row-2\",\n fields: [\n { id: \"field-3\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n { id: \"field-4\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n ],\n },\n {\n id: \"row-3\",\n fields: [\n { id: \"field-5\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n { id: \"field-6\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\" },\n ],\n },\n {\n id: \"row-4\",\n fields: [\n { id: \"field-7\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\", fullWidth: true },\n ],\n },\n {\n id: \"row-5\",\n fields: [\n { id: \"field-8\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\", fullWidth: true },\n ],\n },\n {\n id: \"row-6\",\n fields: [\n {\n id: \"field-9\",\n label: \"Label\",\n type: \"select\",\n placeholder: \"Placeholder\",\n options: defaultSelectOptions,\n fullWidth: true,\n },\n ],\n },\n {\n id: \"row-7\",\n fields: [\n {\n id: \"field-10\",\n label: \"Label\",\n type: \"multiselect-checkbox\",\n options: defaultCheckboxOptions,\n value: [\"option-1\"],\n fullWidth: true,\n },\n ],\n },\n {\n id: \"row-8\",\n fields: [\n { id: \"field-11\", label: \"Label\", type: \"date\", placeholder: \"2/21/2024\", fullWidth: true },\n ],\n },\n {\n id: \"row-9\",\n fields: [\n {\n id: \"field-12\",\n label: \"Label\",\n type: \"checkbox-group\",\n options: [\n { id: \"cb-1\", label: \"Label\" },\n { id: \"cb-2\", label: \"Label\" },\n { id: \"cb-3\", label: \"Label\" },\n { id: \"cb-4\", label: \"Label\" },\n { id: \"cb-5\", label: \"Label\" },\n { id: \"cb-6\", label: \"Label\" },\n ],\n fullWidth: true,\n },\n ],\n },\n {\n id: \"row-10\",\n fields: [\n {\n id: \"field-13\",\n label: \"Label\",\n type: \"radio-group\",\n options: defaultRadioOptions,\n fullWidth: true,\n },\n ],\n },\n {\n id: \"row-11\",\n fields: [\n { id: \"field-14\", label: \"Label\", type: \"text\", placeholder: \"Placeholder\", fullWidth: true },\n ],\n },\n {\n id: \"row-12\",\n fields: [\n {\n id: \"field-15\",\n label: \"Label\",\n type: \"multiselect-tags\",\n value: [\"Choice A\", \"Choice B\"],\n fullWidth: true,\n },\n ],\n },\n {\n id: \"row-13\",\n fields: [\n { id: \"field-16\", label: \"Label\", type: \"image-uploader\", fullWidth: true },\n ],\n },\n {\n id: \"row-14\",\n fields: [\n { id: \"field-17\", label: \"Label\", type: \"file-uploader\", fullWidth: true },\n ],\n },\n {\n id: \"row-15\",\n fields: [\n {\n id: \"field-18\",\n label: \"Label\",\n type: \"slider\",\n value: [0],\n min: 0,\n max: 1000,\n fullWidth: true,\n },\n ],\n },\n];\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface FormFieldProps {\n field: FormFieldConfig;\n inputSize?: \"sm\" | \"default\" | \"lg\";\n onChange?: (fieldId: string, value: unknown) => void;\n}\n\nfunction FormField({ field, inputSize = \"default\", onChange }: FormFieldProps) {\n const [localValue, setLocalValue] = React.useState<unknown>(field.value);\n \n // State for multiselect tags\n const [tags, setTags] = React.useState<string[]>(\n Array.isArray(field.value) && field.type === \"multiselect-tags\"\n ? (field.value as string[])\n : []\n );\n\n // State for checkbox group\n const [checkedItems, setCheckedItems] = React.useState<string[]>(\n Array.isArray(field.value) && field.type === \"checkbox-group\"\n ? (field.value as string[])\n : []\n );\n\n // State for images and files\n const [images, setImages] = React.useState<UploadedImage[]>(\n Array.isArray(field.value) && field.type === \"image-uploader\"\n ? (field.value as UploadedImage[])\n : []\n );\n const [files, setFiles] = React.useState<UploadedFile[]>(\n Array.isArray(field.value) && field.type === \"file-uploader\"\n ? (field.value as UploadedFile[])\n : []\n );\n\n // State for slider\n const [sliderValue, setSliderValue] = React.useState<number[]>(\n Array.isArray(field.value) && field.type === \"slider\"\n ? (field.value as number[])\n : [0]\n );\n\n const handleChange = (value: unknown) => {\n setLocalValue(value);\n onChange?.(field.id, value);\n };\n\n const renderField = () => {\n switch (field.type) {\n case \"text\":\n return (\n <TextInput\n inputSize={inputSize}\n placeholder={field.placeholder}\n value={typeof localValue === \"string\" ? localValue : \"\"}\n onChange={(e) => handleChange(e.target.value)}\n disabled={field.disabled}\n />\n );\n\n case \"textarea\":\n return (\n <Textarea\n inputSize={inputSize}\n placeholder={field.placeholder}\n value={typeof localValue === \"string\" ? localValue : \"\"}\n onChange={(e) => handleChange(e.target.value)}\n disabled={field.disabled}\n />\n );\n\n case \"select\":\n return (\n <Select\n value={typeof localValue === \"string\" ? localValue : undefined}\n onValueChange={(val) => handleChange(val)}\n disabled={field.disabled}\n >\n <SelectTrigger inputSize={inputSize}>\n <SelectValue placeholder={field.placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {field.options?.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n\n case \"date\":\n return (\n <DateInput\n inputSize={inputSize}\n placeholder={field.placeholder}\n value={typeof localValue === \"string\" ? localValue : \"\"}\n onChange={(val) => handleChange(val)}\n disabled={field.disabled}\n />\n );\n\n case \"multiselect-checkbox\":\n return (\n <MultiselectCheckboxField\n options={field.options}\n selectedValues={\n Array.isArray(localValue) ? (localValue as string[]) : []\n }\n onChange={(vals) => handleChange(vals)}\n inputSize={inputSize}\n disabled={field.disabled}\n />\n );\n\n case \"checkbox-group\":\n return (\n <div\n className=\"flex flex-wrap items-center\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {field.options?.map((option) => (\n <CheckboxWithLabel\n key={option.id}\n checked={checkedItems.includes(option.id)}\n onCheckedChange={(checked) => {\n const newChecked = checked\n ? [...checkedItems, option.id]\n : checkedItems.filter((id) => id !== option.id);\n setCheckedItems(newChecked);\n onChange?.(field.id, newChecked);\n }}\n disabled={field.disabled}\n >\n {option.label}\n </CheckboxWithLabel>\n ))}\n </div>\n );\n\n case \"radio-group\":\n return (\n <RadioGroup\n value={typeof localValue === \"string\" ? localValue : undefined}\n onValueChange={(val) => handleChange(val)}\n disabled={field.disabled}\n className=\"flex flex-wrap items-center\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {field.options?.map((option) => (\n <div\n key={option.id}\n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n <RadioGroupItem value={option.id} id={`${field.id}-${option.id}`} />\n <label\n htmlFor={`${field.id}-${option.id}`}\n className=\"text-[var(--canvas-text-muted)] cursor-pointer\"\n style={{\n fontFamily: \"var(--typo-body-s-font)\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n }}\n >\n {option.label}\n </label>\n </div>\n ))}\n </RadioGroup>\n );\n\n case \"multiselect-tags\":\n return (\n <MultiselectTags\n tags={tags}\n inputSize={inputSize}\n onAdd={(tag) => {\n const newTags = [...tags, tag];\n setTags(newTags);\n onChange?.(field.id, newTags);\n }}\n onRemove={(tag) => {\n const newTags = tags.filter((t) => t !== tag);\n setTags(newTags);\n onChange?.(field.id, newTags);\n }}\n disabled={field.disabled}\n />\n );\n\n case \"image-uploader\":\n return (\n <ImageUploader\n images={images}\n onImagesChange={(newImages) => {\n setImages(newImages);\n onChange?.(field.id, newImages);\n }}\n disabled={field.disabled}\n />\n );\n\n case \"file-uploader\":\n return (\n <FileUploader\n files={files}\n onFilesChange={(newFiles) => {\n setFiles(newFiles);\n onChange?.(field.id, newFiles);\n }}\n disabled={field.disabled}\n />\n );\n\n case \"slider\":\n return (\n <Slider\n inputSize={inputSize}\n value={sliderValue}\n onValueChange={(vals) => {\n setSliderValue(vals);\n onChange?.(field.id, vals);\n }}\n min={field.min ?? 0}\n max={field.max ?? 100}\n step={field.step ?? 1}\n showLabel\n labelFormatter={(vals) => `$${vals[0]}`}\n disabled={field.disabled}\n />\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col w-full\",\n field.fullWidth ? \"col-span-full\" : \"\"\n )}\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <Label>{field.label}</Label>\n {renderField()}\n </div>\n );\n}\n\ninterface FormRowProps {\n row: FormRowConfig;\n inputSize?: \"sm\" | \"default\" | \"lg\";\n onChange?: (fieldId: string, value: unknown) => void;\n}\n\nfunction FormRow({ row, inputSize, onChange }: FormRowProps) {\n // Check if all fields in the row are full width\n const allFullWidth = row.fields.every((f) => f.fullWidth);\n \n if (allFullWidth || row.fields.length === 1) {\n // Render as single column\n return (\n <div className=\"flex flex-col w-full\" style={{ gap: \"var(--spacing-3xl)\" }}>\n {row.fields.map((field) => (\n <FormField\n key={field.id}\n field={field}\n inputSize={inputSize}\n onChange={onChange}\n />\n ))}\n </div>\n );\n }\n\n // Render as responsive 2-column grid\n return (\n <div\n className=\"grid grid-cols-1 sm:grid-cols-2 w-full\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {row.fields.map((field) => (\n <FormField\n key={field.id}\n field={field}\n inputSize={inputSize}\n onChange={onChange}\n />\n ))}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Form Group Block\n *\n * A comprehensive form layout block with various input types arranged\n * in responsive rows. Includes header section with title, description,\n * sort/filter controls, and footer with action buttons.\n *\n * @example\n * ```tsx\n * <FormGroup\n * title=\"Create Entry\"\n * description=\"Fill in the details below\"\n * onSave={() => console.log(\"Save\")}\n * onCancel={() => console.log(\"Cancel\")}\n * />\n * ```\n */\nexport function FormGroup({\n title = \"Title\",\n description = \"Description\",\n rows = defaultRows,\n sortOptions = defaultSortOptions,\n filterOptions = defaultFilterOptions,\n actionButtonText = \"Add new\",\n cancelButtonText = \"Cancel\",\n saveButtonText = \"Save changes\",\n inputSize = \"default\",\n onAddNew,\n onSort,\n onFilter,\n onCancel,\n onSave,\n onFieldChange,\n showHeader = true,\n showFooter = true,\n className,\n}: FormGroupProps) {\n const [sortValue, setSortValue] = React.useState<string>(\"\");\n const [filterValue, setFilterValue] = React.useState<string>(\"\");\n\n const handleSortChange = (value: string) => {\n setSortValue(value);\n onSort?.(value);\n };\n\n const handleFilterChange = (value: string) => {\n setFilterValue(value);\n onFilter?.(value);\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full bg-[var(--canvas-background)]\", className)}\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Header Section */}\n {showHeader && (\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title and Description */}\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {description}\n </p>\n </div>\n\n {/* Controls */}\n <div className=\"flex items-start justify-end shrink-0 gap-3\">\n {/* Sort Dropdown */}\n <div className=\"w-[120px]\">\n <Select value={sortValue || undefined} onValueChange={handleSortChange}>\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Sort\" />\n </SelectTrigger>\n <SelectContent>\n {sortOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Filter Dropdown */}\n <div className=\"w-[120px]\">\n <Select\n value={filterValue || undefined}\n onValueChange={handleFilterChange}\n >\n <SelectTrigger inputSize=\"sm\">\n <SelectValue placeholder=\"Filter\" />\n </SelectTrigger>\n <SelectContent>\n {filterOptions.map((option) => (\n <SelectItem key={option.id} value={option.id}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Action Button */}\n <Button variant=\"primary\" size=\"sm\" onClick={onAddNew}>\n {actionButtonText}\n </Button>\n </div>\n </div>\n )}\n\n {/* Form Rows */}\n {rows.map((row) => (\n <FormRow\n key={row.id}\n row={row}\n inputSize={inputSize}\n onChange={onFieldChange}\n />\n ))}\n\n {/* Footer Section */}\n {showFooter && (\n <div\n className=\"flex items-center justify-end w-full overflow-hidden\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n <Button variant=\"outline\" size=\"default\" onClick={onCancel}>\n {cancelButtonText}\n </Button>\n <Button variant=\"primary\" size=\"default\" onClick={onSave}>\n {saveButtonText}\n </Button>\n </div>\n )}\n </div>\n );\n}\n\n// Export sub-components for advanced usage\nexport { FormField, FormRow };\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport { ChevronLeft, ChevronRight, ArrowRight } from \"lucide-react\";\nimport {\n format,\n startOfMonth,\n endOfMonth,\n startOfWeek,\n endOfWeek,\n addDays,\n addMonths,\n subMonths,\n isSameMonth,\n isSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n} from \"date-fns\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PricedDate {\n date: Date;\n price: string;\n}\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface MonthlyCalendarWidgetProps {\n /** Widget title */\n title?: string;\n /** Widget subtitle */\n subtitle?: string;\n /** Initial month to display (defaults to current month) */\n initialMonth?: Date;\n /** Currently selected date range */\n selectedRange?: DateRange;\n /** Array of dates that should be disabled/unavailable */\n disabledDates?: Date[];\n /** Array of dates with prices to display */\n pricedDates?: PricedDate[];\n /** Override for \"today\" (useful for demos) */\n todayDate?: Date;\n /** Callback when a date is selected */\n onDateSelect?: (date: Date) => void;\n /** Callback when the date range changes */\n onRangeChange?: (range: DateRange) => void;\n /** Callback when Confirm button is clicked */\n onConfirm?: () => void;\n /** Callback when Cancel button is clicked */\n onCancel?: () => void;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\nfunction isDateDisabled(date: Date, disabledDates: Date[]): boolean {\n return disabledDates.some((d) => isSameDay(d, date));\n}\n\nfunction isDateInRange(date: Date, range: DateRange): boolean {\n if (!range.start || !range.end) return false;\n return isWithinInterval(date, { start: range.start, end: range.end });\n}\n\nfunction isRangeStart(date: Date, range: DateRange): boolean {\n return range.start ? isSameDay(date, range.start) : false;\n}\n\nfunction isRangeEnd(date: Date, range: DateRange): boolean {\n return range.end ? isSameDay(date, range.end) : false;\n}\n\nfunction getDatePrice(date: Date, pricedDates: PricedDate[]): string | null {\n const priced = pricedDates.find((p) => isSameDay(p.date, date));\n return priced ? priced.price : null;\n}\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface DateCellProps {\n date: Date;\n currentMonth: Date;\n today: Date;\n selectedRange: DateRange;\n disabledDates: Date[];\n pricedDates: PricedDate[];\n onSelect: (date: Date) => void;\n}\n\nfunction DateCell({\n date,\n currentMonth,\n today,\n selectedRange,\n disabledDates,\n pricedDates,\n onSelect,\n}: DateCellProps) {\n const isCurrentMonth = isSameMonth(date, currentMonth);\n const isToday = isSameDay(date, today);\n const isDisabled = isDateDisabled(date, disabledDates);\n const isInRange = isDateInRange(date, selectedRange);\n const isStart = isRangeStart(date, selectedRange);\n const isEnd = isRangeEnd(date, selectedRange);\n const isSelected = isStart || isEnd;\n const price = getDatePrice(date, pricedDates);\n\n // Determine if this is a past date (before today, should show as disabled)\n const isPast = isBefore(date, today) && !isSameDay(date, today);\n\n // Don't render dates from other months\n if (!isCurrentMonth) {\n return (\n <div className=\"flex justify-center items-center\">\n <div className=\"size-12\" />\n </div>\n );\n }\n\n const handleClick = () => {\n if (!isDisabled && !isPast) {\n onSelect(date);\n }\n };\n\n // Determine styling based on state\n let bgColor = \"transparent\";\n let textColor = \"var(--canvas-text-placeholder)\";\n let showStrikethrough = false;\n let priceTextColor = \"var(--canvas-text)\";\n\n if (isDisabled || isPast) {\n textColor = \"var(--canvas-border-disabled)\";\n showStrikethrough = true;\n } else if (isSelected) {\n bgColor = \"var(--canvas-primary)\";\n textColor = \"var(--canvas-primary-foreground)\";\n priceTextColor = \"var(--canvas-primary-foreground)\";\n } else if (isInRange) {\n bgColor = \"var(--canvas-surface-brand)\";\n textColor = \"var(--canvas-primary)\";\n }\n\n return (\n <div className=\"flex justify-center items-center\">\n <button\n type=\"button\"\n onClick={handleClick}\n disabled={isDisabled || isPast}\n className={cn(\n \"relative flex flex-col items-center justify-center rounded-full size-12 transition-colors\",\n !isDisabled && !isPast && \"hover:bg-[var(--canvas-surface)] cursor-pointer\",\n (isDisabled || isPast) && \"cursor-not-allowed\"\n )}\n style={{\n backgroundColor: bgColor,\n }}\n >\n {/* Today indicator */}\n {isToday && !isSelected && (\n <div\n className=\"absolute top-1.5 rounded-full\"\n style={{\n width: \"var(--spacing-sm)\",\n height: \"var(--spacing-sm)\",\n backgroundColor: \"var(--canvas-primary)\",\n }}\n />\n )}\n\n {/* Date number */}\n <span\n className={cn(\n \"font-semibold text-base leading-6\",\n showStrikethrough && \"line-through\"\n )}\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n color: textColor,\n }}\n >\n {format(date, \"d\")}\n </span>\n\n {/* Price label */}\n {price && !isDisabled && !isPast && (\n <span\n className=\"absolute text-[6px] font-normal\"\n style={{\n bottom: \"4px\",\n color: priceTextColor,\n fontFamily: \"var(--typo-body-xs-font, var(--typo-global-font))\",\n }}\n >\n {price}\n </span>\n )}\n </button>\n </div>\n );\n}\n\ninterface MonthCalendarProps {\n month: Date;\n today: Date;\n selectedRange: DateRange;\n disabledDates: Date[];\n pricedDates: PricedDate[];\n onDateSelect: (date: Date) => void;\n onPrevMonth?: () => void;\n onNextMonth?: () => void;\n showPrevArrow?: boolean;\n showNextArrow?: boolean;\n}\n\nfunction MonthCalendar({\n month,\n today,\n selectedRange,\n disabledDates,\n pricedDates,\n onDateSelect,\n onPrevMonth,\n onNextMonth,\n showPrevArrow = false,\n showNextArrow = false,\n}: MonthCalendarProps) {\n const dayHeaders = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\n // Generate calendar grid\n const monthStart = startOfMonth(month);\n const monthEnd = endOfMonth(month);\n const calendarStart = startOfWeek(monthStart, { weekStartsOn: 0 });\n const calendarEnd = endOfWeek(monthEnd, { weekStartsOn: 0 });\n\n const weeks: Date[][] = [];\n let currentDate = calendarStart;\n\n while (currentDate <= calendarEnd) {\n const week: Date[] = [];\n for (let i = 0; i < 7; i++) {\n week.push(currentDate);\n currentDate = addDays(currentDate, 1);\n }\n weeks.push(week);\n }\n\n return (\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-lg)\", minWidth: \"336px\" }}\n >\n {/* Month Header */}\n <div\n className=\"flex items-center justify-center\"\n style={{\n paddingLeft: showPrevArrow ? \"0\" : \"var(--spacing-4xl)\",\n paddingRight: showNextArrow ? \"0\" : \"var(--spacing-4xl)\",\n }}\n >\n {showPrevArrow && (\n <button\n type=\"button\"\n onClick={onPrevMonth}\n className=\"size-8 flex items-center justify-center hover:bg-[var(--canvas-surface)] rounded-md transition-colors shrink-0\"\n >\n <ChevronLeft\n className=\"size-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n )}\n <span\n className=\"flex-1 text-center font-medium\"\n style={{\n fontFamily: \"var(--typo-body-xl-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-xl-size)\",\n lineHeight: \"30px\",\n color: \"var(--canvas-text)\",\n }}\n >\n {format(month, \"MMMM\")}\n </span>\n {showNextArrow && (\n <button\n type=\"button\"\n onClick={onNextMonth}\n className=\"size-8 flex items-center justify-center hover:bg-[var(--canvas-surface)] rounded-md transition-colors shrink-0\"\n >\n <ChevronRight\n className=\"size-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n </button>\n )}\n </div>\n\n {/* Day Headers */}\n <div\n className=\"grid grid-cols-7\"\n style={{\n paddingLeft: showPrevArrow ? \"0\" : \"var(--spacing-4xl)\",\n paddingRight: showNextArrow ? \"0\" : \"var(--spacing-4xl)\",\n }}\n >\n {dayHeaders.map((day) => (\n <div\n key={day}\n className=\"text-center\"\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n lineHeight: \"20px\",\n color: \"var(--canvas-text-muted)\",\n }}\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Week Rows */}\n {weeks.map((week, weekIndex) => (\n <div\n key={weekIndex}\n className=\"grid grid-cols-7\"\n style={{\n paddingLeft: showPrevArrow ? \"0\" : \"var(--spacing-4xl)\",\n paddingRight: showNextArrow ? \"0\" : \"var(--spacing-4xl)\",\n paddingTop: \"var(--spacing-md)\",\n paddingBottom: \"var(--spacing-md)\",\n }}\n >\n {week.map((date, dateIndex) => (\n <DateCell\n key={dateIndex}\n date={date}\n currentMonth={month}\n today={today}\n selectedRange={selectedRange}\n disabledDates={disabledDates}\n pricedDates={pricedDates}\n onSelect={onDateSelect}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Monthly Calendar Widget Block\n *\n * A dual-month calendar widget for date range selection with support for\n * disabled dates, price labels, and today indicator. Commonly used for\n * booking and scheduling interfaces.\n *\n * @example\n * ```tsx\n * <MonthlyCalendarWidget\n * title=\"Browse availability\"\n * subtitle=\"Book your stay\"\n * onRangeChange={(range) => console.log(range)}\n * onConfirm={() => console.log(\"Confirmed\")}\n * />\n * ```\n */\nexport function MonthlyCalendarWidget({\n title = \"Browse availability\",\n subtitle = \"Book your stay\",\n initialMonth,\n selectedRange: controlledRange,\n disabledDates = [],\n pricedDates = [],\n todayDate,\n onDateSelect,\n onRangeChange,\n onConfirm,\n onCancel,\n className,\n}: MonthlyCalendarWidgetProps) {\n const today = todayDate || new Date();\n const [currentMonth, setCurrentMonth] = useState<Date>(\n initialMonth || startOfMonth(today)\n );\n const [internalRange, setInternalRange] = useState<DateRange>({\n start: null,\n end: null,\n });\n\n const selectedRange = controlledRange ?? internalRange;\n const nextMonth = addMonths(currentMonth, 1);\n\n const handleDateSelect = (date: Date) => {\n onDateSelect?.(date);\n\n let newRange: DateRange;\n\n if (!selectedRange.start || (selectedRange.start && selectedRange.end)) {\n // Start new selection\n newRange = { start: date, end: null };\n } else {\n // Complete the selection\n if (isBefore(date, selectedRange.start)) {\n newRange = { start: date, end: selectedRange.start };\n } else {\n newRange = { start: selectedRange.start, end: date };\n }\n }\n\n if (!controlledRange) {\n setInternalRange(newRange);\n }\n onRangeChange?.(newRange);\n };\n\n const handlePrevMonth = () => {\n setCurrentMonth((prev) => subMonths(prev, 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth((prev) => addMonths(prev, 1));\n };\n\n const formatInputDate = (date: Date | null): string => {\n if (!date) return \"\";\n return format(date, \"MMM d, yyyy\");\n };\n\n return (\n <div\n className={cn(\"flex flex-col w-full\", className)}\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n {/* Title Section */}\n <div\n className=\"flex flex-wrap items-start w-full\"\n style={{ gap: \"var(--spacing-xl)\" }}\n >\n <div\n className=\"flex flex-col flex-1 min-w-[200px]\"\n style={{ gap: \"var(--spacing-xs)\" }}\n >\n <h2\n style={{\n fontFamily: \"var(--typo-h6-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-h6-size)\",\n fontWeight: \"var(--typo-h6-weight)\",\n letterSpacing: \"var(--typo-h6-spacing)\",\n lineHeight: \"var(--typo-h6-line-height)\",\n color: \"var(--canvas-text)\",\n margin: 0,\n }}\n >\n {title}\n </h2>\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"var(--typo-body-s-line-height)\",\n color: \"var(--canvas-text-muted)\",\n margin: 0,\n }}\n >\n {subtitle}\n </p>\n </div>\n </div>\n\n {/* Calendar Content */}\n <div\n className=\"flex flex-col w-full\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n {/* Dual Month Grid */}\n <div className=\"flex items-start justify-between w-full gap-4 overflow-x-auto\">\n <MonthCalendar\n month={currentMonth}\n today={today}\n selectedRange={selectedRange}\n disabledDates={disabledDates}\n pricedDates={pricedDates}\n onDateSelect={handleDateSelect}\n onPrevMonth={handlePrevMonth}\n showPrevArrow={true}\n showNextArrow={false}\n />\n <MonthCalendar\n month={nextMonth}\n today={today}\n selectedRange={selectedRange}\n disabledDates={disabledDates}\n pricedDates={pricedDates}\n onDateSelect={handleDateSelect}\n onNextMonth={handleNextMonth}\n showPrevArrow={false}\n showNextArrow={true}\n />\n </div>\n\n {/* Footer Section */}\n <div className=\"flex items-start justify-between w-full\">\n {/* Date Inputs */}\n <div\n className=\"flex items-center justify-center\"\n style={{ gap: \"var(--spacing-md)\", width: \"286px\" }}\n >\n {/* Start Date Input */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-xs)\", width: \"128px\" }}\n >\n <div\n className=\"flex items-center h-11 rounded\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-xs)\",\n paddingLeft: \"var(--spacing-xl)\",\n paddingRight: \"var(--spacing-xl)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"24px\",\n color: selectedRange.start\n ? \"var(--canvas-text)\"\n : \"var(--canvas-text-placeholder)\",\n }}\n >\n {selectedRange.start\n ? formatInputDate(selectedRange.start)\n : \"Start date\"}\n </span>\n </div>\n </div>\n\n {/* Arrow */}\n <ArrowRight\n className=\"size-5 shrink-0\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n\n {/* End Date Input */}\n <div\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-xs)\", width: \"128px\" }}\n >\n <div\n className=\"flex items-center h-11 rounded\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-xs)\",\n paddingLeft: \"var(--spacing-xl)\",\n paddingRight: \"var(--spacing-xl)\",\n boxShadow: \"0px 1px 2px 0px rgba(0,0,0,0.02)\",\n }}\n >\n <span\n style={{\n fontFamily: \"var(--typo-body-s-font, var(--typo-global-font))\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: \"var(--typo-body-s-weight)\",\n lineHeight: \"24px\",\n color: selectedRange.end\n ? \"var(--canvas-text)\"\n : \"var(--canvas-text-placeholder)\",\n }}\n >\n {selectedRange.end\n ? formatInputDate(selectedRange.end)\n : \"End date\"}\n </span>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n <div\n className=\"flex items-center justify-center\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n <Button variant=\"outline\" size=\"lg\" onClick={onCancel}>\n Cancel\n </Button>\n <Button variant=\"primary\" size=\"lg\" onClick={onConfirm}>\n Confirm\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { useIsMobile } from \"../../hooks/use-mobile\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n MoreHorizontal,\n} from \"lucide-react\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\n\n// ============================================\n// Types\n// ============================================\n\nexport interface PaginationProps {\n /** Current active page (1-indexed) */\n currentPage?: number;\n /** Total number of pages */\n totalPages?: number;\n /** Total number of items (for results text) */\n totalItems?: number;\n /** Items displayed per page */\n itemsPerPage?: number;\n /** Available items per page options */\n itemsPerPageOptions?: number[];\n /** Callback when page changes */\n onPageChange?: (page: number) => void;\n /** Callback when items per page changes */\n onItemsPerPageChange?: (itemsPerPage: number) => void;\n /** Show \"Viewing X-Y of Z results\" text (desktop only) */\n showResultsText?: boolean;\n /** Show \"Show per page\" dropdown (desktop only) */\n showItemsPerPage?: boolean;\n /** Maximum number of visible page buttons on desktop */\n maxVisiblePages?: number;\n /** Maximum number of visible page buttons on mobile (default: 3) */\n mobileMaxVisiblePages?: number;\n /** Force compact mode (fewer visible pages) regardless of viewport */\n compact?: boolean;\n /** Additional class names */\n className?: string;\n}\n\n// ============================================\n// Sub-components\n// ============================================\n\ninterface PaginationButtonProps {\n page: number;\n isSelected?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\n/**\n * Individual page number button\n */\nfunction PaginationButton({\n page,\n isSelected = false,\n onClick,\n className,\n}: PaginationButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"flex items-center justify-center shrink-0 transition-colors\",\n \"font-semibold text-[14px] leading-[20px]\",\n \"size-[32px] rounded-[var(--radius-xs)]\",\n \"border bg-[var(--canvas-background)]\",\n isSelected\n ? \"border-[var(--canvas-primary)] text-[var(--canvas-primary)]\"\n : \"border-[var(--canvas-border)] text-[var(--canvas-text)] hover:bg-[var(--canvas-surface)]\",\n className\n )}\n aria-current={isSelected ? \"page\" : undefined}\n >\n {page}\n </button>\n );\n}\n\ninterface NavigationButtonProps {\n type: \"first\" | \"prev\" | \"next\" | \"last\";\n disabled?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\n/**\n * Navigation button (First, Prev, Next, Last)\n */\nfunction NavigationButton({\n type,\n disabled = false,\n onClick,\n className,\n}: NavigationButtonProps) {\n const Icon = {\n first: ChevronsLeft,\n prev: ChevronLeft,\n next: ChevronRight,\n last: ChevronsRight,\n }[type];\n\n const label = {\n first: null,\n prev: \"Prev\",\n next: \"Next\",\n last: null,\n }[type];\n\n const isIconOnly = type === \"first\" || type === \"last\";\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n className={cn(\n \"flex items-center justify-center shrink-0 transition-colors\",\n \"h-[32px] rounded-[var(--radius-xs)]\",\n \"border bg-[var(--canvas-background)] border-[var(--canvas-border)]\",\n isIconOnly ? \"w-[32px]\" : \"px-[var(--spacing-md)] gap-[var(--spacing-xs)]\",\n disabled\n ? \"text-[var(--canvas-text-placeholder)] cursor-not-allowed\"\n : \"text-[var(--canvas-text)] hover:bg-[var(--canvas-surface)]\",\n className\n )}\n aria-label={type}\n >\n {(type === \"first\" || type === \"prev\") && (\n <Icon className=\"size-[20px]\" />\n )}\n {label && (\n <span className=\"font-semibold text-[14px] leading-[20px]\">{label}</span>\n )}\n {(type === \"next\" || type === \"last\") && (\n <Icon className=\"size-[20px]\" />\n )}\n </button>\n );\n}\n\n/**\n * Ellipsis indicator for truncated pages\n */\nfunction PaginationEllipsis({ className }: { className?: string }) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center\",\n \"w-[24px] h-[32px] rounded-[var(--radius-xs)]\",\n className\n )}\n aria-hidden=\"true\"\n >\n <MoreHorizontal className=\"size-[20px] text-[var(--canvas-text-muted)]\" />\n </div>\n );\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\n/**\n * Generate array of page numbers to display with ellipsis\n */\nfunction generatePageNumbers(\n currentPage: number,\n totalPages: number,\n maxVisible: number\n): (number | \"ellipsis\")[] {\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages: (number | \"ellipsis\")[] = [];\n const halfVisible = Math.floor((maxVisible - 2) / 2);\n\n // Always show first page\n pages.push(1);\n\n // Calculate start and end of visible range\n let start = Math.max(2, currentPage - halfVisible);\n let end = Math.min(totalPages - 1, currentPage + halfVisible);\n\n // Adjust if we're near the start\n if (currentPage <= halfVisible + 2) {\n end = Math.min(totalPages - 1, maxVisible - 1);\n start = 2;\n }\n\n // Adjust if we're near the end\n if (currentPage >= totalPages - halfVisible - 1) {\n start = Math.max(2, totalPages - maxVisible + 2);\n end = totalPages - 1;\n }\n\n // Add ellipsis before middle section if needed\n if (start > 2) {\n pages.push(\"ellipsis\");\n }\n\n // Add middle pages\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n // Add ellipsis after middle section if needed\n if (end < totalPages - 1) {\n pages.push(\"ellipsis\");\n }\n\n // Always show last page\n if (totalPages > 1) {\n pages.push(totalPages);\n }\n\n return pages;\n}\n\n/**\n * Format number with commas (e.g., 2500 -> 2,500)\n */\nfunction formatNumber(num: number): string {\n return num.toLocaleString();\n}\n\n// ============================================\n// Main Component\n// ============================================\n\n/**\n * Canvas Design System - Pagination Component\n *\n * A responsive pagination component with results text, items per page dropdown,\n * and page navigation. Automatically adjusts layout for mobile screens.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Pagination\n * currentPage={1}\n * totalPages={10}\n * onPageChange={(page) => setPage(page)}\n * />\n *\n * // With all features\n * <Pagination\n * currentPage={1}\n * totalPages={50}\n * totalItems={2500}\n * itemsPerPage={50}\n * itemsPerPageOptions={[30, 50, 100]}\n * showResultsText\n * showItemsPerPage\n * onPageChange={(page) => setPage(page)}\n * onItemsPerPageChange={(perPage) => setPerPage(perPage)}\n * />\n * ```\n */\nexport function Pagination({\n currentPage = 1,\n totalPages = 10,\n totalItems = 2500,\n itemsPerPage = 50,\n itemsPerPageOptions = [30, 50, 100],\n onPageChange,\n onItemsPerPageChange,\n showResultsText = true,\n showItemsPerPage = true,\n maxVisiblePages = 5,\n mobileMaxVisiblePages = 3,\n compact = false,\n className,\n}: PaginationProps) {\n const isMobile = useIsMobile();\n \n // Use fewer visible pages on mobile or when compact mode is forced\n const effectiveMaxVisiblePages = (isMobile || compact) ? mobileMaxVisiblePages : maxVisiblePages;\n \n // Calculate visible page range\n const pageNumbers = useMemo(\n () => generatePageNumbers(currentPage, totalPages, effectiveMaxVisiblePages),\n [currentPage, totalPages, effectiveMaxVisiblePages]\n );\n\n // Calculate results range\n const startItem = (currentPage - 1) * itemsPerPage + 1;\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\n\n // Navigation handlers\n const goToPage = (page: number) => {\n if (page >= 1 && page <= totalPages && page !== currentPage) {\n onPageChange?.(page);\n }\n };\n\n const goToFirst = () => goToPage(1);\n const goToPrev = () => goToPage(currentPage - 1);\n const goToNext = () => goToPage(currentPage + 1);\n const goToLast = () => goToPage(totalPages);\n\n const isFirstPage = currentPage === 1;\n const isLastPage = currentPage === totalPages;\n\n return (\n <div\n className={cn(\n \"flex items-center justify-between\",\n \"h-[56px] py-[var(--spacing-lg)]\",\n \"w-full\",\n className\n )}\n >\n {/* Left section: Results text & Items per page (desktop only) */}\n <div className=\"hidden md:flex items-center gap-[var(--spacing-2xl)]\">\n {/* Results text */}\n {showResultsText && (\n <span\n className=\"text-[14px] leading-[20px] text-[var(--canvas-text)] whitespace-nowrap\"\n style={{ fontFamily: \"var(--typo-global-font)\" }}\n >\n Viewing {formatNumber(startItem)}–{formatNumber(endItem)} of{\" \"}\n {formatNumber(totalItems)} results\n </span>\n )}\n\n {/* Items per page dropdown */}\n {showItemsPerPage && (\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n <span\n className=\"text-[14px] leading-[20px] text-[var(--canvas-text)] whitespace-nowrap\"\n style={{ fontFamily: \"var(--typo-global-font)\" }}\n >\n Show per page\n </span>\n <Select\n value={String(itemsPerPage)}\n onValueChange={(value) => onItemsPerPageChange?.(Number(value))}\n >\n <SelectTrigger\n inputSize=\"sm\"\n className=\"w-[70px]\"\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent position=\"popper\" side=\"bottom\" sideOffset={4}>\n {itemsPerPageOptions.map((option) => (\n <SelectItem key={option} value={String(option)}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n {/* Right section: Navigation (always visible, centered on mobile) */}\n <div className=\"flex items-center gap-[var(--spacing-sm)] mx-auto md:mx-0\">\n {/* First & Prev buttons */}\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n {!compact && (\n <NavigationButton\n type=\"first\"\n disabled={isFirstPage}\n onClick={goToFirst}\n />\n )}\n <NavigationButton\n type=\"prev\"\n disabled={isFirstPage}\n onClick={goToPrev}\n />\n </div>\n\n {/* Page numbers */}\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n {pageNumbers.map((item, index) =>\n item === \"ellipsis\" ? (\n <PaginationEllipsis key={`ellipsis-${index}`} />\n ) : (\n <PaginationButton\n key={item}\n page={item}\n isSelected={item === currentPage}\n onClick={() => goToPage(item)}\n />\n )\n )}\n </div>\n\n {/* Next & Last buttons */}\n <div className=\"flex items-center gap-[var(--spacing-sm)]\">\n <NavigationButton\n type=\"next\"\n disabled={isLastPage}\n onClick={goToNext}\n />\n {!compact && (\n <NavigationButton\n type=\"last\"\n disabled={isLastPage}\n onClick={goToLast}\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, Copy, Sparkles } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\n// ═══════════════════════════════════════════════════════════\n// PROMPT TEMPLATE - Main copyable prompt block\n// ═══════════════════════════════════════════════════════════\n\ninterface PromptTemplateProps {\n prompt: string;\n title?: string;\n className?: string;\n}\n\nexport function PromptTemplate({ \n prompt, \n title = \"Generate with Cursor\",\n className \n}: PromptTemplateProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(prompt);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <div\n className={cn(\n \"relative rounded-lg border border-dashed\",\n \"border-[var(--canvas-border)] bg-[var(--canvas-surface)]\",\n \"p-4\",\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]\">\n <Sparkles className=\"size-4 text-[var(--canvas-primary)]\" />\n {title}\n </div>\n <button\n onClick={handleCopy}\n className={cn(\n \"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all\",\n copied\n ? \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"size-3\" />\n Copied!\n </>\n ) : (\n <>\n <Copy className=\"size-3\" />\n Copy prompt\n </>\n )}\n </button>\n </div>\n\n {/* Prompt text */}\n <pre className=\"text-sm text-[var(--canvas-text)] leading-relaxed font-mono whitespace-pre-wrap bg-[var(--canvas-background)] rounded-md p-3 border border-[var(--canvas-border)] max-h-[300px] overflow-y-auto\">\n {prompt}\n </pre>\n </div>\n );\n}\n\n// ═══════════════════════════════════════════════════════════\n// MINI PROMPT CHIP - Small copyable prompt button\n// ═══════════════════════════════════════════════════════════\n\ninterface MiniPromptChipProps {\n label: string;\n prompt: string;\n}\n\nexport function MiniPromptChip({ label, prompt }: MiniPromptChipProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(prompt);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <button\n onClick={handleCopy}\n className={cn(\n \"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-medium transition-all\",\n copied\n ? \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)] hover:bg-[var(--canvas-surface-hover)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)]\"\n )}\n title={`Copy: ${prompt.slice(0, 100)}...`}\n >\n {copied ? <Check className=\"size-3\" /> : <Copy className=\"size-3\" />}\n {copied ? \"Copied!\" : label}\n </button>\n );\n}\n\n// ═══════════════════════════════════════════════════════════\n// PROMPT CHIPS ROW - Group of mini prompts\n// ═══════════════════════════════════════════════════════════\n\ninterface PromptChip {\n label: string;\n prompt: string;\n}\n\ninterface PromptChipsRowProps {\n chips: PromptChip[];\n label?: string;\n}\n\nexport function PromptChipsRow({ chips, label = \"More prompts:\" }: PromptChipsRowProps) {\n return (\n <div className=\"pt-4 border-t border-[var(--canvas-border)]\">\n <p className=\"text-xs text-[var(--canvas-text-muted)] mb-2 font-medium\">\n {label}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {chips.map((chip) => (\n <MiniPromptChip key={chip.label} label={chip.label} prompt={chip.prompt} />\n ))}\n </div>\n </div>\n );\n}\n","/**\n * Prompt Templates for Cursor AI\n * \n * These prompts are displayed on the Project Context page for users\n * to copy and paste into Cursor to generate project content.\n */\n\nexport const promptTemplates = {\n // ═══════════════════════════════════════════════════════════\n // PERSONAS\n // ═══════════════════════════════════════════════════════════\n personas: {\n generate: `Read src/data/scope.md and generate 3-4 user personas. For each persona, create an object with:\n- id: lowercase slug (e.g., \"sarah-chen\")\n- name: Full name\n- role: Job title or role\n- avatar: Single emoji that represents them\n- goals: Array of 2-3 specific goals\n- painPoints: Array of 2-3 frustrations with current solutions\n- quote: A sentence that captures their mindset\n\nWrite the personas to the personas array in src/data/project-context.ts, following the Persona type from src/types/project.ts.`,\n\n addOne: `Add a new persona to the personas array in src/data/project-context.ts:\n\nRole: [DESCRIBE THE USER ROLE]\n\nGenerate a complete persona object with id, name, role, avatar emoji, goals, painPoints, and a representative quote based on the scope document in src/data/scope.md.`,\n\n refine: `Review the personas in src/data/project-context.ts against the scope document in src/data/scope.md.\n\n1. Are there user types mentioned in the scope that aren't represented?\n2. Are the goals and pain points specific enough?\n3. Do the quotes feel authentic to each role?\n\nSuggest improvements or additional personas if needed.`,\n },\n\n // ═══════════════════════════════════════════════════════════\n // SCREENS - Generate All\n // ═══════════════════════════════════════════════════════════\n screens: {\n generateAll: `Based on src/data/scope.md and the personas in src/data/project-context.ts, create a complete screen flowchart.\n\nGenerate:\n1. All necessary screens (pages, tabs, modals) for the product\n2. Logical connections between screens with action labels\n3. Parent-child relationships for tabs/modals within pages\n\nFor each screen, include:\n- id: lowercase slug\n- name: Display name\n- slug: URL segment\n- type: \"page\" | \"tab\" | \"modal\" | \"drawer\"\n- icon: Emoji that represents the screen\n- parentId: ID of parent screen (null for top-level)\n- position: { x, y } coordinates for flowchart layout (space them 200px apart)\n- status: \"draft\"\n\nWrite to the screens and connections arrays in src/data/project-context.ts.`,\n\n // ═══════════════════════════════════════════════════════════\n // SCREENS - Single Screen\n // ═══════════════════════════════════════════════════════════\n single: `Create a single screen in src/data/project-context.ts:\n\nScreen name: [NAME]\nScreen type: [page / tab / modal / drawer]\nDescription: [What this screen does]\nParent screen (if child): [PARENT_ID or \"none\"]\n\nGenerate the screen object with:\n- id, name, slug, type, icon\n- position: Place it logically near related screens (check existing positions)\n- status: \"draft\"\n- parentId: Set if this is a child screen\n\nIMPORTANT: Each screen MUST have a unique URL route. Create a corresponding page file at src/app/[slug]/page.tsx so the screen is accessible at its own URL. This enables comments to be associated with specific screens.\n\nAlso create any necessary connections to/from existing screens in the connections array.`,\n\n // ═══════════════════════════════════════════════════════════\n // SCREENS - Multi-Screen Flow\n // ═══════════════════════════════════════════════════════════\n flow: `Create a multi-screen flow in src/data/project-context.ts:\n\nFlow name: [NAME, e.g., \"Onboarding\", \"Checkout\", \"Report Builder\"]\nEntry point: [Which existing screen leads to this flow, or \"standalone\"]\nDescription: [What this flow accomplishes]\nPrimary persona: [Which persona is this flow designed for]\n\nGenerate:\n1. All screens needed for this flow (typically 3-6 screens)\n2. Sequential connections with descriptive action labels\n3. Any branch points or alternative paths\n4. Entry connection from existing screen (if not standalone)\n5. Exit connection back to main app flow\n\nIMPORTANT: Each screen MUST have a unique URL route. Create corresponding page files at src/app/[slug]/page.tsx for each screen so they are accessible at their own URLs. This enables comments to be associated with specific screens.\n\nPosition the flow screens in a logical sequence, offset from existing screens.`,\n\n // ═══════════════════════════════════════════════════════════\n // SCREENS - Quick Actions\n // ═══════════════════════════════════════════════════════════\n addChild: `Add a child screen under an existing parent in src/data/project-context.ts:\n\nChild name: [NAME]\nChild type: [tab / modal / drawer]\nParent screen ID: [PARENT_ID]\n\nCreate the screen object with parentId set, and add any necessary connections.`,\n\n connect: `Add a connection between two screens in src/data/project-context.ts:\n\nFrom screen: [SOURCE_ID]\nTo screen: [TARGET_ID]\nAction label: [What triggers this navigation, e.g., \"Click Save\", \"Submit Form\"]\nConnection type: [navigation / modal / redirect / back]`,\n\n reorganize: `Review the screen positions in src/data/project-context.ts and reorganize them for a cleaner flowchart layout.\n\nGuidelines:\n- Group related screens together\n- Maintain clear visual hierarchy (entry points at top)\n- Space screens 200-250px apart\n- Align screens in rows/columns where logical\n- Keep parent screens above their children`,\n },\n\n // ═══════════════════════════════════════════════════════════\n // DESIGN GOALS & TONE\n // ═══════════════════════════════════════════════════════════\n goals: {\n generate: `Based on src/data/scope.md and the personas in src/data/project-context.ts, generate 4-6 design goals that should guide UI/UX decisions.\n\nGood design goals are:\n- Specific and measurable where possible\n- Tied to user needs (reference personas)\n- Actionable for design decisions\n\nExamples:\n- \"Time to first insight under 30 seconds for Sarah's morning check-in\"\n- \"Support keyboard-first workflows for Marcus's efficiency\"\n- \"Executive summaries exportable in 2 clicks for Diana's board meetings\"\n\nWrite to the designGoals array in src/data/project-context.ts.`,\n\n tone: `Based on src/data/scope.md and the target users, suggest 3-5 tone words that should guide visual and content design.\n\nConsider:\n- The industry/domain\n- User expectations\n- Brand positioning\n- Emotional response you want to evoke\n\nExamples: \"professional\", \"playful\", \"minimal\", \"bold\", \"trustworthy\", \"innovative\"\n\nWrite to the tone array in src/data/project-context.ts.`,\n },\n\n // ═══════════════════════════════════════════════════════════\n // GENERAL / META\n // ═══════════════════════════════════════════════════════════\n general: {\n review: `Review src/data/project-context.ts for completeness against src/data/scope.md.\n\nCheck:\n1. Are all user types represented in personas?\n2. Are all features mentioned in scope covered by screens?\n3. Are the user flows logical and complete?\n4. Are design goals specific enough to guide decisions?\n\nList any gaps or inconsistencies found.`,\n\n forPersona: `Looking at the project context in src/data/project-context.ts, suggest specific UI considerations for the [PERSONA_NAME] persona.\n\nConsider their goals, pain points, and quote. What would make this product great for them specifically? Suggest:\n- Key screens they'll use most\n- Features to prioritize in their workflow\n- Potential friction points to address`,\n\n updateName: `Update the project name and description in src/data/project-context.ts based on the scope document in src/data/scope.md.`,\n },\n};\n\n// Type for accessing prompt templates\nexport type PromptCategory = keyof typeof promptTemplates;\nexport type PromptKey<T extends PromptCategory> = keyof typeof promptTemplates[T];\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, Copy, Sparkles, FileBox, GitBranch } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { promptTemplates } from \"../../data/prompt-templates\";\n\ntype ScreenPromptType = \"single\" | \"flow\";\n\nconst promptTypeConfig = {\n single: {\n icon: FileBox,\n label: \"Single Screen\",\n description: \"Add one screen at a time\",\n prompt: promptTemplates.screens.single,\n },\n flow: {\n icon: GitBranch,\n label: \"Screen Flow\",\n description: \"Create a multi-screen user flow\",\n prompt: promptTemplates.screens.flow,\n },\n};\n\nexport function ScreenPromptTemplate() {\n const [promptType, setPromptType] = useState<ScreenPromptType>(\"single\");\n const [copied, setCopied] = useState(false);\n\n const currentConfig = promptTypeConfig[promptType];\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(currentConfig.prompt);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <div className=\"rounded-lg border border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-4\">\n {/* Type Toggle */}\n <div className=\"flex flex-wrap gap-2 mb-4\">\n {(Object.entries(promptTypeConfig) as [ScreenPromptType, (typeof promptTypeConfig)[ScreenPromptType]][]).map(\n ([type, config]) => {\n const Icon = config.icon;\n const isActive = promptType === type;\n \n return (\n <button\n key={type}\n onClick={() => setPromptType(type)}\n className={cn(\n \"flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-all\",\n isActive\n ? \"bg-[var(--canvas-primary)] text-white shadow-sm\"\n : \"bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]\"\n )}\n >\n <Icon className=\"size-4\" />\n {config.label}\n </button>\n );\n }\n )}\n </div>\n\n {/* Description */}\n <p className=\"text-xs text-[var(--canvas-text-muted)] mb-3\">\n {currentConfig.description}\n </p>\n\n {/* Divider */}\n <div className=\"border-t border-[var(--canvas-border)] my-4\" />\n\n {/* Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]\">\n <Sparkles className=\"size-4 text-[var(--canvas-primary)]\" />\n Generate with Cursor\n </div>\n <button\n onClick={handleCopy}\n className={cn(\n \"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all\",\n copied\n ? \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"size-3\" />\n Copied!\n </>\n ) : (\n <>\n <Copy className=\"size-3\" />\n Copy prompt\n </>\n )}\n </button>\n </div>\n\n {/* Prompt text */}\n <pre className=\"text-sm text-[var(--canvas-text)] leading-relaxed font-mono whitespace-pre-wrap bg-[var(--canvas-background)] rounded-md p-3 border border-[var(--canvas-border)] max-h-[300px] overflow-y-auto\">\n {currentConfig.prompt}\n </pre>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { Check, Copy, Sparkles } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ComponentSearch, type ComponentOption } from \"./component-search\";\nimport { projectContext } from \"../../data/project-context\";\n\n// ═══════════════════════════════════════════════════════════\n// TYPES\n// ═══════════════════════════════════════════════════════════\n\ninterface ScreenPromptBuilderProps {\n className?: string;\n}\n\n// ═══════════════════════════════════════════════════════════\n// COMPONENT\n// ═══════════════════════════════════════════════════════════\n\nexport function ScreenPromptBuilder({ className }: ScreenPromptBuilderProps) {\n const [selectedComponents, setSelectedComponents] = useState<ComponentOption[]>([]);\n const [screenName, setScreenName] = useState(\"\");\n const [screenContext, setScreenContext] = useState(\"\");\n const [selectedPersona, setSelectedPersona] = useState(\"\");\n const [copied, setCopied] = useState(false);\n\n const { personas } = projectContext;\n\n // Generate the prompt\n const generatedPrompt = useMemo(() => {\n if (selectedComponents.length === 0 && !screenName && !screenContext) {\n return \"\";\n }\n\n const parts: string[] = [\n \"Please create a plan for the following, then wait for my approval before making changes:\",\n \"\",\n ];\n\n // Context references\n parts.push(\"CONTEXT:\");\n parts.push(\"- Read src/data/scope.md for project scope and requirements\");\n parts.push(\"- Reference src/data/project-context.ts for user personas and project goals\");\n parts.push(\"\");\n\n // Screen info\n const slugName = screenName\n ? screenName.toLowerCase().replace(/\\s+/g, \"-\")\n : \"[screen-name]\";\n parts.push(`Create a new screen at src/app/${slugName}/page.tsx:`);\n parts.push(\"\");\n\n if (screenName) {\n parts.push(`Screen: ${screenName}`);\n }\n\n if (screenContext) {\n parts.push(`Purpose: ${screenContext}`);\n }\n\n if (selectedPersona) {\n const persona = personas.find((p) => p.id === selectedPersona);\n if (persona) {\n parts.push(`Target Persona: ${persona.name} (${persona.role})`);\n parts.push(` - Goals: ${persona.goals.slice(0, 2).join(\", \")}`);\n parts.push(` - Pain Points: ${persona.painPoints.slice(0, 2).join(\", \")}`);\n }\n } else if (personas.length > 0) {\n parts.push(\"\");\n parts.push(\"Consider these user personas when designing:\");\n personas.forEach((p) => {\n parts.push(`- ${p.name} (${p.role}): ${p.goals[0] || \"See project-context.ts for details\"}`);\n });\n }\n\n // Selected components\n if (selectedComponents.length > 0) {\n parts.push(\"\");\n parts.push(\"Use these existing components:\");\n selectedComponents.forEach((c) => {\n parts.push(`- ${c.name} (${c.path}) - ${c.description.slice(0, 60)}${c.description.length > 60 ? \"...\" : \"\"}`);\n });\n }\n\n // Important instructions\n parts.push(\"\");\n parts.push(\"IMPORTANT:\");\n parts.push(\"1. Create a unique URL route for this screen\");\n parts.push(\"2. Use design variables for all styling:\");\n parts.push(\" - Colors: var(--canvas-primary), var(--canvas-background), var(--canvas-text), etc.\");\n parts.push(\" - Spacing: var(--spacing-sm), var(--spacing-md), var(--spacing-lg), etc.\");\n parts.push(\" - Typography: var(--typo-*) tokens\");\n parts.push(\" - Border radius: var(--radius-*) tokens\");\n parts.push(\"3. Follow the patterns in src/lib/component-registry.ts\");\n parts.push(\"4. Ensure the design aligns with the project scope and serves the target personas\");\n\n return parts.join(\"\\n\");\n }, [selectedComponents, screenName, screenContext, selectedPersona, personas]);\n\n const handleCopy = async () => {\n if (!generatedPrompt) return;\n await navigator.clipboard.writeText(generatedPrompt);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n };\n\n const hasContent = selectedComponents.length > 0 || screenName || screenContext;\n\n return (\n <div className={cn(\"space-y-6\", className)}>\n {/* Section Header */}\n <div>\n <h3 className=\"text-lg font-semibold text-[var(--canvas-text)]\">\n Build from Components\n </h3>\n <p className=\"text-sm text-[var(--canvas-text-muted)] mt-1\">\n Select existing components and describe your screen to generate a prompt\n </p>\n </div>\n\n {/* Component Selection */}\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-[var(--canvas-text)]\">\n Select Components\n </label>\n <ComponentSearch\n selectedComponents={selectedComponents}\n onSelectionChange={setSelectedComponents}\n />\n </div>\n\n {/* Screen Name */}\n <div className=\"space-y-2\">\n <label\n htmlFor=\"screen-name\"\n className=\"text-sm font-medium text-[var(--canvas-text)]\"\n >\n Screen Name\n </label>\n <input\n id=\"screen-name\"\n type=\"text\"\n value={screenName}\n onChange={(e) => setScreenName(e.target.value)}\n placeholder=\"e.g., User Dashboard, Order History, Settings\"\n className=\"w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] text-sm placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent\"\n />\n </div>\n\n {/* Screen Context */}\n <div className=\"space-y-2\">\n <label\n htmlFor=\"screen-context\"\n className=\"text-sm font-medium text-[var(--canvas-text)]\"\n >\n Screen Purpose & Context\n </label>\n <textarea\n id=\"screen-context\"\n value={screenContext}\n onChange={(e) => setScreenContext(e.target.value)}\n placeholder=\"Describe what this screen should do, what users will accomplish here, and any specific requirements...\"\n rows={3}\n className=\"w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] text-sm placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent resize-none\"\n />\n </div>\n\n {/* Target Persona (optional) */}\n {personas.length > 0 && (\n <div className=\"space-y-2\">\n <label\n htmlFor=\"persona\"\n className=\"text-sm font-medium text-[var(--canvas-text)]\"\n >\n Target Persona (optional)\n </label>\n <select\n id=\"persona\"\n value={selectedPersona}\n onChange={(e) => setSelectedPersona(e.target.value)}\n className=\"w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] text-sm focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent\"\n >\n <option value=\"\">Select a persona...</option>\n {personas.map((persona) => (\n <option key={persona.id} value={persona.id}>\n {persona.avatar} {persona.name} - {persona.role}\n </option>\n ))}\n </select>\n </div>\n )}\n\n {/* Generated Prompt Preview */}\n {hasContent && (\n <div className=\"rounded-lg border border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]\">\n <Sparkles className=\"size-4 text-[var(--canvas-primary)]\" />\n Generated Prompt\n </div>\n <button\n onClick={handleCopy}\n disabled={!generatedPrompt}\n className={cn(\n \"flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all\",\n copied\n ? \"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400\"\n : \"bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]\"\n )}\n >\n {copied ? (\n <>\n <Check className=\"size-3\" />\n Copied!\n </>\n ) : (\n <>\n <Copy className=\"size-3\" />\n Copy prompt\n </>\n )}\n </button>\n </div>\n\n {/* Prompt Text */}\n <pre className=\"text-sm text-[var(--canvas-text)] leading-relaxed font-mono whitespace-pre-wrap bg-[var(--canvas-background)] rounded-md p-3 border border-[var(--canvas-border)] max-h-[300px] overflow-y-auto\">\n {generatedPrompt}\n </pre>\n </div>\n )}\n\n {/* Empty State */}\n {!hasContent && (\n <div className=\"rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center\">\n <p className=\"text-sm text-[var(--canvas-text-muted)]\">\n Select components or enter screen details to generate a prompt\n </p>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useMemo, useCallback } from \"react\";\nimport ReactFlow, {\n Node,\n Edge,\n Controls,\n Background,\n BackgroundVariant,\n useNodesState,\n useEdgesState,\n Handle,\n Position,\n NodeProps,\n MarkerType,\n} from \"reactflow\";\nimport \"reactflow/dist/style.css\";\nimport { cn } from \"../../lib/utils\";\nimport type { Screen, ScreenConnection } from \"../../types/project\";\nimport { ExternalLink } from \"lucide-react\";\n\n// ═══════════════════════════════════════════════════════════\n// SCREEN NODE - Custom React Flow node\n// ═══════════════════════════════════════════════════════════\n\ninterface ScreenNodeData {\n screen: Screen;\n childScreens: Screen[];\n}\n\nfunction ScreenNode({ data, selected }: NodeProps<ScreenNodeData>) {\n const { screen, childScreens } = data;\n const hasChildren = childScreens.length > 0;\n\n const statusColors = {\n draft: \"bg-yellow-100 text-yellow-700 border-yellow-200\",\n review: \"bg-blue-100 text-blue-700 border-blue-200\",\n approved: \"bg-green-100 text-green-700 border-green-200\",\n };\n\n const typeLabels = {\n page: null,\n tab: \"Tab\",\n modal: \"Modal\",\n drawer: \"Drawer\",\n state: \"State\",\n };\n\n return (\n <div\n className={cn(\n \"rounded-lg border-2 bg-white shadow-sm min-w-[160px]\",\n selected\n ? \"border-[var(--canvas-primary)] shadow-md\"\n : \"border-[var(--canvas-border)]\"\n )}\n >\n {/* Input handle */}\n <Handle\n type=\"target\"\n position={Position.Top}\n className=\"!w-3 !h-3 !bg-[var(--canvas-primary)] !border-2 !border-white\"\n />\n\n {/* Main content */}\n <div className=\"p-3\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"text-lg\">{screen.icon || \"📄\"}</span>\n <span className=\"font-medium text-sm text-[var(--canvas-text)] truncate\">\n {screen.name}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-[var(--canvas-text-muted)] font-mono\">\n /{screen.slug}\n </span>\n {typeLabels[screen.type] && (\n <span className=\"text-[10px] px-1.5 py-0.5 rounded bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]\">\n {typeLabels[screen.type]}\n </span>\n )}\n </div>\n\n {/* Status badge */}\n <div className=\"flex items-center justify-between mt-2 pt-2 border-t border-[var(--canvas-border)]\">\n <span\n className={cn(\n \"text-[10px] px-1.5 py-0.5 rounded border font-medium capitalize\",\n statusColors[screen.status]\n )}\n >\n {screen.status}\n </span>\n </div>\n </div>\n\n {/* Children list */}\n {hasChildren && (\n <div className=\"border-t border-[var(--canvas-border)]\">\n {childScreens.map((child, i) => (\n <div\n key={child.id}\n className={cn(\n \"px-3 py-2 flex items-center gap-2 text-xs\",\n \"hover:bg-[var(--canvas-surface)]\",\n i < childScreens.length - 1 && \"border-b border-[var(--canvas-border)]\"\n )}\n >\n <span className=\"text-[var(--canvas-text-muted)]\">\n {child.type === \"modal\" && \"◻️\"}\n {child.type === \"tab\" && \"📑\"}\n {child.type === \"drawer\" && \"📥\"}\n {child.type === \"state\" && \"🔄\"}\n </span>\n <span className=\"text-[var(--canvas-text)] truncate\">\n {child.name}\n </span>\n <span className=\"text-[var(--canvas-text-muted)] font-mono ml-auto\">\n /{child.slug}\n </span>\n </div>\n ))}\n </div>\n )}\n\n {/* Output handle */}\n <Handle\n type=\"source\"\n position={Position.Bottom}\n className=\"!w-3 !h-3 !bg-[var(--canvas-primary)] !border-2 !border-white\"\n />\n\n {/* Right handle for branching */}\n <Handle\n type=\"source\"\n position={Position.Right}\n id=\"right\"\n className=\"!w-3 !h-3 !bg-[var(--canvas-text-muted)] !border-2 !border-white\"\n />\n </div>\n );\n}\n\n// ═══════════════════════════════════════════════════════════\n// NODE TYPES\n// ═══════════════════════════════════════════════════════════\n\nconst nodeTypes = {\n screen: ScreenNode,\n};\n\n// ═══════════════════════════════════════════════════════════\n// SCREEN FLOWCHART\n// ═══════════════════════════════════════════════════════════\n\ninterface ScreenFlowchartProps {\n screens: Screen[];\n connections: ScreenConnection[];\n className?: string;\n onOpenFullscreen?: () => void;\n}\n\nexport function ScreenFlowchart({\n screens,\n connections,\n className,\n onOpenFullscreen,\n}: ScreenFlowchartProps) {\n // Transform screens to React Flow nodes\n const initialNodes = useMemo(() => {\n // Only show top-level screens (no parentId)\n const topLevelScreens = screens.filter((s) => !s.parentId);\n\n return topLevelScreens.map((screen) => ({\n id: screen.id,\n type: \"screen\",\n position: screen.position,\n data: {\n screen,\n childScreens: screens.filter((s) => s.parentId === screen.id),\n },\n }));\n }, [screens]);\n\n // Transform connections to React Flow edges\n const initialEdges = useMemo(() => {\n return connections.map((conn) => ({\n id: conn.id,\n source: conn.sourceId,\n target: conn.targetId,\n label: conn.label,\n type: \"smoothstep\",\n animated: conn.type === \"redirect\",\n style: { stroke: \"var(--canvas-primary)\", strokeWidth: 2 },\n labelStyle: { \n fill: \"var(--canvas-text-muted)\", \n fontSize: 11,\n fontWeight: 500,\n },\n labelBgStyle: { \n fill: \"var(--canvas-background)\", \n fillOpacity: 0.9,\n },\n labelBgPadding: [4, 2] as [number, number],\n labelBgBorderRadius: 4,\n markerEnd: {\n type: MarkerType.ArrowClosed,\n color: \"var(--canvas-primary)\",\n },\n }));\n }, [connections]);\n\n const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);\n\n if (screens.length === 0) {\n return null;\n }\n\n return (\n <div className={cn(\"relative\", className)}>\n {/* Fullscreen button */}\n {onOpenFullscreen && (\n <button\n onClick={onOpenFullscreen}\n className=\"absolute top-3 right-3 z-10 flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)] transition-colors\"\n >\n <ExternalLink className=\"size-3\" />\n Open in new tab\n </button>\n )}\n\n <ReactFlow\n nodes={nodes}\n edges={edges}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n nodeTypes={nodeTypes}\n fitView\n fitViewOptions={{ padding: 0.2 }}\n minZoom={0.25}\n maxZoom={2}\n className=\"bg-[var(--canvas-surface)] rounded-lg border border-[var(--canvas-border)]\"\n >\n <Background variant={BackgroundVariant.Dots} gap={20} size={1} />\n <Controls className=\"!bg-white !border-[var(--canvas-border)] !shadow-sm\" />\n </ReactFlow>\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport type { Persona } from \"../../types/project\";\nimport { Target, AlertCircle, Quote } from \"lucide-react\";\n\ninterface PersonaCardProps {\n persona: Persona;\n className?: string;\n}\n\nexport function PersonaCard({ persona, className }: PersonaCardProps) {\n return (\n <div\n className={cn(\n \"rounded-xl border border-[var(--canvas-border)] bg-[var(--canvas-background)]\",\n \"p-5 hover:shadow-md transition-shadow\",\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-start gap-3 mb-4\">\n <div className=\"text-3xl\">{persona.avatar || \"👤\"}</div>\n <div>\n <h3 className=\"font-semibold text-[var(--canvas-text)]\">\n {persona.name}\n </h3>\n <p className=\"text-sm text-[var(--canvas-text-muted)]\">\n {persona.role}\n </p>\n </div>\n </div>\n\n {/* Goals */}\n <div className=\"mb-4\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-[var(--canvas-text-muted)] mb-2\">\n <Target className=\"size-3\" />\n Goals\n </div>\n <ul className=\"space-y-1\">\n {persona.goals.map((goal, i) => (\n <li\n key={i}\n className=\"text-sm text-[var(--canvas-text)] flex items-start gap-2\"\n >\n <span className=\"text-[var(--canvas-primary)] mt-1.5\">•</span>\n {goal}\n </li>\n ))}\n </ul>\n </div>\n\n {/* Pain Points */}\n <div className=\"mb-4\">\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-[var(--canvas-text-muted)] mb-2\">\n <AlertCircle className=\"size-3\" />\n Pain Points\n </div>\n <ul className=\"space-y-1\">\n {persona.painPoints.map((point, i) => (\n <li\n key={i}\n className=\"text-sm text-[var(--canvas-text)] flex items-start gap-2\"\n >\n <span className=\"text-red-500 mt-1.5\">•</span>\n {point}\n </li>\n ))}\n </ul>\n </div>\n\n {/* Quote */}\n <div className=\"border-t border-[var(--canvas-border)] pt-4 mt-4\">\n <div className=\"flex items-start gap-2\">\n <Quote className=\"size-4 text-[var(--canvas-text-muted)] shrink-0 mt-0.5\" />\n <p className=\"text-sm italic text-[var(--canvas-text-muted)]\">\n \"{persona.quote}\"\n </p>\n </div>\n </div>\n </div>\n );\n}\n\n// ═══════════════════════════════════════════════════════════\n// PERSONA GRID\n// ═══════════════════════════════════════════════════════════\n\ninterface PersonaGridProps {\n personas: Persona[];\n}\n\nexport function PersonaGrid({ personas }: PersonaGridProps) {\n if (personas.length === 0) {\n return null;\n }\n\n return (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {personas.map((persona) => (\n <PersonaCard key={persona.id} persona={persona} />\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Check } from \"lucide-react\";\nimport { Button } from \"../ui/button\";\n\n// ============================================\n// Loader Component Types\n// ============================================\n\nexport interface LoaderProps {\n /** The current state of the loader */\n state?: \"loading\" | \"success\";\n /** Title text displayed below the icon */\n title?: string;\n /** Description text displayed below the title */\n description?: string;\n /** Text for the action button (success state only) */\n buttonText?: string;\n /** Callback when the action button is clicked */\n onButtonClick?: () => void;\n /** Additional class name */\n className?: string;\n}\n\n// ============================================\n// Animated Spinner Component\n// ============================================\n\nfunction LoadingSpinner({ className }: { className?: string }) {\n return (\n <div\n className={cn(\"relative\", className)}\n style={{\n width: \"var(--loader-spinner-size)\",\n height: \"var(--loader-spinner-size)\",\n }}\n >\n <svg\n className=\"animate-spin\"\n viewBox=\"0 0 64 64\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n width: \"100%\",\n height: \"100%\",\n animation: \"spin 1s linear infinite\",\n }}\n >\n {/* Background circle */}\n <circle\n cx=\"32\"\n cy=\"32\"\n r=\"28\"\n stroke=\"var(--loader-spinner-stroke)\"\n strokeWidth=\"8\"\n fill=\"none\"\n />\n {/* Animated arc */}\n <circle\n cx=\"32\"\n cy=\"32\"\n r=\"28\"\n stroke=\"var(--loader-spinner-fill)\"\n strokeWidth=\"8\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray=\"44 132\"\n style={{\n transformOrigin: \"center\",\n }}\n />\n </svg>\n </div>\n );\n}\n\n// ============================================\n// Success Checkmark Component\n// ============================================\n\nfunction SuccessCheckmark({ className }: { className?: string }) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center rounded-full\",\n className\n )}\n style={{\n width: \"var(--loader-success-size)\",\n height: \"var(--loader-success-size)\",\n backgroundColor: \"var(--loader-success-bg)\",\n }}\n >\n <Check\n className=\"text-white\"\n style={{\n width: \"calc(var(--loader-success-size) / 2)\",\n height: \"calc(var(--loader-success-size) / 2)\",\n }}\n strokeWidth={3}\n />\n </div>\n );\n}\n\n// ============================================\n// Loader Component\n// ============================================\n\n/**\n * Canvas Design System - Loader Component\n *\n * A loading feedback component with two states:\n * - Loading: Animated spinner with title and description\n * - Success: Green checkmark with title, description, and optional action button\n *\n * Uses CSS variables for theming:\n * - --loader-spinner-size: Size of the spinner (default: 64px)\n * - --loader-spinner-stroke: Background stroke color\n * - --loader-spinner-fill: Animated arc color\n * - --loader-success-size: Size of success checkmark (default: 48px)\n * - --loader-success-bg: Background color of success circle\n * - --loader-gap: Gap between elements\n *\n * @example\n * ```tsx\n * // Loading state\n * <Loader\n * state=\"loading\"\n * title=\"Please wait...\"\n * description=\"We are processing your request\"\n * />\n *\n * // Success state with button\n * <Loader\n * state=\"success\"\n * title=\"Success!\"\n * description=\"Your payment has been processed\"\n * buttonText=\"Go to portal\"\n * onButtonClick={() => router.push('/portal')}\n * />\n * ```\n */\nexport function Loader({\n state = \"loading\",\n title = state === \"loading\" ? \"Please wait...\" : \"Success!\",\n description = state === \"loading\"\n ? \"We are currently processing your payment\"\n : \"Your payment has been processed successfully\",\n buttonText,\n onButtonClick,\n className,\n}: LoaderProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center text-center\",\n className\n )}\n style={{\n gap: \"var(--loader-gap)\",\n }}\n >\n {/* Icon */}\n {state === \"loading\" ? <LoadingSpinner /> : <SuccessCheckmark />}\n\n {/* Title */}\n <p\n className=\"font-bold\"\n style={{\n fontFamily: \"var(--typo-body-xl-font)\",\n fontSize: \"var(--typo-body-xl-size)\",\n lineHeight: \"1.5\",\n color: \"var(--canvas-text)\",\n }}\n >\n {title}\n </p>\n\n {/* Description */}\n <p\n style={{\n fontFamily: \"var(--typo-body-s-font)\",\n fontSize: \"var(--typo-body-s-size)\",\n lineHeight: \"1.5\",\n color: \"var(--canvas-text-muted)\",\n marginTop: \"calc(var(--loader-gap) * -0.5)\",\n }}\n >\n {description}\n </p>\n\n {/* Action Button (success state only) */}\n {state === \"success\" && buttonText && (\n <div style={{ paddingTop: \"var(--spacing-3xl)\" }}>\n <Button\n variant=\"neutral\"\n onClick={onButtonClick}\n style={{\n height: \"var(--btn-standard-height)\",\n paddingLeft: \"var(--btn-standard-px)\",\n paddingRight: \"var(--btn-standard-px)\",\n fontSize: \"var(--btn-standard-font-size)\",\n fontWeight: \"var(--btn-standard-font-weight)\" as React.CSSProperties[\"fontWeight\"],\n borderRadius: \"var(--btn-standard-radius)\",\n backgroundColor: \"var(--btn-neutral-bg)\",\n color: \"var(--btn-neutral-text)\",\n borderColor: \"var(--btn-neutral-border)\",\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n }}\n >\n {buttonText}\n </Button>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { MagnifyingGlass } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface HeroSectionProps {\n title: string;\n subtitle: string;\n searchPlaceholder?: string;\n backgroundImage?: string;\n}\n\nexport function HeroSection({ \n title, \n subtitle, \n searchPlaceholder = \"Search for a place\",\n backgroundImage = \"https://images.unsplash.com/photo-1506929562872-bb421503ef21?w=1400&h=600&fit=crop\"\n}: HeroSectionProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 pt-5 pb-8 md:pb-12\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div \n className=\"relative w-full overflow-hidden flex items-center min-h-[320px] md:min-h-[420px] p-6 md:p-10\"\n style={{\n borderRadius: \"var(--spacing-2xl)\",\n }}\n >\n {/* Background Image */}\n <div \n className=\"absolute inset-0 bg-cover bg-center\"\n style={{ backgroundImage: `url(${backgroundImage})` }}\n />\n {/* Overlay */}\n <div className=\"absolute inset-0 bg-black/30\" />\n \n {/* Content */}\n <div \n className=\"relative z-10 flex flex-col max-w-[480px]\"\n style={{ gap: \"var(--spacing-5xl)\" }}\n >\n <div className=\"flex flex-col text-white\" style={{ gap: \"var(--spacing-md)\" }}>\n <Typography \n variant=\"h2\" \n as=\"h1\" \n className=\"text-white\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n <Typography \n variant=\"body-xl\" \n className=\"text-white/90\"\n style={{ color: \"rgba(255,255,255,0.9)\" }}\n >\n {subtitle}\n </Typography>\n </div>\n \n {/* Search Bar */}\n <div \n className=\"flex items-center w-full shadow-lg\"\n style={{\n height: \"64px\",\n backgroundColor: \"var(--canvas-background)\",\n borderRadius: \"var(--spacing-md)\",\n border: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-md) var(--spacing-md) var(--spacing-md) var(--spacing-xl)\",\n gap: \"var(--spacing-3xl)\",\n }}\n >\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n className=\"flex-1 bg-transparent outline-none\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n <button \n className=\"shrink-0 flex items-center justify-center\"\n style={{\n width: \"44px\",\n height: \"44px\",\n backgroundColor: \"var(--canvas-primary)\",\n borderRadius: \"var(--spacing-md)\",\n }}\n >\n <MagnifyingGlass size={20} color=\"white\" weight=\"bold\" />\n </button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\n","\"use client\";\n\nimport { MagnifyingGlass } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface HeroDarkWithImageProps {\n title?: string;\n subtitle?: string;\n searchPlaceholder?: string;\n image?: string;\n}\n\nexport function HeroDarkWithImage({ \n title = \"Plan your next adventure\",\n subtitle = \"Live like locals from anywhere in the world\",\n searchPlaceholder = \"Search for a place\",\n image = \"https://images.unsplash.com/photo-1469854523086-cc02fe5d8800?w=700&h=380&fit=crop\"\n}: HeroDarkWithImageProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 pb-8 md:pb-12\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div \n className=\"w-full flex flex-wrap items-center gap-10 lg:gap-20 p-8 lg:p-20 overflow-hidden\"\n style={{\n backgroundColor: \"var(--canvas-dark-section-bg)\",\n borderRadius: \"var(--spacing-2xl)\",\n }}\n >\n {/* Content */}\n <div \n className=\"flex flex-col gap-6 min-w-0\"\n style={{ flex: \"1 1 400px\", maxWidth: \"100%\" }}\n >\n <div className=\"flex flex-col gap-2\">\n <Typography\n variant=\"h2\"\n as=\"h1\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n <Typography\n variant=\"body-xl\"\n color=\"muted\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n {subtitle}\n </Typography>\n </div>\n \n {/* Search Bar */}\n <div \n className=\"flex items-center w-full max-w-[480px]\"\n style={{\n height: \"64px\",\n backgroundColor: \"var(--canvas-background)\",\n borderRadius: \"var(--spacing-md)\",\n border: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-md) var(--spacing-md) var(--spacing-md) var(--spacing-xl)\",\n gap: \"var(--spacing-3xl)\",\n boxShadow: \"0px 4px 16px 0px rgba(0, 0, 0, 0.04)\",\n }}\n >\n <input\n type=\"text\"\n placeholder={searchPlaceholder}\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n <button \n className=\"shrink-0 flex items-center justify-center\"\n style={{\n width: \"44px\",\n height: \"44px\",\n backgroundColor: \"var(--canvas-primary)\",\n borderRadius: \"var(--spacing-md)\",\n }}\n >\n <MagnifyingGlass size={20} color=\"white\" weight=\"bold\" />\n </button>\n </div>\n </div>\n\n {/* Image */}\n <div \n className=\"h-[280px] lg:h-[380px] overflow-hidden min-w-0\"\n style={{\n flex: \"1 1 300px\",\n maxWidth: \"100%\",\n borderRadius: \"var(--spacing-md)\",\n }}\n >\n <img \n src={image} \n alt=\"Adventure\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { MapPin, Calendar, Users } from \"@phosphor-icons/react\";\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface HeroDarkCenteredProps {\n title?: string;\n subtitle?: string;\n}\n\nexport function HeroDarkCentered({ \n title = \"Plan your next adventure\",\n subtitle = \"Live like locals from anywhere in the world\",\n}: HeroDarkCenteredProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 pb-8 md:pb-12\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div \n className=\"w-full flex flex-col items-center justify-center text-center p-12 lg:p-32\"\n style={{\n backgroundColor: \"var(--canvas-dark-section-bg)\",\n borderRadius: \"var(--spacing-2xl)\",\n }}\n >\n {/* Content */}\n <div className=\"flex flex-col gap-6 w-full max-w-[992px]\">\n <div className=\"flex flex-col gap-2 items-center\">\n <Typography\n variant=\"h2\"\n as=\"h1\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n <Typography\n variant=\"body-xl\"\n color=\"muted\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n {subtitle}\n </Typography>\n </div>\n \n {/* Multi-field Search Bar */}\n <div \n className=\"flex flex-col md:flex-row items-center w-full max-w-[900px] mx-auto\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n borderRadius: \"var(--spacing-md)\",\n border: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-md)\",\n boxShadow: \"0px 4px 16px 0px rgba(0, 0, 0, 0.04)\",\n }}\n >\n {/* Destination */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <MapPin size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Destination\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Check-in */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <Calendar size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Check-in\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Check-out */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <Calendar size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Check out\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Guests */}\n <div className=\"flex items-center gap-2 px-3 py-2 w-full md:flex-1 min-w-0\">\n <Users size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Guests\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Search Button */}\n <Button variant=\"primary\" size=\"lg\" className=\"shrink-0 w-full md:w-auto mt-2 md:mt-0 md:ml-2\">\n Search\n </Button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { MapPin, Calendar, Users } from \"@phosphor-icons/react\";\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface HeroFullwidthImageProps {\n title?: string;\n subtitle?: string;\n backgroundImage?: string;\n}\n\nexport function HeroFullwidthImage({ \n title = \"Plan your next adventure\",\n subtitle = \"Live like locals from anywhere in the world\",\n backgroundImage = \"https://images.unsplash.com/photo-1469854523086-cc02fe5d8800?w=1400&h=500&fit=crop\"\n}: HeroFullwidthImageProps) {\n return (\n <section \n className=\"w-full pb-24 md:pb-28\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n {/* Hero Image with Overlay */}\n <div \n className=\"relative w-full flex flex-col items-center justify-center px-4 md:px-10\"\n style={{\n height: \"420px\",\n }}\n >\n {/* Background Image */}\n <div \n className=\"absolute inset-0 bg-cover bg-center\"\n style={{ backgroundImage: `url(${backgroundImage})` }}\n />\n {/* Overlay */}\n <div className=\"absolute inset-0 bg-black/30\" />\n \n {/* Content */}\n <div className=\"relative z-10 flex flex-col items-center text-center gap-3 max-w-[992px] w-full\">\n <Typography\n variant=\"h2\"\n as=\"h1\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n <Typography\n variant=\"body-xl\"\n style={{ color: \"white\" }}\n >\n {subtitle}\n </Typography>\n </div>\n\n {/* Search Bar - positioned at bottom, overlapping */}\n <div \n className=\"absolute left-1/2 -translate-x-1/2 flex flex-col md:flex-row items-center w-[calc(100%-32px)] max-w-[900px]\"\n style={{\n bottom: \"-40px\",\n backgroundColor: \"var(--canvas-background)\",\n borderRadius: \"var(--spacing-md)\",\n border: \"1px solid var(--canvas-border)\",\n padding: \"var(--spacing-md)\",\n boxShadow: \"0px 4px 16px 0px rgba(0, 0, 0, 0.04)\",\n }}\n >\n {/* Destination */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <MapPin size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Destination\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Check-in */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <Calendar size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Check-in\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Check-out */}\n <div \n className=\"flex items-center gap-2 px-3 py-2 border-b md:border-b-0 md:border-r w-full md:flex-1 min-w-0\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <Calendar size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Check out\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Guests */}\n <div className=\"flex items-center gap-2 px-3 py-2 w-full md:flex-1 min-w-0\">\n <Users size={20} className=\"shrink-0\" style={{ color: \"var(--canvas-text-placeholder)\" }} />\n <input\n type=\"text\"\n placeholder=\"Guests\"\n className=\"flex-1 bg-transparent outline-none min-w-0\"\n style={{\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-l-size)\",\n color: \"var(--canvas-text)\",\n }}\n />\n </div>\n\n {/* Search Button */}\n <Button variant=\"primary\" size=\"lg\" className=\"shrink-0 w-full md:w-auto mt-2 md:mt-0 md:ml-2\">\n Search\n </Button>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ArrowRight } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface DestinationCard {\n id: string;\n name: string;\n count: string;\n price: string;\n image: string;\n}\n\ninterface DestinationCardsProps {\n title: string;\n destinations: DestinationCard[];\n onExploreMore?: () => void;\n}\n\nconst defaultDestinations: DestinationCard[] = [\n {\n id: \"1\",\n name: \"Las Vegas\",\n count: \"246 homes\",\n price: \"from $240\",\n image: \"https://images.unsplash.com/photo-1605833556294-ea5c7a74f57d?w=400&h=300&fit=crop\",\n },\n {\n id: \"2\",\n name: \"Denver\",\n count: \"88 homes\",\n price: \"from $146\",\n image: \"https://images.unsplash.com/photo-1546156929-a4c0ac411f47?w=400&h=300&fit=crop\",\n },\n {\n id: \"3\",\n name: \"New York\",\n count: \"842 homes\",\n price: \"from $354\",\n image: \"https://images.unsplash.com/photo-1496442226666-8d4d0e62e6e9?w=400&h=300&fit=crop\",\n },\n {\n id: \"4\",\n name: \"San Francisco\",\n count: \"194 homes\",\n price: \"from $278\",\n image: \"https://images.unsplash.com/photo-1501594907352-04cda38ebc29?w=400&h=300&fit=crop\",\n },\n];\n\nexport function DestinationCards({ \n title = \"Top destinations\", \n destinations = defaultDestinations,\n onExploreMore \n}: Partial<DestinationCardsProps>) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-6\" style={{ marginBottom: \"var(--spacing-3xl)\" }}>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n <button \n onClick={onExploreMore}\n className=\"flex items-center gap-2 hover:opacity-80 transition-opacity\"\n style={{ paddingTop: \"var(--spacing-2xl)\" }}\n >\n <Typography variant=\"body-l\" as=\"span\" style={{ fontWeight: 600 }}>\n Explore more\n </Typography>\n <div \n className=\"flex items-center justify-center\"\n style={{\n width: \"24px\",\n height: \"24px\",\n backgroundColor: \"var(--canvas-text)\",\n borderRadius: \"var(--radius-4xl)\",\n }}\n >\n <ArrowRight size={16} color=\"white\" weight=\"bold\" />\n </div>\n </button>\n </div>\n \n {/* Cards Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10\">\n {destinations.map((dest) => (\n <div \n key={dest.id}\n className=\"group cursor-pointer overflow-hidden\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-xl)\",\n }}\n >\n <div \n className=\"w-full overflow-hidden\"\n style={{ \n height: \"240px\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n <img \n src={dest.image} \n alt={dest.name}\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\n />\n </div>\n <div \n className=\"flex flex-col\"\n style={{ \n padding: \"0 var(--spacing-3xl) var(--spacing-3xl)\",\n gap: \"var(--spacing-xs)\",\n }}\n >\n <Typography variant=\"body-xl\" as=\"h3\" className=\"mt-6\" style={{ fontWeight: 600 }}>\n {dest.name}\n </Typography>\n <Typography variant=\"body-m\" color=\"muted\">\n {dest.count}\n </Typography>\n <Typography variant=\"h6\" as=\"p\" className=\"mt-5\">\n {dest.price}\n </Typography>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ArrowRight, Star, Camera, Buildings, Palette, Mountains } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\nimport { useState } from \"react\";\n\ninterface FeaturedPlace {\n id: string;\n name: string;\n count: string;\n price: string;\n rating: number;\n image: string;\n}\n\ninterface FilterPill {\n id: string;\n label: string;\n icon: React.ReactNode;\n}\n\nconst defaultFilters: FilterPill[] = [\n { id: \"views\", label: \"Amazing views\", icon: <Camera size={20} /> },\n { id: \"cities\", label: \"Top cities\", icon: <Buildings size={20} /> },\n { id: \"design\", label: \"Design\", icon: <Palette size={20} /> },\n { id: \"countryside\", label: \"Countryside\", icon: <Mountains size={20} /> },\n];\n\nconst defaultPlaces: FeaturedPlace[] = [\n {\n id: \"1\",\n name: \"Sausalito, California\",\n count: \"246 homes\",\n price: \"from $240\",\n rating: 4.92,\n image: \"https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?w=400&h=300&fit=crop\",\n },\n {\n id: \"2\",\n name: \"Portola Valley, California\",\n count: \"634 homes\",\n price: \"from $354\",\n rating: 4.98,\n image: \"https://images.unsplash.com/photo-1600585154340-be6161a56a0c?w=400&h=300&fit=crop\",\n },\n {\n id: \"3\",\n name: \"San Francisco, California\",\n count: \"194 homes\",\n price: \"from $278\",\n rating: 4.87,\n image: \"https://images.unsplash.com/photo-1449844908441-8829872d2607?w=400&h=300&fit=crop\",\n },\n {\n id: \"4\",\n name: \"Sonoma, California\",\n count: \"176 homes\",\n price: \"from $543\",\n rating: 4.96,\n image: \"https://images.unsplash.com/photo-1564013799919-ab600027ffc6?w=400&h=300&fit=crop\",\n },\n {\n id: \"5\",\n name: \"Half Moon Bay, California\",\n count: \"83 homes\",\n price: \"from $389\",\n rating: 4.82,\n image: \"https://images.unsplash.com/photo-1600047509807-ba8f99d2cdde?w=400&h=300&fit=crop\",\n },\n {\n id: \"6\",\n name: \"Sebastopol, California\",\n count: \"65 homes\",\n price: \"from $176\",\n rating: 4.84,\n image: \"https://images.unsplash.com/photo-1600566753190-17f0baa2a6c3?w=400&h=300&fit=crop\",\n },\n];\n\nexport function FeaturedPlaces() {\n const [activeFilter, setActiveFilter] = useState(\"views\");\n\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto\">\n {/* Header */}\n <div className=\"flex items-center justify-between\" style={{ marginBottom: \"var(--spacing-3xl)\" }}>\n <Typography variant=\"h3\" as=\"h2\">\n Featured places\n </Typography>\n <button \n className=\"flex items-center gap-2 hover:opacity-80 transition-opacity\"\n style={{ paddingTop: \"var(--spacing-2xl)\" }}\n >\n <Typography variant=\"body-l\" as=\"span\" style={{ fontWeight: 600 }}>\n Explore more\n </Typography>\n <div \n className=\"flex items-center justify-center\"\n style={{\n width: \"24px\",\n height: \"24px\",\n backgroundColor: \"var(--canvas-text)\",\n borderRadius: \"var(--radius-4xl)\",\n }}\n >\n <ArrowRight size={16} color=\"white\" weight=\"bold\" />\n </div>\n </button>\n </div>\n\n {/* Filter Pills */}\n <div className=\"flex flex-wrap gap-4 mb-6\" style={{ marginBottom: \"var(--spacing-3xl)\" }}>\n {defaultFilters.map((filter) => (\n <button\n key={filter.id}\n onClick={() => setActiveFilter(filter.id)}\n className=\"flex items-center gap-2 transition-colors\"\n style={{\n height: \"44px\",\n padding: \"0 var(--spacing-xl)\",\n borderRadius: \"var(--spacing-5xl)\",\n border: `1px solid ${activeFilter === filter.id ? \"var(--canvas-primary)\" : \"var(--canvas-border)\"}`,\n backgroundColor: activeFilter === filter.id ? \"var(--canvas-surface-brand)\" : \"var(--canvas-background)\",\n color: activeFilter === filter.id ? \"var(--canvas-primary)\" : \"var(--canvas-text-placeholder)\",\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"var(--typo-body-s-size)\",\n fontWeight: 500,\n }}\n >\n {filter.icon}\n {filter.label}\n </button>\n ))}\n </div>\n\n {/* Cards Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10\">\n {defaultPlaces.map((place) => (\n <div \n key={place.id}\n className=\"group cursor-pointer overflow-hidden\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-xl)\",\n }}\n >\n <div \n className=\"w-full overflow-hidden\"\n style={{ \n height: \"240px\",\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n <img \n src={place.image} \n alt={place.name}\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\n />\n </div>\n <div \n className=\"flex flex-col\"\n style={{ \n padding: \"0 var(--spacing-3xl) var(--spacing-3xl)\",\n gap: \"var(--spacing-xs)\",\n }}\n >\n <div className=\"flex items-center justify-between mt-6\">\n <Typography variant=\"body-xl\" as=\"h3\" style={{ fontWeight: 600 }}>\n {place.name}\n </Typography>\n <div className=\"flex items-center gap-1\">\n <Star size={16} weight=\"fill\" style={{ color: \"var(--canvas-primary)\" }} />\n <Typography variant=\"body-s\" as=\"span\">\n {place.rating}\n </Typography>\n </div>\n </div>\n <Typography variant=\"body-m\" color=\"muted\">\n {place.count}\n </Typography>\n <Typography variant=\"h6\" as=\"p\" className=\"mt-5\">\n {place.price}\n </Typography>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ShieldCheck, Coffee, Coins, Heart } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface FeatureItem {\n id: string;\n title: string;\n description: string;\n icon: React.ReactNode;\n}\n\nconst defaultFeatures: FeatureItem[] = [\n {\n id: \"1\",\n title: \"Peace of mind\",\n description: \"Our money-back guarantee allows you to book with confidence\",\n icon: <ShieldCheck size={64} weight=\"thin\" />,\n },\n {\n id: \"2\",\n title: \"A home away from home\",\n description: \"Stay with full kitchens, laundry, pools, and spacious yards.\",\n icon: <Coffee size={64} weight=\"thin\" />,\n },\n {\n id: \"3\",\n title: \"More for less\",\n description: \"More space, more privacy, more amenities — more value\",\n icon: <Coins size={64} weight=\"thin\" />,\n },\n {\n id: \"4\",\n title: \"A space for everyone\",\n description: \"We celebrate diversity, inclusion, and families worldwide.\",\n icon: <Heart size={64} weight=\"thin\" />,\n },\n];\n\ninterface HowItWorksProps {\n variant?: \"light\" | \"dark\";\n features?: FeatureItem[];\n}\n\nexport function HowItWorks({ variant = \"light\", features = defaultFeatures }: HowItWorksProps) {\n const isDark = variant === \"dark\";\n \n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: isDark ? \"var(--canvas-dark-section-bg)\" : \"var(--canvas-surface)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto\">\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-16\">\n {features.map((feature) => (\n <div \n key={feature.id}\n className=\"flex flex-col\"\n style={{ gap: \"var(--spacing-md)\" }}\n >\n <div style={{ color: isDark ? \"var(--canvas-primary-foreground)\" : \"var(--canvas-text)\" }}>\n {feature.icon}\n </div>\n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-xxs)\" }}>\n <Typography \n variant=\"body-xl\" \n className=\"font-semibold\"\n style={{ color: isDark ? \"var(--canvas-primary-foreground)\" : \"var(--canvas-text)\" }}\n >\n {feature.title}\n </Typography>\n <Typography \n variant=\"body-m\"\n style={{ color: isDark ? \"var(--canvas-text-placeholder)\" : \"var(--canvas-text-muted)\" }}\n >\n {feature.description}\n </Typography>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\n","\"use client\";\n\nimport { \n Heart, Star, Sun, CurrencyDollar, Smiley, \n Image, Coffee, Moon, Clock, MapPin \n} from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface CategoryItem {\n id: string;\n title: string;\n count: string;\n icon: React.ReactNode;\n}\n\nconst defaultCategories: CategoryItem[] = [\n { id: \"1\", title: \"Most popular\", count: \"5,000 homes\", icon: <Heart size={48} /> },\n { id: \"2\", title: \"Top rated\", count: \"5,000 homes\", icon: <Star size={48} /> },\n { id: \"3\", title: \"Unique stays\", count: \"5,000 homes\", icon: <Sun size={48} /> },\n { id: \"4\", title: \"Affordable\", count: \"5,000 homes\", icon: <CurrencyDollar size={48} /> },\n { id: \"5\", title: \"Friendly staff\", count: \"5,000 homes\", icon: <Smiley size={48} /> },\n { id: \"6\", title: \"Best views\", count: \"5,000 homes\", icon: <Image size={48} /> },\n { id: \"7\", title: \"Cafes\", count: \"5,000 homes\", icon: <Coffee size={48} /> },\n { id: \"8\", title: \"Night life\", count: \"5,000 homes\", icon: <Moon size={48} /> },\n { id: \"9\", title: \"Open 24 hours\", count: \"5,000 homes\", icon: <Clock size={48} /> },\n { id: \"10\", title: \"Best locations\", count: \"5,000 homes\", icon: <MapPin size={48} /> },\n];\n\ninterface CategoryGridProps {\n title?: string;\n categories?: CategoryItem[];\n}\n\nexport function CategoryGrid({ \n title = \"Browse by category\", \n categories = defaultCategories \n}: CategoryGridProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto\">\n {/* Header */}\n <Typography variant=\"h3\" as=\"h2\" style={{ marginBottom: \"var(--spacing-6xl)\" }}>\n {title}\n </Typography>\n\n {/* Categories Grid */}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-8\">\n {categories.map((category) => (\n <div \n key={category.id}\n className=\"flex flex-col items-center justify-center text-center cursor-pointer hover:shadow-md transition-shadow\"\n style={{\n height: \"158px\",\n padding: \"var(--spacing-3xl)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--spacing-md)\",\n gap: \"var(--spacing-md)\",\n boxShadow: \"0px 1px 8px 0px rgba(0, 0, 0, 0.03)\",\n }}\n >\n <div style={{ color: \"var(--canvas-text)\" }}>\n {category.icon}\n </div>\n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-xxs)\" }}>\n <Typography variant=\"body-xl\" className=\"font-semibold\">\n {category.title}\n </Typography>\n <Typography variant=\"body-m\" color=\"muted\">\n {category.count}\n </Typography>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n\n","\"use client\";\n\nimport { CaretLeft, CaretRight } from \"@phosphor-icons/react\";\nimport { useState } from \"react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface Testimonial {\n id: string;\n quote: string;\n highlightedWords?: string[];\n author: string;\n location: string;\n image: string;\n}\n\nconst defaultTestimonials: Testimonial[] = [\n {\n id: \"1\",\n quote: '\"Great prices on incredible places! Booking is easy, and I always find the perfect stay. Highly recommend!\"',\n highlightedWords: [\"Great prices\", \"easy\"],\n author: \"Mary Trott\",\n location: \"San Francisco, California\",\n image: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=320&h=400&fit=crop\",\n },\n {\n id: \"2\",\n quote: '\"The experience was seamless from start to finish. I found exactly what I was looking for within minutes!\"',\n highlightedWords: [\"seamless\", \"minutes\"],\n author: \"John Chen\",\n location: \"New York, NY\",\n image: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=320&h=400&fit=crop\",\n },\n];\n\ninterface TestimonialCarouselProps {\n testimonials?: Testimonial[];\n}\n\nexport function TestimonialCarousel({ testimonials = defaultTestimonials }: TestimonialCarouselProps) {\n const [currentIndex, setCurrentIndex] = useState(0);\n const current = testimonials[currentIndex];\n\n const handlePrev = () => {\n setCurrentIndex((prev) => (prev === 0 ? testimonials.length - 1 : prev - 1));\n };\n\n const handleNext = () => {\n setCurrentIndex((prev) => (prev === testimonials.length - 1 ? 0 : prev + 1));\n };\n\n // Function to highlight specific words\n const renderQuote = (quote: string, highlights?: string[]) => {\n if (!highlights || highlights.length === 0) return quote;\n \n let result = quote;\n highlights.forEach((word) => {\n result = result.replace(\n new RegExp(`(${word})`, \"gi\"),\n `<span style=\"color: var(--canvas-highlight-orange);\">$1</span>`\n );\n });\n return <span dangerouslySetInnerHTML={{ __html: result }} />;\n };\n\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: \"var(--canvas-dark-section-bg)\",\n }}\n >\n <div \n className=\"w-full max-w-[1200px] mx-auto flex flex-col lg:flex-row items-center\"\n style={{ gap: \"var(--spacing-6xl)\" }}\n >\n {/* Content */}\n <div className=\"flex-1 flex flex-col\" style={{ gap: \"var(--spacing-3xl)\" }}>\n <Typography variant=\"h3\" as=\"p\" style={{ color: \"white\" }}>\n {renderQuote(current.quote, current.highlightedWords)}\n </Typography>\n \n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-2xl)\" }}>\n <div>\n <Typography variant=\"body-l\" style={{ color: \"white\" }}>\n {current.author}\n </Typography>\n <Typography variant=\"body-l\" color=\"muted\" style={{ color: \"var(--canvas-text-placeholder)\" }}>\n {current.location}\n </Typography>\n </div>\n \n {/* Navigation */}\n <div className=\"flex gap-5\">\n <button \n onClick={handlePrev}\n className=\"flex items-center justify-center hover:opacity-80 transition-opacity\"\n style={{\n width: \"48px\",\n height: \"48px\",\n backgroundColor: \"var(--canvas-border)\",\n borderRadius: \"var(--spacing-md)\",\n }}\n >\n <CaretLeft size={32} style={{ color: \"var(--canvas-text)\" }} weight=\"bold\" />\n </button>\n <button \n onClick={handleNext}\n className=\"flex items-center justify-center hover:opacity-80 transition-opacity\"\n style={{\n width: \"48px\",\n height: \"48px\",\n backgroundColor: \"var(--canvas-border)\",\n borderRadius: \"var(--spacing-md)\",\n }}\n >\n <CaretRight size={32} style={{ color: \"var(--canvas-text)\" }} weight=\"bold\" />\n </button>\n </div>\n </div>\n </div>\n \n {/* Image */}\n <div \n className=\"shrink-0 overflow-hidden hidden lg:block\"\n style={{\n width: \"320px\",\n height: \"400px\",\n borderRadius: \"var(--spacing-lg)\",\n }}\n >\n <img \n src={current.image} \n alt={current.author}\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { MagnifyingGlass, Bed, CreditCard, Star } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface StepItem {\n id: string;\n title: string;\n description: string;\n icon: React.ReactNode;\n}\n\nconst defaultSteps: StepItem[] = [\n {\n id: \"1\",\n title: \"Explore destinations\",\n description: \"Enter the destination, travel dates, and the number of guests to search for accommodations\",\n icon: <MagnifyingGlass size={24} />,\n },\n {\n id: \"2\",\n title: \"Book with ease\",\n description: \"Select a place, submit a reservation request to the host, and confirm payment\",\n icon: <Bed size={24} />,\n },\n {\n id: \"3\",\n title: \"Enjoy your stay\",\n description: \"Check-in with your host on your travel dates and enjoy your stay at the property\",\n icon: <CreditCard size={24} />,\n },\n {\n id: \"4\",\n title: \"Share your experience\",\n description: \"Leave a review for the property and host for other users to see\",\n icon: <Star size={24} />,\n },\n];\n\ninterface VerticalHowItWorksProps {\n variant?: \"light\" | \"dark\";\n subtitle?: string;\n title?: string;\n description?: string;\n steps?: StepItem[];\n image?: string;\n}\n\nexport function VerticalHowItWorks({ \n variant = \"light\",\n subtitle = \"HOW IT WORKS\",\n title = \"Where comfort meets convenience\",\n description = \"Explore unique stays, enjoy flexible booking, and travel with confidence, all in one place.\",\n steps = defaultSteps,\n image = \"https://images.unsplash.com/photo-1600596542815-ffad4c1539a9?w=680&h=560&fit=crop\"\n}: VerticalHowItWorksProps) {\n const isDark = variant === \"dark\";\n \n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{\n backgroundColor: isDark ? \"var(--canvas-dark-section-bg)\" : \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col gap-16\">\n {/* Header */}\n <div className=\"flex flex-col items-center text-center max-w-[768px] mx-auto gap-6\">\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\">\n {subtitle}\n </Typography>\n <Typography \n variant=\"h3\" \n as=\"h2\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {title}\n </Typography>\n </div>\n <Typography \n variant=\"body-l\" \n color=\"muted\"\n className=\"max-w-[576px]\"\n {...(isDark && { style: { color: \"var(--canvas-text-placeholder)\" } })}\n >\n {description}\n </Typography>\n </div>\n\n {/* Content: Steps + Image */}\n <div className=\"flex flex-col lg:flex-row gap-12 lg:gap-20 items-center\">\n {/* Steps List */}\n <div className=\"flex flex-col gap-8 max-w-[480px] w-full\">\n {steps.map((step) => (\n <div \n key={step.id}\n className=\"flex flex-col gap-3 pl-6\"\n style={{\n borderLeft: `1px solid ${isDark ? \"var(--canvas-dark-section-border)\" : \"var(--canvas-border)\"}`,\n }}\n >\n <div className=\"flex items-center gap-4\">\n <div \n className=\"flex items-center justify-center\"\n style={{\n width: \"40px\",\n height: \"40px\",\n borderRadius: \"var(--radius-md)\",\n backgroundColor: \"var(--canvas-border)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {step.icon}\n </div>\n <Typography \n variant=\"body-xl\" \n as=\"h3\"\n style={{ fontWeight: 600, ...(isDark && { color: \"white\" }) }}\n >\n {step.title}\n </Typography>\n </div>\n <Typography \n variant=\"body-m\" \n color=\"muted\"\n {...(isDark && { style: { color: \"var(--canvas-text-placeholder)\" } })}\n >\n {step.description}\n </Typography>\n </div>\n ))}\n </div>\n\n {/* Image */}\n <div \n className=\"flex-1 w-full lg:w-auto min-h-[400px] lg:min-h-[560px] overflow-hidden\"\n style={{\n borderRadius: \"var(--radius-xl)\",\n }}\n >\n <img \n src={image} \n alt=\"How it works\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface GallerySectionProps {\n variant?: \"light\" | \"dark\";\n subtitle?: string;\n title?: string;\n description1?: string;\n description2?: string;\n images?: string[];\n}\n\nconst defaultImages = [\n \"https://images.unsplash.com/photo-1499856871958-5b9627545d1a?w=400&h=350&fit=crop\",\n \"https://images.unsplash.com/photo-1523906834658-6e24ef2386f9?w=400&h=405&fit=crop\",\n \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=400&h=453&fit=crop\",\n \"https://images.unsplash.com/photo-1534430480872-3498386e7856?w=400&h=380&fit=crop\",\n \"https://images.unsplash.com/photo-1476514525535-07fb3b4ae5f1?w=400&h=300&fit=crop\",\n \"https://images.unsplash.com/photo-1530841377377-3ff06c0ca713?w=400&h=489&fit=crop\",\n];\n\nexport function GallerySection({ \n variant = \"light\",\n subtitle = \"GALLERY\",\n title = \"Discover the best places\",\n description1 = \"Traveling is an exciting way to discover new places, cultures, and experiences. Whether you're a seasoned traveler or new to exploring, there are countless destinations waiting to be discovered.\",\n description2 = \"From bustling cities to secluded beaches, from ancient ruins to modern landmarks, there's something for everyone. Get inspired by pictures from our trusted community below.\",\n images = defaultImages,\n}: GallerySectionProps) {\n const isDark = variant === \"dark\";\n \n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{\n backgroundColor: isDark ? \"var(--canvas-dark-section-bg)\" : \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col gap-12\">\n {/* Header */}\n <div className=\"flex flex-col gap-6\">\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\">\n {subtitle}\n </Typography>\n <Typography \n variant=\"h3\" \n as=\"h2\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {title}\n </Typography>\n </div>\n <div className=\"flex flex-col md:flex-row gap-8 md:gap-16\">\n <Typography \n variant=\"body-l\" \n color=\"muted\"\n className=\"flex-1\"\n {...(isDark && { style: { color: \"var(--canvas-text-placeholder)\" } })}\n >\n {description1}\n </Typography>\n <Typography \n variant=\"body-l\" \n color=\"muted\"\n className=\"flex-1\"\n {...(isDark && { style: { color: \"var(--canvas-text-placeholder)\" } })}\n >\n {description2}\n </Typography>\n </div>\n </div>\n\n {/* Images Grid - 3 columns with varying heights */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8\">\n {/* Column 1 */}\n <div className=\"flex flex-col gap-8\">\n <div \n className=\"w-full h-[350px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[0]} \n alt=\"Gallery image 1\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div \n className=\"w-full h-[405px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[1]} \n alt=\"Gallery image 2\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n \n {/* Column 2 */}\n <div className=\"flex flex-col gap-8\">\n <div \n className=\"w-full h-[453px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[2]} \n alt=\"Gallery image 3\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div \n className=\"w-full h-[380px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[3]} \n alt=\"Gallery image 4\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n \n {/* Column 3 */}\n <div className=\"flex flex-col gap-8\">\n <div \n className=\"w-full h-[300px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[4]} \n alt=\"Gallery image 5\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div \n className=\"w-full h-[489px] overflow-hidden\"\n style={{ borderRadius: \"var(--radius-md)\" }}\n >\n <img \n src={images[5]} \n alt=\"Gallery image 6\"\n className=\"w-full h-full object-cover\"\n />\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Check, ArrowRight } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface FeatureBenefit {\n id: string;\n text: string;\n}\n\ninterface FeatureWithImageProps {\n title?: string;\n description?: string;\n benefits?: FeatureBenefit[];\n ctaText?: string;\n onCtaClick?: () => void;\n image?: string;\n imagePosition?: \"left\" | \"right\";\n}\n\nconst defaultBenefits: FeatureBenefit[] = [\n { id: \"1\", text: \"Earn 5x points on all bookings through the platform\" },\n { id: \"2\", text: \"Earn 3x points on dining and fuel\" },\n { id: \"3\", text: \"Guaranteed early check-in, when available\" },\n { id: \"4\", text: \"No foreign transaction fees\" },\n];\n\nexport function FeatureWithImage({ \n title = \"The ultimate travel credit card\",\n description = \"Get a $150 statement credit after your first purchase, plus 5,000 bonus points when you meet the spending requirement. Earn 5X points on all bookings through our platform, 2X points on dining and fuel, and enjoy automatic VIP perks. Terms apply.\",\n benefits = defaultBenefits,\n ctaText = \"Learn more\",\n onCtaClick,\n image = \"https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?w=580&h=420&fit=crop\",\n imagePosition = \"left\",\n}: FeatureWithImageProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div \n className={`w-full max-w-[1240px] mx-auto flex flex-col ${imagePosition === \"left\" ? \"lg:flex-row\" : \"lg:flex-row-reverse\"} gap-12 lg:gap-20 items-center py-12 md:py-24`}\n >\n {/* Image */}\n <div \n className=\"w-full lg:w-[580px] h-[320px] lg:h-[420px] overflow-hidden shrink-0\"\n style={{\n borderRadius: \"var(--radius-xl)\",\n border: \"1px solid var(--canvas-border)\",\n boxShadow: \"0px 4px 96px 0px rgba(13, 18, 28, 0.08)\",\n }}\n >\n <img \n src={image} \n alt={title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Content */}\n <div className=\"flex flex-col gap-6 max-w-[580px]\">\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n \n <Typography variant=\"body-l\" color=\"muted\">\n {description}\n </Typography>\n\n {/* Benefits list */}\n <div className=\"flex flex-col gap-1\">\n {benefits.map((benefit) => (\n <div \n key={benefit.id}\n className=\"flex items-center gap-2 h-7\"\n >\n <Check size={20} style={{ color: \"var(--canvas-text)\" }} />\n <Typography variant=\"body-l\" color=\"muted\">\n {benefit.text}\n </Typography>\n </div>\n ))}\n </div>\n\n {/* CTA Button */}\n <button \n onClick={onCtaClick}\n className=\"flex items-center gap-2 pt-5 hover:opacity-80 transition-opacity w-fit\"\n >\n <Typography variant=\"body-m\" as=\"span\" style={{ fontWeight: 500 }}>\n {ctaText}\n </Typography>\n <div \n className=\"flex items-center justify-center\"\n style={{\n width: \"24px\",\n height: \"24px\",\n backgroundColor: \"var(--canvas-text)\",\n borderRadius: \"var(--radius-4xl)\",\n }}\n >\n <ArrowRight size={16} color=\"white\" weight=\"bold\" />\n </div>\n </button>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface SocialProofProps {\n label?: string;\n logos?: { name: string; width: number }[];\n}\n\n// Simple text-based logos for demonstration\nconst defaultLogos = [\n { name: \"Google\", width: 106 },\n { name: \"Quartz\", width: 100 },\n { name: \"The New York Times\", width: 180 },\n { name: \"Forbes\", width: 90 },\n { name: \"Entrepreneur\", width: 130 },\n];\n\nexport function SocialProof({ \n label = \"AS FEATURED ON\",\n logos = defaultLogos,\n}: SocialProofProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 py-10\"\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n }}\n >\n <div className=\"w-full max-w-[1200px] mx-auto flex flex-col gap-8 items-center\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\" className=\"text-center\">\n {label}\n </Typography>\n \n <div className=\"flex flex-wrap items-center justify-center gap-8 md:gap-12\">\n {logos.map((logo) => (\n <div \n key={logo.name}\n className=\"flex items-center justify-center h-9 opacity-60 hover:opacity-100 transition-opacity\"\n style={{ minWidth: `${logo.width}px` }}\n >\n <Typography variant=\"body-l\" as=\"span\" color=\"muted\" style={{ fontWeight: 600, letterSpacing: \"-0.5px\" }}>\n {logo.name}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface Review {\n id: string;\n quote: string;\n author: string;\n location: string;\n avatar: string;\n}\n\nconst defaultReviews: Review[] = [\n {\n id: \"1\",\n quote: '\"The deals you get here are so much better!\"',\n author: \"Emma Pérez\",\n location: \"Mexico\",\n avatar: \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop\",\n },\n {\n id: \"2\",\n quote: '\"I was able to find the perfect place that fit my budget and needs. Highly recommend!\"',\n author: \"Francis Gaddi\",\n location: \"United Kingdom\",\n avatar: \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop\",\n },\n {\n id: \"3\",\n quote: '\"This is now my go-to platform for booking vacation accommodations.\"',\n author: \"Raj Mishra\",\n location: \"Los Angeles, CA\",\n avatar: \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=100&h=100&fit=crop\",\n },\n {\n id: \"4\",\n quote: '\"The experience of booking an accommodation on this platform was a breeze. I would definitely use it again in the future.\"',\n author: \"Stacy Jones\",\n location: \"France\",\n avatar: \"https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=100&h=100&fit=crop\",\n },\n {\n id: \"5\",\n quote: '\"You get free travel insurance!\"',\n author: \"Aya Williams\",\n location: \"Germany\",\n avatar: \"https://images.unsplash.com/photo-1580489944761-15a19d654956?w=100&h=100&fit=crop\",\n },\n {\n id: \"6\",\n quote: '\"I had a great experience using this platform. The process was smooth from start to finish, and I was able to quickly find a place that met my criteria.\"',\n author: \"Mary Trott\",\n location: \"Chicago, IL\",\n avatar: \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop\",\n },\n];\n\ninterface ReviewsGridProps {\n title?: string;\n subtitle?: string;\n reviews?: Review[];\n}\n\nexport function ReviewsGrid({ \n title = \"Loved by people worldwide\",\n subtitle = \"TESTIMONIALS\",\n reviews = defaultReviews \n}: ReviewsGridProps) {\n // Split reviews into 3 columns\n const columns = [\n reviews.slice(0, 2),\n reviews.slice(2, 4),\n reviews.slice(4, 6),\n ];\n\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10 py-10 md:py-16\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto\">\n {/* Header */}\n <div style={{ marginBottom: \"var(--spacing-7xl)\" }}>\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\" style={{ marginBottom: \"var(--spacing-lg)\" }}>\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n\n {/* Reviews Grid - 3 columns */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10\">\n {columns.map((column, colIndex) => (\n <div key={colIndex} className=\"flex flex-col gap-8\">\n {column.map((review) => (\n <div \n key={review.id}\n className=\"flex flex-col\"\n style={{\n padding: \"var(--spacing-4xl)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--spacing-md)\",\n gap: \"var(--spacing-2xl)\",\n boxShadow: \"0px 1px 8px 0px rgba(0, 0, 0, 0.03)\",\n }}\n >\n <Typography variant=\"body-l\" color=\"muted\">\n {review.quote}\n </Typography>\n <div className=\"flex items-center\" style={{ gap: \"var(--spacing-xl)\" }}>\n <div \n className=\"shrink-0 overflow-hidden\"\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"var(--radius-full)\",\n }}\n >\n <img \n src={review.avatar} \n alt={review.author}\n className=\"w-full h-full object-cover\"\n />\n </div>\n <div>\n <Typography variant=\"body-m\" as=\"p\" style={{ fontWeight: 700 }}>\n {review.author}\n </Typography>\n <Typography variant=\"body-m\" color=\"muted\">\n {review.location}\n </Typography>\n </div>\n </div>\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ArrowRight } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface BlogPost {\n id: string;\n title: string;\n description: string;\n image: string;\n}\n\nconst defaultPosts: BlogPost[] = [\n {\n id: \"1\",\n title: \"Top destinations to visit\",\n description: \"Discover the most exciting and must-visit travel spots around the world, from iconic cities to hidden gems.\",\n image: \"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=400&h=340&fit=crop\",\n },\n {\n id: \"2\",\n title: \"Breathtaking natural wonders\",\n description: \"Explore the world's most awe-inspiring landscapes, from towering mountains to stunning waterfalls and surreal deserts.\",\n image: \"https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=340&fit=crop\",\n },\n {\n id: \"3\",\n title: \"Must-try dishes in Italy\",\n description: \"Indulge in Italy's most delicious and authentic dishes, from creamy pasta to crispy pizzas and decadent desserts.\",\n image: \"https://images.unsplash.com/photo-1498579150354-977475b7ea0b?w=400&h=340&fit=crop\",\n },\n];\n\ninterface BlogCardsProps {\n subtitle?: string;\n title?: string;\n posts?: BlogPost[];\n}\n\nexport function BlogCards({ \n subtitle = \"OUR BLOG\",\n title = \"Get inspired\",\n posts = defaultPosts,\n}: BlogCardsProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col gap-16\">\n {/* Header */}\n <div className=\"flex flex-col gap-3 max-w-[768px]\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n\n {/* Cards Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-10\">\n {posts.map((post) => (\n <div \n key={post.id}\n className=\"flex flex-col overflow-hidden cursor-pointer group\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n borderRadius: \"var(--radius-xl)\",\n }}\n >\n {/* Image */}\n <div \n className=\"w-full h-[340px] overflow-hidden\"\n style={{\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n <img \n src={post.image} \n alt={post.title}\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\n />\n </div>\n \n {/* Content */}\n <div \n className=\"flex flex-col gap-1 p-6\"\n >\n <Typography variant=\"body-xl\" as=\"h3\" style={{ fontWeight: 600 }}>\n {post.title}\n </Typography>\n <Typography variant=\"body-m\" color=\"muted\">\n {post.description}\n </Typography>\n \n {/* Read more */}\n <div className=\"flex items-center gap-2 pt-5\">\n <Typography variant=\"body-m\" as=\"span\" style={{ fontWeight: 500 }}>\n Read more\n </Typography>\n <div \n className=\"flex items-center justify-center\"\n style={{\n width: \"24px\",\n height: \"24px\",\n backgroundColor: \"var(--canvas-text)\",\n borderRadius: \"var(--radius-4xl)\",\n }}\n >\n <ArrowRight size={16} color=\"white\" weight=\"bold\" />\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface CtaBannerProps {\n title?: string;\n buttonText?: string;\n onButtonClick?: () => void;\n}\n\nexport function CtaBanner({ \n title = \"Ready for your next adventure?\",\n buttonText = \"Book now\",\n onButtonClick \n}: CtaBannerProps) {\n return (\n <section \n className=\"w-full px-4 md:px-8 lg:px-10\"\n >\n <div \n className=\"w-full flex flex-col items-center justify-center text-center\"\n style={{\n backgroundColor: \"var(--canvas-dark-section-bg)\",\n borderRadius: \"var(--radius-3xl)\",\n padding: \"var(--spacing-6xl) var(--spacing-5xl) var(--spacing-7xl)\",\n gap: \"var(--spacing-4xl)\",\n }}\n >\n <Typography \n variant=\"h3\" \n as=\"h2\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n <Button \n variant=\"primary\" \n size=\"lg\"\n onClick={onButtonClick}\n >\n {buttonText}\n </Button>\n </div>\n </section>\n );\n}\n\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { FacebookLogo, TwitterLogo, LinkedinLogo, InstagramLogo } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface FooterNavbarProps {\n companyName?: string;\n}\n\nexport function FooterNavbar({ companyName = \"Sample app\" }: FooterNavbarProps) {\n return (\n <footer \n className=\"w-full px-4 md:px-8 lg:px-10 py-8 md:py-12\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col md:flex-row items-start md:items-center justify-between gap-6\">\n {/* Left Side - Links */}\n <div className=\"flex flex-col\" style={{ gap: \"var(--spacing-md)\" }}>\n <div \n className=\"flex items-center flex-wrap\"\n style={{ gap: \"var(--spacing-4xl)\" }}\n >\n <Link href=\"/\" className=\"hover:opacity-80 transition-opacity\">\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\" style={{ fontWeight: 600 }}>\n Home\n </Typography>\n </Link>\n <Link href=\"#\" className=\"hover:opacity-80 transition-opacity\">\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\" style={{ fontWeight: 600 }}>\n About us\n </Typography>\n </Link>\n </div>\n <div \n className=\"flex items-center flex-wrap\"\n style={{ gap: \"var(--spacing-3xl)\" }}\n >\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\">\n © {companyName}\n </Typography>\n <span style={{ color: \"var(--canvas-text-placeholder)\" }}>|</span>\n <Link href=\"#\" className=\"hover:opacity-80 transition-opacity\">\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\">\n Privacy Policy\n </Typography>\n </Link>\n <span style={{ color: \"var(--canvas-text-placeholder)\" }}>|</span>\n <Link href=\"#\" className=\"hover:opacity-80 transition-opacity\">\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\">\n Terms of use\n </Typography>\n </Link>\n </div>\n </div>\n\n {/* Right Side - Social Icons */}\n <div \n className=\"flex items-center\"\n style={{ gap: \"var(--spacing-4xl)\" }}\n >\n <Link \n href=\"#\" \n className=\"hover:opacity-80 transition-opacity\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <FacebookLogo size={24} />\n </Link>\n <Link \n href=\"#\" \n className=\"hover:opacity-80 transition-opacity\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <TwitterLogo size={24} />\n </Link>\n <Link \n href=\"#\" \n className=\"hover:opacity-80 transition-opacity\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <LinkedinLogo size={24} />\n </Link>\n <Link \n href=\"#\" \n className=\"hover:opacity-80 transition-opacity\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n >\n <InstagramLogo size={24} />\n </Link>\n </div>\n </div>\n </footer>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface CenteredHeroProps {\n title?: string;\n subtitle?: string;\n image?: string;\n}\n\nexport function CenteredHero({\n title = \"We're democratizing software development\",\n subtitle = \"We are committed to developing cutting-edge solutions that help our customers achieve their goals\",\n image = \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=1200&h=700&fit=crop\",\n}: CenteredHeroProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col items-center gap-10 md:gap-16\">\n {/* Header Content */}\n <div className=\"flex flex-col items-center gap-4 max-w-[768px] text-center\">\n <Typography variant=\"h1\" as=\"h1\">\n {title}\n </Typography>\n <Typography variant=\"body-xl\" color=\"muted\">\n {subtitle}\n </Typography>\n </div>\n\n {/* Featured Image */}\n <div\n className=\"w-full max-w-[992px] rounded-xl overflow-hidden\"\n style={{\n border: \"1.8px solid var(--canvas-border)\",\n boxShadow: \"0px 4px 96px 0px rgba(0,0,0,0.08)\",\n }}\n >\n <img\n src={image}\n alt=\"Featured\"\n className=\"w-full h-[300px] md:h-[500px] lg:h-[590px] object-cover\"\n />\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface Metric {\n value: string;\n label: string;\n}\n\ninterface MetricsSectionProps {\n subtitle?: string;\n title?: string;\n metrics?: Metric[];\n}\n\nconst defaultMetrics: Metric[] = [\n { value: \"1,200+\", label: \"Team members\" },\n { value: \"2016\", label: \"Year founded\" },\n { value: \"3.5M+\", label: \"Users\" },\n { value: \"$22M\", label: \"In total funding\" },\n];\n\nexport function MetricsSection({\n subtitle = \"KEY METRICS\",\n title = \"At a glance\",\n metrics = defaultMetrics,\n}: MetricsSectionProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-12 md:py-16\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col gap-8 md:gap-12\">\n {/* Header */}\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" className=\"uppercase tracking-wide\" color=\"muted\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n\n {/* Metrics Grid */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-6 md:gap-16\">\n {metrics.map((metric, index) => (\n <div\n key={index}\n className=\"flex flex-col gap-2 pl-4 md:pl-5 py-1.5\"\n style={{\n borderLeft: \"1px solid var(--canvas-border)\",\n }}\n >\n <Typography variant=\"h1\" as=\"span\">\n {metric.value}\n </Typography>\n <Typography variant=\"body-l\" as=\"span\" color=\"muted\">\n {metric.label}\n </Typography>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport {\n Rocket,\n UserFocus,\n UsersFour,\n Eye,\n Books,\n Lightning,\n} from \"@phosphor-icons/react\";\nimport { ReactNode } from \"react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface Value {\n icon: ReactNode;\n title: string;\n description: string;\n}\n\ninterface CoreValuesGridProps {\n variant?: \"light\" | \"dark\";\n subtitle?: string;\n title?: string;\n description?: string;\n values?: Value[];\n}\n\nconst defaultValues: Value[] = [\n {\n icon: <Rocket size={32} weight=\"duotone\" />,\n title: \"Innovation\",\n description:\n \"We are committed to constantly pushing boundaries and exploring new ideas, technologies, and solutions to drive innovation and progress\",\n },\n {\n icon: <UserFocus size={32} weight=\"duotone\" />,\n title: \"Customers first\",\n description:\n \"Our customers are at the center of everything we do, and we are dedicated to providing them with the best possible experience and support\",\n },\n {\n icon: <UsersFour size={32} weight=\"duotone\" />,\n title: \"Teamwork\",\n description:\n \"We believe in the power of collaboration and teamwork, and we strive to foster a supportive and inclusive environment\",\n },\n {\n icon: <Eye size={32} weight=\"duotone\" />,\n title: \"Accountability\",\n description:\n \"We take responsibility for our actions and decisions, and we hold ourselves accountable to the highest standards\",\n },\n {\n icon: <Books size={32} weight=\"duotone\" />,\n title: \"Continuous learning\",\n description:\n \"We believe in the importance of continuous learning and growth, and we encourage our team members to pursue development opportunities\",\n },\n {\n icon: <Lightning size={32} weight=\"duotone\" />,\n title: \"Agility\",\n description:\n \"We are adaptable and nimble, and we embrace change as an opportunity to grow and improve\",\n },\n];\n\nexport function CoreValuesGrid({\n variant = \"light\",\n subtitle = \"CORE VALUES\",\n title = \"How we work\",\n description = \"Guided by our core values, we strive to exceed expectations and create meaningful experiences\",\n values = defaultValues,\n}: CoreValuesGridProps) {\n const isDark = variant === \"dark\";\n\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{\n backgroundColor: isDark\n ? \"var(--canvas-dark-section-bg)\"\n : \"var(--canvas-background)\",\n }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col items-center gap-10 md:gap-12\">\n {/* Header */}\n <div className=\"flex flex-col items-center gap-4 md:gap-6 max-w-[768px] text-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography\n variant=\"h3\"\n as=\"h2\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {title}\n </Typography>\n </div>\n <Typography\n variant=\"body-l\"\n color=\"muted\"\n className=\"max-w-[576px]\"\n {...(isDark && { style: { color: \"rgba(255, 255, 255, 0.7)\" } })}\n >\n {description}\n </Typography>\n </div>\n\n {/* Values Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-12 md:gap-20 w-full\">\n {values.map((value, index) => (\n <div key={index} className=\"flex flex-col gap-5\">\n {/* Icon */}\n <div\n className=\"w-16 h-16 rounded-lg flex items-center justify-center\"\n style={{\n backgroundColor: \"var(--canvas-border)\",\n color: \"var(--canvas-text)\",\n }}\n >\n {value.icon}\n </div>\n\n {/* Text */}\n <div className=\"flex flex-col gap-2\">\n <Typography\n variant=\"h6\"\n as=\"h3\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {value.title}\n </Typography>\n <Typography\n variant=\"body-m\"\n color=\"muted\"\n {...(isDark && { style: { color: \"rgba(255, 255, 255, 0.7)\" } })}\n >\n {value.description}\n </Typography>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface ContentWithImageProps {\n subtitle?: string;\n title?: string;\n description?: string;\n image?: string;\n imagePosition?: \"left\" | \"right\";\n}\n\nexport function ContentWithImage({\n subtitle = \"ABOUT US\",\n title = \"Helping startups succeed\",\n description = `Our company was founded with the goal of empowering people through technology, and we remain committed to this mission today.\n\nWe are driven by a passion for innovation and a desire to make a positive impact on the world. We believe that technology has the power to transform lives, and we are committed to developing cutting-edge solutions that help our customers achieve their goals.`,\n image = \"https://images.unsplash.com/photo-1522071820081-009f0129c71c?w=800&h=600&fit=crop\",\n imagePosition = \"right\",\n}: ContentWithImageProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto\">\n <div\n className={`flex flex-col ${\n imagePosition === \"left\" ? \"md:flex-row-reverse\" : \"md:flex-row\"\n } gap-10 md:gap-20 items-center`}\n >\n {/* Text Content */}\n <div className=\"flex flex-col gap-6 w-full md:w-[568px] md:shrink-0\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n <Typography variant=\"body-l\" color=\"muted\" className=\"whitespace-pre-line\">\n {description}\n </Typography>\n </div>\n\n {/* Image */}\n <div\n className=\"w-full md:flex-1 rounded-xl overflow-hidden\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n boxShadow: \"0px 0px 96px 0px rgba(13,18,28,0.08)\",\n }}\n >\n <img\n src={image}\n alt={title}\n className=\"w-full h-[280px] md:h-[420px] object-cover\"\n />\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LinkedinLogo, XLogo } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface TeamMember {\n name: string;\n role: string;\n image: string;\n linkedIn?: string;\n twitter?: string;\n}\n\ninterface TeamCardsGridProps {\n subtitle?: string;\n title?: string;\n description?: string;\n members?: TeamMember[];\n}\n\nconst defaultMembers: TeamMember[] = [\n {\n name: \"Jeffrey Connor\",\n role: \"Co-founder & CEO\",\n image:\n \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Lily Sun\",\n role: \"Co-founder\",\n image:\n \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Rajesh Mishra\",\n role: \"Chief Technology Officer\",\n image:\n \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Francis Gaddi\",\n role: \"Chief Operating Officer\",\n image:\n \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Aya Williams\",\n role: \"Chief Marketing Officer\",\n image:\n \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Gabi del Rosario\",\n role: \"Chief Product Officer\",\n image:\n \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Taylor Reed\",\n role: \"VP of Customer Success\",\n image:\n \"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Stacey Jones\",\n role: \"VP of Finance\",\n image:\n \"https://images.unsplash.com/photo-1580489944761-15a19d654956?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n];\n\nexport function TeamCardsGrid({\n subtitle = \"PEOPLE\",\n title = \"Our team\",\n description = \"We are fortunate to work with amazing people all over the world\",\n members = defaultMembers,\n}: TeamCardsGridProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col gap-10 md:gap-12\">\n {/* Header */}\n <div className=\"flex flex-col gap-4 md:gap-6\">\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n <Typography variant=\"body-l\" color=\"muted\">\n {description}\n </Typography>\n </div>\n\n {/* Team Grid */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6 md:gap-8\">\n {members.map((member, index) => (\n <div\n key={index}\n className=\"rounded-xl overflow-hidden\"\n style={{\n border: \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Photo */}\n <div\n className=\"w-full h-[220px] md:h-[286px]\"\n style={{\n borderBottom: \"1px solid var(--canvas-border)\",\n }}\n >\n <img\n src={member.image}\n alt={member.name}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Info */}\n <div className=\"flex flex-col gap-1 p-6 pb-6\">\n <Typography variant=\"body-xl\" as=\"h3\">\n {member.name}\n </Typography>\n <Typography variant=\"body-l\" as=\"p\" color=\"muted\">\n {member.role}\n </Typography>\n\n {/* Social Links */}\n <div className=\"flex gap-2.5 pt-2\">\n {member.linkedIn && (\n <a\n href={member.linkedIn}\n className=\"opacity-60 hover:opacity-100 transition-opacity\"\n style={{ color: \"var(--canvas-text)\" }}\n >\n <LinkedinLogo size={24} weight=\"fill\" />\n </a>\n )}\n {member.twitter && (\n <a\n href={member.twitter}\n className=\"opacity-60 hover:opacity-100 transition-opacity\"\n style={{ color: \"var(--canvas-text)\" }}\n >\n <XLogo size={22} weight=\"fill\" />\n </a>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { LinkedinLogo, XLogo } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface TeamMember {\n name: string;\n role: string;\n image: string;\n linkedIn?: string;\n twitter?: string;\n}\n\ninterface TeamCircularGridProps {\n subtitle?: string;\n title?: string;\n description?: string;\n members?: TeamMember[];\n}\n\nconst defaultMembers: TeamMember[] = [\n {\n name: \"Jeffrey Connor\",\n role: \"Co-founder & CEO\",\n image:\n \"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Lily Sun\",\n role: \"Co-founder\",\n image:\n \"https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Rajesh Mishra\",\n role: \"Chief Technology Officer\",\n image:\n \"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Francis Gaddi\",\n role: \"Chief Operating Officer\",\n image:\n \"https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Aya Williams\",\n role: \"Chief Marketing Officer\",\n image:\n \"https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Gabi del Rosario\",\n role: \"Chief Product Officer\",\n image:\n \"https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Taylor Reed\",\n role: \"VP of Customer Success\",\n image:\n \"https://images.unsplash.com/photo-1519345182560-3f2917c472ef?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n {\n name: \"Stacey Jones\",\n role: \"VP of Finance\",\n image:\n \"https://images.unsplash.com/photo-1580489944761-15a19d654956?w=400&h=400&fit=crop&crop=face\",\n linkedIn: \"#\",\n twitter: \"#\",\n },\n];\n\nexport function TeamCircularGrid({\n subtitle = \"PEOPLE\",\n title = \"Our team\",\n description = \"We are fortunate to work with amazing people all over the world\",\n members = defaultMembers,\n}: TeamCircularGridProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col items-center gap-10 md:gap-12\">\n {/* Header */}\n <div className=\"flex flex-col items-center gap-4 md:gap-6 text-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n <Typography variant=\"body-l\" color=\"muted\">\n {description}\n </Typography>\n </div>\n\n {/* Team Grid */}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-6 md:gap-8 w-full\">\n {members.map((member, index) => (\n <div\n key={index}\n className=\"flex flex-col items-center gap-5 rounded-xl\"\n >\n {/* Circular Photo */}\n <div className=\"w-[160px] h-[160px] md:w-[240px] md:h-[240px] rounded-full overflow-hidden\">\n <img\n src={member.image}\n alt={member.name}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Info */}\n <div className=\"flex flex-col items-center gap-1 text-center px-4 pb-4\">\n <Typography variant=\"body-xl\" as=\"h3\">\n {member.name}\n </Typography>\n <Typography variant=\"body-l\" as=\"p\" color=\"muted\">\n {member.role}\n </Typography>\n\n {/* Social Links */}\n <div className=\"flex gap-2.5 pt-2\">\n {member.linkedIn && (\n <a\n href={member.linkedIn}\n className=\"opacity-60 hover:opacity-100 transition-opacity\"\n style={{ color: \"var(--canvas-text)\" }}\n >\n <LinkedinLogo size={24} weight=\"fill\" />\n </a>\n )}\n {member.twitter && (\n <a\n href={member.twitter}\n className=\"opacity-60 hover:opacity-100 transition-opacity\"\n style={{ color: \"var(--canvas-text)\" }}\n >\n <XLogo size={22} weight=\"fill\" />\n </a>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { ArrowRight } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface NewsItem {\n title: string;\n description: string;\n image: string;\n href?: string;\n}\n\ninterface FeaturedNewsCardsProps {\n variant?: \"light\" | \"dark\";\n subtitle?: string;\n title?: string;\n description?: string;\n items?: NewsItem[];\n}\n\nconst defaultItems: NewsItem[] = [\n {\n title: \"How this company is using AI to 10x its revenue\",\n description:\n \"Explore how this company is leveraging AI to enhance innovation, streamline operations, and improve customer experiences\",\n image:\n \"https://images.unsplash.com/photo-1497366216548-37526070297c?w=800&h=500&fit=crop\",\n href: \"#\",\n },\n {\n title: \"Fundraise on confidence\",\n description:\n \"Discover how our founders successfully raised over $200 million and gain insights to fuel your own fundraising journey.\",\n image:\n \"https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?w=800&h=500&fit=crop\",\n href: \"#\",\n },\n];\n\nexport function FeaturedNewsCards({\n variant = \"light\",\n subtitle = \"IN THE PRESS\",\n title = \"Featured news\",\n description = \"Stay updated with the latest headlines, media coverage, and featured stories about us from top publications\",\n items = defaultItems,\n}: FeaturedNewsCardsProps) {\n const isDark = variant === \"dark\";\n\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{\n backgroundColor: isDark\n ? \"var(--canvas-dark-section-bg)\"\n : \"var(--canvas-background)\",\n }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col items-center gap-12 md:gap-16\">\n {/* Header */}\n <div className=\"flex flex-col items-center gap-4 md:gap-6 max-w-[768px] text-center\">\n <div className=\"flex flex-col items-center gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography\n variant=\"h3\"\n as=\"h2\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {title}\n </Typography>\n </div>\n <Typography\n variant=\"body-l\"\n color=\"muted\"\n {...(isDark && { style: { color: \"rgba(255, 255, 255, 0.7)\" } })}\n >\n {description}\n </Typography>\n </div>\n\n {/* News Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-8 md:gap-10 w-full\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"rounded-xl overflow-hidden\"\n style={{\n backgroundColor: isDark\n ? \"var(--canvas-dark-card-bg)\"\n : \"var(--canvas-background)\",\n border: isDark ? \"none\" : \"1px solid var(--canvas-border)\",\n }}\n >\n {/* Image */}\n <div className=\"w-full h-[220px] md:h-[340px]\">\n <img\n src={item.image}\n alt={item.title}\n className=\"w-full h-full object-cover\"\n />\n </div>\n\n {/* Content */}\n <div className=\"flex flex-col gap-1 p-6\">\n <Typography\n variant=\"h6\"\n as=\"h3\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n {item.title}\n </Typography>\n <Typography\n variant=\"body-m\"\n color=\"muted\"\n {...(isDark && { style: { color: \"rgba(255, 255, 255, 0.7)\" } })}\n >\n {item.description}\n </Typography>\n\n {/* Read More Link */}\n <a\n href={item.href || \"#\"}\n className=\"flex items-center gap-2 pt-5 group\"\n >\n <Typography\n variant=\"body-m\"\n as=\"span\"\n {...(isDark && { style: { color: \"white\" } })}\n >\n Read more\n </Typography>\n <div\n className=\"w-6 h-6 rounded-full flex items-center justify-center group-hover:translate-x-1 transition-transform\"\n style={{\n backgroundColor: isDark\n ? \"rgba(255, 255, 255, 0.5)\"\n : \"var(--canvas-text)\",\n }}\n >\n <ArrowRight size={16} weight=\"bold\" color=\"white\" />\n </div>\n </a>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Typography } from \"../../ui/typography\";\n\ninterface Office {\n city: string;\n address: string[];\n}\n\ninterface OfficeLocationsProps {\n subtitle?: string;\n title?: string;\n description?: string;\n offices?: Office[];\n}\n\nconst defaultOffices: Office[] = [\n {\n city: \"San Francisco\",\n address: [\n \"972 Mission Street Knotel Fl 3\",\n \"San Francisco, CA, 94103\",\n \"United States\",\n ],\n },\n {\n city: \"Vancouver\",\n address: [\"1007 Hampton Orchard Rd 23\", \"Vancouver, 1607\", \"Canada\"],\n },\n {\n city: \"Sydney\",\n address: [\"304 Hampton Orchard Rd 23\", \"Sydney, NSW, 1607\", \"Australia\"],\n },\n];\n\nexport function OfficeLocations({\n subtitle = \"LOCATIONS\",\n title = \"Our offices\",\n description = \"We have global offices—reach out to us today!\",\n offices = defaultOffices,\n}: OfficeLocationsProps) {\n return (\n <section\n className=\"w-full px-6 md:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"max-w-[1240px] mx-auto flex flex-col gap-10 md:gap-12\">\n {/* Header */}\n <div className=\"flex flex-col gap-4 md:gap-6\">\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"body-xs\" as=\"span\" color=\"muted\" className=\"uppercase tracking-wide\">\n {subtitle}\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n {title}\n </Typography>\n </div>\n <Typography variant=\"body-l\" color=\"muted\">\n {description}\n </Typography>\n </div>\n\n {/* Office Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6 md:gap-8\">\n {offices.map((office, index) => (\n <div\n key={index}\n className=\"flex flex-col gap-4 p-6 md:p-8 rounded-lg\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n }}\n >\n <Typography variant=\"h6\" as=\"h3\">\n {office.city}\n </Typography>\n <div className=\"flex flex-col\">\n {office.address.map((line, lineIndex) => (\n <Typography key={lineIndex} variant=\"body-l\" as=\"span\" color=\"muted\">\n {line}\n </Typography>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, Info, Sparkle } from \"@phosphor-icons/react\";\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface PlanFeature {\n text: string;\n hasInfo?: boolean;\n}\n\ninterface PricingPlan {\n name: string;\n price: number;\n period: string;\n description: string;\n features: PlanFeature[];\n isPopular?: boolean;\n hasAI?: boolean;\n}\n\nconst plans: PricingPlan[] = [\n {\n name: \"Starter\",\n price: 25,\n period: \"/month\",\n description: \"Best for hobbyists or individuals\",\n features: [\n { text: \"1 TB storage\", hasInfo: true },\n { text: \"Up to 5 apps and integrations\" },\n { text: \"2 collaborators\" },\n ],\n },\n {\n name: \"Deluxe\",\n price: 70,\n period: \"/month\",\n description: \"Best for small teams\",\n isPopular: true,\n hasAI: true,\n features: [\n { text: \"50 TB storage\" },\n { text: \"Up to 20 apps and integrations\" },\n { text: \"5 collaborators\" },\n { text: \"Dedicated support\" },\n { text: \"Unlimited workspace\" },\n { text: \"Unlimited access\" },\n ],\n },\n {\n name: \"Professional\",\n price: 120,\n period: \"/month\",\n description: \"Best for large teams or enterprises\",\n hasAI: true,\n features: [\n { text: \"Unlimited storage\" },\n { text: \"Up to 50 apps and integrations\" },\n { text: \"12 collaborators\" },\n { text: \"Dedicated support\" },\n { text: \"Unlimited workspace\" },\n { text: \"Unlimited access\" },\n { text: \"Unlimited version history\" },\n ],\n },\n];\n\nexport function PricingCards() {\n const [isAnnual, setIsAnnual] = useState(false);\n\n return (\n <section\n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col items-center gap-12\">\n {/* Header */}\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\">\n PRICING\n </Typography>\n <Typography variant=\"h3\" as=\"h1\">\n Choose the best plan for your team\n </Typography>\n <Typography variant=\"body-l\" color=\"muted\">\n Pay by the month or the year, and cancel at any time\n </Typography>\n\n {/* Billing Toggle */}\n <div className=\"flex items-center gap-2.5 mt-2\">\n <button\n onClick={() => setIsAnnual(!isAnnual)}\n className=\"relative w-20 h-11 rounded-full transition-colors\"\n style={{\n backgroundColor: isAnnual\n ? \"var(--canvas-primary)\"\n : \"var(--canvas-border)\",\n }}\n >\n <div\n className=\"absolute top-1 w-9 h-9 bg-white rounded-full shadow transition-all\"\n style={{\n left: isAnnual ? \"calc(100% - 40px)\" : \"4px\",\n }}\n />\n </button>\n <Typography variant=\"body-m\" as=\"span\">\n Billed annually\n </Typography>\n <span\n className=\"px-2 py-0.5 rounded\"\n style={{\n backgroundColor: \"var(--canvas-surface-brand)\",\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--canvas-primary)\",\n }}\n >\n SAVE 20%\n </span>\n </div>\n </div>\n\n {/* Pricing Cards */}\n <div className=\"w-full flex flex-col gap-8\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n {plans.map((plan) => (\n <div\n key={plan.name}\n className=\"flex flex-col rounded-xl overflow-hidden\"\n style={{\n boxShadow: \"0px 1px 8px 0px rgba(0,0,0,0.03)\",\n }}\n >\n {/* Popular Badge */}\n {plan.isPopular ? (\n <div\n className=\"w-full py-3 text-center\"\n style={{\n backgroundColor: \"var(--canvas-text)\",\n }}\n >\n <Typography variant=\"body-xs\" as=\"span\" style={{ color: \"white\", fontWeight: 600 }}>\n MOST POPULAR\n </Typography>\n </div>\n ) : (\n <div className=\"h-11\" />\n )}\n\n {/* Card Content */}\n <div\n className=\"flex-1 flex flex-col gap-6 p-8\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n borderRadius: plan.isPopular\n ? \"0 0 var(--radius-md) var(--radius-md)\"\n : \"var(--radius-md)\",\n }}\n >\n {/* Plan Info */}\n <div className=\"flex flex-col gap-3\">\n <Typography variant=\"h5\" as=\"h3\">\n {plan.name}\n </Typography>\n <div className=\"flex items-end gap-1\">\n <Typography variant=\"h2\" as=\"span\">\n ${isAnnual ? Math.round(plan.price * 0.8) : plan.price}\n </Typography>\n <Typography variant=\"body-l\" as=\"span\" color=\"muted\" className=\"pb-2.5\">\n {plan.period}\n </Typography>\n </div>\n <Typography variant=\"body-m\" color=\"muted\">\n {plan.description}\n </Typography>\n </div>\n\n {/* CTA Button */}\n <Button variant=\"primary\" size=\"lg\" className=\"w-full\">\n Select plan\n </Button>\n\n {/* Features List */}\n <div className=\"flex flex-col\">\n {/* AI Badge */}\n {plan.hasAI && (\n <div className=\"flex items-center gap-2 py-2\">\n <Sparkle\n size={20}\n weight=\"fill\"\n style={{ color: \"var(--canvas-primary)\" }}\n />\n <Typography\n variant=\"body-m\"\n as=\"span\"\n style={{ fontWeight: 500, color: \"var(--canvas-primary-hover)\" }}\n >\n AI add-on available\n </Typography>\n <span\n className=\"px-2 py-0.5 rounded\"\n style={{\n backgroundColor: \"var(--canvas-surface-brand)\",\n fontFamily: \"var(--typo-global-font)\",\n fontSize: \"12px\",\n fontWeight: 600,\n color: \"var(--canvas-primary)\",\n }}\n >\n NEW\n </span>\n </div>\n )}\n\n {plan.features.map((feature, idx) => (\n <div\n key={idx}\n className=\"flex items-center gap-2 py-2\"\n >\n <Check\n size={20}\n weight=\"bold\"\n style={{ color: \"var(--canvas-primary-hover)\" }}\n />\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\" className=\"flex-1\">\n {feature.text}\n </Typography>\n {feature.hasInfo && (\n <Info\n size={20}\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Contact Us Banner */}\n <div\n className=\"w-full flex flex-col md:flex-row items-start md:items-end justify-between gap-4 p-8 rounded-xl\"\n style={{\n backgroundColor: \"var(--canvas-background)\",\n border: \"1px solid var(--canvas-border)\",\n boxShadow: \"0px 1px 8px 0px rgba(14,30,47,0.03)\",\n }}\n >\n <div className=\"flex flex-col gap-4 flex-1\">\n <Typography variant=\"h5\" as=\"h3\">\n Contact us\n </Typography>\n <Typography variant=\"body-m\" color=\"muted\">\n For advanced security and more flexible controls, speak to\n someone from our team who will help you scale your business\n quickly with custom add-on features.\n </Typography>\n </div>\n <Button variant=\"primary\" size=\"lg\">\n Talk to us\n </Button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, CaretUp, CaretDown, Info } from \"@phosphor-icons/react\";\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface FeatureRow {\n name: string;\n hasInfo?: boolean;\n values: (string | boolean)[];\n}\n\ninterface FeatureCategory {\n name: string;\n features: FeatureRow[];\n}\n\nconst plans = [\"Starter\", \"Deluxe\", \"Professional\"];\n\nconst categories: FeatureCategory[] = [\n {\n name: \"Collaboration\",\n features: [\n { name: \"File uploads\", hasInfo: true, values: [\"1 TB\", \"50 TB\", \"Unlimited\"] },\n { name: \"Team projects\", hasInfo: true, values: [true, true, true] },\n { name: \"Version history\", hasInfo: true, values: [\"-\", \"30 days\", \"Unlimited\"] },\n ],\n },\n {\n name: \"Productivity\",\n features: [\n { name: \"App integration\", hasInfo: true, values: [\"5\", \"20\", \"50\"] },\n { name: \"Customizable dashboard\", hasInfo: true, values: [\"-\", true, true] },\n { name: \"Audio & video\", hasInfo: true, values: [\"-\", true, true] },\n ],\n },\n {\n name: \"Advanced workflows\",\n features: [],\n },\n {\n name: \"Security & compliance\",\n features: [],\n },\n {\n name: \"Support\",\n features: [],\n },\n];\n\nexport function FeaturesComparison() {\n const [expandedCategories, setExpandedCategories] = useState<string[]>([\n \"Collaboration\",\n \"Productivity\",\n ]);\n\n const toggleCategory = (name: string) => {\n setExpandedCategories((prev) =>\n prev.includes(name)\n ? prev.filter((c) => c !== name)\n : [...prev, name]\n );\n };\n\n const renderValue = (value: string | boolean) => {\n if (value === true) {\n return (\n <Check\n size={18}\n weight=\"bold\"\n style={{ color: \"var(--canvas-primary-hover)\" }}\n />\n );\n }\n return (\n <Typography variant=\"body-m\" as=\"span\" color=\"muted\">\n {value}\n </Typography>\n );\n };\n\n return (\n <section\n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"w-full max-w-[1240px] mx-auto flex flex-col items-center gap-12\">\n {/* Header */}\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <Typography variant=\"body-s\" as=\"p\" color=\"muted\" style={{ fontWeight: 600 }}>\n FEATURES\n </Typography>\n <Typography variant=\"h3\" as=\"h2\">\n Powerful features\n </Typography>\n <Typography variant=\"body-l\" color=\"muted\">\n Compare the features for our plans\n </Typography>\n </div>\n\n {/* Comparison Table */}\n <div className=\"w-full flex flex-col\">\n {/* Plan Headers */}\n <div\n className=\"flex border-b\"\n style={{ borderColor: \"var(--canvas-surface)\" }}\n >\n <div className=\"w-[240px] shrink-0\" />\n <div className=\"flex-1 grid grid-cols-3 gap-4\">\n {plans.map((plan) => (\n <div\n key={plan}\n className=\"flex flex-col items-center gap-3 py-5 px-4\"\n >\n <Typography variant=\"body-xl\" as=\"span\" style={{ fontWeight: 600 }}>\n {plan}\n </Typography>\n <Button variant=\"primary\" size=\"default\" className=\"w-full\">\n Select plan\n </Button>\n </div>\n ))}\n </div>\n </div>\n\n {/* Categories */}\n {categories.map((category) => {\n const isExpanded = expandedCategories.includes(category.name);\n const hasFeatures = category.features.length > 0;\n\n return (\n <div key={category.name} className=\"flex flex-col\">\n {/* Category Header */}\n <button\n onClick={() => toggleCategory(category.name)}\n className=\"flex items-center justify-between w-full h-14 px-5 border-b\"\n style={{\n backgroundColor: \"var(--canvas-surface)\",\n borderColor: \"var(--canvas-border)\",\n }}\n >\n <Typography variant=\"body-xl\" as=\"span\" style={{ fontWeight: 600 }}>\n {category.name}\n </Typography>\n {isExpanded ? (\n <CaretUp size={24} style={{ color: \"var(--canvas-text-muted)\" }} />\n ) : (\n <CaretDown size={24} style={{ color: \"var(--canvas-text-muted)\" }} />\n )}\n </button>\n\n {/* Feature Rows */}\n {isExpanded && hasFeatures && (\n <div className=\"flex flex-col\">\n {category.features.map((feature) => (\n <div\n key={feature.name}\n className=\"flex border-b\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n {/* Feature Name */}\n <div className=\"w-[240px] shrink-0 flex items-center gap-2 h-14 pl-6\">\n <Typography variant=\"body-m\" as=\"span\">\n {feature.name}\n </Typography>\n {feature.hasInfo && (\n <Info\n size={16}\n className=\"shrink-0\"\n style={{ color: \"var(--canvas-text-placeholder)\" }}\n />\n )}\n </div>\n\n {/* Values */}\n <div className=\"flex-1 grid grid-cols-3 gap-4\">\n {feature.values.map((value, idx) => (\n <div\n key={idx}\n className=\"flex items-center justify-center h-14 px-4\"\n >\n {renderValue(value)}\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { CaretUp, CaretDown } from \"@phosphor-icons/react\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface FAQItem {\n question: string;\n answer: string;\n}\n\nconst faqs: FAQItem[] = [\n {\n question: \"What kind of support is provided?\",\n answer:\n \"We provide customer support via email, and aim to reply to all requests within 48 hours. Those with Deluxe plan and above gets priority support.\",\n },\n {\n question: \"What's the difference between a Professional plan and an Enterprise plan?\",\n answer:\n \"The Professional plan is designed for large teams with advanced needs, while the Enterprise plan offers custom solutions, dedicated account management, and enhanced security features tailored to your organization.\",\n },\n {\n question: \"Can I cancel my plan at any time?\",\n answer:\n \"Yes, you can cancel your subscription at any time. Your access will continue until the end of your current billing period, and you won't be charged again.\",\n },\n {\n question: \"Where are the uploaded files hosted?\",\n answer:\n \"All files are securely hosted on enterprise-grade cloud infrastructure with data centers located globally. We ensure high availability, redundancy, and compliance with industry security standards.\",\n },\n];\n\nexport function FaqAccordion() {\n const [expandedIndex, setExpandedIndex] = useState<number>(0);\n\n return (\n <section\n className=\"w-full px-4 md:px-8 lg:px-20 py-16 md:py-24\"\n style={{ backgroundColor: \"var(--canvas-background)\" }}\n >\n <div className=\"w-full max-w-[768px] mx-auto flex flex-col items-center\">\n {/* Header */}\n <div className=\"w-full pb-12 text-center\">\n <Typography variant=\"h3\" as=\"h2\">\n FAQs\n </Typography>\n </div>\n\n {/* FAQ Items */}\n <div className=\"w-full flex flex-col\">\n {faqs.map((faq, index) => {\n const isExpanded = expandedIndex === index;\n\n return (\n <div\n key={index}\n className=\"flex flex-col gap-4 py-6 border-b\"\n style={{ borderColor: \"var(--canvas-border)\" }}\n >\n <button\n onClick={() => setExpandedIndex(isExpanded ? -1 : index)}\n className=\"flex items-center justify-between w-full text-left\"\n >\n <Typography variant=\"body-xl\" as=\"span\" style={{ fontWeight: 600 }}>\n {faq.question}\n </Typography>\n {isExpanded ? (\n <CaretUp\n size={24}\n className=\"shrink-0 ml-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n ) : (\n <CaretDown\n size={24}\n className=\"shrink-0 ml-4\"\n style={{ color: \"var(--canvas-text-muted)\" }}\n />\n )}\n </button>\n\n {isExpanded && (\n <Typography variant=\"body-l\" color=\"muted\">\n {faq.answer}\n </Typography>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Footer */}\n <div className=\"flex items-center gap-4 pt-6\">\n <Typography variant=\"body-l\" as=\"span\" color=\"muted\">\n Have more questions?\n </Typography>\n <button\n style={{\n color: \"var(--canvas-primary)\",\n }}\n >\n <Typography variant=\"body-l\" as=\"span\" style={{ fontWeight: 600, color: \"var(--canvas-primary)\" }}>\n Contact us\n </Typography>\n </button>\n </div>\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { Button } from \"../../ui/button\";\nimport { Typography } from \"../../ui/typography\";\n\ninterface PricingCtaProps {\n title?: string;\n primaryButtonText?: string;\n secondaryButtonText?: string;\n onPrimaryClick?: () => void;\n onSecondaryClick?: () => void;\n}\n\nexport function PricingCta({\n title = \"Get started for free\",\n primaryButtonText = \"Open account\",\n secondaryButtonText = \"Explore demo\",\n onPrimaryClick,\n onSecondaryClick,\n}: PricingCtaProps) {\n return (\n <section className=\"w-full px-4 md:px-8 lg:px-20\">\n <div\n className=\"w-full flex flex-col items-center justify-center text-center gap-8 py-12 md:py-16 px-10 overflow-hidden\"\n style={{\n backgroundColor: \"var(--canvas-dark-section-bg)\",\n borderRadius: \"var(--radius-3xl)\",\n }}\n >\n <Typography\n variant=\"h3\"\n as=\"h2\"\n style={{ color: \"white\" }}\n >\n {title}\n </Typography>\n\n <div className=\"flex flex-col sm:flex-row items-center gap-6\">\n <Button variant=\"primary\" size=\"lg\" onClick={onPrimaryClick}>\n {primaryButtonText}\n </Button>\n <Button variant=\"secondary\" size=\"lg\" onClick={onSecondaryClick}>\n {secondaryButtonText}\n </Button>\n </div>\n </div>\n </section>\n );\n}\n\n\n\n\n\n\n","/**\n * Project Context Type Definitions\n * \n * These types define the structure for project data that Cursor AI\n * generates and maintains based on the scope document.\n */\n\n// ═══════════════════════════════════════════════════════════\n// PERSONAS\n// ═══════════════════════════════════════════════════════════\n\nexport interface Persona {\n id: string;\n name: string;\n role: string;\n avatar?: string; // Emoji or image URL\n goals: string[];\n painPoints: string[];\n quote: string;\n}\n\n// ═══════════════════════════════════════════════════════════\n// SCREENS & FLOWCHART\n// ═══════════════════════════════════════════════════════════\n\nexport type ScreenType = \"page\" | \"tab\" | \"modal\" | \"drawer\" | \"state\";\nexport type ScreenStatus = \"draft\" | \"review\" | \"approved\";\n\nexport interface Screen {\n id: string;\n name: string;\n slug: string;\n type: ScreenType;\n icon?: string; // Emoji\n description?: string;\n \n // Hierarchy\n parentId?: string | null;\n \n // Flowchart positioning\n position: { x: number; y: number };\n \n // Status tracking\n status: ScreenStatus;\n \n // Optional: which template/shell to use\n template?: string;\n}\n\nexport interface ScreenConnection {\n id: string;\n sourceId: string;\n targetId: string;\n label?: string; // e.g., \"Click Login\", \"Submit Form\"\n type?: \"navigation\" | \"modal\" | \"redirect\" | \"back\";\n}\n\n// ═══════════════════════════════════════════════════════════\n// PROJECT CONTEXT (main export)\n// ═══════════════════════════════════════════════════════════\n\nexport interface ProjectContext {\n // Project identity\n name: string;\n description?: string;\n \n // Generated content\n personas: Persona[];\n screens: Screen[];\n connections: ScreenConnection[];\n \n // Design direction\n designGoals: string[];\n tone: string[];\n}\n\n// ═══════════════════════════════════════════════════════════\n// HELPERS\n// ═══════════════════════════════════════════════════════════\n\n/**\n * Get the full URL path for a screen, accounting for parent hierarchy\n */\nexport function getScreenUrl(screen: Screen, allScreens: Screen[]): string {\n const parts: string[] = [];\n let current: Screen | undefined = screen;\n \n // Walk up the parent chain\n while (current) {\n // Modals and states don't add to the URL path\n if (current.type !== \"modal\" && current.type !== \"state\") {\n parts.unshift(current.slug);\n }\n current = current.parentId \n ? allScreens.find(s => s.id === current!.parentId) \n : undefined;\n }\n \n return \"/\" + parts.join(\"/\");\n}\n\n/**\n * Get child screens for a given parent\n */\nexport function getChildScreens(parentId: string, allScreens: Screen[]): Screen[] {\n return allScreens.filter(s => s.parentId === parentId);\n}\n\n/**\n * Get top-level screens (no parent)\n */\nexport function getTopLevelScreens(allScreens: Screen[]): Screen[] {\n return allScreens.filter(s => !s.parentId);\n}\n"]}
|