@sofya-ds/react 1.3.2 → 1.3.6

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
@@ -391,7 +391,7 @@ Icon.displayName = "Icon";
391
391
  // src/components/text.tsx
392
392
  import * as React3 from "react";
393
393
  import { jsx as jsx3 } from "react/jsx-runtime";
394
- var textSizeOptions = ["h1", "h2", "h3", "h4", "h5", "body", "tiny"];
394
+ var textSizeOptions = ["h1", "h2", "h3", "h4", "h5", "body", "tiny", "extra-tiny"];
395
395
  var textVariantOptions = ["default", "gradient", "shiny", "split"];
396
396
  var textSplitTypeOptions = ["chars", "words", "words, chars"];
397
397
  var defaultElements = {
@@ -401,7 +401,8 @@ var defaultElements = {
401
401
  h4: "h4",
402
402
  h5: "h5",
403
403
  body: "p",
404
- tiny: "span"
404
+ tiny: "span",
405
+ "extra-tiny": "span"
405
406
  };
406
407
  var textSizeStyles = Object.fromEntries(
407
408
  textSizeOptions.map((size) => [
@@ -1354,7 +1355,7 @@ var buttonVariants = cva4(
1354
1355
  language: "border-0 bg-muted bg-cover bg-center bg-no-repeat text-primary-foreground shadow-none hover:brightness-[1.03]",
1355
1356
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/85",
1356
1357
  outline: "border border-primary/15 bg-background text-foreground hover:border-primary/30 hover:bg-background active:bg-background",
1357
- ghost: "bg-background text-foreground hover:bg-muted",
1358
+ ghost: "bg-transparent text-foreground hover:bg-muted",
1358
1359
  destructive: "bg-destructive text-destructive-foreground hover:brightness-[1.04]"
1359
1360
  },
1360
1361
  size: {
@@ -1480,7 +1481,7 @@ var Button = React8.forwardRef(
1480
1481
  hasChildren ? renderTextContent(children, {
1481
1482
  as: "span",
1482
1483
  className: "inline-flex items-center text-current",
1483
- size: "body",
1484
+ size: "tiny",
1484
1485
  style: {
1485
1486
  fontWeight: "inherit",
1486
1487
  letterSpacing: "inherit"
@@ -1560,21 +1561,12 @@ var surfaceStyles = {
1560
1561
  "--sofya-surface-shadow-base": "var(--sofya-surface-card-shadow)",
1561
1562
  boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
1562
1563
  },
1563
- panel: {
1564
- backgroundColor: "hsl(var(--sofya-surface-panel-background))",
1565
- borderColor: "hsl(var(--sofya-surface-panel-border-color))",
1566
- borderWidth: "var(--sofya-surface-panel-border-width)",
1567
- borderStyle: "solid",
1568
- borderRadius: "var(--sofya-surface-panel-radius)",
1569
- "--sofya-surface-shadow-base": "var(--sofya-surface-panel-shadow)",
1570
- boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
1571
- },
1572
1564
  focus: {
1573
1565
  backgroundColor: "hsl(var(--sofya-surface-focus-background))",
1574
1566
  borderColor: "hsl(var(--sofya-surface-focus-border-color))",
1575
1567
  borderWidth: "var(--sofya-surface-focus-border-width)",
1576
1568
  borderStyle: "solid",
1577
- borderRadius: "var(--sofya-surface-focus-radius)",
1569
+ borderRadius: "var(--sofya-surface-card-radius)",
1578
1570
  "--sofya-surface-shadow-base": "var(--sofya-surface-focus-shadow)",
1579
1571
  boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
1580
1572
  }
@@ -1598,9 +1590,9 @@ var Surface = SurfaceBase;
1598
1590
 
1599
1591
  // src/components/card.tsx
1600
1592
  import { jsx as jsx10 } from "react/jsx-runtime";
1601
- var cardVariants = ["card", "panel", "focus"];
1593
+ var cardVariants = ["card", "focus"];
1602
1594
  function Card({ className, variant = "card", ...props }) {
1603
- const hasHoverShadow = variant === "card" || variant === "panel";
1595
+ const hasHoverShadow = variant === "card";
1604
1596
  return /* @__PURE__ */ jsx10(
1605
1597
  Surface,
1606
1598
  {
@@ -1796,14 +1788,13 @@ function useControllableState({
1796
1788
  }
1797
1789
 
1798
1790
  // src/components/dropdown.tsx
1799
- 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";
1800
1792
  var dropdownVariantOptions = [
1801
1793
  "card",
1802
- "panel",
1803
1794
  "language",
1804
1795
  "selected"
1805
1796
  ];
1806
- var dropdownAppearanceOptions = ["panel", "card"];
1797
+ var dropdownAppearanceOptions = ["card"];
1807
1798
  var dropdownTriggerSizeOptions = ["default", "sm", "lg"];
1808
1799
  var dropdownLanguageItems = [
1809
1800
  { value: "en-US", label: "English", languageLocale: "en-US" },
@@ -1812,7 +1803,6 @@ var dropdownLanguageItems = [
1812
1803
  ];
1813
1804
  var dropdownTriggerToneClasses = {
1814
1805
  card: "text-primary",
1815
- panel: "text-foreground",
1816
1806
  language: "",
1817
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)]"
1818
1808
  };
@@ -1828,16 +1818,12 @@ var dropdownTriggerSizeClasses = {
1828
1818
  lg: "h-12 px-6 py-2"
1829
1819
  },
1830
1820
  language: {
1831
- default: "h-[38px] w-[38px] p-0",
1832
- sm: "h-8 w-8 p-0",
1833
- 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"
1834
1824
  }
1835
1825
  };
1836
1826
  var dropdownAppearanceClasses = {
1837
- panel: {
1838
- content: "rounded-[10px]",
1839
- trigger: "rounded-[10px]"
1840
- },
1841
1827
  card: {
1842
1828
  content: "rounded-[20px]",
1843
1829
  trigger: "rounded-[20px]"
@@ -1845,13 +1831,11 @@ var dropdownAppearanceClasses = {
1845
1831
  };
1846
1832
  var dropdownContentBaseClasses = {
1847
1833
  card: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1848
- panel: "border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1849
1834
  language: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1850
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)]"
1851
1836
  };
1852
1837
  var dropdownItemClasses = {
1853
1838
  card: "text-foreground",
1854
- panel: "text-foreground",
1855
1839
  language: "text-foreground",
1856
1840
  selected: "text-foreground"
1857
1841
  };
@@ -1868,13 +1852,9 @@ function resolveItemLanguageLocale(item) {
1868
1852
  return isButtonLanguageLocale(item.value) ? item.value : void 0;
1869
1853
  }
1870
1854
  function resolveDropdownAppearance({
1871
- appearance,
1872
- variant
1855
+ appearance
1873
1856
  }) {
1874
- if (appearance) {
1875
- return appearance;
1876
- }
1877
- return variant === "card" ? "card" : "panel";
1857
+ return appearance ?? "card";
1878
1858
  }
1879
1859
  function resolveDropdownTriggerSizeFamily(variant) {
1880
1860
  if (variant === "language") {
@@ -1909,8 +1889,8 @@ function LanguageFlagIcon({ locale }) {
1909
1889
  {
1910
1890
  alt: "",
1911
1891
  "aria-hidden": "true",
1912
- src: dropdownLanguageFlagSrc[locale],
1913
- 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"
1914
1894
  }
1915
1895
  );
1916
1896
  }
@@ -2023,12 +2003,53 @@ function Dropdown({
2023
2003
  {
2024
2004
  value: radioValue,
2025
2005
  onValueChange: setSelectedValue,
2026
- className: "grid gap-2",
2006
+ className: "grid gap-1",
2027
2007
  children: resolvedItems.map((item) => {
2028
2008
  const isSelected = item.value === selectedValue;
2029
2009
  const itemLanguageLocale = resolveItemLanguageLocale(item);
2030
2010
  const indicator = item.indicator ?? /* @__PURE__ */ jsx12(DefaultDropdownItemIndicator, {});
2031
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-1.5 py-1 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.5", 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
+ }
2032
2053
  return /* @__PURE__ */ jsx12(
2033
2054
  DropdownMenuPrimitive.RadioItem,
2034
2055
  {
@@ -2036,11 +2057,11 @@ function Dropdown({
2036
2057
  disabled: item.disabled,
2037
2058
  className: cn(
2038
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",
2039
- 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)]",
2040
2061
  dropdownItemClasses[variant],
2041
2062
  itemClassName
2042
2063
  ),
2043
- children: usesDefaultListStyle ? /* @__PURE__ */ jsxs5(
2064
+ children: /* @__PURE__ */ jsxs5(
2044
2065
  "span",
2045
2066
  {
2046
2067
  "data-dropdown-item-body": true,
@@ -2053,7 +2074,7 @@ function Dropdown({
2053
2074
  /* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
2054
2075
  as: "span",
2055
2076
  className: "block truncate text-inherit",
2056
- size: "body"
2077
+ size: "tiny"
2057
2078
  }) }),
2058
2079
  isSelected ? /* @__PURE__ */ jsx12(
2059
2080
  "span",
@@ -2065,28 +2086,7 @@ function Dropdown({
2065
2086
  ) : null
2066
2087
  ]
2067
2088
  }
2068
- ) : /* @__PURE__ */ jsxs5(Fragment2, { children: [
2069
- /* @__PURE__ */ jsxs5("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
2070
- itemIcon ? /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
2071
- /* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
2072
- as: "span",
2073
- className: "block truncate text-inherit",
2074
- size: "body"
2075
- }) })
2076
- ] }),
2077
- /* @__PURE__ */ jsx12(
2078
- "span",
2079
- {
2080
- "aria-hidden": "true",
2081
- className: cn(
2082
- "flex h-4 w-4 shrink-0 items-center justify-center transition-opacity duration-sofya ease-sofya",
2083
- variant === "language" && "text-primary",
2084
- isSelected ? "opacity-100" : "opacity-0"
2085
- ),
2086
- children: indicator
2087
- }
2088
- )
2089
- ] })
2089
+ )
2090
2090
  },
2091
2091
  item.value
2092
2092
  );
@@ -2108,6 +2108,9 @@ var Dialog = DialogPrimitive.Root;
2108
2108
  var DialogTrigger = DialogPrimitive.Trigger;
2109
2109
  var DialogPortal = DialogPrimitive.Portal;
2110
2110
  var DialogClose = DialogPrimitive.Close;
2111
+ var DialogInternalContext = React13.createContext({
2112
+ showCloseButton: true
2113
+ });
2111
2114
  var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
2112
2115
  DialogPrimitive.Overlay,
2113
2116
  {
@@ -2125,15 +2128,15 @@ var DialogContent = React13.forwardRef(
2125
2128
  className,
2126
2129
  children,
2127
2130
  cardClassName,
2128
- cardVariant = "panel",
2129
2131
  overlayClassName,
2130
2132
  showCloseButton = true,
2133
+ variant = "card",
2131
2134
  ...props
2132
2135
  }, ref) => {
2133
2136
  const dialogCardStyle = {
2134
2137
  "--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
2135
2138
  };
2136
- return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
2139
+ return /* @__PURE__ */ jsx13(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ jsxs6(DialogPortal, { children: [
2137
2140
  /* @__PURE__ */ jsx13(DialogOverlay, { className: overlayClassName }),
2138
2141
  /* @__PURE__ */ jsx13("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx13(
2139
2142
  DialogPrimitive.Content,
@@ -2144,54 +2147,68 @@ var DialogContent = React13.forwardRef(
2144
2147
  className
2145
2148
  ),
2146
2149
  ...props,
2147
- children: /* @__PURE__ */ jsxs6(
2150
+ children: /* @__PURE__ */ jsx13(
2148
2151
  Card,
2149
2152
  {
2150
- variant: cardVariant,
2153
+ variant,
2151
2154
  className: cn(
2152
- "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",
2153
2156
  cardClassName
2154
2157
  ),
2155
2158
  style: dialogCardStyle,
2156
- children: [
2157
- children,
2158
- showCloseButton ? /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(
2159
- Button,
2160
- {
2161
- type: "button",
2162
- variant: "ghost",
2163
- size: "icon",
2164
- "aria-label": "Close",
2165
- leftIcon: /* @__PURE__ */ jsx13(Icon, { name: "x", size: 18 }),
2166
- className: "absolute right-4 top-4 z-10 text-muted-foreground hover:text-foreground"
2167
- }
2168
- ) }) : null
2169
- ]
2159
+ children
2170
2160
  }
2171
2161
  )
2172
2162
  }
2173
2163
  ) })
2174
- ] });
2164
+ ] }) });
2175
2165
  }
2176
2166
  );
2177
2167
  DialogContent.displayName = DialogPrimitive.Content.displayName;
2178
- function DialogHeader({ className, ...props }) {
2179
- 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
+ );
2180
2200
  }
2181
2201
  function DialogFooter({ className, ...props }) {
2182
2202
  return /* @__PURE__ */ jsx13(
2183
2203
  "div",
2184
2204
  {
2185
- className: cn(
2186
- "flex flex-col-reverse gap-4 px-6 pb-6 pt-4 sm:flex-row sm:justify-end",
2187
- className
2188
- ),
2205
+ className: cn("flex items-center justify-end gap-2", className),
2189
2206
  ...props
2190
2207
  }
2191
2208
  );
2192
2209
  }
2193
2210
  var DialogCancel = React13.forwardRef(
2194
- ({ 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 }) })
2195
2212
  );
2196
2213
  DialogCancel.displayName = "DialogCancel";
2197
2214
  var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
@@ -2203,7 +2220,7 @@ var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) =>
2203
2220
  children: renderTextContent(children, {
2204
2221
  as: "span",
2205
2222
  className: "block text-card-foreground",
2206
- size: "h4"
2223
+ size: "h3"
2207
2224
  })
2208
2225
  }
2209
2226
  ));
@@ -2226,7 +2243,7 @@ DialogDescription.displayName = DialogPrimitive.Description.displayName;
2226
2243
  // src/components/empty.tsx
2227
2244
  import * as React14 from "react";
2228
2245
  import { cva as cva5 } from "class-variance-authority";
2229
- 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";
2230
2247
  var emptyMediaVariantOptions = ["default", "icon"];
2231
2248
  var emptyMediaVariants = cva5(
2232
2249
  "inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
@@ -2309,7 +2326,7 @@ var Empty = React14.forwardRef(function Empty2({ children, className, content, d
2309
2326
  className
2310
2327
  ),
2311
2328
  ...props,
2312
- children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(Fragment3, { children: [
2329
+ children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(Fragment2, { children: [
2313
2330
  /* @__PURE__ */ jsxs7(EmptyHeader, { children: [
2314
2331
  media ?? /* @__PURE__ */ jsx14(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx14(Icon, { name: "folders", size: 28 }) }),
2315
2332
  /* @__PURE__ */ jsx14(EmptyTitle, { children: title ?? "Nada por aqui" }),
@@ -2716,7 +2733,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
2716
2733
  {
2717
2734
  "aria-disabled": disabled || void 0,
2718
2735
  className: cn(
2719
- "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",
2720
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)]",
2721
2738
  isDragActive && "border-[color:var(--sofya-border-hover)] bg-[color:var(--sofya-surface-selected)] shadow-[var(--sofya-shadow-dropzone-focus)]",
2722
2739
  disabled && "cursor-not-allowed opacity-60",
@@ -2743,7 +2760,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
2743
2760
  resolvedDescription ? /* @__PURE__ */ jsx16("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
2744
2761
  as: "span",
2745
2762
  className: "block text-[color:var(--sofya-text-subtle)]",
2746
- size: "tiny"
2763
+ size: "extra-tiny"
2747
2764
  }) }) : null
2748
2765
  ]
2749
2766
  }
@@ -2759,7 +2776,7 @@ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
2759
2776
  animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
2760
2777
  exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
2761
2778
  transition: uploadListItemTransition,
2762
- 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: [
2763
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(
2764
2781
  UploadFileTypeGlyph,
2765
2782
  {
@@ -2910,7 +2927,7 @@ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
2910
2927
  InputOTPSeparator.displayName = "InputOTPSeparator";
2911
2928
 
2912
2929
  // src/components/input.tsx
2913
- 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";
2914
2931
  var inputVariantOptions = [
2915
2932
  "default",
2916
2933
  "search",
@@ -3009,7 +3026,7 @@ var Input = React17.forwardRef((props, ref) => {
3009
3026
  resolvedId
3010
3027
  }
3011
3028
  );
3012
- const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs11(Fragment4, { children: [
3029
+ const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs11(Fragment3, { children: [
3013
3030
  renderTextContent(label2, {
3014
3031
  as: "span",
3015
3032
  className: "text-[color:var(--sofya-text-default)]",
@@ -5055,6 +5072,7 @@ export {
5055
5072
  CardTitle,
5056
5073
  Checkbox,
5057
5074
  Dialog,
5075
+ DialogBody,
5058
5076
  DialogCancel,
5059
5077
  DialogClose,
5060
5078
  DialogContent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sofya-ds/react",
3
- "version": "1.3.2",
3
+ "version": "1.3.6",
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.2"
62
+ "@sofya-ds/tokens": "1.3.6"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",