@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.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-background text-foreground hover:bg-muted",
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: "body",
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-focus-radius)",
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", "panel", "focus"];
1593
+ var cardVariants = ["card", "focus"];
1598
1594
  function Card({ className, variant = "card", ...props }) {
1599
- const hasHoverShadow = variant === "card" || variant === "panel";
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 { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
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 = ["panel", "card"];
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-[38px] w-[38px] p-0",
1828
- sm: "h-8 w-8 p-0",
1829
- lg: "h-11 w-11 p-0"
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
- if (appearance) {
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: dropdownLanguageFlagSrc[locale],
1909
- className: "h-[12px] w-[16px] shrink-0 object-cover"
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
- usesDefaultListStyle ? "px-0 py-0 data-[highlighted]:bg-transparent [&[data-highlighted]_span[data-dropdown-item-body]]:bg-[color:var(--sofya-surface-selected)]" : "px-2 py-2 data-[highlighted]:bg-[color:var(--sofya-surface-hover)]",
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: usesDefaultListStyle ? /* @__PURE__ */ jsxs5(
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: "body"
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
- ) : /* @__PURE__ */ jsxs5(Fragment2, { children: [
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__ */ jsxs6(
2150
+ children: /* @__PURE__ */ jsx13(
2144
2151
  Card,
2145
2152
  {
2146
- variant: cardVariant,
2153
+ variant,
2147
2154
  className: cn(
2148
- "relative flex max-h-[inherit] min-h-0 w-full flex-col overflow-y-auto overflow-x-hidden border-border bg-card",
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
- return /* @__PURE__ */ jsx13("div", { className: cn("grid gap-2 px-6 pt-6 pr-16 text-left", className), ...props });
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 = "outline", ...props }, ref) => /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(Button, { ref, type, variant, ...props }) })
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: "h4"
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 Fragment3, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
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(Fragment3, { children: [
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-[color:var(--sofya-tone-default-background)] px-4 py-4 text-center transition-[border-color,background-color,box-shadow,color] duration-sofya ease-sofya",
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: "panel", className: "flex items-center gap-4 p-4", children: [
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 Fragment4, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
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(Fragment4, { children: [
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.1",
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.1"
62
+ "@sofya-ds/tokens": "1.3.5"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",