@sofya-ds/react 0.1.0 → 1.1.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/index.cjs +842 -673
- package/dist/index.css +1 -1
- package/dist/index.d.cts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +842 -673
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -645,11 +645,11 @@ var alertVariants = cva2("flex w-full items-start border", {
|
|
|
645
645
|
lg: "gap-4 rounded-[18px] px-6 py-4"
|
|
646
646
|
},
|
|
647
647
|
tone: {
|
|
648
|
-
default: "border-[
|
|
649
|
-
info: "border-[
|
|
650
|
-
success: "border-[
|
|
651
|
-
warning: "border-[
|
|
652
|
-
destructive: "border-[
|
|
648
|
+
default: "border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tone-default-background)] text-[color:var(--sofya-tone-default-foreground)]",
|
|
649
|
+
info: "border-[color:var(--sofya-tone-info-border)] bg-[color:var(--sofya-tone-info-background)] text-[color:var(--sofya-tone-info-foreground)]",
|
|
650
|
+
success: "border-[color:var(--sofya-tone-success-border)] bg-[color:var(--sofya-tone-success-background)] text-[color:var(--sofya-tone-success-foreground)]",
|
|
651
|
+
warning: "border-[color:var(--sofya-tone-warning-border)] bg-[color:var(--sofya-tone-warning-background)] text-[color:var(--sofya-tone-warning-foreground)]",
|
|
652
|
+
destructive: "border-[color:var(--sofya-tone-destructive-border)] bg-[color:var(--sofya-tone-destructive-background)] text-[color:var(--sofya-tone-destructive-foreground)]"
|
|
653
653
|
}
|
|
654
654
|
},
|
|
655
655
|
defaultVariants: {
|
|
@@ -686,7 +686,10 @@ var Alert = React5.forwardRef(function Alert2({
|
|
|
686
686
|
"data-slot": "alert",
|
|
687
687
|
"data-tone": resolvedTone,
|
|
688
688
|
role: resolvedRole,
|
|
689
|
-
className: cn(
|
|
689
|
+
className: cn(
|
|
690
|
+
alertVariants({ size: resolvedSize, tone: resolvedTone }),
|
|
691
|
+
className
|
|
692
|
+
),
|
|
690
693
|
...props,
|
|
691
694
|
children: [
|
|
692
695
|
resolvedIcon ? /* @__PURE__ */ jsx5(
|
|
@@ -702,29 +705,27 @@ var Alert = React5.forwardRef(function Alert2({
|
|
|
702
705
|
}
|
|
703
706
|
);
|
|
704
707
|
});
|
|
705
|
-
var AlertTitle = React5.forwardRef(
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
}
|
|
727
|
-
);
|
|
708
|
+
var AlertTitle = React5.forwardRef(function AlertTitle2({ children, className, ...props }, ref) {
|
|
709
|
+
return /* @__PURE__ */ jsx5(
|
|
710
|
+
"div",
|
|
711
|
+
{
|
|
712
|
+
ref,
|
|
713
|
+
"data-slot": "alert-title",
|
|
714
|
+
className: cn("text-current", className),
|
|
715
|
+
...props,
|
|
716
|
+
children: renderTextContent(children, {
|
|
717
|
+
as: "span",
|
|
718
|
+
className: "block text-current",
|
|
719
|
+
size: "h4",
|
|
720
|
+
style: {
|
|
721
|
+
fontWeight: 500,
|
|
722
|
+
lineHeight: "22px",
|
|
723
|
+
letterSpacing: "-0.02em"
|
|
724
|
+
}
|
|
725
|
+
})
|
|
726
|
+
}
|
|
727
|
+
);
|
|
728
|
+
});
|
|
728
729
|
var AlertDescription = React5.forwardRef(function AlertDescription2({ children, className, ...props }, ref) {
|
|
729
730
|
return /* @__PURE__ */ jsx5(
|
|
730
731
|
"div",
|
|
@@ -767,7 +768,7 @@ var badgeVariants = cva3(
|
|
|
767
768
|
{
|
|
768
769
|
variants: {
|
|
769
770
|
variant: {
|
|
770
|
-
default: "border-transparent bg-
|
|
771
|
+
default: "border-transparent bg-accent/10 text-accent",
|
|
771
772
|
secondary: "border-transparent bg-secondary text-secondary-foreground",
|
|
772
773
|
outline: "border border-border bg-background text-foreground",
|
|
773
774
|
success: "border-transparent bg-success/10 text-success",
|
|
@@ -786,9 +787,9 @@ var badgeAlertVariants = cva3(
|
|
|
786
787
|
{
|
|
787
788
|
variants: {
|
|
788
789
|
alert: {
|
|
789
|
-
default: "border-transparent bg-
|
|
790
|
-
medium: "border-transparent bg-[
|
|
791
|
-
high: "border-transparent bg-[
|
|
790
|
+
default: "border-transparent bg-accent/10 text-accent",
|
|
791
|
+
medium: "border-transparent bg-[color:var(--sofya-tone-warning-background)] text-warning",
|
|
792
|
+
high: "border-transparent bg-[color:var(--sofya-tone-destructive-background)] text-destructive"
|
|
792
793
|
}
|
|
793
794
|
},
|
|
794
795
|
defaultVariants: {
|
|
@@ -801,8 +802,8 @@ var badgePillVariants = cva3(
|
|
|
801
802
|
{
|
|
802
803
|
variants: {
|
|
803
804
|
tone: {
|
|
804
|
-
neutral: "border-[
|
|
805
|
-
danger: "border-[
|
|
805
|
+
neutral: "border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tone-default-background)] text-[color:var(--sofya-tone-default-foreground)]",
|
|
806
|
+
danger: "border-[color:var(--sofya-tone-destructive-border)] bg-[color:var(--sofya-tone-destructive-background)] text-[color:var(--sofya-tone-destructive-foreground)]"
|
|
806
807
|
}
|
|
807
808
|
},
|
|
808
809
|
defaultVariants: {
|
|
@@ -958,15 +959,15 @@ var buttonVariantOptions = [
|
|
|
958
959
|
];
|
|
959
960
|
var buttonSizeOptions = ["default", "sm", "lg", "icon"];
|
|
960
961
|
var buttonRippleVariantClasses = {
|
|
961
|
-
default: "bg-
|
|
962
|
-
gradient: "bg-
|
|
963
|
-
dropdown: "bg-[
|
|
964
|
-
icon: "bg-primary/34",
|
|
965
|
-
language: "bg-
|
|
966
|
-
secondary: "bg-primary/30",
|
|
967
|
-
outline: "bg-primary/32",
|
|
968
|
-
ghost: "bg-primary/28",
|
|
969
|
-
destructive: "bg-
|
|
962
|
+
default: "bg-[hsl(var(--sofya-primary-foreground)/0.82)] mix-blend-screen",
|
|
963
|
+
gradient: "bg-[hsl(var(--sofya-primary-foreground)/0.8)] mix-blend-screen",
|
|
964
|
+
dropdown: "bg-[hsl(var(--sofya-primary)/0.36)]",
|
|
965
|
+
icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
|
|
966
|
+
language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
|
|
967
|
+
secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
|
|
968
|
+
outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
|
|
969
|
+
ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
|
|
970
|
+
destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
|
|
970
971
|
};
|
|
971
972
|
var buttonVariants = cva4(
|
|
972
973
|
"relative isolate inline-flex items-center justify-center gap-2 overflow-hidden whitespace-nowrap rounded-full text-[14px] font-medium leading-5 tracking-[0.025em] transform-gpu transition-[width,transform,filter,background-color,border-color,color,box-shadow] duration-sofya ease-sofya motion-safe:active:scale-[0.985] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
|
|
@@ -975,7 +976,7 @@ var buttonVariants = cva4(
|
|
|
975
976
|
variant: {
|
|
976
977
|
default: "bg-primary text-primary-foreground hover:brightness-[1.04]",
|
|
977
978
|
gradient: "sofya-gradient-motion [--sofya-gradient-motion-duration:4s] bg-[linear-gradient(90deg,hsl(var(--sofya-button-gradient-from))_0%,hsl(var(--sofya-button-gradient-to))_100%)] text-primary-foreground hover:brightness-[1.05]",
|
|
978
|
-
dropdown: "justify-between border border-[
|
|
979
|
+
dropdown: "justify-between border border-[color:var(--sofya-border-strong)] bg-card font-normal tracking-normal text-primary shadow-none hover:bg-card hover:border-[color:var(--sofya-border-strong)]",
|
|
979
980
|
icon: "border-0 bg-primary/10 text-primary shadow-sofya-sm hover:bg-primary/15",
|
|
980
981
|
language: "border-0 bg-muted bg-cover bg-center bg-no-repeat text-primary-foreground shadow-none hover:brightness-[1.03]",
|
|
981
982
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/85",
|
|
@@ -1015,12 +1016,17 @@ var buttonRippleBaseSize = {
|
|
|
1015
1016
|
lg: 22,
|
|
1016
1017
|
icon: 18
|
|
1017
1018
|
};
|
|
1018
|
-
function ButtonSpinner({
|
|
1019
|
+
function ButtonSpinner({
|
|
1020
|
+
size
|
|
1021
|
+
}) {
|
|
1019
1022
|
return /* @__PURE__ */ jsxs4(
|
|
1020
1023
|
"svg",
|
|
1021
1024
|
{
|
|
1022
1025
|
"aria-hidden": "true",
|
|
1023
|
-
className: cn(
|
|
1026
|
+
className: cn(
|
|
1027
|
+
"animate-spin text-current",
|
|
1028
|
+
loadingSpinnerSizeClasses[size]
|
|
1029
|
+
),
|
|
1024
1030
|
viewBox: "0 0 24 24",
|
|
1025
1031
|
fill: "none",
|
|
1026
1032
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -1098,11 +1104,11 @@ var Button = React6.forwardRef(
|
|
|
1098
1104
|
const hideContent = loadingPhase === "hiding-content" || loadingPhase === "collapsing" || loadingPhase === "loading" || loadingPhase === "hiding-spinner" || loadingPhase === "expanding";
|
|
1099
1105
|
const showSpinner = loadingPhase === "loading";
|
|
1100
1106
|
const iconOnlyActionClassName = isIconOnlyAction ? cn(
|
|
1101
|
-
"h-10 w-10 rounded-[10px] border-0 p-2 text-
|
|
1102
|
-
active ? "bg-[
|
|
1107
|
+
"h-10 w-10 rounded-[10px] border-0 p-2 text-primary shadow-none",
|
|
1108
|
+
active ? "bg-[color:var(--sofya-surface-selected)] hover:bg-[color:var(--sofya-surface-selected)]" : "bg-transparent hover:bg-transparent"
|
|
1103
1109
|
) : void 0;
|
|
1104
1110
|
const languageButtonClassName = isLanguageButton ? cn(
|
|
1105
|
-
"min-w-0 overflow-hidden border-0 text-
|
|
1111
|
+
"min-w-0 overflow-hidden border-0 text-primary-foreground shadow-none",
|
|
1106
1112
|
languageButtonSizeClasses[resolvedSize]
|
|
1107
1113
|
) : void 0;
|
|
1108
1114
|
const resolvedButtonStyle = {
|
|
@@ -1133,7 +1139,10 @@ var Button = React6.forwardRef(
|
|
|
1133
1139
|
Math.hypot(rect.width - x, rect.height - y)
|
|
1134
1140
|
);
|
|
1135
1141
|
const baseSize = buttonRippleBaseSize[resolvedSize];
|
|
1136
|
-
const finalDiameter = Math.max(
|
|
1142
|
+
const finalDiameter = Math.max(
|
|
1143
|
+
radius * 2 + 24,
|
|
1144
|
+
Math.max(rect.width, rect.height) + 18
|
|
1145
|
+
);
|
|
1137
1146
|
setRipples((currentRipples) => [
|
|
1138
1147
|
...currentRipples,
|
|
1139
1148
|
{
|
|
@@ -1154,7 +1163,11 @@ var Button = React6.forwardRef(
|
|
|
1154
1163
|
return;
|
|
1155
1164
|
}
|
|
1156
1165
|
if (event.button === 0) {
|
|
1157
|
-
createRipple(
|
|
1166
|
+
createRipple(
|
|
1167
|
+
event.currentTarget,
|
|
1168
|
+
event.clientX,
|
|
1169
|
+
event.clientY
|
|
1170
|
+
);
|
|
1158
1171
|
}
|
|
1159
1172
|
},
|
|
1160
1173
|
[createRipple, isDisabled, onPointerDown]
|
|
@@ -1178,7 +1191,10 @@ var Button = React6.forwardRef(
|
|
|
1178
1191
|
frameRef.current = null;
|
|
1179
1192
|
}
|
|
1180
1193
|
}, []);
|
|
1181
|
-
React6.useImperativeHandle(
|
|
1194
|
+
React6.useImperativeHandle(
|
|
1195
|
+
ref,
|
|
1196
|
+
() => buttonRef.current
|
|
1197
|
+
);
|
|
1182
1198
|
React6.useLayoutEffect(() => {
|
|
1183
1199
|
const element = buttonRef.current;
|
|
1184
1200
|
if (element && loadingPhase === "idle" && !loading) {
|
|
@@ -1289,7 +1305,11 @@ var Button = React6.forwardRef(
|
|
|
1289
1305
|
),
|
|
1290
1306
|
initial: prefersReducedMotion ? { opacity: 0.32, scale: 0.72 } : { opacity: 0.56, scale: 0 },
|
|
1291
1307
|
animate: prefersReducedMotion ? { opacity: 0, scale: 1.02 } : { opacity: [0.56, 0.26, 0], scale: ripple.scale },
|
|
1292
|
-
transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
|
|
1308
|
+
transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
|
|
1309
|
+
duration: 0.62,
|
|
1310
|
+
times: [0, 0.35, 1],
|
|
1311
|
+
ease: [0.16, 1, 0.3, 1]
|
|
1312
|
+
},
|
|
1293
1313
|
style: {
|
|
1294
1314
|
height: ripple.size,
|
|
1295
1315
|
left: ripple.x,
|
|
@@ -1452,143 +1472,147 @@ function CardFooter({ children, className, ...props }) {
|
|
|
1452
1472
|
// src/components/checkbox.tsx
|
|
1453
1473
|
import * as React8 from "react";
|
|
1454
1474
|
import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1455
|
-
var Checkbox = React8.forwardRef(
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
children: [
|
|
1483
|
-
/* @__PURE__ */ jsx10(
|
|
1484
|
-
"input",
|
|
1485
|
-
{
|
|
1486
|
-
ref,
|
|
1487
|
-
id: resolvedId,
|
|
1488
|
-
type: "checkbox",
|
|
1489
|
-
className: "peer sr-only",
|
|
1490
|
-
checked,
|
|
1491
|
-
defaultChecked,
|
|
1492
|
-
disabled,
|
|
1493
|
-
"aria-describedby": descriptionId,
|
|
1494
|
-
...props
|
|
1495
|
-
}
|
|
1496
|
-
),
|
|
1497
|
-
/* @__PURE__ */ jsx10(
|
|
1498
|
-
"span",
|
|
1499
|
-
{
|
|
1500
|
-
"aria-hidden": "true",
|
|
1501
|
-
className: cn(
|
|
1502
|
-
"inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[8px] border border-[#D9E2FA] bg-card text-transparent transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya peer-checked:border-primary peer-checked:bg-primary peer-checked:text-primary-foreground peer-focus-visible:ring-2 peer-focus-visible:ring-[#D9E2FA]/60 peer-focus-visible:ring-offset-0",
|
|
1503
|
-
indicatorOffsetClassName
|
|
1504
|
-
),
|
|
1505
|
-
children: /* @__PURE__ */ jsx10(
|
|
1506
|
-
"svg",
|
|
1507
|
-
{
|
|
1508
|
-
viewBox: "0 0 16 16",
|
|
1509
|
-
fill: "none",
|
|
1510
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1511
|
-
className: "h-4 w-4 shrink-0",
|
|
1512
|
-
children: /* @__PURE__ */ jsx10(
|
|
1513
|
-
"path",
|
|
1514
|
-
{
|
|
1515
|
-
d: "M2.75 8.25L6.4 11.9L13.35 4.95",
|
|
1516
|
-
stroke: "currentColor",
|
|
1517
|
-
strokeWidth: "2.4",
|
|
1518
|
-
strokeLinecap: "round",
|
|
1519
|
-
strokeLinejoin: "round"
|
|
1520
|
-
}
|
|
1521
|
-
)
|
|
1522
|
-
}
|
|
1523
|
-
)
|
|
1524
|
-
}
|
|
1475
|
+
var Checkbox = React8.forwardRef(
|
|
1476
|
+
function Checkbox2({
|
|
1477
|
+
checked,
|
|
1478
|
+
className,
|
|
1479
|
+
defaultChecked,
|
|
1480
|
+
description,
|
|
1481
|
+
descriptionClassName,
|
|
1482
|
+
disabled,
|
|
1483
|
+
id,
|
|
1484
|
+
label,
|
|
1485
|
+
labelClassName,
|
|
1486
|
+
...props
|
|
1487
|
+
}, ref) {
|
|
1488
|
+
const generatedId = React8.useId();
|
|
1489
|
+
const resolvedId = id ?? generatedId;
|
|
1490
|
+
const descriptionId = description ? `${resolvedId}-description` : void 0;
|
|
1491
|
+
const alignClassName = description ? "items-start" : "items-center";
|
|
1492
|
+
const indicatorOffsetClassName = "";
|
|
1493
|
+
return /* @__PURE__ */ jsxs5(
|
|
1494
|
+
"label",
|
|
1495
|
+
{
|
|
1496
|
+
htmlFor: resolvedId,
|
|
1497
|
+
className: cn(
|
|
1498
|
+
"flex w-fit gap-4",
|
|
1499
|
+
alignClassName,
|
|
1500
|
+
disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
|
|
1501
|
+
className
|
|
1525
1502
|
),
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
"
|
|
1503
|
+
children: [
|
|
1504
|
+
/* @__PURE__ */ jsx10(
|
|
1505
|
+
"input",
|
|
1529
1506
|
{
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
fontWeight: 400,
|
|
1540
|
-
lineHeight: "22px",
|
|
1541
|
-
letterSpacing: "-0.02em"
|
|
1542
|
-
}
|
|
1543
|
-
})
|
|
1507
|
+
ref,
|
|
1508
|
+
id: resolvedId,
|
|
1509
|
+
type: "checkbox",
|
|
1510
|
+
className: "peer sr-only",
|
|
1511
|
+
checked,
|
|
1512
|
+
defaultChecked,
|
|
1513
|
+
disabled,
|
|
1514
|
+
"aria-describedby": descriptionId,
|
|
1515
|
+
...props
|
|
1544
1516
|
}
|
|
1545
|
-
)
|
|
1546
|
-
|
|
1517
|
+
),
|
|
1518
|
+
/* @__PURE__ */ jsx10(
|
|
1547
1519
|
"span",
|
|
1548
1520
|
{
|
|
1549
|
-
|
|
1521
|
+
"aria-hidden": "true",
|
|
1550
1522
|
className: cn(
|
|
1551
|
-
"text-
|
|
1552
|
-
|
|
1523
|
+
"inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[8px] border border-[color:var(--sofya-border-strong)] bg-card text-transparent transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya peer-checked:border-primary peer-checked:bg-primary peer-checked:text-primary-foreground peer-focus-visible:ring-2 peer-focus-visible:ring-[color:var(--sofya-focus-ring-soft)] peer-focus-visible:ring-offset-0",
|
|
1524
|
+
indicatorOffsetClassName
|
|
1553
1525
|
),
|
|
1554
|
-
children:
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1526
|
+
children: /* @__PURE__ */ jsx10(
|
|
1527
|
+
"svg",
|
|
1528
|
+
{
|
|
1529
|
+
viewBox: "0 0 16 16",
|
|
1530
|
+
fill: "none",
|
|
1531
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1532
|
+
className: "h-4 w-4 shrink-0",
|
|
1533
|
+
children: /* @__PURE__ */ jsx10(
|
|
1534
|
+
"path",
|
|
1535
|
+
{
|
|
1536
|
+
d: "M2.75 8.25L6.4 11.9L13.35 4.95",
|
|
1537
|
+
stroke: "currentColor",
|
|
1538
|
+
strokeWidth: "2.4",
|
|
1539
|
+
strokeLinecap: "round",
|
|
1540
|
+
strokeLinejoin: "round"
|
|
1541
|
+
}
|
|
1542
|
+
)
|
|
1560
1543
|
}
|
|
1561
|
-
|
|
1544
|
+
)
|
|
1562
1545
|
}
|
|
1563
|
-
)
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1546
|
+
),
|
|
1547
|
+
label || description ? /* @__PURE__ */ jsxs5("span", { className: "grid gap-2", children: [
|
|
1548
|
+
label ? /* @__PURE__ */ jsx10(
|
|
1549
|
+
"span",
|
|
1550
|
+
{
|
|
1551
|
+
className: cn(
|
|
1552
|
+
"text-[color:var(--sofya-text-default)] [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-[3px]",
|
|
1553
|
+
labelClassName
|
|
1554
|
+
),
|
|
1555
|
+
children: renderTextContent(label, {
|
|
1556
|
+
as: "span",
|
|
1557
|
+
className: "text-[color:var(--sofya-text-default)]",
|
|
1558
|
+
size: "h4",
|
|
1559
|
+
style: {
|
|
1560
|
+
fontWeight: 400,
|
|
1561
|
+
lineHeight: "22px",
|
|
1562
|
+
letterSpacing: "-0.02em"
|
|
1563
|
+
}
|
|
1564
|
+
})
|
|
1565
|
+
}
|
|
1566
|
+
) : null,
|
|
1567
|
+
description ? /* @__PURE__ */ jsx10(
|
|
1568
|
+
"span",
|
|
1569
|
+
{
|
|
1570
|
+
id: descriptionId,
|
|
1571
|
+
className: cn("text-muted-foreground", descriptionClassName),
|
|
1572
|
+
children: renderTextContent(description, {
|
|
1573
|
+
as: "span",
|
|
1574
|
+
className: "text-muted-foreground",
|
|
1575
|
+
size: "body",
|
|
1576
|
+
style: {
|
|
1577
|
+
lineHeight: "20px"
|
|
1578
|
+
}
|
|
1579
|
+
})
|
|
1580
|
+
}
|
|
1581
|
+
) : null
|
|
1582
|
+
] }) : null
|
|
1583
|
+
]
|
|
1584
|
+
}
|
|
1585
|
+
);
|
|
1586
|
+
}
|
|
1587
|
+
);
|
|
1569
1588
|
Checkbox.displayName = "Checkbox";
|
|
1570
1589
|
|
|
1571
1590
|
// src/components/dropdown.tsx
|
|
1572
1591
|
import * as React9 from "react";
|
|
1573
1592
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
1574
1593
|
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1575
|
-
var dropdownVariantOptions = [
|
|
1594
|
+
var dropdownVariantOptions = [
|
|
1595
|
+
"card",
|
|
1596
|
+
"panel",
|
|
1597
|
+
"language",
|
|
1598
|
+
"selected"
|
|
1599
|
+
];
|
|
1576
1600
|
var dropdownLanguageItems = [
|
|
1577
1601
|
{ value: "en-US", label: "English", languageLocale: "en-US" },
|
|
1578
1602
|
{ value: "pt-BR", label: "Portuguese", languageLocale: "pt-BR" },
|
|
1579
1603
|
{ value: "es-ES", label: "Spanish", languageLocale: "es-ES" }
|
|
1580
1604
|
];
|
|
1581
1605
|
var dropdownTriggerClasses = {
|
|
1582
|
-
card: "h-12 rounded-[20px] px-6 py-2 text-
|
|
1606
|
+
card: "h-12 rounded-[20px] px-6 py-2 text-primary",
|
|
1583
1607
|
panel: "h-12 rounded-[10px] px-6 py-2 text-foreground",
|
|
1584
1608
|
language: "",
|
|
1585
|
-
selected: "h-10 w-full rounded-[10px] border-[
|
|
1609
|
+
selected: "h-10 w-full rounded-[10px] border-[color:var(--sofya-border-strong)] px-4 py-2 text-[14px] font-normal leading-[22px] tracking-[-0.02em]"
|
|
1586
1610
|
};
|
|
1587
1611
|
var dropdownContentClasses = {
|
|
1588
|
-
card: "rounded-[20px] border-[
|
|
1589
|
-
panel: "rounded-[10px] border-[
|
|
1590
|
-
language: "w-[224px] min-w-[224px] rounded-[10px] border-[
|
|
1591
|
-
selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] rounded-[10px] border-[
|
|
1612
|
+
card: "rounded-[20px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1613
|
+
panel: "rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1614
|
+
language: "w-[224px] min-w-[224px] rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1615
|
+
selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
1592
1616
|
};
|
|
1593
1617
|
var dropdownItemClasses = {
|
|
1594
1618
|
card: "text-foreground",
|
|
@@ -1610,7 +1634,13 @@ function resolveItemLanguageLocale(item) {
|
|
|
1610
1634
|
}
|
|
1611
1635
|
function DefaultDropdownTriggerIcon({ variant }) {
|
|
1612
1636
|
if (variant === "selected") {
|
|
1613
|
-
return /* @__PURE__ */ jsx11(
|
|
1637
|
+
return /* @__PURE__ */ jsx11(
|
|
1638
|
+
Icon,
|
|
1639
|
+
{
|
|
1640
|
+
name: "caret-down",
|
|
1641
|
+
className: "h-[6px] w-[11px] text-[color:var(--sofya-text-subtle)]"
|
|
1642
|
+
}
|
|
1643
|
+
);
|
|
1614
1644
|
}
|
|
1615
1645
|
return /* @__PURE__ */ jsx11("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px]", children: /* @__PURE__ */ jsx11(Icon, { name: "caret-down", className: "!h-4 !w-4" }) });
|
|
1616
1646
|
}
|
|
@@ -1658,10 +1688,14 @@ function Dropdown({
|
|
|
1658
1688
|
[isLanguageVariant, items]
|
|
1659
1689
|
);
|
|
1660
1690
|
const defaultUncontrolledValue = defaultValue ?? (isLanguageVariant ? resolvedItems[0]?.value : void 0);
|
|
1661
|
-
const [internalValue, setInternalValue] = React9.useState(
|
|
1691
|
+
const [internalValue, setInternalValue] = React9.useState(
|
|
1692
|
+
defaultUncontrolledValue
|
|
1693
|
+
);
|
|
1662
1694
|
const selectedValue = value ?? internalValue;
|
|
1663
1695
|
const radioValue = selectedValue ?? "";
|
|
1664
|
-
const selectedItem = resolvedItems.find(
|
|
1696
|
+
const selectedItem = resolvedItems.find(
|
|
1697
|
+
(item) => item.value === selectedValue
|
|
1698
|
+
);
|
|
1665
1699
|
const hasSelectedItem = selectedItem !== void 0;
|
|
1666
1700
|
const selectedLanguageLocale = resolveItemLanguageLocale(selectedItem);
|
|
1667
1701
|
React9.useEffect(() => {
|
|
@@ -1675,7 +1709,7 @@ function Dropdown({
|
|
|
1675
1709
|
}, [defaultUncontrolledValue, internalValue, resolvedItems, value]);
|
|
1676
1710
|
const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ jsx11(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
|
|
1677
1711
|
const triggerLabel = selectedItem?.triggerLabel ?? selectedItem?.label ?? placeholder;
|
|
1678
|
-
const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[
|
|
1712
|
+
const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[color:var(--sofya-text-soft)]" : void 0;
|
|
1679
1713
|
function handleValueChange(nextValue) {
|
|
1680
1714
|
if (value === void 0) {
|
|
1681
1715
|
setInternalValue(nextValue);
|
|
@@ -1721,7 +1755,7 @@ function Dropdown({
|
|
|
1721
1755
|
align,
|
|
1722
1756
|
sideOffset,
|
|
1723
1757
|
className: cn(
|
|
1724
|
-
"sofya-dropdown-content z-50 w-auto min-w-[var(--radix-dropdown-menu-trigger-width)] border bg-
|
|
1758
|
+
"sofya-dropdown-content z-50 w-auto min-w-[var(--radix-dropdown-menu-trigger-width)] border bg-card p-2 outline-none",
|
|
1725
1759
|
dropdownContentClasses[variant],
|
|
1726
1760
|
contentClassName
|
|
1727
1761
|
),
|
|
@@ -1743,7 +1777,7 @@ function Dropdown({
|
|
|
1743
1777
|
disabled: item.disabled,
|
|
1744
1778
|
className: cn(
|
|
1745
1779
|
"flex w-full cursor-pointer items-center rounded-[4px] text-[14px] font-normal leading-[normal] outline-none transition-colors duration-sofya ease-sofya data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
1746
|
-
usesDefaultListStyle ? "px-0 py-0 data-[highlighted]:bg-transparent [&[data-highlighted]_span[data-dropdown-item-body]]:bg-[
|
|
1780
|
+
usesDefaultListStyle ? "px-0 py-0 data-[highlighted]:bg-transparent [&[data-highlighted]_span[data-dropdown-item-body]]:bg-[color:var(--sofya-surface-selected)]" : "px-2 py-2 data-[highlighted]:bg-[color:var(--sofya-surface-hover)]",
|
|
1747
1781
|
dropdownItemClasses[variant],
|
|
1748
1782
|
itemClassName
|
|
1749
1783
|
),
|
|
@@ -1753,7 +1787,7 @@ function Dropdown({
|
|
|
1753
1787
|
"data-dropdown-item-body": true,
|
|
1754
1788
|
className: cn(
|
|
1755
1789
|
"inline-flex min-w-0 items-center gap-2 rounded-full px-4 py-2 transition-colors duration-sofya ease-sofya",
|
|
1756
|
-
isSelected ? "bg-[
|
|
1790
|
+
isSelected ? "bg-[color:var(--sofya-surface-selected)]" : "bg-transparent"
|
|
1757
1791
|
),
|
|
1758
1792
|
children: [
|
|
1759
1793
|
itemIcon ? /* @__PURE__ */ jsx11("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
|
|
@@ -1795,7 +1829,7 @@ function Dropdown({
|
|
|
1795
1829
|
"aria-hidden": "true",
|
|
1796
1830
|
className: cn(
|
|
1797
1831
|
"flex h-4 w-4 shrink-0 items-center justify-center transition-opacity duration-sofya ease-sofya",
|
|
1798
|
-
variant === "language" && "text-
|
|
1832
|
+
variant === "language" && "text-primary",
|
|
1799
1833
|
isSelected ? "opacity-100" : "opacity-0"
|
|
1800
1834
|
),
|
|
1801
1835
|
children: indicator
|
|
@@ -2070,25 +2104,29 @@ var InputOTP = React12.forwardRef(({ className, containerClassName, ...props },
|
|
|
2070
2104
|
OTPInput,
|
|
2071
2105
|
{
|
|
2072
2106
|
ref,
|
|
2073
|
-
containerClassName: cn(
|
|
2107
|
+
containerClassName: cn(
|
|
2108
|
+
"flex items-center gap-4 has-[:disabled]:opacity-50",
|
|
2109
|
+
containerClassName
|
|
2110
|
+
),
|
|
2074
2111
|
className: cn("disabled:cursor-not-allowed", className),
|
|
2075
2112
|
...props
|
|
2076
2113
|
}
|
|
2077
2114
|
);
|
|
2078
2115
|
});
|
|
2079
2116
|
InputOTP.displayName = "InputOTP";
|
|
2080
|
-
var InputOTPGroup = React12.forwardRef(
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
);
|
|
2117
|
+
var InputOTPGroup = React12.forwardRef(({ className, ...props }, ref) => {
|
|
2118
|
+
return /* @__PURE__ */ jsx14(
|
|
2119
|
+
"div",
|
|
2120
|
+
{
|
|
2121
|
+
ref,
|
|
2122
|
+
className: cn(
|
|
2123
|
+
"flex overflow-hidden rounded-[12px] border border-[color:var(--sofya-border-hover)] bg-card",
|
|
2124
|
+
className
|
|
2125
|
+
),
|
|
2126
|
+
...props
|
|
2127
|
+
}
|
|
2128
|
+
);
|
|
2129
|
+
});
|
|
2092
2130
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
2093
2131
|
var InputOTPSlot = React12.forwardRef(
|
|
2094
2132
|
({ className, index, ...props }, ref) => {
|
|
@@ -2100,7 +2138,7 @@ var InputOTPSlot = React12.forwardRef(
|
|
|
2100
2138
|
{
|
|
2101
2139
|
ref,
|
|
2102
2140
|
className: cn(
|
|
2103
|
-
"relative flex h-[92px] w-[96px] items-center justify-center border-r border-[
|
|
2141
|
+
"relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card last:border-r-0",
|
|
2104
2142
|
className
|
|
2105
2143
|
),
|
|
2106
2144
|
...props
|
|
@@ -2112,39 +2150,45 @@ var InputOTPSlot = React12.forwardRef(
|
|
|
2112
2150
|
{
|
|
2113
2151
|
ref,
|
|
2114
2152
|
className: cn(
|
|
2115
|
-
"relative flex h-[92px] w-[96px] items-center justify-center border-r border-[
|
|
2116
|
-
slot.isActive && "z-10 border-transparent bg-[
|
|
2153
|
+
"relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card text-[40px] font-medium leading-none tracking-[-0.04em] text-[color:var(--sofya-text-default)] transition-[background-color,box-shadow,border-color,color] duration-sofya ease-sofya last:border-r-0",
|
|
2154
|
+
slot.isActive && "z-10 border-transparent bg-[color:var(--sofya-surface-hover)] text-primary shadow-[var(--sofya-shadow-otp-focus)] ring-2 ring-inset ring-[color:var(--sofya-focus-ring-strong)]",
|
|
2117
2155
|
className
|
|
2118
2156
|
),
|
|
2119
2157
|
...props,
|
|
2120
2158
|
children: [
|
|
2121
2159
|
slot.char ?? null,
|
|
2122
|
-
slot.hasFakeCaret ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx14("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-
|
|
2160
|
+
slot.hasFakeCaret ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx14("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
|
|
2123
2161
|
]
|
|
2124
2162
|
}
|
|
2125
2163
|
);
|
|
2126
2164
|
}
|
|
2127
2165
|
);
|
|
2128
2166
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
2129
|
-
var InputOTPSeparator = React12.forwardRef(
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
);
|
|
2167
|
+
var InputOTPSeparator = React12.forwardRef(({ className, ...props }, ref) => {
|
|
2168
|
+
return /* @__PURE__ */ jsx14(
|
|
2169
|
+
"div",
|
|
2170
|
+
{
|
|
2171
|
+
ref,
|
|
2172
|
+
role: "separator",
|
|
2173
|
+
className: cn(
|
|
2174
|
+
"flex items-center justify-center px-2 text-[28px] leading-none text-[color:var(--sofya-text-soft)]",
|
|
2175
|
+
className
|
|
2176
|
+
),
|
|
2177
|
+
...props,
|
|
2178
|
+
children: /* @__PURE__ */ jsx14("span", { "aria-hidden": "true", children: "." })
|
|
2179
|
+
}
|
|
2180
|
+
);
|
|
2181
|
+
});
|
|
2143
2182
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
2144
2183
|
|
|
2145
2184
|
// src/components/input.tsx
|
|
2146
2185
|
import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2147
|
-
var inputVariantOptions = [
|
|
2186
|
+
var inputVariantOptions = [
|
|
2187
|
+
"default",
|
|
2188
|
+
"search",
|
|
2189
|
+
"otp",
|
|
2190
|
+
"upload"
|
|
2191
|
+
];
|
|
2148
2192
|
var uploadKindOptions = ["document", "image", "video"];
|
|
2149
2193
|
var uploadAcceptByKind = {
|
|
2150
2194
|
document: ".pdf,.doc,.docx,.txt,.rtf,.odt,.jpg,.jpeg,.png,.webp,.gif",
|
|
@@ -2161,7 +2205,14 @@ var uploadAriaLabelByKind = {
|
|
|
2161
2205
|
image: "Upload de imagem",
|
|
2162
2206
|
video: "Upload de video"
|
|
2163
2207
|
};
|
|
2164
|
-
var uploadDocumentExtensions = /* @__PURE__ */ new Set([
|
|
2208
|
+
var uploadDocumentExtensions = /* @__PURE__ */ new Set([
|
|
2209
|
+
"pdf",
|
|
2210
|
+
"doc",
|
|
2211
|
+
"docx",
|
|
2212
|
+
"txt",
|
|
2213
|
+
"rtf",
|
|
2214
|
+
"odt"
|
|
2215
|
+
]);
|
|
2165
2216
|
var uploadImageExtensions = /* @__PURE__ */ new Set(["jpg", "jpeg", "png", "webp", "gif"]);
|
|
2166
2217
|
var uploadVideoExtensions = /* @__PURE__ */ new Set(["mp4", "mov", "avi", "webm", "m4v"]);
|
|
2167
2218
|
function resolveUploadFileExtension(file) {
|
|
@@ -2244,11 +2295,14 @@ function InputShell({
|
|
|
2244
2295
|
label ? /* @__PURE__ */ jsx15(
|
|
2245
2296
|
"label",
|
|
2246
2297
|
{
|
|
2247
|
-
className: cn(
|
|
2298
|
+
className: cn(
|
|
2299
|
+
"text-[color:var(--sofya-text-default)]",
|
|
2300
|
+
labelClassName
|
|
2301
|
+
),
|
|
2248
2302
|
htmlFor: resolvedId,
|
|
2249
2303
|
children: renderTextContent(label, {
|
|
2250
2304
|
as: "span",
|
|
2251
|
-
className: "block text-[var(--sofya-
|
|
2305
|
+
className: "block text-[color:var(--sofya-text-default)]",
|
|
2252
2306
|
size: "h4",
|
|
2253
2307
|
style: {
|
|
2254
2308
|
fontWeight: 500,
|
|
@@ -2275,11 +2329,14 @@ function UploadInputShell({
|
|
|
2275
2329
|
label || optionalLabel ? /* @__PURE__ */ jsxs10(
|
|
2276
2330
|
"div",
|
|
2277
2331
|
{
|
|
2278
|
-
className: cn(
|
|
2332
|
+
className: cn(
|
|
2333
|
+
"text-[color:var(--sofya-text-default)]",
|
|
2334
|
+
labelClassName
|
|
2335
|
+
),
|
|
2279
2336
|
children: [
|
|
2280
2337
|
renderTextContent(label, {
|
|
2281
2338
|
as: "span",
|
|
2282
|
-
className: "text-[
|
|
2339
|
+
className: "text-[color:var(--sofya-text-default)]",
|
|
2283
2340
|
size: "body",
|
|
2284
2341
|
style: {
|
|
2285
2342
|
fontWeight: 700,
|
|
@@ -2287,9 +2344,9 @@ function UploadInputShell({
|
|
|
2287
2344
|
letterSpacing: "-0.02em"
|
|
2288
2345
|
}
|
|
2289
2346
|
}),
|
|
2290
|
-
optionalLabel ? /* @__PURE__ */ jsx15("span", { className: "ml-2 text-[
|
|
2347
|
+
optionalLabel ? /* @__PURE__ */ jsx15("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(optionalLabel, {
|
|
2291
2348
|
as: "span",
|
|
2292
|
-
className: "text-[
|
|
2349
|
+
className: "text-[color:var(--sofya-text-subtle)]",
|
|
2293
2350
|
size: "tiny",
|
|
2294
2351
|
style: {
|
|
2295
2352
|
fontWeight: 400,
|
|
@@ -2340,7 +2397,18 @@ function UploadFileTypeGlyph({
|
|
|
2340
2397
|
viewBox: "0 0 18 18",
|
|
2341
2398
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2342
2399
|
children: [
|
|
2343
|
-
/* @__PURE__ */ jsx15(
|
|
2400
|
+
/* @__PURE__ */ jsx15(
|
|
2401
|
+
"rect",
|
|
2402
|
+
{
|
|
2403
|
+
x: "2.5",
|
|
2404
|
+
y: "3",
|
|
2405
|
+
width: "13",
|
|
2406
|
+
height: "12",
|
|
2407
|
+
rx: "2.5",
|
|
2408
|
+
stroke: "currentColor",
|
|
2409
|
+
strokeWidth: "1.5"
|
|
2410
|
+
}
|
|
2411
|
+
),
|
|
2344
2412
|
/* @__PURE__ */ jsx15("circle", { cx: "6.75", cy: "7.25", r: "1.25", fill: "currentColor" }),
|
|
2345
2413
|
/* @__PURE__ */ jsx15(
|
|
2346
2414
|
"path",
|
|
@@ -2367,7 +2435,18 @@ function UploadFileTypeGlyph({
|
|
|
2367
2435
|
viewBox: "0 0 18 18",
|
|
2368
2436
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2369
2437
|
children: [
|
|
2370
|
-
/* @__PURE__ */ jsx15(
|
|
2438
|
+
/* @__PURE__ */ jsx15(
|
|
2439
|
+
"rect",
|
|
2440
|
+
{
|
|
2441
|
+
x: "2.5",
|
|
2442
|
+
y: "4",
|
|
2443
|
+
width: "13",
|
|
2444
|
+
height: "10",
|
|
2445
|
+
rx: "2.5",
|
|
2446
|
+
stroke: "currentColor",
|
|
2447
|
+
strokeWidth: "1.5"
|
|
2448
|
+
}
|
|
2449
|
+
),
|
|
2371
2450
|
/* @__PURE__ */ jsx15(
|
|
2372
2451
|
"path",
|
|
2373
2452
|
{
|
|
@@ -2421,295 +2500,307 @@ function UploadFileTypeGlyph({
|
|
|
2421
2500
|
}
|
|
2422
2501
|
);
|
|
2423
2502
|
}
|
|
2424
|
-
var UploadInputControl = React13.forwardRef(
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
const
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2503
|
+
var UploadInputControl = React13.forwardRef(function UploadInputControl2({
|
|
2504
|
+
accept,
|
|
2505
|
+
"aria-label": ariaLabel,
|
|
2506
|
+
className,
|
|
2507
|
+
disabled,
|
|
2508
|
+
multiple,
|
|
2509
|
+
onChange,
|
|
2510
|
+
onFilesChange,
|
|
2511
|
+
uploadDescription,
|
|
2512
|
+
uploadKind = "document",
|
|
2513
|
+
uploadTitle,
|
|
2514
|
+
resolvedId,
|
|
2515
|
+
...uploadProps
|
|
2516
|
+
}, ref) {
|
|
2517
|
+
const inputRef = React13.useRef(null);
|
|
2518
|
+
const [isDragActive, setIsDragActive] = React13.useState(false);
|
|
2519
|
+
const [selectedFiles, setSelectedFiles] = React13.useState([]);
|
|
2520
|
+
const resolvedMultiple = multiple ?? true;
|
|
2521
|
+
const prefersReducedMotion = useReducedMotion2();
|
|
2522
|
+
React13.useImperativeHandle(ref, () => inputRef.current);
|
|
2523
|
+
const resolvedAccept = accept ?? uploadAcceptByKind[uploadKind];
|
|
2524
|
+
const resolvedAriaLabel = ariaLabel ?? uploadAriaLabelByKind[uploadKind];
|
|
2525
|
+
const resolvedTitle = uploadTitle ?? "Arraste arquivos aqui ou clique para selecionar";
|
|
2526
|
+
const resolvedDescription = uploadDescription ?? uploadDescriptionByKind[uploadKind];
|
|
2527
|
+
const syncSelectedFiles = React13.useCallback(
|
|
2528
|
+
(files) => {
|
|
2529
|
+
const normalizedFiles = resolvedMultiple ? files : files.slice(0, 1);
|
|
2530
|
+
setSelectedFiles(normalizedFiles);
|
|
2531
|
+
onFilesChange?.(normalizedFiles);
|
|
2532
|
+
},
|
|
2533
|
+
[onFilesChange, resolvedMultiple]
|
|
2534
|
+
);
|
|
2535
|
+
const applyFilesToInput = React13.useCallback((files) => {
|
|
2536
|
+
const inputElement = inputRef.current;
|
|
2537
|
+
if (!inputElement || typeof DataTransfer === "undefined") {
|
|
2538
|
+
return false;
|
|
2539
|
+
}
|
|
2540
|
+
try {
|
|
2541
|
+
const transfer = new DataTransfer();
|
|
2542
|
+
files.forEach((file) => {
|
|
2543
|
+
transfer.items.add(file);
|
|
2544
|
+
});
|
|
2545
|
+
inputElement.files = transfer.files;
|
|
2546
|
+
if (!files.length) {
|
|
2547
|
+
inputElement.value = "";
|
|
2461
2548
|
}
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2549
|
+
return true;
|
|
2550
|
+
} catch {
|
|
2551
|
+
return false;
|
|
2552
|
+
}
|
|
2553
|
+
}, []);
|
|
2554
|
+
const handleInputChange = React13.useCallback(
|
|
2555
|
+
(event) => {
|
|
2556
|
+
const nextFiles = mergeUploadFiles(
|
|
2557
|
+
selectedFiles,
|
|
2558
|
+
Array.from(event.currentTarget.files ?? []),
|
|
2559
|
+
resolvedMultiple
|
|
2560
|
+
);
|
|
2561
|
+
applyFilesToInput(nextFiles);
|
|
2562
|
+
onChange?.(event);
|
|
2563
|
+
syncSelectedFiles(nextFiles);
|
|
2564
|
+
},
|
|
2565
|
+
[
|
|
2566
|
+
applyFilesToInput,
|
|
2567
|
+
onChange,
|
|
2568
|
+
resolvedMultiple,
|
|
2569
|
+
selectedFiles,
|
|
2570
|
+
syncSelectedFiles
|
|
2571
|
+
]
|
|
2572
|
+
);
|
|
2573
|
+
const openPicker = React13.useCallback(() => {
|
|
2574
|
+
if (!disabled) {
|
|
2575
|
+
inputRef.current?.click();
|
|
2576
|
+
}
|
|
2577
|
+
}, [disabled]);
|
|
2578
|
+
const handleKeyDown = React13.useCallback(
|
|
2579
|
+
(event) => {
|
|
2580
|
+
if (disabled) {
|
|
2581
|
+
return;
|
|
2474
2582
|
}
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
syncSelectedFiles(nextFiles);
|
|
2486
|
-
},
|
|
2487
|
-
[applyFilesToInput, onChange, resolvedMultiple, selectedFiles, syncSelectedFiles]
|
|
2488
|
-
);
|
|
2489
|
-
const openPicker = React13.useCallback(() => {
|
|
2583
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
2584
|
+
event.preventDefault();
|
|
2585
|
+
openPicker();
|
|
2586
|
+
}
|
|
2587
|
+
},
|
|
2588
|
+
[disabled, openPicker]
|
|
2589
|
+
);
|
|
2590
|
+
const handleDragEnter = React13.useCallback(
|
|
2591
|
+
(event) => {
|
|
2592
|
+
event.preventDefault();
|
|
2490
2593
|
if (!disabled) {
|
|
2491
|
-
|
|
2594
|
+
setIsDragActive(true);
|
|
2492
2595
|
}
|
|
2493
|
-
},
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
(
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
}
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
if (disabled) {
|
|
2543
|
-
return;
|
|
2544
|
-
}
|
|
2545
|
-
setIsDragActive(false);
|
|
2546
|
-
const droppedFiles = event.dataTransfer.files;
|
|
2547
|
-
if (!droppedFiles?.length) {
|
|
2548
|
-
return;
|
|
2549
|
-
}
|
|
2550
|
-
const nextFiles = mergeUploadFiles(
|
|
2551
|
-
selectedFiles,
|
|
2552
|
-
Array.from(droppedFiles),
|
|
2553
|
-
resolvedMultiple
|
|
2554
|
-
);
|
|
2555
|
-
let dispatchedChangeEvent = false;
|
|
2556
|
-
if (applyFilesToInput(nextFiles)) {
|
|
2557
|
-
inputRef.current?.dispatchEvent(new Event("change", { bubbles: true }));
|
|
2558
|
-
dispatchedChangeEvent = true;
|
|
2559
|
-
}
|
|
2560
|
-
if (!dispatchedChangeEvent) {
|
|
2561
|
-
syncSelectedFiles(nextFiles);
|
|
2562
|
-
}
|
|
2563
|
-
},
|
|
2564
|
-
[applyFilesToInput, disabled, resolvedMultiple, selectedFiles, syncSelectedFiles]
|
|
2565
|
-
);
|
|
2566
|
-
const handleRemoveFile = React13.useCallback(
|
|
2567
|
-
(fileIndex) => {
|
|
2568
|
-
if (disabled) {
|
|
2569
|
-
return;
|
|
2570
|
-
}
|
|
2571
|
-
const nextFiles = selectedFiles.filter((_, index) => index !== fileIndex);
|
|
2572
|
-
applyFilesToInput(nextFiles);
|
|
2596
|
+
},
|
|
2597
|
+
[disabled]
|
|
2598
|
+
);
|
|
2599
|
+
const handleDragLeave = React13.useCallback(
|
|
2600
|
+
(event) => {
|
|
2601
|
+
if (disabled) {
|
|
2602
|
+
return;
|
|
2603
|
+
}
|
|
2604
|
+
const relatedTarget = event.relatedTarget;
|
|
2605
|
+
if (relatedTarget instanceof Node && event.currentTarget.contains(relatedTarget)) {
|
|
2606
|
+
return;
|
|
2607
|
+
}
|
|
2608
|
+
setIsDragActive(false);
|
|
2609
|
+
},
|
|
2610
|
+
[disabled]
|
|
2611
|
+
);
|
|
2612
|
+
const handleDragOver = React13.useCallback(
|
|
2613
|
+
(event) => {
|
|
2614
|
+
event.preventDefault();
|
|
2615
|
+
if (disabled) {
|
|
2616
|
+
return;
|
|
2617
|
+
}
|
|
2618
|
+
event.dataTransfer.dropEffect = "copy";
|
|
2619
|
+
setIsDragActive(true);
|
|
2620
|
+
},
|
|
2621
|
+
[disabled]
|
|
2622
|
+
);
|
|
2623
|
+
const handleDrop = React13.useCallback(
|
|
2624
|
+
(event) => {
|
|
2625
|
+
event.preventDefault();
|
|
2626
|
+
if (disabled) {
|
|
2627
|
+
return;
|
|
2628
|
+
}
|
|
2629
|
+
setIsDragActive(false);
|
|
2630
|
+
const droppedFiles = event.dataTransfer.files;
|
|
2631
|
+
if (!droppedFiles?.length) {
|
|
2632
|
+
return;
|
|
2633
|
+
}
|
|
2634
|
+
const nextFiles = mergeUploadFiles(
|
|
2635
|
+
selectedFiles,
|
|
2636
|
+
Array.from(droppedFiles),
|
|
2637
|
+
resolvedMultiple
|
|
2638
|
+
);
|
|
2639
|
+
let dispatchedChangeEvent = false;
|
|
2640
|
+
if (applyFilesToInput(nextFiles)) {
|
|
2641
|
+
inputRef.current?.dispatchEvent(new Event("change", { bubbles: true }));
|
|
2642
|
+
dispatchedChangeEvent = true;
|
|
2643
|
+
}
|
|
2644
|
+
if (!dispatchedChangeEvent) {
|
|
2573
2645
|
syncSelectedFiles(nextFiles);
|
|
2574
|
-
}
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2646
|
+
}
|
|
2647
|
+
},
|
|
2648
|
+
[
|
|
2649
|
+
applyFilesToInput,
|
|
2650
|
+
disabled,
|
|
2651
|
+
resolvedMultiple,
|
|
2652
|
+
selectedFiles,
|
|
2653
|
+
syncSelectedFiles
|
|
2654
|
+
]
|
|
2655
|
+
);
|
|
2656
|
+
const handleRemoveFile = React13.useCallback(
|
|
2657
|
+
(fileIndex) => {
|
|
2658
|
+
if (disabled) {
|
|
2659
|
+
return;
|
|
2660
|
+
}
|
|
2661
|
+
const nextFiles = selectedFiles.filter((_, index) => index !== fileIndex);
|
|
2662
|
+
applyFilesToInput(nextFiles);
|
|
2663
|
+
syncSelectedFiles(nextFiles);
|
|
2664
|
+
},
|
|
2665
|
+
[applyFilesToInput, disabled, selectedFiles, syncSelectedFiles]
|
|
2666
|
+
);
|
|
2667
|
+
return /* @__PURE__ */ jsxs10("div", { className: "grid w-full gap-4", children: [
|
|
2668
|
+
/* @__PURE__ */ jsx15(
|
|
2669
|
+
"input",
|
|
2670
|
+
{
|
|
2671
|
+
...uploadProps,
|
|
2672
|
+
accept: resolvedAccept,
|
|
2673
|
+
"aria-label": resolvedAriaLabel,
|
|
2674
|
+
className: "sr-only",
|
|
2675
|
+
disabled,
|
|
2676
|
+
id: resolvedId,
|
|
2677
|
+
multiple: resolvedMultiple,
|
|
2678
|
+
ref: inputRef,
|
|
2679
|
+
type: "file",
|
|
2680
|
+
onChange: handleInputChange
|
|
2681
|
+
}
|
|
2682
|
+
),
|
|
2683
|
+
/* @__PURE__ */ jsxs10(
|
|
2684
|
+
"label",
|
|
2685
|
+
{
|
|
2686
|
+
"aria-disabled": disabled || void 0,
|
|
2687
|
+
className: cn(
|
|
2688
|
+
"flex w-full flex-col items-center justify-center gap-2 overflow-clip rounded-[20px] border-2 border-dashed border-[color:var(--sofya-border-soft)] bg-[color:var(--sofya-tone-default-background)] px-4 py-4 text-center transition-[border-color,background-color,box-shadow,color] duration-sofya ease-sofya",
|
|
2689
|
+
!disabled && "cursor-pointer hover:border-[color:var(--sofya-border-hover)] hover:bg-[color:var(--sofya-surface-hover)] focus-visible:border-transparent focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)]",
|
|
2690
|
+
isDragActive && "border-[color:var(--sofya-border-hover)] bg-[color:var(--sofya-surface-selected)] shadow-[var(--sofya-shadow-dropzone-focus)]",
|
|
2691
|
+
disabled && "cursor-not-allowed opacity-60",
|
|
2692
|
+
className
|
|
2693
|
+
),
|
|
2694
|
+
htmlFor: resolvedId,
|
|
2695
|
+
role: "button",
|
|
2696
|
+
tabIndex: disabled ? -1 : 0,
|
|
2697
|
+
onDragEnter: handleDragEnter,
|
|
2698
|
+
onDragLeave: handleDragLeave,
|
|
2699
|
+
onDragOver: handleDragOver,
|
|
2700
|
+
onDrop: handleDrop,
|
|
2701
|
+
onKeyDown: handleKeyDown,
|
|
2702
|
+
children: [
|
|
2703
|
+
/* @__PURE__ */ jsx15("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ jsx15(UploadGlyph, { className: "size-[18px]" }) }),
|
|
2704
|
+
/* @__PURE__ */ jsx15("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
|
|
2705
|
+
as: "span",
|
|
2706
|
+
className: "block text-[color:var(--sofya-text-default)]",
|
|
2707
|
+
size: "body",
|
|
2708
|
+
style: {
|
|
2709
|
+
fontWeight: 500,
|
|
2710
|
+
lineHeight: "normal",
|
|
2711
|
+
letterSpacing: "-0.02em"
|
|
2712
|
+
}
|
|
2713
|
+
}) }),
|
|
2714
|
+
resolvedDescription ? /* @__PURE__ */ jsx15("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
|
|
2715
|
+
as: "span",
|
|
2716
|
+
className: "block text-[color:var(--sofya-text-subtle)]",
|
|
2717
|
+
size: "tiny",
|
|
2718
|
+
style: {
|
|
2719
|
+
fontWeight: 500,
|
|
2720
|
+
lineHeight: "normal",
|
|
2721
|
+
letterSpacing: "-0.02em"
|
|
2722
|
+
}
|
|
2723
|
+
}) }) : null
|
|
2724
|
+
]
|
|
2725
|
+
}
|
|
2726
|
+
),
|
|
2727
|
+
/* @__PURE__ */ jsx15(motion2.div, { layout: true, role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ jsx15(AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
|
|
2728
|
+
const fileKey = resolveUploadFileSignature(file);
|
|
2729
|
+
return /* @__PURE__ */ jsx15(
|
|
2730
|
+
motion2.div,
|
|
2595
2731
|
{
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
onDragOver: handleDragOver,
|
|
2610
|
-
onDrop: handleDrop,
|
|
2611
|
-
onKeyDown: handleKeyDown,
|
|
2612
|
-
children: [
|
|
2613
|
-
/* @__PURE__ */ jsx15("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-black", children: /* @__PURE__ */ jsx15(UploadGlyph, { className: "size-[18px]" }) }),
|
|
2614
|
-
/* @__PURE__ */ jsx15("span", { className: "text-black", children: renderTextContent(resolvedTitle, {
|
|
2615
|
-
as: "span",
|
|
2616
|
-
className: "block text-black",
|
|
2617
|
-
size: "body",
|
|
2618
|
-
style: {
|
|
2619
|
-
fontWeight: 500,
|
|
2620
|
-
lineHeight: "normal",
|
|
2621
|
-
letterSpacing: "-0.02em"
|
|
2622
|
-
}
|
|
2623
|
-
}) }),
|
|
2624
|
-
resolvedDescription ? /* @__PURE__ */ jsx15("span", { className: "text-[#8C99B7]", children: renderTextContent(resolvedDescription, {
|
|
2625
|
-
as: "span",
|
|
2626
|
-
className: "block text-[#8C99B7]",
|
|
2627
|
-
size: "tiny",
|
|
2628
|
-
style: {
|
|
2629
|
-
fontWeight: 500,
|
|
2630
|
-
lineHeight: "normal",
|
|
2631
|
-
letterSpacing: "-0.02em"
|
|
2732
|
+
layout: true,
|
|
2733
|
+
role: "listitem",
|
|
2734
|
+
className: "overflow-hidden",
|
|
2735
|
+
initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 10, scale: 0.98, height: 0 },
|
|
2736
|
+
animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0, scale: 1, height: "auto" },
|
|
2737
|
+
exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, scale: 0.98, height: 0 },
|
|
2738
|
+
transition: uploadListItemTransition,
|
|
2739
|
+
children: /* @__PURE__ */ jsxs10(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
|
|
2740
|
+
/* @__PURE__ */ jsx15("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ jsx15(
|
|
2741
|
+
UploadFileTypeGlyph,
|
|
2742
|
+
{
|
|
2743
|
+
className: "size-[18px]",
|
|
2744
|
+
kind: resolveUploadFileVisualKind(file, uploadKind)
|
|
2632
2745
|
}
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
role: "listitem",
|
|
2644
|
-
className: "overflow-hidden",
|
|
2645
|
-
initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 10, scale: 0.98, height: 0 },
|
|
2646
|
-
animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0, scale: 1, height: "auto" },
|
|
2647
|
-
exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, scale: 0.98, height: 0 },
|
|
2648
|
-
transition: uploadListItemTransition,
|
|
2649
|
-
children: /* @__PURE__ */ jsxs10(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
|
|
2650
|
-
/* @__PURE__ */ jsx15("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[#F4F7FF] text-[#6B86D6]", children: /* @__PURE__ */ jsx15(
|
|
2651
|
-
UploadFileTypeGlyph,
|
|
2652
|
-
{
|
|
2653
|
-
className: "size-[18px]",
|
|
2654
|
-
kind: resolveUploadFileVisualKind(file, uploadKind)
|
|
2746
|
+
) }),
|
|
2747
|
+
/* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
|
|
2748
|
+
/* @__PURE__ */ jsx15("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
|
|
2749
|
+
as: "span",
|
|
2750
|
+
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
2751
|
+
size: "body",
|
|
2752
|
+
style: {
|
|
2753
|
+
fontWeight: 500,
|
|
2754
|
+
lineHeight: "normal",
|
|
2755
|
+
letterSpacing: "-0.02em"
|
|
2655
2756
|
}
|
|
2656
|
-
) }),
|
|
2657
|
-
/* @__PURE__ */
|
|
2658
|
-
|
|
2757
|
+
}) }),
|
|
2758
|
+
/* @__PURE__ */ jsx15("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
|
|
2759
|
+
`${resolveUploadFileBadge(
|
|
2760
|
+
file
|
|
2761
|
+
)} \xB7 ${formatUploadFileSize(file.size)}`,
|
|
2762
|
+
{
|
|
2659
2763
|
as: "span",
|
|
2660
|
-
className: "block
|
|
2661
|
-
size: "
|
|
2764
|
+
className: "block text-[color:var(--sofya-text-subtle)]",
|
|
2765
|
+
size: "tiny",
|
|
2662
2766
|
style: {
|
|
2663
2767
|
fontWeight: 500,
|
|
2664
2768
|
lineHeight: "normal",
|
|
2665
2769
|
letterSpacing: "-0.02em"
|
|
2666
2770
|
}
|
|
2667
|
-
}
|
|
2668
|
-
|
|
2669
|
-
|
|
2771
|
+
}
|
|
2772
|
+
) })
|
|
2773
|
+
] }),
|
|
2774
|
+
/* @__PURE__ */ jsx15(
|
|
2775
|
+
"button",
|
|
2776
|
+
{
|
|
2777
|
+
"aria-label": `Remover ${file.name}`,
|
|
2778
|
+
className: "inline-flex size-9 shrink-0 items-center justify-center rounded-full text-[color:var(--sofya-text-subtle)] transition-colors duration-sofya ease-sofya hover:bg-[color:var(--sofya-surface-hover)] hover:text-[color:var(--sofya-text-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)]",
|
|
2779
|
+
disabled,
|
|
2780
|
+
type: "button",
|
|
2781
|
+
onClick: (event) => {
|
|
2782
|
+
event.preventDefault();
|
|
2783
|
+
event.stopPropagation();
|
|
2784
|
+
handleRemoveFile(index);
|
|
2785
|
+
},
|
|
2786
|
+
children: /* @__PURE__ */ jsx15(
|
|
2787
|
+
Icon,
|
|
2670
2788
|
{
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
fontWeight: 500,
|
|
2676
|
-
lineHeight: "normal",
|
|
2677
|
-
letterSpacing: "-0.02em"
|
|
2678
|
-
}
|
|
2789
|
+
"aria-hidden": "true",
|
|
2790
|
+
color: "current",
|
|
2791
|
+
name: "x",
|
|
2792
|
+
size: 14
|
|
2679
2793
|
}
|
|
2680
|
-
)
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
event.preventDefault();
|
|
2691
|
-
event.stopPropagation();
|
|
2692
|
-
handleRemoveFile(index);
|
|
2693
|
-
},
|
|
2694
|
-
children: /* @__PURE__ */ jsx15(
|
|
2695
|
-
Icon,
|
|
2696
|
-
{
|
|
2697
|
-
"aria-hidden": "true",
|
|
2698
|
-
color: "current",
|
|
2699
|
-
name: "x",
|
|
2700
|
-
size: 14
|
|
2701
|
-
}
|
|
2702
|
-
)
|
|
2703
|
-
}
|
|
2704
|
-
)
|
|
2705
|
-
] })
|
|
2706
|
-
},
|
|
2707
|
-
fileKey
|
|
2708
|
-
);
|
|
2709
|
-
}) }) })
|
|
2710
|
-
] });
|
|
2711
|
-
}
|
|
2712
|
-
);
|
|
2794
|
+
)
|
|
2795
|
+
}
|
|
2796
|
+
)
|
|
2797
|
+
] })
|
|
2798
|
+
},
|
|
2799
|
+
fileKey
|
|
2800
|
+
);
|
|
2801
|
+
}) }) })
|
|
2802
|
+
] });
|
|
2803
|
+
});
|
|
2713
2804
|
UploadInputControl.displayName = "UploadInputControl";
|
|
2714
2805
|
var Input = React13.forwardRef((props, ref) => {
|
|
2715
2806
|
const generatedId = React13.useId();
|
|
@@ -2762,14 +2853,17 @@ var Input = React13.forwardRef((props, ref) => {
|
|
|
2762
2853
|
`otp-leading-${index}`
|
|
2763
2854
|
)) }),
|
|
2764
2855
|
hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ jsx15(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
|
|
2765
|
-
hasTrailingGroup ? /* @__PURE__ */ jsx15(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2856
|
+
hasTrailingGroup ? /* @__PURE__ */ jsx15(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
|
|
2857
|
+
{ length: resolvedLength - resolvedSplitIndex },
|
|
2858
|
+
(_, index) => /* @__PURE__ */ jsx15(
|
|
2859
|
+
InputOTPSlot,
|
|
2860
|
+
{
|
|
2861
|
+
className: otpSlotClassName,
|
|
2862
|
+
index: index + resolvedSplitIndex
|
|
2863
|
+
},
|
|
2864
|
+
`otp-trailing-${index}`
|
|
2865
|
+
)
|
|
2866
|
+
) }) : null
|
|
2773
2867
|
]
|
|
2774
2868
|
}
|
|
2775
2869
|
);
|
|
@@ -2824,12 +2918,12 @@ var Input = React13.forwardRef((props, ref) => {
|
|
|
2824
2918
|
const isSearch = variant === "search";
|
|
2825
2919
|
const resolvedType = type ?? (isSearch ? "search" : void 0);
|
|
2826
2920
|
const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
|
|
2827
|
-
const nativeControl = isSearch ? /* @__PURE__ */ jsxs10("div", { className: "flex h-[88px] w-full items-center gap-6 rounded-full border border-[
|
|
2921
|
+
const nativeControl = isSearch ? /* @__PURE__ */ jsxs10("div", { className: "flex h-[88px] w-full items-center gap-6 rounded-full border border-[color:var(--sofya-border-strong)] bg-card px-8 shadow-none transition-[border-color,box-shadow,background-color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] hover:ring-2 hover:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] has-[:active]:border-transparent has-[:active]:ring-2 has-[:active]:ring-[color:var(--sofya-focus-ring-soft)]", children: [
|
|
2828
2922
|
/* @__PURE__ */ jsx15(
|
|
2829
2923
|
Icon,
|
|
2830
2924
|
{
|
|
2831
2925
|
"aria-hidden": "true",
|
|
2832
|
-
className: "shrink-0 text-[
|
|
2926
|
+
className: "shrink-0 text-[color:var(--sofya-text-subtle)]",
|
|
2833
2927
|
name: "search",
|
|
2834
2928
|
size: 32
|
|
2835
2929
|
}
|
|
@@ -2841,7 +2935,7 @@ var Input = React13.forwardRef((props, ref) => {
|
|
|
2841
2935
|
ref,
|
|
2842
2936
|
type: resolvedType,
|
|
2843
2937
|
className: cn(
|
|
2844
|
-
"h-full w-full appearance-none border-0 bg-transparent p-0 text-[23px] font-semibold leading-none tracking-[-0.03em] text-[
|
|
2938
|
+
"h-full w-full appearance-none border-0 bg-transparent p-0 text-[23px] font-semibold leading-none tracking-[-0.03em] text-[color:var(--sofya-text-default)] shadow-none outline-none transition-colors duration-sofya ease-sofya placeholder:font-semibold placeholder:text-[color:var(--sofya-text-subtle)] placeholder:opacity-100 disabled:cursor-not-allowed disabled:opacity-50",
|
|
2845
2939
|
"[&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden",
|
|
2846
2940
|
className
|
|
2847
2941
|
),
|
|
@@ -2857,7 +2951,7 @@ var Input = React13.forwardRef((props, ref) => {
|
|
|
2857
2951
|
ref,
|
|
2858
2952
|
type: resolvedType,
|
|
2859
2953
|
className: cn(
|
|
2860
|
-
"flex h-10 w-full rounded-[10px] border border-[
|
|
2954
|
+
"flex h-10 w-full rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 text-[16px] font-normal leading-[22px] tracking-[-0.02em] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya placeholder:text-[color:var(--sofya-text-placeholder)] hover:border-[color:var(--sofya-border-hover)] focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50",
|
|
2861
2955
|
className
|
|
2862
2956
|
),
|
|
2863
2957
|
...nativeProps,
|
|
@@ -2910,17 +3004,30 @@ Label.displayName = "Label";
|
|
|
2910
3004
|
// src/components/link.tsx
|
|
2911
3005
|
import * as React15 from "react";
|
|
2912
3006
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
3007
|
+
import { cva as cva6 } from "class-variance-authority";
|
|
2913
3008
|
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
2914
|
-
var
|
|
3009
|
+
var linkVariants = cva6(
|
|
3010
|
+
"inline bg-[linear-gradient(currentColor,currentColor)] bg-[position:0_100%] bg-no-repeat pb-0 text-primary no-underline transition-[color,background-size,box-shadow] duration-sofya ease-sofya hover:text-[color:var(--sofya-link-hover)] focus-visible:rounded-[4px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
|
|
3011
|
+
{
|
|
3012
|
+
variants: {
|
|
3013
|
+
variant: {
|
|
3014
|
+
default: "bg-[length:0%_1.5px] hover:bg-[length:100%_1.5px]",
|
|
3015
|
+
underlined: "bg-[length:100%_1.5px] hover:bg-[length:100%_1.5px]"
|
|
3016
|
+
}
|
|
3017
|
+
},
|
|
3018
|
+
defaultVariants: {
|
|
3019
|
+
variant: "default"
|
|
3020
|
+
}
|
|
3021
|
+
}
|
|
3022
|
+
);
|
|
3023
|
+
var Link = React15.forwardRef(function Link2({ asChild = false, className, variant = "default", ...props }, ref) {
|
|
2915
3024
|
const Component = asChild ? Slot3 : "a";
|
|
2916
3025
|
return /* @__PURE__ */ jsx17(
|
|
2917
3026
|
Component,
|
|
2918
3027
|
{
|
|
2919
3028
|
ref,
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
className
|
|
2923
|
-
),
|
|
3029
|
+
"data-link-variant": variant,
|
|
3030
|
+
className: cn(linkVariants({ variant }), className),
|
|
2924
3031
|
...props
|
|
2925
3032
|
}
|
|
2926
3033
|
);
|
|
@@ -2932,93 +3039,93 @@ import * as React16 from "react";
|
|
|
2932
3039
|
|
|
2933
3040
|
// src/components/logo-data.ts
|
|
2934
3041
|
var logoAssets = {
|
|
2935
|
-
|
|
3042
|
+
mono: {
|
|
2936
3043
|
width: 16,
|
|
2937
3044
|
height: 23,
|
|
2938
3045
|
viewBox: "0 0 16 23",
|
|
2939
3046
|
paths: [
|
|
2940
3047
|
{
|
|
2941
3048
|
d: "M8.07721 0.0486377C9.76297 -0.255788 11.3766 0.900674 11.6739 2.62676C11.9711 4.35326 10.8412 6.00592 9.15533 6.31036C7.49248 6.61085 6.28577 8.0157 6.12701 9.65801C7.52712 10.4447 9.32387 10.2329 10.5088 9.01934C11.7191 7.7799 13.6883 7.7799 14.8985 9.01934C15.596 9.73391 15.8888 10.7063 15.7823 11.6395C15.7775 11.6847 15.7694 11.7294 15.7628 11.7742C15.7546 11.8265 15.7461 11.8786 15.7354 11.9305C15.7226 11.9944 15.707 12.0573 15.6905 12.1199C15.6838 12.1446 15.6782 12.1696 15.671 12.1941C15.6698 12.198 15.6692 12.202 15.668 12.2059C15.6667 12.2102 15.6645 12.2143 15.6631 12.2186C15.3329 13.3273 14.4244 14.2138 13.2354 14.4285C11.2336 14.7902 9.89219 16.7523 10.2452 18.8025C10.5423 20.5287 9.41297 22.1807 7.7276 22.4852C6.04189 22.7896 4.42828 21.633 4.13092 19.907C3.83372 18.1808 4.96365 16.5289 6.64947 16.2244C8.31218 15.9242 9.51766 14.519 9.67682 12.8768C8.27658 12.0893 6.47907 12.3017 5.29401 13.5154C4.08377 14.7545 2.11445 14.7548 0.904357 13.5154C0.194345 12.7883 -0.0954398 11.7937 0.0274038 10.8455C0.028594 10.8357 0.0300316 10.826 0.0313101 10.8162C0.0427579 10.7337 0.0565126 10.6517 0.0742788 10.5701C0.0818187 10.5344 0.0909471 10.4991 0.0996694 10.4637C0.113772 10.408 0.128483 10.3526 0.145568 10.2977C0.165244 10.2329 0.187408 10.1693 0.210998 10.1063C0.219654 10.0836 0.227204 10.0604 0.236388 10.0379C0.62699 9.06106 1.48137 8.30278 2.5694 8.10625C4.57137 7.74472 5.91263 5.78194 5.55963 3.73125C5.26246 2.00522 6.39199 0.353249 8.07721 0.0486377Z",
|
|
2942
|
-
fill: "
|
|
3049
|
+
fill: "var(--sofya-logo-soft)",
|
|
2943
3050
|
fillRule: "evenodd",
|
|
2944
3051
|
clipRule: "evenodd"
|
|
2945
3052
|
}
|
|
2946
3053
|
]
|
|
2947
3054
|
},
|
|
2948
|
-
|
|
3055
|
+
default: {
|
|
2949
3056
|
width: 73,
|
|
2950
3057
|
height: 87,
|
|
2951
3058
|
viewBox: "0 0 73 87",
|
|
2952
3059
|
paths: [
|
|
2953
3060
|
{
|
|
2954
3061
|
d: "M20.0784 54.8299C18.5629 55.0977 17.0094 55.0642 15.5068 54.7316C14.0041 54.399 12.5817 53.7736 11.3208 52.8913C10.0598 52.0089 8.98496 50.8869 8.15764 49.5891C7.33032 48.2914 6.76671 46.8434 6.49899 45.3278C6.23127 43.8123 6.26468 42.2588 6.59731 40.7562C6.92994 39.2536 7.55529 37.8312 8.43764 36.5702C9.31999 35.3092 10.4421 34.2344 11.7398 33.4071C13.0375 32.5798 14.4855 32.0161 16.0011 31.7484C19.635 31.1022 22.8643 29.0408 24.9802 26.0165C27.0961 22.9922 27.9258 19.252 27.2874 15.6166C26.8846 13.334 27.1677 10.9831 28.1009 8.86134C29.0341 6.73956 30.5755 4.94215 32.5303 3.6964C34.485 2.45065 36.7652 1.81251 39.0826 1.86267C41.4 1.91283 43.6505 2.64904 45.5495 3.97821C47.4485 5.30737 48.9107 7.1698 49.7512 9.32997C50.5918 11.4902 50.7729 13.8511 50.2716 16.1142C49.7704 18.3773 48.6094 20.4409 46.9353 22.0442C45.2613 23.6474 43.1494 24.7183 40.8668 25.1213C37.2334 25.7674 34.0047 27.8284 31.8889 30.852C29.7731 33.8757 28.9431 37.6151 29.5809 41.2499C30.118 44.3104 29.4192 47.459 27.6378 50.0049C25.8563 52.5508 23.1377 54.286 20.0784 54.8299Z",
|
|
2955
|
-
fill: "
|
|
3062
|
+
fill: "var(--sofya-logo-primary)"
|
|
2956
3063
|
},
|
|
2957
3064
|
{
|
|
2958
3065
|
d: "M9.71176 51.685C8.62379 50.597 7.76075 49.3054 7.17195 47.8839C6.58314 46.4624 6.28008 44.9388 6.28008 43.4002C6.28008 41.8616 6.58314 40.338 7.17195 38.9165C7.76076 37.495 8.62379 36.2034 9.71176 35.1154C10.7997 34.0274 12.0914 33.1644 13.5129 32.5756C14.9344 31.9868 16.4579 31.6837 17.9966 31.6837C19.5352 31.6837 21.0588 31.9868 22.4803 32.5756C23.9018 33.1644 25.1934 34.0274 26.2814 35.1154C28.8937 37.7213 32.4331 39.1847 36.123 39.1843C39.8129 39.1839 43.3519 37.7198 45.9637 35.1133C47.6026 33.4749 49.6905 32.3594 51.9634 31.9076C54.2363 31.4559 56.5922 31.6883 58.733 32.5754C60.8738 33.4626 62.7035 34.9646 63.9907 36.8916C65.2779 38.8186 65.9648 41.084 65.9645 43.4013C65.9642 45.7187 65.2767 47.9839 63.989 49.9106C62.7014 51.8373 60.8713 53.3388 58.7302 54.2254C56.5892 55.112 54.2333 55.3438 51.9605 54.8915C49.6877 54.4392 47.6001 53.3231 45.9616 51.6843C43.3498 49.0785 39.8109 47.615 36.1215 47.615C32.432 47.615 28.8932 49.0785 26.2814 51.6843C24.0825 53.8784 21.103 55.1106 17.9967 55.1108C14.8904 55.1109 11.9109 53.8789 9.71176 51.685Z",
|
|
2959
|
-
fill: "
|
|
3066
|
+
fill: "var(--sofya-logo-highlight)"
|
|
2960
3067
|
},
|
|
2961
3068
|
{
|
|
2962
3069
|
d: "M35.4804 84.7533C33.9649 85.021 32.4114 84.9876 30.9088 84.6549C29.4061 84.3223 27.9837 83.697 26.7228 82.8146C25.4618 81.9323 24.387 80.8102 23.5596 79.5125C22.7323 78.2147 22.1687 76.7667 21.901 75.2512C21.6333 73.7356 21.6667 72.1822 21.9993 70.6795C22.3319 69.1769 22.9573 67.7545 23.8396 66.4935C24.722 65.2326 25.8441 64.1577 27.1418 63.3304C28.4395 62.5031 29.8875 61.9395 31.4031 61.6718C35.037 61.0255 38.2663 58.9641 40.3822 55.9398C42.4981 52.9155 43.3278 49.1753 42.6894 45.54C42.2866 43.2573 42.5697 40.9065 43.5029 38.7847C44.4361 36.6629 45.9775 34.8655 47.9323 33.6197C49.887 32.374 52.1672 31.7358 54.4846 31.786C56.802 31.8362 59.0525 32.5724 60.9515 33.9015C62.8505 35.2307 64.3127 37.0931 65.1532 39.2533C65.9938 41.4135 66.1749 43.7744 65.6737 46.0375C65.1724 48.3006 64.0114 50.3643 62.3373 51.9675C60.6633 53.5707 58.5514 54.6416 56.2688 55.0446C52.6354 55.6908 49.4067 57.7517 47.2909 60.7754C45.1751 63.799 44.3451 67.5384 44.9829 71.1733C45.52 74.2338 44.8212 77.3823 43.0398 79.9282C41.2583 82.4741 38.5397 84.2093 35.4804 84.7533Z",
|
|
2963
|
-
fill: "
|
|
3070
|
+
fill: "var(--sofya-logo-accent)"
|
|
2964
3071
|
}
|
|
2965
3072
|
]
|
|
2966
3073
|
},
|
|
2967
|
-
|
|
3074
|
+
text: {
|
|
2968
3075
|
width: 143,
|
|
2969
3076
|
height: 47,
|
|
2970
3077
|
viewBox: "0 0 143 47",
|
|
2971
3078
|
paths: [
|
|
2972
3079
|
{
|
|
2973
3080
|
d: "M15.093 36.7303C10.101 36.7303 6.33667 35.6353 3.80001 33.4453C1.26334 31.2553 -0.00332677 28.1886 6.56168e-06 24.2453H7.47001C7.39794 25.1747 7.55775 26.1075 7.9351 26.9599C8.31244 27.8124 8.89552 28.5578 9.63201 29.1293C11.3436 30.2547 13.3692 30.8053 15.415 30.7013C17.1692 30.8096 18.9188 30.4262 20.467 29.5943C21.0345 29.2318 21.4945 28.7238 21.7991 28.1232C22.1037 27.5226 22.2418 26.8514 22.199 26.1793C22.2397 25.276 21.9532 24.3883 21.392 23.6793C20.7394 22.9613 19.9224 22.4123 19.011 22.0793C17.5132 21.5107 15.9808 21.0378 14.423 20.6633C14.0897 20.5913 13.6943 20.4966 13.237 20.3793C10.9588 19.8608 8.73206 19.1375 6.58401 18.2183C5.01143 17.5343 3.65165 16.4401 2.64701 15.0503C1.6259 13.4711 1.12512 11.6117 1.21501 9.73329C1.13943 8.30544 1.44001 6.88276 2.08668 5.6075C2.73335 4.33223 3.70345 3.24906 4.90001 2.46629C7.35534 0.828956 10.5937 0.0102922 14.615 0.0102922C17.2654 -0.0769963 19.9047 0.39173 22.363 1.38629C24.2275 2.14967 25.8078 3.47511 26.884 5.17829C27.8735 6.86944 28.3761 8.80132 28.336 10.7603H21.056C21.0796 10.0753 20.9329 9.39523 20.6291 8.78091C20.3252 8.16659 19.8737 7.63724 19.315 7.24029C17.8412 6.29435 16.1039 5.84347 14.356 5.95329C12.9203 5.88122 11.4902 6.17834 10.202 6.81629C9.70718 7.09854 9.30244 7.51519 9.03467 8.018C8.76689 8.5208 8.64705 9.08918 8.68901 9.65729C8.6508 10.4918 8.92256 11.311 9.45201 11.9573C10.0677 12.6165 10.8364 13.1138 11.69 13.4053C13.0793 13.9054 14.4951 14.3284 15.931 14.6723H16.011C16.2374 14.7071 16.461 14.7582 16.68 14.8253C19.1301 15.388 21.5363 16.127 23.88 17.0363C25.5247 17.682 26.9723 18.7457 28.08 20.1223C29.1995 21.687 29.7535 23.586 29.651 25.5073C29.7141 27.077 29.4043 28.6393 28.7471 30.0662C28.0899 31.4931 27.1039 32.744 25.87 33.7163C23.35 35.7256 19.7577 36.7303 15.093 36.7303ZM46.693 36.6633C44.0926 36.7407 41.5152 36.1557 39.203 34.9633C37.2011 33.8919 35.5677 32.2431 34.515 30.2313C33.4165 28.0642 32.8671 25.6604 32.915 23.2313C32.8688 20.8266 33.4184 18.4479 34.515 16.3073C35.5697 14.307 37.2008 12.6696 39.197 11.6073C41.5117 10.4231 44.0882 9.84318 46.687 9.92129C49.294 9.84535 51.8783 10.4251 54.203 11.6073C56.2102 12.6636 57.8512 14.3019 58.911 16.3073C60.0076 18.4479 60.5573 20.8266 60.511 23.2313C60.5589 25.6604 60.0095 28.0642 58.911 30.2313C57.8559 32.2482 56.2154 33.8988 54.205 34.9663C51.8825 36.1556 49.2972 36.7393 46.689 36.6633H46.693ZM46.671 30.7963C47.5924 30.8531 48.515 30.7061 49.3732 30.3657C50.2313 30.0254 51.0039 29.5001 51.636 28.8273C52.8904 27.2408 53.5119 25.2455 53.38 23.2273C53.4174 21.8449 53.1473 20.4715 52.589 19.2063C52.1029 18.1379 51.2999 17.2448 50.289 16.6483C49.1838 16.0323 47.9327 15.7265 46.668 15.7633C45.7575 15.706 44.8457 15.8516 43.9984 16.1895C43.151 16.5274 42.3892 17.0492 41.768 17.7173C40.5429 19.2827 39.9354 21.2435 40.061 23.2273C40.0213 24.6352 40.2824 26.0354 40.827 27.3343C41.2902 28.4048 42.0761 29.304 43.075 29.9063C44.1688 30.5248 45.4109 30.8325 46.667 30.7963H46.671ZM68.511 29.9963V11.3733C68.4266 9.21075 68.7934 7.05433 69.588 5.04129C70.2229 3.53621 71.3779 2.3096 72.842 1.58529C74.5953 0.813695 76.5007 0.449569 78.415 0.52029H82.567V6.15129H79.501C78.6675 6.10729 77.8362 6.27265 77.083 6.63229C76.5183 6.94591 76.0905 7.45853 75.883 8.07029C75.6274 8.88943 75.5111 9.74566 75.539 10.6033V36.2203H68.507L68.511 29.9963ZM62.901 11.4583H82.964V17.5713H62.897L62.901 11.4583ZM91.215 40.8793H96.525C98.4213 41.0066 100.296 40.4122 101.772 39.2153C102.991 38.106 103.601 36.2376 103.601 33.6103V29.9923L104.395 31.0123C103.666 32.4581 102.529 33.6586 101.125 34.4653C99.6198 35.2812 97.9266 35.6874 96.215 35.6433C92.9257 35.6433 90.5313 34.6716 89.032 32.7283C87.5327 30.785 86.7833 27.8776 86.784 24.0063V10.3653H93.815V23.3773C93.6797 25.087 94.09 26.7955 94.987 28.2573C95.4182 28.7856 95.9708 29.2017 96.5977 29.4702C97.2246 29.7388 97.9071 29.8516 98.587 29.7993C99.3047 29.8602 100.026 29.7459 100.69 29.4663C101.354 29.1868 101.94 28.7503 102.398 28.1943C103.302 26.7418 103.723 25.0398 103.598 23.3333V10.3653H110.607V31.6123C110.754 34.6867 110.121 37.7483 108.767 40.5123C107.693 42.562 105.953 44.1845 103.833 45.1123C101.501 46.0357 99.008 46.4805 96.501 46.4203H91.215V40.8793ZM126.663 36.6633C124.47 36.7225 122.307 36.1415 120.438 34.9913C118.678 33.8538 117.302 32.2125 116.489 30.2813C115.556 28.0499 115.101 25.6482 115.151 23.2303C115.103 20.8443 115.559 18.4752 116.489 16.2773C117.308 14.3564 118.683 12.7248 120.438 11.5933C122.307 10.4431 124.47 9.86205 126.663 9.92129C128.689 9.86752 130.688 10.3935 132.425 11.4373C134.097 12.5171 135.393 14.0894 136.134 15.9373C137.053 18.2552 137.491 20.7358 137.422 23.2283C137.422 23.9576 137.398 24.6396 137.349 25.2743C137.243 27.4422 136.68 29.5631 135.697 31.4983C134.865 33.1031 133.596 34.4392 132.035 35.3513C130.392 36.2557 128.538 36.7084 126.663 36.6633ZM128.604 30.8203C129.486 30.8692 130.368 30.7162 131.183 30.3731C131.997 30.0301 132.723 29.5058 133.304 28.8403C134.513 27.2303 135.106 25.2414 134.978 23.2323C135.103 21.2538 134.508 19.2969 133.304 17.7223C132.718 17.0636 131.992 16.5457 131.178 16.2073C130.364 15.869 129.484 15.7189 128.604 15.7683C127.73 15.7199 126.856 15.8706 126.049 16.2091C125.242 16.5476 124.522 17.065 123.944 17.7223C122.749 19.301 122.16 21.2562 122.285 23.2323C122.247 24.6418 122.499 26.0441 123.028 27.3513C123.466 28.4146 124.222 29.3167 125.192 29.9343C126.222 30.5473 127.406 30.8545 128.604 30.8203ZM134.974 30.4563V15.9963L135.968 10.3673H142.005V30.6323L142.771 36.2203H136.147L134.974 30.4563Z",
|
|
2974
|
-
fill: "
|
|
3081
|
+
fill: "var(--sofya-logo-ink)"
|
|
2975
3082
|
}
|
|
2976
3083
|
]
|
|
2977
3084
|
},
|
|
2978
|
-
|
|
3085
|
+
full: {
|
|
2979
3086
|
width: 902,
|
|
2980
3087
|
height: 333,
|
|
2981
3088
|
viewBox: "0 0 902 333",
|
|
2982
3089
|
paths: [
|
|
2983
3090
|
{
|
|
2984
3091
|
d: "M126.1,325.2c-24.4,4.3-47.8-12.1-52.1-36.5-4.3-24.4,12.1-47.8,36.5-52.1,29-5.1,48.4-32.9,43.3-61.9-4.3-24.4,12.1-47.8,36.5-52.1,24.4-4.3,47.8,12.1,52.1,36.5,4.3,24.4-12.1,47.8-36.5,52.1-29,5.1-48.4,32.9-43.3,61.9,4.3,24.4-12.1,47.8-36.5,52.1",
|
|
2985
|
-
fill: "
|
|
3092
|
+
fill: "var(--sofya-logo-accent)"
|
|
2986
3093
|
},
|
|
2987
3094
|
{
|
|
2988
3095
|
d: "M27.3,198.3c-17.5-17.5-17.5-46.1,0-63.6,17.5-17.5,46.1-17.5,63.6,0,20.8,20.8,54.7,20.8,75.5,0,17.5-17.5,46.1-17.5,63.6,0,17.5,17.5,17.5,46.1,0,63.6-17.5,17.5-46.1,17.5-63.6,0-20.8-20.8-54.7-20.8-75.5,0-17.5,17.5-46.1,17.5-63.6,0",
|
|
2989
|
-
fill: "
|
|
3096
|
+
fill: "var(--sofya-logo-highlight)"
|
|
2990
3097
|
},
|
|
2991
3098
|
{
|
|
2992
3099
|
d: "M67,210.3c-24.4,4.3-47.8-12.1-52.1-36.5-4.3-24.4,12.1-47.8,36.5-52.1,29-5.1,48.4-32.9,43.3-61.9-4.3-24.4,12.1-47.8,36.5-52.1,24.4-4.3,47.8,12.1,52.1,36.5,4.3,24.4-12.1,47.8-36.5,52.1-29,5.1-48.4,32.9-43.3,61.9,4.3,24.4-12.1,47.8-36.5,52.1",
|
|
2993
|
-
fill: "
|
|
3100
|
+
fill: "var(--sofya-logo-primary)"
|
|
2994
3101
|
},
|
|
2995
3102
|
{
|
|
2996
3103
|
d: "M14.9,173.9c-1.1-6-.9-11.9.4-17.5,1.8-8,5.8-15.5,12-21.7,17.5-17.5,46.1-17.5,63.6,0,3.7,3.7,7.7,6.7,12,9-.5,4.7-.3,9.6.6,14.5,4.3,24.4-12.1,47.8-36.5,52.1-2.6.5-5.2.7-7.8.7-21.4,0-40.4-15.4-44.3-37.2Z",
|
|
2997
|
-
fill: "
|
|
3104
|
+
fill: "var(--sofya-logo-primary)"
|
|
2998
3105
|
},
|
|
2999
3106
|
{
|
|
3000
3107
|
d: "M166.4,198.3c-3.7-3.7-7.7-6.7-12-9,.5-4.7.3-9.6-.6-14.5-4.3-24.4,12.1-47.8,36.5-52.1,24.4-4.3,47.8,12.1,52.1,36.5,1,5.8.9,11.6-.3,17-1.8,8.1-5.8,15.8-12.1,22.1-8.8,8.8-20.3,13.2-31.8,13.2s-23-4.4-31.8-13.2Z",
|
|
3001
|
-
fill: "
|
|
3108
|
+
fill: "var(--sofya-logo-primary)"
|
|
3002
3109
|
},
|
|
3003
3110
|
{
|
|
3004
3111
|
d: "M422.5,151.7c-6.9-2.9-16.4-5.8-28.4-8.7-.8-.3-1.7-.5-2.6-.6h-.4c-7.2-1.7-12.8-3.4-16.7-4.9-3.9-1.5-6.8-3.4-8.8-5.7-2-2.3-3-5.3-3-9s2-8.9,6-11.1c4-2.2,9.5-3.3,16.5-3.3s14.9,1.7,19.5,5c4.5,3.3,6.8,8,6.8,13.9h28.7c0-8.3-1.9-15.6-5.7-22-3.8-6.4-9.8-11.3-17.9-15-8.1-3.6-18.2-5.4-30.4-5.4s-28.7,3.2-38.3,9.6c-9.6,6.4-14.5,16-14.5,28.7s1.9,15.5,5.6,20.9c3.7,5.4,8.9,9.5,15.5,12.4,6.6,2.9,15.3,5.8,26.3,8.4,1.7.5,3.3.9,4.6,1.2,7.9,2,13.9,3.8,18.1,5.5,4.1,1.7,7.3,3.8,9.3,6.3,2.1,2.5,3.1,5.8,3.1,9.8,0,6-2.3,10.5-6.8,13.5-4.6,2.9-11.2,4.4-19.9,4.4s-17.1-2.1-22.7-6.2c-5.6-4.1-8.4-10.6-8.4-19.3h-29.5c0,15.5,5,27.6,15,36.2,10,8.6,24.8,12.9,44.5,12.9s32.5-3.9,42.4-11.8c9.9-7.9,14.9-18.7,14.9-32.3s-2-16.1-6.1-21.3c-4.1-5.2-9.6-9.3-16.5-12.1Z",
|
|
3005
|
-
fill: "
|
|
3112
|
+
fill: "var(--sofya-logo-ink)"
|
|
3006
3113
|
},
|
|
3007
3114
|
{
|
|
3008
3115
|
d: "M541.9,130.3c-8.2-4.4-18-6.6-29.5-6.6s-21.5,2.2-29.6,6.6c-8.1,4.4-14.2,10.6-18.4,18.6-4.2,8-6.2,17-6.2,27.2s2.1,19.6,6.2,27.6c4.1,8,10.3,14.2,18.4,18.7,8.1,4.5,18,6.7,29.6,6.7s21.3-2.2,29.5-6.7c8.2-4.5,14.4-10.7,18.6-18.7,4.2-8,6.3-17.2,6.3-27.6s-2.1-19.2-6.3-27.2c-4.2-8-10.4-14.2-18.6-18.6ZM531.8,198.1c-4.6,5.2-11.1,7.8-19.7,7.8s-10.2-1.2-14.1-3.5c-3.9-2.3-6.8-5.7-8.8-10.1-2-4.4-3-9.8-3-16.3,0-9.2,2.2-16.4,6.7-21.6,4.5-5.2,10.9-7.7,19.2-7.7s10.4,1.2,14.4,3.5c3.9,2.3,7,5.7,9,10,2.1,4.4,3.1,9.6,3.1,15.8,0,9.5-2.3,16.9-6.8,22.1Z",
|
|
3009
|
-
fill: "
|
|
3116
|
+
fill: "var(--sofya-logo-ink)"
|
|
3010
3117
|
},
|
|
3011
3118
|
{
|
|
3012
3119
|
d: "M625.8,126.5c0-4.1.5-7.5,1.4-10,.9-2.5,2.5-4.4,4.8-5.7,2.3-1.3,5.4-1.9,9.4-1.9h12v-22.1h-16.3c-9,0-16.3,1.4-22,4.2-5.7,2.8-9.9,7.4-12.7,13.7-2.8,6.3-4.2,14.6-4.2,24.9v.2h-22.1v24.1h22.1v73.5h27.5v-73.5h29.3v-24.1h-29.3v-3.2Z",
|
|
3013
|
-
fill: "
|
|
3120
|
+
fill: "var(--sofya-logo-ink)"
|
|
3014
3121
|
},
|
|
3015
3122
|
{
|
|
3016
3123
|
d: "M736.2,176.5c0,8.6-1.6,15-4.7,19.2-3.1,4.2-8.1,6.3-15,6.3s-11.1-2-14.2-6c-3-4-4.5-10.4-4.5-19.3v-51.2h-27.7v53.8c0,15.1,2.9,26.5,8.8,34.2,5.9,7.7,15.3,11.5,28.3,11.5s13.8-1.5,19.2-4.6c3.8-2.2,7-5,9.7-8.6v5.2c0,10.3-2.4,17.6-7.1,22-4.8,4.3-11.6,6.5-20.6,6.5h-21.1v21.9h20.9c11.1,0,20.7-1.7,28.9-5.1,8.2-3.4,14.7-9.4,19.5-18.1s7.2-20.3,7.2-35v-83.7h-27.7v51Z",
|
|
3017
|
-
fill: "
|
|
3124
|
+
fill: "var(--sofya-logo-ink)"
|
|
3018
3125
|
},
|
|
3019
3126
|
{
|
|
3020
3127
|
d: "M890.4,227.2l-3-22.1v-79.7h-23.7l-2.7,15.6c-3-4.7-6.8-8.6-11.3-11.4-6.4-4-13.9-6-22.6-6s-17.7,2.2-24.6,6.6c-6.9,4.4-12.1,10.6-15.6,18.5-3.5,7.9-5.2,17-5.2,27.3s1.7,19.8,5.2,27.8c3.5,8,8.7,14.2,15.6,18.6,6.9,4.4,15.1,6.6,24.6,6.6s15.1-1.7,21.1-5.2c5.2-3,9.6-7.3,13-12.7l3.3,16.1h25.9ZM853.2,198.1c-4.4,5.2-10.6,7.8-18.5,7.8s-9.7-1.2-13.5-3.5c-3.7-2.3-6.6-5.7-8.5-10.1-1.9-4.4-2.9-9.8-2.9-16.3,0-9.2,2.2-16.4,6.5-21.6,4.3-5.2,10.5-7.7,18.4-7.7s14.1,2.6,18.5,7.7c4.4,5.2,6.6,12.3,6.6,21.6s-2.2,16.9-6.6,22.1Z",
|
|
3021
|
-
fill: "
|
|
3128
|
+
fill: "var(--sofya-logo-ink)"
|
|
3022
3129
|
}
|
|
3023
3130
|
]
|
|
3024
3131
|
}
|
|
@@ -3109,15 +3216,15 @@ Logo.displayName = "Logo";
|
|
|
3109
3216
|
|
|
3110
3217
|
// src/components/pagination.tsx
|
|
3111
3218
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
3112
|
-
import { cva as
|
|
3219
|
+
import { cva as cva7 } from "class-variance-authority";
|
|
3113
3220
|
import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3114
|
-
var paginationLinkVariants =
|
|
3115
|
-
"inline-flex h-10 min-w-10 items-center justify-center rounded-full border border-transparent px-4 text-[14px] font-medium leading-none tracking-[0.01em] text-[
|
|
3221
|
+
var paginationLinkVariants = cva7(
|
|
3222
|
+
"inline-flex h-10 min-w-10 items-center justify-center rounded-full border border-transparent px-4 text-[14px] font-medium leading-none tracking-[0.01em] text-[color:var(--sofya-text-soft)] no-underline transition-[transform,background-color,border-color,color,box-shadow] duration-sofya ease-sofya motion-safe:active:scale-[0.985] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
|
|
3116
3223
|
{
|
|
3117
3224
|
variants: {
|
|
3118
3225
|
isActive: {
|
|
3119
|
-
true: "border-[
|
|
3120
|
-
false: "hover:border-[
|
|
3226
|
+
true: "border-[color:var(--sofya-border-strong)] bg-card text-primary shadow-sofya-sm",
|
|
3227
|
+
false: "hover:border-[color:var(--sofya-border-soft)] hover:bg-card hover:text-primary"
|
|
3121
3228
|
},
|
|
3122
3229
|
size: {
|
|
3123
3230
|
default: "px-4",
|
|
@@ -3130,10 +3237,7 @@ var paginationLinkVariants = cva6(
|
|
|
3130
3237
|
}
|
|
3131
3238
|
}
|
|
3132
3239
|
);
|
|
3133
|
-
function Pagination({
|
|
3134
|
-
className,
|
|
3135
|
-
...props
|
|
3136
|
-
}) {
|
|
3240
|
+
function Pagination({ className, ...props }) {
|
|
3137
3241
|
return /* @__PURE__ */ jsx19(
|
|
3138
3242
|
"nav",
|
|
3139
3243
|
{
|
|
@@ -3150,15 +3254,15 @@ function PaginationContent({
|
|
|
3150
3254
|
return /* @__PURE__ */ jsx19(
|
|
3151
3255
|
"ul",
|
|
3152
3256
|
{
|
|
3153
|
-
className: cn(
|
|
3257
|
+
className: cn(
|
|
3258
|
+
"flex flex-wrap items-center justify-center gap-2",
|
|
3259
|
+
className
|
|
3260
|
+
),
|
|
3154
3261
|
...props
|
|
3155
3262
|
}
|
|
3156
3263
|
);
|
|
3157
3264
|
}
|
|
3158
|
-
function PaginationItem({
|
|
3159
|
-
className,
|
|
3160
|
-
...props
|
|
3161
|
-
}) {
|
|
3265
|
+
function PaginationItem({ className, ...props }) {
|
|
3162
3266
|
return /* @__PURE__ */ jsx19("li", { className: cn("list-none", className), ...props });
|
|
3163
3267
|
}
|
|
3164
3268
|
function PaginationLink({
|
|
@@ -3285,7 +3389,7 @@ function PaginationEllipsis({
|
|
|
3285
3389
|
{
|
|
3286
3390
|
"aria-hidden": "true",
|
|
3287
3391
|
className: cn(
|
|
3288
|
-
"flex h-10 w-10 items-center justify-center rounded-full text-[18px] leading-none text-[
|
|
3392
|
+
"flex h-10 w-10 items-center justify-center rounded-full text-[18px] leading-none text-[color:var(--sofya-text-subtle)]",
|
|
3289
3393
|
className
|
|
3290
3394
|
),
|
|
3291
3395
|
...props,
|
|
@@ -3315,7 +3419,13 @@ var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
|
3315
3419
|
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3316
3420
|
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3317
3421
|
var PopoverClose = PopoverPrimitive.Close;
|
|
3318
|
-
var PopoverContent = React17.forwardRef(function PopoverContent2({
|
|
3422
|
+
var PopoverContent = React17.forwardRef(function PopoverContent2({
|
|
3423
|
+
align = "center",
|
|
3424
|
+
className,
|
|
3425
|
+
collisionPadding = 8,
|
|
3426
|
+
sideOffset = 8,
|
|
3427
|
+
...props
|
|
3428
|
+
}, ref) {
|
|
3319
3429
|
return /* @__PURE__ */ jsx20(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx20(
|
|
3320
3430
|
PopoverPrimitive.Content,
|
|
3321
3431
|
{
|
|
@@ -3325,7 +3435,7 @@ var PopoverContent = React17.forwardRef(function PopoverContent2({ align = "cent
|
|
|
3325
3435
|
sideOffset,
|
|
3326
3436
|
"data-slot": "popover-content",
|
|
3327
3437
|
className: cn(
|
|
3328
|
-
"sofya-dropdown-content z-50 w-72 max-w-[min(24rem,calc(100vw-1rem))] rounded-[14px] border border-[
|
|
3438
|
+
"sofya-dropdown-content z-50 w-72 max-w-[min(24rem,calc(100vw-1rem))] rounded-[14px] border border-[color:var(--sofya-border-strong)] bg-[hsl(var(--sofya-popover))] p-4 text-[hsl(var(--sofya-popover-foreground))] shadow-[var(--sofya-shadow-soft)] outline-none",
|
|
3329
3439
|
className
|
|
3330
3440
|
),
|
|
3331
3441
|
...props
|
|
@@ -3387,7 +3497,14 @@ function clampProgressValue(value, max) {
|
|
|
3387
3497
|
}
|
|
3388
3498
|
return Math.min(Math.max(value, 0), max);
|
|
3389
3499
|
}
|
|
3390
|
-
var Progress = React18.forwardRef(function Progress2({
|
|
3500
|
+
var Progress = React18.forwardRef(function Progress2({
|
|
3501
|
+
className,
|
|
3502
|
+
indicatorClassName,
|
|
3503
|
+
max = 100,
|
|
3504
|
+
size = "default",
|
|
3505
|
+
value,
|
|
3506
|
+
...props
|
|
3507
|
+
}, ref) {
|
|
3391
3508
|
const safeMax = max > 0 ? max : 100;
|
|
3392
3509
|
const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
|
|
3393
3510
|
const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
|
|
@@ -3400,7 +3517,7 @@ var Progress = React18.forwardRef(function Progress2({ className, indicatorClass
|
|
|
3400
3517
|
max: safeMax,
|
|
3401
3518
|
value: resolvedValue,
|
|
3402
3519
|
className: cn(
|
|
3403
|
-
"relative h-2 w-full overflow-hidden rounded-full bg-[
|
|
3520
|
+
"relative h-2 w-full overflow-hidden rounded-full bg-[color:var(--sofya-tone-default-background)] data-[size=sm]:h-1.5 data-[size=default]:h-2 data-[size=lg]:h-3",
|
|
3404
3521
|
className
|
|
3405
3522
|
),
|
|
3406
3523
|
...props,
|
|
@@ -3409,7 +3526,7 @@ var Progress = React18.forwardRef(function Progress2({ className, indicatorClass
|
|
|
3409
3526
|
{
|
|
3410
3527
|
"data-slot": "progress-indicator",
|
|
3411
3528
|
className: cn(
|
|
3412
|
-
"h-full w-full origin-left rounded-full bg-[
|
|
3529
|
+
"h-full w-full origin-left rounded-full bg-[image:var(--sofya-gradient-brand)] transition-[transform,opacity] duration-sofya ease-sofya data-[state=indeterminate]:w-1/2 data-[state=indeterminate]:animate-pulse",
|
|
3413
3530
|
indicatorClassName
|
|
3414
3531
|
),
|
|
3415
3532
|
style: progressScale === void 0 ? void 0 : { transform: `scaleX(${progressScale})` }
|
|
@@ -3477,7 +3594,7 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
|
|
|
3477
3594
|
"aria-describedby": descriptionId,
|
|
3478
3595
|
"data-slot": "radio-group-item",
|
|
3479
3596
|
className: cn(
|
|
3480
|
-
"peer mt-0 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-[
|
|
3597
|
+
"peer mt-0 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-[color:var(--sofya-border-strong)] bg-card text-primary-foreground outline-none transition-[background-color,border-color,box-shadow] duration-sofya ease-sofya focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 data-[state=checked]:border-primary data-[state=checked]:bg-primary aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/20 disabled:cursor-not-allowed disabled:opacity-50",
|
|
3481
3598
|
controlClassName
|
|
3482
3599
|
),
|
|
3483
3600
|
...props,
|
|
@@ -3485,7 +3602,10 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
|
|
|
3485
3602
|
"span",
|
|
3486
3603
|
{
|
|
3487
3604
|
"data-slot": "radio-group-indicator",
|
|
3488
|
-
className: cn(
|
|
3605
|
+
className: cn(
|
|
3606
|
+
"h-2.5 w-2.5 rounded-full bg-card",
|
|
3607
|
+
indicatorClassName
|
|
3608
|
+
)
|
|
3489
3609
|
}
|
|
3490
3610
|
) })
|
|
3491
3611
|
}
|
|
@@ -3496,12 +3616,12 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
|
|
|
3496
3616
|
{
|
|
3497
3617
|
id: labelId,
|
|
3498
3618
|
className: cn(
|
|
3499
|
-
"text-[var(--sofya-
|
|
3619
|
+
"text-[color:var(--sofya-text-default)]",
|
|
3500
3620
|
labelClassName
|
|
3501
3621
|
),
|
|
3502
3622
|
children: renderTextContent(label, {
|
|
3503
3623
|
as: "span",
|
|
3504
|
-
className: "text-[var(--sofya-
|
|
3624
|
+
className: "text-[color:var(--sofya-text-default)]",
|
|
3505
3625
|
size: "h4",
|
|
3506
3626
|
style: {
|
|
3507
3627
|
fontWeight: 400,
|
|
@@ -3515,10 +3635,7 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
|
|
|
3515
3635
|
"span",
|
|
3516
3636
|
{
|
|
3517
3637
|
id: descriptionId,
|
|
3518
|
-
className: cn(
|
|
3519
|
-
"text-muted-foreground",
|
|
3520
|
-
descriptionClassName
|
|
3521
|
-
),
|
|
3638
|
+
className: cn("text-muted-foreground", descriptionClassName),
|
|
3522
3639
|
children: renderTextContent(description, {
|
|
3523
3640
|
as: "span",
|
|
3524
3641
|
className: "text-muted-foreground",
|
|
@@ -3560,7 +3677,7 @@ var ScrollAreaViewport = React20.forwardRef(function ScrollAreaViewport2({ class
|
|
|
3560
3677
|
ref,
|
|
3561
3678
|
"data-slot": "scroll-area-viewport",
|
|
3562
3679
|
className: cn(
|
|
3563
|
-
"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-[
|
|
3680
|
+
"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
|
|
3564
3681
|
className
|
|
3565
3682
|
),
|
|
3566
3683
|
...props
|
|
@@ -3584,7 +3701,10 @@ var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ cla
|
|
|
3584
3701
|
ScrollAreaPrimitive.Thumb,
|
|
3585
3702
|
{
|
|
3586
3703
|
"data-slot": "scroll-area-thumb",
|
|
3587
|
-
className: cn(
|
|
3704
|
+
className: cn(
|
|
3705
|
+
"relative flex-1 rounded-full bg-[color:var(--sofya-border-strong)]",
|
|
3706
|
+
thumbClassName
|
|
3707
|
+
)
|
|
3588
3708
|
}
|
|
3589
3709
|
)
|
|
3590
3710
|
}
|
|
@@ -3641,7 +3761,7 @@ var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, chil
|
|
|
3641
3761
|
"data-slot": "select-trigger",
|
|
3642
3762
|
"data-size": size,
|
|
3643
3763
|
className: cn(
|
|
3644
|
-
"flex w-full items-center justify-between gap-4 rounded-[10px] border border-[
|
|
3764
|
+
"flex w-full items-center justify-between gap-4 rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 text-left text-[16px] font-normal leading-[22px] tracking-[-0.02em] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus:ring-destructive/20 data-[placeholder]:text-[color:var(--sofya-text-placeholder)] data-[size=default]:h-10 data-[size=default]:py-2 data-[size=sm]:h-9 data-[size=sm]:px-2 data-[size=sm]:text-[14px] data-[size=sm]:leading-5 [&>span]:line-clamp-1 [&>span]:flex-1",
|
|
3645
3765
|
className
|
|
3646
3766
|
),
|
|
3647
3767
|
...props,
|
|
@@ -3652,7 +3772,7 @@ var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, chil
|
|
|
3652
3772
|
{
|
|
3653
3773
|
name: "caret-down",
|
|
3654
3774
|
size: size === "sm" ? 12 : 14,
|
|
3655
|
-
className: "shrink-0 text-[
|
|
3775
|
+
className: "shrink-0 text-[color:var(--sofya-text-subtle)]"
|
|
3656
3776
|
}
|
|
3657
3777
|
) })
|
|
3658
3778
|
]
|
|
@@ -3700,7 +3820,7 @@ var SelectContent = React21.forwardRef(function SelectContent2({ className, chil
|
|
|
3700
3820
|
"data-slot": "select-content",
|
|
3701
3821
|
position,
|
|
3702
3822
|
className: cn(
|
|
3703
|
-
"sofya-dropdown-content sofya-select-content z-50 max-h-80 min-w-[8rem] overflow-hidden rounded-[14px] border border-[
|
|
3823
|
+
"sofya-dropdown-content sofya-select-content z-50 max-h-80 min-w-[8rem] overflow-hidden rounded-[14px] border border-[color:var(--sofya-border-strong)] bg-card p-2 text-foreground shadow-[var(--sofya-shadow-soft)] outline-none",
|
|
3704
3824
|
position === "popper" && "w-[var(--radix-select-trigger-width)] data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
3705
3825
|
className
|
|
3706
3826
|
),
|
|
@@ -3751,14 +3871,14 @@ var SelectItem = React21.forwardRef(function SelectItem2({ className, children,
|
|
|
3751
3871
|
ref,
|
|
3752
3872
|
"data-slot": "select-item",
|
|
3753
3873
|
className: cn(
|
|
3754
|
-
"relative flex min-w-0 cursor-pointer select-none items-center self-stretch rounded-[8px] px-4 py-2 pr-8 text-[14px] font-normal leading-5 text-[var(--sofya-
|
|
3874
|
+
"relative flex min-w-0 cursor-pointer select-none items-center self-stretch rounded-[8px] px-4 py-2 pr-8 text-[14px] font-normal leading-5 text-[color:var(--sofya-text-default)] outline-none transition-colors duration-sofya ease-sofya data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[highlighted]:bg-[color:var(--sofya-surface-hover)] data-[highlighted]:text-[color:var(--sofya-text-default)] data-[state=checked]:bg-[color:var(--sofya-surface-selected)]",
|
|
3755
3875
|
className
|
|
3756
3876
|
),
|
|
3757
3877
|
...props,
|
|
3758
3878
|
children: [
|
|
3759
3879
|
/* @__PURE__ */ jsx24(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
|
|
3760
3880
|
as: "span",
|
|
3761
|
-
className: "block truncate text-[var(--sofya-
|
|
3881
|
+
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
3762
3882
|
size: "body",
|
|
3763
3883
|
style: {
|
|
3764
3884
|
lineHeight: "20px"
|
|
@@ -3776,7 +3896,7 @@ var SelectSeparator = React21.forwardRef(function SelectSeparator2({ className,
|
|
|
3776
3896
|
{
|
|
3777
3897
|
ref,
|
|
3778
3898
|
"data-slot": "select-separator",
|
|
3779
|
-
className: cn("my-2 h-px bg-[
|
|
3899
|
+
className: cn("my-2 h-px bg-[color:var(--sofya-border-soft)]", className),
|
|
3780
3900
|
...props
|
|
3781
3901
|
}
|
|
3782
3902
|
);
|
|
@@ -4015,20 +4135,24 @@ var Switch = React26.forwardRef(({ className, ...props }, ref) => {
|
|
|
4015
4135
|
Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
4016
4136
|
|
|
4017
4137
|
// src/components/table.tsx
|
|
4018
|
-
import { cva as
|
|
4138
|
+
import { cva as cva8 } from "class-variance-authority";
|
|
4019
4139
|
import * as React27 from "react";
|
|
4020
4140
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
4021
4141
|
var tableCellVariantOptions = ["default", "primary", "muted"];
|
|
4022
|
-
var tableStatusToneOptions = [
|
|
4142
|
+
var tableStatusToneOptions = [
|
|
4143
|
+
"active",
|
|
4144
|
+
"inactive",
|
|
4145
|
+
"warning"
|
|
4146
|
+
];
|
|
4023
4147
|
var tableActionToneOptions = ["primary", "neutral", "danger"];
|
|
4024
|
-
var tableCellVariants =
|
|
4148
|
+
var tableCellVariants = cva8(
|
|
4025
4149
|
"px-8 py-6 align-middle [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-normal leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)]",
|
|
4026
4150
|
{
|
|
4027
4151
|
variants: {
|
|
4028
4152
|
variant: {
|
|
4029
|
-
default: "text-[
|
|
4030
|
-
primary: "font-medium text-[var(--sofya-
|
|
4031
|
-
muted: "text-[
|
|
4153
|
+
default: "text-[color:var(--sofya-text-soft)]",
|
|
4154
|
+
primary: "font-medium text-[color:var(--sofya-text-default)]",
|
|
4155
|
+
muted: "text-[color:var(--sofya-text-subtle)]"
|
|
4032
4156
|
}
|
|
4033
4157
|
},
|
|
4034
4158
|
defaultVariants: {
|
|
@@ -4036,29 +4160,26 @@ var tableCellVariants = cva7(
|
|
|
4036
4160
|
}
|
|
4037
4161
|
}
|
|
4038
4162
|
);
|
|
4039
|
-
var tableStatusBadgeVariants =
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
tone:
|
|
4044
|
-
|
|
4045
|
-
inactive: "border-[#D9E2FA] bg-[#FBFCFF] text-[#7D87A8]",
|
|
4046
|
-
warning: "border-[#F7D7A4] bg-[#FFF8EC] text-[#9A5B00]"
|
|
4047
|
-
}
|
|
4048
|
-
},
|
|
4049
|
-
defaultVariants: {
|
|
4050
|
-
tone: "active"
|
|
4163
|
+
var tableStatusBadgeVariants = cva8("normal-case", {
|
|
4164
|
+
variants: {
|
|
4165
|
+
tone: {
|
|
4166
|
+
active: "border-[color:var(--sofya-tone-success-border)] bg-[color:var(--sofya-tone-success-background)] text-[color:var(--sofya-tone-success-foreground)]",
|
|
4167
|
+
inactive: "border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tone-default-background)] text-[color:var(--sofya-text-subtle)]",
|
|
4168
|
+
warning: "border-[color:var(--sofya-tone-warning-border)] bg-[color:var(--sofya-tone-warning-background)] text-[color:var(--sofya-tone-warning-foreground)]"
|
|
4051
4169
|
}
|
|
4170
|
+
},
|
|
4171
|
+
defaultVariants: {
|
|
4172
|
+
tone: "active"
|
|
4052
4173
|
}
|
|
4053
|
-
);
|
|
4054
|
-
var tableActionButtonVariants =
|
|
4055
|
-
"text-[length:var(--sofya-text-body-font-size)] leading-[var(--sofya-text-body-line-height)] shadow-none motion-safe:active:scale-[0.97] focus-visible:ring-[
|
|
4174
|
+
});
|
|
4175
|
+
var tableActionButtonVariants = cva8(
|
|
4176
|
+
"text-[length:var(--sofya-text-body-font-size)] leading-[var(--sofya-text-body-line-height)] shadow-none motion-safe:active:scale-[0.97] focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 disabled:opacity-40 [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4056
4177
|
{
|
|
4057
4178
|
variants: {
|
|
4058
4179
|
tone: {
|
|
4059
|
-
primary: "!bg-transparent text-
|
|
4060
|
-
neutral: "!bg-transparent text-[
|
|
4061
|
-
danger: "!bg-transparent text-[
|
|
4180
|
+
primary: "!bg-transparent text-primary hover:!bg-[color:var(--sofya-surface-hover)]",
|
|
4181
|
+
neutral: "!bg-transparent text-[color:var(--sofya-text-soft)] hover:!bg-[color:var(--sofya-surface-hover)]",
|
|
4182
|
+
danger: "!bg-transparent text-[color:var(--sofya-text-soft)] hover:!bg-[color:var(--sofya-surface-destructive)] hover:text-destructive"
|
|
4062
4183
|
}
|
|
4063
4184
|
},
|
|
4064
4185
|
defaultVariants: {
|
|
@@ -4074,26 +4195,37 @@ var inheritedTextStyle = {
|
|
|
4074
4195
|
letterSpacing: "inherit",
|
|
4075
4196
|
color: "inherit"
|
|
4076
4197
|
};
|
|
4077
|
-
var Table = React27.forwardRef(
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4198
|
+
var Table = React27.forwardRef(function Table2({ className, ...props }, ref) {
|
|
4199
|
+
return /* @__PURE__ */ jsx30(
|
|
4200
|
+
"div",
|
|
4201
|
+
{
|
|
4202
|
+
"data-slot": "table-container",
|
|
4203
|
+
className: "relative w-full overflow-x-auto",
|
|
4204
|
+
children: /* @__PURE__ */ jsx30(
|
|
4205
|
+
"table",
|
|
4206
|
+
{
|
|
4207
|
+
"data-slot": "table",
|
|
4208
|
+
ref,
|
|
4209
|
+
className: cn(
|
|
4210
|
+
"w-full min-w-[1040px] caption-bottom border-collapse bg-card",
|
|
4211
|
+
className
|
|
4212
|
+
),
|
|
4213
|
+
...props
|
|
4214
|
+
}
|
|
4215
|
+
)
|
|
4216
|
+
}
|
|
4217
|
+
);
|
|
4218
|
+
});
|
|
4090
4219
|
var TableHeader = React27.forwardRef(function TableHeader2({ className, ...props }, ref) {
|
|
4091
4220
|
return /* @__PURE__ */ jsx30(
|
|
4092
4221
|
"thead",
|
|
4093
4222
|
{
|
|
4094
4223
|
"data-slot": "table-header",
|
|
4095
4224
|
ref,
|
|
4096
|
-
className: cn(
|
|
4225
|
+
className: cn(
|
|
4226
|
+
"[&_tr]:border-b [&_tr]:border-[color:var(--sofya-border-strong)] [&_tr:hover]:bg-transparent",
|
|
4227
|
+
className
|
|
4228
|
+
),
|
|
4097
4229
|
...props
|
|
4098
4230
|
}
|
|
4099
4231
|
);
|
|
@@ -4115,27 +4247,28 @@ var TableFooter = React27.forwardRef(function TableFooter2({ className, ...props
|
|
|
4115
4247
|
{
|
|
4116
4248
|
"data-slot": "table-footer",
|
|
4117
4249
|
ref,
|
|
4118
|
-
className: cn(
|
|
4250
|
+
className: cn(
|
|
4251
|
+
"border-t border-[color:var(--sofya-border-strong)] bg-[color:var(--sofya-tone-default-background)] font-medium [&>tr:last-child]:border-0",
|
|
4252
|
+
className
|
|
4253
|
+
),
|
|
4254
|
+
...props
|
|
4255
|
+
}
|
|
4256
|
+
);
|
|
4257
|
+
});
|
|
4258
|
+
var TableRow = React27.forwardRef(function TableRow2({ className, ...props }, ref) {
|
|
4259
|
+
return /* @__PURE__ */ jsx30(
|
|
4260
|
+
"tr",
|
|
4261
|
+
{
|
|
4262
|
+
"data-slot": "table-row",
|
|
4263
|
+
ref,
|
|
4264
|
+
className: cn(
|
|
4265
|
+
"border-b border-[color:var(--sofya-border-soft)] transition-colors duration-sofya ease-sofya hover:bg-[color:var(--sofya-tone-default-background)] data-[state=selected]:bg-[color:var(--sofya-tone-default-background)]",
|
|
4266
|
+
className
|
|
4267
|
+
),
|
|
4119
4268
|
...props
|
|
4120
4269
|
}
|
|
4121
4270
|
);
|
|
4122
4271
|
});
|
|
4123
|
-
var TableRow = React27.forwardRef(
|
|
4124
|
-
function TableRow2({ className, ...props }, ref) {
|
|
4125
|
-
return /* @__PURE__ */ jsx30(
|
|
4126
|
-
"tr",
|
|
4127
|
-
{
|
|
4128
|
-
"data-slot": "table-row",
|
|
4129
|
-
ref,
|
|
4130
|
-
className: cn(
|
|
4131
|
-
"border-b border-[#EEF2FF] transition-colors duration-sofya ease-sofya hover:bg-[#FBFCFF] data-[state=selected]:bg-[#FBFCFF]",
|
|
4132
|
-
className
|
|
4133
|
-
),
|
|
4134
|
-
...props
|
|
4135
|
-
}
|
|
4136
|
-
);
|
|
4137
|
-
}
|
|
4138
|
-
);
|
|
4139
4272
|
var TableHead = React27.forwardRef(function TableHead2({ className, children, ...props }, ref) {
|
|
4140
4273
|
return /* @__PURE__ */ jsx30(
|
|
4141
4274
|
"th",
|
|
@@ -4143,7 +4276,7 @@ var TableHead = React27.forwardRef(function TableHead2({ className, children, ..
|
|
|
4143
4276
|
"data-slot": "table-head",
|
|
4144
4277
|
ref,
|
|
4145
4278
|
className: cn(
|
|
4146
|
-
"whitespace-nowrap px-8 py-8 text-left align-middle [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-medium uppercase leading-4 tracking-[0.12em] text-
|
|
4279
|
+
"whitespace-nowrap px-8 py-8 text-left align-middle [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-medium uppercase leading-4 tracking-[0.12em] text-[color:var(--sofya-text-default)] [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4147
4280
|
className
|
|
4148
4281
|
),
|
|
4149
4282
|
...props,
|
|
@@ -4156,77 +4289,95 @@ var TableHead = React27.forwardRef(function TableHead2({ className, children, ..
|
|
|
4156
4289
|
}
|
|
4157
4290
|
);
|
|
4158
4291
|
});
|
|
4159
|
-
var TableCell = React27.forwardRef(
|
|
4292
|
+
var TableCell = React27.forwardRef(
|
|
4293
|
+
function TableCell2({ className, variant, children, ...props }, ref) {
|
|
4294
|
+
return /* @__PURE__ */ jsx30(
|
|
4295
|
+
"td",
|
|
4296
|
+
{
|
|
4297
|
+
"data-slot": "table-cell",
|
|
4298
|
+
ref,
|
|
4299
|
+
className: cn(tableCellVariants({ variant }), className),
|
|
4300
|
+
...props,
|
|
4301
|
+
children: renderTextContent(children, {
|
|
4302
|
+
as: "span",
|
|
4303
|
+
className: "block text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4304
|
+
size: "body",
|
|
4305
|
+
style: inheritedTextStyle
|
|
4306
|
+
})
|
|
4307
|
+
}
|
|
4308
|
+
);
|
|
4309
|
+
}
|
|
4310
|
+
);
|
|
4311
|
+
var TableCaption = React27.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
|
|
4160
4312
|
return /* @__PURE__ */ jsx30(
|
|
4161
|
-
"
|
|
4313
|
+
"caption",
|
|
4162
4314
|
{
|
|
4163
|
-
"data-slot": "table-
|
|
4315
|
+
"data-slot": "table-caption",
|
|
4164
4316
|
ref,
|
|
4165
|
-
className: cn(
|
|
4317
|
+
className: cn(
|
|
4318
|
+
"mt-4 text-left [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-subtle)]",
|
|
4319
|
+
className
|
|
4320
|
+
),
|
|
4166
4321
|
...props,
|
|
4167
4322
|
children: renderTextContent(children, {
|
|
4168
4323
|
as: "span",
|
|
4169
|
-
className: "block text-inherit
|
|
4324
|
+
className: "block text-inherit",
|
|
4170
4325
|
size: "body",
|
|
4171
4326
|
style: inheritedTextStyle
|
|
4172
4327
|
})
|
|
4173
4328
|
}
|
|
4174
4329
|
);
|
|
4175
4330
|
});
|
|
4176
|
-
|
|
4331
|
+
function TableStatusBadge({
|
|
4332
|
+
className,
|
|
4333
|
+
tone,
|
|
4334
|
+
children,
|
|
4335
|
+
...props
|
|
4336
|
+
}) {
|
|
4177
4337
|
return /* @__PURE__ */ jsx30(
|
|
4178
|
-
|
|
4338
|
+
Badge,
|
|
4339
|
+
{
|
|
4340
|
+
variant: "pill",
|
|
4341
|
+
className: cn(tableStatusBadgeVariants({ tone }), className),
|
|
4342
|
+
...props,
|
|
4343
|
+
children: renderTextContent(children, {
|
|
4344
|
+
as: "span",
|
|
4345
|
+
className: "inline-flex items-center gap-2 text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4346
|
+
size: "tiny",
|
|
4347
|
+
style: inheritedTextStyle
|
|
4348
|
+
})
|
|
4349
|
+
}
|
|
4350
|
+
);
|
|
4351
|
+
}
|
|
4352
|
+
var TableActionButton = React27.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
|
|
4353
|
+
return /* @__PURE__ */ jsx30(
|
|
4354
|
+
Button,
|
|
4179
4355
|
{
|
|
4180
|
-
"data-slot": "table-caption",
|
|
4181
4356
|
ref,
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
),
|
|
4357
|
+
type,
|
|
4358
|
+
variant: "ghost",
|
|
4359
|
+
size: "icon",
|
|
4360
|
+
className: cn(tableActionButtonVariants({ tone }), className),
|
|
4186
4361
|
...props,
|
|
4187
4362
|
children: renderTextContent(children, {
|
|
4188
4363
|
as: "span",
|
|
4189
|
-
className: "
|
|
4364
|
+
className: "inline-flex items-center justify-center text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4190
4365
|
size: "body",
|
|
4191
4366
|
style: inheritedTextStyle
|
|
4192
4367
|
})
|
|
4193
4368
|
}
|
|
4194
4369
|
);
|
|
4195
4370
|
});
|
|
4196
|
-
function
|
|
4197
|
-
return /* @__PURE__ */ jsx30(
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
}
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
return /* @__PURE__ */ jsx30(
|
|
4207
|
-
Button,
|
|
4208
|
-
{
|
|
4209
|
-
ref,
|
|
4210
|
-
type,
|
|
4211
|
-
variant: "ghost",
|
|
4212
|
-
size: "icon",
|
|
4213
|
-
className: cn(tableActionButtonVariants({ tone }), className),
|
|
4214
|
-
...props,
|
|
4215
|
-
children: renderTextContent(children, {
|
|
4216
|
-
as: "span",
|
|
4217
|
-
className: "inline-flex items-center justify-center text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
|
|
4218
|
-
size: "body",
|
|
4219
|
-
style: inheritedTextStyle
|
|
4220
|
-
})
|
|
4221
|
-
}
|
|
4222
|
-
);
|
|
4223
|
-
}
|
|
4224
|
-
);
|
|
4225
|
-
var TableActions = React27.forwardRef(
|
|
4226
|
-
function TableActions2({ className, ...props }, ref) {
|
|
4227
|
-
return /* @__PURE__ */ jsx30("div", { ref, className: cn("flex items-center gap-6", className), ...props });
|
|
4228
|
-
}
|
|
4229
|
-
);
|
|
4371
|
+
var TableActions = React27.forwardRef(function TableActions2({ className, ...props }, ref) {
|
|
4372
|
+
return /* @__PURE__ */ jsx30(
|
|
4373
|
+
"div",
|
|
4374
|
+
{
|
|
4375
|
+
ref,
|
|
4376
|
+
className: cn("flex items-center gap-6", className),
|
|
4377
|
+
...props
|
|
4378
|
+
}
|
|
4379
|
+
);
|
|
4380
|
+
});
|
|
4230
4381
|
Table.displayName = "Table";
|
|
4231
4382
|
TableHeader.displayName = "TableHeader";
|
|
4232
4383
|
TableBody.displayName = "TableBody";
|
|
@@ -4291,7 +4442,10 @@ function Tabs({
|
|
|
4291
4442
|
TabsPrimitive.List,
|
|
4292
4443
|
{
|
|
4293
4444
|
"aria-label": "Subtelas navegaveis",
|
|
4294
|
-
className: cn(
|
|
4445
|
+
className: cn(
|
|
4446
|
+
"flex w-full items-center border-b border-[color:var(--sofya-border-strong)]",
|
|
4447
|
+
listClassName
|
|
4448
|
+
),
|
|
4295
4449
|
children: items.map((item) => {
|
|
4296
4450
|
const isUnavailable = item.disabled || item.loading;
|
|
4297
4451
|
const isActive = item.value === currentValue;
|
|
@@ -4301,8 +4455,8 @@ function Tabs({
|
|
|
4301
4455
|
value: item.value,
|
|
4302
4456
|
disabled: isUnavailable,
|
|
4303
4457
|
className: cn(
|
|
4304
|
-
"relative inline-flex min-h-[76px] shrink-0 items-center justify-center px-8 pb-4 pt-6 text-[18px] font-semibold leading-none tracking-[-0.01em] text-[
|
|
4305
|
-
item.loading && "disabled:text-[
|
|
4458
|
+
"relative inline-flex min-h-[76px] shrink-0 items-center justify-center px-8 pb-4 pt-6 text-[18px] font-semibold leading-none tracking-[-0.01em] text-[color:var(--sofya-text-subtle)] transition-[color,opacity] duration-sofya ease-sofya focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 disabled:pointer-events-none disabled:text-[color:var(--sofya-text-placeholder)] data-[state=active]:text-primary",
|
|
4459
|
+
item.loading && "disabled:text-[color:var(--sofya-text-soft)]",
|
|
4306
4460
|
triggerClassName,
|
|
4307
4461
|
item.triggerClassName
|
|
4308
4462
|
),
|
|
@@ -4349,7 +4503,11 @@ function Tabs({
|
|
|
4349
4503
|
TabsPrimitive.Content,
|
|
4350
4504
|
{
|
|
4351
4505
|
value: item.value,
|
|
4352
|
-
className: cn(
|
|
4506
|
+
className: cn(
|
|
4507
|
+
"pt-6 focus:outline-none",
|
|
4508
|
+
contentClassName,
|
|
4509
|
+
item.contentClassName
|
|
4510
|
+
),
|
|
4353
4511
|
children: renderTextContent(item.content, {
|
|
4354
4512
|
as: "span"
|
|
4355
4513
|
})
|
|
@@ -4367,7 +4525,15 @@ Tabs.displayName = "Tabs";
|
|
|
4367
4525
|
import * as React29 from "react";
|
|
4368
4526
|
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4369
4527
|
var Textarea = React29.forwardRef(
|
|
4370
|
-
({
|
|
4528
|
+
({
|
|
4529
|
+
className,
|
|
4530
|
+
containerClassName,
|
|
4531
|
+
id,
|
|
4532
|
+
label,
|
|
4533
|
+
labelClassName,
|
|
4534
|
+
rows = 5,
|
|
4535
|
+
...props
|
|
4536
|
+
}, ref) => {
|
|
4371
4537
|
const generatedId = React29.useId();
|
|
4372
4538
|
const resolvedId = id ?? generatedId;
|
|
4373
4539
|
const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
|
|
@@ -4375,7 +4541,7 @@ var Textarea = React29.forwardRef(
|
|
|
4375
4541
|
"textarea",
|
|
4376
4542
|
{
|
|
4377
4543
|
className: cn(
|
|
4378
|
-
"flex min-h-[120px] w-full resize-y rounded-[10px] border border-[
|
|
4544
|
+
"flex min-h-[120px] w-full resize-y rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 text-[16px] font-normal leading-[22px] tracking-[-0.02em] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya placeholder:text-[color:var(--sofya-text-placeholder)] hover:border-[color:var(--sofya-border-hover)] focus:border-[color:var(--sofya-border-hover)] focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-[color:var(--sofya-border-hover)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50",
|
|
4379
4545
|
className
|
|
4380
4546
|
),
|
|
4381
4547
|
id: resolvedId,
|
|
@@ -4392,11 +4558,14 @@ var Textarea = React29.forwardRef(
|
|
|
4392
4558
|
label ? /* @__PURE__ */ jsx32(
|
|
4393
4559
|
"label",
|
|
4394
4560
|
{
|
|
4395
|
-
className: cn(
|
|
4561
|
+
className: cn(
|
|
4562
|
+
"text-[color:var(--sofya-text-default)]",
|
|
4563
|
+
labelClassName
|
|
4564
|
+
),
|
|
4396
4565
|
htmlFor: resolvedId,
|
|
4397
4566
|
children: renderTextContent(label, {
|
|
4398
4567
|
as: "span",
|
|
4399
|
-
className: "block text-[var(--sofya-
|
|
4568
|
+
className: "block text-[color:var(--sofya-text-default)]",
|
|
4400
4569
|
size: "h4",
|
|
4401
4570
|
style: {
|
|
4402
4571
|
fontWeight: 500,
|
|
@@ -4426,13 +4595,13 @@ var TooltipContent = React30.forwardRef(function TooltipContent2({ className, si
|
|
|
4426
4595
|
ref,
|
|
4427
4596
|
sideOffset,
|
|
4428
4597
|
className: cn(
|
|
4429
|
-
"sofya-tooltip-content z-50 max-w-[260px] overflow-hidden rounded-[12px] border border-[
|
|
4598
|
+
"sofya-tooltip-content z-50 max-w-[260px] overflow-hidden rounded-[12px] border border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tooltip-background)] px-4 py-2 text-[color:var(--sofya-tooltip-foreground)] shadow-[var(--sofya-shadow-tooltip)]",
|
|
4430
4599
|
className
|
|
4431
4600
|
),
|
|
4432
4601
|
...props,
|
|
4433
4602
|
children: renderTextContent(props.children, {
|
|
4434
4603
|
as: "span",
|
|
4435
|
-
className: "block text-
|
|
4604
|
+
className: "block text-[color:var(--sofya-tooltip-foreground)]",
|
|
4436
4605
|
size: "tiny",
|
|
4437
4606
|
style: {
|
|
4438
4607
|
fontWeight: 500,
|