@sofya-ds/react 1.3.6 → 1.3.7
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 +955 -653
- package/dist/index.css +1 -1
- package/dist/index.d.cts +36 -3
- package/dist/index.d.ts +36 -3
- package/dist/index.js +954 -653
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -60,6 +60,7 @@ __export(index_exports, {
|
|
|
60
60
|
DialogTitle: () => DialogTitle,
|
|
61
61
|
DialogTrigger: () => DialogTrigger,
|
|
62
62
|
Dropdown: () => Dropdown,
|
|
63
|
+
DropdownSearch: () => DropdownSearch,
|
|
63
64
|
Empty: () => Empty,
|
|
64
65
|
EmptyContent: () => EmptyContent,
|
|
65
66
|
EmptyDescription: () => EmptyDescription,
|
|
@@ -1953,7 +1954,8 @@ var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
|
1953
1954
|
var dropdownVariantOptions = [
|
|
1954
1955
|
"card",
|
|
1955
1956
|
"language",
|
|
1956
|
-
"selected"
|
|
1957
|
+
"selected",
|
|
1958
|
+
"action"
|
|
1957
1959
|
];
|
|
1958
1960
|
var dropdownAppearanceOptions = ["card"];
|
|
1959
1961
|
var dropdownTriggerSizeOptions = ["default", "sm", "lg"];
|
|
@@ -1965,7 +1967,8 @@ var dropdownLanguageItems = [
|
|
|
1965
1967
|
var dropdownTriggerToneClasses = {
|
|
1966
1968
|
card: "text-primary",
|
|
1967
1969
|
language: "",
|
|
1968
|
-
selected: "w-full border-[color:var(--sofya-border-strong)] [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)]"
|
|
1970
|
+
selected: "w-full border-[color:var(--sofya-border-strong)] [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)]",
|
|
1971
|
+
action: ""
|
|
1969
1972
|
};
|
|
1970
1973
|
var dropdownTriggerSizeClasses = {
|
|
1971
1974
|
regular: {
|
|
@@ -1982,6 +1985,11 @@ var dropdownTriggerSizeClasses = {
|
|
|
1982
1985
|
default: "h-5 w-5 p-0",
|
|
1983
1986
|
sm: "h-[18px] w-[18px] p-0",
|
|
1984
1987
|
lg: "h-6 w-6 p-0"
|
|
1988
|
+
},
|
|
1989
|
+
action: {
|
|
1990
|
+
default: "h-10 w-10 p-0",
|
|
1991
|
+
sm: "h-8 w-8 p-0",
|
|
1992
|
+
lg: "h-12 w-12 p-0"
|
|
1985
1993
|
}
|
|
1986
1994
|
};
|
|
1987
1995
|
var dropdownAppearanceClasses = {
|
|
@@ -1993,12 +2001,14 @@ var dropdownAppearanceClasses = {
|
|
|
1993
2001
|
var dropdownContentBaseClasses = {
|
|
1994
2002
|
card: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1995
2003
|
language: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1996
|
-
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)]"
|
|
2004
|
+
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)]",
|
|
2005
|
+
action: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
1997
2006
|
};
|
|
1998
2007
|
var dropdownItemClasses = {
|
|
1999
2008
|
card: "text-foreground",
|
|
2000
2009
|
language: "text-foreground",
|
|
2001
|
-
selected: "text-foreground"
|
|
2010
|
+
selected: "text-foreground",
|
|
2011
|
+
action: "text-foreground"
|
|
2002
2012
|
};
|
|
2003
2013
|
function isButtonLanguageLocale(value) {
|
|
2004
2014
|
return buttonLanguageLocaleOptions.includes(value);
|
|
@@ -2024,6 +2034,9 @@ function resolveDropdownTriggerSizeFamily(variant) {
|
|
|
2024
2034
|
if (variant === "selected") {
|
|
2025
2035
|
return "selected";
|
|
2026
2036
|
}
|
|
2037
|
+
if (variant === "action") {
|
|
2038
|
+
return "action";
|
|
2039
|
+
}
|
|
2027
2040
|
return "regular";
|
|
2028
2041
|
}
|
|
2029
2042
|
function DefaultDropdownTriggerIcon({ variant }) {
|
|
@@ -2062,6 +2075,7 @@ function Dropdown({
|
|
|
2062
2075
|
defaultOpen,
|
|
2063
2076
|
defaultValue,
|
|
2064
2077
|
disabled = false,
|
|
2078
|
+
iconTrigger,
|
|
2065
2079
|
items,
|
|
2066
2080
|
itemClassName,
|
|
2067
2081
|
modal,
|
|
@@ -2078,9 +2092,10 @@ function Dropdown({
|
|
|
2078
2092
|
}) {
|
|
2079
2093
|
const isLanguageVariant = variant === "language";
|
|
2080
2094
|
const isSelectedVariant = variant === "selected";
|
|
2095
|
+
const isActionVariant = variant === "action";
|
|
2081
2096
|
const resolvedAppearance = resolveDropdownAppearance({ appearance, variant });
|
|
2082
2097
|
const triggerSizeFamily = resolveDropdownTriggerSizeFamily(variant);
|
|
2083
|
-
const usesDefaultListStyle = !isLanguageVariant;
|
|
2098
|
+
const usesDefaultListStyle = !isLanguageVariant && !isActionVariant;
|
|
2084
2099
|
const resolvedItems = React12.useMemo(
|
|
2085
2100
|
() => isLanguageVariant ? items && items.length > 0 ? items : dropdownLanguageItems : items ?? [],
|
|
2086
2101
|
[isLanguageVariant, items]
|
|
@@ -2091,6 +2106,7 @@ function Dropdown({
|
|
|
2091
2106
|
onChange: onValueChange,
|
|
2092
2107
|
value
|
|
2093
2108
|
});
|
|
2109
|
+
const [subValues, setSubValues] = React12.useState({});
|
|
2094
2110
|
const radioValue = selectedValue ?? "";
|
|
2095
2111
|
const selectedItem = resolvedItems.find(
|
|
2096
2112
|
(item) => item.value === selectedValue
|
|
@@ -2112,7 +2128,7 @@ function Dropdown({
|
|
|
2112
2128
|
setUncontrolledSelectedValue,
|
|
2113
2129
|
value
|
|
2114
2130
|
]);
|
|
2115
|
-
const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
|
|
2131
|
+
const resolvedTriggerIcon = isLanguageVariant || isActionVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
|
|
2116
2132
|
const triggerLabel = selectedItem?.triggerLabel ?? selectedItem?.label ?? placeholder;
|
|
2117
2133
|
const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[color:var(--sofya-text-soft)]" : void 0;
|
|
2118
2134
|
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
@@ -2127,7 +2143,7 @@ function Dropdown({
|
|
|
2127
2143
|
Button,
|
|
2128
2144
|
{
|
|
2129
2145
|
type: "button",
|
|
2130
|
-
variant: isLanguageVariant ? "language" : "dropdown",
|
|
2146
|
+
variant: isLanguageVariant ? "language" : isActionVariant ? "ghost" : "dropdown",
|
|
2131
2147
|
languageLocale: selectedLanguageLocale,
|
|
2132
2148
|
"data-appearance": resolvedAppearance,
|
|
2133
2149
|
"data-trigger-size": triggerSize,
|
|
@@ -2139,8 +2155,9 @@ function Dropdown({
|
|
|
2139
2155
|
selectedTriggerToneClassName,
|
|
2140
2156
|
triggerClassName
|
|
2141
2157
|
),
|
|
2158
|
+
leftIcon: isActionVariant ? iconTrigger : void 0,
|
|
2142
2159
|
rightIcon: resolvedTriggerIcon,
|
|
2143
|
-
children: isLanguageVariant ? null : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
|
|
2160
|
+
children: isLanguageVariant || isActionVariant ? null : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
|
|
2144
2161
|
as: "span",
|
|
2145
2162
|
className: "block min-w-0 truncate text-inherit",
|
|
2146
2163
|
size: "body"
|
|
@@ -2170,43 +2187,121 @@ function Dropdown({
|
|
|
2170
2187
|
const itemLanguageLocale = resolveItemLanguageLocale(item);
|
|
2171
2188
|
const indicator = item.indicator ?? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownItemIndicator, {});
|
|
2172
2189
|
const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
|
|
2190
|
+
if (isActionVariant && item.subItems && item.subItems.length > 0) {
|
|
2191
|
+
const currentSubValue = subValues[item.value];
|
|
2192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DropdownMenuPrimitive.Sub, { children: [
|
|
2193
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
2194
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
2195
|
+
{
|
|
2196
|
+
disabled: item.disabled,
|
|
2197
|
+
className: cn(
|
|
2198
|
+
"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",
|
|
2199
|
+
"data-[highlighted]:bg-muted data-[state=open]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2200
|
+
dropdownItemClasses[variant],
|
|
2201
|
+
itemClassName
|
|
2202
|
+
),
|
|
2203
|
+
children: [
|
|
2204
|
+
itemIcon && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }),
|
|
2205
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(item.label, {
|
|
2206
|
+
as: "span",
|
|
2207
|
+
className: "block truncate text-inherit",
|
|
2208
|
+
size: "tiny"
|
|
2209
|
+
}) }),
|
|
2210
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center text-[color:var(--sofya-text-subtle)]", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "caret-right", size: 12 }) })
|
|
2211
|
+
]
|
|
2212
|
+
}
|
|
2213
|
+
),
|
|
2214
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2215
|
+
DropdownMenuPrimitive.SubContent,
|
|
2216
|
+
{
|
|
2217
|
+
sideOffset: 4,
|
|
2218
|
+
className: cn(
|
|
2219
|
+
"sofya-dropdown-content z-50 w-[224px] min-w-[224px] overflow-hidden border bg-card p-2 outline-none",
|
|
2220
|
+
"rounded-[20px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
2221
|
+
),
|
|
2222
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2223
|
+
DropdownMenuPrimitive.RadioGroup,
|
|
2224
|
+
{
|
|
2225
|
+
value: currentSubValue ?? "",
|
|
2226
|
+
onValueChange: (subValue) => {
|
|
2227
|
+
setSubValues((prev) => ({
|
|
2228
|
+
...prev,
|
|
2229
|
+
[item.value]: subValue
|
|
2230
|
+
}));
|
|
2231
|
+
setSelectedValue(subValue);
|
|
2232
|
+
},
|
|
2233
|
+
className: "grid gap-1",
|
|
2234
|
+
children: item.subItems.map((subItem) => {
|
|
2235
|
+
const isSubSelected = subItem.value === currentSubValue;
|
|
2236
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
2237
|
+
DropdownMenuPrimitive.RadioItem,
|
|
2238
|
+
{
|
|
2239
|
+
value: subItem.value,
|
|
2240
|
+
disabled: subItem.disabled,
|
|
2241
|
+
className: cn(
|
|
2242
|
+
"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",
|
|
2243
|
+
"data-[highlighted]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40"
|
|
2244
|
+
),
|
|
2245
|
+
children: [
|
|
2246
|
+
subItem.icon && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: subItem.icon }),
|
|
2247
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(subItem.label, {
|
|
2248
|
+
as: "span",
|
|
2249
|
+
className: "block truncate text-inherit",
|
|
2250
|
+
size: "tiny"
|
|
2251
|
+
}) }),
|
|
2252
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2253
|
+
"span",
|
|
2254
|
+
{
|
|
2255
|
+
"aria-hidden": "true",
|
|
2256
|
+
className: cn(
|
|
2257
|
+
"flex h-4 w-4 shrink-0 items-center justify-center text-primary transition-opacity duration-sofya ease-sofya",
|
|
2258
|
+
isSubSelected ? "opacity-100" : "opacity-0"
|
|
2259
|
+
),
|
|
2260
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownItemIndicator, {})
|
|
2261
|
+
}
|
|
2262
|
+
)
|
|
2263
|
+
]
|
|
2264
|
+
},
|
|
2265
|
+
subItem.value
|
|
2266
|
+
);
|
|
2267
|
+
})
|
|
2268
|
+
}
|
|
2269
|
+
)
|
|
2270
|
+
}
|
|
2271
|
+
) })
|
|
2272
|
+
] }, item.value);
|
|
2273
|
+
}
|
|
2173
2274
|
if (!usesDefaultListStyle) {
|
|
2174
|
-
return /* @__PURE__ */ (0, import_jsx_runtime12.
|
|
2275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
2175
2276
|
DropdownMenuPrimitive.RadioItem,
|
|
2176
2277
|
{
|
|
2177
2278
|
value: item.value,
|
|
2178
2279
|
disabled: item.disabled,
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
"
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
children: indicator
|
|
2205
|
-
}
|
|
2206
|
-
)
|
|
2207
|
-
] })
|
|
2208
|
-
}
|
|
2209
|
-
)
|
|
2280
|
+
className: cn(
|
|
2281
|
+
"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",
|
|
2282
|
+
"data-[highlighted]:bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2283
|
+
dropdownItemClasses[variant],
|
|
2284
|
+
itemClassName
|
|
2285
|
+
),
|
|
2286
|
+
children: [
|
|
2287
|
+
itemIcon && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }),
|
|
2288
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(item.label, {
|
|
2289
|
+
as: "span",
|
|
2290
|
+
className: "block truncate text-inherit",
|
|
2291
|
+
size: "tiny"
|
|
2292
|
+
}) }),
|
|
2293
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
2294
|
+
"span",
|
|
2295
|
+
{
|
|
2296
|
+
"aria-hidden": "true",
|
|
2297
|
+
className: cn(
|
|
2298
|
+
"flex h-4 w-4 shrink-0 items-center justify-center text-primary transition-opacity duration-sofya ease-sofya",
|
|
2299
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
2300
|
+
),
|
|
2301
|
+
children: indicator
|
|
2302
|
+
}
|
|
2303
|
+
)
|
|
2304
|
+
]
|
|
2210
2305
|
},
|
|
2211
2306
|
item.value
|
|
2212
2307
|
);
|
|
@@ -2261,256 +2356,15 @@ function Dropdown({
|
|
|
2261
2356
|
);
|
|
2262
2357
|
}
|
|
2263
2358
|
|
|
2264
|
-
// src/components/
|
|
2265
|
-
var
|
|
2266
|
-
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
2267
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2268
|
-
var Dialog = DialogPrimitive.Root;
|
|
2269
|
-
var DialogTrigger = DialogPrimitive.Trigger;
|
|
2270
|
-
var DialogPortal = DialogPrimitive.Portal;
|
|
2271
|
-
var DialogClose = DialogPrimitive.Close;
|
|
2272
|
-
var DialogInternalContext = React13.createContext({
|
|
2273
|
-
showCloseButton: true
|
|
2274
|
-
});
|
|
2275
|
-
var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2276
|
-
DialogPrimitive.Overlay,
|
|
2277
|
-
{
|
|
2278
|
-
ref,
|
|
2279
|
-
className: cn(
|
|
2280
|
-
"sofya-dialog-overlay fixed inset-0 z-50 bg-foreground/24 backdrop-blur-[6px]",
|
|
2281
|
-
className
|
|
2282
|
-
),
|
|
2283
|
-
...props
|
|
2284
|
-
}
|
|
2285
|
-
));
|
|
2286
|
-
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
2287
|
-
var DialogContent = React13.forwardRef(
|
|
2288
|
-
({
|
|
2289
|
-
className,
|
|
2290
|
-
children,
|
|
2291
|
-
cardClassName,
|
|
2292
|
-
overlayClassName,
|
|
2293
|
-
showCloseButton = true,
|
|
2294
|
-
variant = "card",
|
|
2295
|
-
...props
|
|
2296
|
-
}, ref) => {
|
|
2297
|
-
const dialogCardStyle = {
|
|
2298
|
-
"--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
|
|
2299
|
-
};
|
|
2300
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DialogPortal, { children: [
|
|
2301
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogOverlay, { className: overlayClassName }),
|
|
2302
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2303
|
-
DialogPrimitive.Content,
|
|
2304
|
-
{
|
|
2305
|
-
ref,
|
|
2306
|
-
className: cn(
|
|
2307
|
-
"sofya-dialog-content relative flex w-full max-w-[680px] max-h-[calc(100vh-2rem)] outline-none",
|
|
2308
|
-
className
|
|
2309
|
-
),
|
|
2310
|
-
...props,
|
|
2311
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2312
|
-
Card,
|
|
2313
|
-
{
|
|
2314
|
-
variant,
|
|
2315
|
-
className: cn(
|
|
2316
|
-
"flex max-h-[inherit] min-h-0 w-full flex-col gap-6 overflow-y-auto overflow-x-hidden p-6",
|
|
2317
|
-
cardClassName
|
|
2318
|
-
),
|
|
2319
|
-
style: dialogCardStyle,
|
|
2320
|
-
children
|
|
2321
|
-
}
|
|
2322
|
-
)
|
|
2323
|
-
}
|
|
2324
|
-
) })
|
|
2325
|
-
] }) });
|
|
2326
|
-
}
|
|
2327
|
-
);
|
|
2328
|
-
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
2329
|
-
function DialogHeader({ className, children, ...props }) {
|
|
2330
|
-
const { showCloseButton } = React13.useContext(DialogInternalContext);
|
|
2331
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
2332
|
-
"div",
|
|
2333
|
-
{
|
|
2334
|
-
className: cn("flex w-full items-start justify-between gap-4", className),
|
|
2335
|
-
...props,
|
|
2336
|
-
children: [
|
|
2337
|
-
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-2 text-left", children }),
|
|
2338
|
-
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2339
|
-
Button,
|
|
2340
|
-
{
|
|
2341
|
-
type: "button",
|
|
2342
|
-
variant: "ghost",
|
|
2343
|
-
size: "icon",
|
|
2344
|
-
"aria-label": "Close",
|
|
2345
|
-
leftIcon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "x", size: 18 }),
|
|
2346
|
-
className: "shrink-0 text-muted-foreground hover:text-foreground"
|
|
2347
|
-
}
|
|
2348
|
-
) }) : null
|
|
2349
|
-
]
|
|
2350
|
-
}
|
|
2351
|
-
);
|
|
2352
|
-
}
|
|
2353
|
-
function DialogBody({ className, ...props }) {
|
|
2354
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2355
|
-
"div",
|
|
2356
|
-
{
|
|
2357
|
-
className: cn("flex flex-col gap-4", className),
|
|
2358
|
-
...props
|
|
2359
|
-
}
|
|
2360
|
-
);
|
|
2361
|
-
}
|
|
2362
|
-
function DialogFooter({ className, ...props }) {
|
|
2363
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2364
|
-
"div",
|
|
2365
|
-
{
|
|
2366
|
-
className: cn("flex items-center justify-end gap-2", className),
|
|
2367
|
-
...props
|
|
2368
|
-
}
|
|
2369
|
-
);
|
|
2370
|
-
}
|
|
2371
|
-
var DialogCancel = React13.forwardRef(
|
|
2372
|
-
({ type = "button", variant = "ghost", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Button, { ref, type, variant, ...props }) })
|
|
2373
|
-
);
|
|
2374
|
-
DialogCancel.displayName = "DialogCancel";
|
|
2375
|
-
var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2376
|
-
DialogPrimitive.Title,
|
|
2377
|
-
{
|
|
2378
|
-
ref,
|
|
2379
|
-
className: cn("text-card-foreground", className),
|
|
2380
|
-
...props,
|
|
2381
|
-
children: renderTextContent(children, {
|
|
2382
|
-
as: "span",
|
|
2383
|
-
className: "block text-card-foreground",
|
|
2384
|
-
size: "h3"
|
|
2385
|
-
})
|
|
2386
|
-
}
|
|
2387
|
-
));
|
|
2388
|
-
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
2389
|
-
var DialogDescription = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2390
|
-
DialogPrimitive.Description,
|
|
2391
|
-
{
|
|
2392
|
-
ref,
|
|
2393
|
-
className: cn("text-muted-foreground", className),
|
|
2394
|
-
...props,
|
|
2395
|
-
children: renderTextContent(children, {
|
|
2396
|
-
as: "span",
|
|
2397
|
-
className: "block text-muted-foreground",
|
|
2398
|
-
size: "body"
|
|
2399
|
-
})
|
|
2400
|
-
}
|
|
2401
|
-
));
|
|
2402
|
-
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
2403
|
-
|
|
2404
|
-
// src/components/empty.tsx
|
|
2405
|
-
var React14 = __toESM(require("react"), 1);
|
|
2406
|
-
var import_class_variance_authority5 = require("class-variance-authority");
|
|
2407
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
2408
|
-
var emptyMediaVariantOptions = ["default", "icon"];
|
|
2409
|
-
var emptyMediaVariants = (0, import_class_variance_authority5.cva)(
|
|
2410
|
-
"inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
|
|
2411
|
-
{
|
|
2412
|
-
variants: {
|
|
2413
|
-
variant: {
|
|
2414
|
-
default: "[&_img]:max-w-full [&_svg]:shrink-0 [&_svg]:text-primary",
|
|
2415
|
-
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"
|
|
2416
|
-
}
|
|
2417
|
-
},
|
|
2418
|
-
defaultVariants: {
|
|
2419
|
-
variant: "default"
|
|
2420
|
-
}
|
|
2421
|
-
}
|
|
2422
|
-
);
|
|
2423
|
-
var EmptyMedia = React14.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
|
|
2424
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
|
|
2425
|
-
});
|
|
2426
|
-
function EmptyHeader({ className, ...props }) {
|
|
2427
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2428
|
-
"div",
|
|
2429
|
-
{
|
|
2430
|
-
className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
|
|
2431
|
-
...props
|
|
2432
|
-
}
|
|
2433
|
-
);
|
|
2434
|
-
}
|
|
2435
|
-
function EmptyTitle({ children, className, ...props }) {
|
|
2436
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2437
|
-
"h2",
|
|
2438
|
-
{
|
|
2439
|
-
className: cn("text-foreground", className),
|
|
2440
|
-
...props,
|
|
2441
|
-
children: renderTextContent(children, {
|
|
2442
|
-
as: "span",
|
|
2443
|
-
className: "block text-foreground",
|
|
2444
|
-
size: "h4"
|
|
2445
|
-
})
|
|
2446
|
-
}
|
|
2447
|
-
);
|
|
2448
|
-
}
|
|
2449
|
-
function EmptyDescription({
|
|
2450
|
-
children,
|
|
2451
|
-
className,
|
|
2452
|
-
...props
|
|
2453
|
-
}) {
|
|
2454
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2455
|
-
"p",
|
|
2456
|
-
{
|
|
2457
|
-
className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
|
|
2458
|
-
...props,
|
|
2459
|
-
children: renderTextContent(children, {
|
|
2460
|
-
as: "span",
|
|
2461
|
-
className: "inline-block whitespace-nowrap text-muted-foreground",
|
|
2462
|
-
size: "body"
|
|
2463
|
-
})
|
|
2464
|
-
}
|
|
2465
|
-
);
|
|
2466
|
-
}
|
|
2467
|
-
function EmptyContent({ children, className, ...props }) {
|
|
2468
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2469
|
-
"div",
|
|
2470
|
-
{
|
|
2471
|
-
className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
|
|
2472
|
-
...props,
|
|
2473
|
-
children: renderTextContent(children, {
|
|
2474
|
-
as: "span"
|
|
2475
|
-
})
|
|
2476
|
-
}
|
|
2477
|
-
);
|
|
2478
|
-
}
|
|
2479
|
-
var Empty = React14.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
|
|
2480
|
-
const hasCustomChildren = React14.Children.count(children) > 0;
|
|
2481
|
-
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2482
|
-
"div",
|
|
2483
|
-
{
|
|
2484
|
-
ref,
|
|
2485
|
-
className: cn(
|
|
2486
|
-
"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",
|
|
2487
|
-
className
|
|
2488
|
-
),
|
|
2489
|
-
...props,
|
|
2490
|
-
children: hasCustomChildren ? children : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
2491
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(EmptyHeader, { children: [
|
|
2492
|
-
media ?? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "folders", size: 28 }) }),
|
|
2493
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyTitle, { children: title ?? "Nada por aqui" }),
|
|
2494
|
-
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
|
|
2495
|
-
] }),
|
|
2496
|
-
content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyContent, { children: content }) : null
|
|
2497
|
-
] })
|
|
2498
|
-
}
|
|
2499
|
-
);
|
|
2500
|
-
});
|
|
2501
|
-
Empty.displayName = "Empty";
|
|
2502
|
-
EmptyMedia.displayName = "EmptyMedia";
|
|
2503
|
-
EmptyHeader.displayName = "EmptyHeader";
|
|
2504
|
-
EmptyTitle.displayName = "EmptyTitle";
|
|
2505
|
-
EmptyDescription.displayName = "EmptyDescription";
|
|
2506
|
-
EmptyContent.displayName = "EmptyContent";
|
|
2359
|
+
// src/components/dropdown-search.tsx
|
|
2360
|
+
var React18 = __toESM(require("react"), 1);
|
|
2507
2361
|
|
|
2508
2362
|
// src/components/input.tsx
|
|
2509
|
-
var
|
|
2363
|
+
var React15 = __toESM(require("react"), 1);
|
|
2510
2364
|
var import_input_otp2 = require("input-otp");
|
|
2511
2365
|
|
|
2512
2366
|
// src/lib/field-shell.tsx
|
|
2513
|
-
var
|
|
2367
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
2514
2368
|
function FieldLabel({
|
|
2515
2369
|
children,
|
|
2516
2370
|
className,
|
|
@@ -2525,7 +2379,7 @@ function FieldLabel({
|
|
|
2525
2379
|
return null;
|
|
2526
2380
|
}
|
|
2527
2381
|
const Component = htmlFor ? "label" : "div";
|
|
2528
|
-
return /* @__PURE__ */ (0,
|
|
2382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2529
2383
|
Component,
|
|
2530
2384
|
{
|
|
2531
2385
|
className: cn("text-[color:var(--sofya-text-default)]", className),
|
|
@@ -2552,8 +2406,8 @@ function FieldShell({
|
|
|
2552
2406
|
if (!label && !containerClassName) {
|
|
2553
2407
|
return control;
|
|
2554
2408
|
}
|
|
2555
|
-
return /* @__PURE__ */ (0,
|
|
2556
|
-
label ? /* @__PURE__ */ (0,
|
|
2409
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: cn("grid w-full gap-2", containerClassName), children: [
|
|
2410
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
2557
2411
|
FieldLabel,
|
|
2558
2412
|
{
|
|
2559
2413
|
className: labelClassName,
|
|
@@ -2569,10 +2423,10 @@ function FieldShell({
|
|
|
2569
2423
|
}
|
|
2570
2424
|
|
|
2571
2425
|
// src/components/input-upload.tsx
|
|
2572
|
-
var
|
|
2426
|
+
var React13 = __toESM(require("react"), 1);
|
|
2573
2427
|
var import_icons_react4 = require("@tabler/icons-react");
|
|
2574
2428
|
var import_react2 = require("motion/react");
|
|
2575
|
-
var
|
|
2429
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
2576
2430
|
var uploadKindOptions = ["document", "image", "video"];
|
|
2577
2431
|
var uploadAcceptByKind = {
|
|
2578
2432
|
document: ".pdf,.doc,.docx,.txt,.rtf,.odt,.jpg,.jpeg,.png,.webp,.gif",
|
|
@@ -2666,7 +2520,7 @@ function resolveUploadFileVisualKind(file, fallbackKind) {
|
|
|
2666
2520
|
return "document";
|
|
2667
2521
|
}
|
|
2668
2522
|
function UploadGlyph({ className }) {
|
|
2669
|
-
return /* @__PURE__ */ (0,
|
|
2523
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2670
2524
|
import_icons_react4.IconUpload,
|
|
2671
2525
|
{
|
|
2672
2526
|
"aria-hidden": "true",
|
|
@@ -2679,7 +2533,7 @@ function UploadFileTypeGlyph({
|
|
|
2679
2533
|
kind
|
|
2680
2534
|
}) {
|
|
2681
2535
|
if (kind === "image") {
|
|
2682
|
-
return /* @__PURE__ */ (0,
|
|
2536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2683
2537
|
import_icons_react4.IconPhoto,
|
|
2684
2538
|
{
|
|
2685
2539
|
"aria-hidden": "true",
|
|
@@ -2688,7 +2542,7 @@ function UploadFileTypeGlyph({
|
|
|
2688
2542
|
);
|
|
2689
2543
|
}
|
|
2690
2544
|
if (kind === "video") {
|
|
2691
|
-
return /* @__PURE__ */ (0,
|
|
2545
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2692
2546
|
import_icons_react4.IconVideo,
|
|
2693
2547
|
{
|
|
2694
2548
|
"aria-hidden": "true",
|
|
@@ -2696,7 +2550,7 @@ function UploadFileTypeGlyph({
|
|
|
2696
2550
|
}
|
|
2697
2551
|
);
|
|
2698
2552
|
}
|
|
2699
|
-
return /* @__PURE__ */ (0,
|
|
2553
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2700
2554
|
import_icons_react4.IconFileText,
|
|
2701
2555
|
{
|
|
2702
2556
|
"aria-hidden": "true",
|
|
@@ -2704,7 +2558,7 @@ function UploadFileTypeGlyph({
|
|
|
2704
2558
|
}
|
|
2705
2559
|
);
|
|
2706
2560
|
}
|
|
2707
|
-
var UploadInputControl =
|
|
2561
|
+
var UploadInputControl = React13.forwardRef(function UploadInputControl2({
|
|
2708
2562
|
accept,
|
|
2709
2563
|
"aria-label": ariaLabel,
|
|
2710
2564
|
className,
|
|
@@ -2718,17 +2572,17 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2718
2572
|
resolvedId,
|
|
2719
2573
|
...uploadProps
|
|
2720
2574
|
}, ref) {
|
|
2721
|
-
const inputRef =
|
|
2722
|
-
const [isDragActive, setIsDragActive] =
|
|
2723
|
-
const [selectedFiles, setSelectedFiles] =
|
|
2575
|
+
const inputRef = React13.useRef(null);
|
|
2576
|
+
const [isDragActive, setIsDragActive] = React13.useState(false);
|
|
2577
|
+
const [selectedFiles, setSelectedFiles] = React13.useState([]);
|
|
2724
2578
|
const resolvedMultiple = multiple ?? true;
|
|
2725
2579
|
const prefersReducedMotion = (0, import_react2.useReducedMotion)();
|
|
2726
|
-
|
|
2580
|
+
React13.useImperativeHandle(ref, () => inputRef.current);
|
|
2727
2581
|
const resolvedAccept = accept ?? uploadAcceptByKind[uploadKind];
|
|
2728
2582
|
const resolvedAriaLabel = ariaLabel ?? uploadAriaLabelByKind[uploadKind];
|
|
2729
2583
|
const resolvedTitle = uploadTitle ?? "Arraste arquivos aqui ou clique para selecionar";
|
|
2730
2584
|
const resolvedDescription = uploadDescription ?? uploadDescriptionByKind[uploadKind];
|
|
2731
|
-
const syncSelectedFiles =
|
|
2585
|
+
const syncSelectedFiles = React13.useCallback(
|
|
2732
2586
|
(files) => {
|
|
2733
2587
|
const normalizedFiles = resolvedMultiple ? files : files.slice(0, 1);
|
|
2734
2588
|
setSelectedFiles(normalizedFiles);
|
|
@@ -2736,7 +2590,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2736
2590
|
},
|
|
2737
2591
|
[onFilesChange, resolvedMultiple]
|
|
2738
2592
|
);
|
|
2739
|
-
const applyFilesToInput =
|
|
2593
|
+
const applyFilesToInput = React13.useCallback((files) => {
|
|
2740
2594
|
const inputElement = inputRef.current;
|
|
2741
2595
|
if (!inputElement || typeof DataTransfer === "undefined") {
|
|
2742
2596
|
return false;
|
|
@@ -2755,7 +2609,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2755
2609
|
return false;
|
|
2756
2610
|
}
|
|
2757
2611
|
}, []);
|
|
2758
|
-
const handleInputChange =
|
|
2612
|
+
const handleInputChange = React13.useCallback(
|
|
2759
2613
|
(event) => {
|
|
2760
2614
|
const nextFiles = mergeUploadFiles(
|
|
2761
2615
|
selectedFiles,
|
|
@@ -2774,12 +2628,12 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2774
2628
|
syncSelectedFiles
|
|
2775
2629
|
]
|
|
2776
2630
|
);
|
|
2777
|
-
const openPicker =
|
|
2631
|
+
const openPicker = React13.useCallback(() => {
|
|
2778
2632
|
if (!disabled) {
|
|
2779
2633
|
inputRef.current?.click();
|
|
2780
2634
|
}
|
|
2781
2635
|
}, [disabled]);
|
|
2782
|
-
const handleKeyDown =
|
|
2636
|
+
const handleKeyDown = React13.useCallback(
|
|
2783
2637
|
(event) => {
|
|
2784
2638
|
if (disabled) {
|
|
2785
2639
|
return;
|
|
@@ -2791,7 +2645,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2791
2645
|
},
|
|
2792
2646
|
[disabled, openPicker]
|
|
2793
2647
|
);
|
|
2794
|
-
const handleDragEnter =
|
|
2648
|
+
const handleDragEnter = React13.useCallback(
|
|
2795
2649
|
(event) => {
|
|
2796
2650
|
event.preventDefault();
|
|
2797
2651
|
if (!disabled) {
|
|
@@ -2800,7 +2654,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2800
2654
|
},
|
|
2801
2655
|
[disabled]
|
|
2802
2656
|
);
|
|
2803
|
-
const handleDragLeave =
|
|
2657
|
+
const handleDragLeave = React13.useCallback(
|
|
2804
2658
|
(event) => {
|
|
2805
2659
|
if (disabled) {
|
|
2806
2660
|
return;
|
|
@@ -2813,7 +2667,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2813
2667
|
},
|
|
2814
2668
|
[disabled]
|
|
2815
2669
|
);
|
|
2816
|
-
const handleDragOver =
|
|
2670
|
+
const handleDragOver = React13.useCallback(
|
|
2817
2671
|
(event) => {
|
|
2818
2672
|
event.preventDefault();
|
|
2819
2673
|
if (disabled) {
|
|
@@ -2824,7 +2678,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2824
2678
|
},
|
|
2825
2679
|
[disabled]
|
|
2826
2680
|
);
|
|
2827
|
-
const handleDrop =
|
|
2681
|
+
const handleDrop = React13.useCallback(
|
|
2828
2682
|
(event) => {
|
|
2829
2683
|
event.preventDefault();
|
|
2830
2684
|
if (disabled) {
|
|
@@ -2857,7 +2711,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2857
2711
|
syncSelectedFiles
|
|
2858
2712
|
]
|
|
2859
2713
|
);
|
|
2860
|
-
const handleRemoveFile =
|
|
2714
|
+
const handleRemoveFile = React13.useCallback(
|
|
2861
2715
|
(fileIndex) => {
|
|
2862
2716
|
if (disabled) {
|
|
2863
2717
|
return;
|
|
@@ -2868,8 +2722,8 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2868
2722
|
},
|
|
2869
2723
|
[applyFilesToInput, disabled, selectedFiles, syncSelectedFiles]
|
|
2870
2724
|
);
|
|
2871
|
-
return /* @__PURE__ */ (0,
|
|
2872
|
-
/* @__PURE__ */ (0,
|
|
2725
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "grid w-full gap-4", children: [
|
|
2726
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2873
2727
|
"input",
|
|
2874
2728
|
{
|
|
2875
2729
|
...uploadProps,
|
|
@@ -2884,7 +2738,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2884
2738
|
onChange: handleInputChange
|
|
2885
2739
|
}
|
|
2886
2740
|
),
|
|
2887
|
-
/* @__PURE__ */ (0,
|
|
2741
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
2888
2742
|
"label",
|
|
2889
2743
|
{
|
|
2890
2744
|
"aria-disabled": disabled || void 0,
|
|
@@ -2904,8 +2758,8 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2904
2758
|
onDrop: handleDrop,
|
|
2905
2759
|
onKeyDown: handleKeyDown,
|
|
2906
2760
|
children: [
|
|
2907
|
-
/* @__PURE__ */ (0,
|
|
2908
|
-
/* @__PURE__ */ (0,
|
|
2761
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(UploadGlyph, { className: "size-[18px]" }) }),
|
|
2762
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
|
|
2909
2763
|
as: "span",
|
|
2910
2764
|
className: "block text-[color:var(--sofya-text-default)]",
|
|
2911
2765
|
size: "body",
|
|
@@ -2913,7 +2767,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2913
2767
|
fontWeight: 500
|
|
2914
2768
|
}
|
|
2915
2769
|
}) }),
|
|
2916
|
-
resolvedDescription ? /* @__PURE__ */ (0,
|
|
2770
|
+
resolvedDescription ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
|
|
2917
2771
|
as: "span",
|
|
2918
2772
|
className: "block text-[color:var(--sofya-text-subtle)]",
|
|
2919
2773
|
size: "extra-tiny"
|
|
@@ -2921,9 +2775,9 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2921
2775
|
]
|
|
2922
2776
|
}
|
|
2923
2777
|
),
|
|
2924
|
-
/* @__PURE__ */ (0,
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react2.AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
|
|
2925
2779
|
const fileKey = resolveUploadFileSignature(file);
|
|
2926
|
-
return /* @__PURE__ */ (0,
|
|
2780
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2927
2781
|
import_react2.motion.div,
|
|
2928
2782
|
{
|
|
2929
2783
|
role: "listitem",
|
|
@@ -2932,16 +2786,16 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2932
2786
|
animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
|
|
2933
2787
|
exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
|
|
2934
2788
|
transition: uploadListItemTransition,
|
|
2935
|
-
children: /* @__PURE__ */ (0,
|
|
2936
|
-
/* @__PURE__ */ (0,
|
|
2789
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Card, { variant: "card", className: "flex items-center gap-4 p-4", children: [
|
|
2790
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2937
2791
|
UploadFileTypeGlyph,
|
|
2938
2792
|
{
|
|
2939
2793
|
className: "size-[18px]",
|
|
2940
2794
|
kind: resolveUploadFileVisualKind(file, uploadKind)
|
|
2941
2795
|
}
|
|
2942
2796
|
) }),
|
|
2943
|
-
/* @__PURE__ */ (0,
|
|
2944
|
-
/* @__PURE__ */ (0,
|
|
2797
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
2798
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
|
|
2945
2799
|
as: "span",
|
|
2946
2800
|
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
2947
2801
|
size: "body",
|
|
@@ -2949,7 +2803,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2949
2803
|
fontWeight: 500
|
|
2950
2804
|
}
|
|
2951
2805
|
}) }),
|
|
2952
|
-
/* @__PURE__ */ (0,
|
|
2806
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
|
|
2953
2807
|
`${resolveUploadFileBadge(
|
|
2954
2808
|
file
|
|
2955
2809
|
)} \xB7 ${formatUploadFileSize(file.size)}`,
|
|
@@ -2960,7 +2814,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2960
2814
|
}
|
|
2961
2815
|
) })
|
|
2962
2816
|
] }),
|
|
2963
|
-
/* @__PURE__ */ (0,
|
|
2817
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2964
2818
|
"button",
|
|
2965
2819
|
{
|
|
2966
2820
|
"aria-label": `Remover ${file.name}`,
|
|
@@ -2972,7 +2826,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2972
2826
|
event.stopPropagation();
|
|
2973
2827
|
handleRemoveFile(index);
|
|
2974
2828
|
},
|
|
2975
|
-
children: /* @__PURE__ */ (0,
|
|
2829
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
2976
2830
|
Icon,
|
|
2977
2831
|
{
|
|
2978
2832
|
"aria-hidden": "true",
|
|
@@ -2993,11 +2847,11 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2993
2847
|
UploadInputControl.displayName = "UploadInputControl";
|
|
2994
2848
|
|
|
2995
2849
|
// src/components/input-otp.tsx
|
|
2996
|
-
var
|
|
2850
|
+
var React14 = __toESM(require("react"), 1);
|
|
2997
2851
|
var import_input_otp = require("input-otp");
|
|
2998
|
-
var
|
|
2999
|
-
var InputOTP =
|
|
3000
|
-
return /* @__PURE__ */ (0,
|
|
2852
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
2853
|
+
var InputOTP = React14.forwardRef(({ className, containerClassName, ...props }, ref) => {
|
|
2854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3001
2855
|
import_input_otp.OTPInput,
|
|
3002
2856
|
{
|
|
3003
2857
|
ref,
|
|
@@ -3011,8 +2865,8 @@ var InputOTP = React16.forwardRef(({ className, containerClassName, ...props },
|
|
|
3011
2865
|
);
|
|
3012
2866
|
});
|
|
3013
2867
|
InputOTP.displayName = "InputOTP";
|
|
3014
|
-
var InputOTPGroup =
|
|
3015
|
-
return /* @__PURE__ */ (0,
|
|
2868
|
+
var InputOTPGroup = React14.forwardRef(({ className, ...props }, ref) => {
|
|
2869
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3016
2870
|
"div",
|
|
3017
2871
|
{
|
|
3018
2872
|
ref,
|
|
@@ -3025,12 +2879,12 @@ var InputOTPGroup = React16.forwardRef(({ className, ...props }, ref) => {
|
|
|
3025
2879
|
);
|
|
3026
2880
|
});
|
|
3027
2881
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
3028
|
-
var InputOTPSlot =
|
|
2882
|
+
var InputOTPSlot = React14.forwardRef(
|
|
3029
2883
|
({ className, index, ...props }, ref) => {
|
|
3030
|
-
const otpContext =
|
|
2884
|
+
const otpContext = React14.useContext(import_input_otp.OTPInputContext);
|
|
3031
2885
|
const slot = otpContext.slots[index];
|
|
3032
2886
|
if (!slot) {
|
|
3033
|
-
return /* @__PURE__ */ (0,
|
|
2887
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3034
2888
|
"div",
|
|
3035
2889
|
{
|
|
3036
2890
|
ref,
|
|
@@ -3042,7 +2896,7 @@ var InputOTPSlot = React16.forwardRef(
|
|
|
3042
2896
|
}
|
|
3043
2897
|
);
|
|
3044
2898
|
}
|
|
3045
|
-
return /* @__PURE__ */ (0,
|
|
2899
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
3046
2900
|
"div",
|
|
3047
2901
|
{
|
|
3048
2902
|
ref,
|
|
@@ -3054,15 +2908,15 @@ var InputOTPSlot = React16.forwardRef(
|
|
|
3054
2908
|
...props,
|
|
3055
2909
|
children: [
|
|
3056
2910
|
slot.char ?? null,
|
|
3057
|
-
slot.hasFakeCaret ? /* @__PURE__ */ (0,
|
|
2911
|
+
slot.hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
|
|
3058
2912
|
]
|
|
3059
2913
|
}
|
|
3060
2914
|
);
|
|
3061
2915
|
}
|
|
3062
2916
|
);
|
|
3063
2917
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
3064
|
-
var InputOTPSeparator =
|
|
3065
|
-
return /* @__PURE__ */ (0,
|
|
2918
|
+
var InputOTPSeparator = React14.forwardRef(({ className, ...props }, ref) => {
|
|
2919
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
3066
2920
|
"div",
|
|
3067
2921
|
{
|
|
3068
2922
|
ref,
|
|
@@ -3072,22 +2926,22 @@ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
|
|
|
3072
2926
|
className
|
|
3073
2927
|
),
|
|
3074
2928
|
...props,
|
|
3075
|
-
children: /* @__PURE__ */ (0,
|
|
2929
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { "aria-hidden": "true", children: "." })
|
|
3076
2930
|
}
|
|
3077
2931
|
);
|
|
3078
2932
|
});
|
|
3079
2933
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
3080
2934
|
|
|
3081
2935
|
// src/components/input.tsx
|
|
3082
|
-
var
|
|
2936
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
3083
2937
|
var inputVariantOptions = [
|
|
3084
2938
|
"default",
|
|
3085
2939
|
"search",
|
|
3086
2940
|
"otp",
|
|
3087
2941
|
"upload"
|
|
3088
2942
|
];
|
|
3089
|
-
var Input =
|
|
3090
|
-
const generatedId =
|
|
2943
|
+
var Input = React15.forwardRef((props, ref) => {
|
|
2944
|
+
const generatedId = React15.useId();
|
|
3091
2945
|
const resolvedId = props.id ?? generatedId;
|
|
3092
2946
|
const variant = props.variant ?? "default";
|
|
3093
2947
|
if (variant === "otp") {
|
|
@@ -3115,7 +2969,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3115
2969
|
);
|
|
3116
2970
|
const hasTrailingGroup = resolvedSplitIndex < resolvedLength;
|
|
3117
2971
|
const otpAriaLabel = otpProps["aria-label"] ?? "Verification code";
|
|
3118
|
-
const otpControl = /* @__PURE__ */ (0,
|
|
2972
|
+
const otpControl = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
3119
2973
|
InputOTP,
|
|
3120
2974
|
{
|
|
3121
2975
|
ref,
|
|
@@ -3128,7 +2982,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3128
2982
|
containerClassName: className2,
|
|
3129
2983
|
...otpProps,
|
|
3130
2984
|
children: [
|
|
3131
|
-
/* @__PURE__ */ (0,
|
|
2985
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3132
2986
|
InputOTPSlot,
|
|
3133
2987
|
{
|
|
3134
2988
|
className: otpSlotClassName,
|
|
@@ -3136,10 +2990,10 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3136
2990
|
},
|
|
3137
2991
|
`otp-leading-${index}`
|
|
3138
2992
|
)) }),
|
|
3139
|
-
hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ (0,
|
|
3140
|
-
hasTrailingGroup ? /* @__PURE__ */ (0,
|
|
2993
|
+
hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
|
|
2994
|
+
hasTrailingGroup ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
|
|
3141
2995
|
{ length: resolvedLength - resolvedSplitIndex },
|
|
3142
|
-
(_, index) => /* @__PURE__ */ (0,
|
|
2996
|
+
(_, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3143
2997
|
InputOTPSlot,
|
|
3144
2998
|
{
|
|
3145
2999
|
className: otpSlotClassName,
|
|
@@ -3151,7 +3005,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3151
3005
|
]
|
|
3152
3006
|
}
|
|
3153
3007
|
);
|
|
3154
|
-
return /* @__PURE__ */ (0,
|
|
3008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3155
3009
|
FieldShell,
|
|
3156
3010
|
{
|
|
3157
3011
|
containerClassName: containerClassName2,
|
|
@@ -3170,7 +3024,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3170
3024
|
variant: _variant2,
|
|
3171
3025
|
...uploadProps
|
|
3172
3026
|
} = props;
|
|
3173
|
-
const uploadControl = /* @__PURE__ */ (0,
|
|
3027
|
+
const uploadControl = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3174
3028
|
UploadInputControl,
|
|
3175
3029
|
{
|
|
3176
3030
|
...uploadProps,
|
|
@@ -3178,7 +3032,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3178
3032
|
resolvedId
|
|
3179
3033
|
}
|
|
3180
3034
|
);
|
|
3181
|
-
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ (0,
|
|
3035
|
+
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
3182
3036
|
renderTextContent(label2, {
|
|
3183
3037
|
as: "span",
|
|
3184
3038
|
className: "text-[color:var(--sofya-text-default)]",
|
|
@@ -3187,13 +3041,13 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3187
3041
|
fontWeight: 700
|
|
3188
3042
|
}
|
|
3189
3043
|
}),
|
|
3190
|
-
uploadOptionalLabel ? /* @__PURE__ */ (0,
|
|
3044
|
+
uploadOptionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(uploadOptionalLabel, {
|
|
3191
3045
|
as: "span",
|
|
3192
3046
|
className: "text-[color:var(--sofya-text-subtle)]",
|
|
3193
3047
|
size: "tiny"
|
|
3194
3048
|
}) }) : null
|
|
3195
3049
|
] }) : void 0;
|
|
3196
|
-
return /* @__PURE__ */ (0,
|
|
3050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3197
3051
|
FieldShell,
|
|
3198
3052
|
{
|
|
3199
3053
|
containerClassName: containerClassName2,
|
|
@@ -3216,8 +3070,8 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3216
3070
|
const isSearch = variant === "search";
|
|
3217
3071
|
const resolvedType = type ?? (isSearch ? "search" : void 0);
|
|
3218
3072
|
const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
|
|
3219
|
-
const nativeControl = isSearch ? /* @__PURE__ */ (0,
|
|
3220
|
-
/* @__PURE__ */ (0,
|
|
3073
|
+
const nativeControl = isSearch ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("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: [
|
|
3074
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3221
3075
|
Icon,
|
|
3222
3076
|
{
|
|
3223
3077
|
"aria-hidden": "true",
|
|
@@ -3226,7 +3080,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3226
3080
|
size: 32
|
|
3227
3081
|
}
|
|
3228
3082
|
),
|
|
3229
|
-
/* @__PURE__ */ (0,
|
|
3083
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3230
3084
|
"input",
|
|
3231
3085
|
{
|
|
3232
3086
|
id: resolvedId,
|
|
@@ -3242,39 +3096,587 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3242
3096
|
placeholder: nativeProps.placeholder ?? "Search"
|
|
3243
3097
|
}
|
|
3244
3098
|
)
|
|
3245
|
-
] }) : /* @__PURE__ */ (0,
|
|
3099
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3246
3100
|
"input",
|
|
3247
3101
|
{
|
|
3248
|
-
id: resolvedId,
|
|
3102
|
+
id: resolvedId,
|
|
3103
|
+
ref,
|
|
3104
|
+
type: resolvedType,
|
|
3105
|
+
className: cn(
|
|
3106
|
+
"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-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 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",
|
|
3107
|
+
className
|
|
3108
|
+
),
|
|
3109
|
+
...nativeProps,
|
|
3110
|
+
"aria-label": ariaLabel
|
|
3111
|
+
}
|
|
3112
|
+
);
|
|
3113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
3114
|
+
FieldShell,
|
|
3115
|
+
{
|
|
3116
|
+
containerClassName,
|
|
3117
|
+
control: nativeControl,
|
|
3118
|
+
label: isSearch ? void 0 : label,
|
|
3119
|
+
labelClassName: isSearch ? void 0 : labelClassName,
|
|
3120
|
+
labelHtmlFor: isSearch ? void 0 : resolvedId
|
|
3121
|
+
}
|
|
3122
|
+
);
|
|
3123
|
+
});
|
|
3124
|
+
Input.displayName = "Input";
|
|
3125
|
+
|
|
3126
|
+
// src/components/popover.tsx
|
|
3127
|
+
var React16 = __toESM(require("react"), 1);
|
|
3128
|
+
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
3129
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
3130
|
+
var Popover = PopoverPrimitive.Root;
|
|
3131
|
+
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
3132
|
+
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3133
|
+
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3134
|
+
var PopoverClose = PopoverPrimitive.Close;
|
|
3135
|
+
var PopoverContent = React16.forwardRef(function PopoverContent2({
|
|
3136
|
+
align = "center",
|
|
3137
|
+
className,
|
|
3138
|
+
collisionPadding = 8,
|
|
3139
|
+
sideOffset = 8,
|
|
3140
|
+
...props
|
|
3141
|
+
}, ref) {
|
|
3142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
3143
|
+
PopoverPrimitive.Content,
|
|
3144
|
+
{
|
|
3145
|
+
ref,
|
|
3146
|
+
align,
|
|
3147
|
+
collisionPadding,
|
|
3148
|
+
sideOffset,
|
|
3149
|
+
"data-slot": "popover-content",
|
|
3150
|
+
className: cn(
|
|
3151
|
+
"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",
|
|
3152
|
+
className
|
|
3153
|
+
),
|
|
3154
|
+
...props
|
|
3155
|
+
}
|
|
3156
|
+
) });
|
|
3157
|
+
});
|
|
3158
|
+
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
3159
|
+
var PopoverTitle = React16.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
|
|
3160
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
3161
|
+
"h4",
|
|
3162
|
+
{
|
|
3163
|
+
ref,
|
|
3164
|
+
"data-slot": "popover-title",
|
|
3165
|
+
className: cn("text-[hsl(var(--sofya-popover-foreground))]", className),
|
|
3166
|
+
...props,
|
|
3167
|
+
children: renderTextContent(children, {
|
|
3168
|
+
as: "span",
|
|
3169
|
+
className: "block text-[hsl(var(--sofya-popover-foreground))]",
|
|
3170
|
+
size: "h4"
|
|
3171
|
+
})
|
|
3172
|
+
}
|
|
3173
|
+
);
|
|
3174
|
+
});
|
|
3175
|
+
PopoverTitle.displayName = "PopoverTitle";
|
|
3176
|
+
var PopoverDescription = React16.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
|
|
3177
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
3178
|
+
"p",
|
|
3179
|
+
{
|
|
3180
|
+
ref,
|
|
3181
|
+
"data-slot": "popover-description",
|
|
3182
|
+
className: cn("text-muted-foreground", className),
|
|
3183
|
+
...props,
|
|
3184
|
+
children: renderTextContent(children, {
|
|
3185
|
+
as: "span",
|
|
3186
|
+
className: "block text-muted-foreground",
|
|
3187
|
+
size: "body"
|
|
3188
|
+
})
|
|
3189
|
+
}
|
|
3190
|
+
);
|
|
3191
|
+
});
|
|
3192
|
+
PopoverDescription.displayName = "PopoverDescription";
|
|
3193
|
+
|
|
3194
|
+
// src/components/spinner.tsx
|
|
3195
|
+
var React17 = __toESM(require("react"), 1);
|
|
3196
|
+
var import_icons_react5 = require("@tabler/icons-react");
|
|
3197
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
3198
|
+
var spinnerSizeOptions = ["sm", "default", "lg"];
|
|
3199
|
+
var Spinner = React17.forwardRef(function Spinner2({
|
|
3200
|
+
"aria-label": ariaLabelProp,
|
|
3201
|
+
"aria-labelledby": ariaLabelledby,
|
|
3202
|
+
className,
|
|
3203
|
+
role = "status",
|
|
3204
|
+
size = "default",
|
|
3205
|
+
...props
|
|
3206
|
+
}, ref) {
|
|
3207
|
+
const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
|
|
3208
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
3209
|
+
import_icons_react5.IconLoader2,
|
|
3210
|
+
{
|
|
3211
|
+
ref,
|
|
3212
|
+
"data-size": size,
|
|
3213
|
+
"data-slot": "spinner",
|
|
3214
|
+
role,
|
|
3215
|
+
"aria-label": ariaLabel,
|
|
3216
|
+
"aria-labelledby": ariaLabelledby,
|
|
3217
|
+
className: cn(
|
|
3218
|
+
"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",
|
|
3219
|
+
className
|
|
3220
|
+
),
|
|
3221
|
+
...props
|
|
3222
|
+
}
|
|
3223
|
+
);
|
|
3224
|
+
});
|
|
3225
|
+
Spinner.displayName = "Spinner";
|
|
3226
|
+
|
|
3227
|
+
// src/components/dropdown-search.tsx
|
|
3228
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
3229
|
+
var DropdownSearch = React18.forwardRef(
|
|
3230
|
+
function DropdownSearch2({
|
|
3231
|
+
className,
|
|
3232
|
+
containerClassName,
|
|
3233
|
+
defaultQuery = "",
|
|
3234
|
+
defaultValue,
|
|
3235
|
+
disabled,
|
|
3236
|
+
emptyMessage = "No results found",
|
|
3237
|
+
label,
|
|
3238
|
+
labelClassName,
|
|
3239
|
+
loading,
|
|
3240
|
+
onChange,
|
|
3241
|
+
onQueryChange,
|
|
3242
|
+
options = [],
|
|
3243
|
+
placeholder = "Search...",
|
|
3244
|
+
query: queryProp,
|
|
3245
|
+
value: valueProp
|
|
3246
|
+
}, ref) {
|
|
3247
|
+
const listboxId = React18.useId();
|
|
3248
|
+
const [open, setOpen] = React18.useState(false);
|
|
3249
|
+
const [query, setQuery] = useControllableState({
|
|
3250
|
+
defaultValue: defaultQuery,
|
|
3251
|
+
onChange: onQueryChange,
|
|
3252
|
+
value: queryProp
|
|
3253
|
+
});
|
|
3254
|
+
const [value, setValue] = useControllableState({
|
|
3255
|
+
defaultValue,
|
|
3256
|
+
onChange,
|
|
3257
|
+
value: valueProp
|
|
3258
|
+
});
|
|
3259
|
+
const inputRef = React18.useRef(null);
|
|
3260
|
+
const listRef = React18.useRef(null);
|
|
3261
|
+
const setInputRef = React18.useCallback(
|
|
3262
|
+
(node) => {
|
|
3263
|
+
inputRef.current = node;
|
|
3264
|
+
if (typeof ref === "function") {
|
|
3265
|
+
ref(node);
|
|
3266
|
+
} else if (ref) {
|
|
3267
|
+
ref.current = node;
|
|
3268
|
+
}
|
|
3269
|
+
},
|
|
3270
|
+
[ref]
|
|
3271
|
+
);
|
|
3272
|
+
function handleInputChange(e) {
|
|
3273
|
+
setQuery(e.target.value);
|
|
3274
|
+
setOpen(true);
|
|
3275
|
+
}
|
|
3276
|
+
function handleInputFocus() {
|
|
3277
|
+
setOpen(true);
|
|
3278
|
+
}
|
|
3279
|
+
function handleInputKeyDown(e) {
|
|
3280
|
+
if (e.key === "ArrowDown") {
|
|
3281
|
+
e.preventDefault();
|
|
3282
|
+
listRef.current?.querySelector(
|
|
3283
|
+
"[data-dropdown-search-item]:not([disabled])"
|
|
3284
|
+
)?.focus();
|
|
3285
|
+
}
|
|
3286
|
+
if (e.key === "Escape") {
|
|
3287
|
+
setOpen(false);
|
|
3288
|
+
}
|
|
3289
|
+
}
|
|
3290
|
+
function handleItemKeyDown(e, option) {
|
|
3291
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
3292
|
+
e.preventDefault();
|
|
3293
|
+
handleSelect(option);
|
|
3294
|
+
return;
|
|
3295
|
+
}
|
|
3296
|
+
if (e.key === "ArrowDown") {
|
|
3297
|
+
e.preventDefault();
|
|
3298
|
+
e.currentTarget.closest("li")?.nextElementSibling?.querySelector("[data-dropdown-search-item]")?.focus();
|
|
3299
|
+
return;
|
|
3300
|
+
}
|
|
3301
|
+
if (e.key === "ArrowUp") {
|
|
3302
|
+
e.preventDefault();
|
|
3303
|
+
const prevLi = e.currentTarget.closest("li")?.previousElementSibling;
|
|
3304
|
+
if (prevLi) {
|
|
3305
|
+
prevLi.querySelector("[data-dropdown-search-item]")?.focus();
|
|
3306
|
+
} else {
|
|
3307
|
+
inputRef.current?.focus();
|
|
3308
|
+
}
|
|
3309
|
+
return;
|
|
3310
|
+
}
|
|
3311
|
+
if (e.key === "Escape") {
|
|
3312
|
+
setOpen(false);
|
|
3313
|
+
inputRef.current?.focus();
|
|
3314
|
+
}
|
|
3315
|
+
}
|
|
3316
|
+
function handleSelect(option) {
|
|
3317
|
+
if (option.disabled) return;
|
|
3318
|
+
setValue(option.value);
|
|
3319
|
+
setQuery(option.label);
|
|
3320
|
+
setOpen(false);
|
|
3321
|
+
}
|
|
3322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
|
|
3323
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("w-full", containerClassName), children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3324
|
+
Input,
|
|
3325
|
+
{
|
|
3326
|
+
ref: setInputRef,
|
|
3327
|
+
"aria-autocomplete": "list",
|
|
3328
|
+
"aria-controls": open ? listboxId : void 0,
|
|
3329
|
+
"aria-expanded": open,
|
|
3330
|
+
"aria-haspopup": "listbox",
|
|
3331
|
+
autoComplete: "off",
|
|
3332
|
+
className,
|
|
3333
|
+
disabled,
|
|
3334
|
+
label,
|
|
3335
|
+
labelClassName,
|
|
3336
|
+
placeholder,
|
|
3337
|
+
role: "combobox",
|
|
3338
|
+
value: query ?? "",
|
|
3339
|
+
onChange: handleInputChange,
|
|
3340
|
+
onFocus: handleInputFocus,
|
|
3341
|
+
onKeyDown: handleInputKeyDown
|
|
3342
|
+
}
|
|
3343
|
+
) }) }),
|
|
3344
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3345
|
+
PopoverContent,
|
|
3346
|
+
{
|
|
3347
|
+
align: "start",
|
|
3348
|
+
className: "w-[var(--radix-popover-trigger-width)] p-1",
|
|
3349
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
3350
|
+
onInteractOutside: (e) => {
|
|
3351
|
+
if (inputRef.current?.closest("div")?.contains(e.target)) {
|
|
3352
|
+
e.preventDefault();
|
|
3353
|
+
}
|
|
3354
|
+
},
|
|
3355
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex items-center justify-center py-4", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Spinner, { size: "sm" }) }) : options.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "px-3 py-4 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3356
|
+
Text,
|
|
3357
|
+
{
|
|
3358
|
+
as: "span",
|
|
3359
|
+
size: "body",
|
|
3360
|
+
className: "text-[color:var(--sofya-text-subtle)]",
|
|
3361
|
+
children: emptyMessage
|
|
3362
|
+
}
|
|
3363
|
+
) }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3364
|
+
"ul",
|
|
3365
|
+
{
|
|
3366
|
+
ref: listRef,
|
|
3367
|
+
id: listboxId,
|
|
3368
|
+
role: "listbox",
|
|
3369
|
+
"aria-label": typeof label === "string" ? label : "Options",
|
|
3370
|
+
className: "flex flex-col gap-0.5",
|
|
3371
|
+
children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3372
|
+
"li",
|
|
3373
|
+
{
|
|
3374
|
+
role: "option",
|
|
3375
|
+
"aria-selected": value === option.value,
|
|
3376
|
+
"aria-disabled": option.disabled,
|
|
3377
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
3378
|
+
"button",
|
|
3379
|
+
{
|
|
3380
|
+
"data-dropdown-search-item": true,
|
|
3381
|
+
type: "button",
|
|
3382
|
+
disabled: option.disabled,
|
|
3383
|
+
className: cn(
|
|
3384
|
+
"flex w-full items-center gap-3 rounded-[8px] px-3 py-2 text-left",
|
|
3385
|
+
"[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)]",
|
|
3386
|
+
"transition-colors duration-sofya ease-sofya",
|
|
3387
|
+
"text-[color:var(--sofya-text-default)] hover:bg-muted focus-visible:bg-muted focus-visible:outline-none",
|
|
3388
|
+
"disabled:cursor-not-allowed disabled:opacity-40",
|
|
3389
|
+
value === option.value && "bg-muted"
|
|
3390
|
+
),
|
|
3391
|
+
onClick: () => handleSelect(option),
|
|
3392
|
+
onKeyDown: (e) => handleItemKeyDown(e, option),
|
|
3393
|
+
children: [
|
|
3394
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
3395
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Text, { as: "span", size: "body", className: "truncate", children: option.label }),
|
|
3396
|
+
option.description ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3397
|
+
Text,
|
|
3398
|
+
{
|
|
3399
|
+
as: "span",
|
|
3400
|
+
size: "tiny",
|
|
3401
|
+
className: "truncate text-[color:var(--sofya-text-subtle)]",
|
|
3402
|
+
children: option.description
|
|
3403
|
+
}
|
|
3404
|
+
) : null
|
|
3405
|
+
] }),
|
|
3406
|
+
value === option.value ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
3407
|
+
Icon,
|
|
3408
|
+
{
|
|
3409
|
+
"aria-hidden": "true",
|
|
3410
|
+
className: "shrink-0 text-primary",
|
|
3411
|
+
name: "check",
|
|
3412
|
+
size: 16
|
|
3413
|
+
}
|
|
3414
|
+
) : null
|
|
3415
|
+
]
|
|
3416
|
+
}
|
|
3417
|
+
)
|
|
3418
|
+
},
|
|
3419
|
+
option.value
|
|
3420
|
+
))
|
|
3421
|
+
}
|
|
3422
|
+
)
|
|
3423
|
+
}
|
|
3424
|
+
)
|
|
3425
|
+
] });
|
|
3426
|
+
}
|
|
3427
|
+
);
|
|
3428
|
+
DropdownSearch.displayName = "DropdownSearch";
|
|
3429
|
+
|
|
3430
|
+
// src/components/dialog.tsx
|
|
3431
|
+
var React19 = __toESM(require("react"), 1);
|
|
3432
|
+
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
|
|
3433
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
3434
|
+
var Dialog = DialogPrimitive.Root;
|
|
3435
|
+
var DialogTrigger = DialogPrimitive.Trigger;
|
|
3436
|
+
var DialogPortal = DialogPrimitive.Portal;
|
|
3437
|
+
var DialogClose = DialogPrimitive.Close;
|
|
3438
|
+
var DialogInternalContext = React19.createContext({
|
|
3439
|
+
showCloseButton: true
|
|
3440
|
+
});
|
|
3441
|
+
var DialogOverlay = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3442
|
+
DialogPrimitive.Overlay,
|
|
3443
|
+
{
|
|
3444
|
+
ref,
|
|
3445
|
+
className: cn(
|
|
3446
|
+
"sofya-dialog-overlay fixed inset-0 z-50 bg-foreground/24 backdrop-blur-[6px]",
|
|
3447
|
+
className
|
|
3448
|
+
),
|
|
3449
|
+
...props
|
|
3450
|
+
}
|
|
3451
|
+
));
|
|
3452
|
+
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
3453
|
+
var DialogContent = React19.forwardRef(
|
|
3454
|
+
({
|
|
3455
|
+
className,
|
|
3456
|
+
children,
|
|
3457
|
+
cardClassName,
|
|
3458
|
+
overlayClassName,
|
|
3459
|
+
showCloseButton = true,
|
|
3460
|
+
variant = "card",
|
|
3461
|
+
...props
|
|
3462
|
+
}, ref) => {
|
|
3463
|
+
const dialogCardStyle = {
|
|
3464
|
+
"--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
|
|
3465
|
+
};
|
|
3466
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DialogPortal, { children: [
|
|
3467
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogOverlay, { className: overlayClassName }),
|
|
3468
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3469
|
+
DialogPrimitive.Content,
|
|
3470
|
+
{
|
|
3471
|
+
ref,
|
|
3472
|
+
className: cn(
|
|
3473
|
+
"sofya-dialog-content relative flex w-full max-w-[680px] max-h-[calc(100vh-2rem)] outline-none",
|
|
3474
|
+
className
|
|
3475
|
+
),
|
|
3476
|
+
...props,
|
|
3477
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3478
|
+
Card,
|
|
3479
|
+
{
|
|
3480
|
+
variant,
|
|
3481
|
+
className: cn(
|
|
3482
|
+
"flex max-h-[inherit] min-h-0 w-full flex-col gap-6 overflow-y-auto overflow-x-hidden p-6",
|
|
3483
|
+
cardClassName
|
|
3484
|
+
),
|
|
3485
|
+
style: dialogCardStyle,
|
|
3486
|
+
children
|
|
3487
|
+
}
|
|
3488
|
+
)
|
|
3489
|
+
}
|
|
3490
|
+
) })
|
|
3491
|
+
] }) });
|
|
3492
|
+
}
|
|
3493
|
+
);
|
|
3494
|
+
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
3495
|
+
function DialogHeader({ className, children, ...props }) {
|
|
3496
|
+
const { showCloseButton } = React19.useContext(DialogInternalContext);
|
|
3497
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
3498
|
+
"div",
|
|
3499
|
+
{
|
|
3500
|
+
className: cn("flex w-full items-start justify-between gap-4", className),
|
|
3501
|
+
...props,
|
|
3502
|
+
children: [
|
|
3503
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex min-w-0 flex-1 flex-col gap-2 text-left", children }),
|
|
3504
|
+
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3505
|
+
Button,
|
|
3506
|
+
{
|
|
3507
|
+
type: "button",
|
|
3508
|
+
variant: "ghost",
|
|
3509
|
+
size: "icon",
|
|
3510
|
+
"aria-label": "Close",
|
|
3511
|
+
leftIcon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Icon, { name: "x", size: 18 }),
|
|
3512
|
+
className: "shrink-0 text-muted-foreground hover:text-foreground"
|
|
3513
|
+
}
|
|
3514
|
+
) }) : null
|
|
3515
|
+
]
|
|
3516
|
+
}
|
|
3517
|
+
);
|
|
3518
|
+
}
|
|
3519
|
+
function DialogBody({ className, ...props }) {
|
|
3520
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3521
|
+
"div",
|
|
3522
|
+
{
|
|
3523
|
+
className: cn("flex flex-col gap-4", className),
|
|
3524
|
+
...props
|
|
3525
|
+
}
|
|
3526
|
+
);
|
|
3527
|
+
}
|
|
3528
|
+
function DialogFooter({ className, ...props }) {
|
|
3529
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3530
|
+
"div",
|
|
3531
|
+
{
|
|
3532
|
+
className: cn("flex items-center justify-end gap-2", className),
|
|
3533
|
+
...props
|
|
3534
|
+
}
|
|
3535
|
+
);
|
|
3536
|
+
}
|
|
3537
|
+
var DialogCancel = React19.forwardRef(
|
|
3538
|
+
({ type = "button", variant = "ghost", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { ref, type, variant, ...props }) })
|
|
3539
|
+
);
|
|
3540
|
+
DialogCancel.displayName = "DialogCancel";
|
|
3541
|
+
var DialogTitle = React19.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3542
|
+
DialogPrimitive.Title,
|
|
3543
|
+
{
|
|
3544
|
+
ref,
|
|
3545
|
+
className: cn("text-card-foreground", className),
|
|
3546
|
+
...props,
|
|
3547
|
+
children: renderTextContent(children, {
|
|
3548
|
+
as: "span",
|
|
3549
|
+
className: "block text-card-foreground",
|
|
3550
|
+
size: "h3"
|
|
3551
|
+
})
|
|
3552
|
+
}
|
|
3553
|
+
));
|
|
3554
|
+
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
3555
|
+
var DialogDescription = React19.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
3556
|
+
DialogPrimitive.Description,
|
|
3557
|
+
{
|
|
3558
|
+
ref,
|
|
3559
|
+
className: cn("text-muted-foreground", className),
|
|
3560
|
+
...props,
|
|
3561
|
+
children: renderTextContent(children, {
|
|
3562
|
+
as: "span",
|
|
3563
|
+
className: "block text-muted-foreground",
|
|
3564
|
+
size: "body"
|
|
3565
|
+
})
|
|
3566
|
+
}
|
|
3567
|
+
));
|
|
3568
|
+
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
3569
|
+
|
|
3570
|
+
// src/components/empty.tsx
|
|
3571
|
+
var React20 = __toESM(require("react"), 1);
|
|
3572
|
+
var import_class_variance_authority5 = require("class-variance-authority");
|
|
3573
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
3574
|
+
var emptyMediaVariantOptions = ["default", "icon"];
|
|
3575
|
+
var emptyMediaVariants = (0, import_class_variance_authority5.cva)(
|
|
3576
|
+
"inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
|
|
3577
|
+
{
|
|
3578
|
+
variants: {
|
|
3579
|
+
variant: {
|
|
3580
|
+
default: "[&_img]:max-w-full [&_svg]:shrink-0 [&_svg]:text-primary",
|
|
3581
|
+
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"
|
|
3582
|
+
}
|
|
3583
|
+
},
|
|
3584
|
+
defaultVariants: {
|
|
3585
|
+
variant: "default"
|
|
3586
|
+
}
|
|
3587
|
+
}
|
|
3588
|
+
);
|
|
3589
|
+
var EmptyMedia = React20.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
|
|
3590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
|
|
3591
|
+
});
|
|
3592
|
+
function EmptyHeader({ className, ...props }) {
|
|
3593
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3594
|
+
"div",
|
|
3595
|
+
{
|
|
3596
|
+
className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
|
|
3597
|
+
...props
|
|
3598
|
+
}
|
|
3599
|
+
);
|
|
3600
|
+
}
|
|
3601
|
+
function EmptyTitle({ children, className, ...props }) {
|
|
3602
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3603
|
+
"h2",
|
|
3604
|
+
{
|
|
3605
|
+
className: cn("text-foreground", className),
|
|
3606
|
+
...props,
|
|
3607
|
+
children: renderTextContent(children, {
|
|
3608
|
+
as: "span",
|
|
3609
|
+
className: "block text-foreground",
|
|
3610
|
+
size: "h4"
|
|
3611
|
+
})
|
|
3612
|
+
}
|
|
3613
|
+
);
|
|
3614
|
+
}
|
|
3615
|
+
function EmptyDescription({
|
|
3616
|
+
children,
|
|
3617
|
+
className,
|
|
3618
|
+
...props
|
|
3619
|
+
}) {
|
|
3620
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3621
|
+
"p",
|
|
3622
|
+
{
|
|
3623
|
+
className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
|
|
3624
|
+
...props,
|
|
3625
|
+
children: renderTextContent(children, {
|
|
3626
|
+
as: "span",
|
|
3627
|
+
className: "inline-block whitespace-nowrap text-muted-foreground",
|
|
3628
|
+
size: "body"
|
|
3629
|
+
})
|
|
3630
|
+
}
|
|
3631
|
+
);
|
|
3632
|
+
}
|
|
3633
|
+
function EmptyContent({ children, className, ...props }) {
|
|
3634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3635
|
+
"div",
|
|
3636
|
+
{
|
|
3637
|
+
className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
|
|
3638
|
+
...props,
|
|
3639
|
+
children: renderTextContent(children, {
|
|
3640
|
+
as: "span"
|
|
3641
|
+
})
|
|
3642
|
+
}
|
|
3643
|
+
);
|
|
3644
|
+
}
|
|
3645
|
+
var Empty = React20.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
|
|
3646
|
+
const hasCustomChildren = React20.Children.count(children) > 0;
|
|
3647
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
3648
|
+
"div",
|
|
3649
|
+
{
|
|
3249
3650
|
ref,
|
|
3250
|
-
type: resolvedType,
|
|
3251
3651
|
className: cn(
|
|
3252
|
-
"flex h-
|
|
3652
|
+
"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",
|
|
3253
3653
|
className
|
|
3254
3654
|
),
|
|
3255
|
-
...
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
label: isSearch ? void 0 : label,
|
|
3265
|
-
labelClassName: isSearch ? void 0 : labelClassName,
|
|
3266
|
-
labelHtmlFor: isSearch ? void 0 : resolvedId
|
|
3655
|
+
...props,
|
|
3656
|
+
children: hasCustomChildren ? children : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
3657
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(EmptyHeader, { children: [
|
|
3658
|
+
media ?? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon, { name: "folders", size: 28 }) }),
|
|
3659
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(EmptyTitle, { children: title ?? "Nada por aqui" }),
|
|
3660
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
|
|
3661
|
+
] }),
|
|
3662
|
+
content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(EmptyContent, { children: content }) : null
|
|
3663
|
+
] })
|
|
3267
3664
|
}
|
|
3268
3665
|
);
|
|
3269
3666
|
});
|
|
3270
|
-
|
|
3667
|
+
Empty.displayName = "Empty";
|
|
3668
|
+
EmptyMedia.displayName = "EmptyMedia";
|
|
3669
|
+
EmptyHeader.displayName = "EmptyHeader";
|
|
3670
|
+
EmptyTitle.displayName = "EmptyTitle";
|
|
3671
|
+
EmptyDescription.displayName = "EmptyDescription";
|
|
3672
|
+
EmptyContent.displayName = "EmptyContent";
|
|
3271
3673
|
|
|
3272
3674
|
// src/components/label.tsx
|
|
3273
|
-
var
|
|
3274
|
-
var
|
|
3275
|
-
var Label =
|
|
3675
|
+
var React21 = __toESM(require("react"), 1);
|
|
3676
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
3677
|
+
var Label = React21.forwardRef(
|
|
3276
3678
|
({ children, className, ...props }, ref) => {
|
|
3277
|
-
return /* @__PURE__ */ (0,
|
|
3679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
3278
3680
|
"label",
|
|
3279
3681
|
{
|
|
3280
3682
|
ref,
|
|
@@ -3298,10 +3700,10 @@ var Label = React18.forwardRef(
|
|
|
3298
3700
|
Label.displayName = "Label";
|
|
3299
3701
|
|
|
3300
3702
|
// src/components/link.tsx
|
|
3301
|
-
var
|
|
3703
|
+
var React22 = __toESM(require("react"), 1);
|
|
3302
3704
|
var import_react_slot3 = require("@radix-ui/react-slot");
|
|
3303
3705
|
var import_class_variance_authority6 = require("class-variance-authority");
|
|
3304
|
-
var
|
|
3706
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
3305
3707
|
var linkVariants = (0, import_class_variance_authority6.cva)(
|
|
3306
3708
|
"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",
|
|
3307
3709
|
{
|
|
@@ -3316,9 +3718,9 @@ var linkVariants = (0, import_class_variance_authority6.cva)(
|
|
|
3316
3718
|
}
|
|
3317
3719
|
}
|
|
3318
3720
|
);
|
|
3319
|
-
var Link =
|
|
3721
|
+
var Link = React22.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
|
|
3320
3722
|
const Component = asChild ? import_react_slot3.Slot : "a";
|
|
3321
|
-
return /* @__PURE__ */ (0,
|
|
3723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
3322
3724
|
Component,
|
|
3323
3725
|
{
|
|
3324
3726
|
ref,
|
|
@@ -3336,7 +3738,7 @@ var Link = React19.forwardRef(function Link2({ asChild = false, children, classN
|
|
|
3336
3738
|
Link.displayName = "Link";
|
|
3337
3739
|
|
|
3338
3740
|
// src/components/logo.tsx
|
|
3339
|
-
var
|
|
3741
|
+
var React23 = __toESM(require("react"), 1);
|
|
3340
3742
|
|
|
3341
3743
|
// src/components/logo-data.ts
|
|
3342
3744
|
var logoAssets = {
|
|
@@ -3433,7 +3835,7 @@ var logoAssets = {
|
|
|
3433
3835
|
};
|
|
3434
3836
|
|
|
3435
3837
|
// src/components/logo.tsx
|
|
3436
|
-
var
|
|
3838
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
3437
3839
|
var logoVariants = ["mono", "default", "text", "full"];
|
|
3438
3840
|
var logoSizeOptions = ["sm", "md", "lg", "xl", "2xl"];
|
|
3439
3841
|
var logoSizeScale = {
|
|
@@ -3469,7 +3871,7 @@ function resolveLogoDimensions(variant, size, width, height) {
|
|
|
3469
3871
|
height: resolvedHeight
|
|
3470
3872
|
};
|
|
3471
3873
|
}
|
|
3472
|
-
var Logo =
|
|
3874
|
+
var Logo = React23.forwardRef(function Logo2({
|
|
3473
3875
|
variant = "full",
|
|
3474
3876
|
size = "lg",
|
|
3475
3877
|
width,
|
|
@@ -3480,10 +3882,10 @@ var Logo = React20.forwardRef(function Logo2({
|
|
|
3480
3882
|
...props
|
|
3481
3883
|
}, ref) {
|
|
3482
3884
|
const asset = logoAssets[variant];
|
|
3483
|
-
const titleId =
|
|
3885
|
+
const titleId = React23.useId();
|
|
3484
3886
|
const dimensions = resolveLogoDimensions(variant, size, width, height);
|
|
3485
3887
|
const monoFill = variant === "mono" ? monoColor ?? "currentColor" : void 0;
|
|
3486
|
-
return /* @__PURE__ */ (0,
|
|
3888
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
3487
3889
|
"svg",
|
|
3488
3890
|
{
|
|
3489
3891
|
ref,
|
|
@@ -3498,8 +3900,8 @@ var Logo = React20.forwardRef(function Logo2({
|
|
|
3498
3900
|
focusable: "false",
|
|
3499
3901
|
...props,
|
|
3500
3902
|
children: [
|
|
3501
|
-
title ? /* @__PURE__ */ (0,
|
|
3502
|
-
asset.paths.map((path, index) => /* @__PURE__ */ (0,
|
|
3903
|
+
title ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("title", { id: titleId, children: title }) : null,
|
|
3904
|
+
asset.paths.map((path, index) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
3503
3905
|
"path",
|
|
3504
3906
|
{
|
|
3505
3907
|
d: path.d,
|
|
@@ -3516,7 +3918,7 @@ var Logo = React20.forwardRef(function Logo2({
|
|
|
3516
3918
|
Logo.displayName = "Logo";
|
|
3517
3919
|
|
|
3518
3920
|
// src/components/pagination.tsx
|
|
3519
|
-
var
|
|
3921
|
+
var import_icons_react6 = require("@tabler/icons-react");
|
|
3520
3922
|
var import_react_slot4 = require("@radix-ui/react-slot");
|
|
3521
3923
|
var import_class_variance_authority7 = require("class-variance-authority");
|
|
3522
3924
|
|
|
@@ -3531,7 +3933,7 @@ var inheritedTypographyStyle = {
|
|
|
3531
3933
|
};
|
|
3532
3934
|
|
|
3533
3935
|
// src/components/pagination.tsx
|
|
3534
|
-
var
|
|
3936
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
3535
3937
|
var paginationLinkVariants = (0, import_class_variance_authority7.cva)(
|
|
3536
3938
|
"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",
|
|
3537
3939
|
{
|
|
@@ -3552,7 +3954,7 @@ var paginationLinkVariants = (0, import_class_variance_authority7.cva)(
|
|
|
3552
3954
|
}
|
|
3553
3955
|
);
|
|
3554
3956
|
function Pagination({ className, ...props }) {
|
|
3555
|
-
return /* @__PURE__ */ (0,
|
|
3957
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3556
3958
|
"nav",
|
|
3557
3959
|
{
|
|
3558
3960
|
"aria-label": "Pagination",
|
|
@@ -3565,7 +3967,7 @@ function PaginationContent({
|
|
|
3565
3967
|
className,
|
|
3566
3968
|
...props
|
|
3567
3969
|
}) {
|
|
3568
|
-
return /* @__PURE__ */ (0,
|
|
3970
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3569
3971
|
"ul",
|
|
3570
3972
|
{
|
|
3571
3973
|
className: cn(
|
|
@@ -3577,7 +3979,7 @@ function PaginationContent({
|
|
|
3577
3979
|
);
|
|
3578
3980
|
}
|
|
3579
3981
|
function PaginationItem({ className, ...props }) {
|
|
3580
|
-
return /* @__PURE__ */ (0,
|
|
3982
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("li", { className: cn("list-none", className), ...props });
|
|
3581
3983
|
}
|
|
3582
3984
|
function PaginationLink({
|
|
3583
3985
|
asChild = false,
|
|
@@ -3587,7 +3989,7 @@ function PaginationLink({
|
|
|
3587
3989
|
...props
|
|
3588
3990
|
}) {
|
|
3589
3991
|
const Component = asChild ? import_react_slot4.Slot : "a";
|
|
3590
|
-
return /* @__PURE__ */ (0,
|
|
3992
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3591
3993
|
Component,
|
|
3592
3994
|
{
|
|
3593
3995
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -3597,25 +3999,25 @@ function PaginationLink({
|
|
|
3597
3999
|
);
|
|
3598
4000
|
}
|
|
3599
4001
|
function PaginationChevronLeft() {
|
|
3600
|
-
return /* @__PURE__ */ (0,
|
|
4002
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_icons_react6.IconChevronLeft, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
|
|
3601
4003
|
}
|
|
3602
4004
|
function PaginationChevronRight() {
|
|
3603
|
-
return /* @__PURE__ */ (0,
|
|
4005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_icons_react6.IconChevronRight, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
|
|
3604
4006
|
}
|
|
3605
4007
|
function PaginationPrevious({
|
|
3606
4008
|
className,
|
|
3607
4009
|
text = "Previous",
|
|
3608
4010
|
...props
|
|
3609
4011
|
}) {
|
|
3610
|
-
return /* @__PURE__ */ (0,
|
|
4012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3611
4013
|
PaginationLink,
|
|
3612
4014
|
{
|
|
3613
4015
|
"aria-label": "Go to previous page",
|
|
3614
4016
|
className: cn("gap-2 px-4", className),
|
|
3615
4017
|
...props,
|
|
3616
4018
|
children: [
|
|
3617
|
-
/* @__PURE__ */ (0,
|
|
3618
|
-
/* @__PURE__ */ (0,
|
|
4019
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PaginationChevronLeft, {}),
|
|
4020
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
|
|
3619
4021
|
as: "span",
|
|
3620
4022
|
className: "block text-inherit",
|
|
3621
4023
|
size: "body",
|
|
@@ -3630,20 +4032,20 @@ function PaginationNext({
|
|
|
3630
4032
|
text = "Next",
|
|
3631
4033
|
...props
|
|
3632
4034
|
}) {
|
|
3633
|
-
return /* @__PURE__ */ (0,
|
|
4035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3634
4036
|
PaginationLink,
|
|
3635
4037
|
{
|
|
3636
4038
|
"aria-label": "Go to next page",
|
|
3637
4039
|
className: cn("gap-2 px-4", className),
|
|
3638
4040
|
...props,
|
|
3639
4041
|
children: [
|
|
3640
|
-
/* @__PURE__ */ (0,
|
|
4042
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
|
|
3641
4043
|
as: "span",
|
|
3642
4044
|
className: "block text-inherit",
|
|
3643
4045
|
size: "body",
|
|
3644
4046
|
style: inheritedTypographyStyle
|
|
3645
4047
|
}) }),
|
|
3646
|
-
/* @__PURE__ */ (0,
|
|
4048
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PaginationChevronRight, {})
|
|
3647
4049
|
]
|
|
3648
4050
|
}
|
|
3649
4051
|
);
|
|
@@ -3652,7 +4054,7 @@ function PaginationEllipsis({
|
|
|
3652
4054
|
className,
|
|
3653
4055
|
...props
|
|
3654
4056
|
}) {
|
|
3655
|
-
return /* @__PURE__ */ (0,
|
|
4057
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3656
4058
|
"span",
|
|
3657
4059
|
{
|
|
3658
4060
|
"aria-hidden": "true",
|
|
@@ -3662,90 +4064,22 @@ function PaginationEllipsis({
|
|
|
3662
4064
|
),
|
|
3663
4065
|
...props,
|
|
3664
4066
|
children: [
|
|
3665
|
-
/* @__PURE__ */ (0,
|
|
4067
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children: renderTextContent("...", {
|
|
3666
4068
|
as: "span",
|
|
3667
4069
|
className: "block text-inherit",
|
|
3668
4070
|
size: "h5",
|
|
3669
4071
|
style: inheritedTypographyStyle
|
|
3670
4072
|
}) }),
|
|
3671
|
-
/* @__PURE__ */ (0,
|
|
4073
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
3672
4074
|
]
|
|
3673
4075
|
}
|
|
3674
4076
|
);
|
|
3675
4077
|
}
|
|
3676
4078
|
|
|
3677
|
-
// src/components/popover.tsx
|
|
3678
|
-
var React21 = __toESM(require("react"), 1);
|
|
3679
|
-
var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
|
|
3680
|
-
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
3681
|
-
var Popover = PopoverPrimitive.Root;
|
|
3682
|
-
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
3683
|
-
var PopoverAnchor = PopoverPrimitive.Anchor;
|
|
3684
|
-
var PopoverPortal = PopoverPrimitive.Portal;
|
|
3685
|
-
var PopoverClose = PopoverPrimitive.Close;
|
|
3686
|
-
var PopoverContent = React21.forwardRef(function PopoverContent2({
|
|
3687
|
-
align = "center",
|
|
3688
|
-
className,
|
|
3689
|
-
collisionPadding = 8,
|
|
3690
|
-
sideOffset = 8,
|
|
3691
|
-
...props
|
|
3692
|
-
}, ref) {
|
|
3693
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
3694
|
-
PopoverPrimitive.Content,
|
|
3695
|
-
{
|
|
3696
|
-
ref,
|
|
3697
|
-
align,
|
|
3698
|
-
collisionPadding,
|
|
3699
|
-
sideOffset,
|
|
3700
|
-
"data-slot": "popover-content",
|
|
3701
|
-
className: cn(
|
|
3702
|
-
"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",
|
|
3703
|
-
className
|
|
3704
|
-
),
|
|
3705
|
-
...props
|
|
3706
|
-
}
|
|
3707
|
-
) });
|
|
3708
|
-
});
|
|
3709
|
-
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
3710
|
-
var PopoverTitle = React21.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
|
|
3711
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
3712
|
-
"h4",
|
|
3713
|
-
{
|
|
3714
|
-
ref,
|
|
3715
|
-
"data-slot": "popover-title",
|
|
3716
|
-
className: cn("text-[hsl(var(--sofya-popover-foreground))]", className),
|
|
3717
|
-
...props,
|
|
3718
|
-
children: renderTextContent(children, {
|
|
3719
|
-
as: "span",
|
|
3720
|
-
className: "block text-[hsl(var(--sofya-popover-foreground))]",
|
|
3721
|
-
size: "h4"
|
|
3722
|
-
})
|
|
3723
|
-
}
|
|
3724
|
-
);
|
|
3725
|
-
});
|
|
3726
|
-
PopoverTitle.displayName = "PopoverTitle";
|
|
3727
|
-
var PopoverDescription = React21.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
|
|
3728
|
-
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
3729
|
-
"p",
|
|
3730
|
-
{
|
|
3731
|
-
ref,
|
|
3732
|
-
"data-slot": "popover-description",
|
|
3733
|
-
className: cn("text-muted-foreground", className),
|
|
3734
|
-
...props,
|
|
3735
|
-
children: renderTextContent(children, {
|
|
3736
|
-
as: "span",
|
|
3737
|
-
className: "block text-muted-foreground",
|
|
3738
|
-
size: "body"
|
|
3739
|
-
})
|
|
3740
|
-
}
|
|
3741
|
-
);
|
|
3742
|
-
});
|
|
3743
|
-
PopoverDescription.displayName = "PopoverDescription";
|
|
3744
|
-
|
|
3745
4079
|
// src/components/progress.tsx
|
|
3746
|
-
var
|
|
4080
|
+
var React24 = __toESM(require("react"), 1);
|
|
3747
4081
|
var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"), 1);
|
|
3748
|
-
var
|
|
4082
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
3749
4083
|
var progressSizeOptions = ["sm", "default", "lg"];
|
|
3750
4084
|
function clampProgressValue(value, max) {
|
|
3751
4085
|
if (Number.isNaN(value)) {
|
|
@@ -3753,7 +4087,7 @@ function clampProgressValue(value, max) {
|
|
|
3753
4087
|
}
|
|
3754
4088
|
return Math.min(Math.max(value, 0), max);
|
|
3755
4089
|
}
|
|
3756
|
-
var Progress =
|
|
4090
|
+
var Progress = React24.forwardRef(function Progress2({
|
|
3757
4091
|
className,
|
|
3758
4092
|
indicatorClassName,
|
|
3759
4093
|
max = 100,
|
|
@@ -3764,7 +4098,7 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3764
4098
|
const safeMax = max > 0 ? max : 100;
|
|
3765
4099
|
const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
|
|
3766
4100
|
const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
|
|
3767
|
-
return /* @__PURE__ */ (0,
|
|
4101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3768
4102
|
ProgressPrimitive.Root,
|
|
3769
4103
|
{
|
|
3770
4104
|
ref,
|
|
@@ -3777,7 +4111,7 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3777
4111
|
className
|
|
3778
4112
|
),
|
|
3779
4113
|
...props,
|
|
3780
|
-
children: /* @__PURE__ */ (0,
|
|
4114
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3781
4115
|
ProgressPrimitive.Indicator,
|
|
3782
4116
|
{
|
|
3783
4117
|
"data-slot": "progress-indicator",
|
|
@@ -3794,12 +4128,12 @@ var Progress = React22.forwardRef(function Progress2({
|
|
|
3794
4128
|
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
3795
4129
|
|
|
3796
4130
|
// src/components/radio-group.tsx
|
|
3797
|
-
var
|
|
4131
|
+
var React25 = __toESM(require("react"), 1);
|
|
3798
4132
|
var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
|
|
3799
|
-
var
|
|
4133
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
3800
4134
|
var radioGroupOrientationOptions = ["horizontal", "vertical"];
|
|
3801
|
-
var RadioGroup2 =
|
|
3802
|
-
return /* @__PURE__ */ (0,
|
|
4135
|
+
var RadioGroup2 = React25.forwardRef(function RadioGroup3({ className, ...props }, ref) {
|
|
4136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3803
4137
|
RadioGroupPrimitive.Root,
|
|
3804
4138
|
{
|
|
3805
4139
|
ref,
|
|
@@ -3813,7 +4147,7 @@ var RadioGroup2 = React23.forwardRef(function RadioGroup3({ className, ...props
|
|
|
3813
4147
|
);
|
|
3814
4148
|
});
|
|
3815
4149
|
RadioGroup2.displayName = RadioGroupPrimitive.Root.displayName;
|
|
3816
|
-
var RadioGroupItem =
|
|
4150
|
+
var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
|
|
3817
4151
|
className,
|
|
3818
4152
|
controlClassName,
|
|
3819
4153
|
description,
|
|
@@ -3825,12 +4159,12 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3825
4159
|
labelClassName,
|
|
3826
4160
|
...props
|
|
3827
4161
|
}, ref) {
|
|
3828
|
-
const generatedId =
|
|
4162
|
+
const generatedId = React25.useId();
|
|
3829
4163
|
const resolvedId = id ?? generatedId;
|
|
3830
4164
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
3831
4165
|
const descriptionId = description ? `${resolvedId}-description` : void 0;
|
|
3832
4166
|
const alignClassName = description ? "items-start" : "items-center";
|
|
3833
|
-
return /* @__PURE__ */ (0,
|
|
4167
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
3834
4168
|
"label",
|
|
3835
4169
|
{
|
|
3836
4170
|
className: selectionControlContainerClasses({
|
|
@@ -3839,7 +4173,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3839
4173
|
disabled
|
|
3840
4174
|
}),
|
|
3841
4175
|
children: [
|
|
3842
|
-
/* @__PURE__ */ (0,
|
|
4176
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3843
4177
|
RadioGroupPrimitive.Item,
|
|
3844
4178
|
{
|
|
3845
4179
|
ref,
|
|
@@ -3855,7 +4189,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3855
4189
|
controlClassName
|
|
3856
4190
|
),
|
|
3857
4191
|
...props,
|
|
3858
|
-
children: /* @__PURE__ */ (0,
|
|
4192
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3859
4193
|
"span",
|
|
3860
4194
|
{
|
|
3861
4195
|
"data-slot": "radio-group-indicator",
|
|
@@ -3867,8 +4201,8 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3867
4201
|
) })
|
|
3868
4202
|
}
|
|
3869
4203
|
),
|
|
3870
|
-
label || description ? /* @__PURE__ */ (0,
|
|
3871
|
-
label ? /* @__PURE__ */ (0,
|
|
4204
|
+
label || description ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("span", { className: selectionControlContentBaseClasses, children: [
|
|
4205
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3872
4206
|
"span",
|
|
3873
4207
|
{
|
|
3874
4208
|
id: labelId,
|
|
@@ -3883,7 +4217,7 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3883
4217
|
})
|
|
3884
4218
|
}
|
|
3885
4219
|
) : null,
|
|
3886
|
-
description ? /* @__PURE__ */ (0,
|
|
4220
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3887
4221
|
"span",
|
|
3888
4222
|
{
|
|
3889
4223
|
id: descriptionId,
|
|
@@ -3906,12 +4240,12 @@ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
|
|
|
3906
4240
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
3907
4241
|
|
|
3908
4242
|
// src/components/scroll-area.tsx
|
|
3909
|
-
var
|
|
4243
|
+
var React26 = __toESM(require("react"), 1);
|
|
3910
4244
|
var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
|
|
3911
|
-
var
|
|
4245
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3912
4246
|
var scrollAreaOrientationOptions = ["horizontal", "vertical"];
|
|
3913
|
-
var ScrollArea =
|
|
3914
|
-
return /* @__PURE__ */ (0,
|
|
4247
|
+
var ScrollArea = React26.forwardRef(function ScrollArea2({ className, ...props }, ref) {
|
|
4248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3915
4249
|
ScrollAreaPrimitive.Root,
|
|
3916
4250
|
{
|
|
3917
4251
|
ref,
|
|
@@ -3922,8 +4256,8 @@ var ScrollArea = React24.forwardRef(function ScrollArea2({ className, ...props }
|
|
|
3922
4256
|
);
|
|
3923
4257
|
});
|
|
3924
4258
|
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
3925
|
-
var ScrollAreaViewport =
|
|
3926
|
-
return /* @__PURE__ */ (0,
|
|
4259
|
+
var ScrollAreaViewport = React26.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
|
|
4260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3927
4261
|
ScrollAreaPrimitive.Viewport,
|
|
3928
4262
|
{
|
|
3929
4263
|
ref,
|
|
@@ -3937,8 +4271,8 @@ var ScrollAreaViewport = React24.forwardRef(function ScrollAreaViewport2({ class
|
|
|
3937
4271
|
);
|
|
3938
4272
|
});
|
|
3939
4273
|
ScrollAreaViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
|
|
3940
|
-
var ScrollAreaScrollbar =
|
|
3941
|
-
return /* @__PURE__ */ (0,
|
|
4274
|
+
var ScrollAreaScrollbar = React26.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
|
|
4275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3942
4276
|
ScrollAreaPrimitive.Scrollbar,
|
|
3943
4277
|
{
|
|
3944
4278
|
ref,
|
|
@@ -3949,7 +4283,7 @@ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ cla
|
|
|
3949
4283
|
className
|
|
3950
4284
|
),
|
|
3951
4285
|
...props,
|
|
3952
|
-
children: /* @__PURE__ */ (0,
|
|
4286
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3953
4287
|
ScrollAreaPrimitive.Thumb,
|
|
3954
4288
|
{
|
|
3955
4289
|
"data-slot": "scroll-area-thumb",
|
|
@@ -3963,8 +4297,8 @@ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ cla
|
|
|
3963
4297
|
);
|
|
3964
4298
|
});
|
|
3965
4299
|
ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
|
|
3966
|
-
var ScrollAreaCorner =
|
|
3967
|
-
return /* @__PURE__ */ (0,
|
|
4300
|
+
var ScrollAreaCorner = React26.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
|
|
4301
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3968
4302
|
ScrollAreaPrimitive.Corner,
|
|
3969
4303
|
{
|
|
3970
4304
|
ref,
|
|
@@ -3977,19 +4311,19 @@ var ScrollAreaCorner = React24.forwardRef(function ScrollAreaCorner2({ className
|
|
|
3977
4311
|
ScrollAreaCorner.displayName = ScrollAreaPrimitive.Corner.displayName;
|
|
3978
4312
|
|
|
3979
4313
|
// src/components/select.tsx
|
|
3980
|
-
var
|
|
4314
|
+
var React27 = __toESM(require("react"), 1);
|
|
3981
4315
|
var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
|
|
3982
4316
|
|
|
3983
4317
|
// src/lib/form-control-classes.ts
|
|
3984
4318
|
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)]";
|
|
3985
4319
|
|
|
3986
4320
|
// src/components/select.tsx
|
|
3987
|
-
var
|
|
4321
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
3988
4322
|
var selectSizeOptions = ["default", "sm"];
|
|
3989
4323
|
var Select = SelectPrimitive.Root;
|
|
3990
4324
|
var SelectGroup = SelectPrimitive.Group;
|
|
3991
|
-
var SelectValue =
|
|
3992
|
-
return /* @__PURE__ */ (0,
|
|
4325
|
+
var SelectValue = React27.forwardRef(function SelectValue2({ className, ...props }, ref) {
|
|
4326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
3993
4327
|
Text,
|
|
3994
4328
|
{
|
|
3995
4329
|
ref,
|
|
@@ -3998,13 +4332,13 @@ var SelectValue = React25.forwardRef(function SelectValue2({ className, ...props
|
|
|
3998
4332
|
className: cn("block truncate text-inherit", className),
|
|
3999
4333
|
size: "body",
|
|
4000
4334
|
style: inheritedTypographyStyle,
|
|
4001
|
-
children: /* @__PURE__ */ (0,
|
|
4335
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectPrimitive.Value, { className: "block truncate", ...props })
|
|
4002
4336
|
}
|
|
4003
4337
|
);
|
|
4004
4338
|
});
|
|
4005
4339
|
SelectValue.displayName = SelectPrimitive.Value.displayName;
|
|
4006
|
-
var SelectTrigger =
|
|
4007
|
-
return /* @__PURE__ */ (0,
|
|
4340
|
+
var SelectTrigger = React27.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
|
|
4341
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
4008
4342
|
SelectPrimitive.Trigger,
|
|
4009
4343
|
{
|
|
4010
4344
|
ref,
|
|
@@ -4018,7 +4352,7 @@ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, chil
|
|
|
4018
4352
|
...props,
|
|
4019
4353
|
children: [
|
|
4020
4354
|
children,
|
|
4021
|
-
/* @__PURE__ */ (0,
|
|
4355
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4022
4356
|
Icon,
|
|
4023
4357
|
{
|
|
4024
4358
|
name: "caret-down",
|
|
@@ -4031,8 +4365,8 @@ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, chil
|
|
|
4031
4365
|
);
|
|
4032
4366
|
});
|
|
4033
4367
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
4034
|
-
var SelectScrollUpButton =
|
|
4035
|
-
return /* @__PURE__ */ (0,
|
|
4368
|
+
var SelectScrollUpButton = React27.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
|
|
4369
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4036
4370
|
SelectPrimitive.ScrollUpButton,
|
|
4037
4371
|
{
|
|
4038
4372
|
ref,
|
|
@@ -4042,13 +4376,13 @@ var SelectScrollUpButton = React25.forwardRef(function SelectScrollUpButton2({ c
|
|
|
4042
4376
|
className
|
|
4043
4377
|
),
|
|
4044
4378
|
...props,
|
|
4045
|
-
children: /* @__PURE__ */ (0,
|
|
4379
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { name: "caret-up", size: 12 })
|
|
4046
4380
|
}
|
|
4047
4381
|
);
|
|
4048
4382
|
});
|
|
4049
4383
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
4050
|
-
var SelectScrollDownButton =
|
|
4051
|
-
return /* @__PURE__ */ (0,
|
|
4384
|
+
var SelectScrollDownButton = React27.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
|
|
4385
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4052
4386
|
SelectPrimitive.ScrollDownButton,
|
|
4053
4387
|
{
|
|
4054
4388
|
ref,
|
|
@@ -4058,13 +4392,13 @@ var SelectScrollDownButton = React25.forwardRef(function SelectScrollDownButton2
|
|
|
4058
4392
|
className
|
|
4059
4393
|
),
|
|
4060
4394
|
...props,
|
|
4061
|
-
children: /* @__PURE__ */ (0,
|
|
4395
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { name: "caret-down", size: 12 })
|
|
4062
4396
|
}
|
|
4063
4397
|
);
|
|
4064
4398
|
});
|
|
4065
4399
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
4066
|
-
var SelectContent =
|
|
4067
|
-
return /* @__PURE__ */ (0,
|
|
4400
|
+
var SelectContent = React27.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
|
|
4401
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
4068
4402
|
SelectPrimitive.Content,
|
|
4069
4403
|
{
|
|
4070
4404
|
ref,
|
|
@@ -4077,8 +4411,8 @@ var SelectContent = React25.forwardRef(function SelectContent2({ className, chil
|
|
|
4077
4411
|
),
|
|
4078
4412
|
...props,
|
|
4079
4413
|
children: [
|
|
4080
|
-
/* @__PURE__ */ (0,
|
|
4081
|
-
/* @__PURE__ */ (0,
|
|
4414
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectScrollUpButton, {}),
|
|
4415
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4082
4416
|
SelectPrimitive.Viewport,
|
|
4083
4417
|
{
|
|
4084
4418
|
"data-slot": "select-viewport",
|
|
@@ -4086,14 +4420,14 @@ var SelectContent = React25.forwardRef(function SelectContent2({ className, chil
|
|
|
4086
4420
|
children
|
|
4087
4421
|
}
|
|
4088
4422
|
),
|
|
4089
|
-
/* @__PURE__ */ (0,
|
|
4423
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectScrollDownButton, {})
|
|
4090
4424
|
]
|
|
4091
4425
|
}
|
|
4092
4426
|
) });
|
|
4093
4427
|
});
|
|
4094
4428
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
4095
|
-
var SelectLabel =
|
|
4096
|
-
return /* @__PURE__ */ (0,
|
|
4429
|
+
var SelectLabel = React27.forwardRef(function SelectLabel2({ className, ...props }, ref) {
|
|
4430
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4097
4431
|
SelectPrimitive.Label,
|
|
4098
4432
|
{
|
|
4099
4433
|
ref,
|
|
@@ -4115,8 +4449,8 @@ var SelectLabel = React25.forwardRef(function SelectLabel2({ className, ...props
|
|
|
4115
4449
|
);
|
|
4116
4450
|
});
|
|
4117
4451
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
4118
|
-
var SelectItem =
|
|
4119
|
-
return /* @__PURE__ */ (0,
|
|
4452
|
+
var SelectItem = React27.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
|
|
4453
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
4120
4454
|
SelectPrimitive.Item,
|
|
4121
4455
|
{
|
|
4122
4456
|
ref,
|
|
@@ -4127,20 +4461,20 @@ var SelectItem = React25.forwardRef(function SelectItem2({ className, children,
|
|
|
4127
4461
|
),
|
|
4128
4462
|
...props,
|
|
4129
4463
|
children: [
|
|
4130
|
-
/* @__PURE__ */ (0,
|
|
4464
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
|
|
4131
4465
|
as: "span",
|
|
4132
4466
|
className: "block truncate text-[color:var(--sofya-text-default)]",
|
|
4133
4467
|
size: "body",
|
|
4134
4468
|
style: inheritedTypographyStyle
|
|
4135
4469
|
}) }),
|
|
4136
|
-
/* @__PURE__ */ (0,
|
|
4470
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Icon, { name: "check", size: 14 }) }) })
|
|
4137
4471
|
]
|
|
4138
4472
|
}
|
|
4139
4473
|
);
|
|
4140
4474
|
});
|
|
4141
4475
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
4142
|
-
var SelectSeparator =
|
|
4143
|
-
return /* @__PURE__ */ (0,
|
|
4476
|
+
var SelectSeparator = React27.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
|
|
4477
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
4144
4478
|
SelectPrimitive.Separator,
|
|
4145
4479
|
{
|
|
4146
4480
|
ref,
|
|
@@ -4153,11 +4487,11 @@ var SelectSeparator = React25.forwardRef(function SelectSeparator2({ className,
|
|
|
4153
4487
|
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
4154
4488
|
|
|
4155
4489
|
// src/components/separator.tsx
|
|
4156
|
-
var
|
|
4490
|
+
var React28 = __toESM(require("react"), 1);
|
|
4157
4491
|
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
|
|
4158
|
-
var
|
|
4159
|
-
var Separator2 =
|
|
4160
|
-
return /* @__PURE__ */ (0,
|
|
4492
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
4493
|
+
var Separator2 = React28.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
|
|
4494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
4161
4495
|
SeparatorPrimitive.Root,
|
|
4162
4496
|
{
|
|
4163
4497
|
ref,
|
|
@@ -4176,8 +4510,8 @@ var Separator2 = React26.forwardRef(function Separator3({ className, decorative
|
|
|
4176
4510
|
Separator2.displayName = SeparatorPrimitive.Root.displayName;
|
|
4177
4511
|
|
|
4178
4512
|
// src/components/slider.tsx
|
|
4179
|
-
var
|
|
4180
|
-
var
|
|
4513
|
+
var React29 = __toESM(require("react"), 1);
|
|
4514
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
4181
4515
|
function clampSliderValue(value, min, max) {
|
|
4182
4516
|
if (Number.isNaN(value)) {
|
|
4183
4517
|
return min;
|
|
@@ -4202,7 +4536,7 @@ function resolveSliderMeasurement(value, fallback) {
|
|
|
4202
4536
|
function isTextValue(value) {
|
|
4203
4537
|
return typeof value === "string" || typeof value === "number";
|
|
4204
4538
|
}
|
|
4205
|
-
var Slider =
|
|
4539
|
+
var Slider = React29.forwardRef(function Slider2({
|
|
4206
4540
|
className,
|
|
4207
4541
|
defaultValue,
|
|
4208
4542
|
formatValue,
|
|
@@ -4225,7 +4559,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4225
4559
|
valueClassName,
|
|
4226
4560
|
...props
|
|
4227
4561
|
}, ref) {
|
|
4228
|
-
const resolvedId =
|
|
4562
|
+
const resolvedId = React29.useId();
|
|
4229
4563
|
const inputId = id ?? resolvedId;
|
|
4230
4564
|
const safeMin = min;
|
|
4231
4565
|
const safeMax = resolveSliderMax(safeMin, max);
|
|
@@ -4234,7 +4568,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4234
4568
|
onChange: onValueChange,
|
|
4235
4569
|
value
|
|
4236
4570
|
});
|
|
4237
|
-
|
|
4571
|
+
React29.useEffect(() => {
|
|
4238
4572
|
if (value !== void 0) {
|
|
4239
4573
|
return;
|
|
4240
4574
|
}
|
|
@@ -4281,14 +4615,14 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4281
4615
|
setControllableValue(nextValue);
|
|
4282
4616
|
onChange?.(event);
|
|
4283
4617
|
};
|
|
4284
|
-
return /* @__PURE__ */ (0,
|
|
4618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
4285
4619
|
"div",
|
|
4286
4620
|
{
|
|
4287
4621
|
"data-slot": "slider",
|
|
4288
4622
|
className: cn("grid w-full gap-2", className),
|
|
4289
4623
|
children: [
|
|
4290
|
-
label || showValue ? /* @__PURE__ */ (0,
|
|
4291
|
-
label ? /* @__PURE__ */ (0,
|
|
4624
|
+
label || showValue ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "flex items-center justify-between gap-4", children: [
|
|
4625
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4292
4626
|
FieldLabel,
|
|
4293
4627
|
{
|
|
4294
4628
|
htmlFor: inputId,
|
|
@@ -4299,8 +4633,8 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4299
4633
|
textClassName: "block min-w-0 text-[color:var(--sofya-text-default)]",
|
|
4300
4634
|
children: label
|
|
4301
4635
|
}
|
|
4302
|
-
) : /* @__PURE__ */ (0,
|
|
4303
|
-
showValue ? /* @__PURE__ */ (0,
|
|
4636
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", {}),
|
|
4637
|
+
showValue ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4304
4638
|
"div",
|
|
4305
4639
|
{
|
|
4306
4640
|
className: cn(
|
|
@@ -4318,7 +4652,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4318
4652
|
}
|
|
4319
4653
|
) : null
|
|
4320
4654
|
] }) : null,
|
|
4321
|
-
/* @__PURE__ */ (0,
|
|
4655
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
4322
4656
|
"div",
|
|
4323
4657
|
{
|
|
4324
4658
|
"data-slot": "slider-control",
|
|
@@ -4328,7 +4662,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4328
4662
|
),
|
|
4329
4663
|
style: controlStyle,
|
|
4330
4664
|
children: [
|
|
4331
|
-
/* @__PURE__ */ (0,
|
|
4665
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4332
4666
|
"input",
|
|
4333
4667
|
{
|
|
4334
4668
|
...props,
|
|
@@ -4345,7 +4679,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4345
4679
|
style: inputBoundsStyle
|
|
4346
4680
|
}
|
|
4347
4681
|
),
|
|
4348
|
-
/* @__PURE__ */ (0,
|
|
4682
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4349
4683
|
"div",
|
|
4350
4684
|
{
|
|
4351
4685
|
"data-slot": "slider-track",
|
|
@@ -4356,7 +4690,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4356
4690
|
style: trackBoundsStyle
|
|
4357
4691
|
}
|
|
4358
4692
|
),
|
|
4359
|
-
/* @__PURE__ */ (0,
|
|
4693
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4360
4694
|
"div",
|
|
4361
4695
|
{
|
|
4362
4696
|
"data-slot": "slider-range",
|
|
@@ -4367,7 +4701,7 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4367
4701
|
style: rangeStyle
|
|
4368
4702
|
}
|
|
4369
4703
|
),
|
|
4370
|
-
/* @__PURE__ */ (0,
|
|
4704
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4371
4705
|
"div",
|
|
4372
4706
|
{
|
|
4373
4707
|
"data-slot": "slider-thumb",
|
|
@@ -4388,10 +4722,10 @@ var Slider = React27.forwardRef(function Slider2({
|
|
|
4388
4722
|
Slider.displayName = "Slider";
|
|
4389
4723
|
|
|
4390
4724
|
// src/components/skeleton.tsx
|
|
4391
|
-
var
|
|
4392
|
-
var
|
|
4393
|
-
var Skeleton =
|
|
4394
|
-
return /* @__PURE__ */ (0,
|
|
4725
|
+
var React30 = __toESM(require("react"), 1);
|
|
4726
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
4727
|
+
var Skeleton = React30.forwardRef(function Skeleton2({ className, ...props }, ref) {
|
|
4728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4395
4729
|
"div",
|
|
4396
4730
|
{
|
|
4397
4731
|
ref,
|
|
@@ -4406,15 +4740,15 @@ var Skeleton = React28.forwardRef(function Skeleton2({ className, ...props }, re
|
|
|
4406
4740
|
Skeleton.displayName = "Skeleton";
|
|
4407
4741
|
|
|
4408
4742
|
// src/components/sonner.tsx
|
|
4409
|
-
var
|
|
4743
|
+
var React31 = __toESM(require("react"), 1);
|
|
4410
4744
|
var import_sonner = require("sonner");
|
|
4411
|
-
var
|
|
4745
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
4412
4746
|
var notificationVariantOptions = ["default", "success", "error", "warning"];
|
|
4413
4747
|
function ToastStatusIcon({
|
|
4414
4748
|
iconName,
|
|
4415
4749
|
className
|
|
4416
4750
|
}) {
|
|
4417
|
-
return /* @__PURE__ */ (0,
|
|
4751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4418
4752
|
"span",
|
|
4419
4753
|
{
|
|
4420
4754
|
"aria-hidden": "true",
|
|
@@ -4422,7 +4756,7 @@ function ToastStatusIcon({
|
|
|
4422
4756
|
"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full border shadow-sofya-sm",
|
|
4423
4757
|
className
|
|
4424
4758
|
),
|
|
4425
|
-
children: /* @__PURE__ */ (0,
|
|
4759
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { name: iconName, size: 16 })
|
|
4426
4760
|
}
|
|
4427
4761
|
);
|
|
4428
4762
|
}
|
|
@@ -4443,35 +4777,35 @@ var defaultToastClassNames = {
|
|
|
4443
4777
|
loading: "border-border bg-card text-foreground"
|
|
4444
4778
|
};
|
|
4445
4779
|
var defaultToastIcons = {
|
|
4446
|
-
success: /* @__PURE__ */ (0,
|
|
4780
|
+
success: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4447
4781
|
ToastStatusIcon,
|
|
4448
4782
|
{
|
|
4449
4783
|
iconName: "check",
|
|
4450
4784
|
className: "border-success/15 bg-success/12 text-success"
|
|
4451
4785
|
}
|
|
4452
4786
|
),
|
|
4453
|
-
error: /* @__PURE__ */ (0,
|
|
4787
|
+
error: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4454
4788
|
ToastStatusIcon,
|
|
4455
4789
|
{
|
|
4456
4790
|
iconName: "x",
|
|
4457
4791
|
className: "border-destructive/15 bg-destructive/12 text-destructive"
|
|
4458
4792
|
}
|
|
4459
4793
|
),
|
|
4460
|
-
warning: /* @__PURE__ */ (0,
|
|
4794
|
+
warning: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4461
4795
|
ToastStatusIcon,
|
|
4462
4796
|
{
|
|
4463
4797
|
iconName: "question",
|
|
4464
4798
|
className: "border-warning/20 bg-warning/15 text-foreground"
|
|
4465
4799
|
}
|
|
4466
4800
|
),
|
|
4467
|
-
info: /* @__PURE__ */ (0,
|
|
4801
|
+
info: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4468
4802
|
ToastStatusIcon,
|
|
4469
4803
|
{
|
|
4470
4804
|
iconName: "question",
|
|
4471
4805
|
className: "border-primary/15 bg-primary/10 text-primary"
|
|
4472
4806
|
}
|
|
4473
4807
|
),
|
|
4474
|
-
close: /* @__PURE__ */ (0,
|
|
4808
|
+
close: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { name: "x", size: 12 })
|
|
4475
4809
|
};
|
|
4476
4810
|
function mergeToastClassNames(overrides) {
|
|
4477
4811
|
return {
|
|
@@ -4479,7 +4813,7 @@ function mergeToastClassNames(overrides) {
|
|
|
4479
4813
|
...overrides
|
|
4480
4814
|
};
|
|
4481
4815
|
}
|
|
4482
|
-
var Toaster =
|
|
4816
|
+
var Toaster = React31.forwardRef(
|
|
4483
4817
|
function Toaster2({
|
|
4484
4818
|
className,
|
|
4485
4819
|
closeButton = true,
|
|
@@ -4491,7 +4825,7 @@ var Toaster = React29.forwardRef(
|
|
|
4491
4825
|
visibleToasts = 5,
|
|
4492
4826
|
...props
|
|
4493
4827
|
}, ref) {
|
|
4494
|
-
return /* @__PURE__ */ (0,
|
|
4828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
4495
4829
|
import_sonner.Toaster,
|
|
4496
4830
|
{
|
|
4497
4831
|
ref,
|
|
@@ -4520,43 +4854,10 @@ var Toaster = React29.forwardRef(
|
|
|
4520
4854
|
);
|
|
4521
4855
|
Toaster.displayName = "Toaster";
|
|
4522
4856
|
|
|
4523
|
-
// src/components/spinner.tsx
|
|
4524
|
-
var React30 = __toESM(require("react"), 1);
|
|
4525
|
-
var import_icons_react6 = require("@tabler/icons-react");
|
|
4526
|
-
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
4527
|
-
var spinnerSizeOptions = ["sm", "default", "lg"];
|
|
4528
|
-
var Spinner = React30.forwardRef(function Spinner2({
|
|
4529
|
-
"aria-label": ariaLabelProp,
|
|
4530
|
-
"aria-labelledby": ariaLabelledby,
|
|
4531
|
-
className,
|
|
4532
|
-
role = "status",
|
|
4533
|
-
size = "default",
|
|
4534
|
-
...props
|
|
4535
|
-
}, ref) {
|
|
4536
|
-
const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
|
|
4537
|
-
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
4538
|
-
import_icons_react6.IconLoader2,
|
|
4539
|
-
{
|
|
4540
|
-
ref,
|
|
4541
|
-
"data-size": size,
|
|
4542
|
-
"data-slot": "spinner",
|
|
4543
|
-
role,
|
|
4544
|
-
"aria-label": ariaLabel,
|
|
4545
|
-
"aria-labelledby": ariaLabelledby,
|
|
4546
|
-
className: cn(
|
|
4547
|
-
"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",
|
|
4548
|
-
className
|
|
4549
|
-
),
|
|
4550
|
-
...props
|
|
4551
|
-
}
|
|
4552
|
-
);
|
|
4553
|
-
});
|
|
4554
|
-
Spinner.displayName = "Spinner";
|
|
4555
|
-
|
|
4556
4857
|
// src/components/switch.tsx
|
|
4557
|
-
var
|
|
4858
|
+
var React32 = __toESM(require("react"), 1);
|
|
4558
4859
|
var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
|
|
4559
|
-
var
|
|
4860
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
4560
4861
|
var switchSizeOptions = ["default", "sm"];
|
|
4561
4862
|
var switchRootSizeClasses = {
|
|
4562
4863
|
default: "h-6 w-11",
|
|
@@ -4566,7 +4867,7 @@ var switchThumbSizeClasses = {
|
|
|
4566
4867
|
default: "h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",
|
|
4567
4868
|
sm: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
|
|
4568
4869
|
};
|
|
4569
|
-
var Switch =
|
|
4870
|
+
var Switch = React32.forwardRef(
|
|
4570
4871
|
({
|
|
4571
4872
|
"aria-describedby": ariaDescribedBy,
|
|
4572
4873
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -4581,7 +4882,7 @@ var Switch = React31.forwardRef(
|
|
|
4581
4882
|
size,
|
|
4582
4883
|
...props
|
|
4583
4884
|
}, ref) => {
|
|
4584
|
-
const generatedId =
|
|
4885
|
+
const generatedId = React32.useId();
|
|
4585
4886
|
const resolvedId = id ?? generatedId;
|
|
4586
4887
|
const labelId = label ? `${resolvedId}-label` : void 0;
|
|
4587
4888
|
const descriptionId = description ? `${resolvedId}-description` : void 0;
|
|
@@ -4590,7 +4891,7 @@ var Switch = React31.forwardRef(
|
|
|
4590
4891
|
const alignClassName = description ? "items-start" : "items-center";
|
|
4591
4892
|
const resolvedAriaDescribedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
|
|
4592
4893
|
const resolvedAriaLabelledBy = ariaLabelledBy ?? labelId;
|
|
4593
|
-
const switchControl = /* @__PURE__ */ (0,
|
|
4894
|
+
const switchControl = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
4594
4895
|
SwitchPrimitives.Root,
|
|
4595
4896
|
{
|
|
4596
4897
|
id: resolvedId,
|
|
@@ -4605,7 +4906,7 @@ var Switch = React31.forwardRef(
|
|
|
4605
4906
|
"data-size": resolvedSize,
|
|
4606
4907
|
...props,
|
|
4607
4908
|
ref,
|
|
4608
|
-
children: /* @__PURE__ */ (0,
|
|
4909
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
4609
4910
|
SwitchPrimitives.Thumb,
|
|
4610
4911
|
{
|
|
4611
4912
|
className: cn(
|
|
@@ -4619,7 +4920,7 @@ var Switch = React31.forwardRef(
|
|
|
4619
4920
|
if (!hasTextContent) {
|
|
4620
4921
|
return switchControl;
|
|
4621
4922
|
}
|
|
4622
|
-
return /* @__PURE__ */ (0,
|
|
4923
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
4623
4924
|
"div",
|
|
4624
4925
|
{
|
|
4625
4926
|
"data-slot": "switch-container",
|
|
@@ -4630,8 +4931,8 @@ var Switch = React31.forwardRef(
|
|
|
4630
4931
|
}),
|
|
4631
4932
|
children: [
|
|
4632
4933
|
switchControl,
|
|
4633
|
-
/* @__PURE__ */ (0,
|
|
4634
|
-
label ? /* @__PURE__ */ (0,
|
|
4934
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: selectionControlContentBaseClasses, children: [
|
|
4935
|
+
label ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
4635
4936
|
"span",
|
|
4636
4937
|
{
|
|
4637
4938
|
id: labelId,
|
|
@@ -4646,7 +4947,7 @@ var Switch = React31.forwardRef(
|
|
|
4646
4947
|
})
|
|
4647
4948
|
}
|
|
4648
4949
|
) }) : null,
|
|
4649
|
-
description ? /* @__PURE__ */ (0,
|
|
4950
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
4650
4951
|
"span",
|
|
4651
4952
|
{
|
|
4652
4953
|
id: descriptionId,
|
|
@@ -4671,8 +4972,8 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
|
4671
4972
|
|
|
4672
4973
|
// src/components/table.tsx
|
|
4673
4974
|
var import_class_variance_authority8 = require("class-variance-authority");
|
|
4674
|
-
var
|
|
4675
|
-
var
|
|
4975
|
+
var React33 = __toESM(require("react"), 1);
|
|
4976
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
4676
4977
|
var tableCellVariantOptions = ["default", "primary", "muted"];
|
|
4677
4978
|
var tableStatusToneOptions = [
|
|
4678
4979
|
"active",
|
|
@@ -4722,13 +5023,13 @@ var tableActionButtonVariants = (0, import_class_variance_authority8.cva)(
|
|
|
4722
5023
|
}
|
|
4723
5024
|
}
|
|
4724
5025
|
);
|
|
4725
|
-
var Table =
|
|
4726
|
-
return /* @__PURE__ */ (0,
|
|
5026
|
+
var Table = React33.forwardRef(function Table2({ className, ...props }, ref) {
|
|
5027
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4727
5028
|
"div",
|
|
4728
5029
|
{
|
|
4729
5030
|
"data-slot": "table-container",
|
|
4730
5031
|
className: "relative w-full overflow-x-auto",
|
|
4731
|
-
children: /* @__PURE__ */ (0,
|
|
5032
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4732
5033
|
"table",
|
|
4733
5034
|
{
|
|
4734
5035
|
"data-slot": "table",
|
|
@@ -4743,8 +5044,8 @@ var Table = React32.forwardRef(function Table2({ className, ...props }, ref) {
|
|
|
4743
5044
|
}
|
|
4744
5045
|
);
|
|
4745
5046
|
});
|
|
4746
|
-
var TableHeader =
|
|
4747
|
-
return /* @__PURE__ */ (0,
|
|
5047
|
+
var TableHeader = React33.forwardRef(function TableHeader2({ className, ...props }, ref) {
|
|
5048
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4748
5049
|
"thead",
|
|
4749
5050
|
{
|
|
4750
5051
|
"data-slot": "table-header",
|
|
@@ -4757,8 +5058,8 @@ var TableHeader = React32.forwardRef(function TableHeader2({ className, ...props
|
|
|
4757
5058
|
}
|
|
4758
5059
|
);
|
|
4759
5060
|
});
|
|
4760
|
-
var TableBody =
|
|
4761
|
-
return /* @__PURE__ */ (0,
|
|
5061
|
+
var TableBody = React33.forwardRef(function TableBody2({ className, ...props }, ref) {
|
|
5062
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4762
5063
|
"tbody",
|
|
4763
5064
|
{
|
|
4764
5065
|
"data-slot": "table-body",
|
|
@@ -4768,8 +5069,8 @@ var TableBody = React32.forwardRef(function TableBody2({ className, ...props },
|
|
|
4768
5069
|
}
|
|
4769
5070
|
);
|
|
4770
5071
|
});
|
|
4771
|
-
var TableFooter =
|
|
4772
|
-
return /* @__PURE__ */ (0,
|
|
5072
|
+
var TableFooter = React33.forwardRef(function TableFooter2({ className, ...props }, ref) {
|
|
5073
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4773
5074
|
"tfoot",
|
|
4774
5075
|
{
|
|
4775
5076
|
"data-slot": "table-footer",
|
|
@@ -4782,8 +5083,8 @@ var TableFooter = React32.forwardRef(function TableFooter2({ className, ...props
|
|
|
4782
5083
|
}
|
|
4783
5084
|
);
|
|
4784
5085
|
});
|
|
4785
|
-
var TableRow =
|
|
4786
|
-
return /* @__PURE__ */ (0,
|
|
5086
|
+
var TableRow = React33.forwardRef(function TableRow2({ className, ...props }, ref) {
|
|
5087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4787
5088
|
"tr",
|
|
4788
5089
|
{
|
|
4789
5090
|
"data-slot": "table-row",
|
|
@@ -4796,8 +5097,8 @@ var TableRow = React32.forwardRef(function TableRow2({ className, ...props }, re
|
|
|
4796
5097
|
}
|
|
4797
5098
|
);
|
|
4798
5099
|
});
|
|
4799
|
-
var TableHead =
|
|
4800
|
-
return /* @__PURE__ */ (0,
|
|
5100
|
+
var TableHead = React33.forwardRef(function TableHead2({ className, children, ...props }, ref) {
|
|
5101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4801
5102
|
"th",
|
|
4802
5103
|
{
|
|
4803
5104
|
"data-slot": "table-head",
|
|
@@ -4816,9 +5117,9 @@ var TableHead = React32.forwardRef(function TableHead2({ className, children, ..
|
|
|
4816
5117
|
}
|
|
4817
5118
|
);
|
|
4818
5119
|
});
|
|
4819
|
-
var TableCell =
|
|
5120
|
+
var TableCell = React33.forwardRef(
|
|
4820
5121
|
function TableCell2({ className, variant, children, ...props }, ref) {
|
|
4821
|
-
return /* @__PURE__ */ (0,
|
|
5122
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4822
5123
|
"td",
|
|
4823
5124
|
{
|
|
4824
5125
|
"data-slot": "table-cell",
|
|
@@ -4835,8 +5136,8 @@ var TableCell = React32.forwardRef(
|
|
|
4835
5136
|
);
|
|
4836
5137
|
}
|
|
4837
5138
|
);
|
|
4838
|
-
var TableCaption =
|
|
4839
|
-
return /* @__PURE__ */ (0,
|
|
5139
|
+
var TableCaption = React33.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
|
|
5140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4840
5141
|
"caption",
|
|
4841
5142
|
{
|
|
4842
5143
|
"data-slot": "table-caption",
|
|
@@ -4861,7 +5162,7 @@ function TableStatusBadge({
|
|
|
4861
5162
|
children,
|
|
4862
5163
|
...props
|
|
4863
5164
|
}) {
|
|
4864
|
-
return /* @__PURE__ */ (0,
|
|
5165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4865
5166
|
Badge,
|
|
4866
5167
|
{
|
|
4867
5168
|
variant: "pill",
|
|
@@ -4876,8 +5177,8 @@ function TableStatusBadge({
|
|
|
4876
5177
|
}
|
|
4877
5178
|
);
|
|
4878
5179
|
}
|
|
4879
|
-
var TableActionButton =
|
|
4880
|
-
return /* @__PURE__ */ (0,
|
|
5180
|
+
var TableActionButton = React33.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
|
|
5181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4881
5182
|
Button,
|
|
4882
5183
|
{
|
|
4883
5184
|
ref,
|
|
@@ -4895,8 +5196,8 @@ var TableActionButton = React32.forwardRef(function TableActionButton2({ classNa
|
|
|
4895
5196
|
}
|
|
4896
5197
|
);
|
|
4897
5198
|
});
|
|
4898
|
-
var TableActions =
|
|
4899
|
-
return /* @__PURE__ */ (0,
|
|
5199
|
+
var TableActions = React33.forwardRef(function TableActions2({ className, ...props }, ref) {
|
|
5200
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
4900
5201
|
"div",
|
|
4901
5202
|
{
|
|
4902
5203
|
ref,
|
|
@@ -4917,10 +5218,10 @@ TableActionButton.displayName = "TableActionButton";
|
|
|
4917
5218
|
TableActions.displayName = "TableActions";
|
|
4918
5219
|
|
|
4919
5220
|
// src/components/tabs.tsx
|
|
4920
|
-
var
|
|
5221
|
+
var React34 = __toESM(require("react"), 1);
|
|
4921
5222
|
var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
|
|
4922
5223
|
var import_react3 = require("motion/react");
|
|
4923
|
-
var
|
|
5224
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
4924
5225
|
function resolveDefaultValue(items, defaultValue) {
|
|
4925
5226
|
if (defaultValue) {
|
|
4926
5227
|
return defaultValue;
|
|
@@ -4944,13 +5245,13 @@ function Tabs({
|
|
|
4944
5245
|
onChange: onValueChange,
|
|
4945
5246
|
value
|
|
4946
5247
|
});
|
|
4947
|
-
const indicatorLayoutId =
|
|
4948
|
-
|
|
5248
|
+
const indicatorLayoutId = React34.useId();
|
|
5249
|
+
React34.useEffect(() => {
|
|
4949
5250
|
if (value === void 0) {
|
|
4950
5251
|
setUncontrolledCurrentValue(resolvedDefaultValue);
|
|
4951
5252
|
}
|
|
4952
5253
|
}, [resolvedDefaultValue, setUncontrolledCurrentValue, value]);
|
|
4953
|
-
return /* @__PURE__ */ (0,
|
|
5254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4954
5255
|
TabsPrimitive.Root,
|
|
4955
5256
|
{
|
|
4956
5257
|
className: cn("w-full", className),
|
|
@@ -4958,7 +5259,7 @@ function Tabs({
|
|
|
4958
5259
|
value: currentValue,
|
|
4959
5260
|
...props,
|
|
4960
5261
|
children: [
|
|
4961
|
-
/* @__PURE__ */ (0,
|
|
5262
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4962
5263
|
TabsPrimitive.List,
|
|
4963
5264
|
{
|
|
4964
5265
|
"aria-label": "Subtelas navegaveis",
|
|
@@ -4969,7 +5270,7 @@ function Tabs({
|
|
|
4969
5270
|
children: items.map((item) => {
|
|
4970
5271
|
const isUnavailable = item.disabled || item.loading;
|
|
4971
5272
|
const isActive = item.value === currentValue;
|
|
4972
|
-
return /* @__PURE__ */ (0,
|
|
5273
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
4973
5274
|
TabsPrimitive.Trigger,
|
|
4974
5275
|
{
|
|
4975
5276
|
value: item.value,
|
|
@@ -4981,7 +5282,7 @@ function Tabs({
|
|
|
4981
5282
|
item.triggerClassName
|
|
4982
5283
|
),
|
|
4983
5284
|
children: [
|
|
4984
|
-
isActive ? /* @__PURE__ */ (0,
|
|
5285
|
+
isActive ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4985
5286
|
import_react3.motion.span,
|
|
4986
5287
|
{
|
|
4987
5288
|
"aria-hidden": "true",
|
|
@@ -4991,15 +5292,15 @@ function Tabs({
|
|
|
4991
5292
|
transition: { duration: 0.25, ease: "easeInOut" }
|
|
4992
5293
|
}
|
|
4993
5294
|
) : null,
|
|
4994
|
-
/* @__PURE__ */ (0,
|
|
4995
|
-
item.loading ? /* @__PURE__ */ (0,
|
|
5295
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
|
|
5296
|
+
item.loading ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
4996
5297
|
"span",
|
|
4997
5298
|
{
|
|
4998
5299
|
"aria-hidden": "true",
|
|
4999
5300
|
className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent"
|
|
5000
5301
|
}
|
|
5001
5302
|
) : null,
|
|
5002
|
-
/* @__PURE__ */ (0,
|
|
5303
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { children: renderTextContent(item.label, {
|
|
5003
5304
|
as: "span",
|
|
5004
5305
|
className: "block text-inherit",
|
|
5005
5306
|
size: "h5"
|
|
@@ -5013,7 +5314,7 @@ function Tabs({
|
|
|
5013
5314
|
}
|
|
5014
5315
|
),
|
|
5015
5316
|
items.map(
|
|
5016
|
-
(item) => item.content !== void 0 ? /* @__PURE__ */ (0,
|
|
5317
|
+
(item) => item.content !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
5017
5318
|
TabsPrimitive.Content,
|
|
5018
5319
|
{
|
|
5019
5320
|
value: item.value,
|
|
@@ -5036,9 +5337,9 @@ function Tabs({
|
|
|
5036
5337
|
Tabs.displayName = "Tabs";
|
|
5037
5338
|
|
|
5038
5339
|
// src/components/textarea.tsx
|
|
5039
|
-
var
|
|
5040
|
-
var
|
|
5041
|
-
var Textarea =
|
|
5340
|
+
var React35 = __toESM(require("react"), 1);
|
|
5341
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
5342
|
+
var Textarea = React35.forwardRef(
|
|
5042
5343
|
({
|
|
5043
5344
|
className,
|
|
5044
5345
|
containerClassName,
|
|
@@ -5048,10 +5349,10 @@ var Textarea = React34.forwardRef(
|
|
|
5048
5349
|
rows = 5,
|
|
5049
5350
|
...props
|
|
5050
5351
|
}, ref) => {
|
|
5051
|
-
const generatedId =
|
|
5352
|
+
const generatedId = React35.useId();
|
|
5052
5353
|
const resolvedId = id ?? generatedId;
|
|
5053
5354
|
const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
|
|
5054
|
-
const control = /* @__PURE__ */ (0,
|
|
5355
|
+
const control = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
5055
5356
|
"textarea",
|
|
5056
5357
|
{
|
|
5057
5358
|
className: cn(
|
|
@@ -5065,7 +5366,7 @@ var Textarea = React34.forwardRef(
|
|
|
5065
5366
|
"aria-label": ariaLabel
|
|
5066
5367
|
}
|
|
5067
5368
|
);
|
|
5068
|
-
return /* @__PURE__ */ (0,
|
|
5369
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
5069
5370
|
FieldShell,
|
|
5070
5371
|
{
|
|
5071
5372
|
control,
|
|
@@ -5080,14 +5381,14 @@ var Textarea = React34.forwardRef(
|
|
|
5080
5381
|
Textarea.displayName = "Textarea";
|
|
5081
5382
|
|
|
5082
5383
|
// src/components/tooltip.tsx
|
|
5083
|
-
var
|
|
5384
|
+
var React36 = __toESM(require("react"), 1);
|
|
5084
5385
|
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
|
|
5085
|
-
var
|
|
5386
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
5086
5387
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
5087
5388
|
var Tooltip = TooltipPrimitive.Root;
|
|
5088
5389
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
5089
|
-
var TooltipContent =
|
|
5090
|
-
return /* @__PURE__ */ (0,
|
|
5390
|
+
var TooltipContent = React36.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
|
|
5391
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
5091
5392
|
TooltipPrimitive.Content,
|
|
5092
5393
|
{
|
|
5093
5394
|
ref,
|
|
@@ -5111,9 +5412,9 @@ var TooltipContent = React35.forwardRef(function TooltipContent2({ className, si
|
|
|
5111
5412
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
5112
5413
|
|
|
5113
5414
|
// src/theme/provider.tsx
|
|
5114
|
-
var
|
|
5415
|
+
var React37 = __toESM(require("react"), 1);
|
|
5115
5416
|
var import_tokens = require("@sofya-ds/tokens");
|
|
5116
|
-
var
|
|
5417
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
5117
5418
|
var SOFYA_FONT_LINKS = [
|
|
5118
5419
|
{
|
|
5119
5420
|
id: "preconnect-googleapis",
|
|
@@ -5133,7 +5434,7 @@ var SOFYA_FONT_LINKS = [
|
|
|
5133
5434
|
}
|
|
5134
5435
|
];
|
|
5135
5436
|
function useSofyaFontLinks() {
|
|
5136
|
-
|
|
5437
|
+
React37.useEffect(() => {
|
|
5137
5438
|
if (typeof document === "undefined") {
|
|
5138
5439
|
return;
|
|
5139
5440
|
}
|
|
@@ -5166,7 +5467,7 @@ function SofyaProvider({
|
|
|
5166
5467
|
useSofyaFontLinks();
|
|
5167
5468
|
const theme = (0, import_tokens.createWhitelabelTheme)(overrides ?? {}, preset);
|
|
5168
5469
|
const cssVariables = (0, import_tokens.themeToCssVariables)(theme);
|
|
5169
|
-
return /* @__PURE__ */ (0,
|
|
5470
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
5170
5471
|
"div",
|
|
5171
5472
|
{
|
|
5172
5473
|
"data-sofya-theme": theme.name,
|
|
@@ -5212,6 +5513,7 @@ var import_tokens2 = require("@sofya-ds/tokens");
|
|
|
5212
5513
|
DialogTitle,
|
|
5213
5514
|
DialogTrigger,
|
|
5214
5515
|
Dropdown,
|
|
5516
|
+
DropdownSearch,
|
|
5215
5517
|
Empty,
|
|
5216
5518
|
EmptyContent,
|
|
5217
5519
|
EmptyDescription,
|