@tutti-os/ui-system 0.0.2 → 0.0.4
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/agent/nextop-ui-system/scripts/create-business-preview.mjs +3 -3
- package/dist/{chunk-UTUVPSKL.js → chunk-FVHI3UMS.js} +10 -2
- package/dist/chunk-FVHI3UMS.js.map +1 -0
- package/dist/{chunk-2AUYRRDG.js → chunk-HJ43LQHW.js} +578 -125
- package/dist/chunk-HJ43LQHW.js.map +1 -0
- package/dist/components/index.d.ts +18 -9
- package/dist/components/index.js +2 -2
- package/dist/icons/index.d.ts +3 -1
- package/dist/icons/index.js +5 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -2
- package/dist/metadata/components.json +28 -0
- package/dist/metadata/index.js +28 -0
- package/dist/metadata/index.js.map +1 -1
- package/dist/styles/theme.css +42 -6
- package/package.json +1 -1
- package/dist/chunk-2AUYRRDG.js.map +0 -1
- package/dist/chunk-UTUVPSKL.js.map +0 -1
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
SuccessFilledIcon,
|
|
16
16
|
WarningFilledIcon,
|
|
17
17
|
WarningLinedIcon
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FVHI3UMS.js";
|
|
19
19
|
import {
|
|
20
20
|
cn
|
|
21
21
|
} from "./chunk-DGPY4WP3.js";
|
|
@@ -108,7 +108,7 @@ import { cva as cva3 } from "class-variance-authority";
|
|
|
108
108
|
import { Slot as Slot3 } from "radix-ui";
|
|
109
109
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
110
110
|
var buttonVariants = cva3(
|
|
111
|
-
"group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent bg-clip-padding text-
|
|
111
|
+
"group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent bg-clip-padding text-[13px] font-normal whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
112
112
|
{
|
|
113
113
|
variants: {
|
|
114
114
|
variant: {
|
|
@@ -121,13 +121,13 @@ var buttonVariants = cva3(
|
|
|
121
121
|
link: "text-primary underline-offset-4 hover:underline"
|
|
122
122
|
},
|
|
123
123
|
size: {
|
|
124
|
-
default: "h-8 gap-[6px] px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
|
|
125
|
-
dialog: "h-8 gap-[6px] rounded-md px-3 text-
|
|
126
|
-
xs: "h-6 gap-1 rounded-sm px-2 text-
|
|
127
|
-
sm: "h-7 gap-1 rounded-sm px-2.5 text-[
|
|
128
|
-
lg: "h-9 gap-2 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5",
|
|
124
|
+
default: "h-8 gap-[6px] px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5",
|
|
125
|
+
dialog: "h-8 gap-[6px] rounded-md px-3 text-[13px] font-normal leading-5 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5",
|
|
126
|
+
xs: "h-6 gap-1 rounded-sm px-2 text-[11px] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-2.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-2.5",
|
|
127
|
+
sm: "h-7 gap-1 rounded-sm px-2.5 text-[13px] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3",
|
|
128
|
+
lg: "h-9 gap-2 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5",
|
|
129
129
|
icon: "size-8",
|
|
130
|
-
"icon-xs": "size-6 rounded-sm in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
130
|
+
"icon-xs": "size-6 rounded-sm in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-2.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-2.5",
|
|
131
131
|
"icon-sm": "size-7 rounded-sm in-data-[slot=button-group]:rounded-md",
|
|
132
132
|
"icon-lg": "size-9"
|
|
133
133
|
}
|
|
@@ -178,7 +178,7 @@ function Card({
|
|
|
178
178
|
"data-slot": "card",
|
|
179
179
|
"data-size": size,
|
|
180
180
|
className: cn(
|
|
181
|
-
"group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-border/70 bg-card py-4 text-
|
|
181
|
+
"group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-border/70 bg-card py-4 text-[13px] text-card-foreground shadow-none has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg",
|
|
182
182
|
className
|
|
183
183
|
),
|
|
184
184
|
...props
|
|
@@ -204,7 +204,7 @@ function CardTitle({ className, ...props }) {
|
|
|
204
204
|
{
|
|
205
205
|
"data-slot": "card-title",
|
|
206
206
|
className: cn(
|
|
207
|
-
"text-
|
|
207
|
+
"text-[15px] leading-snug font-medium group-data-[size=sm]/card:text-[13px]",
|
|
208
208
|
className
|
|
209
209
|
),
|
|
210
210
|
...props
|
|
@@ -216,7 +216,10 @@ function CardDescription({ className, ...props }) {
|
|
|
216
216
|
"div",
|
|
217
217
|
{
|
|
218
218
|
"data-slot": "card-description",
|
|
219
|
-
className: cn(
|
|
219
|
+
className: cn(
|
|
220
|
+
"text-[13px] leading-[1.3] text-muted-foreground",
|
|
221
|
+
className
|
|
222
|
+
),
|
|
220
223
|
...props
|
|
221
224
|
}
|
|
222
225
|
);
|
|
@@ -391,7 +394,7 @@ function DialogContent({
|
|
|
391
394
|
forceMount: true,
|
|
392
395
|
className: cn(
|
|
393
396
|
portaled ? "fixed" : "absolute",
|
|
394
|
-
"pointer-events-none top-1/2 left-1/2 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 origin-center gap-3 rounded-[16px] border border-border-1 bg-[var(--background-panel)] p-[18px] text-
|
|
397
|
+
"pointer-events-none top-1/2 left-1/2 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 origin-center gap-3 rounded-[16px] border border-border-1 bg-[var(--background-panel)] p-[18px] text-[13px] text-foreground shadow-panel outline-none ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[transform,opacity] sm:max-w-[360px] data-[state=closed]:!pointer-events-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.96] data-[state=closed]:duration-[150ms] data-[state=open]:pointer-events-auto data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-[0.96] data-[state=open]:duration-[250ms] motion-reduce:animate-none",
|
|
395
398
|
className
|
|
396
399
|
),
|
|
397
400
|
style: { zIndex: "var(--z-dialog)", ...style },
|
|
@@ -460,7 +463,7 @@ function DialogTitle({
|
|
|
460
463
|
{
|
|
461
464
|
"data-slot": "dialog-title",
|
|
462
465
|
className: cn(
|
|
463
|
-
"text-
|
|
466
|
+
"text-[15px] leading-[1.35] font-semibold tracking-normal text-foreground",
|
|
464
467
|
className
|
|
465
468
|
),
|
|
466
469
|
...props
|
|
@@ -476,7 +479,7 @@ function DialogDescription({
|
|
|
476
479
|
{
|
|
477
480
|
"data-slot": "dialog-description",
|
|
478
481
|
className: cn(
|
|
479
|
-
"text-
|
|
482
|
+
"text-[13px] font-[400] leading-[1.3] text-text-secondary *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
480
483
|
className
|
|
481
484
|
),
|
|
482
485
|
...props
|
|
@@ -538,7 +541,7 @@ function ConfirmationDialog({
|
|
|
538
541
|
/* @__PURE__ */ jsx7(DialogTitle, { children: title }),
|
|
539
542
|
description ? /* @__PURE__ */ jsx7(DialogDescription, { children: description }) : null
|
|
540
543
|
] }),
|
|
541
|
-
children ? /* @__PURE__ */ jsx7("div", { className: "text-
|
|
544
|
+
children ? /* @__PURE__ */ jsx7("div", { className: "text-[13px] leading-[1.3] text-text-secondary", children }) : null,
|
|
542
545
|
footer ?? /* @__PURE__ */ jsxs2(DialogFooter, { children: [
|
|
543
546
|
/* @__PURE__ */ jsx7(
|
|
544
547
|
Button,
|
|
@@ -796,7 +799,7 @@ var DatePicker = React2.forwardRef(
|
|
|
796
799
|
disabled,
|
|
797
800
|
type: "button",
|
|
798
801
|
className: cn(
|
|
799
|
-
"inline-flex h-8 min-h-8 w-full items-center justify-start rounded-md border border-transparent bg-[var(--workbench-field-bg)] px-3 text-left text-
|
|
802
|
+
"inline-flex h-8 min-h-8 w-full items-center justify-start rounded-md border border-transparent bg-[var(--workbench-field-bg)] px-3 text-left text-[13px] text-foreground transition-[background-color,border-color,box-shadow,color] outline-none hover:bg-muted/60 focus-visible:border-border focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:bg-muted disabled:text-muted-foreground disabled:opacity-100",
|
|
800
803
|
!selectedDate && "text-muted-foreground",
|
|
801
804
|
className
|
|
802
805
|
),
|
|
@@ -830,7 +833,7 @@ var DatePicker = React2.forwardRef(
|
|
|
830
833
|
},
|
|
831
834
|
children: [
|
|
832
835
|
/* @__PURE__ */ jsxs3("div", { className: "mb-3 flex items-center justify-between gap-2", children: [
|
|
833
|
-
/* @__PURE__ */ jsx8("div", { className: "text-
|
|
836
|
+
/* @__PURE__ */ jsx8("div", { className: "text-[13px] font-semibold text-foreground", children: formatMonthLabel(visibleMonth) }),
|
|
834
837
|
/* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-1", children: [
|
|
835
838
|
/* @__PURE__ */ jsx8(
|
|
836
839
|
"button",
|
|
@@ -866,7 +869,7 @@ var DatePicker = React2.forwardRef(
|
|
|
866
869
|
)
|
|
867
870
|
] })
|
|
868
871
|
] }),
|
|
869
|
-
/* @__PURE__ */ jsx8("div", { className: "grid grid-cols-7 gap-1 text-center text-
|
|
872
|
+
/* @__PURE__ */ jsx8("div", { className: "grid grid-cols-7 gap-1 text-center text-[11px] font-semibold text-muted-foreground", children: resolvedLabels.weekdayLabels.map((day) => /* @__PURE__ */ jsx8("div", { className: "py-1", children: day }, day)) }),
|
|
870
873
|
/* @__PURE__ */ jsx8(
|
|
871
874
|
"div",
|
|
872
875
|
{
|
|
@@ -881,7 +884,7 @@ var DatePicker = React2.forwardRef(
|
|
|
881
884
|
{
|
|
882
885
|
"aria-pressed": isSelected,
|
|
883
886
|
className: cn(
|
|
884
|
-
"inline-flex h-8 w-8 items-center justify-center rounded-sm text-
|
|
887
|
+
"inline-flex h-8 w-8 items-center justify-center rounded-sm text-[13px] transition-[background-color,color,box-shadow] hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
|
|
885
888
|
inCurrentMonth ? "text-foreground" : "text-muted-foreground",
|
|
886
889
|
isToday && "bg-primary/10 text-primary shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-primary)_20%,transparent)]",
|
|
887
890
|
isSelected && "bg-primary text-primary-foreground hover:bg-primary"
|
|
@@ -900,7 +903,7 @@ var DatePicker = React2.forwardRef(
|
|
|
900
903
|
/* @__PURE__ */ jsx8(
|
|
901
904
|
"button",
|
|
902
905
|
{
|
|
903
|
-
className: "inline-flex min-h-8 items-center justify-center rounded-sm px-3 text-
|
|
906
|
+
className: "inline-flex min-h-8 items-center justify-center rounded-sm px-3 text-[13px] font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
904
907
|
type: "button",
|
|
905
908
|
onClick: () => {
|
|
906
909
|
onValueChange?.("");
|
|
@@ -913,7 +916,7 @@ var DatePicker = React2.forwardRef(
|
|
|
913
916
|
/* @__PURE__ */ jsx8(
|
|
914
917
|
"button",
|
|
915
918
|
{
|
|
916
|
-
className: "inline-flex min-h-8 items-center justify-center rounded-sm bg-primary px-3 text-
|
|
919
|
+
className: "inline-flex min-h-8 items-center justify-center rounded-sm bg-primary px-3 text-[13px] font-medium text-primary-foreground transition-opacity hover:opacity-90",
|
|
917
920
|
type: "button",
|
|
918
921
|
onClick: () => selectDate(today),
|
|
919
922
|
children: resolvedLabels.today
|
|
@@ -986,7 +989,7 @@ function DrawerContent({
|
|
|
986
989
|
{
|
|
987
990
|
"data-slot": "drawer-content",
|
|
988
991
|
className: cn(
|
|
989
|
-
"group/drawer-content fixed flex h-auto flex-col border-[var(--border-1)] bg-background-fronted text-
|
|
992
|
+
"group/drawer-content fixed flex h-auto flex-col border-[var(--border-1)] bg-background-fronted text-[13px] text-foreground shadow-panel outline-none",
|
|
990
993
|
"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t",
|
|
991
994
|
"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
|
|
992
995
|
"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
|
|
@@ -1035,7 +1038,7 @@ function DrawerTitle({
|
|
|
1035
1038
|
{
|
|
1036
1039
|
"data-slot": "drawer-title",
|
|
1037
1040
|
className: cn(
|
|
1038
|
-
"text-
|
|
1041
|
+
"text-[15px] font-medium leading-[1.35] text-foreground",
|
|
1039
1042
|
className
|
|
1040
1043
|
),
|
|
1041
1044
|
...props
|
|
@@ -1050,7 +1053,7 @@ function DrawerDescription({
|
|
|
1050
1053
|
DrawerPrimitive.Description,
|
|
1051
1054
|
{
|
|
1052
1055
|
"data-slot": "drawer-description",
|
|
1053
|
-
className: cn("text-
|
|
1056
|
+
className: cn("text-[13px] text-muted-foreground", className),
|
|
1054
1057
|
...props
|
|
1055
1058
|
}
|
|
1056
1059
|
);
|
|
@@ -1063,10 +1066,10 @@ import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
|
1063
1066
|
import * as React3 from "react";
|
|
1064
1067
|
import { Slot as Slot4 } from "radix-ui";
|
|
1065
1068
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1066
|
-
var menuSurfaceClassName = "t-dropdown flex flex-col gap-0.5 rounded-[8px] border border-[var(--border-1)] bg-[var(--background-fronted)] p-1 text-
|
|
1067
|
-
var menuItemClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-
|
|
1069
|
+
var menuSurfaceClassName = "t-dropdown flex flex-col gap-0.5 rounded-[8px] border border-[var(--border-1)] bg-[var(--background-fronted)] p-1 text-[13px] text-[var(--text-primary)] shadow-panel outline-none";
|
|
1070
|
+
var menuItemClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2";
|
|
1068
1071
|
var menuItemWithIndicatorClassName = `${menuItemClassName} pr-8`;
|
|
1069
|
-
var menuItemIndicatorClassName = "pointer-events-none absolute right-2 flex size-4 items-center justify-center text-[var(--
|
|
1072
|
+
var menuItemIndicatorClassName = "pointer-events-none absolute right-2 flex size-4 items-center justify-center text-[var(--tutti-purple)]";
|
|
1070
1073
|
var MenuSurface = React3.forwardRef(
|
|
1071
1074
|
({
|
|
1072
1075
|
asChild = false,
|
|
@@ -1203,7 +1206,7 @@ function DropdownMenuCheckboxItem({
|
|
|
1203
1206
|
{
|
|
1204
1207
|
className: menuItemIndicatorClassName,
|
|
1205
1208
|
"data-slot": "dropdown-menu-checkbox-item-indicator",
|
|
1206
|
-
children: /* @__PURE__ */ jsx11(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx11(CheckIcon, {}) })
|
|
1209
|
+
children: /* @__PURE__ */ jsx11(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx11(CheckIcon, { className: "text-[var(--tutti-purple)]" }) })
|
|
1207
1210
|
}
|
|
1208
1211
|
),
|
|
1209
1212
|
children
|
|
@@ -1247,7 +1250,7 @@ function DropdownMenuRadioItem({
|
|
|
1247
1250
|
{
|
|
1248
1251
|
className: menuItemIndicatorClassName,
|
|
1249
1252
|
"data-slot": "dropdown-menu-radio-item-indicator",
|
|
1250
|
-
children: /* @__PURE__ */ jsx11(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx11(CheckIcon, {}) })
|
|
1253
|
+
children: /* @__PURE__ */ jsx11(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx11(CheckIcon, { className: "text-[var(--tutti-purple)]" }) })
|
|
1251
1254
|
}
|
|
1252
1255
|
),
|
|
1253
1256
|
children
|
|
@@ -1266,7 +1269,7 @@ function DropdownMenuLabel({
|
|
|
1266
1269
|
"data-inset": inset,
|
|
1267
1270
|
"data-slot": "dropdown-menu-label",
|
|
1268
1271
|
className: cn(
|
|
1269
|
-
"px-1.5 py-1 text-
|
|
1272
|
+
"px-1.5 py-1 text-[11px] font-medium text-[var(--text-secondary)] data-inset:pl-7",
|
|
1270
1273
|
className
|
|
1271
1274
|
),
|
|
1272
1275
|
...props
|
|
@@ -1295,7 +1298,7 @@ function DropdownMenuShortcut({
|
|
|
1295
1298
|
{
|
|
1296
1299
|
"data-slot": "dropdown-menu-shortcut",
|
|
1297
1300
|
className: cn(
|
|
1298
|
-
"ml-auto text-
|
|
1301
|
+
"ml-auto text-[11px] tracking-widest text-[var(--text-secondary)] group-focus/dropdown-menu-item:text-[var(--text-primary)]",
|
|
1299
1302
|
className
|
|
1300
1303
|
),
|
|
1301
1304
|
...props
|
|
@@ -1362,10 +1365,10 @@ function DropdownMenuSubContent({
|
|
|
1362
1365
|
// src/components/input/input.tsx
|
|
1363
1366
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
1364
1367
|
var inputVariantClassNames = {
|
|
1365
|
-
default: "h-8 rounded-[6px] px-3 py-0 text-
|
|
1366
|
-
lg: "h-12 rounded-[8px] px-4 py-3 text-
|
|
1367
|
-
md: "h-8 rounded-[6px] px-3 py-0 text-
|
|
1368
|
-
sm: "h-8 rounded-[6px] px-3 py-0 text-
|
|
1368
|
+
default: "h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]",
|
|
1369
|
+
lg: "h-12 rounded-[8px] px-4 py-3 text-[15px] leading-[1.3]",
|
|
1370
|
+
md: "h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]",
|
|
1371
|
+
sm: "h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]",
|
|
1369
1372
|
otp: "h-12 w-12 rounded-[4px] px-0 text-center text-xl font-medium sm:h-14 sm:w-14 sm:text-2xl"
|
|
1370
1373
|
};
|
|
1371
1374
|
function Input({
|
|
@@ -1384,9 +1387,9 @@ function Input({
|
|
|
1384
1387
|
"data-size": size,
|
|
1385
1388
|
"data-variant": resolvedVariant,
|
|
1386
1389
|
className: cn(
|
|
1387
|
-
"w-full min-w-0 border border-transparent bg-[var(--transparency-block)] font-normal text-[var(--text-primary)] shadow-none transition-colors duration-200 outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-
|
|
1390
|
+
"w-full min-w-0 border border-transparent bg-[var(--transparency-block)] font-normal text-[var(--text-primary)] shadow-none transition-colors duration-200 outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-[13px] file:font-medium file:text-[var(--text-primary)] placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none",
|
|
1388
1391
|
inputVariantClassNames[resolvedVariant],
|
|
1389
|
-
!variant && size === "sm" && "h-7 rounded-[4px] px-2 text-
|
|
1392
|
+
!variant && size === "sm" && "h-7 rounded-[4px] px-2 text-[11px]",
|
|
1390
1393
|
className
|
|
1391
1394
|
),
|
|
1392
1395
|
...props
|
|
@@ -1431,7 +1434,7 @@ function MentionPill({
|
|
|
1431
1434
|
"span",
|
|
1432
1435
|
{
|
|
1433
1436
|
className: cn(
|
|
1434
|
-
"group relative top-[3px] inline-flex max-w-full cursor-default items-center overflow-hidden rounded-[4px] border border-transparent bg-transparent py-0.5 align-baseline text-
|
|
1437
|
+
"group relative top-[3px] inline-flex max-w-full cursor-default items-center overflow-hidden rounded-[4px] border border-transparent bg-transparent py-0.5 align-baseline text-[13px] font-medium leading-5 no-underline transition-colors hover:border-transparent hover:bg-[color-mix(in_srgb,currentColor_12%,transparent)]",
|
|
1435
1438
|
isFile ? "gap-1.5 px-1.5" : "gap-1 px-1",
|
|
1436
1439
|
className
|
|
1437
1440
|
),
|
|
@@ -1540,7 +1543,7 @@ function PopoverContent({
|
|
|
1540
1543
|
align,
|
|
1541
1544
|
sideOffset,
|
|
1542
1545
|
className: cn(
|
|
1543
|
-
"t-dropdown z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg border border-[var(--border-1)] bg-[var(--background-fronted)] p-3 text-
|
|
1546
|
+
"t-dropdown z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg border border-[var(--border-1)] bg-[var(--background-fronted)] p-3 text-[13px] text-popover-foreground shadow-soft outline-hidden",
|
|
1544
1547
|
className
|
|
1545
1548
|
),
|
|
1546
1549
|
style: { zIndex: "var(--z-popover)" },
|
|
@@ -1600,11 +1603,94 @@ function ResizableHandle({
|
|
|
1600
1603
|
|
|
1601
1604
|
// src/components/scroll-area/scroll-area.tsx
|
|
1602
1605
|
import * as React4 from "react";
|
|
1603
|
-
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
1604
1606
|
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1607
|
+
var MIN_THUMB_SIZE_PX = 24;
|
|
1605
1608
|
function ScrollArea({
|
|
1606
1609
|
className,
|
|
1607
1610
|
children,
|
|
1611
|
+
onBlur,
|
|
1612
|
+
onFocus,
|
|
1613
|
+
onMouseEnter,
|
|
1614
|
+
onMouseLeave,
|
|
1615
|
+
scrollbarMode = "custom",
|
|
1616
|
+
scrollHideDelay: _scrollHideDelay,
|
|
1617
|
+
type,
|
|
1618
|
+
viewportClassName,
|
|
1619
|
+
viewportContentStyle,
|
|
1620
|
+
viewportProps,
|
|
1621
|
+
viewportRef,
|
|
1622
|
+
viewportTestId,
|
|
1623
|
+
...props
|
|
1624
|
+
}) {
|
|
1625
|
+
const implementationProps = {
|
|
1626
|
+
className,
|
|
1627
|
+
onBlur,
|
|
1628
|
+
onFocus,
|
|
1629
|
+
onMouseEnter,
|
|
1630
|
+
onMouseLeave,
|
|
1631
|
+
scrollbarMode,
|
|
1632
|
+
type,
|
|
1633
|
+
viewportClassName,
|
|
1634
|
+
viewportContentStyle,
|
|
1635
|
+
viewportProps,
|
|
1636
|
+
viewportRef,
|
|
1637
|
+
viewportTestId,
|
|
1638
|
+
...props
|
|
1639
|
+
};
|
|
1640
|
+
if (scrollbarMode === "native") {
|
|
1641
|
+
return /* @__PURE__ */ jsx16(NativeScrollArea, { ...implementationProps, children });
|
|
1642
|
+
}
|
|
1643
|
+
return /* @__PURE__ */ jsx16(CustomScrollArea, { ...implementationProps, children });
|
|
1644
|
+
}
|
|
1645
|
+
function NativeScrollArea({
|
|
1646
|
+
className,
|
|
1647
|
+
children,
|
|
1648
|
+
onBlur,
|
|
1649
|
+
onFocus,
|
|
1650
|
+
onMouseEnter,
|
|
1651
|
+
onMouseLeave,
|
|
1652
|
+
scrollbarMode,
|
|
1653
|
+
type,
|
|
1654
|
+
viewportClassName,
|
|
1655
|
+
viewportContentStyle,
|
|
1656
|
+
viewportProps,
|
|
1657
|
+
viewportRef,
|
|
1658
|
+
viewportTestId,
|
|
1659
|
+
...props
|
|
1660
|
+
}) {
|
|
1661
|
+
const alwaysVisible = type === "always" || type === "scroll" || hasAlwaysVisibleScrollbarSelector(className);
|
|
1662
|
+
return /* @__PURE__ */ jsx16(
|
|
1663
|
+
ScrollAreaFrame,
|
|
1664
|
+
{
|
|
1665
|
+
...props,
|
|
1666
|
+
className,
|
|
1667
|
+
"data-scrollbar-mode": scrollbarMode,
|
|
1668
|
+
onBlur,
|
|
1669
|
+
onFocus,
|
|
1670
|
+
onMouseEnter,
|
|
1671
|
+
onMouseLeave,
|
|
1672
|
+
alwaysVisible: false,
|
|
1673
|
+
viewportClassName: cn(
|
|
1674
|
+
nativeScrollbarClassName(alwaysVisible),
|
|
1675
|
+
viewportClassName
|
|
1676
|
+
),
|
|
1677
|
+
viewportContentStyle,
|
|
1678
|
+
viewportProps,
|
|
1679
|
+
viewportRef,
|
|
1680
|
+
viewportTestId,
|
|
1681
|
+
children
|
|
1682
|
+
}
|
|
1683
|
+
);
|
|
1684
|
+
}
|
|
1685
|
+
function CustomScrollArea({
|
|
1686
|
+
className,
|
|
1687
|
+
children,
|
|
1688
|
+
onBlur,
|
|
1689
|
+
onFocus,
|
|
1690
|
+
onMouseEnter,
|
|
1691
|
+
onMouseLeave,
|
|
1692
|
+
scrollbarMode,
|
|
1693
|
+
type,
|
|
1608
1694
|
viewportClassName,
|
|
1609
1695
|
viewportContentStyle,
|
|
1610
1696
|
viewportProps,
|
|
@@ -1612,103 +1698,470 @@ function ScrollArea({
|
|
|
1612
1698
|
viewportTestId,
|
|
1613
1699
|
...props
|
|
1614
1700
|
}) {
|
|
1701
|
+
const localViewportRef = React4.useRef(null);
|
|
1702
|
+
const contentRef = React4.useRef(null);
|
|
1703
|
+
const [active, setActive] = React4.useState(false);
|
|
1704
|
+
const alwaysVisible = type === "always" || type === "scroll" || hasAlwaysVisibleScrollbarSelector(className);
|
|
1615
1705
|
return /* @__PURE__ */ jsxs7(
|
|
1616
|
-
|
|
1706
|
+
ScrollAreaFrame,
|
|
1617
1707
|
{
|
|
1618
|
-
"data-slot": "scroll-area",
|
|
1619
|
-
className: cn("group/scroll-area relative", className),
|
|
1620
1708
|
...props,
|
|
1709
|
+
className,
|
|
1710
|
+
contentRef,
|
|
1711
|
+
"data-scrollbar-mode": scrollbarMode,
|
|
1712
|
+
onBlur: (event) => {
|
|
1713
|
+
onBlur?.(event);
|
|
1714
|
+
if (!event.currentTarget.contains(event.relatedTarget)) {
|
|
1715
|
+
setActive(false);
|
|
1716
|
+
}
|
|
1717
|
+
},
|
|
1718
|
+
onFocus: (event) => {
|
|
1719
|
+
onFocus?.(event);
|
|
1720
|
+
setActive(true);
|
|
1721
|
+
},
|
|
1722
|
+
onMouseEnter: (event) => {
|
|
1723
|
+
onMouseEnter?.(event);
|
|
1724
|
+
setActive(true);
|
|
1725
|
+
},
|
|
1726
|
+
onMouseLeave: (event) => {
|
|
1727
|
+
onMouseLeave?.(event);
|
|
1728
|
+
setActive(false);
|
|
1729
|
+
},
|
|
1730
|
+
alwaysVisible,
|
|
1731
|
+
viewportClassName: cn(
|
|
1732
|
+
"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
1733
|
+
viewportClassName
|
|
1734
|
+
),
|
|
1735
|
+
viewportContentStyle,
|
|
1736
|
+
viewportProps,
|
|
1737
|
+
viewportRef: setRefs(localViewportRef, viewportRef),
|
|
1738
|
+
viewportTestId,
|
|
1621
1739
|
children: [
|
|
1622
|
-
|
|
1623
|
-
|
|
1740
|
+
children,
|
|
1741
|
+
/* @__PURE__ */ jsx16(
|
|
1742
|
+
ScrollAreaScrollbar,
|
|
1624
1743
|
{
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
"
|
|
1628
|
-
|
|
1629
|
-
className: cn(
|
|
1630
|
-
"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
|
|
1631
|
-
viewportClassName
|
|
1632
|
-
),
|
|
1633
|
-
children: [
|
|
1634
|
-
viewportContentStyle ? /* @__PURE__ */ jsx16(ScrollAreaViewportContentStyleBridge, { style: viewportContentStyle }) : null,
|
|
1635
|
-
children
|
|
1636
|
-
]
|
|
1744
|
+
active: active || alwaysVisible,
|
|
1745
|
+
contentRef,
|
|
1746
|
+
orientation: "vertical",
|
|
1747
|
+
viewportRef: localViewportRef
|
|
1637
1748
|
}
|
|
1638
|
-
)
|
|
1639
|
-
/* @__PURE__ */ jsx16(ScrollBar, {}),
|
|
1640
|
-
/* @__PURE__ */ jsx16(ScrollAreaPrimitive.Corner, {})
|
|
1749
|
+
)
|
|
1641
1750
|
]
|
|
1642
1751
|
}
|
|
1643
1752
|
);
|
|
1644
1753
|
}
|
|
1645
|
-
function
|
|
1646
|
-
|
|
1754
|
+
function ScrollAreaFrame({
|
|
1755
|
+
alwaysVisible,
|
|
1756
|
+
children,
|
|
1757
|
+
className,
|
|
1758
|
+
contentRef,
|
|
1759
|
+
viewportClassName,
|
|
1760
|
+
viewportContentStyle,
|
|
1761
|
+
viewportProps,
|
|
1762
|
+
viewportRef,
|
|
1763
|
+
viewportTestId,
|
|
1764
|
+
...props
|
|
1647
1765
|
}) {
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1766
|
+
return /* @__PURE__ */ jsx16(
|
|
1767
|
+
"div",
|
|
1768
|
+
{
|
|
1769
|
+
"data-slot": "scroll-area",
|
|
1770
|
+
className: cn(
|
|
1771
|
+
"group/scroll-area relative",
|
|
1772
|
+
alwaysVisible ? "[&_[data-slot=scroll-area-scrollbar]]:opacity-100" : null,
|
|
1773
|
+
className
|
|
1774
|
+
),
|
|
1775
|
+
...props,
|
|
1776
|
+
children: /* @__PURE__ */ jsx16(
|
|
1777
|
+
"div",
|
|
1778
|
+
{
|
|
1779
|
+
...viewportProps,
|
|
1780
|
+
"data-slot": "scroll-area-viewport",
|
|
1781
|
+
"data-testid": viewportTestId,
|
|
1782
|
+
ref: viewportRef,
|
|
1783
|
+
className: cn(
|
|
1784
|
+
"size-full overflow-auto rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
|
|
1785
|
+
viewportClassName
|
|
1786
|
+
),
|
|
1787
|
+
children: /* @__PURE__ */ jsx16(
|
|
1788
|
+
"div",
|
|
1789
|
+
{
|
|
1790
|
+
ref: contentRef,
|
|
1791
|
+
"data-slot": "scroll-area-content",
|
|
1792
|
+
style: {
|
|
1793
|
+
minWidth: "100%",
|
|
1794
|
+
display: "table",
|
|
1795
|
+
...viewportContentStyle
|
|
1796
|
+
},
|
|
1797
|
+
children
|
|
1798
|
+
}
|
|
1799
|
+
)
|
|
1800
|
+
}
|
|
1801
|
+
)
|
|
1802
|
+
}
|
|
1803
|
+
);
|
|
1804
|
+
}
|
|
1805
|
+
function ScrollAreaScrollbar({
|
|
1806
|
+
active,
|
|
1807
|
+
contentRef,
|
|
1808
|
+
orientation,
|
|
1809
|
+
viewportRef
|
|
1810
|
+
}) {
|
|
1811
|
+
const trackRef = React4.useRef(null);
|
|
1812
|
+
const thumbRef = React4.useRef(null);
|
|
1813
|
+
const dragStateRef = React4.useRef(null);
|
|
1814
|
+
const frameRef = React4.useRef(null);
|
|
1815
|
+
const scrollableRef = React4.useRef(false);
|
|
1816
|
+
const [dragging, setDragging] = React4.useState(false);
|
|
1817
|
+
const [scrollable, setScrollable] = React4.useState(false);
|
|
1818
|
+
const [trackActive, setTrackActive] = React4.useState(false);
|
|
1819
|
+
const syncScrollbarState = React4.useCallback(() => {
|
|
1820
|
+
const viewport = viewportRef.current;
|
|
1821
|
+
const track = trackRef.current;
|
|
1822
|
+
const thumb = thumbRef.current;
|
|
1823
|
+
if (!viewport || !track || !thumb) {
|
|
1824
|
+
updateScrollable(false, scrollableRef, setScrollable);
|
|
1652
1825
|
return;
|
|
1653
1826
|
}
|
|
1654
|
-
const
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1827
|
+
const viewportSize = orientation === "vertical" ? viewport.clientHeight : viewport.clientWidth;
|
|
1828
|
+
const scrollSize = orientation === "vertical" ? viewport.scrollHeight : viewport.scrollWidth;
|
|
1829
|
+
const scrollOffset = orientation === "vertical" ? viewport.scrollTop : viewport.scrollLeft;
|
|
1830
|
+
const trackSize = orientation === "vertical" ? track.clientHeight : track.clientWidth;
|
|
1831
|
+
const maxScrollOffset = Math.max(0, scrollSize - viewportSize);
|
|
1832
|
+
if (viewportSize <= 0 || trackSize <= 0 || maxScrollOffset <= 0) {
|
|
1833
|
+
updateScrollable(false, scrollableRef, setScrollable);
|
|
1834
|
+
return;
|
|
1835
|
+
}
|
|
1836
|
+
const thumbSize = Math.min(
|
|
1837
|
+
trackSize,
|
|
1838
|
+
Math.max(
|
|
1839
|
+
MIN_THUMB_SIZE_PX,
|
|
1840
|
+
Math.round(viewportSize / scrollSize * trackSize)
|
|
1841
|
+
)
|
|
1842
|
+
);
|
|
1843
|
+
const maxThumbOffset = Math.max(0, trackSize - thumbSize);
|
|
1844
|
+
const thumbOffset = Math.round(
|
|
1845
|
+
scrollOffset / maxScrollOffset * maxThumbOffset
|
|
1846
|
+
);
|
|
1847
|
+
if (orientation === "vertical") {
|
|
1848
|
+
thumb.style.height = `${thumbSize}px`;
|
|
1849
|
+
thumb.style.width = "";
|
|
1850
|
+
thumb.style.transform = `translateY(${thumbOffset}px)`;
|
|
1851
|
+
} else {
|
|
1852
|
+
thumb.style.width = `${thumbSize}px`;
|
|
1853
|
+
thumb.style.height = "";
|
|
1854
|
+
thumb.style.transform = `translateX(${thumbOffset}px)`;
|
|
1855
|
+
}
|
|
1856
|
+
updateScrollable(true, scrollableRef, setScrollable);
|
|
1857
|
+
}, [orientation, viewportRef]);
|
|
1858
|
+
const scheduleSync = React4.useCallback(() => {
|
|
1859
|
+
if (frameRef.current !== null) {
|
|
1860
|
+
return;
|
|
1861
|
+
}
|
|
1862
|
+
frameRef.current = requestAnimationFrameSafely(() => {
|
|
1863
|
+
frameRef.current = null;
|
|
1864
|
+
syncScrollbarState();
|
|
1865
|
+
});
|
|
1866
|
+
}, [syncScrollbarState]);
|
|
1867
|
+
const scrollViewportToThumbOffset = React4.useCallback(
|
|
1868
|
+
(thumbOffset) => {
|
|
1869
|
+
const viewport = viewportRef.current;
|
|
1870
|
+
const track = trackRef.current;
|
|
1871
|
+
const thumb = thumbRef.current;
|
|
1872
|
+
if (!viewport || !track || !thumb) {
|
|
1873
|
+
return;
|
|
1874
|
+
}
|
|
1875
|
+
const viewportSize = orientation === "vertical" ? viewport.clientHeight : viewport.clientWidth;
|
|
1876
|
+
const scrollSize = orientation === "vertical" ? viewport.scrollHeight : viewport.scrollWidth;
|
|
1877
|
+
const trackSize = orientation === "vertical" ? track.clientHeight : track.clientWidth;
|
|
1878
|
+
const thumbSize = orientation === "vertical" ? thumb.offsetHeight : thumb.offsetWidth;
|
|
1879
|
+
const maxScrollOffset = Math.max(0, scrollSize - viewportSize);
|
|
1880
|
+
const maxThumbOffset = Math.max(0, trackSize - thumbSize);
|
|
1881
|
+
if (maxScrollOffset <= 0 || maxThumbOffset <= 0) {
|
|
1882
|
+
return;
|
|
1883
|
+
}
|
|
1884
|
+
const nextScrollOffset = clamp(thumbOffset, 0, maxThumbOffset) / maxThumbOffset * maxScrollOffset;
|
|
1885
|
+
if (orientation === "vertical") {
|
|
1886
|
+
viewport.scrollTop = nextScrollOffset;
|
|
1887
|
+
} else {
|
|
1888
|
+
viewport.scrollLeft = nextScrollOffset;
|
|
1889
|
+
}
|
|
1890
|
+
syncScrollbarState();
|
|
1891
|
+
},
|
|
1892
|
+
[orientation, syncScrollbarState, viewportRef]
|
|
1893
|
+
);
|
|
1894
|
+
const handleTrackPointerDown = React4.useCallback(
|
|
1895
|
+
(event) => {
|
|
1896
|
+
if (event.button !== 0 || !scrollableRef.current) {
|
|
1897
|
+
return;
|
|
1898
|
+
}
|
|
1899
|
+
const track = trackRef.current;
|
|
1900
|
+
const thumb = thumbRef.current;
|
|
1901
|
+
if (!track || !thumb || event.target === thumb) {
|
|
1902
|
+
return;
|
|
1903
|
+
}
|
|
1904
|
+
event.preventDefault();
|
|
1905
|
+
event.stopPropagation();
|
|
1906
|
+
const trackRect = track.getBoundingClientRect();
|
|
1907
|
+
const clientOffset = orientation === "vertical" ? event.clientY : event.clientX;
|
|
1908
|
+
const trackStart = orientation === "vertical" ? trackRect.top : trackRect.left;
|
|
1909
|
+
const thumbSize = orientation === "vertical" ? thumb.offsetHeight : thumb.offsetWidth;
|
|
1910
|
+
scrollViewportToThumbOffset(clientOffset - trackStart - thumbSize / 2);
|
|
1911
|
+
},
|
|
1912
|
+
[orientation, scrollViewportToThumbOffset]
|
|
1913
|
+
);
|
|
1914
|
+
const handleThumbPointerDown = React4.useCallback(
|
|
1915
|
+
(event) => {
|
|
1916
|
+
if (event.button !== 0 || !scrollableRef.current) {
|
|
1917
|
+
return;
|
|
1918
|
+
}
|
|
1919
|
+
const viewport = viewportRef.current;
|
|
1920
|
+
const track = trackRef.current;
|
|
1921
|
+
const thumb = thumbRef.current;
|
|
1922
|
+
if (!viewport || !track || !thumb) {
|
|
1923
|
+
return;
|
|
1924
|
+
}
|
|
1925
|
+
const viewportSize = orientation === "vertical" ? viewport.clientHeight : viewport.clientWidth;
|
|
1926
|
+
const scrollSize = orientation === "vertical" ? viewport.scrollHeight : viewport.scrollWidth;
|
|
1927
|
+
const trackSize = orientation === "vertical" ? track.clientHeight : track.clientWidth;
|
|
1928
|
+
const thumbSize = orientation === "vertical" ? thumb.offsetHeight : thumb.offsetWidth;
|
|
1929
|
+
const maxScrollOffset = Math.max(0, scrollSize - viewportSize);
|
|
1930
|
+
const maxThumbOffset = Math.max(0, trackSize - thumbSize);
|
|
1931
|
+
if (maxScrollOffset <= 0 || maxThumbOffset <= 0) {
|
|
1932
|
+
return;
|
|
1933
|
+
}
|
|
1934
|
+
event.preventDefault();
|
|
1935
|
+
event.stopPropagation();
|
|
1936
|
+
dragStateRef.current = {
|
|
1937
|
+
maxScrollOffset,
|
|
1938
|
+
maxThumbOffset,
|
|
1939
|
+
startClientOffset: orientation === "vertical" ? event.clientY : event.clientX,
|
|
1940
|
+
startScrollOffset: orientation === "vertical" ? viewport.scrollTop : viewport.scrollLeft
|
|
1941
|
+
};
|
|
1942
|
+
setDragging(true);
|
|
1943
|
+
},
|
|
1944
|
+
[orientation, viewportRef]
|
|
1945
|
+
);
|
|
1946
|
+
React4.useEffect(() => {
|
|
1947
|
+
if (!dragging) {
|
|
1948
|
+
return;
|
|
1949
|
+
}
|
|
1950
|
+
const handlePointerMove = (event) => {
|
|
1951
|
+
const dragState = dragStateRef.current;
|
|
1952
|
+
const viewport = viewportRef.current;
|
|
1953
|
+
if (!dragState || !viewport) {
|
|
1954
|
+
return;
|
|
1955
|
+
}
|
|
1956
|
+
const clientOffset = orientation === "vertical" ? event.clientY : event.clientX;
|
|
1957
|
+
const nextThumbOffset = dragState.startScrollOffset / dragState.maxScrollOffset * dragState.maxThumbOffset + (clientOffset - dragState.startClientOffset);
|
|
1958
|
+
const nextScrollOffset = clamp(nextThumbOffset, 0, dragState.maxThumbOffset) / dragState.maxThumbOffset * dragState.maxScrollOffset;
|
|
1959
|
+
if (orientation === "vertical") {
|
|
1960
|
+
viewport.scrollTop = nextScrollOffset;
|
|
1663
1961
|
} else {
|
|
1664
|
-
|
|
1962
|
+
viewport.scrollLeft = nextScrollOffset;
|
|
1665
1963
|
}
|
|
1964
|
+
syncScrollbarState();
|
|
1965
|
+
};
|
|
1966
|
+
const handlePointerUp = () => {
|
|
1967
|
+
dragStateRef.current = null;
|
|
1968
|
+
setDragging(false);
|
|
1969
|
+
};
|
|
1970
|
+
window.addEventListener("pointermove", handlePointerMove);
|
|
1971
|
+
window.addEventListener("pointerup", handlePointerUp);
|
|
1972
|
+
return () => {
|
|
1973
|
+
window.removeEventListener("pointermove", handlePointerMove);
|
|
1974
|
+
window.removeEventListener("pointerup", handlePointerUp);
|
|
1975
|
+
};
|
|
1976
|
+
}, [dragging, orientation, syncScrollbarState, viewportRef]);
|
|
1977
|
+
React4.useEffect(() => {
|
|
1978
|
+
const viewport = viewportRef.current;
|
|
1979
|
+
if (!viewport) {
|
|
1980
|
+
updateScrollable(false, scrollableRef, setScrollable);
|
|
1981
|
+
return;
|
|
1982
|
+
}
|
|
1983
|
+
syncScrollbarState();
|
|
1984
|
+
viewport.addEventListener("scroll", scheduleSync, { passive: true });
|
|
1985
|
+
const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(scheduleSync) : null;
|
|
1986
|
+
resizeObserver?.observe(viewport);
|
|
1987
|
+
if (contentRef.current) {
|
|
1988
|
+
resizeObserver?.observe(contentRef.current);
|
|
1666
1989
|
}
|
|
1667
1990
|
return () => {
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
cssProperty,
|
|
1672
|
-
previous.value,
|
|
1673
|
-
previous.priority
|
|
1674
|
-
);
|
|
1675
|
-
} else {
|
|
1676
|
-
contentElement.style.removeProperty(cssProperty);
|
|
1677
|
-
}
|
|
1991
|
+
if (frameRef.current !== null) {
|
|
1992
|
+
cancelAnimationFrameSafely(frameRef.current);
|
|
1993
|
+
frameRef.current = null;
|
|
1678
1994
|
}
|
|
1995
|
+
viewport.removeEventListener("scroll", scheduleSync);
|
|
1996
|
+
resizeObserver?.disconnect();
|
|
1679
1997
|
};
|
|
1680
|
-
}, [
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
return
|
|
1998
|
+
}, [contentRef, scheduleSync, syncScrollbarState, viewportRef]);
|
|
1999
|
+
React4.useEffect(() => {
|
|
2000
|
+
scheduleSync();
|
|
2001
|
+
});
|
|
2002
|
+
return /* @__PURE__ */ jsx16(
|
|
2003
|
+
"div",
|
|
2004
|
+
{
|
|
2005
|
+
ref: trackRef,
|
|
2006
|
+
"data-dragging": dragging ? "true" : "false",
|
|
2007
|
+
"data-orientation": orientation,
|
|
2008
|
+
"data-scrollable": scrollable ? "true" : "false",
|
|
2009
|
+
"data-slot": "scroll-area-scrollbar",
|
|
2010
|
+
"aria-hidden": "true",
|
|
2011
|
+
className: scrollbarClassName(orientation),
|
|
2012
|
+
style: scrollbarStyle({
|
|
2013
|
+
active: active || dragging,
|
|
2014
|
+
orientation,
|
|
2015
|
+
scrollable
|
|
2016
|
+
}),
|
|
2017
|
+
onPointerEnter: () => setTrackActive(true),
|
|
2018
|
+
onPointerLeave: () => setTrackActive(false),
|
|
2019
|
+
onPointerDown: handleTrackPointerDown,
|
|
2020
|
+
children: /* @__PURE__ */ jsx16(
|
|
2021
|
+
"div",
|
|
2022
|
+
{
|
|
2023
|
+
ref: thumbRef,
|
|
2024
|
+
"data-slot": "scroll-area-thumb",
|
|
2025
|
+
className: thumbClassName(orientation),
|
|
2026
|
+
style: thumbStyle({ active: trackActive || dragging, orientation }),
|
|
2027
|
+
onPointerDown: handleThumbPointerDown
|
|
2028
|
+
}
|
|
2029
|
+
)
|
|
2030
|
+
}
|
|
2031
|
+
);
|
|
1685
2032
|
}
|
|
1686
2033
|
function ScrollBar({
|
|
1687
2034
|
className,
|
|
2035
|
+
forceMount: _forceMount,
|
|
1688
2036
|
orientation = "vertical",
|
|
1689
2037
|
...props
|
|
1690
2038
|
}) {
|
|
1691
2039
|
return /* @__PURE__ */ jsx16(
|
|
1692
|
-
|
|
2040
|
+
"div",
|
|
1693
2041
|
{
|
|
1694
2042
|
"data-slot": "scroll-area-scrollbar",
|
|
1695
2043
|
"data-orientation": orientation,
|
|
1696
|
-
orientation,
|
|
1697
|
-
|
|
1698
|
-
"group/scrollbar absolute z-10 flex touch-none p-[2px] opacity-0 transition-opacity duration-150 select-none group-hover/scroll-area:opacity-100 group-focus-within/scroll-area:opacity-100 data-[orientation=horizontal]:right-0 data-[orientation=horizontal]:bottom-0 data-[orientation=horizontal]:left-0 data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:flex-col data-[orientation=vertical]:top-0 data-[orientation=vertical]:right-0 data-[orientation=vertical]:bottom-0 data-[orientation=vertical]:w-2",
|
|
1699
|
-
className
|
|
1700
|
-
),
|
|
2044
|
+
className: cn(scrollbarClassName(orientation), className),
|
|
2045
|
+
style: scrollbarStyle({ active: false, orientation, scrollable: true }),
|
|
1701
2046
|
...props,
|
|
1702
2047
|
children: /* @__PURE__ */ jsx16(
|
|
1703
|
-
|
|
2048
|
+
"div",
|
|
1704
2049
|
{
|
|
1705
2050
|
"data-slot": "scroll-area-thumb",
|
|
1706
|
-
className:
|
|
2051
|
+
className: thumbClassName(orientation),
|
|
2052
|
+
style: thumbStyle({ active: false, orientation })
|
|
1707
2053
|
}
|
|
1708
2054
|
)
|
|
1709
2055
|
}
|
|
1710
2056
|
);
|
|
1711
2057
|
}
|
|
2058
|
+
function scrollbarClassName(orientation) {
|
|
2059
|
+
return cn(
|
|
2060
|
+
orientation === "horizontal" ? "data-[orientation=horizontal]:h-2" : "data-[orientation=vertical]:w-2"
|
|
2061
|
+
);
|
|
2062
|
+
}
|
|
2063
|
+
function thumbClassName(orientation) {
|
|
2064
|
+
return cn(
|
|
2065
|
+
"rounded-full",
|
|
2066
|
+
orientation === "horizontal" ? "top-[2px] bottom-[2px]" : "right-[2px] left-[2px]"
|
|
2067
|
+
);
|
|
2068
|
+
}
|
|
2069
|
+
function nativeScrollbarClassName(alwaysVisible) {
|
|
2070
|
+
return cn(
|
|
2071
|
+
"[scrollbar-width:thin] [scrollbar-color:transparent_transparent]",
|
|
2072
|
+
"[&::-webkit-scrollbar]:block [&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2",
|
|
2073
|
+
"[&::-webkit-scrollbar-corner]:bg-transparent [&::-webkit-scrollbar-track]:bg-transparent",
|
|
2074
|
+
"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-clip-content",
|
|
2075
|
+
alwaysVisible ? "[scrollbar-color:var(--transparency-block)_transparent] [&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)] hover:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-hover)]" : "hover:[scrollbar-color:var(--transparency-block)_transparent] focus-within:[scrollbar-color:var(--transparency-block)_transparent] hover:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)] focus-within:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)]"
|
|
2076
|
+
);
|
|
2077
|
+
}
|
|
2078
|
+
function scrollbarStyle({
|
|
2079
|
+
active,
|
|
2080
|
+
orientation,
|
|
2081
|
+
scrollable
|
|
2082
|
+
}) {
|
|
2083
|
+
return {
|
|
2084
|
+
position: "absolute",
|
|
2085
|
+
zIndex: 10,
|
|
2086
|
+
display: "flex",
|
|
2087
|
+
touchAction: "none",
|
|
2088
|
+
padding: 2,
|
|
2089
|
+
opacity: active && scrollable ? 1 : 0,
|
|
2090
|
+
pointerEvents: scrollable ? "auto" : "none",
|
|
2091
|
+
userSelect: "none",
|
|
2092
|
+
transition: "opacity 150ms ease-in-out",
|
|
2093
|
+
cursor: "pointer",
|
|
2094
|
+
...orientation === "horizontal" ? {
|
|
2095
|
+
right: 0,
|
|
2096
|
+
bottom: 0,
|
|
2097
|
+
left: 0,
|
|
2098
|
+
height: 8,
|
|
2099
|
+
flexDirection: "column"
|
|
2100
|
+
} : {
|
|
2101
|
+
top: 0,
|
|
2102
|
+
right: 0,
|
|
2103
|
+
bottom: 0,
|
|
2104
|
+
width: 8
|
|
2105
|
+
}
|
|
2106
|
+
};
|
|
2107
|
+
}
|
|
2108
|
+
function thumbStyle({
|
|
2109
|
+
active,
|
|
2110
|
+
orientation
|
|
2111
|
+
}) {
|
|
2112
|
+
return {
|
|
2113
|
+
position: "absolute",
|
|
2114
|
+
minHeight: orientation === "vertical" ? MIN_THUMB_SIZE_PX : void 0,
|
|
2115
|
+
minWidth: orientation === "horizontal" ? MIN_THUMB_SIZE_PX : void 0,
|
|
2116
|
+
borderRadius: 999,
|
|
2117
|
+
background: active ? "var(--transparency-hover)" : "var(--transparency-block)",
|
|
2118
|
+
cursor: active ? "grabbing" : "grab",
|
|
2119
|
+
transition: "background-color 150ms ease-in-out",
|
|
2120
|
+
...orientation === "horizontal" ? {
|
|
2121
|
+
top: 2,
|
|
2122
|
+
bottom: 2
|
|
2123
|
+
} : {
|
|
2124
|
+
right: 2,
|
|
2125
|
+
left: 2
|
|
2126
|
+
}
|
|
2127
|
+
};
|
|
2128
|
+
}
|
|
2129
|
+
function hasAlwaysVisibleScrollbarSelector(className) {
|
|
2130
|
+
return typeof className === "string" && className.includes("scroll-area-scrollbar") && className.includes("opacity-100");
|
|
2131
|
+
}
|
|
2132
|
+
function setRefs(localRef, forwardedRef) {
|
|
2133
|
+
return (node) => {
|
|
2134
|
+
localRef.current = node;
|
|
2135
|
+
if (typeof forwardedRef === "function") {
|
|
2136
|
+
forwardedRef(node);
|
|
2137
|
+
} else if (forwardedRef) {
|
|
2138
|
+
forwardedRef.current = node;
|
|
2139
|
+
}
|
|
2140
|
+
};
|
|
2141
|
+
}
|
|
2142
|
+
function updateScrollable(nextScrollable, scrollableRef, setScrollable) {
|
|
2143
|
+
if (scrollableRef.current === nextScrollable) {
|
|
2144
|
+
return;
|
|
2145
|
+
}
|
|
2146
|
+
scrollableRef.current = nextScrollable;
|
|
2147
|
+
setScrollable(nextScrollable);
|
|
2148
|
+
}
|
|
2149
|
+
function requestAnimationFrameSafely(callback) {
|
|
2150
|
+
if (typeof window.requestAnimationFrame === "function") {
|
|
2151
|
+
return window.requestAnimationFrame(callback);
|
|
2152
|
+
}
|
|
2153
|
+
return window.setTimeout(() => callback(performance.now()), 16);
|
|
2154
|
+
}
|
|
2155
|
+
function cancelAnimationFrameSafely(frameId) {
|
|
2156
|
+
if (typeof window.cancelAnimationFrame === "function") {
|
|
2157
|
+
window.cancelAnimationFrame(frameId);
|
|
2158
|
+
return;
|
|
2159
|
+
}
|
|
2160
|
+
window.clearTimeout(frameId);
|
|
2161
|
+
}
|
|
2162
|
+
function clamp(value, min, max) {
|
|
2163
|
+
return Math.min(max, Math.max(min, value));
|
|
2164
|
+
}
|
|
1712
2165
|
|
|
1713
2166
|
// src/components/select/select.tsx
|
|
1714
2167
|
import { Select as SelectPrimitive } from "radix-ui";
|
|
@@ -1750,7 +2203,7 @@ function SelectTrigger({
|
|
|
1750
2203
|
"data-size": size,
|
|
1751
2204
|
"data-variant": variant,
|
|
1752
2205
|
className: cn(
|
|
1753
|
-
variant === "button" ? buttonVariants({ variant: "default", size }) : "flex w-fit cursor-pointer items-center justify-between gap-1.5 rounded-lg border border-transparent bg-[var(--transparency-block)] py-2 pr-2 pl-2.5 text-
|
|
2206
|
+
variant === "button" ? buttonVariants({ variant: "default", size }) : "flex w-fit cursor-pointer items-center justify-between gap-1.5 rounded-lg border border-transparent bg-[var(--transparency-block)] py-2 pr-2 pl-2.5 text-[13px] text-[var(--text-primary)] whitespace-nowrap transition-colors outline-none select-none hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none data-placeholder:text-[var(--text-placeholder)] data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1754
2207
|
"[&[data-state=open]>svg]:rotate-180 [&>svg]:transition-transform [&>svg]:duration-200",
|
|
1755
2208
|
className
|
|
1756
2209
|
),
|
|
@@ -1822,7 +2275,7 @@ function SelectLabel({
|
|
|
1822
2275
|
{
|
|
1823
2276
|
"data-slot": "select-label",
|
|
1824
2277
|
className: cn(
|
|
1825
|
-
"px-1.5 py-1 text-
|
|
2278
|
+
"px-1.5 py-1 text-[11px] font-normal text-[var(--text-secondary)]",
|
|
1826
2279
|
className
|
|
1827
2280
|
),
|
|
1828
2281
|
...props
|
|
@@ -1867,7 +2320,7 @@ function SelectSplitColumnLabel({
|
|
|
1867
2320
|
{
|
|
1868
2321
|
"data-slot": "select-split-column-label",
|
|
1869
2322
|
className: cn(
|
|
1870
|
-
"shrink-0 px-2 pt-1 pb-2 text-
|
|
2323
|
+
"shrink-0 px-2 pt-1 pb-2 text-[11px] font-normal leading-[18px] text-[var(--text-secondary)]",
|
|
1871
2324
|
className
|
|
1872
2325
|
),
|
|
1873
2326
|
...props
|
|
@@ -1923,10 +2376,10 @@ function SelectItem({
|
|
|
1923
2376
|
/* @__PURE__ */ jsx17("span", { className: menuItemIndicatorClassName, children: forceSelectedIndicator ? /* @__PURE__ */ jsx17(
|
|
1924
2377
|
CheckIcon,
|
|
1925
2378
|
{
|
|
1926
|
-
className: "pointer-events-none",
|
|
2379
|
+
className: "pointer-events-none text-[var(--tutti-purple)]",
|
|
1927
2380
|
"data-slot": "select-item-forced-indicator"
|
|
1928
2381
|
}
|
|
1929
|
-
) : /* @__PURE__ */ jsx17(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx17(CheckIcon, { className: "pointer-events-none" }) }) }),
|
|
2382
|
+
) : /* @__PURE__ */ jsx17(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx17(CheckIcon, { className: "pointer-events-none text-[var(--tutti-purple)]" }) }) }),
|
|
1930
2383
|
/* @__PURE__ */ jsx17(SelectPrimitive.ItemText, { children })
|
|
1931
2384
|
]
|
|
1932
2385
|
}
|
|
@@ -2103,10 +2556,10 @@ function Toaster({ toastOptions, style, ...props }) {
|
|
|
2103
2556
|
...toastOptions,
|
|
2104
2557
|
classNames: {
|
|
2105
2558
|
toast: "group pointer-events-auto min-h-14 rounded-[8px] border border-[var(--line-2)] bg-[var(--background-fronted)] px-3.5 py-3 text-[var(--text-primary)] shadow-[0_14px_40px_var(--shadow-elevated)]",
|
|
2106
|
-
title: "text-
|
|
2107
|
-
description: "mt-0.5 text-
|
|
2108
|
-
actionButton: "h-7 rounded-[6px] bg-[var(--text-primary)] px-2.5 text-
|
|
2109
|
-
cancelButton: "h-7 rounded-[6px] bg-[var(--transparency-block)] px-2.5 text-
|
|
2559
|
+
title: "text-[13px] font-semibold leading-5 text-[var(--text-primary)]",
|
|
2560
|
+
description: "mt-0.5 text-[11px] leading-5 text-[var(--text-secondary)]",
|
|
2561
|
+
actionButton: "h-7 rounded-[6px] bg-[var(--text-primary)] px-2.5 text-[11px] font-normal text-[var(--text-inverted)] transition-colors hover:bg-[var(--text-primary-hover)]",
|
|
2562
|
+
cancelButton: "h-7 rounded-[6px] bg-[var(--transparency-block)] px-2.5 text-[11px] font-normal text-[var(--text-primary)] transition-colors hover:bg-[var(--transparency-hover)]",
|
|
2110
2563
|
closeButton: "border-[var(--line-2)] bg-[var(--background-fronted)] text-[var(--text-secondary)] hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)]",
|
|
2111
2564
|
icon: "text-[var(--accent)]",
|
|
2112
2565
|
...toastOptions?.classNames
|
|
@@ -2211,7 +2664,7 @@ function Switch({
|
|
|
2211
2664
|
"data-slot": "switch",
|
|
2212
2665
|
"data-size": size,
|
|
2213
2666
|
className: cn(
|
|
2214
|
-
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow] outline-none focus-visible:border-[var(--border-focus)] focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--border-focus)_30%,transparent)] aria-invalid:border-[var(--state-danger)] aria-invalid:ring-2 aria-invalid:ring-[color-mix(in_srgb,var(--state-danger)_20%,transparent)] data-[size=default]:h-[18px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[state=checked]:bg-[var(--
|
|
2667
|
+
"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow] outline-none focus-visible:border-[var(--border-focus)] focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--border-focus)_30%,transparent)] aria-invalid:border-[var(--state-danger)] aria-invalid:ring-2 aria-invalid:ring-[color-mix(in_srgb,var(--state-danger)_20%,transparent)] data-[size=default]:h-[18px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[state=checked]:bg-[var(--tutti-purple)] data-[state=unchecked]:bg-[var(--text-disabled)] data-disabled:cursor-not-allowed data-disabled:opacity-100",
|
|
2215
2668
|
className
|
|
2216
2669
|
),
|
|
2217
2670
|
...props,
|
|
@@ -2234,7 +2687,7 @@ function Textarea({ className, ...props }) {
|
|
|
2234
2687
|
{
|
|
2235
2688
|
"data-slot": "textarea",
|
|
2236
2689
|
className: cn(
|
|
2237
|
-
"flex field-sizing-content min-h-20 w-full rounded-[6px] border border-transparent bg-[var(--transparency-block)] px-3 py-3 text-
|
|
2690
|
+
"flex field-sizing-content min-h-20 w-full rounded-[6px] border border-transparent bg-[var(--transparency-block)] px-3 py-3 text-[13px] font-normal leading-[1.3] text-[var(--text-primary)] transition-[background-color,border-color,color] outline-none shadow-none placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none",
|
|
2238
2691
|
className
|
|
2239
2692
|
),
|
|
2240
2693
|
...props
|
|
@@ -2285,7 +2738,7 @@ function formatToastText(children) {
|
|
|
2285
2738
|
return children;
|
|
2286
2739
|
}
|
|
2287
2740
|
var toastVariants = cva5(
|
|
2288
|
-
"group pointer-events-auto relative flex min-h-8 min-w-0 max-w-[min(92vw,420px)] items-center justify-center rounded-[8px] px-3 py-1.5 text-center text-
|
|
2741
|
+
"group pointer-events-auto relative flex min-h-8 min-w-0 max-w-[min(92vw,420px)] items-center justify-center rounded-[8px] px-3 py-1.5 text-center text-[13px] font-normal leading-normal shadow-none transition-all data-closed:fade-out-80 data-closed:slide-out-to-top-full data-open:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none",
|
|
2289
2742
|
{
|
|
2290
2743
|
variants: {
|
|
2291
2744
|
variant: {
|
|
@@ -2343,7 +2796,7 @@ function ToastTitle({
|
|
|
2343
2796
|
{
|
|
2344
2797
|
"data-slot": "toast-title",
|
|
2345
2798
|
className: cn(
|
|
2346
|
-
"inline-flex max-w-full items-center justify-center gap-[6px] text-center text-
|
|
2799
|
+
"inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal",
|
|
2347
2800
|
className
|
|
2348
2801
|
),
|
|
2349
2802
|
...props,
|
|
@@ -2371,7 +2824,7 @@ function ToastDescription({
|
|
|
2371
2824
|
{
|
|
2372
2825
|
"data-slot": "toast-description",
|
|
2373
2826
|
className: cn(
|
|
2374
|
-
"box-border w-full px-2 text-
|
|
2827
|
+
"box-border w-full px-2 text-[11px] font-normal leading-[1.3] text-current opacity-75 [overflow-wrap:anywhere]",
|
|
2375
2828
|
className
|
|
2376
2829
|
),
|
|
2377
2830
|
...props
|
|
@@ -2458,7 +2911,7 @@ function TooltipContent({
|
|
|
2458
2911
|
"data-slot": "tooltip-content",
|
|
2459
2912
|
sideOffset,
|
|
2460
2913
|
className: cn(
|
|
2461
|
-
"inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-2 rounded-md border border-[var(--border-1)] bg-[var(--background-fronted)] px-2 py-1 text-
|
|
2914
|
+
"inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-2 rounded-md border border-[var(--border-1)] bg-[var(--background-fronted)] px-2 py-1 text-[13px] leading-[1.3] text-popover-foreground shadow-soft outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
2462
2915
|
className
|
|
2463
2916
|
),
|
|
2464
2917
|
style: { zIndex: "var(--z-tooltip, 100700)", ...style },
|
|
@@ -2469,7 +2922,7 @@ function TooltipContent({
|
|
|
2469
2922
|
}
|
|
2470
2923
|
|
|
2471
2924
|
// src/components/underline-tabs/underline-tabs.tsx
|
|
2472
|
-
import { useEffect as
|
|
2925
|
+
import { useEffect as useEffect4, useLayoutEffect as useLayoutEffect2, useRef as useRef3, useState as useState4 } from "react";
|
|
2473
2926
|
import { jsx as jsx28, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2474
2927
|
function UnderlineTabs({
|
|
2475
2928
|
tabs,
|
|
@@ -2488,12 +2941,12 @@ function UnderlineTabs({
|
|
|
2488
2941
|
const viewportRef = useRef3(null);
|
|
2489
2942
|
const rowRef = useRef3(null);
|
|
2490
2943
|
const buttonRefs = useRef3({});
|
|
2491
|
-
const [indicatorStyle, setIndicatorStyle] =
|
|
2492
|
-
const [overflow, setOverflow] =
|
|
2944
|
+
const [indicatorStyle, setIndicatorStyle] = useState4({ left: 0, width: 0 });
|
|
2945
|
+
const [overflow, setOverflow] = useState4({
|
|
2493
2946
|
canScrollLeft: false,
|
|
2494
2947
|
canScrollRight: false
|
|
2495
2948
|
});
|
|
2496
|
-
|
|
2949
|
+
useLayoutEffect2(() => {
|
|
2497
2950
|
const row = rowRef.current;
|
|
2498
2951
|
const button = buttonRefs.current[value];
|
|
2499
2952
|
if (!row || !button) {
|
|
@@ -2510,7 +2963,7 @@ function UnderlineTabs({
|
|
|
2510
2963
|
(current) => current.left === nextStyle.left && current.width === nextStyle.width ? current : nextStyle
|
|
2511
2964
|
);
|
|
2512
2965
|
}, [tabs, value]);
|
|
2513
|
-
|
|
2966
|
+
useEffect4(() => {
|
|
2514
2967
|
const viewport = viewportRef.current;
|
|
2515
2968
|
if (!viewport) {
|
|
2516
2969
|
return;
|
|
@@ -2600,7 +3053,7 @@ function UnderlineTabs({
|
|
|
2600
3053
|
"aria-selected": isActive,
|
|
2601
3054
|
className: cn(
|
|
2602
3055
|
"relative inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap border-0 bg-transparent p-0 text-[13px] font-semibold leading-6 text-[var(--text-secondary)] transition-colors hover:text-[var(--text-primary)] focus-visible:outline-none",
|
|
2603
|
-
isActive && "text-[var(--
|
|
3056
|
+
isActive && "text-[var(--tutti-purple)]"
|
|
2604
3057
|
),
|
|
2605
3058
|
"data-active": isActive ? "true" : "false",
|
|
2606
3059
|
"data-slot": "underline-tabs-tab",
|
|
@@ -2611,7 +3064,7 @@ function UnderlineTabs({
|
|
|
2611
3064
|
onMouseDown: preventMouseDownDefault ? (event) => event.preventDefault() : void 0,
|
|
2612
3065
|
children: [
|
|
2613
3066
|
/* @__PURE__ */ jsx28("span", { children: tab.label }),
|
|
2614
|
-
tab.count !== void 0 ? /* @__PURE__ */ jsx28("span", { className: "text-
|
|
3067
|
+
tab.count !== void 0 ? /* @__PURE__ */ jsx28("span", { className: "text-[11px] font-semibold leading-6 text-[inherit]", children: tab.count }) : null
|
|
2615
3068
|
]
|
|
2616
3069
|
},
|
|
2617
3070
|
tab.value
|
|
@@ -2621,7 +3074,7 @@ function UnderlineTabs({
|
|
|
2621
3074
|
"div",
|
|
2622
3075
|
{
|
|
2623
3076
|
"aria-hidden": true,
|
|
2624
|
-
className: "absolute bottom-0 left-0 z-[1] h-0.5 rounded-[1px] bg-[var(--
|
|
3077
|
+
className: "absolute bottom-0 left-0 z-[1] h-0.5 rounded-[1px] bg-[var(--tutti-purple)] transition-[transform,width] duration-[220ms] ease-[cubic-bezier(0.4,0,0.2,1)] motion-reduce:transition-none",
|
|
2625
3078
|
"data-slot": "underline-tabs-indicator",
|
|
2626
3079
|
style: {
|
|
2627
3080
|
transform: `translateX(${indicatorStyle.left}px)`,
|
|
@@ -2800,7 +3253,7 @@ var ViewportMenuSurface = React6.forwardRef(function ViewportMenuSurface2({
|
|
|
2800
3253
|
}, forwardedRef) {
|
|
2801
3254
|
const surfaceRef = React6.useRef(null);
|
|
2802
3255
|
const [measuredSize, setMeasuredSize] = React6.useState(null);
|
|
2803
|
-
const
|
|
3256
|
+
const setRefs2 = React6.useCallback(
|
|
2804
3257
|
(node) => {
|
|
2805
3258
|
surfaceRef.current = node;
|
|
2806
3259
|
assignRef(forwardedRef, node);
|
|
@@ -2937,7 +3390,7 @@ var ViewportMenuSurface = React6.forwardRef(function ViewportMenuSurface2({
|
|
|
2937
3390
|
MenuSurface,
|
|
2938
3391
|
{
|
|
2939
3392
|
...rest,
|
|
2940
|
-
ref:
|
|
3393
|
+
ref: setRefs2,
|
|
2941
3394
|
className,
|
|
2942
3395
|
"data-slot": "viewport-menu-surface",
|
|
2943
3396
|
style: {
|
|
@@ -3075,4 +3528,4 @@ export {
|
|
|
3075
3528
|
UnderlineTabs,
|
|
3076
3529
|
ViewportMenuSurface
|
|
3077
3530
|
};
|
|
3078
|
-
//# sourceMappingURL=chunk-
|
|
3531
|
+
//# sourceMappingURL=chunk-HJ43LQHW.js.map
|