@asgardeo/react 0.15.2 → 0.15.4

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/cjs/index.js CHANGED
@@ -66,6 +66,7 @@ __export(index_exports, {
66
66
  CreateOrganization: () => CreateOrganization,
67
67
  DatePicker: () => DatePicker_default,
68
68
  Divider: () => Divider_default,
69
+ EMOJI_URI_SCHEME: () => import_browser92.EMOJI_URI_SCHEME,
69
70
  EmailOtp: () => EmailOtp_default,
70
71
  EmbeddedFlowActionVariant: () => import_browser92.EmbeddedFlowActionVariantV2,
71
72
  EmbeddedFlowComponentType: () => import_browser92.EmbeddedFlowComponentTypeV2,
@@ -131,11 +132,13 @@ __export(index_exports, {
131
132
  UserProfile: () => UserProfile_default,
132
133
  UserProvider: () => UserProvider_default,
133
134
  UsernamePassword: () => UsernamePassword_default,
135
+ countryCodeToFlagEmoji: () => import_browser92.countryCodeToFlagEmoji,
134
136
  createField: () => createField,
135
137
  createOrganization: () => createOrganization_default,
136
138
  createPatchOperations: () => import_browser89.createPatchOperations,
137
139
  createSignInOption: () => createSignInOption,
138
140
  createSignInOptionFromAuthenticator: () => createSignInOptionFromAuthenticator,
141
+ extractEmojiFromUri: () => import_browser92.extractEmojiFromUri,
139
142
  getActiveTheme: () => import_browser92.getActiveTheme,
140
143
  getAllOrganizations: () => getAllOrganizations_default,
141
144
  getConsentOptionalKey: () => getConsentOptionalKey,
@@ -144,7 +147,13 @@ __export(index_exports, {
144
147
  getOrganization: () => getOrganization_default,
145
148
  getSchemas: () => getSchemas_default,
146
149
  http: () => import_browser92.http,
150
+ isEmojiUri: () => import_browser92.isEmojiUri,
147
151
  navigate: () => import_browser92.navigate,
152
+ resolveEmojiUrisInHtml: () => import_browser92.resolveEmojiUrisInHtml,
153
+ resolveFlowTemplateLiterals: () => import_browser92.resolveFlowTemplateLiterals,
154
+ resolveLocaleDisplayName: () => import_browser92.resolveLocaleDisplayName,
155
+ resolveLocaleEmoji: () => import_browser92.resolveLocaleEmoji,
156
+ resolveMeta: () => import_browser92.resolveMeta,
148
157
  updateMeProfile: () => updateMeProfile_default,
149
158
  updateOrganization: () => updateOrganization_default,
150
159
  useAsgardeo: () => useAsgardeo_default,
@@ -164,7 +173,7 @@ module.exports = __toCommonJS(index_exports);
164
173
 
165
174
  // src/contexts/Asgardeo/AsgardeoProvider.tsx
166
175
  var import_browser16 = require("@asgardeo/browser");
167
- var import_react19 = require("react");
176
+ var import_react20 = require("react");
168
177
 
169
178
  // src/contexts/Asgardeo/AsgardeoContext.ts
170
179
  var import_react = require("react");
@@ -917,8 +926,7 @@ var AsgardeoReactClient = class extends import_browser6.AsgardeoBrowserClient {
917
926
  const arg1 = args[0];
918
927
  const arg2 = args[1];
919
928
  const config = await this.asgardeo.getConfigData();
920
- const platformFromStorage = sessionStorage.getItem("asgardeo_platform");
921
- const isV2Platform = config && config.platform === import_browser6.Platform.AsgardeoV2 || platformFromStorage === "AsgardeoV2";
929
+ const isV2Platform = config && config.platform === import_browser6.Platform.AsgardeoV2;
922
930
  if (isV2Platform && typeof arg1 === "object" && arg1 !== null && arg1.callOnlyOnRedirect === true) {
923
931
  return void 0;
924
932
  }
@@ -926,8 +934,7 @@ var AsgardeoReactClient = class extends import_browser6.AsgardeoBrowserClient {
926
934
  const authIdFromUrl = new URL(window.location.href).searchParams.get("authId");
927
935
  const authIdFromStorage = sessionStorage.getItem("asgardeo_auth_id");
928
936
  const authId = authIdFromUrl || authIdFromStorage;
929
- const baseUrlFromStorage = sessionStorage.getItem("asgardeo_base_url");
930
- const baseUrl = config?.baseUrl || baseUrlFromStorage;
937
+ const baseUrl = config?.baseUrl;
931
938
  const response = await (0, import_browser6.executeEmbeddedSignInFlowV2)({
932
939
  authId,
933
940
  baseUrl,
@@ -1227,7 +1234,7 @@ var FlowProvider_default = FlowProvider;
1227
1234
  // src/contexts/FlowMeta/FlowMetaProvider.tsx
1228
1235
  var import_browser10 = require("@asgardeo/browser");
1229
1236
  var import_i18n = require("@asgardeo/i18n");
1230
- var import_react9 = require("react");
1237
+ var import_react10 = require("react");
1231
1238
 
1232
1239
  // src/contexts/FlowMeta/FlowMetaContext.ts
1233
1240
  var import_react6 = require("react");
@@ -1265,6 +1272,19 @@ var useAsgardeo = () => {
1265
1272
  };
1266
1273
  var useAsgardeo_default = useAsgardeo;
1267
1274
 
1275
+ // src/contexts/I18n/useI18n.ts
1276
+ var import_react9 = require("react");
1277
+ var useI18n = () => {
1278
+ const context = (0, import_react9.useContext)(I18nContext_default);
1279
+ if (!context) {
1280
+ throw new Error(
1281
+ "useI18n must be used within an I18nProvider. Make sure your component is wrapped with AsgardeoProvider which includes I18nProvider."
1282
+ );
1283
+ }
1284
+ return context;
1285
+ };
1286
+ var useI18n_default = useI18n;
1287
+
1268
1288
  // src/contexts/FlowMeta/FlowMetaProvider.tsx
1269
1289
  var import_jsx_runtime3 = require("react/jsx-runtime");
1270
1290
  var FlowMetaProvider = ({
@@ -1272,13 +1292,13 @@ var FlowMetaProvider = ({
1272
1292
  enabled = true
1273
1293
  }) => {
1274
1294
  const { baseUrl, applicationId } = useAsgardeo_default();
1275
- const i18nContext = (0, import_react9.useContext)(I18nContext_default);
1276
- const [meta, setMeta] = (0, import_react9.useState)(null);
1277
- const [isLoading, setIsLoading] = (0, import_react9.useState)(false);
1278
- const [error, setError] = (0, import_react9.useState)(null);
1279
- const [pendingLanguage, setPendingLanguage] = (0, import_react9.useState)(null);
1280
- const hasFetchedRef = (0, import_react9.useRef)(false);
1281
- const fetchFlowMeta = (0, import_react9.useCallback)(async () => {
1295
+ const i18nContext = useI18n_default();
1296
+ const [meta, setMeta] = (0, import_react10.useState)(null);
1297
+ const [isLoading, setIsLoading] = (0, import_react10.useState)(false);
1298
+ const [error, setError] = (0, import_react10.useState)(null);
1299
+ const [pendingLanguage, setPendingLanguage] = (0, import_react10.useState)(null);
1300
+ const hasFetchedRef = (0, import_react10.useRef)(false);
1301
+ const fetchFlowMeta = (0, import_react10.useCallback)(async () => {
1282
1302
  if (!enabled) {
1283
1303
  setMeta(null);
1284
1304
  return;
@@ -1286,15 +1306,20 @@ var FlowMetaProvider = ({
1286
1306
  setIsLoading(true);
1287
1307
  setError(null);
1288
1308
  try {
1289
- const result = await (0, import_browser10.getFlowMetaV2)({ baseUrl, id: applicationId, type: import_browser10.FlowMetaType.App });
1309
+ const result = await (0, import_browser10.getFlowMetaV2)({
1310
+ baseUrl,
1311
+ id: applicationId,
1312
+ language: i18nContext?.currentLanguage,
1313
+ type: import_browser10.FlowMetaType.App
1314
+ });
1290
1315
  setMeta(result);
1291
1316
  } catch (err) {
1292
1317
  setError(err instanceof Error ? err : new Error(String(err)));
1293
1318
  } finally {
1294
1319
  setIsLoading(false);
1295
1320
  }
1296
- }, [enabled, baseUrl, applicationId]);
1297
- const switchLanguage = (0, import_react9.useCallback)(
1321
+ }, [enabled, baseUrl, applicationId, i18nContext?.currentLanguage]);
1322
+ const switchLanguage = (0, import_react10.useCallback)(
1298
1323
  async (language) => {
1299
1324
  if (!enabled) return;
1300
1325
  setIsLoading(true);
@@ -1326,13 +1351,13 @@ var FlowMetaProvider = ({
1326
1351
  },
1327
1352
  [enabled, baseUrl, applicationId, i18nContext]
1328
1353
  );
1329
- (0, import_react9.useEffect)(() => {
1354
+ (0, import_react10.useEffect)(() => {
1330
1355
  if (pendingLanguage && i18nContext?.setLanguage) {
1331
1356
  i18nContext.setLanguage(pendingLanguage);
1332
1357
  setPendingLanguage(null);
1333
1358
  }
1334
1359
  }, [pendingLanguage, i18nContext?.setLanguage]);
1335
- (0, import_react9.useEffect)(() => {
1360
+ (0, import_react10.useEffect)(() => {
1336
1361
  if (!hasFetchedRef.current) {
1337
1362
  hasFetchedRef.current = true;
1338
1363
  fetchFlowMeta();
@@ -1340,7 +1365,7 @@ var FlowMetaProvider = ({
1340
1365
  }
1341
1366
  fetchFlowMeta();
1342
1367
  }, [fetchFlowMeta]);
1343
- (0, import_react9.useEffect)(() => {
1368
+ (0, import_react10.useEffect)(() => {
1344
1369
  if (!meta?.i18n?.translations || !i18nContext?.injectBundles) {
1345
1370
  return;
1346
1371
  }
@@ -1375,7 +1400,7 @@ var FlowMetaProvider_default = FlowMetaProvider;
1375
1400
  // src/contexts/I18n/I18nProvider.tsx
1376
1401
  var import_browser11 = require("@asgardeo/browser");
1377
1402
  var import_i18n2 = require("@asgardeo/i18n");
1378
- var import_react10 = require("react");
1403
+ var import_react11 = require("react");
1379
1404
  var import_jsx_runtime4 = require("react/jsx-runtime");
1380
1405
  var logger = (0, import_browser11.createPackageComponentLogger)(
1381
1406
  "@asgardeo/react",
@@ -1457,12 +1482,12 @@ var I18nProvider = ({
1457
1482
  const storageStrategy = preferences?.storageStrategy ?? "cookie";
1458
1483
  const storageKey = preferences?.storageKey ?? DEFAULT_STORAGE_KEY;
1459
1484
  const urlParamConfig = preferences?.urlParam === void 0 ? DEFAULT_URL_PARAM : preferences.urlParam;
1460
- const resolvedCookieDomain = (0, import_react10.useMemo)(() => {
1485
+ const resolvedCookieDomain = (0, import_react11.useMemo)(() => {
1461
1486
  if (storageStrategy !== "cookie") return void 0;
1462
1487
  if (preferences?.cookieDomain) return preferences.cookieDomain;
1463
1488
  return typeof window !== "undefined" ? deriveRootDomain(window.location.hostname) : void 0;
1464
1489
  }, [storageStrategy, preferences?.cookieDomain]);
1465
- const storage = (0, import_react10.useMemo)(
1490
+ const storage = (0, import_react11.useMemo)(
1466
1491
  () => createStorageAdapter(storageStrategy, storageKey, resolvedCookieDomain),
1467
1492
  [storageStrategy, storageKey, resolvedCookieDomain]
1468
1493
  );
@@ -1481,9 +1506,9 @@ var I18nProvider = ({
1481
1506
  if (browserLanguage) return browserLanguage;
1482
1507
  return preferences?.fallbackLanguage || import_i18n2.TranslationBundleConstants.FALLBACK_LOCALE;
1483
1508
  };
1484
- const [currentLanguage, setCurrentLanguage] = (0, import_react10.useState)(determineInitialLanguage);
1485
- const [injectedBundles, setInjectedBundles] = (0, import_react10.useState)({});
1486
- const injectBundles = (0, import_react10.useCallback)(
1509
+ const [currentLanguage, setCurrentLanguage] = (0, import_react11.useState)(determineInitialLanguage);
1510
+ const [injectedBundles, setInjectedBundles] = (0, import_react11.useState)({});
1511
+ const injectBundles = (0, import_react11.useCallback)(
1487
1512
  (newBundles) => {
1488
1513
  setInjectedBundles((prev) => {
1489
1514
  const merged = { ...prev };
@@ -1505,7 +1530,7 @@ var I18nProvider = ({
1505
1530
  },
1506
1531
  []
1507
1532
  );
1508
- const mergedBundles = (0, import_react10.useMemo)(() => {
1533
+ const mergedBundles = (0, import_react11.useMemo)(() => {
1509
1534
  const merged = {};
1510
1535
  Object.entries(defaultBundles).forEach(([key, bundle]) => {
1511
1536
  const languageKey = key.replace("_", "-");
@@ -1543,10 +1568,10 @@ var I18nProvider = ({
1543
1568
  return merged;
1544
1569
  }, [defaultBundles, injectedBundles, preferences?.bundles]);
1545
1570
  const fallbackLanguage = preferences?.fallbackLanguage || import_i18n2.TranslationBundleConstants.FALLBACK_LOCALE;
1546
- (0, import_react10.useEffect)(() => {
1571
+ (0, import_react11.useEffect)(() => {
1547
1572
  storage.write(currentLanguage);
1548
1573
  }, [currentLanguage, storage]);
1549
- const t = (0, import_react10.useCallback)(
1574
+ const t = (0, import_react11.useCallback)(
1550
1575
  (key, params) => {
1551
1576
  let translation;
1552
1577
  const currentBundle = mergedBundles[currentLanguage];
@@ -1572,7 +1597,7 @@ var I18nProvider = ({
1572
1597
  },
1573
1598
  [mergedBundles, currentLanguage, fallbackLanguage]
1574
1599
  );
1575
- const setLanguage = (0, import_react10.useCallback)(
1600
+ const setLanguage = (0, import_react11.useCallback)(
1576
1601
  (language) => {
1577
1602
  if (mergedBundles[language]) {
1578
1603
  setCurrentLanguage(language);
@@ -1584,7 +1609,7 @@ var I18nProvider = ({
1584
1609
  },
1585
1610
  [mergedBundles]
1586
1611
  );
1587
- const contextValue = (0, import_react10.useMemo)(
1612
+ const contextValue = (0, import_react11.useMemo)(
1588
1613
  () => ({
1589
1614
  bundles: mergedBundles,
1590
1615
  currentLanguage,
@@ -1601,11 +1626,11 @@ var I18nProvider_default = I18nProvider;
1601
1626
 
1602
1627
  // src/contexts/Organization/OrganizationProvider.tsx
1603
1628
  var import_browser12 = require("@asgardeo/browser");
1604
- var import_react12 = require("react");
1629
+ var import_react13 = require("react");
1605
1630
 
1606
1631
  // src/contexts/Organization/OrganizationContext.ts
1607
- var import_react11 = require("react");
1608
- var OrganizationContext = (0, import_react11.createContext)({
1632
+ var import_react12 = require("react");
1633
+ var OrganizationContext = (0, import_react12.createContext)({
1609
1634
  createOrganization: () => null,
1610
1635
  currentOrganization: null,
1611
1636
  error: null,
@@ -1633,9 +1658,9 @@ var OrganizationProvider = ({
1633
1658
  getAllOrganizations: getAllOrganizations2,
1634
1659
  createOrganization: createOrganization2
1635
1660
  }) => {
1636
- const [isLoading, setIsLoading] = (0, import_react12.useState)(false);
1637
- const [error, setError] = (0, import_react12.useState)(null);
1638
- const switchOrganization = (0, import_react12.useCallback)(
1661
+ const [isLoading, setIsLoading] = (0, import_react13.useState)(false);
1662
+ const [error, setError] = (0, import_react13.useState)(null);
1663
+ const switchOrganization = (0, import_react13.useCallback)(
1639
1664
  async (organization) => {
1640
1665
  if (!onOrganizationSwitch) {
1641
1666
  throw new import_browser12.AsgardeoRuntimeError(
@@ -1662,7 +1687,7 @@ var OrganizationProvider = ({
1662
1687
  },
1663
1688
  [onOrganizationSwitch, onError]
1664
1689
  );
1665
- const contextValue = (0, import_react12.useMemo)(
1690
+ const contextValue = (0, import_react13.useMemo)(
1666
1691
  () => ({
1667
1692
  createOrganization: createOrganization2,
1668
1693
  currentOrganization,
@@ -1693,7 +1718,7 @@ var import_browser15 = require("@asgardeo/browser");
1693
1718
 
1694
1719
  // src/contexts/Theme/v1/ThemeProvider.tsx
1695
1720
  var import_browser13 = require("@asgardeo/browser");
1696
- var import_react15 = require("react");
1721
+ var import_react16 = require("react");
1697
1722
 
1698
1723
  // src/utils/applyThemeToDOM.ts
1699
1724
  var applyThemeToDOM = (theme) => {
@@ -1726,9 +1751,9 @@ var normalizeThemeConfig = (config) => {
1726
1751
  var normalizeThemeConfig_default = normalizeThemeConfig;
1727
1752
 
1728
1753
  // src/contexts/Branding/useBrandingContext.ts
1729
- var import_react13 = require("react");
1754
+ var import_react14 = require("react");
1730
1755
  var useBrandingContext = () => {
1731
- const context = (0, import_react13.useContext)(BrandingContext_default);
1756
+ const context = (0, import_react14.useContext)(BrandingContext_default);
1732
1757
  if (!context) {
1733
1758
  throw new Error("useBrandingContext must be used within a BrandingProvider");
1734
1759
  }
@@ -1737,8 +1762,8 @@ var useBrandingContext = () => {
1737
1762
  var useBrandingContext_default = useBrandingContext;
1738
1763
 
1739
1764
  // src/contexts/Theme/ThemeContext.ts
1740
- var import_react14 = require("react");
1741
- var ThemeContext = (0, import_react14.createContext)(null);
1765
+ var import_react15 = require("react");
1766
+ var ThemeContext = (0, import_react15.createContext)(null);
1742
1767
  ThemeContext.displayName = "ThemeContext";
1743
1768
  var ThemeContext_default = ThemeContext;
1744
1769
 
@@ -1756,7 +1781,7 @@ var ThemeProvider = ({
1756
1781
  inheritFromBranding = true
1757
1782
  }) => {
1758
1783
  const themeConfig = normalizeThemeConfig_default(themeConfigProp);
1759
- const [colorScheme, setColorScheme] = (0, import_react15.useState)(() => {
1784
+ const [colorScheme, setColorScheme] = (0, import_react16.useState)(() => {
1760
1785
  if (mode === "light" || mode === "dark") {
1761
1786
  return mode;
1762
1787
  }
@@ -1782,7 +1807,7 @@ var ThemeProvider = ({
1782
1807
  );
1783
1808
  }
1784
1809
  }
1785
- (0, import_react15.useEffect)(() => {
1810
+ (0, import_react16.useEffect)(() => {
1786
1811
  if (inheritFromBranding && brandingActiveTheme) {
1787
1812
  if (mode === "branding") {
1788
1813
  setColorScheme(brandingActiveTheme);
@@ -1791,7 +1816,7 @@ var ThemeProvider = ({
1791
1816
  }
1792
1817
  }
1793
1818
  }, [inheritFromBranding, brandingActiveTheme, mode, isBrandingLoading]);
1794
- const finalThemeConfig = (0, import_react15.useMemo)(() => {
1819
+ const finalThemeConfig = (0, import_react16.useMemo)(() => {
1795
1820
  if (!inheritFromBranding || !brandingTheme) {
1796
1821
  return themeConfig;
1797
1822
  }
@@ -1832,18 +1857,18 @@ var ThemeProvider = ({
1832
1857
  }
1833
1858
  };
1834
1859
  }, [inheritFromBranding, brandingTheme, themeConfig]);
1835
- const theme = (0, import_react15.useMemo)(
1860
+ const theme = (0, import_react16.useMemo)(
1836
1861
  () => (0, import_browser13.createTheme)(finalThemeConfig, colorScheme === "dark"),
1837
1862
  [finalThemeConfig, colorScheme]
1838
1863
  );
1839
1864
  const direction = finalThemeConfig?.direction || "ltr";
1840
- const handleThemeChange = (0, import_react15.useCallback)((isDark) => {
1865
+ const handleThemeChange = (0, import_react16.useCallback)((isDark) => {
1841
1866
  setColorScheme(isDark ? "dark" : "light");
1842
1867
  }, []);
1843
- const toggleTheme = (0, import_react15.useCallback)(() => {
1868
+ const toggleTheme = (0, import_react16.useCallback)(() => {
1844
1869
  setColorScheme((prev) => prev === "light" ? "dark" : "light");
1845
1870
  }, []);
1846
- (0, import_react15.useEffect)(() => {
1871
+ (0, import_react16.useEffect)(() => {
1847
1872
  let observer = null;
1848
1873
  let mediaQuery = null;
1849
1874
  if (mode === "branding") {
@@ -1872,10 +1897,10 @@ var ThemeProvider = ({
1872
1897
  }
1873
1898
  };
1874
1899
  }, [mode, detection, handleThemeChange, inheritFromBranding, brandingActiveTheme]);
1875
- (0, import_react15.useEffect)(() => {
1900
+ (0, import_react16.useEffect)(() => {
1876
1901
  applyThemeToDOM_default(theme);
1877
1902
  }, [theme]);
1878
- (0, import_react15.useEffect)(() => {
1903
+ (0, import_react16.useEffect)(() => {
1879
1904
  if (typeof document !== "undefined") {
1880
1905
  document.documentElement.dir = direction;
1881
1906
  }
@@ -1895,7 +1920,7 @@ var ThemeProvider_default = ThemeProvider;
1895
1920
 
1896
1921
  // src/contexts/Theme/v2/ThemeProvider.tsx
1897
1922
  var import_browser14 = require("@asgardeo/browser");
1898
- var import_react16 = require("react");
1923
+ var import_react17 = require("react");
1899
1924
 
1900
1925
  // src/utils/v2/buildThemeConfigFromFlowMeta.ts
1901
1926
  var buildThemeConfigFromFlowMeta = (flowMetaTheme, colorScheme) => {
@@ -1949,22 +1974,22 @@ var ThemeProvider2 = ({
1949
1974
  theme: themeOverrideProp
1950
1975
  }) => {
1951
1976
  const themeOverride = normalizeThemeConfig_default(themeOverrideProp);
1952
- const flowMetaContext = (0, import_react16.useContext)(FlowMetaContext_default);
1977
+ const flowMetaContext = (0, import_react17.useContext)(FlowMetaContext_default);
1953
1978
  const flowMetaTheme = flowMetaContext?.meta?.design?.theme ?? null;
1954
1979
  const isLoading = flowMetaContext?.isLoading ?? false;
1955
1980
  const error = flowMetaContext?.error ?? null;
1956
- const [colorScheme, setColorScheme] = (0, import_react16.useState)(
1981
+ const [colorScheme, setColorScheme] = (0, import_react17.useState)(
1957
1982
  () => flowMetaTheme?.defaultColorScheme ?? "light"
1958
1983
  );
1959
- (0, import_react16.useEffect)(() => {
1984
+ (0, import_react17.useEffect)(() => {
1960
1985
  if (flowMetaTheme?.defaultColorScheme) {
1961
1986
  setColorScheme(flowMetaTheme.defaultColorScheme);
1962
1987
  }
1963
1988
  }, [flowMetaTheme?.defaultColorScheme]);
1964
- const toggleTheme = (0, import_react16.useCallback)(() => {
1989
+ const toggleTheme = (0, import_react17.useCallback)(() => {
1965
1990
  setColorScheme((prev) => prev === "light" ? "dark" : "light");
1966
1991
  }, []);
1967
- const finalThemeConfig = (0, import_react16.useMemo)(() => {
1992
+ const finalThemeConfig = (0, import_react17.useMemo)(() => {
1968
1993
  if (!flowMetaTheme) {
1969
1994
  return themeOverride;
1970
1995
  }
@@ -1991,15 +2016,15 @@ var ThemeProvider2 = ({
1991
2016
  } : {}
1992
2017
  };
1993
2018
  }, [flowMetaTheme, colorScheme, themeOverride]);
1994
- const theme = (0, import_react16.useMemo)(
2019
+ const theme = (0, import_react17.useMemo)(
1995
2020
  () => (0, import_browser14.createTheme)(finalThemeConfig, colorScheme === "dark"),
1996
2021
  [finalThemeConfig, colorScheme]
1997
2022
  );
1998
2023
  const direction = flowMetaTheme?.direction ?? "ltr";
1999
- (0, import_react16.useEffect)(() => {
2024
+ (0, import_react17.useEffect)(() => {
2000
2025
  applyThemeToDOM_default(theme);
2001
2026
  }, [theme]);
2002
- (0, import_react16.useEffect)(() => {
2027
+ (0, import_react17.useEffect)(() => {
2003
2028
  if (typeof document !== "undefined") {
2004
2029
  document.documentElement.dir = direction;
2005
2030
  }
@@ -2036,11 +2061,11 @@ var ThemeProvider3 = ({
2036
2061
  var ThemeProvider_default3 = ThemeProvider3;
2037
2062
 
2038
2063
  // src/contexts/User/UserProvider.tsx
2039
- var import_react18 = require("react");
2064
+ var import_react19 = require("react");
2040
2065
 
2041
2066
  // src/contexts/User/UserContext.ts
2042
- var import_react17 = require("react");
2043
- var UserContext = (0, import_react17.createContext)({
2067
+ var import_react18 = require("react");
2068
+ var UserContext = (0, import_react18.createContext)({
2044
2069
  flattenedProfile: null,
2045
2070
  onUpdateProfile: () => null,
2046
2071
  profile: null,
@@ -2060,7 +2085,7 @@ var UserProvider = ({
2060
2085
  onUpdateProfile,
2061
2086
  updateProfile
2062
2087
  }) => {
2063
- const contextValue = (0, import_react18.useMemo)(
2088
+ const contextValue = (0, import_react19.useMemo)(
2064
2089
  () => ({
2065
2090
  flattenedProfile: profile?.flattenedProfile,
2066
2091
  onUpdateProfile,
@@ -2095,18 +2120,18 @@ var AsgardeoProvider = ({
2095
2120
  organizationChain,
2096
2121
  ...rest
2097
2122
  }) => {
2098
- const reRenderCheckRef = (0, import_react19.useRef)(false);
2099
- const asgardeo = (0, import_react19.useMemo)(() => new AsgardeoReactClient_default(instanceId), [instanceId]);
2123
+ const reRenderCheckRef = (0, import_react20.useRef)(false);
2124
+ const asgardeo = (0, import_react20.useMemo)(() => new AsgardeoReactClient_default(instanceId), [instanceId]);
2100
2125
  const { hasAuthParams, hasCalledForThisInstance } = useBrowserUrl_default();
2101
- const [user, setUser] = (0, import_react19.useState)(null);
2102
- const [currentOrganization, setCurrentOrganization] = (0, import_react19.useState)(null);
2103
- const [isSignedInSync, setIsSignedInSync] = (0, import_react19.useState)(false);
2104
- const [isInitializedSync, setIsInitializedSync] = (0, import_react19.useState)(false);
2105
- const [isLoadingSync, setIsLoadingSync] = (0, import_react19.useState)(true);
2106
- const [myOrganizations, setMyOrganizations] = (0, import_react19.useState)([]);
2107
- const [userProfile, setUserProfile] = (0, import_react19.useState)(null);
2108
- const [baseUrl, setBaseUrl] = (0, import_react19.useState)(initialBaseUrl);
2109
- const [config, setConfig] = (0, import_react19.useState)({
2126
+ const [user, setUser] = (0, import_react20.useState)(null);
2127
+ const [currentOrganization, setCurrentOrganization] = (0, import_react20.useState)(null);
2128
+ const [isSignedInSync, setIsSignedInSync] = (0, import_react20.useState)(false);
2129
+ const [isInitializedSync, setIsInitializedSync] = (0, import_react20.useState)(false);
2130
+ const [isLoadingSync, setIsLoadingSync] = (0, import_react20.useState)(true);
2131
+ const [myOrganizations, setMyOrganizations] = (0, import_react20.useState)([]);
2132
+ const [userProfile, setUserProfile] = (0, import_react20.useState)(null);
2133
+ const [baseUrl, setBaseUrl] = (0, import_react20.useState)(initialBaseUrl);
2134
+ const [config, setConfig] = (0, import_react20.useState)({
2110
2135
  afterSignInUrl,
2111
2136
  afterSignOutUrl,
2112
2137
  applicationId,
@@ -2121,12 +2146,12 @@ var AsgardeoProvider = ({
2121
2146
  syncSession,
2122
2147
  ...rest
2123
2148
  });
2124
- const [isUpdatingSession, setIsUpdatingSession] = (0, import_react19.useState)(false);
2125
- const [brandingPreference, setBrandingPreference] = (0, import_react19.useState)(null);
2126
- const [isBrandingLoading, setIsBrandingLoading] = (0, import_react19.useState)(false);
2127
- const [brandingError, setBrandingError] = (0, import_react19.useState)(null);
2128
- const [hasFetchedBranding, setHasFetchedBranding] = (0, import_react19.useState)(false);
2129
- (0, import_react19.useEffect)(() => {
2149
+ const [isUpdatingSession, setIsUpdatingSession] = (0, import_react20.useState)(false);
2150
+ const [brandingPreference, setBrandingPreference] = (0, import_react20.useState)(null);
2151
+ const [isBrandingLoading, setIsBrandingLoading] = (0, import_react20.useState)(false);
2152
+ const [brandingError, setBrandingError] = (0, import_react20.useState)(null);
2153
+ const [hasFetchedBranding, setHasFetchedBranding] = (0, import_react20.useState)(false);
2154
+ (0, import_react20.useEffect)(() => {
2130
2155
  setBaseUrl(initialBaseUrl);
2131
2156
  if (initialBaseUrl !== baseUrl) {
2132
2157
  setHasFetchedBranding(false);
@@ -2134,17 +2159,11 @@ var AsgardeoProvider = ({
2134
2159
  setBrandingError(null);
2135
2160
  }
2136
2161
  }, [initialBaseUrl, baseUrl]);
2137
- (0, import_react19.useEffect)(() => {
2162
+ (0, import_react20.useEffect)(() => {
2138
2163
  (async () => {
2139
2164
  await asgardeo.initialize(config);
2140
2165
  const initializedConfig = await asgardeo.getConfiguration();
2141
2166
  setConfig(initializedConfig);
2142
- if (initializedConfig?.platform) {
2143
- sessionStorage.setItem("asgardeo_platform", initializedConfig.platform);
2144
- }
2145
- if (initializedConfig?.baseUrl) {
2146
- sessionStorage.setItem("asgardeo_base_url", initializedConfig.baseUrl);
2147
- }
2148
2167
  })();
2149
2168
  }, []);
2150
2169
  async function updateSession() {
@@ -2225,7 +2244,7 @@ var AsgardeoProvider = ({
2225
2244
  }
2226
2245
  }
2227
2246
  }
2228
- (0, import_react19.useEffect)(() => {
2247
+ (0, import_react20.useEffect)(() => {
2229
2248
  if (reRenderCheckRef.current) {
2230
2249
  return;
2231
2250
  }
@@ -2269,7 +2288,7 @@ var AsgardeoProvider = ({
2269
2288
  }
2270
2289
  })();
2271
2290
  }, []);
2272
- (0, import_react19.useEffect)(() => {
2291
+ (0, import_react20.useEffect)(() => {
2273
2292
  let interval;
2274
2293
  (async () => {
2275
2294
  try {
@@ -2295,7 +2314,7 @@ var AsgardeoProvider = ({
2295
2314
  }
2296
2315
  };
2297
2316
  }, [asgardeo]);
2298
- (0, import_react19.useEffect)(() => {
2317
+ (0, import_react20.useEffect)(() => {
2299
2318
  (async () => {
2300
2319
  try {
2301
2320
  const status = await asgardeo.isInitialized();
@@ -2305,7 +2324,7 @@ var AsgardeoProvider = ({
2305
2324
  }
2306
2325
  })();
2307
2326
  }, [asgardeo]);
2308
- (0, import_react19.useEffect)(() => {
2327
+ (0, import_react20.useEffect)(() => {
2309
2328
  const checkLoadingState = () => {
2310
2329
  if (isUpdatingSession) {
2311
2330
  return;
@@ -2322,7 +2341,7 @@ var AsgardeoProvider = ({
2322
2341
  clearInterval(interval);
2323
2342
  };
2324
2343
  }, [asgardeo, isLoadingSync, isSignedInSync, isUpdatingSession]);
2325
- const fetchBranding = (0, import_react19.useCallback)(async () => {
2344
+ const fetchBranding = (0, import_react20.useCallback)(async () => {
2326
2345
  if (!baseUrl) {
2327
2346
  return;
2328
2347
  }
@@ -2349,11 +2368,11 @@ var AsgardeoProvider = ({
2349
2368
  setIsBrandingLoading(false);
2350
2369
  }
2351
2370
  }, [baseUrl, preferences?.i18n?.language]);
2352
- const refetchBranding = (0, import_react19.useCallback)(async () => {
2371
+ const refetchBranding = (0, import_react20.useCallback)(async () => {
2353
2372
  setHasFetchedBranding(false);
2354
2373
  await fetchBranding();
2355
2374
  }, [fetchBranding]);
2356
- (0, import_react19.useEffect)(() => {
2375
+ (0, import_react20.useEffect)(() => {
2357
2376
  if (config.platform === import_browser16.Platform.AsgardeoV2) {
2358
2377
  return;
2359
2378
  }
@@ -2419,47 +2438,47 @@ var AsgardeoProvider = ({
2419
2438
  profile: payload
2420
2439
  }));
2421
2440
  };
2422
- const getDecodedIdToken = (0, import_react19.useCallback)(
2441
+ const getDecodedIdToken = (0, import_react20.useCallback)(
2423
2442
  async () => asgardeo.getDecodedIdToken(),
2424
2443
  [asgardeo]
2425
2444
  );
2426
- const getIdToken = (0, import_react19.useCallback)(async () => asgardeo.getIdToken(), [asgardeo]);
2427
- const getAccessToken = (0, import_react19.useCallback)(
2445
+ const getIdToken = (0, import_react20.useCallback)(async () => asgardeo.getIdToken(), [asgardeo]);
2446
+ const getAccessToken = (0, import_react20.useCallback)(
2428
2447
  async () => asgardeo.getAccessToken(),
2429
2448
  [asgardeo]
2430
2449
  );
2431
- const request = (0, import_react19.useCallback)(
2450
+ const request = (0, import_react20.useCallback)(
2432
2451
  async (...args) => asgardeo.request(...args),
2433
2452
  [asgardeo]
2434
2453
  );
2435
- const requestAll = (0, import_react19.useCallback)(
2454
+ const requestAll = (0, import_react20.useCallback)(
2436
2455
  async (...args) => asgardeo.requestAll(...args),
2437
2456
  [asgardeo]
2438
2457
  );
2439
- const exchangeToken = (0, import_react19.useCallback)(
2458
+ const exchangeToken = (0, import_react20.useCallback)(
2440
2459
  async (exchangeConfig) => asgardeo.exchangeToken(exchangeConfig),
2441
2460
  [asgardeo]
2442
2461
  );
2443
- const signOut = (0, import_react19.useCallback)(
2462
+ const signOut = (0, import_react20.useCallback)(
2444
2463
  async (...args) => asgardeo.signOut(...args),
2445
2464
  [asgardeo]
2446
2465
  );
2447
- const signUp = (0, import_react19.useCallback)(
2466
+ const signUp = (0, import_react20.useCallback)(
2448
2467
  async (...args) => asgardeo.signUp(...args),
2449
2468
  [asgardeo]
2450
2469
  );
2451
- const clearSession = (0, import_react19.useCallback)(
2470
+ const clearSession = (0, import_react20.useCallback)(
2452
2471
  async (...args) => asgardeo.clearSession(...args),
2453
2472
  [asgardeo]
2454
2473
  );
2455
- const reInitialize = (0, import_react19.useCallback)(
2474
+ const reInitialize = (0, import_react20.useCallback)(
2456
2475
  async (reInitConfig) => asgardeo.reInitialize(reInitConfig),
2457
2476
  [asgardeo]
2458
2477
  );
2459
- const value = (0, import_react19.useMemo)(
2478
+ const value = (0, import_react20.useMemo)(
2460
2479
  () => ({
2461
2480
  afterSignInUrl,
2462
- applicationId,
2481
+ applicationId: config.applicationId,
2463
2482
  baseUrl,
2464
2483
  clearSession,
2465
2484
  clientId,
@@ -2559,9 +2578,9 @@ var AsgardeoProvider = ({
2559
2578
  var AsgardeoProvider_default = AsgardeoProvider;
2560
2579
 
2561
2580
  // src/contexts/User/useUser.ts
2562
- var import_react20 = require("react");
2581
+ var import_react21 = require("react");
2563
2582
  var useUser = () => {
2564
- const context = (0, import_react20.useContext)(UserContext_default);
2583
+ const context = (0, import_react21.useContext)(UserContext_default);
2565
2584
  if (!context) {
2566
2585
  throw new Error("useUser must be used within a UserProvider");
2567
2586
  }
@@ -2570,9 +2589,9 @@ var useUser = () => {
2570
2589
  var useUser_default = useUser;
2571
2590
 
2572
2591
  // src/contexts/Organization/useOrganization.ts
2573
- var import_react21 = require("react");
2592
+ var import_react22 = require("react");
2574
2593
  var useOrganization = () => {
2575
- const context = (0, import_react21.useContext)(OrganizationContext_default);
2594
+ const context = (0, import_react22.useContext)(OrganizationContext_default);
2576
2595
  if (!context) {
2577
2596
  throw new Error("useOrganization must be used within an OrganizationProvider");
2578
2597
  }
@@ -2581,9 +2600,9 @@ var useOrganization = () => {
2581
2600
  var useOrganization_default = useOrganization;
2582
2601
 
2583
2602
  // src/contexts/Flow/useFlow.ts
2584
- var import_react22 = require("react");
2603
+ var import_react23 = require("react");
2585
2604
  var useFlow = () => {
2586
- const context = (0, import_react22.useContext)(FlowContext_default);
2605
+ const context = (0, import_react23.useContext)(FlowContext_default);
2587
2606
  if (!context) {
2588
2607
  throw new Error("useFlow must be used within a FlowProvider");
2589
2608
  }
@@ -2591,19 +2610,6 @@ var useFlow = () => {
2591
2610
  };
2592
2611
  var useFlow_default = useFlow;
2593
2612
 
2594
- // src/contexts/I18n/useI18n.ts
2595
- var import_react23 = require("react");
2596
- var useI18n = () => {
2597
- const context = (0, import_react23.useContext)(I18nContext_default);
2598
- if (!context) {
2599
- throw new Error(
2600
- "useI18n must be used within an I18nProvider. Make sure your component is wrapped with AsgardeoProvider which includes I18nProvider."
2601
- );
2602
- }
2603
- return context;
2604
- };
2605
- var useI18n_default = useI18n;
2606
-
2607
2613
  // src/contexts/Theme/useTheme.ts
2608
2614
  var import_react24 = require("react");
2609
2615
  var useTheme = () => {
@@ -3859,7 +3865,6 @@ var useStyles4 = (theme, colorScheme, helperTextAlign, helperTextMarginLeft, has
3859
3865
  const formControl = import_css9.css`
3860
3866
  text-align: start;
3861
3867
  font-family: ${theme.vars.typography.fontFamily};
3862
- margin-bottom: calc(${theme.vars.spacing.unit} * 2);
3863
3868
  `;
3864
3869
  const helperText = import_css9.css`
3865
3870
  margin-top: calc(${theme.vars.spacing.unit} / 2);
@@ -8171,24 +8176,6 @@ var logger5 = (0, import_browser51.createPackageComponentLogger)(
8171
8176
  "@asgardeo/react",
8172
8177
  "AuthOptionFactory"
8173
8178
  );
8174
- var resolveEmojiUrisInHtml = (html) => {
8175
- const withEmojiImages = html.replace(
8176
- /<img([^>]*)src="(emoji:[^"]+)"([^>]*)\/?>/gi,
8177
- (_match, pre, src, post) => {
8178
- const emoji = (0, import_browser51.extractEmojiFromUri)(src);
8179
- if (!emoji) {
8180
- return _match;
8181
- }
8182
- const altMatch = (pre + post).match(/alt="([^"]*)"/i);
8183
- const label = altMatch ? altMatch[1] : emoji;
8184
- return `<span role="img" aria-label="${label}">${emoji}</span>`;
8185
- }
8186
- );
8187
- return withEmojiImages.replace(
8188
- /emoji:([^\s"<>&]+)/g,
8189
- (_, rest) => (0, import_browser51.isEmojiUri)(`emoji:${rest}`) ? rest : `emoji:${rest}`
8190
- );
8191
- };
8192
8179
  var richTextClass = import_css36.css`
8193
8180
  overflow-wrap: anywhere;
8194
8181
  & * {
@@ -8256,6 +8243,7 @@ var matchesSocialProvider = (actionId, eventType, buttonText, provider, authType
8256
8243
  return providerMatches;
8257
8244
  };
8258
8245
  var createAuthComponentFromFlow = (component, formValues, touchedFields, formErrors, isLoading, isFormValid, onInputChange, authType, options = {}) => {
8246
+ const { theme } = useTheme_default();
8259
8247
  const key = options.key || component.id;
8260
8248
  const resolve = (text) => {
8261
8249
  if (!text || !options.t && !options.meta) {
@@ -8425,6 +8413,11 @@ var createAuthComponentFromFlow = (component, formValues, touchedFields, formErr
8425
8413
  }
8426
8414
  case import_browser51.EmbeddedFlowComponentTypeV2.Block: {
8427
8415
  if (component.components && component.components.length > 0) {
8416
+ const formStyles = {
8417
+ display: "flex",
8418
+ flexDirection: "column",
8419
+ gap: `calc(${theme.vars.spacing.unit} * 2)`
8420
+ };
8428
8421
  const blockComponents = component.components.map(
8429
8422
  (childComponent, index) => createAuthComponentFromFlow(
8430
8423
  childComponent,
@@ -8441,7 +8434,7 @@ var createAuthComponentFromFlow = (component, formValues, touchedFields, formErr
8441
8434
  }
8442
8435
  )
8443
8436
  ).filter(Boolean);
8444
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("form", { id: component.id, children: blockComponents }, key);
8437
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("form", { id: component.id, style: formStyles, children: blockComponents }, key);
8445
8438
  }
8446
8439
  return null;
8447
8440
  }
@@ -8450,7 +8443,7 @@ var createAuthComponentFromFlow = (component, formValues, touchedFields, formErr
8450
8443
  "div",
8451
8444
  {
8452
8445
  className: richTextClass,
8453
- dangerouslySetInnerHTML: { __html: import_dompurify.default.sanitize(resolveEmojiUrisInHtml(resolve(component.label))) }
8446
+ dangerouslySetInnerHTML: { __html: import_dompurify.default.sanitize((0, import_browser51.resolveEmojiUrisInHtml)(resolve(component.label))) }
8454
8447
  },
8455
8448
  key
8456
8449
  );
@@ -17406,10 +17399,10 @@ var LanguageSwitcher = ({ children, className }) => {
17406
17399
  const { meta, switchLanguage, isLoading } = useFlowMeta_default();
17407
17400
  const { currentLanguage } = useTranslation_default();
17408
17401
  const availableLanguageCodes = meta?.i18n?.languages ?? [];
17409
- const effectiveLanguageCodes = (0, import_react110.useMemo)(() => {
17410
- const fallbackCodes = availableLanguageCodes.length > 0 ? availableLanguageCodes : [currentLanguage];
17411
- return Array.from(/* @__PURE__ */ new Set([currentLanguage, ...fallbackCodes]));
17412
- }, [availableLanguageCodes, currentLanguage]);
17402
+ const effectiveLanguageCodes = (0, import_react110.useMemo)(
17403
+ () => availableLanguageCodes.length > 0 ? availableLanguageCodes : [currentLanguage],
17404
+ [availableLanguageCodes, currentLanguage]
17405
+ );
17413
17406
  const languages = (0, import_react110.useMemo)(
17414
17407
  () => effectiveLanguageCodes.map((code) => ({
17415
17408
  code,
@@ -17419,6 +17412,11 @@ var LanguageSwitcher = ({ children, className }) => {
17419
17412
  })),
17420
17413
  [effectiveLanguageCodes]
17421
17414
  );
17415
+ (0, import_react110.useEffect)(() => {
17416
+ if (availableLanguageCodes.length > 0 && !availableLanguageCodes.includes(currentLanguage)) {
17417
+ switchLanguage(availableLanguageCodes[0]);
17418
+ }
17419
+ }, [availableLanguageCodes, currentLanguage, switchLanguage]);
17422
17420
  const handleLanguageChange = (language) => {
17423
17421
  if (language !== currentLanguage) {
17424
17422
  switchLanguage(language);