@stackframe/stack 2.5.35 → 2.6.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.
Files changed (114) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/components/credential-sign-in.js +4 -2
  3. package/dist/components/credential-sign-in.js.map +1 -1
  4. package/dist/components/credential-sign-up.d.mts +3 -1
  5. package/dist/components/credential-sign-up.d.ts +3 -1
  6. package/dist/components/credential-sign-up.js +23 -17
  7. package/dist/components/credential-sign-up.js.map +1 -1
  8. package/dist/components/elements/sidebar-layout.js +19 -11
  9. package/dist/components/elements/sidebar-layout.js.map +1 -1
  10. package/dist/components/elements/user-avatar.js +1 -1
  11. package/dist/components/elements/user-avatar.js.map +1 -1
  12. package/dist/components/magic-link-sign-in.js +82 -30
  13. package/dist/components/magic-link-sign-in.js.map +1 -1
  14. package/dist/components/message-cards/predefined-message-card.js +22 -20
  15. package/dist/components/message-cards/predefined-message-card.js.map +1 -1
  16. package/dist/components/oauth-button.js +32 -25
  17. package/dist/components/oauth-button.js.map +1 -1
  18. package/dist/components/profile-image-editor.js +2 -2
  19. package/dist/components/profile-image-editor.js.map +1 -1
  20. package/dist/components/selected-team-switcher.js +1 -1
  21. package/dist/components/selected-team-switcher.js.map +1 -1
  22. package/dist/components-page/account-settings.d.mts +4 -2
  23. package/dist/components-page/account-settings.d.ts +4 -2
  24. package/dist/components-page/account-settings.js +365 -188
  25. package/dist/components-page/account-settings.js.map +1 -1
  26. package/dist/components-page/auth-page.d.mts +1 -0
  27. package/dist/components-page/auth-page.d.ts +1 -0
  28. package/dist/components-page/auth-page.js +5 -5
  29. package/dist/components-page/auth-page.js.map +1 -1
  30. package/dist/components-page/email-verification.js +10 -8
  31. package/dist/components-page/email-verification.js.map +1 -1
  32. package/dist/components-page/error-page.js +19 -4
  33. package/dist/components-page/error-page.js.map +1 -1
  34. package/dist/components-page/magic-link-callback.js +11 -9
  35. package/dist/components-page/magic-link-callback.js.map +1 -1
  36. package/dist/components-page/oauth-callback.js +1 -1
  37. package/dist/components-page/oauth-callback.js.map +1 -1
  38. package/dist/components-page/password-reset.js +13 -11
  39. package/dist/components-page/password-reset.js.map +1 -1
  40. package/dist/components-page/sign-up.d.mts +1 -0
  41. package/dist/components-page/sign-up.d.ts +1 -0
  42. package/dist/components-page/sign-up.js +10 -1
  43. package/dist/components-page/sign-up.js.map +1 -1
  44. package/dist/components-page/stack-handler.d.mts +1 -0
  45. package/dist/components-page/stack-handler.d.ts +1 -0
  46. package/dist/esm/components/credential-sign-in.js +4 -2
  47. package/dist/esm/components/credential-sign-in.js.map +1 -1
  48. package/dist/esm/components/credential-sign-up.js +24 -18
  49. package/dist/esm/components/credential-sign-up.js.map +1 -1
  50. package/dist/esm/components/elements/sidebar-layout.js +19 -11
  51. package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
  52. package/dist/esm/components/elements/user-avatar.js +1 -1
  53. package/dist/esm/components/elements/user-avatar.js.map +1 -1
  54. package/dist/esm/components/magic-link-sign-in.js +84 -32
  55. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  56. package/dist/esm/components/message-cards/predefined-message-card.js +22 -20
  57. package/dist/esm/components/message-cards/predefined-message-card.js.map +1 -1
  58. package/dist/esm/components/oauth-button.js +32 -25
  59. package/dist/esm/components/oauth-button.js.map +1 -1
  60. package/dist/esm/components/profile-image-editor.js +2 -2
  61. package/dist/esm/components/profile-image-editor.js.map +1 -1
  62. package/dist/esm/components/selected-team-switcher.js +1 -1
  63. package/dist/esm/components/selected-team-switcher.js.map +1 -1
  64. package/dist/esm/components-page/account-settings.js +365 -189
  65. package/dist/esm/components-page/account-settings.js.map +1 -1
  66. package/dist/esm/components-page/auth-page.js +5 -5
  67. package/dist/esm/components-page/auth-page.js.map +1 -1
  68. package/dist/esm/components-page/email-verification.js +10 -8
  69. package/dist/esm/components-page/email-verification.js.map +1 -1
  70. package/dist/esm/components-page/error-page.js +19 -4
  71. package/dist/esm/components-page/error-page.js.map +1 -1
  72. package/dist/esm/components-page/magic-link-callback.js +11 -9
  73. package/dist/esm/components-page/magic-link-callback.js.map +1 -1
  74. package/dist/esm/components-page/oauth-callback.js +1 -1
  75. package/dist/esm/components-page/oauth-callback.js.map +1 -1
  76. package/dist/esm/components-page/password-reset.js +13 -11
  77. package/dist/esm/components-page/password-reset.js.map +1 -1
  78. package/dist/esm/components-page/sign-up.js +10 -1
  79. package/dist/esm/components-page/sign-up.js.map +1 -1
  80. package/dist/esm/generated/global-css.js +1 -1
  81. package/dist/esm/generated/global-css.js.map +1 -1
  82. package/dist/esm/generated/quetzal-translations.js +1764 -1356
  83. package/dist/esm/generated/quetzal-translations.js.map +1 -1
  84. package/dist/esm/lib/auth.js +4 -3
  85. package/dist/esm/lib/auth.js.map +1 -1
  86. package/dist/esm/lib/stack-app.js +54 -45
  87. package/dist/esm/lib/stack-app.js.map +1 -1
  88. package/dist/esm/lib/translations.js +6 -2
  89. package/dist/esm/lib/translations.js.map +1 -1
  90. package/dist/esm/utils/browser-script.js +9 -7
  91. package/dist/esm/utils/browser-script.js.map +1 -1
  92. package/dist/generated/global-css.d.mts +1 -1
  93. package/dist/generated/global-css.d.ts +1 -1
  94. package/dist/generated/global-css.js +1 -1
  95. package/dist/generated/global-css.js.map +1 -1
  96. package/dist/generated/quetzal-translations.d.mts +2 -2
  97. package/dist/generated/quetzal-translations.d.ts +2 -2
  98. package/dist/generated/quetzal-translations.js +1764 -1356
  99. package/dist/generated/quetzal-translations.js.map +1 -1
  100. package/dist/lib/auth.d.mts +16 -6
  101. package/dist/lib/auth.d.ts +16 -6
  102. package/dist/lib/auth.js +4 -3
  103. package/dist/lib/auth.js.map +1 -1
  104. package/dist/lib/stack-app.d.mts +21 -12
  105. package/dist/lib/stack-app.d.ts +21 -12
  106. package/dist/lib/stack-app.js +53 -44
  107. package/dist/lib/stack-app.js.map +1 -1
  108. package/dist/lib/translations.d.mts +1 -1
  109. package/dist/lib/translations.d.ts +1 -1
  110. package/dist/lib/translations.js +6 -2
  111. package/dist/lib/translations.js.map +1 -1
  112. package/dist/utils/browser-script.js +9 -7
  113. package/dist/utils/browser-script.js.map +1 -1
  114. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
