@xyo-network/react-form-credit-card 3.0.2 → 3.0.3

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 (106) hide show
  1. package/dist/browser/components/controls/WithFormControlProps.d.ts +6 -0
  2. package/dist/browser/components/controls/WithFormControlProps.d.ts.map +1 -0
  3. package/dist/browser/components/controls/card/Email.d.ts +4 -0
  4. package/dist/browser/components/controls/card/Email.d.ts.map +1 -0
  5. package/dist/browser/components/controls/card/Expiration.d.ts +4 -0
  6. package/dist/browser/components/controls/card/Expiration.d.ts.map +1 -0
  7. package/dist/browser/components/controls/card/FormControlTextField.d.ts +10 -0
  8. package/dist/browser/components/controls/card/FormControlTextField.d.ts.map +1 -0
  9. package/dist/browser/components/controls/card/Name.d.ts +7 -0
  10. package/dist/browser/components/controls/card/Name.d.ts.map +1 -0
  11. package/dist/browser/components/controls/card/Options.d.ts +12 -0
  12. package/dist/browser/components/controls/card/Options.d.ts.map +1 -0
  13. package/dist/browser/components/controls/card/Zip.d.ts +4 -0
  14. package/dist/browser/components/controls/card/Zip.d.ts.map +1 -0
  15. package/dist/browser/components/controls/card/cvv/Cvv.d.ts +4 -0
  16. package/dist/browser/components/controls/card/cvv/Cvv.d.ts.map +1 -0
  17. package/dist/browser/components/controls/card/cvv/index.d.ts +3 -0
  18. package/dist/browser/components/controls/card/cvv/index.d.ts.map +1 -0
  19. package/dist/browser/components/controls/card/cvv/use.d.ts +9 -0
  20. package/dist/browser/components/controls/card/cvv/use.d.ts.map +1 -0
  21. package/dist/browser/components/controls/card/index.d.ts +10 -0
  22. package/dist/browser/components/controls/card/index.d.ts.map +1 -0
  23. package/dist/browser/components/controls/card/number/Number.d.ts +4 -0
  24. package/dist/browser/components/controls/card/number/Number.d.ts.map +1 -0
  25. package/dist/browser/components/controls/card/number/index.d.ts +3 -0
  26. package/dist/browser/components/controls/card/number/index.d.ts.map +1 -0
  27. package/dist/browser/components/controls/card/number/use.d.ts +10 -0
  28. package/dist/browser/components/controls/card/number/use.d.ts.map +1 -0
  29. package/dist/browser/components/controls/card/useCreditCardFormControl.d.ts +9 -0
  30. package/dist/browser/components/controls/card/useCreditCardFormControl.d.ts.map +1 -0
  31. package/dist/browser/components/controls/index.d.ts +3 -0
  32. package/dist/browser/components/controls/index.d.ts.map +1 -0
  33. package/dist/browser/components/form/Form.d.ts +5 -0
  34. package/dist/browser/components/form/Form.d.ts.map +1 -0
  35. package/dist/browser/components/form/InputFieldsStack.d.ts +7 -0
  36. package/dist/browser/components/form/InputFieldsStack.d.ts.map +1 -0
  37. package/dist/browser/components/form/Props.d.ts +14 -0
  38. package/dist/browser/components/form/Props.d.ts.map +1 -0
  39. package/dist/browser/components/form/index.d.ts +5 -0
  40. package/dist/browser/components/form/index.d.ts.map +1 -0
  41. package/dist/browser/components/form/useFormStorage.d.ts +5 -0
  42. package/dist/browser/components/form/useFormStorage.d.ts.map +1 -0
  43. package/dist/browser/components/img/index.d.ts +5 -0
  44. package/dist/browser/components/img/index.d.ts.map +1 -0
  45. package/dist/browser/components/index.d.ts +4 -0
  46. package/dist/browser/components/index.d.ts.map +1 -0
  47. package/dist/browser/components/support/Fields.d.ts +4 -0
  48. package/dist/browser/components/support/Fields.d.ts.map +1 -0
  49. package/dist/browser/components/support/InputError.d.ts +5 -0
  50. package/dist/browser/components/support/InputError.d.ts.map +1 -0
  51. package/dist/browser/components/support/index.d.ts +4 -0
  52. package/dist/browser/components/support/index.d.ts.map +1 -0
  53. package/dist/browser/components/support/validateCreditCardInputs.d.ts +3 -0
  54. package/dist/browser/components/support/validateCreditCardInputs.d.ts.map +1 -0
  55. package/dist/browser/context/FormGroupCreditCardContext.d.ts +7 -0
  56. package/dist/browser/context/FormGroupCreditCardContext.d.ts.map +1 -0
  57. package/dist/browser/context/FormGroupCreditCardProvider.d.ts +10 -0
  58. package/dist/browser/context/FormGroupCreditCardProvider.d.ts.map +1 -0
  59. package/dist/browser/context/index.d.ts +4 -0
  60. package/dist/browser/context/index.d.ts.map +1 -0
  61. package/dist/browser/context/useFormGroupWithCreditCard.d.ts +6 -0
  62. package/dist/browser/context/useFormGroupWithCreditCard.d.ts.map +1 -0
  63. package/dist/browser/controls/CreditCardCvv.d.ts +20 -0
  64. package/dist/browser/controls/CreditCardCvv.d.ts.map +1 -0
  65. package/dist/browser/controls/CreditCardExpiry.d.ts +21 -0
  66. package/dist/browser/controls/CreditCardExpiry.d.ts.map +1 -0
  67. package/dist/browser/controls/CreditCardNumber.d.ts +23 -0
  68. package/dist/browser/controls/CreditCardNumber.d.ts.map +1 -0
  69. package/dist/browser/controls/Email.d.ts +14 -0
  70. package/dist/browser/controls/Email.d.ts.map +1 -0
  71. package/dist/browser/controls/Name.d.ts +10 -0
  72. package/dist/browser/controls/Name.d.ts.map +1 -0
  73. package/dist/browser/controls/Zip.d.ts +13 -0
  74. package/dist/browser/controls/Zip.d.ts.map +1 -0
  75. package/dist/browser/controls/index.d.ts +7 -0
  76. package/dist/browser/controls/index.d.ts.map +1 -0
  77. package/dist/browser/index.d.ts +6 -223
  78. package/dist/browser/index.d.ts.map +1 -0
  79. package/dist/browser/index.mjs +15 -15
  80. package/dist/browser/index.mjs.map +1 -1
  81. package/dist/browser/models/CreditCardInput.d.ts +18 -0
  82. package/dist/browser/models/CreditCardInput.d.ts.map +1 -0
  83. package/dist/browser/models/index.d.ts +2 -0
  84. package/dist/browser/models/index.d.ts.map +1 -0
  85. package/dist/browser/utils/index.d.ts +2 -0
  86. package/dist/browser/utils/index.d.ts.map +1 -0
  87. package/dist/browser/utils/umask.d.ts +2 -0
  88. package/dist/browser/utils/umask.d.ts.map +1 -0
  89. package/package.json +57 -51
  90. package/src/components/controls/card/Email.tsx +9 -3
  91. package/src/components/controls/card/Expiration.tsx +9 -3
  92. package/src/components/controls/card/FormControlTextField.tsx +6 -2
  93. package/src/components/controls/card/Name.tsx +9 -3
  94. package/src/components/controls/card/Options.ts +3 -1
  95. package/src/components/controls/card/Zip.tsx +12 -4
  96. package/src/components/controls/card/cvv/Cvv.tsx +12 -4
  97. package/src/components/controls/card/cvv/use.ts +6 -2
  98. package/src/components/controls/card/number/Number.tsx +9 -3
  99. package/src/components/controls/card/number/use.ts +6 -2
  100. package/src/components/controls/card/useCreditCardFormControl.tsx +8 -4
  101. package/src/components/form/Form.tsx +6 -1
  102. package/src/components/form/InputFieldsStack.tsx +29 -4
  103. package/src/components/form/useFormStorage.tsx +10 -4
  104. package/src/context/FormGroupCreditCardProvider.tsx +10 -3
  105. package/src/stories/form.stories.tsx +1 -3
  106. package/xy.config.ts +1 -3
