@sofya-ds/react 1.3.6 → 1.3.8
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 +984 -681
- package/dist/index.css +1 -1
- package/dist/index.d.cts +36 -3
- package/dist/index.d.ts +36 -3
- package/dist/index.js +982 -680
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -612,7 +612,7 @@ var accordionItemClasses = {
|
|
|
612
612
|
card: "group/accordion-item bg-transparent text-foreground"
|
|
613
613
|
};
|
|
614
614
|
var accordionTriggerClasses = {
|
|
615
|
-
default: "sofya-accordion-trigger flex flex-1 items-center justify-between gap-4 py-4 text-left [font-family:var(--sofya-text-
|
|
615
|
+
default: "sofya-accordion-trigger flex flex-1 items-center justify-between gap-4 py-4 text-left [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-medium leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)] text-foreground transition-colors duration-sofya ease-sofya 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",
|
|
616
616
|
card: "sofya-accordion-trigger flex w-full items-center justify-between gap-4 rounded-[16px] border border-secondary bg-[color:var(--sofya-background)] px-6 py-4 text-left text-foreground transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya hover:border-secondary 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:opacity-50"
|
|
617
617
|
};
|
|
618
618
|
var accordionContentClasses = {
|
|
@@ -690,7 +690,7 @@ var AccordionTrigger = React4.forwardRef(
|
|
|
690
690
|
renderTextContent(children, {
|
|
691
691
|
as: "span",
|
|
692
692
|
className: "block min-w-0 text-foreground",
|
|
693
|
-
size: appearance === "card" ? "
|
|
693
|
+
size: appearance === "card" ? "body" : "tiny",
|
|
694
694
|
style: appearance === "card" ? void 0 : {
|
|
695
695
|
color: "inherit",
|
|
696
696
|
fontFamily: "inherit",
|
|
@@ -703,7 +703,7 @@ var AccordionTrigger = React4.forwardRef(
|
|
|
703
703
|
hasDescription ? renderTextContent(description, {
|
|
704
704
|
as: "span",
|
|
705
705
|
className: "block min-w-0 text-muted-foreground",
|
|
706
|
-
size: "
|
|
706
|
+
size: "tiny"
|
|
707
707
|
}) : null
|
|
708
708
|
]
|
|
709
709
|
}
|
|
@@ -746,7 +746,8 @@ var AccordionContent = React4.forwardRef(({ className, children, contentClassNam
|
|
|
746
746
|
contentClassName
|
|
747
747
|
),
|
|
748
748
|
children: renderTextContent(children, {
|
|
749
|
-
className: appearance === "card" ? "text-foreground" : "text-muted-foreground"
|
|
749
|
+
className: appearance === "card" ? "text-foreground" : "text-muted-foreground",
|
|
750
|
+
size: "tiny"
|
|
750
751
|
})
|
|
751
752
|
}
|
|
752
753
|
)
|
|
@@ -862,7 +863,7 @@ var AlertDescription = React5.forwardRef(function AlertDescription2({ children,
|
|
|
862
863
|
children: renderTextContent(children, {
|
|
863
864
|
as: "span",
|
|
864
865
|
className: "block text-current/80",
|
|
865
|
-
size: "
|
|
866
|
+
size: "tiny"
|
|
866
867
|
})
|
|
867
868
|
}
|
|
868
869
|
);
|
|
@@ -886,7 +887,7 @@ var badgeVariantOptions = [
|
|
|
886
887
|
var badgeAlertOptions = ["default", "medium", "high"];
|
|
887
888
|
var badgePillToneOptions = ["neutral", "danger"];
|
|
888
889
|
var badgeVariants = cva3(
|
|
889
|
-
"inline-flex min-h-[34px] items-center justify-center whitespace-nowrap rounded-[5px] px-4 py-2 text-[
|
|
890
|
+
"inline-flex min-h-[34px] items-center justify-center whitespace-nowrap rounded-[5px] px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-semibold uppercase leading-none tracking-[0.08em] transition-colors duration-sofya ease-sofya",
|
|
890
891
|
{
|
|
891
892
|
variants: {
|
|
892
893
|
variant: {
|
|
@@ -905,7 +906,7 @@ var badgeVariants = cva3(
|
|
|
905
906
|
}
|
|
906
907
|
);
|
|
907
908
|
var badgeAlertVariants = cva3(
|
|
908
|
-
"inline-flex min-h-[34px] items-center justify-center whitespace-nowrap rounded-[5px] px-4 py-2 text-[
|
|
909
|
+
"inline-flex min-h-[34px] items-center justify-center whitespace-nowrap rounded-[5px] px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-semibold uppercase leading-none tracking-[0.08em] transition-colors duration-sofya ease-sofya",
|
|
909
910
|
{
|
|
910
911
|
variants: {
|
|
911
912
|
alert: {
|
|
@@ -920,7 +921,7 @@ var badgeAlertVariants = cva3(
|
|
|
920
921
|
}
|
|
921
922
|
);
|
|
922
923
|
var badgePillVariants = cva3(
|
|
923
|
-
"inline-flex h-[30px] items-center justify-center whitespace-nowrap rounded-full border px-4 py-2 text-[
|
|
924
|
+
"inline-flex h-[30px] items-center justify-center whitespace-nowrap rounded-full border px-4 py-2 [font-family:var(--sofya-text-extra-tiny-font-family)] text-[length:var(--sofya-text-extra-tiny-font-size)] font-semibold leading-none tracking-normal transition-colors duration-sofya ease-sofya",
|
|
924
925
|
{
|
|
925
926
|
variants: {
|
|
926
927
|
tone: {
|
|
@@ -1734,7 +1735,7 @@ var Checkbox = React10.forwardRef(
|
|
|
1734
1735
|
children: renderTextContent(label, {
|
|
1735
1736
|
as: "span",
|
|
1736
1737
|
className: "text-[color:var(--sofya-text-default)]",
|
|
1737
|
-
size: "
|
|
1738
|
+
size: "tiny"
|
|
1738
1739
|
})
|
|
1739
1740
|
}
|
|
1740
1741
|
) : null,
|
|
@@ -1749,7 +1750,7 @@ var Checkbox = React10.forwardRef(
|
|
|
1749
1750
|
children: renderTextContent(description, {
|
|
1750
1751
|
as: "span",
|
|
1751
1752
|
className: "text-muted-foreground",
|
|
1752
|
-
size: "
|
|
1753
|
+
size: "tiny"
|
|
1753
1754
|
})
|
|
1754
1755
|
}
|
|
1755
1756
|
) : null
|
|
@@ -1792,7 +1793,8 @@ import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
|
1792
1793
|
var dropdownVariantOptions = [
|
|
1793
1794
|
"card",
|
|
1794
1795
|
"language",
|
|
1795
|
-
"selected"
|
|
1796
|
+
"selected",
|
|
1797
|
+
"action"
|
|
1796
1798
|
];
|
|
1797
1799
|
var dropdownAppearanceOptions = ["card"];
|
|
1798
1800
|
var dropdownTriggerSizeOptions = ["default", "sm", "lg"];
|
|
@@ -1804,7 +1806,8 @@ var dropdownLanguageItems = [
|
|
|
1804
1806
|
var dropdownTriggerToneClasses = {
|
|
1805
1807
|
card: "text-primary",
|
|
1806
1808
|
language: "",
|
|
1807
|
-
selected: "w-full border-[color:var(--sofya-border-strong)] [font-family:var(--sofya-text-
|
|
1809
|
+
selected: "w-full border-[color:var(--sofya-border-strong)] [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)]",
|
|
1810
|
+
action: ""
|
|
1808
1811
|
};
|
|
1809
1812
|
var dropdownTriggerSizeClasses = {
|
|
1810
1813
|
regular: {
|
|
@@ -1821,6 +1824,11 @@ var dropdownTriggerSizeClasses = {
|
|
|
1821
1824
|
default: "h-5 w-5 p-0",
|
|
1822
1825
|
sm: "h-[18px] w-[18px] p-0",
|
|
1823
1826
|
lg: "h-6 w-6 p-0"
|
|
1827
|
+
},
|
|
1828
|
+
action: {
|
|
1829
|
+
default: "h-10 w-10 p-0",
|
|
1830
|
+
sm: "h-8 w-8 p-0",
|
|
1831
|
+
lg: "h-12 w-12 p-0"
|
|
1824
1832
|
}
|
|
1825
1833
|
};
|
|
1826
1834
|
var dropdownAppearanceClasses = {
|
|
@@ -1832,12 +1840,14 @@ var dropdownAppearanceClasses = {
|
|
|
1832
1840
|
var dropdownContentBaseClasses = {
|
|
1833
1841
|
card: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1834
1842
|
language: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1835
|
-
selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
1843
|
+
selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1844
|
+
action: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
1836
1845
|
};
|
|
1837
1846
|
var dropdownItemClasses = {
|
|
1838
1847
|
card: "text-foreground",
|
|
1839
1848
|
language: "text-foreground",
|
|
1840
|
-
selected: "text-foreground"
|
|
1849
|
+
selected: "text-foreground",
|
|
1850
|
+
action: "text-foreground"
|
|
1841
1851
|
};
|
|
1842
1852
|
function isButtonLanguageLocale(value) {
|
|
1843
1853
|
return buttonLanguageLocaleOptions.includes(value);
|
|
@@ -1863,6 +1873,9 @@ function resolveDropdownTriggerSizeFamily(variant) {
|
|
|
1863
1873
|
if (variant === "selected") {
|
|
1864
1874
|
return "selected";
|
|
1865
1875
|
}
|
|
1876
|
+
if (variant === "action") {
|
|
1877
|
+
return "action";
|
|
1878
|
+
}
|
|
1866
1879
|
return "regular";
|
|
1867
1880
|
}
|
|
1868
1881
|
function DefaultDropdownTriggerIcon({ variant }) {
|
|
@@ -1901,6 +1914,7 @@ function Dropdown({
|
|
|
1901
1914
|
defaultOpen,
|
|
1902
1915
|
defaultValue,
|
|
1903
1916
|
disabled = false,
|
|
1917
|
+
iconTrigger,
|
|
1904
1918
|
items,
|
|
1905
1919
|
itemClassName,
|
|
1906
1920
|
modal,
|
|
@@ -1917,9 +1931,10 @@ function Dropdown({
|
|
|
1917
1931
|
}) {
|
|
1918
1932
|
const isLanguageVariant = variant === "language";
|
|
1919
1933
|
const isSelectedVariant = variant === "selected";
|
|
1934
|
+
const isActionVariant = variant === "action";
|
|
1920
1935
|
const resolvedAppearance = resolveDropdownAppearance({ appearance, variant });
|
|
1921
1936
|
const triggerSizeFamily = resolveDropdownTriggerSizeFamily(variant);
|
|
1922
|
-
const usesDefaultListStyle = !isLanguageVariant;
|
|
1937
|
+
const usesDefaultListStyle = !isLanguageVariant && !isActionVariant;
|
|
1923
1938
|
const resolvedItems = React12.useMemo(
|
|
1924
1939
|
() => isLanguageVariant ? items && items.length > 0 ? items : dropdownLanguageItems : items ?? [],
|
|
1925
1940
|
[isLanguageVariant, items]
|
|
@@ -1930,6 +1945,7 @@ function Dropdown({
|
|
|
1930
1945
|
onChange: onValueChange,
|
|
1931
1946
|
value
|
|
1932
1947
|
});
|
|
1948
|
+
const [subValues, setSubValues] = React12.useState({});
|
|
1933
1949
|
const radioValue = selectedValue ?? "";
|
|
1934
1950
|
const selectedItem = resolvedItems.find(
|
|
1935
1951
|
(item) => item.value === selectedValue
|
|
@@ -1951,7 +1967,7 @@ function Dropdown({
|
|
|
1951
1967
|
setUncontrolledSelectedValue,
|
|
1952
1968
|
value
|
|
1953
1969
|
]);
|
|
1954
|
-
const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ jsx12(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
|
|
1970
|
+
const resolvedTriggerIcon = isLanguageVariant || isActionVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ jsx12(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
|
|
1955
1971
|
const triggerLabel = selectedItem?.triggerLabel ?? selectedItem?.label ?? placeholder;
|
|
1956
1972
|
const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[color:var(--sofya-text-soft)]" : void 0;
|
|
1957
1973
|
return /* @__PURE__ */ jsxs5(
|
|
@@ -1966,7 +1982,7 @@ function Dropdown({
|
|
|
1966
1982
|
Button,
|
|
1967
1983
|
{
|
|
1968
1984
|
type: "button",
|
|
1969
|
-
variant: isLanguageVariant ? "language" : "dropdown",
|
|
1985
|
+
variant: isLanguageVariant ? "language" : isActionVariant ? "ghost" : "dropdown",
|
|
1970
1986
|
languageLocale: selectedLanguageLocale,
|
|
1971
1987
|
"data-appearance": resolvedAppearance,
|
|
1972
1988
|
"data-trigger-size": triggerSize,
|
|
@@ -1978,11 +1994,12 @@ function Dropdown({
|
|
|
1978
1994
|
selectedTriggerToneClassName,
|
|
1979
1995
|
triggerClassName
|
|
1980
1996
|
),
|
|
1997
|
+
leftIcon: isActionVariant ? iconTrigger : void 0,
|
|
1981
1998
|
rightIcon: resolvedTriggerIcon,
|
|
1982
|
-
children: isLanguageVariant ? null : /* @__PURE__ */ jsx12("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
|
|
1999
|
+
children: isLanguageVariant || isActionVariant ? null : /* @__PURE__ */ jsx12("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
|
|
1983
2000
|
as: "span",
|
|
1984
2001
|
className: "block min-w-0 truncate text-inherit",
|
|
1985
|
-
size: "
|
|
2002
|
+
size: "tiny"
|
|
1986
2003
|
}) })
|
|
1987
2004
|
}
|
|
1988
2005
|
) }),
|
|
@@ -2009,43 +2026,121 @@ function Dropdown({
|
|
|
2009
2026
|
const itemLanguageLocale = resolveItemLanguageLocale(item);
|
|
2010
2027
|
const indicator = item.indicator ?? /* @__PURE__ */ jsx12(DefaultDropdownItemIndicator, {});
|
|
2011
2028
|
const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ jsx12(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
|
|
2029
|
+
if (isActionVariant && item.subItems && item.subItems.length > 0) {
|
|
2030
|
+
const currentSubValue = subValues[item.value];
|
|
2031
|
+
return /* @__PURE__ */ jsxs5(DropdownMenuPrimitive.Sub, { children: [
|
|
2032
|
+
/* @__PURE__ */ jsxs5(
|
|
2033
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
2034
|
+
{
|
|
2035
|
+
disabled: item.disabled,
|
|
2036
|
+
className: cn(
|
|
2037
|
+
"flex w-full min-w-0 overflow-hidden cursor-pointer items-center gap-2.5 rounded-full px-1.5 py-1 outline-none transition-colors duration-sofya ease-sofya",
|
|
2038
|
+
"data-[highlighted]:bg-muted data-[state=open]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2039
|
+
dropdownItemClasses[variant],
|
|
2040
|
+
itemClassName
|
|
2041
|
+
),
|
|
2042
|
+
children: [
|
|
2043
|
+
itemIcon && /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }),
|
|
2044
|
+
/* @__PURE__ */ jsx12("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(item.label, {
|
|
2045
|
+
as: "span",
|
|
2046
|
+
className: "block truncate text-inherit",
|
|
2047
|
+
size: "tiny"
|
|
2048
|
+
}) }),
|
|
2049
|
+
/* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center text-[color:var(--sofya-text-subtle)]", children: /* @__PURE__ */ jsx12(Icon, { name: "caret-right", size: 12 }) })
|
|
2050
|
+
]
|
|
2051
|
+
}
|
|
2052
|
+
),
|
|
2053
|
+
/* @__PURE__ */ jsx12(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx12(
|
|
2054
|
+
DropdownMenuPrimitive.SubContent,
|
|
2055
|
+
{
|
|
2056
|
+
sideOffset: 4,
|
|
2057
|
+
className: cn(
|
|
2058
|
+
"sofya-dropdown-content z-50 w-[224px] min-w-[224px] overflow-hidden border bg-card p-2 outline-none",
|
|
2059
|
+
"rounded-[20px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
2060
|
+
),
|
|
2061
|
+
children: /* @__PURE__ */ jsx12(
|
|
2062
|
+
DropdownMenuPrimitive.RadioGroup,
|
|
2063
|
+
{
|
|
2064
|
+
value: currentSubValue ?? "",
|
|
2065
|
+
onValueChange: (subValue) => {
|
|
2066
|
+
setSubValues((prev) => ({
|
|
2067
|
+
...prev,
|
|
2068
|
+
[item.value]: subValue
|
|
2069
|
+
}));
|
|
2070
|
+
setSelectedValue(subValue);
|
|
2071
|
+
},
|
|
2072
|
+
className: "grid gap-1",
|
|
2073
|
+
children: item.subItems.map((subItem) => {
|
|
2074
|
+
const isSubSelected = subItem.value === currentSubValue;
|
|
2075
|
+
return /* @__PURE__ */ jsxs5(
|
|
2076
|
+
DropdownMenuPrimitive.RadioItem,
|
|
2077
|
+
{
|
|
2078
|
+
value: subItem.value,
|
|
2079
|
+
disabled: subItem.disabled,
|
|
2080
|
+
className: cn(
|
|
2081
|
+
"flex w-full min-w-0 overflow-hidden cursor-pointer items-center gap-2.5 rounded-full px-1.5 py-1 text-foreground outline-none transition-colors duration-sofya ease-sofya",
|
|
2082
|
+
"data-[highlighted]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40"
|
|
2083
|
+
),
|
|
2084
|
+
children: [
|
|
2085
|
+
subItem.icon && /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: subItem.icon }),
|
|
2086
|
+
/* @__PURE__ */ jsx12("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(subItem.label, {
|
|
2087
|
+
as: "span",
|
|
2088
|
+
className: "block truncate text-inherit",
|
|
2089
|
+
size: "tiny"
|
|
2090
|
+
}) }),
|
|
2091
|
+
/* @__PURE__ */ jsx12(
|
|
2092
|
+
"span",
|
|
2093
|
+
{
|
|
2094
|
+
"aria-hidden": "true",
|
|
2095
|
+
className: cn(
|
|
2096
|
+
"flex h-4 w-4 shrink-0 items-center justify-center text-primary transition-opacity duration-sofya ease-sofya",
|
|
2097
|
+
isSubSelected ? "opacity-100" : "opacity-0"
|
|
2098
|
+
),
|
|
2099
|
+
children: /* @__PURE__ */ jsx12(DefaultDropdownItemIndicator, {})
|
|
2100
|
+
}
|
|
2101
|
+
)
|
|
2102
|
+
]
|
|
2103
|
+
},
|
|
2104
|
+
subItem.value
|
|
2105
|
+
);
|
|
2106
|
+
})
|
|
2107
|
+
}
|
|
2108
|
+
)
|
|
2109
|
+
}
|
|
2110
|
+
) })
|
|
2111
|
+
] }, item.value);
|
|
2112
|
+
}
|
|
2012
2113
|
if (!usesDefaultListStyle) {
|
|
2013
|
-
return /* @__PURE__ */
|
|
2114
|
+
return /* @__PURE__ */ jsxs5(
|
|
2014
2115
|
DropdownMenuPrimitive.RadioItem,
|
|
2015
2116
|
{
|
|
2016
2117
|
value: item.value,
|
|
2017
2118
|
disabled: item.disabled,
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
"
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
children: indicator
|
|
2044
|
-
}
|
|
2045
|
-
)
|
|
2046
|
-
] })
|
|
2047
|
-
}
|
|
2048
|
-
)
|
|
2119
|
+
className: cn(
|
|
2120
|
+
"flex w-full min-w-0 overflow-hidden cursor-pointer items-center gap-2.5 rounded-full px-1.5 py-1 outline-none transition-colors duration-sofya ease-sofya",
|
|
2121
|
+
"data-[highlighted]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2122
|
+
dropdownItemClasses[variant],
|
|
2123
|
+
itemClassName
|
|
2124
|
+
),
|
|
2125
|
+
children: [
|
|
2126
|
+
itemIcon && /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }),
|
|
2127
|
+
/* @__PURE__ */ jsx12("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(item.label, {
|
|
2128
|
+
as: "span",
|
|
2129
|
+
className: "block truncate text-inherit",
|
|
2130
|
+
size: "tiny"
|
|
2131
|
+
}) }),
|
|
2132
|
+
/* @__PURE__ */ jsx12(
|
|
2133
|
+
"span",
|
|
2134
|
+
{
|
|
2135
|
+
"aria-hidden": "true",
|
|
2136
|
+
className: cn(
|
|
2137
|
+
"flex h-4 w-4 shrink-0 items-center justify-center text-primary transition-opacity duration-sofya ease-sofya",
|
|
2138
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
2139
|
+
),
|
|
2140
|
+
children: indicator
|
|
2141
|
+
}
|
|
2142
|
+
)
|
|
2143
|
+
]
|
|
2049
2144
|
},
|
|
2050
2145
|
item.value
|
|
2051
2146
|
);
|
|
@@ -2056,7 +2151,7 @@ function Dropdown({
|
|
|
2056
2151
|
value: item.value,
|
|
2057
2152
|
disabled: item.disabled,
|
|
2058
2153
|
className: cn(
|
|
2059
|
-
"flex w-full cursor-pointer items-center rounded-[4px] [font-family:var(--sofya-text-
|
|
2154
|
+
"flex w-full cursor-pointer items-center rounded-[4px] [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[22px] tracking-[var(--sofya-text-tiny-letter-spacing)] outline-none transition-colors duration-sofya ease-sofya data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2060
2155
|
"px-0 py-0 data-[highlighted]:bg-transparent [&[data-highlighted]_span[data-dropdown-item-body]]:bg-[color:var(--sofya-surface-selected)]",
|
|
2061
2156
|
dropdownItemClasses[variant],
|
|
2062
2157
|
itemClassName
|
|
@@ -2100,262 +2195,21 @@ function Dropdown({
|
|
|
2100
2195
|
);
|
|
2101
2196
|
}
|
|
2102
2197
|
|
|
2103
|
-
// src/components/
|
|
2104
|
-
import * as
|
|
2105
|
-
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
2106
|
-
import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2107
|
-
var Dialog = DialogPrimitive.Root;
|
|
2108
|
-
var DialogTrigger = DialogPrimitive.Trigger;
|
|
2109
|
-
var DialogPortal = DialogPrimitive.Portal;
|
|
2110
|
-
var DialogClose = DialogPrimitive.Close;
|
|
2111
|
-
var DialogInternalContext = React13.createContext({
|
|
2112
|
-
showCloseButton: true
|
|
2113
|
-
});
|
|
2114
|
-
var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
2115
|
-
DialogPrimitive.Overlay,
|
|
2116
|
-
{
|
|
2117
|
-
ref,
|
|
2118
|
-
className: cn(
|
|
2119
|
-
"sofya-dialog-overlay fixed inset-0 z-50 bg-foreground/24 backdrop-blur-[6px]",
|
|
2120
|
-
className
|
|
2121
|
-
),
|
|
2122
|
-
...props
|
|
2123
|
-
}
|
|
2124
|
-
));
|
|
2125
|
-
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
2126
|
-
var DialogContent = React13.forwardRef(
|
|
2127
|
-
({
|
|
2128
|
-
className,
|
|
2129
|
-
children,
|
|
2130
|
-
cardClassName,
|
|
2131
|
-
overlayClassName,
|
|
2132
|
-
showCloseButton = true,
|
|
2133
|
-
variant = "card",
|
|
2134
|
-
...props
|
|
2135
|
-
}, ref) => {
|
|
2136
|
-
const dialogCardStyle = {
|
|
2137
|
-
"--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
|
|
2138
|
-
};
|
|
2139
|
-
return /* @__PURE__ */ jsx13(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ jsxs6(DialogPortal, { children: [
|
|
2140
|
-
/* @__PURE__ */ jsx13(DialogOverlay, { className: overlayClassName }),
|
|
2141
|
-
/* @__PURE__ */ jsx13("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx13(
|
|
2142
|
-
DialogPrimitive.Content,
|
|
2143
|
-
{
|
|
2144
|
-
ref,
|
|
2145
|
-
className: cn(
|
|
2146
|
-
"sofya-dialog-content relative flex w-full max-w-[680px] max-h-[calc(100vh-2rem)] outline-none",
|
|
2147
|
-
className
|
|
2148
|
-
),
|
|
2149
|
-
...props,
|
|
2150
|
-
children: /* @__PURE__ */ jsx13(
|
|
2151
|
-
Card,
|
|
2152
|
-
{
|
|
2153
|
-
variant,
|
|
2154
|
-
className: cn(
|
|
2155
|
-
"flex max-h-[inherit] min-h-0 w-full flex-col gap-6 overflow-y-auto overflow-x-hidden p-6",
|
|
2156
|
-
cardClassName
|
|
2157
|
-
),
|
|
2158
|
-
style: dialogCardStyle,
|
|
2159
|
-
children
|
|
2160
|
-
}
|
|
2161
|
-
)
|
|
2162
|
-
}
|
|
2163
|
-
) })
|
|
2164
|
-
] }) });
|
|
2165
|
-
}
|
|
2166
|
-
);
|
|
2167
|
-
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
2168
|
-
function DialogHeader({ className, children, ...props }) {
|
|
2169
|
-
const { showCloseButton } = React13.useContext(DialogInternalContext);
|
|
2170
|
-
return /* @__PURE__ */ jsxs6(
|
|
2171
|
-
"div",
|
|
2172
|
-
{
|
|
2173
|
-
className: cn("flex w-full items-start justify-between gap-4", className),
|
|
2174
|
-
...props,
|
|
2175
|
-
children: [
|
|
2176
|
-
/* @__PURE__ */ jsx13("div", { className: "flex min-w-0 flex-1 flex-col gap-2 text-left", children }),
|
|
2177
|
-
showCloseButton ? /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(
|
|
2178
|
-
Button,
|
|
2179
|
-
{
|
|
2180
|
-
type: "button",
|
|
2181
|
-
variant: "ghost",
|
|
2182
|
-
size: "icon",
|
|
2183
|
-
"aria-label": "Close",
|
|
2184
|
-
leftIcon: /* @__PURE__ */ jsx13(Icon, { name: "x", size: 18 }),
|
|
2185
|
-
className: "shrink-0 text-muted-foreground hover:text-foreground"
|
|
2186
|
-
}
|
|
2187
|
-
) }) : null
|
|
2188
|
-
]
|
|
2189
|
-
}
|
|
2190
|
-
);
|
|
2191
|
-
}
|
|
2192
|
-
function DialogBody({ className, ...props }) {
|
|
2193
|
-
return /* @__PURE__ */ jsx13(
|
|
2194
|
-
"div",
|
|
2195
|
-
{
|
|
2196
|
-
className: cn("flex flex-col gap-4", className),
|
|
2197
|
-
...props
|
|
2198
|
-
}
|
|
2199
|
-
);
|
|
2200
|
-
}
|
|
2201
|
-
function DialogFooter({ className, ...props }) {
|
|
2202
|
-
return /* @__PURE__ */ jsx13(
|
|
2203
|
-
"div",
|
|
2204
|
-
{
|
|
2205
|
-
className: cn("flex items-center justify-end gap-2", className),
|
|
2206
|
-
...props
|
|
2207
|
-
}
|
|
2208
|
-
);
|
|
2209
|
-
}
|
|
2210
|
-
var DialogCancel = React13.forwardRef(
|
|
2211
|
-
({ type = "button", variant = "ghost", ...props }, ref) => /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(Button, { ref, type, variant, ...props }) })
|
|
2212
|
-
);
|
|
2213
|
-
DialogCancel.displayName = "DialogCancel";
|
|
2214
|
-
var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
2215
|
-
DialogPrimitive.Title,
|
|
2216
|
-
{
|
|
2217
|
-
ref,
|
|
2218
|
-
className: cn("text-card-foreground", className),
|
|
2219
|
-
...props,
|
|
2220
|
-
children: renderTextContent(children, {
|
|
2221
|
-
as: "span",
|
|
2222
|
-
className: "block text-card-foreground",
|
|
2223
|
-
size: "h3"
|
|
2224
|
-
})
|
|
2225
|
-
}
|
|
2226
|
-
));
|
|
2227
|
-
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
2228
|
-
var DialogDescription = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
2229
|
-
DialogPrimitive.Description,
|
|
2230
|
-
{
|
|
2231
|
-
ref,
|
|
2232
|
-
className: cn("text-muted-foreground", className),
|
|
2233
|
-
...props,
|
|
2234
|
-
children: renderTextContent(children, {
|
|
2235
|
-
as: "span",
|
|
2236
|
-
className: "block text-muted-foreground",
|
|
2237
|
-
size: "body"
|
|
2238
|
-
})
|
|
2239
|
-
}
|
|
2240
|
-
));
|
|
2241
|
-
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
2242
|
-
|
|
2243
|
-
// src/components/empty.tsx
|
|
2244
|
-
import * as React14 from "react";
|
|
2245
|
-
import { cva as cva5 } from "class-variance-authority";
|
|
2246
|
-
import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2247
|
-
var emptyMediaVariantOptions = ["default", "icon"];
|
|
2248
|
-
var emptyMediaVariants = cva5(
|
|
2249
|
-
"inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
|
|
2250
|
-
{
|
|
2251
|
-
variants: {
|
|
2252
|
-
variant: {
|
|
2253
|
-
default: "[&_img]:max-w-full [&_svg]:shrink-0 [&_svg]:text-primary",
|
|
2254
|
-
icon: "h-16 w-16 rounded-full border border-primary/10 bg-primary/10 text-primary [&_svg]:h-7 [&_svg]:w-7 [&_svg]:shrink-0"
|
|
2255
|
-
}
|
|
2256
|
-
},
|
|
2257
|
-
defaultVariants: {
|
|
2258
|
-
variant: "default"
|
|
2259
|
-
}
|
|
2260
|
-
}
|
|
2261
|
-
);
|
|
2262
|
-
var EmptyMedia = React14.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
|
|
2263
|
-
return /* @__PURE__ */ jsx14("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
|
|
2264
|
-
});
|
|
2265
|
-
function EmptyHeader({ className, ...props }) {
|
|
2266
|
-
return /* @__PURE__ */ jsx14(
|
|
2267
|
-
"div",
|
|
2268
|
-
{
|
|
2269
|
-
className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
|
|
2270
|
-
...props
|
|
2271
|
-
}
|
|
2272
|
-
);
|
|
2273
|
-
}
|
|
2274
|
-
function EmptyTitle({ children, className, ...props }) {
|
|
2275
|
-
return /* @__PURE__ */ jsx14(
|
|
2276
|
-
"h2",
|
|
2277
|
-
{
|
|
2278
|
-
className: cn("text-foreground", className),
|
|
2279
|
-
...props,
|
|
2280
|
-
children: renderTextContent(children, {
|
|
2281
|
-
as: "span",
|
|
2282
|
-
className: "block text-foreground",
|
|
2283
|
-
size: "h4"
|
|
2284
|
-
})
|
|
2285
|
-
}
|
|
2286
|
-
);
|
|
2287
|
-
}
|
|
2288
|
-
function EmptyDescription({
|
|
2289
|
-
children,
|
|
2290
|
-
className,
|
|
2291
|
-
...props
|
|
2292
|
-
}) {
|
|
2293
|
-
return /* @__PURE__ */ jsx14(
|
|
2294
|
-
"p",
|
|
2295
|
-
{
|
|
2296
|
-
className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
|
|
2297
|
-
...props,
|
|
2298
|
-
children: renderTextContent(children, {
|
|
2299
|
-
as: "span",
|
|
2300
|
-
className: "inline-block whitespace-nowrap text-muted-foreground",
|
|
2301
|
-
size: "body"
|
|
2302
|
-
})
|
|
2303
|
-
}
|
|
2304
|
-
);
|
|
2305
|
-
}
|
|
2306
|
-
function EmptyContent({ children, className, ...props }) {
|
|
2307
|
-
return /* @__PURE__ */ jsx14(
|
|
2308
|
-
"div",
|
|
2309
|
-
{
|
|
2310
|
-
className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
|
|
2311
|
-
...props,
|
|
2312
|
-
children: renderTextContent(children, {
|
|
2313
|
-
as: "span"
|
|
2314
|
-
})
|
|
2315
|
-
}
|
|
2316
|
-
);
|
|
2317
|
-
}
|
|
2318
|
-
var Empty = React14.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
|
|
2319
|
-
const hasCustomChildren = React14.Children.count(children) > 0;
|
|
2320
|
-
return /* @__PURE__ */ jsx14(
|
|
2321
|
-
"div",
|
|
2322
|
-
{
|
|
2323
|
-
ref,
|
|
2324
|
-
className: cn(
|
|
2325
|
-
"flex min-h-[280px] w-full flex-col items-center justify-center gap-6 rounded-[28px] bg-gradient-to-b from-card via-card to-muted/45 px-6 py-10 text-center",
|
|
2326
|
-
className
|
|
2327
|
-
),
|
|
2328
|
-
...props,
|
|
2329
|
-
children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
2330
|
-
/* @__PURE__ */ jsxs7(EmptyHeader, { children: [
|
|
2331
|
-
media ?? /* @__PURE__ */ jsx14(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx14(Icon, { name: "folders", size: 28 }) }),
|
|
2332
|
-
/* @__PURE__ */ jsx14(EmptyTitle, { children: title ?? "Nada por aqui" }),
|
|
2333
|
-
/* @__PURE__ */ jsx14(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
|
|
2334
|
-
] }),
|
|
2335
|
-
content !== void 0 && content !== null ? /* @__PURE__ */ jsx14(EmptyContent, { children: content }) : null
|
|
2336
|
-
] })
|
|
2337
|
-
}
|
|
2338
|
-
);
|
|
2339
|
-
});
|
|
2340
|
-
Empty.displayName = "Empty";
|
|
2341
|
-
EmptyMedia.displayName = "EmptyMedia";
|
|
2342
|
-
EmptyHeader.displayName = "EmptyHeader";
|
|
2343
|
-
EmptyTitle.displayName = "EmptyTitle";
|
|
2344
|
-
EmptyDescription.displayName = "EmptyDescription";
|
|
2345
|
-
EmptyContent.displayName = "EmptyContent";
|
|
2198
|
+
// src/components/dropdown-search.tsx
|
|
2199
|
+
import * as React18 from "react";
|
|
2346
2200
|
|
|
2347
2201
|
// src/components/input.tsx
|
|
2348
|
-
import * as
|
|
2202
|
+
import * as React15 from "react";
|
|
2349
2203
|
import { REGEXP_ONLY_DIGITS as REGEXP_ONLY_DIGITS2 } from "input-otp";
|
|
2350
2204
|
|
|
2351
2205
|
// src/lib/field-shell.tsx
|
|
2352
|
-
import { jsx as
|
|
2206
|
+
import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2353
2207
|
function FieldLabel({
|
|
2354
2208
|
children,
|
|
2355
2209
|
className,
|
|
2356
2210
|
htmlFor,
|
|
2357
2211
|
textClassName = "block text-[color:var(--sofya-text-default)]",
|
|
2358
|
-
textSize = "
|
|
2212
|
+
textSize = "tiny",
|
|
2359
2213
|
textStyle = {
|
|
2360
2214
|
fontWeight: 500
|
|
2361
2215
|
}
|
|
@@ -2364,7 +2218,7 @@ function FieldLabel({
|
|
|
2364
2218
|
return null;
|
|
2365
2219
|
}
|
|
2366
2220
|
const Component = htmlFor ? "label" : "div";
|
|
2367
|
-
return /* @__PURE__ */
|
|
2221
|
+
return /* @__PURE__ */ jsx13(
|
|
2368
2222
|
Component,
|
|
2369
2223
|
{
|
|
2370
2224
|
className: cn("text-[color:var(--sofya-text-default)]", className),
|
|
@@ -2391,8 +2245,8 @@ function FieldShell({
|
|
|
2391
2245
|
if (!label && !containerClassName) {
|
|
2392
2246
|
return control;
|
|
2393
2247
|
}
|
|
2394
|
-
return /* @__PURE__ */
|
|
2395
|
-
label ? /* @__PURE__ */
|
|
2248
|
+
return /* @__PURE__ */ jsxs6("div", { className: cn("grid w-full gap-2", containerClassName), children: [
|
|
2249
|
+
label ? /* @__PURE__ */ jsx13(
|
|
2396
2250
|
FieldLabel,
|
|
2397
2251
|
{
|
|
2398
2252
|
className: labelClassName,
|
|
@@ -2408,7 +2262,7 @@ function FieldShell({
|
|
|
2408
2262
|
}
|
|
2409
2263
|
|
|
2410
2264
|
// src/components/input-upload.tsx
|
|
2411
|
-
import * as
|
|
2265
|
+
import * as React13 from "react";
|
|
2412
2266
|
import {
|
|
2413
2267
|
IconFileText,
|
|
2414
2268
|
IconPhoto,
|
|
@@ -2416,7 +2270,7 @@ import {
|
|
|
2416
2270
|
IconVideo
|
|
2417
2271
|
} from "@tabler/icons-react";
|
|
2418
2272
|
import { AnimatePresence, motion as motion2, useReducedMotion as useReducedMotion2 } from "motion/react";
|
|
2419
|
-
import { jsx as
|
|
2273
|
+
import { jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2420
2274
|
var uploadKindOptions = ["document", "image", "video"];
|
|
2421
2275
|
var uploadAcceptByKind = {
|
|
2422
2276
|
document: ".pdf,.doc,.docx,.txt,.rtf,.odt,.jpg,.jpeg,.png,.webp,.gif",
|
|
@@ -2510,7 +2364,7 @@ function resolveUploadFileVisualKind(file, fallbackKind) {
|
|
|
2510
2364
|
return "document";
|
|
2511
2365
|
}
|
|
2512
2366
|
function UploadGlyph({ className }) {
|
|
2513
|
-
return /* @__PURE__ */
|
|
2367
|
+
return /* @__PURE__ */ jsx14(
|
|
2514
2368
|
IconUpload,
|
|
2515
2369
|
{
|
|
2516
2370
|
"aria-hidden": "true",
|
|
@@ -2523,7 +2377,7 @@ function UploadFileTypeGlyph({
|
|
|
2523
2377
|
kind
|
|
2524
2378
|
}) {
|
|
2525
2379
|
if (kind === "image") {
|
|
2526
|
-
return /* @__PURE__ */
|
|
2380
|
+
return /* @__PURE__ */ jsx14(
|
|
2527
2381
|
IconPhoto,
|
|
2528
2382
|
{
|
|
2529
2383
|
"aria-hidden": "true",
|
|
@@ -2532,7 +2386,7 @@ function UploadFileTypeGlyph({
|
|
|
2532
2386
|
);
|
|
2533
2387
|
}
|
|
2534
2388
|
if (kind === "video") {
|
|
2535
|
-
return /* @__PURE__ */
|
|
2389
|
+
return /* @__PURE__ */ jsx14(
|
|
2536
2390
|
IconVideo,
|
|
2537
2391
|
{
|
|
2538
2392
|
"aria-hidden": "true",
|
|
@@ -2540,7 +2394,7 @@ function UploadFileTypeGlyph({
|
|
|
2540
2394
|
}
|
|
2541
2395
|
);
|
|
2542
2396
|
}
|
|
2543
|
-
return /* @__PURE__ */
|
|
2397
|
+
return /* @__PURE__ */ jsx14(
|
|
2544
2398
|
IconFileText,
|
|
2545
2399
|
{
|
|
2546
2400
|
"aria-hidden": "true",
|
|
@@ -2548,7 +2402,7 @@ function UploadFileTypeGlyph({
|
|
|
2548
2402
|
}
|
|
2549
2403
|
);
|
|
2550
2404
|
}
|
|
2551
|
-
var UploadInputControl =
|
|
2405
|
+
var UploadInputControl = React13.forwardRef(function UploadInputControl2({
|
|
2552
2406
|
accept,
|
|
2553
2407
|
"aria-label": ariaLabel,
|
|
2554
2408
|
className,
|
|
@@ -2562,17 +2416,17 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2562
2416
|
resolvedId,
|
|
2563
2417
|
...uploadProps
|
|
2564
2418
|
}, ref) {
|
|
2565
|
-
const inputRef =
|
|
2566
|
-
const [isDragActive, setIsDragActive] =
|
|
2567
|
-
const [selectedFiles, setSelectedFiles] =
|
|
2419
|
+
const inputRef = React13.useRef(null);
|
|
2420
|
+
const [isDragActive, setIsDragActive] = React13.useState(false);
|
|
2421
|
+
const [selectedFiles, setSelectedFiles] = React13.useState([]);
|
|
2568
2422
|
const resolvedMultiple = multiple ?? true;
|
|
2569
2423
|
const prefersReducedMotion = useReducedMotion2();
|
|
2570
|
-
|
|
2424
|
+
React13.useImperativeHandle(ref, () => inputRef.current);
|
|
2571
2425
|
const resolvedAccept = accept ?? uploadAcceptByKind[uploadKind];
|
|
2572
2426
|
const resolvedAriaLabel = ariaLabel ?? uploadAriaLabelByKind[uploadKind];
|
|
2573
2427
|
const resolvedTitle = uploadTitle ?? "Arraste arquivos aqui ou clique para selecionar";
|
|
2574
2428
|
const resolvedDescription = uploadDescription ?? uploadDescriptionByKind[uploadKind];
|
|
2575
|
-
const syncSelectedFiles =
|
|
2429
|
+
const syncSelectedFiles = React13.useCallback(
|
|
2576
2430
|
(files) => {
|
|
2577
2431
|
const normalizedFiles = resolvedMultiple ? files : files.slice(0, 1);
|
|
2578
2432
|
setSelectedFiles(normalizedFiles);
|
|
@@ -2580,7 +2434,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2580
2434
|
},
|
|
2581
2435
|
[onFilesChange, resolvedMultiple]
|
|
2582
2436
|
);
|
|
2583
|
-
const applyFilesToInput =
|
|
2437
|
+
const applyFilesToInput = React13.useCallback((files) => {
|
|
2584
2438
|
const inputElement = inputRef.current;
|
|
2585
2439
|
if (!inputElement || typeof DataTransfer === "undefined") {
|
|
2586
2440
|
return false;
|
|
@@ -2599,7 +2453,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2599
2453
|
return false;
|
|
2600
2454
|
}
|
|
2601
2455
|
}, []);
|
|
2602
|
-
const handleInputChange =
|
|
2456
|
+
const handleInputChange = React13.useCallback(
|
|
2603
2457
|
(event) => {
|
|
2604
2458
|
const nextFiles = mergeUploadFiles(
|
|
2605
2459
|
selectedFiles,
|
|
@@ -2618,12 +2472,12 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2618
2472
|
syncSelectedFiles
|
|
2619
2473
|
]
|
|
2620
2474
|
);
|
|
2621
|
-
const openPicker =
|
|
2475
|
+
const openPicker = React13.useCallback(() => {
|
|
2622
2476
|
if (!disabled) {
|
|
2623
2477
|
inputRef.current?.click();
|
|
2624
2478
|
}
|
|
2625
2479
|
}, [disabled]);
|
|
2626
|
-
const handleKeyDown =
|
|
2480
|
+
const handleKeyDown = React13.useCallback(
|
|
2627
2481
|
(event) => {
|
|
2628
2482
|
if (disabled) {
|
|
2629
2483
|
return;
|
|
@@ -2635,7 +2489,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2635
2489
|
},
|
|
2636
2490
|
[disabled, openPicker]
|
|
2637
2491
|
);
|
|
2638
|
-
const handleDragEnter =
|
|
2492
|
+
const handleDragEnter = React13.useCallback(
|
|
2639
2493
|
(event) => {
|
|
2640
2494
|
event.preventDefault();
|
|
2641
2495
|
if (!disabled) {
|
|
@@ -2644,7 +2498,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2644
2498
|
},
|
|
2645
2499
|
[disabled]
|
|
2646
2500
|
);
|
|
2647
|
-
const handleDragLeave =
|
|
2501
|
+
const handleDragLeave = React13.useCallback(
|
|
2648
2502
|
(event) => {
|
|
2649
2503
|
if (disabled) {
|
|
2650
2504
|
return;
|
|
@@ -2657,7 +2511,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2657
2511
|
},
|
|
2658
2512
|
[disabled]
|
|
2659
2513
|
);
|
|
2660
|
-
const handleDragOver =
|
|
2514
|
+
const handleDragOver = React13.useCallback(
|
|
2661
2515
|
(event) => {
|
|
2662
2516
|
event.preventDefault();
|
|
2663
2517
|
if (disabled) {
|
|
@@ -2668,7 +2522,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2668
2522
|
},
|
|
2669
2523
|
[disabled]
|
|
2670
2524
|
);
|
|
2671
|
-
const handleDrop =
|
|
2525
|
+
const handleDrop = React13.useCallback(
|
|
2672
2526
|
(event) => {
|
|
2673
2527
|
event.preventDefault();
|
|
2674
2528
|
if (disabled) {
|
|
@@ -2701,7 +2555,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2701
2555
|
syncSelectedFiles
|
|
2702
2556
|
]
|
|
2703
2557
|
);
|
|
2704
|
-
const handleRemoveFile =
|
|
2558
|
+
const handleRemoveFile = React13.useCallback(
|
|
2705
2559
|
(fileIndex) => {
|
|
2706
2560
|
if (disabled) {
|
|
2707
2561
|
return;
|
|
@@ -2712,8 +2566,8 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2712
2566
|
},
|
|
2713
2567
|
[applyFilesToInput, disabled, selectedFiles, syncSelectedFiles]
|
|
2714
2568
|
);
|
|
2715
|
-
return /* @__PURE__ */
|
|
2716
|
-
/* @__PURE__ */
|
|
2569
|
+
return /* @__PURE__ */ jsxs7("div", { className: "grid w-full gap-4", children: [
|
|
2570
|
+
/* @__PURE__ */ jsx14(
|
|
2717
2571
|
"input",
|
|
2718
2572
|
{
|
|
2719
2573
|
...uploadProps,
|
|
@@ -2728,7 +2582,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2728
2582
|
onChange: handleInputChange
|
|
2729
2583
|
}
|
|
2730
2584
|
),
|
|
2731
|
-
/* @__PURE__ */
|
|
2585
|
+
/* @__PURE__ */ jsxs7(
|
|
2732
2586
|
"label",
|
|
2733
2587
|
{
|
|
2734
2588
|
"aria-disabled": disabled || void 0,
|
|
@@ -2748,16 +2602,16 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2748
2602
|
onDrop: handleDrop,
|
|
2749
2603
|
onKeyDown: handleKeyDown,
|
|
2750
2604
|
children: [
|
|
2751
|
-
/* @__PURE__ */
|
|
2752
|
-
/* @__PURE__ */
|
|
2605
|
+
/* @__PURE__ */ jsx14("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ jsx14(UploadGlyph, { className: "size-[18px]" }) }),
|
|
2606
|
+
/* @__PURE__ */ jsx14("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
|
|
2753
2607
|
as: "span",
|
|
2754
2608
|
className: "block text-[color:var(--sofya-text-default)]",
|
|
2755
|
-
size: "
|
|
2609
|
+
size: "tiny",
|
|
2756
2610
|
style: {
|
|
2757
2611
|
fontWeight: 500
|
|
2758
2612
|
}
|
|
2759
2613
|
}) }),
|
|
2760
|
-
resolvedDescription ? /* @__PURE__ */
|
|
2614
|
+
resolvedDescription ? /* @__PURE__ */ jsx14("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
|
|
2761
2615
|
as: "span",
|
|
2762
2616
|
className: "block text-[color:var(--sofya-text-subtle)]",
|
|
2763
2617
|
size: "extra-tiny"
|
|
@@ -2765,9 +2619,9 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2765
2619
|
]
|
|
2766
2620
|
}
|
|
2767
2621
|
),
|
|
2768
|
-
/* @__PURE__ */
|
|
2622
|
+
/* @__PURE__ */ jsx14("div", { role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ jsx14(AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
|
|
2769
2623
|
const fileKey = resolveUploadFileSignature(file);
|
|
2770
|
-
return /* @__PURE__ */
|
|
2624
|
+
return /* @__PURE__ */ jsx14(
|
|
2771
2625
|
motion2.div,
|
|
2772
2626
|
{
|
|
2773
2627
|
role: "listitem",
|
|
@@ -2776,24 +2630,24 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2776
2630
|
animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
|
|
2777
2631
|
exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
|
|
2778
2632
|
transition: uploadListItemTransition,
|
|
2779
|
-
children: /* @__PURE__ */
|
|
2780
|
-
/* @__PURE__ */
|
|
2633
|
+
children: /* @__PURE__ */ jsxs7(Card, { variant: "card", className: "flex items-center gap-4 p-4", children: [
|
|
2634
|
+
/* @__PURE__ */ jsx14("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ jsx14(
|
|
2781
2635
|
UploadFileTypeGlyph,
|
|
2782
2636
|
{
|
|
2783
2637
|
className: "size-[18px]",
|
|
2784
2638
|
kind: resolveUploadFileVisualKind(file, uploadKind)
|
|
2785
2639
|
}
|
|
2786
2640
|
) }),
|
|
2787
|
-
/* @__PURE__ */
|
|
2788
|
-
/* @__PURE__ */
|
|
2641
|
+
/* @__PURE__ */ jsxs7("div", { className: "min-w-0 flex-1", children: [
|
|
2642
|
+
/* @__PURE__ */ jsx14("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
|
|
2789
2643
|
as: "span",
|
|
2790
2644
|
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
2791
|
-
size: "
|
|
2645
|
+
size: "tiny",
|
|
2792
2646
|
style: {
|
|
2793
2647
|
fontWeight: 500
|
|
2794
2648
|
}
|
|
2795
2649
|
}) }),
|
|
2796
|
-
/* @__PURE__ */
|
|
2650
|
+
/* @__PURE__ */ jsx14("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
|
|
2797
2651
|
`${resolveUploadFileBadge(
|
|
2798
2652
|
file
|
|
2799
2653
|
)} \xB7 ${formatUploadFileSize(file.size)}`,
|
|
@@ -2804,7 +2658,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2804
2658
|
}
|
|
2805
2659
|
) })
|
|
2806
2660
|
] }),
|
|
2807
|
-
/* @__PURE__ */
|
|
2661
|
+
/* @__PURE__ */ jsx14(
|
|
2808
2662
|
"button",
|
|
2809
2663
|
{
|
|
2810
2664
|
"aria-label": `Remover ${file.name}`,
|
|
@@ -2816,7 +2670,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2816
2670
|
event.stopPropagation();
|
|
2817
2671
|
handleRemoveFile(index);
|
|
2818
2672
|
},
|
|
2819
|
-
children: /* @__PURE__ */
|
|
2673
|
+
children: /* @__PURE__ */ jsx14(
|
|
2820
2674
|
Icon,
|
|
2821
2675
|
{
|
|
2822
2676
|
"aria-hidden": "true",
|
|
@@ -2837,15 +2691,15 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2837
2691
|
UploadInputControl.displayName = "UploadInputControl";
|
|
2838
2692
|
|
|
2839
2693
|
// src/components/input-otp.tsx
|
|
2840
|
-
import * as
|
|
2694
|
+
import * as React14 from "react";
|
|
2841
2695
|
import {
|
|
2842
2696
|
OTPInput,
|
|
2843
2697
|
OTPInputContext,
|
|
2844
2698
|
REGEXP_ONLY_DIGITS
|
|
2845
2699
|
} from "input-otp";
|
|
2846
|
-
import { jsx as
|
|
2847
|
-
var InputOTP =
|
|
2848
|
-
return /* @__PURE__ */
|
|
2700
|
+
import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2701
|
+
var InputOTP = React14.forwardRef(({ className, containerClassName, ...props }, ref) => {
|
|
2702
|
+
return /* @__PURE__ */ jsx15(
|
|
2849
2703
|
OTPInput,
|
|
2850
2704
|
{
|
|
2851
2705
|
ref,
|
|
@@ -2859,8 +2713,8 @@ var InputOTP = React16.forwardRef(({ className, containerClassName, ...props },
|
|
|
2859
2713
|
);
|
|
2860
2714
|
});
|
|
2861
2715
|
InputOTP.displayName = "InputOTP";
|
|
2862
|
-
var InputOTPGroup =
|
|
2863
|
-
return /* @__PURE__ */
|
|
2716
|
+
var InputOTPGroup = React14.forwardRef(({ className, ...props }, ref) => {
|
|
2717
|
+
return /* @__PURE__ */ jsx15(
|
|
2864
2718
|
"div",
|
|
2865
2719
|
{
|
|
2866
2720
|
ref,
|
|
@@ -2873,12 +2727,12 @@ var InputOTPGroup = React16.forwardRef(({ className, ...props }, ref) => {
|
|
|
2873
2727
|
);
|
|
2874
2728
|
});
|
|
2875
2729
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
2876
|
-
var InputOTPSlot =
|
|
2730
|
+
var InputOTPSlot = React14.forwardRef(
|
|
2877
2731
|
({ className, index, ...props }, ref) => {
|
|
2878
|
-
const otpContext =
|
|
2732
|
+
const otpContext = React14.useContext(OTPInputContext);
|
|
2879
2733
|
const slot = otpContext.slots[index];
|
|
2880
2734
|
if (!slot) {
|
|
2881
|
-
return /* @__PURE__ */
|
|
2735
|
+
return /* @__PURE__ */ jsx15(
|
|
2882
2736
|
"div",
|
|
2883
2737
|
{
|
|
2884
2738
|
ref,
|
|
@@ -2890,7 +2744,7 @@ var InputOTPSlot = React16.forwardRef(
|
|
|
2890
2744
|
}
|
|
2891
2745
|
);
|
|
2892
2746
|
}
|
|
2893
|
-
return /* @__PURE__ */
|
|
2747
|
+
return /* @__PURE__ */ jsxs8(
|
|
2894
2748
|
"div",
|
|
2895
2749
|
{
|
|
2896
2750
|
ref,
|
|
@@ -2902,15 +2756,15 @@ var InputOTPSlot = React16.forwardRef(
|
|
|
2902
2756
|
...props,
|
|
2903
2757
|
children: [
|
|
2904
2758
|
slot.char ?? null,
|
|
2905
|
-
slot.hasFakeCaret ? /* @__PURE__ */
|
|
2759
|
+
slot.hasFakeCaret ? /* @__PURE__ */ jsx15("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx15("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
|
|
2906
2760
|
]
|
|
2907
2761
|
}
|
|
2908
2762
|
);
|
|
2909
2763
|
}
|
|
2910
2764
|
);
|
|
2911
2765
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
2912
|
-
var InputOTPSeparator =
|
|
2913
|
-
return /* @__PURE__ */
|
|
2766
|
+
var InputOTPSeparator = React14.forwardRef(({ className, ...props }, ref) => {
|
|
2767
|
+
return /* @__PURE__ */ jsx15(
|
|
2914
2768
|
"div",
|
|
2915
2769
|
{
|
|
2916
2770
|
ref,
|
|
@@ -2920,22 +2774,22 @@ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
|
|
|
2920
2774
|
className
|
|
2921
2775
|
),
|
|
2922
2776
|
...props,
|
|
2923
|
-
children: /* @__PURE__ */
|
|
2777
|
+
children: /* @__PURE__ */ jsx15("span", { "aria-hidden": "true", children: "." })
|
|
2924
2778
|
}
|
|
2925
2779
|
);
|
|
2926
2780
|
});
|
|
2927
2781
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
2928
2782
|
|
|
2929
2783
|
// src/components/input.tsx
|
|
2930
|
-
import { Fragment as
|
|
2784
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2931
2785
|
var inputVariantOptions = [
|
|
2932
2786
|
"default",
|
|
2933
2787
|
"search",
|
|
2934
2788
|
"otp",
|
|
2935
2789
|
"upload"
|
|
2936
2790
|
];
|
|
2937
|
-
var Input =
|
|
2938
|
-
const generatedId =
|
|
2791
|
+
var Input = React15.forwardRef((props, ref) => {
|
|
2792
|
+
const generatedId = React15.useId();
|
|
2939
2793
|
const resolvedId = props.id ?? generatedId;
|
|
2940
2794
|
const variant = props.variant ?? "default";
|
|
2941
2795
|
if (variant === "otp") {
|
|
@@ -2963,7 +2817,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
2963
2817
|
);
|
|
2964
2818
|
const hasTrailingGroup = resolvedSplitIndex < resolvedLength;
|
|
2965
2819
|
const otpAriaLabel = otpProps["aria-label"] ?? "Verification code";
|
|
2966
|
-
const otpControl = /* @__PURE__ */
|
|
2820
|
+
const otpControl = /* @__PURE__ */ jsxs9(
|
|
2967
2821
|
InputOTP,
|
|
2968
2822
|
{
|
|
2969
2823
|
ref,
|
|
@@ -2976,7 +2830,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
2976
2830
|
containerClassName: className2,
|
|
2977
2831
|
...otpProps,
|
|
2978
2832
|
children: [
|
|
2979
|
-
/* @__PURE__ */
|
|
2833
|
+
/* @__PURE__ */ jsx16(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ jsx16(
|
|
2980
2834
|
InputOTPSlot,
|
|
2981
2835
|
{
|
|
2982
2836
|
className: otpSlotClassName,
|
|
@@ -2984,10 +2838,10 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
2984
2838
|
},
|
|
2985
2839
|
`otp-leading-${index}`
|
|
2986
2840
|
)) }),
|
|
2987
|
-
hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */
|
|
2988
|
-
hasTrailingGroup ? /* @__PURE__ */
|
|
2841
|
+
hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ jsx16(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
|
|
2842
|
+
hasTrailingGroup ? /* @__PURE__ */ jsx16(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
|
|
2989
2843
|
{ length: resolvedLength - resolvedSplitIndex },
|
|
2990
|
-
(_, index) => /* @__PURE__ */
|
|
2844
|
+
(_, index) => /* @__PURE__ */ jsx16(
|
|
2991
2845
|
InputOTPSlot,
|
|
2992
2846
|
{
|
|
2993
2847
|
className: otpSlotClassName,
|
|
@@ -2999,7 +2853,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
2999
2853
|
]
|
|
3000
2854
|
}
|
|
3001
2855
|
);
|
|
3002
|
-
return /* @__PURE__ */
|
|
2856
|
+
return /* @__PURE__ */ jsx16(
|
|
3003
2857
|
FieldShell,
|
|
3004
2858
|
{
|
|
3005
2859
|
containerClassName: containerClassName2,
|
|
@@ -3018,7 +2872,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3018
2872
|
variant: _variant2,
|
|
3019
2873
|
...uploadProps
|
|
3020
2874
|
} = props;
|
|
3021
|
-
const uploadControl = /* @__PURE__ */
|
|
2875
|
+
const uploadControl = /* @__PURE__ */ jsx16(
|
|
3022
2876
|
UploadInputControl,
|
|
3023
2877
|
{
|
|
3024
2878
|
...uploadProps,
|
|
@@ -3026,22 +2880,22 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3026
2880
|
resolvedId
|
|
3027
2881
|
}
|
|
3028
2882
|
);
|
|
3029
|
-
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */
|
|
2883
|
+
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3030
2884
|
renderTextContent(label2, {
|
|
3031
2885
|
as: "span",
|
|
3032
2886
|
className: "text-[color:var(--sofya-text-default)]",
|
|
3033
|
-
size: "
|
|
2887
|
+
size: "tiny",
|
|
3034
2888
|
style: {
|
|
3035
2889
|
fontWeight: 700
|
|
3036
2890
|
}
|
|
3037
2891
|
}),
|
|
3038
|
-
uploadOptionalLabel ? /* @__PURE__ */
|
|
2892
|
+
uploadOptionalLabel ? /* @__PURE__ */ jsx16("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(uploadOptionalLabel, {
|
|
3039
2893
|
as: "span",
|
|
3040
2894
|
className: "text-[color:var(--sofya-text-subtle)]",
|
|
3041
2895
|
size: "tiny"
|
|
3042
2896
|
}) }) : null
|
|
3043
2897
|
] }) : void 0;
|
|
3044
|
-
return /* @__PURE__ */
|
|
2898
|
+
return /* @__PURE__ */ jsx16(
|
|
3045
2899
|
FieldShell,
|
|
3046
2900
|
{
|
|
3047
2901
|
containerClassName: containerClassName2,
|
|
@@ -3064,8 +2918,8 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3064
2918
|
const isSearch = variant === "search";
|
|
3065
2919
|
const resolvedType = type ?? (isSearch ? "search" : void 0);
|
|
3066
2920
|
const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
|
|
3067
|
-
const nativeControl = isSearch ? /* @__PURE__ */
|
|
3068
|
-
/* @__PURE__ */
|
|
2921
|
+
const nativeControl = isSearch ? /* @__PURE__ */ jsxs9("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: [
|
|
2922
|
+
/* @__PURE__ */ jsx16(
|
|
3069
2923
|
Icon,
|
|
3070
2924
|
{
|
|
3071
2925
|
"aria-hidden": "true",
|
|
@@ -3074,7 +2928,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3074
2928
|
size: 32
|
|
3075
2929
|
}
|
|
3076
2930
|
),
|
|
3077
|
-
/* @__PURE__ */
|
|
2931
|
+
/* @__PURE__ */ jsx16(
|
|
3078
2932
|
"input",
|
|
3079
2933
|
{
|
|
3080
2934
|
id: resolvedId,
|
|
@@ -3090,39 +2944,587 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3090
2944
|
placeholder: nativeProps.placeholder ?? "Search"
|
|
3091
2945
|
}
|
|
3092
2946
|
)
|
|
3093
|
-
] }) : /* @__PURE__ */
|
|
2947
|
+
] }) : /* @__PURE__ */ jsx16(
|
|
3094
2948
|
"input",
|
|
3095
2949
|
{
|
|
3096
|
-
id: resolvedId,
|
|
2950
|
+
id: resolvedId,
|
|
2951
|
+
ref,
|
|
2952
|
+
type: resolvedType,
|
|
2953
|
+
className: cn(
|
|
2954
|
+
"flex h-10 w-full rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)] 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",
|
|
2955
|
+
className
|
|
2956
|
+
),
|
|
2957
|
+
...nativeProps,
|
|
2958
|
+
"aria-label": ariaLabel
|
|
2959
|
+
}
|
|
2960
|
+
);
|
|
2961
|
+
return /* @__PURE__ */ jsx16(
|
|
2962
|
+
FieldShell,
|
|
2963
|
+
{
|
|
2964
|
+
containerClassName,
|
|
2965
|
+
control: nativeControl,
|
|
2966
|
+
label: isSearch ? void 0 : label,
|
|
2967
|
+
labelClassName: isSearch ? void 0 : labelClassName,
|
|
2968
|
+
labelHtmlFor: isSearch ? void 0 : resolvedId
|
|
2969
|
+
}
|
|
2970
|
+
);
|
|
2971
|
+
});
|
|
2972
|
+
Input.displayName = "Input";
|
|
2973
|
+
|
|
2974
|
+
// src/components/popover.tsx
|
|
2975
|
+
import * as React16 from "react";
|
|
2976
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
2977
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
2978
|
+
var Popover = PopoverPrimitive.Root;
|
|
2979
|
+
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
2980
|
+
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
2981
|
+
var PopoverPortal = PopoverPrimitive.Portal;
|
|
2982
|
+
var PopoverClose = PopoverPrimitive.Close;
|
|
2983
|
+
var PopoverContent = React16.forwardRef(function PopoverContent2({
|
|
2984
|
+
align = "center",
|
|
2985
|
+
className,
|
|
2986
|
+
collisionPadding = 8,
|
|
2987
|
+
sideOffset = 8,
|
|
2988
|
+
...props
|
|
2989
|
+
}, ref) {
|
|
2990
|
+
return /* @__PURE__ */ jsx17(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx17(
|
|
2991
|
+
PopoverPrimitive.Content,
|
|
2992
|
+
{
|
|
2993
|
+
ref,
|
|
2994
|
+
align,
|
|
2995
|
+
collisionPadding,
|
|
2996
|
+
sideOffset,
|
|
2997
|
+
"data-slot": "popover-content",
|
|
2998
|
+
className: cn(
|
|
2999
|
+
"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",
|
|
3000
|
+
className
|
|
3001
|
+
),
|
|
3002
|
+
...props
|
|
3003
|
+
}
|
|
3004
|
+
) });
|
|
3005
|
+
});
|
|
3006
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
3007
|
+
var PopoverTitle = React16.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
|
|
3008
|
+
return /* @__PURE__ */ jsx17(
|
|
3009
|
+
"h4",
|
|
3010
|
+
{
|
|
3011
|
+
ref,
|
|
3012
|
+
"data-slot": "popover-title",
|
|
3013
|
+
className: cn("text-[hsl(var(--sofya-popover-foreground))]", className),
|
|
3014
|
+
...props,
|
|
3015
|
+
children: renderTextContent(children, {
|
|
3016
|
+
as: "span",
|
|
3017
|
+
className: "block text-[hsl(var(--sofya-popover-foreground))]",
|
|
3018
|
+
size: "h4"
|
|
3019
|
+
})
|
|
3020
|
+
}
|
|
3021
|
+
);
|
|
3022
|
+
});
|
|
3023
|
+
PopoverTitle.displayName = "PopoverTitle";
|
|
3024
|
+
var PopoverDescription = React16.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
|
|
3025
|
+
return /* @__PURE__ */ jsx17(
|
|
3026
|
+
"p",
|
|
3027
|
+
{
|
|
3028
|
+
ref,
|
|
3029
|
+
"data-slot": "popover-description",
|
|
3030
|
+
className: cn("text-muted-foreground", className),
|
|
3031
|
+
...props,
|
|
3032
|
+
children: renderTextContent(children, {
|
|
3033
|
+
as: "span",
|
|
3034
|
+
className: "block text-muted-foreground",
|
|
3035
|
+
size: "body"
|
|
3036
|
+
})
|
|
3037
|
+
}
|
|
3038
|
+
);
|
|
3039
|
+
});
|
|
3040
|
+
PopoverDescription.displayName = "PopoverDescription";
|
|
3041
|
+
|
|
3042
|
+
// src/components/spinner.tsx
|
|
3043
|
+
import * as React17 from "react";
|
|
3044
|
+
import { IconLoader2 as IconLoader22 } from "@tabler/icons-react";
|
|
3045
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
3046
|
+
var spinnerSizeOptions = ["sm", "default", "lg"];
|
|
3047
|
+
var Spinner = React17.forwardRef(function Spinner2({
|
|
3048
|
+
"aria-label": ariaLabelProp,
|
|
3049
|
+
"aria-labelledby": ariaLabelledby,
|
|
3050
|
+
className,
|
|
3051
|
+
role = "status",
|
|
3052
|
+
size = "default",
|
|
3053
|
+
...props
|
|
3054
|
+
}, ref) {
|
|
3055
|
+
const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
|
|
3056
|
+
return /* @__PURE__ */ jsx18(
|
|
3057
|
+
IconLoader22,
|
|
3058
|
+
{
|
|
3059
|
+
ref,
|
|
3060
|
+
"data-size": size,
|
|
3061
|
+
"data-slot": "spinner",
|
|
3062
|
+
role,
|
|
3063
|
+
"aria-label": ariaLabel,
|
|
3064
|
+
"aria-labelledby": ariaLabelledby,
|
|
3065
|
+
className: cn(
|
|
3066
|
+
"shrink-0 animate-spin text-primary data-[size=sm]:h-3.5 data-[size=sm]:w-3.5 data-[size=default]:h-4 data-[size=default]:w-4 data-[size=lg]:h-6 data-[size=lg]:w-6",
|
|
3067
|
+
className
|
|
3068
|
+
),
|
|
3069
|
+
...props
|
|
3070
|
+
}
|
|
3071
|
+
);
|
|
3072
|
+
});
|
|
3073
|
+
Spinner.displayName = "Spinner";
|
|
3074
|
+
|
|
3075
|
+
// src/components/dropdown-search.tsx
|
|
3076
|
+
import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3077
|
+
var DropdownSearch = React18.forwardRef(
|
|
3078
|
+
function DropdownSearch2({
|
|
3079
|
+
className,
|
|
3080
|
+
containerClassName,
|
|
3081
|
+
defaultQuery = "",
|
|
3082
|
+
defaultValue,
|
|
3083
|
+
disabled,
|
|
3084
|
+
emptyMessage = "No results found",
|
|
3085
|
+
label,
|
|
3086
|
+
labelClassName,
|
|
3087
|
+
loading,
|
|
3088
|
+
onChange,
|
|
3089
|
+
onQueryChange,
|
|
3090
|
+
options = [],
|
|
3091
|
+
placeholder = "Search...",
|
|
3092
|
+
query: queryProp,
|
|
3093
|
+
value: valueProp
|
|
3094
|
+
}, ref) {
|
|
3095
|
+
const listboxId = React18.useId();
|
|
3096
|
+
const [open, setOpen] = React18.useState(false);
|
|
3097
|
+
const [query, setQuery] = useControllableState({
|
|
3098
|
+
defaultValue: defaultQuery,
|
|
3099
|
+
onChange: onQueryChange,
|
|
3100
|
+
value: queryProp
|
|
3101
|
+
});
|
|
3102
|
+
const [value, setValue] = useControllableState({
|
|
3103
|
+
defaultValue,
|
|
3104
|
+
onChange,
|
|
3105
|
+
value: valueProp
|
|
3106
|
+
});
|
|
3107
|
+
const inputRef = React18.useRef(null);
|
|
3108
|
+
const listRef = React18.useRef(null);
|
|
3109
|
+
const setInputRef = React18.useCallback(
|
|
3110
|
+
(node) => {
|
|
3111
|
+
inputRef.current = node;
|
|
3112
|
+
if (typeof ref === "function") {
|
|
3113
|
+
ref(node);
|
|
3114
|
+
} else if (ref) {
|
|
3115
|
+
ref.current = node;
|
|
3116
|
+
}
|
|
3117
|
+
},
|
|
3118
|
+
[ref]
|
|
3119
|
+
);
|
|
3120
|
+
function handleInputChange(e) {
|
|
3121
|
+
setQuery(e.target.value);
|
|
3122
|
+
setOpen(true);
|
|
3123
|
+
}
|
|
3124
|
+
function handleInputFocus() {
|
|
3125
|
+
setOpen(true);
|
|
3126
|
+
}
|
|
3127
|
+
function handleInputKeyDown(e) {
|
|
3128
|
+
if (e.key === "ArrowDown") {
|
|
3129
|
+
e.preventDefault();
|
|
3130
|
+
listRef.current?.querySelector(
|
|
3131
|
+
"[data-dropdown-search-item]:not([disabled])"
|
|
3132
|
+
)?.focus();
|
|
3133
|
+
}
|
|
3134
|
+
if (e.key === "Escape") {
|
|
3135
|
+
setOpen(false);
|
|
3136
|
+
}
|
|
3137
|
+
}
|
|
3138
|
+
function handleItemKeyDown(e, option) {
|
|
3139
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
3140
|
+
e.preventDefault();
|
|
3141
|
+
handleSelect(option);
|
|
3142
|
+
return;
|
|
3143
|
+
}
|
|
3144
|
+
if (e.key === "ArrowDown") {
|
|
3145
|
+
e.preventDefault();
|
|
3146
|
+
e.currentTarget.closest("li")?.nextElementSibling?.querySelector("[data-dropdown-search-item]")?.focus();
|
|
3147
|
+
return;
|
|
3148
|
+
}
|
|
3149
|
+
if (e.key === "ArrowUp") {
|
|
3150
|
+
e.preventDefault();
|
|
3151
|
+
const prevLi = e.currentTarget.closest("li")?.previousElementSibling;
|
|
3152
|
+
if (prevLi) {
|
|
3153
|
+
prevLi.querySelector("[data-dropdown-search-item]")?.focus();
|
|
3154
|
+
} else {
|
|
3155
|
+
inputRef.current?.focus();
|
|
3156
|
+
}
|
|
3157
|
+
return;
|
|
3158
|
+
}
|
|
3159
|
+
if (e.key === "Escape") {
|
|
3160
|
+
setOpen(false);
|
|
3161
|
+
inputRef.current?.focus();
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
function handleSelect(option) {
|
|
3165
|
+
if (option.disabled) return;
|
|
3166
|
+
setValue(option.value);
|
|
3167
|
+
setQuery(option.label);
|
|
3168
|
+
setOpen(false);
|
|
3169
|
+
}
|
|
3170
|
+
return /* @__PURE__ */ jsxs10(Popover, { open, onOpenChange: setOpen, children: [
|
|
3171
|
+
/* @__PURE__ */ jsx19(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsx19("div", { className: cn("w-full", containerClassName), children: /* @__PURE__ */ jsx19(
|
|
3172
|
+
Input,
|
|
3173
|
+
{
|
|
3174
|
+
ref: setInputRef,
|
|
3175
|
+
"aria-autocomplete": "list",
|
|
3176
|
+
"aria-controls": open ? listboxId : void 0,
|
|
3177
|
+
"aria-expanded": open,
|
|
3178
|
+
"aria-haspopup": "listbox",
|
|
3179
|
+
autoComplete: "off",
|
|
3180
|
+
className,
|
|
3181
|
+
disabled,
|
|
3182
|
+
label,
|
|
3183
|
+
labelClassName,
|
|
3184
|
+
placeholder,
|
|
3185
|
+
role: "combobox",
|
|
3186
|
+
value: query ?? "",
|
|
3187
|
+
onChange: handleInputChange,
|
|
3188
|
+
onFocus: handleInputFocus,
|
|
3189
|
+
onKeyDown: handleInputKeyDown
|
|
3190
|
+
}
|
|
3191
|
+
) }) }),
|
|
3192
|
+
/* @__PURE__ */ jsx19(
|
|
3193
|
+
PopoverContent,
|
|
3194
|
+
{
|
|
3195
|
+
align: "start",
|
|
3196
|
+
className: "w-[var(--radix-popover-trigger-width)] p-1",
|
|
3197
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
3198
|
+
onInteractOutside: (e) => {
|
|
3199
|
+
if (inputRef.current?.closest("div")?.contains(e.target)) {
|
|
3200
|
+
e.preventDefault();
|
|
3201
|
+
}
|
|
3202
|
+
},
|
|
3203
|
+
children: loading ? /* @__PURE__ */ jsx19("div", { className: "flex items-center justify-center py-4", children: /* @__PURE__ */ jsx19(Spinner, { size: "sm" }) }) : options.length === 0 ? /* @__PURE__ */ jsx19("div", { className: "px-3 py-4 text-center", children: /* @__PURE__ */ jsx19(
|
|
3204
|
+
Text,
|
|
3205
|
+
{
|
|
3206
|
+
as: "span",
|
|
3207
|
+
size: "tiny",
|
|
3208
|
+
className: "text-[color:var(--sofya-text-subtle)]",
|
|
3209
|
+
children: emptyMessage
|
|
3210
|
+
}
|
|
3211
|
+
) }) : /* @__PURE__ */ jsx19(
|
|
3212
|
+
"ul",
|
|
3213
|
+
{
|
|
3214
|
+
ref: listRef,
|
|
3215
|
+
id: listboxId,
|
|
3216
|
+
role: "listbox",
|
|
3217
|
+
"aria-label": typeof label === "string" ? label : "Options",
|
|
3218
|
+
className: "flex flex-col gap-0.5",
|
|
3219
|
+
children: options.map((option) => /* @__PURE__ */ jsx19(
|
|
3220
|
+
"li",
|
|
3221
|
+
{
|
|
3222
|
+
role: "option",
|
|
3223
|
+
"aria-selected": value === option.value,
|
|
3224
|
+
"aria-disabled": option.disabled,
|
|
3225
|
+
children: /* @__PURE__ */ jsxs10(
|
|
3226
|
+
"button",
|
|
3227
|
+
{
|
|
3228
|
+
"data-dropdown-search-item": true,
|
|
3229
|
+
type: "button",
|
|
3230
|
+
disabled: option.disabled,
|
|
3231
|
+
className: cn(
|
|
3232
|
+
"flex w-full items-center gap-3 rounded-[8px] px-3 py-2 text-left",
|
|
3233
|
+
"[font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)]",
|
|
3234
|
+
"transition-colors duration-sofya ease-sofya",
|
|
3235
|
+
"text-[color:var(--sofya-text-default)] hover:bg-muted focus-visible:bg-muted focus-visible:outline-none",
|
|
3236
|
+
"disabled:cursor-not-allowed disabled:opacity-40",
|
|
3237
|
+
value === option.value && "bg-muted"
|
|
3238
|
+
),
|
|
3239
|
+
onClick: () => handleSelect(option),
|
|
3240
|
+
onKeyDown: (e) => handleItemKeyDown(e, option),
|
|
3241
|
+
children: [
|
|
3242
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
3243
|
+
/* @__PURE__ */ jsx19(Text, { as: "span", size: "tiny", className: "truncate", children: option.label }),
|
|
3244
|
+
option.description ? /* @__PURE__ */ jsx19(
|
|
3245
|
+
Text,
|
|
3246
|
+
{
|
|
3247
|
+
as: "span",
|
|
3248
|
+
size: "tiny",
|
|
3249
|
+
className: "truncate text-[color:var(--sofya-text-subtle)]",
|
|
3250
|
+
children: option.description
|
|
3251
|
+
}
|
|
3252
|
+
) : null
|
|
3253
|
+
] }),
|
|
3254
|
+
value === option.value ? /* @__PURE__ */ jsx19(
|
|
3255
|
+
Icon,
|
|
3256
|
+
{
|
|
3257
|
+
"aria-hidden": "true",
|
|
3258
|
+
className: "shrink-0 text-primary",
|
|
3259
|
+
name: "check",
|
|
3260
|
+
size: 16
|
|
3261
|
+
}
|
|
3262
|
+
) : null
|
|
3263
|
+
]
|
|
3264
|
+
}
|
|
3265
|
+
)
|
|
3266
|
+
},
|
|
3267
|
+
option.value
|
|
3268
|
+
))
|
|
3269
|
+
}
|
|
3270
|
+
)
|
|
3271
|
+
}
|
|
3272
|
+
)
|
|
3273
|
+
] });
|
|
3274
|
+
}
|
|
3275
|
+
);
|
|
3276
|
+
DropdownSearch.displayName = "DropdownSearch";
|
|
3277
|
+
|
|
3278
|
+
// src/components/dialog.tsx
|
|
3279
|
+
import * as React19 from "react";
|
|
3280
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
3281
|
+
import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3282
|
+
var Dialog = DialogPrimitive.Root;
|
|
3283
|
+
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3284
|
+
var DialogPortal = DialogPrimitive.Portal;
|
|
3285
|
+
var DialogClose = DialogPrimitive.Close;
|
|
3286
|
+
var DialogInternalContext = React19.createContext({
|
|
3287
|
+
showCloseButton: true
|
|
3288
|
+
});
|
|
3289
|
+
var DialogOverlay = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
3290
|
+
DialogPrimitive.Overlay,
|
|
3291
|
+
{
|
|
3292
|
+
ref,
|
|
3293
|
+
className: cn(
|
|
3294
|
+
"sofya-dialog-overlay fixed inset-0 z-50 bg-foreground/24 backdrop-blur-[6px]",
|
|
3295
|
+
className
|
|
3296
|
+
),
|
|
3297
|
+
...props
|
|
3298
|
+
}
|
|
3299
|
+
));
|
|
3300
|
+
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
3301
|
+
var DialogContent = React19.forwardRef(
|
|
3302
|
+
({
|
|
3303
|
+
className,
|
|
3304
|
+
children,
|
|
3305
|
+
cardClassName,
|
|
3306
|
+
overlayClassName,
|
|
3307
|
+
showCloseButton = true,
|
|
3308
|
+
variant = "card",
|
|
3309
|
+
...props
|
|
3310
|
+
}, ref) => {
|
|
3311
|
+
const dialogCardStyle = {
|
|
3312
|
+
"--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
|
|
3313
|
+
};
|
|
3314
|
+
return /* @__PURE__ */ jsx20(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ jsxs11(DialogPortal, { children: [
|
|
3315
|
+
/* @__PURE__ */ jsx20(DialogOverlay, { className: overlayClassName }),
|
|
3316
|
+
/* @__PURE__ */ jsx20("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx20(
|
|
3317
|
+
DialogPrimitive.Content,
|
|
3318
|
+
{
|
|
3319
|
+
ref,
|
|
3320
|
+
className: cn(
|
|
3321
|
+
"sofya-dialog-content relative flex w-full max-w-[680px] max-h-[calc(100vh-2rem)] outline-none",
|
|
3322
|
+
className
|
|
3323
|
+
),
|
|
3324
|
+
...props,
|
|
3325
|
+
children: /* @__PURE__ */ jsx20(
|
|
3326
|
+
Card,
|
|
3327
|
+
{
|
|
3328
|
+
variant,
|
|
3329
|
+
className: cn(
|
|
3330
|
+
"flex max-h-[inherit] min-h-0 w-full flex-col gap-6 overflow-y-auto overflow-x-hidden p-6",
|
|
3331
|
+
cardClassName
|
|
3332
|
+
),
|
|
3333
|
+
style: dialogCardStyle,
|
|
3334
|
+
children
|
|
3335
|
+
}
|
|
3336
|
+
)
|
|
3337
|
+
}
|
|
3338
|
+
) })
|
|
3339
|
+
] }) });
|
|
3340
|
+
}
|
|
3341
|
+
);
|
|
3342
|
+
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3343
|
+
function DialogHeader({ className, children, ...props }) {
|
|
3344
|
+
const { showCloseButton } = React19.useContext(DialogInternalContext);
|
|
3345
|
+
return /* @__PURE__ */ jsxs11(
|
|
3346
|
+
"div",
|
|
3347
|
+
{
|
|
3348
|
+
className: cn("flex w-full items-start justify-between gap-4", className),
|
|
3349
|
+
...props,
|
|
3350
|
+
children: [
|
|
3351
|
+
/* @__PURE__ */ jsx20("div", { className: "flex min-w-0 flex-1 flex-col gap-2 text-left", children }),
|
|
3352
|
+
showCloseButton ? /* @__PURE__ */ jsx20(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx20(
|
|
3353
|
+
Button,
|
|
3354
|
+
{
|
|
3355
|
+
type: "button",
|
|
3356
|
+
variant: "ghost",
|
|
3357
|
+
size: "icon",
|
|
3358
|
+
"aria-label": "Close",
|
|
3359
|
+
leftIcon: /* @__PURE__ */ jsx20(Icon, { name: "x", size: 18 }),
|
|
3360
|
+
className: "shrink-0 text-muted-foreground hover:text-foreground"
|
|
3361
|
+
}
|
|
3362
|
+
) }) : null
|
|
3363
|
+
]
|
|
3364
|
+
}
|
|
3365
|
+
);
|
|
3366
|
+
}
|
|
3367
|
+
function DialogBody({ className, ...props }) {
|
|
3368
|
+
return /* @__PURE__ */ jsx20(
|
|
3369
|
+
"div",
|
|
3370
|
+
{
|
|
3371
|
+
className: cn("flex flex-col gap-4", className),
|
|
3372
|
+
...props
|
|
3373
|
+
}
|
|
3374
|
+
);
|
|
3375
|
+
}
|
|
3376
|
+
function DialogFooter({ className, ...props }) {
|
|
3377
|
+
return /* @__PURE__ */ jsx20(
|
|
3378
|
+
"div",
|
|
3379
|
+
{
|
|
3380
|
+
className: cn("flex items-center justify-end gap-2", className),
|
|
3381
|
+
...props
|
|
3382
|
+
}
|
|
3383
|
+
);
|
|
3384
|
+
}
|
|
3385
|
+
var DialogCancel = React19.forwardRef(
|
|
3386
|
+
({ type = "button", variant = "ghost", ...props }, ref) => /* @__PURE__ */ jsx20(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx20(Button, { ref, type, variant, ...props }) })
|
|
3387
|
+
);
|
|
3388
|
+
DialogCancel.displayName = "DialogCancel";
|
|
3389
|
+
var DialogTitle = React19.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
3390
|
+
DialogPrimitive.Title,
|
|
3391
|
+
{
|
|
3392
|
+
ref,
|
|
3393
|
+
className: cn("text-card-foreground", className),
|
|
3394
|
+
...props,
|
|
3395
|
+
children: renderTextContent(children, {
|
|
3396
|
+
as: "span",
|
|
3397
|
+
className: "block text-card-foreground",
|
|
3398
|
+
size: "h3"
|
|
3399
|
+
})
|
|
3400
|
+
}
|
|
3401
|
+
));
|
|
3402
|
+
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3403
|
+
var DialogDescription = React19.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx20(
|
|
3404
|
+
DialogPrimitive.Description,
|
|
3405
|
+
{
|
|
3406
|
+
ref,
|
|
3407
|
+
className: cn("text-muted-foreground", className),
|
|
3408
|
+
...props,
|
|
3409
|
+
children: renderTextContent(children, {
|
|
3410
|
+
as: "span",
|
|
3411
|
+
className: "block text-muted-foreground",
|
|
3412
|
+
size: "body"
|
|
3413
|
+
})
|
|
3414
|
+
}
|
|
3415
|
+
));
|
|
3416
|
+
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
3417
|
+
|
|
3418
|
+
// src/components/empty.tsx
|
|
3419
|
+
import * as React20 from "react";
|
|
3420
|
+
import { cva as cva5 } from "class-variance-authority";
|
|
3421
|
+
import { Fragment as Fragment3, jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3422
|
+
var emptyMediaVariantOptions = ["default", "icon"];
|
|
3423
|
+
var emptyMediaVariants = cva5(
|
|
3424
|
+
"inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
|
|
3425
|
+
{
|
|
3426
|
+
variants: {
|
|
3427
|
+
variant: {
|
|
3428
|
+
default: "[&_img]:max-w-full [&_svg]:shrink-0 [&_svg]:text-primary",
|
|
3429
|
+
icon: "h-16 w-16 rounded-full border border-primary/10 bg-primary/10 text-primary [&_svg]:h-7 [&_svg]:w-7 [&_svg]:shrink-0"
|
|
3430
|
+
}
|
|
3431
|
+
},
|
|
3432
|
+
defaultVariants: {
|
|
3433
|
+
variant: "default"
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
);
|
|
3437
|
+
var EmptyMedia = React20.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
|
|
3438
|
+
return /* @__PURE__ */ jsx21("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
|
|
3439
|
+
});
|
|
3440
|
+
function EmptyHeader({ className, ...props }) {
|
|
3441
|
+
return /* @__PURE__ */ jsx21(
|
|
3442
|
+
"div",
|
|
3443
|
+
{
|
|
3444
|
+
className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
|
|
3445
|
+
...props
|
|
3446
|
+
}
|
|
3447
|
+
);
|
|
3448
|
+
}
|
|
3449
|
+
function EmptyTitle({ children, className, ...props }) {
|
|
3450
|
+
return /* @__PURE__ */ jsx21(
|
|
3451
|
+
"h2",
|
|
3452
|
+
{
|
|
3453
|
+
className: cn("text-foreground", className),
|
|
3454
|
+
...props,
|
|
3455
|
+
children: renderTextContent(children, {
|
|
3456
|
+
as: "span",
|
|
3457
|
+
className: "block text-foreground",
|
|
3458
|
+
size: "h4"
|
|
3459
|
+
})
|
|
3460
|
+
}
|
|
3461
|
+
);
|
|
3462
|
+
}
|
|
3463
|
+
function EmptyDescription({
|
|
3464
|
+
children,
|
|
3465
|
+
className,
|
|
3466
|
+
...props
|
|
3467
|
+
}) {
|
|
3468
|
+
return /* @__PURE__ */ jsx21(
|
|
3469
|
+
"p",
|
|
3470
|
+
{
|
|
3471
|
+
className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
|
|
3472
|
+
...props,
|
|
3473
|
+
children: renderTextContent(children, {
|
|
3474
|
+
as: "span",
|
|
3475
|
+
className: "inline-block whitespace-nowrap text-muted-foreground",
|
|
3476
|
+
size: "body"
|
|
3477
|
+
})
|
|
3478
|
+
}
|
|
3479
|
+
);
|
|
3480
|
+
}
|
|
3481
|
+
function EmptyContent({ children, className, ...props }) {
|
|
3482
|
+
return /* @__PURE__ */ jsx21(
|
|
3483
|
+
"div",
|
|
3484
|
+
{
|
|
3485
|
+
className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
|
|
3486
|
+
...props,
|
|
3487
|
+
children: renderTextContent(children, {
|
|
3488
|
+
as: "span"
|
|
3489
|
+
})
|
|
3490
|
+
}
|
|
3491
|
+
);
|
|
3492
|
+
}
|
|
3493
|
+
var Empty = React20.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
|
|
3494
|
+
const hasCustomChildren = React20.Children.count(children) > 0;
|
|
3495
|
+
return /* @__PURE__ */ jsx21(
|
|
3496
|
+
"div",
|
|
3497
|
+
{
|
|
3097
3498
|
ref,
|
|
3098
|
-
type: resolvedType,
|
|
3099
3499
|
className: cn(
|
|
3100
|
-
"flex h-
|
|
3500
|
+
"flex min-h-[280px] w-full flex-col items-center justify-center gap-6 rounded-[28px] bg-gradient-to-b from-card via-card to-muted/45 px-6 py-10 text-center",
|
|
3101
3501
|
className
|
|
3102
3502
|
),
|
|
3103
|
-
...
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
label: isSearch ? void 0 : label,
|
|
3113
|
-
labelClassName: isSearch ? void 0 : labelClassName,
|
|
3114
|
-
labelHtmlFor: isSearch ? void 0 : resolvedId
|
|
3503
|
+
...props,
|
|
3504
|
+
children: hasCustomChildren ? children : /* @__PURE__ */ jsxs12(Fragment3, { children: [
|
|
3505
|
+
/* @__PURE__ */ jsxs12(EmptyHeader, { children: [
|
|
3506
|
+
media ?? /* @__PURE__ */ jsx21(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx21(Icon, { name: "folders", size: 28 }) }),
|
|
3507
|
+
/* @__PURE__ */ jsx21(EmptyTitle, { children: title ?? "Nada por aqui" }),
|
|
3508
|
+
/* @__PURE__ */ jsx21(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
|
|
3509
|
+
] }),
|
|
3510
|
+
content !== void 0 && content !== null ? /* @__PURE__ */ jsx21(EmptyContent, { children: content }) : null
|
|
3511
|
+
] })
|
|
3115
3512
|
}
|
|
3116
3513
|
);
|
|
3117
3514
|
});
|
|
3118
|
-
|
|
3515
|
+
Empty.displayName = "Empty";
|
|
3516
|
+
EmptyMedia.displayName = "EmptyMedia";
|
|
3517
|
+
EmptyHeader.displayName = "EmptyHeader";
|
|
3518
|
+
EmptyTitle.displayName = "EmptyTitle";
|
|
3519
|
+
EmptyDescription.displayName = "EmptyDescription";
|
|
3520
|
+
EmptyContent.displayName = "EmptyContent";
|
|
3119
3521
|
|
|
3120
3522
|
// src/components/label.tsx
|
|
3121
|
-
import * as
|
|
3122
|
-
import { jsx as
|
|
3123
|
-
var Label =
|
|
3523
|
+
import * as React21 from "react";
|
|
3524
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
3525
|
+
var Label = React21.forwardRef(
|
|
3124
3526
|
({ children, className, ...props }, ref) => {
|
|
3125
|
-
return /* @__PURE__ */
|
|
3527
|
+
return /* @__PURE__ */ jsx22(
|
|
3126
3528
|
"label",
|
|
3127
3529
|
{
|
|
3128
3530
|
ref,
|
|
@@ -3134,7 +3536,7 @@ var Label = React18.forwardRef(
|
|
|
3134
3536
|
children: renderTextContent(children, {
|
|
3135
3537
|
as: "span",
|
|
3136
3538
|
className: "block text-foreground",
|
|
3137
|
-
size: "
|
|
3539
|
+
size: "tiny",
|
|
3138
3540
|
style: {
|
|
3139
3541
|
fontWeight: 500
|
|
3140
3542
|
}
|
|
@@ -3146,10 +3548,10 @@ var Label = React18.forwardRef(
|
|
|
3146
3548
|
Label.displayName = "Label";
|
|
3147
3549
|
|
|
3148
3550
|
// src/components/link.tsx
|
|
3149
|
-
import * as
|
|
3551
|
+
import * as React22 from "react";
|
|
3150
3552
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
3151
3553
|
import { cva as cva6 } from "class-variance-authority";
|
|
3152
|
-
import { jsx as
|
|
3554
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
3153
3555
|
var linkVariants = cva6(
|
|
3154
3556
|
"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",
|
|
3155
3557
|
{
|
|
@@ -3164,9 +3566,9 @@ var linkVariants = cva6(
|
|
|
3164
3566
|
}
|
|
3165
3567
|
}
|
|
3166
3568
|
);
|
|
3167
|
-
var Link =
|
|
3569
|
+
var Link = React22.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
|
|
3168
3570
|
const Component = asChild ? Slot3 : "a";
|
|
3169
|
-
return /* @__PURE__ */
|
|
3571
|
+
return /* @__PURE__ */ jsx23(
|
|
3170
3572
|
Component,
|
|
3171
3573
|
{
|
|
3172
3574
|
ref,
|
|
@@ -3176,7 +3578,7 @@ var Link = React19.forwardRef(function Link2({ asChild = false, children, classN
|
|
|
3176
3578
|
children: renderTextContent(children, {
|
|
3177
3579
|
as: "span",
|
|
3178
3580
|
className: "text-current",
|
|
3179
|
-
size: "
|
|
3581
|
+
size: "tiny"
|
|
3180
3582
|
})
|
|
3181
3583
|
}
|
|
3182
3584
|
);
|
|
@@ -3184,7 +3586,7 @@ var Link = React19.forwardRef(function Link2({ asChild = false, children, classN
|
|
|
3184
3586
|
Link.displayName = "Link";
|
|
3185
3587
|
|
|
3186
3588
|
// src/components/logo.tsx
|
|
3187
|
-
import * as
|
|
3589
|
+
import * as React23 from "react";
|
|
3188
3590
|
|
|
3189
3591
|
// src/components/logo-data.ts
|
|
3190
3592
|
var logoAssets = {
|
|
@@ -3281,7 +3683,7 @@ var logoAssets = {
|
|
|
3281
3683
|
};
|
|
3282
3684
|
|
|
3283
3685
|
// src/components/logo.tsx
|
|
3284
|
-
import { jsx as
|
|
3686
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3285
3687
|
var logoVariants = ["mono", "default", "text", "full"];
|
|
3286
3688
|
var logoSizeOptions = ["sm", "md", "lg", "xl", "2xl"];
|
|
3287
3689
|
var logoSizeScale = {
|
|
@@ -3317,7 +3719,7 @@ function resolveLogoDimensions(variant, size, width, height) {
|
|
|
3317
3719
|
height: resolvedHeight
|
|
3318
3720
|
};
|
|
3319
3721
|
}
|
|
3320
|
-
var Logo =
|
|
3722
|
+
var Logo = React23.forwardRef(function Logo2({
|
|
3321
3723
|
variant = "full",
|
|
3322
3724
|
size = "lg",
|
|
3323
3725
|
width,
|
|
@@ -3328,10 +3730,10 @@ var Logo = React20.forwardRef(function Logo2({
|
|
|
3328
3730
|
...props
|
|
3329
3731
|
}, ref) {
|
|
3330
3732
|
const asset = logoAssets[variant];
|
|
3331
|
-
const titleId =
|
|
3733
|
+
const titleId = React23.useId();
|
|
3332
3734
|
const dimensions = resolveLogoDimensions(variant, size, width, height);
|
|
3333
3735
|
const monoFill = variant === "mono" ? monoColor ?? "currentColor" : void 0;
|
|
3334
|
-
return /* @__PURE__ */
|
|
3736
|
+
return /* @__PURE__ */ jsxs13(
|
|
3335
3737
|
"svg",
|
|
3336
3738
|
{
|
|
3337
3739
|
ref,
|
|
@@ -3346,8 +3748,8 @@ var Logo = React20.forwardRef(function Logo2({
|
|
|
3346
3748
|
focusable: "false",
|
|
3347
3749
|
...props,
|
|
3348
3750
|
children: [
|
|
3349
|
-
title ? /* @__PURE__ */
|
|
3350
|
-
asset.paths.map((path, index) => /* @__PURE__ */
|
|
3751
|
+
title ? /* @__PURE__ */ jsx24("title", { id: titleId, children: title }) : null,
|
|
3752
|
+
asset.paths.map((path, index) => /* @__PURE__ */ jsx24(
|
|
3351
3753
|
"path",
|
|
3352
3754
|
{
|
|
3353
3755
|
d: path.d,
|
|
@@ -3379,7 +3781,7 @@ var inheritedTypographyStyle = {
|
|
|
3379
3781
|
};
|
|
3380
3782
|
|
|
3381
3783
|
// src/components/pagination.tsx
|
|
3382
|
-
import { jsx as
|
|
3784
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3383
3785
|
var paginationLinkVariants = cva7(
|
|
3384
3786
|
"inline-flex h-10 min-w-10 items-center justify-center rounded-full border border-transparent px-4 [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-medium leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] 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",
|
|
3385
3787
|
{
|
|
@@ -3400,7 +3802,7 @@ var paginationLinkVariants = cva7(
|
|
|
3400
3802
|
}
|
|
3401
3803
|
);
|
|
3402
3804
|
function Pagination({ className, ...props }) {
|
|
3403
|
-
return /* @__PURE__ */
|
|
3805
|
+
return /* @__PURE__ */ jsx25(
|
|
3404
3806
|
"nav",
|
|
3405
3807
|
{
|
|
3406
3808
|
"aria-label": "Pagination",
|
|
@@ -3413,7 +3815,7 @@ function PaginationContent({
|
|
|
3413
3815
|
className,
|
|
3414
3816
|
...props
|
|
3415
3817
|
}) {
|
|
3416
|
-
return /* @__PURE__ */
|
|
3818
|
+
return /* @__PURE__ */ jsx25(
|
|
3417
3819
|
"ul",
|
|
3418
3820
|
{
|
|
3419
3821
|
className: cn(
|
|
@@ -3425,7 +3827,7 @@ function PaginationContent({
|
|
|
3425
3827
|
);
|
|
3426
3828
|
}
|
|
3427
3829
|
function PaginationItem({ className, ...props }) {
|
|
3428
|
-
return /* @__PURE__ */
|
|
3830
|
+
return /* @__PURE__ */ jsx25("li", { className: cn("list-none", className), ...props });
|
|
3429
3831
|
}
|
|
3430
3832
|
function PaginationLink({
|
|
3431
3833
|
asChild = false,
|
|
@@ -3435,7 +3837,7 @@ function PaginationLink({
|
|
|
3435
3837
|
...props
|
|
3436
3838
|
}) {
|
|
3437
3839
|
const Component = asChild ? Slot4 : "a";
|
|
3438
|
-
return /* @__PURE__ */
|
|
3840
|
+
return /* @__PURE__ */ jsx25(
|
|
3439
3841
|
Component,
|
|
3440
3842
|
{
|
|
3441
3843
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -3445,25 +3847,25 @@ function PaginationLink({
|
|
|
3445
3847
|
);
|
|
3446
3848
|
}
|
|
3447
3849
|
function PaginationChevronLeft() {
|
|
3448
|
-
return /* @__PURE__ */
|
|
3850
|
+
return /* @__PURE__ */ jsx25(IconChevronLeft2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
|
|
3449
3851
|
}
|
|
3450
3852
|
function PaginationChevronRight() {
|
|
3451
|
-
return /* @__PURE__ */
|
|
3853
|
+
return /* @__PURE__ */ jsx25(IconChevronRight2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
|
|
3452
3854
|
}
|
|
3453
3855
|
function PaginationPrevious({
|
|
3454
3856
|
className,
|
|
3455
3857
|
text = "Previous",
|
|
3456
3858
|
...props
|
|
3457
3859
|
}) {
|
|
3458
|
-
return /* @__PURE__ */
|
|
3860
|
+
return /* @__PURE__ */ jsxs14(
|
|
3459
3861
|
PaginationLink,
|
|
3460
3862
|
{
|
|
3461
3863
|
"aria-label": "Go to previous page",
|
|
3462
3864
|
className: cn("gap-2 px-4", className),
|
|
3463
3865
|
...props,
|
|
3464
3866
|
children: [
|
|
3465
|
-
/* @__PURE__ */
|
|
3466
|
-
/* @__PURE__ */
|
|
3867
|
+
/* @__PURE__ */ jsx25(PaginationChevronLeft, {}),
|
|
3868
|
+
/* @__PURE__ */ jsx25("span", { className: "hidden sm:block", children: renderTextContent(text, {
|
|
3467
3869
|
as: "span",
|
|
3468
3870
|
className: "block text-inherit",
|
|
3469
3871
|
size: "body",
|
|
@@ -3478,20 +3880,20 @@ function PaginationNext({
|
|
|
3478
3880
|
text = "Next",
|
|
3479
3881
|
...props
|
|
3480
3882
|
}) {
|
|
3481
|
-
return /* @__PURE__ */
|
|
3883
|
+
return /* @__PURE__ */ jsxs14(
|
|
3482
3884
|
PaginationLink,
|
|
3483
3885
|
{
|
|
3484
3886
|
"aria-label": "Go to next page",
|
|
3485
3887
|
className: cn("gap-2 px-4", className),
|
|
3486
3888
|
...props,
|
|
3487
3889
|
children: [
|
|
3488
|
-
/* @__PURE__ */
|
|
3890
|
+
/* @__PURE__ */ jsx25("span", { className: "hidden sm:block", children: renderTextContent(text, {
|
|
3489
3891
|
as: "span",
|
|
3490
3892
|
className: "block text-inherit",
|
|
3491
3893
|
size: "body",
|
|
3492
3894
|
style: inheritedTypographyStyle
|
|
3493
3895
|
}) }),
|
|
3494
|
-
/* @__PURE__ */
|
|
3896
|
+
/* @__PURE__ */ jsx25(PaginationChevronRight, {})
|
|
3495
3897
|
]
|
|
3496
3898
|
}
|
|
3497
3899
|
);
|
|
@@ -3500,7 +3902,7 @@ function PaginationEllipsis({
|
|
|
3500
3902
|
className,
|
|
3501
3903
|
...props
|
|
3502
3904
|
}) {
|
|
3503
|
-
return /* @__PURE__ */
|
|
3905
|
+
return /* @__PURE__ */ jsxs14(
|
|
3504
3906
|
"span",
|
|
3505
3907
|
{
|
|
3506
3908
|
"aria-hidden": "true",
|
|
@@ -3510,90 +3912,22 @@ function PaginationEllipsis({
|
|
|
3510
3912
|
),
|
|
3511
3913
|
...props,
|
|
3512
3914
|
children: [
|
|
3513
|
-
/* @__PURE__ */
|
|
3915
|
+
/* @__PURE__ */ jsx25("span", { children: renderTextContent("...", {
|
|
3514
3916
|
as: "span",
|
|
3515
3917
|
className: "block text-inherit",
|
|
3516
3918
|
size: "h5",
|
|
3517
3919
|
style: inheritedTypographyStyle
|
|
3518
3920
|
}) }),
|
|
3519
|
-
/* @__PURE__ */
|
|
3921
|
+
/* @__PURE__ */ jsx25("span", { className: "sr-only", children: "More pages" })
|
|
3520
3922
|
]
|
|
3521
3923
|
}
|
|
3522
3924
|
);
|
|
3523
3925
|
}
|
|
3524
3926
|
|
|
3525
|
-
// src/components/popover.tsx
|
|
3526
|
-
import * as React21 from "react";
|
|
3527
|
-
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
3528
|
-
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
3529
|
-
var Popover = PopoverPrimitive.Root;
|
|
3530
|
-
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
3531
|
-
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3532
|
-
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3533
|
-
var PopoverClose = PopoverPrimitive.Close;
|
|
3534
|
-
var PopoverContent = React21.forwardRef(function PopoverContent2({
|
|
3535
|
-
align = "center",
|
|
3536
|
-
className,
|
|
3537
|
-
collisionPadding = 8,
|
|
3538
|
-
sideOffset = 8,
|
|
3539
|
-
...props
|
|
3540
|
-
}, ref) {
|
|
3541
|
-
return /* @__PURE__ */ jsx23(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx23(
|
|
3542
|
-
PopoverPrimitive.Content,
|
|
3543
|
-
{
|
|
3544
|
-
ref,
|
|
3545
|
-
align,
|
|
3546
|
-
collisionPadding,
|
|
3547
|
-
sideOffset,
|
|
3548
|
-
"data-slot": "popover-content",
|
|
3549
|
-
className: cn(
|
|
3550
|
-
"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",
|
|
3551
|
-
className
|
|
3552
|
-
),
|
|
3553
|
-
...props
|
|
3554
|
-
}
|
|
3555
|
-
) });
|
|
3556
|
-
});
|
|
3557
|
-
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
3558
|
-
var PopoverTitle = React21.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
|
|
3559
|
-
return /* @__PURE__ */ jsx23(
|
|
3560
|
-
"h4",
|
|
3561
|
-
{
|
|
3562
|
-
ref,
|
|
3563
|
-
"data-slot": "popover-title",
|
|
3564
|
-
className: cn("text-[hsl(var(--sofya-popover-foreground))]", className),
|
|
3565
|
-
...props,
|
|
3566
|
-
children: renderTextContent(children, {
|
|
3567
|
-
as: "span",
|
|
3568
|
-
className: "block text-[hsl(var(--sofya-popover-foreground))]",
|
|
3569
|
-
size: "h4"
|
|
3570
|
-
})
|
|
3571
|
-
}
|
|
3572
|
-
);
|
|
3573
|
-
});
|
|
3574
|
-
PopoverTitle.displayName = "PopoverTitle";
|
|
3575
|
-
var PopoverDescription = React21.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
|
|
3576
|
-
return /* @__PURE__ */ jsx23(
|
|
3577
|
-
"p",
|
|
3578
|
-
{
|
|
3579
|
-
ref,
|
|
3580
|
-
"data-slot": "popover-description",
|
|
3581
|
-
className: cn("text-muted-foreground", className),
|
|
3582
|
-
...props,
|
|
3583
|
-
children: renderTextContent(children, {
|
|
3584
|
-
as: "span",
|
|
3585
|
-
className: "block text-muted-foreground",
|
|
3586
|
-
size: "body"
|
|
3587
|
-
})
|
|
3588
|
-
}
|
|
3589
|
-
);
|
|
3590
|
-
});
|
|
3591
|
-
PopoverDescription.displayName = "PopoverDescription";
|
|
3592
|
-
|
|
3593
3927
|
// src/components/progress.tsx
|
|
3594
|
-
import * as
|
|
3928
|
+
import * as React24 from "react";
|
|
3595
3929
|
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
3596
|
-
import { jsx as
|
|
3930
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
3597
3931
|
var progressSizeOptions = ["sm", "default", "lg"];
|
|
3598
3932
|
function clampProgressValue(value, max) {
|
|
3599
3933
|
if (Number.isNaN(value)) {
|
|
@@ -3601,7 +3935,7 @@ function clampProgressValue(value, max) {
|
|
|
3601
3935
|
}
|
|
3602
3936
|
return Math.min(Math.max(value, 0), max);
|
|
3603
3937
|
}
|
|
3604
|
-
var Progress =
|
|
3938
|
+
var Progress = React24.forwardRef(function Progress2({
|
|
3605
3939
|
className,
|
|
3606
3940
|
indicatorClassName,
|
|
3607
3941
|
max = 100,
|
|
@@ -3612,7 +3946,7 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3612
3946
|
const safeMax = max > 0 ? max : 100;
|
|
3613
3947
|
const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
|
|
3614
3948
|
const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
|
|
3615
|
-
return /* @__PURE__ */
|
|
3949
|
+
return /* @__PURE__ */ jsx26(
|
|
3616
3950
|
ProgressPrimitive.Root,
|
|
3617
3951
|
{
|
|
3618
3952
|
ref,
|
|
@@ -3625,7 +3959,7 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3625
3959
|
className
|
|
3626
3960
|
),
|
|
3627
3961
|
...props,
|
|
3628
|
-
children: /* @__PURE__ */
|
|
3962
|
+
children: /* @__PURE__ */ jsx26(
|
|
3629
3963
|
ProgressPrimitive.Indicator,
|
|
3630
3964
|
{
|
|
3631
3965
|
"data-slot": "progress-indicator",
|
|
@@ -3642,12 +3976,12 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3642
3976
|
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
3643
3977
|
|
|
3644
3978
|
// src/components/radio-group.tsx
|
|
3645
|
-
import * as
|
|
3979
|
+
import * as React25 from "react";
|
|
3646
3980
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
3647
|
-
import { jsx as
|
|
3981
|
+
import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3648
3982
|
var radioGroupOrientationOptions = ["horizontal", "vertical"];
|
|
3649
|
-
var RadioGroup2 =
|
|
3650
|
-
return /* @__PURE__ */
|
|
3983
|
+
var RadioGroup2 = React25.forwardRef(function RadioGroup3({ className, ...props }, ref) {
|
|
3984
|
+
return /* @__PURE__ */ jsx27(
|
|
3651
3985
|
RadioGroupPrimitive.Root,
|
|
3652
3986
|
{
|
|
3653
3987
|
ref,
|
|
@@ -3661,7 +3995,7 @@ var RadioGroup2 = React23.forwardRef(function RadioGroup3({ className, ...props
|
|
|
3661
3995
|
);
|
|
3662
3996
|
});
|
|
3663
3997
|
RadioGroup2.displayName = RadioGroupPrimitive.Root.displayName;
|
|
3664
|
-
var RadioGroupItem =
|
|
3998
|
+
var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
|
|
3665
3999
|
className,
|
|
3666
4000
|
controlClassName,
|
|
3667
4001
|
description,
|
|
@@ -3673,12 +4007,12 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3673
4007
|
labelClassName,
|
|
3674
4008
|
...props
|
|
3675
4009
|
}, ref) {
|
|
3676
|
-
const generatedId =
|
|
4010
|
+
const generatedId = React25.useId();
|
|
3677
4011
|
const resolvedId = id ?? generatedId;
|
|
3678
4012
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
3679
4013
|
const descriptionId = description ? `${resolvedId}-description` : void 0;
|
|
3680
4014
|
const alignClassName = description ? "items-start" : "items-center";
|
|
3681
|
-
return /* @__PURE__ */
|
|
4015
|
+
return /* @__PURE__ */ jsxs15(
|
|
3682
4016
|
"label",
|
|
3683
4017
|
{
|
|
3684
4018
|
className: selectionControlContainerClasses({
|
|
@@ -3687,7 +4021,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3687
4021
|
disabled
|
|
3688
4022
|
}),
|
|
3689
4023
|
children: [
|
|
3690
|
-
/* @__PURE__ */
|
|
4024
|
+
/* @__PURE__ */ jsx27(
|
|
3691
4025
|
RadioGroupPrimitive.Item,
|
|
3692
4026
|
{
|
|
3693
4027
|
ref,
|
|
@@ -3703,7 +4037,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3703
4037
|
controlClassName
|
|
3704
4038
|
),
|
|
3705
4039
|
...props,
|
|
3706
|
-
children: /* @__PURE__ */
|
|
4040
|
+
children: /* @__PURE__ */ jsx27(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ jsx27(
|
|
3707
4041
|
"span",
|
|
3708
4042
|
{
|
|
3709
4043
|
"data-slot": "radio-group-indicator",
|
|
@@ -3715,8 +4049,8 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3715
4049
|
) })
|
|
3716
4050
|
}
|
|
3717
4051
|
),
|
|
3718
|
-
label || description ? /* @__PURE__ */
|
|
3719
|
-
label ? /* @__PURE__ */
|
|
4052
|
+
label || description ? /* @__PURE__ */ jsxs15("span", { className: selectionControlContentBaseClasses, children: [
|
|
4053
|
+
label ? /* @__PURE__ */ jsx27(
|
|
3720
4054
|
"span",
|
|
3721
4055
|
{
|
|
3722
4056
|
id: labelId,
|
|
@@ -3727,11 +4061,11 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3727
4061
|
children: renderTextContent(label, {
|
|
3728
4062
|
as: "span",
|
|
3729
4063
|
className: "text-[color:var(--sofya-text-default)]",
|
|
3730
|
-
size: "
|
|
4064
|
+
size: "tiny"
|
|
3731
4065
|
})
|
|
3732
4066
|
}
|
|
3733
4067
|
) : null,
|
|
3734
|
-
description ? /* @__PURE__ */
|
|
4068
|
+
description ? /* @__PURE__ */ jsx27(
|
|
3735
4069
|
"span",
|
|
3736
4070
|
{
|
|
3737
4071
|
id: descriptionId,
|
|
@@ -3742,7 +4076,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3742
4076
|
children: renderTextContent(description, {
|
|
3743
4077
|
as: "span",
|
|
3744
4078
|
className: "text-muted-foreground",
|
|
3745
|
-
size: "
|
|
4079
|
+
size: "tiny"
|
|
3746
4080
|
})
|
|
3747
4081
|
}
|
|
3748
4082
|
) : null
|
|
@@ -3754,12 +4088,12 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3754
4088
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
3755
4089
|
|
|
3756
4090
|
// src/components/scroll-area.tsx
|
|
3757
|
-
import * as
|
|
4091
|
+
import * as React26 from "react";
|
|
3758
4092
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
3759
|
-
import { jsx as
|
|
4093
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
3760
4094
|
var scrollAreaOrientationOptions = ["horizontal", "vertical"];
|
|
3761
|
-
var ScrollArea =
|
|
3762
|
-
return /* @__PURE__ */
|
|
4095
|
+
var ScrollArea = React26.forwardRef(function ScrollArea2({ className, ...props }, ref) {
|
|
4096
|
+
return /* @__PURE__ */ jsx28(
|
|
3763
4097
|
ScrollAreaPrimitive.Root,
|
|
3764
4098
|
{
|
|
3765
4099
|
ref,
|
|
@@ -3770,8 +4104,8 @@ var ScrollArea = React24.forwardRef(function ScrollArea2({ className, ...props }
|
|
|
3770
4104
|
);
|
|
3771
4105
|
});
|
|
3772
4106
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
3773
|
-
var ScrollAreaViewport =
|
|
3774
|
-
return /* @__PURE__ */
|
|
4107
|
+
var ScrollAreaViewport = React26.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
|
|
4108
|
+
return /* @__PURE__ */ jsx28(
|
|
3775
4109
|
ScrollAreaPrimitive.Viewport,
|
|
3776
4110
|
{
|
|
3777
4111
|
ref,
|
|
@@ -3785,8 +4119,8 @@ var ScrollAreaViewport = React24.forwardRef(function ScrollAreaViewport2({ class
|
|
|
3785
4119
|
);
|
|
3786
4120
|
});
|
|
3787
4121
|
ScrollAreaViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
|
|
3788
|
-
var ScrollAreaScrollbar =
|
|
3789
|
-
return /* @__PURE__ */
|
|
4122
|
+
var ScrollAreaScrollbar = React26.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
|
|
4123
|
+
return /* @__PURE__ */ jsx28(
|
|
3790
4124
|
ScrollAreaPrimitive.Scrollbar,
|
|
3791
4125
|
{
|
|
3792
4126
|
ref,
|
|
@@ -3797,7 +4131,7 @@ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ cla
|
|
|
3797
4131
|
className
|
|
3798
4132
|
),
|
|
3799
4133
|
...props,
|
|
3800
|
-
children: /* @__PURE__ */
|
|
4134
|
+
children: /* @__PURE__ */ jsx28(
|
|
3801
4135
|
ScrollAreaPrimitive.Thumb,
|
|
3802
4136
|
{
|
|
3803
4137
|
"data-slot": "scroll-area-thumb",
|
|
@@ -3811,8 +4145,8 @@ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ cla
|
|
|
3811
4145
|
);
|
|
3812
4146
|
});
|
|
3813
4147
|
ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
|
|
3814
|
-
var ScrollAreaCorner =
|
|
3815
|
-
return /* @__PURE__ */
|
|
4148
|
+
var ScrollAreaCorner = React26.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
|
|
4149
|
+
return /* @__PURE__ */ jsx28(
|
|
3816
4150
|
ScrollAreaPrimitive.Corner,
|
|
3817
4151
|
{
|
|
3818
4152
|
ref,
|
|
@@ -3825,34 +4159,34 @@ var ScrollAreaCorner = React24.forwardRef(function ScrollAreaCorner2({ className
|
|
|
3825
4159
|
ScrollAreaCorner.displayName = ScrollAreaPrimitive.Corner.displayName;
|
|
3826
4160
|
|
|
3827
4161
|
// src/components/select.tsx
|
|
3828
|
-
import * as
|
|
4162
|
+
import * as React27 from "react";
|
|
3829
4163
|
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
3830
4164
|
|
|
3831
4165
|
// src/lib/form-control-classes.ts
|
|
3832
4166
|
var formControlBaseClasses = "flex w-full items-center justify-between gap-4 rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 text-left [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] [font-weight:var(--sofya-text-body-font-weight)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] 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)]";
|
|
3833
4167
|
|
|
3834
4168
|
// src/components/select.tsx
|
|
3835
|
-
import { jsx as
|
|
4169
|
+
import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3836
4170
|
var selectSizeOptions = ["default", "sm"];
|
|
3837
4171
|
var Select = SelectPrimitive.Root;
|
|
3838
4172
|
var SelectGroup = SelectPrimitive.Group;
|
|
3839
|
-
var SelectValue =
|
|
3840
|
-
return /* @__PURE__ */
|
|
4173
|
+
var SelectValue = React27.forwardRef(function SelectValue2({ className, ...props }, ref) {
|
|
4174
|
+
return /* @__PURE__ */ jsx29(
|
|
3841
4175
|
Text,
|
|
3842
4176
|
{
|
|
3843
4177
|
ref,
|
|
3844
4178
|
as: "span",
|
|
3845
4179
|
"data-slot": "select-value",
|
|
3846
4180
|
className: cn("block truncate text-inherit", className),
|
|
3847
|
-
size: "
|
|
4181
|
+
size: "tiny",
|
|
3848
4182
|
style: inheritedTypographyStyle,
|
|
3849
|
-
children: /* @__PURE__ */
|
|
4183
|
+
children: /* @__PURE__ */ jsx29(SelectPrimitive.Value, { className: "block truncate", ...props })
|
|
3850
4184
|
}
|
|
3851
4185
|
);
|
|
3852
4186
|
});
|
|
3853
4187
|
SelectValue.displayName = SelectPrimitive.Value.displayName;
|
|
3854
|
-
var SelectTrigger =
|
|
3855
|
-
return /* @__PURE__ */
|
|
4188
|
+
var SelectTrigger = React27.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
|
|
4189
|
+
return /* @__PURE__ */ jsxs16(
|
|
3856
4190
|
SelectPrimitive.Trigger,
|
|
3857
4191
|
{
|
|
3858
4192
|
ref,
|
|
@@ -3866,7 +4200,7 @@ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, chil
|
|
|
3866
4200
|
...props,
|
|
3867
4201
|
children: [
|
|
3868
4202
|
children,
|
|
3869
|
-
/* @__PURE__ */
|
|
4203
|
+
/* @__PURE__ */ jsx29(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx29(
|
|
3870
4204
|
Icon,
|
|
3871
4205
|
{
|
|
3872
4206
|
name: "caret-down",
|
|
@@ -3879,8 +4213,8 @@ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, chil
|
|
|
3879
4213
|
);
|
|
3880
4214
|
});
|
|
3881
4215
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
3882
|
-
var SelectScrollUpButton =
|
|
3883
|
-
return /* @__PURE__ */
|
|
4216
|
+
var SelectScrollUpButton = React27.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
|
|
4217
|
+
return /* @__PURE__ */ jsx29(
|
|
3884
4218
|
SelectPrimitive.ScrollUpButton,
|
|
3885
4219
|
{
|
|
3886
4220
|
ref,
|
|
@@ -3890,13 +4224,13 @@ var SelectScrollUpButton = React25.forwardRef(function SelectScrollUpButton2({ c
|
|
|
3890
4224
|
className
|
|
3891
4225
|
),
|
|
3892
4226
|
...props,
|
|
3893
|
-
children: /* @__PURE__ */
|
|
4227
|
+
children: /* @__PURE__ */ jsx29(Icon, { name: "caret-up", size: 12 })
|
|
3894
4228
|
}
|
|
3895
4229
|
);
|
|
3896
4230
|
});
|
|
3897
4231
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
3898
|
-
var SelectScrollDownButton =
|
|
3899
|
-
return /* @__PURE__ */
|
|
4232
|
+
var SelectScrollDownButton = React27.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
|
|
4233
|
+
return /* @__PURE__ */ jsx29(
|
|
3900
4234
|
SelectPrimitive.ScrollDownButton,
|
|
3901
4235
|
{
|
|
3902
4236
|
ref,
|
|
@@ -3906,13 +4240,13 @@ var SelectScrollDownButton = React25.forwardRef(function SelectScrollDownButton2
|
|
|
3906
4240
|
className
|
|
3907
4241
|
),
|
|
3908
4242
|
...props,
|
|
3909
|
-
children: /* @__PURE__ */
|
|
4243
|
+
children: /* @__PURE__ */ jsx29(Icon, { name: "caret-down", size: 12 })
|
|
3910
4244
|
}
|
|
3911
4245
|
);
|
|
3912
4246
|
});
|
|
3913
4247
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
3914
|
-
var SelectContent =
|
|
3915
|
-
return /* @__PURE__ */
|
|
4248
|
+
var SelectContent = React27.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
|
|
4249
|
+
return /* @__PURE__ */ jsx29(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs16(
|
|
3916
4250
|
SelectPrimitive.Content,
|
|
3917
4251
|
{
|
|
3918
4252
|
ref,
|
|
@@ -3925,8 +4259,8 @@ var SelectContent = React25.forwardRef(function SelectContent2({ className, chil
|
|
|
3925
4259
|
),
|
|
3926
4260
|
...props,
|
|
3927
4261
|
children: [
|
|
3928
|
-
/* @__PURE__ */
|
|
3929
|
-
/* @__PURE__ */
|
|
4262
|
+
/* @__PURE__ */ jsx29(SelectScrollUpButton, {}),
|
|
4263
|
+
/* @__PURE__ */ jsx29(
|
|
3930
4264
|
SelectPrimitive.Viewport,
|
|
3931
4265
|
{
|
|
3932
4266
|
"data-slot": "select-viewport",
|
|
@@ -3934,14 +4268,14 @@ var SelectContent = React25.forwardRef(function SelectContent2({ className, chil
|
|
|
3934
4268
|
children
|
|
3935
4269
|
}
|
|
3936
4270
|
),
|
|
3937
|
-
/* @__PURE__ */
|
|
4271
|
+
/* @__PURE__ */ jsx29(SelectScrollDownButton, {})
|
|
3938
4272
|
]
|
|
3939
4273
|
}
|
|
3940
4274
|
) });
|
|
3941
4275
|
});
|
|
3942
4276
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
3943
|
-
var SelectLabel =
|
|
3944
|
-
return /* @__PURE__ */
|
|
4277
|
+
var SelectLabel = React27.forwardRef(function SelectLabel2({ className, ...props }, ref) {
|
|
4278
|
+
return /* @__PURE__ */ jsx29(
|
|
3945
4279
|
SelectPrimitive.Label,
|
|
3946
4280
|
{
|
|
3947
4281
|
ref,
|
|
@@ -3963,32 +4297,32 @@ var SelectLabel = React25.forwardRef(function SelectLabel2({ className, ...props
|
|
|
3963
4297
|
);
|
|
3964
4298
|
});
|
|
3965
4299
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
3966
|
-
var SelectItem =
|
|
3967
|
-
return /* @__PURE__ */
|
|
4300
|
+
var SelectItem = React27.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
|
|
4301
|
+
return /* @__PURE__ */ jsxs16(
|
|
3968
4302
|
SelectPrimitive.Item,
|
|
3969
4303
|
{
|
|
3970
4304
|
ref,
|
|
3971
4305
|
"data-slot": "select-item",
|
|
3972
4306
|
className: cn(
|
|
3973
|
-
"relative flex min-w-0 cursor-pointer select-none items-center self-stretch rounded-[8px] px-4 py-2 pr-8 [font-family:var(--sofya-text-
|
|
4307
|
+
"relative flex min-w-0 cursor-pointer select-none items-center self-stretch rounded-[8px] px-4 py-2 pr-8 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)] 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)]",
|
|
3974
4308
|
className
|
|
3975
4309
|
),
|
|
3976
4310
|
...props,
|
|
3977
4311
|
children: [
|
|
3978
|
-
/* @__PURE__ */
|
|
4312
|
+
/* @__PURE__ */ jsx29(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
|
|
3979
4313
|
as: "span",
|
|
3980
4314
|
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
3981
|
-
size: "
|
|
4315
|
+
size: "tiny",
|
|
3982
4316
|
style: inheritedTypographyStyle
|
|
3983
4317
|
}) }),
|
|
3984
|
-
/* @__PURE__ */
|
|
4318
|
+
/* @__PURE__ */ jsx29(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsx29("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ jsx29(Icon, { name: "check", size: 14 }) }) })
|
|
3985
4319
|
]
|
|
3986
4320
|
}
|
|
3987
4321
|
);
|
|
3988
4322
|
});
|
|
3989
4323
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
3990
|
-
var SelectSeparator =
|
|
3991
|
-
return /* @__PURE__ */
|
|
4324
|
+
var SelectSeparator = React27.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
|
|
4325
|
+
return /* @__PURE__ */ jsx29(
|
|
3992
4326
|
SelectPrimitive.Separator,
|
|
3993
4327
|
{
|
|
3994
4328
|
ref,
|
|
@@ -4001,11 +4335,11 @@ var SelectSeparator = React25.forwardRef(function SelectSeparator2({ className,
|
|
|
4001
4335
|
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
4002
4336
|
|
|
4003
4337
|
// src/components/separator.tsx
|
|
4004
|
-
import * as
|
|
4338
|
+
import * as React28 from "react";
|
|
4005
4339
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
4006
|
-
import { jsx as
|
|
4007
|
-
var Separator2 =
|
|
4008
|
-
return /* @__PURE__ */
|
|
4340
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
4341
|
+
var Separator2 = React28.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
|
|
4342
|
+
return /* @__PURE__ */ jsx30(
|
|
4009
4343
|
SeparatorPrimitive.Root,
|
|
4010
4344
|
{
|
|
4011
4345
|
ref,
|
|
@@ -4024,8 +4358,8 @@ var Separator2 = React26.forwardRef(function Separator3({ className, decorative
|
|
|
4024
4358
|
Separator2.displayName = SeparatorPrimitive.Root.displayName;
|
|
4025
4359
|
|
|
4026
4360
|
// src/components/slider.tsx
|
|
4027
|
-
import * as
|
|
4028
|
-
import { jsx as
|
|
4361
|
+
import * as React29 from "react";
|
|
4362
|
+
import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4029
4363
|
function clampSliderValue(value, min, max) {
|
|
4030
4364
|
if (Number.isNaN(value)) {
|
|
4031
4365
|
return min;
|
|
@@ -4050,7 +4384,7 @@ function resolveSliderMeasurement(value, fallback) {
|
|
|
4050
4384
|
function isTextValue(value) {
|
|
4051
4385
|
return typeof value === "string" || typeof value === "number";
|
|
4052
4386
|
}
|
|
4053
|
-
var Slider =
|
|
4387
|
+
var Slider = React29.forwardRef(function Slider2({
|
|
4054
4388
|
className,
|
|
4055
4389
|
defaultValue,
|
|
4056
4390
|
formatValue,
|
|
@@ -4073,7 +4407,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4073
4407
|
valueClassName,
|
|
4074
4408
|
...props
|
|
4075
4409
|
}, ref) {
|
|
4076
|
-
const resolvedId =
|
|
4410
|
+
const resolvedId = React29.useId();
|
|
4077
4411
|
const inputId = id ?? resolvedId;
|
|
4078
4412
|
const safeMin = min;
|
|
4079
4413
|
const safeMax = resolveSliderMax(safeMin, max);
|
|
@@ -4082,7 +4416,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4082
4416
|
onChange: onValueChange,
|
|
4083
4417
|
value
|
|
4084
4418
|
});
|
|
4085
|
-
|
|
4419
|
+
React29.useEffect(() => {
|
|
4086
4420
|
if (value !== void 0) {
|
|
4087
4421
|
return;
|
|
4088
4422
|
}
|
|
@@ -4129,14 +4463,14 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4129
4463
|
setControllableValue(nextValue);
|
|
4130
4464
|
onChange?.(event);
|
|
4131
4465
|
};
|
|
4132
|
-
return /* @__PURE__ */
|
|
4466
|
+
return /* @__PURE__ */ jsxs17(
|
|
4133
4467
|
"div",
|
|
4134
4468
|
{
|
|
4135
4469
|
"data-slot": "slider",
|
|
4136
4470
|
className: cn("grid w-full gap-2", className),
|
|
4137
4471
|
children: [
|
|
4138
|
-
label || showValue ? /* @__PURE__ */
|
|
4139
|
-
label ? /* @__PURE__ */
|
|
4472
|
+
label || showValue ? /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between gap-4", children: [
|
|
4473
|
+
label ? /* @__PURE__ */ jsx31(
|
|
4140
4474
|
FieldLabel,
|
|
4141
4475
|
{
|
|
4142
4476
|
htmlFor: inputId,
|
|
@@ -4147,8 +4481,8 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4147
4481
|
textClassName: "block min-w-0 text-[color:var(--sofya-text-default)]",
|
|
4148
4482
|
children: label
|
|
4149
4483
|
}
|
|
4150
|
-
) : /* @__PURE__ */
|
|
4151
|
-
showValue ? /* @__PURE__ */
|
|
4484
|
+
) : /* @__PURE__ */ jsx31("span", {}),
|
|
4485
|
+
showValue ? /* @__PURE__ */ jsx31(
|
|
4152
4486
|
"div",
|
|
4153
4487
|
{
|
|
4154
4488
|
className: cn(
|
|
@@ -4166,7 +4500,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4166
4500
|
}
|
|
4167
4501
|
) : null
|
|
4168
4502
|
] }) : null,
|
|
4169
|
-
/* @__PURE__ */
|
|
4503
|
+
/* @__PURE__ */ jsxs17(
|
|
4170
4504
|
"div",
|
|
4171
4505
|
{
|
|
4172
4506
|
"data-slot": "slider-control",
|
|
@@ -4176,7 +4510,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4176
4510
|
),
|
|
4177
4511
|
style: controlStyle,
|
|
4178
4512
|
children: [
|
|
4179
|
-
/* @__PURE__ */
|
|
4513
|
+
/* @__PURE__ */ jsx31(
|
|
4180
4514
|
"input",
|
|
4181
4515
|
{
|
|
4182
4516
|
...props,
|
|
@@ -4193,7 +4527,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4193
4527
|
style: inputBoundsStyle
|
|
4194
4528
|
}
|
|
4195
4529
|
),
|
|
4196
|
-
/* @__PURE__ */
|
|
4530
|
+
/* @__PURE__ */ jsx31(
|
|
4197
4531
|
"div",
|
|
4198
4532
|
{
|
|
4199
4533
|
"data-slot": "slider-track",
|
|
@@ -4204,7 +4538,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4204
4538
|
style: trackBoundsStyle
|
|
4205
4539
|
}
|
|
4206
4540
|
),
|
|
4207
|
-
/* @__PURE__ */
|
|
4541
|
+
/* @__PURE__ */ jsx31(
|
|
4208
4542
|
"div",
|
|
4209
4543
|
{
|
|
4210
4544
|
"data-slot": "slider-range",
|
|
@@ -4215,7 +4549,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4215
4549
|
style: rangeStyle
|
|
4216
4550
|
}
|
|
4217
4551
|
),
|
|
4218
|
-
/* @__PURE__ */
|
|
4552
|
+
/* @__PURE__ */ jsx31(
|
|
4219
4553
|
"div",
|
|
4220
4554
|
{
|
|
4221
4555
|
"data-slot": "slider-thumb",
|
|
@@ -4236,10 +4570,10 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4236
4570
|
Slider.displayName = "Slider";
|
|
4237
4571
|
|
|
4238
4572
|
// src/components/skeleton.tsx
|
|
4239
|
-
import * as
|
|
4240
|
-
import { jsx as
|
|
4241
|
-
var Skeleton =
|
|
4242
|
-
return /* @__PURE__ */
|
|
4573
|
+
import * as React30 from "react";
|
|
4574
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
4575
|
+
var Skeleton = React30.forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
4576
|
+
return /* @__PURE__ */ jsx32(
|
|
4243
4577
|
"div",
|
|
4244
4578
|
{
|
|
4245
4579
|
ref,
|
|
@@ -4254,18 +4588,18 @@ var Skeleton = React28.forwardRef(function Skeleton2({ className, ...props }, re
|
|
|
4254
4588
|
Skeleton.displayName = "Skeleton";
|
|
4255
4589
|
|
|
4256
4590
|
// src/components/sonner.tsx
|
|
4257
|
-
import * as
|
|
4591
|
+
import * as React31 from "react";
|
|
4258
4592
|
import {
|
|
4259
4593
|
Toaster as SonnerToaster,
|
|
4260
4594
|
toast
|
|
4261
4595
|
} from "sonner";
|
|
4262
|
-
import { jsx as
|
|
4596
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
4263
4597
|
var notificationVariantOptions = ["default", "success", "error", "warning"];
|
|
4264
4598
|
function ToastStatusIcon({
|
|
4265
4599
|
iconName,
|
|
4266
4600
|
className
|
|
4267
4601
|
}) {
|
|
4268
|
-
return /* @__PURE__ */
|
|
4602
|
+
return /* @__PURE__ */ jsx33(
|
|
4269
4603
|
"span",
|
|
4270
4604
|
{
|
|
4271
4605
|
"aria-hidden": "true",
|
|
@@ -4273,7 +4607,7 @@ function ToastStatusIcon({
|
|
|
4273
4607
|
"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full border shadow-sofya-sm",
|
|
4274
4608
|
className
|
|
4275
4609
|
),
|
|
4276
|
-
children: /* @__PURE__ */
|
|
4610
|
+
children: /* @__PURE__ */ jsx33(Icon, { name: iconName, size: 16 })
|
|
4277
4611
|
}
|
|
4278
4612
|
);
|
|
4279
4613
|
}
|
|
@@ -4294,35 +4628,35 @@ var defaultToastClassNames = {
|
|
|
4294
4628
|
loading: "border-border bg-card text-foreground"
|
|
4295
4629
|
};
|
|
4296
4630
|
var defaultToastIcons = {
|
|
4297
|
-
success: /* @__PURE__ */
|
|
4631
|
+
success: /* @__PURE__ */ jsx33(
|
|
4298
4632
|
ToastStatusIcon,
|
|
4299
4633
|
{
|
|
4300
4634
|
iconName: "check",
|
|
4301
4635
|
className: "border-success/15 bg-success/12 text-success"
|
|
4302
4636
|
}
|
|
4303
4637
|
),
|
|
4304
|
-
error: /* @__PURE__ */
|
|
4638
|
+
error: /* @__PURE__ */ jsx33(
|
|
4305
4639
|
ToastStatusIcon,
|
|
4306
4640
|
{
|
|
4307
4641
|
iconName: "x",
|
|
4308
4642
|
className: "border-destructive/15 bg-destructive/12 text-destructive"
|
|
4309
4643
|
}
|
|
4310
4644
|
),
|
|
4311
|
-
warning: /* @__PURE__ */
|
|
4645
|
+
warning: /* @__PURE__ */ jsx33(
|
|
4312
4646
|
ToastStatusIcon,
|
|
4313
4647
|
{
|
|
4314
4648
|
iconName: "question",
|
|
4315
4649
|
className: "border-warning/20 bg-warning/15 text-foreground"
|
|
4316
4650
|
}
|
|
4317
4651
|
),
|
|
4318
|
-
info: /* @__PURE__ */
|
|
4652
|
+
info: /* @__PURE__ */ jsx33(
|
|
4319
4653
|
ToastStatusIcon,
|
|
4320
4654
|
{
|
|
4321
4655
|
iconName: "question",
|
|
4322
4656
|
className: "border-primary/15 bg-primary/10 text-primary"
|
|
4323
4657
|
}
|
|
4324
4658
|
),
|
|
4325
|
-
close: /* @__PURE__ */
|
|
4659
|
+
close: /* @__PURE__ */ jsx33(Icon, { name: "x", size: 12 })
|
|
4326
4660
|
};
|
|
4327
4661
|
function mergeToastClassNames(overrides) {
|
|
4328
4662
|
return {
|
|
@@ -4330,7 +4664,7 @@ function mergeToastClassNames(overrides) {
|
|
|
4330
4664
|
...overrides
|
|
4331
4665
|
};
|
|
4332
4666
|
}
|
|
4333
|
-
var Toaster =
|
|
4667
|
+
var Toaster = React31.forwardRef(
|
|
4334
4668
|
function Toaster2({
|
|
4335
4669
|
className,
|
|
4336
4670
|
closeButton = true,
|
|
@@ -4342,7 +4676,7 @@ var Toaster = React29.forwardRef(
|
|
|
4342
4676
|
visibleToasts = 5,
|
|
4343
4677
|
...props
|
|
4344
4678
|
}, ref) {
|
|
4345
|
-
return /* @__PURE__ */
|
|
4679
|
+
return /* @__PURE__ */ jsx33(
|
|
4346
4680
|
SonnerToaster,
|
|
4347
4681
|
{
|
|
4348
4682
|
ref,
|
|
@@ -4371,43 +4705,10 @@ var Toaster = React29.forwardRef(
|
|
|
4371
4705
|
);
|
|
4372
4706
|
Toaster.displayName = "Toaster";
|
|
4373
4707
|
|
|
4374
|
-
// src/components/spinner.tsx
|
|
4375
|
-
import * as React30 from "react";
|
|
4376
|
-
import { IconLoader2 as IconLoader22 } from "@tabler/icons-react";
|
|
4377
|
-
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
4378
|
-
var spinnerSizeOptions = ["sm", "default", "lg"];
|
|
4379
|
-
var Spinner = React30.forwardRef(function Spinner2({
|
|
4380
|
-
"aria-label": ariaLabelProp,
|
|
4381
|
-
"aria-labelledby": ariaLabelledby,
|
|
4382
|
-
className,
|
|
4383
|
-
role = "status",
|
|
4384
|
-
size = "default",
|
|
4385
|
-
...props
|
|
4386
|
-
}, ref) {
|
|
4387
|
-
const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
|
|
4388
|
-
return /* @__PURE__ */ jsx32(
|
|
4389
|
-
IconLoader22,
|
|
4390
|
-
{
|
|
4391
|
-
ref,
|
|
4392
|
-
"data-size": size,
|
|
4393
|
-
"data-slot": "spinner",
|
|
4394
|
-
role,
|
|
4395
|
-
"aria-label": ariaLabel,
|
|
4396
|
-
"aria-labelledby": ariaLabelledby,
|
|
4397
|
-
className: cn(
|
|
4398
|
-
"shrink-0 animate-spin text-primary data-[size=sm]:h-3.5 data-[size=sm]:w-3.5 data-[size=default]:h-4 data-[size=default]:w-4 data-[size=lg]:h-6 data-[size=lg]:w-6",
|
|
4399
|
-
className
|
|
4400
|
-
),
|
|
4401
|
-
...props
|
|
4402
|
-
}
|
|
4403
|
-
);
|
|
4404
|
-
});
|
|
4405
|
-
Spinner.displayName = "Spinner";
|
|
4406
|
-
|
|
4407
4708
|
// src/components/switch.tsx
|
|
4408
|
-
import * as
|
|
4709
|
+
import * as React32 from "react";
|
|
4409
4710
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
4410
|
-
import { jsx as
|
|
4711
|
+
import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4411
4712
|
var switchSizeOptions = ["default", "sm"];
|
|
4412
4713
|
var switchRootSizeClasses = {
|
|
4413
4714
|
default: "h-6 w-11",
|
|
@@ -4417,7 +4718,7 @@ var switchThumbSizeClasses = {
|
|
|
4417
4718
|
default: "h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",
|
|
4418
4719
|
sm: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
|
|
4419
4720
|
};
|
|
4420
|
-
var Switch =
|
|
4721
|
+
var Switch = React32.forwardRef(
|
|
4421
4722
|
({
|
|
4422
4723
|
"aria-describedby": ariaDescribedBy,
|
|
4423
4724
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -4432,7 +4733,7 @@ var Switch = React31.forwardRef(
|
|
|
4432
4733
|
size,
|
|
4433
4734
|
...props
|
|
4434
4735
|
}, ref) => {
|
|
4435
|
-
const generatedId =
|
|
4736
|
+
const generatedId = React32.useId();
|
|
4436
4737
|
const resolvedId = id ?? generatedId;
|
|
4437
4738
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
4438
4739
|
const descriptionId = description ? `${resolvedId}-description` : void 0;
|
|
@@ -4441,7 +4742,7 @@ var Switch = React31.forwardRef(
|
|
|
4441
4742
|
const alignClassName = description ? "items-start" : "items-center";
|
|
4442
4743
|
const resolvedAriaDescribedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
|
|
4443
4744
|
const resolvedAriaLabelledBy = ariaLabelledBy ?? labelId;
|
|
4444
|
-
const switchControl = /* @__PURE__ */
|
|
4745
|
+
const switchControl = /* @__PURE__ */ jsx34(
|
|
4445
4746
|
SwitchPrimitives.Root,
|
|
4446
4747
|
{
|
|
4447
4748
|
id: resolvedId,
|
|
@@ -4456,7 +4757,7 @@ var Switch = React31.forwardRef(
|
|
|
4456
4757
|
"data-size": resolvedSize,
|
|
4457
4758
|
...props,
|
|
4458
4759
|
ref,
|
|
4459
|
-
children: /* @__PURE__ */
|
|
4760
|
+
children: /* @__PURE__ */ jsx34(
|
|
4460
4761
|
SwitchPrimitives.Thumb,
|
|
4461
4762
|
{
|
|
4462
4763
|
className: cn(
|
|
@@ -4470,7 +4771,7 @@ var Switch = React31.forwardRef(
|
|
|
4470
4771
|
if (!hasTextContent) {
|
|
4471
4772
|
return switchControl;
|
|
4472
4773
|
}
|
|
4473
|
-
return /* @__PURE__ */
|
|
4774
|
+
return /* @__PURE__ */ jsxs18(
|
|
4474
4775
|
"div",
|
|
4475
4776
|
{
|
|
4476
4777
|
"data-slot": "switch-container",
|
|
@@ -4481,8 +4782,8 @@ var Switch = React31.forwardRef(
|
|
|
4481
4782
|
}),
|
|
4482
4783
|
children: [
|
|
4483
4784
|
switchControl,
|
|
4484
|
-
/* @__PURE__ */
|
|
4485
|
-
label ? /* @__PURE__ */
|
|
4785
|
+
/* @__PURE__ */ jsxs18("span", { className: selectionControlContentBaseClasses, children: [
|
|
4786
|
+
label ? /* @__PURE__ */ jsx34("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ jsx34(
|
|
4486
4787
|
"span",
|
|
4487
4788
|
{
|
|
4488
4789
|
id: labelId,
|
|
@@ -4493,11 +4794,11 @@ var Switch = React31.forwardRef(
|
|
|
4493
4794
|
children: renderTextContent(label, {
|
|
4494
4795
|
as: "span",
|
|
4495
4796
|
className: "text-[color:var(--sofya-text-default)]",
|
|
4496
|
-
size: "
|
|
4797
|
+
size: "tiny"
|
|
4497
4798
|
})
|
|
4498
4799
|
}
|
|
4499
4800
|
) }) : null,
|
|
4500
|
-
description ? /* @__PURE__ */
|
|
4801
|
+
description ? /* @__PURE__ */ jsx34(
|
|
4501
4802
|
"span",
|
|
4502
4803
|
{
|
|
4503
4804
|
id: descriptionId,
|
|
@@ -4508,7 +4809,7 @@ var Switch = React31.forwardRef(
|
|
|
4508
4809
|
children: renderTextContent(description, {
|
|
4509
4810
|
as: "span",
|
|
4510
4811
|
className: "text-muted-foreground",
|
|
4511
|
-
size: "
|
|
4812
|
+
size: "tiny"
|
|
4512
4813
|
})
|
|
4513
4814
|
}
|
|
4514
4815
|
) : null
|
|
@@ -4522,8 +4823,8 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
|
4522
4823
|
|
|
4523
4824
|
// src/components/table.tsx
|
|
4524
4825
|
import { cva as cva8 } from "class-variance-authority";
|
|
4525
|
-
import * as
|
|
4526
|
-
import { jsx as
|
|
4826
|
+
import * as React33 from "react";
|
|
4827
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
4527
4828
|
var tableCellVariantOptions = ["default", "primary", "muted"];
|
|
4528
4829
|
var tableStatusToneOptions = [
|
|
4529
4830
|
"active",
|
|
@@ -4573,13 +4874,13 @@ var tableActionButtonVariants = cva8(
|
|
|
4573
4874
|
}
|
|
4574
4875
|
}
|
|
4575
4876
|
);
|
|
4576
|
-
var Table =
|
|
4577
|
-
return /* @__PURE__ */
|
|
4877
|
+
var Table = React33.forwardRef(function Table2({ className, ...props }, ref) {
|
|
4878
|
+
return /* @__PURE__ */ jsx35(
|
|
4578
4879
|
"div",
|
|
4579
4880
|
{
|
|
4580
4881
|
"data-slot": "table-container",
|
|
4581
4882
|
className: "relative w-full overflow-x-auto",
|
|
4582
|
-
children: /* @__PURE__ */
|
|
4883
|
+
children: /* @__PURE__ */ jsx35(
|
|
4583
4884
|
"table",
|
|
4584
4885
|
{
|
|
4585
4886
|
"data-slot": "table",
|
|
@@ -4594,8 +4895,8 @@ var Table = React32.forwardRef(function Table2({ className, ...props }, ref) {
|
|
|
4594
4895
|
}
|
|
4595
4896
|
);
|
|
4596
4897
|
});
|
|
4597
|
-
var TableHeader =
|
|
4598
|
-
return /* @__PURE__ */
|
|
4898
|
+
var TableHeader = React33.forwardRef(function TableHeader2({ className, ...props }, ref) {
|
|
4899
|
+
return /* @__PURE__ */ jsx35(
|
|
4599
4900
|
"thead",
|
|
4600
4901
|
{
|
|
4601
4902
|
"data-slot": "table-header",
|
|
@@ -4608,8 +4909,8 @@ var TableHeader = React32.forwardRef(function TableHeader2({ className, ...props
|
|
|
4608
4909
|
}
|
|
4609
4910
|
);
|
|
4610
4911
|
});
|
|
4611
|
-
var TableBody =
|
|
4612
|
-
return /* @__PURE__ */
|
|
4912
|
+
var TableBody = React33.forwardRef(function TableBody2({ className, ...props }, ref) {
|
|
4913
|
+
return /* @__PURE__ */ jsx35(
|
|
4613
4914
|
"tbody",
|
|
4614
4915
|
{
|
|
4615
4916
|
"data-slot": "table-body",
|
|
@@ -4619,8 +4920,8 @@ var TableBody = React32.forwardRef(function TableBody2({ className, ...props },
|
|
|
4619
4920
|
}
|
|
4620
4921
|
);
|
|
4621
4922
|
});
|
|
4622
|
-
var TableFooter =
|
|
4623
|
-
return /* @__PURE__ */
|
|
4923
|
+
var TableFooter = React33.forwardRef(function TableFooter2({ className, ...props }, ref) {
|
|
4924
|
+
return /* @__PURE__ */ jsx35(
|
|
4624
4925
|
"tfoot",
|
|
4625
4926
|
{
|
|
4626
4927
|
"data-slot": "table-footer",
|
|
@@ -4633,8 +4934,8 @@ var TableFooter = React32.forwardRef(function TableFooter2({ className, ...props
|
|
|
4633
4934
|
}
|
|
4634
4935
|
);
|
|
4635
4936
|
});
|
|
4636
|
-
var TableRow =
|
|
4637
|
-
return /* @__PURE__ */
|
|
4937
|
+
var TableRow = React33.forwardRef(function TableRow2({ className, ...props }, ref) {
|
|
4938
|
+
return /* @__PURE__ */ jsx35(
|
|
4638
4939
|
"tr",
|
|
4639
4940
|
{
|
|
4640
4941
|
"data-slot": "table-row",
|
|
@@ -4647,8 +4948,8 @@ var TableRow = React32.forwardRef(function TableRow2({ className, ...props }, re
|
|
|
4647
4948
|
}
|
|
4648
4949
|
);
|
|
4649
4950
|
});
|
|
4650
|
-
var TableHead =
|
|
4651
|
-
return /* @__PURE__ */
|
|
4951
|
+
var TableHead = React33.forwardRef(function TableHead2({ className, children, ...props }, ref) {
|
|
4952
|
+
return /* @__PURE__ */ jsx35(
|
|
4652
4953
|
"th",
|
|
4653
4954
|
{
|
|
4654
4955
|
"data-slot": "table-head",
|
|
@@ -4667,9 +4968,9 @@ var TableHead = React32.forwardRef(function TableHead2({ className, children, ..
|
|
|
4667
4968
|
}
|
|
4668
4969
|
);
|
|
4669
4970
|
});
|
|
4670
|
-
var TableCell =
|
|
4971
|
+
var TableCell = React33.forwardRef(
|
|
4671
4972
|
function TableCell2({ className, variant, children, ...props }, ref) {
|
|
4672
|
-
return /* @__PURE__ */
|
|
4973
|
+
return /* @__PURE__ */ jsx35(
|
|
4673
4974
|
"td",
|
|
4674
4975
|
{
|
|
4675
4976
|
"data-slot": "table-cell",
|
|
@@ -4686,8 +4987,8 @@ var TableCell = React32.forwardRef(
|
|
|
4686
4987
|
);
|
|
4687
4988
|
}
|
|
4688
4989
|
);
|
|
4689
|
-
var TableCaption =
|
|
4690
|
-
return /* @__PURE__ */
|
|
4990
|
+
var TableCaption = React33.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
|
|
4991
|
+
return /* @__PURE__ */ jsx35(
|
|
4691
4992
|
"caption",
|
|
4692
4993
|
{
|
|
4693
4994
|
"data-slot": "table-caption",
|
|
@@ -4712,7 +5013,7 @@ function TableStatusBadge({
|
|
|
4712
5013
|
children,
|
|
4713
5014
|
...props
|
|
4714
5015
|
}) {
|
|
4715
|
-
return /* @__PURE__ */
|
|
5016
|
+
return /* @__PURE__ */ jsx35(
|
|
4716
5017
|
Badge,
|
|
4717
5018
|
{
|
|
4718
5019
|
variant: "pill",
|
|
@@ -4727,8 +5028,8 @@ function TableStatusBadge({
|
|
|
4727
5028
|
}
|
|
4728
5029
|
);
|
|
4729
5030
|
}
|
|
4730
|
-
var TableActionButton =
|
|
4731
|
-
return /* @__PURE__ */
|
|
5031
|
+
var TableActionButton = React33.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
|
|
5032
|
+
return /* @__PURE__ */ jsx35(
|
|
4732
5033
|
Button,
|
|
4733
5034
|
{
|
|
4734
5035
|
ref,
|
|
@@ -4746,8 +5047,8 @@ var TableActionButton = React32.forwardRef(function TableActionButton2({ classNa
|
|
|
4746
5047
|
}
|
|
4747
5048
|
);
|
|
4748
5049
|
});
|
|
4749
|
-
var TableActions =
|
|
4750
|
-
return /* @__PURE__ */
|
|
5050
|
+
var TableActions = React33.forwardRef(function TableActions2({ className, ...props }, ref) {
|
|
5051
|
+
return /* @__PURE__ */ jsx35(
|
|
4751
5052
|
"div",
|
|
4752
5053
|
{
|
|
4753
5054
|
ref,
|
|
@@ -4768,10 +5069,10 @@ TableActionButton.displayName = "TableActionButton";
|
|
|
4768
5069
|
TableActions.displayName = "TableActions";
|
|
4769
5070
|
|
|
4770
5071
|
// src/components/tabs.tsx
|
|
4771
|
-
import * as
|
|
5072
|
+
import * as React34 from "react";
|
|
4772
5073
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
4773
5074
|
import { motion as motion3 } from "motion/react";
|
|
4774
|
-
import { jsx as
|
|
5075
|
+
import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4775
5076
|
function resolveDefaultValue(items, defaultValue) {
|
|
4776
5077
|
if (defaultValue) {
|
|
4777
5078
|
return defaultValue;
|
|
@@ -4795,13 +5096,13 @@ function Tabs({
|
|
|
4795
5096
|
onChange: onValueChange,
|
|
4796
5097
|
value
|
|
4797
5098
|
});
|
|
4798
|
-
const indicatorLayoutId =
|
|
4799
|
-
|
|
5099
|
+
const indicatorLayoutId = React34.useId();
|
|
5100
|
+
React34.useEffect(() => {
|
|
4800
5101
|
if (value === void 0) {
|
|
4801
5102
|
setUncontrolledCurrentValue(resolvedDefaultValue);
|
|
4802
5103
|
}
|
|
4803
5104
|
}, [resolvedDefaultValue, setUncontrolledCurrentValue, value]);
|
|
4804
|
-
return /* @__PURE__ */
|
|
5105
|
+
return /* @__PURE__ */ jsxs19(
|
|
4805
5106
|
TabsPrimitive.Root,
|
|
4806
5107
|
{
|
|
4807
5108
|
className: cn("w-full", className),
|
|
@@ -4809,7 +5110,7 @@ function Tabs({
|
|
|
4809
5110
|
value: currentValue,
|
|
4810
5111
|
...props,
|
|
4811
5112
|
children: [
|
|
4812
|
-
/* @__PURE__ */
|
|
5113
|
+
/* @__PURE__ */ jsx36(
|
|
4813
5114
|
TabsPrimitive.List,
|
|
4814
5115
|
{
|
|
4815
5116
|
"aria-label": "Subtelas navegaveis",
|
|
@@ -4820,19 +5121,19 @@ function Tabs({
|
|
|
4820
5121
|
children: items.map((item) => {
|
|
4821
5122
|
const isUnavailable = item.disabled || item.loading;
|
|
4822
5123
|
const isActive = item.value === currentValue;
|
|
4823
|
-
return /* @__PURE__ */
|
|
5124
|
+
return /* @__PURE__ */ jsxs19(
|
|
4824
5125
|
TabsPrimitive.Trigger,
|
|
4825
5126
|
{
|
|
4826
5127
|
value: item.value,
|
|
4827
5128
|
disabled: isUnavailable,
|
|
4828
5129
|
className: cn(
|
|
4829
|
-
"relative inline-flex min-h-[76px] shrink-0 items-center justify-center px-8 pb-4 pt-6 [font-family:var(--sofya-text-
|
|
5130
|
+
"relative inline-flex min-h-[76px] shrink-0 items-center justify-center px-8 pb-4 pt-6 [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] [font-weight:var(--sofya-text-body-font-weight)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] 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",
|
|
4830
5131
|
item.loading && "disabled:text-[color:var(--sofya-text-soft)]",
|
|
4831
5132
|
triggerClassName,
|
|
4832
5133
|
item.triggerClassName
|
|
4833
5134
|
),
|
|
4834
5135
|
children: [
|
|
4835
|
-
isActive ? /* @__PURE__ */
|
|
5136
|
+
isActive ? /* @__PURE__ */ jsx36(
|
|
4836
5137
|
motion3.span,
|
|
4837
5138
|
{
|
|
4838
5139
|
"aria-hidden": "true",
|
|
@@ -4842,18 +5143,18 @@ function Tabs({
|
|
|
4842
5143
|
transition: { duration: 0.25, ease: "easeInOut" }
|
|
4843
5144
|
}
|
|
4844
5145
|
) : null,
|
|
4845
|
-
/* @__PURE__ */
|
|
4846
|
-
item.loading ? /* @__PURE__ */
|
|
5146
|
+
/* @__PURE__ */ jsxs19("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
|
|
5147
|
+
item.loading ? /* @__PURE__ */ jsx36(
|
|
4847
5148
|
"span",
|
|
4848
5149
|
{
|
|
4849
5150
|
"aria-hidden": "true",
|
|
4850
5151
|
className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent"
|
|
4851
5152
|
}
|
|
4852
5153
|
) : null,
|
|
4853
|
-
/* @__PURE__ */
|
|
5154
|
+
/* @__PURE__ */ jsx36("span", { children: renderTextContent(item.label, {
|
|
4854
5155
|
as: "span",
|
|
4855
5156
|
className: "block text-inherit",
|
|
4856
|
-
size: "
|
|
5157
|
+
size: "body"
|
|
4857
5158
|
}) })
|
|
4858
5159
|
] })
|
|
4859
5160
|
]
|
|
@@ -4864,7 +5165,7 @@ function Tabs({
|
|
|
4864
5165
|
}
|
|
4865
5166
|
),
|
|
4866
5167
|
items.map(
|
|
4867
|
-
(item) => item.content !== void 0 ? /* @__PURE__ */
|
|
5168
|
+
(item) => item.content !== void 0 ? /* @__PURE__ */ jsx36(
|
|
4868
5169
|
TabsPrimitive.Content,
|
|
4869
5170
|
{
|
|
4870
5171
|
value: item.value,
|
|
@@ -4887,9 +5188,9 @@ function Tabs({
|
|
|
4887
5188
|
Tabs.displayName = "Tabs";
|
|
4888
5189
|
|
|
4889
5190
|
// src/components/textarea.tsx
|
|
4890
|
-
import * as
|
|
4891
|
-
import { jsx as
|
|
4892
|
-
var Textarea =
|
|
5191
|
+
import * as React35 from "react";
|
|
5192
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
5193
|
+
var Textarea = React35.forwardRef(
|
|
4893
5194
|
({
|
|
4894
5195
|
className,
|
|
4895
5196
|
containerClassName,
|
|
@@ -4899,14 +5200,14 @@ var Textarea = React34.forwardRef(
|
|
|
4899
5200
|
rows = 5,
|
|
4900
5201
|
...props
|
|
4901
5202
|
}, ref) => {
|
|
4902
|
-
const generatedId =
|
|
5203
|
+
const generatedId = React35.useId();
|
|
4903
5204
|
const resolvedId = id ?? generatedId;
|
|
4904
5205
|
const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
|
|
4905
|
-
const control = /* @__PURE__ */
|
|
5206
|
+
const control = /* @__PURE__ */ jsx37(
|
|
4906
5207
|
"textarea",
|
|
4907
5208
|
{
|
|
4908
5209
|
className: cn(
|
|
4909
|
-
"flex min-h-[120px] w-full resize-y rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 [font-family:var(--sofya-text-
|
|
5210
|
+
"flex min-h-[120px] w-full resize-y rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)] 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",
|
|
4910
5211
|
className
|
|
4911
5212
|
),
|
|
4912
5213
|
id: resolvedId,
|
|
@@ -4916,7 +5217,7 @@ var Textarea = React34.forwardRef(
|
|
|
4916
5217
|
"aria-label": ariaLabel
|
|
4917
5218
|
}
|
|
4918
5219
|
);
|
|
4919
|
-
return /* @__PURE__ */
|
|
5220
|
+
return /* @__PURE__ */ jsx37(
|
|
4920
5221
|
FieldShell,
|
|
4921
5222
|
{
|
|
4922
5223
|
control,
|
|
@@ -4931,14 +5232,14 @@ var Textarea = React34.forwardRef(
|
|
|
4931
5232
|
Textarea.displayName = "Textarea";
|
|
4932
5233
|
|
|
4933
5234
|
// src/components/tooltip.tsx
|
|
4934
|
-
import * as
|
|
5235
|
+
import * as React36 from "react";
|
|
4935
5236
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
4936
|
-
import { jsx as
|
|
5237
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
4937
5238
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
4938
5239
|
var Tooltip = TooltipPrimitive.Root;
|
|
4939
5240
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
4940
|
-
var TooltipContent =
|
|
4941
|
-
return /* @__PURE__ */
|
|
5241
|
+
var TooltipContent = React36.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
|
|
5242
|
+
return /* @__PURE__ */ jsx38(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx38(
|
|
4942
5243
|
TooltipPrimitive.Content,
|
|
4943
5244
|
{
|
|
4944
5245
|
ref,
|
|
@@ -4962,13 +5263,13 @@ var TooltipContent = React35.forwardRef(function TooltipContent2({ className, si
|
|
|
4962
5263
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
4963
5264
|
|
|
4964
5265
|
// src/theme/provider.tsx
|
|
4965
|
-
import * as
|
|
5266
|
+
import * as React37 from "react";
|
|
4966
5267
|
import {
|
|
4967
5268
|
createWhitelabelTheme,
|
|
4968
5269
|
defaultTheme,
|
|
4969
5270
|
themeToCssVariables
|
|
4970
5271
|
} from "@sofya-ds/tokens";
|
|
4971
|
-
import { jsx as
|
|
5272
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
4972
5273
|
var SOFYA_FONT_LINKS = [
|
|
4973
5274
|
{
|
|
4974
5275
|
id: "preconnect-googleapis",
|
|
@@ -4988,7 +5289,7 @@ var SOFYA_FONT_LINKS = [
|
|
|
4988
5289
|
}
|
|
4989
5290
|
];
|
|
4990
5291
|
function useSofyaFontLinks() {
|
|
4991
|
-
|
|
5292
|
+
React37.useEffect(() => {
|
|
4992
5293
|
if (typeof document === "undefined") {
|
|
4993
5294
|
return;
|
|
4994
5295
|
}
|
|
@@ -5021,7 +5322,7 @@ function SofyaProvider({
|
|
|
5021
5322
|
useSofyaFontLinks();
|
|
5022
5323
|
const theme = createWhitelabelTheme(overrides ?? {}, preset);
|
|
5023
5324
|
const cssVariables = themeToCssVariables(theme);
|
|
5024
|
-
return /* @__PURE__ */
|
|
5325
|
+
return /* @__PURE__ */ jsx39(
|
|
5025
5326
|
"div",
|
|
5026
5327
|
{
|
|
5027
5328
|
"data-sofya-theme": theme.name,
|
|
@@ -5084,6 +5385,7 @@ export {
|
|
|
5084
5385
|
DialogTitle,
|
|
5085
5386
|
DialogTrigger,
|
|
5086
5387
|
Dropdown,
|
|
5388
|
+
DropdownSearch,
|
|
5087
5389
|
Empty,
|
|
5088
5390
|
EmptyContent,
|
|
5089
5391
|
EmptyDescription,
|