@sesionario/blocks 1.14.0 → 1.15.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.cjs CHANGED
@@ -957,6 +957,38 @@ function DropdownMenuItem({
957
957
  }
958
958
  );
959
959
  }
960
+ function DropdownMenuRadioGroup({
961
+ ...props
962
+ }) {
963
+ return /* @__PURE__ */ jsxRuntime.jsx(
964
+ DropdownMenuPrimitive__namespace.RadioGroup,
965
+ {
966
+ "data-slot": "dropdown-menu-radio-group",
967
+ ...props
968
+ }
969
+ );
970
+ }
971
+ function DropdownMenuRadioItem({
972
+ className,
973
+ children,
974
+ ...props
975
+ }) {
976
+ return /* @__PURE__ */ jsxRuntime.jsxs(
977
+ DropdownMenuPrimitive__namespace.RadioItem,
978
+ {
979
+ "data-slot": "dropdown-menu-radio-item",
980
+ className: cn(
981
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
982
+ className
983
+ ),
984
+ ...props,
985
+ children: [
986
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleIcon, { className: "size-2 fill-current" }) }) }),
987
+ children
988
+ ]
989
+ }
990
+ );
991
+ }
960
992
  function DropdownMenuLabel({
961
993
  className,
962
994
  inset,
@@ -1004,6 +1036,50 @@ function DropdownMenuShortcut({
1004
1036
  }
1005
1037
  );
1006
1038
  }
1039
+ function DropdownMenuSub({
1040
+ ...props
1041
+ }) {
1042
+ return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Sub, { "data-slot": "dropdown-menu-sub", ...props });
1043
+ }
1044
+ function DropdownMenuSubTrigger({
1045
+ className,
1046
+ inset,
1047
+ children,
1048
+ ...props
1049
+ }) {
1050
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1051
+ DropdownMenuPrimitive__namespace.SubTrigger,
1052
+ {
1053
+ "data-slot": "dropdown-menu-sub-trigger",
1054
+ "data-inset": inset,
1055
+ className: cn(
1056
+ "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1057
+ className
1058
+ ),
1059
+ ...props,
1060
+ children: [
1061
+ children,
1062
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRightIcon, { className: "ml-auto size-4" })
1063
+ ]
1064
+ }
1065
+ );
1066
+ }
1067
+ function DropdownMenuSubContent({
1068
+ className,
1069
+ ...props
1070
+ }) {
1071
+ return /* @__PURE__ */ jsxRuntime.jsx(
1072
+ DropdownMenuPrimitive__namespace.SubContent,
1073
+ {
1074
+ "data-slot": "dropdown-menu-sub-content",
1075
+ className: cn(
1076
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
1077
+ className
1078
+ ),
1079
+ ...props
1080
+ }
1081
+ );
1082
+ }
1007
1083
  var defaultLabels = {
1008
1084
  theme: "Theme",
1009
1085
  system: "System",
@@ -1496,7 +1572,7 @@ function LanguageSwitcher({
1496
1572
  const sizes = sizeClasses2[size];
1497
1573
  const shapeClass = shapeClasses2[shape];
1498
1574
  const reduceMotion = framerMotion.useReducedMotion();
1499
- const defaultLabels5 = {
1575
+ const defaultLabels6 = {
1500
1576
  language: labels.language ?? "Language"
1501
1577
  };
1502
1578
  if (variant === "mini") {
@@ -1506,7 +1582,7 @@ function LanguageSwitcher({
1506
1582
  {
1507
1583
  variant: "ghost",
1508
1584
  size: "icon",
1509
- "aria-label": defaultLabels5.language,
1585
+ "aria-label": defaultLabels6.language,
1510
1586
  className: cn(sizes.buttonMini, shapeClass, className),
1511
1587
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Languages, { className: sizes.iconMini })
1512
1588
  }
@@ -1597,6 +1673,378 @@ function LanguageSwitcher({
1597
1673
  }
1598
1674
  );
1599
1675
  }
1676
+ function PlatformNavbar({
1677
+ logo,
1678
+ leading,
1679
+ center,
1680
+ right,
1681
+ className,
1682
+ innerClassName
1683
+ }) {
1684
+ return /* @__PURE__ */ jsxRuntime.jsx(
1685
+ "header",
1686
+ {
1687
+ className: cn(
1688
+ "sticky top-0 z-30 shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",
1689
+ className
1690
+ ),
1691
+ "data-testid": "platform-navbar",
1692
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1693
+ "div",
1694
+ {
1695
+ className: cn(
1696
+ "flex h-14 min-h-14 items-center gap-2 px-4 md:px-6",
1697
+ innerClassName
1698
+ ),
1699
+ children: [
1700
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: logo }),
1701
+ leading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: leading }) : null,
1702
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 items-center overflow-x-auto", children: center }),
1703
+ right ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: right }) : null
1704
+ ]
1705
+ }
1706
+ )
1707
+ }
1708
+ );
1709
+ }
1710
+ var LABELS = {
1711
+ verified: "M\xE9dico verificado",
1712
+ pending_review: "Verificaci\xF3n en revisi\xF3n"
1713
+ };
1714
+ var sizeClasses3 = {
1715
+ sm: {
1716
+ icon: "size-3.5",
1717
+ text: "text-xs",
1718
+ gap: "gap-1",
1719
+ padding: "px-1.5 py-0.5"
1720
+ },
1721
+ md: {
1722
+ icon: "size-4",
1723
+ text: "text-sm",
1724
+ gap: "gap-1.5",
1725
+ padding: "px-2 py-0.5"
1726
+ }
1727
+ };
1728
+ function VerifiedProfessionalBadge({
1729
+ status,
1730
+ size = "md",
1731
+ showLabel = false,
1732
+ className
1733
+ }) {
1734
+ if (status === "unverified" || status === "pending_review" && !showLabel) {
1735
+ return null;
1736
+ }
1737
+ const label = LABELS[status];
1738
+ const sizes = sizeClasses3[size];
1739
+ const Icon = status === "verified" ? lucideReact.BadgeCheck : lucideReact.Clock;
1740
+ const colorClass = status === "verified" ? "text-primary" : "text-muted-foreground";
1741
+ if (!showLabel) {
1742
+ return /* @__PURE__ */ jsxRuntime.jsx(
1743
+ Icon,
1744
+ {
1745
+ className: cn(sizes.icon, colorClass, className),
1746
+ "aria-label": label,
1747
+ children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: label })
1748
+ }
1749
+ );
1750
+ }
1751
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1752
+ "span",
1753
+ {
1754
+ title: label,
1755
+ "aria-label": label,
1756
+ className: cn(
1757
+ "inline-flex w-fit items-center rounded-full font-medium",
1758
+ sizes.gap,
1759
+ sizes.text,
1760
+ sizes.padding,
1761
+ status === "verified" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground",
1762
+ className
1763
+ ),
1764
+ children: [
1765
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: sizes.icon, "aria-hidden": "true" }),
1766
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
1767
+ ]
1768
+ }
1769
+ );
1770
+ }
1771
+ var defaultLabels3 = {
1772
+ accountMenu: "Account menu",
1773
+ settingsMenu: "Settings",
1774
+ personalProfile: "Personal profile",
1775
+ activity: "Activity",
1776
+ professionalProfile: "Professional profile",
1777
+ mainApp: "Main app",
1778
+ orgManagement: "Organization management",
1779
+ backoffice: "Backoffice",
1780
+ memberOrgs: "My organizations",
1781
+ managementOrgs: "Management team",
1782
+ language: "Language",
1783
+ theme: "Theme",
1784
+ themeLight: "Light",
1785
+ themeDark: "Dark",
1786
+ themeSystem: "System",
1787
+ signIn: "Sign in",
1788
+ signOut: "Sign out",
1789
+ signingOut: "Signing out\u2026",
1790
+ accountSettings: "Account settings"
1791
+ };
1792
+ function MenuAvatar({
1793
+ name,
1794
+ image,
1795
+ sizeClass
1796
+ }) {
1797
+ const initials = getInitials(name);
1798
+ return /* @__PURE__ */ jsxRuntime.jsx(
1799
+ "span",
1800
+ {
1801
+ className: cn(
1802
+ "relative flex shrink-0 overflow-hidden rounded-full",
1803
+ sizeClass
1804
+ ),
1805
+ children: image ? /* @__PURE__ */ jsxRuntime.jsx(
1806
+ "img",
1807
+ {
1808
+ src: image,
1809
+ alt: "",
1810
+ className: "aspect-square size-full object-cover"
1811
+ }
1812
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1813
+ "span",
1814
+ {
1815
+ className: "flex size-full items-center justify-center text-xs font-semibold",
1816
+ style: avatarFallbackStyle(name),
1817
+ children: initials
1818
+ }
1819
+ )
1820
+ }
1821
+ );
1822
+ }
1823
+ function LanguageThemeSubs({
1824
+ languages,
1825
+ currentLanguage,
1826
+ onLanguageChange,
1827
+ labels
1828
+ }) {
1829
+ const { theme, setTheme } = nextThemes.useTheme();
1830
+ const themeValue = theme ?? "system";
1831
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1832
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
1833
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
1834
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Languages, { className: "size-4" }),
1835
+ labels.language
1836
+ ] }),
1837
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-40", children: /* @__PURE__ */ jsxRuntime.jsx(
1838
+ DropdownMenuRadioGroup,
1839
+ {
1840
+ value: currentLanguage,
1841
+ onValueChange: onLanguageChange,
1842
+ children: languages.map((lang) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioItem, { value: lang.key, children: lang.nativeName }, lang.key))
1843
+ }
1844
+ ) })
1845
+ ] }),
1846
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
1847
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
1848
+ themeValue === "light" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { className: "size-4" }) : themeValue === "dark" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Monitor, { className: "size-4" }),
1849
+ labels.theme
1850
+ ] }),
1851
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-40", children: /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioGroup, { value: themeValue, onValueChange: setTheme, children: [
1852
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioItem, { value: "system", children: labels.themeSystem }),
1853
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioItem, { value: "light", children: labels.themeLight }),
1854
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioItem, { value: "dark", children: labels.themeDark })
1855
+ ] }) })
1856
+ ] })
1857
+ ] });
1858
+ }
1859
+ function PlatformAccountMenu({
1860
+ variant = "platform",
1861
+ isPending = false,
1862
+ user = null,
1863
+ isAdmin = false,
1864
+ verificationStatus = "unverified",
1865
+ urls,
1866
+ memberOrgs = [],
1867
+ manageableOrgs = [],
1868
+ languages = defaultLanguages,
1869
+ currentLanguage,
1870
+ onLanguageChange,
1871
+ labels: labelsProp,
1872
+ onSignOut,
1873
+ extraItems,
1874
+ className
1875
+ }) {
1876
+ const labels = { ...defaultLabels3, ...labelsProp };
1877
+ const [signingOut, setSigningOut] = React7.useState(false);
1878
+ const loginHref = `${urls.authAppUrl}${urls.loginPath ?? "/login"}`;
1879
+ const accountHref = `${urls.authAppUrl}${urls.accountPath ?? "/account"}`;
1880
+ const activityHref = `${urls.authAppUrl}${urls.activityPath ?? "/account/activity"}`;
1881
+ const profileHref = `${urls.appUrl}${urls.professionalProfilePath ?? "/profile"}`;
1882
+ async function handleSignOut() {
1883
+ if (!onSignOut) return;
1884
+ setSigningOut(true);
1885
+ try {
1886
+ await onSignOut();
1887
+ } finally {
1888
+ setSigningOut(false);
1889
+ }
1890
+ }
1891
+ if (isPending) {
1892
+ return /* @__PURE__ */ jsxRuntime.jsx(
1893
+ "div",
1894
+ {
1895
+ className: cn(
1896
+ "size-9 shrink-0 animate-pulse rounded-full bg-muted",
1897
+ className
1898
+ ),
1899
+ "aria-hidden": true
1900
+ }
1901
+ );
1902
+ }
1903
+ const trigger = user ? /* @__PURE__ */ jsxRuntime.jsx(
1904
+ Button,
1905
+ {
1906
+ variant: "ghost",
1907
+ size: "icon",
1908
+ className: cn("size-9 rounded-full", className),
1909
+ "aria-label": labels.accountMenu,
1910
+ children: /* @__PURE__ */ jsxRuntime.jsx(MenuAvatar, { name: user.name, image: user.image, sizeClass: "size-8" })
1911
+ }
1912
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1913
+ Button,
1914
+ {
1915
+ variant: "ghost",
1916
+ size: "icon",
1917
+ className: cn("size-9", className),
1918
+ "aria-label": labels.settingsMenu,
1919
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" })
1920
+ }
1921
+ );
1922
+ return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { children: [
1923
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: trigger }),
1924
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuContent, { align: "end", className: "min-w-60 rounded-lg", children: user ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1925
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuLabel, { className: "flex items-center gap-3 p-2 font-normal", children: [
1926
+ /* @__PURE__ */ jsxRuntime.jsx(
1927
+ MenuAvatar,
1928
+ {
1929
+ name: user.name,
1930
+ image: user.image,
1931
+ sizeClass: "size-9"
1932
+ }
1933
+ ),
1934
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col", children: [
1935
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-1.5 truncate text-sm font-medium leading-tight", children: [
1936
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: user.name }),
1937
+ variant === "platform" ? /* @__PURE__ */ jsxRuntime.jsx(
1938
+ VerifiedProfessionalBadge,
1939
+ {
1940
+ status: verificationStatus,
1941
+ className: "shrink-0"
1942
+ }
1943
+ ) : null
1944
+ ] }),
1945
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-muted-foreground leading-tight", children: user.email })
1946
+ ] })
1947
+ ] }),
1948
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
1949
+ variant === "platform" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1950
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: accountHref, children: [
1951
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-4" }),
1952
+ labels.personalProfile
1953
+ ] }) }),
1954
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: activityHref, children: [
1955
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Activity, { className: "size-4" }),
1956
+ labels.activity
1957
+ ] }) }),
1958
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: profileHref, children: [
1959
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-4" }),
1960
+ labels.professionalProfile
1961
+ ] }) }),
1962
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: urls.appUrl, children: [
1963
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutDashboard, { className: "size-4" }),
1964
+ labels.mainApp
1965
+ ] }) }),
1966
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: urls.adminUrl, children: [
1967
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Building2, { className: "size-4" }),
1968
+ labels.orgManagement
1969
+ ] }) }),
1970
+ isAdmin && urls.backofficeUrl ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: urls.backofficeUrl, children: [
1971
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutDashboard, { className: "size-4" }),
1972
+ labels.backoffice
1973
+ ] }) }) : null,
1974
+ memberOrgs.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
1975
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
1976
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "size-4" }),
1977
+ labels.memberOrgs
1978
+ ] }),
1979
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-48 max-h-64 overflow-y-auto", children: memberOrgs.map((org) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: `${urls.appUrl}/o/${org.slug}`, children: org.name }) }, org.id)) })
1980
+ ] }) : null,
1981
+ manageableOrgs.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
1982
+ /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
1983
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Building2, { className: "size-4" }),
1984
+ labels.managementOrgs
1985
+ ] }),
1986
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-48 max-h-64 overflow-y-auto", children: manageableOrgs.map((org) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1987
+ "a",
1988
+ {
1989
+ href: `${urls.adminUrl}/api/auth/org/select?id=${encodeURIComponent(org.id)}`,
1990
+ children: org.name
1991
+ }
1992
+ ) }, org.id)) })
1993
+ ] }) : null,
1994
+ extraItems,
1995
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {})
1996
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1997
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: accountHref, children: [
1998
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" }),
1999
+ labels.accountSettings
2000
+ ] }) }),
2001
+ extraItems,
2002
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {})
2003
+ ] }),
2004
+ /* @__PURE__ */ jsxRuntime.jsx(
2005
+ LanguageThemeSubs,
2006
+ {
2007
+ languages,
2008
+ currentLanguage,
2009
+ onLanguageChange,
2010
+ labels
2011
+ }
2012
+ ),
2013
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
2014
+ /* @__PURE__ */ jsxRuntime.jsxs(
2015
+ DropdownMenuItem,
2016
+ {
2017
+ variant: "destructive",
2018
+ className: "gap-2",
2019
+ disabled: signingOut || !onSignOut,
2020
+ onSelect: (event) => {
2021
+ event.preventDefault();
2022
+ void handleSignOut();
2023
+ },
2024
+ children: [
2025
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, { className: "size-4" }),
2026
+ signingOut ? labels.signingOut : labels.signOut
2027
+ ]
2028
+ }
2029
+ )
2030
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2031
+ /* @__PURE__ */ jsxRuntime.jsx(
2032
+ LanguageThemeSubs,
2033
+ {
2034
+ languages,
2035
+ currentLanguage,
2036
+ onLanguageChange,
2037
+ labels
2038
+ }
2039
+ ),
2040
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
2041
+ /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: loginHref, children: [
2042
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogIn, { className: "size-4" }),
2043
+ labels.signIn
2044
+ ] }) })
2045
+ ] }) })
2046
+ ] });
2047
+ }
1600
2048
  function Slider({
1601
2049
  className,
1602
2050
  defaultValue,
@@ -4915,7 +5363,7 @@ function SearchablePickerList({
4915
5363
  ] })
4916
5364
  ] });
