@bergetai/ui 0.16.1 → 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 (98) 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/slider/Slider.cjs +8 -6
  38. package/dist/components/slider/Slider.cjs.map +1 -1
  39. package/dist/components/slider/Slider.d.cts +7 -5
  40. package/dist/components/slider/Slider.d.cts.map +1 -1
  41. package/dist/components/slider/Slider.d.mts +7 -5
  42. package/dist/components/slider/Slider.d.mts.map +1 -1
  43. package/dist/components/slider/Slider.mjs +8 -6
  44. package/dist/components/slider/Slider.mjs.map +1 -1
  45. package/dist/components/tabs/Tabs.cjs +109 -0
  46. package/dist/components/tabs/Tabs.cjs.map +1 -0
  47. package/dist/components/tabs/Tabs.d.cts +29 -0
  48. package/dist/components/tabs/Tabs.d.cts.map +1 -0
  49. package/dist/components/tabs/Tabs.d.mts +29 -0
  50. package/dist/components/tabs/Tabs.d.mts.map +1 -0
  51. package/dist/components/tabs/Tabs.mjs +103 -0
  52. package/dist/components/tabs/Tabs.mjs.map +1 -0
  53. package/dist/components/tabs/index.d.cts +2 -0
  54. package/dist/components/tabs/index.d.mts +2 -0
  55. package/dist/index.cjs +34 -0
  56. package/dist/index.d.cts +10 -1
  57. package/dist/index.d.mts +10 -1
  58. package/dist/index.mjs +6 -1
  59. package/dist/primitives/button.d.cts +1 -1
  60. package/dist/primitives/button.d.mts +1 -1
  61. package/dist/primitives/combobox.cjs +123 -0
  62. package/dist/primitives/combobox.cjs.map +1 -0
  63. package/dist/primitives/combobox.d.cts +25 -0
  64. package/dist/primitives/combobox.d.cts.map +1 -0
  65. package/dist/primitives/combobox.d.mts +25 -0
  66. package/dist/primitives/combobox.d.mts.map +1 -0
  67. package/dist/primitives/combobox.mjs +111 -0
  68. package/dist/primitives/combobox.mjs.map +1 -0
  69. package/dist/primitives/message-scroller.cjs +1 -1
  70. package/dist/primitives/message-scroller.mjs +1 -1
  71. package/dist/primitives/popover.cjs +24 -0
  72. package/dist/primitives/popover.cjs.map +1 -1
  73. package/dist/primitives/popover.d.cts +12 -0
  74. package/dist/primitives/popover.d.cts.map +1 -0
  75. package/dist/primitives/popover.d.mts +12 -0
  76. package/dist/primitives/popover.d.mts.map +1 -0
  77. package/dist/primitives/popover.mjs +22 -1
  78. package/dist/primitives/popover.mjs.map +1 -1
  79. package/dist/primitives/radio-group.cjs +23 -0
  80. package/dist/primitives/radio-group.cjs.map +1 -0
  81. package/dist/primitives/radio-group.d.cts +8 -0
  82. package/dist/primitives/radio-group.d.cts.map +1 -0
  83. package/dist/primitives/radio-group.d.mts +8 -0
  84. package/dist/primitives/radio-group.d.mts.map +1 -0
  85. package/dist/primitives/radio-group.mjs +22 -0
  86. package/dist/primitives/radio-group.mjs.map +1 -0
  87. package/dist/primitives/sidebar.cjs +1 -1
  88. package/dist/primitives/sidebar.mjs +1 -1
  89. package/dist/primitives/tabs.cjs +51 -0
  90. package/dist/primitives/tabs.cjs.map +1 -0
  91. package/dist/primitives/tabs.d.cts +11 -0
  92. package/dist/primitives/tabs.d.cts.map +1 -0
  93. package/dist/primitives/tabs.d.mts +11 -0
  94. package/dist/primitives/tabs.d.mts.map +1 -0
  95. package/dist/primitives/tabs.mjs +47 -0
  96. package/dist/primitives/tabs.mjs.map +1 -0
  97. package/dist/styles/index.css +29 -0
  98. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchorVariants.mjs","names":[],"sources":["../../../src/components/button/anchorVariants.tsx"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from '../../primitives/button';\nimport type { VariantProps } from 'class-variance-authority';\nimport {\n brandVariantClasses,\n interactionClasses,\n primitiveVariant,\n type CustomVariant,\n} from './Button';\n\n/** Props for {@link anchorVariants}. Consumes like `buttonVariants` with the\n * same variant union as the `Button` wrapper. */\nexport interface AnchorVariantsProps {\n /** Visual style variant — same union as `Button`'s `variant` prop. */\n variant?: CustomVariant;\n /** Full width or auto width. */\n width?: 'default' | 'full';\n /** Button size ladder — maps to the same text scale as `Button`. */\n size?: VariantProps<typeof buttonVariants>['size'];\n /** Extra classes, merged last (same override position as `Button`). */\n className?: string;\n}\n\n/**\n * Class variants for real `<a>` elements styled like `Button` chrome.\n *\n * Base UI's Button enforces button semantics and its docs forbid rendering\n * links through the `render` prop, and the package's `asChild` leaves\n * `nativeButton={true}` — anchors through it keep `role=\"button\"` and log a\n * dev-console error. This helper bakes in exactly the wrapper chrome the\n * `Button` component applies, so consumers can style a plain anchor instead\n * of replicating package internals:\n *\n * ```tsx\n * <a className={anchorVariants({ variant: 'primary', width: 'full' })} href=\"…\">\n * Open dashboard\n * </a>\n * ```\n *\n * Class output is equivalent to `Button variant=… width=…` (ignoring\n * `disabled:*`, which does not apply to anchors), with anchor-safe focus\n * treatment: `:focus-visible` works natively on `<a>` elements, and the\n * shared outline-based focus ring lands the same way.\n */\nexport function anchorVariants({\n variant = 'default',\n width = 'default',\n size,\n className,\n}: AnchorVariantsProps = {}): string {\n const isIcon = typeof size === 'string' && size.startsWith('icon');\n\n return cn(\n buttonVariants({ variant: primitiveVariant(variant), size }),\n // Full-width anchors use the square radius; otherwise pill (same rule\n // as the Button wrapper).\n width === 'full' ? 'rounded-berget-xs' : 'rounded-full',\n // Em-based padding, inline = 2× block, matching the Button wrapper.\n !isIcon && 'h-auto px-[0.8em] py-[0.4em]',\n // Text ladder: default renders at text-base like the wrapper Button.\n !isIcon &&\n (size === 'lg' ? 'text-lg' : size === 'sm' ? 'text-sm' : size === 'xs' ? '' : `text-base`),\n !isIcon && 'font-normal',\n brandVariantClasses(variant),\n interactionClasses,\n width === 'full' && 'w-full',\n className,\n );\n}\n\nexport type AnchorProps = React.ComponentProps<'a'> & AnchorVariantsProps;\n\n/** Ready-to-use anchor styled through {@link anchorVariants}. For cases\n * where a component (rather than a class string) is easier to consume. */\nexport function Anchor({ variant, width, size, className, children, ...props }: AnchorProps) {\n return (\n <a className={anchorVariants({ variant, width, size, className })} {...props}>\n <span className=\"inline-flex items-center gap-2\">{children}</span>\n </a>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAAgB,eAAe,EAC7B,UAAU,WACV,QAAQ,WACR,MACA,cACuB,CAAC,GAAW;CACnC,MAAM,SAAS,OAAO,SAAS,YAAY,KAAK,WAAW,MAAM;CAEjE,OAAO,GACL,eAAe;EAAE,SAAS,iBAAiB,OAAO;EAAG;CAAK,CAAC,GAG3D,UAAU,SAAS,sBAAsB,gBAEzC,CAAC,UAAU,gCAEX,CAAC,WACE,SAAS,OAAO,YAAY,SAAS,OAAO,YAAY,SAAS,OAAO,KAAK,cAChF,CAAC,UAAU,eACX,oBAAoB,OAAO,GAC3B,oBACA,UAAU,UAAU,UACpB,SACF;AACF;;;AAMA,SAAgB,OAAO,EAAE,SAAS,OAAO,MAAM,WAAW,UAAU,GAAG,SAAsB;CAC3F,OACE,oBAAC,KAAD;EAAG,WAAW,eAAe;GAAE;GAAS;GAAO;GAAM;EAAU,CAAC;EAAG,GAAI;EACrE,UAAA,oBAAC,QAAD;GAAM,WAAU;GAAkC;EAAe,CAAA;CAChE,CAAA;AAEP"}
