@bergetai/ui 0.16.0 → 0.16.1

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 (151) hide show
  1. package/dist/components/alert-dialog/AlertDialog.cjs +26 -5
  2. package/dist/components/alert-dialog/AlertDialog.cjs.map +1 -1
  3. package/dist/components/alert-dialog/AlertDialog.d.cts.map +1 -1
  4. package/dist/components/alert-dialog/AlertDialog.d.mts.map +1 -1
  5. package/dist/components/alert-dialog/AlertDialog.mjs +26 -5
  6. package/dist/components/alert-dialog/AlertDialog.mjs.map +1 -1
  7. package/dist/components/badge/Badge.cjs +12 -3
  8. package/dist/components/badge/Badge.cjs.map +1 -1
  9. package/dist/components/badge/Badge.d.cts.map +1 -1
  10. package/dist/components/badge/Badge.d.mts.map +1 -1
  11. package/dist/components/badge/Badge.mjs +12 -3
  12. package/dist/components/badge/Badge.mjs.map +1 -1
  13. package/dist/components/box/Box.cjs +3 -1
  14. package/dist/components/box/Box.cjs.map +1 -1
  15. package/dist/components/box/Box.mjs +3 -1
  16. package/dist/components/box/Box.mjs.map +1 -1
  17. package/dist/components/button/Button.cjs +40 -6
  18. package/dist/components/button/Button.cjs.map +1 -1
  19. package/dist/components/button/Button.d.cts.map +1 -1
  20. package/dist/components/button/Button.d.mts.map +1 -1
  21. package/dist/components/button/Button.mjs +40 -6
  22. package/dist/components/button/Button.mjs.map +1 -1
  23. package/dist/components/card/Card.cjs +2 -2
  24. package/dist/components/card/Card.cjs.map +1 -1
  25. package/dist/components/card/Card.mjs +2 -2
  26. package/dist/components/card/Card.mjs.map +1 -1
  27. package/dist/components/checkbox/Checkbox.cjs +28 -11
  28. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  29. package/dist/components/checkbox/Checkbox.d.cts.map +1 -1
  30. package/dist/components/checkbox/Checkbox.d.mts.map +1 -1
  31. package/dist/components/checkbox/Checkbox.mjs +28 -11
  32. package/dist/components/checkbox/Checkbox.mjs.map +1 -1
  33. package/dist/components/code-block/CodeBlock.cjs +10 -7
  34. package/dist/components/code-block/CodeBlock.cjs.map +1 -1
  35. package/dist/components/code-block/CodeBlock.mjs +10 -7
  36. package/dist/components/code-block/CodeBlock.mjs.map +1 -1
  37. package/dist/components/container/Container.cjs +16 -5
  38. package/dist/components/container/Container.cjs.map +1 -1
  39. package/dist/components/container/Container.d.cts.map +1 -1
  40. package/dist/components/container/Container.d.mts.map +1 -1
  41. package/dist/components/container/Container.mjs +16 -5
  42. package/dist/components/container/Container.mjs.map +1 -1
  43. package/dist/components/country-select/CountrySelect.cjs +22 -13
  44. package/dist/components/country-select/CountrySelect.cjs.map +1 -1
  45. package/dist/components/country-select/CountrySelect.mjs +22 -13
  46. package/dist/components/country-select/CountrySelect.mjs.map +1 -1
  47. package/dist/components/dialog/Dialog.cjs +23 -5
  48. package/dist/components/dialog/Dialog.cjs.map +1 -1
  49. package/dist/components/dialog/Dialog.d.cts.map +1 -1
  50. package/dist/components/dialog/Dialog.d.mts.map +1 -1
  51. package/dist/components/dialog/Dialog.mjs +23 -5
  52. package/dist/components/dialog/Dialog.mjs.map +1 -1
  53. package/dist/components/divider/Divider.cjs +5 -5
  54. package/dist/components/divider/Divider.cjs.map +1 -1
  55. package/dist/components/divider/Divider.mjs +5 -5
  56. package/dist/components/divider/Divider.mjs.map +1 -1
  57. package/dist/components/dropdown-menu/DropdownMenu.cjs +8 -2
  58. package/dist/components/dropdown-menu/DropdownMenu.cjs.map +1 -1
  59. package/dist/components/dropdown-menu/DropdownMenu.d.cts.map +1 -1
  60. package/dist/components/dropdown-menu/DropdownMenu.d.mts.map +1 -1
  61. package/dist/components/dropdown-menu/DropdownMenu.mjs +8 -2
  62. package/dist/components/dropdown-menu/DropdownMenu.mjs.map +1 -1
  63. package/dist/components/empty/Empty.cjs +4 -1
  64. package/dist/components/empty/Empty.cjs.map +1 -1
  65. package/dist/components/empty/Empty.d.cts.map +1 -1
  66. package/dist/components/empty/Empty.d.mts.map +1 -1
  67. package/dist/components/empty/Empty.mjs +4 -1
  68. package/dist/components/empty/Empty.mjs.map +1 -1
  69. package/dist/components/grid/Grid.cjs +11 -1
  70. package/dist/components/grid/Grid.cjs.map +1 -1
  71. package/dist/components/grid/Grid.mjs +11 -1
  72. package/dist/components/grid/Grid.mjs.map +1 -1
  73. package/dist/components/input-group/InputGroup.cjs +11 -2
  74. package/dist/components/input-group/InputGroup.cjs.map +1 -1
  75. package/dist/components/input-group/InputGroup.d.cts.map +1 -1
  76. package/dist/components/input-group/InputGroup.d.mts.map +1 -1
  77. package/dist/components/input-group/InputGroup.mjs +11 -2
  78. package/dist/components/input-group/InputGroup.mjs.map +1 -1
  79. package/dist/components/item/Item.cjs +4 -1
  80. package/dist/components/item/Item.cjs.map +1 -1
  81. package/dist/components/item/Item.d.cts.map +1 -1
  82. package/dist/components/item/Item.d.mts.map +1 -1
  83. package/dist/components/item/Item.mjs +4 -1
  84. package/dist/components/item/Item.mjs.map +1 -1
  85. package/dist/components/link/Link.cjs +32 -8
  86. package/dist/components/link/Link.cjs.map +1 -1
  87. package/dist/components/link/Link.d.cts.map +1 -1
  88. package/dist/components/link/Link.d.mts.map +1 -1
  89. package/dist/components/link/Link.mjs +32 -8
  90. package/dist/components/link/Link.mjs.map +1 -1
  91. package/dist/components/list/List.cjs +15 -6
  92. package/dist/components/list/List.cjs.map +1 -1
  93. package/dist/components/list/List.d.cts.map +1 -1
  94. package/dist/components/list/List.d.mts.map +1 -1
  95. package/dist/components/list/List.mjs +15 -6
  96. package/dist/components/list/List.mjs.map +1 -1
  97. package/dist/components/model-card/ModelCard.cjs +12 -9
  98. package/dist/components/model-card/ModelCard.cjs.map +1 -1
  99. package/dist/components/model-card/ModelCard.mjs +12 -9
  100. package/dist/components/model-card/ModelCard.mjs.map +1 -1
  101. package/dist/components/navigation-menu/NavigationMenu.cjs +43 -7
  102. package/dist/components/navigation-menu/NavigationMenu.cjs.map +1 -1
  103. package/dist/components/navigation-menu/NavigationMenu.d.cts.map +1 -1
  104. package/dist/components/navigation-menu/NavigationMenu.d.mts.map +1 -1
  105. package/dist/components/navigation-menu/NavigationMenu.mjs +43 -7
  106. package/dist/components/navigation-menu/NavigationMenu.mjs.map +1 -1
  107. package/dist/components/progress/Progress.cjs +4 -1
  108. package/dist/components/progress/Progress.cjs.map +1 -1
  109. package/dist/components/progress/Progress.mjs +4 -1
  110. package/dist/components/progress/Progress.mjs.map +1 -1
  111. package/dist/components/search-input/SearchInput.cjs +1 -1
  112. package/dist/components/search-input/SearchInput.cjs.map +1 -1
  113. package/dist/components/search-input/SearchInput.mjs +1 -1
  114. package/dist/components/search-input/SearchInput.mjs.map +1 -1
  115. package/dist/components/sidebar/Sidebar.cjs +15 -6
  116. package/dist/components/sidebar/Sidebar.cjs.map +1 -1
  117. package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
  118. package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
  119. package/dist/components/sidebar/Sidebar.mjs +15 -6
  120. package/dist/components/sidebar/Sidebar.mjs.map +1 -1
  121. package/dist/components/slider/Slider.cjs +1 -1
  122. package/dist/components/slider/Slider.cjs.map +1 -1
  123. package/dist/components/slider/Slider.mjs +1 -1
  124. package/dist/components/slider/Slider.mjs.map +1 -1
  125. package/dist/components/switch/Switch.cjs +42 -11
  126. package/dist/components/switch/Switch.cjs.map +1 -1
  127. package/dist/components/switch/Switch.d.cts.map +1 -1
  128. package/dist/components/switch/Switch.d.mts.map +1 -1
  129. package/dist/components/switch/Switch.mjs +42 -11
  130. package/dist/components/switch/Switch.mjs.map +1 -1
  131. package/dist/components/table/Table.cjs +22 -5
  132. package/dist/components/table/Table.cjs.map +1 -1
  133. package/dist/components/table/Table.d.cts.map +1 -1
  134. package/dist/components/table/Table.d.mts.map +1 -1
  135. package/dist/components/table/Table.mjs +22 -5
  136. package/dist/components/table/Table.mjs.map +1 -1
  137. package/dist/components/theme-provider/ThemeToggle.cjs +9 -3
  138. package/dist/components/theme-provider/ThemeToggle.cjs.map +1 -1
  139. package/dist/components/theme-provider/ThemeToggle.mjs +9 -3
  140. package/dist/components/theme-provider/ThemeToggle.mjs.map +1 -1
  141. package/dist/components/typography/Typography.cjs +19 -13
  142. package/dist/components/typography/Typography.cjs.map +1 -1
  143. package/dist/components/typography/Typography.d.cts.map +1 -1
  144. package/dist/components/typography/Typography.d.mts.map +1 -1
  145. package/dist/components/typography/Typography.mjs +19 -13
  146. package/dist/components/typography/Typography.mjs.map +1 -1
  147. package/dist/components/window-frame/WindowFrame.cjs +18 -8
  148. package/dist/components/window-frame/WindowFrame.cjs.map +1 -1
  149. package/dist/components/window-frame/WindowFrame.mjs +18 -8
  150. package/dist/components/window-frame/WindowFrame.mjs.map +1 -1
  151. package/package.json +1 -1
