@aws-amplify/ui 2.0.4-unstable.93 → 3.0.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 (63) hide show
  1. package/README.md +7 -0
  2. package/dist/esm/index.js +32 -0
  3. package/dist/esm/index.js.map +7 -0
  4. package/dist/index.d.ts +788 -0
  5. package/dist/index.js +32 -0
  6. package/dist/index.js.map +7 -0
  7. package/dist/styles.css +2697 -0
  8. package/dist/theme.css +781 -0
  9. package/package.json +51 -28
  10. package/CHANGELOG.md +0 -331
  11. package/Readme.md +0 -5
  12. package/dist/aws-amplify-ui.js +0 -2
  13. package/dist/aws-amplify-ui.js.map +0 -1
  14. package/dist/aws-amplify-ui.min.js +0 -2
  15. package/dist/aws-amplify-ui.min.js.map +0 -1
  16. package/dist/style.css +0 -775
  17. package/dist/style.css.map +0 -1
  18. package/lib/Anchor.css.d.ts +0 -2
  19. package/lib/Button.css.d.ts +0 -10
  20. package/lib/Form.css.d.ts +0 -5
  21. package/lib/Hint.css.d.ts +0 -2
  22. package/lib/Input.css.d.ts +0 -5
  23. package/lib/Nav.css.d.ts +0 -5
  24. package/lib/PhotoPicker.css.d.ts +0 -4
  25. package/lib/Section.css.d.ts +0 -10
  26. package/lib/SelectInput.css.d.ts +0 -2
  27. package/lib/Strike.css.d.ts +0 -3
  28. package/lib/Toast.css.d.ts +0 -3
  29. package/lib/Totp.css.d.ts +0 -2
  30. package/lib/XR.css.d.ts +0 -17
  31. package/lib/index.d.ts +0 -13
  32. package/postcss.config.js +0 -3
  33. package/src/Anchor.css +0 -10
  34. package/src/Anchor.css.d.ts +0 -2
  35. package/src/Angular.css +0 -607
  36. package/src/Button.css +0 -131
  37. package/src/Button.css.d.ts +0 -10
  38. package/src/Form.css +0 -43
  39. package/src/Form.css.d.ts +0 -5
  40. package/src/Hint.css +0 -6
  41. package/src/Hint.css.d.ts +0 -2
  42. package/src/Input.css +0 -41
  43. package/src/Input.css.d.ts +0 -5
  44. package/src/Nav.css +0 -21
  45. package/src/Nav.css.d.ts +0 -5
  46. package/src/PhotoPicker.css +0 -15
  47. package/src/PhotoPicker.css.d.ts +0 -4
  48. package/src/Section.css +0 -67
  49. package/src/Section.css.d.ts +0 -10
  50. package/src/SelectInput.css +0 -36
  51. package/src/SelectInput.css.d.ts +0 -2
  52. package/src/Strike.css +0 -17
  53. package/src/Strike.css.d.ts +0 -3
  54. package/src/Theme.css +0 -150
  55. package/src/Toast.css +0 -63
  56. package/src/Toast.css.d.ts +0 -3
  57. package/src/Totp.css +0 -4
  58. package/src/Totp.css.d.ts +0 -2
  59. package/src/XR.css +0 -201
  60. package/src/XR.css.d.ts +0 -17
  61. package/src/index.ts +0 -25
  62. package/tsconfig.json +0 -29
  63. package/webpack.config.js +0 -63
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/globals.js", "../src/theme/tokens/components/alert.js", "../src/theme/tokens/components/badge.js", "../src/theme/tokens/components/button.js", "../src/theme/tokens/components/card.js", "../src/theme/tokens/components/checkbox.js", "../src/theme/tokens/components/checkboxField.js", "../src/theme/tokens/components/divider.js", "../src/theme/tokens/components/expander.js", "../src/theme/tokens/components/field.js", "../src/theme/tokens/components/fieldControl.js", "../src/theme/tokens/components/fieldGroup.js", "../src/theme/tokens/components/fieldMessages.js", "../src/theme/tokens/components/flex.js", "../src/theme/tokens/components/heading.js", "../src/theme/tokens/components/icon.js", "../src/theme/tokens/components/image.js", "../src/theme/tokens/components/link.js", "../src/theme/tokens/components/loader.js", "../src/theme/tokens/components/menu.js", "../src/theme/tokens/components/pagination.js", "../src/theme/tokens/components/phoneNumberField.js", "../src/theme/tokens/components/placeholder.js", "../src/theme/tokens/components/radio.js", "../src/theme/tokens/components/rating.js", "../src/theme/tokens/components/select.js", "../src/theme/tokens/components/selectField.js", "../src/theme/tokens/components/sliderField.js", "../src/theme/tokens/components/stepperField.js", "../src/theme/tokens/components/switchField.js", "../src/theme/tokens/components/table.js", "../src/theme/tokens/components/tabs.js", "../src/theme/tokens/components/text.js", "../src/theme/tokens/components/toggleButton.js", "../src/theme/tokens/components/toggleButtonGroup.js", "../src/theme/tokens/components/index.js", "../src/index.ts", "../src/helpers/index.ts", "../src/helpers/auth.ts", "../src/types/index.ts", "../src/types/authMachine.ts", "../src/types/validator.ts", "../src/helpers/utils.ts", "../src/i18n/index.ts", "../src/i18n/country-dial-codes.ts", "../src/i18n/translations.ts", "../src/i18n/dictionaries/index.ts", "../src/i18n/dictionaries/de.ts", "../src/i18n/dictionaries/en.ts", "../src/i18n/dictionaries/es.ts", "../src/i18n/dictionaries/fr.ts", "../src/i18n/dictionaries/it.ts", "../src/i18n/dictionaries/ja.ts", "../src/i18n/dictionaries/zh.ts", "../src/machines/index.ts", "../src/machines/authenticator/index.ts", "../src/machines/authenticator/actions.ts", "../src/machines/authenticator/actors/index.ts", "../src/machines/authenticator/actors/signIn.ts", "../src/validators/index.ts", "../src/machines/authenticator/defaultServices.ts", "../src/machines/authenticator/actors/signOut.ts", "../src/machines/authenticator/actors/resetPassword.ts", "../src/machines/authenticator/signUp.ts", "../src/theme/index.ts", "../src/theme/createTheme.ts", "../src/theme/baseTheme.ts", "../src/theme/tokens/index.ts", "../src/theme/tokens/borderWidths.ts", "../src/theme/tokens/colors.ts", "../src/theme/tokens/fonts.ts", "../src/theme/tokens/fontSizes.ts", "../src/theme/tokens/fontWeights.ts", "../src/theme/tokens/lineHeights.ts", "../src/theme/tokens/opacities.ts", "../src/theme/tokens/outlineOffsets.ts", "../src/theme/tokens/outlineWidths.ts", "../src/theme/tokens/radii.ts", "../src/theme/tokens/shadows.ts", "../src/theme/tokens/space.ts", "../src/theme/tokens/time.ts", "../src/theme/tokens/transforms.ts", "../src/theme/breakpoints.ts", "../src/theme/utils.ts", "../src/theme/types.ts", "../src/theme/tokens/types/designToken.ts"],
4
+ "sourcesContent": ["/**\n * This shim exists for `esbuild` to `inject` into every .tsx file.\n * Otherwise, `import * as React from 'react'` would need to be added manually\n *\n * See: https://esbuild.github.io/content-types/#auto-import-for-jsx\n * See: https://github.com/egoist/tsup/issues/390\n */\n\n// No shims needed for core\n", "module.exports = {\n // Default styles\n color: { value: '{colors.font.primary.value}' },\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n paddingBlock: { value: '{space.small.value}' },\n paddingInline: { value: '{space.medium.value}' },\n\n icon: {\n size: { value: '{fontSizes.xl.value}' },\n },\n\n heading: {\n fontSize: { value: '{fontSizes.medium.value}' },\n fontWeight: { value: '{fontWeights.bold.value}' },\n },\n\n // Variations\n info: {\n color: { value: '{colors.font.info.value}' },\n backgroundColor: { value: '{colors.background.info.value}' },\n },\n\n error: {\n color: { value: '{colors.font.error.value}' },\n backgroundColor: { value: '{colors.background.error.value}' },\n },\n\n warning: {\n color: { value: '{colors.font.warning.value}' },\n backgroundColor: { value: '{colors.background.warning.value}' },\n },\n\n success: {\n color: { value: '{colors.font.success.value}' },\n backgroundColor: { value: '{colors.background.success.value}' },\n },\n};\n", "module.exports = {\n // Default styles\n color: { value: '{colors.font.primary.value}' },\n lineHeight: { value: 1 },\n fontWeight: { value: '{fontWeights.semibold.value}' },\n fontSize: { value: '{fontSizes.small.value}' },\n textAlign: { value: 'center' },\n paddingVertical: { value: '{space.xs.value}' },\n paddingHorizontal: { value: '{space.small.value}' },\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n // An arbitrarily large value to ensure that the left and right sides of the badge are perfectly rounded for any size variation\n borderRadius: { value: '{radii.xl.value}' },\n\n // Variations\n info: {\n color: { value: '{colors.font.info.value}' },\n backgroundColor: { value: '{colors.background.info.value}' },\n },\n\n warning: {\n color: { value: '{colors.font.warning.value}' },\n backgroundColor: { value: '{colors.background.warning.value}' },\n },\n\n success: {\n color: { value: '{colors.font.success.value}' },\n backgroundColor: { value: '{colors.background.success.value}' },\n },\n\n error: {\n color: { value: '{colors.font.error.value}' },\n backgroundColor: { value: '{colors.background.error.value}' },\n },\n\n // Sizes\n small: {\n fontSize: { value: '{fontSizes.xs.value}' },\n paddingVertical: { value: '{space.xxs.value}' },\n paddingHorizontal: { value: '{space.xs.value}' },\n },\n // medium is the default size\n large: {\n fontSize: { value: '{fontSizes.medium.value}' },\n paddingVertical: { value: '{space.small.value}' },\n paddingHorizontal: { value: '{space.medium.value}' },\n },\n};\n", "module.exports = {\n // shared styles\n fontWeight: { value: 'bold' },\n borderRadius: { value: '{components.fieldcontrol.borderRadius.value}' },\n transitionDuration: {\n value: '{components.fieldcontrol.transitionDuration.value}',\n },\n fontSize: { value: '{components.fieldcontrol.fontSize.value}' },\n lineHeight: { value: '{components.fieldcontrol.lineHeight.value}' },\n paddingBlockStart: {\n value: '{components.fieldcontrol.paddingBlockStart.value}',\n },\n paddingBlockEnd: {\n value: '{components.fieldcontrol.paddingBlockEnd.value}',\n },\n paddingInlineStart: {\n value: '{components.fieldcontrol.paddingInlineStart.value}',\n },\n paddingInlineEnd: {\n value: '{components.fieldcontrol.paddingInlineEnd.value}',\n },\n borderColor: { value: '{colors.brand.primary.20.value}' },\n borderWidth: { value: '{borderWidths.small.value}' },\n borderStyle: { value: 'solid' },\n color: { value: '{colors.brand.primary.80.value}' },\n\n _hover: {\n color: { value: '{colors.font.focus.value}' },\n backgroundColor: { value: '{colors.brand.primary.10.value}' },\n borderColor: { value: '{colors.brand.primary.60.value}' },\n },\n _focus: {\n color: { value: '{colors.font.focus.value}' },\n borderColor: { value: '{colors.border.focus.value}' },\n boxShadow: { value: '{components.fieldcontrol._focus.boxShadow.value}' },\n },\n _active: {\n color: { value: '{colors.font.inverse.value}' },\n backgroundColor: { value: '{colors.brand.primary.100.value}' },\n borderColor: { value: '{colors.brand.primary.100.value}' },\n },\n _loading: {\n color: { value: '{colors.font.tertiary.value}' },\n backgroundColor: { value: 'transparent' },\n borderColor: { value: '{colors.border.tertiary.value}' },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n backgroundColor: { value: 'transparent' },\n borderColor: { value: '{colors.border.tertiary.value}' },\n },\n\n // variations\n primary: {\n borderWidth: { value: 0 },\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n color: { value: '{colors.font.inverse.value}' },\n _disabled: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n color: { value: '{colors.font.tertiary.value}' },\n },\n _loading: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n color: { value: '{colors.font.tertiary.value}' },\n },\n _hover: {\n backgroundColor: { value: '{colors.brand.primary.90.value}' },\n },\n _focus: {\n backgroundColor: { value: '{colors.brand.primary.90.value}' },\n },\n _active: {\n backgroundColor: { value: '{colors.brand.primary.100.value}' },\n },\n },\n\n menu: {\n borderWidth: { value: 0 },\n backgroundColor: { value: 'none' },\n justifyContent: { value: 'start' },\n // Focus and hover styles are identical for menu variation\n // because for Menu primitive, menu items are forced to be focused even\n // for mouse interactions, making it impossible to distinguish the two interactions\n _hover: {\n color: { value: '{colors.white.value}' },\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n },\n _focus: {\n color: { value: '{colors.white.value}' },\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n },\n _active: {\n color: { value: '{colors.white.value}' },\n backgroundColor: { value: '{colors.brand.primary.90.value}' },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n },\n },\n\n link: {\n borderWidth: { value: 0 },\n backgroundColor: { value: 'transparent' },\n color: { value: '{colors.font.interactive.value}' },\n _hover: {\n color: { value: '{colors.font.hover.value}' },\n },\n _focus: {\n color: { value: '{colors.font.focus.value}' },\n },\n _active: {\n color: { value: '{colors.font.active.value}' },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n },\n _loading: {\n color: { value: '{colors.font.tertiary.value}' },\n },\n },\n\n // sizes\n small: {\n fontSize: { value: '{components.fieldcontrol.small.fontSize.value}' },\n paddingBlockStart: {\n value: '{components.fieldcontrol.small.paddingBlockStart.value}',\n },\n paddingBlockEnd: {\n value: '{components.fieldcontrol.small.paddingBlockEnd.value}',\n },\n paddingInlineStart: {\n value: '{components.fieldcontrol.small.paddingInlineStart.value}',\n },\n paddingInlineEnd: {\n value: '{components.fieldcontrol.small.paddingInlineEnd.value}',\n },\n },\n large: {\n fontSize: { value: '{components.fieldcontrol.large.fontSize.value}' },\n paddingBlockStart: {\n value: '{components.fieldcontrol.large.paddingBlockStart.value}',\n },\n paddingBlockEnd: {\n value: '{components.fieldcontrol.large.paddingBlockEnd.value}',\n },\n paddingInlineStart: {\n value: '{components.fieldcontrol.large.paddingInlineStart.value}',\n },\n paddingInlineEnd: {\n value: '{components.fieldcontrol.large.paddingInlineEnd.value}',\n },\n },\n};\n", "module.exports = {\n backgroundColor: { value: '{colors.background.primary.value}' },\n borderRadius: { value: '{radii.xs.value}' },\n borderWidth: { value: '0' },\n borderStyle: { value: 'solid' },\n borderColor: { value: 'transparent' },\n boxShadow: { value: 'none' },\n padding: { value: '{space.medium.value}' },\n\n outlined: {\n backgroundColor: { value: '{components.card.backgroundColor.value}' },\n borderRadius: { value: '{radii.xs.value}' },\n borderWidth: { value: '{borderWidths.small.value}' },\n borderStyle: { value: 'solid' },\n borderColor: { value: '{colors.border.primary.value}' },\n },\n\n elevated: {\n backgroundColor: { value: '{components.card.backgroundColor.value}' },\n borderRadius: { value: '{radii.xs.value}' },\n borderWidth: { value: '0' },\n borderStyle: { value: 'solid' },\n borderColor: { value: 'transparent' },\n boxShadow: { value: '{shadows.medium.value}' },\n },\n};\n", "module.exports = {\n cursor: { value: 'pointer' },\n alignItems: { value: 'center' },\n _disabled: {\n cursor: {\n value: 'not-allowed',\n },\n },\n button: {\n position: { value: 'relative' },\n alignItems: { value: 'center' },\n justifyContent: { value: 'center' },\n color: { value: '{colors.white.value}' },\n before: {\n width: { value: '100%' },\n height: { value: '100%' },\n borderWidth: { value: '{borderWidths.medium.value}' },\n borderRadius: { value: '20%' },\n borderStyle: { value: 'solid' },\n borderColor: { value: '{colors.border.primary.value}' },\n },\n _focus: {\n outlineColor: { value: '{colors.transparent.value}' },\n outlineStyle: { value: 'solid' },\n outlineWidth: { value: '{outlineWidths.medium.value}' },\n outlineOffset: { value: '{outlineOffsets.medium.value}' },\n borderColor: { value: '{colors.transparent.value}' },\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '0px',\n blurRadius: '0px',\n spreadRadius: '2px',\n color: '{colors.border.focus.value}',\n },\n },\n },\n _disabled: {\n borderColor: { value: '{colors.border.disabled.value}' },\n },\n _error: {\n borderColor: { value: '{colors.border.error.value}' },\n _focus: {\n borderColor: { value: '{colors.transparent.value}' },\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '0px',\n blurRadius: '0px',\n spreadRadius: '2px',\n color: '{colors.border.error.value}',\n },\n },\n },\n },\n },\n icon: {\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n borderRadius: { value: '20%' },\n opacity: { value: '{opacities.0.value}' },\n transform: { value: 'scale(0)' },\n transitionProperty: { value: 'all' },\n transitionDuration: { value: '{time.short.value}' },\n transitionTimingFunction: { value: 'ease-in-out' },\n _checked: {\n opacity: { value: '{opacities.100.value}' },\n transform: { value: 'scale(1)' },\n _disabled: {\n backgroundColor: { value: '{colors.background.disabled.value}' },\n },\n },\n },\n label: {\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n },\n },\n};\n", "module.exports = {\n alignItems: { value: 'flex-start' },\n alignContent: { value: 'center' },\n flexDirection: { value: 'column' },\n justifyContent: { value: 'center' },\n};\n", "module.exports = {\n borderStyle: { value: 'solid' },\n borderColor: { value: '{colors.border.primary.value}' },\n borderWidth: { value: '{borderWidths.medium.value}' },\n\n small: {\n borderWidth: { value: '{borderWidths.small.value}' },\n },\n\n large: {\n borderWidth: { value: '{borderWidths.large.value}' },\n },\n\n opacity: {\n value: '{opacities.60.value}',\n },\n};\n", "module.exports = {\n display: { value: 'block' },\n backgroundColor: { value: '{colors.white.value}' },\n borderRadius: { value: '{radii.medium.value}' },\n boxShadow: {\n value: '{shadows.large.value}',\n },\n width: { value: '100%' },\n item: {\n marginTop: { value: '1px' },\n boxShadow: {\n value: '{shadows.small.value}',\n },\n borderBottomLeftRadius: { value: '{radii.medium.value}' },\n borderBottomRightRadius: { value: '{radii.medium.value}' },\n borderTopLeftRadius: { value: '{radii.medium.value}' },\n borderTopRightRadius: { value: '{radii.medium.value}' },\n borderStartStartRadius: { value: '{radii.medium.value}' },\n borderStartEndRadius: { value: '{radii.medium.value}' },\n borderEndStartRadius: { value: '{radii.medium.value}' },\n borderEndEndRadius: { value: '{radii.medium.value}' },\n _focus: {\n boxShadow: {\n value: {\n offsetX: '0',\n offsetY: '0',\n blurRadius: '0',\n spreadRadius: '2px',\n color: '{colors.border.focus.value}',\n },\n },\n },\n },\n header: {\n boxShadow: {\n value: {\n offsetX: '0',\n offsetY: '1px',\n blurRadius: '0',\n color: '{colors.overlay.20.value}',\n },\n },\n },\n trigger: {\n minHeight: { value: '3rem' },\n paddingInlineStart: { value: '{space.large.value}' },\n paddingInlineEnd: { value: '{space.large.value}' },\n alignItems: { value: 'center' },\n justifyContent: { value: 'space-between' },\n _hover: {\n backgroundColor: { value: '{colors.overlay.10.value}' },\n },\n },\n content: {\n paddingInlineStart: { value: '{space.large.value}' },\n paddingInlineEnd: { value: '{space.large.value}' },\n text: {\n color: { value: '{colors.font.secondary.value}' },\n paddingBlockStart: { value: '{space.medium.value}' },\n paddingBlockEnd: { value: '{space.medium.value}' },\n },\n _open: {\n animationDuration: { value: '{time.medium.value}' },\n animationTimingFunction: { value: 'cubic-bezier(0.87, 0, 0.13, 1)' },\n },\n _closed: {\n animationDuration: { value: '{time.medium.value}' },\n animationTimingFunction: { value: 'cubic-bezier(0.87, 0, 0.13, 1)' },\n },\n },\n icon: {\n transitionDuration: { value: '{time.medium.value}' },\n transitionTimingFunction: { value: 'cubic-bezier(0.87, 0, 0.13, 1)' },\n },\n};\n", "module.exports = {\n // default styles\n gap: { value: '{space.xs.value}' },\n fontSize: { value: '{fontSizes.medium.value}' },\n\n // Adjust base fontSize and gap for small and large sizes\n small: {\n gap: { value: '{space.xxxs.value}' },\n fontSize: { value: '{fontSizes.small.value}' },\n },\n large: {\n gap: { value: '{space.small.value}' },\n fontSize: { value: '{fontSizes.large.value}' },\n },\n\n label: {\n color: { value: '{colors.font.secondary.value}' },\n },\n};\n", "module.exports = {\n borderStyle: { value: 'solid' },\n borderColor: { value: '{colors.border.primary.value}' },\n borderWidth: { value: '{borderWidths.small.value}' },\n borderRadius: { value: '{radii.small.value}' },\n color: { value: '{colors.font.primary.value}' },\n paddingBlockStart: {\n value: '{space.xs.value}',\n },\n paddingBlockEnd: {\n value: '{space.xs.value}',\n },\n paddingInlineStart: {\n value: '{space.medium.value}',\n },\n paddingInlineEnd: {\n value: '{space.medium.value}',\n },\n\n fontSize: { value: '{components.field.fontSize.value}' },\n lineHeight: { value: '{lineHeights.medium.value}' },\n transitionDuration: { value: '{time.medium.value}' },\n outlineColor: { value: '{colors.transparent.value}' },\n outlineStyle: { value: 'solid' },\n outlineWidth: { value: '{outlineWidths.medium.value}' },\n outlineOffset: { value: '{outlineOffsets.medium.value}' },\n\n small: {\n fontSize: { value: '{components.field.small.fontSize.value}' },\n paddingBlockStart: {\n value: '{space.xs.value}',\n },\n paddingBlockEnd: {\n value: '{space.xs.value}',\n },\n paddingInlineStart: {\n value: '{space.small.value}',\n },\n paddingInlineEnd: {\n value: '{space.small.value}',\n },\n },\n large: {\n fontSize: { value: '{components.field.large.fontSize.value}' },\n paddingBlockStart: {\n value: '{space.xs.value}',\n },\n paddingBlockEnd: {\n value: '{space.xs.value}',\n },\n paddingInlineStart: {\n value: '{space.medium.value}',\n },\n paddingInlineEnd: {\n value: '{space.medium.value}',\n },\n },\n\n quiet: {\n borderStyle: { value: 'none' },\n borderBlockEnd: {\n value: '{borderWidths.small.value} solid {colors.border.primary.value}',\n },\n borderInlineStart: { value: 'none' },\n borderInlineEnd: { value: 'none' },\n borderBlockStart: { value: 'none' },\n borderRadius: { value: '0' },\n _focus: {\n borderBlockEndColor: { value: '{colors.border.focus.value}' },\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '1px',\n color: '{colors.border.focus.value}',\n },\n },\n },\n _error: {\n borderBlockEndColor: { value: '{colors.border.error.value}' },\n _focus: {\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '1px',\n color: '{colors.border.error.value}',\n },\n },\n },\n },\n },\n _focus: {\n // These focus styles have been calibrated to create\n // a highly visible focus indicator per WCAG 2.1 guidliness:\n // See: https://www.w3.org/WAI/WCAG21/Techniques/general/G195.html\n //\n // Key features:\n // * Focus indicator area is at least the 1 CSS px border around the component.\n // * Contrast between focused and unfocused states has a ratio of 3:1\n //\n // IMPORTANT: Must recalibrate if `colors.border.primary` or `colors.focus` are changed\n borderColor: { value: '{colors.border.focus.value}' },\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '0px',\n blurRadius: '0px',\n spreadRadius: '1px',\n color: '{colors.border.focus.value}',\n },\n },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n cursor: { value: 'not-allowed' },\n borderColor: { value: '{colors.transparent.value}' },\n backgroundColor: { value: '{colors.background.disabled.value}' },\n },\n _error: {\n borderColor: { value: '{colors.border.error.value}' },\n _focus: {\n boxShadow: {\n value: {\n offsetX: '0px',\n offsetY: '0px',\n blurRadius: '0px',\n spreadRadius: '1px',\n color: '{colors.border.error.value}',\n },\n },\n },\n },\n};\n", "module.exports = {\n gap: { value: 0 },\n vertical: {\n alignItems: { value: 'center' },\n },\n outer: {\n alignItems: { value: 'center' },\n },\n};\n", "module.exports = {\n error: {\n color: { value: '{colors.font.error.value}' },\n fontSize: { value: '{fontSizes.small.value}' },\n },\n description: {\n color: { value: '{colors.font.secondary.value}' },\n fontStyle: { value: 'italic' },\n fontSize: { value: '{fontSizes.small.value}' },\n },\n};\n", "module.exports = {\n gap: { value: '{space.medium.value}' },\n justifyContent: { value: 'normal' },\n alignItems: { value: 'stretch' },\n alignContent: { value: 'normal' },\n flexWrap: { value: 'nowrap' },\n};\n", "module.exports = {\n color: { value: '{colors.font.primary.value}' },\n lineHeight: { value: 1.25 },\n\n 1: {\n fontSize: { value: '{fontSizes.xxxxl.value}' },\n fontWeight: { value: '{fontWeights.light.value}' },\n },\n 2: {\n fontSize: { value: '{fontSizes.xxxl.value}' },\n fontWeight: { value: '{fontWeights.light.value}' },\n },\n 3: {\n fontSize: { value: '{fontSizes.xxl.value}' },\n fontWeight: { value: '{fontWeights.normal.value}' },\n },\n 4: {\n fontSize: { value: '{fontSizes.xl.value}' },\n fontWeight: { value: '{fontWeights.medium.value}' },\n },\n 5: {\n fontSize: { value: '{fontSizes.large.value}' },\n fontWeight: { value: '{fontWeights.semibold.value}' },\n },\n 6: {\n fontSize: { value: '{fontSizes.medium.value}' },\n fontWeight: { value: '{fontWeights.bold.value}' },\n },\n};\n", "module.exports = {\n lineHeight: { value: 1 },\n height: { value: '1em' }, // Should match height of parent container font-size\n};\n", "module.exports = {\n maxWidth: { value: '100%' },\n height: { value: 'auto' },\n objectFit: { value: 'initial' },\n objectPosition: { value: 'initial' },\n};\n", "module.exports = {\n active: {\n color: { value: '{colors.font.active.value}' },\n },\n color: { value: '{colors.font.interactive.value}' },\n focus: {\n color: { value: '{colors.font.focus.value}' },\n },\n hover: {\n color: { value: '{colors.font.hover.value}' },\n },\n large: {\n fontSize: { value: '{fontSizes.large.value}' },\n },\n small: {\n fontSize: { value: '{fontSizes.small.value}' },\n },\n visited: {\n color: { value: '{colors.font.interactive.value}' },\n },\n};\n", "module.exports = {\n width: { value: '{fontSizes.xxl.value}' },\n height: { value: '{fontSizes.xxl.value}' },\n strokeEmpty: { value: '{colors.neutral.20.value}' },\n strokeFilled: { value: '{colors.brand.primary.80.value}' },\n strokeLinecap: { value: 'round' },\n animationDuration: { value: '1s' },\n small: {\n width: { value: '{fontSizes.medium.value}' },\n height: { value: '{fontSizes.medium.value}' },\n },\n large: {\n width: { value: '{fontSizes.xxxl.value}' },\n height: { value: '{fontSizes.xxxl.value}' },\n },\n linear: {\n width: { value: '100%' },\n minWidth: { value: '5rem' },\n height: { value: '{fontSizes.xxs.value}' },\n strokeWidth: { value: '{fontSizes.xxs.value}' },\n strokeFilled: { value: '{colors.brand.primary.80.value}' },\n strokeEmpty: { value: '{colors.neutral.20.value}' },\n strokeLinecap: { value: 'round' },\n animationDuration: { value: '1s' },\n small: {\n height: { value: '{fontSizes.xxxs.value}' },\n strokeWidth: { value: '{fontSizes.xxxs.value}' },\n },\n large: {\n height: { value: '{fontSizes.xs.value}' },\n strokeWidth: { value: '{fontSizes.xs.value}' },\n },\n },\n};\n", "module.exports = {\n backgroundColor: { value: '{colors.white.value}' },\n borderRadius: { value: '{radii.medium.value}' },\n boxShadow: { value: '{shadows.large.value}' },\n flexDirection: { value: 'column' },\n gap: { value: 0 },\n maxWidth: { value: '30rem' },\n minWidth: { value: '14rem' },\n\n small: {\n width: { value: '{fontSizes.medium.value}' },\n height: { value: '{fontSizes.medium.value}' },\n },\n large: {\n width: { value: '{fontSizes.xxxl.value}' },\n height: { value: '{fontSizes.xxxl.value}' },\n },\n item: {\n minHeight: { value: '2.5rem' },\n paddingInlineStart: { value: '{space.medium.value}' },\n paddingInlineEnd: { value: '{space.medium.value}' },\n },\n};\n", "module.exports = {\n current: {\n alignItems: { value: 'center' },\n justifyContent: { value: 'center' },\n color: { value: '{colors.white.value}' },\n fontSize: { value: '{fontSizes.small.value}' },\n backgroundColor: { value: '{colors.overlay.40.value}' },\n },\n button: {\n color: { value: '{colors.font.primary.value}' },\n paddingInlineStart: { value: '{space.xxs.value}' },\n paddingInlineEnd: { value: '{space.xxs.value}' },\n transitionProperty: { value: 'background-color' },\n transitionDuration: { value: '{time.medium.value}' },\n hover: {\n backgroundColor: { value: '{colors.overlay.10.value}' },\n color: { value: '{colors.font.primary.value}' },\n },\n disabled: {\n color: { value: '{colors.font.disabled.value}' },\n },\n },\n ellipsis: {\n alignItems: { value: 'baseline' },\n justifyContent: { value: 'center' },\n paddingInlineStart: { value: '{space.xs.value}' },\n paddingInlineEnd: { value: '{space.xs.value}' },\n },\n itemContainer: {\n marginLeft: { value: '{space.xxxs.value}' },\n marginRight: { value: '{space.xxxs.value}' },\n },\n itemShared: {\n height: { value: '{fontSizes.xxl.value}' },\n minWidth: { value: '{fontSizes.xxl.value}' },\n borderRadius: { value: '{fontSizes.medium.value}' },\n },\n};\n", "module.exports = {};\n", "module.exports = {\n borderRadius: { value: '{radii.small.value}' },\n transitionDuration: { value: '{time.long.value}' },\n\n startColor: { value: '{colors.background.secondary.value}' },\n endColor: { value: '{colors.background.tertiary.value}' },\n\n // sizes\n small: {\n height: { value: '{space.small.value}' },\n },\n default: {\n height: { value: '{space.medium.value}' },\n },\n large: {\n height: { value: '{space.large.value}' },\n },\n};\n", "module.exports = {\n alignItems: { value: 'center' },\n justifyContent: { value: 'flex-start' },\n gap: { value: 'inherit' },\n _disabled: { cursor: { value: 'not-allowed' } },\n button: {\n alignItems: { value: 'center' },\n justifyContent: { value: 'center' },\n width: { value: '{fontSizes.medium.value}' },\n height: { value: '{fontSizes.medium.value}' },\n boxSizing: { value: 'border-box' },\n borderWidth: { value: '{borderWidths.medium.value}' },\n borderStyle: { value: 'solid' },\n borderRadius: { value: '50%' },\n borderColor: { value: '{colors.border.primary.value}' },\n color: { value: '{colors.white.value}' },\n backgroundColor: { value: '{colors.white.value}' },\n transitionProperty: { value: 'all' },\n transitionDuration: { value: '{time.medium.value}' },\n outlineColor: { value: '{colors.transparent.value}' },\n outlineStyle: { value: 'solid' },\n outlineWidth: { value: '{outlineWidths.medium.value}' },\n outlineOffset: { value: '{outlineOffsets.medium.value}' },\n\n before: {\n content: { value: '\"\"' },\n display: { value: 'inline-block' },\n width: { value: '50%' },\n height: { value: '50%' },\n borderRadius: { value: '50%' },\n backgroundColor: { value: 'currentColor' },\n },\n small: {\n width: { value: '{fontSizes.xs.value}' },\n height: { value: '{fontSizes.xs.value}' },\n },\n large: {\n width: { value: '{fontSizes.large.value}' },\n height: { value: '{fontSizes.large.value}' },\n },\n\n _checked: {\n color: {\n value: '{colors.red.60.value}',\n },\n _disabled: { color: { value: '{colors.background.disabled.value}' } },\n },\n\n _focus: {\n borderColor: { value: '{colors.border.focus.value}' },\n boxShadow: { value: '{components.fieldcontrol._focus.boxShadow.value}' },\n },\n\n _error: {\n borderColor: { value: '{colors.border.error.value}' },\n _focus: {\n boxShadow: {\n value: '{components.fieldcontrol._error._focus.boxShadow.value}',\n },\n },\n },\n\n _disabled: {\n borderColor: { value: '{colors.border.disabled.value}' },\n backgroundColor: { value: '{colors.white.value}' },\n color: { value: '{colors.white.value}' },\n },\n },\n\n label: {\n _disabled: {\n color: {\n value: '{colors.font.disabled.value}',\n },\n },\n },\n};\n", "module.exports = {\n large: { size: { value: '{fontSizes.xxxl.value}' } },\n default: { size: { value: '{fontSizes.xl.value}' } },\n small: { size: { value: '{fontSizes.small.value}' } },\n filled: { color: { value: '{colors.brand.secondary.80.value}' } },\n empty: { color: { value: '{colors.background.tertiary.value}' } },\n};\n", "module.exports = {\n paddingInlineEnd: { value: '{space.xxl.value}' },\n // wrappers\n wrapper: {\n display: { value: 'block' },\n position: { value: 'relative' },\n cursor: { value: 'pointer' },\n },\n iconWrapper: {\n alignItems: { value: 'center' },\n position: { value: 'absolute' },\n top: { value: '50%' },\n right: { value: '{space.medium.value}' },\n transform: { value: 'translateY(-50%)' },\n pointerEvents: { value: 'none' },\n },\n whiteSpace: { value: 'nowrap' },\n minWidth: { value: '6.5rem' },\n small: {\n minWidth: { value: '5.5rem' },\n },\n large: {\n minWidth: { value: '7.5rem' },\n },\n};\n", "module.exports = {\n flexDirection: {\n value: 'column',\n },\n};\n", "module.exports = {\n group: {\n gap: { value: '{space.small.value}' },\n },\n root: {\n horizontal: {\n height: { value: '2rem' },\n },\n vertical: {\n width: { value: '2rem' },\n },\n },\n track: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n borderRadius: { value: '9999px' },\n horizontal: {\n height: { value: '0.375rem' },\n minWidth: { value: '10rem' },\n },\n vertical: {\n width: { value: '0.375rem' },\n minHeight: { value: '10rem' },\n },\n },\n range: {\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n },\n thumb: {\n width: { value: '1.25rem' },\n height: { value: '1.25rem' },\n backgroundColor: { value: '{colors.white.value}' },\n boxShadow: {\n value: {\n offsetX: '0',\n offsetY: '2px',\n blurRadius: '10px',\n color: '{colors.black.value}',\n },\n },\n borderRadius: { value: '50%' },\n _hover: {\n backgroundColor: { value: '{colors.background.secondary.value}' },\n },\n _focus: {\n boxShadow: {\n value: {\n offsetX: '0',\n offsetY: '0',\n blurRadius: '0',\n spreadRadius: '3px',\n color: '{colors.border.focus.value}',\n },\n },\n },\n },\n};\n", "module.exports = {\n flexDirection: { value: 'column' },\n input: {\n borderColor: { value: '{colors.brand.primary.20.value}' },\n textAlign: { value: 'center' },\n },\n};\n", "module.exports = {\n disabled: {\n opacity: { value: '{opacities.30.value}' },\n },\n focused: {\n shadow: { value: '{shadows.small.value}' },\n },\n label: {\n padding: { value: '{space.xs.value}' },\n },\n large: {\n font: {\n size: { value: '{fontSizes.large.value}' },\n },\n },\n small: {\n font: {\n size: { value: '{fontSizes.small.value}' },\n },\n },\n thumb: {\n background: { value: '{colors.white.value}' },\n border: {\n color: { value: '{colors.neutral.20.value}' },\n radius: { value: '{radii.xxxl.value}' },\n },\n checked: {\n transform: { value: '{transforms.slideX.medium.value}' },\n },\n transition: {\n duration: { value: '{time.medium.value}' },\n },\n width: { value: '{space.relative.medium.value}' },\n },\n track: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n border: {\n radius: { value: '{radii.xxxl.value}' },\n },\n checked: {\n backgroundColor: { value: '{colors.brand.primary.600.value}' },\n },\n height: { value: '{space.relative.medium.value}' },\n padding: { value: '{outlineWidths.medium.value}' },\n transition: {\n duration: { value: '{time.short.value}' },\n },\n width: { value: '{space.relative.xl.value}' },\n },\n};\n", "module.exports = {\n /**\n * Default table styles\n */\n borderCollapse: { value: 'collapse' },\n display: { value: 'table' },\n width: { value: '100%' },\n\n /**\n * Default table head styles\n */\n head: {\n display: { value: 'table-header-group' },\n verticalAlign: { value: 'middle' },\n },\n\n /**\n * Default table body styles\n */\n body: {\n display: { value: 'table-row-group' },\n verticalAlign: { value: 'middle' },\n },\n\n /**\n * Default table foot styles\n */\n foot: {\n display: { value: 'table-footer-group' },\n verticalAlign: { value: 'middle' },\n },\n\n /**\n * Default table row styles\n */\n row: {\n display: { value: 'table-row' },\n verticalAlign: { value: 'middle' },\n\n hover: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n },\n\n striped: {\n backgroundColor: { value: '{colors.background.secondary.value}' },\n },\n },\n\n /**\n * Default table header cell styles\n */\n header: {\n borderColor: { value: '{colors.border.tertiary.value}' },\n borderStyle: { value: 'solid' },\n borderWidth: { value: '{borderWidths.small.value}' },\n color: { value: '{colors.font.primary.value}' },\n display: { value: 'table-cell' },\n fontSize: { value: '{fontSizes.medium.value}' },\n fontWeight: { value: '{fontWeights.bold.value}' },\n padding: { value: '{space.medium.value}' },\n verticalAlign: { value: 'middle' },\n\n large: {\n fontSize: { value: '{fontSizes.large.value}' },\n padding: { value: '{space.large.value}' },\n },\n\n small: {\n fontSize: { value: '{fontSizes.small.value}' },\n padding: { value: '{space.xs.value}' },\n },\n },\n\n /**\n * Default table data cell styles\n */\n data: {\n borderColor: { value: '{colors.border.tertiary.value}' },\n borderStyle: { value: 'solid' },\n borderWidth: { value: '{borderWidths.small.value}' },\n color: { value: '{colors.font.primary.value}' },\n display: { value: 'table-cell' },\n fontSize: { value: '{fontSizes.medium.value}' },\n fontWeight: { value: '{fontWeights.normal.value}' },\n padding: { value: '{space.medium.value}' },\n verticalAlign: { value: 'middle' },\n\n large: {\n fontSize: { value: '{fontSizes.large.value}' },\n padding: { value: '{space.large.value}' },\n },\n\n small: {\n fontSize: { value: '{fontSizes.small.value}' },\n padding: { value: '{space.xs.value}' },\n },\n },\n\n /**\n * Default table caption styles\n */\n caption: {\n captionSide: { value: 'bottom' },\n color: { value: '{colors.font.primary.value}' },\n display: { value: 'table-caption' },\n fontSize: { value: '{fontSizes.medium.value}' },\n textAlign: { value: 'center' },\n wordBreak: { value: 'break-all' },\n\n large: {\n fontSize: { value: '{fontSizes.large.value}' },\n },\n\n small: {\n fontSize: { value: '{fontSizes.small.value}' },\n },\n },\n};\n", "module.exports = {\n backgroundColor: { value: 'transparent' },\n borderColor: { value: '{colors.border.secondary.value}' },\n borderStyle: { value: 'solid' },\n borderWidth: { value: '{borderWidths.medium.value}' },\n\n item: {\n backgroundColor: { value: 'transparent' },\n borderColor: { value: '{colors.border.secondary.value}' },\n borderStyle: { value: 'solid' },\n borderWidth: { value: '{borderWidths.medium.value}' },\n color: { value: '{colors.font.secondary.value}' },\n fontSize: { value: '{fontSizes.medium.value}' },\n fontWeight: { value: '{fontWeights.bold.value}' },\n paddingVertical: { value: '{space.small.value}' },\n paddingHorizontal: { value: '{space.medium.value}' },\n textAlign: { value: 'center' },\n transitionDuration: { value: '{time.medium.value}' },\n\n _hover: {\n color: { value: '{colors.font.hover.value}' },\n },\n _focus: {\n color: { value: '{colors.font.focus.value}' },\n },\n _active: {\n color: { value: '{colors.font.interactive.value}' },\n borderColor: { value: '{colors.font.interactive.value}' },\n backgroundColor: { value: 'transparent' },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n backgroundColor: { value: 'transparent' },\n borderColor: { value: '{colors.border.tertiary.value}' },\n },\n },\n};\n", "module.exports = {\n // default styles\n color: { value: '{colors.font.primary.value}' },\n\n // variations\n primary: {\n color: { value: '{colors.font.primary.value}' },\n },\n secondary: {\n color: { value: '{colors.font.secondary.value}' },\n },\n tertiary: {\n color: { value: '{colors.font.tertiary.value}' },\n },\n error: {\n color: { value: '{colors.font.error.value}' },\n },\n warning: {\n color: { value: '{colors.font.warning.value}' },\n },\n success: {\n color: { value: '{colors.font.success.value}' },\n },\n info: {\n color: { value: '{colors.font.info.value}' },\n },\n};\n", "module.exports = {\n borderColor: { value: '{colors.border.primary.value}' },\n color: { value: '{colors.overlay.50.value}' },\n _hover: {\n backgroundColor: { value: '{colors.overlay.10.value}' },\n },\n _focus: {\n borderColor: { value: '{colors.border.focus.value}' },\n color: { value: '{colors.overlay.50.value}' },\n },\n _active: {\n backgroundColor: { value: '{colors.transparent.value}' },\n },\n _disabled: {\n backgroundColor: { value: '{colors.transparent.value}' },\n borderColor: { value: '{colors.border.secondary.value}' },\n color: { value: '{colors.font.disabled.value}' },\n },\n _pressed: {\n color: { value: '{colors.overlay.90.value}' },\n backgroundColor: { value: '{colors.overlay.20.value}' },\n _hover: {\n backgroundColor: { value: '{colors.overlay.30.value}' },\n },\n },\n primary: {\n backgroundColor: { value: '{colors.transparent.value}' },\n borderWidth: { value: '{borderWidths.small.value}' },\n _focus: {\n borderColor: { value: '{colors.border.focus.value}' },\n backgroundColor: { value: '{colors.transparent.value}' },\n boxShadow: { value: '{components.fieldcontrol._focus.boxShadow.value}' },\n color: { value: '{colors.overlay.50.value}' },\n },\n _hover: {\n backgroundColor: { value: '{colors.overlay.10.value}' },\n color: { value: '{colors.overlay.50.value}' },\n },\n _disabled: {\n backgroundColor: { value: '{colors.background.tertiary.value}' },\n color: { value: '{colors.font.disabled.value}' },\n },\n _pressed: {\n backgroundColor: { value: '{colors.brand.primary.80.value}' },\n borderColor: { value: '{colors.brand.primary.80.value}' },\n color: { value: '{colors.white.value}' },\n _focus: {\n backgroundColor: {\n value: '{colors.border.focus.value}',\n },\n borderColor: { value: '{colors.border.focus.value}' },\n },\n _hover: {\n borderColor: { value: '{colors.brand.primary.60.value}' },\n backgroundColor: {\n value: '{colors.brand.primary.60.value}',\n },\n },\n },\n },\n link: {\n color: { value: '{colors.overlay.50.value}' },\n _hover: {\n backgroundColor: { value: '{colors.transparent.value}' },\n color: { value: '{colors.overlay.50.value}' },\n },\n _focus: {\n backgroundColor: { value: '{colors.transparent.value}' },\n color: { value: '{colors.overlay.50.value}' },\n },\n _disabled: {\n color: { value: '{colors.font.disabled.value}' },\n },\n _pressed: {\n backgroundColor: { value: '{colors.transparent.value}' },\n color: { value: '{colors.overlay.90.value}' },\n _hover: {\n backgroundColor: { value: '{colors.transparent.value}' },\n },\n },\n },\n};\n", "module.exports = {\n alignItems: { value: 'center' },\n alignContent: { value: 'center' },\n justifyContent: { value: 'flex-start' },\n};\n", "module.exports = {\n alert: require('./alert'),\n badge: require('./badge'),\n button: require('./button'),\n card: require('./card'),\n checkbox: require('./checkbox'),\n checkboxfield: require('./checkboxField'),\n divider: require('./divider'),\n expander: require('./expander'),\n field: require('./field'),\n fieldcontrol: require('./fieldControl'),\n fieldgroup: require('./fieldGroup'),\n fieldmessages: require('./fieldMessages'),\n flex: require('./flex'),\n heading: require('./heading'),\n icon: require('./icon'),\n image: require('./image'),\n link: require('./link'),\n loader: require('./loader'),\n menu: require('./menu'),\n pagination: require('./pagination'),\n phonenumberfield: require('./phoneNumberField'),\n placeholder: require('./placeholder'),\n radio: require('./radio'),\n rating: require('./rating'),\n select: require('./select'),\n selectfield: require('./selectField'),\n sliderfield: require('./sliderField'),\n stepperfield: require('./stepperField'),\n switchfield: require('./switchField'),\n table: require('./table'),\n tabs: require('./tabs'),\n text: require('./text'),\n togglebutton: require('./toggleButton'),\n togglebuttongroup: require('./toggleButtonGroup'),\n};\n", "export * from './helpers';\nexport * from './i18n';\nexport * from './machines';\nexport * from './theme';\nexport * from './types';\n", "export * from './auth';\nexport * from './utils';\n", "import includes from 'lodash/includes';\nimport { Sender } from 'xstate';\n\nimport { AuthContext } from '..';\nimport {\n ActorContextWithForms,\n AuthActorContext,\n AuthActorState,\n AuthEvent,\n AuthEventData,\n AuthEventTypes,\n AuthInputAttributes,\n AuthMachineState,\n LoginMechanism,\n LoginMechanismArray,\n} from '../types';\n\nexport const authInputAttributes: AuthInputAttributes = {\n birthdate: {\n label: 'Birthdate',\n placeholder: 'Birthdate',\n type: 'date',\n autocomplete: 'bday',\n },\n confirmation_code: {\n label: 'Confirmation Code',\n placeholder: 'Code',\n type: 'text',\n autocomplete: 'one-time-code',\n },\n email: {\n label: 'Email',\n type: 'email',\n placeholder: 'Email',\n autocomplete: 'username',\n },\n family_name: {\n label: 'Family Name',\n placeholder: 'Family Name',\n type: 'text',\n autocomplete: 'family-name',\n },\n given_name: {\n label: 'Given Name',\n placeholder: 'Given Name',\n type: 'text',\n autocomplete: 'given-name',\n },\n middle_name: {\n label: 'Middle Name',\n placeholder: 'Middle Name',\n type: 'text',\n autocomplete: 'additional-name',\n },\n name: {\n label: 'Name',\n placeholder: 'Name',\n type: 'text',\n autocomplete: 'name',\n },\n nickname: {\n label: 'Nickname',\n placeholder: 'Nickname',\n type: 'text',\n autocomplete: 'tel',\n },\n password: {\n label: 'Password',\n placeholder: 'Password',\n type: 'password',\n autocomplete: 'password',\n },\n phone_number: {\n label: 'Phone Number',\n placeholder: 'Phone',\n type: 'tel',\n autocomplete: 'tel',\n },\n preferred_username: {\n label: 'Preferred Username',\n placeholder: 'Preferred Username',\n type: 'text',\n },\n profile: {\n label: 'Profile',\n placeholder: 'Profile',\n type: 'url',\n autocomplete: 'url',\n },\n website: {\n label: 'Website',\n placeholder: 'Website',\n type: 'url',\n autocomplete: 'url',\n },\n username: {\n label: 'Username',\n type: 'text',\n placeholder: 'Username',\n autocomplete: 'username',\n },\n};\n\nexport enum FederatedIdentityProviders {\n Apple = 'SignInWithApple',\n Amazon = 'LoginWithAmazon',\n Facebook = 'Facebook',\n Google = 'Google',\n}\n\n/**\n * Given xstate context from AuthMachine, this returns the input label, type,\n * and error attributes of the configured login_mechanisms. An optional \"alias\"\n * may be passed in to get info from context for that specific alias.\n */\nexport const getAliasInfoFromContext = (\n context: AuthContext,\n // TODO This function & its signature should be renamed since aliases were rolled back\n alias?: LoginMechanism\n) => {\n const loginMechanisms = context.config?.loginMechanisms;\n const error = context.actorRef?.context?.validationError['username'];\n\n if (LoginMechanismArray.includes(alias)) {\n return {\n label: authInputAttributes[alias].label,\n type: authInputAttributes[alias].type,\n error,\n };\n }\n\n let type = 'text';\n const label = loginMechanisms\n .filter((mechanism) => includes(LoginMechanismArray, mechanism))\n .map((v) => {\n return (\n authInputAttributes[v]?.label ?? authInputAttributes['username'].label\n );\n })\n .join(' or ');\n\n if (loginMechanisms.length === 1) {\n type = authInputAttributes[loginMechanisms[0]]?.type ?? 'text';\n }\n\n return { label, type, error };\n};\n\n/**\n * Given xstate context from AuthMachine, returns the primaryAlias and\n * secondaryAliases.\n */\nexport const getConfiguredAliases = (context: AuthContext) => {\n const loginMechanisms = context.config?.loginMechanisms;\n const aliases = loginMechanisms.filter((mechanism) =>\n includes(LoginMechanismArray, mechanism)\n );\n\n const [primaryAlias, ...secondaryAliases] = aliases;\n return { primaryAlias, secondaryAliases };\n};\n\n/**\n * Get the state of current actor. This is useful for checking which screen\n * to render: e.g. `getActorState(state).matches('confirmSignUp.edit').\n */\nexport const getActorState = (state: AuthMachineState): AuthActorState => {\n return state.context.actorRef?.getSnapshot();\n};\n\n/**\n * Get the context of current actor. Useful for getting any nested context\n * like remoteError.\n */\nexport const getActorContext = (state: AuthMachineState): AuthActorContext => {\n return getActorState(state)?.context;\n};\n\n/**\n * Creates public facing auth helpers that abstracts out xstate implementation\n * detail. Each framework implementation can export these helpers so that\n * developers can send events without having to learn internals.\n *\n * ```\n * const [state, send] = useActor(...);\n * const { submit } = getSendEventAliases(send);\n * submit({ username, password})\n * ```\n */\nexport const getSendEventAliases = (send: Sender<AuthEvent>) => {\n const sendToMachine = (type: AuthEventTypes) => {\n // TODO If these were created during the creation of the machine & provider,\n // then invalid transitions could be caught via https://xstate.js.org/docs/guides/states.html#state-can-event\n return (data?: AuthEventData) => send({ type, data });\n };\n\n return {\n resendCode: sendToMachine('RESEND'),\n signOut: sendToMachine('SIGN_OUT'),\n submitForm: sendToMachine('SUBMIT'),\n updateForm: sendToMachine('CHANGE'),\n\n // Actions that don't immediately invoke a service but instead transition to a screen\n // are prefixed with `to*`\n\n toFederatedSignIn: sendToMachine('FEDERATED_SIGN_IN'),\n toResetPassword: sendToMachine('RESET_PASSWORD'),\n toSignIn: sendToMachine('SIGN_IN'),\n toSignUp: sendToMachine('SIGN_UP'),\n skipVerification: sendToMachine('SKIP'),\n } as const;\n};\n\nexport const getServiceContextFacade = (state: AuthMachineState) => {\n const user = state.context?.user;\n const actorState = getActorState(state);\n const actorContext = getActorContext(state) as ActorContextWithForms;\n const error = actorContext?.remoteError;\n const validationErrors = { ...actorContext?.validationError };\n const hasValidationErrors = Object.keys(validationErrors).length > 0;\n const isPending =\n state.hasTag('pending') || getActorState(state)?.hasTag('pending');\n const route = (() => {\n switch (true) {\n case state.matches('idle'):\n return 'idle';\n case state.matches('signOut'):\n return 'signOut';\n case state.matches('authenticated'):\n return 'authenticated';\n case actorState?.matches('confirmSignUp'):\n return 'confirmSignUp';\n case actorState?.matches('confirmSignIn'):\n return 'confirmSignIn';\n case actorState?.matches('setupTOTP'):\n return 'setupTOTP';\n case actorState?.matches('signIn'):\n return 'signIn';\n case actorState?.matches('signUp'):\n return 'signUp';\n case actorState?.matches('forceNewPassword'):\n return 'forceNewPassword';\n case actorState?.matches('resetPassword'):\n return 'resetPassword';\n case actorState?.matches('confirmResetPassword'):\n return 'confirmResetPassword';\n case actorState?.matches('verifyUser'):\n return 'verifyUser';\n case actorState?.matches('confirmVerifyUser'):\n return 'confirmVerifyUser';\n default:\n console.debug(\n 'Cannot infer `route` from Authenticator state:',\n state.value\n );\n return null;\n }\n })();\n\n return {\n error,\n hasValidationErrors,\n isPending,\n route,\n user,\n validationErrors,\n };\n};\n\nexport const getServiceFacade = ({ send, state }) => {\n const sendEventAliases = getSendEventAliases(send);\n const serviceContext = getServiceContextFacade(state);\n\n return {\n ...sendEventAliases,\n ...serviceContext,\n };\n};\n", "export * from './authMachine';\nexport * from './validator';\n\n// Prevents usage of T from being automatically inferred.\n// https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546\nexport type NoInfer<T> = [T][T extends any ? 0 : never];\n", "import { CognitoUser } from 'amazon-cognito-identity-js';\nimport { Interpreter, State } from 'xstate';\nimport { ValidationError } from './validator';\n\nexport type AuthFormData = Record<string, string>;\n\nexport interface AuthContext {\n actorRef?: any;\n config?: {\n loginMechanisms?: LoginMechanism[];\n signUpAttributes?: SignUpAttribute[];\n socialProviders?: SocialProvider[];\n };\n user?: CognitoUserAmplify;\n}\n\ninterface BaseFormContext {\n authAttributes?: Record<string, any>;\n challengeName?: string;\n formValues?: AuthFormData;\n intent?: string;\n remoteError?: string;\n user?: CognitoUserAmplify;\n validationError?: ValidationError;\n country_code?: string;\n}\n\nexport interface SignInContext extends BaseFormContext {\n loginMechanisms: AuthContext['config']['loginMechanisms'];\n socialProviders: AuthContext['config']['socialProviders'];\n attributeToVerify?: string;\n redirectIntent?: string;\n unverifiedAttributes?: Record<string, string>;\n}\n\n// https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html\nexport const signUpFieldsWithDefault = [\n 'birthdate',\n 'email',\n 'family_name',\n 'given_name',\n 'middle_name',\n 'name',\n 'nickname',\n 'phone_number',\n 'preferred_username',\n 'profile',\n 'website',\n] as const;\n\nexport const signUpFieldsWithoutDefault = [\n 'address',\n 'gender',\n 'locale',\n 'picture',\n 'updated_at',\n 'zoneinfo',\n] as const;\n\nexport type SignUpFieldsWithDefaults = typeof signUpFieldsWithDefault[number];\n\nexport type SignUpFieldsWithoutDefaults =\n typeof signUpFieldsWithoutDefault[number];\n\nexport type SignUpAttribute =\n | SignUpFieldsWithDefaults\n | SignUpFieldsWithoutDefaults;\n\nexport interface SignUpContext extends BaseFormContext {\n loginMechanisms: AuthContext['config']['loginMechanisms'];\n socialProviders: AuthContext['config']['socialProviders'];\n unverifiedAttributes?: Record<string, string>;\n}\n\nexport interface ResetPasswordContext extends BaseFormContext {\n username?: string;\n unverifiedAttributes?: Record<string, string>;\n}\n\nexport interface SignOutContext {\n authAttributes?: Record<string, any>;\n challengeName?: string;\n unverifiedAttributes?: Record<string, string>;\n user?: CognitoUserAmplify;\n}\n\n// actors that have forms. Has `formValues, remoteErrror, and validationError in common.\nexport type ActorContextWithForms =\n | SignInContext\n | SignUpContext\n | ResetPasswordContext;\n\nexport type SignInState = State<SignInContext, AuthEvent>;\nexport type SignUpState = State<SignUpContext, AuthEvent>;\nexport type SignOutState = State<SignOutContext, AuthEvent>;\nexport type ResetPasswordState = State<ResetPasswordContext, AuthEvent>;\nexport type AuthActorContext = ActorContextWithForms | SignOutContext;\nexport type AuthActorState = State<AuthActorContext, AuthEvent>;\nexport interface CognitoUserAmplify extends CognitoUser {\n username?: string;\n}\n\nexport type InvokeActorEventTypes =\n | 'done.invoke.signInActor'\n | 'done.invoke.signUpActor'\n | 'done.invoke.signOutActor'\n | 'done.invoke.resetPasswordActor';\n\nexport type AuthEventTypes =\n | 'CHANGE'\n | 'FEDERATED_SIGN_IN'\n | 'RESEND'\n | 'RESET_PASSWORD'\n | 'SIGN_IN'\n | 'SIGN_OUT'\n | 'SIGN_UP'\n | 'SKIP'\n | 'SUBMIT'\n | InvokeActorEventTypes;\n\nexport enum AuthChallengeNames {\n SMS_MFA = 'SMS_MFA',\n SOFTWARE_TOKEN_MFA = 'SOFTWARE_TOKEN_MFA',\n NEW_PASSWORD_REQUIRED = 'NEW_PASSWORD_REQUIRED',\n RESET_REQUIRED = 'RESET_REQUIRED',\n MFA_SETUP = 'MFA_SETUP',\n}\n\nexport interface InputAttributes {\n label: string;\n type: string;\n placeholder: string;\n autocomplete?: string;\n}\n\nexport const LoginMechanismArray = [\n 'username',\n 'email',\n 'phone_number',\n] as const;\n\nexport type LoginMechanism = typeof LoginMechanismArray[number];\n\nexport type SocialProvider = 'amazon' | 'apple' | 'facebook' | 'google';\n\n// Auth fields that we provide default fields with\nexport type AuthFieldsWithDefaults =\n | LoginMechanism\n | SignUpFieldsWithDefaults\n | 'confirmation_code'\n | 'password';\n\nexport type AuthInputAttributes = Record<\n AuthFieldsWithDefaults,\n InputAttributes\n>;\n\nexport type AuthEventData = Record<PropertyKey, any>; // TODO: this should be typed further\n\nexport interface AuthEvent {\n type: AuthEventTypes;\n data?: AuthEventData;\n}\n\nexport type AuthMachineState = State<AuthContext, AuthEvent>;\n\nexport type AuthInterpreter = Interpreter<AuthContext, any, AuthEvent>;\n", "import { AuthFormData } from './authMachine';\n\nexport type ValidationError = Record<string, string>;\n\n/**\n * Return type of validator. This is `null` if there are no error, and `ValidationError` otherwise.\n */\nexport type ValidatorResult = void | null | ValidationError; // null if there are no error, `ValidationError` otherwise\n\n/**\n * Validates the given formData. This can be synchronous or asynchronous.\n */\nexport type Validator = (\n formData: AuthFormData\n) => ValidatorResult | Promise<ValidatorResult>;\n", "export type ContactMethod = 'Email' | 'Phone Number';\n\n// replaces all characters in a string with '*', except for the first and last char\nexport const censorAllButFirstAndLast = (value: string): string => {\n const split = value.trim().split('');\n for (let i = 0; i < split.length; i++) {\n if (i > 0 && i < split.length - 1) {\n split[i] = '*';\n }\n }\n\n return split.join('');\n};\n\n// censors all but the last four characters of a phone number\nexport const censorPhoneNumber = (val: string): string => {\n if (val.length < 4) {\n return val;\n }\n\n const split = val.split('');\n for (let i = 0; i < split.length - 4; i++) {\n split[i] = '*';\n }\n\n return split.join('');\n};\n", "export * from './country-dial-codes';\nexport * from './translations';\n", "export const countryDialCodes = [\n '+1',\n '+7',\n '+20',\n '+27',\n '+30',\n '+31',\n '+32',\n '+33',\n '+34',\n '+36',\n '+39',\n '+40',\n '+41',\n '+43',\n '+44',\n '+45',\n '+46',\n '+47',\n '+48',\n '+49',\n '+51',\n '+52',\n '+53',\n '+54',\n '+55',\n '+56',\n '+57',\n '+58',\n '+60',\n '+61',\n '+62',\n '+63',\n '+64',\n '+65',\n '+66',\n '+81',\n '+82',\n '+84',\n '+86',\n '+90',\n '+91',\n '+92',\n '+93',\n '+94',\n '+95',\n '+98',\n '+212',\n '+213',\n '+216',\n '+218',\n '+220',\n '+221',\n '+222',\n '+223',\n '+224',\n '+225',\n '+226',\n '+227',\n '+228',\n '+229',\n '+230',\n '+231',\n '+232',\n '+233',\n '+234',\n '+235',\n '+236',\n '+237',\n '+238',\n '+239',\n '+240',\n '+241',\n '+242',\n '+243',\n '+244',\n '+245',\n '+246',\n '+248',\n '+249',\n '+250',\n '+251',\n '+252',\n '+253',\n '+254',\n '+255',\n '+256',\n '+257',\n '+258',\n '+260',\n '+261',\n '+262',\n '+263',\n '+264',\n '+265',\n '+266',\n '+267',\n '+268',\n '+269',\n '+290',\n '+291',\n '+297',\n '+298',\n '+299',\n '+345',\n '+350',\n '+351',\n '+352',\n '+353',\n '+354',\n '+355',\n '+356',\n '+357',\n '+358',\n '+359',\n '+370',\n '+371',\n '+372',\n '+373',\n '+374',\n '+375',\n '+376',\n '+377',\n '+378',\n '+379',\n '+380',\n '+381',\n '+382',\n '+385',\n '+386',\n '+387',\n '+389',\n '+420',\n '+421',\n '+423',\n '+500',\n '+501',\n '+502',\n '+503',\n '+504',\n '+505',\n '+506',\n '+507',\n '+508',\n '+509',\n '+537',\n '+590',\n '+591',\n '+593',\n '+594',\n '+595',\n '+596',\n '+597',\n '+598',\n '+599',\n '+670',\n '+672',\n '+673',\n '+674',\n '+675',\n '+676',\n '+677',\n '+678',\n '+679',\n '+680',\n '+681',\n '+682',\n '+683',\n '+685',\n '+686',\n '+687',\n '+688',\n '+689',\n '+690',\n '+691',\n '+692',\n '+850',\n '+852',\n '+853',\n '+855',\n '+856',\n '+872',\n '+880',\n '+886',\n '+960',\n '+961',\n '+962',\n '+963',\n '+964',\n '+965',\n '+966',\n '+967',\n '+968',\n '+970',\n '+971',\n '+972',\n '+973',\n '+974',\n '+975',\n '+976',\n '+977',\n '+992',\n '+993',\n '+994',\n '+995',\n '+996',\n '+998',\n];\n", "/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { I18n } from 'aws-amplify';\nimport { NoInfer } from '../types';\nimport {\n deDict,\n enDict,\n esDict,\n frDict,\n itDict,\n jaDict,\n zhDict,\n} from './dictionaries';\n\n/**\n * Contains translatable strings that authenticator provides by default. Customers\n * can use this to add custom vocabularies:\n *\n * ```\n * I18n.putVocabulariesForLanguage(\"en\", {\n * [DefaultTexts.SIGN_IN]: \"Custom Sign In Text\",\n * [DefaultTexts.SIGN_IN_BUTTON]: \"Custom Click Here to Sign In\"\n * });\n * ```\n */\nexport const DefaultTexts = {\n BACK_SIGN_IN: 'Back to Sign In',\n BIRTHDATE: 'Birthdate',\n CHANGE_PASSWORD: 'Change Password',\n CHANGING_PASSWORD: 'Changing',\n CODE: 'Code',\n CONFIRM_PASSWORD: 'Confirm Password',\n CONFIRM_RESET_PASSWORD_HEADING: 'Reset your Password',\n CONFIRM_SIGNUP_HEADING: 'Confirm Sign Up',\n CONFIRM_SMS: 'Confirm SMS Code',\n CONFIRM_TOTP: 'Confirm TOTP Code',\n CONFIRM: 'Confirm',\n CONFIRMATION_CODE: 'Confirmation Code',\n CONFIRMING: 'Confirming',\n CREATE_ACCOUNT: 'Create Account',\n CREATING_ACCOUNT: 'Creating Account',\n EMAIL_ADDRESS: 'Email',\n ENTER_CODE: 'Enter your code',\n ENTER_USERNAME: 'Enter your username',\n FAMILY_NAME: 'Family Name',\n GIVEN_NAME: 'Given Name',\n FORGOT_YOUR_PASSWORD: 'Forgot your password? ',\n HIDE_PASSWORD: 'Hide password',\n LOADING: 'Loading',\n LOGIN_NAME: 'Username',\n MIDDLE_NAME: 'Middle Name',\n NAME: 'Name',\n NICKNAME: 'Nickname',\n NEW_PASSWORD: 'New password',\n PASSWORD: 'Password',\n PHONE_NUMBER: 'Phone Number',\n PREFERRED_USERNAME: 'Preferred Username',\n PROFILE: 'Profile',\n RESEND_CODE: 'Resend Code',\n RESET_PASSWORD_HEADING: 'Reset your password',\n RESET_PASSWORD: 'Send Code',\n SEND_CODE: 'Send code',\n SENDING: 'Sending',\n SETUP_TOTP: 'Setup TOTP',\n SHOW_PASSWORD: 'Show password',\n SIGN_IN_BUTTON: 'Sign in',\n SIGN_IN_TAB: 'Sign In',\n SIGN_IN_WITH_AMAZON: 'Sign In with Amazon',\n SIGN_IN_WITH_APPLE: 'Sign In with Apple',\n SIGN_IN_WITH_FACEBOOK: 'Sign In with Facebook',\n SIGN_IN_WITH_GOOGLE: 'Sign In with Google',\n SIGN_IN: 'Sign in to your account',\n SIGN_UP_BUTTON: 'Create a new account',\n SIGNING_IN_BUTTON: 'Signing in',\n SKIP: 'Skip',\n SUBMIT: 'Submit',\n SUBMITTING: 'Submitting',\n VERIFY_CONTACT: 'Verify Contact',\n VERIFY_HEADING: 'Account recovery requires verified contact information',\n VERIFY: 'Verify',\n WEBSITE: 'Website',\n} as const;\n\n// type Phrase = \"Back to Sign In\" | \"Change Password\" | ...\nexport type Phrase = typeof DefaultTexts[keyof typeof DefaultTexts];\n\n/**\n * TODO: Translation keys for dictionaries can be inferred from DefaultTexts\n * by typing it to Partial<Record<Phrase, string>>.\n *\n * But this requires error string keys to be standarized as well, and can be a\n * limiting factor for custom translation keys. Marking it as TODO until we see\n * a reason to strongly type this.\n */\nexport type Dict = Record<string, string>;\n\n/**\n * This helper type checks that given phrase is one of the texts @aws-amplify/ui\n * provides by default. This enables vscode autocompletion to help catch typos\n * during development.\n *\n * You can also use translate<string> to handle custom strings or dynamic content.\n */\nexport function translate<T = Phrase>(phrase: NoInfer<T>): string {\n return I18n.get(phrase);\n}\n\nexport const translations: Record<string, Dict> = {\n de: deDict,\n en: enDict,\n es: esDict,\n fr: frDict,\n it: itDict,\n ja: jaDict,\n zh: zhDict,\n};\n", "export { deDict } from './de';\nexport { enDict } from './en';\nexport { esDict } from './es';\nexport { frDict } from './fr';\nexport { itDict } from './it';\nexport { jaDict } from './ja';\nexport { zhDict } from './zh';\n", "export const deDict = {\n 'Account recovery requires verified contact information':\n 'Zur\u00FCcksetzen des Account ben\u00F6tigt einen verifizierten Account',\n 'An account with the given email already exists.':\n 'Ein Account mit dieser Email existiert bereits.',\n 'Back to Sign In': 'Zur\u00FCck zur Anmeldung',\n 'Change Password': 'Passwort \u00E4ndern',\n Code: 'Code',\n Confirm: 'Best\u00E4tigen',\n 'Confirm a Code': 'Code best\u00E4tigen',\n 'Confirm Sign In': 'Anmeldung best\u00E4tigen',\n 'Confirm Sign Up': 'Registrierung best\u00E4tigen',\n 'Confirmation Code': 'Best\u00E4tigungs-Code',\n 'Create a new account': 'Erstelle einen neuen Account',\n 'Create account': 'Hier registrieren',\n 'Create Account': 'Account erstellen',\n Email: 'Email',\n 'Enter your password': 'Geben Sie Ihr Passwort ein',\n 'Enter your username': 'Geben Sie Ihren Benutzernamen ein',\n 'Forgot Password': 'Passwort vergessen',\n 'Forgot your password? ': 'Passwort vergessen? ',\n 'Have an account? ': 'Schon registriert? ',\n 'Incorrect username or password':\n 'Falscher Benutzername oder falsches Passwort',\n 'Invalid password format': 'Ung\u00FCltiges Passwort-Format',\n 'Invalid phone number format': `Ung\u00FCltiges Telefonummern-Format. Benutze eine Nummer im Format: +12345678900`,\n 'Lost your code? ': 'Code verloren? ',\n 'New Password': 'Neues Passwort',\n 'No account? ': 'Kein Account? ',\n or: 'oder',\n Password: 'Passwort',\n 'Password attempts exceeded':\n 'Die maximale Anzahl der fehlerhaften Anmeldeversuche wurde erreicht',\n 'Phone Number': 'Telefonnummer',\n 'Resend Code': 'Code erneut senden',\n 'Reset password': 'Passwort zur\u00FCcksetzen',\n 'Reset your password': 'Zur\u00FCcksetzen des Passworts',\n 'Send Code': 'Code senden',\n 'Sign in': 'Anmelden',\n 'Sign In': 'Anmelden',\n 'Sign in to your account': 'Melden Sie sich mit Ihrem Account an',\n 'Sign Out': 'Abmelden',\n 'Sign Up': 'Registrieren',\n Skip: '\u00DCberspringen',\n Submit: 'Abschicken',\n 'User already exists': 'Dieser Benutzer existiert bereits',\n 'User does not exist': 'Dieser Benutzer existiert nicht',\n Username: 'Benutzername',\n 'Username cannot be empty': 'Benutzername darf nicht leer sein',\n Verify: 'Verifizieren',\n 'Verify Contact': 'Kontakt verifizieren',\n};\n", "export const enDict = {\n 'Back to Sign In': 'Back to Sign In',\n 'Change Password': 'Change Password',\n Changing: 'Changing',\n Code: 'Code',\n 'Confirm Password': 'Confirm Password',\n 'Reset your Password': 'Reset your Password',\n 'Confirm Sign Up': 'Confirm Sign Up',\n 'Confirm SMS Code': 'Confirm SMS Code',\n 'Confirm TOTP Code': 'Confirm TOTP Code',\n Confirm: 'Confirm',\n 'Confirmation Code': 'Confirmation Code',\n Confirming: 'Confirming',\n 'Create Account': 'Create Account',\n 'Creating Account': 'Creating Account',\n Email: 'Email',\n 'Enter your code': 'Enter your code',\n 'Enter your username': 'Enter your username',\n 'Enter your phone number': 'Enter your phone number',\n 'Enter your email': 'Enter your email',\n 'Forgot your password? ': 'Forgot your password? ',\n 'Hide password': 'Hide password',\n Loading: 'Loading',\n Username: 'Username',\n 'New password': 'New password',\n Password: 'Password',\n 'Phone Number': 'Phone Number',\n 'Resend Code': 'Resend Code',\n 'Reset your password': 'Reset your password',\n 'Send Code': 'Send Code',\n 'Send code': 'Send code',\n Sending: 'Sending',\n 'Setup TOTP': 'Setup TOTP',\n 'Show password': 'Show password',\n 'Sign in': 'Sign in',\n 'Sign In': 'Sign In',\n 'Sign In with Amazon': 'Sign In with Amazon',\n 'Sign In with Apple': 'Sign In with Apple',\n 'Sign In with Facebook': 'Sign In with Facebook',\n 'Sign In with Google': 'Sign In with Google',\n 'Sign in to your account': 'Sign in to your account',\n 'Create a new account': 'Create a new account',\n 'Signing in': 'Signing in',\n Skip: 'Skip',\n Submit: 'Submit',\n Submitting: 'Submitting',\n 'Verify Contact': 'Verify Contact',\n 'Account recovery requires verified contact information':\n 'Account recovery requires verified contact information',\n Verify: 'Verify',\n};\n", "export const esDict = {\n 'Account recovery requires verified contact information':\n 'La recuperaci\u00F3n de la cuenta requiere informaci\u00F3n de contacto verificada',\n 'Back to Sign In': 'Iniciar sesi\u00F3n',\n 'Change Password': 'Cambia la contrase\u00F1a',\n Code: 'C\u00F3digo',\n Confirm: 'Confirmar',\n 'Confirm a Code': 'Confirmar un c\u00F3digo',\n 'Confirm Password': 'Confirmar Contrase\u00F1a',\n 'Confirm Sign In': 'Confirmar inicio de sesi\u00F3n',\n 'Confirm Sign Up': 'Confirmar Registraci\u00F3n',\n 'Confirmation Code': 'Codigo de confirmaci\u00F3n',\n 'Create a new account': 'Crear una cuenta nueva',\n Email: 'Email',\n 'Forgot Password': 'Se te olvid\u00F3 la contrase\u00F1a?',\n 'Incorrect username or password': 'Nombre de usuario o contrase\u00F1a incorrecta',\n 'Invalid password format': 'Formato de contrase\u00F1a inv\u00E1lido',\n 'Invalid phone number format':\n 'Formato de n\\xFAmero de tel\\xE9fono inv\\xE1lido.\\nUtilice el formato de n\\xFAmero de tel\\xE9fono +12345678900',\n 'Loading...': 'Cargando...',\n 'New Password': 'Nueva contrase\u00F1a',\n or: 'o',\n Password: 'Contrase\u00F1a',\n 'Phone Number': 'N\u00FAmero de tel\u00E9fono',\n 'Resend a Code': 'Reenviar un c\u00F3digo',\n 'Resend Code': 'Mandar codigo otra vez',\n 'Send Code': 'Enviar c\u00F3digo',\n 'Sign In': 'Iniciar ses\u00EDon',\n 'Sign in to your account': 'Iniciar ses\u00EDon',\n 'Sign Out': 'Desconectar',\n 'Sign Up': 'Reg\u00EDstrase',\n Skip: 'Omitir',\n Submit: 'Enviar',\n 'User already exists': 'El usuario ya existe',\n 'User does not exist': 'El usuario no existe',\n Username: 'Nombre de usuario',\n 'Username cannot be empty': 'El campo de usuario no puede estar vacido',\n Verify: 'Verificar',\n 'Verify Contact': 'Verificar contacto',\n};\n", "export const frDict = {\n 'Account recovery requires verified contact information':\n 'La r\u00E9cup\u00E9ration du compte n\u00E9cessite des informations de contact v\u00E9rifi\u00E9es',\n 'An account with the given email already exists.':\n 'Un utilisateur avec cette adresse email existe d\u00E9j\u00E0.',\n 'Back to Sign In': 'Retour \u00E0 la connexion',\n Change: 'Modifier',\n 'Change Password': 'Modifier le mot de passe',\n Code: 'Code',\n Confirm: 'Confirmer',\n 'Confirm a Code': 'Confirmer un code',\n 'Confirm Password': 'Confirmez le mot de passe',\n 'Confirm Sign In': 'Confirmer la connexion',\n 'Confirm Sign Up': \"Confirmer l'inscription\",\n 'Confirm SMS Code': 'Confirmer le code SMS',\n 'Confirm TOTP Code': 'Confirmer le code TOTP',\n 'Confirmation Code': 'Code de confirmation',\n 'Create a new account': 'Cr\u00E9er un nouveau compte',\n 'Create account': 'Cr\u00E9er un compte',\n 'Create Account': 'Cr\u00E9er un compte',\n Email: 'Email',\n 'Enter your code': 'Saisissez cotre code de confirmation',\n 'Enter your email': 'Saisissez votre adresse email',\n 'Enter your password': 'Saisissez votre mot de passe',\n 'Enter your phone number': 'Saisissez votre num\u00E9ro de t\u00E9l\u00E9phone',\n 'Enter your username': \"Saisissez votre nom d'utilisateur\",\n 'Forgot Password': 'Mot de passe oubli\u00E9',\n 'Forgot your password? ': 'Mot de passe oubli\u00E9 ? ',\n 'Have an account? ': 'D\u00E9j\u00E0 un compte ? ',\n Hello: 'Bonjour',\n 'Incorrect username or password': 'Identifiant ou mot de passe incorrect',\n 'Invalid password format': 'Format de mot de passe invalide',\n 'Invalid phone number format': `Format de num\u00E9ro de t\u00E9l\u00E9phone invalide. Veuillez utiliser un format +12345678900`,\n 'Loading...': 'Chargement...',\n 'Lost your code? ': 'Vous avez perdu votre code ? ',\n 'Network error': 'Erreur r\u00E9seau',\n 'New Password': 'Nouveau mot de passe',\n 'No account? ': 'Pas de compte ? ',\n or: 'ou',\n Password: 'Mot de passe',\n 'Phone Number': 'Num\u00E9ro de t\u00E9l\u00E9phone',\n 'Resend a Code': 'Renvoyer un code',\n 'Resend Code': 'Renvoyer le code',\n 'Reset password': 'R\u00E9initialisez votre mot de passe',\n 'Reset your password': 'R\u00E9initialisez votre mot de passe',\n Send: 'Envoyer',\n 'Send Code': \"M'envoyer un code\",\n 'Sign in': 'Se connecter',\n 'Sign In': 'Se connecter',\n 'Sign in to your account': 'Connexion \u00E0 votre compte',\n 'Sign In with Amazon': 'Se connecter avec Amazon',\n 'Sign In with AWS': 'Se connecter avec AWS',\n 'Sign In with Facebook': 'Se connecter avec Facebook',\n 'Sign In with Google': 'Se connecter avec Google',\n 'Sign Out': 'D\u00E9connexion',\n 'Sign Up': \"S'inscrire\",\n Skip: 'Passer',\n SMS: 'SMS',\n Submit: 'Soumettre',\n 'User already exists': \"L'utilisateur existe d\u00E9j\u00E0\",\n 'User does not exist': \"L'utilisateur n'existe pas\",\n Username: \"Nom d'utilisateur\",\n 'Username cannot be empty': \"Le nom d'utilisateur doit \u00EAtre renseign\u00E9\",\n 'Username/client id combination not found.': \"L'utilisateur n'existe pas\",\n Verify: 'V\u00E9rifier',\n 'Verify Contact': 'V\u00E9rifier le contact',\n};\n", "export const itDict = {\n 'Account recovery requires verified contact information':\n 'Ripristino del conto richiede un account verificati',\n 'An account with the given email already exists.':\n 'Un account con questa email esiste gi\u00E0.',\n 'Back to Sign In': 'Torna alla Accesso',\n 'Change Password': 'Cambia la password',\n Code: 'Codice',\n Confirm: 'Conferma',\n 'Confirm a Code': 'Codice Conferma',\n 'Confirm Password': 'Conferma la password',\n 'Confirm Sign In': 'Conferma di applicazione',\n 'Confirm Sign Up': 'Registrazione Conferma',\n 'Confirmation Code': 'Codice di verifica',\n 'Create a new account': 'Creare un nuovo account',\n 'Create account': 'Registrati',\n 'Create Account': 'Crea account',\n Email: 'E-mail',\n 'Enter your password': 'Inserire la password',\n 'Enter your username': 'Inserisci il tuo nome utente',\n 'Forgot Password': 'Password dimenticata',\n 'Forgot your password? ': 'Password dimenticata?',\n 'Have an account? ': 'Gi\u00E0 registrato?',\n 'Incorrect username or password': 'Nome utente o password errati',\n 'Invalid password format': 'Formato della password non valido',\n 'Invalid phone number format':\n 'Utilizzo non valido Telefonummern formattare un numero nel formato :. 12.345.678,9 mille',\n 'Lost your code?': 'Perso codice?',\n 'New Password': 'Nuova password',\n or: 'o',\n 'No account? ': 'Nessun account?',\n Password: 'Password',\n 'Password attempts exceeded':\n 'Il numero massimo di tentativi di accesso falliti \u00E8 stato raggiunto',\n 'Phone Number': 'Numero di telefono',\n 'Resend Code': 'Codice Rispedisci',\n 'Reset password': 'Ripristina password',\n 'Reset your password': 'Resetta password',\n 'Send Code': 'Invia codice',\n 'Sign in': 'Accesso',\n 'Sign In': 'Accesso',\n 'Sign in to your account': 'Accedi con il tuo account a',\n 'Sign Out': 'Esci',\n 'Sign Up': 'Iscriviti',\n Skip: 'Salta',\n Submit: 'Sottoscrivi',\n 'User already exists': 'Questo utente esiste gi\u00E0',\n 'User does not exist': 'Questo utente non esiste',\n Username: 'Nome utente',\n 'Username cannot be empty': 'Nome utente non pu\u00F2 essere vuoto',\n Verify: 'Verifica',\n 'Verify Contact': 'Contatto verifica',\n};\n", "export const jaDict = {\n 'Account recovery requires verified contact information':\n '\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u5FA9\u65E7\u306B\u306F\u78BA\u8A8D\u6E08\u307F\u306E\u9023\u7D61\u5148\u304C\u5FC5\u8981\u3067\u3059',\n 'An account with the given email already exists.':\n '\u5165\u529B\u3055\u308C\u305F\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059',\n 'Back to Sign In': '\u30B5\u30A4\u30F3\u30A4\u30F3\u306B\u623B\u308B',\n 'Change Password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5909\u3048\u308B ',\n Code: '\u30B3\u30FC\u30C9',\n Confirm: '\u78BA\u5B9A',\n 'Confirm a Code': '\u30B3\u30FC\u30C9\u3092\u78BA\u8A8D',\n 'Confirm Password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u78BA\u8A8D',\n 'Confirm Sign In': '\u30B5\u30A4\u30F3\u30A4\u30F3\u3059\u308B',\n 'Confirm Sign Up': '\u767B\u9332\u3059\u308B',\n 'Confirmation Code': '\u78BA\u8A8D\u30B3\u30FC\u30C9',\n 'Create a new account': '\u65B0\u3057\u3044\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u4F5C\u308B',\n 'Create account': '\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u4F5C\u308B ',\n 'Create Account': '\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u4F5C\u308B',\n Email: '\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9',\n 'Enter your password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B ',\n 'Enter your username': '\u30E6\u30FC\u30B6\u30FC\u540D\u3092\u5165\u529B ',\n 'Forgot Password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u305F ',\n 'Forgot your password? ': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5FD8\u308C\u307E\u3057\u305F\u304B\uFF1F ',\n 'Have an account? ': '\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u6301\u3063\u3066\u3044\u307E\u3059\u304B\uFF1F',\n 'Incorrect username or password': '\u30E6\u30FC\u30B6\u30FC\u540D\u304B\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u7570\u306A\u308A\u307E\u3059 ',\n 'Invalid password format': '\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u5F62\u5F0F\u304C\u7121\u52B9\u3067\u3059 ',\n 'Invalid phone number format':\n '\u4E0D\u6B63\u306A\u96FB\u8A71\u756A\u53F7\u306E\u5F62\u5F0F\u3067\u3059\u3002\\n+12345678900 \u306E\u5F62\u5F0F\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044',\n 'Lost your code? ': '\u30B3\u30FC\u30C9\u3092\u5931\u304F\u3057\u307E\u3057\u305F\u304B\uFF1F',\n 'New Password': '\u65B0\u3057\u3044\u30D1\u30B9\u30EF\u30FC\u30C9',\n 'No account? ': '\u30A2\u30AB\u30A6\u30F3\u30C8\u304C\u7121\u3044\u3068\u304D ',\n or: '\u53C8\u306F',\n Password: '\u30D1\u30B9\u30EF\u30FC\u30C9 ',\n 'Password attempts exceeded': '\u30B5\u30A4\u30F3\u30A4\u30F3\u306E\u8A66\u884C\u56DE\u6570\u304C\u4E0A\u9650\u306B\u9054\u3057\u307E\u3057\u305F',\n 'Phone Number': '\u96FB\u8A71\u756A\u53F7',\n 'Resend Code': '\u30B3\u30FC\u30C9\u3092\u518D\u9001\u4FE1',\n 'Reset password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u30EA\u30BB\u30C3\u30C8 ',\n 'Reset your password': '\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u30EA\u30BB\u30C3\u30C8\u3059\u308B',\n 'Send Code': '\u30B3\u30FC\u30C9\u3092\u9001\u4FE1',\n 'Sign in': '\u30B5\u30A4\u30F3\u30A4\u30F3',\n 'Sign In': '\u30B5\u30A4\u30F3\u30A4\u30F3 ',\n 'Sign in to your account': '\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u30B5\u30A4\u30F3\u30A4\u30F3 ',\n 'Sign In with Amazon': 'Amazon\u3067\u30B5\u30A4\u30F3\u30A4\u30F3',\n 'Sign In with Facebook': 'Facebook\u3067\u30B5\u30A4\u30F3\u30A4\u30F3',\n 'Sign In with Google': 'Google\u3067\u30B5\u30A4\u30F3\u30A4\u30F3',\n 'Sign Out': '\u30B5\u30A4\u30F3\u30A2\u30A6\u30C8 ',\n 'Sign Up': '\u767B\u9332 ',\n Skip: '\u30B9\u30AD\u30C3\u30D7',\n Submit: '\u9001\u4FE1',\n 'User already exists': '\u65E2\u306B\u30E6\u30FC\u30B6\u30FC\u304C\u5B58\u5728\u3057\u3066\u3044\u307E\u3059 ',\n 'User does not exist': '\u30E6\u30FC\u30B6\u30FC\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 ',\n Username: '\u30E6\u30FC\u30B6\u30FC\u540D ',\n 'Username cannot be empty': '\u30E6\u30FC\u30B6\u30FC\u540D\u306F\u5165\u529B\u5FC5\u9808\u3067\u3059',\n Verify: '\u78BA\u8A8D',\n 'Verify Contact': '\u9023\u7D61\u5148\u3092\u78BA\u8A8D',\n};\n", "export const zhDict = {\n 'Account recovery requires verified contact information':\n '\u8D26\u6237\u6062\u590D\u9700\u8981\u9A8C\u8BC1\u8FC7\u7684\u8054\u7CFB\u65B9\u5F0F',\n 'Back to Sign In': '\u56DE\u5230\u767B\u5F55',\n 'Change Password': '\u6539\u53D8\u5BC6\u7801',\n Code: '\u786E\u8BA4\u7801',\n Confirm: '\u786E\u8BA4',\n 'Confirm a Code': '\u786E\u8BA4\u7801',\n 'Confirm Password': '\u786E\u8BA4\u5BC6\u7801',\n 'Confirm Sign In': '\u786E\u8BA4\u767B\u5F55',\n 'Confirm Sign Up': '\u786E\u8BA4\u6CE8\u518C',\n Email: '\u90AE\u7BB1',\n 'Forgot Password': '\u5FD8\u8BB0\u5BC6\u7801',\n 'Incorrect username or password': '\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF',\n 'Invalid password format': '\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF',\n 'Invalid phone number format': '\u7535\u8BDD\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u4F7F\u7528\u683C\u5F0F +12345678900',\n 'New Password': '\u65B0\u5BC6\u7801',\n or: '\u6216\u8005',\n Password: '\u5BC6\u7801',\n 'Phone Number': '\u7535\u8BDD',\n 'Resend a Code': '\u91CD\u53D1\u786E\u8BA4\u7801',\n 'Send Code': '\u53D1\u9001\u786E\u8BA4\u7801',\n 'Sign In': '\u767B\u5F55',\n 'Sign Out': '\u9000\u51FA',\n 'Sign Up': '\u6CE8\u518C',\n Skip: '\u8DF3\u8FC7',\n Submit: '\u63D0\u4EA4',\n 'User already exists': '\u7528\u6237\u5DF2\u7ECF\u5B58\u5728',\n 'User does not exist': '\u7528\u6237\u4E0D\u5B58\u5728',\n Username: '\u7528\u6237\u540D',\n Verify: '\u9A8C\u8BC1',\n 'Verify Contact': '\u9A8C\u8BC1\u8054\u7CFB\u65B9\u5F0F',\n};\n", "export * from './authenticator';\n", "import { assign, createMachine, forwardTo, spawn } from 'xstate';\n\nimport { AuthContext, AuthEvent } from '../../types';\nimport { stopActor } from './actions';\nimport { resetPasswordActor, signInActor, signOutActor } from './actors';\nimport { defaultServices } from './defaultServices';\nimport { createSignUpMachine } from './signUp';\n\nconst DEFAULT_COUNTRY_CODE = '+1';\n\nexport type AuthenticatorMachineOptions = AuthContext['config'] & {\n initialState?: 'signIn' | 'signUp' | 'resetPassword';\n services?: Partial<typeof defaultServices>;\n};\n\nexport function createAuthenticatorMachine({\n initialState = 'signIn',\n loginMechanisms,\n signUpAttributes,\n socialProviders,\n services: customServices,\n}: AuthenticatorMachineOptions) {\n const services = {\n ...defaultServices,\n ...customServices,\n };\n\n return createMachine<AuthContext, AuthEvent>(\n {\n id: 'authenticator',\n initial: 'idle',\n context: {\n user: undefined,\n config: {\n loginMechanisms,\n signUpAttributes,\n socialProviders,\n },\n actorRef: undefined,\n },\n states: {\n // See: https://xstate.js.org/docs/guides/communication.html#invoking-promises\n idle: {\n invoke: [\n {\n // TODO Wait for Auth to be configured\n src: 'getCurrentUser',\n onDone: {\n actions: 'setUser',\n target: 'authenticated',\n },\n onError: initialState,\n },\n {\n src: 'getAmplifyConfig',\n onDone: {\n actions: 'applyAmplifyConfig',\n },\n },\n ],\n },\n signIn: {\n entry: 'spawnSignInActor',\n exit: stopActor('signInActor'),\n on: {\n SIGN_UP: 'signUp',\n RESET_PASSWORD: 'resetPassword',\n 'done.invoke.signInActor': [\n {\n target: 'signUp',\n cond: 'shouldRedirectToSignUp',\n },\n {\n target: 'resetPassword',\n cond: 'shouldRedirectToResetPassword',\n },\n {\n target: 'authenticated',\n actions: 'setUser',\n },\n ],\n },\n },\n signUp: {\n entry: 'spawnSignUpActor',\n exit: stopActor('signUpActor'),\n on: {\n SIGN_IN: 'signIn',\n 'done.invoke.signUpActor': {\n target: 'idle',\n actions: 'setUser',\n },\n },\n },\n resetPassword: {\n entry: 'spawnResetPasswordActor',\n exit: stopActor('resetPasswordActor'),\n on: {\n SIGN_IN: 'signIn',\n 'done.invoke.resetPasswordActor': 'signIn',\n },\n },\n signOut: {\n entry: 'spawnSignOutActor',\n exit: [stopActor('signOutActor'), 'clearUser'],\n on: { 'done.invoke.signOutActor': 'signIn' },\n },\n authenticated: {\n on: { SIGN_OUT: 'signOut' },\n },\n },\n on: {\n CHANGE: { actions: 'forwardToActor' },\n SUBMIT: { actions: 'forwardToActor' },\n FEDERATED_SIGN_IN: { actions: 'forwardToActor' },\n RESEND: { actions: 'forwardToActor' },\n SIGN_OUT: { actions: 'forwardToActor' },\n SIGN_IN: { actions: 'forwardToActor' },\n SKIP: { actions: 'forwardToActor' },\n },\n },\n {\n actions: {\n forwardToActor: forwardTo((context) => context.actorRef),\n setUser: assign({\n user: (_, event) => event.data.user || event.data,\n }),\n clearUser: assign({\n user: undefined,\n }),\n applyAmplifyConfig: assign({\n config(context, event) {\n // The CLI uses uppercased constants in `aws-exports.js`, while `parameters.json` are lowercase.\n // We use lowercase to be consistent with previous versions' values.\n const cliLoginMechanisms =\n event.data.aws_cognito_username_attributes?.map((s) =>\n s.toLowerCase()\n ) ?? [];\n\n const cliVerificationMechanisms =\n event.data.aws_cognito_verification_mechanisms?.map((s) =>\n s.toLowerCase()\n ) ?? [];\n\n const cliSignUpAttributes =\n event.data.aws_cognito_signup_attributes?.map((s) =>\n s.toLowerCase()\n ) ?? [];\n\n const cliSocialProviders =\n event.data.aws_cognito_social_providers?.map((s) =>\n s.toLowerCase()\n ) ?? [];\n\n // By default, Cognito assumes `username`, so there isn't a different username attribute like `email`.\n // We explicitly add it as a login mechanism to be consistent with Admin UI's language.\n if (cliLoginMechanisms.length === 0) {\n cliLoginMechanisms.push('username');\n }\n\n // Prefer explicitly configured settings over default CLI values\n return {\n loginMechanisms: loginMechanisms ?? cliLoginMechanisms,\n signUpAttributes:\n signUpAttributes ??\n Array.from(\n new Set([\n ...cliVerificationMechanisms,\n ...cliSignUpAttributes,\n ])\n ),\n socialProviders: socialProviders ?? cliSocialProviders.sort(),\n };\n },\n }),\n spawnSignInActor: assign({\n actorRef: (context, event) => {\n const actor = signInActor.withContext({\n authAttributes: event.data?.authAttributes,\n user: event.data?.user,\n intent: event.data?.intent,\n country_code: DEFAULT_COUNTRY_CODE,\n formValues: {},\n validationError: {},\n loginMechanisms: context.config?.loginMechanisms,\n socialProviders: context.config?.socialProviders,\n });\n return spawn(actor, { name: 'signInActor' });\n },\n }),\n spawnSignUpActor: assign({\n actorRef: (context, event) => {\n const actor = createSignUpMachine({ services }).withContext({\n authAttributes: event.data?.authAttributes ?? {},\n country_code: DEFAULT_COUNTRY_CODE,\n intent: event.data?.intent,\n formValues: {},\n validationError: {},\n loginMechanisms: context.config?.loginMechanisms,\n socialProviders: context.config?.socialProviders,\n });\n return spawn(actor, { name: 'signUpActor' });\n },\n }),\n spawnResetPasswordActor: assign({\n actorRef: (context, event) => {\n const actor = resetPasswordActor.withContext({\n formValues: {},\n intent: event.data?.intent,\n username: event.data?.authAttributes?.username,\n validationError: {},\n });\n return spawn(actor, { name: 'resetPasswordActor' });\n },\n }),\n spawnSignOutActor: assign({\n actorRef: (context) => {\n const actor = signOutActor.withContext({\n user: context.user,\n });\n return spawn(actor, { name: 'signOutActor' });\n },\n }),\n },\n guards: {\n shouldRedirectToSignUp: (_, event): boolean => {\n if (!event.data?.intent) return false;\n return event.data.intent === 'confirmSignUp';\n },\n shouldRedirectToResetPassword: (_, event): boolean => {\n if (!event.data?.intent) return false;\n return event.data.intent === 'confirmPasswordReset';\n },\n },\n services,\n }\n );\n}\n", "import { assign, stop } from 'xstate/lib/actions';\n\nimport {\n ActorContextWithForms,\n AuthEvent,\n SignInContext,\n SignUpContext,\n} from '../../types';\n\nexport const stopActor = (machineId: string) => {\n return stop(machineId);\n};\n\n/**\n * https://github.com/statelyai/xstate/issues/866\n *\n * Actions in Xstate take in two arguments - a `context` and\n * an `event`.\n *\n * When writing reusable actions in a separate file for Xstate,\n * you cannot specify the type for both the `context` and the `event`.\n * The bug has been around for 2 years with seemingly no resolution\n * in sight.\n *\n * TypeScript apparently has trouble inferring Xstate properly.\n * So, when writing actions, only specify the type for either `context`\n * or `event` - but not both.\n *\n * https://xstate.js.org/docs/guides/typescript.html#assign-action-behaving-strangely\n *\n * Each of the actions NEEDS at least the `context` argument in the\n * `assign` body - even if it is unused. This is another known bug in\n * how TypeScript integrate with Xstate.\n */\n\n/**\n * \"clear\" actions\n */\nexport const clearAttributeToVerify = assign({\n attributeToVerify: (_) => undefined,\n});\nexport const clearChallengeName = assign({ challengeName: (_) => undefined });\nexport const clearError = assign({ remoteError: (_) => '' });\nexport const clearFormValues = assign({ formValues: (_) => ({}) });\nexport const clearUnverifiedAttributes = assign({\n unverifiedAttributes: (_) => undefined,\n});\nexport const clearUsername = assign({ username: (_) => undefined });\nexport const clearValidationError = assign({ validationError: (_) => ({}) });\n\n/**\n * \"set\" actions\n */\nexport const setChallengeName = assign({\n challengeName: (_, event: AuthEvent) => event.data?.challengeName,\n});\n\nexport const setConfirmResetPasswordIntent = assign({\n redirectIntent: (_) => 'confirmPasswordReset',\n});\n\nexport const setConfirmSignUpIntent = assign({\n redirectIntent: (_) => 'confirmSignUp',\n});\n\nexport const setCredentials = assign({\n authAttributes: (context: SignInContext | SignUpContext, _) => {\n const [primaryAlias] = context.loginMechanisms;\n const username = context.formValues[primaryAlias];\n const password = context.formValues?.password;\n\n return { username, password };\n },\n});\n\nexport const setFieldErrors = assign({\n validationError: (_, event: AuthEvent) => event.data,\n});\n\nexport const setRemoteError = assign({\n remoteError: (_, event: AuthEvent) => event.data?.message || event.data,\n});\n\nexport const setUnverifiedAttributes = assign({\n unverifiedAttributes: (_, event: AuthEvent) => event.data.unverified,\n});\n\nexport const setUser = assign({\n user: (_, event: AuthEvent) => event.data.user || event.data,\n});\n\nexport const setUsername = assign({\n username: (context: ActorContextWithForms, _) => context.formValues.username,\n});\n\nexport const setUsernameAuthAttributes = assign({\n authAttributes: (context: ActorContextWithForms, _) => ({\n username: context.formValues.username,\n }),\n});\n\nexport const handleInput = assign({\n formValues: (context, event: AuthEvent) => {\n const { name, value } = event.data;\n\n return {\n ...context['formValues'],\n [name]: value,\n };\n },\n});\n", "export * from './signIn';\nexport * from './signOut';\nexport * from './resetPassword';\n", "import { Auth } from 'aws-amplify';\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport { createMachine, sendUpdate } from 'xstate';\n\nimport { AuthChallengeNames, AuthEvent, SignInContext } from '../../../types';\nimport { runValidators } from '../../../validators';\nimport {\n clearAttributeToVerify,\n clearChallengeName,\n clearError,\n clearFormValues,\n clearUnverifiedAttributes,\n clearValidationError,\n handleInput,\n setChallengeName,\n setConfirmResetPasswordIntent,\n setConfirmSignUpIntent,\n setCredentials,\n setFieldErrors,\n setRemoteError,\n setUnverifiedAttributes,\n setUser,\n setUsernameAuthAttributes,\n} from '../actions';\nimport { defaultServices } from '../defaultServices';\n\nexport const signInActor = createMachine<SignInContext, AuthEvent>(\n {\n initial: 'init',\n id: 'signInActor',\n states: {\n init: {\n always: [{ target: 'signIn' }],\n },\n signIn: {\n initial: 'edit',\n exit: 'clearFormValues',\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n CHANGE: { actions: 'handleInput' },\n FEDERATED_SIGN_IN: 'federatedSignIn',\n },\n },\n federatedSignIn: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'federatedSignIn',\n // getting navigated out anyway, only track errors.\n // onDone: '#signInActor.resolved',\n onError: { actions: 'setRemoteError' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: ['clearError', sendUpdate()],\n invoke: {\n src: 'signIn',\n onDone: [\n {\n cond: 'shouldSetupTOTP',\n actions: ['setUser', 'setChallengeName'],\n target: '#signInActor.setupTOTP',\n },\n {\n cond: 'shouldConfirmSignIn',\n actions: ['setUser', 'setChallengeName'],\n target: '#signInActor.confirmSignIn',\n },\n {\n cond: 'shouldForceChangePassword',\n actions: ['setUser', 'setChallengeName'],\n target: '#signInActor.forceNewPassword',\n },\n {\n actions: 'setUser',\n target: 'verifying',\n },\n ],\n onError: [\n {\n cond: 'shouldRedirectToConfirmSignUp',\n actions: ['setCredentials', 'setConfirmSignUpIntent'],\n target: 'rejected',\n },\n {\n cond: 'shouldRedirectToConfirmResetPassword',\n actions: [\n 'setUsernameAuthAttributes',\n 'setConfirmResetPasswordIntent',\n ],\n target: 'rejected',\n },\n {\n actions: 'setRemoteError',\n target: 'edit',\n },\n ],\n },\n },\n verifying: {\n tags: ['pending'],\n entry: ['clearError', sendUpdate()],\n invoke: {\n src: 'checkVerifiedContact',\n onDone: [\n {\n cond: 'shouldRequestVerification',\n target: '#signInActor.verifyUser',\n actions: 'setUnverifiedAttributes',\n },\n {\n target: 'resolved',\n },\n ],\n onError: {\n actions: 'setRemoteError',\n target: 'edit',\n },\n },\n },\n resolved: { always: '#signInActor.resolved' },\n rejected: { always: '#signInActor.rejected' },\n },\n },\n confirmSignIn: {\n initial: 'edit',\n exit: ['clearFormValues', 'clearError'],\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n SIGN_IN: '#signInActor.signIn',\n CHANGE: { actions: 'handleInput' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: ['clearError', sendUpdate()],\n invoke: {\n src: 'confirmSignIn',\n onDone: {\n target: '#signInActor.resolved',\n actions: ['setUser', 'clearChallengeName'],\n },\n onError: {\n target: 'edit',\n actions: 'setRemoteError',\n },\n },\n },\n },\n },\n forceNewPassword: {\n type: 'parallel',\n exit: ['clearFormValues', 'clearError'],\n states: {\n validation: {\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'validateFields',\n onDone: {\n target: 'valid',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'invalid',\n actions: 'setFieldErrors',\n },\n },\n },\n valid: { entry: sendUpdate() },\n invalid: { entry: sendUpdate() },\n },\n on: {\n CHANGE: {\n actions: 'handleInput',\n target: '.pending',\n },\n },\n },\n submit: {\n initial: 'idle',\n entry: 'clearError',\n states: {\n idle: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'validate',\n },\n },\n validate: {\n entry: sendUpdate(),\n invoke: {\n src: 'validateFields',\n onDone: {\n target: 'pending',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'idle',\n actions: 'setFieldErrors',\n },\n },\n },\n pending: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'forceNewPassword',\n onDone: {\n target: 'resolved',\n actions: ['setUser', 'setCredentials'],\n },\n onError: {\n target: 'idle',\n actions: 'setRemoteError',\n },\n },\n },\n resolved: { type: 'final', always: '#signInActor.resolved' },\n },\n },\n },\n },\n setupTOTP: {\n initial: 'edit',\n exit: ['clearFormValues', 'clearError'],\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n SIGN_IN: '#signInActor.signIn',\n CHANGE: { actions: 'handleInput' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'verifyTotpToken',\n onDone: {\n actions: ['setUser', 'clearChallengeName'],\n target: '#signInActor.resolved',\n },\n onError: {\n actions: 'setRemoteError',\n target: 'edit',\n },\n },\n },\n },\n },\n verifyUser: {\n initial: 'edit',\n exit: ['clearFormValues', 'clearError'],\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n SKIP: '#signInActor.resolved',\n CHANGE: { actions: 'handleInput' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: 'clearError',\n invoke: {\n src: 'verifyUser',\n onDone: {\n target: '#signInActor.confirmVerifyUser',\n },\n onError: {\n actions: 'setRemoteError',\n target: 'edit',\n },\n },\n },\n },\n },\n confirmVerifyUser: {\n initial: 'edit',\n exit: [\n 'clearFormValues',\n 'clearError',\n 'clearUnverifiedAttributes',\n 'clearAttributeToVerify',\n ],\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n SKIP: '#signInActor.resolved',\n CHANGE: { actions: 'handleInput' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: 'clearError',\n invoke: {\n src: 'confirmVerifyUser',\n onDone: {\n target: '#signInActor.resolved',\n },\n onError: {\n actions: 'setRemoteError',\n target: 'edit',\n },\n },\n },\n },\n },\n resolved: {\n type: 'final',\n data: (context) => ({\n user: context.user,\n }),\n },\n rejected: {\n type: 'final',\n data: (context, event) => {\n return {\n intent: context.redirectIntent,\n authAttributes: context.authAttributes,\n };\n },\n },\n },\n },\n {\n actions: {\n clearAttributeToVerify,\n clearChallengeName,\n clearError,\n clearFormValues,\n clearUnverifiedAttributes,\n clearValidationError,\n handleInput,\n setChallengeName,\n setConfirmResetPasswordIntent,\n setConfirmSignUpIntent,\n setCredentials,\n setFieldErrors,\n setRemoteError,\n setUnverifiedAttributes,\n setUser,\n setUsernameAuthAttributes,\n },\n guards: {\n shouldConfirmSignIn: (_, event): boolean => {\n const challengeName = get(event, 'data.challengeName');\n const validChallengeNames = [\n AuthChallengeNames.SMS_MFA,\n AuthChallengeNames.SOFTWARE_TOKEN_MFA,\n ];\n\n return validChallengeNames.includes(challengeName);\n },\n shouldRedirectToConfirmSignUp: (_, event): boolean => {\n return event.data.code === 'UserNotConfirmedException';\n },\n shouldRedirectToConfirmResetPassword: (_, event): boolean => {\n return event.data.code === 'PasswordResetRequiredException';\n },\n shouldSetupTOTP: (_, event): boolean => {\n const challengeName = get(event, 'data.challengeName');\n\n return challengeName === AuthChallengeNames.MFA_SETUP;\n },\n shouldForceChangePassword: (_, event): boolean => {\n const challengeName = get(event, 'data.challengeName');\n\n return challengeName === AuthChallengeNames.NEW_PASSWORD_REQUIRED;\n },\n shouldRequestVerification: (_, event): boolean => {\n const { unverified, verified } = event.data;\n\n return isEmpty(verified) && !isEmpty(unverified);\n },\n },\n services: {\n async signIn(context) {\n const source = context.formValues;\n const { country_code, username, password } = source;\n\n return Auth.signIn((country_code ?? '') + username, password);\n },\n async confirmSignIn(context, event) {\n const { challengeName, user } = context;\n const { confirmation_code: code } = context.formValues;\n\n let mfaType;\n if (\n challengeName === AuthChallengeNames.SMS_MFA ||\n challengeName === AuthChallengeNames.SOFTWARE_TOKEN_MFA\n ) {\n mfaType = challengeName;\n }\n\n return Auth.confirmSignIn(user, code, mfaType);\n },\n async forceNewPassword(context, event) {\n const { user, formValues } = context;\n const { password } = formValues;\n\n return Auth.completeNewPassword(user, password);\n },\n async verifyTotpToken(context, event) {\n const { user } = context;\n const { confirmation_code } = context.formValues;\n\n return Auth.verifyTotpToken(user, confirmation_code);\n },\n async federatedSignIn(_, event) {\n const { provider } = event.data;\n\n return await Auth.federatedSignIn({ provider });\n },\n async checkVerifiedContact(context, event) {\n const { user } = context;\n const result = await Auth.verifiedContact(user);\n\n return result;\n },\n async verifyUser(context, event) {\n const { unverifiedAttr } = context.formValues;\n const result = await Auth.verifyCurrentUserAttribute(unverifiedAttr);\n\n context.attributeToVerify = unverifiedAttr;\n\n return result;\n },\n async confirmVerifyUser(context, event) {\n const { attributeToVerify } = context;\n const { confirmation_code } = context.formValues;\n\n return await Auth.verifyCurrentUserAttributeSubmit(\n attributeToVerify,\n confirmation_code\n );\n },\n async validateFields(context, event) {\n return runValidators(context.formValues, [\n defaultServices.validateConfirmPassword,\n ]);\n },\n },\n }\n);\n", "import { AuthFormData, Validator } from '../types';\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\n\n// Runs all validators given. Resolves if there are no error. Rejects otherwise.\nexport const runValidators = async (\n formData: AuthFormData,\n validators: Validator[]\n) => {\n const errors = await Promise.all(\n validators.map((validator) => validator(formData))\n );\n const mergedError = merge({}, ...errors);\n\n if (isEmpty(mergedError)) {\n // no errors were found\n return Promise.resolve();\n } else {\n return Promise.reject(mergedError);\n }\n};\n", "import { Amplify, Auth } from 'aws-amplify';\n\nimport { ValidatorResult } from '../../types';\n\nexport const defaultServices = {\n async getAmplifyConfig() {\n return Amplify.configure();\n },\n\n async getCurrentUser() {\n return Auth.currentAuthenticatedUser();\n },\n\n // Validation hooks for overriding\n async validateCustomSignUp(formData): Promise<ValidatorResult> {},\n async validateConfirmPassword<Validator>(formData): Promise<ValidatorResult> {\n const { password, confirm_password } = formData;\n\n if (!password && !confirm_password) {\n // these inputs are clean, don't complain yet\n return null;\n } else if (password && confirm_password && password !== confirm_password) {\n // only return an error if both fields have text entered and the passwords do not match\n return {\n confirm_password: 'Your passwords must match',\n };\n }\n },\n async validatePreferredUsername(formData): Promise<ValidatorResult> {},\n};\n", "import { createMachine } from 'xstate';\n\nimport { AuthEvent, SignOutContext } from '../../../types';\nimport { Auth } from 'aws-amplify';\n\nexport const signOutActor = createMachine<SignOutContext, AuthEvent>(\n {\n initial: 'pending',\n id: 'signOutActor',\n states: {\n pending: {\n tags: ['pending'],\n invoke: {\n src: 'signOut',\n onDone: 'resolved',\n onError: 'rejected',\n },\n },\n resolved: { type: 'final' },\n rejected: { type: 'final' },\n },\n },\n {\n services: {\n signOut: () => Auth.signOut(/* global? */),\n },\n }\n);\n", "import { Auth } from 'aws-amplify';\nimport { createMachine, sendUpdate } from 'xstate';\n\nimport { AuthEvent, ResetPasswordContext } from '../../../types';\nimport { runValidators } from '../../../validators';\nimport {\n clearError,\n clearFormValues,\n clearUsername,\n clearValidationError,\n handleInput,\n setFieldErrors,\n setRemoteError,\n setUsername,\n} from '../actions';\nimport { defaultServices } from '../defaultServices';\n\n// TODO `createResetPasswordMachine` that accepts `services`\nexport const resetPasswordActor = createMachine<\n ResetPasswordContext,\n AuthEvent\n>(\n {\n id: 'resetPasswordActor',\n initial: 'init',\n states: {\n init: {\n always: [\n { target: 'confirmResetPassword', cond: 'shouldAutoConfirmReset' },\n { target: 'resetPassword' },\n ],\n },\n resetPassword: {\n initial: 'edit',\n exit: ['clearFormValues', 'clearError'],\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n CHANGE: { actions: 'handleInput' },\n },\n },\n submit: {\n tags: ['pending'],\n entry: [sendUpdate(), 'setUsername', 'clearError'],\n invoke: {\n src: 'resetPassword',\n onDone: {\n target: '#resetPasswordActor.confirmResetPassword',\n },\n onError: {\n actions: ['setRemoteError'],\n target: 'edit',\n },\n },\n },\n },\n },\n confirmResetPassword: {\n type: 'parallel',\n exit: ['clearFormValues', 'clearError', 'clearUsername'],\n states: {\n validation: {\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'validateFields',\n onDone: {\n target: 'valid',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'invalid',\n actions: 'setFieldErrors',\n },\n },\n },\n valid: { entry: sendUpdate() },\n invalid: { entry: sendUpdate() },\n },\n on: {\n CHANGE: {\n actions: 'handleInput',\n target: '.pending',\n },\n },\n },\n submission: {\n initial: 'idle',\n states: {\n idle: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'validate',\n RESEND: 'resendCode',\n CHANGE: { actions: 'handleInput' },\n },\n },\n validate: {\n entry: sendUpdate(),\n invoke: {\n src: 'validateFields',\n onDone: {\n target: 'pending',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'idle',\n actions: 'setFieldErrors',\n },\n },\n },\n resendCode: {\n tags: ['pending'],\n entry: ['clearError', sendUpdate()],\n invoke: {\n src: 'resetPassword',\n onDone: { target: 'idle' },\n onError: {\n actions: 'setRemoteError',\n target: 'idle',\n },\n },\n },\n pending: {\n tags: ['pending'],\n entry: ['clearError', sendUpdate()],\n invoke: {\n src: 'confirmResetPassword',\n onDone: {\n actions: 'clearUsername',\n target: '#resetPasswordActor.resolved',\n },\n onError: {\n actions: 'setRemoteError',\n target: 'idle',\n },\n },\n },\n },\n },\n },\n },\n resolved: { type: 'final' },\n },\n },\n {\n actions: {\n clearError,\n clearFormValues,\n clearUsername,\n clearValidationError,\n handleInput,\n setFieldErrors,\n setRemoteError,\n setUsername,\n },\n guards: {\n shouldAutoConfirmReset: (context, event): boolean => {\n return !!(context.intent && context.intent === 'confirmPasswordReset');\n },\n },\n services: {\n async resetPassword(context) {\n const username = context.formValues?.username ?? context.username;\n\n return Auth.forgotPassword(username);\n },\n async confirmResetPassword(context) {\n const { username } = context;\n const { confirmation_code: code, password } = context.formValues;\n\n return Auth.forgotPasswordSubmit(username, code, password);\n },\n async validateFields(context, event) {\n return runValidators(context.formValues, [\n defaultServices.validateConfirmPassword,\n ]);\n },\n },\n }\n);\n", "import { Auth } from 'aws-amplify';\nimport get from 'lodash/get';\nimport pickBy from 'lodash/pickBy';\nimport { createMachine, sendUpdate } from 'xstate';\n\nimport { AuthEvent, SignUpContext } from '../../types';\nimport { runValidators } from '../../validators';\nimport {\n clearError,\n clearFormValues,\n clearValidationError,\n handleInput,\n setCredentials,\n setFieldErrors,\n setRemoteError,\n setUser,\n} from './actions';\nimport { defaultServices } from './defaultServices';\n\nexport type SignUpMachineOptions = {\n services?: Partial<typeof defaultServices>;\n};\n\nexport function createSignUpMachine({ services }: SignUpMachineOptions) {\n return createMachine<SignUpContext, AuthEvent>(\n {\n id: 'signUpActor',\n initial: 'init',\n states: {\n init: {\n always: [\n { target: 'confirmSignUp', cond: 'shouldInitConfirmSignUp' },\n { target: 'signUp' },\n ],\n },\n signUp: {\n type: 'parallel',\n exit: ['clearError', 'clearFormValues'],\n states: {\n validation: {\n initial: 'pending',\n states: {\n pending: {\n invoke: {\n src: 'validateSignUp',\n onDone: {\n target: 'valid',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'invalid',\n actions: 'setFieldErrors',\n },\n },\n },\n valid: { entry: sendUpdate() },\n invalid: { entry: sendUpdate() },\n },\n on: {\n CHANGE: {\n actions: 'handleInput',\n target: '.pending',\n },\n },\n },\n submission: {\n initial: 'idle',\n states: {\n idle: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'validate',\n FEDERATED_SIGN_IN: 'federatedSignIn',\n },\n },\n federatedSignIn: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'federatedSignIn',\n onDone: '#signUpActor.resolved',\n onError: { actions: 'setRemoteError' },\n },\n },\n validate: {\n entry: sendUpdate(),\n invoke: {\n src: 'validateSignUp',\n onDone: {\n target: 'pending',\n actions: 'clearValidationError',\n },\n onError: {\n target: 'idle',\n actions: 'setFieldErrors',\n },\n },\n },\n pending: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'signUp',\n onDone: [\n {\n cond: 'shouldSkipConfirm',\n target: 'skipConfirm',\n actions: ['setUser'],\n },\n {\n target: 'resolved',\n actions: ['setUser', 'setCredentials'],\n },\n ],\n onError: {\n target: 'idle',\n actions: 'setRemoteError',\n },\n },\n },\n skipConfirm: {\n invoke: {\n src: 'signIn',\n onDone: {\n target: '#signUpActor.resolved',\n actions: 'setUser',\n },\n onError: {\n target: 'idle',\n actions: 'setRemoteError',\n },\n },\n },\n\n resolved: {\n type: 'final',\n always: '#signUpActor.confirmSignUp',\n },\n },\n },\n },\n },\n confirmSignUp: {\n initial: 'edit',\n states: {\n edit: {\n entry: sendUpdate(),\n on: {\n SUBMIT: 'submit',\n CHANGE: { actions: 'handleInput' },\n RESEND: 'resend',\n },\n },\n resend: {\n tags: ['pending'],\n entry: sendUpdate(),\n invoke: {\n src: 'resendConfirmationCode',\n onDone: { target: 'edit' },\n onError: [\n {\n target: '#signUpActor.resolved',\n actions: 'setUser',\n cond: 'isUserAlreadyConfirmed',\n },\n { target: 'edit', actions: 'setRemoteError' },\n ],\n },\n },\n submit: {\n tags: ['pending'],\n entry: [sendUpdate(), 'clearError'],\n invoke: {\n src: 'confirmSignUp',\n onDone: { target: '#signUpActor.resolved', actions: 'setUser' },\n onError: { target: 'edit', actions: 'setRemoteError' },\n },\n },\n },\n },\n resolved: {\n type: 'final',\n data: (context, event) => {\n const { username, password } = context.authAttributes;\n\n return {\n user: get(event, 'data.user') || context.user,\n authAttributes: { username, password },\n };\n },\n },\n },\n },\n {\n guards: {\n /**\n * This guard covers an edge case that exists in the current state of the UI.\n * As of now, our ConfirmSignUp screen only supports showing an input for a\n * confirmation code. However, a Cognito UserPool can instead verify users\n * through a link that gets emailed to them. If a user verifies through the\n * link and then they click on the \"Resend Code\" button, they will get an error\n * saying that the user has already been confirmed. If we encounter that error,\n * we want to just funnel them through the rest of the flow. In the future, we will\n * want to update our UI to support both confirmation codes and links.\n *\n * https://github.com/aws-amplify/amplify-ui/issues/219\n */\n isUserAlreadyConfirmed: (context, event) => {\n return event.data.message === 'User is already confirmed.';\n },\n shouldInitConfirmSignUp: (context) => {\n return context.intent && context.intent === 'confirmSignUp';\n },\n shouldSkipConfirm: (context, event) => {\n return event.data.userConfirmed;\n },\n },\n actions: {\n clearError,\n clearFormValues,\n clearValidationError,\n handleInput,\n setCredentials,\n setFieldErrors,\n setRemoteError,\n setUser,\n },\n services: {\n async signIn(context, event) {\n const { user, authAttributes, formValues } = context;\n\n const username =\n get(user, 'username') || get(authAttributes, 'username');\n const password = get(formValues, 'password');\n\n return await Auth.signIn(username, password);\n },\n async confirmSignUp(context, event) {\n const { user, authAttributes, formValues } = context;\n const { confirmation_code: code } = formValues;\n\n const username =\n get(user, 'username') || get(authAttributes, 'username');\n const { password } = authAttributes;\n\n await Auth.confirmSignUp(username, code);\n\n return await Auth.signIn(username, password);\n },\n async resendConfirmationCode(context, event) {\n const { user, authAttributes } = context;\n const username =\n get(user, 'username') || get(authAttributes, 'username');\n\n return Auth.resendSignUp(username);\n },\n async federatedSignIn(_, event) {\n const { provider } = event.data;\n const result = await Auth.federatedSignIn({ provider });\n return result;\n },\n async signUp(context, _event) {\n const { formValues, loginMechanisms } = context;\n const [primaryAlias] = loginMechanisms ?? ['username'];\n\n if (formValues.phone_number) {\n formValues.phone_number =\n `${formValues.country_code}${formValues.phone_number}`.replace(\n /[^A-Z0-9+]/gi,\n ''\n );\n }\n\n const username = formValues[primaryAlias];\n const { password } = formValues;\n const attributes = pickBy(formValues, (value, key) => {\n // Allowlist of Cognito User Pool Attributes (from OpenID Connect specification)\n // See: https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html\n switch (key) {\n case 'address':\n case 'birthdate':\n case 'email':\n case 'family_name':\n case 'gender':\n case 'given_name':\n case 'locale':\n case 'middle_name':\n case 'name':\n case 'nickname':\n case 'phone_number':\n case 'picture':\n case 'preferred_username':\n case 'profile':\n case 'updated_at':\n case 'website':\n case 'zoneinfo':\n return true;\n\n // Otherwise, it's a custom attribute\n default:\n return key.startsWith('custom:');\n }\n });\n\n const result = await Auth.signUp({ username, password, attributes });\n\n // TODO `cond`itionally transition to `signUp.confirm` or `resolved` based on result\n return result;\n },\n async validateSignUp(context, event) {\n // This needs to exist in the machine to reference new `services`\n return runValidators(context.formValues, [\n // Validation for default form fields\n services.validateConfirmPassword,\n services.validatePreferredUsername,\n\n // Validation for any custom Sign Up fields\n services.validateCustomSignUp,\n ]);\n },\n },\n }\n );\n}\n", "import { createTheme } from './createTheme';\nimport { baseTheme } from './baseTheme';\n\nexport { createTheme };\nexport * from './types';\n\nexport const defaultTheme = createTheme(\n {\n name: 'default-theme',\n },\n baseTheme\n);\n", "// Internal Style Dictionary methods\nimport deepExtend from 'style-dictionary/lib/utils/deepExtend';\nimport flattenProperties from 'style-dictionary/lib/utils/flattenProperties';\n\nimport { baseTheme as _baseTheme } from './baseTheme';\nimport { Theme, BaseTheme, WebTheme, Override } from './types';\nimport { cssValue, cssNameTransform } from './utils';\nimport { WebTokens } from './tokens';\nimport { DesignToken, WebDesignToken } from './tokens/types/designToken';\n\n/**\n * This will take a design token and add some data to it for it\n * to be used in JS/CSS. It will create its CSS var name and update\n * the value to use a CSS var if it is a reference. It will also\n * add a `.toString()` method to make it easier to use in JS.\n *\n * We should see if there is a way to share this logic with style dictionary...\n */\nfunction setupToken(token: DesignToken, path: Array<string>): WebDesignToken {\n const name = `--${cssNameTransform({ path })}`;\n const { value } = token;\n\n return {\n name,\n path,\n value: cssValue(token),\n original: value,\n toString: () => `var(${name})`,\n };\n}\n\n/**\n * Recursive function that will walk down the token object\n * and perform the setupToken function on each token.\n * Similar to what Style Dictionary does.\n */\nfunction setupTokens(obj: any, path = []) {\n let tokens = {};\n\n if (obj.hasOwnProperty('value')) {\n return setupToken(obj, path);\n } else {\n for (const name in obj) {\n if (obj.hasOwnProperty(name)) {\n tokens[name] = setupTokens(obj[name], path.concat(name));\n }\n }\n }\n\n return tokens;\n}\n\n/**\n * This will be used like `const myTheme = createTheme({})`\n * `myTheme` can then be passed to a Provider or the generated CSS\n * can be passed to a stylesheet at build-time or run-time.\n * const myTheme = createTheme({})\n * const myOtherTheme = createTheme({}, myTheme);\n */\nexport function createTheme(\n theme?: Theme,\n baseTheme: BaseTheme = _baseTheme\n): WebTheme {\n // merge theme and baseTheme to get a complete theme\n // deepExtend is an internal Style Dictionary method\n // that performs a deep merge on n objects. We could change\n // this to another 3p deep merge solution too.\n const mergedTheme: BaseTheme = deepExtend([{}, baseTheme, theme]);\n\n // Setting up the tokens. This is similar to what Style Dictionary\n // does. At the end of this, each token should have:\n // - CSS variable name of itself\n // - its value (reference to another CSS variable or raw value)\n const tokens = setupTokens(mergedTheme.tokens) as WebTokens; // Setting the type here because setupTokens is recursive\n\n const { breakpoints, name } = mergedTheme;\n\n // flattenProperties is another internal Style Dictionary function\n // that creates an array of all tokens.\n let cssText =\n `[data-amplify-theme=\"${name}\"] {\\n` +\n flattenProperties(tokens)\n .map((token) => `${token.name}: ${token.value};`)\n .join('\\n') +\n `\\n}\\n`;\n\n let overrides: Array<Override> = [];\n\n /**\n * For each override, we setup the tokens and then generate the CSS.\n * This allows us to have one single CSS string for all possible overrides\n * and avoid re-renders in React, but also support other frameworks as well.\n */\n if (mergedTheme.overrides) {\n overrides = mergedTheme.overrides.map((override) => {\n const tokens = setupTokens(override.tokens);\n const customProperties = flattenProperties(tokens)\n .map((token) => `${token.name}: ${token.value};`)\n .join('\\n');\n // Overrides can have a selector, media query, breakpoint, or color mode\n // for creating the selector\n if ('selector' in override) {\n cssText += `\\n${override.selector} {\\n${customProperties}\\n}`;\n }\n if ('mediaQuery' in override) {\n cssText += `\\n@media (${override.mediaQuery}) {\n [data-amplify-theme=\"${name}\"] {\n ${customProperties}\n }\n}`;\n }\n if ('breakpoint' in override) {\n const breakpoint = mergedTheme.breakpoints.values[override.breakpoint];\n const breakpointUnit = mergedTheme.breakpoints.unit;\n cssText += `\\n@media(min-width: ${breakpoint}${breakpointUnit}) {\n [data-amplify-theme=\"${name}\"] {\n ${customProperties}\n }\n}`;\n }\n if ('colorMode' in override) {\n cssText += `\\n@media(prefers-color-scheme: ${override.colorMode}) {\n [data-amplify-theme=\"${name}\"][data-amplify-color-mode=\"system\"] {\\n${customProperties}\\n}\n }`;\n cssText += `\\n[data-amplify-theme=\"${name}\"][data-amplify-color-mode=\"${override.colorMode}\"] {\\n${customProperties}\\n}`;\n }\n\n return {\n ...override,\n tokens,\n };\n });\n }\n\n return {\n tokens,\n breakpoints,\n name,\n cssText,\n // keep overrides separate from base theme\n // this allows web platforms to use plain CSS scoped to a\n // selector and only override the CSS vars needed. This\n // means we could generate CSS at build-time in a postcss\n // plugin, or do it at runtime and inject the CSS into a\n // style tag.\n // This also allows RN to dynamically switch themes in a\n // provider.\n overrides,\n };\n}\n", "import { tokens } from './tokens';\nimport { breakpoints } from './breakpoints';\nimport { BaseTheme } from './types';\n\nexport const baseTheme: BaseTheme = {\n tokens,\n breakpoints,\n name: 'base-theme',\n};\n", "import { borderWidths, BorderWidths, WebBorderWidths } from './borderWidths';\nimport { colors, Colors, WebColors } from './colors';\nimport { fonts, Fonts, WebFonts } from './fonts';\nimport { fontSizes, FontSizes, WebFontSizes } from './fontSizes';\nimport { fontWeights, FontWeights, WebFontWeights } from './fontWeights';\nimport { lineHeights, LineHeights, WebLineHeights } from './lineHeights';\nimport { opacities, Opacities, WebOpacities } from './opacities';\nimport {\n outlineOffsets,\n OutlineOffsets,\n WebOutlineOffsets,\n} from './outlineOffsets';\nimport {\n outlineWidths,\n OutlineWidths,\n WebOutlineWidths,\n} from './outlineWidths';\nimport { radii, Radii, WebRadii } from './radii';\nimport { shadows, Shadows, WebShadows } from './shadows';\nimport { space, Space, WebSpace } from './space';\nimport { time, Time, WebTime } from './time';\nimport { transforms, Transforms, WebTransforms } from './transforms';\n\nexport interface Tokens {\n components: any; // TODO type this\n borderWidths: BorderWidths;\n colors: Colors;\n fonts: Fonts;\n fontSizes: FontSizes;\n fontWeights: FontWeights;\n lineHeights: LineHeights;\n opacities: Opacities;\n outlineOffsets: OutlineOffsets;\n outlineWidths: OutlineWidths;\n radii: Radii;\n shadows: Shadows;\n space: Space;\n time: Time;\n transforms: Transforms;\n}\n\n/**\n * The fully setup theme tokens. It has the same shape as Tokens\n * but each token has added fields.\n */\nexport interface WebTokens extends Tokens {\n borderWidths: WebBorderWidths;\n colors: WebColors;\n fonts: WebFonts;\n fontSizes: WebFontSizes;\n fontWeights: WebFontWeights;\n lineHeights: WebLineHeights;\n opacities: WebOpacities;\n outlineOffsets: WebOutlineOffsets;\n outlineWidths: WebOutlineWidths;\n radii: WebRadii;\n shadows: WebShadows;\n space: WebSpace;\n time: WebTime;\n transform: WebTransforms;\n}\n\nexport const tokens: Tokens = {\n // TODO: convert component theme files to typescript\n components: require('./components'),\n borderWidths,\n colors,\n fonts,\n fontSizes,\n fontWeights,\n lineHeights,\n opacities,\n outlineOffsets,\n outlineWidths,\n radii,\n shadows,\n space,\n time,\n transforms,\n};\n", "import {\n DesignToken,\n WebDesignToken,\n BorderWidthValue,\n} from './types/designToken';\n\nexport type BorderWidths = {\n /**\n * Small border, used for inputs and such\n */\n small: DesignToken<BorderWidthValue>;\n /**\n * Medium border, used for\n */\n medium: DesignToken<BorderWidthValue>;\n /**\n * Large border\n */\n large: DesignToken<BorderWidthValue>;\n};\n\nexport type WebBorderWidths = {\n [Property in keyof BorderWidths]: WebDesignToken<BorderWidthValue>;\n};\n\nexport const borderWidths: BorderWidths = {\n small: { value: '1px' },\n medium: { value: '2px' },\n large: { value: '3px' },\n};\n", "import { DesignToken, WebDesignToken, ColorValue } from './types/designToken';\nimport { OrdinalScale, OrdinalVariation } from './types/scales';\n\ntype ScaleKeys = 10 | 20 | 40 | 60 | 80 | 90 | 100;\n\ntype ColorScale<DesignTokenType = DesignToken<ColorValue>> = {\n [key in ScaleKeys]: DesignTokenType;\n};\n\ntype FontColors<DesignTokenType = DesignToken<ColorValue>> = {\n inverse: DesignTokenType;\n interactive: DesignTokenType;\n hover: DesignTokenType;\n focus: DesignTokenType;\n active: DesignTokenType;\n disabled: DesignTokenType;\n} & OrdinalScale<DesignTokenType> &\n OrdinalVariation<DesignTokenType>;\n\ntype BackgroundColors<DesignTokenType = DesignToken<ColorValue>> = {\n disabled: DesignTokenType;\n} & OrdinalScale<DesignTokenType> &\n OrdinalVariation<DesignTokenType>;\n\ntype BorderColors<DesignTokenType = DesignToken<ColorValue>> = {\n disabled: DesignTokenType;\n focus: DesignTokenType;\n error: DesignTokenType;\n} & OrdinalScale<DesignTokenType>;\n\ntype ColorTypes<DesignTokenType = DesignToken<ColorValue>> =\n | { [key in ScaleKeys]: DesignTokenType }\n | FontColors\n | BackgroundColors\n | DesignTokenType\n | BorderColors;\n\ntype WebColorTypes = ColorTypes<WebDesignToken<ColorValue>>;\n\nexport type Colors = {\n // base color palette\n red: ColorScale;\n orange: ColorScale;\n yellow: ColorScale;\n green: ColorScale;\n teal: ColorScale;\n blue: ColorScale;\n purple: ColorScale;\n pink: ColorScale;\n neutral: ColorScale;\n white: DesignToken<ColorValue>;\n black: DesignToken<ColorValue>;\n\n // Semantic colors\n font: FontColors;\n background: BackgroundColors;\n border: BorderColors;\n brand: {\n primary: ColorScale;\n secondary: ColorScale;\n };\n\n [key: string]: ColorTypes | Record<string, ColorTypes>;\n};\n\nexport type WebColors = {\n red: ColorScale<WebDesignToken<ColorValue>>;\n orange: ColorScale<WebDesignToken<ColorValue>>;\n yellow: ColorScale<WebDesignToken<ColorValue>>;\n green: ColorScale<WebDesignToken<ColorValue>>;\n teal: ColorScale<WebDesignToken<ColorValue>>;\n blue: ColorScale<WebDesignToken<ColorValue>>;\n purple: ColorScale<WebDesignToken<ColorValue>>;\n pink: ColorScale<WebDesignToken<ColorValue>>;\n neutral: ColorScale<WebDesignToken<ColorValue>>;\n white: WebDesignToken<ColorValue>;\n black: WebDesignToken<ColorValue>;\n\n font: FontColors<WebDesignToken<ColorValue>>;\n background: BackgroundColors<WebDesignToken<ColorValue>>;\n border: BorderColors<WebDesignToken<ColorValue>>;\n brand: {\n primary: ColorScale<WebDesignToken<ColorValue>>;\n secondary: ColorScale<WebDesignToken<ColorValue>>;\n };\n\n [key: string]: WebColorTypes | Record<string, WebColorTypes>;\n};\n\nexport const colors: Colors = {\n red: {\n 10: { value: 'hsl(0, 75%, 95%)' },\n 20: { value: 'hsl(0, 75%, 85%)' },\n 40: { value: 'hsl(0, 75%, 75%)' },\n 60: { value: 'hsl(0, 50%, 50%)' },\n 80: { value: 'hsl(0, 95%, 30%)' },\n 90: { value: 'hsl(0, 100%, 20%)' },\n 100: { value: 'hsl(0, 100%, 15%)' },\n },\n\n orange: {\n 10: { value: 'hsl(30, 75%, 95%)' },\n 20: { value: 'hsl(30, 75%, 85%)' },\n 40: { value: 'hsl(30, 75%, 75%)' },\n 60: { value: 'hsl(30, 50%, 50%)' },\n 80: { value: 'hsl(30, 95%, 30%)' },\n 90: { value: 'hsl(30, 100%, 20%)' },\n 100: { value: 'hsl(30, 100%, 15%)' },\n },\n\n yellow: {\n 10: { value: 'hsl(60, 75%, 95%)' },\n 20: { value: 'hsl(60, 75%, 85%)' },\n 40: { value: 'hsl(60, 75%, 75%)' },\n 60: { value: 'hsl(60, 50%, 50%)' },\n 80: { value: 'hsl(60, 95%, 30%)' },\n 90: { value: 'hsl(60, 100%, 20%)' },\n 100: { value: 'hsl(60, 100%, 15%)' },\n },\n\n green: {\n 10: { value: 'hsl(130, 75%, 95%)' },\n 20: { value: 'hsl(130, 75%, 85%)' },\n 40: { value: 'hsl(130, 75%, 75%)' },\n 60: { value: 'hsl(130, 50%, 50%)' },\n 80: { value: 'hsl(130, 95%, 30%)' },\n 90: { value: 'hsl(130, 100%, 20%)' },\n 100: { value: 'hsl(130, 100%, 15%)' },\n },\n\n teal: {\n 10: { value: 'hsl(190, 75%, 95%)' },\n 20: { value: 'hsl(190, 75%, 85%)' },\n 40: { value: 'hsl(190, 70%, 70%)' },\n 60: { value: 'hsl(190, 50%, 50%)' },\n 80: { value: 'hsl(190, 95%, 30%)' },\n 90: { value: 'hsl(190, 100%, 20%)' },\n 100: { value: 'hsl(190, 100%, 15%)' },\n },\n\n blue: {\n 10: { value: 'hsl(220, 95%, 95%)' },\n 20: { value: 'hsl(220, 85%, 85%)' },\n 40: { value: 'hsl(220, 70%, 70%)' },\n 60: { value: 'hsl(220, 50%, 50%)' },\n 80: { value: 'hsl(220, 95%, 30%)' },\n 90: { value: 'hsl(220, 100%, 20%)' },\n 100: { value: 'hsl(220, 100%, 15%)' },\n },\n\n purple: {\n 10: { value: 'hsl(300, 95%, 95%)' },\n 20: { value: 'hsl(300, 85%, 85%)' },\n 40: { value: 'hsl(300, 70%, 70%)' },\n 60: { value: 'hsl(300, 50%, 50%)' },\n 80: { value: 'hsl(300, 95%, 30%)' },\n 90: { value: 'hsl(300, 100%, 20%)' },\n 100: { value: 'hsl(300, 100%, 15%)' },\n },\n\n pink: {\n 10: { value: 'hsl(340, 95%, 95%)' },\n 20: { value: 'hsl(340, 90%, 85%)' },\n 40: { value: 'hsl(340, 70%, 70%)' },\n 60: { value: 'hsl(340, 50%, 50%)' },\n 80: { value: 'hsl(340, 95%, 30%)' },\n 90: { value: 'hsl(340, 100%, 20%)' },\n 100: { value: 'hsl(340, 100%, 15%)' },\n },\n\n neutral: {\n 10: { value: 'hsl(210, 5%, 95%)' },\n 20: { value: 'hsl(210, 5%, 90%)' },\n 40: { value: 'hsl(210, 5%, 80%)' },\n 60: { value: 'hsl(210, 6%, 70%)' },\n 80: { value: 'hsl(210, 10%, 40%)' },\n 90: { value: 'hsl(210, 25%, 25%)' },\n 100: { value: 'hsl(210, 50%, 10%)' },\n },\n\n brand: {\n primary: {\n 10: { value: '{colors.teal.10.value}' },\n 20: { value: '{colors.teal.20.value}' },\n 40: { value: '{colors.teal.40.value}' },\n 60: { value: '{colors.teal.60.value}' },\n 80: { value: '{colors.teal.80.value}' },\n 90: { value: '{colors.teal.90.value}' },\n 100: { value: '{colors.teal.100.value}' },\n },\n secondary: {\n 10: { value: '{colors.purple.10.value}' },\n 20: { value: '{colors.purple.20.value}' },\n 40: { value: '{colors.purple.40.value}' },\n 60: { value: '{colors.purple.60.value}' },\n 80: { value: '{colors.purple.80.value}' },\n 90: { value: '{colors.purple.90.value}' },\n 100: { value: '{colors.purple.100.value}' },\n },\n },\n\n font: {\n primary: { value: '{colors.neutral.100.value}' },\n secondary: { value: '{colors.neutral.80.value}' },\n tertiary: { value: '{colors.neutral.60.value}' },\n disabled: { value: '{colors.font.tertiary.value}' },\n inverse: { value: '{colors.white.value}' },\n\n interactive: { value: '{colors.brand.primary.80.value}' },\n // Hover and Focus colors are intentionally different colors.\n // This allows users to distinguish between the current keyboard focus\n // and the location of their pointer\n hover: { value: '{colors.brand.primary.90.value}' },\n // Focus color is set to 100 to ensure enough contrast for accessibility\n focus: { value: '{colors.brand.primary.100.value}' },\n active: { value: '{colors.brand.primary.100.value}' },\n\n info: { value: '{colors.blue.80.value}' },\n warning: { value: '{colors.orange.80.value}' },\n error: { value: '{colors.red.80.value}' },\n success: { value: '{colors.green.80.value}' },\n },\n\n background: {\n primary: { value: '{colors.white.value}' },\n secondary: { value: '{colors.neutral.10.value}' },\n tertiary: { value: '{colors.neutral.20.value}' },\n disabled: { value: '{colors.background.tertiary.value}' },\n\n info: { value: '{colors.blue.20.value}' },\n warning: { value: '{colors.orange.20.value}' },\n error: { value: '{colors.red.20.value}' },\n success: { value: '{colors.green.20.value}' },\n },\n\n border: {\n primary: { value: '{colors.neutral.60.value}' },\n secondary: { value: '{colors.neutral.40.value}' },\n tertiary: { value: '{colors.neutral.20.value}' },\n\n disabled: { value: '{colors.border.tertiary.value}' },\n // Focus color is set to 100 to ensure enough contrast for accessibility\n focus: { value: '{colors.brand.primary.100.value}' },\n error: { value: '{colors.red.80.value}' },\n },\n\n shadow: {\n primary: { value: 'hsla(210, 50%, 10%, 0.25)' },\n secondary: { value: 'hsla(210, 50%, 10%, 0.15)' },\n tertiary: { value: 'hsla(210, 50%, 10%, 0.05)' },\n },\n\n overlay: {\n 10: { value: 'hsla(0, 0%, 0%, 0.1)' },\n 20: { value: 'hsla(0, 0%, 0%, 0.2)' },\n 30: { value: 'hsla(0, 0%, 0%, 0.3)' },\n 40: { value: 'hsla(0, 0%, 0%, 0.4)' },\n 50: { value: 'hsla(0, 0%, 0%, 0.5)' },\n 60: { value: 'hsla(0, 0%, 0%, 0.6)' },\n 70: { value: 'hsla(0, 0%, 0%, 0.7)' },\n 80: { value: 'hsla(0, 0%, 0%, 0.8)' },\n 90: { value: 'hsla(0, 0%, 0%, 0.9)' },\n },\n\n black: {\n value: 'hsl(0, 0%, 0%)',\n },\n white: { value: 'hsl(0, 0%, 100%)' },\n transparent: { value: 'transparent' },\n};\n", "import { DesignToken, WebDesignToken, FontValue } from './types/designToken';\n\nexport type Fonts = {\n default: {\n variable: DesignToken<FontValue>;\n static: DesignToken<FontValue>;\n };\n};\n\nexport interface WebFonts {\n default: {\n [Property in keyof Fonts['default']]: WebDesignToken<FontValue>;\n };\n}\n\n// TODO: update the design tokens to use an array\n// export interface FontDesignToken {\n// value: Array<string>\n// }\n\nexport const fonts: Fonts = {\n default: {\n variable: {\n value: `'InterVariable', -apple-system, BlinkMacSystemFont,\n 'Helvetica Neue', 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Open Sans',\n sans-serif`,\n },\n static: {\n value: `'Inter', -apple-system, BlinkMacSystemFont, 'Helvetica Neue',\n 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Open Sans', sans-serif`,\n },\n },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n FontSizeValue,\n} from './types/designToken';\n\nexport type FontSizes = {\n xxxs: DesignToken<FontSizeValue>;\n xxs: DesignToken<FontSizeValue>;\n xs: DesignToken<FontSizeValue>;\n small: DesignToken<FontSizeValue>;\n medium: DesignToken<FontSizeValue>;\n large: DesignToken<FontSizeValue>;\n xl: DesignToken<FontSizeValue>;\n xxl: DesignToken<FontSizeValue>;\n xxxl: DesignToken<FontSizeValue>;\n xxxxl: DesignToken<FontSizeValue>;\n};\n\nexport type WebFontSizes = {\n [Property in keyof FontSizes]: WebDesignToken<FontSizeValue>;\n};\n\nexport const fontSizes: FontSizes = {\n xxxs: { value: '0.375rem' },\n xxs: { value: '0.5rem' },\n xs: { value: '0.75rem' },\n small: { value: '0.875rem' },\n medium: { value: '1rem' },\n large: { value: '1.25rem' },\n xl: { value: '1.5rem' },\n xxl: { value: '2rem' },\n xxxl: { value: '3rem' },\n xxxxl: { value: '5rem' },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n FontWeightValue,\n} from './types/designToken';\n\nexport type FontWeights = {\n hairline: DesignToken<FontWeightValue>;\n thin: DesignToken<FontWeightValue>;\n light: DesignToken<FontWeightValue>;\n normal: DesignToken<FontWeightValue>;\n medium: DesignToken<FontWeightValue>;\n semibold: DesignToken<FontWeightValue>;\n bold: DesignToken<FontWeightValue>;\n extrabold: DesignToken<FontWeightValue>;\n black: DesignToken<FontWeightValue>;\n};\n\nexport type WebFontWeights = {\n [Property in keyof FontWeights]: WebDesignToken<FontWeightValue>;\n};\n\nexport const fontWeights: FontWeights = {\n hairline: { value: 100 },\n thin: { value: 200 },\n light: { value: 300 },\n normal: { value: 400 },\n medium: { value: 500 },\n semibold: { value: 600 },\n bold: { value: 700 },\n extrabold: { value: 800 },\n black: { value: 900 },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n LineHeightValue,\n} from './types/designToken';\n\nexport type LineHeights = {\n small: DesignToken<LineHeightValue>;\n medium: DesignToken<LineHeightValue>;\n large: DesignToken<LineHeightValue>;\n};\n\nexport type WebLineHeights = {\n [Property in keyof LineHeights]: WebDesignToken<LineHeightValue>;\n};\n\nexport const lineHeights: LineHeights = {\n small: { value: '1.5' },\n medium: { value: '1.75' },\n large: { value: '2' },\n};\n", "import { DesignToken, WebDesignToken, OpacityValue } from './types/designToken';\n\nexport type Opacities = {\n // TODO: Update these so the values aren't directly tied to the names\n 0: DesignToken<OpacityValue>;\n 10: DesignToken<OpacityValue>;\n 20: DesignToken<OpacityValue>;\n 30: DesignToken<OpacityValue>;\n 40: DesignToken<OpacityValue>;\n 50: DesignToken<OpacityValue>;\n 60: DesignToken<OpacityValue>;\n 70: DesignToken<OpacityValue>;\n 80: DesignToken<OpacityValue>;\n 90: DesignToken<OpacityValue>;\n 100: DesignToken<OpacityValue>;\n};\n\nexport type WebOpacities = {\n [Property in keyof Opacities]: WebDesignToken<OpacityValue>;\n};\n\nexport const opacities: Opacities = {\n 0: {\n value: '0',\n },\n 10: {\n value: '0.1',\n },\n 20: {\n value: '0.2',\n },\n 30: {\n value: '0.3',\n },\n 40: {\n value: '0.4',\n },\n 50: {\n value: '0.5',\n },\n 60: {\n value: '0.6',\n },\n 70: {\n value: '0.7',\n },\n 80: {\n value: '0.8',\n },\n 90: {\n value: '0.9',\n },\n 100: {\n value: '1',\n },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n OutlineOffsetValue,\n} from './types/designToken';\n\nexport type OutlineOffsets = {\n small: DesignToken<OutlineOffsetValue>;\n medium: DesignToken<OutlineOffsetValue>;\n large: DesignToken<OutlineOffsetValue>;\n};\n\nexport type WebOutlineOffsets = {\n [Property in keyof OutlineOffsets]: WebDesignToken<OutlineOffsetValue>;\n};\n\nexport const outlineOffsets: OutlineOffsets = {\n small: { value: '1px' },\n medium: { value: '2px' },\n large: { value: '3px' },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n OutlineWidthValue,\n} from './types/designToken';\n\nexport type OutlineWidths = {\n small: DesignToken<OutlineWidthValue>;\n medium: DesignToken<OutlineWidthValue>;\n large: DesignToken<OutlineWidthValue>;\n};\n\nexport type WebOutlineWidths = {\n [Property in keyof OutlineWidths]: WebDesignToken<OutlineWidthValue>;\n};\n\nexport const outlineWidths: OutlineWidths = {\n small: { value: '1px' },\n medium: { value: '2px' },\n large: { value: '3px' },\n};\n", "import { DesignToken, WebDesignToken, RadiusValue } from './types/designToken';\n\nexport type Radii = {\n xs: DesignToken<RadiusValue>;\n small: DesignToken<RadiusValue>;\n medium: DesignToken<RadiusValue>;\n large: DesignToken<RadiusValue>;\n xl: DesignToken<RadiusValue>;\n xxl: DesignToken<RadiusValue>;\n xxxl: DesignToken<RadiusValue>;\n};\n\nexport type WebRadii = {\n [Property in keyof Radii]: WebDesignToken<RadiusValue>;\n};\n\nexport const radii: Radii = {\n xs: { value: '0.125rem' },\n small: { value: '0.25rem' },\n medium: { value: '0.5rem' },\n large: { value: '1rem' },\n xl: { value: '2rem' },\n xxl: { value: '4rem' },\n xxxl: { value: '8rem' },\n};\n", "import { DesignToken, WebDesignToken, ShadowValue } from './types/designToken';\n\nexport type Shadows = {\n small: DesignToken<ShadowValue>;\n medium: DesignToken<ShadowValue>;\n large: DesignToken<ShadowValue>;\n};\n\nexport type WebShadows = {\n [Property in keyof Shadows]: WebDesignToken<ShadowValue>;\n};\n\nexport const shadows: Shadows = {\n small: {\n value: {\n offsetX: '0px',\n offsetY: '2px',\n blurRadius: '4px',\n color: '{colors.shadow.tertiary.value}',\n },\n },\n medium: {\n value: {\n offsetX: '0px',\n offsetY: '2px',\n blurRadius: '6px',\n color: '{colors.shadow.secondary.value}',\n },\n },\n large: {\n value: {\n offsetX: '0px',\n offsetY: '4px',\n blurRadius: '12px',\n color: '{colors.shadow.primary.value}',\n },\n },\n};\n", "import { DesignToken, WebDesignToken, SpaceValue } from './types/designToken';\n\nexport type Space = {\n xxxs: DesignToken<SpaceValue>;\n xxs: DesignToken<SpaceValue>;\n xs: DesignToken<SpaceValue>;\n small: DesignToken<SpaceValue>;\n medium: DesignToken<SpaceValue>;\n large: DesignToken<SpaceValue>;\n xl: DesignToken<SpaceValue>;\n xxl: DesignToken<SpaceValue>;\n xxxl: DesignToken<SpaceValue>;\n relative: {\n xxxs: DesignToken<SpaceValue>;\n xxs: DesignToken<SpaceValue>;\n xs: DesignToken<SpaceValue>;\n small: DesignToken<SpaceValue>;\n medium: DesignToken<SpaceValue>;\n large: DesignToken<SpaceValue>;\n xl: DesignToken<SpaceValue>;\n xxl: DesignToken<SpaceValue>;\n xxxl: DesignToken<SpaceValue>;\n };\n};\n\nexport type WebSpace = {\n [Property in keyof Omit<Space, 'relative'>]: WebDesignToken<SpaceValue>;\n} & {\n relative: {\n [Property in keyof Space['relative']]: WebDesignToken<SpaceValue>;\n };\n};\n\nexport const space: Space = {\n xxxs: { value: '0.25rem' },\n xxs: { value: '0.375rem' },\n xs: { value: '0.5rem' },\n small: { value: '0.75rem' },\n medium: { value: '1rem' },\n large: { value: '1.5rem' },\n xl: { value: '2.0rem' },\n xxl: { value: '3.0rem' },\n xxxl: { value: '4.5rem' },\n relative: {\n //creating a second set of sizes using em which will be sized relative to a parent instead of the root\n xxxs: { value: '0.25em' },\n xxs: { value: '0.375rem' },\n xs: { value: '0.5em' },\n small: { value: '0.75em' },\n medium: { value: '1em' },\n large: { value: '1.5em' },\n xl: { value: '2.0em' },\n xxl: { value: '3.0em' },\n xxxl: { value: '4.5em' },\n },\n};\n", "import { DesignToken, WebDesignToken, TimeValue } from './types/designToken';\n\nexport type Time = {\n short: DesignToken<TimeValue>;\n medium: DesignToken<TimeValue>;\n long: DesignToken<TimeValue>;\n};\n\nexport type WebTime = {\n [Property in keyof Time]: WebDesignToken<TimeValue>;\n};\n\nexport const time: Time = {\n short: { value: '100ms' },\n medium: { value: '250ms' },\n long: { value: '500ms' },\n};\n", "import {\n DesignToken,\n WebDesignToken,\n TransformValue,\n} from './types/designToken';\n\nexport type Transforms = {\n slideX: {\n small: DesignToken<TransformValue>;\n medium: DesignToken<TransformValue>;\n large: DesignToken<TransformValue>;\n };\n};\n\nexport type WebTransforms = {\n slideX: {\n [Property in keyof Transforms['slideX']]: WebDesignToken<TransformValue>;\n };\n};\n\nexport const transforms: Transforms = {\n // TODO: make this more generic and cross-platform\n slideX: {\n small: { value: 'translateX(0.5em)' },\n medium: { value: 'translateX(1em)' },\n large: { value: 'translateX(2em)' },\n },\n};\n", "export interface Breakpoints {\n values: {\n base: number;\n small: number;\n medium: number;\n large: number;\n xl: number;\n xxl: number;\n };\n unit: string;\n defaultBreakpoint: string;\n}\n\nexport const breakpoints: Breakpoints = {\n values: {\n base: 0,\n small: 30, // 480px (16px base)\n medium: 48, // 768px\n large: 62, // 992px\n xl: 80, // 1280px\n xxl: 96, // 1536px\n },\n unit: 'em',\n defaultBreakpoint: 'base',\n};\n", "import kebabCase from 'lodash/kebabCase';\n// internal style dictionary function\nimport usesReference from 'style-dictionary/lib/utils/references/usesReference';\n\nimport { DesignToken } from './tokens/types/designToken';\n\nexport const CSS_VARIABLE_PREFIX = 'amplify';\n\nfunction referenceValue(value: string) {\n if (usesReference(value)) {\n const path = value.replace(/\\{|\\}/g, '').replace('.value', '').split('.');\n return `var(--${cssNameTransform({ path })})`;\n }\n return value;\n}\n\nexport function cssValue(token: DesignToken) {\n const { value } = token;\n if (typeof value === 'string') {\n return referenceValue(value);\n }\n if (typeof value === 'object') {\n if ('offsetX' in value) {\n const {\n offsetX = '',\n offsetY = '',\n blurRadius = '',\n spreadRadius = '',\n color = '',\n } = value;\n return [\n referenceValue(offsetX),\n referenceValue(offsetY),\n referenceValue(blurRadius),\n referenceValue(spreadRadius),\n referenceValue(color),\n ].join(' ');\n }\n }\n\n return value;\n}\n\ninterface NameTransformProps {\n path?: Array<string>;\n}\n\nexport function cssNameTransform({ path = [] }: NameTransformProps): string {\n return `${kebabCase([CSS_VARIABLE_PREFIX, ...path].join(' '))}`;\n}\n", "import { PartialDeep } from 'type-fest';\nimport { Tokens, WebTokens } from './tokens';\nimport { Breakpoints } from './breakpoints';\n\nexport * from './tokens/types/designToken';\n\n/**\n * An override is a set of tokens that override others\n * in certain contexts. On Android, these are like resource\n * qualifiers. On the web, these are like media queries with\n * a set of CSS variables in it. A theme should contain\n * everything it needs to render\n */\nexport type Override =\n | SelectorOverride\n | MediaQueryOverride\n | BreakpointOverride\n | ColorModeOverride;\n\ninterface BaseOverride {\n tokens?: PartialDeep<Tokens>;\n}\n\n/**\n * This override takes a breakpoint name and creates a media-query for that\n * breakpoint\n * ```css\n * @media (min-width: 20em) {\n * [data-amplify-theme] {\n * --amplify-font-size-large: 2rem;\n * }\n * }\n * ```\n */\ninterface BreakpointOverride extends BaseOverride {\n breakpoint: keyof Breakpoints['values'];\n}\n\n/**\n * ```css\n * @media (prefers-color-scheme: dark) {\n * --amplify-colors-background-primary: black;\n * --amplify-colors-font-primary: white;\n * }\n * ```\n */\nexport interface MediaQueryOverride extends BaseOverride {\n mediaQuery: string;\n}\n\n/**\n * ```css\n * .disco-theme {\n * --amplify-colors-background-primary: pink;\n * }\n * [data-my-cool-theme] {\n * --amplify-colors-font-primary: purple;\n * }\n * ```\n */\nexport interface SelectorOverride extends BaseOverride {\n selector: string;\n}\n\ntype ColorMode = 'light' | 'dark';\n\n/**\n * This creates a color mode override, where the color mode is 'light' or 'dark'.\n * Note: there is no 'system' here.\n *\n * ```css\n * @media(prefers-color-scheme: dark) {\n * [data-amplify-color-mode=\"system\"] {\n * }\n * }\n *\n * [data-amplify-color-mode=\"dark\"] {\n *\n * }\n * ```\n */\nexport interface ColorModeOverride extends BaseOverride {\n colorMode: ColorMode;\n}\n\n/**\n * A Theme just needs a name. This is what a user would generally deal with.\n * They can define any tokens or breakpoints they need, but they don't need a\n * complete theme with all tokens.\n */\nexport interface Theme {\n /**\n * The name of the theme. This is used to create scoped CSS to allow for\n * multiple themes on a page.\n */\n name: string;\n tokens?: PartialDeep<Tokens>;\n breakpoints?: PartialDeep<Breakpoints>;\n /**\n * Overrides allow you to change design tokens in different contexts, like\n * light and dark mode. You can also have other media query overrides as well\n * as breakpoint overrides which correspond to the Breakpoints on a theme,\n * and a generic selector override.\n */\n overrides?: Array<Override>;\n}\n\n/**\n * A BaseTheme has all tokens and breakpoints required\n */\nexport interface BaseTheme extends Theme {\n tokens: Tokens;\n breakpoints: Breakpoints;\n overrides?: Array<Override>;\n}\n\n/**\n * WebTheme is a fully built theme that has cssText based\n * on the design tokens and all design tokens have added fields\n * to be used in Javascript/Typescript.\n */\nexport interface WebTheme extends BaseTheme {\n tokens: WebTokens;\n cssText: string;\n}\n", "/**\n * Helper function to test if something is a design token or not.\n * Used in the React component style props.\n *\n * @param arg - thing to test if it is a design token or not\n * @returns boolean\n */\nexport function isDesignToken(arg: unknown): arg is WebDesignToken {\n if (typeof arg === 'object') {\n return arg.hasOwnProperty('value');\n } else {\n return false;\n }\n}\n\n/**\n *\n */\nexport type DesignToken<ValueType = any> = {\n value: ValueType;\n};\n\n/**\n * A fully setup design token ready to be used in web platform.\n */\nexport type WebDesignToken<ValueType = any> = {\n /**\n * Name of the design token\n */\n name: string;\n /**\n * Object path of the design token. Used for constructing the name\n */\n path: Array<string>;\n /**\n * Original (unresolved, untransformed) value of the design token\n */\n original: ValueType;\n /**\n * The wrapped CSS variable name of this design token, for example\n * `var(--amplify-colors-font-primary)`\n */\n toString(): string;\n} & DesignToken<ValueType>;\n\nexport type ColorValue = string;\nexport type BorderWidthValue = string;\nexport type FontValue = string;\nexport type FontSizeValue = string;\nexport type FontWeightValue = number;\nexport type LineHeightValue = string;\nexport type OpacityValue = string;\nexport type OutlineOffsetValue = string;\nexport type OutlineWidthValue = string;\nexport type RadiusValue = string;\nexport type ShadowValue = {\n offsetX: string;\n offsetY: string;\n blurRadius: string;\n spreadRadius?: string;\n color: string;\n};\nexport type SpaceValue = string;\nexport type TimeValue = string;\nexport type TransformValue = string;\n"],
5
+ "mappings": "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AM,IACxB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IACpC,EAAM,GAAK,IAGb,MAAO,GAAM,KAAK,KCzBpB,ICAA,IAAO,GAAM,IAAmB,CAC9B,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QC9MF,IAYA,OAAqB,0BCZrB,ICAA,IAAO,GAAM,GAAS,CACpB,yDACE,sEACF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",
6
+ "names": []
7
+ }