@bergetai/ui 0.16.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/dist/components/alert/Alert.d.cts +1 -1
  2. package/dist/components/alert/Alert.d.mts +1 -1
  3. package/dist/components/badge/Badge.d.cts +1 -1
  4. package/dist/components/badge/Badge.d.mts +1 -1
  5. package/dist/components/box/Box.d.cts +2 -2
  6. package/dist/components/box/Box.d.mts +2 -2
  7. package/dist/components/button/Button.cjs +21 -4
  8. package/dist/components/button/Button.cjs.map +1 -1
  9. package/dist/components/button/Button.d.cts +2 -1
  10. package/dist/components/button/Button.d.cts.map +1 -1
  11. package/dist/components/button/Button.d.mts +2 -1
  12. package/dist/components/button/Button.d.mts.map +1 -1
  13. package/dist/components/button/Button.mjs +19 -5
  14. package/dist/components/button/Button.mjs.map +1 -1
  15. package/dist/components/button/anchorVariants.cjs +56 -0
  16. package/dist/components/button/anchorVariants.cjs.map +1 -0
  17. package/dist/components/button/anchorVariants.d.cts +45 -0
  18. package/dist/components/button/anchorVariants.d.cts.map +1 -0
  19. package/dist/components/button/anchorVariants.d.mts +45 -0
  20. package/dist/components/button/anchorVariants.d.mts.map +1 -0
  21. package/dist/components/button/anchorVariants.mjs +55 -0
  22. package/dist/components/button/anchorVariants.mjs.map +1 -0
  23. package/dist/components/button/index.d.cts +2 -1
  24. package/dist/components/button/index.d.mts +2 -1
  25. package/dist/components/combobox/index.d.cts +2 -0
  26. package/dist/components/combobox/index.d.mts +2 -0
  27. package/dist/components/container/Container.d.cts +2 -2
  28. package/dist/components/container/Container.d.mts +2 -2
  29. package/dist/components/country-select/CountrySelect.cjs +1 -1
  30. package/dist/components/country-select/CountrySelect.mjs +1 -1
  31. package/dist/components/grid/Grid.d.cts +2 -2
  32. package/dist/components/grid/Grid.d.mts +2 -2
  33. package/dist/components/popover/index.d.cts +2 -0
  34. package/dist/components/popover/index.d.mts +2 -0
  35. package/dist/components/radio-group/index.d.cts +2 -0
  36. package/dist/components/radio-group/index.d.mts +2 -0
  37. package/dist/components/tabs/Tabs.cjs +109 -0
  38. package/dist/components/tabs/Tabs.cjs.map +1 -0
  39. package/dist/components/tabs/Tabs.d.cts +29 -0
  40. package/dist/components/tabs/Tabs.d.cts.map +1 -0
  41. package/dist/components/tabs/Tabs.d.mts +29 -0
  42. package/dist/components/tabs/Tabs.d.mts.map +1 -0
  43. package/dist/components/tabs/Tabs.mjs +103 -0
  44. package/dist/components/tabs/Tabs.mjs.map +1 -0
  45. package/dist/components/tabs/index.d.cts +2 -0
  46. package/dist/components/tabs/index.d.mts +2 -0
  47. package/dist/index.cjs +34 -0
  48. package/dist/index.d.cts +10 -1
  49. package/dist/index.d.mts +10 -1
  50. package/dist/index.mjs +6 -1
  51. package/dist/primitives/button.d.cts +1 -1
  52. package/dist/primitives/button.d.mts +1 -1
  53. package/dist/primitives/combobox.cjs +123 -0
  54. package/dist/primitives/combobox.cjs.map +1 -0
  55. package/dist/primitives/combobox.d.cts +25 -0
  56. package/dist/primitives/combobox.d.cts.map +1 -0
  57. package/dist/primitives/combobox.d.mts +25 -0
  58. package/dist/primitives/combobox.d.mts.map +1 -0
  59. package/dist/primitives/combobox.mjs +111 -0
  60. package/dist/primitives/combobox.mjs.map +1 -0
  61. package/dist/primitives/message-scroller.cjs +1 -1
  62. package/dist/primitives/message-scroller.mjs +1 -1
  63. package/dist/primitives/popover.cjs +24 -0
  64. package/dist/primitives/popover.cjs.map +1 -1
  65. package/dist/primitives/popover.d.cts +12 -0
  66. package/dist/primitives/popover.d.cts.map +1 -0
  67. package/dist/primitives/popover.d.mts +12 -0
  68. package/dist/primitives/popover.d.mts.map +1 -0
  69. package/dist/primitives/popover.mjs +22 -1
  70. package/dist/primitives/popover.mjs.map +1 -1
  71. package/dist/primitives/radio-group.cjs +23 -0
  72. package/dist/primitives/radio-group.cjs.map +1 -0
  73. package/dist/primitives/radio-group.d.cts +8 -0
  74. package/dist/primitives/radio-group.d.cts.map +1 -0
  75. package/dist/primitives/radio-group.d.mts +8 -0
  76. package/dist/primitives/radio-group.d.mts.map +1 -0
  77. package/dist/primitives/radio-group.mjs +22 -0
  78. package/dist/primitives/radio-group.mjs.map +1 -0
  79. package/dist/primitives/sidebar.cjs +1 -1
  80. package/dist/primitives/sidebar.mjs +1 -1
  81. package/dist/primitives/tabs.cjs +51 -0
  82. package/dist/primitives/tabs.cjs.map +1 -0
  83. package/dist/primitives/tabs.d.cts +11 -0
  84. package/dist/primitives/tabs.d.cts.map +1 -0
  85. package/dist/primitives/tabs.d.mts +11 -0
  86. package/dist/primitives/tabs.d.mts.map +1 -0
  87. package/dist/primitives/tabs.mjs +47 -0
  88. package/dist/primitives/tabs.mjs.map +1 -0
  89. package/dist/styles/index.css +29 -0
  90. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ let cn = require("cn");