@@ -2,7 +2,9 @@ import type { StandardTextFieldProps } from '@mui/material'
2
2
  import { FormControl as MuiFormControl, TextField } from '@mui/material'
3
3
  import type { FormControl } from '@xyo-network/react-form-group'
4
4
  import { LabeledTextFieldWrapper } from '@xyo-network/react-shared'
5
- import type { ChangeEventHandler, FocusEventHandler, KeyboardEvent } from 'react'
5
+ import type {
6
+ ChangeEventHandler, FocusEventHandler, KeyboardEvent,
7
+ } from 'react'
6
8
  import React, { forwardRef } from 'react'
7
9
 
8
10
  export interface FormControlTextFieldProps extends StandardTextFieldProps {
@@ -12,7 +14,9 @@ export interface FormControlTextFieldProps extends StandardTextFieldProps {
12
14
  }
13
15
 
14
16
  export const FormControlTextField = forwardRef<HTMLDivElement, FormControlTextFieldProps>(
15
- ({ formControl, formControlError, fieldLabel = '', ...props }, ref) => {
17
+ ({
18
+ formControl, formControlError, fieldLabel = '', ...props
19
+ }, ref) => {
16
20
  const { name } = formControl?.props ?? {}
17
21
 
18
22
  const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {
@@ -18,15 +18,21 @@ export const NameWithFormControl: React.FC<NameWithFormControlProps> = ({
18
18
  ...props
19
19
  }) => {
20
20
  const args = useMemo(() => [fieldLabel, autoCompleteLabel, placeholder ?? ''], [autoCompleteLabel, fieldLabel, placeholder])
21
- const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, NameFormControl, args)
22
- const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}
21
+ const {
22
+ creditCardFormControl, error, inputRef, value,
23
+ } = useCreditCardFormControl(formControlName, NameFormControl, args)
24
+ const {
25
+ autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps
26
+ } = creditCardFormControl?.props ?? {}
23
27
  return (
24
28
  <FormControlTextField
25
29
  fieldLabel={fieldLabel}
26
30
  formControl={creditCardFormControl}
27
31
  formControlError={error}
28
32
  inputMode={inputMode}
29
- inputProps={{ 'aria-label': `${fieldLabel} name on your card`, autoComplete, autoCorrect, id, name, spellCheck, tabIndex }}
33
+ inputProps={{
34
+ 'aria-label': `${fieldLabel} name on your card`, autoComplete, autoCorrect, id, name, spellCheck, tabIndex,
35
+ }}
30
36
  inputRef={inputRef}
31
37
  value={value}
32
38
  {...cvcProps}
@@ -1,4 +1,6 @@
1
- import { AmexIcon, DiscoverIcon, MastercardIcon, VisaIcon } from '../../img/index.ts'
1
+ import {
2
+ AmexIcon, DiscoverIcon, MastercardIcon, VisaIcon,
3
+ } from '../../img/index.ts'
2
4
 
3
5
  export interface CreditCardInfo {
4
6
  icon: string
@@ -5,9 +5,15 @@ import type { WithFormControlProps } from '../WithFormControlProps.ts'
5
5
  import { FormControlTextField } from './FormControlTextField.tsx'
6
6
  import { useCreditCardFormControl } from './useCreditCardFormControl.tsx'
7
7
 
8
- export const CreditCardZipWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'zip', fieldLabel = 'Zip', ...props }) => {
9
- const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, CreditCardZipFormControl)
10
- const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}
8
+ export const CreditCardZipWithFormControl: React.FC<WithFormControlProps> = ({
9
+ formControlName = 'zip', fieldLabel = 'Zip', ...props
10
+ }) => {
11
+ const {
12
+ creditCardFormControl, error, inputRef, value,
13
+ } = useCreditCardFormControl(formControlName, CreditCardZipFormControl)
14
+ const {
15
+ autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps
16
+ } = creditCardFormControl?.props ?? {}
11
17
 
12
18
  return (
13
19
  <FormControlTextField
@@ -15,7 +21,9 @@ export const CreditCardZipWithFormControl: React.FC<WithFormControlProps> = ({ f
15
21
  formControl={creditCardFormControl}
16
22
  formControlError={error}
17
23
  inputMode={inputMode}
18
- inputProps={{ 'aria-label': `${fieldLabel} code for your card`, autoComplete, autoCorrect, id, name, spellCheck }}
24
+ inputProps={{
25
+ 'aria-label': `${fieldLabel} code for your card`, autoComplete, autoCorrect, id, name, spellCheck,
26
+ }}
19
27
  inputRef={inputRef}
20
28
  value={value}
21
29
  {...cvcProps}
@@ -5,9 +5,15 @@ import type { WithFormControlProps } from '../../WithFormControlProps.ts'
5
5
  import { FormControlTextField } from '../FormControlTextField.tsx'
6
6
  import { useCreditCardCvvFormControl } from './use.ts'
7
7
 
8
- export const CreditCardCvvWithFormControl: React.FC<WithFormControlProps> = ({ formControlName = 'cvc', fieldLabel = 'CVC', ...props }) => {
9
- const { creditCardFormControl, error, inputRef, value } = useCreditCardCvvFormControl(formControlName, undefined, CreditCardCvvFormControl)
10
- const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps } = creditCardFormControl?.props ?? {}
8
+ export const CreditCardCvvWithFormControl: React.FC<WithFormControlProps> = ({
9
+ formControlName = 'cvc', fieldLabel = 'CVC', ...props
10
+ }) => {
11
+ const {
12
+ creditCardFormControl, error, inputRef, value,
13
+ } = useCreditCardCvvFormControl(formControlName, undefined, CreditCardCvvFormControl)
14
+ const {
15
+ autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cvcProps
16
+ } = creditCardFormControl?.props ?? {}
11
17
 
12
18
  return (
13
19
  <FormControlTextField
@@ -15,7 +21,9 @@ export const CreditCardCvvWithFormControl: React.FC<WithFormControlProps> = ({ f
15
21
  formControl={creditCardFormControl}
16
22
  formControlError={error}
17
23
  inputMode={inputMode}
18
- inputProps={{ 'aria-label': `${fieldLabel} number on the back of your card`, autoComplete, autoCorrect, id, name, spellCheck }}
24
+ inputProps={{
25
+ 'aria-label': `${fieldLabel} number on the back of your card`, autoComplete, autoCorrect, id, name, spellCheck,
26
+ }}
19
27
  inputRef={inputRef}
20
28
  value={value}
21
29
  {...cvcProps}
@@ -11,7 +11,9 @@ export const useCreditCardCvvFormControl = (
11
11
  cardNumberControlName = 'cardNumber',
12
12
  control?: new () => FormControlBase<StandardTextFieldProps>,
13
13
  ) => {
14
- const { creditCardFormControl, error, value, inputRef } = useCreditCardFormControl(formControlName, control)
14
+ const {
15
+ creditCardFormControl, error, value, inputRef,
16
+ } = useCreditCardFormControl(formControlName, control)
15
17
 
16
18
  // only use FormGroupContext when name is passed
17
19
  const { formGroup } = useFormGroupWithCreditCardInput(!!formControlName)
@@ -29,5 +31,7 @@ export const useCreditCardCvvFormControl = (
29
31
  }
30
32
  }, [creditCardFormControl, creditCardNumberFormControl])
31
33
 
32
- return { creditCardFormControl, error, inputRef, value }
34
+ return {
35
+ creditCardFormControl, error, inputRef, value,
36
+ }
33
37
  }
@@ -12,8 +12,12 @@ export const CreditCardNumberWithFormControl: React.FC<WithFormControlProps> = (
12
12
  formControlName = 'cardNumber',
13
13
  ...props
14
14
  }) => {
15
- const { creditCardFormControl, error, inputRef, type, value } = useCreditCardNumberFormControl(formControlName, CreditCardNumberFormControl)
16
- const { autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cardProps } = creditCardFormControl?.props ?? {}
15
+ const {
16
+ creditCardFormControl, error, inputRef, type, value,
17
+ } = useCreditCardNumberFormControl(formControlName, CreditCardNumberFormControl)
18
+ const {
19
+ autoComplete, autoCorrect, id, inputMode, name, spellCheck, ...cardProps
20
+ } = creditCardFormControl?.props ?? {}
17
21
 
18
22
  return (
19
23
  <FormControlTextField
@@ -22,7 +26,9 @@ export const CreditCardNumberWithFormControl: React.FC<WithFormControlProps> = (
22
26
  formControlError={error}
23
27
  inputRef={inputRef}
24
28
  inputMode={inputMode}
25
- inputProps={{ 'aria-label': fieldLabel, autoComplete, autoCorrect, id, inputMode, name, spellCheck }}
29
+ inputProps={{
30
+ 'aria-label': fieldLabel, autoComplete, autoCorrect, id, inputMode, name, spellCheck,
31
+ }}
26
32
  InputProps={{
27
33
  startAdornment:
28
34
  type.length > 0
@@ -7,7 +7,9 @@ import type { CreditCardOptions } from '../Options.ts'
7
7
  import { useCreditCardFormControl } from '../useCreditCardFormControl.tsx'
8
8
 
9
9
  export const useCreditCardNumberFormControl = (formControlName?: string, control?: new () => FormControlBase<StandardTextFieldProps>) => {
10
- const { creditCardFormControl, error, inputRef, value } = useCreditCardFormControl(formControlName, control)
10
+ const {
11
+ creditCardFormControl, error, inputRef, value,
12
+ } = useCreditCardFormControl(formControlName, control)
11
13
  const [type, setType] = useState('' as keyof CreditCardOptions)
12
14
 
13
15
  useEffect(() => {
@@ -26,5 +28,7 @@ export const useCreditCardNumberFormControl = (formControlName?: string, control
26
28
  }
27
29
  }, [creditCardFormControl, inputRef])
28
30
 
29
- return { creditCardFormControl, error, inputRef, type, value }
31
+ return {
32
+ creditCardFormControl, error, inputRef, type, value,
33
+ }
30
34
  }
@@ -1,18 +1,20 @@
1
1
  import type { StandardTextFieldProps } from '@mui/material'
2
2
  import type { FormControlBase, ValidControlValue } from '@xyo-network/react-form-group'
3
- import { useMemo, useRef, useState } from 'react'
3
+ import {
4
+ useMemo, useRef, useState,
5
+ } from 'react'
4
6
 
5
7
  import { useFormGroupWithCreditCardInput } from '../../../context/index.ts'
6
8
 
7
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
- const StableDefaultArgs: any[] = []
10
+ const STABLE_DEFAULT_ARGS: any[] = [] as const
9
11
 
10
12
  export const useCreditCardFormControl = (
11
13
  formControlName?: string,
12
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
15
  Control?: new (...args: any[]) => FormControlBase<StandardTextFieldProps>,
14
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
- args: any[] = StableDefaultArgs,
17
+ args: any[] = STABLE_DEFAULT_ARGS,
16
18
  ) => {
17
19
  const [error, setError] = useState('')
18
20
  const [value, setValue] = useState<ValidControlValue>('')
@@ -32,5 +34,7 @@ export const useCreditCardFormControl = (
32
34
  }
33
35
  }, [Control, args, formControlName, formGroup])
34
36
 
35
- return { creditCardFormControl, error, inputRef, value }
37
+ return {
38
+ creditCardFormControl, error, inputRef, value,
39
+ }
36
40
  }
@@ -51,7 +51,12 @@ export const CreditCardFormFlexbox: React.FC<CreditCardFormProps> = ({
51
51
  return (
52
52
  <>
53
53
  <ErrorRender error={error} />
54
- <FlexCol sx={{ flexDirection: { md: 'row', xs: 'column' } }} width="100%" gap={2} {...props}>
54
+ <FlexCol
55
+ sx={{ flexDirection: { md: 'row', xs: 'column' } }}
56
+ width="100%"
57
+ gap={2}
58
+ {...props}
59
+ >
55
60
  <Stack flexDirection="column" sx={{ width: '100%' }} gap={2}>
56
61
  <InputFieldsStack />
57
62
  {ConfirmationButton
@@ -18,20 +18,45 @@ export const InputFieldsStack: React.FC<InputFieldsStackProps> = (props) => {
18
18
  const { sx } = props
19
19
  return (
20
20
  <>
21
- <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>
21
+ <Stack
22
+ gap={2}
23
+ sx={{
24
+ flexDirection: { md: 'row', xs: 'column' },
25
+ ...sx,
26
+ }}
27
+ {...props}
28
+ >
22
29
  <NameWithFormControl autoCompleteLabel="given-name" fieldLabel="First" formControlName="firstName" placeholder="Jerry" />
23
30
  <NameWithFormControl autoCompleteLabel="family-name" fieldLabel="Last" formControlName="lastName" placeholder="Smith" />
24
31
  </Stack>
25
- <Stack gap={2} sx={{ flexDirection: { lg: 'row', xs: 'column' }, ...sx }} {...props}>
32
+ <Stack
33
+ gap={2}
34
+ sx={{
35
+ flexDirection: { lg: 'row', xs: 'column' },
36
+ ...sx,
37
+ }}
38
+ {...props}
39
+ >
26
40
  <Stack width={{ lg: '50%', xs: '100%' }}>
27
41
  <CreditCardNumberWithFormControl />
28
42
  </Stack>
29
- <Stack direction={{ lg: 'row', xs: 'column' }} gap={2} width={{ lg: '50%', xs: '100%' }}>
43
+ <Stack
44
+ direction={{ lg: 'row', xs: 'column' }}
45
+ gap={2}
46
+ width={{ lg: '50%', xs: '100%' }}
47
+ >
30
48
  <CreditCardCvvWithFormControl />
31
49
  <CreditCardExpirationWithFormControl />
32
50
  </Stack>
33
51
  </Stack>
34
- <Stack gap={2} sx={{ flexDirection: { md: 'row', xs: 'column' }, ...sx }} {...props}>
52
+ <Stack
53
+ gap={2}
54
+ sx={{
55
+ flexDirection: { md: 'row', xs: 'column' },
56
+ ...sx,
57
+ }}
58
+ {...props}
59
+ >
35
60
  <Stack width={{ md: '25%', xs: '100%' }}>
36
61
  <CreditCardZipWithFormControl />
37
62
  </Stack>
@@ -5,7 +5,7 @@ import { ArchivistFormGroupStorage } from '@xyo-network/react-form-group'
5
5
 
6
6
  import type { CreditCardInput } from '../../models/index.ts'
7
7
 
8
- const StorageNameSpace = 'credit-card-fields'
8
+ const STORAGE_NAME_SPACE = 'credit-card-fields' as const
9
9
 
10
10
  const calculateTTL = (months = 6) => {
11
11
  const MS_PER_DAY = 24 * 60 * 60 * 1000
@@ -17,11 +17,15 @@ export const useFormStorage = () => {
17
17
  return usePromise(async () => {
18
18
  const localStorageArchivist = await StorageArchivist.create({
19
19
  account: 'random',
20
- config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'local' },
20
+ config: {
21
+ namespace: STORAGE_NAME_SPACE, schema: StorageArchivistConfigSchema, type: 'local',
22
+ },
21
23
  })
22
24
  const sessionStorageArchivist = await StorageArchivist.create({
23
25
  account: 'random',
24
- config: { namespace: StorageNameSpace, schema: StorageArchivistConfigSchema, type: 'session' },
26
+ config: {
27
+ namespace: STORAGE_NAME_SPACE, schema: StorageArchivistConfigSchema, type: 'session',
28
+ },
25
29
  })
26
30
 
27
31
  const storage = {
@@ -29,6 +33,8 @@ export const useFormStorage = () => {
29
33
  storage: new ArchivistFormGroupStorage(localStorageArchivist),
30
34
  }
31
35
 
32
- return { serialize: true, storage, ttlStorage: calculateTTL() } as FormGroupParams<CreditCardInput>
36
+ return {
37
+ serialize: true, storage, ttlStorage: calculateTTL(),
38
+ } as FormGroupParams<CreditCardInput>
33
39
  }, [])
34
40
  }
@@ -11,15 +11,22 @@ export interface FormGroupCreditCardProviderProps<TStorage extends Payload = Pay
11
11
  params?: FormGroupParams<TStorage>
12
12
  }
13
13
 
14
- export const FormGroupCreditCardProvider: React.FC<FormGroupCreditCardProviderProps<CreditCardInput>> = ({ children, params, ...props }) => {
14
+ export const FormGroupCreditCardProvider: React.FC<FormGroupCreditCardProviderProps<CreditCardInput>> = ({
15
+ children, params, ...props
16
+ }) => {
15
17
  const formGroup = useMemo(() => {
16
18
  const formGroup = new FormGroup<CreditCardInput, CreditCardInput>(params)
17
19
  return formGroup
18
20
  }, [params])
19
21
 
22
+ const value = useMemo(() => ({ formGroup, provided: true }), [formGroup])
23
+
20
24
  return (
21
- // eslint-disable-next-line @eslint-react/no-unstable-context-value
22
- <FormGroupCreditCardContext.Provider value={{ formGroup, provided: true }} {...props}>
25
+
26
+ <FormGroupCreditCardContext.Provider
27
+ value={value}
28
+ {...props}
29
+ >
23
30
  {children}
24
31
  </FormGroupCreditCardContext.Provider>
25
32
  )
@@ -5,9 +5,7 @@ import React from 'react'
5
5
  import { CreditCardFormFlexboxWithFormGroupProvider } from '../components/index.ts'
6
6
  import type { CreditCardInput } from '../models/index.ts'
7
7
 
8
- export default {
9
- title: 'form/CreditCardForm',
10
- } as Meta<typeof CreditCardFormFlexboxWithFormGroupProvider>
8
+ export default { title: 'form/CreditCardForm' } as Meta<typeof CreditCardFormFlexboxWithFormGroupProvider>
11
9
 
12
10
  const Template: StoryFn<typeof CreditCardFormFlexboxWithFormGroupProvider> = (args) => {
13
11
  return <CreditCardFormFlexboxWithFormGroupProvider ConfirmationButton={Button} {...args} />
package/xy.config.ts CHANGED
@@ -1,9 +1,7 @@
1
1
  import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
2
  const config: XyTsupConfig = {
3
3
  compile: {
4
- browser: {
5
- src: true,
6
- },
4
+ browser: { src: true },
7
5
  node: {},
8
6
  neutral: {},
9
7
  },