@sofya-ds/react 1.3.1 → 1.3.5
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 +114 -92
- package/dist/index.css +1 -1
- package/dist/index.d.cts +12 -9
- package/dist/index.d.ts +12 -9
- package/dist/index.js +119 -97
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -130,6 +130,7 @@ import {
|
|
|
130
130
|
IconPlus,
|
|
131
131
|
IconSchool,
|
|
132
132
|
IconSearch,
|
|
133
|
+
IconSquareToggle,
|
|
133
134
|
IconSparkles,
|
|
134
135
|
IconUser,
|
|
135
136
|
IconUserFilled,
|
|
@@ -171,6 +172,7 @@ var tablerIconRegistry = {
|
|
|
171
172
|
IconPlus,
|
|
172
173
|
IconSchool,
|
|
173
174
|
IconSearch,
|
|
175
|
+
IconSquareToggle,
|
|
174
176
|
IconSparkles,
|
|
175
177
|
IconUser,
|
|
176
178
|
IconUserFilled,
|
|
@@ -236,6 +238,8 @@ var legacyIconToTablerNameMap = {
|
|
|
236
238
|
"trash-filled": "IconTrashFilled",
|
|
237
239
|
"trash-off": "IconTrashOff",
|
|
238
240
|
"trash-x": "IconTrashX",
|
|
241
|
+
"square-toggle": "IconSquareToggle",
|
|
242
|
+
iconSquareToggle: "IconSquareToggle",
|
|
239
243
|
"delete": "IconTrash",
|
|
240
244
|
"remove": "IconTrashX",
|
|
241
245
|
"lixeira": "IconTrash",
|
|
@@ -387,7 +391,7 @@ Icon.displayName = "Icon";
|
|
|
387
391
|
// src/components/text.tsx
|
|
388
392
|
import * as React3 from "react";
|
|
389
393
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
390
|
-
var textSizeOptions = ["h1", "h2", "h3", "h4", "h5", "body", "tiny"];
|
|
394
|
+
var textSizeOptions = ["h1", "h2", "h3", "h4", "h5", "body", "tiny", "extra-tiny"];
|
|
391
395
|
var textVariantOptions = ["default", "gradient", "shiny", "split"];
|
|
392
396
|
var textSplitTypeOptions = ["chars", "words", "words, chars"];
|
|
393
397
|
var defaultElements = {
|
|
@@ -397,7 +401,8 @@ var defaultElements = {
|
|
|
397
401
|
h4: "h4",
|
|
398
402
|
h5: "h5",
|
|
399
403
|
body: "p",
|
|
400
|
-
tiny: "span"
|
|
404
|
+
tiny: "span",
|
|
405
|
+
"extra-tiny": "span"
|
|
401
406
|
};
|
|
402
407
|
var textSizeStyles = Object.fromEntries(
|
|
403
408
|
textSizeOptions.map((size) => [
|
|
@@ -1350,7 +1355,7 @@ var buttonVariants = cva4(
|
|
|
1350
1355
|
language: "border-0 bg-muted bg-cover bg-center bg-no-repeat text-primary-foreground shadow-none hover:brightness-[1.03]",
|
|
1351
1356
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/85",
|
|
1352
1357
|
outline: "border border-primary/15 bg-background text-foreground hover:border-primary/30 hover:bg-background active:bg-background",
|
|
1353
|
-
ghost: "bg-
|
|
1358
|
+
ghost: "bg-transparent text-foreground hover:bg-muted",
|
|
1354
1359
|
destructive: "bg-destructive text-destructive-foreground hover:brightness-[1.04]"
|
|
1355
1360
|
},
|
|
1356
1361
|
size: {
|
|
@@ -1476,7 +1481,7 @@ var Button = React8.forwardRef(
|
|
|
1476
1481
|
hasChildren ? renderTextContent(children, {
|
|
1477
1482
|
as: "span",
|
|
1478
1483
|
className: "inline-flex items-center text-current",
|
|
1479
|
-
size: "
|
|
1484
|
+
size: "tiny",
|
|
1480
1485
|
style: {
|
|
1481
1486
|
fontWeight: "inherit",
|
|
1482
1487
|
letterSpacing: "inherit"
|
|
@@ -1556,21 +1561,12 @@ var surfaceStyles = {
|
|
|
1556
1561
|
"--sofya-surface-shadow-base": "var(--sofya-surface-card-shadow)",
|
|
1557
1562
|
boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
|
|
1558
1563
|
},
|
|
1559
|
-
panel: {
|
|
1560
|
-
backgroundColor: "hsl(var(--sofya-surface-panel-background))",
|
|
1561
|
-
borderColor: "hsl(var(--sofya-surface-panel-border-color))",
|
|
1562
|
-
borderWidth: "var(--sofya-surface-panel-border-width)",
|
|
1563
|
-
borderStyle: "solid",
|
|
1564
|
-
borderRadius: "var(--sofya-surface-panel-radius)",
|
|
1565
|
-
"--sofya-surface-shadow-base": "var(--sofya-surface-panel-shadow)",
|
|
1566
|
-
boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
|
|
1567
|
-
},
|
|
1568
1564
|
focus: {
|
|
1569
1565
|
backgroundColor: "hsl(var(--sofya-surface-focus-background))",
|
|
1570
1566
|
borderColor: "hsl(var(--sofya-surface-focus-border-color))",
|
|
1571
1567
|
borderWidth: "var(--sofya-surface-focus-border-width)",
|
|
1572
1568
|
borderStyle: "solid",
|
|
1573
|
-
borderRadius: "var(--sofya-surface-
|
|
1569
|
+
borderRadius: "var(--sofya-surface-card-radius)",
|
|
1574
1570
|
"--sofya-surface-shadow-base": "var(--sofya-surface-focus-shadow)",
|
|
1575
1571
|
boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
|
|
1576
1572
|
}
|
|
@@ -1594,9 +1590,9 @@ var Surface = SurfaceBase;
|
|
|
1594
1590
|
|
|
1595
1591
|
// src/components/card.tsx
|
|
1596
1592
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1597
|
-
var cardVariants = ["card", "
|
|
1593
|
+
var cardVariants = ["card", "focus"];
|
|
1598
1594
|
function Card({ className, variant = "card", ...props }) {
|
|
1599
|
-
const hasHoverShadow = variant === "card"
|
|
1595
|
+
const hasHoverShadow = variant === "card";
|
|
1600
1596
|
return /* @__PURE__ */ jsx10(
|
|
1601
1597
|
Surface,
|
|
1602
1598
|
{
|
|
@@ -1792,14 +1788,13 @@ function useControllableState({
|
|
|
1792
1788
|
}
|
|
1793
1789
|
|
|
1794
1790
|
// src/components/dropdown.tsx
|
|
1795
|
-
import {
|
|
1791
|
+
import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1796
1792
|
var dropdownVariantOptions = [
|
|
1797
1793
|
"card",
|
|
1798
|
-
"panel",
|
|
1799
1794
|
"language",
|
|
1800
1795
|
"selected"
|
|
1801
1796
|
];
|
|
1802
|
-
var dropdownAppearanceOptions = ["
|
|
1797
|
+
var dropdownAppearanceOptions = ["card"];
|
|
1803
1798
|
var dropdownTriggerSizeOptions = ["default", "sm", "lg"];
|
|
1804
1799
|
var dropdownLanguageItems = [
|
|
1805
1800
|
{ value: "en-US", label: "English", languageLocale: "en-US" },
|
|
@@ -1808,7 +1803,6 @@ var dropdownLanguageItems = [
|
|
|
1808
1803
|
];
|
|
1809
1804
|
var dropdownTriggerToneClasses = {
|
|
1810
1805
|
card: "text-primary",
|
|
1811
|
-
panel: "text-foreground",
|
|
1812
1806
|
language: "",
|
|
1813
1807
|
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)]"
|
|
1814
1808
|
};
|
|
@@ -1824,16 +1818,12 @@ var dropdownTriggerSizeClasses = {
|
|
|
1824
1818
|
lg: "h-12 px-6 py-2"
|
|
1825
1819
|
},
|
|
1826
1820
|
language: {
|
|
1827
|
-
default: "h-
|
|
1828
|
-
sm: "h-
|
|
1829
|
-
lg: "h-
|
|
1821
|
+
default: "h-5 w-5 p-0",
|
|
1822
|
+
sm: "h-[18px] w-[18px] p-0",
|
|
1823
|
+
lg: "h-6 w-6 p-0"
|
|
1830
1824
|
}
|
|
1831
1825
|
};
|
|
1832
1826
|
var dropdownAppearanceClasses = {
|
|
1833
|
-
panel: {
|
|
1834
|
-
content: "rounded-[10px]",
|
|
1835
|
-
trigger: "rounded-[10px]"
|
|
1836
|
-
},
|
|
1837
1827
|
card: {
|
|
1838
1828
|
content: "rounded-[20px]",
|
|
1839
1829
|
trigger: "rounded-[20px]"
|
|
@@ -1841,13 +1831,11 @@ var dropdownAppearanceClasses = {
|
|
|
1841
1831
|
};
|
|
1842
1832
|
var dropdownContentBaseClasses = {
|
|
1843
1833
|
card: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1844
|
-
panel: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1845
1834
|
language: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
|
|
1846
1835
|
selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
|
|
1847
1836
|
};
|
|
1848
1837
|
var dropdownItemClasses = {
|
|
1849
1838
|
card: "text-foreground",
|
|
1850
|
-
panel: "text-foreground",
|
|
1851
1839
|
language: "text-foreground",
|
|
1852
1840
|
selected: "text-foreground"
|
|
1853
1841
|
};
|
|
@@ -1864,13 +1852,9 @@ function resolveItemLanguageLocale(item) {
|
|
|
1864
1852
|
return isButtonLanguageLocale(item.value) ? item.value : void 0;
|
|
1865
1853
|
}
|
|
1866
1854
|
function resolveDropdownAppearance({
|
|
1867
|
-
appearance
|
|
1868
|
-
variant
|
|
1855
|
+
appearance
|
|
1869
1856
|
}) {
|
|
1870
|
-
|
|
1871
|
-
return appearance;
|
|
1872
|
-
}
|
|
1873
|
-
return variant === "card" ? "card" : "panel";
|
|
1857
|
+
return appearance ?? "card";
|
|
1874
1858
|
}
|
|
1875
1859
|
function resolveDropdownTriggerSizeFamily(variant) {
|
|
1876
1860
|
if (variant === "language") {
|
|
@@ -1905,8 +1889,8 @@ function LanguageFlagIcon({ locale }) {
|
|
|
1905
1889
|
{
|
|
1906
1890
|
alt: "",
|
|
1907
1891
|
"aria-hidden": "true",
|
|
1908
|
-
src:
|
|
1909
|
-
className: "h-[
|
|
1892
|
+
src: buttonLanguageFlagSrc[locale],
|
|
1893
|
+
className: "h-[18px] w-[18px] shrink-0 rounded-full object-cover"
|
|
1910
1894
|
}
|
|
1911
1895
|
);
|
|
1912
1896
|
}
|
|
@@ -2025,6 +2009,47 @@ function Dropdown({
|
|
|
2025
2009
|
const itemLanguageLocale = resolveItemLanguageLocale(item);
|
|
2026
2010
|
const indicator = item.indicator ?? /* @__PURE__ */ jsx12(DefaultDropdownItemIndicator, {});
|
|
2027
2011
|
const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ jsx12(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
|
|
2012
|
+
if (!usesDefaultListStyle) {
|
|
2013
|
+
return /* @__PURE__ */ jsx12(
|
|
2014
|
+
DropdownMenuPrimitive.RadioItem,
|
|
2015
|
+
{
|
|
2016
|
+
value: item.value,
|
|
2017
|
+
disabled: item.disabled,
|
|
2018
|
+
asChild: true,
|
|
2019
|
+
children: /* @__PURE__ */ jsx12(
|
|
2020
|
+
Button,
|
|
2021
|
+
{
|
|
2022
|
+
variant: "ghost",
|
|
2023
|
+
className: cn(
|
|
2024
|
+
"h-auto w-full px-2 py-0 font-normal data-[highlighted]:bg-muted [&>span.relative]:w-full",
|
|
2025
|
+
dropdownItemClasses[variant],
|
|
2026
|
+
itemClassName
|
|
2027
|
+
),
|
|
2028
|
+
children: /* @__PURE__ */ jsxs5("span", { className: "flex w-full items-center gap-2", children: [
|
|
2029
|
+
itemIcon && /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }),
|
|
2030
|
+
/* @__PURE__ */ jsx12("span", { className: "min-w-0 flex-1 truncate text-left", children: renderTextContent(item.label, {
|
|
2031
|
+
as: "span",
|
|
2032
|
+
className: "block truncate text-inherit",
|
|
2033
|
+
size: "tiny"
|
|
2034
|
+
}) }),
|
|
2035
|
+
/* @__PURE__ */ jsx12(
|
|
2036
|
+
"span",
|
|
2037
|
+
{
|
|
2038
|
+
"aria-hidden": "true",
|
|
2039
|
+
className: cn(
|
|
2040
|
+
"flex h-4 w-4 shrink-0 items-center justify-center text-primary transition-opacity duration-sofya ease-sofya",
|
|
2041
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
2042
|
+
),
|
|
2043
|
+
children: indicator
|
|
2044
|
+
}
|
|
2045
|
+
)
|
|
2046
|
+
] })
|
|
2047
|
+
}
|
|
2048
|
+
)
|
|
2049
|
+
},
|
|
2050
|
+
item.value
|
|
2051
|
+
);
|
|
2052
|
+
}
|
|
2028
2053
|
return /* @__PURE__ */ jsx12(
|
|
2029
2054
|
DropdownMenuPrimitive.RadioItem,
|
|
2030
2055
|
{
|
|
@@ -2032,11 +2057,11 @@ function Dropdown({
|
|
|
2032
2057
|
disabled: item.disabled,
|
|
2033
2058
|
className: cn(
|
|
2034
2059
|
"flex w-full cursor-pointer items-center rounded-[4px] [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-[22px] tracking-[var(--sofya-text-body-letter-spacing)] outline-none transition-colors duration-sofya ease-sofya data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
2035
|
-
|
|
2060
|
+
"px-0 py-0 data-[highlighted]:bg-transparent [&[data-highlighted]_span[data-dropdown-item-body]]:bg-[color:var(--sofya-surface-selected)]",
|
|
2036
2061
|
dropdownItemClasses[variant],
|
|
2037
2062
|
itemClassName
|
|
2038
2063
|
),
|
|
2039
|
-
children:
|
|
2064
|
+
children: /* @__PURE__ */ jsxs5(
|
|
2040
2065
|
"span",
|
|
2041
2066
|
{
|
|
2042
2067
|
"data-dropdown-item-body": true,
|
|
@@ -2049,7 +2074,7 @@ function Dropdown({
|
|
|
2049
2074
|
/* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
|
|
2050
2075
|
as: "span",
|
|
2051
2076
|
className: "block truncate text-inherit",
|
|
2052
|
-
size: "
|
|
2077
|
+
size: "tiny"
|
|
2053
2078
|
}) }),
|
|
2054
2079
|
isSelected ? /* @__PURE__ */ jsx12(
|
|
2055
2080
|
"span",
|
|
@@ -2061,28 +2086,7 @@ function Dropdown({
|
|
|
2061
2086
|
) : null
|
|
2062
2087
|
]
|
|
2063
2088
|
}
|
|
2064
|
-
)
|
|
2065
|
-
/* @__PURE__ */ jsxs5("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
2066
|
-
itemIcon ? /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
|
|
2067
|
-
/* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
|
|
2068
|
-
as: "span",
|
|
2069
|
-
className: "block truncate text-inherit",
|
|
2070
|
-
size: "body"
|
|
2071
|
-
}) })
|
|
2072
|
-
] }),
|
|
2073
|
-
/* @__PURE__ */ jsx12(
|
|
2074
|
-
"span",
|
|
2075
|
-
{
|
|
2076
|
-
"aria-hidden": "true",
|
|
2077
|
-
className: cn(
|
|
2078
|
-
"flex h-4 w-4 shrink-0 items-center justify-center transition-opacity duration-sofya ease-sofya",
|
|
2079
|
-
variant === "language" && "text-primary",
|
|
2080
|
-
isSelected ? "opacity-100" : "opacity-0"
|
|
2081
|
-
),
|
|
2082
|
-
children: indicator
|
|
2083
|
-
}
|
|
2084
|
-
)
|
|
2085
|
-
] })
|
|
2089
|
+
)
|
|
2086
2090
|
},
|
|
2087
2091
|
item.value
|
|
2088
2092
|
);
|
|
@@ -2104,6 +2108,9 @@ var Dialog = DialogPrimitive.Root;
|
|
|
2104
2108
|
var DialogTrigger = DialogPrimitive.Trigger;
|
|
2105
2109
|
var DialogPortal = DialogPrimitive.Portal;
|
|
2106
2110
|
var DialogClose = DialogPrimitive.Close;
|
|
2111
|
+
var DialogInternalContext = React13.createContext({
|
|
2112
|
+
showCloseButton: true
|
|
2113
|
+
});
|
|
2107
2114
|
var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
2108
2115
|
DialogPrimitive.Overlay,
|
|
2109
2116
|
{
|
|
@@ -2121,15 +2128,15 @@ var DialogContent = React13.forwardRef(
|
|
|
2121
2128
|
className,
|
|
2122
2129
|
children,
|
|
2123
2130
|
cardClassName,
|
|
2124
|
-
cardVariant = "panel",
|
|
2125
2131
|
overlayClassName,
|
|
2126
2132
|
showCloseButton = true,
|
|
2133
|
+
variant = "card",
|
|
2127
2134
|
...props
|
|
2128
2135
|
}, ref) => {
|
|
2129
2136
|
const dialogCardStyle = {
|
|
2130
2137
|
"--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
|
|
2131
2138
|
};
|
|
2132
|
-
return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
|
|
2139
|
+
return /* @__PURE__ */ jsx13(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ jsxs6(DialogPortal, { children: [
|
|
2133
2140
|
/* @__PURE__ */ jsx13(DialogOverlay, { className: overlayClassName }),
|
|
2134
2141
|
/* @__PURE__ */ jsx13("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx13(
|
|
2135
2142
|
DialogPrimitive.Content,
|
|
@@ -2140,54 +2147,68 @@ var DialogContent = React13.forwardRef(
|
|
|
2140
2147
|
className
|
|
2141
2148
|
),
|
|
2142
2149
|
...props,
|
|
2143
|
-
children: /* @__PURE__ */
|
|
2150
|
+
children: /* @__PURE__ */ jsx13(
|
|
2144
2151
|
Card,
|
|
2145
2152
|
{
|
|
2146
|
-
variant
|
|
2153
|
+
variant,
|
|
2147
2154
|
className: cn(
|
|
2148
|
-
"
|
|
2155
|
+
"flex max-h-[inherit] min-h-0 w-full flex-col gap-6 overflow-y-auto overflow-x-hidden p-6",
|
|
2149
2156
|
cardClassName
|
|
2150
2157
|
),
|
|
2151
2158
|
style: dialogCardStyle,
|
|
2152
|
-
children
|
|
2153
|
-
children,
|
|
2154
|
-
showCloseButton ? /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(
|
|
2155
|
-
Button,
|
|
2156
|
-
{
|
|
2157
|
-
type: "button",
|
|
2158
|
-
variant: "ghost",
|
|
2159
|
-
size: "icon",
|
|
2160
|
-
"aria-label": "Close",
|
|
2161
|
-
leftIcon: /* @__PURE__ */ jsx13(Icon, { name: "x", size: 18 }),
|
|
2162
|
-
className: "absolute right-4 top-4 z-10 text-muted-foreground hover:text-foreground"
|
|
2163
|
-
}
|
|
2164
|
-
) }) : null
|
|
2165
|
-
]
|
|
2159
|
+
children
|
|
2166
2160
|
}
|
|
2167
2161
|
)
|
|
2168
2162
|
}
|
|
2169
2163
|
) })
|
|
2170
|
-
] });
|
|
2164
|
+
] }) });
|
|
2171
2165
|
}
|
|
2172
2166
|
);
|
|
2173
2167
|
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
2174
|
-
function DialogHeader({ className, ...props }) {
|
|
2175
|
-
|
|
2168
|
+
function DialogHeader({ className, children, ...props }) {
|
|
2169
|
+
const { showCloseButton } = React13.useContext(DialogInternalContext);
|
|
2170
|
+
return /* @__PURE__ */ jsxs6(
|
|
2171
|
+
"div",
|
|
2172
|
+
{
|
|
2173
|
+
className: cn("flex w-full items-start justify-between gap-4", className),
|
|
2174
|
+
...props,
|
|
2175
|
+
children: [
|
|
2176
|
+
/* @__PURE__ */ jsx13("div", { className: "flex min-w-0 flex-1 flex-col gap-2 text-left", children }),
|
|
2177
|
+
showCloseButton ? /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(
|
|
2178
|
+
Button,
|
|
2179
|
+
{
|
|
2180
|
+
type: "button",
|
|
2181
|
+
variant: "ghost",
|
|
2182
|
+
size: "icon",
|
|
2183
|
+
"aria-label": "Close",
|
|
2184
|
+
leftIcon: /* @__PURE__ */ jsx13(Icon, { name: "x", size: 18 }),
|
|
2185
|
+
className: "shrink-0 text-muted-foreground hover:text-foreground"
|
|
2186
|
+
}
|
|
2187
|
+
) }) : null
|
|
2188
|
+
]
|
|
2189
|
+
}
|
|
2190
|
+
);
|
|
2191
|
+
}
|
|
2192
|
+
function DialogBody({ className, ...props }) {
|
|
2193
|
+
return /* @__PURE__ */ jsx13(
|
|
2194
|
+
"div",
|
|
2195
|
+
{
|
|
2196
|
+
className: cn("flex flex-col gap-4", className),
|
|
2197
|
+
...props
|
|
2198
|
+
}
|
|
2199
|
+
);
|
|
2176
2200
|
}
|
|
2177
2201
|
function DialogFooter({ className, ...props }) {
|
|
2178
2202
|
return /* @__PURE__ */ jsx13(
|
|
2179
2203
|
"div",
|
|
2180
2204
|
{
|
|
2181
|
-
className: cn(
|
|
2182
|
-
"flex flex-col-reverse gap-4 px-6 pb-6 pt-4 sm:flex-row sm:justify-end",
|
|
2183
|
-
className
|
|
2184
|
-
),
|
|
2205
|
+
className: cn("flex items-center justify-end gap-2", className),
|
|
2185
2206
|
...props
|
|
2186
2207
|
}
|
|
2187
2208
|
);
|
|
2188
2209
|
}
|
|
2189
2210
|
var DialogCancel = React13.forwardRef(
|
|
2190
|
-
({ type = "button", variant = "
|
|
2211
|
+
({ type = "button", variant = "ghost", ...props }, ref) => /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(Button, { ref, type, variant, ...props }) })
|
|
2191
2212
|
);
|
|
2192
2213
|
DialogCancel.displayName = "DialogCancel";
|
|
2193
2214
|
var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
|
|
@@ -2199,7 +2220,7 @@ var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) =>
|
|
|
2199
2220
|
children: renderTextContent(children, {
|
|
2200
2221
|
as: "span",
|
|
2201
2222
|
className: "block text-card-foreground",
|
|
2202
|
-
size: "
|
|
2223
|
+
size: "h3"
|
|
2203
2224
|
})
|
|
2204
2225
|
}
|
|
2205
2226
|
));
|
|
@@ -2222,7 +2243,7 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
|
2222
2243
|
// src/components/empty.tsx
|
|
2223
2244
|
import * as React14 from "react";
|
|
2224
2245
|
import { cva as cva5 } from "class-variance-authority";
|
|
2225
|
-
import { Fragment as
|
|
2246
|
+
import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2226
2247
|
var emptyMediaVariantOptions = ["default", "icon"];
|
|
2227
2248
|
var emptyMediaVariants = cva5(
|
|
2228
2249
|
"inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
|
|
@@ -2305,7 +2326,7 @@ var Empty = React14.forwardRef(function Empty2({ children, className, content, d
|
|
|
2305
2326
|
className
|
|
2306
2327
|
),
|
|
2307
2328
|
...props,
|
|
2308
|
-
children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(
|
|
2329
|
+
children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
2309
2330
|
/* @__PURE__ */ jsxs7(EmptyHeader, { children: [
|
|
2310
2331
|
media ?? /* @__PURE__ */ jsx14(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx14(Icon, { name: "folders", size: 28 }) }),
|
|
2311
2332
|
/* @__PURE__ */ jsx14(EmptyTitle, { children: title ?? "Nada por aqui" }),
|
|
@@ -2712,7 +2733,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2712
2733
|
{
|
|
2713
2734
|
"aria-disabled": disabled || void 0,
|
|
2714
2735
|
className: cn(
|
|
2715
|
-
"flex w-full flex-col items-center justify-center gap-2 overflow-clip rounded-[20px] border-2 border-dashed border-[color:var(--sofya-border-soft)] bg-
|
|
2736
|
+
"flex w-full flex-col items-center justify-center gap-2 overflow-clip rounded-[20px] border-2 border-dashed border-[color:var(--sofya-border-soft)] bg-transparent px-2 pt-2 pb-4 text-center transition-[border-color,background-color,box-shadow,color] duration-sofya ease-sofya",
|
|
2716
2737
|
!disabled && "cursor-pointer hover:border-[color:var(--sofya-border-hover)] hover:bg-[color:var(--sofya-surface-hover)] focus-visible:border-transparent focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)]",
|
|
2717
2738
|
isDragActive && "border-[color:var(--sofya-border-hover)] bg-[color:var(--sofya-surface-selected)] shadow-[var(--sofya-shadow-dropzone-focus)]",
|
|
2718
2739
|
disabled && "cursor-not-allowed opacity-60",
|
|
@@ -2739,7 +2760,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2739
2760
|
resolvedDescription ? /* @__PURE__ */ jsx16("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
|
|
2740
2761
|
as: "span",
|
|
2741
2762
|
className: "block text-[color:var(--sofya-text-subtle)]",
|
|
2742
|
-
size: "tiny"
|
|
2763
|
+
size: "extra-tiny"
|
|
2743
2764
|
}) }) : null
|
|
2744
2765
|
]
|
|
2745
2766
|
}
|
|
@@ -2755,7 +2776,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
|
|
|
2755
2776
|
animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
|
|
2756
2777
|
exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
|
|
2757
2778
|
transition: uploadListItemTransition,
|
|
2758
|
-
children: /* @__PURE__ */ jsxs9(Card, { variant: "
|
|
2779
|
+
children: /* @__PURE__ */ jsxs9(Card, { variant: "card", className: "flex items-center gap-4 p-4", children: [
|
|
2759
2780
|
/* @__PURE__ */ jsx16("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ jsx16(
|
|
2760
2781
|
UploadFileTypeGlyph,
|
|
2761
2782
|
{
|
|
@@ -2906,7 +2927,7 @@ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
|
|
|
2906
2927
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
2907
2928
|
|
|
2908
2929
|
// src/components/input.tsx
|
|
2909
|
-
import { Fragment as
|
|
2930
|
+
import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2910
2931
|
var inputVariantOptions = [
|
|
2911
2932
|
"default",
|
|
2912
2933
|
"search",
|
|
@@ -3005,7 +3026,7 @@ var Input = React17.forwardRef((props, ref) => {
|
|
|
3005
3026
|
resolvedId
|
|
3006
3027
|
}
|
|
3007
3028
|
);
|
|
3008
|
-
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs11(
|
|
3029
|
+
const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
3009
3030
|
renderTextContent(label2, {
|
|
3010
3031
|
as: "span",
|
|
3011
3032
|
className: "text-[color:var(--sofya-text-default)]",
|
|
@@ -5051,6 +5072,7 @@ export {
|
|
|
5051
5072
|
CardTitle,
|
|
5052
5073
|
Checkbox,
|
|
5053
5074
|
Dialog,
|
|
5075
|
+
DialogBody,
|
|
5054
5076
|
DialogCancel,
|
|
5055
5077
|
DialogClose,
|
|
5056
5078
|
DialogContent,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sofya-ds/react",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"description": "Sofya React design system with official brand tokens, provider and UI components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"motion": "^12.38.0",
|
|
60
60
|
"sonner": "^2.0.7",
|
|
61
61
|
"tailwind-merge": "^3.5.0",
|
|
62
|
-
"@sofya-ds/tokens": "1.3.
|
|
62
|
+
"@sofya-ds/tokens": "1.3.5"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@testing-library/jest-dom": "^6.9.1",
|