@bergetai/ui 0.8.0 → 0.10.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.
- package/README.md +1 -1
- package/dist/index.cjs +114 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -61
- package/dist/index.d.ts +4 -61
- package/dist/index.js +114 -76
- package/dist/index.js.map +1 -1
- package/dist/styles/index.css +168 -20
- package/package.json +2 -1
package/dist/index.d.cts
CHANGED
|
@@ -45,7 +45,7 @@ declare const buttonVariants: (props?: ({
|
|
|
45
45
|
declare function Button$1({ className, variant, size, ...props }: Button$2.Props & VariantProps<typeof buttonVariants>): react_jsx_runtime.JSX.Element;
|
|
46
46
|
|
|
47
47
|
/** Variants exposed by the Berget wrapper. */
|
|
48
|
-
type CustomVariant = 'default' | 'primary' | 'destructive' | '
|
|
48
|
+
type CustomVariant = 'default' | 'primary' | 'destructive' | 'link';
|
|
49
49
|
/** Props for the Berget Button wrapper. */
|
|
50
50
|
interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'variant' | 'ref'> {
|
|
51
51
|
/** Visual style variant. `primary` is Berget-specific. */
|
|
@@ -59,8 +59,8 @@ interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'var
|
|
|
59
59
|
declare function Button({ className, variant, size, asChild, width, type, ref, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
|
|
60
60
|
|
|
61
61
|
declare const typographyVariants: (props?: ({
|
|
62
|
-
variant?: "small" | "xs" | "body" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "large" | "mono" | null | undefined;
|
|
63
|
-
color?: "default" | "muted" | "dim" | null | undefined;
|
|
62
|
+
variant?: "small" | "caption" | "xs" | "body" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "hero" | "large" | "mono" | null | undefined;
|
|
63
|
+
color?: "default" | "primary" | "muted" | "dim" | null | undefined;
|
|
64
64
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
65
65
|
interface TypographyProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'color'>, VariantProps<typeof typographyVariants> {
|
|
66
66
|
as?: React$1.ElementType;
|
|
@@ -605,63 +605,6 @@ interface FeatureListProps extends React$1.HTMLAttributes<HTMLUListElement> {
|
|
|
605
605
|
}
|
|
606
606
|
declare const FeatureList: React$1.ForwardRefExoticComponent<FeatureListProps & React$1.RefAttributes<HTMLUListElement>>;
|
|
607
607
|
|
|
608
|
-
interface HeroBlockProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
609
|
-
/**
|
|
610
|
-
* Optional icon for the tagline badge
|
|
611
|
-
*/
|
|
612
|
-
taglineIcon?: LucideIcon;
|
|
613
|
-
/**
|
|
614
|
-
* Tagline text (appears in badge)
|
|
615
|
-
*/
|
|
616
|
-
tagline?: string;
|
|
617
|
-
/**
|
|
618
|
-
* Main hero title
|
|
619
|
-
*/
|
|
620
|
-
title: string;
|
|
621
|
-
/**
|
|
622
|
-
* Hero description
|
|
623
|
-
*/
|
|
624
|
-
description: string;
|
|
625
|
-
/**
|
|
626
|
-
* Call-to-action buttons
|
|
627
|
-
*/
|
|
628
|
-
actions?: React$1.ReactNode;
|
|
629
|
-
}
|
|
630
|
-
/**
|
|
631
|
-
* Hero Block Component
|
|
632
|
-
*
|
|
633
|
-
* Full-width hero section with optional tagline, title, description, and CTAs.
|
|
634
|
-
* Based on the pattern from why-berget and other landing pages.
|
|
635
|
-
*
|
|
636
|
-
* **Features:**
|
|
637
|
-
* - Tagline badge with optional icon
|
|
638
|
-
* - Responsive sizing
|
|
639
|
-
* - CTA button slots
|
|
640
|
-
*
|
|
641
|
-
* **Use Cases:**
|
|
642
|
-
* - Page heroes
|
|
643
|
-
* - Landing page intros
|
|
644
|
-
* - Feature announcements
|
|
645
|
-
* - Product showcases
|
|
646
|
-
*
|
|
647
|
-
* @example
|
|
648
|
-
* ```tsx
|
|
649
|
-
* <HeroBlock
|
|
650
|
-
* tagline="Built for Europe"
|
|
651
|
-
* taglineIcon={Shield}
|
|
652
|
-
* title="European AI Infrastructure"
|
|
653
|
-
* description="Deploy and scale AI models with data residency in Europe"
|
|
654
|
-
* actions={
|
|
655
|
-
* <>
|
|
656
|
-
* <Button size="lg" variant="primary">Get Started</Button>
|
|
657
|
-
* <Button size="lg" variant="outline">Learn More</Button>
|
|
658
|
-
* </>
|
|
659
|
-
* }
|
|
660
|
-
* />
|
|
661
|
-
* ```
|
|
662
|
-
*/
|
|
663
|
-
declare const HeroBlock: React$1.ForwardRefExoticComponent<HeroBlockProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
664
|
-
|
|
665
608
|
interface CodeBlockProps {
|
|
666
609
|
code: string;
|
|
667
610
|
language?: string;
|
|
@@ -729,4 +672,4 @@ interface FogIllustrationProps {
|
|
|
729
672
|
}
|
|
730
673
|
declare const FogIllustration: ({ palette, speed, className }: FogIllustrationProps) => react_jsx_runtime.JSX.Element;
|
|
731
674
|
|
|
732
|
-
export { Alert, AlertDescription, type AlertDescriptionProps, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTitleProps, Badge, type BadgeProps, BergetLogo, type BergetLogoProps, Box, type BoxProps, type SpacingScale as BoxSpacingScale, Button, type ButtonProps, COUNTRIES, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Container, type ContainerProps, type Country, CountrySelect, type CountrySelectProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EU_COUNTRY_CODES, FOG_BRAND_PALETTE, FeatureList, type FeatureListProps, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FogIllustration, type FogIllustrationProps, type FogPalette, Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale$1 as GridSpacingScale,
|
|
675
|
+
export { Alert, AlertDescription, type AlertDescriptionProps, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTitleProps, Badge, type BadgeProps, BergetLogo, type BergetLogoProps, Box, type BoxProps, type SpacingScale as BoxSpacingScale, Button, type ButtonProps, COUNTRIES, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Container, type ContainerProps, type Country, CountrySelect, type CountrySelectProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EU_COUNTRY_CODES, FOG_BRAND_PALETTE, FeatureList, type FeatureListProps, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FogIllustration, type FogIllustrationProps, type FogPalette, Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale$1 as GridSpacingScale, Icon, type IconProps, Input, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemProps, ItemSeparator, ItemTitle, Label, LanguageSelect, type LanguageSelectOption, type LanguageSelectProps, Link, type LinkProps, List, ListHeader, type ListHeaderProps, ListItem, type ListItemProps, type ListProps, ModelCard, type ModelCardProps, type ModelCategory, type ModelLifecycle, ModelLogo, type ModelLogoProps, type ModelLogoProvider, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, Select, type SelectOption, type SelectProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, type TerminalExample, TextArea, type TextAreaProps, type Theme, ThemeProvider, type ThemeProviderProps, ThemeToggle, type ThemeToggleProps, Typography, type TypographyProps, WindowFrame, type WindowFrameProps, type WindowTab, alertVariants, badgeVariants, boxVariants, buttonVariants, cardVariants, categoryLabels, checkboxVariants, containerVariants, getCountryByCode, getCountryByName, gridVariants, isEUCountry, linkVariants, navigationMenuTriggerStyle, selectVariants, switchRootVariants, switchThumbVariants, textAreaVariants, typographyVariants, useTheme };
|
package/dist/index.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ declare const buttonVariants: (props?: ({
|
|
|
45
45
|
declare function Button$1({ className, variant, size, ...props }: Button$2.Props & VariantProps<typeof buttonVariants>): react_jsx_runtime.JSX.Element;
|
|
46
46
|
|
|
47
47
|
/** Variants exposed by the Berget wrapper. */
|
|
48
|
-
type CustomVariant = 'default' | 'primary' | 'destructive' | '
|
|
48
|
+
type CustomVariant = 'default' | 'primary' | 'destructive' | 'link';
|
|
49
49
|
/** Props for the Berget Button wrapper. */
|
|
50
50
|
interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'variant' | 'ref'> {
|
|
51
51
|
/** Visual style variant. `primary` is Berget-specific. */
|
|
@@ -59,8 +59,8 @@ interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'var
|
|
|
59
59
|
declare function Button({ className, variant, size, asChild, width, type, ref, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
|
|
60
60
|
|
|
61
61
|
declare const typographyVariants: (props?: ({
|
|
62
|
-
variant?: "small" | "xs" | "body" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "large" | "mono" | null | undefined;
|
|
63
|
-
color?: "default" | "muted" | "dim" | null | undefined;
|
|
62
|
+
variant?: "small" | "caption" | "xs" | "body" | "code" | "h1" | "h2" | "h3" | "h4" | "h5" | "hero" | "large" | "mono" | null | undefined;
|
|
63
|
+
color?: "default" | "primary" | "muted" | "dim" | null | undefined;
|
|
64
64
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
65
65
|
interface TypographyProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'color'>, VariantProps<typeof typographyVariants> {
|
|
66
66
|
as?: React$1.ElementType;
|
|
@@ -605,63 +605,6 @@ interface FeatureListProps extends React$1.HTMLAttributes<HTMLUListElement> {
|
|
|
605
605
|
}
|
|
606
606
|
declare const FeatureList: React$1.ForwardRefExoticComponent<FeatureListProps & React$1.RefAttributes<HTMLUListElement>>;
|
|
607
607
|
|
|
608
|
-
interface HeroBlockProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
609
|
-
/**
|
|
610
|
-
* Optional icon for the tagline badge
|
|
611
|
-
*/
|
|
612
|
-
taglineIcon?: LucideIcon;
|
|
613
|
-
/**
|
|
614
|
-
* Tagline text (appears in badge)
|
|
615
|
-
*/
|
|
616
|
-
tagline?: string;
|
|
617
|
-
/**
|
|
618
|
-
* Main hero title
|
|
619
|
-
*/
|
|
620
|
-
title: string;
|
|
621
|
-
/**
|
|
622
|
-
* Hero description
|
|
623
|
-
*/
|
|
624
|
-
description: string;
|
|
625
|
-
/**
|
|
626
|
-
* Call-to-action buttons
|
|
627
|
-
*/
|
|
628
|
-
actions?: React$1.ReactNode;
|
|
629
|
-
}
|
|
630
|
-
/**
|
|
631
|
-
* Hero Block Component
|
|
632
|
-
*
|
|
633
|
-
* Full-width hero section with optional tagline, title, description, and CTAs.
|
|
634
|
-
* Based on the pattern from why-berget and other landing pages.
|
|
635
|
-
*
|
|
636
|
-
* **Features:**
|
|
637
|
-
* - Tagline badge with optional icon
|
|
638
|
-
* - Responsive sizing
|
|
639
|
-
* - CTA button slots
|
|
640
|
-
*
|
|
641
|
-
* **Use Cases:**
|
|
642
|
-
* - Page heroes
|
|
643
|
-
* - Landing page intros
|
|
644
|
-
* - Feature announcements
|
|
645
|
-
* - Product showcases
|
|
646
|
-
*
|
|
647
|
-
* @example
|
|
648
|
-
* ```tsx
|
|
649
|
-
* <HeroBlock
|
|
650
|
-
* tagline="Built for Europe"
|
|
651
|
-
* taglineIcon={Shield}
|
|
652
|
-
* title="European AI Infrastructure"
|
|
653
|
-
* description="Deploy and scale AI models with data residency in Europe"
|
|
654
|
-
* actions={
|
|
655
|
-
* <>
|
|
656
|
-
* <Button size="lg" variant="primary">Get Started</Button>
|
|
657
|
-
* <Button size="lg" variant="outline">Learn More</Button>
|
|
658
|
-
* </>
|
|
659
|
-
* }
|
|
660
|
-
* />
|
|
661
|
-
* ```
|
|
662
|
-
*/
|
|
663
|
-
declare const HeroBlock: React$1.ForwardRefExoticComponent<HeroBlockProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
664
|
-
|
|
665
608
|
interface CodeBlockProps {
|
|
666
609
|
code: string;
|
|
667
610
|
language?: string;
|
|
@@ -729,4 +672,4 @@ interface FogIllustrationProps {
|
|
|
729
672
|
}
|
|
730
673
|
declare const FogIllustration: ({ palette, speed, className }: FogIllustrationProps) => react_jsx_runtime.JSX.Element;
|
|
731
674
|
|
|
732
|
-
export { Alert, AlertDescription, type AlertDescriptionProps, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTitleProps, Badge, type BadgeProps, BergetLogo, type BergetLogoProps, Box, type BoxProps, type SpacingScale as BoxSpacingScale, Button, type ButtonProps, COUNTRIES, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Container, type ContainerProps, type Country, CountrySelect, type CountrySelectProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EU_COUNTRY_CODES, FOG_BRAND_PALETTE, FeatureList, type FeatureListProps, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FogIllustration, type FogIllustrationProps, type FogPalette, Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale$1 as GridSpacingScale,
|
|
675
|
+
export { Alert, AlertDescription, type AlertDescriptionProps, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, type AlertTitleProps, Badge, type BadgeProps, BergetLogo, type BergetLogoProps, Box, type BoxProps, type SpacingScale as BoxSpacingScale, Button, type ButtonProps, COUNTRIES, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CodeBlock, type CodeBlockProps, Container, type ContainerProps, type Country, CountrySelect, type CountrySelectProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EU_COUNTRY_CODES, FOG_BRAND_PALETTE, FeatureList, type FeatureListProps, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FogIllustration, type FogIllustrationProps, type FogPalette, Grid, type GridColsScale, type GridProps, type GridRowsScale, type SpacingScale$1 as GridSpacingScale, Icon, type IconProps, Input, type InputProps, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, type ItemProps, ItemSeparator, ItemTitle, Label, LanguageSelect, type LanguageSelectOption, type LanguageSelectProps, Link, type LinkProps, List, ListHeader, type ListHeaderProps, ListItem, type ListItemProps, type ListProps, ModelCard, type ModelCardProps, type ModelCategory, type ModelLifecycle, ModelLogo, type ModelLogoProps, type ModelLogoProvider, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, Select, type SelectOption, type SelectProps, Switch, type SwitchProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, type TerminalExample, TextArea, type TextAreaProps, type Theme, ThemeProvider, type ThemeProviderProps, ThemeToggle, type ThemeToggleProps, Typography, type TypographyProps, WindowFrame, type WindowFrameProps, type WindowTab, alertVariants, badgeVariants, boxVariants, buttonVariants, cardVariants, categoryLabels, checkboxVariants, containerVariants, getCountryByCode, getCountryByName, gridVariants, isEUCountry, linkVariants, navigationMenuTriggerStyle, selectVariants, switchRootVariants, switchThumbVariants, textAreaVariants, typographyVariants, useTheme };
|
package/dist/index.js
CHANGED
|
@@ -102,7 +102,16 @@ var twMerge = extendTailwindMerge({
|
|
|
102
102
|
"rounded-berget-lg",
|
|
103
103
|
"rounded-berget-full"
|
|
104
104
|
],
|
|
105
|
-
"font-size": [
|
|
105
|
+
"font-size": [
|
|
106
|
+
"text-h1",
|
|
107
|
+
"text-h2",
|
|
108
|
+
"text-h3",
|
|
109
|
+
"text-h4",
|
|
110
|
+
"text-p",
|
|
111
|
+
"text-mono",
|
|
112
|
+
"text-hero",
|
|
113
|
+
"text-caption"
|
|
114
|
+
]
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
117
|
});
|
|
@@ -253,21 +262,72 @@ function Button({
|
|
|
253
262
|
|
|
254
263
|
// src/components/button/Button.tsx
|
|
255
264
|
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
265
|
+
var interactionClasses = cn(
|
|
266
|
+
// Outline-based focus indicator; neutralise the primitive's ring (the
|
|
267
|
+
// ring colour class is left — harmless at width 0).
|
|
268
|
+
"focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-berget-button-focus-ring focus-visible:ring-0",
|
|
269
|
+
// Neutralise the primitive's disabled fade; variants apply their own tokens.
|
|
270
|
+
"disabled:pointer-events-none disabled:opacity-100 disabled:cursor-not-allowed",
|
|
271
|
+
// No press movement: same compound selector as the primitive base's 1px
|
|
272
|
+
// active translate so tailwind-merge strips it down to 0.
|
|
273
|
+
"active:not-aria-[haspopup]:translate-y-0"
|
|
274
|
+
);
|
|
275
|
+
var disabledClasses = "disabled:text-berget-button-disabled-fg disabled:shadow-none";
|
|
256
276
|
function brandVariantClasses(variant) {
|
|
257
277
|
switch (variant) {
|
|
258
278
|
case "primary":
|
|
259
|
-
return
|
|
279
|
+
return cn(
|
|
280
|
+
// Flat tinted-glass fill; the alpha carries the state, so no shadow lift.
|
|
281
|
+
"bg-berget-button-primary-bg text-berget-button-primary-fg",
|
|
282
|
+
"hover:bg-berget-button-primary-hover",
|
|
283
|
+
// Pin the foreground on hover — the underlying primitive ghost adds
|
|
284
|
+
// hover:text-foreground, which would override the primary fg token.
|
|
285
|
+
"hover:text-berget-button-primary-fg",
|
|
286
|
+
"active:bg-berget-button-primary-active",
|
|
287
|
+
// Keep the resting (transparent) border on focus — the outline is the indicator.
|
|
288
|
+
"focus-visible:border-transparent",
|
|
289
|
+
disabledClasses,
|
|
290
|
+
"disabled:bg-berget-button-primary-disabled-bg"
|
|
291
|
+
);
|
|
260
292
|
case "destructive":
|
|
261
|
-
return
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
293
|
+
return cn(
|
|
294
|
+
"bg-berget-button-destructive-bg text-berget-button-destructive-fg",
|
|
295
|
+
"hover:bg-berget-button-destructive-hover",
|
|
296
|
+
// Pin the foreground on hover — the underlying primitive ghost adds
|
|
297
|
+
// hover:text-foreground, which would override the destructive fg token.
|
|
298
|
+
"hover:text-berget-button-destructive-hover-fg",
|
|
299
|
+
"active:bg-berget-button-destructive-active",
|
|
300
|
+
"focus-visible:border-transparent",
|
|
301
|
+
disabledClasses,
|
|
302
|
+
"disabled:bg-berget-button-destructive-disabled-bg"
|
|
303
|
+
);
|
|
266
304
|
case "link":
|
|
267
|
-
return
|
|
305
|
+
return cn(
|
|
306
|
+
"h-auto bg-transparent p-0 text-berget-button-link-fg underline-offset-4 shadow-none",
|
|
307
|
+
"hover:bg-transparent hover:text-berget-button-link-hover-fg",
|
|
308
|
+
// On press, return to the resting foreground (hover fg otherwise sticks).
|
|
309
|
+
"active:text-berget-button-link-fg",
|
|
310
|
+
"focus:bg-transparent",
|
|
311
|
+
// Neutralise the primitive base's focus-visible:border-ring + ring-3,
|
|
312
|
+
// which land on link too (the primitive merges its cva base under
|
|
313
|
+
// every variant): the outline above is the only focus indicator.
|
|
314
|
+
"focus-visible:border-transparent focus-visible:ring-0",
|
|
315
|
+
"focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-berget-button-focus-ring focus-visible:rounded-berget-xs",
|
|
316
|
+
"disabled:text-berget-button-disabled-fg disabled:no-underline",
|
|
317
|
+
"disabled:opacity-100 disabled:cursor-not-allowed"
|
|
318
|
+
);
|
|
268
319
|
case "default":
|
|
269
320
|
default:
|
|
270
|
-
return
|
|
321
|
+
return cn(
|
|
322
|
+
// Solid granite-800 fill with a granite-700 border on dark surfaces
|
|
323
|
+
// (ink glass in light theme).
|
|
324
|
+
"bg-berget-button-default-bg border-berget-button-default-border text-berget-button-default-fg",
|
|
325
|
+
"hover:bg-berget-button-default-hover",
|
|
326
|
+
"active:bg-berget-button-default-active",
|
|
327
|
+
"focus-visible:border-transparent",
|
|
328
|
+
disabledClasses,
|
|
329
|
+
"disabled:bg-berget-button-default-disabled-bg"
|
|
330
|
+
);
|
|
271
331
|
}
|
|
272
332
|
}
|
|
273
333
|
function primitiveVariant(variant) {
|
|
@@ -294,9 +354,16 @@ function Button2({
|
|
|
294
354
|
const isLink = variant === "link";
|
|
295
355
|
const baseClass = cn(
|
|
296
356
|
!isLink && buttonVariants({ variant: primitiveVariant(variant), size }),
|
|
297
|
-
// Berget brand overrides
|
|
298
|
-
|
|
357
|
+
// Berget brand overrides — full-width buttons use the square radius;
|
|
358
|
+
// everything else stays pill-shaped.
|
|
359
|
+
!isLink && (width === "full" ? "rounded-berget-xs" : "rounded-full"),
|
|
360
|
+
// Em-based padding, inline = 2× block — matches the 8px/16px spacing-scale
|
|
361
|
+
// values at the default text-sm (14px) and scales down/up with smaller or
|
|
362
|
+
// larger button text. h-auto drops the primitive's fixed h-* so the
|
|
363
|
+
// vertical paddings take effect.
|
|
364
|
+
!isLink && !isIcon && "py-[0.57em] px-[1.14em] h-auto",
|
|
299
365
|
brandVariantClasses(variant),
|
|
366
|
+
interactionClasses,
|
|
300
367
|
!isLink && width === "full" && "w-full",
|
|
301
368
|
isIcon && "rounded-full shadow-[0px_1px_3px_rgba(0,0,0,0.1),0px_1px_2px_-1px_rgba(0,0,0,0.1)]",
|
|
302
369
|
className
|
|
@@ -324,6 +391,8 @@ var typographyVariants = cva2("", {
|
|
|
324
391
|
variant: {
|
|
325
392
|
// Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)
|
|
326
393
|
h1: "text-h1 font-h1 leading-h1 tracking-h1 text-balance",
|
|
394
|
+
// Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)
|
|
395
|
+
hero: "text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']",
|
|
327
396
|
h2: "text-h2 font-h2 leading-h2 tracking-h2 text-balance",
|
|
328
397
|
h3: "text-h3 font-h3 leading-h3 tracking-h3 text-balance",
|
|
329
398
|
h4: "text-h4 font-h4 leading-h4 tracking-h4 text-balance",
|
|
@@ -334,6 +403,8 @@ var typographyVariants = cva2("", {
|
|
|
334
403
|
body: "text-p font-p leading-p text-pretty",
|
|
335
404
|
small: "text-sm font-sm leading-sm text-pretty",
|
|
336
405
|
xs: "text-xs font-xs leading-xs text-pretty",
|
|
406
|
+
// Caption / overline / eyebrow (DM Sans, Semibold, uppercase)
|
|
407
|
+
caption: "text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase",
|
|
337
408
|
// Monospaced — use @theme token
|
|
338
409
|
mono: "text-mono font-mono leading-mono text-pretty",
|
|
339
410
|
// Inline code / spec labels
|
|
@@ -342,7 +413,8 @@ var typographyVariants = cva2("", {
|
|
|
342
413
|
color: {
|
|
343
414
|
default: "text-berget-foreground",
|
|
344
415
|
muted: "text-berget-muted-foreground",
|
|
345
|
-
dim: "text-berget-foreground/65"
|
|
416
|
+
dim: "text-berget-foreground/65",
|
|
417
|
+
primary: "text-berget-primary"
|
|
346
418
|
}
|
|
347
419
|
},
|
|
348
420
|
defaultVariants: {
|
|
@@ -351,6 +423,7 @@ var typographyVariants = cva2("", {
|
|
|
351
423
|
}
|
|
352
424
|
});
|
|
353
425
|
var defaultElementMap = {
|
|
426
|
+
hero: "h1",
|
|
354
427
|
h1: "h1",
|
|
355
428
|
h2: "h2",
|
|
356
429
|
h3: "h3",
|
|
@@ -360,6 +433,7 @@ var defaultElementMap = {
|
|
|
360
433
|
body: "p",
|
|
361
434
|
small: "p",
|
|
362
435
|
xs: "p",
|
|
436
|
+
caption: "span",
|
|
363
437
|
mono: "p",
|
|
364
438
|
code: "span"
|
|
365
439
|
};
|
|
@@ -397,7 +471,7 @@ function Card({
|
|
|
397
471
|
"data-slot": "card",
|
|
398
472
|
"data-size": size,
|
|
399
473
|
className: cn3(
|
|
400
|
-
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-
|
|
474
|
+
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-berget-xs bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",
|
|
401
475
|
className
|
|
402
476
|
),
|
|
403
477
|
...props
|
|
@@ -466,11 +540,11 @@ function CardFooter({ className, ...props }) {
|
|
|
466
540
|
|
|
467
541
|
// src/components/card/Card.tsx
|
|
468
542
|
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
469
|
-
var cardVariants = cva3("rounded-berget-
|
|
543
|
+
var cardVariants = cva3("rounded-berget-xs ring-0", {
|
|
470
544
|
variants: {
|
|
471
545
|
variant: {
|
|
472
|
-
outlined: "bg-transparent border border-berget-border",
|
|
473
|
-
filled: "bg-berget-card-filled-bg border border-berget-border"
|
|
546
|
+
outlined: "bg-transparent border border-berget-border-subtle",
|
|
547
|
+
filled: "bg-berget-card-filled-bg border border-berget-border-subtle"
|
|
474
548
|
},
|
|
475
549
|
padding: {
|
|
476
550
|
none: "p-0",
|
|
@@ -806,7 +880,7 @@ var ModelCard = React9.forwardRef(
|
|
|
806
880
|
{
|
|
807
881
|
variant: "filled",
|
|
808
882
|
padding: "none",
|
|
809
|
-
className: "relative flex h-full flex-col bg-berget-card-filled-bg p-5 transition-all hover:bg-[color-mix(in_oklab,var(--berget-brand-granite-100)_5%,var(--berget-card-filled-bg))]
|
|
883
|
+
className: "relative flex h-full flex-col bg-berget-card-filled-bg p-5 transition-all hover:bg-[color-mix(in_oklab,var(--berget-brand-granite-100)_5%,var(--berget-card-filled-bg))] sm:p-6",
|
|
810
884
|
children: [
|
|
811
885
|
lifecycle && /* @__PURE__ */ jsx11("div", { className: "absolute top-0 right-0 z-10 overflow-hidden rounded-bl-berget-sm", children: /* @__PURE__ */ jsx11(
|
|
812
886
|
"div",
|
|
@@ -3849,45 +3923,10 @@ var FeatureList = React29.forwardRef(
|
|
|
3849
3923
|
);
|
|
3850
3924
|
FeatureList.displayName = "FeatureList";
|
|
3851
3925
|
|
|
3852
|
-
// src/components/hero-block/HeroBlock.tsx
|
|
3853
|
-
import * as React30 from "react";
|
|
3854
|
-
import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3855
|
-
var HeroBlock = React30.forwardRef(
|
|
3856
|
-
({ className, taglineIcon: TaglineIcon, tagline, title, description, actions, ...props }, ref) => {
|
|
3857
|
-
return /* @__PURE__ */ jsx45(
|
|
3858
|
-
"div",
|
|
3859
|
-
{
|
|
3860
|
-
ref,
|
|
3861
|
-
className: cn(
|
|
3862
|
-
"relative overflow-hidden min-h-[40dvh] flex items-center py-fluid-2xl",
|
|
3863
|
-
className
|
|
3864
|
-
),
|
|
3865
|
-
...props,
|
|
3866
|
-
children: /* @__PURE__ */ jsx45("div", { className: "mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs25("div", { className: "mx-auto text-center max-w-4xl", children: [
|
|
3867
|
-
tagline && /* @__PURE__ */ jsx45(
|
|
3868
|
-
Badge,
|
|
3869
|
-
{
|
|
3870
|
-
variant: "default",
|
|
3871
|
-
icon: TaglineIcon ? /* @__PURE__ */ jsx45(Icon, { icon: TaglineIcon, size: 16 }) : void 0,
|
|
3872
|
-
iconGap: 2,
|
|
3873
|
-
className: "mb-fluid-md",
|
|
3874
|
-
children: tagline
|
|
3875
|
-
}
|
|
3876
|
-
),
|
|
3877
|
-
/* @__PURE__ */ jsx45(Typography, { variant: "h1", className: "mb-fluid-md", children: title }),
|
|
3878
|
-
/* @__PURE__ */ jsx45(Typography, { variant: "h3", color: "muted", className: "mb-fluid-lg", children: description }),
|
|
3879
|
-
actions && /* @__PURE__ */ jsx45("div", { className: "flex flex-wrap gap-fluid-md justify-center", children: actions })
|
|
3880
|
-
] }) })
|
|
3881
|
-
}
|
|
3882
|
-
);
|
|
3883
|
-
}
|
|
3884
|
-
);
|
|
3885
|
-
HeroBlock.displayName = "HeroBlock";
|
|
3886
|
-
|
|
3887
3926
|
// src/components/code-block/CodeBlock.tsx
|
|
3888
3927
|
import { useState as useState3, useEffect as useEffect2, useCallback as useCallback3 } from "react";
|
|
3889
3928
|
import { Copy, Check as Check4 } from "lucide-react";
|
|
3890
|
-
import { jsx as
|
|
3929
|
+
import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3891
3930
|
function CodeBlock({ code, language = "text", title, className }) {
|
|
3892
3931
|
const [html, setHtml] = useState3(null);
|
|
3893
3932
|
const [copied, setCopied] = useState3(false);
|
|
@@ -3903,42 +3942,42 @@ function CodeBlock({ code, language = "text", title, className }) {
|
|
|
3903
3942
|
setCopied(true);
|
|
3904
3943
|
setTimeout(() => setCopied(false), 2e3);
|
|
3905
3944
|
}, [code]);
|
|
3906
|
-
const copyButton = /* @__PURE__ */
|
|
3945
|
+
const copyButton = /* @__PURE__ */ jsx45(
|
|
3907
3946
|
"button",
|
|
3908
3947
|
{
|
|
3909
3948
|
onClick: handleCopy,
|
|
3910
3949
|
className: "flex items-center justify-center w-6 h-6 text-berget-muted-foreground hover:text-berget-foreground transition-colors",
|
|
3911
3950
|
"aria-label": "Copy code",
|
|
3912
|
-
children: copied ? /* @__PURE__ */
|
|
3951
|
+
children: copied ? /* @__PURE__ */ jsx45(Check4, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ jsx45(Copy, { className: "w-3.5 h-3.5" })
|
|
3913
3952
|
}
|
|
3914
3953
|
);
|
|
3915
|
-
return /* @__PURE__ */
|
|
3954
|
+
return /* @__PURE__ */ jsxs25(
|
|
3916
3955
|
"div",
|
|
3917
3956
|
{
|
|
3918
3957
|
className: cn(
|
|
3919
|
-
"rounded-berget-
|
|
3958
|
+
"rounded-berget-xs border bg-berget-codeblock-bg border-berget-border backdrop-blur-[12px] relative overflow-hidden isolate",
|
|
3920
3959
|
className
|
|
3921
3960
|
),
|
|
3922
3961
|
children: [
|
|
3923
|
-
title && /* @__PURE__ */
|
|
3924
|
-
/* @__PURE__ */
|
|
3925
|
-
html ? /* @__PURE__ */
|
|
3962
|
+
title && /* @__PURE__ */ jsx45("div", { className: "!h-10 flex items-center !px-4 !text-xs !leading-normal border-b border-berget-border bg-berget-codeblock-header-bg", children: /* @__PURE__ */ jsx45("span", { className: "text-berget-muted-foreground", children: title }) }),
|
|
3963
|
+
/* @__PURE__ */ jsx45("div", { className: "absolute right-2 top-2 z-10", children: copyButton }),
|
|
3964
|
+
html ? /* @__PURE__ */ jsx45(
|
|
3926
3965
|
"div",
|
|
3927
3966
|
{
|
|
3928
3967
|
className: "[&_.shiki]:!p-4 [&_.shiki]:!m-0 [&_.shiki]:overflow-x-auto [&_.shiki]:!text-sm [&_.shiki]:!leading-relaxed [&_.shiki]:bg-transparent",
|
|
3929
3968
|
dangerouslySetInnerHTML: { __html: html }
|
|
3930
3969
|
}
|
|
3931
|
-
) : /* @__PURE__ */
|
|
3970
|
+
) : /* @__PURE__ */ jsx45("pre", { className: "!p-4 !m-0 overflow-x-auto !text-sm !leading-relaxed text-berget-muted-foreground", children: /* @__PURE__ */ jsx45("code", { children: code }) })
|
|
3932
3971
|
]
|
|
3933
3972
|
}
|
|
3934
3973
|
);
|
|
3935
3974
|
}
|
|
3936
3975
|
|
|
3937
3976
|
// src/components/window-frame/WindowFrame.tsx
|
|
3938
|
-
import * as
|
|
3977
|
+
import * as React30 from "react";
|
|
3939
3978
|
import { useState as useState4 } from "react";
|
|
3940
|
-
import { jsx as
|
|
3941
|
-
var WindowFrame =
|
|
3979
|
+
import { jsx as jsx46, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3980
|
+
var WindowFrame = React30.forwardRef(
|
|
3942
3981
|
({ title = "window", tabs, activeTab, onTabChange, children, className, ...props }, ref) => {
|
|
3943
3982
|
const [internalActive, setInternalActive] = useState4(tabs?.[0]?.id ?? "");
|
|
3944
3983
|
const currentTab = activeTab ?? internalActive;
|
|
@@ -3949,7 +3988,7 @@ var WindowFrame = React31.forwardRef(
|
|
|
3949
3988
|
setInternalActive(id);
|
|
3950
3989
|
}
|
|
3951
3990
|
};
|
|
3952
|
-
return /* @__PURE__ */
|
|
3991
|
+
return /* @__PURE__ */ jsxs26(
|
|
3953
3992
|
"div",
|
|
3954
3993
|
{
|
|
3955
3994
|
ref,
|
|
@@ -3959,13 +3998,13 @@ var WindowFrame = React31.forwardRef(
|
|
|
3959
3998
|
),
|
|
3960
3999
|
...props,
|
|
3961
4000
|
children: [
|
|
3962
|
-
/* @__PURE__ */
|
|
3963
|
-
/* @__PURE__ */
|
|
3964
|
-
/* @__PURE__ */
|
|
3965
|
-
/* @__PURE__ */
|
|
3966
|
-
/* @__PURE__ */
|
|
4001
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900", children: [
|
|
4002
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
4003
|
+
/* @__PURE__ */ jsx46("div", { className: "w-3 h-3 rounded-full bg-berget-brand-muscaria-400" }),
|
|
4004
|
+
/* @__PURE__ */ jsx46("div", { className: "w-3 h-3 rounded-full bg-berget-brand-chanterelle-200" }),
|
|
4005
|
+
/* @__PURE__ */ jsx46("div", { className: "w-3 h-3 rounded-full bg-berget-brand-moss-400" })
|
|
3967
4006
|
] }),
|
|
3968
|
-
tabs && tabs.length > 0 ? /* @__PURE__ */
|
|
4007
|
+
tabs && tabs.length > 0 ? /* @__PURE__ */ jsx46("div", { className: "ml-4 flex items-center gap-1", children: tabs.map((tab) => /* @__PURE__ */ jsx46(
|
|
3969
4008
|
"button",
|
|
3970
4009
|
{
|
|
3971
4010
|
type: "button",
|
|
@@ -3977,9 +4016,9 @@ var WindowFrame = React31.forwardRef(
|
|
|
3977
4016
|
children: tab.label
|
|
3978
4017
|
},
|
|
3979
4018
|
tab.id
|
|
3980
|
-
)) }) : /* @__PURE__ */
|
|
4019
|
+
)) }) : /* @__PURE__ */ jsx46("span", { className: "ml-4 text-sm font-mono text-berget-brand-moss-400", children: title })
|
|
3981
4020
|
] }),
|
|
3982
|
-
/* @__PURE__ */
|
|
4021
|
+
/* @__PURE__ */ jsx46("div", { children })
|
|
3983
4022
|
]
|
|
3984
4023
|
}
|
|
3985
4024
|
);
|
|
@@ -3989,7 +4028,7 @@ WindowFrame.displayName = "WindowFrame";
|
|
|
3989
4028
|
|
|
3990
4029
|
// src/components/fog-illustration/FogIllustration.tsx
|
|
3991
4030
|
import { useEffect as useEffect3, useRef } from "react";
|
|
3992
|
-
import { jsx as
|
|
4031
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
3993
4032
|
var FOG_BRAND_PALETTE = {
|
|
3994
4033
|
ink: "#171a1a",
|
|
3995
4034
|
milk: "#f7f5ed",
|
|
@@ -4302,7 +4341,7 @@ var FogIllustration = ({ palette, speed = 1, className }) => {
|
|
|
4302
4341
|
gl.deleteFramebuffer(fbo);
|
|
4303
4342
|
};
|
|
4304
4343
|
}, []);
|
|
4305
|
-
return /* @__PURE__ */
|
|
4344
|
+
return /* @__PURE__ */ jsx47("canvas", { ref, "aria-hidden": "true", className: cn("size-full", className) });
|
|
4306
4345
|
};
|
|
4307
4346
|
export {
|
|
4308
4347
|
Alert2 as Alert,
|
|
@@ -4374,7 +4413,6 @@ export {
|
|
|
4374
4413
|
FieldTitle,
|
|
4375
4414
|
FogIllustration,
|
|
4376
4415
|
Grid,
|
|
4377
|
-
HeroBlock,
|
|
4378
4416
|
Icon,
|
|
4379
4417
|
Input2 as Input,
|
|
4380
4418
|
Item2 as Item,
|