@ory/elements-react 0.0.0-pr.2c76cc9 → 0.0.0-pr.2e82b68

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/CHANGELOG.md CHANGED
@@ -1,3 +1,70 @@
1
+ ## 1.0.0-rc.0 (2025-04-17)
2
+
3
+ ### 🚀 Features
4
+
5
+ - add missing translations for de, es and fr ([#456](https://github.com/ory/elements/pull/456))
6
+
7
+ ### 🩹 Fixes
8
+
9
+ - correctly set input field value ([#447](https://github.com/ory/elements/pull/447))
10
+ - add missing settings padding ([#446](https://github.com/ory/elements/pull/446))
11
+ - always omit conflicting keys ([#444](https://github.com/ory/elements/pull/444))
12
+
13
+ ### ❤️ Thank You
14
+
15
+ - hackerman @aeneasr
16
+ - Jonas Hungershausen
17
+
18
+ ## 1.0.0-next.46 (2025-04-16)
19
+
20
+ ### 🩹 Fixes
21
+
22
+ - missing hidden field regression ([#439](https://github.com/ory/elements/pull/439))
23
+ - use correct testid ([#438](https://github.com/ory/elements/pull/438))
24
+
25
+ ### ❤️ Thank You
26
+
27
+ - hackerman @aeneasr
28
+
29
+ ## 1.0.0-next.45 (2025-04-15)
30
+
31
+ ### 🩹 Fixes
32
+
33
+ - add missing test id to scope checkbox label ([#437](https://github.com/ory/elements/pull/437))
34
+ - add missing captcha group to all methods ([#432](https://github.com/ory/elements/pull/432))
35
+
36
+ ### ❤️ Thank You
37
+
38
+ - hackerman @aeneasr
39
+ - Jonas Hungershausen
40
+
41
+ ## 1.0.0-next.44 (2025-04-10)
42
+
43
+ ### 🩹 Fixes
44
+
45
+ - use currentColor in eye icons ([#433](https://github.com/ory/elements/pull/433))
46
+
47
+ ### ❤️ Thank You
48
+
49
+ - Jonas Hungershausen
50
+
51
+ ## 1.0.0-next.43 (2025-04-10)
52
+
53
+ ### 🚀 Features
54
+
55
+ - add missing French translations ([#401](https://github.com/ory/elements/pull/401))
56
+
57
+ ### 🩹 Fixes
58
+
59
+ - two-step registration back button ([#428](https://github.com/ory/elements/pull/428))
60
+ - resolve wcag2aa color contrast issues ([#367](https://github.com/ory/elements/pull/367))
61
+
62
+ ### ❤️ Thank You
63
+
64
+ - hackerman @aeneasr
65
+ - Jonas Hungershausen
66
+ - Jordan Labrosse
67
+
1
68
  ## 1.0.0-next.41 (2025-04-07)
2
69
 
3
70
  ### 🩹 Fixes
package/README.md CHANGED
@@ -202,16 +202,243 @@ import "@ory/elements-react/theme/styles.css"
202
202
 
203
203
  ### Theming
204
204
 
205
- Most styling can be overwritten, by providing your own custom CSS variables:
205
+ The styling for specific elements or groups of elements in the UI can be
206
+ overwritten by providing your own custom CSS variables. For more complex
207
+ customizations see the [Component System](#component-system).
206
208
 
207
209
  ```css
208
210
  :root {
209
- /* To override the text color of the primary buttons */
210
- --button-primary-fg-default: #fffeee;
211
+ /* primitives */
212
+ /* Overriding these may affect more variables "down stream" */
213
+ --ui-100: #f1f5f9;
214
+ --ui-200: #e2e8f0;
215
+ --ui-300: #cbd5e1;
216
+ --ui-400: #94a3b8;
217
+ --ui-50: #f8fafc;
218
+ --ui-500: #64748b;
219
+ --ui-600: #475569;
220
+ --ui-700: #334155;
221
+ --ui-800: #1e293b;
222
+ --ui-900: #0f172a;
223
+ --ui-950: #020617;
224
+ --ui-black: #000000;
225
+ --ui-danger: #dc2626;
226
+ --ui-success: #22c55e;
227
+ --ui-transparent: #ffffff00;
228
+ --ui-warning: #eab308;
229
+ --ui-white: #ffffff;
230
+ /* primitives end */
231
+
232
+ /* brand */
233
+ --brand-100: var(--ui-100);
234
+ --brand-200: var(--ui-300);
235
+ --brand-300: var(--ui-500);
236
+ --brand-400: var(--ui-700);
237
+ --brand-50: var(--ui-50);
238
+ --brand-500: var(--ui-900);
239
+ --brand-600: var(--ui-white);
240
+ --brand-700: var(--ui-200);
241
+ --brand-800: var(--ui-400);
242
+ --brand-900: var(--ui-600);
243
+ --brand-950: var(--ui-800);
244
+ /* brand end */
245
+
246
+ /* interface */
247
+ /* These variables affect "groups" of variables, and are re-used in the more specific variables below */
248
+ --interface-background-brand-primary: var(--brand-500);
249
+ --interface-background-brand-primary-hover: var(--brand-400);
250
+ --interface-background-brand-secondary: var(--brand-50);
251
+ --interface-background-brand-secondary-hover: var(--brand-100);
252
+ --interface-background-default-inverted: var(--ui-900);
253
+ --interface-background-default-inverted-hover: var(--ui-800);
254
+ --interface-background-default-none: var(--ui-transparent);
255
+ --interface-background-default-primary: var(--ui-white);
256
+ --interface-background-default-primary-hover: var(--ui-50);
257
+ --interface-background-default-secondary: var(--ui-50);
258
+ --interface-background-default-secondary-hover: var(--ui-200);
259
+ --interface-background-default-tertiary: var(--ui-200);
260
+ --interface-background-default-tertiary-hover: var(--ui-300);
261
+ --interface-background-disabled-disabled: var(--ui-200);
262
+ --interface-background-validation-danger: var(--ui-danger);
263
+ --interface-background-validation-success: var(--ui-success);
264
+ --interface-background-validation-warning: var(--ui-warning);
265
+ --interface-border-brand-brand: var(--brand-500);
266
+ --interface-border-default-inverted: var(--ui-700);
267
+ --interface-border-default-none: var(--ui-transparent);
268
+ --interface-border-default-primary: var(--ui-300);
269
+ --interface-border-disabled-disabled: var(--ui-300);
270
+ --interface-border-validation-danger: var(--ui-danger);
271
+ --interface-border-validation-success: var(--ui-success);
272
+ --interface-border-validation-warning: var(--ui-warning);
273
+ --interface-foreground-brand-on-primary: var(--brand-50);
274
+ --interface-foreground-brand-on-secondary: var(--brand-950);
275
+ --interface-foreground-brand-primary: var(--brand-500);
276
+ --interface-foreground-brand-secondary: var(--brand-50);
277
+ --interface-foreground-default-inverted: var(--ui-white);
278
+ --interface-foreground-default-primary: var(--ui-900);
279
+ --interface-foreground-default-secondary: var(--ui-700);
280
+ --interface-foreground-default-tertiary: var(--ui-500);
281
+ --interface-foreground-disabled-disabled: var(--ui-300);
282
+ --interface-foreground-disabled-on-disabled: var(--ui-400);
283
+ --interface-foreground-validation-danger: var(--ui-danger);
284
+ --interface-foreground-validation-success: var(--ui-success);
285
+ --interface-foreground-validation-warning: var(--ui-warning);
286
+ /* interface end */
287
+
288
+ /* Specific elements */
289
+ --button-identifier-background-default: var(
290
+ --interface-background-brand-secondary
291
+ );
292
+ --button-identifier-background-hover: var(
293
+ --interface-background-brand-secondary-hover
294
+ );
295
+ --button-identifier-border-border-default: var(
296
+ --interface-border-brand-brand
297
+ );
298
+ --button-identifier-border-border-hover: var(--interface-border-brand-brand);
299
+ --button-identifier-foreground-default: var(
300
+ --interface-foreground-brand-on-secondary
301
+ );
302
+ --button-identifier-foreground-hover: var(
303
+ --interface-foreground-brand-on-secondary
304
+ );
305
+ --button-link-brand-brand: var(--interface-foreground-brand-primary);
306
+ --button-link-brand-brand-hover: var(--interface-foreground-default-primary);
307
+ --button-link-default-primary: var(--interface-foreground-default-primary);
308
+ --button-link-default-primary-hover: var(
309
+ --interface-foreground-brand-primary
310
+ );
311
+ --button-link-default-secondary: var(
312
+ --interface-foreground-default-secondary
313
+ );
314
+ --button-link-default-secondary-hover: var(
315
+ --interface-foreground-default-tertiary
316
+ );
317
+ --button-link-disabled-disabled: var(
318
+ --interface-foreground-disabled-disabled
319
+ );
320
+ --button-primary-background-default: var(
321
+ --interface-background-brand-primary
322
+ );
323
+ --button-primary-background-disabled: var(
324
+ --interface-background-disabled-disabled
325
+ );
326
+ --button-primary-background-hover: var(
327
+ --interface-background-brand-primary-hover
328
+ );
329
+ --button-primary-border-default: var(--interface-border-default-none);
330
+ --button-primary-border-disabled: var(--interface-border-disabled-disabled);
331
+ --button-primary-border-hover: var(--interface-border-default-none);
332
+ --button-primary-foreground-default: var(
333
+ --interface-foreground-brand-on-primary
334
+ );
335
+ --button-primary-foreground-disabled: var(
336
+ --interface-foreground-disabled-on-disabled
337
+ );
338
+ --button-primary-foreground-hover: var(
339
+ --interface-foreground-brand-on-primary
340
+ );
341
+ --button-secondary-background-default: var(
342
+ --interface-background-default-primary
343
+ );
344
+ --button-secondary-background-disabled: var(
345
+ --interface-background-disabled-disabled
346
+ );
347
+ --button-secondary-background-hover: var(
348
+ --interface-background-default-primary-hover
349
+ );
350
+ --button-secondary-border-default: var(--interface-border-default-primary);
351
+ --button-secondary-border-disabled: var(--interface-border-disabled-disabled);
352
+ --button-secondary-border-hover: var(--interface-border-default-primary);
353
+ --button-secondary-foreground-default: var(
354
+ --interface-foreground-default-primary
355
+ );
356
+ --button-secondary-foreground-disabled: var(
357
+ --interface-foreground-disabled-on-disabled
358
+ );
359
+ --button-secondary-foreground-hover: var(
360
+ --interface-foreground-default-secondary
361
+ );
362
+ --button-social-background-default: var(
363
+ --interface-background-default-primary
364
+ );
365
+ --button-social-background-disabled: var(
366
+ --interface-background-disabled-disabled
367
+ );
368
+ --button-social-background-generic-provider: var(
369
+ --interface-background-default-inverted
370
+ );
371
+ --button-social-background-hover: var(
372
+ --interface-background-default-primary-hover
373
+ );
374
+ --button-social-border-default: var(--interface-border-default-primary);
375
+ --button-social-border-disabled: var(--interface-border-disabled-disabled);
376
+ --button-social-border-generic-provider: var(--interface-border-default-none);
377
+ --button-social-border-hover: var(--interface-border-default-primary);
378
+ --button-social-foreground-default: var(
379
+ --interface-foreground-default-primary
380
+ );
381
+ --button-social-foreground-disabled: var(
382
+ --interface-foreground-disabled-on-disabled
383
+ );
384
+ --button-social-foreground-generic-provider: var(
385
+ --interface-foreground-default-inverted
386
+ );
387
+ --button-social-foreground-hover: var(
388
+ --interface-foreground-default-secondary
389
+ );
390
+ --checkbox-background-checked: var(--interface-background-brand-primary);
391
+ --checkbox-background-default: var(--interface-background-default-secondary);
392
+ --checkbox-border-checkbox-border-checked: var(
393
+ --interface-border-brand-brand
394
+ );
395
+ --checkbox-border-checkbox-border-default: var(
396
+ --interface-border-default-primary
397
+ );
398
+ --checkbox-foreground-checked: var(--interface-foreground-brand-on-primary);
399
+ --checkbox-foreground-default: var(--interface-foreground-default-primary);
400
+ --form-background-default: var(--interface-background-default-primary);
401
+ --form-border-default: var(--interface-border-default-primary);
402
+ --input-background-default: var(--interface-background-default-primary);
403
+ --input-background-disabled: var(--interface-background-disabled-disabled);
404
+ --input-background-hover: var(--interface-background-default-primary-hover);
405
+ --input-border-default: var(--interface-border-default-primary);
406
+ --input-border-disabled: var(--interface-border-disabled-disabled);
407
+ --input-border-focus: var(--interface-border-brand-brand);
408
+ --input-border-hover: var(--interface-border-default-primary);
409
+ --input-foreground-disabled: var(--interface-foreground-disabled-on-disabled);
410
+ --input-foreground-primary: var(--interface-foreground-default-primary);
411
+ --input-foreground-secondary: var(--interface-foreground-default-secondary);
412
+ --input-foreground-tertiary: var(--interface-foreground-default-tertiary);
413
+ --ory-background-default: var(--interface-background-default-primary);
414
+ --ory-border-default: var(--interface-border-default-primary);
415
+ --ory-foreground-default: var(--interface-foreground-default-primary);
416
+ --radio-background-checked: var(--interface-background-brand-primary);
417
+ --radio-background-default: var(--interface-background-default-secondary);
418
+ --radio-border-checked: var(--interface-border-brand-brand);
419
+ --radio-border-default: var(--interface-border-default-primary);
420
+ --radio-foreground-checked: var(--interface-foreground-brand-on-primary);
421
+ --radio-foreground-default: var(--interface-foreground-default-primary);
422
+ --toggle-background-checked: var(--interface-background-brand-primary);
423
+ --toggle-background-default: var(--interface-background-default-secondary);
424
+ --toggle-border-checked: var(--interface-border-default-none);
425
+ --toggle-border-default: var(--interface-border-default-primary);
426
+ --toggle-foreground-checked: var(--interface-foreground-brand-on-primary);
427
+ --toggle-foreground-default: var(--interface-foreground-brand-primary);
428
+ /* Specific elements end */
429
+
430
+ /* border radius */
431
+ --border-radius-buttons: 0.25rem;
432
+ --border-radius-forms: 0.25rem;
433
+ --border-radius-general: 0.25rem;
434
+ --border-radius-branding: 0.5rem;
435
+ --border-radius-cards: 0.75rem;
436
+ --border-radius-identifier: 62.4375rem;
437
+ /* border radius end*/
211
438
  }
212
439
  ```
213
440
 
214
- ### Component overrides
441
+ ### Component system
215
442
 
216
443
  Many components in Ory Elements can be overriden with your own implementation.
217
444
  Ory Elements also provides useful hooks that be used inside of your custom
@@ -249,6 +476,28 @@ export default async function RegistrationPage({ searchParams }: PageProps) {
249
476
  }
250
477
  ```
251
478
 
479
+ ### internationalization (i18n)
480
+
481
+ `@ory/elements-react` comes with default translations for many languages.
482
+ Additionally, it provides a way to override the default messages, through the
483
+ `locale` property of the `OryClientConfiguration`.
484
+
485
+ ```ts
486
+ const config = {
487
+ intl: {
488
+ locale: "en", // Or any of the other supported locales.
489
+ customTranslations: {
490
+ en: {
491
+ "identities.messages.1040006": "This is a custom translation",
492
+ },
493
+ },
494
+ },
495
+ }
496
+ ```
497
+
498
+ For a full list of messages, see
499
+ [en.json](https://github.com/ory/elements/blob/main/packages/elements-react/src/locales/en.json).
500
+
252
501
  ## Development
253
502
 
254
503
  See [DEVELOPMENT.md](./DEVELOPMENT.md).
package/dist/index.d.mts CHANGED
@@ -53,6 +53,7 @@ type OryNodeImageProps = {
53
53
  type FormValues = Record<string, string | boolean | number | undefined>;
54
54
  type OryFormRootProps = ComponentPropsWithoutRef<"form"> & {
55
55
  onSubmit: FormEventHandler<HTMLFormElement>;
56
+ "data-testid"?: string;
56
57
  };
57
58
  type OryNodeInputProps = {
58
59
  attributes: UiNodeInputAttributes;
@@ -374,8 +375,9 @@ type DeepPartialTwoLevels<T> = {
374
375
  type OryFlowComponentOverrides = DeepPartialTwoLevels<OryFlowComponents>;
375
376
  type OryFormProps = PropsWithChildren<{
376
377
  onAfterSubmit?: (method: string | number | boolean | undefined) => void;
378
+ "data-testid"?: string;
377
379
  }>;
378
- declare function OryForm({ children, onAfterSubmit }: OryFormProps): react_jsx_runtime.JSX.Element;
380
+ declare function OryForm({ children, onAfterSubmit, "data-testid": dataTestId, }: OryFormProps): react_jsx_runtime.JSX.Element;
379
381
 
380
382
  declare function useComponents(): OryFlowComponents;
381
383
  declare function useNodeSorter(): (a: UiNode, b: UiNode, ctx: {
package/dist/index.d.ts CHANGED
@@ -53,6 +53,7 @@ type OryNodeImageProps = {
53
53
  type FormValues = Record<string, string | boolean | number | undefined>;
54
54
  type OryFormRootProps = ComponentPropsWithoutRef<"form"> & {
55
55
  onSubmit: FormEventHandler<HTMLFormElement>;
56
+ "data-testid"?: string;
56
57
  };
57
58
  type OryNodeInputProps = {
58
59
  attributes: UiNodeInputAttributes;
@@ -374,8 +375,9 @@ type DeepPartialTwoLevels<T> = {
374
375
  type OryFlowComponentOverrides = DeepPartialTwoLevels<OryFlowComponents>;
375
376
  type OryFormProps = PropsWithChildren<{
376
377
  onAfterSubmit?: (method: string | number | boolean | undefined) => void;
378
+ "data-testid"?: string;
377
379
  }>;
378
- declare function OryForm({ children, onAfterSubmit }: OryFormProps): react_jsx_runtime.JSX.Element;
380
+ declare function OryForm({ children, onAfterSubmit, "data-testid": dataTestId, }: OryFormProps): react_jsx_runtime.JSX.Element;
379
381
 
380
382
  declare function useComponents(): OryFlowComponents;
381
383
  declare function useNodeSorter(): (a: UiNode, b: UiNode, ctx: {