@@ -1,3 +1,4 @@
1
1
  import { buttonVariants } from "../../primitives/button.cjs";
2
2
  import { Button, ButtonProps } from "./Button.cjs";
3
- export { Button, type ButtonProps, buttonVariants };
3
+ import { Anchor, AnchorProps, AnchorVariantsProps, anchorVariants } from "./anchorVariants.cjs";
4
+ export { Anchor, type AnchorProps, type AnchorVariantsProps, Button, type ButtonProps, anchorVariants, buttonVariants };
@@ -1,3 +1,4 @@
1
1
  import { buttonVariants } from "../../primitives/button.mjs";
2
2
  import { Button, ButtonProps } from "./Button.mjs";
3
- export { Button, type ButtonProps, buttonVariants };
3
+ import { Anchor, AnchorProps, AnchorVariantsProps, anchorVariants } from "./anchorVariants.mjs";
4
+ export { Anchor, type AnchorProps, type AnchorVariantsProps, Button, type ButtonProps, anchorVariants, buttonVariants };
@@ -0,0 +1,2 @@
1
+ import { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue } from "../../primitives/combobox.cjs";
2
+ export { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue };
@@ -0,0 +1,2 @@
1
+ import { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue } from "../../primitives/combobox.mjs";
2
+ export { Combobox, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxStatus, ComboboxTrigger, ComboboxValue };
@@ -3,8 +3,8 @@ import { VariantProps } from "class-variance-authority";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  //#region src/components/container/Container.d.ts
5
5
  declare const containerVariants: (props?: ({
6
- size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
7
- padding?: "none" | "sm" | "md" | "lg" | null | undefined;
6
+ size?: "sm" | "lg" | "md" | "xl" | "full" | null | undefined;
7
+ padding?: "none" | "sm" | "lg" | "md" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export interface ContainerProps extends useRender.ComponentProps<'div'>, VariantProps<typeof containerVariants> {
10
10
  children?: React.ReactNode;
@@ -3,8 +3,8 @@ import { VariantProps } from "class-variance-authority";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  //#region src/components/container/Container.d.ts
5
5
  declare const containerVariants: (props?: ({
6
- size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
7
- padding?: "none" | "sm" | "md" | "lg" | null | undefined;
6
+ size?: "sm" | "lg" | "md" | "xl" | "full" | null | undefined;
7
+ padding?: "none" | "sm" | "lg" | "md" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export interface ContainerProps extends useRender.ComponentProps<'div'>, VariantProps<typeof containerVariants> {
10
10
  children?: React.ReactNode;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
3
  const require_utils = require("../../lib/utils.cjs");
4
- const require_Icon = require("../icon/Icon.cjs");
5
4
  const require_popover = require("../../primitives/popover.cjs");
5
+ const require_Icon = require("../icon/Icon.cjs");
6
6
  const require_command = require("../../primitives/command.cjs");
7
7
  const require_countries = require("./countries.cjs");
8
8
  let react = require("react");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../lib/utils.mjs";
3
- import { Icon } from "../icon/Icon.mjs";
4
3
  import { Popover, PopoverContent, PopoverTrigger } from "../../primitives/popover.mjs";
4
+ import { Icon } from "../icon/Icon.mjs";
5
5
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "../../primitives/command.mjs";
6
6
  import { COUNTRIES } from "./countries.mjs";
7
7
  import * as React from "react";
@@ -3,8 +3,8 @@ import { VariantProps } from "class-variance-authority";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  //#region src/components/grid/Grid.d.ts
5
5
  declare const gridVariants: (props?: ({
6
- align?: "center" | "start" | "end" | "stretch" | null | undefined;
7
- justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
6
+ align?: "center" | "end" | "start" | "stretch" | null | undefined;
7
+ justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
10
10
  export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
@@ -3,8 +3,8 @@ import { VariantProps } from "class-variance-authority";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  //#region src/components/grid/Grid.d.ts
5
5
  declare const gridVariants: (props?: ({
6
- align?: "center" | "start" | "end" | "stretch" | null | undefined;
7
- justify?: "center" | "start" | "end" | "between" | "around" | "evenly" | null | undefined;
6
+ align?: "center" | "end" | "start" | "stretch" | null | undefined;
7
+ justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  export type SpacingScale = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64 | 72 | 80 | 96;
10
10
  export type GridColsScale = 1 | 2 | 3 | 4 | 6 | 12;
@@ -0,0 +1,2 @@
1
+ import { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger } from "../../primitives/popover.cjs";
2
+ export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,2 @@
1
+ import { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger } from "../../primitives/popover.mjs";
2
+ export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,2 @@
1
+ import { RadioGroup, RadioGroupItem } from "../../primitives/radio-group.cjs";
2
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,2 @@
1
+ import { RadioGroup, RadioGroupItem } from "../../primitives/radio-group.mjs";
2
+ export { RadioGroup, RadioGroupItem };
@@ -6,14 +6,16 @@ let react_jsx_runtime = require("react/jsx-runtime");
6
6
  /**
7
7
  * Berget wrapper for the base-nova Slider primitive.
8
8
  *
9
- * Track (bg-muted) and range indicator (bg-primary) resolve through the
10
- * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only
11
- * override needed is the thumb fill: the primitive hardcodes `bg-white`,
12
- * which is a raw value that doesn't track the theme — here it uses Peak
13
- * (granite-50), matching the primary button foreground treatment.
9
+ * Overrides the primitive's hardcoded surfaces, which don't resolve in the
10
+ * Berget themes: the track's `bg-muted` equals the dark page background
11
+ * (both granite-950), so the track is invisible; the thumb hardcodes
12
+ * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —
13
+ * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses
14
+ * Peak (granite-50), matching the primary button foreground treatment.
15
+ * The range indicator keeps the primitive's `bg-primary` (Moss).
14
16
  */
15
17
  const Slider = ({ className, ...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_slider.Slider, {
16
- className: require_utils.cn("**:data-[slot=slider-thumb]:bg-berget-brand-granite-50", className),
18
+ className: require_utils.cn("**:data-[slot=slider-track]:bg-berget-surface-raised", "**:data-[slot=slider-thumb]:bg-berget-brand-granite-50", className),
17
19
  ...props
18
20
  });
19
21
  Slider.displayName = "Slider";
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.cjs","names":["SliderPrimitive","cn"],"sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Slider as SliderPrimitive } from '../../primitives/slider';\n\nexport type SliderProps = React.ComponentProps<typeof SliderPrimitive>;\n\n/**\n * Berget wrapper for the base-nova Slider primitive.\n *\n * Track (bg-muted) and range indicator (bg-primary) resolve through the\n * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only\n * override needed is the thumb fill: the primitive hardcodes `bg-white`,\n * which is a raw value that doesn't track the theme — here it uses Peak\n * (granite-50), matching the primary button foreground treatment.\n */\nconst Slider = ({ className, ...props }: SliderProps) => (\n <SliderPrimitive\n className={cn('**:data-[slot=slider-thumb]:bg-berget-brand-granite-50', className)}\n {...props}\n />\n);\nSlider.displayName = 'Slider';\n\nexport { Slider };\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,UAAU,EAAE,WAAW,GAAG,YAC9B,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,QAAD;CACE,WAAWC,cAAAA,GAAG,0DAA0D,SAAS;CACjF,GAAI;AACL,CAAA;AAEH,OAAO,cAAc"}
1
+ {"version":3,"file":"Slider.cjs","names":["SliderPrimitive","cn"],"sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Slider as SliderPrimitive } from '../../primitives/slider';\n\nexport type SliderProps = React.ComponentProps<typeof SliderPrimitive>;\n\n/**\n * Berget wrapper for the base-nova Slider primitive.\n *\n * Overrides the primitive's hardcoded surfaces, which don't resolve in the\n * Berget themes: the track's `bg-muted` equals the dark page background\n * (both granite-950), so the track is invisible; the thumb hardcodes\n * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —\n * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses\n * Peak (granite-50), matching the primary button foreground treatment.\n * The range indicator keeps the primitive's `bg-primary` (Moss).\n */\nconst Slider = ({ className, ...props }: SliderProps) => (\n <SliderPrimitive\n className={cn(\n '**:data-[slot=slider-track]:bg-berget-surface-raised',\n '**:data-[slot=slider-thumb]:bg-berget-brand-granite-50',\n className,\n )}\n {...props}\n />\n);\nSlider.displayName = 'Slider';\n\nexport { Slider };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,UAAU,EAAE,WAAW,GAAG,YAC9B,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,QAAD;CACE,WAAWC,cAAAA,GACT,wDACA,0DACA,SACF;CACA,GAAI;AACL,CAAA;AAEH,OAAO,cAAc"}
@@ -5,11 +5,13 @@ export type SliderProps = React.ComponentProps<typeof Slider$1>;
5
5
  /**
6
6
  * Berget wrapper for the base-nova Slider primitive.
7
7
  *
8
- * Track (bg-muted) and range indicator (bg-primary) resolve through the
9
- * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only
10
- * override needed is the thumb fill: the primitive hardcodes `bg-white`,
11
- * which is a raw value that doesn't track the theme — here it uses Peak
12
- * (granite-50), matching the primary button foreground treatment.
8
+ * Overrides the primitive's hardcoded surfaces, which don't resolve in the
9
+ * Berget themes: the track's `bg-muted` equals the dark page background
10
+ * (both granite-950), so the track is invisible; the thumb hardcodes
11
+ * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —
12
+ * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses
13
+ * Peak (granite-50), matching the primary button foreground treatment.
14
+ * The range indicator keeps the primitive's `bg-primary` (Moss).
13
15
  */
14
16
  declare const Slider: {
15
17
  ({ className, ...props }: SliderProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.cts","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"mappings":";;;YAMY,cAAc,MAAM,sBAAsBA;;;;;;;;;;cAWhD;KAAmC,cAAA,SAAA,0CAAW,IAAA"}
1
+ {"version":3,"file":"Slider.d.cts","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"mappings":";;;YAMY,cAAc,MAAM,sBAAsBA;;;;;;;;;;;;cAahD;KAAmC,cAAA,SAAA,0CAAW,IAAA"}
@@ -5,11 +5,13 @@ export type SliderProps = React.ComponentProps<typeof Slider$1>;
5
5
  /**
6
6
  * Berget wrapper for the base-nova Slider primitive.
7
7
  *
8
- * Track (bg-muted) and range indicator (bg-primary) resolve through the
9
- * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only
10
- * override needed is the thumb fill: the primitive hardcodes `bg-white`,
11
- * which is a raw value that doesn't track the theme — here it uses Peak
12
- * (granite-50), matching the primary button foreground treatment.
8
+ * Overrides the primitive's hardcoded surfaces, which don't resolve in the
9
+ * Berget themes: the track's `bg-muted` equals the dark page background
10
+ * (both granite-950), so the track is invisible; the thumb hardcodes
11
+ * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —
12
+ * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses
13
+ * Peak (granite-50), matching the primary button foreground treatment.
14
+ * The range indicator keeps the primitive's `bg-primary` (Moss).
13
15
  */
14
16
  declare const Slider: {
15
17
  ({ className, ...props }: SliderProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.mts","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"mappings":";;;YAMY,cAAc,MAAM,sBAAsBA;;;;;;;;;;cAWhD;KAAmC,cAAA,SAAA,0CAAW,IAAA"}
1
+ {"version":3,"file":"Slider.d.mts","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"mappings":";;;YAMY,cAAc,MAAM,sBAAsBA;;;;;;;;;;;;cAahD;KAAmC,cAAA,SAAA,0CAAW,IAAA"}
@@ -6,14 +6,16 @@ import { jsx } from "react/jsx-runtime";
6
6
  /**
7
7
  * Berget wrapper for the base-nova Slider primitive.
8
8
  *
9
- * Track (bg-muted) and range indicator (bg-primary) resolve through the
10
- * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only
11
- * override needed is the thumb fill: the primitive hardcodes `bg-white`,
12
- * which is a raw value that doesn't track the theme — here it uses Peak
13
- * (granite-50), matching the primary button foreground treatment.
9
+ * Overrides the primitive's hardcoded surfaces, which don't resolve in the
10
+ * Berget themes: the track's `bg-muted` equals the dark page background
11
+ * (both granite-950), so the track is invisible; the thumb hardcodes
12
+ * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —
13
+ * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses
14
+ * Peak (granite-50), matching the primary button foreground treatment.
15
+ * The range indicator keeps the primitive's `bg-primary` (Moss).
14
16
  */
15
17
  const Slider = ({ className, ...props }) => /* @__PURE__ */ jsx(Slider$1, {
16
- className: cn("**:data-[slot=slider-thumb]:bg-berget-brand-granite-50", className),
18
+ className: cn("**:data-[slot=slider-track]:bg-berget-surface-raised", "**:data-[slot=slider-thumb]:bg-berget-brand-granite-50", className),
17
19
  ...props
18
20
  });
19
21
  Slider.displayName = "Slider";
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.mjs","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Slider as SliderPrimitive } from '../../primitives/slider';\n\nexport type SliderProps = React.ComponentProps<typeof SliderPrimitive>;\n\n/**\n * Berget wrapper for the base-nova Slider primitive.\n *\n * Track (bg-muted) and range indicator (bg-primary) resolve through the\n * shadcn bridge in `styles/index.css` to Berget surfaces and Moss. The only\n * override needed is the thumb fill: the primitive hardcodes `bg-white`,\n * which is a raw value that doesn't track the theme — here it uses Peak\n * (granite-50), matching the primary button foreground treatment.\n */\nconst Slider = ({ className, ...props }: SliderProps) => (\n <SliderPrimitive\n className={cn('**:data-[slot=slider-thumb]:bg-berget-brand-granite-50', className)}\n {...props}\n />\n);\nSlider.displayName = 'Slider';\n\nexport { Slider };\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,UAAU,EAAE,WAAW,GAAG,YAC9B,oBAACA,UAAD;CACE,WAAW,GAAG,0DAA0D,SAAS;CACjF,GAAI;AACL,CAAA;AAEH,OAAO,cAAc"}
1
+ {"version":3,"file":"Slider.mjs","names":["SliderPrimitive"],"sources":["../../../src/components/slider/Slider.tsx"],"sourcesContent":["'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Slider as SliderPrimitive } from '../../primitives/slider';\n\nexport type SliderProps = React.ComponentProps<typeof SliderPrimitive>;\n\n/**\n * Berget wrapper for the base-nova Slider primitive.\n *\n * Overrides the primitive's hardcoded surfaces, which don't resolve in the\n * Berget themes: the track's `bg-muted` equals the dark page background\n * (both granite-950), so the track is invisible; the thumb hardcodes\n * `bg-white`. The track uses Raised (foreground-mix 10%, theme-aware) —\n * the same treatment as InputGroup/Checkbox surfaces — and the thumb uses\n * Peak (granite-50), matching the primary button foreground treatment.\n * The range indicator keeps the primitive's `bg-primary` (Moss).\n */\nconst Slider = ({ className, ...props }: SliderProps) => (\n <SliderPrimitive\n className={cn(\n '**:data-[slot=slider-track]:bg-berget-surface-raised',\n '**:data-[slot=slider-thumb]:bg-berget-brand-granite-50',\n className,\n )}\n {...props}\n />\n);\nSlider.displayName = 'Slider';\n\nexport { Slider };\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,UAAU,EAAE,WAAW,GAAG,YAC9B,oBAACA,UAAD;CACE,WAAW,GACT,wDACA,0DACA,SACF;CACA,GAAI;AACL,CAAA;AAEH,OAAO,cAAc"}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_utils = require("../../lib/utils.cjs");
4
+ const require_tabs = require("../../primitives/tabs.cjs");
5
+ let react = require("react");
6
+ react = require_runtime.__toESM(react, 1);
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ let class_variance_authority = require("class-variance-authority");
9
+ //#region src/components/tabs/Tabs.tsx
10
+ const TabsIndicatorPrimitive = require("@base-ui/react/tabs").Tabs.Indicator;
11
+ const Tabs = react.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_tabs.Tabs, {
12
+ ref,
13
+ className,
14
+ ...props
15
+ }));
16
+ Tabs.displayName = "Tabs";
17
+ const tabsListVariants = (0, class_variance_authority.cva)(require_utils.cn(`
18
+ group/tabs-list inline-flex w-fit items-center justify-center
19
+ rounded-berget-xs p-[3px] text-berget-muted-foreground
20
+ `, `
21
+ group-data-[orientation=horizontal]/tabs:h-9
22
+ group-data-[orientation=vertical]/tabs:h-fit
23
+ group-data-[orientation=vertical]/tabs:flex-col
24
+ `), {
25
+ variants: { variant: {
26
+ default: "bg-berget-tabs-list-bg",
27
+ line: "relative gap-2 rounded-berget-none bg-transparent"
28
+ } },
29
+ defaultVariants: { variant: "default" }
30
+ });
31
+ const TabsList = react.forwardRef(({ className, variant = "default", children, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_tabs.TabsList, {
32
+ ref,
33
+ "data-variant": variant,
34
+ className: require_utils.cn(tabsListVariants({ variant }), className),
35
+ ...props,
36
+ children: [children, variant === "line" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TabsIndicatorPrimitive, { className: require_utils.cn(`
37
+ pointer-events-none absolute z-10 block rounded-berget-full
38
+ bg-berget-tabs-line-indicator transition-[left,top,width,height]
39
+ duration-200 ease-out
40
+ `, `
41
+ group-data-[orientation=horizontal]/tabs:bottom-0
42
+ group-data-[orientation=horizontal]/tabs:left-(--active-tab-left)
43
+ group-data-[orientation=horizontal]/tabs:h-0.5
44
+ group-data-[orientation=horizontal]/tabs:w-(--active-tab-width)
45
+ `, `
46
+ group-data-[orientation=vertical]/tabs:top-(--active-tab-top)
47
+ group-data-[orientation=vertical]/tabs:left-0
48
+ group-data-[orientation=vertical]/tabs:h-(--active-tab-height)
49
+ group-data-[orientation=vertical]/tabs:w-0.5
50
+ `) })]
51
+ }));
52
+ TabsList.displayName = "TabsList";
53
+ const tabsTriggerVariants = (0, class_variance_authority.cva)(require_utils.cn(`
54
+ relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center
55
+ gap-1.5 rounded-berget-xs border border-transparent px-3 py-1.5 text-sm
56
+ font-medium whitespace-nowrap transition-all
57
+ `, `
58
+ group-data-[orientation=vertical]/tabs:w-full
59
+ group-data-[orientation=vertical]/tabs:justify-start
60
+ `, `
61
+ text-berget-foreground-alt
62
+ hover:text-berget-foreground
63
+ `, `
64
+ focus-visible:ring-berget-focus-ring focus-visible:ring-2
65
+ focus-visible:ring-offset-2 focus-visible:ring-offset-berget-tabs-list-bg
66
+ focus-visible:outline-none
67
+ `, `
68
+ disabled:pointer-events-none disabled:opacity-50
69
+ aria-disabled:pointer-events-none aria-disabled:opacity-50
70
+ `, `
71
+ [&_svg]:pointer-events-none [&_svg]:shrink-0
72
+ [&_svg:not([class*=size-])]:size-4
73
+ `, "after:hidden"), {
74
+ variants: { variant: {
75
+ default: require_utils.cn(`
76
+ group-data-[variant=default]/tabs-list:data-active:bg-berget-tabs-trigger-active-bg
77
+ group-data-[variant=default]/tabs-list:data-active:text-berget-tabs-trigger-active-fg
78
+ group-data-[variant=default]/tabs-list:data-active:shadow-berget-sm
79
+ `),
80
+ line: require_utils.cn(`
81
+ group-data-[variant=line]/tabs-list:bg-transparent
82
+ group-data-[variant=line]/tabs-list:hover:bg-berget-surface-hover
83
+ group-data-[variant=line]/tabs-list:data-active:bg-transparent
84
+ group-data-[variant=line]/tabs-list:data-active:text-berget-foreground
85
+ `)
86
+ } },
87
+ defaultVariants: { variant: "default" }
88
+ });
89
+ const TabsTrigger = react.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_tabs.TabsTrigger, {
90
+ ref,
91
+ className: require_utils.cn(tabsTriggerVariants({ variant }), className),
92
+ ...props
93
+ }));
94
+ TabsTrigger.displayName = "TabsTrigger";
95
+ const TabsContent = react.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_tabs.TabsContent, {
96
+ ref,
97
+ className: require_utils.cn("flex-1 text-sm text-berget-foreground outline-none", className),
98
+ ...props
99
+ }));
100
+ TabsContent.displayName = "TabsContent";
101
+ //#endregion
102
+ exports.Tabs = Tabs;
103
+ exports.TabsContent = TabsContent;
104
+ exports.TabsList = TabsList;
105
+ exports.TabsTrigger = TabsTrigger;
106
+ exports.tabsListVariants = tabsListVariants;
107
+ exports.tabsTriggerVariants = tabsTriggerVariants;
108
+
109
+ //# sourceMappingURL=Tabs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.cjs","names":["TabsBaseUI","React","TabsPrimitive","cva","cn","TabsListPrimitive","TabsTriggerPrimitive","TabsContentPrimitive"],"sources":["../../../src/components/tabs/Tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Tabs as TabsBaseUI } from '@base-ui/react/tabs';\n\nimport { cn } from '../../lib/utils';\nimport {\n Tabs as TabsPrimitive,\n TabsList as TabsListPrimitive,\n TabsTrigger as TabsTriggerPrimitive,\n TabsContent as TabsContentPrimitive,\n} from '../../primitives/tabs';\n\nconst TabsIndicatorPrimitive = TabsBaseUI.Indicator;\ntype TabsRootProps = React.ComponentProps<typeof TabsPrimitive>;\ntype TabsListPrimitiveProps = React.ComponentProps<typeof TabsListPrimitive>;\ntype TabsTabProps = React.ComponentProps<typeof TabsTriggerPrimitive>;\ntype TabsPanelProps = React.ComponentProps<typeof TabsContentPrimitive>;\n\n/* ------------------------------------------------------------------ */\n/* Root — thin pass-through, Berget gap only */\n/* ------------------------------------------------------------------ */\n\nconst Tabs = React.forwardRef<\n HTMLDivElement,\n Omit<TabsRootProps, 'className'> & {\n className?: string;\n }\n>(({ className, ...props }, ref) => <TabsPrimitive ref={ref} className={className} {...props} />);\nTabs.displayName = 'Tabs';\n\n/* ------------------------------------------------------------------ */\n/* List — Berget tokens + the sliding Indicator for the line variant */\n/* ------------------------------------------------------------------ */\n\nconst tabsListVariants = cva(\n cn(\n `\n group/tabs-list inline-flex w-fit items-center justify-center\n rounded-berget-xs p-[3px] text-berget-muted-foreground\n `,\n `\n group-data-[orientation=horizontal]/tabs:h-9\n group-data-[orientation=vertical]/tabs:h-fit\n group-data-[orientation=vertical]/tabs:flex-col\n `,\n ),\n {\n variants: {\n variant: {\n // Pill / segmented control: recessed track.\n default: 'bg-berget-tabs-list-bg',\n // Underline: transparent track; the Indicator is the underline.\n line: 'relative gap-2 rounded-berget-none bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype TabsListProps = Omit<TabsListPrimitiveProps, 'className'> &\n VariantProps<typeof tabsListVariants> & {\n className?: string;\n };\n\nconst TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, variant = 'default', children, ...props }, ref) => (\n <TabsListPrimitive\n ref={ref}\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n >\n {children}\n {/* Animated sliding underline — rendered only for the line variant. */}\n {variant === 'line' && (\n <TabsIndicatorPrimitive\n className={cn(\n `\n pointer-events-none absolute z-10 block rounded-berget-full\n bg-berget-tabs-line-indicator transition-[left,top,width,height]\n duration-200 ease-out\n `,\n `\n group-data-[orientation=horizontal]/tabs:bottom-0\n group-data-[orientation=horizontal]/tabs:left-(--active-tab-left)\n group-data-[orientation=horizontal]/tabs:h-0.5\n group-data-[orientation=horizontal]/tabs:w-(--active-tab-width)\n `,\n `\n group-data-[orientation=vertical]/tabs:top-(--active-tab-top)\n group-data-[orientation=vertical]/tabs:left-0\n group-data-[orientation=vertical]/tabs:h-(--active-tab-height)\n group-data-[orientation=vertical]/tabs:w-0.5\n `,\n )}\n />\n )}\n </TabsListPrimitive>\n ),\n);\nTabsList.displayName = 'TabsList';\n\n/* ------------------------------------------------------------------ */\n/* Trigger — Berget-brand active/hover states */\n/* ------------------------------------------------------------------ */\n\nconst tabsTriggerVariants = cva(\n cn(\n `\n relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center\n gap-1.5 rounded-berget-xs border border-transparent px-3 py-1.5 text-sm\n font-medium whitespace-nowrap transition-all\n `,\n `\n group-data-[orientation=vertical]/tabs:w-full\n group-data-[orientation=vertical]/tabs:justify-start\n `,\n // Inactive: dimmed foreground.\n `\n text-berget-foreground-alt\n hover:text-berget-foreground\n `,\n // Focus.\n `\n focus-visible:ring-berget-focus-ring focus-visible:ring-2\n focus-visible:ring-offset-2 focus-visible:ring-offset-berget-tabs-list-bg\n focus-visible:outline-none\n `,\n // Disabled.\n `\n disabled:pointer-events-none disabled:opacity-50\n aria-disabled:pointer-events-none aria-disabled:opacity-50\n `,\n // Icons sized by the component, no manual sizing classes.\n `\n [&_svg]:pointer-events-none [&_svg]:shrink-0\n [&_svg:not([class*=size-])]:size-4\n `,\n // Hide the primitive's line-variant underline — Berget uses the sliding Indicator.\n 'after:hidden',\n ),\n {\n variants: {\n variant: {\n // Pill: active trigger lifts to the background surface.\n default: cn(\n `\n group-data-[variant=default]/tabs-list:data-active:bg-berget-tabs-trigger-active-bg\n group-data-[variant=default]/tabs-list:data-active:text-berget-tabs-trigger-active-fg\n group-data-[variant=default]/tabs-list:data-active:shadow-berget-sm\n `,\n ),\n // Underline: transparent trigger; the list's Indicator is the cue.\n line: cn(\n `\n group-data-[variant=line]/tabs-list:bg-transparent\n group-data-[variant=line]/tabs-list:hover:bg-berget-surface-hover\n group-data-[variant=line]/tabs-list:data-active:bg-transparent\n group-data-[variant=line]/tabs-list:data-active:text-berget-foreground\n `,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype TabsTriggerProps = Omit<TabsTabProps, 'className'> &\n VariantProps<typeof tabsTriggerVariants> & {\n className?: string;\n };\n\nconst TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, variant, ...props }, ref) => (\n <TabsTriggerPrimitive\n ref={ref}\n className={cn(tabsTriggerVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nTabsTrigger.displayName = 'TabsTrigger';\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n Omit<TabsPanelProps, 'className'> & { className?: string }\n>(({ className, ...props }, ref) => (\n <TabsContentPrimitive\n ref={ref}\n className={cn('flex-1 text-sm text-berget-foreground outline-none', className)}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n\n/* ------------------------------------------------------------------ */\n/* Exports */\n/* ------------------------------------------------------------------ */\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants, tabsTriggerVariants };\n"],"mappings":";;;;;;;;;AAeA,MAAM,yB,6BAAyBA,CAAAA,CAAAA,KAAW;AAU1C,MAAM,OAAOC,MAAM,YAKhB,EAAE,WAAW,GAAG,SAAS,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,MAAD;CAAoB;CAAgB;CAAW,GAAI;AAAQ,CAAA,CAAC;AAChG,KAAK,cAAc;AAMnB,MAAM,oBAAA,GAAmBC,yBAAAA,IAAAA,CACvBC,cAAAA,GACE;;;OAIA;;;;KAKF,GACA;CACE,UAAU,EACR,SAAS;EAEP,SAAS;EAET,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAOA,MAAM,WAAWH,MAAM,YACpB,EAAE,WAAW,UAAU,WAAW,UAAU,GAAG,SAAS,QACvD,iBAAA,GAAA,kBAAA,KAAA,CAACI,aAAAA,UAAD;CACO;CACL,gBAAc;CACd,WAAWD,cAAAA,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;CACtD,GAAI;CAJN,UAAA,CAMG,UAEA,YAAY,UACX,iBAAA,GAAA,kBAAA,IAAA,CAAC,wBAAD,EACE,WAAWA,cAAAA,GACT;;;;eAKA;;;;;eAMA;;;;;aAMF,EACD,CAAA,CAEc;AAEvB,CAAA,CAAA;AACA,SAAS,cAAc;AAMvB,MAAM,uBAAA,GAAsBD,yBAAAA,IAAAA,CAC1BC,cAAAA,GACE;;;;OAKA;;;OAKA;;;OAKA;;;;OAMA;;;OAKA;;;OAKA,cACF,GACA;CACE,UAAU,EACR,SAAS;EAEP,SAASA,cAAAA,GACP;;;;WAKF;EAEA,MAAMA,cAAAA,GACJ;;;;;WAMF;CACF,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAOA,MAAM,cAAcH,MAAM,YACvB,EAAE,WAAW,SAAS,GAAG,SAAS,QACjC,iBAAA,GAAA,kBAAA,IAAA,CAACK,aAAAA,aAAD;CACO;CACL,WAAWF,cAAAA,GAAG,oBAAoB,EAAE,QAAQ,CAAC,GAAG,SAAS;CACzD,GAAI;AACL,CAAA,CAEL;AACA,YAAY,cAAc;AAM1B,MAAM,cAAcH,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,IAAA,CAACM,aAAAA,aAAD;CACO;CACL,WAAWH,cAAAA,GAAG,sDAAsD,SAAS;CAC7E,GAAI;AACL,CAAA,CACF;AACD,YAAY,cAAc"}
@@ -0,0 +1,29 @@
1
+ import { TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "../../primitives/tabs.cjs";
2
+ import * as React from "react";
3
+ import { VariantProps } from "class-variance-authority";
4
+ //#region src/components/tabs/Tabs.d.ts
5
+ type TabsListPrimitiveProps = React.ComponentProps<typeof TabsList$1>;
6
+ type TabsTabProps = React.ComponentProps<typeof TabsTrigger$1>;
7
+ declare const Tabs: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsRootProps, "className"> & {
8
+ className?: string;
9
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const tabsListVariants: (props?: ({
11
+ variant?: "line" | "default" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ type TabsListProps = Omit<TabsListPrimitiveProps, 'className'> & VariantProps<typeof tabsListVariants> & {
14
+ className?: string;
15
+ };
16
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ declare const tabsTriggerVariants: (props?: ({
18
+ variant?: "line" | "default" | null | undefined;
19
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
20
+ type TabsTriggerProps = Omit<TabsTabProps, 'className'> & VariantProps<typeof tabsTriggerVariants> & {
21
+ className?: string;
22
+ };
23
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<TabsTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
24
+ declare const TabsContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsPanelProps, "className"> & {
25
+ className?: string;
26
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
27
+ //#endregion
28
+ export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };
29
+ //# sourceMappingURL=Tabs.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.cts","names":["TabsListPrimitive","TabsTriggerPrimitive"],"sources":["../../../src/components/tabs/Tabs.tsx"],"mappings":";;;;KAiBK,yBAAyB,MAAM,sBAAsBA;KACrD,eAAe,MAAM,sBAAsBC;cAO1C,MAAI,MAAA,0BAAA,KAAA,8BAAA;EAGM;YAEiF,MAAA,cAAA;cAO3F,mBAAgB;;6CAyBrB;KAEI,gBAAgB,KAAK,uCACxB,oBAAoB;EAClB;;cAGE,UAAQ,MAAA,0BAAA,KAAA,wBAAA,MAAA,cAAA;cA0CR,sBAAmB;;6CA6DxB;KAEI,mBAAmB,KAAK,6BAC3B,oBAAoB;EAClB;;cAGE,aAAW,MAAA,0BAAA,KAAA,2BAAA,MAAA,cAAA;cAeX,aAAW,MAAA,0BAAA,KAAA,8BAAA;EAEmC;YAOlD,MAAA,cAAA"}
@@ -0,0 +1,29 @@
1
+ import { TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "../../primitives/tabs.mjs";
2
+ import * as React from "react";
3
+ import { VariantProps } from "class-variance-authority";
4
+ //#region src/components/tabs/Tabs.d.ts
5
+ type TabsListPrimitiveProps = React.ComponentProps<typeof TabsList$1>;
6
+ type TabsTabProps = React.ComponentProps<typeof TabsTrigger$1>;
7
+ declare const Tabs: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsRootProps, "className"> & {
8
+ className?: string;
9
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ declare const tabsListVariants: (props?: ({
11
+ variant?: "line" | "default" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ type TabsListProps = Omit<TabsListPrimitiveProps, 'className'> & VariantProps<typeof tabsListVariants> & {
14
+ className?: string;
15
+ };
16
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
+ declare const tabsTriggerVariants: (props?: ({
18
+ variant?: "line" | "default" | null | undefined;
19
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
20
+ type TabsTriggerProps = Omit<TabsTabProps, 'className'> & VariantProps<typeof tabsTriggerVariants> & {
21
+ className?: string;
22
+ };
23
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<TabsTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
24
+ declare const TabsContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").TabsPanelProps, "className"> & {
25
+ className?: string;
26
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
27
+ //#endregion
28
+ export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };
29
+ //# sourceMappingURL=Tabs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.mts","names":["TabsListPrimitive","TabsTriggerPrimitive"],"sources":["../../../src/components/tabs/Tabs.tsx"],"mappings":";;;;KAiBK,yBAAyB,MAAM,sBAAsBA;KACrD,eAAe,MAAM,sBAAsBC;cAO1C,MAAI,MAAA,0BAAA,KAAA,8BAAA;EAGM;YAEiF,MAAA,cAAA;cAO3F,mBAAgB;;6CAyBrB;KAEI,gBAAgB,KAAK,uCACxB,oBAAoB;EAClB;;cAGE,UAAQ,MAAA,0BAAA,KAAA,wBAAA,MAAA,cAAA;cA0CR,sBAAmB;;6CA6DxB;KAEI,mBAAmB,KAAK,6BAC3B,oBAAoB;EAClB;;cAGE,aAAW,MAAA,0BAAA,KAAA,2BAAA,MAAA,cAAA;cAeX,aAAW,MAAA,0BAAA,KAAA,8BAAA;EAEmC;YAOlD,MAAA,cAAA"}
@@ -0,0 +1,103 @@
1
+ "use client";
2
+ import { cn } from "../../lib/utils.mjs";
3
+ import { Tabs as Tabs$2, TabsContent as TabsContent$1, TabsList as TabsList$1, TabsTrigger as TabsTrigger$1 } from "../../primitives/tabs.mjs";
4
+ import * as React from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { cva } from "class-variance-authority";
7
+ import { Tabs } from "@base-ui/react/tabs";
8
+ //#region src/components/tabs/Tabs.tsx
9
+ const TabsIndicatorPrimitive = Tabs.Indicator;
10
+ const Tabs$1 = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Tabs$2, {
11
+ ref,
12
+ className,
13
+ ...props
14
+ }));
15
+ Tabs$1.displayName = "Tabs";
16
+ const tabsListVariants = cva(cn(`
17
+ group/tabs-list inline-flex w-fit items-center justify-center
18
+ rounded-berget-xs p-[3px] text-berget-muted-foreground
19
+ `, `
20
+ group-data-[orientation=horizontal]/tabs:h-9
21
+ group-data-[orientation=vertical]/tabs:h-fit
22
+ group-data-[orientation=vertical]/tabs:flex-col
23
+ `), {
24
+ variants: { variant: {
25
+ default: "bg-berget-tabs-list-bg",
26
+ line: "relative gap-2 rounded-berget-none bg-transparent"
27
+ } },
28
+ defaultVariants: { variant: "default" }
29
+ });
30
+ const TabsList = React.forwardRef(({ className, variant = "default", children, ...props }, ref) => /* @__PURE__ */ jsxs(TabsList$1, {
31
+ ref,
32
+ "data-variant": variant,
33
+ className: cn(tabsListVariants({ variant }), className),
34
+ ...props,
35
+ children: [children, variant === "line" && /* @__PURE__ */ jsx(TabsIndicatorPrimitive, { className: cn(`
36
+ pointer-events-none absolute z-10 block rounded-berget-full
37
+ bg-berget-tabs-line-indicator transition-[left,top,width,height]
38
+ duration-200 ease-out
39
+ `, `
40
+ group-data-[orientation=horizontal]/tabs:bottom-0
41
+ group-data-[orientation=horizontal]/tabs:left-(--active-tab-left)
42
+ group-data-[orientation=horizontal]/tabs:h-0.5
43
+ group-data-[orientation=horizontal]/tabs:w-(--active-tab-width)
44
+ `, `
45
+ group-data-[orientation=vertical]/tabs:top-(--active-tab-top)
46
+ group-data-[orientation=vertical]/tabs:left-0
47
+ group-data-[orientation=vertical]/tabs:h-(--active-tab-height)
48
+ group-data-[orientation=vertical]/tabs:w-0.5
49
+ `) })]
50
+ }));
51
+ TabsList.displayName = "TabsList";
52
+ const tabsTriggerVariants = cva(cn(`
53
+ relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center
54
+ gap-1.5 rounded-berget-xs border border-transparent px-3 py-1.5 text-sm
55
+ font-medium whitespace-nowrap transition-all
56
+ `, `
57
+ group-data-[orientation=vertical]/tabs:w-full
58
+ group-data-[orientation=vertical]/tabs:justify-start
59
+ `, `
60
+ text-berget-foreground-alt
61
+ hover:text-berget-foreground
62
+ `, `
63
+ focus-visible:ring-berget-focus-ring focus-visible:ring-2
64
+ focus-visible:ring-offset-2 focus-visible:ring-offset-berget-tabs-list-bg
65
+ focus-visible:outline-none
66
+ `, `
67
+ disabled:pointer-events-none disabled:opacity-50
68
+ aria-disabled:pointer-events-none aria-disabled:opacity-50
69
+ `, `
70
+ [&_svg]:pointer-events-none [&_svg]:shrink-0
71
+ [&_svg:not([class*=size-])]:size-4
72
+ `, "after:hidden"), {
73
+ variants: { variant: {
74
+ default: cn(`
75
+ group-data-[variant=default]/tabs-list:data-active:bg-berget-tabs-trigger-active-bg
76
+ group-data-[variant=default]/tabs-list:data-active:text-berget-tabs-trigger-active-fg
77
+ group-data-[variant=default]/tabs-list:data-active:shadow-berget-sm
78
+ `),
79
+ line: cn(`
80
+ group-data-[variant=line]/tabs-list:bg-transparent
81
+ group-data-[variant=line]/tabs-list:hover:bg-berget-surface-hover
82
+ group-data-[variant=line]/tabs-list:data-active:bg-transparent
83
+ group-data-[variant=line]/tabs-list:data-active:text-berget-foreground
84
+ `)
85
+ } },
86
+ defaultVariants: { variant: "default" }
87
+ });
88
+ const TabsTrigger = React.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx(TabsTrigger$1, {
89
+ ref,
90
+ className: cn(tabsTriggerVariants({ variant }), className),
91
+ ...props
92
+ }));
93
+ TabsTrigger.displayName = "TabsTrigger";
94
+ const TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(TabsContent$1, {
95
+ ref,
96
+ className: cn("flex-1 text-sm text-berget-foreground outline-none", className),
97
+ ...props
98
+ }));
99
+ TabsContent.displayName = "TabsContent";
100
+ //#endregion
101
+ export { Tabs$1 as Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };
102
+
103
+ //# sourceMappingURL=Tabs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.mjs","names":["TabsBaseUI","Tabs","TabsPrimitive","TabsListPrimitive","TabsTriggerPrimitive","TabsContentPrimitive"],"sources":["../../../src/components/tabs/Tabs.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Tabs as TabsBaseUI } from '@base-ui/react/tabs';\n\nimport { cn } from '../../lib/utils';\nimport {\n Tabs as TabsPrimitive,\n TabsList as TabsListPrimitive,\n TabsTrigger as TabsTriggerPrimitive,\n TabsContent as TabsContentPrimitive,\n} from '../../primitives/tabs';\n\nconst TabsIndicatorPrimitive = TabsBaseUI.Indicator;\ntype TabsRootProps = React.ComponentProps<typeof TabsPrimitive>;\ntype TabsListPrimitiveProps = React.ComponentProps<typeof TabsListPrimitive>;\ntype TabsTabProps = React.ComponentProps<typeof TabsTriggerPrimitive>;\ntype TabsPanelProps = React.ComponentProps<typeof TabsContentPrimitive>;\n\n/* ------------------------------------------------------------------ */\n/* Root — thin pass-through, Berget gap only */\n/* ------------------------------------------------------------------ */\n\nconst Tabs = React.forwardRef<\n HTMLDivElement,\n Omit<TabsRootProps, 'className'> & {\n className?: string;\n }\n>(({ className, ...props }, ref) => <TabsPrimitive ref={ref} className={className} {...props} />);\nTabs.displayName = 'Tabs';\n\n/* ------------------------------------------------------------------ */\n/* List — Berget tokens + the sliding Indicator for the line variant */\n/* ------------------------------------------------------------------ */\n\nconst tabsListVariants = cva(\n cn(\n `\n group/tabs-list inline-flex w-fit items-center justify-center\n rounded-berget-xs p-[3px] text-berget-muted-foreground\n `,\n `\n group-data-[orientation=horizontal]/tabs:h-9\n group-data-[orientation=vertical]/tabs:h-fit\n group-data-[orientation=vertical]/tabs:flex-col\n `,\n ),\n {\n variants: {\n variant: {\n // Pill / segmented control: recessed track.\n default: 'bg-berget-tabs-list-bg',\n // Underline: transparent track; the Indicator is the underline.\n line: 'relative gap-2 rounded-berget-none bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype TabsListProps = Omit<TabsListPrimitiveProps, 'className'> &\n VariantProps<typeof tabsListVariants> & {\n className?: string;\n };\n\nconst TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, variant = 'default', children, ...props }, ref) => (\n <TabsListPrimitive\n ref={ref}\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...props}\n >\n {children}\n {/* Animated sliding underline — rendered only for the line variant. */}\n {variant === 'line' && (\n <TabsIndicatorPrimitive\n className={cn(\n `\n pointer-events-none absolute z-10 block rounded-berget-full\n bg-berget-tabs-line-indicator transition-[left,top,width,height]\n duration-200 ease-out\n `,\n `\n group-data-[orientation=horizontal]/tabs:bottom-0\n group-data-[orientation=horizontal]/tabs:left-(--active-tab-left)\n group-data-[orientation=horizontal]/tabs:h-0.5\n group-data-[orientation=horizontal]/tabs:w-(--active-tab-width)\n `,\n `\n group-data-[orientation=vertical]/tabs:top-(--active-tab-top)\n group-data-[orientation=vertical]/tabs:left-0\n group-data-[orientation=vertical]/tabs:h-(--active-tab-height)\n group-data-[orientation=vertical]/tabs:w-0.5\n `,\n )}\n />\n )}\n </TabsListPrimitive>\n ),\n);\nTabsList.displayName = 'TabsList';\n\n/* ------------------------------------------------------------------ */\n/* Trigger — Berget-brand active/hover states */\n/* ------------------------------------------------------------------ */\n\nconst tabsTriggerVariants = cva(\n cn(\n `\n relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center\n gap-1.5 rounded-berget-xs border border-transparent px-3 py-1.5 text-sm\n font-medium whitespace-nowrap transition-all\n `,\n `\n group-data-[orientation=vertical]/tabs:w-full\n group-data-[orientation=vertical]/tabs:justify-start\n `,\n // Inactive: dimmed foreground.\n `\n text-berget-foreground-alt\n hover:text-berget-foreground\n `,\n // Focus.\n `\n focus-visible:ring-berget-focus-ring focus-visible:ring-2\n focus-visible:ring-offset-2 focus-visible:ring-offset-berget-tabs-list-bg\n focus-visible:outline-none\n `,\n // Disabled.\n `\n disabled:pointer-events-none disabled:opacity-50\n aria-disabled:pointer-events-none aria-disabled:opacity-50\n `,\n // Icons sized by the component, no manual sizing classes.\n `\n [&_svg]:pointer-events-none [&_svg]:shrink-0\n [&_svg:not([class*=size-])]:size-4\n `,\n // Hide the primitive's line-variant underline — Berget uses the sliding Indicator.\n 'after:hidden',\n ),\n {\n variants: {\n variant: {\n // Pill: active trigger lifts to the background surface.\n default: cn(\n `\n group-data-[variant=default]/tabs-list:data-active:bg-berget-tabs-trigger-active-bg\n group-data-[variant=default]/tabs-list:data-active:text-berget-tabs-trigger-active-fg\n group-data-[variant=default]/tabs-list:data-active:shadow-berget-sm\n `,\n ),\n // Underline: transparent trigger; the list's Indicator is the cue.\n line: cn(\n `\n group-data-[variant=line]/tabs-list:bg-transparent\n group-data-[variant=line]/tabs-list:hover:bg-berget-surface-hover\n group-data-[variant=line]/tabs-list:data-active:bg-transparent\n group-data-[variant=line]/tabs-list:data-active:text-berget-foreground\n `,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype TabsTriggerProps = Omit<TabsTabProps, 'className'> &\n VariantProps<typeof tabsTriggerVariants> & {\n className?: string;\n };\n\nconst TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, variant, ...props }, ref) => (\n <TabsTriggerPrimitive\n ref={ref}\n className={cn(tabsTriggerVariants({ variant }), className)}\n {...props}\n />\n ),\n);\nTabsTrigger.displayName = 'TabsTrigger';\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\nconst TabsContent = React.forwardRef<\n HTMLDivElement,\n Omit<TabsPanelProps, 'className'> & { className?: string }\n>(({ className, ...props }, ref) => (\n <TabsContentPrimitive\n ref={ref}\n className={cn('flex-1 text-sm text-berget-foreground outline-none', className)}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n\n/* ------------------------------------------------------------------ */\n/* Exports */\n/* ------------------------------------------------------------------ */\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants, tabsTriggerVariants };\n"],"mappings":";;;;;;;;AAeA,MAAM,yBAAyBA,KAAW;AAU1C,MAAMC,SAAO,MAAM,YAKhB,EAAE,WAAW,GAAG,SAAS,QAAQ,oBAACC,QAAD;CAAoB;CAAgB;CAAW,GAAI;AAAQ,CAAA,CAAC;AAChG,OAAK,cAAc;AAMnB,MAAM,mBAAmB,IACvB,GACE;;;OAIA;;;;KAKF,GACA;CACE,UAAU,EACR,SAAS;EAEP,SAAS;EAET,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAOA,MAAM,WAAW,MAAM,YACpB,EAAE,WAAW,UAAU,WAAW,UAAU,GAAG,SAAS,QACvD,qBAACC,YAAD;CACO;CACL,gBAAc;CACd,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS;CACtD,GAAI;CAJN,UAAA,CAMG,UAEA,YAAY,UACX,oBAAC,wBAAD,EACE,WAAW,GACT;;;;eAKA;;;;;eAMA;;;;;aAMF,EACD,CAAA,CAEc;AAEvB,CAAA,CAAA;AACA,SAAS,cAAc;AAMvB,MAAM,sBAAsB,IAC1B,GACE;;;;OAKA;;;OAKA;;;OAKA;;;;OAMA;;;OAKA;;;OAKA,cACF,GACA;CACE,UAAU,EACR,SAAS;EAEP,SAAS,GACP;;;;WAKF;EAEA,MAAM,GACJ;;;;;WAMF;CACF,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAOA,MAAM,cAAc,MAAM,YACvB,EAAE,WAAW,SAAS,GAAG,SAAS,QACjC,oBAACC,eAAD;CACO;CACL,WAAW,GAAG,oBAAoB,EAAE,QAAQ,CAAC,GAAG,SAAS;CACzD,GAAI;AACL,CAAA,CAEL;AACA,YAAY,cAAc;AAM1B,MAAM,cAAc,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAACC,eAAD;CACO;CACL,WAAW,GAAG,sDAAsD,SAAS;CAC7E,GAAI;AACL,CAAA,CACF;AACD,YAAY,cAAc"}
@@ -0,0 +1,2 @@
1
+ import { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from "./Tabs.cjs";
2
+ export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };
@@ -0,0 +1,2 @@
1
+ import { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from "./Tabs.mjs";
2
+ export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants };