@ory/elements-react 1.0.0-next.3 → 1.0.0-next.30

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 (65) hide show
  1. package/CHANGELOG.md +415 -0
  2. package/DEVELOPMENT.md +79 -0
  3. package/LICENSE +201 -0
  4. package/README.md +112 -37
  5. package/dist/client/config.d.mts +21 -0
  6. package/dist/client/config.d.ts +21 -0
  7. package/dist/client/config.js +77 -0
  8. package/dist/client/config.js.map +1 -0
  9. package/dist/client/config.mjs +51 -0
  10. package/dist/client/config.mjs.map +1 -0
  11. package/dist/client/frontendClient.d.mts +7 -0
  12. package/dist/client/frontendClient.d.ts +7 -0
  13. package/dist/client/frontendClient.js +52 -0
  14. package/dist/client/frontendClient.js.map +1 -0
  15. package/dist/client/frontendClient.mjs +31 -0
  16. package/dist/client/frontendClient.mjs.map +1 -0
  17. package/dist/client/index.d.mts +5 -0
  18. package/dist/client/index.d.ts +5 -0
  19. package/dist/client/index.js +33 -0
  20. package/dist/client/index.js.map +1 -0
  21. package/dist/client/index.mjs +10 -0
  22. package/dist/client/index.mjs.map +1 -0
  23. package/dist/client/session-provider.d.mts +62 -0
  24. package/dist/client/session-provider.d.ts +62 -0
  25. package/dist/client/session-provider.js +96 -0
  26. package/dist/client/session-provider.js.map +1 -0
  27. package/dist/client/session-provider.mjs +71 -0
  28. package/dist/client/session-provider.mjs.map +1 -0
  29. package/dist/client/useSession.d.mts +32 -0
  30. package/dist/client/useSession.d.ts +32 -0
  31. package/dist/client/useSession.js +37 -0
  32. package/dist/client/useSession.js.map +1 -0
  33. package/dist/client/useSession.mjs +13 -0
  34. package/dist/client/useSession.mjs.map +1 -0
  35. package/dist/index.d.mts +445 -1635
  36. package/dist/index.d.ts +445 -1635
  37. package/dist/index.js +2411 -5702
  38. package/dist/index.js.map +1 -1
  39. package/dist/index.mjs +2404 -5668
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/theme/default/index.css +833 -181
  42. package/dist/theme/default/index.css.map +1 -1
  43. package/dist/theme/default/index.d.mts +29 -142
  44. package/dist/theme/default/index.d.ts +29 -142
  45. package/dist/theme/default/index.js +2026 -10131
  46. package/dist/theme/default/index.js.map +1 -1
  47. package/dist/theme/default/index.mjs +2080 -10212
  48. package/dist/theme/default/index.mjs.map +1 -1
  49. package/dist/theme/default/tailwind/defaults.d.mts +737 -0
  50. package/dist/theme/default/tailwind/defaults.d.ts +737 -0
  51. package/dist/theme/default/tailwind/defaults.js +219 -0
  52. package/dist/theme/default/tailwind/defaults.js.map +1 -0
  53. package/dist/theme/default/tailwind/defaults.mjs +196 -0
  54. package/dist/theme/default/tailwind/defaults.mjs.map +1 -0
  55. package/package.json +40 -10
  56. package/tailwind/defaults.ts +34 -0
  57. package/tailwind/generated/README.md +2 -0
  58. package/tailwind/generated/default-variables.css +216 -0
  59. package/tailwind/generated/variables-processed.json +161 -0
  60. package/tsconfig.json +14 -3
  61. package/tsconfig.runtime.json +4 -0
  62. package/.eslintrc.js +0 -61
  63. package/postcss.config.ts +0 -6
  64. package/tailwind.config.ts +0 -51
  65. package/variables-processed.json +0 -193
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://ory.sh">
3
- <img src="https://raw.githubusercontent.com/ory/meta/jonas-jonas/orylogo/static/logos/logo-ory.svg" height="72" />
3
+ <img src="https://raw.githubusercontent.com/ory/meta/refs/heads/master/static/logos/logo-ory.svg" height="72" />
4
4
  </a>
5
5
  </p>
6
6
 
@@ -33,7 +33,7 @@ Visit https://ory.sh/docs to see the full Ory documentation.
33
33
 
34
34
  - React `>= 18`
35
35
  - Node.js `>= 18`
36
- - **`@ory/client-fetch`** - fetch based version of ory client
36
+ - **`@ory/client-fetch`**
37
37
 
38
38
  **Installation**
39
39
 
@@ -41,10 +41,6 @@ Visit https://ory.sh/docs to see the full Ory documentation.
41
41
  npm install @ory/elements-react
