canvas-ui-sdk 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/index.js +326 -277
  2. package/dist/index.js.map +1 -1
  3. package/mcp/dist/index.js +14 -2
  4. package/package.json +1 -1
  5. package/registry/blocks/canvas-item.json +1 -1
  6. package/registry/blocks/chat-message.json +1 -1
  7. package/registry/blocks/component-palette.json +1 -1
  8. package/registry/blocks/component-search.json +1 -1
  9. package/registry/blocks/content-dropzone.json +1 -1
  10. package/registry/blocks/credit-card-display.json +1 -1
  11. package/registry/blocks/custom-component-helper.json +1 -1
  12. package/registry/blocks/empty-state.json +1 -1
  13. package/registry/blocks/faqs-table.json +1 -1
  14. package/registry/blocks/filter-popover.json +1 -1
  15. package/registry/blocks/fixed-column-data-table.json +1 -1
  16. package/registry/blocks/infinity-canvas.json +1 -1
  17. package/registry/blocks/menu-section.json +1 -1
  18. package/registry/blocks/messenger-sidebar.json +1 -1
  19. package/registry/blocks/mobile-bottom-nav.json +1 -1
  20. package/registry/blocks/monthly-calendar-widget.json +1 -1
  21. package/registry/blocks/page-header-section.json +1 -1
  22. package/registry/blocks/page-previews.json +1 -1
  23. package/registry/blocks/pagination.json +1 -1
  24. package/registry/blocks/persona-card.json +1 -1
  25. package/registry/blocks/pill-tabs.json +1 -1
  26. package/registry/blocks/pricing-cards.json +1 -1
  27. package/registry/blocks/profile-card.json +1 -1
  28. package/registry/blocks/profile-info-cards.json +1 -1
  29. package/registry/blocks/prompt-template.json +1 -1
  30. package/registry/blocks/screen-flowchart.json +1 -1
  31. package/registry/blocks/screen-prompt-builder.json +1 -1
  32. package/registry/blocks/screen-prompt-template.json +1 -1
  33. package/registry/blocks/search-bar.json +1 -1
  34. package/registry/blocks/sidebar-cards.json +1 -1
  35. package/registry/blocks/sidebar-profile-card.json +1 -1
  36. package/registry/blocks/slideshow-grid-tiles.json +1 -1
  37. package/registry/blocks/social-feed.json +1 -1
  38. package/registry/blocks/step-tracker.json +1 -1
  39. package/registry/blocks/upvoting-posts-table.json +1 -1
  40. package/registry/blocks/vertical-step-tracker.json +1 -1
  41. package/registry/blocks/video-chat-controls.json +1 -1
  42. package/registry/layout/account-settings-shell.json +1 -1
  43. package/registry/layout/dashboard-shell.json +1 -1
  44. package/registry/layout/double-sidebar-shell.json +1 -1
  45. package/registry/layout/double-sidebar.json +1 -1
  46. package/registry/layout/header.json +1 -1
  47. package/registry/layout/icon-sidebar-shell.json +1 -1
  48. package/registry/layout/icon-sidebar.json +1 -1
  49. package/registry/layout/mobile-menu-shell.json +1 -1
  50. package/registry/layout/multistep-progressbar-shell.json +1 -1
  51. package/registry/layout/multistep-shell.json +1 -1
  52. package/registry/layout/multistep-sidebar-shell.json +1 -1
  53. package/registry/layout/project-context-shell.json +1 -1
  54. package/registry/layout/search-bar-shell.json +1 -1
  55. package/registry/layout/sidebar-nav.json +1 -1
  56. package/registry/layout/sidebar.json +1 -1
  57. package/registry/layout/standard-page-shell.json +1 -1
  58. package/registry/layout/vertical-multistep-shell.json +1 -1
  59. package/registry/ui/avatar.json +1 -1
  60. package/registry/ui/button.json +1 -1
  61. package/registry/ui/checkbox.json +1 -1
  62. package/registry/ui/date-input.json +1 -1
  63. package/registry/ui/image-uploader.json +1 -1
  64. package/registry/ui/line-tabs.json +1 -1
  65. package/registry/ui/multiselect-checkbox-field.json +1 -1
  66. package/registry/ui/multiselect-tags.json +1 -1
  67. package/registry/ui/radio-group.json +1 -1
  68. package/registry/ui/searchbox.json +1 -1
  69. package/registry/ui/select.json +1 -1
  70. package/registry/ui/selectable-pills.json +1 -1
  71. package/registry/ui/slider.json +1 -1
  72. package/registry/ui/switch.json +1 -1
  73. package/registry/ui/tabs.json +1 -1
  74. package/registry/ui/text-input.json +1 -1
  75. package/registry/ui/textarea.json +1 -1
  76. package/styles/tokens.reference.css +9 -0