4
+ let _base_ui_react_radio_group = require("@base-ui/react/radio-group");
5
+ let _base_ui_react_radio = require("@base-ui/react/radio");
6
+ //#region src/primitives/radio-group.tsx
7
+ const RadioGroup = _base_ui_react_radio_group.RadioGroup;
8
+ function RadioGroupItem({ className, ...props }) {
9
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_radio.Radio.Root, {
10
+ "data-slot": "radio-group-item",
11
+ className: (0, cn.cn)("group/radio-item peer relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input transition-colors outline-none select-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary", className),
12
+ ...props,
13
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_radio.Radio.Indicator, {
14
+ "data-slot": "radio-group-indicator",
15
+ className: (0, cn.cn)("flex size-2 items-center justify-center rounded-full bg-primary group-not-data-checked/field-label:hidden")
16
+ })
17
+ });
18
+ }
19
+ //#endregion
20
+ exports.RadioGroup = RadioGroup;
21
+ exports.RadioGroupItem = RadioGroupItem;
22
+
23
+ //# sourceMappingURL=radio-group.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.cjs","names":["RadioGroupPrimitive","RadioPrimitive"],"sources":["../../src/primitives/radio-group.tsx"],"sourcesContent":["\"use client\"\n\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { cn } from \"cn\"\n\nconst RadioGroup = RadioGroupPrimitive\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-item peer relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input transition-colors outline-none select-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary\",\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className={cn(\n \"flex size-2 items-center justify-center rounded-full bg-primary group-not-data-checked/field-label:hidden\",\n )}\n />\n </RadioPrimitive.Root>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"],"mappings":";;;;;;AAMA,MAAM,aAAaA,2BAAAA;AAEnB,SAAS,eAAe,EAAE,WAAW,GAAG,SAAoC;CAC1E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,MAAe,MAAhB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,yiBACA,SACF;EACA,GAAI;EAEJ,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,qBAAAA,MAAe,WAAhB;GACE,aAAU;GACV,YAAA,GAAW,GAAA,GAAA,CACT,2GACF;EACD,CAAA;CACkB,CAAA;AAEzB"}
@@ -0,0 +1,8 @@
1
+ import { RadioGroup } from "@base-ui/react/radio-group";
2
+ import { Radio } from "@base-ui/react/radio";
3
+ //#region src/primitives/radio-group.d.ts
4
+ declare const RadioGroup$1: <Value>(props: RadioGroup.Props<Value>) => React.JSX.Element;
5
+ declare function RadioGroupItem({ className, ...props }: Radio.Root.Props): import("react/jsx-runtime").JSX.Element;
6
+ //#endregion
7
+ export { RadioGroup$1 as RadioGroup, RadioGroupItem };
8
+ //# sourceMappingURL=radio-group.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.cts","names":["RadioGroup","RadioGroupPrimitive","RadioPrimitive"],"sources":["../../src/primitives/radio-group.tsx"],"mappings":";;;cAMMA,eAAU,OAAA,OAAAC,WAAA,MAAA,WAAA,MAAA,IAAA;iBAEP,iBAAiB,cAAc,SAASC,MAAe,KAAK,oCAAK,IAAA"}
@@ -0,0 +1,8 @@
1
+ import { RadioGroup } from "@base-ui/react/radio-group";
2
+ import { Radio } from "@base-ui/react/radio";
3
+ //#region src/primitives/radio-group.d.ts
4
+ declare const RadioGroup$1: <Value>(props: RadioGroup.Props<Value>) => React.JSX.Element;
5
+ declare function RadioGroupItem({ className, ...props }: Radio.Root.Props): import("react/jsx-runtime").JSX.Element;
6
+ //#endregion
7
+ export { RadioGroup$1 as RadioGroup, RadioGroupItem };
8
+ //# sourceMappingURL=radio-group.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.mts","names":["RadioGroup","RadioGroupPrimitive","RadioPrimitive"],"sources":["../../src/primitives/radio-group.tsx"],"mappings":";;;cAMMA,eAAU,OAAA,OAAAC,WAAA,MAAA,WAAA,MAAA,IAAA;iBAEP,iBAAiB,cAAc,SAASC,MAAe,KAAK,oCAAK,IAAA"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cn } from "cn";
4
+ import { RadioGroup } from "@base-ui/react/radio-group";
5
+ import { Radio } from "@base-ui/react/radio";
6
+ //#region src/primitives/radio-group.tsx
7
+ const RadioGroup$1 = RadioGroup;
8
+ function RadioGroupItem({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(Radio.Root, {
10
+ "data-slot": "radio-group-item",
11
+ className: cn("group/radio-item peer relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input transition-colors outline-none select-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary", className),
12
+ ...props,
13
+ children: /* @__PURE__ */ jsx(Radio.Indicator, {
14
+ "data-slot": "radio-group-indicator",
15
+ className: cn("flex size-2 items-center justify-center rounded-full bg-primary group-not-data-checked/field-label:hidden")
16
+ })
17
+ });
18
+ }
19
+ //#endregion
20
+ export { RadioGroup$1 as RadioGroup, RadioGroupItem };
21
+
22
+ //# sourceMappingURL=radio-group.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.mjs","names":["RadioGroup","RadioGroupPrimitive","RadioPrimitive"],"sources":["../../src/primitives/radio-group.tsx"],"sourcesContent":["\"use client\"\n\nimport { RadioGroup as RadioGroupPrimitive } from \"@base-ui/react/radio-group\"\nimport { Radio as RadioPrimitive } from \"@base-ui/react/radio\"\nimport { cn } from \"cn\"\n\nconst RadioGroup = RadioGroupPrimitive\n\nfunction RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n className={cn(\n \"group/radio-item peer relative flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input transition-colors outline-none select-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary\",\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className={cn(\n \"flex size-2 items-center justify-center rounded-full bg-primary group-not-data-checked/field-label:hidden\",\n )}\n />\n </RadioPrimitive.Root>\n )\n}\n\nexport { RadioGroup, RadioGroupItem }\n"],"mappings":";;;;;;AAMA,MAAMA,eAAaC;AAEnB,SAAS,eAAe,EAAE,WAAW,GAAG,SAAoC;CAC1E,OACE,oBAACC,MAAe,MAAhB;EACE,aAAU;EACV,WAAW,GACT,yiBACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAACA,MAAe,WAAhB;GACE,aAAU;GACV,WAAW,GACT,2GACF;EACD,CAAA;CACkB,CAAA;AAEzB"}
@@ -12,9 +12,9 @@ react = require_runtime.__toESM(react, 1);
12
12
  let react_jsx_runtime = require("react/jsx-runtime");
13
13
  let class_variance_authority = require("class-variance-authority");
14
14
  let cn = require("cn");
15
+ let lucide_react = require("lucide-react");
15
16
  let _base_ui_react_merge_props = require("@base-ui/react/merge-props");
16
17
  let _base_ui_react_use_render = require("@base-ui/react/use-render");
17
- let lucide_react = require("lucide-react");
18
18
  //#region src/primitives/sidebar.tsx
19
19
  const SIDEBAR_COOKIE_NAME = "sidebar_state";
20
20
  const SIDEBAR_COOKIE_MAX_AGE = 604800;
@@ -10,9 +10,9 @@ import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
11
11
  import { cva } from "class-variance-authority";
12
12
  import { cn } from "cn";
13
+ import { PanelLeftIcon } from "lucide-react";
13
14
  import { mergeProps } from "@base-ui/react/merge-props";
14
15
  import { useRender } from "@base-ui/react/use-render";
15
- import { PanelLeftIcon } from "lucide-react";
16
16
  //#region src/primitives/sidebar.tsx
17
17
  const SIDEBAR_COOKIE_NAME = "sidebar_state";
18
18
  const SIDEBAR_COOKIE_MAX_AGE = 604800;
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ let react_jsx_runtime = require("react/jsx-runtime");
3
+ let class_variance_authority = require("class-variance-authority");
4
+ let cn = require("cn");
5
+ let _base_ui_react_tabs = require("@base-ui/react/tabs");
6
+ //#region src/primitives/tabs.tsx
7
+ function Tabs({ className, orientation = "horizontal", ...props }) {
8
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tabs.Tabs.Root, {
9
+ "data-slot": "tabs",
10
+ "data-orientation": orientation,
11
+ className: (0, cn.cn)("group/tabs flex gap-2 data-horizontal:flex-col", className),
12
+ ...props
13
+ });
14
+ }
15
+ const tabsListVariants = (0, class_variance_authority.cva)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none", {
16
+ variants: { variant: {
17
+ default: "bg-muted",
18
+ line: "gap-1 bg-transparent"
19
+ } },
20
+ defaultVariants: { variant: "default" }
21
+ });
22
+ function TabsList({ className, variant = "default", ...props }) {
23
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tabs.Tabs.List, {
24
+ "data-slot": "tabs-list",
25
+ "data-variant": variant,
26
+ className: (0, cn.cn)(tabsListVariants({ variant }), className),
27
+ ...props
28
+ });
29
+ }
30
+ function TabsTrigger({ className, ...props }) {
31
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tabs.Tabs.Tab, {
32
+ "data-slot": "tabs-trigger",
33
+ className: (0, cn.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
34
+ ...props
35
+ });
36
+ }
37
+ function TabsContent({ className, ...props }) {
38
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_tabs.Tabs.Panel, {
39
+ "data-slot": "tabs-content",
40
+ className: (0, cn.cn)("flex-1 text-sm outline-none", className),
41
+ ...props
42
+ });
43
+ }
44
+ //#endregion
45
+ exports.Tabs = Tabs;
46
+ exports.TabsContent = TabsContent;
47
+ exports.TabsList = TabsList;
48
+ exports.TabsTrigger = TabsTrigger;
49
+ exports.tabsListVariants = tabsListVariants;
50
+
51
+ //# sourceMappingURL=tabs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.cjs","names":["TabsPrimitive","cva"],"sources":["../../src/primitives/tabs.tsx"],"sourcesContent":["\"use client\"\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"cn\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-horizontal:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 text-sm outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"],"mappings":";;;;;;AAMA,SAAS,KAAK,EACZ,WACA,cAAc,cACd,GAAG,SACwB;CAC3B,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,KAAc,MAAf;EACE,aAAU;EACV,oBAAkB;EAClB,YAAA,GAAW,GAAA,GAAA,CACT,kDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,oBAAA,GAAmBC,yBAAAA,IAAAA,CACvB,2OACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,SAAS,EAChB,WACA,UAAU,WACV,GAAG,SACgE;CACnE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,oBAAAA,KAAc,MAAf;EACE,aAAU;EACV,gBAAc;EACd,YAAA,GAAW,GAAA,GAAA,CAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAkC;CACrE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,KAAc,KAAf;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,81BACA,iQACA,qJACA,wYACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;CACvE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,oBAAAA,KAAc,OAAf;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,11 @@
1
+ import { VariantProps } from "class-variance-authority";
2
+ import { Tabs } from "@base-ui/react/tabs";
3
+ //#region src/primitives/tabs.d.ts
4
+ declare const tabsListVariants: (props?: ({
5
+ variant?: "line" | "default" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function TabsList({ className, variant, ...props }: Tabs.List.Props & VariantProps<typeof tabsListVariants>): import("react/jsx-runtime").JSX.Element;
8
+ declare function TabsTrigger({ className, ...props }: Tabs.Tab.Props): import("react/jsx-runtime").JSX.Element;
9
+ //#endregion
10
+ export { TabsList, TabsTrigger, tabsListVariants };
11
+ //# sourceMappingURL=tabs.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.cts","names":["TabsPrimitive"],"sources":["../../src/primitives/tabs.tsx"],"mappings":";;;cAwBM,mBAAgB;;6CAarB;iBAEQ,WACP,WACA,YACG,SACFA,KAAc,KAAK,QAAQ,oBAAoB,gDAAiB,IAAA;iBAW1D,cAAc,cAAc,SAASA,KAAc,IAAI,oCAAK,IAAA"}
@@ -0,0 +1,11 @@
1
+ import { VariantProps } from "class-variance-authority";
2
+ import { Tabs } from "@base-ui/react/tabs";
3
+ //#region src/primitives/tabs.d.ts
4
+ declare const tabsListVariants: (props?: ({
5
+ variant?: "line" | "default" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function TabsList({ className, variant, ...props }: Tabs.List.Props & VariantProps<typeof tabsListVariants>): import("react/jsx-runtime").JSX.Element;
8
+ declare function TabsTrigger({ className, ...props }: Tabs.Tab.Props): import("react/jsx-runtime").JSX.Element;
9
+ //#endregion
10
+ export { TabsList, TabsTrigger, tabsListVariants };
11
+ //# sourceMappingURL=tabs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.mts","names":["TabsPrimitive"],"sources":["../../src/primitives/tabs.tsx"],"mappings":";;;cAwBM,mBAAgB;;6CAarB;iBAEQ,WACP,WACA,YACG,SACFA,KAAc,KAAK,QAAQ,oBAAoB,gDAAiB,IAAA;iBAW1D,cAAc,cAAc,SAASA,KAAc,IAAI,oCAAK,IAAA"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "cn";
5
+ import { Tabs } from "@base-ui/react/tabs";
6
+ //#region src/primitives/tabs.tsx
7
+ function Tabs$1({ className, orientation = "horizontal", ...props }) {
8
+ return /* @__PURE__ */ jsx(Tabs.Root, {
9
+ "data-slot": "tabs",
10
+ "data-orientation": orientation,
11
+ className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className),
12
+ ...props
13
+ });
14
+ }
15
+ const tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none", {
16
+ variants: { variant: {
17
+ default: "bg-muted",
18
+ line: "gap-1 bg-transparent"
19
+ } },
20
+ defaultVariants: { variant: "default" }
21
+ });
22
+ function TabsList({ className, variant = "default", ...props }) {
23
+ return /* @__PURE__ */ jsx(Tabs.List, {
24
+ "data-slot": "tabs-list",
25
+ "data-variant": variant,
26
+ className: cn(tabsListVariants({ variant }), className),
27
+ ...props
28
+ });
29
+ }
30
+ function TabsTrigger({ className, ...props }) {
31
+ return /* @__PURE__ */ jsx(Tabs.Tab, {
32
+ "data-slot": "tabs-trigger",
33
+ className: cn("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className),
34
+ ...props
35
+ });
36
+ }
37
+ function TabsContent({ className, ...props }) {
38
+ return /* @__PURE__ */ jsx(Tabs.Panel, {
39
+ "data-slot": "tabs-content",
40
+ className: cn("flex-1 text-sm outline-none", className),
41
+ ...props
42
+ });
43
+ }
44
+ //#endregion
45
+ export { Tabs$1 as Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };
46
+
47
+ //# sourceMappingURL=tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.mjs","names":["Tabs","TabsPrimitive"],"sources":["../../src/primitives/tabs.tsx"],"sourcesContent":["\"use client\"\n\nimport { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"cn\"\n\nfunction Tabs({\n className,\n orientation = \"horizontal\",\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n \"group/tabs flex gap-2 data-horizontal:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst tabsListVariants = cva(\n \"group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n line: \"gap-1 bg-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction TabsList({\n className,\n variant = \"default\",\n ...props\n}: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n \"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent\",\n \"data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground\",\n \"after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 text-sm outline-none\", className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants }\n"],"mappings":";;;;;;AAMA,SAASA,OAAK,EACZ,WACA,cAAc,cACd,GAAG,SACwB;CAC3B,OACE,oBAACC,KAAc,MAAf;EACE,aAAU;EACV,oBAAkB;EAClB,WAAW,GACT,kDACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,mBAAmB,IACvB,2OACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,SAAS,EAChB,WACA,UAAU,WACV,GAAG,SACgE;CACnE,OACE,oBAACA,KAAc,MAAf;EACE,aAAU;EACV,gBAAc;EACd,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;EACtD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAkC;CACrE,OACE,oBAACA,KAAc,KAAf;EACE,aAAU;EACV,WAAW,GACT,81BACA,iQACA,qJACA,wYACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;CACvE,OACE,oBAACA,KAAc,OAAf;EACE,aAAU;EACV,WAAW,GAAG,+BAA+B,SAAS;EACtD,GAAI;CACL,CAAA;AAEL"}
@@ -362,6 +362,19 @@
362
362
  --berget-button-outline-hover: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
363
363
  /* Outline text accent: neutral foreground (≥4.5:1 on bg in all states) */
364
364
  --berget-button-outline-fg: var(--berget-foreground);
365
+ /* Destructive outline: muscaria border + text on transparent fill (dark
366
+ theme uses the lighter muscaria-300 for legibility on dark surfaces) */
367
+ --berget-button-destructive-outline-border: color-mix(
368
+ in oklch,
369
+ var(--berget-brand-muscaria-400) 35%,
370
+ transparent
371
+ );
372
+ --berget-button-destructive-outline-fg: var(--berget-brand-muscaria-300);
373
+ --berget-button-destructive-outline-hover: color-mix(
374
+ in oklch,
375
+ var(--berget-brand-muscaria-400) 10%,
376
+ transparent
377
+ );
365
378
  /* Disabled: variant fill at 8% + half-opacity neutral foreground (≥3:1,
366
379
  exempt from AA text contrast per WCAG 1.4.3, still clearly "off") */
367
380
  --berget-button-disabled-bg: color-mix(in oklch, var(--berget-foreground) 8%, transparent);
@@ -703,6 +716,19 @@
703
716
  --berget-button-outline-border: color-mix(in oklch, var(--berget-foreground) 25%, transparent);
704
717
  --berget-button-outline-hover: color-mix(in oklch, var(--berget-foreground) 5%, transparent);
705
718
  --berget-button-outline-fg: var(--berget-foreground);
719
+ /* Destructive outline (light theme): darker muscaria text for ≥4.5:1 on
720
+ light surfaces, muscaria-500 border and hover fill */
721
+ --berget-button-destructive-outline-border: color-mix(
722
+ in oklch,
723
+ var(--berget-brand-muscaria-500) 35%,
724
+ transparent
725
+ );
726
+ --berget-button-destructive-outline-fg: var(--berget-brand-muscaria-600);
727
+ --berget-button-destructive-outline-hover: color-mix(
728
+ in oklch,
729
+ var(--berget-brand-muscaria-500) 10%,
730
+ transparent
731
+ );
706
732
  --berget-button-disabled-bg: color-mix(in oklch, var(--berget-foreground) 8%, transparent);
707
733
  --berget-button-disabled-fg: color-mix(in oklch, var(--berget-foreground) 50%, transparent);
708
734
  --berget-button-disabled-border: color-mix(in oklch, var(--berget-foreground) 15%, transparent);
@@ -1115,6 +1141,9 @@
1115
1141
  --color-berget-button-outline-border: var(--berget-button-outline-border);
1116
1142
  --color-berget-button-outline-hover: var(--berget-button-outline-hover);
1117
1143
  --color-berget-button-outline-fg: var(--berget-button-outline-fg);
1144
+ --color-berget-button-destructive-outline-border: var(--berget-button-destructive-outline-border);
1145
+ --color-berget-button-destructive-outline-fg: var(--berget-button-destructive-outline-fg);
1146
+ --color-berget-button-destructive-outline-hover: var(--berget-button-destructive-outline-hover);
1118
1147
  --color-berget-button-disabled-bg: var(--berget-button-disabled-bg);
1119
1148
  --color-berget-button-disabled-fg: var(--berget-button-disabled-fg);
1120
1149
  --color-berget-button-disabled-border: var(--berget-button-disabled-border);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bergetai/ui",
3
- "version": "0.16.2",
3
+ "version": "0.17.0",
4
4
  "description": "Berget Design System - Scandinavian-inspired design system with console aesthetic",
5
5
  "type": "module",
6
6
  "license": "MIT",