@nebutra/ui 0.2.2 → 2.0.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/dist/animate-in-BlvjVh2S.d.ts +250 -0
- package/dist/{canonical-CrO71UPO.d.ts → canonical-Bf4czR2u.d.ts} +225 -211
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/components/index.d.ts +58 -123
- package/dist/components/index.js +504 -203
- package/dist/components/index.js.map +1 -1
- package/dist/editorial/index.d.ts +404 -0
- package/dist/editorial/index.js +868 -0
- package/dist/editorial/index.js.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/layout/index.d.ts +2 -2
- package/dist/layout/index.js +116 -26
- package/dist/layout/index.js.map +1 -1
- package/dist/layouts/index.d.ts +80 -2
- package/dist/layouts/index.js +13 -11
- package/dist/layouts/index.js.map +1 -1
- package/dist/patterns/index.d.ts +4 -5
- package/dist/patterns/index.js +221 -106
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/canonical.d.ts +4 -3
- package/dist/primitives/canonical.js +609 -197
- package/dist/primitives/canonical.js.map +1 -1
- package/dist/primitives/index.d.ts +213 -21
- package/dist/primitives/index.js +2209 -1317
- package/dist/primitives/index.js.map +1 -1
- package/dist/tailwind.preset.d.ts +2 -2
- package/dist/tailwind.preset.js +1 -1
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/typography/fonts.css +21 -26
- package/dist/typography/index.d.ts +4 -4
- package/dist/typography/index.js +1 -1
- package/dist/typography/index.js.map +1 -1
- package/dist/utils/auth-surfaces.d.ts +33 -0
- package/dist/utils/auth-surfaces.js +9 -0
- package/dist/utils/auth-surfaces.js.map +1 -0
- package/dist/utils/index.d.ts +33 -5
- package/dist/utils/index.js +15 -3
- package/dist/utils/index.js.map +1 -1
- package/package.json +43 -9
- package/src/styles/sources.css +10 -0
- package/src/typography/fonts.css +21 -26
package/dist/patterns/index.js
CHANGED
|
@@ -30,7 +30,7 @@ function ArtifactShiftCard({
|
|
|
30
30
|
"div",
|
|
31
31
|
{
|
|
32
32
|
className: cn(
|
|
33
|
-
"group/card relative flex h-full min-h-[560px] flex-col overflow-hidden rounded-[var(--radius-panel)] border bg-background/90 transition-[transform,border-color,box-shadow] duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] hover:-translate-y-1 hover:border-foreground/25 hover:shadow-
|
|
33
|
+
"group/card relative flex h-full min-h-[560px] flex-col overflow-hidden rounded-[var(--radius-panel)] border bg-background/90 transition-[transform,border-color,box-shadow] duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] hover:-translate-y-1 hover:border-foreground/25 hover:shadow-ambient-lg focus-within:-translate-y-1 focus-within:border-foreground/25",
|
|
34
34
|
className
|
|
35
35
|
),
|
|
36
36
|
"data-taste": "nebutra-shift-card",
|
|
@@ -71,7 +71,7 @@ function ArtifactShiftCardPreview({
|
|
|
71
71
|
{
|
|
72
72
|
"aria-label": label,
|
|
73
73
|
className: cn(
|
|
74
|
-
"relative min-h-[260px] overflow-hidden rounded-[var(--radius-xl)] border border-border/60 bg-background/80 p-3 shadow-
|
|
74
|
+
"relative min-h-[260px] overflow-hidden rounded-[var(--radius-xl)] border border-border/60 bg-background/80 p-3 shadow-ambient-sm transition-[transform,border-color,box-shadow] duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] group-hover/card:-translate-y-1 group-hover/card:border-foreground/20 group-hover/card:shadow-ambient-md group-focus-within/card:-translate-y-1 group-focus-within/card:border-foreground/20 sm:p-4",
|
|
75
75
|
className
|
|
76
76
|
),
|
|
77
77
|
...props,
|
|
@@ -122,7 +122,7 @@ function ArtifactShiftCardFooter({ className, ...props }) {
|
|
|
122
122
|
"footer",
|
|
123
123
|
{
|
|
124
124
|
className: cn(
|
|
125
|
-
"relative mt-4 flex flex-wrap items-center justify-between gap-3 rounded-[var(--radius-xl)] border border-border/60 bg-background/85 px-4 py-3 shadow-
|
|
125
|
+
"relative mt-4 flex flex-wrap items-center justify-between gap-3 rounded-[var(--radius-xl)] border border-border/60 bg-background/85 px-4 py-3 shadow-ambient-sm backdrop-blur-xl transition-[transform,border-color,box-shadow] duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] group-hover/card:-translate-y-2 group-hover/card:border-foreground/20 group-hover/card:shadow-ambient-md group-focus-within/card:-translate-y-2 group-focus-within/card:border-foreground/20",
|
|
126
126
|
className
|
|
127
127
|
),
|
|
128
128
|
...props
|
|
@@ -150,7 +150,7 @@ var CardRoot = React.forwardRef(
|
|
|
150
150
|
{
|
|
151
151
|
ref,
|
|
152
152
|
className: cn(
|
|
153
|
-
"rounded-[var(--radius-xl)] transition-[background-color,border-color,box-shadow,color] duration-
|
|
153
|
+
"rounded-[var(--radius-xl)] transition-[background-color,border-color,box-shadow,color] duration-micro",
|
|
154
154
|
variantStyles[variant],
|
|
155
155
|
paddingMap[padding],
|
|
156
156
|
className
|
|
@@ -377,7 +377,7 @@ function DashboardCommandSurface({
|
|
|
377
377
|
/* @__PURE__ */ jsxs("div", { className: "relative z-10 flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between", children: [
|
|
378
378
|
/* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
379
379
|
status ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
380
|
-
/* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-
|
|
380
|
+
/* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-success shadow-[0_0_0_3px_hsl(var(--success)/0.18)]" }),
|
|
381
381
|
/* @__PURE__ */ jsx("p", { className: "text-[11px] font-medium uppercase text-muted-foreground", children: status })
|
|
382
382
|
] }) : null,
|
|
383
383
|
/* @__PURE__ */ jsx("h1", { className: "mt-2 text-2xl font-semibold tracking-normal text-card-foreground sm:text-[28px]", children: title }),
|
|
@@ -446,7 +446,7 @@ function DashboardMetricTile({
|
|
|
446
446
|
{
|
|
447
447
|
"data-pattern": "nebutra-dashboard-metric",
|
|
448
448
|
className: cn(
|
|
449
|
-
"group h-full rounded-[var(--radius-lg)] border border-border bg-muted/40 p-3 transition-colors duration-
|
|
449
|
+
"group h-full rounded-[var(--radius-lg)] border border-border bg-muted/40 p-3 transition-colors duration-micro",
|
|
450
450
|
"hover:border-muted-foreground/30 hover:bg-muted/65",
|
|
451
451
|
className
|
|
452
452
|
),
|
|
@@ -474,7 +474,7 @@ function DashboardMetricTile({
|
|
|
474
474
|
);
|
|
475
475
|
}
|
|
476
476
|
var badgeVariants = cva(
|
|
477
|
-
"inline-flex justify-center items-center align-middle shrink-0 rounded-full font-sans font-medium whitespace-nowrap tabular-nums transition-colors focus-visible:outline-none
|
|
477
|
+
"inline-flex justify-center items-center align-middle shrink-0 rounded-full font-sans font-medium whitespace-nowrap tabular-nums transition-colors focus-visible:outline-none border border-transparent",
|
|
478
478
|
{
|
|
479
479
|
variants: {
|
|
480
480
|
variant: {
|
|
@@ -496,15 +496,26 @@ var badgeVariants = cva(
|
|
|
496
496
|
purple: "bg-secondary text-secondary-foreground fill-current",
|
|
497
497
|
"purple-subtle": "bg-secondary/40 text-secondary-foreground fill-current border-transparent",
|
|
498
498
|
amber: "bg-warning text-warning-foreground fill-current",
|
|
499
|
-
"amber-subtle":
|
|
499
|
+
"amber-subtle": (
|
|
500
|
+
// --warning is a FILL (2.13:1). As ink on its own tint it measured 1.91:1.
|
|
501
|
+
// --warning-strong is the AA-safe amber foreground: 5.01:1 light / 6.20:1 dark.
|
|
502
|
+
"bg-warning/10 text-[hsl(var(--warning-strong))] fill-current border-transparent"
|
|
503
|
+
),
|
|
500
504
|
red: "bg-destructive text-destructive-foreground fill-current",
|
|
501
|
-
"red-subtle":
|
|
505
|
+
"red-subtle": (
|
|
506
|
+
// --destructive is fill-only in dark (2.01:1 as ink on its own tint).
|
|
507
|
+
// --destructive-strong: 4.58:1 light / 4.97:1 dark.
|
|
508
|
+
"bg-destructive/10 text-[hsl(var(--destructive-strong))] fill-current border-transparent"
|
|
509
|
+
),
|
|
502
510
|
pink: "bg-accent text-accent-foreground fill-current",
|
|
503
511
|
"pink-subtle": "bg-accent/40 text-accent-foreground fill-current border-transparent",
|
|
504
512
|
green: "bg-success text-success-foreground fill-current",
|
|
505
|
-
"green-subtle":
|
|
513
|
+
"green-subtle": (
|
|
514
|
+
// --success-strong closes the 4.49:1 light gap: 4.99:1 light / 4.83:1 dark.
|
|
515
|
+
"bg-success/10 text-[hsl(var(--success-strong))] fill-current border-transparent"
|
|
516
|
+
),
|
|
506
517
|
teal: "bg-info text-info-foreground fill-current",
|
|
507
|
-
"teal-subtle": "bg-info/
|
|
518
|
+
"teal-subtle": "bg-info/10 text-info fill-current border-transparent",
|
|
508
519
|
inverted: "bg-foreground text-background fill-current",
|
|
509
520
|
// Special visual treatments (intentional product design, not brand hex)
|
|
510
521
|
trial: "bg-gradient-to-br from-trial-start to-trial-end text-primary-foreground fill-current",
|
|
@@ -691,17 +702,18 @@ var overlayZIndex = {
|
|
|
691
702
|
};
|
|
692
703
|
var overlayClassNames = {
|
|
693
704
|
menuSurface: [
|
|
694
|
-
"min-w-32 overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
705
|
+
"min-w-32 origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-lg)] border border-border/70 bg-popover/95 p-1 text-popover-foreground backdrop-blur-md",
|
|
695
706
|
shadowClasses.xl,
|
|
696
|
-
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
697
|
-
"data-[starting-style]:scale-
|
|
707
|
+
"outline-none transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
708
|
+
"data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0 data-[ending-style]:scale-[0.97] data-[ending-style]:opacity-0",
|
|
698
709
|
"motion-reduce:transition-none motion-reduce:data-[starting-style]:transform-none motion-reduce:data-[ending-style]:transform-none"
|
|
699
710
|
].join(" "),
|
|
700
711
|
tooltipSurface: [
|
|
701
|
-
"overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
712
|
+
"origin-[var(--transform-origin)] overflow-hidden rounded-[var(--radius-md)] border border-border/70 bg-popover/95 px-3 py-1.5 text-sm text-popover-foreground backdrop-blur-md",
|
|
702
713
|
shadowClasses.md,
|
|
703
|
-
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-
|
|
704
|
-
"data-starting-style:scale-
|
|
714
|
+
"transition-[opacity,transform,display] duration-[var(--motion-duration-flow)] ease-[var(--ease-brand)]",
|
|
715
|
+
"data-starting-style:scale-[0.97] data-starting-style:opacity-0 data-ending-style:scale-[0.97] data-ending-style:opacity-0",
|
|
716
|
+
"data-[instant]:duration-0",
|
|
705
717
|
"motion-reduce:transition-none motion-reduce:data-starting-style:transform-none motion-reduce:data-ending-style:transform-none"
|
|
706
718
|
].join(" ")};
|
|
707
719
|
|
|
@@ -791,6 +803,7 @@ var DropdownMenuContent = ({
|
|
|
791
803
|
align,
|
|
792
804
|
alignOffset,
|
|
793
805
|
side,
|
|
806
|
+
style: { zIndex: overlayZIndex.popover },
|
|
794
807
|
children: /* @__PURE__ */ jsx(
|
|
795
808
|
Menu.Popup,
|
|
796
809
|
{
|
|
@@ -854,9 +867,9 @@ var badgeToneToVariant = {
|
|
|
854
867
|
};
|
|
855
868
|
var cardClassName = cn(
|
|
856
869
|
"group relative block rounded-[var(--radius-xl)] border border-border bg-card text-card-foreground p-5 text-left",
|
|
857
|
-
"transition-[border-color,box-shadow,transform] duration-
|
|
870
|
+
"transition-[border-color,box-shadow,transform] duration-micro motion-reduce:transition-none motion-reduce:transform-none",
|
|
858
871
|
"hover:border-neutral-7 hover:shadow-sm hover:-translate-y-px motion-reduce:hover:translate-y-0",
|
|
859
|
-
"focus-visible:outline-none
|
|
872
|
+
"focus-visible:outline-none"
|
|
860
873
|
);
|
|
861
874
|
function GalleryCardActionsMenu({ actions, title }) {
|
|
862
875
|
function stop(event) {
|
|
@@ -875,7 +888,7 @@ function GalleryCardActionsMenu({ actions, title }) {
|
|
|
875
888
|
"inline-flex h-7 w-7 items-center justify-center rounded-[var(--radius-md)]",
|
|
876
889
|
"text-muted-foreground transition-colors",
|
|
877
890
|
"hover:bg-accent hover:text-accent-foreground",
|
|
878
|
-
"focus-visible:outline-none
|
|
891
|
+
"focus-visible:outline-none"
|
|
879
892
|
),
|
|
880
893
|
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "h-4 w-4" })
|
|
881
894
|
}
|
|
@@ -1023,7 +1036,6 @@ function renderIcon(icon) {
|
|
|
1023
1036
|
}
|
|
1024
1037
|
function KineticFeatureCard({
|
|
1025
1038
|
icon,
|
|
1026
|
-
eyebrow,
|
|
1027
1039
|
title,
|
|
1028
1040
|
description,
|
|
1029
1041
|
children,
|
|
@@ -1035,7 +1047,7 @@ function KineticFeatureCard({
|
|
|
1035
1047
|
"article",
|
|
1036
1048
|
{
|
|
1037
1049
|
className: cn(
|
|
1038
|
-
"group/kinetic relative flex h-full min-h-[540px] flex-col overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/82 p-6 shadow-
|
|
1050
|
+
"group/kinetic relative flex h-full min-h-[540px] flex-col overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/82 p-6 shadow-glass-md backdrop-blur-2xl transition-[transform,border-color,box-shadow,background-color] duration-500 ease-[cubic-bezier(0.23,1,0.32,1)] hover:-translate-y-1 hover:border-foreground/25 hover:bg-background/94 hover:shadow-glass-lg focus-within:-translate-y-1 focus-within:border-foreground/25 sm:p-7",
|
|
1039
1051
|
className
|
|
1040
1052
|
),
|
|
1041
1053
|
"data-taste": "nebutra-texture-cutout-card",
|
|
@@ -1045,20 +1057,12 @@ function KineticFeatureCard({
|
|
|
1045
1057
|
"div",
|
|
1046
1058
|
{
|
|
1047
1059
|
"aria-hidden": "true",
|
|
1048
|
-
className: "pointer-events-none absolute inset-0 bg-[radial-gradient(
|
|
1049
|
-
}
|
|
1050
|
-
),
|
|
1051
|
-
/* @__PURE__ */ jsx(
|
|
1052
|
-
"div",
|
|
1053
|
-
{
|
|
1054
|
-
"aria-hidden": "true",
|
|
1055
|
-
className: "pointer-events-none absolute inset-x-0 top-0 h-40 bg-gradient-to-b from-primary/12 via-primary/5 to-transparent",
|
|
1060
|
+
className: "pointer-events-none absolute inset-x-0 top-0 h-40 bg-[radial-gradient(ellipse_at_top,hsl(var(--primary)/0.12),transparent_70%)]",
|
|
1056
1061
|
style: { maskImage: "linear-gradient(to bottom, black 45%, transparent 100%)" }
|
|
1057
1062
|
}
|
|
1058
1063
|
),
|
|
1059
|
-
/* @__PURE__ */ jsx("div", { className: "absolute right-0 top-0 z-10 rounded-bl-[2rem] border-b border-l border-border/60 bg-muted/55 px-4 py-2 backdrop-blur-xl", children: /* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground", children: eyebrow }) }),
|
|
1060
1064
|
/* @__PURE__ */ jsxs("div", { className: "relative z-10 flex h-full flex-col", children: [
|
|
1061
|
-
/* @__PURE__ */ jsx("div", { className: "mb-8 flex items-start justify-between gap-4
|
|
1065
|
+
/* @__PURE__ */ jsx("div", { className: "mb-8 flex items-start justify-between gap-4", children: renderedIcon && /* @__PURE__ */ jsx("div", { className: "grid size-14 place-items-center rounded-[var(--radius-xl)] border border-border/65 bg-background/75 shadow-glass-sm transition-transform duration-500 group-hover/kinetic:-translate-y-1", children: renderedIcon }) }),
|
|
1062
1066
|
/* @__PURE__ */ jsx(
|
|
1063
1067
|
"h3",
|
|
1064
1068
|
{
|
|
@@ -1085,7 +1089,7 @@ function KineticCodePreview({
|
|
|
1085
1089
|
"div",
|
|
1086
1090
|
{
|
|
1087
1091
|
className: cn(
|
|
1088
|
-
"relative overflow-hidden rounded-[var(--radius-xl)] border border-border/60 bg-muted/30 shadow-
|
|
1092
|
+
"relative overflow-hidden rounded-[var(--radius-xl)] border border-border/60 bg-muted/30 shadow-ambient-md transition-[transform,border-color,box-shadow] duration-500 group-hover/kinetic:-translate-y-2 group-hover/kinetic:border-foreground/20 group-hover/kinetic:shadow-ambient-lg",
|
|
1089
1093
|
className
|
|
1090
1094
|
),
|
|
1091
1095
|
...props,
|
|
@@ -1123,7 +1127,7 @@ function KineticConsoleFrame({
|
|
|
1123
1127
|
"div",
|
|
1124
1128
|
{
|
|
1125
1129
|
className: cn(
|
|
1126
|
-
"group/kinetic relative flex h-full min-h-[460px] w-full flex-col overflow-hidden rounded-[2rem] border border-border/65 bg-background/84 shadow-
|
|
1130
|
+
"group/kinetic relative flex h-full min-h-[460px] w-full flex-col overflow-hidden rounded-[2rem] border border-border/65 bg-background/84 shadow-glass-md backdrop-blur-3xl transition-[transform,border-color,box-shadow] duration-500 hover:-translate-y-1 hover:border-foreground/25 hover:shadow-glass-lg",
|
|
1127
1131
|
className
|
|
1128
1132
|
),
|
|
1129
1133
|
"data-taste": "nebutra-terminal-animation",
|
|
@@ -1169,20 +1173,13 @@ function KineticMorphSurface({
|
|
|
1169
1173
|
"div",
|
|
1170
1174
|
{
|
|
1171
1175
|
className: cn(
|
|
1172
|
-
"group/kinetic relative overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/80 p-3 shadow-
|
|
1176
|
+
"group/kinetic relative overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/80 p-3 shadow-glass-md backdrop-blur-2xl transition-[border-color,box-shadow,background-color] duration-500 hover:border-foreground/20 hover:bg-background/92 hover:shadow-glass-lg sm:p-4 lg:p-5",
|
|
1173
1177
|
className
|
|
1174
1178
|
),
|
|
1175
1179
|
"data-active-key": activeKey,
|
|
1176
1180
|
"data-taste": "nebutra-morph-surface",
|
|
1177
1181
|
...props,
|
|
1178
1182
|
children: [
|
|
1179
|
-
/* @__PURE__ */ jsx(
|
|
1180
|
-
"div",
|
|
1181
|
-
{
|
|
1182
|
-
"aria-hidden": "true",
|
|
1183
|
-
className: "pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_1px_1px,var(--neutral-8)_1px,transparent_0)] bg-[length:20px_20px] opacity-[0.10]"
|
|
1184
|
-
}
|
|
1185
|
-
),
|
|
1186
1183
|
/* @__PURE__ */ jsx(
|
|
1187
1184
|
"div",
|
|
1188
1185
|
{
|
|
@@ -1206,7 +1203,7 @@ function KineticSignalMarquee({
|
|
|
1206
1203
|
"div",
|
|
1207
1204
|
{
|
|
1208
1205
|
className: cn(
|
|
1209
|
-
"group/kinetic relative mx-auto overflow-hidden rounded-[var(--radius-panel)] border border-border/55 bg-background/72 px-3 py-8 shadow-
|
|
1206
|
+
"group/kinetic relative mx-auto overflow-hidden rounded-[var(--radius-panel)] border border-border/55 bg-background/72 px-3 py-8 shadow-glass-md backdrop-blur-2xl sm:px-5",
|
|
1210
1207
|
className
|
|
1211
1208
|
),
|
|
1212
1209
|
"data-taste": "nebutra-provider-grid",
|
|
@@ -1256,19 +1253,12 @@ function KineticCommandBox({
|
|
|
1256
1253
|
"div",
|
|
1257
1254
|
{
|
|
1258
1255
|
className: cn(
|
|
1259
|
-
"group/kinetic relative flex flex-col items-stretch overflow-hidden rounded-[var(--radius-xl)] border border-border/65 bg-background/82 p-1.5 shadow-
|
|
1256
|
+
"group/kinetic relative flex flex-col items-stretch overflow-hidden rounded-[var(--radius-xl)] border border-border/65 bg-background/82 p-1.5 shadow-glass-sm backdrop-blur-2xl transition-[transform,border-color,box-shadow,background-color] duration-500 hover:-translate-y-1 hover:border-foreground/25 hover:bg-background/92 hover:shadow-glass-md sm:flex-row sm:items-center",
|
|
1260
1257
|
className
|
|
1261
1258
|
),
|
|
1262
1259
|
"data-taste": "nebutra-texture-command",
|
|
1263
1260
|
...props,
|
|
1264
1261
|
children: [
|
|
1265
|
-
/* @__PURE__ */ jsx(
|
|
1266
|
-
"div",
|
|
1267
|
-
{
|
|
1268
|
-
"aria-hidden": "true",
|
|
1269
|
-
className: "pointer-events-none absolute inset-0 bg-[radial-gradient(circle_at_1px_1px,var(--neutral-8)_1px,transparent_0)] bg-[length:16px_16px] opacity-[0.10]"
|
|
1270
|
-
}
|
|
1271
|
-
),
|
|
1272
1262
|
/* @__PURE__ */ jsxs("code", { className: "relative z-10 flex-1 overflow-x-auto whitespace-nowrap px-4 py-3.5 font-mono text-xs text-foreground sm:px-5 sm:text-sm md:text-base", children: [
|
|
1273
1263
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "$" }),
|
|
1274
1264
|
" ",
|
|
@@ -1279,7 +1269,7 @@ function KineticCommandBox({
|
|
|
1279
1269
|
{
|
|
1280
1270
|
type: "button",
|
|
1281
1271
|
onClick: handleCopy,
|
|
1282
|
-
className: "relative z-10 mt-2 flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-[var(--radius-lg)] border border-primary/20 bg-foreground px-5 py-2.5 text-sm font-medium text-background shadow-
|
|
1272
|
+
className: "relative z-10 mt-2 flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-[var(--radius-lg)] border border-primary/20 bg-foreground px-5 py-2.5 text-sm font-medium text-background shadow-sheen transition-[transform,opacity] hover:-translate-y-px hover:opacity-90 sm:mt-0",
|
|
1283
1273
|
children: [
|
|
1284
1274
|
copied ? /* @__PURE__ */ jsx(Check, { className: "size-4" }) : /* @__PURE__ */ jsx(Copy, { className: "size-4" }),
|
|
1285
1275
|
copied ? copiedLabel : copyLabel
|
|
@@ -1295,7 +1285,7 @@ function KineticStepRail({ className, children, ...props }) {
|
|
|
1295
1285
|
"div",
|
|
1296
1286
|
{
|
|
1297
1287
|
className: cn(
|
|
1298
|
-
"relative overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/78 p-6 shadow-
|
|
1288
|
+
"relative overflow-hidden rounded-[var(--radius-panel)] border border-border/65 bg-background/78 p-6 shadow-glass-md backdrop-blur-2xl md:p-10",
|
|
1299
1289
|
className
|
|
1300
1290
|
),
|
|
1301
1291
|
"data-taste": "nebutra-grid-beam",
|
|
@@ -1341,12 +1331,12 @@ function KineticStep({
|
|
|
1341
1331
|
"article",
|
|
1342
1332
|
{
|
|
1343
1333
|
className: cn(
|
|
1344
|
-
"group/kinetic relative flex h-full flex-col items-center rounded-[var(--radius-xl)] border border-border/60 bg-background/82 p-5 text-center shadow-
|
|
1334
|
+
"group/kinetic relative flex h-full flex-col items-center rounded-[var(--radius-xl)] border border-border/60 bg-background/82 p-5 text-center shadow-ambient-md backdrop-blur-xl transition-[transform,border-color,box-shadow] duration-500 hover:-translate-y-1 hover:border-foreground/25 hover:shadow-ambient-lg",
|
|
1345
1335
|
className
|
|
1346
1336
|
),
|
|
1347
1337
|
...props,
|
|
1348
1338
|
children: [
|
|
1349
|
-
/* @__PURE__ */ jsxs("div", { className: "relative mb-6 grid size-16 place-items-center rounded-[var(--radius-xl)] border border-border/65 bg-background shadow-
|
|
1339
|
+
/* @__PURE__ */ jsxs("div", { className: "relative mb-6 grid size-16 place-items-center rounded-[var(--radius-xl)] border border-border/65 bg-background shadow-glass-sm", children: [
|
|
1350
1340
|
/* @__PURE__ */ jsx(
|
|
1351
1341
|
"span",
|
|
1352
1342
|
{
|
|
@@ -1407,8 +1397,8 @@ var buttonVariants = cva(
|
|
|
1407
1397
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap",
|
|
1408
1398
|
"rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1409
1399
|
"text-[length:var(--control-font-size-md,0.875rem)] font-[number:var(--font-weight-medium,500)]",
|
|
1410
|
-
"transition-
|
|
1411
|
-
"
|
|
1400
|
+
"transition-[color,background-color,border-color,transform] duration-flow ease-[var(--ease-brand)]",
|
|
1401
|
+
"active:scale-[0.97] motion-reduce:active:scale-100 motion-reduce:transition-none",
|
|
1412
1402
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
1413
1403
|
"aria-busy:cursor-wait"
|
|
1414
1404
|
].join(" "),
|
|
@@ -1435,8 +1425,30 @@ var buttonVariants = cva(
|
|
|
1435
1425
|
},
|
|
1436
1426
|
shape: {
|
|
1437
1427
|
default: "",
|
|
1438
|
-
|
|
1439
|
-
|
|
1428
|
+
// Radius from --btn-default-radius / --radius-md — brand-switchable.
|
|
1429
|
+
// Do not hardcode rounded-md here; a language must be able to retarget
|
|
1430
|
+
// the corner treatment of every icon trigger at once.
|
|
1431
|
+
square: "rounded-[var(--btn-default-radius,var(--radius-md))]",
|
|
1432
|
+
// Pill radius token, not Tailwind rounded-full — same 9999px default,
|
|
1433
|
+
// but a brand that ships a softer "circle" can override --radius-pill.
|
|
1434
|
+
circle: "rounded-[var(--radius-pill,9999px)]",
|
|
1435
|
+
pill: "rounded-[var(--radius-pill,9999px)]"
|
|
1436
|
+
},
|
|
1437
|
+
// Icon-only box size — orthogonal to `size` (which tunes text-button
|
|
1438
|
+
// height/padding/font together) and to `shape` (which picks the
|
|
1439
|
+
// corner treatment). Only takes effect combined with shape="square"
|
|
1440
|
+
// or shape="circle" (see compoundVariants below); every other
|
|
1441
|
+
// combination ignores it. 28/32/36 cover the icon-trigger sizes that
|
|
1442
|
+
// actually occur in the app — 24/40/48 are already reachable via
|
|
1443
|
+
// shape + size (tiny/default/lg). Heights read --control-height-icon-*
|
|
1444
|
+
// so density-aware Brand Packages can scale them with the ladder.
|
|
1445
|
+
iconSize: {
|
|
1446
|
+
sm: "",
|
|
1447
|
+
// 28px default
|
|
1448
|
+
md: "",
|
|
1449
|
+
// 32px default
|
|
1450
|
+
lg: ""
|
|
1451
|
+
// 36px default
|
|
1440
1452
|
}
|
|
1441
1453
|
},
|
|
1442
1454
|
compoundVariants: [
|
|
@@ -1447,22 +1459,56 @@ var buttonVariants = cva(
|
|
|
1447
1459
|
{
|
|
1448
1460
|
shape: "circle",
|
|
1449
1461
|
size: "tiny",
|
|
1450
|
-
className: "w-[var(--control-height-tiny,1.5rem)] px-0
|
|
1462
|
+
className: "w-[var(--control-height-tiny,1.5rem)] px-0"
|
|
1451
1463
|
},
|
|
1452
1464
|
{
|
|
1453
1465
|
shape: "circle",
|
|
1454
1466
|
size: "sm",
|
|
1455
|
-
className: "w-[var(--control-height-sm,2rem)] px-0
|
|
1467
|
+
className: "w-[var(--control-height-sm,2rem)] px-0"
|
|
1456
1468
|
},
|
|
1457
1469
|
{
|
|
1458
1470
|
shape: "circle",
|
|
1459
1471
|
size: "default",
|
|
1460
|
-
className: "w-[var(--control-height-md,2.5rem)] px-0
|
|
1472
|
+
className: "w-[var(--control-height-md,2.5rem)] px-0"
|
|
1461
1473
|
},
|
|
1462
1474
|
{
|
|
1463
1475
|
shape: "circle",
|
|
1464
1476
|
size: "lg",
|
|
1465
|
-
className: "w-[var(--control-height-lg,3rem)] px-0
|
|
1477
|
+
className: "w-[var(--control-height-lg,3rem)] px-0"
|
|
1478
|
+
},
|
|
1479
|
+
// iconSize wins over the size-driven box above — matched on shape +
|
|
1480
|
+
// iconSize only, so it applies regardless of whatever `size` was
|
|
1481
|
+
// passed (or left at its "default" fallback). Corner treatment stays
|
|
1482
|
+
// on the shape variant (token-backed); only the box is set here.
|
|
1483
|
+
{
|
|
1484
|
+
shape: "square",
|
|
1485
|
+
iconSize: "sm",
|
|
1486
|
+
className: "h-[var(--control-height-icon-sm,1.75rem)] w-[var(--control-height-icon-sm,1.75rem)] px-0"
|
|
1487
|
+
},
|
|
1488
|
+
{
|
|
1489
|
+
shape: "square",
|
|
1490
|
+
iconSize: "md",
|
|
1491
|
+
className: "h-[var(--control-height-icon-md,2rem)] w-[var(--control-height-icon-md,2rem)] px-0"
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
shape: "square",
|
|
1495
|
+
iconSize: "lg",
|
|
1496
|
+
className: "h-[var(--control-height-icon-lg,2.25rem)] w-[var(--control-height-icon-lg,2.25rem)] px-0"
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
shape: "circle",
|
|
1500
|
+
iconSize: "sm",
|
|
1501
|
+
className: "h-[var(--control-height-icon-sm,1.75rem)] w-[var(--control-height-icon-sm,1.75rem)] px-0"
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
shape: "circle",
|
|
1505
|
+
iconSize: "md",
|
|
1506
|
+
className: "h-[var(--control-height-icon-md,2rem)] w-[var(--control-height-icon-md,2rem)] px-0"
|
|
1507
|
+
},
|
|
1508
|
+
{
|
|
1509
|
+
shape: "circle",
|
|
1510
|
+
iconSize: "lg",
|
|
1511
|
+
className: "h-[var(--control-height-icon-lg,2.25rem)] w-[var(--control-height-icon-lg,2.25rem)] px-0"
|
|
1466
1512
|
}
|
|
1467
1513
|
],
|
|
1468
1514
|
defaultVariants: {
|
|
@@ -1484,7 +1530,10 @@ function Spinner({ className }) {
|
|
|
1484
1530
|
}
|
|
1485
1531
|
);
|
|
1486
1532
|
}
|
|
1487
|
-
function getIconSizeClass(size) {
|
|
1533
|
+
function getIconSizeClass(size, iconSize) {
|
|
1534
|
+
if (iconSize === "sm") return "[&>svg]:size-3.5";
|
|
1535
|
+
if (iconSize === "md") return "[&>svg]:size-3.5";
|
|
1536
|
+
if (iconSize === "lg") return "[&>svg]:size-4";
|
|
1488
1537
|
switch (size) {
|
|
1489
1538
|
case "tiny":
|
|
1490
1539
|
return "[&>svg]:size-3";
|
|
@@ -1499,7 +1548,10 @@ function getIconSizeClass(size) {
|
|
|
1499
1548
|
return "[&>svg]:size-4";
|
|
1500
1549
|
}
|
|
1501
1550
|
}
|
|
1502
|
-
function getSpinnerSizeClass(size) {
|
|
1551
|
+
function getSpinnerSizeClass(size, iconSize) {
|
|
1552
|
+
if (iconSize === "sm") return "size-3.5";
|
|
1553
|
+
if (iconSize === "md") return "size-3.5";
|
|
1554
|
+
if (iconSize === "lg") return "size-4";
|
|
1503
1555
|
switch (size) {
|
|
1504
1556
|
case "tiny":
|
|
1505
1557
|
return "size-3";
|
|
@@ -1524,10 +1576,10 @@ function resolveShadowClass(shadow) {
|
|
|
1524
1576
|
const level = shadow === true ? "md" : shadow;
|
|
1525
1577
|
return SHADOW_CLASSES[level];
|
|
1526
1578
|
}
|
|
1527
|
-
function ButtonContent({ loading, prefix, suffix, size, children }) {
|
|
1528
|
-
const iconSizeClass = getIconSizeClass(size);
|
|
1579
|
+
function ButtonContent({ loading, prefix, suffix, size, iconSize, children }) {
|
|
1580
|
+
const iconSizeClass = getIconSizeClass(size, iconSize);
|
|
1529
1581
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1530
|
-
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size) }),
|
|
1582
|
+
loading && /* @__PURE__ */ jsx(Spinner, { className: getSpinnerSizeClass(size, iconSize) }),
|
|
1531
1583
|
prefix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: prefix }),
|
|
1532
1584
|
children,
|
|
1533
1585
|
suffix != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: cn("shrink-0", iconSizeClass), children: suffix })
|
|
@@ -1538,6 +1590,7 @@ var Button = ({
|
|
|
1538
1590
|
variant,
|
|
1539
1591
|
size,
|
|
1540
1592
|
shape,
|
|
1593
|
+
iconSize,
|
|
1541
1594
|
asChild = false,
|
|
1542
1595
|
loading = false,
|
|
1543
1596
|
disabled,
|
|
@@ -1555,11 +1608,21 @@ var Button = ({
|
|
|
1555
1608
|
Comp,
|
|
1556
1609
|
{
|
|
1557
1610
|
ref,
|
|
1558
|
-
className: cn(buttonVariants({ variant, size, shape }), shadowClass, className),
|
|
1611
|
+
className: cn(buttonVariants({ variant, size, shape, iconSize }), shadowClass, className),
|
|
1559
1612
|
disabled: isDisabled,
|
|
1560
1613
|
"aria-busy": loading || void 0,
|
|
1561
1614
|
...props,
|
|
1562
|
-
children: asChild ? children : /* @__PURE__ */ jsx(
|
|
1615
|
+
children: asChild ? children : /* @__PURE__ */ jsx(
|
|
1616
|
+
ButtonContent,
|
|
1617
|
+
{
|
|
1618
|
+
loading,
|
|
1619
|
+
prefix,
|
|
1620
|
+
suffix,
|
|
1621
|
+
size,
|
|
1622
|
+
iconSize,
|
|
1623
|
+
children
|
|
1624
|
+
}
|
|
1625
|
+
)
|
|
1563
1626
|
}
|
|
1564
1627
|
);
|
|
1565
1628
|
};
|
|
@@ -1626,23 +1689,62 @@ var tabsTokens = {
|
|
|
1626
1689
|
};
|
|
1627
1690
|
|
|
1628
1691
|
// src/utils/primitive-props.ts
|
|
1692
|
+
function asPlainStyle(style) {
|
|
1693
|
+
if (style == null || typeof style === "function") return {};
|
|
1694
|
+
return style;
|
|
1695
|
+
}
|
|
1629
1696
|
function withHtmlProps(Component) {
|
|
1630
1697
|
return Component;
|
|
1631
1698
|
}
|
|
1632
1699
|
var DEFAULT_TOOLTIP_DELAY_MS = 150;
|
|
1700
|
+
var SKIP_DELAY_WINDOW_MS = 400;
|
|
1701
|
+
var lastTooltipOpenAt = 0;
|
|
1702
|
+
var skipDelayListeners = /* @__PURE__ */ new Set();
|
|
1703
|
+
function markTooltipOpened() {
|
|
1704
|
+
lastTooltipOpenAt = Date.now();
|
|
1705
|
+
for (const listener of skipDelayListeners) listener();
|
|
1706
|
+
}
|
|
1707
|
+
function shouldSkipDelay() {
|
|
1708
|
+
return Date.now() - lastTooltipOpenAt < SKIP_DELAY_WINDOW_MS;
|
|
1709
|
+
}
|
|
1710
|
+
function useSkipDelay() {
|
|
1711
|
+
const [, tick] = React.useReducer((count) => count + 1, 0);
|
|
1712
|
+
React.useEffect(() => {
|
|
1713
|
+
skipDelayListeners.add(tick);
|
|
1714
|
+
return () => {
|
|
1715
|
+
skipDelayListeners.delete(tick);
|
|
1716
|
+
};
|
|
1717
|
+
}, []);
|
|
1718
|
+
return shouldSkipDelay();
|
|
1719
|
+
}
|
|
1720
|
+
var TooltipInstantContext = React.createContext(false);
|
|
1633
1721
|
var TooltipProvider = ({
|
|
1634
1722
|
children,
|
|
1635
1723
|
delayDuration = DEFAULT_TOOLTIP_DELAY_MS
|
|
1636
1724
|
}) => {
|
|
1637
|
-
|
|
1725
|
+
const skipDelay = useSkipDelay();
|
|
1726
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay: skipDelay ? 0 : delayDuration, children });
|
|
1638
1727
|
};
|
|
1639
1728
|
var Tooltip = ({
|
|
1640
1729
|
delayDuration,
|
|
1641
1730
|
children,
|
|
1731
|
+
onOpenChange,
|
|
1642
1732
|
...props
|
|
1643
1733
|
}) => {
|
|
1644
|
-
const
|
|
1645
|
-
|
|
1734
|
+
const skipDelay = useSkipDelay();
|
|
1735
|
+
const instant = delayDuration == null && skipDelay;
|
|
1736
|
+
const delay = delayDuration ?? (instant ? 0 : DEFAULT_TOOLTIP_DELAY_MS);
|
|
1737
|
+
return /* @__PURE__ */ jsx(TooltipInstantContext.Provider, { value: instant, children: /* @__PURE__ */ jsx(Tooltip$1.Provider, { delay, children: /* @__PURE__ */ jsx(
|
|
1738
|
+
Tooltip$1.Root,
|
|
1739
|
+
{
|
|
1740
|
+
...props,
|
|
1741
|
+
onOpenChange: (open, eventDetails) => {
|
|
1742
|
+
if (open) markTooltipOpened();
|
|
1743
|
+
onOpenChange?.(open, eventDetails);
|
|
1744
|
+
},
|
|
1745
|
+
children
|
|
1746
|
+
}
|
|
1747
|
+
) }) });
|
|
1646
1748
|
};
|
|
1647
1749
|
var TooltipTrigger = ({
|
|
1648
1750
|
asChild,
|
|
@@ -1672,25 +1774,29 @@ var TooltipContent = ({
|
|
|
1672
1774
|
alignOffset = 0,
|
|
1673
1775
|
ref,
|
|
1674
1776
|
...props
|
|
1675
|
-
}) =>
|
|
1676
|
-
|
|
1677
|
-
{
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1777
|
+
}) => {
|
|
1778
|
+
const instant = React.use(TooltipInstantContext);
|
|
1779
|
+
return /* @__PURE__ */ jsx(Tooltip$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
1780
|
+
Tooltip$1.Positioner,
|
|
1781
|
+
{
|
|
1782
|
+
side,
|
|
1783
|
+
align,
|
|
1784
|
+
sideOffset,
|
|
1785
|
+
alignOffset,
|
|
1786
|
+
style: { zIndex: overlayZIndex.tooltip },
|
|
1787
|
+
children: /* @__PURE__ */ jsx(
|
|
1788
|
+
Tooltip$1.Popup,
|
|
1789
|
+
{
|
|
1790
|
+
ref,
|
|
1791
|
+
className: cn(overlayClassNames.tooltipSurface, className),
|
|
1792
|
+
"data-instant": instant || void 0,
|
|
1793
|
+
style: { zIndex: overlayZIndex.tooltip, ...style },
|
|
1794
|
+
...props
|
|
1795
|
+
}
|
|
1796
|
+
)
|
|
1797
|
+
}
|
|
1798
|
+
) });
|
|
1799
|
+
};
|
|
1694
1800
|
TooltipContent.displayName = "TooltipContent";
|
|
1695
1801
|
var BaseRoot = withHtmlProps(Tabs$1.Root);
|
|
1696
1802
|
var BaseList = withHtmlProps(Tabs$1.List);
|
|
@@ -1736,7 +1842,7 @@ var tabsListVariants = cva(
|
|
|
1736
1842
|
}
|
|
1737
1843
|
);
|
|
1738
1844
|
var tabsTriggerVariants = cva(
|
|
1739
|
-
"relative inline-flex h-[calc(var(--tabs-height)-var(--tabs-padding)*2)] min-w-[var(--tabs-trigger-min-width)] shrink-0 cursor-pointer items-center justify-center gap-[var(--tabs-trigger-gap)] whitespace-nowrap rounded-[var(--tabs-trigger-radius)] px-[var(--tabs-trigger-padding-x)] font-medium text-[length:var(--tabs-font-size)] outline-none transition-[background-color,border-color,box-shadow,color,opacity] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)]
|
|
1845
|
+
"relative inline-flex h-[calc(var(--tabs-height)-var(--tabs-padding)*2)] min-w-[var(--tabs-trigger-min-width)] shrink-0 cursor-pointer items-center justify-center gap-[var(--tabs-trigger-gap)] whitespace-nowrap rounded-[var(--tabs-trigger-radius)] px-[var(--tabs-trigger-padding-x)] font-medium text-[length:var(--tabs-font-size)] outline-none transition-[background-color,border-color,box-shadow,color,opacity] duration-[var(--tabs-duration)] ease-[var(--tabs-easing)] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:pointer-events-none data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:size-[var(--tabs-icon-size)] [&_svg]:shrink-0",
|
|
1740
1846
|
{
|
|
1741
1847
|
variants: {
|
|
1742
1848
|
variant: {
|
|
@@ -1773,7 +1879,7 @@ var tabsIndicatorVariants = cva(
|
|
|
1773
1879
|
}
|
|
1774
1880
|
);
|
|
1775
1881
|
var tabsContentVariants = cva(
|
|
1776
|
-
"mt-[var(--tabs-panel-gap)] text-[length:var(--tabs-font-size)] text-muted-foreground focus-visible:outline-none
|
|
1882
|
+
"mt-[var(--tabs-panel-gap)] text-[length:var(--tabs-font-size)] text-muted-foreground focus-visible:outline-none",
|
|
1777
1883
|
{
|
|
1778
1884
|
variants: {
|
|
1779
1885
|
variant: {
|
|
@@ -1815,7 +1921,7 @@ function getTabsStyle(size, style) {
|
|
|
1815
1921
|
"--tabs-badge-font-size": `${tabsTokens.badgeFontSize}px`,
|
|
1816
1922
|
"--tabs-duration": `${tabsTokens.motion.duration}ms`,
|
|
1817
1923
|
"--tabs-easing": tabsTokens.motion.easing,
|
|
1818
|
-
...style
|
|
1924
|
+
...asPlainStyle(style)
|
|
1819
1925
|
};
|
|
1820
1926
|
}
|
|
1821
1927
|
function getFirstEnabledValue(tabs) {
|
|
@@ -2046,7 +2152,7 @@ function getTextareaStyle(size, style) {
|
|
|
2046
2152
|
"--textarea-focus-ring-width": `${textareaTokens.focusRingWidth}px`,
|
|
2047
2153
|
borderRadius: "var(--textarea-radius)",
|
|
2048
2154
|
outline: "none",
|
|
2049
|
-
...style
|
|
2155
|
+
...asPlainStyle(style)
|
|
2050
2156
|
};
|
|
2051
2157
|
}
|
|
2052
2158
|
function getTextareaFieldStyle() {
|
|
@@ -2294,7 +2400,7 @@ function MarkdownEditor({
|
|
|
2294
2400
|
value,
|
|
2295
2401
|
onChange: (e) => onChange(e.target.value),
|
|
2296
2402
|
placeholder,
|
|
2297
|
-
className: "resize-none rounded-none border-0 font-mono text-sm shadow-none
|
|
2403
|
+
className: "resize-none rounded-none border-0 font-mono text-sm shadow-none",
|
|
2298
2404
|
style: { minHeight }
|
|
2299
2405
|
}
|
|
2300
2406
|
) }),
|
|
@@ -2397,9 +2503,18 @@ function getAvatarFallbackClass(size) {
|
|
|
2397
2503
|
}
|
|
2398
2504
|
function getAvatarStyle(size, style) {
|
|
2399
2505
|
if (typeof size !== "number") return style;
|
|
2400
|
-
|
|
2506
|
+
const numericVars = {
|
|
2401
2507
|
"--avatar-size": `${size}px`,
|
|
2402
|
-
"--avatar-font-size": `${Math.max(10, Math.round(size * 0.375))}px
|
|
2508
|
+
"--avatar-font-size": `${Math.max(10, Math.round(size * 0.375))}px`
|
|
2509
|
+
};
|
|
2510
|
+
if (typeof style === "function") {
|
|
2511
|
+
return (state) => ({
|
|
2512
|
+
...numericVars,
|
|
2513
|
+
...style(state)
|
|
2514
|
+
});
|
|
2515
|
+
}
|
|
2516
|
+
return {
|
|
2517
|
+
...numericVars,
|
|
2403
2518
|
...style
|
|
2404
2519
|
};
|
|
2405
2520
|
}
|
|
@@ -2674,7 +2789,7 @@ function QAPage({
|
|
|
2674
2789
|
return bScore - aScore;
|
|
2675
2790
|
});
|
|
2676
2791
|
}, [answers]);
|
|
2677
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("mx-auto w-full max-w-
|
|
2792
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("mx-auto w-full max-w-content p-4 md:p-6", className), children: [
|
|
2678
2793
|
/* @__PURE__ */ jsxs("header", { className: "mb-6", children: [
|
|
2679
2794
|
/* @__PURE__ */ jsx("h1", { className: "mb-4 font-bold text-2xl leading-tight text-foreground", children: question.title }),
|
|
2680
2795
|
/* @__PURE__ */ jsxs("div", { className: "mb-4 flex items-center gap-4 text-muted-foreground text-sm", children: [
|
|
@@ -3160,7 +3275,7 @@ function SidebarNav({
|
|
|
3160
3275
|
return /* @__PURE__ */ jsxs("section", { className: "group/section", children: [
|
|
3161
3276
|
section.label && !collapsed ? /* @__PURE__ */ jsxs("div", { className: "mb-1.5 flex items-center justify-between px-2.5", children: [
|
|
3162
3277
|
/* @__PURE__ */ jsx("span", { className: "text-[10px] font-semibold uppercase tracking-[0.18em] text-sidebar-foreground/45", children: section.label }),
|
|
3163
|
-
visibleActions ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 opacity-0 transition-opacity duration-
|
|
3278
|
+
visibleActions ? /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 opacity-0 transition-opacity duration-micro group-hover/section:opacity-100 focus-within:opacity-100", children: visibleActions.map((action) => {
|
|
3164
3279
|
const ActionIcon = action.icon;
|
|
3165
3280
|
const defaultButton = /* @__PURE__ */ jsx(
|
|
3166
3281
|
"button",
|
|
@@ -3169,7 +3284,7 @@ function SidebarNav({
|
|
|
3169
3284
|
"aria-label": action.label,
|
|
3170
3285
|
title: action.label,
|
|
3171
3286
|
onClick: action.onClick,
|
|
3172
|
-
className: "inline-flex size-4 items-center justify-center rounded text-sidebar-foreground/50 transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-none
|
|
3287
|
+
className: "inline-flex size-4 items-center justify-center rounded text-sidebar-foreground/50 transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-none",
|
|
3173
3288
|
children: /* @__PURE__ */ jsx(ActionIcon, { className: "size-3" })
|
|
3174
3289
|
}
|
|
3175
3290
|
);
|
|
@@ -3397,7 +3512,7 @@ function DefaultTrigger({ user }) {
|
|
|
3397
3512
|
className: cn(
|
|
3398
3513
|
"inline-flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-full",
|
|
3399
3514
|
"outline-none transition-[box-shadow,opacity] hover:opacity-90",
|
|
3400
|
-
"
|
|
3515
|
+
"",
|
|
3401
3516
|
"hover:ring-1 hover:ring-border"
|
|
3402
3517
|
),
|
|
3403
3518
|
children: /* @__PURE__ */ jsxs(Avatar, { size: "sm", children: [
|
|
@@ -3492,7 +3607,7 @@ function getInitials(workspace) {
|
|
|
3492
3607
|
if (!trimmed) return "??";
|
|
3493
3608
|
const parts = trimmed.split(/\s+/).filter(Boolean);
|
|
3494
3609
|
if (parts.length >= 2) {
|
|
3495
|
-
return `${parts[0][0] ?? ""}${parts[1][0] ?? ""}`.toUpperCase();
|
|
3610
|
+
return `${parts[0]?.[0] ?? ""}${parts[1]?.[0] ?? ""}`.toUpperCase();
|
|
3496
3611
|
}
|
|
3497
3612
|
return trimmed.slice(0, 2).toUpperCase();
|
|
3498
3613
|
}
|
|
@@ -3549,7 +3664,7 @@ function TriggerButton({
|
|
|
3549
3664
|
className: cn(
|
|
3550
3665
|
"inline-flex items-center gap-1 rounded-[var(--radius-md)] p-1 outline-none transition-colors",
|
|
3551
3666
|
"hover:bg-accent hover:text-accent-foreground",
|
|
3552
|
-
"
|
|
3667
|
+
"",
|
|
3553
3668
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
3554
3669
|
className
|
|
3555
3670
|
),
|
|
@@ -3570,7 +3685,7 @@ function TriggerButton({
|
|
|
3570
3685
|
className: cn(
|
|
3571
3686
|
"inline-flex w-full items-center gap-2 rounded-[var(--radius-md)] border border-border bg-background px-2 py-1 text-left outline-none transition-colors",
|
|
3572
3687
|
"hover:bg-accent hover:text-accent-foreground",
|
|
3573
|
-
"
|
|
3688
|
+
"",
|
|
3574
3689
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
3575
3690
|
className
|
|
3576
3691
|
),
|