package/dist/index.js CHANGED
@@ -74,7 +74,7 @@ function AvatarFallback({
74
74
  {
75
75
  "data-slot": "avatar-fallback",
76
76
  className: cn(
77
- "bg-muted flex size-full items-center justify-center rounded-full",
77
+ "bg-[var(--canvas-surface)] flex size-full items-center justify-center rounded-full",
78
78
  className
79
79
  ),
80
80
  ...props
@@ -82,7 +82,7 @@ function AvatarFallback({
82
82
  );
83
83
  }
84
84
  var buttonVariants = cva(
85
- "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]",
85
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all cursor-pointer 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]",
86
86
  {
87
87
  variants: {
88
88
  variant: {
@@ -412,7 +412,7 @@ var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__
412
412
  ref,
413
413
  className: cn(
414
414
  "peer size-4 shrink-0 rounded-[var(--radius-xs)] border border-[var(--canvas-border-input)]",
415
- "bg-white transition-colors",
415
+ "bg-[var(--canvas-background)] transition-colors",
416
416
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2",
417
417
  "disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]",
418
418
  "data-[state=checked]:bg-[var(--canvas-primary)] data-[state=checked]:border-[var(--canvas-primary)]",
@@ -423,7 +423,7 @@ var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__
423
423
  children: /* @__PURE__ */ jsx(
424
424
  CheckboxPrimitive.Indicator,
425
425
  {
426
- className: cn("flex items-center justify-center text-white"),
426
+ className: cn("flex items-center justify-center text-[var(--canvas-primary-foreground)]"),
427
427
  children: /* @__PURE__ */ jsx(Check, { className: "size-3", strokeWidth: 2.5 })
428
428
  }
429
429
  )
@@ -466,7 +466,7 @@ var DateInput = React13.forwardRef(
466
466
  "div",
467
467
  {
468
468
  className: cn(
469
- "flex items-center gap-2 bg-white border border-[var(--canvas-border-input)]",
469
+ "flex items-center gap-2 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)]",
470
470
  "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",
471
471
  "has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-[var(--canvas-input-disabled-bg)] has-[:disabled]:border-[var(--canvas-input-disabled-border)]",
472
472
  className
@@ -1236,7 +1236,7 @@ var ImageUploader = React13.forwardRef(
1236
1236
  disabled: disabled || isFirst,
1237
1237
  className: cn(
1238
1238
  "flex items-center justify-center rounded-full transition-colors",
1239
- isFirst || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-white"
1239
+ isFirst || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)]"
1240
1240
  ),
1241
1241
  style: { width: "24px", height: "24px" },
1242
1242
  children: /* @__PURE__ */ jsx(ChevronLeft, { style: { width: "16px", height: "16px" } })
@@ -1253,7 +1253,7 @@ var ImageUploader = React13.forwardRef(
1253
1253
  disabled: disabled || isLast,
1254
1254
  className: cn(
1255
1255
  "flex items-center justify-center rounded-full transition-colors",
1256
- isLast || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-white"
1256
+ isLast || disabled ? "bg-[var(--canvas-surface)] border border-[var(--canvas-border)] text-[var(--canvas-text-muted)]" : "bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)]"
1257
1257
  ),
1258
1258
  style: { width: "24px", height: "24px" },
1259
1259
  children: /* @__PURE__ */ jsx(ChevronRight, { style: { width: "16px", height: "16px" } })
@@ -1268,7 +1268,7 @@ var ImageUploader = React13.forwardRef(
1268
1268
  handleDelete(image.id);
1269
1269
  },
1270
1270
  disabled,
1271
- className: "flex items-center justify-center rounded-full bg-[var(--canvas-text)] text-white transition-colors",
1271
+ className: "flex items-center justify-center rounded-full bg-[var(--canvas-text)] text-[var(--canvas-primary-foreground)] transition-colors",
1272
1272
  style: { width: "24px", height: "24px" },
1273
1273
  children: /* @__PURE__ */ jsx(Trash2, { style: { width: "16px", height: "16px" } })
1274
1274
  }
@@ -1355,7 +1355,7 @@ function LineTabs({
1355
1355
  {
1356
1356
  onClick: () => handleTabClick(tab.id),
1357
1357
  className: cn(
1358
- "flex items-center justify-center h-full px-0 transition-colors",
1358
+ "flex items-center justify-center h-full px-0 transition-colors cursor-pointer",
1359
1359
  isActive ? "border-b-2 border-[var(--canvas-primary)] text-[var(--canvas-primary)]" : "border-b border-[var(--canvas-border)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)]"
1360
1360
  ),
1361
1361
  children: /* @__PURE__ */ jsx("span", { className: "text-base font-medium leading-6", children: tab.label })
@@ -1400,7 +1400,7 @@ var MultiselectCheckboxField = React13.forwardRef(
1400
1400
  onClick: () => handleToggle(option.id),
1401
1401
  disabled,
1402
1402
  className: cn(
1403
- "flex items-center gap-2 bg-white border overflow-hidden transition-colors",
1403
+ "flex items-center gap-2 bg-[var(--canvas-background)] border overflow-hidden transition-colors",
1404
1404
  "focus:outline-none focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2",
1405
1405
  isSelected ? "border-[var(--canvas-primary)]" : "border-[var(--canvas-border-input)]",
1406
1406
  disabled && "cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)] opacity-60"
@@ -1422,7 +1422,7 @@ var MultiselectCheckboxField = React13.forwardRef(
1422
1422
  {
1423
1423
  className: cn(
1424
1424
  "flex items-center justify-center shrink-0 rounded-[var(--radius-xs)] border transition-colors",
1425
- isSelected ? "bg-[var(--canvas-primary)] border-[var(--canvas-primary)]" : "bg-white border-[var(--canvas-border-input)]",
1425
+ isSelected ? "bg-[var(--canvas-primary)] border-[var(--canvas-primary)]" : "bg-[var(--canvas-background)] border-[var(--canvas-border-input)]",
1426
1426
  disabled && "opacity-60"
1427
1427
  ),
1428
1428
  style: {
@@ -1432,7 +1432,7 @@ var MultiselectCheckboxField = React13.forwardRef(
1432
1432
  children: isSelected && /* @__PURE__ */ jsx(
1433
1433
  Check,
1434
1434
  {
1435
- className: "text-white",
1435
+ className: "text-[var(--canvas-primary-foreground)]",
1436
1436
  style: {
1437
1437
  width: inputSize === "sm" ? "12px" : "16px",
1438
1438
  height: inputSize === "sm" ? "12px" : "16px"
@@ -1489,7 +1489,7 @@ var MultiselectTags = React13.forwardRef(
1489
1489
  "div",
1490
1490
  {
1491
1491
  className: cn(
1492
- "flex flex-wrap items-center gap-1.5 bg-white border border-[var(--canvas-border-input)] p-1.5",
1492
+ "flex flex-wrap items-center gap-1.5 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)] p-1.5",
1493
1493
  "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",
1494
1494
  disabled && "cursor-not-allowed bg-[var(--canvas-input-disabled-bg)] border-[var(--canvas-input-disabled-border)]",
1495
1495
  className
@@ -1603,7 +1603,7 @@ function RadioGroupItem({
1603
1603
  {
1604
1604
  "data-slot": "radio-group-item",
1605
1605
  className: cn(
1606
- "aspect-square size-4 shrink-0 rounded-full border border-[var(--canvas-border-input)] bg-white transition-colors",
1606
+ "aspect-square size-4 shrink-0 rounded-full border border-[var(--canvas-border-input)] bg-[var(--canvas-background)] transition-colors",
1607
1607
  "outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2",
1608
1608
  "aria-invalid:border-[var(--canvas-border-input-invalid)] aria-invalid:ring-[var(--canvas-border-input-invalid)]/20",
1609
1609
  "disabled:cursor-not-allowed disabled:bg-[var(--canvas-input-disabled-bg)] disabled:border-[var(--canvas-input-disabled-border)]",
@@ -1632,7 +1632,7 @@ var TextInput = React13.forwardRef(
1632
1632
  ref,
1633
1633
  disabled,
1634
1634
  className: cn(
1635
- "w-full bg-white border border-[var(--canvas-border-input)]",
1635
+ "w-full bg-[var(--canvas-background)] border border-[var(--canvas-border-input)]",
1636
1636
  "text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)]",
1637
1637
  "focus:outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2",
1638
1638
  "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)]",
@@ -1781,7 +1781,7 @@ var Searchbox = React13.forwardRef(
1781
1781
  "div",
1782
1782
  {
1783
1783
  className: cn(
1784
- "flex items-center gap-2 bg-white border border-[var(--canvas-border-input)]",
1784
+ "flex items-center gap-2 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)]",
1785
1785
  "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",
1786
1786
  "has-[:disabled]:cursor-not-allowed has-[:disabled]:bg-[var(--canvas-input-disabled-bg)] has-[:disabled]:border-[var(--canvas-input-disabled-border)]",
1787
1787
  className
@@ -1822,7 +1822,7 @@ var Searchbox = React13.forwardRef(
1822
1822
  Searchbox.displayName = "Searchbox";
1823
1823
  var selectTriggerVariants = cva(
1824
1824
  // Base styles using CSS variables
1825
- "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)]",
1825
+ "flex w-full items-center justify-between gap-2 bg-[var(--canvas-background)] border border-[var(--canvas-border-input)] text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] 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)]",
1826
1826
  {
1827
1827
  variants: {
1828
1828
  inputSize: {
@@ -2054,12 +2054,12 @@ var SelectablePills = React13.forwardRef(
2054
2054
  onClick: () => handlePillClick(option.id),
2055
2055
  disabled,
2056
2056
  className: cn(
2057
- "inline-flex items-center justify-center rounded-[var(--radius-xs)] border transition-colors",
2057
+ "inline-flex items-center justify-center rounded-[var(--radius-xs)] border transition-colors cursor-pointer",
2058
2058
  "font-medium whitespace-nowrap",
2059
2059
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2",
2060
2060
  "disabled:cursor-not-allowed disabled:opacity-50",
2061
2061
  styles.pill,
2062
- isSelected ? "bg-[var(--canvas-surface-brand)] border-[var(--canvas-primary)] text-[var(--canvas-primary)]" : "bg-white border-[var(--canvas-border)] text-[var(--canvas-text-muted)] hover:border-[var(--canvas-text-muted)]"
2062
+ isSelected ? "bg-[var(--canvas-surface-brand)] border-[var(--canvas-primary)] text-[var(--canvas-primary)]" : "bg-[var(--canvas-background)] border-[var(--canvas-border)] text-[var(--canvas-text-muted)] hover:border-[var(--canvas-text-muted)]"
2063
2063
  ),
2064
2064
  children: option.label
2065
2065
  },
@@ -2939,7 +2939,7 @@ var Slider = React13.forwardRef(({
2939
2939
  SliderPrimitive.Thumb,
2940
2940
  {
2941
2941
  className: cn(
2942
- "block rounded-full border-2 border-white bg-[var(--canvas-primary)]",
2942
+ "block rounded-full border-2 border-[var(--canvas-background)] bg-[var(--canvas-primary)]",
2943
2943
  "shadow-[0px_1px_2px_0px_rgba(0,0,0,0.08)]",
2944
2944
  "ring-offset-background transition-colors",
2945
2945
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--canvas-border-input-focus)] focus-visible:ring-offset-2",
@@ -2986,7 +2986,7 @@ function Switch({
2986
2986
  {
2987
2987
  "data-slot": "switch-thumb",
2988
2988
  className: cn(
2989
- "pointer-events-none block size-4 rounded-full bg-white ring-0 transition-transform",
2989
+ "pointer-events-none block size-4 rounded-full bg-[var(--canvas-background)] ring-0 transition-transform",
2990
2990
  "data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
2991
2991
  )
2992
2992
  }
@@ -3032,7 +3032,7 @@ function TabsTrigger({
3032
3032
  {
3033
3033
  "data-slot": "tabs-trigger",
3034
3034
  className: cn(
3035
- "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",
3035
+ "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] cursor-pointer 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",
3036
3036
  className
3037
3037
  ),
3038
3038
  ...props
@@ -3054,7 +3054,7 @@ function TabsContent({
3054
3054
  }
3055
3055
  var textareaVariants = cva(
3056
3056
  // Base styles using CSS variables
3057
- "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)]",
3057
+ "flex w-full bg-[var(--canvas-background)] 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)]",
3058
3058
  {
3059
3059
  variants: {
3060
3060
  inputSize: {
@@ -3122,8 +3122,20 @@ var colorVariables = [
3122
3122
  { name: "--canvas-primary", default: "#1165ef", label: "Primary" },
3123
3123
  { name: "--canvas-primary-dark", default: "#093378", label: "Primary Dark" },
3124
3124
  { name: "--canvas-primary-foreground", default: "#ffffff", label: "Primary Text" },
3125
- { name: "--canvas-flair-bg", default: "#093378", label: "Flair Background" },
3126
- { name: "--canvas-destructive", default: "#ef4444", label: "Destructive" }
3125
+ { name: "--canvas-flair-bg", default: "#093378", label: "Flair Background" }
3126
+ ]
3127
+ },
3128
+ {
3129
+ category: "Status",
3130
+ variables: [
3131
+ { name: "--canvas-success", default: "#08875d", label: "Success" },
3132
+ { name: "--canvas-success-surface", default: "#edfdf8", label: "Success Surface" },
3133
+ { name: "--canvas-warning", default: "#d97706", label: "Warning" },
3134
+ { name: "--canvas-warning-surface", default: "#fffbeb", label: "Warning Surface" },
3135
+ { name: "--canvas-info", default: "#2563eb", label: "Info" },
3136
+ { name: "--canvas-info-surface", default: "#eff6ff", label: "Info Surface" },
3137
+ { name: "--canvas-destructive", default: "#ef4444", label: "Destructive" },
3138
+ { name: "--canvas-destructive-surface", default: "#fef2f2", label: "Destructive Surface" }
3127
3139
  ]
3128
3140
  },
3129
3141
  {
@@ -3749,7 +3761,7 @@ function Header({
3749
3761
  "button",
3750
3762
  {
3751
3763
  onClick: () => onRemoveCartItem?.(item.id),
3752
- className: "text-left mt-[var(--spacing-xs)] hover:underline",
3764
+ className: "cursor-pointer text-left mt-[var(--spacing-xs)] hover:underline",
3753
3765
  style: {
3754
3766
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
3755
3767
  fontSize: "var(--typo-body-s-size)",
@@ -3832,7 +3844,7 @@ function Header({
3832
3844
  "button",
3833
3845
  {
3834
3846
  onClick: onMarkAsRead,
3835
- className: "hover:underline",
3847
+ className: "cursor-pointer hover:underline",
3836
3848
  style: {
3837
3849
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
3838
3850
  fontSize: "var(--typo-body-s-size)",
@@ -3908,7 +3920,7 @@ function Header({
3908
3920
  "button",
3909
3921
  {
3910
3922
  onClick: onViewMoreMessages,
3911
- className: "hover:underline",
3923
+ className: "cursor-pointer hover:underline",
3912
3924
  style: {
3913
3925
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
3914
3926
  fontSize: "var(--typo-body-s-size)",
@@ -3945,7 +3957,7 @@ function Header({
3945
3957
  "button",
3946
3958
  {
3947
3959
  onClick: onMarkNotificationsAsRead,
3948
- className: "hover:underline",
3960
+ className: "cursor-pointer hover:underline",
3949
3961
  style: {
3950
3962
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
3951
3963
  fontSize: "var(--typo-body-s-size)",
@@ -4022,7 +4034,7 @@ function Header({
4022
4034
  "button",
4023
4035
  {
4024
4036
  onClick: onViewMoreNotifications,
4025
- className: "hover:underline",
4037
+ className: "cursor-pointer hover:underline",
4026
4038
  style: {
4027
4039
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
4028
4040
  fontSize: "var(--typo-body-s-size)",
@@ -4049,7 +4061,7 @@ function Header({
4049
4061
  return /* @__PURE__ */ jsxs(
4050
4062
  "header",
4051
4063
  {
4052
- className: `h-[var(--header-height)] w-full border-b ${isDark ? "bg-[var(--canvas-sidebar-dark-bg)] border-[var(--canvas-sidebar-dark-border)]" : "bg-white border-[var(--canvas-neutral-border)]"}`,
4064
+ className: `h-[var(--header-height)] w-full border-b ${isDark ? "bg-[var(--canvas-sidebar-dark-bg)] border-[var(--canvas-sidebar-dark-border)]" : "bg-[var(--canvas-background)] border-[var(--canvas-neutral-border)]"}`,
4053
4065
  children: [
4054
4066
  /* @__PURE__ */ jsxs("div", { className: "flex items-center h-full px-4 lg:px-[var(--spacing-5xl)]", children: [
4055
4067
  /* @__PURE__ */ jsxs("div", { className: `flex items-center gap-[var(--spacing-md)] h-8 shrink-0 ${showDesktopLogo ? "" : "lg:hidden"}`, children: [
@@ -4095,7 +4107,7 @@ function Header({
4095
4107
  /* @__PURE__ */ jsx(
4096
4108
  "button",
4097
4109
  {
4098
- className: `transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4110
+ className: `cursor-pointer transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4099
4111
  "aria-label": "Search",
4100
4112
  children: /* @__PURE__ */ jsx(Search, { className: "size-4" })
4101
4113
  }
@@ -4104,7 +4116,7 @@ function Header({
4104
4116
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
4105
4117
  "button",
4106
4118
  {
4107
- className: `transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4119
+ className: `cursor-pointer transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4108
4120
  "aria-label": "Notifications",
4109
4121
  children: /* @__PURE__ */ jsx(Bell, { className: "size-4" })
4110
4122
  }
@@ -4115,7 +4127,7 @@ function Header({
4115
4127
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
4116
4128
  "button",
4117
4129
  {
4118
- className: `transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4130
+ className: `cursor-pointer transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4119
4131
  "aria-label": "Messages",
4120
4132
  children: /* @__PURE__ */ jsx(MessageSquare, { className: "size-4" })
4121
4133
  }
@@ -4126,7 +4138,7 @@ function Header({
4126
4138
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
4127
4139
  "button",
4128
4140
  {
4129
- className: `transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4141
+ className: `cursor-pointer transition-colors ${isDark ? "text-white/60 hover:text-white" : "text-[var(--canvas-neutral-text)] hover:text-[var(--canvas-text)]"}`,
4130
4142
  "aria-label": "Cart",
4131
4143
  children: /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4" })
4132
4144
  }
@@ -4154,7 +4166,7 @@ function Header({
4154
4166
  )
4155
4167
  ] }),
4156
4168
  /* @__PURE__ */ jsxs(DropdownMenu, { children: [
4157
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx("button", { className: "rounded-full focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2", children: /* @__PURE__ */ jsxs(Avatar, { className: `size-10 border cursor-pointer ${isDark ? "border-[var(--canvas-sidebar-dark-border)]" : "border-[var(--canvas-neutral-border)]"}`, children: [
4169
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx("button", { className: "cursor-pointer rounded-full focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:ring-offset-2", children: /* @__PURE__ */ jsxs(Avatar, { className: `size-10 border cursor-pointer ${isDark ? "border-[var(--canvas-sidebar-dark-border)]" : "border-[var(--canvas-neutral-border)]"}`, children: [
4158
4170
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarUrl, alt: "User avatar" }),
4159
4171
  /* @__PURE__ */ jsx(
4160
4172
  AvatarFallback,
@@ -4203,7 +4215,7 @@ function Header({
4203
4215
  onClick: () => setIsMobileMenuOpen(false)
4204
4216
  }
4205
4217
  ),
4206
- /* @__PURE__ */ jsxs("div", { className: "absolute right-0 top-0 h-full w-full max-w-sm bg-white shadow-xl", children: [
4218
+ /* @__PURE__ */ jsxs("div", { className: "absolute right-0 top-0 h-full w-full max-w-sm bg-[var(--canvas-background)] shadow-xl", children: [
4207
4219
  /* @__PURE__ */ jsx("div", { className: "flex justify-end p-4", children: /* @__PURE__ */ jsx(
4208
4220
  Button,
4209
4221
  {
@@ -4226,7 +4238,7 @@ function Header({
4226
4238
  }
4227
4239
  setIsMobileMenuOpen(false);
4228
4240
  },
4229
- 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",
4241
+ className: "cursor-pointer 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",
4230
4242
  children: [
4231
4243
  Icon2 && /* @__PURE__ */ jsx(
4232
4244
  "div",
@@ -4355,7 +4367,7 @@ function SidebarNav({ sections, variant = "dark", onItemClick }) {
4355
4367
  }
4356
4368
  },
4357
4369
  className: cn(
4358
- "flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
4370
+ "cursor-pointer flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
4359
4371
  // Dark variant (desktop sidebar)
4360
4372
  isDark && isActive && !hasChildren && "bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]",
4361
4373
  isDark && !isActive && "text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -4414,7 +4426,7 @@ function SidebarNav({ sections, variant = "dark", onItemClick }) {
4414
4426
  {
4415
4427
  onClick: () => onItemClick?.(child),
4416
4428
  className: cn(
4417
- "flex items-center h-9 pl-12 pr-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
4429
+ "cursor-pointer flex items-center h-9 pl-12 pr-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
4418
4430
  // Dark variant
4419
4431
  isDark && isChildActive && "bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]",
4420
4432
  isDark && !isChildActive && "text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -4516,7 +4528,7 @@ function Sidebar2({
4516
4528
  className: cn(
4517
4529
  "flex flex-col h-full w-[var(--sidebar-width)]",
4518
4530
  isDark && "bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]",
4519
- !isDark && "bg-white border-r border-[var(--canvas-border)]",
4531
+ !isDark && "bg-[var(--canvas-background)] border-r border-[var(--canvas-border)]",
4520
4532
  className
4521
4533
  ),
4522
4534
  children: [
@@ -4545,9 +4557,9 @@ function Sidebar2({
4545
4557
  })() })
4546
4558
  ] }),
4547
4559
  /* @__PURE__ */ jsx("span", { className: cn(
4548
- "text-xl font-semibold ml-[var(--spacing-md)]",
4560
+ "font-semibold ml-[var(--spacing-md)]",
4549
4561
  isDark ? "text-white" : "text-[var(--canvas-text)]"
4550
- ), children: branding.wordmark || "canvas" })
4562
+ ), style: { fontSize: "var(--typo-body-xl-size)" }, children: branding.wordmark || "canvas" })
4551
4563
  ] })
4552
4564
  ) }),
4553
4565
  /* @__PURE__ */ jsx(ScrollArea, { className: "flex-1 px-[var(--spacing-2xl)] pb-[var(--spacing-5xl)]", children: /* @__PURE__ */ jsx(
@@ -4650,7 +4662,7 @@ function DashboardShell({
4650
4662
  onAppMenuClick?.();
4651
4663
  console.log("App menu clicked - implement app-level mobile menu here");
4652
4664
  };
4653
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
4665
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
4654
4666
  /* @__PURE__ */ jsx("div", { className: "fixed top-0 left-0 right-0 lg:left-[var(--sidebar-width)] z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick }) }),
4655
4667
  /* @__PURE__ */ jsx("div", { className: "hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--sidebar-width)]", children: /* @__PURE__ */ jsx(
4656
4668
  Sidebar2,
@@ -4669,7 +4681,7 @@ function DashboardShell({
4669
4681
  "top-[calc(var(--header-height)+4px)]",
4670
4682
  "flex items-center justify-center",
4671
4683
  "size-11",
4672
- "bg-white",
4684
+ "bg-[var(--canvas-background)]",
4673
4685
  "border border-l-0 border-[var(--canvas-neutral-border)]",
4674
4686
  "rounded-r-[var(--radius-xs)]",
4675
4687
  "shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]",
@@ -4781,7 +4793,7 @@ function IconNavItem({ item, variant = "dark", onClick }) {
4781
4793
  {
4782
4794
  onClick,
4783
4795
  className: cn(
4784
- "relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors",
4796
+ "cursor-pointer relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors",
4785
4797
  // Dark variant
4786
4798
  isDark && isActive && "bg-[var(--canvas-sidebar-dark-active-bg)]",
4787
4799
  isDark && !isActive && "hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -4852,7 +4864,7 @@ function IconSidebar({
4852
4864
  className: cn(
4853
4865
  "flex flex-col items-center h-full w-[var(--icon-sidebar-width)]",
4854
4866
  isDark && "bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]",
4855
- !isDark && "bg-white border-r border-[var(--canvas-border)]",
4867
+ !isDark && "bg-[var(--canvas-background)] border-r border-[var(--canvas-border)]",
4856
4868
  className
4857
4869
  ),
4858
4870
  children: [
@@ -4908,7 +4920,7 @@ function IconSidebarShell({
4908
4920
  onAppMenuClick?.();
4909
4921
  console.log("App menu clicked - implement app-level mobile menu here");
4910
4922
  };
4911
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
4923
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
4912
4924
  /* @__PURE__ */ jsx("div", { className: "fixed top-0 left-0 right-0 lg:left-[var(--icon-sidebar-width)] z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick }) }),
4913
4925
  /* @__PURE__ */ jsx("div", { className: "hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--icon-sidebar-width)]", children: /* @__PURE__ */ jsx(
4914
4926
  IconSidebar,
@@ -4927,7 +4939,7 @@ function IconSidebarShell({
4927
4939
  "top-[calc(var(--header-height)+4px)]",
4928
4940
  "flex items-center justify-center",
4929
4941
  "size-11",
4930
- "bg-white",
4942
+ "bg-[var(--canvas-background)]",
4931
4943
  "border border-l-0 border-[var(--canvas-neutral-border)]",
4932
4944
  "rounded-r-[var(--radius-xs)]",
4933
4945
  "shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]",
@@ -5115,7 +5127,7 @@ function IconColumnItem({ section, isActive, variant, onClick }) {
5115
5127
  {
5116
5128
  onClick,
5117
5129
  className: cn(
5118
- "relative flex flex-col items-center justify-center gap-1 w-11 h-11 rounded-[var(--radius-nav)] transition-colors",
5130
+ "cursor-pointer relative flex flex-col items-center justify-center gap-1 w-11 h-11 rounded-[var(--radius-nav)] transition-colors",
5119
5131
  // Dark variant
5120
5132
  isDark && isActive && "bg-[var(--canvas-sidebar-dark-active-bg)]",
5121
5133
  isDark && !isActive && "hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -5148,7 +5160,7 @@ function NavTabItem({ tab, isActive, variant, onClick }) {
5148
5160
  {
5149
5161
  onClick,
5150
5162
  className: cn(
5151
- "flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
5163
+ "cursor-pointer flex items-center gap-[var(--spacing-md)] h-11 px-[var(--spacing-xl)] rounded-[var(--radius-nav)] w-full text-left transition-colors",
5152
5164
  // Dark variant
5153
5165
  isDark && isActive && "bg-[var(--canvas-sidebar-dark-active-bg)] text-[var(--canvas-sidebar-dark-active-text)]",
5154
5166
  isDark && !isActive && "text-[var(--canvas-sidebar-dark-text)] hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -5210,7 +5222,7 @@ function DoubleSidebar({
5210
5222
  className: cn(
5211
5223
  "flex flex-col items-center w-[var(--icon-sidebar-width)] shrink-0",
5212
5224
  isIconDark && "bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]",
5213
- !isIconDark && "bg-white border-r border-[var(--canvas-border)]"
5225
+ !isIconDark && "bg-[var(--canvas-background)] border-r border-[var(--canvas-border)]"
5214
5226
  ),
5215
5227
  children: [
5216
5228
  /* @__PURE__ */ jsx("div", { className: `flex items-center justify-center shrink-0 py-5 ${isMounted ? "opacity-100" : "opacity-0"}`, children: logoUrl ? /* @__PURE__ */ jsx(
@@ -5249,7 +5261,7 @@ function DoubleSidebar({
5249
5261
  className: cn(
5250
5262
  "flex flex-col w-[var(--nav-sidebar-width)]",
5251
5263
  isNavDark && "bg-[var(--canvas-sidebar-dark-bg)] border-r border-[var(--canvas-sidebar-dark-border)]",
5252
- !isNavDark && "bg-white border-r border-[var(--canvas-border)] shadow-[0_4px_16px_0_rgba(0,0,0,0.04)]"
5264
+ !isNavDark && "bg-[var(--canvas-background)] border-r border-[var(--canvas-border)] shadow-[0_4px_16px_0_rgba(0,0,0,0.04)]"
5253
5265
  ),
5254
5266
  children: /* @__PURE__ */ jsx(ScrollArea, { className: "flex-1 pt-[var(--header-height)] px-[var(--spacing-2xl)] pb-[var(--spacing-5xl)]", children: /* @__PURE__ */ jsx("nav", { className: "flex flex-col gap-0", children: activeSection?.tabs.map((tab) => /* @__PURE__ */ jsx(
5255
5267
  NavTabItem,
@@ -5285,7 +5297,7 @@ function DoubleSidebarShell({
5285
5297
  onAppMenuClick?.();
5286
5298
  console.log("App menu clicked - implement app-level mobile menu here");
5287
5299
  };
5288
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
5300
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
5289
5301
  /* @__PURE__ */ jsx("div", { className: "fixed top-0 left-0 right-0 lg:left-[var(--double-sidebar-width)] z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick }) }),
5290
5302
  /* @__PURE__ */ jsx("div", { className: "hidden lg:block fixed top-0 left-0 bottom-0 z-50 w-[var(--double-sidebar-width)]", children: /* @__PURE__ */ jsx(
5291
5303
  DoubleSidebar,
@@ -5305,7 +5317,7 @@ function DoubleSidebarShell({
5305
5317
  "top-[calc(var(--header-height)+4px)]",
5306
5318
  "flex items-center justify-center",
5307
5319
  "size-11",
5308
- "bg-white",
5320
+ "bg-[var(--canvas-background)]",
5309
5321
  "border border-l-0 border-[var(--canvas-neutral-border)]",
5310
5322
  "rounded-r-[var(--radius-xs)]",
5311
5323
  "shadow-[0px_4px_16px_0px_rgba(0,0,0,0.04)]",
@@ -5434,14 +5446,13 @@ function PageHeaderSection({
5434
5446
  /* @__PURE__ */ jsx(
5435
5447
  "h2",
5436
5448
  {
5437
- className: "text-4xl",
5438
5449
  style: {
5439
- fontFamily: "var(--typo-page-title-font, var(--typo-global-font))",
5440
- fontSize: "var(--typo-page-title-size)",
5441
- fontWeight: "var(--typo-page-title-weight)",
5442
- letterSpacing: "var(--typo-page-title-spacing)",
5443
- lineHeight: "var(--typo-page-title-line-height)",
5444
- color: "var(--typo-page-title-color)"
5450
+ fontFamily: "var(--typo-h4-font, var(--typo-global-font))",
5451
+ fontSize: "var(--typo-h4-size)",
5452
+ fontWeight: "var(--typo-h4-weight)",
5453
+ letterSpacing: "var(--typo-h4-spacing)",
5454
+ lineHeight: "var(--typo-h4-line-height)",
5455
+ color: "var(--typo-h4-color)"
5445
5456
  },
5446
5457
  children: title
5447
5458
  }
@@ -5450,12 +5461,12 @@ function PageHeaderSection({
5450
5461
  "p",
5451
5462
  {
5452
5463
  style: {
5453
- fontFamily: "var(--typo-page-desc-font, var(--typo-global-font))",
5454
- fontSize: "var(--typo-page-desc-size)",
5455
- fontWeight: "var(--typo-page-desc-weight)",
5456
- letterSpacing: "var(--typo-page-desc-spacing)",
5457
- lineHeight: "var(--typo-page-desc-line-height)",
5458
- color: "var(--typo-page-desc-color-muted)"
5464
+ fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
5465
+ fontSize: "var(--typo-body-m-size)",
5466
+ fontWeight: "var(--typo-body-m-weight)",
5467
+ letterSpacing: "var(--typo-body-m-spacing)",
5468
+ lineHeight: "var(--typo-body-m-line-height)",
5469
+ color: "var(--typo-body-m-color-muted)"
5459
5470
  },
5460
5471
  children: description
5461
5472
  }
@@ -5498,7 +5509,7 @@ function StandardPageShell({
5498
5509
  onAppMenuClick?.();
5499
5510
  console.log("App menu clicked - implement app-level mobile menu here");
5500
5511
  };
5501
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
5512
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
5502
5513
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick, showDesktopLogo: true }) }),
5503
5514
  (showBanner || showPageHeader) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col w-full", children: [
5504
5515
  showBanner && /* @__PURE__ */ jsx(FlairBanner, { title: bannerTitle }),
@@ -5538,7 +5549,7 @@ function MobileNavTab({ item, variant = "light", onClick }) {
5538
5549
  onClick,
5539
5550
  className: cn(
5540
5551
  // Match icon-sidebar dimensions: 64px × 64px
5541
- "relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors",
5552
+ "cursor-pointer relative flex flex-col items-center justify-center gap-1 w-16 h-16 rounded-[var(--radius-nav)] transition-colors",
5542
5553
  // Dark variant
5543
5554
  isDark && isActive && "bg-[var(--canvas-sidebar-dark-active-bg)]",
5544
5555
  isDark && !isActive && "hover:bg-[var(--canvas-sidebar-dark-active-bg)]/50",
@@ -5565,12 +5576,13 @@ function MobileNavTab({ item, variant = "light", onClick }) {
5565
5576
  {
5566
5577
  className: cn(
5567
5578
  // Match icon-sidebar: 12px labels, medium weight
5568
- "text-xs font-medium",
5579
+ "font-medium",
5569
5580
  isDark && isActive && "text-[var(--canvas-sidebar-dark-active-text)]",
5570
5581
  isDark && !isActive && "text-[var(--canvas-sidebar-dark-text)]",
5571
5582
  !isDark && isActive && "text-[var(--canvas-sidebar-light-active-text)]",
5572
5583
  !isDark && !isActive && "text-[var(--canvas-sidebar-light-text)]"
5573
5584
  ),
5585
+ style: { fontSize: "var(--typo-sidebar-label-size)" },
5574
5586
  children: item.label
5575
5587
  }
5576
5588
  )
@@ -5642,7 +5654,7 @@ function MobileMenuShell({
5642
5654
  setInternalActiveTab(tab.id);
5643
5655
  }
5644
5656
  };
5645
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
5657
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
5646
5658
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { showDesktopLogo: true }) }),
5647
5659
  /* @__PURE__ */ jsx("main", { className: "w-full", children: /* @__PURE__ */ jsx(
5648
5660
  "div",
@@ -5687,7 +5699,7 @@ function SearchBar({
5687
5699
  {
5688
5700
  className: cn(
5689
5701
  "flex items-center gap-2",
5690
- "bg-white border border-[var(--canvas-border-input)]",
5702
+ "bg-[var(--canvas-background)] border border-[var(--canvas-border-input)]",
5691
5703
  "pr-2",
5692
5704
  "transition-colors",
5693
5705
  "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",
@@ -5776,7 +5788,7 @@ var defaultDateRange = {
5776
5788
  };
5777
5789
  function FilterDropdown({ config, value, onChange }) {
5778
5790
  return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5779
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: config.label }),
5791
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: config.label }),
5780
5792
  /* @__PURE__ */ jsxs(Select, { value: value || void 0, onValueChange: onChange, children: [
5781
5793
  /* @__PURE__ */ jsx(SelectTrigger, { inputSize: "sm", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: config.placeholder }) }),
5782
5794
  /* @__PURE__ */ jsx(SelectContent, { position: "popper", side: "bottom", sideOffset: 4, children: config.options.map((option) => /* @__PURE__ */ jsx(SelectItem, { value: option.id, children: option.label }, option.id)) })
@@ -5851,7 +5863,7 @@ function FilterPopover({
5851
5863
  "button",
5852
5864
  {
5853
5865
  className: cn(
5854
- "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)]",
5866
+ "flex items-center justify-between gap-2 bg-[var(--canvas-background)] border text-[var(--canvas-text)] whitespace-nowrap transition-colors outline-none focus:border-[var(--canvas-border-input-focus)] focus:ring-2 focus:ring-[var(--canvas-border-input-focus)] focus:ring-offset-2 data-[state=open]:border-[var(--canvas-border-input-focus)]",
5855
5867
  className
5856
5868
  ),
5857
5869
  style: {
@@ -5881,15 +5893,15 @@ function FilterPopover({
5881
5893
  side: "bottom",
5882
5894
  sideOffset: 4,
5883
5895
  avoidCollisions: false,
5884
- className: "w-80 p-0 bg-white border border-[var(--canvas-border)] shadow-lg",
5896
+ className: "w-80 p-0 bg-[var(--canvas-background)] border border-[var(--canvas-border)] shadow-lg",
5885
5897
  children: [
5886
5898
  /* @__PURE__ */ jsxs("div", { className: "p-4 space-y-5 max-h-[480px] overflow-y-auto", children: [
5887
5899
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5888
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Text Input" }),
5900
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Text Input" }),
5889
5901
  /* @__PURE__ */ jsx(TextInput, { inputSize: "sm", placeholder: "Enter text..." })
5890
5902
  ] }),
5891
5903
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5892
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Searchbox" }),
5904
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Searchbox" }),
5893
5905
  /* @__PURE__ */ jsx(Searchbox, { inputSize: "sm", placeholder: "Search..." })
5894
5906
  ] }),
5895
5907
  dropdowns.slice(0, 1).map((dropdown) => /* @__PURE__ */ jsx(
@@ -5902,11 +5914,11 @@ function FilterPopover({
5902
5914
  dropdown.id
5903
5915
  )),
5904
5916
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5905
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Date Input" }),
5917
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Date Input" }),
5906
5918
  /* @__PURE__ */ jsx(DateInput, { inputSize: "sm" })
5907
5919
  ] }),
5908
5920
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5909
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Radio Buttons" }),
5921
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Radio Buttons" }),
5910
5922
  /* @__PURE__ */ jsxs(RadioGroup2, { defaultValue: "option1", className: "flex", children: [
5911
5923
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5912
5924
  /* @__PURE__ */ jsx(RadioGroupItem, { value: "option1", id: "radio1" }),
@@ -5935,7 +5947,7 @@ function FilterPopover({
5935
5947
  ] })
5936
5948
  ] }),
5937
5949
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5938
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Radio Buttons List" }),
5950
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Radio Buttons List" }),
5939
5951
  /* @__PURE__ */ jsxs(RadioGroup2, { defaultValue: "list-opt1", className: "flex flex-col gap-2", children: [
5940
5952
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5941
5953
  /* @__PURE__ */ jsx(RadioGroupItem, { value: "list-opt1", id: "radio-list-1" }),
@@ -5976,7 +5988,7 @@ function FilterPopover({
5976
5988
  ] })
5977
5989
  ] }),
5978
5990
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5979
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Checkbox" }),
5991
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Checkbox" }),
5980
5992
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
5981
5993
  /* @__PURE__ */ jsx(Checkbox, { id: "single-checkbox" }),
5982
5994
  /* @__PURE__ */ jsx(
@@ -5991,7 +6003,7 @@ function FilterPopover({
5991
6003
  ] })
5992
6004
  ] }),
5993
6005
  checkboxGroup && /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
5994
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Checkbox List" }),
6006
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Checkbox List" }),
5995
6007
  /* @__PURE__ */ jsx("div", { className: "space-y-2", children: checkboxGroup.options.map((option) => /* @__PURE__ */ jsx(
5996
6008
  CheckboxWithLabel,
5997
6009
  {
@@ -6003,7 +6015,7 @@ function FilterPopover({
6003
6015
  )) })
6004
6016
  ] }),
6005
6017
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
6006
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Toggle" }),
6018
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Toggle" }),
6007
6019
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
6008
6020
  /* @__PURE__ */ jsx(Switch, { id: "toggle-switch" }),
6009
6021
  /* @__PURE__ */ jsx(
@@ -6018,7 +6030,7 @@ function FilterPopover({
6018
6030
  ] })
6019
6031
  ] }),
6020
6032
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
6021
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text-muted)]", children: "Multiselect Tags" }),
6033
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-input-label-size)", fontWeight: "var(--typo-input-label-weight)" }, children: "Multiselect Tags" }),
6022
6034
  /* @__PURE__ */ jsx(MultiselectTags, { inputSize: "sm", tags: ["Tag 1", "Tag 2"], placeholder: "Add..." })
6023
6035
  ] })
6024
6036
  ] }),
@@ -6074,7 +6086,7 @@ function SearchBarShell({
6074
6086
  setFilterState(clearedState);
6075
6087
  onFilterApply?.(clearedState);
6076
6088
  };
6077
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6089
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6078
6090
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { showDesktopLogo: true }) }),
6079
6091
  /* @__PURE__ */ jsx(FlairBanner, { title: bannerTitle }),
6080
6092
  /* @__PURE__ */ jsx(
@@ -6187,12 +6199,12 @@ function StepTracker({
6187
6199
  onStepClick && "cursor-pointer",
6188
6200
  !onStepClick && "cursor-default",
6189
6201
  isCompleted && "bg-[var(--canvas-primary)] border-[var(--canvas-primary)] text-[var(--canvas-primary-foreground)]",
6190
- isActive && "bg-white border-[var(--canvas-primary)] text-[var(--canvas-primary)]",
6202
+ isActive && "bg-[var(--canvas-background)] border-[var(--canvas-primary)] text-[var(--canvas-primary)]",
6191
6203
  isUpcoming && "bg-[var(--canvas-border)] border-[var(--canvas-border)] text-[var(--canvas-text-placeholder)]"
6192
6204
  ),
6193
6205
  style: {
6194
6206
  fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6195
- fontSize: "16px",
6207
+ fontSize: "var(--typo-body-m-size)",
6196
6208
  fontWeight: 500
6197
6209
  },
6198
6210
  children: /* @__PURE__ */ jsx("span", { children: index + 1 })
@@ -6251,7 +6263,7 @@ function MultistepShell({
6251
6263
  const currentStepData = steps[currentStep];
6252
6264
  const isFirstStep = currentStep === 0;
6253
6265
  const isLastStep = currentStep === steps.length - 1;
6254
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6266
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6255
6267
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick, showDesktopLogo: true }) }),
6256
6268
  /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(
6257
6269
  StepTracker,
@@ -6286,7 +6298,7 @@ function MultistepShell({
6286
6298
  ] });
6287
6299
  }
6288
6300
  var cardClassName = cn(
6289
- "bg-white border border-[var(--canvas-border)]",
6301
+ "bg-[var(--canvas-background)] border border-[var(--canvas-border)]",
6290
6302
  "rounded-xl p-8"
6291
6303
  );
6292
6304
  function InfoCard({
@@ -6301,7 +6313,7 @@ function InfoCard({
6301
6313
  className: "text-[var(--canvas-text-placeholder)] font-semibold mb-4",
6302
6314
  style: {
6303
6315
  fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6304
- fontSize: "16px"
6316
+ fontSize: "var(--typo-body-m-size)"
6305
6317
  },
6306
6318
  children: title
6307
6319
  }
@@ -6312,7 +6324,7 @@ function InfoCard({
6312
6324
  className: "text-[var(--canvas-text-muted)] whitespace-pre-line",
6313
6325
  style: {
6314
6326
  fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6315
- fontSize: "16px",
6327
+ fontSize: "var(--typo-body-m-size)",
6316
6328
  lineHeight: "24px"
6317
6329
  },
6318
6330
  children: description
@@ -6338,7 +6350,7 @@ function LinksCard({
6338
6350
  className: "text-[var(--canvas-text-placeholder)] font-semibold mb-4",
6339
6351
  style: {
6340
6352
  fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6341
- fontSize: "16px"
6353
+ fontSize: "var(--typo-body-m-size)"
6342
6354
  },
6343
6355
  children: title
6344
6356
  }
@@ -6353,7 +6365,7 @@ function LinksCard({
6353
6365
  className: "text-[var(--canvas-primary)] font-medium",
6354
6366
  style: {
6355
6367
  fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6356
- fontSize: "16px"
6368
+ fontSize: "var(--typo-body-m-size)"
6357
6369
  },
6358
6370
  children: link.label
6359
6371
  }
@@ -6364,7 +6376,7 @@ function LinksCard({
6364
6376
  "a",
6365
6377
  {
6366
6378
  href: link.href,
6367
- className: "flex items-center gap-1.5 hover:opacity-80 transition-opacity",
6379
+ className: "cursor-pointer flex items-center gap-1.5 hover:opacity-80 transition-opacity",
6368
6380
  children: content
6369
6381
  },
6370
6382
  link.id
@@ -6375,7 +6387,7 @@ function LinksCard({
6375
6387
  {
6376
6388
  type: "button",
6377
6389
  onClick: link.onClick,
6378
- className: "flex items-center gap-1.5 hover:opacity-80 transition-opacity",
6390
+ className: "cursor-pointer flex items-center gap-1.5 hover:opacity-80 transition-opacity",
6379
6391
  children: content
6380
6392
  },
6381
6393
  link.id
@@ -6408,7 +6420,7 @@ function MultistepSidebarShell({
6408
6420
  const currentStepData = steps[currentStep];
6409
6421
  const isFirstStep = currentStep === 0;
6410
6422
  const isLastStep = currentStep === steps.length - 1;
6411
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6423
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6412
6424
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick, showDesktopLogo: true }) }),
6413
6425
  /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsx(
6414
6426
  StepTracker,
@@ -6517,7 +6529,7 @@ function MultistepProgressBarShell({
6517
6529
  };
6518
6530
  const currentStepData = steps[currentStep] || { title: `Step ${currentStep + 1}`, description: "Description" };
6519
6531
  const totalSteps = steps.length;
6520
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6532
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6521
6533
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick, showDesktopLogo: true }) }),
6522
6534
  /* @__PURE__ */ jsx(FlairBanner, { title: bannerTitle }),
6523
6535
  /* @__PURE__ */ jsx(
@@ -6604,7 +6616,7 @@ function VerticalStepTracker({
6604
6616
  (isActive || isCompleted) && "bg-[var(--canvas-primary)] border-[var(--canvas-primary)]",
6605
6617
  !isActive && !isCompleted && "bg-[var(--canvas-border)] border-[var(--canvas-border)]"
6606
6618
  ),
6607
- children: /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-white" })
6619
+ children: /* @__PURE__ */ jsx("div", { className: "size-2 rounded-full bg-[var(--canvas-background)]" })
6608
6620
  }
6609
6621
  ),
6610
6622
  !isLast && /* @__PURE__ */ jsx(
@@ -6679,7 +6691,7 @@ function VerticalMultistepShell({
6679
6691
  const currentStepData = steps[currentStep];
6680
6692
  const isFirstStep = currentStep === 0;
6681
6693
  const isLastStep = currentStep === steps.length - 1;
6682
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6694
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6683
6695
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { onMenuClick: handleAppMenuClick, showDesktopLogo: true }) }),
6684
6696
  /* @__PURE__ */ jsx(FlairBanner, { title: bannerTitle }),
6685
6697
  /* @__PURE__ */ jsx("div", { className: "w-full border-b border-[var(--canvas-border)]", children: /* @__PURE__ */ jsxs(
@@ -6696,12 +6708,12 @@ function VerticalMultistepShell({
6696
6708
  "h2",
6697
6709
  {
6698
6710
  style: {
6699
- fontFamily: "var(--typo-page-title-font, var(--typo-global-font))",
6700
- fontSize: "var(--typo-page-title-size)",
6701
- fontWeight: "var(--typo-page-title-weight)",
6702
- letterSpacing: "var(--typo-page-title-spacing)",
6703
- lineHeight: "var(--typo-page-title-line-height)",
6704
- color: "var(--typo-page-title-color)"
6711
+ fontFamily: "var(--typo-h4-font, var(--typo-global-font))",
6712
+ fontSize: "var(--typo-h4-size)",
6713
+ fontWeight: "var(--typo-h4-weight)",
6714
+ letterSpacing: "var(--typo-h4-spacing)",
6715
+ lineHeight: "var(--typo-h4-line-height)",
6716
+ color: "var(--typo-h4-color)"
6705
6717
  },
6706
6718
  children: pageTitle
6707
6719
  }
@@ -6710,12 +6722,12 @@ function VerticalMultistepShell({
6710
6722
  "p",
6711
6723
  {
6712
6724
  style: {
6713
- fontFamily: "var(--typo-page-desc-font, var(--typo-global-font))",
6714
- fontSize: "var(--typo-page-desc-size)",
6715
- fontWeight: "var(--typo-page-desc-weight)",
6716
- letterSpacing: "var(--typo-page-desc-spacing)",
6717
- lineHeight: "var(--typo-page-desc-line-height)",
6718
- color: "var(--typo-page-desc-color-muted)"
6725
+ fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
6726
+ fontSize: "var(--typo-body-m-size)",
6727
+ fontWeight: "var(--typo-body-m-weight)",
6728
+ letterSpacing: "var(--typo-body-m-spacing)",
6729
+ lineHeight: "var(--typo-body-m-line-height)",
6730
+ color: "var(--typo-body-m-color-muted)"
6719
6731
  },
6720
6732
  children: pageDescription
6721
6733
  }
@@ -6739,7 +6751,7 @@ function VerticalMultistepShell({
6739
6751
  className: cn(
6740
6752
  "lg:w-[320px]",
6741
6753
  // Desktop card styling
6742
- "lg:bg-white lg:border lg:border-[var(--canvas-border)]",
6754
+ "lg:bg-[var(--canvas-background)] lg:border lg:border-[var(--canvas-border)]",
6743
6755
  "lg:rounded-[var(--radius-xl)]",
6744
6756
  "lg:p-6"
6745
6757
  ),
@@ -6792,24 +6804,24 @@ function AccountSettingsShell({
6792
6804
  setInternalActiveTab(tab);
6793
6805
  }
6794
6806
  };
6795
- return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--background)]", children: [
6807
+ return /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-[var(--canvas-background)]", children: [
6796
6808
  /* @__PURE__ */ jsx("header", { className: "sticky top-0 z-40", children: /* @__PURE__ */ jsx(Header, { showDesktopLogo: true }) }),
6797
6809
  /* @__PURE__ */ jsx("div", { className: "w-full border-b border-[var(--canvas-neutral-border)]", children: /* @__PURE__ */ jsx("div", { className: "w-full max-w-[1200px] mx-auto px-[var(--spacing-xl)] py-[var(--spacing-6xl)]", children: /* @__PURE__ */ jsx(
6798
6810
  "h1",
6799
6811
  {
6800
6812
  style: {
6801
- fontFamily: "var(--typo-page-title-font)",
6802
- fontSize: "var(--typo-page-title-size)",
6803
- fontWeight: "var(--typo-page-title-weight)",
6804
- lineHeight: "var(--typo-page-title-line-height)",
6805
- letterSpacing: "var(--typo-page-title-spacing)",
6806
- color: "var(--typo-page-title-color)"
6813
+ fontFamily: "var(--typo-h4-font, var(--typo-global-font))",
6814
+ fontSize: "var(--typo-h4-size)",
6815
+ fontWeight: "var(--typo-h4-weight)",
6816
+ lineHeight: "var(--typo-h4-line-height)",
6817
+ letterSpacing: "var(--typo-h4-spacing)",
6818
+ color: "var(--typo-h4-color)"
6807
6819
  },
6808
6820
  children: pageTitle
6809
6821
  }
6810
6822
  ) }) }),
6811
6823
  /* @__PURE__ */ jsx("main", { className: "w-full flex justify-center pb-[var(--spacing-8xl)]", children: /* @__PURE__ */ jsx("div", { className: "w-full max-w-[1200px] px-[var(--spacing-xl)] pt-[var(--spacing-5xl)]", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row gap-[var(--spacing-5xl)]", children: [
6812
- /* @__PURE__ */ jsx("aside", { className: "w-full lg:w-[320px] shrink-0", children: /* @__PURE__ */ jsx("div", { className: "bg-white border border-[var(--canvas-neutral-border)] rounded-[var(--radius-lg)] p-[var(--spacing-xl)] lg:p-[var(--spacing-4xl)]", children: /* @__PURE__ */ jsx("nav", { className: "flex flex-col gap-0", children: accountTabs.map((tab) => {
6824
+ /* @__PURE__ */ jsx("aside", { className: "w-full lg:w-[320px] shrink-0", children: /* @__PURE__ */ jsx("div", { className: "bg-[var(--canvas-background)] border border-[var(--canvas-neutral-border)] rounded-[var(--radius-lg)] p-[var(--spacing-xl)] lg:p-[var(--spacing-4xl)]", children: /* @__PURE__ */ jsx("nav", { className: "flex flex-col gap-0", children: accountTabs.map((tab) => {
6813
6825
  const Icon2 = tab.icon;
6814
6826
  const isActive = activeTab === tab.id;
6815
6827
  return /* @__PURE__ */ jsxs(
@@ -6962,7 +6974,7 @@ function ProjectContextShell({
6962
6974
  return /* @__PURE__ */ jsx(IconComponent, { weight: "bold", size: 18, color: branding.iconColor || "var(--canvas-primary-foreground)" });
6963
6975
  })() })
6964
6976
  ] }),
6965
- /* @__PURE__ */ jsx("span", { className: "text-xl font-semibold ml-2.5 text-[var(--canvas-text)]", children: branding.wordmark || "canvas" })
6977
+ /* @__PURE__ */ jsx("span", { className: "font-semibold ml-2.5 text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-xl-size)" }, children: branding.wordmark || "canvas" })
6966
6978
  ] })
6967
6979
  ) }) }),
6968
6980
  /* @__PURE__ */ jsx("nav", { className: "flex-1 p-2", children: tabs.map((tab) => {
@@ -6973,23 +6985,23 @@ function ProjectContextShell({
6973
6985
  {
6974
6986
  onClick: () => onTabChange(tab.id),
6975
6987
  className: cn(
6976
- "w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left transition-colors mb-1",
6988
+ "cursor-pointer w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-left transition-colors mb-1",
6977
6989
  isActive ? "bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]" : "text-[var(--canvas-text-muted)] hover:bg-[var(--canvas-surface)] hover:text-[var(--canvas-text)]"
6978
6990
  ),
6979
6991
  children: [
6980
6992
  /* @__PURE__ */ jsx(Icon2, { className: "size-4 shrink-0" }),
6981
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: tab.label })
6993
+ /* @__PURE__ */ jsx("span", { className: "font-medium", style: { fontSize: "var(--typo-body-s-size)" }, children: tab.label })
6982
6994
  ]
6983
6995
  },
6984
6996
  tab.id
6985
6997
  );
6986
6998
  }) }),
6987
- /* @__PURE__ */ jsx("div", { className: "p-4 border-t border-[var(--canvas-border)]", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-[var(--canvas-surface)] p-3", children: /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--canvas-text-muted)] leading-relaxed", children: "\u{1F4A1} Use the prompt templates to generate content with Cursor AI" }) }) })
6999
+ /* @__PURE__ */ jsx("div", { className: "p-4 border-t border-[var(--canvas-border)]", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-[var(--canvas-surface)] p-3", children: /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] leading-relaxed", style: { fontSize: "var(--typo-body-xs-size)" }, children: "\u{1F4A1} Use the prompt templates to generate content with Cursor AI" }) }) })
6988
7000
  ] }),
6989
7001
  /* @__PURE__ */ jsxs("main", { className: "flex-1 flex flex-col min-w-0 overflow-hidden", children: [
6990
7002
  /* @__PURE__ */ jsx("div", { className: "border-b border-[var(--canvas-border)] px-8 py-6 bg-[var(--canvas-background)]", children: activeTabConfig && /* @__PURE__ */ jsxs("div", { children: [
6991
- /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold text-[var(--canvas-text)]", children: activeTabConfig.label }),
6992
- /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)]", children: activeTabConfig.description })
7003
+ /* @__PURE__ */ jsx("h2", { className: "font-semibold text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-xl-size)" }, children: activeTabConfig.label }),
7004
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: activeTabConfig.description })
6993
7005
  ] }) }),
6994
7006
  /* @__PURE__ */ jsx(ScrollArea, { className: "flex-1", children: /* @__PURE__ */ jsx("div", { className: "p-8", children }) })
6995
7007
  ] })
@@ -7026,8 +7038,8 @@ function ChatBubble({ message }) {
7026
7038
  /* @__PURE__ */ jsx(
7027
7039
  AvatarFallback,
7028
7040
  {
7029
- className: "text-[8px]",
7030
7041
  style: {
7042
+ fontSize: "8px",
7031
7043
  backgroundColor: "var(--canvas-subtle)",
7032
7044
  color: "var(--canvas-muted-foreground)"
7033
7045
  },
@@ -7062,8 +7074,9 @@ function ChatDateSeparator({ date }) {
7062
7074
  return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(
7063
7075
  "span",
7064
7076
  {
7065
- className: "text-xs font-medium",
7077
+ className: "font-medium",
7066
7078
  style: {
7079
+ fontSize: "var(--typo-body-xs-size)",
7067
7080
  color: "var(--canvas-muted-foreground)"
7068
7081
  },
7069
7082
  children: date
@@ -7094,10 +7107,11 @@ function MessengerInput({
7094
7107
  {
7095
7108
  placeholder: "Send a message",
7096
7109
  rows: 2,
7097
- className: "w-full p-3 resize-none focus:outline-none text-xs",
7110
+ className: "w-full p-3 resize-none focus:outline-none",
7098
7111
  style: {
7099
7112
  backgroundColor: "transparent",
7100
7113
  color: "var(--canvas-foreground)",
7114
+ fontSize: "var(--typo-body-xs-size)",
7101
7115
  lineHeight: "var(--typo-body-xs-line-height)"
7102
7116
  }
7103
7117
  }
@@ -7135,8 +7149,7 @@ function MessengerInput({
7135
7149
  /* @__PURE__ */ jsx(
7136
7150
  "span",
7137
7151
  {
7138
- className: "text-xs",
7139
- style: { color: "var(--canvas-muted-foreground)" },
7152
+ style: { color: "var(--canvas-muted-foreground)", fontSize: "var(--typo-body-xs-size)" },
7140
7153
  children: attachment.name
7141
7154
  }
7142
7155
  ),
@@ -7194,10 +7207,11 @@ function MessengerInput({
7194
7207
  "button",
7195
7208
  {
7196
7209
  onClick: onSend,
7197
- className: "h-10 px-[var(--spacing-lg)] rounded-[var(--radius-xs)] font-semibold text-xs transition-colors hover:opacity-90",
7210
+ className: "h-10 px-[var(--spacing-lg)] rounded-[var(--radius-xs)] font-semibold transition-colors hover:opacity-90",
7198
7211
  style: {
7199
7212
  backgroundColor: "var(--canvas-primary)",
7200
- color: "var(--canvas-primary-foreground)"
7213
+ color: "var(--canvas-primary-foreground)",
7214
+ fontSize: "var(--typo-body-xs-size)"
7201
7215
  },
7202
7216
  children: "Send"
7203
7217
  }
@@ -7268,7 +7282,7 @@ function MessengerSidebar({
7268
7282
  className: "font-semibold",
7269
7283
  style: {
7270
7284
  color: "var(--canvas-foreground)",
7271
- fontSize: "20px",
7285
+ fontSize: "var(--typo-body-xl-size)",
7272
7286
  lineHeight: "28px"
7273
7287
  },
7274
7288
  children: "Messages"
@@ -7278,7 +7292,7 @@ function MessengerSidebar({
7278
7292
  /* @__PURE__ */ jsx(
7279
7293
  "button",
7280
7294
  {
7281
- className: "flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80",
7295
+ className: "cursor-pointer flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80",
7282
7296
  style: {
7283
7297
  backgroundColor: "var(--canvas-background)",
7284
7298
  borderColor: "var(--canvas-border)"
@@ -7296,7 +7310,7 @@ function MessengerSidebar({
7296
7310
  /* @__PURE__ */ jsx(
7297
7311
  "button",
7298
7312
  {
7299
- className: "flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80",
7313
+ className: "cursor-pointer flex items-center justify-center size-8 rounded-[var(--radius-xs)] border transition-colors hover:opacity-80",
7300
7314
  style: {
7301
7315
  backgroundColor: "var(--canvas-background)",
7302
7316
  borderColor: "var(--canvas-border)"
@@ -7342,7 +7356,7 @@ function ThreadRow({ thread, isSelected, onSelect }) {
7342
7356
  "button",
7343
7357
  {
7344
7358
  onClick: onSelect,
7345
- 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",
7359
+ className: "cursor-pointer 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",
7346
7360
  style: {
7347
7361
  backgroundColor: isSelected ? "var(--canvas-surface)" : "var(--canvas-background)",
7348
7362
  borderColor: "var(--canvas-border)"
@@ -7354,8 +7368,8 @@ function ThreadRow({ thread, isSelected, onSelect }) {
7354
7368
  /* @__PURE__ */ jsx(
7355
7369
  AvatarFallback,
7356
7370
  {
7357
- className: "text-xs",
7358
7371
  style: {
7372
+ fontSize: "var(--typo-body-xs-size)",
7359
7373
  backgroundColor: "var(--canvas-primary)",
7360
7374
  color: "var(--canvas-primary-foreground)"
7361
7375
  },
@@ -7882,7 +7896,7 @@ function ContentDropzone({
7882
7896
  {
7883
7897
  className: cn(
7884
7898
  "flex items-center justify-center",
7885
- "bg-white",
7899
+ "bg-[var(--canvas-background)]",
7886
7900
  "border-2 border-dashed border-[var(--canvas-border)]",
7887
7901
  "rounded-[var(--radius-nav)]",
7888
7902
  "overflow-hidden",
@@ -8095,7 +8109,7 @@ function EmptyState({ icon, title, description, className }) {
8095
8109
  children: [
8096
8110
  /* @__PURE__ */ jsx("span", { className: "text-4xl mb-3", children: icon }),
8097
8111
  /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] font-medium text-center", children: title }),
8098
- description && /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-placeholder)] text-center mt-1 max-w-md", children: description })
8112
+ description && /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-placeholder)] text-center mt-1 max-w-md", style: { fontSize: "var(--typo-body-s-size)" }, children: description })
8099
8113
  ]
8100
8114
  }
8101
8115
  );
@@ -8113,7 +8127,7 @@ function MenuSectionItem({
8113
8127
  {
8114
8128
  type: "button",
8115
8129
  onClick: () => setExpanded(!expanded),
8116
- className: "w-full flex items-center gap-4 py-6 text-left group",
8130
+ className: "cursor-pointer w-full flex items-center gap-4 py-6 text-left group",
8117
8131
  children: [
8118
8132
  /* @__PURE__ */ jsx(
8119
8133
  "div",
@@ -8206,7 +8220,7 @@ function PillTabs({
8206
8220
  {
8207
8221
  onClick: () => onTabChange?.(tab.id),
8208
8222
  className: cn(
8209
- "flex items-center gap-[var(--spacing-md)] h-10 px-[var(--spacing-xl)] rounded-full transition-colors",
8223
+ "cursor-pointer flex items-center gap-[var(--spacing-md)] h-10 px-[var(--spacing-xl)] rounded-full transition-colors",
8210
8224
  "bg-[var(--canvas-border)]",
8211
8225
  isActive && "bg-[var(--canvas-surface-brand)]"
8212
8226
  ),
@@ -9006,12 +9020,12 @@ function StatusBadge({ status }) {
9006
9020
  },
9007
9021
  paid: {
9008
9022
  label: "Paid",
9009
- bgColor: "var(--canvas-success-surface, #edfdf8)",
9023
+ bgColor: "var(--canvas-success-surface)",
9010
9024
  textColor: "var(--canvas-success)"
9011
9025
  },
9012
9026
  overdue: {
9013
9027
  label: "Overdue",
9014
- bgColor: "var(--canvas-destructive-surface, #fef2f2)",
9028
+ bgColor: "var(--canvas-destructive-surface)",
9015
9029
  textColor: "var(--canvas-destructive)"
9016
9030
  }
9017
9031
  };
@@ -10148,7 +10162,7 @@ function CommentInput({
10148
10162
  "button",
10149
10163
  {
10150
10164
  type: "button",
10151
- className: "absolute right-3 top-1/2 -translate-y-1/2",
10165
+ className: "cursor-pointer absolute right-3 top-1/2 -translate-y-1/2",
10152
10166
  style: { color: "var(--canvas-text-placeholder)" },
10153
10167
  children: /* @__PURE__ */ jsx(Paperclip, { className: "w-5 h-5" })
10154
10168
  }
@@ -10180,7 +10194,7 @@ function CommentActions({
10180
10194
  {
10181
10195
  type: "button",
10182
10196
  onClick: onReply,
10183
- className: "flex items-center",
10197
+ className: "cursor-pointer flex items-center",
10184
10198
  style: {
10185
10199
  gap: "var(--spacing-sm)",
10186
10200
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
@@ -10197,7 +10211,7 @@ function CommentActions({
10197
10211
  {
10198
10212
  type: "button",
10199
10213
  onClick: onLike,
10200
- className: "flex items-center",
10214
+ className: "cursor-pointer flex items-center",
10201
10215
  style: {
10202
10216
  gap: "var(--spacing-sm)",
10203
10217
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
@@ -10397,6 +10411,7 @@ function PostCommentItem({
10397
10411
  {
10398
10412
  type: "button",
10399
10413
  onClick: () => setShowReplies(!showReplies),
10414
+ className: "cursor-pointer",
10400
10415
  style: {
10401
10416
  fontFamily: "var(--typo-body-xs-font, var(--typo-global-font))",
10402
10417
  fontSize: "var(--typo-body-xs-size)",
@@ -10444,7 +10459,7 @@ function PostCard({
10444
10459
  {
10445
10460
  type: "button",
10446
10461
  onClick: onUpvote,
10447
- className: "flex items-center justify-center",
10462
+ className: "cursor-pointer flex items-center justify-center",
10448
10463
  style: {
10449
10464
  width: 40,
10450
10465
  height: 40,
@@ -10588,7 +10603,7 @@ function PostCard({
10588
10603
  "button",
10589
10604
  {
10590
10605
  type: "button",
10591
- className: "flex items-center",
10606
+ className: "cursor-pointer flex items-center",
10592
10607
  style: {
10593
10608
  gap: "var(--spacing-sm)",
10594
10609
  fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
@@ -11337,7 +11352,7 @@ function FaqsTable({
11337
11352
  "button",
11338
11353
  {
11339
11354
  onClick: () => toggleItem(item.id),
11340
- className: "flex items-center justify-between w-full text-left",
11355
+ className: "cursor-pointer flex items-center justify-between w-full text-left",
11341
11356
  style: { gap: "var(--spacing-xl)" },
11342
11357
  "aria-expanded": isExpanded,
11343
11358
  "aria-controls": `faq-answer-${item.id}`,
@@ -11444,23 +11459,24 @@ function ProfileCard({
11444
11459
  children: [
11445
11460
  /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col items-center w-full", children: [
11446
11461
  /* @__PURE__ */ jsxs("div", { className: "relative -mt-16", children: [
11447
- /* @__PURE__ */ jsxs(Avatar, { className: "size-32 border-4 border-white", children: [
11462
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-32 border-4 border-[var(--canvas-background)]", children: [
11448
11463
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarUrl, alt: name }),
11449
11464
  /* @__PURE__ */ jsx(
11450
11465
  AvatarFallback,
11451
11466
  {
11452
- className: "text-xl font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]",
11467
+ className: "font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]",
11468
+ style: { fontSize: "var(--typo-body-xl-size)" },
11453
11469
  children: avatarFallback
11454
11470
  }
11455
11471
  )
11456
11472
  ] }),
11457
- showStatus && /* @__PURE__ */ jsx("div", { className: "absolute bottom-[9px] right-[9px] size-5 rounded-full bg-emerald-500 border-[3px] border-white" })
11473
+ showStatus && /* @__PURE__ */ jsx("div", { className: "absolute bottom-[9px] right-[9px] size-5 rounded-full bg-[var(--canvas-success)] border-[3px] border-[var(--canvas-background)]" })
11458
11474
  ] }),
11459
11475
  showMenu && /* @__PURE__ */ jsx(
11460
11476
  "button",
11461
11477
  {
11462
11478
  onClick: onMenuClick,
11463
- 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",
11479
+ className: "cursor-pointer 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",
11464
11480
  "aria-label": "More options",
11465
11481
  children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4 text-[var(--canvas-text-muted)]" })
11466
11482
  }
@@ -11515,7 +11531,7 @@ function ProfileCard({
11515
11531
  "a",
11516
11532
  {
11517
11533
  href: link.href || "#",
11518
- className: "flex items-center gap-[var(--spacing-sm)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors",
11534
+ className: "cursor-pointer flex items-center gap-[var(--spacing-sm)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] transition-colors",
11519
11535
  children: [
11520
11536
  /* @__PURE__ */ jsx(IconComponent, { className: "size-4" }),
11521
11537
  /* @__PURE__ */ jsx(Typography, { variant: "body-s", color: "muted", as: "span", children: link.label })
@@ -11561,9 +11577,9 @@ function SidebarProfileCard({
11561
11577
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
11562
11578
  /* @__PURE__ */ jsxs(Avatar, { className: "size-[120px]", children: [
11563
11579
  /* @__PURE__ */ jsx(AvatarImage, { src: avatarUrl, alt: name }),
11564
- /* @__PURE__ */ jsx(AvatarFallback, { className: "text-2xl font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]", children: avatarFallback })
11580
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "font-semibold bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-h6-size)" }, children: avatarFallback })
11565
11581
  ] }),
11566
- showStatus && /* @__PURE__ */ jsx("div", { className: "absolute bottom-[10px] right-[10px] size-5 rounded-full bg-emerald-500 border-[3px] border-white" })
11582
+ showStatus && /* @__PURE__ */ jsx("div", { className: "absolute bottom-[10px] right-[10px] size-5 rounded-full bg-[var(--canvas-success)] border-[3px] border-[var(--canvas-background)]" })
11567
11583
  ] }),
11568
11584
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-[var(--spacing-xs)]", children: [
11569
11585
  /* @__PURE__ */ jsx(Typography, { variant: "body-xl", className: "text-center", style: { fontWeight: 600 }, children: name }),
@@ -11746,8 +11762,8 @@ var badgeIcons = {
11746
11762
  };
11747
11763
  var badgeColors = {
11748
11764
  zap: "text-[var(--canvas-primary)]",
11749
- star: "text-amber-600",
11750
- check: "text-emerald-600"
11765
+ star: "text-[var(--canvas-warning)]",
11766
+ check: "text-[var(--canvas-success)]"
11751
11767
  };
11752
11768
  function BadgesCard({ badges, className }) {
11753
11769
  return /* @__PURE__ */ jsx(CardWrapper, { className: cn("p-[var(--spacing-4xl)]", className), children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-[var(--spacing-xl)]", children: badges.map((badge, index) => {
@@ -13633,9 +13649,9 @@ function PostComposer({ placeholder = "What's on your mind?", imagePreview, onPo
13633
13649
  },
13634
13650
  children: [
13635
13651
  /* @__PURE__ */ jsxs("div", { className: "flex items-center", style: { gap: "var(--spacing-lg)" }, children: [
13636
- /* @__PURE__ */ jsx("button", { type: "button", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Paperclip, { className: "w-5 h-5" }) }),
13637
- /* @__PURE__ */ jsx("button", { type: "button", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Video, { className: "w-5 h-5" }) }),
13638
- /* @__PURE__ */ jsx("button", { type: "button", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Link2, { className: "w-5 h-5" }) })
13652
+ /* @__PURE__ */ jsx("button", { type: "button", className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Paperclip, { className: "w-5 h-5" }) }),
13653
+ /* @__PURE__ */ jsx("button", { type: "button", className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Video, { className: "w-5 h-5" }) }),
13654
+ /* @__PURE__ */ jsx("button", { type: "button", className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Link2, { className: "w-5 h-5" }) })
13639
13655
  ] }),
13640
13656
  /* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", onClick: handlePost, children: "Post" })
13641
13657
  ]
@@ -13657,6 +13673,7 @@ function ActionIconsRow({ isLiked, onLike, onComment, onRepost, onShare }) {
13657
13673
  {
13658
13674
  type: "button",
13659
13675
  onClick: onLike,
13676
+ className: "cursor-pointer",
13660
13677
  style: { color: isLiked ? "var(--canvas-destructive)" : "var(--canvas-text)" },
13661
13678
  children: /* @__PURE__ */ jsx(
13662
13679
  Heart$1,
@@ -13669,9 +13686,9 @@ function ActionIconsRow({ isLiked, onLike, onComment, onRepost, onShare }) {
13669
13686
  )
13670
13687
  }
13671
13688
  ),
13672
- /* @__PURE__ */ jsx("button", { type: "button", onClick: onComment, style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(MessageCircle, { className: "w-5 h-5" }) }),
13673
- /* @__PURE__ */ jsx("button", { type: "button", onClick: onRepost, style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(RefreshCw, { className: "w-5 h-5" }) }),
13674
- /* @__PURE__ */ jsx("button", { type: "button", onClick: onShare, style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Send, { className: "w-5 h-5" }) })
13689
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: onComment, className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(MessageCircle, { className: "w-5 h-5" }) }),
13690
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: onRepost, className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(RefreshCw, { className: "w-5 h-5" }) }),
13691
+ /* @__PURE__ */ jsx("button", { type: "button", onClick: onShare, className: "cursor-pointer", style: { color: "var(--canvas-text)" }, children: /* @__PURE__ */ jsx(Send, { className: "w-5 h-5" }) })
13675
13692
  ]
13676
13693
  }
13677
13694
  );
@@ -13915,7 +13932,7 @@ function RepostCard({ repost, onLike, onComment, onRepost, onShare }) {
13915
13932
  "button",
13916
13933
  {
13917
13934
  type: "button",
13918
- className: "flex items-center justify-center",
13935
+ className: "cursor-pointer flex items-center justify-center",
13919
13936
  style: {
13920
13937
  width: 32,
13921
13938
  height: 32,
@@ -14040,7 +14057,7 @@ function PostCell({ post, onLike, onComment, onRepost, onShare, onMenuClick }) {
14040
14057
  {
14041
14058
  type: "button",
14042
14059
  onClick: onMenuClick,
14043
- className: "flex items-center justify-center",
14060
+ className: "cursor-pointer flex items-center justify-center",
14044
14061
  style: {
14045
14062
  width: 32,
14046
14063
  height: 32,
@@ -14623,7 +14640,7 @@ function ControlButton({ icon, onClick, isActive = true, label }) {
14623
14640
  className: cn(
14624
14641
  "w-10 h-10 rounded-full flex items-center justify-center",
14625
14642
  "shadow-sm transition-colors",
14626
- isActive ? "bg-[var(--canvas-sidebar-light-text)] text-white hover:opacity-80" : "bg-[var(--canvas-destructive)] text-white hover:opacity-80"
14643
+ isActive ? "bg-[var(--canvas-sidebar-light-text)] text-[var(--canvas-primary-foreground)] hover:opacity-80" : "bg-[var(--canvas-destructive)] text-[var(--canvas-primary-foreground)] hover:opacity-80"
14627
14644
  ),
14628
14645
  children: icon
14629
14646
  }
@@ -15151,8 +15168,8 @@ function CreditCardDisplay({
15151
15168
  /* @__PURE__ */ jsx(
15152
15169
  "span",
15153
15170
  {
15154
- className: "text-white/70 text-xs block mb-1",
15155
- style: { fontFamily: "var(--typo-global-font)" },
15171
+ className: "text-white/70 block mb-1",
15172
+ style: { fontFamily: "var(--typo-global-font)", fontSize: "var(--typo-body-xs-size)" },
15156
15173
  children: "CARDHOLDER"
15157
15174
  }
15158
15175
  ),
@@ -15161,7 +15178,7 @@ function CreditCardDisplay({
15161
15178
  {
15162
15179
  className: "text-white font-medium",
15163
15180
  style: {
15164
- fontSize: "16px",
15181
+ fontSize: "var(--typo-body-m-size)",
15165
15182
  fontFamily: "var(--typo-global-font)"
15166
15183
  },
15167
15184
  children: cardholderName
@@ -15172,8 +15189,8 @@ function CreditCardDisplay({
15172
15189
  /* @__PURE__ */ jsx(
15173
15190
  "span",
15174
15191
  {
15175
- className: "text-white/70 text-xs block mb-1",
15176
- style: { fontFamily: "var(--typo-global-font)" },
15192
+ className: "text-white/70 block mb-1",
15193
+ style: { fontFamily: "var(--typo-global-font)", fontSize: "var(--typo-body-xs-size)" },
15177
15194
  children: "EXPIRES"
15178
15195
  }
15179
15196
  ),
@@ -15182,7 +15199,7 @@ function CreditCardDisplay({
15182
15199
  {
15183
15200
  className: "text-white font-medium",
15184
15201
  style: {
15185
- fontSize: "16px",
15202
+ fontSize: "var(--typo-body-m-size)",
15186
15203
  fontFamily: "var(--typo-global-font)"
15187
15204
  },
15188
15205
  children: expiryDate
@@ -15248,7 +15265,8 @@ function CanvasItem({
15248
15265
  "div",
15249
15266
  {
15250
15267
  onMouseDown: handleDragHandleMouseDown,
15251
- className: "flex items-center gap-1.5 text-white/90 text-xs cursor-grab active:cursor-grabbing select-none",
15268
+ className: "flex items-center gap-1.5 text-white/90 cursor-grab active:cursor-grabbing select-none",
15269
+ style: { fontSize: "var(--typo-body-xs-size)" },
15252
15270
  children: [
15253
15271
  /* @__PURE__ */ jsx(GripHorizontal, { className: "size-4" }),
15254
15272
  /* @__PURE__ */ jsx("span", { className: "text-[11px] font-medium", children: item.componentType })
@@ -15424,9 +15442,10 @@ function DraggableComponent({ component }) {
15424
15442
  /* @__PURE__ */ jsx(
15425
15443
  "span",
15426
15444
  {
15427
- className: "text-sm text-[var(--canvas-text)]",
15445
+ className: "text-[var(--canvas-text)]",
15428
15446
  style: {
15429
- fontFamily: "var(--typo-body-s-font, var(--typo-global-font))"
15447
+ fontFamily: "var(--typo-body-s-font, var(--typo-global-font))",
15448
+ fontSize: "var(--typo-body-s-size)"
15430
15449
  },
15431
15450
  children: component.label
15432
15451
  }
@@ -15442,17 +15461,18 @@ function CategorySection({ category, components, defaultExpanded = true }) {
15442
15461
  "button",
15443
15462
  {
15444
15463
  onClick: () => setIsExpanded(!isExpanded),
15445
- className: "flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--canvas-surface)] rounded-md transition-colors",
15464
+ className: "cursor-pointer flex items-center gap-2 w-full px-3 py-2 text-left hover:bg-[var(--canvas-surface)] rounded-md transition-colors",
15446
15465
  children: [
15447
15466
  isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "size-4 text-[var(--canvas-text-muted)]" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 text-[var(--canvas-text-muted)]" }),
15448
15467
  /* @__PURE__ */ jsx(
15449
15468
  "span",
15450
15469
  {
15451
- className: "text-xs font-semibold uppercase tracking-wider text-[var(--canvas-text-muted)]",
15470
+ className: "font-semibold uppercase tracking-wider text-[var(--canvas-text-muted)]",
15471
+ style: { fontSize: "var(--typo-body-xs-size)" },
15452
15472
  children: category
15453
15473
  }
15454
15474
  ),
15455
- /* @__PURE__ */ jsx("span", { className: "ml-auto text-xs text-[var(--canvas-text-placeholder)]", children: components.length })
15475
+ /* @__PURE__ */ jsx("span", { className: "ml-auto text-[var(--canvas-text-placeholder)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: components.length })
15456
15476
  ]
15457
15477
  }
15458
15478
  ),
@@ -15465,7 +15485,7 @@ function ComponentPalette({ className }) {
15465
15485
  {
15466
15486
  className: cn(
15467
15487
  "w-[280px] h-full flex flex-col",
15468
- "bg-white border-r border-[var(--canvas-border)]",
15488
+ "bg-[var(--canvas-background)] border-r border-[var(--canvas-border)]",
15469
15489
  className
15470
15490
  ),
15471
15491
  children: [
@@ -15473,9 +15493,10 @@ function ComponentPalette({ className }) {
15473
15493
  /* @__PURE__ */ jsx(
15474
15494
  "h2",
15475
15495
  {
15476
- className: "text-sm font-semibold text-[var(--canvas-text)]",
15496
+ className: "font-semibold text-[var(--canvas-text)]",
15477
15497
  style: {
15478
- fontFamily: "var(--typo-body-m-font, var(--typo-global-font))"
15498
+ fontFamily: "var(--typo-body-m-font, var(--typo-global-font))",
15499
+ fontSize: "var(--typo-body-s-size)"
15479
15500
  },
15480
15501
  children: "Components"
15481
15502
  }
@@ -15483,7 +15504,8 @@ function ComponentPalette({ className }) {
15483
15504
  /* @__PURE__ */ jsx(
15484
15505
  "p",
15485
15506
  {
15486
- className: "text-xs text-[var(--canvas-text-muted)] mt-1",
15507
+ className: "text-[var(--canvas-text-muted)] mt-1",
15508
+ style: { fontSize: "var(--typo-body-xs-size)" },
15487
15509
  children: "Drag components onto the canvas"
15488
15510
  }
15489
15511
  )
@@ -15501,9 +15523,9 @@ function ComponentPalette({ className }) {
15501
15523
  category
15502
15524
  );
15503
15525
  }) }) }),
15504
- /* @__PURE__ */ jsx("div", { className: "px-4 py-3 border-t border-[var(--canvas-border)] bg-[var(--canvas-surface)]", children: /* @__PURE__ */ jsxs("p", { className: "text-xs text-[var(--canvas-text-placeholder)]", children: [
15526
+ /* @__PURE__ */ jsx("div", { className: "px-4 py-3 border-t border-[var(--canvas-border)] bg-[var(--canvas-surface)]", children: /* @__PURE__ */ jsxs("p", { className: "text-[var(--canvas-text-placeholder)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
15505
15527
  "Tip: Press ",
15506
- /* @__PURE__ */ jsx("kbd", { className: "px-1.5 py-0.5 bg-white rounded border border-[var(--canvas-border)] text-[10px]", children: "Delete" }),
15528
+ /* @__PURE__ */ jsx("kbd", { className: "px-1.5 py-0.5 bg-[var(--canvas-background)] rounded border border-[var(--canvas-border)]", style: { fontSize: "10px" }, children: "Delete" }),
15507
15529
  " to remove selected"
15508
15530
  ] }) })
15509
15531
  ]
@@ -16295,14 +16317,15 @@ function ComponentSearch({
16295
16317
  selectedComponents.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: selectedComponents.map((component) => /* @__PURE__ */ jsxs(
16296
16318
  "div",
16297
16319
  {
16298
- 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",
16320
+ className: "flex items-center gap-1.5 px-2.5 py-1 rounded-full bg-[var(--canvas-surface-brand)] text-[var(--canvas-primary)]",
16321
+ style: { fontSize: "var(--typo-body-s-size)" },
16299
16322
  children: [
16300
16323
  /* @__PURE__ */ jsx("span", { className: "font-medium", children: component.name }),
16301
16324
  /* @__PURE__ */ jsx(
16302
16325
  "button",
16303
16326
  {
16304
16327
  onClick: () => removeComponent(component.id),
16305
- className: "p-0.5 rounded-full hover:bg-[var(--canvas-primary)]/20 transition-colors",
16328
+ className: "cursor-pointer p-0.5 rounded-full hover:bg-[var(--canvas-primary)]/20 transition-colors",
16306
16329
  children: /* @__PURE__ */ jsx(X, { className: "size-3" })
16307
16330
  }
16308
16331
  )
@@ -16329,10 +16352,11 @@ function ComponentSearch({
16329
16352
  onChange: (e) => setSearchQuery(e.target.value),
16330
16353
  onFocus: () => setIsOpen(true),
16331
16354
  placeholder: "Search components...",
16332
- className: "flex-1 bg-transparent text-sm text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] outline-none"
16355
+ className: "flex-1 bg-transparent text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] outline-none",
16356
+ style: { fontSize: "var(--typo-body-s-size)" }
16333
16357
  }
16334
16358
  ),
16335
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-[var(--canvas-text-muted)]", children: [
16359
+ /* @__PURE__ */ jsxs("span", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
16336
16360
  selectedComponents.length,
16337
16361
  " selected"
16338
16362
  ] })
@@ -16353,7 +16377,8 @@ function ComponentSearch({
16353
16377
  "button",
16354
16378
  {
16355
16379
  onClick: () => toggleCategory(category),
16356
- 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",
16380
+ className: "cursor-pointer w-full flex items-center justify-between px-3 py-2 bg-[var(--canvas-surface)] border-b border-[var(--canvas-border)] font-semibold text-[var(--canvas-text-muted)] uppercase tracking-wide hover:bg-[var(--canvas-surface-brand)]/50",
16381
+ style: { fontSize: "var(--typo-body-xs-size)" },
16357
16382
  children: [
16358
16383
  /* @__PURE__ */ jsxs("span", { children: [
16359
16384
  category,
@@ -16374,7 +16399,7 @@ function ComponentSearch({
16374
16399
  {
16375
16400
  onClick: () => toggleComponent(component),
16376
16401
  className: cn(
16377
- "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",
16402
+ "cursor-pointer 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",
16378
16403
  isSelected ? "bg-[var(--canvas-surface-brand)]/50" : "hover:bg-[var(--canvas-surface)]"
16379
16404
  ),
16380
16405
  children: [
@@ -16388,7 +16413,7 @@ function ComponentSearch({
16388
16413
  children: isSelected && /* @__PURE__ */ jsx(
16389
16414
  "svg",
16390
16415
  {
16391
- className: "size-3 text-white",
16416
+ className: "size-3 text-[var(--canvas-primary-foreground)]",
16392
16417
  fill: "none",
16393
16418
  viewBox: "0 0 24 24",
16394
16419
  stroke: "currentColor",
@@ -16411,15 +16436,16 @@ function ComponentSearch({
16411
16436
  "span",
16412
16437
  {
16413
16438
  className: cn(
16414
- "text-sm font-medium",
16439
+ "font-medium",
16415
16440
  isSelected ? "text-[var(--canvas-primary)]" : "text-[var(--canvas-text)]"
16416
16441
  ),
16442
+ style: { fontSize: "var(--typo-body-s-size)" },
16417
16443
  children: component.name
16418
16444
  }
16419
16445
  ),
16420
- /* @__PURE__ */ jsx("span", { className: "text-xs text-[var(--canvas-text-placeholder)]", children: component.path })
16446
+ /* @__PURE__ */ jsx("span", { className: "text-[var(--canvas-text-placeholder)]", style: { fontSize: "var(--typo-body-xs-size)" }, children: component.path })
16421
16447
  ] }),
16422
- /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--canvas-text-muted)] mt-0.5 line-clamp-2", children: component.description })
16448
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mt-0.5 line-clamp-2", style: { fontSize: "var(--typo-body-xs-size)" }, children: component.description })
16423
16449
  ] })
16424
16450
  ]
16425
16451
  },
@@ -16427,7 +16453,7 @@ function ComponentSearch({
16427
16453
  );
16428
16454
  }) })
16429
16455
  ] }, category)),
16430
- filteredComponents.length === 0 && /* @__PURE__ */ jsxs("div", { className: "px-3 py-6 text-center text-sm text-[var(--canvas-text-muted)]", children: [
16456
+ filteredComponents.length === 0 && /* @__PURE__ */ jsxs("div", { className: "px-3 py-6 text-center text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
16431
16457
  'No components found for "',
16432
16458
  searchQuery,
16433
16459
  '"'
@@ -16544,11 +16570,11 @@ function CustomComponentHelper({ className }) {
16544
16570
  const hasContent = componentName || componentDescription;
16545
16571
  return /* @__PURE__ */ jsxs("div", { className: cn("space-y-6", className), children: [
16546
16572
  /* @__PURE__ */ jsxs("div", { children: [
16547
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-[var(--canvas-text)]", children: "Create Custom Component" }),
16548
- /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)] mt-1", children: "Generate a prompt to create a new ShadCN-based component with design variables" })
16573
+ /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-l-size)" }, children: "Create Custom Component" }),
16574
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mt-1", style: { fontSize: "var(--typo-body-s-size)" }, children: "Generate a prompt to create a new ShadCN-based component with design variables" })
16549
16575
  ] }),
16550
16576
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
16551
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text)]", children: "Component Type" }),
16577
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 }, children: "Component Type" }),
16552
16578
  /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: [
16553
16579
  { id: "block", label: "Block" },
16554
16580
  { id: "page-template", label: "Page Template" },
@@ -16558,9 +16584,10 @@ function CustomComponentHelper({ className }) {
16558
16584
  {
16559
16585
  onClick: () => setComponentType(type.id),
16560
16586
  className: cn(
16561
- "px-4 py-2 rounded-lg text-sm font-medium transition-all",
16562
- componentType === type.id ? "bg-[var(--canvas-primary)] text-white" : "bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]"
16587
+ "cursor-pointer px-4 py-2 rounded-lg font-medium transition-all",
16588
+ componentType === type.id ? "bg-[var(--canvas-primary)] text-[var(--canvas-primary-foreground)]" : "bg-[var(--canvas-surface)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]"
16563
16589
  ),
16590
+ style: { fontSize: "var(--typo-body-s-size)" },
16564
16591
  children: type.label
16565
16592
  },
16566
16593
  type.id
@@ -16571,7 +16598,8 @@ function CustomComponentHelper({ className }) {
16571
16598
  "label",
16572
16599
  {
16573
16600
  htmlFor: "component-name",
16574
- className: "text-sm font-medium text-[var(--canvas-text)]",
16601
+ className: "text-[var(--canvas-text)]",
16602
+ style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 },
16575
16603
  children: "Component Name"
16576
16604
  }
16577
16605
  ),
@@ -16583,7 +16611,8 @@ function CustomComponentHelper({ className }) {
16583
16611
  value: componentName,
16584
16612
  onChange: (e) => setComponentName(e.target.value),
16585
16613
  placeholder: "e.g., MultiStepPopup, ImageCarousel, StatCard",
16586
- 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"
16614
+ className: "w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent",
16615
+ style: { fontSize: "var(--typo-body-s-size)" }
16587
16616
  }
16588
16617
  )
16589
16618
  ] }),
@@ -16592,7 +16621,8 @@ function CustomComponentHelper({ className }) {
16592
16621
  "label",
16593
16622
  {
16594
16623
  htmlFor: "component-description",
16595
- className: "text-sm font-medium text-[var(--canvas-text)]",
16624
+ className: "text-[var(--canvas-text)]",
16625
+ style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 },
16596
16626
  children: "Description"
16597
16627
  }
16598
16628
  ),
@@ -16604,13 +16634,14 @@ function CustomComponentHelper({ className }) {
16604
16634
  onChange: (e) => setComponentDescription(e.target.value),
16605
16635
  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)",
16606
16636
  rows: 4,
16607
- 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"
16637
+ className: "w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent resize-none",
16638
+ style: { fontSize: "var(--typo-body-s-size)" }
16608
16639
  }
16609
16640
  )
16610
16641
  ] }),
16611
16642
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
16612
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text)]", children: "Reference Components (optional)" }),
16613
- /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--canvas-text-muted)] mb-2", children: "Select existing components to use as style/pattern references" }),
16643
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 }, children: "Reference Components (optional)" }),
16644
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mb-2", style: { fontSize: "var(--typo-body-xs-size)" }, children: "Select existing components to use as style/pattern references" }),
16614
16645
  /* @__PURE__ */ jsx(
16615
16646
  ComponentSearch,
16616
16647
  {
@@ -16621,7 +16652,7 @@ function CustomComponentHelper({ className }) {
16621
16652
  ] }),
16622
16653
  hasContent && /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-4", children: [
16623
16654
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
16624
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]", children: [
16655
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 font-medium text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
16625
16656
  /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-[var(--canvas-primary)]" }),
16626
16657
  "Generated Prompt"
16627
16658
  ] }),
@@ -16631,9 +16662,10 @@ function CustomComponentHelper({ className }) {
16631
16662
  onClick: handleCopy,
16632
16663
  disabled: !generatedPrompt,
16633
16664
  className: cn(
16634
- "flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all",
16635
- copied ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
16665
+ "cursor-pointer flex items-center gap-1.5 px-2.5 py-1.5 rounded-md font-medium transition-all",
16666
+ copied ? "bg-[var(--canvas-success-surface)] text-[var(--canvas-success)]" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
16636
16667
  ),
16668
+ style: { fontSize: "var(--typo-body-xs-size)" },
16637
16669
  children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
16638
16670
  /* @__PURE__ */ jsx(Check, { className: "size-3" }),
16639
16671
  "Copied!"
@@ -16644,9 +16676,9 @@ function CustomComponentHelper({ className }) {
16644
16676
  }
16645
16677
  )
16646
16678
  ] }),
16647
- /* @__PURE__ */ jsx("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", children: generatedPrompt })
16679
+ /* @__PURE__ */ jsx("pre", { className: "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", style: { fontSize: "var(--typo-body-s-size)" }, children: generatedPrompt })
16648
16680
  ] }),
16649
- !hasContent && /* @__PURE__ */ jsx("div", { className: "rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)]", children: "Enter a component name or description to generate a prompt" }) })
16681
+ !hasContent && /* @__PURE__ */ jsx("div", { className: "rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: "Enter a component name or description to generate a prompt" }) })
16650
16682
  ] });
16651
16683
  }
16652
16684
  function toKebabCase(str) {
@@ -16772,7 +16804,7 @@ function TileCard({ item, onSave, onClick }) {
16772
16804
  "button",
16773
16805
  {
16774
16806
  onClick: handlePrevImage,
16775
- className: "flex items-center justify-center shrink-0 transition-transform hover:scale-105",
16807
+ className: "cursor-pointer flex items-center justify-center shrink-0 transition-transform hover:scale-105",
16776
16808
  style: {
16777
16809
  width: "32px",
16778
16810
  height: "32px",
@@ -16794,7 +16826,7 @@ function TileCard({ item, onSave, onClick }) {
16794
16826
  "button",
16795
16827
  {
16796
16828
  onClick: handleNextImage,
16797
- className: "flex items-center justify-center shrink-0 transition-transform hover:scale-105",
16829
+ className: "cursor-pointer flex items-center justify-center shrink-0 transition-transform hover:scale-105",
16798
16830
  style: {
16799
16831
  width: "32px",
16800
16832
  height: "32px",
@@ -16817,7 +16849,7 @@ function TileCard({ item, onSave, onClick }) {
16817
16849
  "button",
16818
16850
  {
16819
16851
  onClick: handleSave,
16820
- className: "flex items-center transition-transform hover:scale-105",
16852
+ className: "cursor-pointer flex items-center transition-transform hover:scale-105",
16821
16853
  style: {
16822
16854
  height: "var(--spacing-5xl, 40px)",
16823
16855
  paddingLeft: "var(--spacing-xl, 16px)",
@@ -19672,7 +19704,7 @@ function DateCell({
19672
19704
  "span",
19673
19705
  {
19674
19706
  className: cn(
19675
- "font-semibold text-base leading-6",
19707
+ "font-semibold leading-6",
19676
19708
  showStrikethrough && "line-through"
19677
19709
  ),
19678
19710
  style: {
@@ -20096,13 +20128,14 @@ function PaginationButton({
20096
20128
  type: "button",
20097
20129
  onClick,
20098
20130
  className: cn(
20099
- "flex items-center justify-center shrink-0 transition-colors",
20100
- "font-semibold text-[14px] leading-[20px]",
20131
+ "cursor-pointer flex items-center justify-center shrink-0 transition-colors",
20132
+ "font-semibold",
20101
20133
  "size-[32px] rounded-[var(--radius-xs)]",
20102
20134
  "border bg-[var(--canvas-background)]",
20103
20135
  isSelected ? "border-[var(--canvas-primary)] text-[var(--canvas-primary)]" : "border-[var(--canvas-border)] text-[var(--canvas-text)] hover:bg-[var(--canvas-surface)]",
20104
20136
  className
20105
20137
  ),
20138
+ style: { fontSize: "var(--typo-body-s-size)", lineHeight: "var(--typo-body-s-line-height)" },
20106
20139
  "aria-current": isSelected ? "page" : void 0,
20107
20140
  children: page
20108
20141
  }
@@ -20138,13 +20171,13 @@ function NavigationButton({
20138
20171
  "h-[32px] rounded-[var(--radius-xs)]",
20139
20172
  "border bg-[var(--canvas-background)] border-[var(--canvas-border)]",
20140
20173
  isIconOnly ? "w-[32px]" : "px-[var(--spacing-md)] gap-[var(--spacing-xs)]",
20141
- disabled ? "text-[var(--canvas-text-placeholder)] cursor-not-allowed" : "text-[var(--canvas-text)] hover:bg-[var(--canvas-surface)]",
20174
+ disabled ? "text-[var(--canvas-text-placeholder)] cursor-not-allowed" : "cursor-pointer text-[var(--canvas-text)] hover:bg-[var(--canvas-surface)]",
20142
20175
  className
20143
20176
  ),
20144
20177
  "aria-label": type,
20145
20178
  children: [
20146
20179
  (type === "first" || type === "prev") && /* @__PURE__ */ jsx(Icon2, { className: "size-[20px]" }),
20147
- label && /* @__PURE__ */ jsx("span", { className: "font-semibold text-[14px] leading-[20px]", children: label }),
20180
+ label && /* @__PURE__ */ jsx("span", { className: "font-semibold", style: { fontSize: "var(--typo-body-s-size)", lineHeight: "var(--typo-body-s-line-height)" }, children: label }),
20148
20181
  (type === "next" || type === "last") && /* @__PURE__ */ jsx(Icon2, { className: "size-[20px]" })
20149
20182
  ]
20150
20183
  }
@@ -20246,8 +20279,8 @@ function Pagination({
20246
20279
  showResultsText && /* @__PURE__ */ jsxs(
20247
20280
  "span",
20248
20281
  {
20249
- className: "text-[14px] leading-[20px] text-[var(--canvas-text)] whitespace-nowrap",
20250
- style: { fontFamily: "var(--typo-global-font)" },
20282
+ className: "text-[var(--canvas-text)] whitespace-nowrap",
20283
+ style: { fontFamily: "var(--typo-global-font)", fontSize: "var(--typo-body-s-size)", lineHeight: "var(--typo-body-s-line-height)" },
20251
20284
  children: [
20252
20285
  "Viewing ",
20253
20286
  formatNumber(startItem),
@@ -20364,7 +20397,7 @@ function PromptTemplate({
20364
20397
  ),
20365
20398
  children: [
20366
20399
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
20367
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]", children: [
20400
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 font-medium text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
20368
20401
  /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-[var(--canvas-primary)]" }),
20369
20402
  title
20370
20403
  ] }),
@@ -20373,9 +20406,10 @@ function PromptTemplate({
20373
20406
  {
20374
20407
  onClick: handleCopy,
20375
20408
  className: cn(
20376
- "flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all",
20377
- copied ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20409
+ "cursor-pointer flex items-center gap-1.5 px-2.5 py-1.5 rounded-md font-medium transition-all",
20410
+ copied ? "bg-[var(--canvas-success-surface)] text-[var(--canvas-success)]" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20378
20411
  ),
20412
+ style: { fontSize: "var(--typo-body-xs-size)" },
20379
20413
  children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
20380
20414
  /* @__PURE__ */ jsx(Check, { className: "size-3" }),
20381
20415
  "Copied!"
@@ -20386,7 +20420,7 @@ function PromptTemplate({
20386
20420
  }
20387
20421
  )
20388
20422
  ] }),
20389
- /* @__PURE__ */ jsx("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", children: prompt })
20423
+ /* @__PURE__ */ jsx("pre", { className: "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", style: { fontSize: "var(--typo-body-s-size)" }, children: prompt })
20390
20424
  ]
20391
20425
  }
20392
20426
  );
@@ -20403,9 +20437,10 @@ function MiniPromptChip({ label, prompt }) {
20403
20437
  {
20404
20438
  onClick: handleCopy,
20405
20439
  className: cn(
20406
- "inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs font-medium transition-all",
20407
- copied ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : "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)]"
20440
+ "cursor-pointer inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full font-medium transition-all",
20441
+ copied ? "bg-[var(--canvas-success-surface)] text-[var(--canvas-success)]" : "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)]"
20408
20442
  ),
20443
+ style: { fontSize: "var(--typo-body-xs-size)" },
20409
20444
  title: `Copy: ${prompt.slice(0, 100)}...`,
20410
20445
  children: [
20411
20446
  copied ? /* @__PURE__ */ jsx(Check, { className: "size-3" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3" }),
@@ -20416,7 +20451,7 @@ function MiniPromptChip({ label, prompt }) {
20416
20451
  }
20417
20452
  function PromptChipsRow({ chips, label = "More prompts:" }) {
20418
20453
  return /* @__PURE__ */ jsxs("div", { className: "pt-4 border-t border-[var(--canvas-border)]", children: [
20419
- /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--canvas-text-muted)] mb-2 font-medium", children: label }),
20454
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mb-2 font-medium", style: { fontSize: "var(--typo-body-xs-size)" }, children: label }),
20420
20455
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: chips.map((chip) => /* @__PURE__ */ jsx(MiniPromptChip, { label: chip.label, prompt: chip.prompt }, chip.label)) })
20421
20456
  ] });
20422
20457
  }
@@ -20499,9 +20534,10 @@ function ScreenPromptTemplate() {
20499
20534
  {
20500
20535
  onClick: () => setPromptType(type),
20501
20536
  className: cn(
20502
- "flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-all",
20503
- isActive ? "bg-[var(--canvas-primary)] text-white shadow-sm" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]"
20537
+ "cursor-pointer flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-all",
20538
+ isActive ? "bg-[var(--canvas-primary)] text-[var(--canvas-primary-foreground)] shadow-sm" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)] hover:text-[var(--canvas-primary)]"
20504
20539
  ),
20540
+ style: { fontSize: "var(--typo-body-s-size)" },
20505
20541
  children: [
20506
20542
  /* @__PURE__ */ jsx(Icon2, { className: "size-4" }),
20507
20543
  config.label
@@ -20511,10 +20547,10 @@ function ScreenPromptTemplate() {
20511
20547
  );
20512
20548
  }
20513
20549
  ) }),
20514
- /* @__PURE__ */ jsx("p", { className: "text-xs text-[var(--canvas-text-muted)] mb-3", children: currentConfig.description }),
20550
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mb-3", style: { fontSize: "var(--typo-body-xs-size)" }, children: currentConfig.description }),
20515
20551
  /* @__PURE__ */ jsx("div", { className: "border-t border-[var(--canvas-border)] my-4" }),
20516
20552
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
20517
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]", children: [
20553
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 font-medium text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
20518
20554
  /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-[var(--canvas-primary)]" }),
20519
20555
  "Generate with Cursor"
20520
20556
  ] }),
@@ -20523,9 +20559,10 @@ function ScreenPromptTemplate() {
20523
20559
  {
20524
20560
  onClick: handleCopy,
20525
20561
  className: cn(
20526
- "flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all",
20527
- copied ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20562
+ "cursor-pointer flex items-center gap-1.5 px-2.5 py-1.5 rounded-md font-medium transition-all",
20563
+ copied ? "bg-[var(--canvas-success-surface)] text-[var(--canvas-success)]" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20528
20564
  ),
20565
+ style: { fontSize: "var(--typo-body-xs-size)" },
20529
20566
  children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
20530
20567
  /* @__PURE__ */ jsx(Check, { className: "size-3" }),
20531
20568
  "Copied!"
@@ -20536,7 +20573,7 @@ function ScreenPromptTemplate() {
20536
20573
  }
20537
20574
  )
20538
20575
  ] }),
20539
- /* @__PURE__ */ jsx("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", children: currentConfig.prompt })
20576
+ /* @__PURE__ */ jsx("pre", { className: "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", style: { fontSize: "var(--typo-body-s-size)" }, children: currentConfig.prompt })
20540
20577
  ] });
20541
20578
  }
20542
20579
  function ScreenPromptBuilder({ className }) {
@@ -20609,11 +20646,11 @@ function ScreenPromptBuilder({ className }) {
20609
20646
  const hasContent = selectedComponents.length > 0 || screenName || screenContext;
20610
20647
  return /* @__PURE__ */ jsxs("div", { className: cn("space-y-6", className), children: [
20611
20648
  /* @__PURE__ */ jsxs("div", { children: [
20612
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-[var(--canvas-text)]", children: "Build from Components" }),
20613
- /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)] mt-1", children: "Select existing components and describe your screen to generate a prompt" })
20649
+ /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-l-size)" }, children: "Build from Components" }),
20650
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)] mt-1", style: { fontSize: "var(--typo-body-s-size)" }, children: "Select existing components and describe your screen to generate a prompt" })
20614
20651
  ] }),
20615
20652
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
20616
- /* @__PURE__ */ jsx("label", { className: "text-sm font-medium text-[var(--canvas-text)]", children: "Select Components" }),
20653
+ /* @__PURE__ */ jsx("label", { className: "text-[var(--canvas-text)]", style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 }, children: "Select Components" }),
20617
20654
  /* @__PURE__ */ jsx(
20618
20655
  ComponentSearch,
20619
20656
  {
@@ -20627,7 +20664,8 @@ function ScreenPromptBuilder({ className }) {
20627
20664
  "label",
20628
20665
  {
20629
20666
  htmlFor: "screen-name",
20630
- className: "text-sm font-medium text-[var(--canvas-text)]",
20667
+ className: "text-[var(--canvas-text)]",
20668
+ style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 },
20631
20669
  children: "Screen Name"
20632
20670
  }
20633
20671
  ),
@@ -20639,7 +20677,8 @@ function ScreenPromptBuilder({ className }) {
20639
20677
  value: screenName,
20640
20678
  onChange: (e) => setScreenName(e.target.value),
20641
20679
  placeholder: "e.g., User Dashboard, Order History, Settings",
20642
- 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"
20680
+ className: "w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent",
20681
+ style: { fontSize: "var(--typo-body-s-size)" }
20643
20682
  }
20644
20683
  )
20645
20684
  ] }),
@@ -20648,7 +20687,8 @@ function ScreenPromptBuilder({ className }) {
20648
20687
  "label",
20649
20688
  {
20650
20689
  htmlFor: "screen-context",
20651
- className: "text-sm font-medium text-[var(--canvas-text)]",
20690
+ className: "text-[var(--canvas-text)]",
20691
+ style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 },
20652
20692
  children: "Screen Purpose & Context"
20653
20693
  }
20654
20694
  ),
@@ -20660,7 +20700,8 @@ function ScreenPromptBuilder({ className }) {
20660
20700
  onChange: (e) => setScreenContext(e.target.value),
20661
20701
  placeholder: "Describe what this screen should do, what users will accomplish here, and any specific requirements...",
20662
20702
  rows: 3,
20663
- 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"
20703
+ className: "w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] placeholder:text-[var(--canvas-text-placeholder)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent resize-none",
20704
+ style: { fontSize: "var(--typo-body-s-size)" }
20664
20705
  }
20665
20706
  )
20666
20707
  ] }),
@@ -20669,7 +20710,8 @@ function ScreenPromptBuilder({ className }) {
20669
20710
  "label",
20670
20711
  {
20671
20712
  htmlFor: "persona",
20672
- className: "text-sm font-medium text-[var(--canvas-text)]",
20713
+ className: "text-[var(--canvas-text)]",
20714
+ style: { fontSize: "var(--typo-body-s-size)", fontWeight: 500 },
20673
20715
  children: "Target Persona (optional)"
20674
20716
  }
20675
20717
  ),
@@ -20679,7 +20721,8 @@ function ScreenPromptBuilder({ className }) {
20679
20721
  id: "persona",
20680
20722
  value: selectedPersona,
20681
20723
  onChange: (e) => setSelectedPersona(e.target.value),
20682
- 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",
20724
+ className: "w-full px-3 py-2 rounded-lg border border-[var(--canvas-border)] bg-[var(--canvas-background)] text-[var(--canvas-text)] focus:outline-none focus:ring-2 focus:ring-[var(--canvas-primary)] focus:border-transparent",
20725
+ style: { fontSize: "var(--typo-body-s-size)" },
20683
20726
  children: [
20684
20727
  /* @__PURE__ */ jsx("option", { value: "", children: "Select a persona..." }),
20685
20728
  personas.map((persona) => /* @__PURE__ */ jsxs("option", { value: persona.id, children: [
@@ -20695,7 +20738,7 @@ function ScreenPromptBuilder({ className }) {
20695
20738
  ] }),
20696
20739
  hasContent && /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-4", children: [
20697
20740
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
20698
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-[var(--canvas-text-muted)]", children: [
20741
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 font-medium text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
20699
20742
  /* @__PURE__ */ jsx(Sparkles, { className: "size-4 text-[var(--canvas-primary)]" }),
20700
20743
  "Generated Prompt"
20701
20744
  ] }),
@@ -20705,9 +20748,10 @@ function ScreenPromptBuilder({ className }) {
20705
20748
  onClick: handleCopy,
20706
20749
  disabled: !generatedPrompt,
20707
20750
  className: cn(
20708
- "flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs font-medium transition-all",
20709
- copied ? "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20751
+ "cursor-pointer flex items-center gap-1.5 px-2.5 py-1.5 rounded-md font-medium transition-all",
20752
+ copied ? "bg-[var(--canvas-success-surface)] text-[var(--canvas-success)]" : "bg-[var(--canvas-background)] text-[var(--canvas-text-muted)] hover:text-[var(--canvas-text)] border border-[var(--canvas-border)] hover:border-[var(--canvas-primary)]"
20710
20753
  ),
20754
+ style: { fontSize: "var(--typo-body-xs-size)" },
20711
20755
  children: copied ? /* @__PURE__ */ jsxs(Fragment, { children: [
20712
20756
  /* @__PURE__ */ jsx(Check, { className: "size-3" }),
20713
20757
  "Copied!"
@@ -20718,18 +20762,18 @@ function ScreenPromptBuilder({ className }) {
20718
20762
  }
20719
20763
  )
20720
20764
  ] }),
20721
- /* @__PURE__ */ jsx("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", children: generatedPrompt })
20765
+ /* @__PURE__ */ jsx("pre", { className: "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", style: { fontSize: "var(--typo-body-s-size)" }, children: generatedPrompt })
20722
20766
  ] }),
20723
- !hasContent && /* @__PURE__ */ jsx("div", { className: "rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)]", children: "Select components or enter screen details to generate a prompt" }) })
20767
+ !hasContent && /* @__PURE__ */ jsx("div", { className: "rounded-lg border-2 border-dashed border-[var(--canvas-border)] bg-[var(--canvas-surface)] p-8 text-center", children: /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: "Select components or enter screen details to generate a prompt" }) })
20724
20768
  ] });
20725
20769
  }
20726
20770
  function ScreenNode({ data, selected }) {
20727
20771
  const { screen, childScreens } = data;
20728
20772
  const hasChildren = childScreens.length > 0;
20729
20773
  const statusColors = {
20730
- draft: "bg-yellow-100 text-yellow-700 border-yellow-200",
20731
- review: "bg-blue-100 text-blue-700 border-blue-200",
20732
- approved: "bg-green-100 text-green-700 border-green-200"
20774
+ draft: { bg: "var(--canvas-warning-surface)", text: "var(--canvas-warning)", border: "var(--canvas-warning)" },
20775
+ review: { bg: "var(--canvas-info-surface)", text: "var(--canvas-info)", border: "var(--canvas-info)" },
20776
+ approved: { bg: "var(--canvas-success-surface)", text: "var(--canvas-success)", border: "var(--canvas-success)" }
20733
20777
  };
20734
20778
  const typeLabels = {
20735
20779
  page: null,
@@ -20742,7 +20786,7 @@ function ScreenNode({ data, selected }) {
20742
20786
  "div",
20743
20787
  {
20744
20788
  className: cn(
20745
- "rounded-lg border-2 bg-white shadow-sm min-w-[160px]",
20789
+ "rounded-lg border-2 bg-[var(--canvas-background)] shadow-sm min-w-[160px]",
20746
20790
  selected ? "border-[var(--canvas-primary)] shadow-md" : "border-[var(--canvas-border)]"
20747
20791
  ),
20748
20792
  children: [
@@ -20756,11 +20800,11 @@ function ScreenNode({ data, selected }) {
20756
20800
  ),
20757
20801
  /* @__PURE__ */ jsxs("div", { className: "p-3", children: [
20758
20802
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
20759
- /* @__PURE__ */ jsx("span", { className: "text-lg", children: screen.icon || "\u{1F4C4}" }),
20760
- /* @__PURE__ */ jsx("span", { className: "font-medium text-sm text-[var(--canvas-text)] truncate", children: screen.name })
20803
+ /* @__PURE__ */ jsx("span", { style: { fontSize: "var(--typo-body-l-size)" }, children: screen.icon || "\u{1F4C4}" }),
20804
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-[var(--canvas-text)] truncate", style: { fontSize: "var(--typo-body-s-size)" }, children: screen.name })
20761
20805
  ] }),
20762
20806
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
20763
- /* @__PURE__ */ jsxs("span", { className: "text-xs text-[var(--canvas-text-muted)] font-mono", children: [
20807
+ /* @__PURE__ */ jsxs("span", { className: "text-[var(--canvas-text-muted)] font-mono", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
20764
20808
  "/",
20765
20809
  screen.slug
20766
20810
  ] }),
@@ -20769,10 +20813,12 @@ function ScreenNode({ data, selected }) {
20769
20813
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between mt-2 pt-2 border-t border-[var(--canvas-border)]", children: /* @__PURE__ */ jsx(
20770
20814
  "span",
20771
20815
  {
20772
- className: cn(
20773
- "text-[10px] px-1.5 py-0.5 rounded border font-medium capitalize",
20774
- statusColors[screen.status]
20775
- ),
20816
+ className: "text-[10px] px-1.5 py-0.5 rounded border font-medium capitalize",
20817
+ style: {
20818
+ backgroundColor: statusColors[screen.status].bg,
20819
+ color: statusColors[screen.status].text,
20820
+ borderColor: statusColors[screen.status].border
20821
+ },
20776
20822
  children: screen.status
20777
20823
  }
20778
20824
  ) })
@@ -20781,7 +20827,7 @@ function ScreenNode({ data, selected }) {
20781
20827
  "div",
20782
20828
  {
20783
20829
  className: cn(
20784
- "px-3 py-2 flex items-center gap-2 text-xs",
20830
+ "px-3 py-2 flex items-center gap-2",
20785
20831
  "hover:bg-[var(--canvas-surface)]",
20786
20832
  i < childScreens.length - 1 && "border-b border-[var(--canvas-border)]"
20787
20833
  ),
@@ -20792,8 +20838,8 @@ function ScreenNode({ data, selected }) {
20792
20838
  child.type === "drawer" && "\u{1F4E5}",
20793
20839
  child.type === "state" && "\u{1F504}"
20794
20840
  ] }),
20795
- /* @__PURE__ */ jsx("span", { className: "text-[var(--canvas-text)] truncate", children: child.name }),
20796
- /* @__PURE__ */ jsxs("span", { className: "text-[var(--canvas-text-muted)] font-mono ml-auto", children: [
20841
+ /* @__PURE__ */ jsx("span", { className: "text-[var(--canvas-text)] truncate", style: { fontSize: "var(--typo-body-s-size)" }, children: child.name }),
20842
+ /* @__PURE__ */ jsxs("span", { className: "text-[var(--canvas-text-muted)] font-mono ml-auto", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
20797
20843
  "/",
20798
20844
  child.slug
20799
20845
  ] })
@@ -20879,7 +20925,8 @@ function ScreenFlowchart({
20879
20925
  "button",
20880
20926
  {
20881
20927
  onClick: onOpenFullscreen,
20882
- 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",
20928
+ className: "cursor-pointer absolute top-3 right-3 z-10 flex items-center gap-1.5 px-3 py-1.5 rounded-md 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",
20929
+ style: { fontSize: "var(--typo-body-xs-size)" },
20883
20930
  children: [
20884
20931
  /* @__PURE__ */ jsx(ExternalLink, { className: "size-3" }),
20885
20932
  "Open in new tab"
@@ -20901,7 +20948,7 @@ function ScreenFlowchart({
20901
20948
  className: "bg-[var(--canvas-surface)] rounded-lg border border-[var(--canvas-border)]",
20902
20949
  children: [
20903
20950
  /* @__PURE__ */ jsx(Background, { variant: BackgroundVariant.Dots, gap: 20, size: 1 }),
20904
- /* @__PURE__ */ jsx(Controls, { className: "!bg-white !border-[var(--canvas-border)] !shadow-sm" })
20951
+ /* @__PURE__ */ jsx(Controls, { className: "!bg-[var(--canvas-background)] !border-[var(--canvas-border)] !shadow-sm" })
20905
20952
  ]
20906
20953
  }
20907
20954
  )
@@ -20921,18 +20968,19 @@ function PersonaCard({ persona, className }) {
20921
20968
  /* @__PURE__ */ jsx("div", { className: "text-3xl", children: persona.avatar || "\u{1F464}" }),
20922
20969
  /* @__PURE__ */ jsxs("div", { children: [
20923
20970
  /* @__PURE__ */ jsx("h3", { className: "font-semibold text-[var(--canvas-text)]", children: persona.name }),
20924
- /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--canvas-text-muted)]", children: persona.role })
20971
+ /* @__PURE__ */ jsx("p", { className: "text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: persona.role })
20925
20972
  ] })
20926
20973
  ] }),
20927
20974
  /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
20928
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs font-medium text-[var(--canvas-text-muted)] mb-2", children: [
20975
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 font-medium text-[var(--canvas-text-muted)] mb-2", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
20929
20976
  /* @__PURE__ */ jsx(Target$1, { className: "size-3" }),
20930
20977
  "Goals"
20931
20978
  ] }),
20932
20979
  /* @__PURE__ */ jsx("ul", { className: "space-y-1", children: persona.goals.map((goal, i) => /* @__PURE__ */ jsxs(
20933
20980
  "li",
20934
20981
  {
20935
- className: "text-sm text-[var(--canvas-text)] flex items-start gap-2",
20982
+ className: "text-[var(--canvas-text)] flex items-start gap-2",
20983
+ style: { fontSize: "var(--typo-body-s-size)" },
20936
20984
  children: [
20937
20985
  /* @__PURE__ */ jsx("span", { className: "text-[var(--canvas-primary)] mt-1.5", children: "\u2022" }),
20938
20986
  goal
@@ -20942,16 +20990,17 @@ function PersonaCard({ persona, className }) {
20942
20990
  )) })
20943
20991
  ] }),
20944
20992
  /* @__PURE__ */ jsxs("div", { className: "mb-4", children: [
20945
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-xs font-medium text-[var(--canvas-text-muted)] mb-2", children: [
20993
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 font-medium text-[var(--canvas-text-muted)] mb-2", style: { fontSize: "var(--typo-body-xs-size)" }, children: [
20946
20994
  /* @__PURE__ */ jsx(AlertCircle, { className: "size-3" }),
20947
20995
  "Pain Points"
20948
20996
  ] }),
20949
20997
  /* @__PURE__ */ jsx("ul", { className: "space-y-1", children: persona.painPoints.map((point, i) => /* @__PURE__ */ jsxs(
20950
20998
  "li",
20951
20999
  {
20952
- className: "text-sm text-[var(--canvas-text)] flex items-start gap-2",
21000
+ className: "text-[var(--canvas-text)] flex items-start gap-2",
21001
+ style: { fontSize: "var(--typo-body-s-size)" },
20953
21002
  children: [
20954
- /* @__PURE__ */ jsx("span", { className: "text-red-500 mt-1.5", children: "\u2022" }),
21003
+ /* @__PURE__ */ jsx("span", { className: "text-[var(--canvas-destructive)] mt-1.5", children: "\u2022" }),
20955
21004
  point
20956
21005
  ]
20957
21006
  },
@@ -20960,7 +21009,7 @@ function PersonaCard({ persona, className }) {
20960
21009
  ] }),
20961
21010
  /* @__PURE__ */ jsx("div", { className: "border-t border-[var(--canvas-border)] pt-4 mt-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-2", children: [
20962
21011
  /* @__PURE__ */ jsx(Quote, { className: "size-4 text-[var(--canvas-text-muted)] shrink-0 mt-0.5" }),
20963
- /* @__PURE__ */ jsxs("p", { className: "text-sm italic text-[var(--canvas-text-muted)]", children: [
21012
+ /* @__PURE__ */ jsxs("p", { className: "italic text-[var(--canvas-text-muted)]", style: { fontSize: "var(--typo-body-s-size)" }, children: [
20964
21013
  '"',
20965
21014
  persona.quote,
20966
21015
  '"'
@@ -23679,14 +23728,14 @@ function PricingCards() {
23679
23728
  "button",
23680
23729
  {
23681
23730
  onClick: () => setIsAnnual(!isAnnual),
23682
- className: "relative w-20 h-11 rounded-full transition-colors",
23731
+ className: "cursor-pointer relative w-20 h-11 rounded-full transition-colors",
23683
23732
  style: {
23684
23733
  backgroundColor: isAnnual ? "var(--canvas-primary)" : "var(--canvas-border)"
23685
23734
  },
23686
23735
  children: /* @__PURE__ */ jsx(
23687
23736
  "div",
23688
23737
  {
23689
- className: "absolute top-1 w-9 h-9 bg-white rounded-full shadow transition-all",
23738
+ className: "absolute top-1 w-9 h-9 bg-[var(--canvas-background)] rounded-full shadow transition-all",
23690
23739
  style: {
23691
23740
  left: isAnnual ? "calc(100% - 40px)" : "4px"
23692
23741
  }