Skip to content

Commit

Permalink
Karina/wmdp 116 contact info (#32)
Browse files Browse the repository at this point in the history
* Initial commit.

* Create initial folder structure (#1)

* yarn create next-app --typescript

* clean up auto-generated pages, public and styles

* next.config.js: setup i18n locale for internationalization

* next.config.js: add code comment re: internationalization

* add html tags for VO

* Update app/styles/Home.module.css

update stickcy nav

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* tsconfig: target es6

* add babelec

* add __mocks__ with mock styles for testing

* -test: add first jest test and snapshot test for Home page
- add jest.setup.js to require jest-dom

* - add jest.config.js
- package.json: add react testing library, babel and jest dependencies
- add first test
- update jsx
- yarn.lock updated with new packages

* .eslintrc.json: extend nava eslint config

* package.json: add eslint-config-nava

* add ts check to all js files

* add dev note regarding incremental type checking

* add TS-specific eslint

* update read me with development typecheck and linting tips

* update read me with development typecheck and linting tips

* add and setup prettier

* WMDP-26 Set Up PR Template (#2)

Changes
added a .github folder which should store all github related processes (e.g. github actions, and templates)
added PR template
Context for reviewers
We want to establish a consistent pull request template that we’ll use.

* Update app/.babelrc

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/package.json

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* add eslintrc.js

* add stories dir and examples

* .eslint.js: prettier updates to eslint file

* add storybook dependencies

* Fix pull request template conflict (#8)

- Fixed the filename case conflict between `.github/PULL_REQUEST_TEMPLATE.md` and `.github/pull_request_template.md`
- Updated the pull request template to be slightly more generic

* Karina/wmdp 61 initial nextjs setup (#4)

* yarn create next-app --typescript

* clean up auto-generated pages, public and styles

* next.config.js: setup i18n locale for internationalization

* next.config.js: add code comment re: internationalization

* add html tags for VO

* Update app/styles/Home.module.css

update stickcy nav

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* tsconfig: target es6

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* add testRegex and testPathIgnorePatterns

* setup jest-axe

* add new lines add end of files

* Karina/wmdp 35 setup test suite (#5)

* yarn create next-app --typescript

* clean up auto-generated pages, public and styles

* next.config.js: setup i18n locale for internationalization

* next.config.js: add code comment re: internationalization

* add html tags for VO

* Update app/styles/Home.module.css

update stickcy nav

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* tsconfig: target es6

* add babelec

* add __mocks__ with mock styles for testing

* -test: add first jest test and snapshot test for Home page
- add jest.setup.js to require jest-dom

* - add jest.config.js
- package.json: add react testing library, babel and jest dependencies
- add first test
- update jsx
- yarn.lock updated with new packages

* Update app/.babelrc

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/package.json

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* add testRegex and testPathIgnorePatterns

* setup jest-axe

* add new lines add end of files

* jest.config.js: add inline comments

* README: add tsconfig documentation

* README: add test script documentation

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Karina/wmdp 33 linter typechecker (#6)

* yarn create next-app --typescript

* clean up auto-generated pages, public and styles

* next.config.js: setup i18n locale for internationalization

* next.config.js: add code comment re: internationalization

* add html tags for VO

* Update app/styles/Home.module.css

update stickcy nav

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* tsconfig: target es6

* add babelec

* add __mocks__ with mock styles for testing

* -test: add first jest test and snapshot test for Home page
- add jest.setup.js to require jest-dom

* - add jest.config.js
- package.json: add react testing library, babel and jest dependencies
- add first test
- update jsx
- yarn.lock updated with new packages

* .eslintrc.json: extend nava eslint config

* package.json: add eslint-config-nava

* add ts check to all js files

* add dev note regarding incremental type checking

* add TS-specific eslint

* update read me with development typecheck and linting tips

* update read me with development typecheck and linting tips

* add and setup prettier

* Update app/.babelrc

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update app/package.json

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* Update package.json

add scripts to package.json

* run prettier

* add checkJs to tsconfig, remove duplicate code from js files

* add typescript parser and implement type information with linting

* eslintrc: add prettier recommended plugin

* preettierrc: add trailing comma check, remove redundant code

* README: add auto-generated modified note

* Update app/README.md

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* add testRegex and testPathIgnorePatterns

* re-add localesubpaths to next.config.js

* tsconfig.json: remove inline comment

* README: add docimentation for eslint and tsconfig

* setup jest-axe

* add new lines add end of files

* jest.config.js: add inline comments

* README - add documentation for test

* README: add tsconfig documentation

* README: add test script documentation

* README: add documentation for dependencies

* yarn.lock

* Update app/__mocks__/styleMock.js

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

Co-authored-by: Rocket <rocketnova@users.noreply.github.com>

* fix eslint errors

* WIP

* Create a separate tsconfig file to specify jsx mode for ts-jest vs next.js (#9)

Create a separate tsconfig file to specify jsx mode.

Next.js requires the typescript jsx mode to be `preserve`, but ts-jest
needs it to be a flavor of `react`. See:

- https://www.typescriptlang.org/docs/handbook/jsx.html
- https://kulshekhar.github.io/ts-jest/docs/getting-started/options/tsconfig
- kulshekhar/ts-jest#63 (comment)
- vercel/next.js#19155 (reply in thread)

* add home page story and uswds dependency

* update dependencies

* add uswds

* support sass in storybook

* fix eslint errors (#10)

* fix eslint errors

* update prettier and linting rules so that they're compatible

* add new eslint rule to README

* WIP - debugging uswds storybook with Rocket

* add storybook static to git ignore

* Remove storybook-static.

* Dockerize the application.

* Create LICENSE.md using Apache 2.0 (#13)

* Dockerize the application (#12)

* WIP.

* Both next.js and storybook working.

* USWDS 3.x instructions require uswds-compile. Can't use next.js or storybook sass without more unknown glue.

* Clean up unnecessary WIP stuff.

* Refactor to use same naming convention for all uswds assets. Add comments.

* Update dockerization to better support local development.

* Remove extraneous yarn command.

* Run formatter.

* Write some brief documentation.

* Fix typo.

* setup CI for NextJS template app (#16)

* Let prettier format project files.

* Run prettier via yarn format.

* Let prettier format project files (#17)

* yarn: add next.intl

* add messages directory with english and spanish json messages pages

* .storybook/preview: set up next-intl with storybook

* next.config: update next local config for itnernationalization

* app.tsx: add next-intl local/messages provider for internationalization

* tests: add nextintlprovider to jest tests, update snapshots

* update gulp

* create src directories -- move src folders

* add tests and stories for Layout and Index

* add scss loading for storybook

* run linter and prettier

* run prettier

* run prettier and lint

* update yarn.lock

* add prettier alphabetize imports -- add storybook-static to prettier ignore

* show compile warnigns

* remove space

* add container background

* WIP: successfully leveraging built-in nextjs sass compiling.

* Working storybook + nextjs + sass + uswds build.

- Drops support for [CSS
  modules](https://nextjs.org/docs/basic-features/built-in-css-support#adding-component-level-css)
- Drops requirement for Gulp and USWDS compile
- Requires postcss and postcss-loader, which storybook says should be
  deprecated

* wip

* delete deprecated flies, add yarn.lock

* add welcome and eligibility page

* update ci.yml (#19)

* Run prettier.

* Update packages.

* Simplify docker. Update README. Use postinstalll script.

* Fix postinstall command.

* Tell prettier to ignore USWDS static assets.

* Disable nextjs telemetry.

* refactor

* jest

* test wip

* Add -p flag to creating public dir so mkdir doesn't error.

* Change comment style so we don't get unnecessary indents.

* Refactor which files storybook recognizes as stories.

* Use storybook lazy compilation.

* Remove no longer needed gulpfile.

* Unpin package versions; use at least instead.

* Remove no longer needed css import.

* add stories

* run prettier, no trailing comma

* correct linting errors

* Remove storybook lazy compilation. Not working.

* Remove non-essential storybook dependencies.

* Don't bind mount node_modules.

* delete depracated code

* host fonts locally for easier sb and jest setup and wider browser support

* support tsconfig module imports in jest and sb

* Switch base image to alpine.

* Run yarn format.

* Update README about node_modules in docker.

* setup next-i18next in project, jest, and sb -- todo: get sb globe to render

* Run formatter.

* Streamline docker build even more.

* Remove no longer installed storybook addons.

* Remove storybook-addon-i18next.

* Run formatter.

* Try storybook-i18n addon. Not quite right.

* Match eslint rule for space before parens to rule as described in README.

* Match prettier and eslint for trailing commas.

* Use the storybook-react-i18next addon for internationalization in storybook.

* Remove wip test of fs package.

* Restore homepage to previous state.

* Document i18n config.

* add storybook-static to git ignore

* add import order to prettier

* add src/ - move pages to src

* app- update import

* public: update translations

* _app.tsx: add Layout to app

* add components dir and Layout component

* index: update deprecated index layout

* update template styles

* update index story

* apply title class to template title

* update tests and stories

* run prettier - add prettier-plugin-sort-imports

* run eslint - add JSX global to linter

* fix translation

* yarn format and delete dead code

* run lint

* Copy over application-template-nextjs at ca2cc15.

Install and configure storybook, sass, and USWDS 3.0 [#15](navapbc/template-application-nextjs#15)

- Install and configure storybook
- Create the first story
- Install and configure [USWDS 3.0](https://designsystem.digital.gov/) as the design system
- Modify `Dockerfile` and `docker-compose.yml` to support USWDS and storybook
- Gitignore storybook, uswds assets, and compiled css
- Prettier ignore uswds assets
- Use postinstall hook to copy uswds static assets
- Stop using CSS modules
- Update some package dependencies
- Switch Docker base image to use alpine for increased speed

* Copy over application-template-nextjs at cd06ba6.

Setup i18n for next.js, jest, and storybook [#24](navapbc/template-application-nextjs#24)

- Install and configure [next-i18next](https://github.com/i18next/next-i18next) for Next.js internationalization
- Move next.js i18n config out of `next.config.js` and into `next-i18next.config.js`
- Modify `pages/_app.tsx` and `pages/index.tsx` to support i18n
- Move jest i18n config into `/tests/jest-i18n.ts`
- Install and configure [storybook-react-i18next](https://storybook.js.org/addons/storybook-react-i18next) for storybook internationalization
- Add support for `<em>` tags in react-i18next in both next.js and storybook.

Extras:
- Remove `space-before-function-paren` eslint rule
- Update eslint to follow prettier's rules
- Rename `test` dir to `tests` (plural)

* Copy over application-template-nextjs at cfe7c3d.

Adds a src dir, layout component, alphabetizes imports [#26](navapbc/template-application-nextjs#26)

- adds `src/` directory for project's webpack compilable JS and JSON files (this update is supported out of the box by [NextJS](https://nextjs.org/docs/advanced-features/src-directory) and pfml also uses this folder structure)
   - moves `api/`, `pages/` and `messages/` directories to `src/`
   - creates `components` directory and adds template `Layout` component

Extras:
- sets up prettier alphabetize imports
- adds storybook-static to prettier ignore
- sets $theme-show-compile-warnings to true for uswds

* Copy over application-template-nextjs at 0a349fa.

Enable dependabot version updates and codeql security scanning as CI jobs [#29](navapbc/template-application-nextjs#29)

- Enable and configure [dependabot version updates](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)
- Enable and configure [codeql security scanning](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning)

Note: These features were already enabled in this repo, so this commit
is just bringing in stylistic updates to make the two repos identical.

* en/common.json: add contact questions

* add contact page

* remove dead code

* contact: add contact page basic styling and copy

* create TextInput component -- add tests and storybook for contact page and textinput component

* Copy over application-template-nextjs at f59d2ac.

 Add layout styles missing from PR #26.
[#37](navapbc/template-application-nextjs#37)

* fix tests

* update tests

* wip

* fix tests

* run lint and format

* address rocket's comments

* update yarn.lock

* update eslint.json

* update eslintrc

* update textinput types for build

* run prettier

* add number-format

* fix bug

* yarn format

Co-authored-by: Rocket ! <rocketnova@users.noreply.github.com>
Co-authored-by: Alsia Plybeah <alsia@navapbc.com>
Co-authored-by: Shawn VanderJagt <91338100+shawnvanderjagt@users.noreply.github.com>
  • Loading branch information
4 people committed Jul 28, 2022
1 parent e604c2a commit fe3fa1b
Show file tree
Hide file tree
Showing 13 changed files with 268 additions and 11 deletions.
10 changes: 5 additions & 5 deletions app/.eslintrc.json
Expand Up @@ -11,15 +11,15 @@
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"tsconfigRootDir": "./",
"project": "./tsconfig.json"
"project": "./tsconfig.json",
"tsconfigRootDir": "./"
},
"plugins": ["@typescript-eslint", "jest"],
"root": true,
"rules": {
"comma-dangle": ["error", "only-multiline"],
"react/react-in-jsx-scope": "off",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/no-explicit-any": "error"
"comma-dangle": ["error", "only-multiline"],
"react/react-in-jsx-scope": "off"
}
}
2 changes: 2 additions & 0 deletions app/package.json
Expand Up @@ -34,6 +34,7 @@
"@testing-library/dom": "^8.13.0",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0",
"@testing-library/user-event": "^14.2.6",
"@trivago/prettier-plugin-sort-imports": "^3.2.0",
"@types/jest": "^27.5.1",
"@types/jest-axe": "^3.5.3",
Expand Down Expand Up @@ -63,6 +64,7 @@
"postcss-preset-env": "^7.7.2",
"prettier": "^2.6.2",
"prettier-plugin-sort-json": "^0.0.2",
"react-number-format": "^4.9.3",
"sass": "^1.52.3",
"sass-loader": "^13.0.2",
"storybook": "^6.5.9",
Expand Down
8 changes: 8 additions & 0 deletions app/public/locales/en/common.json
@@ -1,4 +1,12 @@
{
"Contact": {
"button": "Submit",
"firstName": "What's your first name?",
"lastName": "What's your last name?",
"other": "Is there anything else you want to share with us?",
"phone": "What's the best phone number to reach you at?",
"phoneHelper": "Your chosen WIC clinic will contact you to set up a time for a certification appointment during business hours."
},
"Eligibility": {
"baby": "I've had a baby in the past 12 months",
"categorical": "2. Please select all the following that apply to your family:",
Expand Down
41 changes: 41 additions & 0 deletions app/src/components/TextInput.tsx
@@ -0,0 +1,41 @@
import { ChangeEvent, ReactElement } from 'react'
import styled from 'styled-components'

type Props = {
handleChange: (e: ChangeEvent<HTMLInputElement>) => void
id: string
label: string
value: string
}

const TextInput = (props: Props): ReactElement => {
const { handleChange, id, label, value } = props

return (
<>
<Label className="usa-label" htmlFor={id}>
{label}
</Label>
<Input
className="usa-input"
id={id}
onChange={handleChange}
role="textbox"
value={value}
/>
</>
)
}

const Input = styled.input`
border: 1px solid #b3b3b3;
border-radius: 4px;
height: 48px;
`

const Label = styled.label`
font-family: 'Balsamiq Sans', cursive;
font-size: 20px;
`

export default TextInput
100 changes: 100 additions & 0 deletions app/src/pages/contact.tsx
@@ -0,0 +1,100 @@
import type { GetServerSideProps, NextPage } from 'next'
import { useTranslation } from 'next-i18next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { ChangeEvent, useState } from 'react'
import NumberFormat from 'react-number-format'
import styled from 'styled-components'

import ButtonLink from '@components/ButtonLink'
import TextInput from '@components/TextInput'

const Contact: NextPage = () => {
const { t } = useTranslation('common')
const [form, setForm] = useState({
firstName: '',
lastName: '',
phone: '',
other: '',
})

const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
const { value, id }: { value: string; id: string } = e.target
const castId = id as keyof typeof form

setForm({
...form,
[castId]: value,
})
}

return (
<form>
<TextInput
handleChange={handleChange}
id="firstName"
label={t('Contact.firstName')}
value={form.firstName}
/>
<br />
<TextInput
handleChange={handleChange}
id="lastName"
label={t('Contact.lastName')}
value={form.lastName}
/>
<br />
<Label className="usa-label" htmlFor="phone">
{t('Contact.phone')}
</Label>
<PhoneInput
format="###-###-####"
mask="_"
role="textbox"
className="usa-input"
id="phone"
value={form.phone}
onChange={handleChange}
/>
<Helper>{t('Contact.phoneHelper')}</Helper>
<br />
<TextInput
handleChange={handleChange}
id="other"
label={t('Contact.other')}
value={form.other}
/>
<br />
<br />
<ButtonLink href="/" label={t('Contact.button')} width="100px" />
</form>
)
}

const Helper = styled.div`
color: #666666;
font-size: 12px;
max-width: 30rem;
padding: 9px;
}
`

const Label = styled.label`
font-family: 'Balsamiq Sans', cursive;
font-size: 20px;
`

const PhoneInput = styled(NumberFormat)`
border: 1px solid #b3b3b3;
border-radius: 4px;
height: 48px;
`

export const getServerSideProps: GetServerSideProps = async ({ locale }) => {
return {
props: {
...(await serverSideTranslations(locale || 'en', ['common'])),
},
}
}

export default Contact
6 changes: 3 additions & 3 deletions app/src/pages/eligibility.tsx
Expand Up @@ -3,8 +3,8 @@ import { useTranslation } from 'next-i18next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { ChangeEvent, useState } from 'react'

import ButtonLink from '../components/ButtonLink'
import InputChoiceGroup from '../components/InputChoiceGroup'
import ButtonLink from '@components/ButtonLink'
import InputChoiceGroup from '@components/InputChoiceGroup'

const Eligibility: NextPage = () => {
const { t } = useTranslation('common')
Expand Down Expand Up @@ -139,7 +139,7 @@ const Eligibility: NextPage = () => {
<br />
<br />
<ButtonLink
href="/"
href="/contact"
label={t('Eligibility.continue')}
vector
width="140px"
Expand Down
2 changes: 1 addition & 1 deletion app/src/pages/information.tsx
Expand Up @@ -2,7 +2,7 @@ import type { GetServerSideProps, NextPage } from 'next'
import { useTranslation } from 'next-i18next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'

import ButtonLink from '../components/ButtonLink'
import ButtonLink from '@components/ButtonLink'

const Information: NextPage = () => {
const { t } = useTranslation('common')
Expand Down
18 changes: 18 additions & 0 deletions app/stories/components/TextInput.stories.tsx
@@ -0,0 +1,18 @@
import { ComponentMeta, ComponentStory } from '@storybook/react'

import TextInputComponent from '@components/TextInput'

export default {
title: 'Components',
component: TextInputComponent,
} as ComponentMeta<typeof TextInputComponent>

const Template: ComponentStory<typeof TextInputComponent> = (args) => (
<TextInputComponent {...args} />
)

export const TextInput = Template.bind({})

TextInput.args = {
label: 'Text Input',
}
12 changes: 12 additions & 0 deletions app/stories/pages/Contact.stories.tsx
@@ -0,0 +1,12 @@
import { ComponentMeta, ComponentStory } from '@storybook/react'

import ContactPage from '@pages/contact'

export default {
title: 'Pages',
component: ContactPage,
} as ComponentMeta<typeof ContactPage>

const Template: ComponentStory<typeof ContactPage> = () => <ContactPage />

export const Contact = Template.bind({})
10 changes: 10 additions & 0 deletions app/tests/pages/__snapshots__/contact.test.tsx.snap
@@ -0,0 +1,10 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Contact should render first name prompt 1`] = `
<label
class="sc-dkzDqf caEyMW usa-label"
for="firstName"
>
What's your first name?
</label>
`;
52 changes: 52 additions & 0 deletions app/tests/pages/contact.test.tsx
@@ -0,0 +1,52 @@
import { fireEvent, render, screen } from '@testing-library/react'

import Contact from '@pages/contact'

describe('Contact', () => {
it('should render first name prompt', () => {
render(<Contact />)

const prompt = screen.getByText(/What's your first name?/i)

expect(prompt).toBeInTheDocument()
expect(prompt).toMatchSnapshot()
})

it('should update name input value', () => {
render(<Contact />)

const nameInput = screen.getByLabelText(
/What's your first name?/i
) as HTMLInputElement

expect(nameInput.value).toBe('')
fireEvent.change(nameInput, { target: { value: 'Jane' } })
expect(nameInput.value).toBe('Jane')
})

describe('phone number input', () => {
it('should not allow non-numbers', () => {
render(<Contact />)

const phoneNumber = screen.getByLabelText(
/What's the best phone number to reach you at?/i
) as HTMLInputElement

expect(phoneNumber.value).toBe('')
fireEvent.change(phoneNumber, { target: { value: 'not a number' } })
expect(phoneNumber.value).toBe('')
})

it('should format number', () => {
render(<Contact />)

const phoneNumber = screen.getByLabelText(
/What's the best phone number to reach you at?/i
) as HTMLInputElement

expect(phoneNumber.value).toBe('')
fireEvent.change(phoneNumber, { target: { value: '1111111111' } })
expect(phoneNumber.value).toBe('111-111-1111')
})
})
})
6 changes: 4 additions & 2 deletions app/tests/pages/index.test.tsx
@@ -1,5 +1,5 @@
// test/pages/index.test.js
import { render, screen } from '@testing-library/react'
import { render, screen, waitFor } from '@testing-library/react'
import { axe } from 'jest-axe'

import Index from '@pages/index'
Expand All @@ -18,6 +18,8 @@ describe('Index', () => {
const { container } = render(<Index />)
const results = await axe(container)

expect(results).toHaveNoViolations()
await waitFor(() => {
expect(results).toHaveNoViolations()
})
})
})
12 changes: 12 additions & 0 deletions app/yarn.lock
Expand Up @@ -2844,6 +2844,11 @@
"@testing-library/dom" "^8.5.0"
"@types/react-dom" "^18.0.0"

"@testing-library/user-event@^14.2.6":
version "14.2.6"
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.2.6.tgz#9ba313a212994eea66e018520e23542ac3eb6fbe"
integrity sha512-l/4W4x3Lm24wkWNkPasXqvEzG+a6n2X872XCUjhyfbNqcoOapaWyCxC5Fz+E4r7JPu8gysQKSSCrK0OO2x+D+A==

"@tootallnate/once@2":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
Expand Down Expand Up @@ -11018,6 +11023,13 @@ react-is@^18.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==

react-number-format@^4.9.3:
version "4.9.3"
resolved "https://registry.yarnpkg.com/react-number-format/-/react-number-format-4.9.3.tgz#338500fe9c61b1ac73c8d6dff4ec97dd13fd2b50"
integrity sha512-am1A1xYAbENuKJ+zpM7V+B1oRTSeOHYltqVKExznIVFweBzhLmOBmyb1DfIKjHo90E0bo1p3nzVJ2NgS5xh+sQ==
dependencies:
prop-types "^15.7.2"

react-refresh@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
Expand Down

0 comments on commit fe3fa1b

Please sign in to comment.