@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.
- package/dist/components/alert-dialog/AlertDialog.cjs +26 -5
- package/dist/components/alert-dialog/AlertDialog.cjs.map +1 -1
- package/dist/components/alert-dialog/AlertDialog.d.cts.map +1 -1
- package/dist/components/alert-dialog/AlertDialog.d.mts.map +1 -1
- package/dist/components/alert-dialog/AlertDialog.mjs +26 -5
- package/dist/components/alert-dialog/AlertDialog.mjs.map +1 -1
- package/dist/components/badge/Badge.cjs +12 -3
- package/dist/components/badge/Badge.cjs.map +1 -1
- package/dist/components/badge/Badge.d.cts.map +1 -1
- package/dist/components/badge/Badge.d.mts.map +1 -1
- package/dist/components/badge/Badge.mjs +12 -3
- package/dist/components/badge/Badge.mjs.map +1 -1
- package/dist/components/box/Box.cjs +3 -1
- package/dist/components/box/Box.cjs.map +1 -1
- package/dist/components/box/Box.mjs +3 -1
- package/dist/components/box/Box.mjs.map +1 -1
- package/dist/components/button/Button.cjs +40 -6
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.d.cts.map +1 -1
- package/dist/components/button/Button.d.mts.map +1 -1
- package/dist/components/button/Button.mjs +40 -6
- package/dist/components/button/Button.mjs.map +1 -1
- package/dist/components/card/Card.cjs +2 -2
- package/dist/components/card/Card.cjs.map +1 -1
- package/dist/components/card/Card.mjs +2 -2
- package/dist/components/card/Card.mjs.map +1 -1
- package/dist/components/checkbox/Checkbox.cjs +28 -11
- package/dist/components/checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/checkbox/Checkbox.d.cts.map +1 -1
- package/dist/components/checkbox/Checkbox.d.mts.map +1 -1
- package/dist/components/checkbox/Checkbox.mjs +28 -11
- package/dist/components/checkbox/Checkbox.mjs.map +1 -1
- package/dist/components/code-block/CodeBlock.cjs +10 -7
- package/dist/components/code-block/CodeBlock.cjs.map +1 -1
- package/dist/components/code-block/CodeBlock.mjs +10 -7
- package/dist/components/code-block/CodeBlock.mjs.map +1 -1
- package/dist/components/container/Container.cjs +16 -5
- package/dist/components/container/Container.cjs.map +1 -1
- package/dist/components/container/Container.d.cts.map +1 -1
- package/dist/components/container/Container.d.mts.map +1 -1
- package/dist/components/container/Container.mjs +16 -5
- package/dist/components/container/Container.mjs.map +1 -1
- package/dist/components/country-select/CountrySelect.cjs +22 -13
- package/dist/components/country-select/CountrySelect.cjs.map +1 -1
- package/dist/components/country-select/CountrySelect.mjs +22 -13
- package/dist/components/country-select/CountrySelect.mjs.map +1 -1
- package/dist/components/dialog/Dialog.cjs +23 -5
- package/dist/components/dialog/Dialog.cjs.map +1 -1
- package/dist/components/dialog/Dialog.d.cts.map +1 -1
- package/dist/components/dialog/Dialog.d.mts.map +1 -1
- package/dist/components/dialog/Dialog.mjs +23 -5
- package/dist/components/dialog/Dialog.mjs.map +1 -1
- package/dist/components/divider/Divider.cjs +5 -5
- package/dist/components/divider/Divider.cjs.map +1 -1
- package/dist/components/divider/Divider.mjs +5 -5
- package/dist/components/divider/Divider.mjs.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.cjs +8 -2
- package/dist/components/dropdown-menu/DropdownMenu.cjs.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.cts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.mts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.mjs +8 -2
- package/dist/components/dropdown-menu/DropdownMenu.mjs.map +1 -1
- package/dist/components/empty/Empty.cjs +4 -1
- package/dist/components/empty/Empty.cjs.map +1 -1
- package/dist/components/empty/Empty.d.cts.map +1 -1
- package/dist/components/empty/Empty.d.mts.map +1 -1
- package/dist/components/empty/Empty.mjs +4 -1
- package/dist/components/empty/Empty.mjs.map +1 -1
- package/dist/components/grid/Grid.cjs +11 -1
- package/dist/components/grid/Grid.cjs.map +1 -1
- package/dist/components/grid/Grid.mjs +11 -1
- package/dist/components/grid/Grid.mjs.map +1 -1
- package/dist/components/input-group/InputGroup.cjs +11 -2
- package/dist/components/input-group/InputGroup.cjs.map +1 -1
- package/dist/components/input-group/InputGroup.d.cts.map +1 -1
- package/dist/components/input-group/InputGroup.d.mts.map +1 -1
- package/dist/components/input-group/InputGroup.mjs +11 -2
- package/dist/components/input-group/InputGroup.mjs.map +1 -1
- package/dist/components/item/Item.cjs +4 -1
- package/dist/components/item/Item.cjs.map +1 -1
- package/dist/components/item/Item.d.cts.map +1 -1
- package/dist/components/item/Item.d.mts.map +1 -1
- package/dist/components/item/Item.mjs +4 -1
- package/dist/components/item/Item.mjs.map +1 -1
- package/dist/components/link/Link.cjs +32 -8
- package/dist/components/link/Link.cjs.map +1 -1
- package/dist/components/link/Link.d.cts.map +1 -1
- package/dist/components/link/Link.d.mts.map +1 -1
- package/dist/components/link/Link.mjs +32 -8
- package/dist/components/link/Link.mjs.map +1 -1
- package/dist/components/list/List.cjs +15 -6
- package/dist/components/list/List.cjs.map +1 -1
- package/dist/components/list/List.d.cts.map +1 -1
- package/dist/components/list/List.d.mts.map +1 -1
- package/dist/components/list/List.mjs +15 -6
- package/dist/components/list/List.mjs.map +1 -1
- package/dist/components/model-card/ModelCard.cjs +12 -9
- package/dist/components/model-card/ModelCard.cjs.map +1 -1
- package/dist/components/model-card/ModelCard.mjs +12 -9
- package/dist/components/model-card/ModelCard.mjs.map +1 -1
- package/dist/components/navigation-menu/NavigationMenu.cjs +43 -7
- package/dist/components/navigation-menu/NavigationMenu.cjs.map +1 -1
- package/dist/components/navigation-menu/NavigationMenu.d.cts.map +1 -1
- package/dist/components/navigation-menu/NavigationMenu.d.mts.map +1 -1
- package/dist/components/navigation-menu/NavigationMenu.mjs +43 -7
- package/dist/components/navigation-menu/NavigationMenu.mjs.map +1 -1
- package/dist/components/progress/Progress.cjs +4 -1
- package/dist/components/progress/Progress.cjs.map +1 -1
- package/dist/components/progress/Progress.mjs +4 -1
- package/dist/components/progress/Progress.mjs.map +1 -1
- package/dist/components/search-input/SearchInput.cjs +1 -1
- package/dist/components/search-input/SearchInput.cjs.map +1 -1
- package/dist/components/search-input/SearchInput.mjs +1 -1
- package/dist/components/search-input/SearchInput.mjs.map +1 -1
- package/dist/components/sidebar/Sidebar.cjs +15 -6
- package/dist/components/sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/sidebar/Sidebar.d.cts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.mts.map +1 -1
- package/dist/components/sidebar/Sidebar.mjs +15 -6
- package/dist/components/sidebar/Sidebar.mjs.map +1 -1
- package/dist/components/slider/Slider.cjs +1 -1
- package/dist/components/slider/Slider.cjs.map +1 -1
- package/dist/components/slider/Slider.mjs +1 -1
- package/dist/components/slider/Slider.mjs.map +1 -1
- package/dist/components/switch/Switch.cjs +42 -11
- package/dist/components/switch/Switch.cjs.map +1 -1
- package/dist/components/switch/Switch.d.cts.map +1 -1
- package/dist/components/switch/Switch.d.mts.map +1 -1
- package/dist/components/switch/Switch.mjs +42 -11
- package/dist/components/switch/Switch.mjs.map +1 -1
- package/dist/components/table/Table.cjs +22 -5
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.d.cts.map +1 -1
- package/dist/components/table/Table.d.mts.map +1 -1
- package/dist/components/table/Table.mjs +22 -5
- package/dist/components/table/Table.mjs.map +1 -1
- package/dist/components/theme-provider/ThemeToggle.cjs +9 -3
- package/dist/components/theme-provider/ThemeToggle.cjs.map +1 -1
- package/dist/components/theme-provider/ThemeToggle.mjs +9 -3
- package/dist/components/theme-provider/ThemeToggle.mjs.map +1 -1
- package/dist/components/typography/Typography.cjs +19 -13
- package/dist/components/typography/Typography.cjs.map +1 -1
- package/dist/components/typography/Typography.d.cts.map +1 -1
- package/dist/components/typography/Typography.d.mts.map +1 -1
- package/dist/components/typography/Typography.mjs +19 -13
- package/dist/components/typography/Typography.mjs.map +1 -1
- package/dist/components/window-frame/WindowFrame.cjs +18 -8
- package/dist/components/window-frame/WindowFrame.cjs.map +1 -1
- package/dist/components/window-frame/WindowFrame.mjs +18 -8
- package/dist/components/window-frame/WindowFrame.mjs.map +1 -1
- 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(
|
|
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" ? "
|
|
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" ? "
|
|
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
|
|
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(
|
|
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" ? "
|
|
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" ? "
|
|
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
|
|
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: "
|
|
12
|
-
hero:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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: '
|
|
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;;;
|
|
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;;;
|
|
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: "
|
|
11
|
-
hero:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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: '
|
|
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(
|
|
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
|
|
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
|
|
26
|
+
className: "flex shrink-0 items-center gap-2",
|
|
23
27
|
children: [
|
|
24
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "
|
|
25
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "
|
|
26
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
25
|
+
className: "flex shrink-0 items-center gap-2",
|
|
22
26
|
children: [
|
|
23
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
24
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
25
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
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
|
|
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
|
|
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
|
|
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"}
|