4917
5365
  }
4918
- var defaultLabels3 = {
5366
+ var defaultLabels4 = {
4919
5367
  placeholder: "Seleccionar\u2026",
4920
5368
  searchPlaceholder: "Buscar\u2026",
4921
5369
  empty: "No se encontraron resultados",
@@ -4988,7 +5436,7 @@ function SearchablePicker(props) {
4988
5436
  "aria-label": ariaLabel
4989
5437
  } = props;
4990
5438
  const mode = props.mode ?? "single";
4991
- const labels = { ...defaultLabels3, ...userLabels };
5439
+ const labels = { ...defaultLabels4, ...userLabels };
4992
5440
  const resolvedEmptyLabel = emptyLabel ?? labels.emptyOption;
4993
5441
  const isMobile = useMediaQuery2("(max-width: 767px)");
4994
5442
  const generatedId = React7.useId();
@@ -5328,7 +5776,7 @@ function SearchablePicker(props) {
5328
5776
  clearButton
5329
5777
  ] });
5330
5778
  }
5331
- var defaultLabels4 = {
5779
+ var defaultLabels5 = {
5332
5780
  placeholder: "Buscar en toda la plataforma\u2026",
5333
5781
  dialogTitle: "Buscar",
5334
5782
  dialogDescription: "Busca funcionalidades, eventos, documentos y m\xE1s",
@@ -5362,7 +5810,7 @@ function SearchCommand({
5362
5810
  debounceMs = 200,
5363
5811
  className
5364
5812
  }) {
5365
- const labels = { ...defaultLabels4, ...userLabels };
5813
+ const labels = { ...defaultLabels5, ...userLabels };
5366
5814
  const [query, setQuery] = React7.useState("");
5367
5815
  const [hits, setHits] = React7.useState([]);
5368
5816
  const [isLoading, setIsLoading] = React7.useState(false);
@@ -5804,67 +6252,6 @@ function MexicoMap({ selected, onToggle, className }) {
5804
6252
  }
5805
6253
  );
5806
6254
  }
5807
- var LABELS = {
5808
- verified: "M\xE9dico verificado",
5809
- pending_review: "Verificaci\xF3n en revisi\xF3n"
5810
- };
5811
- var sizeClasses3 = {
5812
- sm: {
5813
- icon: "size-3.5",
5814
- text: "text-xs",
5815
- gap: "gap-1",
5816
- padding: "px-1.5 py-0.5"
5817
- },
5818
- md: {
5819
- icon: "size-4",
5820
- text: "text-sm",
5821
- gap: "gap-1.5",
5822
- padding: "px-2 py-0.5"
5823
- }
5824
- };
5825
- function VerifiedProfessionalBadge({
5826
- status,
5827
- size = "md",
5828
- showLabel = false,
5829
- className
5830
- }) {
5831
- if (status === "unverified" || status === "pending_review" && !showLabel) {
5832
- return null;
5833
- }
5834
- const label = LABELS[status];
5835
- const sizes = sizeClasses3[size];
5836
- const Icon = status === "verified" ? lucideReact.BadgeCheck : lucideReact.Clock;
5837
- const colorClass = status === "verified" ? "text-primary" : "text-muted-foreground";
5838
- if (!showLabel) {
5839
- return /* @__PURE__ */ jsxRuntime.jsx(
5840
- Icon,
5841
- {
5842
- className: cn(sizes.icon, colorClass, className),
5843
- "aria-label": label,
5844
- children: /* @__PURE__ */ jsxRuntime.jsx("title", { children: label })
5845
- }
5846
- );
5847
- }
5848
- return /* @__PURE__ */ jsxRuntime.jsxs(
5849
- "span",
5850
- {
5851
- title: label,
5852
- "aria-label": label,
5853
- className: cn(
5854
- "inline-flex w-fit items-center rounded-full font-medium",
5855
- sizes.gap,
5856
- sizes.text,
5857
- sizes.padding,
5858
- status === "verified" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground",
5859
- className
5860
- ),
5861
- children: [
5862
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: sizes.icon, "aria-hidden": "true" }),
5863
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
5864
- ]
5865
- }
5866
- );
5867
- }
5868
6255
  function MessageGroup({ className, ...props }) {
5869
6256
  return /* @__PURE__ */ jsxRuntime.jsx(
5870
6257
  "div",
@@ -7236,6 +7623,8 @@ exports.MessageScrollerViewport = MessageScrollerViewport;
7236
7623
  exports.MexicoMap = MexicoMap;
7237
7624
  exports.OrgSwitcher = OrgSwitcher;
7238
7625
  exports.PhoneInput = PhoneInput;
7626
+ exports.PlatformAccountMenu = PlatformAccountMenu;
7627
+ exports.PlatformNavbar = PlatformNavbar;
7239
7628
  exports.SearchCommand = SearchCommand;
7240
7629
  exports.SearchablePicker = SearchablePicker;
7241
7630
  exports.SupportMessengerProvider = SupportMessengerProvider;