@sofya-ds/react 1.2.0 → 1.3.0

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
@@ -1799,22 +1799,51 @@ var dropdownVariantOptions = [
1799
1799
  "language",
1800
1800
  "selected"
1801
1801
  ];
1802
+ var dropdownAppearanceOptions = ["panel", "card"];
1803
+ var dropdownTriggerSizeOptions = ["default", "sm", "lg"];
1802
1804
  var dropdownLanguageItems = [
1803
1805
  { value: "en-US", label: "English", languageLocale: "en-US" },
1804
1806
  { value: "pt-BR", label: "Portuguese", languageLocale: "pt-BR" },
1805
1807
  { value: "es-ES", label: "Spanish", languageLocale: "es-ES" }
1806
1808
  ];
1807
- var dropdownTriggerClasses = {
1808
- card: "h-12 rounded-[20px] px-6 py-2 text-primary",
1809
- panel: "h-12 rounded-[10px] px-6 py-2 text-foreground",
1809
+ var dropdownTriggerToneClasses = {
1810
+ card: "text-primary",
1811
+ panel: "text-foreground",
1810
1812
  language: "",
1811
- selected: "h-10 w-full rounded-[10px] border-[color:var(--sofya-border-strong)] 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)]"
1813
+ 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
+ };
1815
+ var dropdownTriggerSizeClasses = {
1816
+ regular: {
1817
+ default: "h-12 px-6 py-2",
1818
+ sm: "h-10 px-4 py-2",
1819
+ lg: "h-14 px-8 py-4"
1820
+ },
1821
+ selected: {
1822
+ default: "h-10 px-4 py-2",
1823
+ sm: "h-9 px-2 py-2",
1824
+ lg: "h-12 px-6 py-2"
1825
+ },
1826
+ 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"
1830
+ }
1831
+ };
1832
+ var dropdownAppearanceClasses = {
1833
+ panel: {
1834
+ content: "rounded-[10px]",
1835
+ trigger: "rounded-[10px]"
1836
+ },
1837
+ card: {
1838
+ content: "rounded-[20px]",
1839
+ trigger: "rounded-[20px]"
1840
+ }
1812
1841
  };
1813
- var dropdownContentClasses = {
1814
- card: "rounded-[20px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1815
- panel: "rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1816
- language: "w-[224px] min-w-[224px] rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1817
- selected: "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)] rounded-[10px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]"
1842
+ var dropdownContentBaseClasses = {
1843
+ 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
+ language: "w-[224px] min-w-[224px] border-[color:var(--sofya-border-strong)] text-foreground shadow-[var(--sofya-shadow-soft)]",
1846
+ 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)]"
1818
1847
  };
1819
1848
  var dropdownItemClasses = {
1820
1849
  card: "text-foreground",
@@ -1834,6 +1863,24 @@ function resolveItemLanguageLocale(item) {
1834
1863
  }
1835
1864
  return isButtonLanguageLocale(item.value) ? item.value : void 0;
1836
1865
  }
1866
+ function resolveDropdownAppearance({
1867
+ appearance,
1868
+ variant
1869
+ }) {
1870
+ if (appearance) {
1871
+ return appearance;
1872
+ }
1873
+ return variant === "card" ? "card" : "panel";
1874
+ }
1875
+ function resolveDropdownTriggerSizeFamily(variant) {
1876
+ if (variant === "language") {
1877
+ return "language";
1878
+ }
1879
+ if (variant === "selected") {
1880
+ return "selected";
1881
+ }
1882
+ return "regular";
1883
+ }
1837
1884
  function DefaultDropdownTriggerIcon({ variant }) {
1838
1885
  if (variant === "selected") {
1839
1886
  return /* @__PURE__ */ jsx12(
@@ -1865,6 +1912,7 @@ function LanguageFlagIcon({ locale }) {
1865
1912
  }
1866
1913
  function Dropdown({
1867
1914
  align = "start",
1915
+ appearance,
1868
1916
  contentClassName,
1869
1917
  defaultOpen,
1870
1918
  defaultValue,
@@ -1879,11 +1927,14 @@ function Dropdown({
1879
1927
  sideOffset = 8,
1880
1928
  triggerClassName,
1881
1929
  triggerIcon,
1930
+ triggerSize = "default",
1882
1931
  value,
1883
1932
  variant = "card"
1884
1933
  }) {
1885
1934
  const isLanguageVariant = variant === "language";
1886
1935
  const isSelectedVariant = variant === "selected";
1936
+ const resolvedAppearance = resolveDropdownAppearance({ appearance, variant });
1937
+ const triggerSizeFamily = resolveDropdownTriggerSizeFamily(variant);
1887
1938
  const usesDefaultListStyle = !isLanguageVariant;
1888
1939
  const resolvedItems = React12.useMemo(
1889
1940
  () => isLanguageVariant ? items && items.length > 0 ? items : dropdownLanguageItems : items ?? [],
@@ -1933,9 +1984,13 @@ function Dropdown({
1933
1984
  type: "button",
1934
1985
  variant: isLanguageVariant ? "language" : "dropdown",
1935
1986
  languageLocale: selectedLanguageLocale,
1987
+ "data-appearance": resolvedAppearance,
1988
+ "data-trigger-size": triggerSize,
1936
1989
  className: cn(
1937
1990
  "min-w-0",
1938
- isLanguageVariant ? "h-[38px] w-[38px] rounded-[10px] p-0" : dropdownTriggerClasses[variant],
1991
+ dropdownTriggerToneClasses[variant],
1992
+ dropdownTriggerSizeClasses[triggerSizeFamily][triggerSize],
1993
+ dropdownAppearanceClasses[resolvedAppearance].trigger,
1939
1994
  selectedTriggerToneClassName,
1940
1995
  triggerClassName
1941
1996
  ),
@@ -1952,9 +2007,11 @@ function Dropdown({
1952
2007
  {
1953
2008
  align,
1954
2009
  sideOffset,
2010
+ "data-appearance": resolvedAppearance,
1955
2011
  className: cn(
1956
2012
  "sofya-dropdown-content z-50 w-auto min-w-[var(--radix-dropdown-menu-trigger-width)] border bg-card p-2 outline-none",
1957
- dropdownContentClasses[variant],
2013
+ dropdownContentBaseClasses[variant],
2014
+ dropdownAppearanceClasses[resolvedAppearance].content,
1958
2015
  contentClassName
1959
2016
  ),
1960
2017
  children: /* @__PURE__ */ jsx12(
@@ -5020,7 +5077,9 @@ export {
5020
5077
  cardVariants,
5021
5078
  createWhitelabelTheme2 as createWhitelabelTheme,
5022
5079
  defaultTheme2 as defaultTheme,
5080
+ dropdownAppearanceOptions,
5023
5081
  dropdownLanguageItems,
5082
+ dropdownTriggerSizeOptions,
5024
5083
  dropdownVariantOptions,
5025
5084
  emptyMediaVariantOptions,
5026
5085
  gradientToCss,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sofya-ds/react",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
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.2.0"
62
+ "@sofya-ds/tokens": "1.3.0"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",