@@ -17,10 +17,16 @@ const ThemeToggle = react.forwardRef(({ className, label = "Toggle theme", size
17
17
  onClick: toggle,
18
18
  "aria-label": label,
19
19
  title: `Toggle ${resolvedTheme === "dark" ? "light" : "dark"} mode`,
20
- className: require_utils.cn("relative inline-flex items-center justify-center rounded-full cursor-pointer", "transition-colors duration-200", "hover:bg-berget-surface-hover", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-berget-ring", size === "sm" && "w-7 h-7", size === "md" && "w-9 h-9", size === "lg" && "w-11 h-11", className),
20
+ className: require_utils.cn(`
21
+ relative inline-flex cursor-pointer items-center justify-center
22
+ rounded-full
23
+ `, "transition-colors duration-200", "hover:bg-berget-surface-hover", `
24
+ focus-visible:ring-2 focus-visible:ring-berget-ring
25
+ focus-visible:outline-none
26
+ `, size === "sm" && "size-7", size === "md" && "size-9", size === "lg" && "size-11", className),
21
27
  ...props,
22
28
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
23
- className: require_utils.cn("absolute transition-all duration-200", resolvedTheme === "dark" ? "opacity-100 scale-100 rotate-0" : "opacity-0 scale-0 -rotate-90", size === "sm" && "w-3.5 h-3.5", size === "md" && "w-4 h-4", size === "lg" && "w-5 h-5"),
29
+ className: require_utils.cn("absolute transition-all duration-200", resolvedTheme === "dark" ? "scale-100 rotate-0 opacity-100" : "scale-0 -rotate-90 opacity-0", size === "sm" && "size-3.5", size === "md" && "size-4", size === "lg" && "size-5"),
24
30
  xmlns: "http://www.w3.org/2000/svg",
25
31
  fill: "none",
26
32
  viewBox: "0 0 24 24",
@@ -35,7 +41,7 @@ const ThemeToggle = react.forwardRef(({ className, label = "Toggle theme", size
35
41
  d: "M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41"
36
42
  })]
37
43
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
38
- className: require_utils.cn("absolute transition-all duration-200", resolvedTheme === "light" ? "opacity-100 scale-100 rotate-0" : "opacity-0 scale-0 rotate-90", size === "sm" && "w-3.5 h-3.5", size === "md" && "w-4 h-4", size === "lg" && "w-5 h-5"),
44
+ className: require_utils.cn("absolute transition-all duration-200", resolvedTheme === "light" ? "scale-100 rotate-0 opacity-100" : "scale-0 rotate-90 opacity-0", size === "sm" && "size-3.5", size === "md" && "size-4", size === "lg" && "size-5"),
39
45
  xmlns: "http://www.w3.org/2000/svg",
40
46
  fill: "none",
41
47
  viewBox: "0 0 24 24",
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.cjs","names":["React","useTheme","cn"],"sources":["../../../src/components/theme-provider/ThemeToggle.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTheme } from './ThemeProvider';\nimport { cn } from '../../lib/utils';\n\nexport interface ThemeToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Accessible label for the toggle button */\n label?: string;\n /** Force a specific size class */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n ({ className, label = 'Toggle theme', size = 'md', ...props }, ref) => {\n const { theme, resolvedTheme, setTheme } = useTheme();\n\n const toggle = React.useCallback(() => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }, [theme, setTheme]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={toggle}\n aria-label={label}\n title={`Toggle ${resolvedTheme === 'dark' ? 'light' : 'dark'} mode`}\n className={cn(\n 'relative inline-flex items-center justify-center rounded-full cursor-pointer',\n 'transition-colors duration-200',\n 'hover:bg-berget-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-berget-ring',\n size === 'sm' && 'w-7 h-7',\n size === 'md' && 'w-9 h-9',\n size === 'lg' && 'w-11 h-11',\n className,\n )}\n {...props}\n >\n {/* Sun */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'dark'\n ? 'opacity-100 scale-100 rotate-0'\n : 'opacity-0 scale-0 -rotate-90',\n size === 'sm' && 'w-3.5 h-3.5',\n size === 'md' && 'w-4 h-4',\n size === 'lg' && 'w-5 h-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n strokeLinecap=\"round\"\n d=\"M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41\"\n />\n </svg>\n\n {/* Moon */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'light'\n ? 'opacity-100 scale-100 rotate-0'\n : 'opacity-0 scale-0 rotate-90',\n size === 'sm' && 'w-3.5 h-3.5',\n size === 'md' && 'w-4 h-4',\n size === 'lg' && 'w-5 h-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n </button>\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle };\n"],"mappings":";;;;;;;;AAaA,MAAM,cAAcA,MAAM,YACvB,EAAE,WAAW,QAAQ,gBAAgB,OAAO,MAAM,GAAG,SAAS,QAAQ;CACrE,MAAM,EAAE,OAAO,eAAe,aAAaC,sBAAAA,SAAS;CAEpD,MAAM,SAASD,MAAM,kBAAkB;EACrC,SAAS,UAAU,SAAS,UAAU,MAAM;CAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;CAEpB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;EACO;EACL,MAAK;EACL,SAAS;EACT,cAAY;EACZ,OAAO,UAAU,kBAAkB,SAAS,UAAU,OAAO;EAC7D,WAAWE,cAAAA,GACT,gFACA,kCACA,iCACA,kFACA,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,aACjB,SACF;EACA,GAAI;EAhBN,UAAA,CAmBE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GACE,WAAWA,cAAAA,GACT,wCACA,kBAAkB,SACd,mCACA,gCACJ,SAAS,QAAQ,eACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,SACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAdf,UAAA,CAgBE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;GAAK,CAAA,GAC/B,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IACE,eAAc;IACd,GAAE;GACH,CAAA,CACE;EAGL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACE,WAAWA,cAAAA,GACT,wCACA,kBAAkB,UACd,mCACA,+BACJ,SAAS,QAAQ,eACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,SACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAEb,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IACE,eAAc;IACd,gBAAe;IACf,GAAE;GACH,CAAA;EACE,CAAA,CACC;;AAEZ,CACF;AAEA,YAAY,cAAc"}
1
+ {"version":3,"file":"ThemeToggle.cjs","names":["React","useTheme","cn"],"sources":["../../../src/components/theme-provider/ThemeToggle.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTheme } from './ThemeProvider';\nimport { cn } from '../../lib/utils';\n\nexport interface ThemeToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Accessible label for the toggle button */\n label?: string;\n /** Force a specific size class */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n ({ className, label = 'Toggle theme', size = 'md', ...props }, ref) => {\n const { theme, resolvedTheme, setTheme } = useTheme();\n\n const toggle = React.useCallback(() => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }, [theme, setTheme]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={toggle}\n aria-label={label}\n title={`Toggle ${resolvedTheme === 'dark' ? 'light' : 'dark'} mode`}\n className={cn(\n `\n relative inline-flex cursor-pointer items-center justify-center\n rounded-full\n `,\n 'transition-colors duration-200',\n 'hover:bg-berget-surface-hover',\n `\n focus-visible:ring-2 focus-visible:ring-berget-ring\n focus-visible:outline-none\n `,\n size === 'sm' && 'size-7',\n size === 'md' && 'size-9',\n size === 'lg' && 'size-11',\n className,\n )}\n {...props}\n >\n {/* Sun */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'dark'\n ? 'scale-100 rotate-0 opacity-100'\n : 'scale-0 -rotate-90 opacity-0',\n size === 'sm' && 'size-3.5',\n size === 'md' && 'size-4',\n size === 'lg' && 'size-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n strokeLinecap=\"round\"\n d=\"M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41\"\n />\n </svg>\n\n {/* Moon */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'light'\n ? 'scale-100 rotate-0 opacity-100'\n : 'scale-0 rotate-90 opacity-0',\n size === 'sm' && 'size-3.5',\n size === 'md' && 'size-4',\n size === 'lg' && 'size-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n </button>\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle };\n"],"mappings":";;;;;;;;AAaA,MAAM,cAAcA,MAAM,YACvB,EAAE,WAAW,QAAQ,gBAAgB,OAAO,MAAM,GAAG,SAAS,QAAQ;CACrE,MAAM,EAAE,OAAO,eAAe,aAAaC,sBAAAA,SAAS;CAEpD,MAAM,SAASD,MAAM,kBAAkB;EACrC,SAAS,UAAU,SAAS,UAAU,MAAM;CAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;CAEpB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;EACO;EACL,MAAK;EACL,SAAS;EACT,cAAY;EACZ,OAAO,UAAU,kBAAkB,SAAS,UAAU,OAAO;EAC7D,WAAWE,cAAAA,GACT;;;aAIA,kCACA,iCACA;;;aAIA,SAAS,QAAQ,UACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,WACjB,SACF;EACA,GAAI;EAtBN,UAAA,CAyBE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GACE,WAAWA,cAAAA,GACT,wCACA,kBAAkB,SACd,mCACA,gCACJ,SAAS,QAAQ,YACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,QACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAdf,UAAA,CAgBE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;GAAK,CAAA,GAC/B,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IACE,eAAc;IACd,GAAE;GACH,CAAA,CACE;EAGL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACE,WAAWA,cAAAA,GACT,wCACA,kBAAkB,UACd,mCACA,+BACJ,SAAS,QAAQ,YACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,QACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAEb,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IACE,eAAc;IACd,gBAAe;IACf,GAAE;GACH,CAAA;EACE,CAAA,CACC;;AAEZ,CACF;AAEA,YAAY,cAAc"}
@@ -15,10 +15,16 @@ const ThemeToggle = React.forwardRef(({ className, label = "Toggle theme", size
15
15
  onClick: toggle,
16
16
  "aria-label": label,
17
17
  title: `Toggle ${resolvedTheme === "dark" ? "light" : "dark"} mode`,
18
- className: cn("relative inline-flex items-center justify-center rounded-full cursor-pointer", "transition-colors duration-200", "hover:bg-berget-surface-hover", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-berget-ring", size === "sm" && "w-7 h-7", size === "md" && "w-9 h-9", size === "lg" && "w-11 h-11", className),
18
+ className: cn(`
19
+ relative inline-flex cursor-pointer items-center justify-center
20
+ rounded-full
21
+ `, "transition-colors duration-200", "hover:bg-berget-surface-hover", `
22
+ focus-visible:ring-2 focus-visible:ring-berget-ring
23
+ focus-visible:outline-none
24
+ `, size === "sm" && "size-7", size === "md" && "size-9", size === "lg" && "size-11", className),
19
25
  ...props,
20
26
  children: [/* @__PURE__ */ jsxs("svg", {
21
- className: cn("absolute transition-all duration-200", resolvedTheme === "dark" ? "opacity-100 scale-100 rotate-0" : "opacity-0 scale-0 -rotate-90", size === "sm" && "w-3.5 h-3.5", size === "md" && "w-4 h-4", size === "lg" && "w-5 h-5"),
27
+ className: cn("absolute transition-all duration-200", resolvedTheme === "dark" ? "scale-100 rotate-0 opacity-100" : "scale-0 -rotate-90 opacity-0", size === "sm" && "size-3.5", size === "md" && "size-4", size === "lg" && "size-5"),
22
28
  xmlns: "http://www.w3.org/2000/svg",
23
29
  fill: "none",
24
30
  viewBox: "0 0 24 24",
@@ -33,7 +39,7 @@ const ThemeToggle = React.forwardRef(({ className, label = "Toggle theme", size
33
39
  d: "M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41"
34
40
  })]
35
41
  }), /* @__PURE__ */ jsx("svg", {
36
- className: cn("absolute transition-all duration-200", resolvedTheme === "light" ? "opacity-100 scale-100 rotate-0" : "opacity-0 scale-0 rotate-90", size === "sm" && "w-3.5 h-3.5", size === "md" && "w-4 h-4", size === "lg" && "w-5 h-5"),
42
+ className: cn("absolute transition-all duration-200", resolvedTheme === "light" ? "scale-100 rotate-0 opacity-100" : "scale-0 rotate-90 opacity-0", size === "sm" && "size-3.5", size === "md" && "size-4", size === "lg" && "size-5"),
37
43
  xmlns: "http://www.w3.org/2000/svg",
38
44
  fill: "none",
39
45
  viewBox: "0 0 24 24",
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeToggle.mjs","names":[],"sources":["../../../src/components/theme-provider/ThemeToggle.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTheme } from './ThemeProvider';\nimport { cn } from '../../lib/utils';\n\nexport interface ThemeToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Accessible label for the toggle button */\n label?: string;\n /** Force a specific size class */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n ({ className, label = 'Toggle theme', size = 'md', ...props }, ref) => {\n const { theme, resolvedTheme, setTheme } = useTheme();\n\n const toggle = React.useCallback(() => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }, [theme, setTheme]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={toggle}\n aria-label={label}\n title={`Toggle ${resolvedTheme === 'dark' ? 'light' : 'dark'} mode`}\n className={cn(\n 'relative inline-flex items-center justify-center rounded-full cursor-pointer',\n 'transition-colors duration-200',\n 'hover:bg-berget-surface-hover',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-berget-ring',\n size === 'sm' && 'w-7 h-7',\n size === 'md' && 'w-9 h-9',\n size === 'lg' && 'w-11 h-11',\n className,\n )}\n {...props}\n >\n {/* Sun */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'dark'\n ? 'opacity-100 scale-100 rotate-0'\n : 'opacity-0 scale-0 -rotate-90',\n size === 'sm' && 'w-3.5 h-3.5',\n size === 'md' && 'w-4 h-4',\n size === 'lg' && 'w-5 h-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n strokeLinecap=\"round\"\n d=\"M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41\"\n />\n </svg>\n\n {/* Moon */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'light'\n ? 'opacity-100 scale-100 rotate-0'\n : 'opacity-0 scale-0 rotate-90',\n size === 'sm' && 'w-3.5 h-3.5',\n size === 'md' && 'w-4 h-4',\n size === 'lg' && 'w-5 h-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n </button>\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle };\n"],"mappings":";;;;;;AAaA,MAAM,cAAc,MAAM,YACvB,EAAE,WAAW,QAAQ,gBAAgB,OAAO,MAAM,GAAG,SAAS,QAAQ;CACrE,MAAM,EAAE,OAAO,eAAe,aAAa,SAAS;CAEpD,MAAM,SAAS,MAAM,kBAAkB;EACrC,SAAS,UAAU,SAAS,UAAU,MAAM;CAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;CAEpB,OACE,qBAAC,UAAD;EACO;EACL,MAAK;EACL,SAAS;EACT,cAAY;EACZ,OAAO,UAAU,kBAAkB,SAAS,UAAU,OAAO;EAC7D,WAAW,GACT,gFACA,kCACA,iCACA,kFACA,SAAS,QAAQ,WACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,aACjB,SACF;EACA,GAAI;EAhBN,UAAA,CAmBE,qBAAC,OAAD;GACE,WAAW,GACT,wCACA,kBAAkB,SACd,mCACA,gCACJ,SAAS,QAAQ,eACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,SACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAdf,UAAA,CAgBE,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;GAAK,CAAA,GAC/B,oBAAC,QAAD;IACE,eAAc;IACd,GAAE;GACH,CAAA,CACE;EAGL,CAAA,GAAA,oBAAC,OAAD;GACE,WAAW,GACT,wCACA,kBAAkB,UACd,mCACA,+BACJ,SAAS,QAAQ,eACjB,SAAS,QAAQ,WACjB,SAAS,QAAQ,SACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAEb,UAAA,oBAAC,QAAD;IACE,eAAc;IACd,gBAAe;IACf,GAAE;GACH,CAAA;EACE,CAAA,CACC;;AAEZ,CACF;AAEA,YAAY,cAAc"}
1
+ {"version":3,"file":"ThemeToggle.mjs","names":[],"sources":["../../../src/components/theme-provider/ThemeToggle.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTheme } from './ThemeProvider';\nimport { cn } from '../../lib/utils';\n\nexport interface ThemeToggleProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Accessible label for the toggle button */\n label?: string;\n /** Force a specific size class */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst ThemeToggle = React.forwardRef<HTMLButtonElement, ThemeToggleProps>(\n ({ className, label = 'Toggle theme', size = 'md', ...props }, ref) => {\n const { theme, resolvedTheme, setTheme } = useTheme();\n\n const toggle = React.useCallback(() => {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }, [theme, setTheme]);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={toggle}\n aria-label={label}\n title={`Toggle ${resolvedTheme === 'dark' ? 'light' : 'dark'} mode`}\n className={cn(\n `\n relative inline-flex cursor-pointer items-center justify-center\n rounded-full\n `,\n 'transition-colors duration-200',\n 'hover:bg-berget-surface-hover',\n `\n focus-visible:ring-2 focus-visible:ring-berget-ring\n focus-visible:outline-none\n `,\n size === 'sm' && 'size-7',\n size === 'md' && 'size-9',\n size === 'lg' && 'size-11',\n className,\n )}\n {...props}\n >\n {/* Sun */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'dark'\n ? 'scale-100 rotate-0 opacity-100'\n : 'scale-0 -rotate-90 opacity-0',\n size === 'sm' && 'size-3.5',\n size === 'md' && 'size-4',\n size === 'lg' && 'size-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n strokeLinecap=\"round\"\n d=\"M12 2v2m0 16v2m9-10h-2M5 12H3m15.36 6.36-1.41-1.41M6.05 6.05 4.64 4.64m12.72 0-1.41 1.41M6.05 17.95l-1.41 1.41\"\n />\n </svg>\n\n {/* Moon */}\n <svg\n className={cn(\n 'absolute transition-all duration-200',\n resolvedTheme === 'light'\n ? 'scale-100 rotate-0 opacity-100'\n : 'scale-0 rotate-90 opacity-0',\n size === 'sm' && 'size-3.5',\n size === 'md' && 'size-4',\n size === 'lg' && 'size-5',\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n </button>\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n\nexport { ThemeToggle };\n"],"mappings":";;;;;;AAaA,MAAM,cAAc,MAAM,YACvB,EAAE,WAAW,QAAQ,gBAAgB,OAAO,MAAM,GAAG,SAAS,QAAQ;CACrE,MAAM,EAAE,OAAO,eAAe,aAAa,SAAS;CAEpD,MAAM,SAAS,MAAM,kBAAkB;EACrC,SAAS,UAAU,SAAS,UAAU,MAAM;CAC9C,GAAG,CAAC,OAAO,QAAQ,CAAC;CAEpB,OACE,qBAAC,UAAD;EACO;EACL,MAAK;EACL,SAAS;EACT,cAAY;EACZ,OAAO,UAAU,kBAAkB,SAAS,UAAU,OAAO;EAC7D,WAAW,GACT;;;aAIA,kCACA,iCACA;;;aAIA,SAAS,QAAQ,UACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,WACjB,SACF;EACA,GAAI;EAtBN,UAAA,CAyBE,qBAAC,OAAD;GACE,WAAW,GACT,wCACA,kBAAkB,SACd,mCACA,gCACJ,SAAS,QAAQ,YACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,QACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAdf,UAAA,CAgBE,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;GAAK,CAAA,GAC/B,oBAAC,QAAD;IACE,eAAc;IACd,GAAE;GACH,CAAA,CACE;EAGL,CAAA,GAAA,oBAAC,OAAD;GACE,WAAW,GACT,wCACA,kBAAkB,UACd,mCACA,+BACJ,SAAS,QAAQ,YACjB,SAAS,QAAQ,UACjB,SAAS,QAAQ,QACnB;GACA,OAAM;GACN,MAAK;GACL,SAAQ;GACR,QAAO;GACP,aAAa;GAEb,UAAA,oBAAC,QAAD;IACE,eAAc;IACd,gBAAe;IACf,GAAE;GACH,CAAA;EACE,CAAA,CACC;;AAEZ,CACF;AAEA,YAAY,cAAc"}
@@ -8,19 +8,25 @@ let react_jsx_runtime = require("react/jsx-runtime");
8
8
  const typographyVariants = (0, require("class-variance-authority").cva)("", {
9
9
  variants: {
10
10
  variant: {
11
- h1: "text-h1 font-h1 leading-h1 tracking-h1 text-balance",
12
- hero: "text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']",
13
- h2: "text-h2 font-h2 leading-h2 tracking-h2 text-balance",
14
- h3: "text-h3 font-h3 leading-h3 tracking-h3 text-balance",
15
- h4: "text-h4 font-h4 leading-h4 tracking-h4 text-balance",
16
- h5: "text-xl font-xl leading-xl text-balance",
17
- large: "text-lg font-lg leading-lg text-pretty",
18
- body: "text-p font-p leading-p text-pretty",
19
- small: "text-sm font-sm leading-sm text-pretty",
20
- xs: "text-xs font-xs leading-xs text-pretty",
21
- caption: "text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase",
22
- mono: "text-mono font-mono leading-mono text-pretty",
23
- code: "text-xs font-mono"
11
+ h1: "font-h1 text-h1/h1 tracking-h1 text-balance",
12
+ hero: `
13
+ font-hero font-features-['normal'] text-hero/hero font-normal
14
+ tracking-hero text-balance
15
+ `,
16
+ h2: "font-h2 text-h2/h2 tracking-h2 text-balance",
17
+ h3: "font-h3 text-h3/tight tracking-h3 text-balance",
18
+ h4: "font-h4 text-h4/h4 tracking-h4 text-balance",
19
+ h5: "font-xl text-xl/h2 text-balance",
20
+ large: "font-lg text-lg/p text-pretty",
21
+ body: "font-p text-base/p text-pretty",
22
+ small: "font-sm text-caption/p text-pretty",
23
+ xs: "font-xs text-xs/p text-pretty",
24
+ caption: `
25
+ font-caption text-caption/h2 font-semibold tracking-caption text-pretty
26
+ uppercase
27
+ `,
28
+ mono: "font-mono text-base/p text-pretty",
29
+ code: "font-mono text-xs"
24
30
  },
25
31
  color: {
26
32
  default: "text-berget-foreground",
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.cjs","names":["cva","React","cn"],"sources":["../../../src/components/typography/Typography.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst typographyVariants = cva('', {\n variants: {\n variant: {\n // Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)\n h1: 'text-h1 font-h1 leading-h1 tracking-h1 text-balance',\n // Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)\n hero: \"text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']\",\n h2: 'text-h2 font-h2 leading-h2 tracking-h2 text-balance',\n h3: 'text-h3 font-h3 leading-h3 tracking-h3 text-balance',\n h4: 'text-h4 font-h4 leading-h4 tracking-h4 text-balance',\n // Static sans-serif sub-heading\n h5: 'text-xl font-xl leading-xl text-balance',\n // Body and UI text — use @theme tokens where available\n large: 'text-lg font-lg leading-lg text-pretty',\n body: 'text-p font-p leading-p text-pretty',\n small: 'text-sm font-sm leading-sm text-pretty',\n xs: 'text-xs font-xs leading-xs text-pretty',\n // Caption / overline / eyebrow (DM Sans, Semibold, uppercase)\n caption:\n 'text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase',\n // Monospaced — use @theme token\n mono: 'text-mono font-mono leading-mono text-pretty',\n // Inline code / spec labels\n code: 'text-xs font-mono',\n },\n color: {\n default: 'text-berget-foreground',\n muted: 'text-berget-muted-foreground',\n dim: 'text-berget-foreground/65',\n primary: 'text-berget-primary',\n },\n },\n defaultVariants: {\n variant: 'body',\n color: 'default',\n },\n});\n\nconst defaultElementMap: Record<string, 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span'> = {\n hero: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n large: 'p',\n body: 'p',\n small: 'p',\n xs: 'p',\n caption: 'span',\n mono: 'p',\n code: 'span',\n};\n\nexport interface TypographyProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n VariantProps<typeof typographyVariants> {\n as?: React.ElementType;\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n ({ className, variant = 'body', color = 'default', as, children, ...props }, ref) => {\n const Component = (as ?? defaultElementMap[variant ?? 'body'] ?? 'p') as\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'p'\n | 'span';\n return (\n <Component\n className={cn(typographyVariants({ variant, color }), className)}\n ref={ref as any}\n {...(props as any)}\n >\n {children}\n </Component>\n );\n },\n);\nTypography.displayName = 'Typography';\n\nexport { Typography, typographyVariants };\n"],"mappings":";;;;;;;AAMA,MAAM,sBAAA,G,kCAAqBA,CAAAA,CAAAA,IAAAA,CAAI,IAAI;CACjC,UAAU;EACR,SAAS;GAEP,IAAI;GAEJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,IAAI;GAEJ,OAAO;GACP,MAAM;GACN,OAAO;GACP,IAAI;GAEJ,SACE;GAEF,MAAM;GAEN,MAAM;EACR;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,KAAK;GACL,SAAS;EACX;CACF;CACA,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;AACF,CAAC;AAED,MAAM,oBAAqF;CACzF,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;CACN,OAAO;CACP,IAAI;CACJ,SAAS;CACT,MAAM;CACN,MAAM;AACR;AASA,MAAM,aAAaC,MAAM,YACtB,EAAE,WAAW,UAAU,QAAQ,QAAQ,WAAW,IAAI,UAAU,GAAG,SAAS,QAAQ;CACnF,MAAM,YAAa,MAAM,kBAAkB,WAAW,WAAW;CAQjE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EACE,WAAWC,cAAAA,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAC1D;EACL,GAAK;EAEJ;CACQ,CAAA;AAEf,CACF;AACA,WAAW,cAAc"}
1
+ {"version":3,"file":"Typography.cjs","names":["cva","React","cn"],"sources":["../../../src/components/typography/Typography.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst typographyVariants = cva('', {\n variants: {\n variant: {\n // Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)\n h1: 'font-h1 text-h1/h1 tracking-h1 text-balance',\n // Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)\n hero: `\n font-hero font-features-['normal'] text-hero/hero font-normal\n tracking-hero text-balance\n `,\n h2: 'font-h2 text-h2/h2 tracking-h2 text-balance',\n h3: 'font-h3 text-h3/tight tracking-h3 text-balance',\n h4: 'font-h4 text-h4/h4 tracking-h4 text-balance',\n // Static sans-serif sub-heading\n h5: 'font-xl text-xl/h2 text-balance',\n // Body and UI text — use @theme tokens where available\n large: 'font-lg text-lg/p text-pretty',\n body: 'font-p text-base/p text-pretty',\n small: 'font-sm text-caption/p text-pretty',\n xs: 'font-xs text-xs/p text-pretty',\n // Caption / overline / eyebrow (DM Sans, Semibold, uppercase)\n caption: `\n font-caption text-caption/h2 font-semibold tracking-caption text-pretty\n uppercase\n `,\n // Monospaced — use @theme token\n mono: 'font-mono text-base/p text-pretty',\n // Inline code / spec labels\n code: 'font-mono text-xs',\n },\n color: {\n default: 'text-berget-foreground',\n muted: 'text-berget-muted-foreground',\n dim: 'text-berget-foreground/65',\n primary: 'text-berget-primary',\n },\n },\n defaultVariants: {\n variant: 'body',\n color: 'default',\n },\n});\n\nconst defaultElementMap: Record<string, 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span'> = {\n hero: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n large: 'p',\n body: 'p',\n small: 'p',\n xs: 'p',\n caption: 'span',\n mono: 'p',\n code: 'span',\n};\n\nexport interface TypographyProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n VariantProps<typeof typographyVariants> {\n as?: React.ElementType;\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n ({ className, variant = 'body', color = 'default', as, children, ...props }, ref) => {\n const Component = (as ?? defaultElementMap[variant ?? 'body'] ?? 'p') as\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'p'\n | 'span';\n return (\n <Component\n className={cn(typographyVariants({ variant, color }), className)}\n ref={ref as any}\n {...(props as any)}\n >\n {children}\n </Component>\n );\n },\n);\nTypography.displayName = 'Typography';\n\nexport { Typography, typographyVariants };\n"],"mappings":";;;;;;;AAMA,MAAM,sBAAA,G,kCAAqBA,CAAAA,CAAAA,IAAAA,CAAI,IAAI;CACjC,UAAU;EACR,SAAS;GAEP,IAAI;GAEJ,MAAM;;;;GAIN,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,IAAI;GAEJ,OAAO;GACP,MAAM;GACN,OAAO;GACP,IAAI;GAEJ,SAAS;;;;GAKT,MAAM;GAEN,MAAM;EACR;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,KAAK;GACL,SAAS;EACX;CACF;CACA,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;AACF,CAAC;AAED,MAAM,oBAAqF;CACzF,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;CACN,OAAO;CACP,IAAI;CACJ,SAAS;CACT,MAAM;CACN,MAAM;AACR;AASA,MAAM,aAAaC,MAAM,YACtB,EAAE,WAAW,UAAU,QAAQ,QAAQ,WAAW,IAAI,UAAU,GAAG,SAAS,QAAQ;CACnF,MAAM,YAAa,MAAM,kBAAkB,WAAW,WAAW;CAQjE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EACE,WAAWC,cAAAA,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAC1D;EACL,GAAK;EAEJ;CACQ,CAAA;AAEf,CACF;AACA,WAAW,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.d.cts","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"mappings":";;;cAMM,qBAAkB;;;6CAoCtB;iBAkBe,wBAEb,KAAK,MAAM,eAAe,wBAC1B,oBAAoB;EACtB,KAAK,MAAM;;cAGP,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA"}
1
+ {"version":3,"file":"Typography.d.cts","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"mappings":";;;cAMM,qBAAkB;;;6CAyCtB;iBAkBe,wBAEb,KAAK,MAAM,eAAe,wBAC1B,oBAAoB;EACtB,KAAK,MAAM;;cAGP,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.d.mts","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"mappings":";;;cAMM,qBAAkB;;;6CAoCtB;iBAkBe,wBAEb,KAAK,MAAM,eAAe,wBAC1B,oBAAoB;EACtB,KAAK,MAAM;;cAGP,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA"}
1
+ {"version":3,"file":"Typography.d.mts","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"mappings":";;;cAMM,qBAAkB;;;6CAyCtB;iBAkBe,wBAEb,KAAK,MAAM,eAAe,wBAC1B,oBAAoB;EACtB,KAAK,MAAM;;cAGP,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA"}
@@ -7,19 +7,25 @@ import { cva } from "class-variance-authority";
7
7
  const typographyVariants = cva("", {
8
8
  variants: {
9
9
  variant: {
10
- h1: "text-h1 font-h1 leading-h1 tracking-h1 text-balance",
11
- hero: "text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']",
12
- h2: "text-h2 font-h2 leading-h2 tracking-h2 text-balance",
13
- h3: "text-h3 font-h3 leading-h3 tracking-h3 text-balance",
14
- h4: "text-h4 font-h4 leading-h4 tracking-h4 text-balance",
15
- h5: "text-xl font-xl leading-xl text-balance",
16
- large: "text-lg font-lg leading-lg text-pretty",
17
- body: "text-p font-p leading-p text-pretty",
18
- small: "text-sm font-sm leading-sm text-pretty",
19
- xs: "text-xs font-xs leading-xs text-pretty",
20
- caption: "text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase",
21
- mono: "text-mono font-mono leading-mono text-pretty",
22
- code: "text-xs font-mono"
10
+ h1: "font-h1 text-h1/h1 tracking-h1 text-balance",
11
+ hero: `
12
+ font-hero font-features-['normal'] text-hero/hero font-normal
13
+ tracking-hero text-balance
14
+ `,
15
+ h2: "font-h2 text-h2/h2 tracking-h2 text-balance",
16
+ h3: "font-h3 text-h3/tight tracking-h3 text-balance",
17
+ h4: "font-h4 text-h4/h4 tracking-h4 text-balance",
18
+ h5: "font-xl text-xl/h2 text-balance",
19
+ large: "font-lg text-lg/p text-pretty",
20
+ body: "font-p text-base/p text-pretty",
21
+ small: "font-sm text-caption/p text-pretty",
22
+ xs: "font-xs text-xs/p text-pretty",
23
+ caption: `
24
+ font-caption text-caption/h2 font-semibold tracking-caption text-pretty
25
+ uppercase
26
+ `,
27
+ mono: "font-mono text-base/p text-pretty",
28
+ code: "font-mono text-xs"
23
29
  },
24
30
  color: {
25
31
  default: "text-berget-foreground",
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.mjs","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst typographyVariants = cva('', {\n variants: {\n variant: {\n // Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)\n h1: 'text-h1 font-h1 leading-h1 tracking-h1 text-balance',\n // Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)\n hero: \"text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']\",\n h2: 'text-h2 font-h2 leading-h2 tracking-h2 text-balance',\n h3: 'text-h3 font-h3 leading-h3 tracking-h3 text-balance',\n h4: 'text-h4 font-h4 leading-h4 tracking-h4 text-balance',\n // Static sans-serif sub-heading\n h5: 'text-xl font-xl leading-xl text-balance',\n // Body and UI text — use @theme tokens where available\n large: 'text-lg font-lg leading-lg text-pretty',\n body: 'text-p font-p leading-p text-pretty',\n small: 'text-sm font-sm leading-sm text-pretty',\n xs: 'text-xs font-xs leading-xs text-pretty',\n // Caption / overline / eyebrow (DM Sans, Semibold, uppercase)\n caption:\n 'text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase',\n // Monospaced — use @theme token\n mono: 'text-mono font-mono leading-mono text-pretty',\n // Inline code / spec labels\n code: 'text-xs font-mono',\n },\n color: {\n default: 'text-berget-foreground',\n muted: 'text-berget-muted-foreground',\n dim: 'text-berget-foreground/65',\n primary: 'text-berget-primary',\n },\n },\n defaultVariants: {\n variant: 'body',\n color: 'default',\n },\n});\n\nconst defaultElementMap: Record<string, 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span'> = {\n hero: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n large: 'p',\n body: 'p',\n small: 'p',\n xs: 'p',\n caption: 'span',\n mono: 'p',\n code: 'span',\n};\n\nexport interface TypographyProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n VariantProps<typeof typographyVariants> {\n as?: React.ElementType;\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n ({ className, variant = 'body', color = 'default', as, children, ...props }, ref) => {\n const Component = (as ?? defaultElementMap[variant ?? 'body'] ?? 'p') as\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'p'\n | 'span';\n return (\n <Component\n className={cn(typographyVariants({ variant, color }), className)}\n ref={ref as any}\n {...(props as any)}\n >\n {children}\n </Component>\n );\n },\n);\nTypography.displayName = 'Typography';\n\nexport { Typography, typographyVariants };\n"],"mappings":";;;;;;AAMA,MAAM,qBAAqB,IAAI,IAAI;CACjC,UAAU;EACR,SAAS;GAEP,IAAI;GAEJ,MAAM;GACN,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,IAAI;GAEJ,OAAO;GACP,MAAM;GACN,OAAO;GACP,IAAI;GAEJ,SACE;GAEF,MAAM;GAEN,MAAM;EACR;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,KAAK;GACL,SAAS;EACX;CACF;CACA,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;AACF,CAAC;AAED,MAAM,oBAAqF;CACzF,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;CACN,OAAO;CACP,IAAI;CACJ,SAAS;CACT,MAAM;CACN,MAAM;AACR;AASA,MAAM,aAAa,MAAM,YACtB,EAAE,WAAW,UAAU,QAAQ,QAAQ,WAAW,IAAI,UAAU,GAAG,SAAS,QAAQ;CACnF,MAAM,YAAa,MAAM,kBAAkB,WAAW,WAAW;CAQjE,OACE,oBAAC,WAAD;EACE,WAAW,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAC1D;EACL,GAAK;EAEJ;CACQ,CAAA;AAEf,CACF;AACA,WAAW,cAAc"}
1
+ {"version":3,"file":"Typography.mjs","names":[],"sources":["../../../src/components/typography/Typography.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst typographyVariants = cva('', {\n variants: {\n variant: {\n // Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)\n h1: 'font-h1 text-h1/h1 tracking-h1 text-balance',\n // Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)\n hero: `\n font-hero font-features-['normal'] text-hero/hero font-normal\n tracking-hero text-balance\n `,\n h2: 'font-h2 text-h2/h2 tracking-h2 text-balance',\n h3: 'font-h3 text-h3/tight tracking-h3 text-balance',\n h4: 'font-h4 text-h4/h4 tracking-h4 text-balance',\n // Static sans-serif sub-heading\n h5: 'font-xl text-xl/h2 text-balance',\n // Body and UI text — use @theme tokens where available\n large: 'font-lg text-lg/p text-pretty',\n body: 'font-p text-base/p text-pretty',\n small: 'font-sm text-caption/p text-pretty',\n xs: 'font-xs text-xs/p text-pretty',\n // Caption / overline / eyebrow (DM Sans, Semibold, uppercase)\n caption: `\n font-caption text-caption/h2 font-semibold tracking-caption text-pretty\n uppercase\n `,\n // Monospaced — use @theme token\n mono: 'font-mono text-base/p text-pretty',\n // Inline code / spec labels\n code: 'font-mono text-xs',\n },\n color: {\n default: 'text-berget-foreground',\n muted: 'text-berget-muted-foreground',\n dim: 'text-berget-foreground/65',\n primary: 'text-berget-primary',\n },\n },\n defaultVariants: {\n variant: 'body',\n color: 'default',\n },\n});\n\nconst defaultElementMap: Record<string, 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span'> = {\n hero: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n large: 'p',\n body: 'p',\n small: 'p',\n xs: 'p',\n caption: 'span',\n mono: 'p',\n code: 'span',\n};\n\nexport interface TypographyProps\n extends\n Omit<React.HTMLAttributes<HTMLElement>, 'color'>,\n VariantProps<typeof typographyVariants> {\n as?: React.ElementType;\n}\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n ({ className, variant = 'body', color = 'default', as, children, ...props }, ref) => {\n const Component = (as ?? defaultElementMap[variant ?? 'body'] ?? 'p') as\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'p'\n | 'span';\n return (\n <Component\n className={cn(typographyVariants({ variant, color }), className)}\n ref={ref as any}\n {...(props as any)}\n >\n {children}\n </Component>\n );\n },\n);\nTypography.displayName = 'Typography';\n\nexport { Typography, typographyVariants };\n"],"mappings":";;;;;;AAMA,MAAM,qBAAqB,IAAI,IAAI;CACjC,UAAU;EACR,SAAS;GAEP,IAAI;GAEJ,MAAM;;;;GAIN,IAAI;GACJ,IAAI;GACJ,IAAI;GAEJ,IAAI;GAEJ,OAAO;GACP,MAAM;GACN,OAAO;GACP,IAAI;GAEJ,SAAS;;;;GAKT,MAAM;GAEN,MAAM;EACR;EACA,OAAO;GACL,SAAS;GACT,OAAO;GACP,KAAK;GACL,SAAS;EACX;CACF;CACA,iBAAiB;EACf,SAAS;EACT,OAAO;CACT;AACF,CAAC;AAED,MAAM,oBAAqF;CACzF,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;CACN,OAAO;CACP,IAAI;CACJ,SAAS;CACT,MAAM;CACN,MAAM;AACR;AASA,MAAM,aAAa,MAAM,YACtB,EAAE,WAAW,UAAU,QAAQ,QAAQ,WAAW,IAAI,UAAU,GAAG,SAAS,QAAQ;CACnF,MAAM,YAAa,MAAM,kBAAkB,WAAW,WAAW;CAQjE,OACE,oBAAC,WAAD;EACE,WAAW,GAAG,mBAAmB;GAAE;GAAS;EAAM,CAAC,GAAG,SAAS;EAC1D;EACL,GAAK;EAEJ;CACQ,CAAA;AAEf,CACF;AACA,WAAW,cAAc"}
@@ -14,27 +14,37 @@ const WindowFrame = react.forwardRef(({ title = "window", tabs, activeTab, onTab
14
14
  };
15
15
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
16
16
  ref,
17
- className: require_utils.cn("rounded-berget-sm overflow-hidden shadow-berget-md border border-berget-brand-granite-700 bg-berget-brand-granite-800", className),
17
+ className: require_utils.cn(`
18
+ overflow-hidden rounded-berget-sm border
19
+ border-berget-brand-granite-700 bg-berget-brand-granite-800
20
+ shadow-berget-md
21
+ `, className),
18
22
  ...props,
19
23
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
20
- className: "flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900",
24
+ className: "\n flex items-center gap-2 border-b border-berget-brand-granite-700\n bg-berget-brand-granite-900 px-4 py-3\n ",
21
25
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
22
- className: "flex items-center gap-2 flex-shrink-0",
26
+ className: "flex shrink-0 items-center gap-2",
23
27
  children: [
24
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-muscaria-400" }),
25
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-chanterelle-200" }),
26
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-moss-400" })
28
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "size-3 rounded-full bg-berget-brand-muscaria-400" }),
29
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "size-3 rounded-full bg-berget-brand-chanterelle-200" }),
30
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "size-3 rounded-full bg-berget-brand-moss-400" })
27
31
  ]
28
32
  }), tabs && tabs.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
29
33
  className: "ml-4 flex items-center gap-1",
30
34
  children: tabs.map((tab) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
31
35
  type: "button",
32
36
  onClick: () => handleTabChange(tab.id),
33
- className: require_utils.cn("px-3 py-1 text-sm transition-colors cursor-pointer", currentTab === tab.id ? "rounded-berget-xs bg-white/10 text-berget-foreground font-medium" : "rounded text-berget-muted-foreground hover:text-berget-foreground font-medium"),
37
+ className: require_utils.cn("cursor-pointer px-3 py-1 text-sm transition-colors", currentTab === tab.id ? `
38
+ rounded-berget-xs bg-white/10 font-medium
39
+ text-berget-foreground
40
+ ` : `
41
+ rounded-sm font-medium text-berget-muted-foreground
42
+ hover:text-berget-foreground
43
+ `),
34
44
  children: tab.label
35
45
  }, tab.id))
36
46
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
37
- className: "ml-4 text-sm font-mono text-berget-brand-moss-400",
47
+ className: "ml-4 font-mono text-sm text-berget-brand-moss-400",
38
48
  children: title
39
49
  })]
40
50
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children })]
@@ -1 +1 @@
1
- {"version":3,"file":"WindowFrame.cjs","names":["React","useState","cn"],"sources":["../../../src/components/window-frame/WindowFrame.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\nexport interface WindowTab {\n id: string;\n label: string;\n}\n\nexport interface WindowFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Window title shown in the title bar when no tabs are provided */\n title?: string;\n /** Optional tabs for switching content */\n tabs?: WindowTab[];\n /** Controlled active tab ID */\n activeTab?: string;\n /** Callback when a tab is selected */\n onTabChange?: (tabId: string) => void;\n}\n\nexport const WindowFrame = React.forwardRef<HTMLDivElement, WindowFrameProps>(\n ({ title = 'window', tabs, activeTab, onTabChange, children, className, ...props }, ref) => {\n const [internalActive, setInternalActive] = useState(tabs?.[0]?.id ?? '');\n const currentTab = activeTab ?? internalActive;\n\n const handleTabChange = (id: string) => {\n if (onTabChange) {\n onTabChange(id);\n } else {\n setInternalActive(id);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-berget-sm overflow-hidden shadow-berget-md border border-berget-brand-granite-700 bg-berget-brand-granite-800',\n className,\n )}\n {...props}\n >\n {/* Title bar */}\n <div className=\"flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-muscaria-400\" />\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-chanterelle-200\" />\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-moss-400\" />\n </div>\n\n {tabs && tabs.length > 0 ? (\n <div className=\"ml-4 flex items-center gap-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n className={cn(\n 'px-3 py-1 text-sm transition-colors cursor-pointer',\n currentTab === tab.id\n ? 'rounded-berget-xs bg-white/10 text-berget-foreground font-medium'\n : 'rounded text-berget-muted-foreground hover:text-berget-foreground font-medium',\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n ) : (\n <span className=\"ml-4 text-sm font-mono text-berget-brand-moss-400\">{title}</span>\n )}\n </div>\n\n {/* Content area */}\n <div>{children}</div>\n </div>\n );\n },\n);\n\nWindowFrame.displayName = 'WindowFrame';\n"],"mappings":";;;;;;;AAsBA,MAAa,cAAcA,MAAM,YAC9B,EAAE,QAAQ,UAAU,MAAM,WAAW,aAAa,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1F,MAAM,CAAC,gBAAgB,sBAAA,GAAqBC,MAAAA,SAAAA,CAAS,OAAO,EAAE,EAAE,MAAM,EAAE;CACxE,MAAM,aAAa,aAAa;CAEhC,MAAM,mBAAmB,OAAe;EACtC,IAAI,aACF,YAAY,EAAE;OAEd,kBAAkB,EAAE;CAExB;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EACO;EACL,WAAWC,cAAAA,GACT,yHACA,SACF;EACA,GAAI;EANN,UAAA,CASE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,oDAAqD,CAAA;KACpE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,uDAAwD,CAAA;KACvE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,gDAAiD,CAAA;IAC7D;GAEJ,CAAA,GAAA,QAAQ,KAAK,SAAS,IACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IACZ,UAAA,KAAK,KAAK,QACT,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAEE,MAAK;KACL,eAAe,gBAAgB,IAAI,EAAE;KACrC,WAAWA,cAAAA,GACT,sDACA,eAAe,IAAI,KACf,qEACA,+EACN;KAEC,UAAA,IAAI;IACC,GAXD,IAAI,EAWH,CACT;GACE,CAAA,IAEL,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAqD,UAAA;GAAY,CAAA,CAEhF;EAGL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAM,SAAc,CAAA,CACjB;;AAET,CACF;AAEA,YAAY,cAAc"}
1
+ {"version":3,"file":"WindowFrame.cjs","names":["React","useState","cn"],"sources":["../../../src/components/window-frame/WindowFrame.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\nexport interface WindowTab {\n id: string;\n label: string;\n}\n\nexport interface WindowFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Window title shown in the title bar when no tabs are provided */\n title?: string;\n /** Optional tabs for switching content */\n tabs?: WindowTab[];\n /** Controlled active tab ID */\n activeTab?: string;\n /** Callback when a tab is selected */\n onTabChange?: (tabId: string) => void;\n}\n\nexport const WindowFrame = React.forwardRef<HTMLDivElement, WindowFrameProps>(\n ({ title = 'window', tabs, activeTab, onTabChange, children, className, ...props }, ref) => {\n const [internalActive, setInternalActive] = useState(tabs?.[0]?.id ?? '');\n const currentTab = activeTab ?? internalActive;\n\n const handleTabChange = (id: string) => {\n if (onTabChange) {\n onTabChange(id);\n } else {\n setInternalActive(id);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n `\n overflow-hidden rounded-berget-sm border\n border-berget-brand-granite-700 bg-berget-brand-granite-800\n shadow-berget-md\n `,\n className,\n )}\n {...props}\n >\n {/* Title bar */}\n <div\n className=\"\n flex items-center gap-2 border-b border-berget-brand-granite-700\n bg-berget-brand-granite-900 px-4 py-3\n \"\n >\n <div className=\"flex shrink-0 items-center gap-2\">\n <div className=\"size-3 rounded-full bg-berget-brand-muscaria-400\" />\n <div className=\"size-3 rounded-full bg-berget-brand-chanterelle-200\" />\n <div className=\"size-3 rounded-full bg-berget-brand-moss-400\" />\n </div>\n\n {tabs && tabs.length > 0 ? (\n <div className=\"ml-4 flex items-center gap-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n className={cn(\n 'cursor-pointer px-3 py-1 text-sm transition-colors',\n currentTab === tab.id\n ? `\n rounded-berget-xs bg-white/10 font-medium\n text-berget-foreground\n `\n : `\n rounded-sm font-medium text-berget-muted-foreground\n hover:text-berget-foreground\n `,\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n ) : (\n <span className=\"ml-4 font-mono text-sm text-berget-brand-moss-400\">{title}</span>\n )}\n </div>\n\n {/* Content area */}\n <div>{children}</div>\n </div>\n );\n },\n);\n\nWindowFrame.displayName = 'WindowFrame';\n"],"mappings":";;;;;;;AAsBA,MAAa,cAAcA,MAAM,YAC9B,EAAE,QAAQ,UAAU,MAAM,WAAW,aAAa,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1F,MAAM,CAAC,gBAAgB,sBAAA,GAAqBC,MAAAA,SAAAA,CAAS,OAAO,EAAE,EAAE,MAAM,EAAE;CACxE,MAAM,aAAa,aAAa;CAEhC,MAAM,mBAAmB,OAAe;EACtC,IAAI,aACF,YAAY,EAAE;OAEd,kBAAkB,EAAE;CAExB;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EACO;EACL,WAAWC,cAAAA,GACT;;;;aAKA,SACF;EACA,GAAI;EAVN,UAAA,CAaE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GACE,WAAU;GADZ,UAAA,CAME,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,mDAAoD,CAAA;KACnE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,sDAAuD,CAAA;KACtE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAK,WAAU,+CAAgD,CAAA;IAC5D;GAEJ,CAAA,GAAA,QAAQ,KAAK,SAAS,IACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IACZ,UAAA,KAAK,KAAK,QACT,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAEE,MAAK;KACL,eAAe,gBAAgB,IAAI,EAAE;KACrC,WAAWA,cAAAA,GACT,sDACA,eAAe,IAAI,KACf;;;0BAIA;;;uBAIN;KAEC,UAAA,IAAI;IACC,GAjBD,IAAI,EAiBH,CACT;GACE,CAAA,IAEL,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAqD,UAAA;GAAY,CAAA,CAEhF;EAGL,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD,EAAM,SAAc,CAAA,CACjB;;AAET,CACF;AAEA,YAAY,cAAc"}
@@ -13,27 +13,37 @@ const WindowFrame = React.forwardRef(({ title = "window", tabs, activeTab, onTab
13
13
  };
14
14
  return /* @__PURE__ */ jsxs("div", {
15
15
  ref,
16
- className: cn("rounded-berget-sm overflow-hidden shadow-berget-md border border-berget-brand-granite-700 bg-berget-brand-granite-800", className),
16
+ className: cn(`
17
+ overflow-hidden rounded-berget-sm border
18
+ border-berget-brand-granite-700 bg-berget-brand-granite-800
19
+ shadow-berget-md
20
+ `, className),
17
21
  ...props,
18
22
  children: [/* @__PURE__ */ jsxs("div", {
19
- className: "flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900",
23
+ className: "\n flex items-center gap-2 border-b border-berget-brand-granite-700\n bg-berget-brand-granite-900 px-4 py-3\n ",
20
24
  children: [/* @__PURE__ */ jsxs("div", {
21
- className: "flex items-center gap-2 flex-shrink-0",
25
+ className: "flex shrink-0 items-center gap-2",
22
26
  children: [
23
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-berget-brand-muscaria-400" }),
24
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-berget-brand-chanterelle-200" }),
25
- /* @__PURE__ */ jsx("div", { className: "w-3 h-3 rounded-full bg-berget-brand-moss-400" })
27
+ /* @__PURE__ */ jsx("div", { className: "size-3 rounded-full bg-berget-brand-muscaria-400" }),
28
+ /* @__PURE__ */ jsx("div", { className: "size-3 rounded-full bg-berget-brand-chanterelle-200" }),
29
+ /* @__PURE__ */ jsx("div", { className: "size-3 rounded-full bg-berget-brand-moss-400" })
26
30
  ]
27
31
  }), tabs && tabs.length > 0 ? /* @__PURE__ */ jsx("div", {
28
32
  className: "ml-4 flex items-center gap-1",
29
33
  children: tabs.map((tab) => /* @__PURE__ */ jsx("button", {
30
34
  type: "button",
31
35
  onClick: () => handleTabChange(tab.id),
32
- className: cn("px-3 py-1 text-sm transition-colors cursor-pointer", currentTab === tab.id ? "rounded-berget-xs bg-white/10 text-berget-foreground font-medium" : "rounded text-berget-muted-foreground hover:text-berget-foreground font-medium"),
36
+ className: cn("cursor-pointer px-3 py-1 text-sm transition-colors", currentTab === tab.id ? `
37
+ rounded-berget-xs bg-white/10 font-medium
38
+ text-berget-foreground
39
+ ` : `
40
+ rounded-sm font-medium text-berget-muted-foreground
41
+ hover:text-berget-foreground
42
+ `),
33
43
  children: tab.label
34
44
  }, tab.id))
35
45
  }) : /* @__PURE__ */ jsx("span", {
36
- className: "ml-4 text-sm font-mono text-berget-brand-moss-400",
46
+ className: "ml-4 font-mono text-sm text-berget-brand-moss-400",
37
47
  children: title
38
48
  })]
39
49
  }), /* @__PURE__ */ jsx("div", { children })]
@@ -1 +1 @@
1
- {"version":3,"file":"WindowFrame.mjs","names":[],"sources":["../../../src/components/window-frame/WindowFrame.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\nexport interface WindowTab {\n id: string;\n label: string;\n}\n\nexport interface WindowFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Window title shown in the title bar when no tabs are provided */\n title?: string;\n /** Optional tabs for switching content */\n tabs?: WindowTab[];\n /** Controlled active tab ID */\n activeTab?: string;\n /** Callback when a tab is selected */\n onTabChange?: (tabId: string) => void;\n}\n\nexport const WindowFrame = React.forwardRef<HTMLDivElement, WindowFrameProps>(\n ({ title = 'window', tabs, activeTab, onTabChange, children, className, ...props }, ref) => {\n const [internalActive, setInternalActive] = useState(tabs?.[0]?.id ?? '');\n const currentTab = activeTab ?? internalActive;\n\n const handleTabChange = (id: string) => {\n if (onTabChange) {\n onTabChange(id);\n } else {\n setInternalActive(id);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rounded-berget-sm overflow-hidden shadow-berget-md border border-berget-brand-granite-700 bg-berget-brand-granite-800',\n className,\n )}\n {...props}\n >\n {/* Title bar */}\n <div className=\"flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900\">\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-muscaria-400\" />\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-chanterelle-200\" />\n <div className=\"w-3 h-3 rounded-full bg-berget-brand-moss-400\" />\n </div>\n\n {tabs && tabs.length > 0 ? (\n <div className=\"ml-4 flex items-center gap-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n className={cn(\n 'px-3 py-1 text-sm transition-colors cursor-pointer',\n currentTab === tab.id\n ? 'rounded-berget-xs bg-white/10 text-berget-foreground font-medium'\n : 'rounded text-berget-muted-foreground hover:text-berget-foreground font-medium',\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n ) : (\n <span className=\"ml-4 text-sm font-mono text-berget-brand-moss-400\">{title}</span>\n )}\n </div>\n\n {/* Content area */}\n <div>{children}</div>\n </div>\n );\n },\n);\n\nWindowFrame.displayName = 'WindowFrame';\n"],"mappings":";;;;;;AAsBA,MAAa,cAAc,MAAM,YAC9B,EAAE,QAAQ,UAAU,MAAM,WAAW,aAAa,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1F,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE;CACxE,MAAM,aAAa,aAAa;CAEhC,MAAM,mBAAmB,OAAe;EACtC,IAAI,aACF,YAAY,EAAE;OAEd,kBAAkB,EAAE;CAExB;CAEA,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GACT,yHACA,SACF;EACA,GAAI;EANN,UAAA,CASE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,oBAAC,OAAD,EAAK,WAAU,oDAAqD,CAAA;KACpE,oBAAC,OAAD,EAAK,WAAU,uDAAwD,CAAA;KACvE,oBAAC,OAAD,EAAK,WAAU,gDAAiD,CAAA;IAC7D;GAEJ,CAAA,GAAA,QAAQ,KAAK,SAAS,IACrB,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,KAAK,KAAK,QACT,oBAAC,UAAD;KAEE,MAAK;KACL,eAAe,gBAAgB,IAAI,EAAE;KACrC,WAAW,GACT,sDACA,eAAe,IAAI,KACf,qEACA,+EACN;KAEC,UAAA,IAAI;IACC,GAXD,IAAI,EAWH,CACT;GACE,CAAA,IAEL,oBAAC,QAAD;IAAM,WAAU;IAAqD,UAAA;GAAY,CAAA,CAEhF;EAGL,CAAA,GAAA,oBAAC,OAAD,EAAM,SAAc,CAAA,CACjB;;AAET,CACF;AAEA,YAAY,cAAc"}
1
+ {"version":3,"file":"WindowFrame.mjs","names":[],"sources":["../../../src/components/window-frame/WindowFrame.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\nexport interface WindowTab {\n id: string;\n label: string;\n}\n\nexport interface WindowFrameProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Window title shown in the title bar when no tabs are provided */\n title?: string;\n /** Optional tabs for switching content */\n tabs?: WindowTab[];\n /** Controlled active tab ID */\n activeTab?: string;\n /** Callback when a tab is selected */\n onTabChange?: (tabId: string) => void;\n}\n\nexport const WindowFrame = React.forwardRef<HTMLDivElement, WindowFrameProps>(\n ({ title = 'window', tabs, activeTab, onTabChange, children, className, ...props }, ref) => {\n const [internalActive, setInternalActive] = useState(tabs?.[0]?.id ?? '');\n const currentTab = activeTab ?? internalActive;\n\n const handleTabChange = (id: string) => {\n if (onTabChange) {\n onTabChange(id);\n } else {\n setInternalActive(id);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n `\n overflow-hidden rounded-berget-sm border\n border-berget-brand-granite-700 bg-berget-brand-granite-800\n shadow-berget-md\n `,\n className,\n )}\n {...props}\n >\n {/* Title bar */}\n <div\n className=\"\n flex items-center gap-2 border-b border-berget-brand-granite-700\n bg-berget-brand-granite-900 px-4 py-3\n \"\n >\n <div className=\"flex shrink-0 items-center gap-2\">\n <div className=\"size-3 rounded-full bg-berget-brand-muscaria-400\" />\n <div className=\"size-3 rounded-full bg-berget-brand-chanterelle-200\" />\n <div className=\"size-3 rounded-full bg-berget-brand-moss-400\" />\n </div>\n\n {tabs && tabs.length > 0 ? (\n <div className=\"ml-4 flex items-center gap-1\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => handleTabChange(tab.id)}\n className={cn(\n 'cursor-pointer px-3 py-1 text-sm transition-colors',\n currentTab === tab.id\n ? `\n rounded-berget-xs bg-white/10 font-medium\n text-berget-foreground\n `\n : `\n rounded-sm font-medium text-berget-muted-foreground\n hover:text-berget-foreground\n `,\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n ) : (\n <span className=\"ml-4 font-mono text-sm text-berget-brand-moss-400\">{title}</span>\n )}\n </div>\n\n {/* Content area */}\n <div>{children}</div>\n </div>\n );\n },\n);\n\nWindowFrame.displayName = 'WindowFrame';\n"],"mappings":";;;;;;AAsBA,MAAa,cAAc,MAAM,YAC9B,EAAE,QAAQ,UAAU,MAAM,WAAW,aAAa,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1F,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE;CACxE,MAAM,aAAa,aAAa;CAEhC,MAAM,mBAAmB,OAAe;EACtC,IAAI,aACF,YAAY,EAAE;OAEd,kBAAkB,EAAE;CAExB;CAEA,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GACT;;;;aAKA,SACF;EACA,GAAI;EAVN,UAAA,CAaE,qBAAC,OAAD;GACE,WAAU;GADZ,UAAA,CAME,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,oBAAC,OAAD,EAAK,WAAU,mDAAoD,CAAA;KACnE,oBAAC,OAAD,EAAK,WAAU,sDAAuD,CAAA;KACtE,oBAAC,OAAD,EAAK,WAAU,+CAAgD,CAAA;IAC5D;GAEJ,CAAA,GAAA,QAAQ,KAAK,SAAS,IACrB,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,KAAK,KAAK,QACT,oBAAC,UAAD;KAEE,MAAK;KACL,eAAe,gBAAgB,IAAI,EAAE;KACrC,WAAW,GACT,sDACA,eAAe,IAAI,KACf;;;0BAIA;;;uBAIN;KAEC,UAAA,IAAI;IACC,GAjBD,IAAI,EAiBH,CACT;GACE,CAAA,IAEL,oBAAC,QAAD;IAAM,WAAU;IAAqD,UAAA;GAAY,CAAA,CAEhF;EAGL,CAAA,GAAA,oBAAC,OAAD,EAAM,SAAc,CAAA,CACjB;;AAET,CACF;AAEA,YAAY,cAAc"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bergetai/ui",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "Berget Design System - Scandinavian-inspired design system with console aesthetic",
5
5
  "type": "module",
6
6
  "license": "MIT",