1
  declare function useTranslation(): {
2
- t: (str: string) => string;
2
+ t: (str: string, templateVars?: Record<string, string>) => string;
3
3
  };
4
4
 
5
5
  export { useTranslation };
@@ -1,5 +1,5 @@
1
1
  declare function useTranslation(): {
2
- t: (str: string) => string;
2
+ t: (str: string, templateVars?: Record<string, string>) => string;
3
3
  };
4
4
 
5
5
  export { useTranslation };
@@ -42,9 +42,13 @@ function useTranslation() {
42
42
  throw new Error("Translation context not found; did you forget to wrap your app in a <StackProvider />?");
43
43
  }
44
44
  return {
45
- t: (str) => {
45
+ t: (str, templateVars) => {
46
46
  const { quetzalKeys, quetzalLocale } = translationContext;
47
- return quetzalLocale.get(quetzalKeys.get(str) ?? void 0) ?? str;
47
+ let translation = quetzalLocale.get(quetzalKeys.get(str) ?? void 0) ?? str;
48
+ for (const [key, value] of Object.entries(templateVars || {})) {
49
+ translation = translation.replace(`{${key}}`, value);
50
+ }
51
+ return translation;
48
52
  }
49
53
  };
50
54
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/translations.tsx"],"sourcesContent":["import \"client-only\";\nimport React from \"react\";\nimport { TranslationContext } from \"../providers/translation-provider-client\";\n\nexport function useTranslation() {\n const translationContext = React.useContext(TranslationContext);\n if (!translationContext) {\n throw new Error(\"Translation context not found; did you forget to wrap your app in a <StackProvider />?\");\n }\n return {\n t: (str: string) => {\n const { quetzalKeys, quetzalLocale } = translationContext;\n return quetzalLocale.get(quetzalKeys.get(str) ?? (undefined as never)) ?? str;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAO;AACP,mBAAkB;AAClB,yCAAmC;AAE5B,SAAS,iBAAiB;AAC/B,QAAM,qBAAqB,aAAAA,QAAM,WAAW,qDAAkB;AAC9D,MAAI,CAAC,oBAAoB;AACvB,UAAM,IAAI,MAAM,wFAAwF;AAAA,EAC1G;AACA,SAAO;AAAA,IACL,GAAG,CAAC,QAAgB;AAClB,YAAM,EAAE,aAAa,cAAc,IAAI;AACvC,aAAO,cAAc,IAAI,YAAY,IAAI,GAAG,KAAM,MAAmB,KAAK;AAAA,IAC5E;AAAA,EACF;AACF;","names":["React"]}
1
+ {"version":3,"sources":["../../src/lib/translations.tsx"],"sourcesContent":["import \"client-only\";\nimport React from \"react\";\nimport { TranslationContext } from \"../providers/translation-provider-client\";\n\nexport function useTranslation() {\n const translationContext = React.useContext(TranslationContext);\n if (!translationContext) {\n throw new Error(\"Translation context not found; did you forget to wrap your app in a <StackProvider />?\");\n }\n return {\n t: (str: string, templateVars?: Record<string, string>) => {\n const { quetzalKeys, quetzalLocale } = translationContext;\n let translation = quetzalLocale.get(quetzalKeys.get(str) ?? (undefined as never)) ?? str;\n for (const [key, value] of Object.entries(templateVars || {})) {\n translation = translation.replace(`{${key}}`, value);\n }\n return translation;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAO;AACP,mBAAkB;AAClB,yCAAmC;AAE5B,SAAS,iBAAiB;AAC/B,QAAM,qBAAqB,aAAAA,QAAM,WAAW,qDAAkB;AAC9D,MAAI,CAAC,oBAAoB;AACvB,UAAM,IAAI,MAAM,wFAAwF;AAAA,EAC1G;AACA,SAAO;AAAA,IACL,GAAG,CAAC,KAAa,iBAA0C;AACzD,YAAM,EAAE,aAAa,cAAc,IAAI;AACvC,UAAI,cAAc,cAAc,IAAI,YAAY,IAAI,GAAG,KAAM,MAAmB,KAAK;AACrF,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,gBAAgB,CAAC,CAAC,GAAG;AAC7D,sBAAc,YAAY,QAAQ,IAAI,GAAG,KAAK,KAAK;AAAA,MACrD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":["React"]}
@@ -66,12 +66,14 @@ var script = () => {
66
66
  return false;
67
67
  };
68
68
  const copyFromVariables = () => {
69
- const backgroundColor = getComputedStyle(document.documentElement).getPropertyValue("--background");
69
+ let backgroundColor = getComputedStyle(document.documentElement).getPropertyValue("--background");
70
70
  if (backgroundColor) {
71
+ if (/^\d+\s\d+%\s\d+(\.\d+)?%$/.test(backgroundColor)) {
72
+ backgroundColor = `hsl(${backgroundColor})`;
73
+ }
71
74
  const rgb = colorToRGB(backgroundColor);
72
75
  if (rgb) {
73
76
  const luma = rgbToLuma(rgb);
74
- console.log("luma", luma);
75
77
  if (luma < 128) {
76
78
  setTheme("dark");
77
79
  } else {
@@ -100,11 +102,11 @@ var script = () => {
100
102
  if (copyFromColorScheme()) {
101
103
  return;
102
104
  }
103
- if (copyFromVariables()) {
105
+ if (mutation.attributeName && attributes.includes(mutation.attributeName) && copyFromAttributes()) {
104
106
  return;
105
107
  }
106
- if (mutation.attributeName && attributes.includes(mutation.attributeName)) {
107
- copyFromAttributes();
108
+ if (copyFromVariables()) {
109
+ return;
108
110
  }
109
111
  });
110
112
  });
@@ -113,8 +115,8 @@ var script = () => {
113
115
  attributeFilter: attributes
114
116
  });
115
117
  if (!copyFromColorScheme()) {
116
- if (!copyFromVariables()) {
117
- copyFromAttributes();
118
+ if (!copyFromAttributes()) {
119
+ copyFromVariables();
118
120
  }
119
121
  }
120
122
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/browser-script.tsx"],"sourcesContent":["// Note that this script can not import anything from outside as it will be converted to a string and executed in the browser.\n\nimport { SsrScript } from \"../components/elements/ssr-layout-effect\";\n\n// Also please note that there might be hydration issues with this script, always check the browser console for errors after changing this script.\nconst script = () => {\n const attributes = ['data-joy-color-scheme', 'data-mui-color-scheme', 'data-theme', 'data-color-scheme', 'class'];\n\n const getColorMode = (value: string) => {\n if (value.includes('dark')) {\n return 'dark';\n }\n if (value.includes('light')) {\n return 'light';\n }\n return null;\n };\n\n const setTheme = (mode: 'dark' | 'light') => {\n document.documentElement.setAttribute('data-stack-theme', mode);\n };\n\n const colorToRGB = (color: string): [number, number, number] | null => {\n // Create a temporary element to use for color conversion\n const temp = document.createElement('div');\n temp.style.color = color;\n document.body.appendChild(temp);\n\n // Get the computed style\n const computedColor = getComputedStyle(temp).color;\n document.body.removeChild(temp);\n\n // Parse the RGB values\n const match = computedColor.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if (match) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n\n return null;\n };\n\n const rgbToLuma = (rgb: [number, number, number]) => {\n return (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n };\n\n const copyFromColorScheme = () => {\n const colorScheme = getComputedStyle(document.documentElement).getPropertyValue('color-scheme');\n\n if (colorScheme) {\n const mode = getColorMode(colorScheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n return false;\n };\n\n const copyFromVariables = () => {\n const backgroundColor = getComputedStyle(document.documentElement).getPropertyValue('--background');\n if (backgroundColor) {\n // convert backgroundColor to hsl and check if it's dark\n const rgb = colorToRGB(backgroundColor);\n if (rgb) {\n const luma = rgbToLuma(rgb);\n console.log('luma', luma);\n if (luma < 128) {\n setTheme('dark');\n } else {\n setTheme('light');\n }\n return true;\n }\n }\n return false;\n };\n\n const copyFromAttributes = () => {\n for (const attributeName of attributes) {\n const colorTheme = document.documentElement.getAttribute(attributeName);\n if (colorTheme) {\n const mode = getColorMode(colorTheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n }\n return false;\n };\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (copyFromColorScheme()) {\n return;\n }\n if (copyFromVariables()) {\n return;\n }\n if (mutation.attributeName && attributes.includes(mutation.attributeName)) {\n copyFromAttributes();\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: attributes,\n });\n\n // Initial check on page load\n if (!copyFromColorScheme()) {\n if (!copyFromVariables()) {\n copyFromAttributes();\n }\n }\n};\n\nexport function BrowserScript(props : { nonce?: string }) {\n return <SsrScript nonce={props.nonce} script={`(${script.toString()})()`}/>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/utils/browser-script.tsx"],"sourcesContent":["// Note that this script can not import anything from outside as it will be converted to a string and executed in the browser.\n\nimport { SsrScript } from \"../components/elements/ssr-layout-effect\";\n\n// Also please note that there might be hydration issues with this script, always check the browser console for errors after changing this script.\nconst script = () => {\n const attributes = ['data-joy-color-scheme', 'data-mui-color-scheme', 'data-theme', 'data-color-scheme', 'class'];\n\n const getColorMode = (value: string) => {\n if (value.includes('dark')) {\n return 'dark';\n }\n if (value.includes('light')) {\n return 'light';\n }\n return null;\n };\n\n const setTheme = (mode: 'dark' | 'light') => {\n document.documentElement.setAttribute('data-stack-theme', mode);\n };\n\n const colorToRGB = (color: string): [number, number, number] | null => {\n // Create a temporary element to use for color conversion\n const temp = document.createElement('div');\n temp.style.color = color;\n document.body.appendChild(temp);\n\n // Get the computed style\n const computedColor = getComputedStyle(temp).color;\n document.body.removeChild(temp);\n\n // Parse the RGB values\n const match = computedColor.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if (match) {\n return [parseInt(match[1]), parseInt(match[2]), parseInt(match[3])];\n }\n\n return null;\n };\n\n const rgbToLuma = (rgb: [number, number, number]) => {\n return (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n };\n\n const copyFromColorScheme = () => {\n const colorScheme = getComputedStyle(document.documentElement).getPropertyValue('color-scheme');\n\n if (colorScheme) {\n const mode = getColorMode(colorScheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n return false;\n };\n\n const copyFromVariables = () => {\n let backgroundColor = getComputedStyle(document.documentElement).getPropertyValue('--background');\n if (backgroundColor) {\n // shadcn by default uses the hsl values with the format \"123 45% 6.5%\"\n if (/^\\d+\\s\\d+%\\s\\d+(\\.\\d+)?%$/.test(backgroundColor)) {\n backgroundColor = `hsl(${backgroundColor})`;\n }\n\n // convert backgroundColor to luma and check if it's dark\n const rgb = colorToRGB(backgroundColor);\n if (rgb) {\n const luma = rgbToLuma(rgb);\n if (luma < 128) {\n setTheme('dark');\n } else {\n setTheme('light');\n }\n return true;\n }\n }\n return false;\n };\n\n const copyFromAttributes = () => {\n for (const attributeName of attributes) {\n const colorTheme = document.documentElement.getAttribute(attributeName);\n if (colorTheme) {\n const mode = getColorMode(colorTheme);\n if (mode) {\n setTheme(mode);\n return true;\n }\n }\n }\n return false;\n };\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (copyFromColorScheme()) {\n return;\n }\n if (mutation.attributeName && attributes.includes(mutation.attributeName) && copyFromAttributes()) {\n return;\n }\n if (copyFromVariables()) {\n return;\n }\n });\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: attributes,\n });\n\n // Initial check on page load\n if (!copyFromColorScheme()) {\n if (!copyFromAttributes()) {\n copyFromVariables();\n }\n }\n};\n\nexport function BrowserScript(props : { nonce?: string }) {\n return <SsrScript nonce={props.nonce} script={`(${script.toString()})()`}/>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,+BAA0B;AAyHjB;AAtHT,IAAM,SAAS,MAAM;AACnB,QAAM,aAAa,CAAC,yBAAyB,yBAAyB,cAAc,qBAAqB,OAAO;AAEhH,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,MAAM,SAAS,MAAM,GAAG;AAC1B,aAAO;AAAA,IACT;AACA,QAAI,MAAM,SAAS,OAAO,GAAG;AAC3B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,CAAC,SAA2B;AAC3C,aAAS,gBAAgB,aAAa,oBAAoB,IAAI;AAAA,EAChE;AAEA,QAAM,aAAa,CAAC,UAAmD;AAErE,UAAM,OAAO,SAAS,cAAc,KAAK;AACzC,SAAK,MAAM,QAAQ;AACnB,aAAS,KAAK,YAAY,IAAI;AAG9B,UAAM,gBAAgB,iBAAiB,IAAI,EAAE;AAC7C,aAAS,KAAK,YAAY,IAAI;AAG9B,UAAM,QAAQ,cAAc,MAAM,kCAAkC;AACpE,QAAI,OAAO;AACT,aAAO,CAAC,SAAS,MAAM,CAAC,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC,CAAC;AAAA,IACpE;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,CAAC,QAAkC;AACnD,YAAQ,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO;AAAA,EACxD;AAEA,QAAM,sBAAsB,MAAM;AAChC,UAAM,cAAc,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,cAAc;AAE9F,QAAI,aAAa;AACf,YAAM,OAAO,aAAa,WAAW;AACrC,UAAI,MAAM;AACR,iBAAS,IAAI;AACb,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,MAAM;AAC9B,QAAI,kBAAkB,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,cAAc;AAChG,QAAI,iBAAiB;AAEnB,UAAI,4BAA4B,KAAK,eAAe,GAAG;AACrD,0BAAkB,OAAO,eAAe;AAAA,MAC1C;AAGA,YAAM,MAAM,WAAW,eAAe;AACtC,UAAI,KAAK;AACP,cAAM,OAAO,UAAU,GAAG;AAC1B,YAAI,OAAO,KAAK;AACd,mBAAS,MAAM;AAAA,QACjB,OAAO;AACL,mBAAS,OAAO;AAAA,QAClB;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,qBAAqB,MAAM;AAC/B,eAAW,iBAAiB,YAAY;AACtC,YAAM,aAAa,SAAS,gBAAgB,aAAa,aAAa;AACtE,UAAI,YAAY;AACd,cAAM,OAAO,aAAa,UAAU;AACpC,YAAI,MAAM;AACR,mBAAS,IAAI;AACb,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,IAAI,iBAAiB,CAAC,cAAc;AACnD,cAAU,QAAQ,CAAC,aAAa;AAC9B,UAAI,oBAAoB,GAAG;AACzB;AAAA,MACF;AACA,UAAI,SAAS,iBAAiB,WAAW,SAAS,SAAS,aAAa,KAAK,mBAAmB,GAAG;AACjG;AAAA,MACF;AACA,UAAI,kBAAkB,GAAG;AACvB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,WAAS,QAAQ,SAAS,iBAAiB;AAAA,IACzC,YAAY;AAAA,IACZ,iBAAiB;AAAA,EACnB,CAAC;AAGD,MAAI,CAAC,oBAAoB,GAAG;AAC1B,QAAI,CAAC,mBAAmB,GAAG;AACzB,wBAAkB;AAAA,IACpB;AAAA,EACF;AACF;AAEO,SAAS,cAAc,OAA4B;AACxD,SAAO,4CAAC,sCAAU,OAAO,MAAM,OAAO,QAAQ,IAAI,OAAO,SAAS,CAAC,OAAM;AAC3E;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackframe/stack",
3
- "version": "2.5.35",
3
+ "version": "2.6.0",
4
4
  "sideEffects": false,
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -42,9 +42,9 @@
42
42
  "tailwindcss-animate": "^1.0.7",
43
43
  "tsx": "^4.7.2",
44
44
  "yup": "^1.4.0",
45
- "@stackframe/stack-sc": "2.5.35",
46
- "@stackframe/stack-shared": "2.5.35",
47
- "@stackframe/stack-ui": "2.5.35"
45
+ "@stackframe/stack-sc": "2.6.0",
46
+ "@stackframe/stack-ui": "2.6.0",
47
+ "@stackframe/stack-shared": "2.6.0"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "next": ">=14.1",
@@ -61,9 +61,9 @@
61
61
  "autoprefixer": "^10.4.17",
62
62
  "chokidar-cli": "^3.0.0",
63
63
  "esbuild": "^0.20.2",
64
- "next": "^14.1.0",
65
64
  "i18next": "^23.14.0",
66
65
  "i18next-parser": "^9.0.2",
66
+ "next": "^14.1.0",
67
67
  "postcss": "^8.4.38",
68
68
  "postcss-nested": "^6.0.1",
69
69
  "react": "^18.2.0",