@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/README.md
CHANGED
|
@@ -49,7 +49,7 @@ Components are organized by category:
|
|
|
49
49
|
|
|
50
50
|
- **actions** - Interactive controls (Button)
|
|
51
51
|
- **branding** - Brand identity assets (Logotype, Symbol)
|
|
52
|
-
- **data** - Content presentation (CodeBlock, FeatureCards,
|
|
52
|
+
- **data** - Content presentation (CodeBlock, FeatureCards, List, StatCard)
|
|
53
53
|
- **display** - Visual elements (Badge, Card, Icon, Typography)
|
|
54
54
|
- **feedback** - Status and messaging (Alert, SectionHeader)
|
|
55
55
|
- **forms** - Form field primitives (Checkbox, Input, Label, Select, Textarea)
|
package/dist/index.cjs
CHANGED
|
@@ -99,7 +99,6 @@ __export(src_exports, {
|
|
|
99
99
|
FieldTitle: () => FieldTitle,
|
|
100
100
|
FogIllustration: () => FogIllustration,
|
|
101
101
|
Grid: () => Grid,
|
|
102
|
-
HeroBlock: () => HeroBlock,
|
|
103
102
|
Icon: () => Icon,
|
|
104
103
|
Input: () => Input2,
|
|
105
104
|
Item: () => Item2,
|
|
@@ -266,7 +265,16 @@ var twMerge = (0, import_tailwind_merge.extendTailwindMerge)({
|
|
|
266
265
|
"rounded-berget-lg",
|
|
267
266
|
"rounded-berget-full"
|
|
268
267
|
],
|
|
269
|
-
"font-size": [
|
|
268
|
+
"font-size": [
|
|
269
|
+
"text-h1",
|
|
270
|
+
"text-h2",
|
|
271
|
+
"text-h3",
|
|
272
|
+
"text-h4",
|
|
273
|
+
"text-p",
|
|
274
|
+
"text-mono",
|
|
275
|
+
"text-hero",
|
|
276
|
+
"text-caption"
|
|
277
|
+
]
|
|
270
278
|
}
|
|
271
279
|
}
|
|
272
280
|
});
|
|
@@ -417,21 +425,72 @@ function Button({
|
|
|
417
425
|
|
|
418
426
|
// src/components/button/Button.tsx
|
|
419
427
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
428
|
+
var interactionClasses = cn(
|
|
429
|
+
// Outline-based focus indicator; neutralise the primitive's ring (the
|
|
430
|
+
// ring colour class is left — harmless at width 0).
|
|
431
|
+
"focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-berget-button-focus-ring focus-visible:ring-0",
|
|
432
|
+
// Neutralise the primitive's disabled fade; variants apply their own tokens.
|
|
433
|
+
"disabled:pointer-events-none disabled:opacity-100 disabled:cursor-not-allowed",
|
|
434
|
+
// No press movement: same compound selector as the primitive base's 1px
|
|
435
|
+
// active translate so tailwind-merge strips it down to 0.
|
|
436
|
+
"active:not-aria-[haspopup]:translate-y-0"
|
|
437
|
+
);
|
|
438
|
+
var disabledClasses = "disabled:text-berget-button-disabled-fg disabled:shadow-none";
|
|
420
439
|
function brandVariantClasses(variant) {
|
|
421
440
|
switch (variant) {
|
|
422
441
|
case "primary":
|
|
423
|
-
return
|
|
442
|
+
return cn(
|
|
443
|
+
// Flat tinted-glass fill; the alpha carries the state, so no shadow lift.
|
|
444
|
+
"bg-berget-button-primary-bg text-berget-button-primary-fg",
|
|
445
|
+
"hover:bg-berget-button-primary-hover",
|
|
446
|
+
// Pin the foreground on hover — the underlying primitive ghost adds
|
|
447
|
+
// hover:text-foreground, which would override the primary fg token.
|
|
448
|
+
"hover:text-berget-button-primary-fg",
|
|
449
|
+
"active:bg-berget-button-primary-active",
|
|
450
|
+
// Keep the resting (transparent) border on focus — the outline is the indicator.
|
|
451
|
+
"focus-visible:border-transparent",
|
|
452
|
+
disabledClasses,
|
|
453
|
+
"disabled:bg-berget-button-primary-disabled-bg"
|
|
454
|
+
);
|
|
424
455
|
case "destructive":
|
|
425
|
-
return
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
456
|
+
return cn(
|
|
457
|
+
"bg-berget-button-destructive-bg text-berget-button-destructive-fg",
|
|
458
|
+
"hover:bg-berget-button-destructive-hover",
|
|
459
|
+
// Pin the foreground on hover — the underlying primitive ghost adds
|
|
460
|
+
// hover:text-foreground, which would override the destructive fg token.
|
|
461
|
+
"hover:text-berget-button-destructive-hover-fg",
|
|
462
|
+
"active:bg-berget-button-destructive-active",
|
|
463
|
+
"focus-visible:border-transparent",
|
|
464
|
+
disabledClasses,
|
|
465
|
+
"disabled:bg-berget-button-destructive-disabled-bg"
|
|
466
|
+
);
|
|
430
467
|
case "link":
|
|
431
|
-
return
|
|
468
|
+
return cn(
|
|
469
|
+
"h-auto bg-transparent p-0 text-berget-button-link-fg underline-offset-4 shadow-none",
|
|
470
|
+
"hover:bg-transparent hover:text-berget-button-link-hover-fg",
|
|
471
|
+
// On press, return to the resting foreground (hover fg otherwise sticks).
|
|
472
|
+
"active:text-berget-button-link-fg",
|
|
473
|
+
"focus:bg-transparent",
|
|
474
|
+
// Neutralise the primitive base's focus-visible:border-ring + ring-3,
|
|
475
|
+
// which land on link too (the primitive merges its cva base under
|
|
476
|
+
// every variant): the outline above is the only focus indicator.
|
|
477
|
+
"focus-visible:border-transparent focus-visible:ring-0",
|
|
478
|
+
"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",
|
|
479
|
+
"disabled:text-berget-button-disabled-fg disabled:no-underline",
|
|
480
|
+
"disabled:opacity-100 disabled:cursor-not-allowed"
|
|
481
|
+
);
|
|
432
482
|
case "default":
|
|
433
483
|
default:
|
|
434
|
-
return
|
|
484
|
+
return cn(
|
|
485
|
+
// Solid granite-800 fill with a granite-700 border on dark surfaces
|
|
486
|
+
// (ink glass in light theme).
|
|
487
|
+
"bg-berget-button-default-bg border-berget-button-default-border text-berget-button-default-fg",
|
|
488
|
+
"hover:bg-berget-button-default-hover",
|
|
489
|
+
"active:bg-berget-button-default-active",
|
|
490
|
+
"focus-visible:border-transparent",
|
|
491
|
+
disabledClasses,
|
|
492
|
+
"disabled:bg-berget-button-default-disabled-bg"
|
|
493
|
+
);
|
|
435
494
|
}
|
|
436
495
|
}
|
|
437
496
|
function primitiveVariant(variant) {
|
|
@@ -458,9 +517,16 @@ function Button2({
|
|
|
458
517
|
const isLink = variant === "link";
|
|
459
518
|
const baseClass = cn(
|
|
460
519
|
!isLink && buttonVariants({ variant: primitiveVariant(variant), size }),
|
|
461
|
-
// Berget brand overrides
|
|
462
|
-
|
|
520
|
+
// Berget brand overrides — full-width buttons use the square radius;
|
|
521
|
+
// everything else stays pill-shaped.
|
|
522
|
+
!isLink && (width === "full" ? "rounded-berget-xs" : "rounded-full"),
|
|
523
|
+
// Em-based padding, inline = 2× block — matches the 8px/16px spacing-scale
|
|
524
|
+
// values at the default text-sm (14px) and scales down/up with smaller or
|
|
525
|
+
// larger button text. h-auto drops the primitive's fixed h-* so the
|
|
526
|
+
// vertical paddings take effect.
|
|
527
|
+
!isLink && !isIcon && "py-[0.57em] px-[1.14em] h-auto",
|
|
463
528
|
brandVariantClasses(variant),
|
|
529
|
+
interactionClasses,
|
|
464
530
|
!isLink && width === "full" && "w-full",
|
|
465
531
|
isIcon && "rounded-full shadow-[0px_1px_3px_rgba(0,0,0,0.1),0px_1px_2px_-1px_rgba(0,0,0,0.1)]",
|
|
466
532
|
className
|
|
@@ -488,6 +554,8 @@ var typographyVariants = (0, import_class_variance_authority2.cva)("", {
|
|
|
488
554
|
variant: {
|
|
489
555
|
// Fluid heading scale — use @theme tokens (clamp-based, 390px → 1440px)
|
|
490
556
|
h1: "text-h1 font-h1 leading-h1 tracking-h1 text-balance",
|
|
557
|
+
// Hero display — from landing-page /dedicated-inference hero (Ovo, 400, tight display leading)
|
|
558
|
+
hero: "text-hero font-hero leading-hero tracking-hero text-balance font-normal [font-feature-settings:'normal']",
|
|
491
559
|
h2: "text-h2 font-h2 leading-h2 tracking-h2 text-balance",
|
|
492
560
|
h3: "text-h3 font-h3 leading-h3 tracking-h3 text-balance",
|
|
493
561
|
h4: "text-h4 font-h4 leading-h4 tracking-h4 text-balance",
|
|
@@ -498,6 +566,8 @@ var typographyVariants = (0, import_class_variance_authority2.cva)("", {
|
|
|
498
566
|
body: "text-p font-p leading-p text-pretty",
|
|
499
567
|
small: "text-sm font-sm leading-sm text-pretty",
|
|
500
568
|
xs: "text-xs font-xs leading-xs text-pretty",
|
|
569
|
+
// Caption / overline / eyebrow (DM Sans, Semibold, uppercase)
|
|
570
|
+
caption: "text-caption font-caption leading-caption tracking-caption text-pretty font-semibold uppercase",
|
|
501
571
|
// Monospaced — use @theme token
|
|
502
572
|
mono: "text-mono font-mono leading-mono text-pretty",
|
|
503
573
|
// Inline code / spec labels
|
|
@@ -506,7 +576,8 @@ var typographyVariants = (0, import_class_variance_authority2.cva)("", {
|
|
|
506
576
|
color: {
|
|
507
577
|
default: "text-berget-foreground",
|
|
508
578
|
muted: "text-berget-muted-foreground",
|
|
509
|
-
dim: "text-berget-foreground/65"
|
|
579
|
+
dim: "text-berget-foreground/65",
|
|
580
|
+
primary: "text-berget-primary"
|
|
510
581
|
}
|
|
511
582
|
},
|
|
512
583
|
defaultVariants: {
|
|
@@ -515,6 +586,7 @@ var typographyVariants = (0, import_class_variance_authority2.cva)("", {
|
|
|
515
586
|
}
|
|
516
587
|
});
|
|
517
588
|
var defaultElementMap = {
|
|
589
|
+
hero: "h1",
|
|
518
590
|
h1: "h1",
|
|
519
591
|
h2: "h2",
|
|
520
592
|
h3: "h3",
|
|
@@ -524,6 +596,7 @@ var defaultElementMap = {
|
|
|
524
596
|
body: "p",
|
|
525
597
|
small: "p",
|
|
526
598
|
xs: "p",
|
|
599
|
+
caption: "span",
|
|
527
600
|
mono: "p",
|
|
528
601
|
code: "span"
|
|
529
602
|
};
|
|
@@ -561,7 +634,7 @@ function Card({
|
|
|
561
634
|
"data-slot": "card",
|
|
562
635
|
"data-size": size,
|
|
563
636
|
className: (0, import_cn2.cn)(
|
|
564
|
-
"group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-
|
|
637
|
+
"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",
|
|
565
638
|
className
|
|
566
639
|
),
|
|
567
640
|
...props
|
|
@@ -630,11 +703,11 @@ function CardFooter({ className, ...props }) {
|
|
|
630
703
|
|
|
631
704
|
// src/components/card/Card.tsx
|
|
632
705
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
633
|
-
var cardVariants = (0, import_class_variance_authority3.cva)("rounded-berget-
|
|
706
|
+
var cardVariants = (0, import_class_variance_authority3.cva)("rounded-berget-xs ring-0", {
|
|
634
707
|
variants: {
|
|
635
708
|
variant: {
|
|
636
|
-
outlined: "bg-transparent border border-berget-border",
|
|
637
|
-
filled: "bg-berget-card-filled-bg border border-berget-border"
|
|
709
|
+
outlined: "bg-transparent border border-berget-border-subtle",
|
|
710
|
+
filled: "bg-berget-card-filled-bg border border-berget-border-subtle"
|
|
638
711
|
},
|
|
639
712
|
padding: {
|
|
640
713
|
none: "p-0",
|
|
@@ -970,7 +1043,7 @@ var ModelCard = React9.forwardRef(
|
|
|
970
1043
|
{
|
|
971
1044
|
variant: "filled",
|
|
972
1045
|
padding: "none",
|
|
973
|
-
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))]
|
|
1046
|
+
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",
|
|
974
1047
|
children: [
|
|
975
1048
|
lifecycle && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "absolute top-0 right-0 z-10 overflow-hidden rounded-bl-berget-sm", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
976
1049
|
"div",
|
|
@@ -4013,41 +4086,6 @@ var FeatureList = React29.forwardRef(
|
|
|
4013
4086
|
);
|
|
4014
4087
|
FeatureList.displayName = "FeatureList";
|
|
4015
4088
|
|
|
4016
|
-
// src/components/hero-block/HeroBlock.tsx
|
|
4017
|
-
var React30 = __toESM(require("react"), 1);
|
|
4018
|
-
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
4019
|
-
var HeroBlock = React30.forwardRef(
|
|
4020
|
-
({ className, taglineIcon: TaglineIcon, tagline, title, description, actions, ...props }, ref) => {
|
|
4021
|
-
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4022
|
-
"div",
|
|
4023
|
-
{
|
|
4024
|
-
ref,
|
|
4025
|
-
className: cn(
|
|
4026
|
-
"relative overflow-hidden min-h-[40dvh] flex items-center py-fluid-2xl",
|
|
4027
|
-
className
|
|
4028
|
-
),
|
|
4029
|
-
...props,
|
|
4030
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "mx-auto text-center max-w-4xl", children: [
|
|
4031
|
-
tagline && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4032
|
-
Badge,
|
|
4033
|
-
{
|
|
4034
|
-
variant: "default",
|
|
4035
|
-
icon: TaglineIcon ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icon, { icon: TaglineIcon, size: 16 }) : void 0,
|
|
4036
|
-
iconGap: 2,
|
|
4037
|
-
className: "mb-fluid-md",
|
|
4038
|
-
children: tagline
|
|
4039
|
-
}
|
|
4040
|
-
),
|
|
4041
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Typography, { variant: "h1", className: "mb-fluid-md", children: title }),
|
|
4042
|
-
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Typography, { variant: "h3", color: "muted", className: "mb-fluid-lg", children: description }),
|
|
4043
|
-
actions && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "flex flex-wrap gap-fluid-md justify-center", children: actions })
|
|
4044
|
-
] }) })
|
|
4045
|
-
}
|
|
4046
|
-
);
|
|
4047
|
-
}
|
|
4048
|
-
);
|
|
4049
|
-
HeroBlock.displayName = "HeroBlock";
|
|
4050
|
-
|
|
4051
4089
|
// src/components/code-block/CodeBlock.tsx
|
|
4052
4090
|
var import_react2 = require("react");
|
|
4053
4091
|
var import_lucide_react15 = require("lucide-react");
|
|
@@ -4091,7 +4129,7 @@ function getHighlighter() {
|
|
|
4091
4129
|
}
|
|
4092
4130
|
|
|
4093
4131
|
// src/components/code-block/CodeBlock.tsx
|
|
4094
|
-
var
|
|
4132
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
4095
4133
|
function CodeBlock({ code, language = "text", title, className }) {
|
|
4096
4134
|
const [html, setHtml] = (0, import_react2.useState)(null);
|
|
4097
4135
|
const [copied, setCopied] = (0, import_react2.useState)(false);
|
|
@@ -4107,42 +4145,42 @@ function CodeBlock({ code, language = "text", title, className }) {
|
|
|
4107
4145
|
setCopied(true);
|
|
4108
4146
|
setTimeout(() => setCopied(false), 2e3);
|
|
4109
4147
|
}, [code]);
|
|
4110
|
-
const copyButton = /* @__PURE__ */ (0,
|
|
4148
|
+
const copyButton = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4111
4149
|
"button",
|
|
4112
4150
|
{
|
|
4113
4151
|
onClick: handleCopy,
|
|
4114
4152
|
className: "flex items-center justify-center w-6 h-6 text-berget-muted-foreground hover:text-berget-foreground transition-colors",
|
|
4115
4153
|
"aria-label": "Copy code",
|
|
4116
|
-
children: copied ? /* @__PURE__ */ (0,
|
|
4154
|
+
children: copied ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react15.Check, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react15.Copy, { className: "w-3.5 h-3.5" })
|
|
4117
4155
|
}
|
|
4118
4156
|
);
|
|
4119
|
-
return /* @__PURE__ */ (0,
|
|
4157
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
4120
4158
|
"div",
|
|
4121
4159
|
{
|
|
4122
4160
|
className: cn(
|
|
4123
|
-
"rounded-berget-
|
|
4161
|
+
"rounded-berget-xs border bg-berget-codeblock-bg border-berget-border backdrop-blur-[12px] relative overflow-hidden isolate",
|
|
4124
4162
|
className
|
|
4125
4163
|
),
|
|
4126
4164
|
children: [
|
|
4127
|
-
title && /* @__PURE__ */ (0,
|
|
4128
|
-
/* @__PURE__ */ (0,
|
|
4129
|
-
html ? /* @__PURE__ */ (0,
|
|
4165
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("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__ */ (0, import_jsx_runtime45.jsx)("span", { className: "text-berget-muted-foreground", children: title }) }),
|
|
4166
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "absolute right-2 top-2 z-10", children: copyButton }),
|
|
4167
|
+
html ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
4130
4168
|
"div",
|
|
4131
4169
|
{
|
|
4132
4170
|
className: "[&_.shiki]:!p-4 [&_.shiki]:!m-0 [&_.shiki]:overflow-x-auto [&_.shiki]:!text-sm [&_.shiki]:!leading-relaxed [&_.shiki]:bg-transparent",
|
|
4133
4171
|
dangerouslySetInnerHTML: { __html: html }
|
|
4134
4172
|
}
|
|
4135
|
-
) : /* @__PURE__ */ (0,
|
|
4173
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("pre", { className: "!p-4 !m-0 overflow-x-auto !text-sm !leading-relaxed text-berget-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("code", { children: code }) })
|
|
4136
4174
|
]
|
|
4137
4175
|
}
|
|
4138
4176
|
);
|
|
4139
4177
|
}
|
|
4140
4178
|
|
|
4141
4179
|
// src/components/window-frame/WindowFrame.tsx
|
|
4142
|
-
var
|
|
4180
|
+
var React30 = __toESM(require("react"), 1);
|
|
4143
4181
|
var import_react3 = require("react");
|
|
4144
|
-
var
|
|
4145
|
-
var WindowFrame =
|
|
4182
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
4183
|
+
var WindowFrame = React30.forwardRef(
|
|
4146
4184
|
({ title = "window", tabs, activeTab, onTabChange, children, className, ...props }, ref) => {
|
|
4147
4185
|
const [internalActive, setInternalActive] = (0, import_react3.useState)(tabs?.[0]?.id ?? "");
|
|
4148
4186
|
const currentTab = activeTab ?? internalActive;
|
|
@@ -4153,7 +4191,7 @@ var WindowFrame = React31.forwardRef(
|
|
|
4153
4191
|
setInternalActive(id);
|
|
4154
4192
|
}
|
|
4155
4193
|
};
|
|
4156
|
-
return /* @__PURE__ */ (0,
|
|
4194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
4157
4195
|
"div",
|
|
4158
4196
|
{
|
|
4159
4197
|
ref,
|
|
@@ -4163,13 +4201,13 @@ var WindowFrame = React31.forwardRef(
|
|
|
4163
4201
|
),
|
|
4164
4202
|
...props,
|
|
4165
4203
|
children: [
|
|
4166
|
-
/* @__PURE__ */ (0,
|
|
4167
|
-
/* @__PURE__ */ (0,
|
|
4168
|
-
/* @__PURE__ */ (0,
|
|
4169
|
-
/* @__PURE__ */ (0,
|
|
4170
|
-
/* @__PURE__ */ (0,
|
|
4204
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-2 px-4 py-3 border-b border-berget-brand-granite-700 bg-berget-brand-granite-900", children: [
|
|
4205
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "flex items-center gap-2 flex-shrink-0", children: [
|
|
4206
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-muscaria-400" }),
|
|
4207
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-chanterelle-200" }),
|
|
4208
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "w-3 h-3 rounded-full bg-berget-brand-moss-400" })
|
|
4171
4209
|
] }),
|
|
4172
|
-
tabs && tabs.length > 0 ? /* @__PURE__ */ (0,
|
|
4210
|
+
tabs && tabs.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "ml-4 flex items-center gap-1", children: tabs.map((tab) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
4173
4211
|
"button",
|
|
4174
4212
|
{
|
|
4175
4213
|
type: "button",
|
|
@@ -4181,9 +4219,9 @@ var WindowFrame = React31.forwardRef(
|
|
|
4181
4219
|
children: tab.label
|
|
4182
4220
|
},
|
|
4183
4221
|
tab.id
|
|
4184
|
-
)) }) : /* @__PURE__ */ (0,
|
|
4222
|
+
)) }) : /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "ml-4 text-sm font-mono text-berget-brand-moss-400", children: title })
|
|
4185
4223
|
] }),
|
|
4186
|
-
/* @__PURE__ */ (0,
|
|
4224
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { children })
|
|
4187
4225
|
]
|
|
4188
4226
|
}
|
|
4189
4227
|
);
|
|
@@ -4193,7 +4231,7 @@ WindowFrame.displayName = "WindowFrame";
|
|
|
4193
4231
|
|
|
4194
4232
|
// src/components/fog-illustration/FogIllustration.tsx
|
|
4195
4233
|
var import_react4 = require("react");
|
|
4196
|
-
var
|
|
4234
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
4197
4235
|
var FOG_BRAND_PALETTE = {
|
|
4198
4236
|
ink: "#171a1a",
|
|
4199
4237
|
milk: "#f7f5ed",
|
|
@@ -4506,7 +4544,7 @@ var FogIllustration = ({ palette, speed = 1, className }) => {
|
|
|
4506
4544
|
gl.deleteFramebuffer(fbo);
|
|
4507
4545
|
};
|
|
4508
4546
|
}, []);
|
|
4509
|
-
return /* @__PURE__ */ (0,
|
|
4547
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("canvas", { ref, "aria-hidden": "true", className: cn("size-full", className) });
|
|
4510
4548
|
};
|
|
4511
4549
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4512
4550
|
0 && (module.exports = {
|
|
@@ -4579,7 +4617,6 @@ var FogIllustration = ({ palette, speed = 1, className }) => {
|
|
|
4579
4617
|
FieldTitle,
|
|
4580
4618
|
FogIllustration,
|
|
4581
4619
|
Grid,
|
|
4582
|
-
HeroBlock,
|
|
4583
4620
|
Icon,
|
|
4584
4621
|
Input,
|
|
4585
4622
|
Item,
|