42
42
  ```
43
43
 
44
- > [!IMPORTANT]<br/>Please take a look at the
45
- > [local develepmont documentation](https://www.ory.sh/docs/getting-started/local-development)
46
- > \
47
-
48
44
  ## Usage
49
45
 
50
46
  Ory Elements provides components that can aggregate flow objects and display
@@ -53,15 +49,16 @@ user authentication flows based on the data.
53
49
  To feed Ory Elements with flow data you need to use Ory client.
54
50
 
55
51
  ```ts
56
- import { frontendClient } from "@ory/client-fetch"
57
-
58
52
  export function serverClientFrontend() {
59
53
  // For testing purposes we're using Ory tunnel
60
- return frontendClient("http://localhost:4000", {
54
+
55
+ const config = new Configuration({
61
56
  headers: {
62
57
  Accept: "application/json",
63
58
  },
59
+ basePath: "http://localhost:4000",
64
60
  })
61
+ return new FrontendApi(config)
65
62
  }
66
63
  ```
67
64
 
@@ -96,42 +93,93 @@ export function init(params: QueryParams, flowType: FlowType) {
96
93
 
97
94
  To access & render the flow, on your flow page, you can use the `flow` query
98
95
  parameter, that is included in the redirect. Use it to call the
99
- [`getLoginFlow()`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/getLoginFlow)
96
+ [`getRegistrationFlowRaw()`](https://www.ory.sh/docs/reference/api#tag/frontend/operation/getRegistrationFlow)
100
97
  API.
101
98
 
102
99
  **Full Example**:
103
100
 
104
- ````ts
105
- export async function getOrCreateRegistrationFlow(
106
- params: QueryParams
107
- ): Promise<RegistrationFlow> {
108
- const onRestartFlow = () => init(params, FlowType.Registration);
101
+ ```ts
102
+ import {
103
+ Configuration,
104
+ FlowType,
105
+ FrontendApi,
106
+ handleFlowError,
107
+ RegistrationFlow,
108
+ } from "@ory/client-fetch"
109
+ import { redirect, RedirectType } from "next/navigation"
110
+
111
+ type QueryParams = {
112
+ flow?: string
113
+ }
114
+ export function serverClientFrontend() {
115
+ // For testing purposes we're using Ory tunnel
116
+
117
+ const config = new Configuration({
118
+ headers: {
119
+ Accept: "application/json",
120
+ },
121
+ basePath: "http://localhost:4000",
122
+ })
123
+ return new FrontendApi(config)
124
+ }
109
125
 
110
- // If flow ID doesn't exist in params simply trigget the init function.
126
+ export function init(params: QueryParams, flowType: FlowType) {
127
+ // Take advantage of the fact, that Ory handles the flow creation for us and redirects the user to the default return to automatically if they're logged in already.
128
+ return redirect(
129
+ "http://localhost:4000" +
130
+ "/self-service/" +
131
+ flowType.toString() +
132
+ "/browser?" +
133
+ new URLSearchParams(params).toString(),
134
+ RedirectType.replace,
135
+ )
136
+ }
137
+
138
+ export async function getOrCreateRegistrationFlow(params: {
139
+ flow?: string
140
+ }): Promise<RegistrationFlow> {
141
+ const onRestartFlow = () => init(params, FlowType.Registration)
142
+
143
+ // If flow ID doesn't exist in params simply trigger the init function.
111
144
  if (!params.flow) {
112
- return onRestartFlow();
145
+ return onRestartFlow()
113
146
  }
114
147
 
115
148
  return await serverClientFrontend()
116
- // Passing the flow ID
117
- .getRegistrationFlowRaw({ id: flow })
118
- .then(res => res.value())
149
+ // Pass in the flow ID
150
+ .getRegistrationFlowRaw({ id: params.flow })
151
+ .then((res) => res.value())
119
152
  .catch(
120
- // Ory Elements predefines the handleFlowError function to simplify error handling.
153
+ // @ory/client-fetch predefines the handleFlowError function to simplify error handling.
121
154
  // You can define what should happen in each of these callbacks
122
155
  handleFlowError({
156
+ // Validation errors happen if the user's provided input failed a validation rule (e.g. not an email, etc.)
123
157
  onValidationError,
158
+ // Flows can sometimes encounter unrecoverable errors, in that case we need to start a new flow to protect the user.
159
+ // In most cases, it is enough to initialize a new flow.
124
160
  onRestartFlow,
161
+ // Sometimes a flow requires a redirect to a different URL/context. For example during OIDC flows.
162
+ // In that case, you can handle the redirect here, for example using your framework's preferred method for redirects.
125
163
  onRedirect,
126
- })
127
- );
128
- ```
129
- ````
164
+ }),
165
+ )
166
+ }
167
+
168
+ function onValidationError(flow: RegistrationFlow) {
169
+ // handle validation error
170
+ }
171
+
172
+ function onRedirect(url: string, external: boolean) {
173
+ // handle the redirect
174
+ }
175
+ ```
130
176
 
131
177
  As soon as we have our flow data we can render the `<Registration/>` component
132
178
  from `@ory/elements-react` package.
133
179
 
134
180
  ```tsx
181
+ import { Registration } from "@ory/elements-react/theme"
182
+
135
183
  export default async function RegistrationPage({ searchParams }: PageProps) {
136
184
  const flow = await getOrCreateRegistrationFlow(searchParams)
137
185
 
@@ -139,13 +187,7 @@ export default async function RegistrationPage({ searchParams }: PageProps) {
139
187
  return <div>Flow not found</div>
140
188
  }
141
189
 
142
- return (
143
- <Registration
144
- flow={flow}
145
- config={oryConfiguration}
146
- components={ComponentOverrides}
147
- />
148
- )
190
+ return <Registration flow={flow} config={oryConfiguration} />
149
191
  }
150
192
  ```
151
193
 
@@ -169,11 +211,44 @@ Most styling can be overwritten, by providing your own custom CSS variables:
169
211
  }
170
212
  ```
171
213
 
172
- ## Package development
214
+ ### Component overrides
173
215
 
174
- To develop and use the package `npm link` is recommended. To run the package in
175
- watch mode use
216
+ Many components in Ory Elements can be overriden with your own implementation.
217
+ Ory Elements also provides useful hooks that be used inside of your custom
218
+ components to get access to the library configuration, or the current flow.
176
219
 
220
+ **Example:**
221
+
222
+ ```tsx
223
+ import { Registration } from "@ory/elements-react/theme"
224
+
225
+ function CustomCardHeader() {
226
+ const { flowType } = useOryFlow()
227
+
228
+ return <div>My Custom {flowType} Card header</div>
229
+ }
230
+
231
+ export default async function RegistrationPage({ searchParams }: PageProps) {
232
+ const flow = await getOrCreateRegistrationFlow(searchParams)
233
+
234
+ if (!flow) {
235
+ return <div>Flow not found</div>
236
+ }
237
+
238
+ return (
239
+ <Registration
240
+ flow={flow}
241
+ config={oryConfiguration}
242
+ components={{
243
+ Card: {
244
+ CardHeader: CustomCardHeader,
245
+ },
246
+ }}
247
+ />
248
+ )
249
+ }
177
250
  ```
178
- npx nx run @ory/elements-react:dev
179
- ```
251
+
252
+ ## Development
253
+
254
+ See [DEVELOPMENT.md](./DEVELOPMENT.md).
@@ -0,0 +1,21 @@
1
+ /**
2
+ * This function returns the base URL of the Ory SDK as set by environment variables `NEXT_PUBLIC_ORY_SDK_URL` or `ORY_SDK_URL`.
3
+ */
4
+ declare function orySdkUrl(): string;
5
+ /**
6
+ * This function returns whether the current environment is a production environment.
7
+ */
8
+ declare function isProduction(): boolean;
9
+ /**
10
+ * This function returns the Ory SDK URL. If the environment is not production, it tries to guess the SDK URL based on the environment variables, assuming
11
+ * that Ory APIs are proxied through the same domain as the application.
12
+ *
13
+ * Currently, this is only tested for Vercel deployments.
14
+ *
15
+ * @param options - Options for guessing the SDK URL.
16
+ */
17
+ declare function guessPotentiallyProxiedOrySdkUrl(options?: {
18
+ knownProxiedUrl?: string;
19
+ }): string;
20
+
21
+ export { guessPotentiallyProxiedOrySdkUrl, isProduction, orySdkUrl };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * This function returns the base URL of the Ory SDK as set by environment variables `NEXT_PUBLIC_ORY_SDK_URL` or `ORY_SDK_URL`.
3
+ */
4
+ declare function orySdkUrl(): string;
5
+ /**
6
+ * This function returns whether the current environment is a production environment.
7
+ */
8
+ declare function isProduction(): boolean;
9
+ /**
10
+ * This function returns the Ory SDK URL. If the environment is not production, it tries to guess the SDK URL based on the environment variables, assuming
11
+ * that Ory APIs are proxied through the same domain as the application.
12
+ *
13
+ * Currently, this is only tested for Vercel deployments.
14
+ *
15
+ * @param options - Options for guessing the SDK URL.
16
+ */
17
+ declare function guessPotentiallyProxiedOrySdkUrl(options?: {
18
+ knownProxiedUrl?: string;
19
+ }): string;
20
+
21
+ export { guessPotentiallyProxiedOrySdkUrl, isProduction, orySdkUrl };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var config_exports = {};
20
+ __export(config_exports, {
21
+ guessPotentiallyProxiedOrySdkUrl: () => guessPotentiallyProxiedOrySdkUrl,
22
+ isProduction: () => isProduction,
23
+ orySdkUrl: () => orySdkUrl
24
+ });
25
+ module.exports = __toCommonJS(config_exports);
26
+ function orySdkUrl() {
27
+ let baseUrl;
28
+ if (process.env.NEXT_PUBLIC_ORY_SDK_URL) {
29
+ baseUrl = process.env.NEXT_PUBLIC_ORY_SDK_URL;
30
+ }
31
+ if (process.env.ORY_SDK_URL) {
32
+ baseUrl = process.env._ORY_SDK_URL;
33
+ }
34
+ if (!baseUrl) {
35
+ throw new Error(
36
+ "You need to set environment variable `NEXT_PUBLIC_ORY_SDK_URL` or if you don't use Next.js `ORY_SDK_URL` to your Ory Network SDK URL."
37
+ );
38
+ }
39
+ return baseUrl.replace(/\/$/, "");
40
+ }
41
+ function isProduction() {
42
+ var _a, _b;
43
+ return ["production", "prod"].indexOf(
44
+ (_b = (_a = process.env.VERCEL_ENV) != null ? _a : process.env.NODE_ENV) != null ? _b : ""
45
+ ) > -1;
46
+ }
47
+ function guessPotentiallyProxiedOrySdkUrl(options) {
48
+ if (isProduction()) {
49
+ return orySdkUrl();
50
+ }
51
+ if (process.env.VERCEL_ENV) {
52
+ if (!isProduction() && process.env.VERCEL_URL) {
53
+ return `https://${process.env.VERCEL_URL}`.replace(/\/$/, "");
54
+ }
55
+ if (process.env.__NEXT_PRIVATE_ORIGIN) {
56
+ return process.env.__NEXT_PRIVATE_ORIGIN.replace(/\/$/, "");
57
+ }
58
+ }
59
+ if (typeof window !== "undefined") {
60
+ return window.location.origin;
61
+ }
62
+ if (options == null ? void 0 : options.knownProxiedUrl) {
63
+ return options.knownProxiedUrl;
64
+ }
65
+ const final = orySdkUrl();
66
+ console.warn(
67
+ `Unable to determine a suitable SDK URL for setting up the Next.js integration of Ory Elements. Will proceed using default Ory SDK URL "${final}". This is likely not what you want for local development and your authentication and login may not work.`
68
+ );
69
+ return final;
70
+ }
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ guessPotentiallyProxiedOrySdkUrl,
74
+ isProduction,
75
+ orySdkUrl
76
+ });
77
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/config.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This function returns the base URL of the Ory SDK as set by environment variables `NEXT_PUBLIC_ORY_SDK_URL` or `ORY_SDK_URL`.\n */\nexport function orySdkUrl() {\n let baseUrl\n\n if (process.env.NEXT_PUBLIC_ORY_SDK_URL) {\n baseUrl = process.env.NEXT_PUBLIC_ORY_SDK_URL\n }\n\n if (process.env.ORY_SDK_URL) {\n baseUrl = process.env._ORY_SDK_URL\n }\n\n if (!baseUrl) {\n throw new Error(\n \"You need to set environment variable `NEXT_PUBLIC_ORY_SDK_URL` or if you don't use Next.js `ORY_SDK_URL` to your Ory Network SDK URL.\",\n )\n }\n\n return baseUrl.replace(/\\/$/, \"\")\n}\n\n/**\n * This function returns whether the current environment is a production environment.\n */\nexport function isProduction() {\n return (\n [\"production\", \"prod\"].indexOf(\n process.env.VERCEL_ENV ?? process.env.NODE_ENV ?? \"\",\n ) > -1\n )\n}\n\n/**\n * This function returns the Ory SDK URL. If the environment is not production, it tries to guess the SDK URL based on the environment variables, assuming\n * that Ory APIs are proxied through the same domain as the application.\n *\n * Currently, this is only tested for Vercel deployments.\n *\n * @param options - Options for guessing the SDK URL.\n */\nexport function guessPotentiallyProxiedOrySdkUrl(options?: {\n knownProxiedUrl?: string\n}) {\n if (isProduction()) {\n // In production, we use the production custom domain\n return orySdkUrl()\n }\n\n if (process.env.VERCEL_ENV) {\n // We are in vercel\n\n // The domain name of the generated deployment URL. Example: *.vercel.app. The value does not include the protocol scheme https://.\n //\n // This is only available for preview deployments on Vercel.\n if (!isProduction() && process.env.VERCEL_URL) {\n return `https://${process.env.VERCEL_URL}`.replace(/\\/$/, \"\")\n }\n\n // This is sometimes set by the render server.\n if (process.env.__NEXT_PRIVATE_ORIGIN) {\n return process.env.__NEXT_PRIVATE_ORIGIN.replace(/\\/$/, \"\")\n }\n }\n\n // Unable to figure out the SDK URL. Either because we are not using Vercel or because we are on a local machine.\n // Let's try to use the window location.\n if (typeof window !== \"undefined\") {\n return window.location.origin\n }\n\n if (options?.knownProxiedUrl) {\n return options.knownProxiedUrl\n }\n\n // We tried everything. Let's use the SDK URL.\n const final = orySdkUrl()\n console.warn(\n `Unable to determine a suitable SDK URL for setting up the Next.js integration of Ory Elements. Will proceed using default Ory SDK URL \"${final}\". This is likely not what you want for local development and your authentication and login may not work.`,\n )\n\n return final\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,SAAS,YAAY;AAC1B,MAAI;AAEJ,MAAI,QAAQ,IAAI,yBAAyB;AACvC,cAAU,QAAQ,IAAI;AAAA,EACxB;AAEA,MAAI,QAAQ,IAAI,aAAa;AAC3B,cAAU,QAAQ,IAAI;AAAA,EACxB;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,QAAQ,OAAO,EAAE;AAClC;AAKO,SAAS,eAAe;AA7B/B;AA8BE,SACE,CAAC,cAAc,MAAM,EAAE;AAAA,KACrB,mBAAQ,IAAI,eAAZ,YAA0B,QAAQ,IAAI,aAAtC,YAAkD;AAAA,EACpD,IAAI;AAER;AAUO,SAAS,iCAAiC,SAE9C;AACD,MAAI,aAAa,GAAG;AAElB,WAAO,UAAU;AAAA,EACnB;AAEA,MAAI,QAAQ,IAAI,YAAY;AAM1B,QAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,YAAY;AAC7C,aAAO,WAAW,QAAQ,IAAI,UAAU,GAAG,QAAQ,OAAO,EAAE;AAAA,IAC9D;AAGA,QAAI,QAAQ,IAAI,uBAAuB;AACrC,aAAO,QAAQ,IAAI,sBAAsB,QAAQ,OAAO,EAAE;AAAA,IAC5D;AAAA,EACF;AAIA,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,OAAO,SAAS;AAAA,EACzB;AAEA,MAAI,mCAAS,iBAAiB;AAC5B,WAAO,QAAQ;AAAA,EACjB;AAGA,QAAM,QAAQ,UAAU;AACxB,UAAQ;AAAA,IACN,0IAA0I,KAAK;AAAA,EACjJ;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,51 @@
1
+ function orySdkUrl() {
2
+ let baseUrl;
3
+ if (process.env.NEXT_PUBLIC_ORY_SDK_URL) {
4
+ baseUrl = process.env.NEXT_PUBLIC_ORY_SDK_URL;
5
+ }
6
+ if (process.env.ORY_SDK_URL) {
7
+ baseUrl = process.env._ORY_SDK_URL;
8
+ }
9
+ if (!baseUrl) {
10
+ throw new Error(
11
+ "You need to set environment variable `NEXT_PUBLIC_ORY_SDK_URL` or if you don't use Next.js `ORY_SDK_URL` to your Ory Network SDK URL."
12
+ );
13
+ }
14
+ return baseUrl.replace(/\/$/, "");
15
+ }
16
+ function isProduction() {
17
+ var _a, _b;
18
+ return ["production", "prod"].indexOf(
19
+ (_b = (_a = process.env.VERCEL_ENV) != null ? _a : process.env.NODE_ENV) != null ? _b : ""
20
+ ) > -1;
21
+ }
22
+ function guessPotentiallyProxiedOrySdkUrl(options) {
23
+ if (isProduction()) {
24
+ return orySdkUrl();
25
+ }
26
+ if (process.env.VERCEL_ENV) {
27
+ if (!isProduction() && process.env.VERCEL_URL) {
28
+ return `https://${process.env.VERCEL_URL}`.replace(/\/$/, "");
29
+ }
30
+ if (process.env.__NEXT_PRIVATE_ORIGIN) {
31
+ return process.env.__NEXT_PRIVATE_ORIGIN.replace(/\/$/, "");
32
+ }
33
+ }
34
+ if (typeof window !== "undefined") {
35
+ return window.location.origin;
36
+ }
37
+ if (options == null ? void 0 : options.knownProxiedUrl) {
38
+ return options.knownProxiedUrl;
39
+ }
40
+ const final = orySdkUrl();
41
+ console.warn(
42
+ `Unable to determine a suitable SDK URL for setting up the Next.js integration of Ory Elements. Will proceed using default Ory SDK URL "${final}". This is likely not what you want for local development and your authentication and login may not work.`
43
+ );
44
+ return final;
45
+ }
46
+ export {
47
+ guessPotentiallyProxiedOrySdkUrl,
48
+ isProduction,
49
+ orySdkUrl
50
+ };
51
+ //# sourceMappingURL=config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/config.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This function returns the base URL of the Ory SDK as set by environment variables `NEXT_PUBLIC_ORY_SDK_URL` or `ORY_SDK_URL`.\n */\nexport function orySdkUrl() {\n let baseUrl\n\n if (process.env.NEXT_PUBLIC_ORY_SDK_URL) {\n baseUrl = process.env.NEXT_PUBLIC_ORY_SDK_URL\n }\n\n if (process.env.ORY_SDK_URL) {\n baseUrl = process.env._ORY_SDK_URL\n }\n\n if (!baseUrl) {\n throw new Error(\n \"You need to set environment variable `NEXT_PUBLIC_ORY_SDK_URL` or if you don't use Next.js `ORY_SDK_URL` to your Ory Network SDK URL.\",\n )\n }\n\n return baseUrl.replace(/\\/$/, \"\")\n}\n\n/**\n * This function returns whether the current environment is a production environment.\n */\nexport function isProduction() {\n return (\n [\"production\", \"prod\"].indexOf(\n process.env.VERCEL_ENV ?? process.env.NODE_ENV ?? \"\",\n ) > -1\n )\n}\n\n/**\n * This function returns the Ory SDK URL. If the environment is not production, it tries to guess the SDK URL based on the environment variables, assuming\n * that Ory APIs are proxied through the same domain as the application.\n *\n * Currently, this is only tested for Vercel deployments.\n *\n * @param options - Options for guessing the SDK URL.\n */\nexport function guessPotentiallyProxiedOrySdkUrl(options?: {\n knownProxiedUrl?: string\n}) {\n if (isProduction()) {\n // In production, we use the production custom domain\n return orySdkUrl()\n }\n\n if (process.env.VERCEL_ENV) {\n // We are in vercel\n\n // The domain name of the generated deployment URL. Example: *.vercel.app. The value does not include the protocol scheme https://.\n //\n // This is only available for preview deployments on Vercel.\n if (!isProduction() && process.env.VERCEL_URL) {\n return `https://${process.env.VERCEL_URL}`.replace(/\\/$/, \"\")\n }\n\n // This is sometimes set by the render server.\n if (process.env.__NEXT_PRIVATE_ORIGIN) {\n return process.env.__NEXT_PRIVATE_ORIGIN.replace(/\\/$/, \"\")\n }\n }\n\n // Unable to figure out the SDK URL. Either because we are not using Vercel or because we are on a local machine.\n // Let's try to use the window location.\n if (typeof window !== \"undefined\") {\n return window.location.origin\n }\n\n if (options?.knownProxiedUrl) {\n return options.knownProxiedUrl\n }\n\n // We tried everything. Let's use the SDK URL.\n const final = orySdkUrl()\n console.warn(\n `Unable to determine a suitable SDK URL for setting up the Next.js integration of Ory Elements. Will proceed using default Ory SDK URL \"${final}\". This is likely not what you want for local development and your authentication and login may not work.`,\n )\n\n return final\n}\n"],"mappings":"AAMO,SAAS,YAAY;AAC1B,MAAI;AAEJ,MAAI,QAAQ,IAAI,yBAAyB;AACvC,cAAU,QAAQ,IAAI;AAAA,EACxB;AAEA,MAAI,QAAQ,IAAI,aAAa;AAC3B,cAAU,QAAQ,IAAI;AAAA,EACxB;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,QAAQ,QAAQ,OAAO,EAAE;AAClC;AAKO,SAAS,eAAe;AA7B/B;AA8BE,SACE,CAAC,cAAc,MAAM,EAAE;AAAA,KACrB,mBAAQ,IAAI,eAAZ,YAA0B,QAAQ,IAAI,aAAtC,YAAkD;AAAA,EACpD,IAAI;AAER;AAUO,SAAS,iCAAiC,SAE9C;AACD,MAAI,aAAa,GAAG;AAElB,WAAO,UAAU;AAAA,EACnB;AAEA,MAAI,QAAQ,IAAI,YAAY;AAM1B,QAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,YAAY;AAC7C,aAAO,WAAW,QAAQ,IAAI,UAAU,GAAG,QAAQ,OAAO,EAAE;AAAA,IAC9D;AAGA,QAAI,QAAQ,IAAI,uBAAuB;AACrC,aAAO,QAAQ,IAAI,sBAAsB,QAAQ,OAAO,EAAE;AAAA,IAC5D;AAAA,EACF;AAIA,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,OAAO,SAAS;AAAA,EACzB;AAEA,MAAI,mCAAS,iBAAiB;AAC5B,WAAO,QAAQ;AAAA,EACjB;AAGA,QAAM,QAAQ,UAAU;AACxB,UAAQ;AAAA,IACN,0IAA0I,KAAK;AAAA,EACjJ;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,7 @@
1
+ import { ConfigurationParameters, FrontendApi } from '@ory/client-fetch';
2
+
3
+ declare function frontendClient({ forceBaseUrl, ...opts }?: Partial<ConfigurationParameters & {
4
+ forceBaseUrl?: string;
5
+ }>): FrontendApi;
6
+
7
+ export { frontendClient };
@@ -0,0 +1,7 @@
1
+ import { ConfigurationParameters, FrontendApi } from '@ory/client-fetch';
2
+
3
+ declare function frontendClient({ forceBaseUrl, ...opts }?: Partial<ConfigurationParameters & {
4
+ forceBaseUrl?: string;
5
+ }>): FrontendApi;
6
+
7
+ export { frontendClient };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var frontendClient_exports = {};
21
+ __export(frontendClient_exports, {
22
+ frontendClient: () => frontendClient
23
+ });
24
+ module.exports = __toCommonJS(frontendClient_exports);
25
+ var import_client_fetch = require("@ory/client-fetch");
26
+ var import_config = require("./config");
27
+ function frontendClient({
28
+ forceBaseUrl,
29
+ ...opts
30
+ } = {
31
+ credentials: "include"
32
+ }) {
33
+ var _a;
34
+ const basePath = forceBaseUrl != null ? forceBaseUrl : (0, import_config.guessPotentiallyProxiedOrySdkUrl)({
35
+ knownProxiedUrl: window.location.origin
36
+ });
37
+ const config = new import_client_fetch.Configuration({
38
+ ...opts,
39
+ basePath: basePath == null ? void 0 : basePath.replace(/\/$/, ""),
40
+ credentials: (_a = opts.credentials) != null ? _a : "include",
41
+ headers: {
42
+ Accept: "application/json",
43
+ ...opts.headers
44
+ }
45
+ });
46
+ return new import_client_fetch.FrontendApi(config);
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ frontendClient
51
+ });
52
+ //# sourceMappingURL=frontendClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/frontendClient.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\nimport {\n Configuration,\n ConfigurationParameters,\n FrontendApi,\n} from \"@ory/client-fetch\"\nimport { guessPotentiallyProxiedOrySdkUrl } from \"./config\"\n\nexport function frontendClient(\n {\n forceBaseUrl,\n ...opts\n }: Partial<ConfigurationParameters & { forceBaseUrl?: string }> = {\n credentials: \"include\",\n },\n) {\n const basePath =\n forceBaseUrl ??\n guessPotentiallyProxiedOrySdkUrl({\n knownProxiedUrl: window.location.origin,\n })\n\n const config = new Configuration({\n ...opts,\n basePath: basePath?.replace(/\\/$/, \"\"),\n credentials: opts.credentials ?? \"include\",\n headers: {\n Accept: \"application/json\",\n ...opts.headers,\n },\n })\n return new FrontendApi(config)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,0BAIO;AACP,oBAAiD;AAE1C,SAAS,eACd;AAAA,EACE;AAAA,EACA,GAAG;AACL,IAAkE;AAAA,EAChE,aAAa;AACf,GACA;AAjBF;AAkBE,QAAM,WACJ,0CACA,gDAAiC;AAAA,IAC/B,iBAAiB,OAAO,SAAS;AAAA,EACnC,CAAC;AAEH,QAAM,SAAS,IAAI,kCAAc;AAAA,IAC/B,GAAG;AAAA,IACH,UAAU,qCAAU,QAAQ,OAAO;AAAA,IACnC,cAAa,UAAK,gBAAL,YAAoB;AAAA,IACjC,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAAA,EACF,CAAC;AACD,SAAO,IAAI,gCAAY,MAAM;AAC/B;","names":[]}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import {
3
+ Configuration,
4
+ FrontendApi
5
+ } from "@ory/client-fetch";
6
+ import { guessPotentiallyProxiedOrySdkUrl } from "./config";
7
+ function frontendClient({
8
+ forceBaseUrl,
9
+ ...opts
10
+ } = {
11
+ credentials: "include"
12
+ }) {
13
+ var _a;
14
+ const basePath = forceBaseUrl != null ? forceBaseUrl : guessPotentiallyProxiedOrySdkUrl({
15
+ knownProxiedUrl: window.location.origin
16
+ });
17
+ const config = new Configuration({
18
+ ...opts,
19
+ basePath: basePath == null ? void 0 : basePath.replace(/\/$/, ""),
20
+ credentials: (_a = opts.credentials) != null ? _a : "include",
21
+ headers: {
22
+ Accept: "application/json",
23
+ ...opts.headers
24
+ }
25
+ });
26
+ return new FrontendApi(config);
27
+ }
28
+ export {
29
+ frontendClient
30
+ };
31
+ //# sourceMappingURL=frontendClient.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/frontendClient.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\nimport {\n Configuration,\n ConfigurationParameters,\n FrontendApi,\n} from \"@ory/client-fetch\"\nimport { guessPotentiallyProxiedOrySdkUrl } from \"./config\"\n\nexport function frontendClient(\n {\n forceBaseUrl,\n ...opts\n }: Partial<ConfigurationParameters & { forceBaseUrl?: string }> = {\n credentials: \"include\",\n },\n) {\n const basePath =\n forceBaseUrl ??\n guessPotentiallyProxiedOrySdkUrl({\n knownProxiedUrl: window.location.origin,\n })\n\n const config = new Configuration({\n ...opts,\n basePath: basePath?.replace(/\\/$/, \"\"),\n credentials: opts.credentials ?? \"include\",\n headers: {\n Accept: \"application/json\",\n ...opts.headers,\n },\n })\n return new FrontendApi(config)\n}\n"],"mappings":";AAGA;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,wCAAwC;AAE1C,SAAS,eACd;AAAA,EACE;AAAA,EACA,GAAG;AACL,IAAkE;AAAA,EAChE,aAAa;AACf,GACA;AAjBF;AAkBE,QAAM,WACJ,sCACA,iCAAiC;AAAA,IAC/B,iBAAiB,OAAO,SAAS;AAAA,EACnC,CAAC;AAEH,QAAM,SAAS,IAAI,cAAc;AAAA,IAC/B,GAAG;AAAA,IACH,UAAU,qCAAU,QAAQ,OAAO;AAAA,IACnC,cAAa,UAAK,gBAAL,YAAoB;AAAA,IACjC,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,GAAG,KAAK;AAAA,IACV;AAAA,EACF,CAAC;AACD,SAAO,IAAI,YAAY,MAAM;AAC/B;","names":[]}
@@ -0,0 +1,5 @@
1
+ export { SessionContextData, SessionProvider, SessionProviderProps } from './session-provider.mjs';
2
+ export { useSession } from './useSession.mjs';
3
+ import 'react/jsx-runtime';
4
+ import 'react';
5
+ import '@ory/client-fetch';
@@ -0,0 +1,5 @@
1
+ export { SessionContextData, SessionProvider, SessionProviderProps } from './session-provider.js';
2
+ export { useSession } from './useSession.js';
3
+ import 'react/jsx-runtime';
4
+ import 'react';
5
+ import '@ory/client-fetch';
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var client_exports = {};
21
+ __export(client_exports, {
22
+ SessionProvider: () => import_session_provider.SessionProvider,
23
+ useSession: () => import_useSession.useSession
24
+ });
25
+ module.exports = __toCommonJS(client_exports);
26
+ var import_session_provider = require("./session-provider");
27
+ var import_useSession = require("./useSession");
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ SessionProvider,
31
+ useSession
32
+ });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/index.ts"],"sourcesContent":["\"use client\"\n// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n SessionProvider,\n type SessionContextData,\n type SessionProviderProps,\n} from \"./session-provider\"\nexport { useSession } from \"./useSession\"\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,8BAIO;AACP,wBAA2B;","names":[]}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import {
3
+ SessionProvider
4
+ } from "./session-provider";
5
+ import { useSession } from "./useSession";
6
+ export {
7
+ SessionProvider,
8
+ useSession
9
+ };
10
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/client/index.ts"],"sourcesContent":["\"use client\"\n// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\nexport {\n SessionProvider,\n type SessionContextData,\n type SessionProviderProps,\n} from \"./session-provider\"\nexport { useSession } from \"./useSession\"\n"],"mappings":";AAIA;AAAA,EACE;AAAA,OAGK;AACP,SAAS,kBAAkB;","names":[]}
@@ -0,0 +1,62 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { Session } from '@ory/client-fetch';
4
+
5
+ type SessionContextData = {
6
+ /**
7
+ * Whether the session is currently being loaded
8
+ */
9
+ isLoading: boolean;
10
+ /**
11
+ * Whether the session is being loaded for the first time
12
+ * Never true, if a session was passed to the provider
13
+ */
14
+ initialized: boolean;
15
+ /**
16
+ * The current session or null if the user is not authenticated or an error occurred,
17
+ * when fetching the session
18
+ */
19
+ session: Session | null;
20
+ /**
21
+ * The error that occurred when fetching the session if any
22
+ */
23
+ error: Error | undefined;
24
+ /**
25
+ * Refetches the session
26
+ */
27
+ refetch: () => Promise<void>;
28
+ };
29
+ declare const SessionContext: react.Context<SessionContextData>;
30
+ type SessionProviderProps = {
31
+ session?: Session | null;
32
+ baseUrl?: string;
33
+ } & React.PropsWithChildren;
34
+ /**
35
+ * A provider that fetches the session from the Ory Network and provides it to the children.
36
+ *
37
+ * To use this provider, wrap your application in it:
38
+ *
39
+ * ```tsx
40
+ * import { SessionProvider } from "@ory/elements-react"
41
+ *
42
+ * export default function App() {
43
+ * return (
44
+ * <SessionProvider>
45
+ * <MyApp />
46
+ * </SessionProvider>
47
+ * )
48
+ * }
49
+ * ```
50
+ *
51
+ * If you have a session from the server, you can pass it to the provider:
52
+ *
53
+ * ```tsx
54
+ * <SessionProvider session={serverSession}>
55
+ * ```
56
+ *
57
+ * @see {@link useSession}
58
+ * @param props - The provider props
59
+ */
60
+ declare function SessionProvider({ session: initialSession, children, baseUrl, }: SessionProviderProps): react_jsx_runtime.JSX.Element;
61
+
62
+ export { SessionContext, type SessionContextData, SessionProvider, type SessionProviderProps };