├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── CHECK_ACCESSIBILITY_ISSUE.md │ └── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── chromatic.yml │ ├── compatibility-npm.yml │ ├── pre-release-publish.yml │ ├── publish-release.yml │ ├── toolkit-ci.yml │ └── toolkit-sonar.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .storybook ├── main.js ├── manager.js ├── preview.js └── storybook.css ├── .vscode └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MIGRATION.md ├── README.md ├── __mocks__ ├── fileMock.js └── styleMock.js ├── changelog-template.hbs ├── docs └── DEVELOPER.md ├── jest.config.ts ├── lerna.json ├── package-lock.json ├── package.json ├── packages ├── Form │ ├── Input │ │ ├── card │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Card.tsx │ │ │ │ ├── CardCheckbox.stories.tsx │ │ │ │ ├── CardContent.tsx │ │ │ │ ├── CardFooter.tsx │ │ │ │ ├── CardGroup.tsx │ │ │ │ ├── CardGroupCheckbox.tsx │ │ │ │ ├── CardGroupRadio.tsx │ │ │ │ ├── CardGroupStateless.tsx │ │ │ │ ├── CardHeader.tsx │ │ │ │ ├── CardMeta.tsx │ │ │ │ ├── CardRadio.stories.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Card.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── Card.spec.tsx.snap │ │ │ │ ├── card.scss │ │ │ │ └── index.ts │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── checkbox │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Checkbox.tsx │ │ │ │ ├── CheckboxInput.stories.tsx │ │ │ │ ├── CheckboxInput.tsx │ │ │ │ ├── CheckboxItem.tsx │ │ │ │ ├── CheckboxModes.ts │ │ │ │ ├── __tests__ │ │ │ │ │ ├── CheckboxInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── CheckboxInput.spec.tsx.snap │ │ │ │ ├── checkbox.scss │ │ │ │ └── index.ts │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── choice │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Choice.md │ │ │ │ ├── Choice.tsx │ │ │ │ ├── ChoiceInput.stories.tsx │ │ │ │ ├── ChoiceInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Choice.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── Choice.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── radio.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── date │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Date.stories.tsx │ │ │ │ ├── Date.tsx │ │ │ │ ├── DateInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Date.spec.tsx │ │ │ │ │ ├── DateInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── Date.spec.tsx.snap │ │ │ │ │ │ └── DateInput.spec.tsx.snap │ │ │ │ ├── date.scss │ │ │ │ └── index.ts │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── file │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── File.tsx │ │ │ │ ├── FileInput.stories.tsx │ │ │ │ ├── FileInput.tsx │ │ │ │ ├── FileLine.tsx │ │ │ │ ├── FileTable.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── File.spec.tsx │ │ │ │ │ ├── FileInput.spec.tsx │ │ │ │ │ ├── FileLine.spec.tsx │ │ │ │ │ ├── FileTable.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── File.spec.tsx.snap │ │ │ │ │ │ ├── FileInput.spec.tsx.snap │ │ │ │ │ │ ├── FileLine.spec.tsx.snap │ │ │ │ │ │ └── FileTable.spec.tsx.snap │ │ │ │ ├── file.scss │ │ │ │ ├── filebrowser.scss │ │ │ │ └── index.ts │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── number │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Number.tsx │ │ │ │ ├── NumberInput.stories.tsx │ │ │ │ ├── NumberInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── NumberInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── NumberInput.spec.tsx.snap │ │ │ │ └── index.ts │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── pass │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Constant.ts │ │ │ │ ├── Pass.stories.tsx │ │ │ │ ├── Pass.tsx │ │ │ │ ├── PassInput.stories.tsx │ │ │ │ ├── PassInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Pass.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── Pass.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── pass.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── radio │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Radio.stories.tsx │ │ │ │ ├── Radio.tsx │ │ │ │ ├── RadioInput.stories.tsx │ │ │ │ ├── RadioInput.tsx │ │ │ │ ├── RadioItem.stories.tsx │ │ │ │ ├── RadioItem.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Radio.spec.tsx │ │ │ │ │ ├── RadioInput.spec.tsx │ │ │ │ │ ├── RadioItem.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── Radio.spec.tsx.snap │ │ │ │ │ │ ├── RadioInput.spec.tsx.snap │ │ │ │ │ │ └── RadioItem.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── radio.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── select-multi │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── MultiSelect.stories.tsx │ │ │ │ ├── MultiSelect.tsx │ │ │ │ ├── MultiSelectInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── MultiSelect.spec.tsx │ │ │ │ │ ├── MultiSelectInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── MultiSelect.spec.tsx.snap │ │ │ │ │ │ └── MultiSelectInput.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── select.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── select │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Select.stories.tsx │ │ │ │ ├── Select.tsx │ │ │ │ ├── SelectBase.stories.tsx │ │ │ │ ├── SelectBase.tsx │ │ │ │ ├── SelectInput.stories.tsx │ │ │ │ ├── SelectInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Select.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── Select.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── select.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── slider │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Slider.stories.tsx │ │ │ │ ├── Slider.tsx │ │ │ │ ├── SliderInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── Slider.spec.tsx │ │ │ │ │ ├── SliderInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── Slider.spec.tsx.snap │ │ │ │ │ │ └── SliderInput.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── slider.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── switch │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Switch.stories.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ ├── SwitchInput.tsx │ │ │ │ ├── SwitchItem.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── SwitchInput.spec.tsx │ │ │ │ │ ├── SwitchItem.test.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── SwitchInput.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── switch.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ ├── text │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ │ ├── Text.stories.tsx │ │ │ │ ├── Text.tsx │ │ │ │ ├── TextInput.stories.tsx │ │ │ │ ├── TextInput.tsx │ │ │ │ ├── __tests__ │ │ │ │ │ ├── TextInput.spec.tsx │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── TextInput.spec.tsx.snap │ │ │ │ ├── index.ts │ │ │ │ └── inputtext.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ │ └── textarea │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src │ │ │ ├── Textarea.stories.tsx │ │ │ ├── Textarea.tsx │ │ │ ├── TextareaInput.stories.tsx │ │ │ ├── TextareaInput.tsx │ │ │ ├── __tests__ │ │ │ │ ├── TextareaInput.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ └── TextareaInput.spec.tsx.snap │ │ │ ├── index.ts │ │ │ └── textarea.scss │ │ │ ├── tsconfig-cjs.json │ │ │ └── tsconfig.json │ ├── core │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── Field.tsx │ │ │ ├── FieldError.tsx │ │ │ ├── FieldForm.tsx │ │ │ ├── FieldInput.tsx │ │ │ ├── FormClassManager.ts │ │ │ ├── HelpMessage.tsx │ │ │ ├── InputList.ts │ │ │ ├── MessageTypes.ts │ │ │ ├── __tests__ │ │ │ │ ├── Field.spec.tsx │ │ │ │ ├── FieldError.spec.tsx │ │ │ │ ├── FieldForm.spec.tsx │ │ │ │ ├── FieldInput.spec.tsx │ │ │ │ ├── FormClassManager.spec.ts │ │ │ │ ├── HelpMessage.spec.tsx │ │ │ │ ├── InputList.spec.ts │ │ │ │ ├── __snapshots__ │ │ │ │ │ ├── Field.spec.tsx.snap │ │ │ │ │ ├── FieldError.spec.tsx.snap │ │ │ │ │ ├── FieldForm.spec.tsx.snap │ │ │ │ │ ├── FieldInput.spec.tsx.snap │ │ │ │ │ └── HelpMessage.spec.tsx.snap │ │ │ │ └── getFirstId.spec.ts │ │ │ ├── form.scss │ │ │ ├── getFirstId.ts │ │ │ ├── getOptionClassName.ts │ │ │ ├── index.ts │ │ │ ├── useInputClassModifier.ts │ │ │ ├── useOptionsWithId.ts │ │ │ └── withIsVisible.tsx │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ ├── filter-inline │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── FilterInline.tsx │ │ │ ├── __tests__ │ │ │ │ ├── FilterInline.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ └── FilterInline.spec.tsx.snap │ │ │ ├── filter-inline.scss │ │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ ├── filter │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── Filter.tsx │ │ │ ├── __tests__ │ │ │ │ ├── Filter.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ └── Filter.spec.tsx.snap │ │ │ ├── filter.scss │ │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ ├── steps │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── Step.tsx │ │ │ ├── StepBase.tsx │ │ │ ├── StepCurrent.tsx │ │ │ ├── StepDisabled.tsx │ │ │ ├── StepLink.tsx │ │ │ ├── StepNoLink.tsx │ │ │ ├── Steps.stories.tsx │ │ │ ├── Steps.tsx │ │ │ ├── __tests__ │ │ │ │ ├── Step.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ └── Step.spec.tsx.snap │ │ │ ├── index.ts │ │ │ ├── step-form-new.scss │ │ │ └── step-form.scss │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ └── summary │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ ├── Summary.stories.tsx │ │ ├── Summary.tsx │ │ ├── __tests__ │ │ │ ├── Summary.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ └── Summary.spec.tsx.snap │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json ├── Layout │ ├── footer-client │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── FooterClient.stories.tsx │ │ │ ├── FooterClient.tsx │ │ │ ├── FooterClientItem.tsx │ │ │ ├── FooterClientList.tsx │ │ │ ├── LanguageSelection.tsx │ │ │ ├── SocialNetwork.tsx │ │ │ ├── __tests__ │ │ │ │ ├── FooterClient.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ └── FooterClient.spec.tsx.snap │ │ │ ├── footer-client.scss │ │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ ├── footer │ │ ├── README.md │ │ ├── globals.d.ts │ │ ├── package.json │ │ ├── src │ │ │ ├── Footer.stories.tsx │ │ │ ├── Footer.tsx │ │ │ ├── FooterCore.tsx │ │ │ ├── __tests__ │ │ │ │ ├── Footer.spec.tsx │ │ │ │ ├── FooterCore.spec.tsx │ │ │ │ └── __snapshots__ │ │ │ │ │ ├── Footer.spec.tsx.snap │ │ │ │ │ └── FooterCore.spec.tsx.snap │ │ │ ├── footer.scss │ │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ └── header │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ ├── Drawer │ │ │ └── drawer.scss │ │ ├── Header │ │ │ ├── Header.stories.tsx │ │ │ ├── Header.tsx │ │ │ ├── header.scss │ │ │ └── index.ts │ │ ├── HeaderTitle │ │ │ ├── HeaderTitle.stories.tsx │ │ │ ├── HeaderTitle.tsx │ │ │ ├── index.tsx │ │ │ └── title-bar.scss │ │ ├── Infos │ │ │ ├── Infos.stories.tsx │ │ │ ├── Infos.tsx │ │ │ ├── index.ts │ │ │ └── infos.scss │ │ ├── Logo │ │ │ └── logo.scss │ │ ├── MenuTitleWrapper.stories.tsx │ │ ├── Name │ │ │ ├── Name.stories.tsx │ │ │ ├── Name.tsx │ │ │ ├── index.ts │ │ │ └── name.scss │ │ ├── NavBar │ │ │ ├── NavBar.helpers.ts │ │ │ ├── NavBar.md │ │ │ ├── NavBar.stories.tsx │ │ │ ├── NavBar.tsx │ │ │ ├── NavBarBase.tsx │ │ │ ├── NavBarItem.md │ │ │ ├── NavBarItem.stories.tsx │ │ │ ├── NavBarItem.tsx │ │ │ ├── NavBarItemBase.tsx │ │ │ ├── NavBarItemLink.tsx │ │ │ ├── index.ts │ │ │ └── nav.scss │ │ ├── ToggleButton │ │ │ ├── ToggleButton.md │ │ │ ├── ToggleButton.stories.tsx │ │ │ └── index.ts │ │ ├── User │ │ │ ├── User.stories.tsx │ │ │ ├── User.tsx │ │ │ ├── index.ts │ │ │ └── user.scss │ │ ├── __tests__ │ │ │ ├── Header.spec.tsx │ │ │ ├── HeaderTitle.spec.tsx │ │ │ ├── Infos.spec.tsx │ │ │ ├── Name.spec.tsx │ │ │ ├── Navbar.helpers.spec.ts │ │ │ ├── Navbar.spec.tsx │ │ │ ├── NavbarBase.spec.tsx │ │ │ ├── NavbarItem.spec.tsx │ │ │ ├── NavbarItemBase.spec.tsx │ │ │ ├── ToggleButton.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── Header.spec.tsx.snap │ │ │ │ ├── HeaderTitle.spec.tsx.snap │ │ │ │ └── Name.spec.tsx.snap │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json ├── Modal │ ├── boolean │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── ModalBoolean.stories.mdx │ │ │ ├── ModalBoolean.tsx │ │ │ ├── __tests__ │ │ │ │ └── ModalBoolean.spec.tsx │ │ │ └── index.ts │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json │ └── default │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ ├── Body.tsx │ │ ├── Footer.tsx │ │ ├── Header.tsx │ │ ├── HeaderBase.tsx │ │ ├── Modal.tsx │ │ ├── ModalDefault.stories.mdx │ │ ├── __tests__ │ │ │ ├── Body.spec.tsx │ │ │ ├── Footer.spec.tsx │ │ │ ├── Header.spec.tsx │ │ │ ├── HeaderBase.spec.tsx │ │ │ └── Modal.spec.tsx │ │ ├── index.ts │ │ └── modal.scss │ │ ├── tsconfig-cjs.json │ │ └── tsconfig.json ├── action │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Action.stories.tsx │ │ ├── Action.tsx │ │ ├── ActionCore.stories.tsx │ │ ├── ActionCore.tsx │ │ ├── __tests__ │ │ │ ├── Action.spec.tsx │ │ │ └── ActionCore.spec.tsx │ │ ├── button.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── alert │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Alert.stories.tsx │ │ ├── Alert.tsx │ │ ├── AlertCore.stories.tsx │ │ ├── AlertCore.tsx │ │ ├── AlertWithType.stories.tsx │ │ ├── AlertWithType.tsx │ │ ├── __tests__ │ │ │ ├── Alert.spec.tsx │ │ │ ├── AlertCore.spec.tsx │ │ │ ├── AlertWithType.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── Alert.spec.tsx.snap │ │ │ │ ├── AlertCore.spec.tsx.snap │ │ │ │ └── AlertWithType.spec.tsx.snap │ │ ├── alert.scss │ │ ├── icons.ts │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── all │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── action.ts │ │ ├── alert.ts │ │ ├── badge.ts │ │ ├── bootstrap │ │ │ ├── af-components.template.scss │ │ │ └── af-toolkit-core.template.scss │ │ ├── button.ts │ │ ├── collapse.ts │ │ ├── core.ts │ │ ├── form-core.ts │ │ ├── form-filter-inline.ts │ │ ├── form-filter.ts │ │ ├── form-input-card.ts │ │ ├── form-input-checkbox.ts │ │ ├── form-input-choice.ts │ │ ├── form-input-date.ts │ │ ├── form-input-file.ts │ │ ├── form-input-number.ts │ │ ├── form-input-pass.ts │ │ ├── form-input-radio.ts │ │ ├── form-input-select-multi.ts │ │ ├── form-input-select.ts │ │ ├── form-input-slider.ts │ │ ├── form-input-switch.ts │ │ ├── form-input-text.ts │ │ ├── form-input-textarea.ts │ │ ├── form-steps.ts │ │ ├── form-summary.ts │ │ ├── help-info.ts │ │ ├── help.ts │ │ ├── icon.ts │ │ ├── index.ts │ │ ├── layout-footer-client.ts │ │ ├── layout-footer.ts │ │ ├── layout-header.ts │ │ ├── link.ts │ │ ├── loader.ts │ │ ├── modal-boolean.ts │ │ ├── modal-default.ts │ │ ├── panel.ts │ │ ├── popover.ts │ │ ├── restitution.ts │ │ ├── table.ts │ │ ├── tabs.ts │ │ └── title.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── badge │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Badge.stories.tsx │ │ ├── Badge.tsx │ │ ├── __tests__ │ │ │ └── Badge.spec.tsx │ │ ├── badge.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── button │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Button.stories.tsx │ │ ├── Button.tsx │ │ ├── ButtonCore.tsx │ │ ├── __tests__ │ │ │ ├── Button.spec.tsx │ │ │ └── ButtonCore.spec.tsx │ │ ├── button.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── collapse │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Accordion.stories.tsx │ │ ├── Accordion.tsx │ │ ├── Body.tsx │ │ ├── CollapseCard.stories.tsx │ │ ├── CollapseCard.tsx │ │ ├── Header.tsx │ │ ├── __tests__ │ │ │ ├── Accordion.spec.tsx │ │ │ ├── Body.spec.tsx │ │ │ ├── CollapseCard.spec.tsx │ │ │ ├── Header.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── Accordion.spec.tsx.snap │ │ │ │ ├── Body.spec.tsx.snap │ │ │ │ ├── CollapseCard.spec.tsx.snap │ │ │ │ └── Header.spec.tsx.snap │ │ ├── accordion.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── core │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Constants.ts │ │ ├── Models.ts │ │ ├── PropsManager.ts │ │ ├── __tests__ │ │ │ ├── PropsManager.spec.ts │ │ │ ├── getClickId.spec.tsx │ │ │ └── getComponentClassName.spec.ts │ │ ├── bootstrap │ │ │ └── theme.scss │ │ ├── common │ │ │ ├── favicon.ico │ │ │ ├── fonts │ │ │ │ └── typo │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── SourceSansPro-Black.otf.woff │ │ │ │ │ ├── SourceSansPro-BlackIt.otf.woff │ │ │ │ │ ├── SourceSansPro-Bold.otf.woff │ │ │ │ │ ├── SourceSansPro-BoldIt.otf.woff │ │ │ │ │ ├── SourceSansPro-ExtraLight.otf.woff │ │ │ │ │ ├── SourceSansPro-ExtraLightIt.otf.woff │ │ │ │ │ ├── SourceSansPro-It.otf.woff │ │ │ │ │ ├── SourceSansPro-Light.otf.woff │ │ │ │ │ ├── SourceSansPro-LightIt.otf.woff │ │ │ │ │ ├── SourceSansPro-Regular.otf.woff │ │ │ │ │ ├── SourceSansPro-Semibold.otf.woff │ │ │ │ │ └── SourceSansPro-SemiboldIt.otf.woff │ │ │ ├── icons │ │ │ │ ├── adjust.svg │ │ │ │ ├── alert.svg │ │ │ │ ├── align-center.svg │ │ │ │ ├── align-justify.svg │ │ │ │ ├── align-left.svg │ │ │ │ ├── align-right.svg │ │ │ │ ├── all.svg │ │ │ │ ├── apple.svg │ │ │ │ ├── arrow-collapse-down.svg │ │ │ │ ├── arrow-collapse-left.svg │ │ │ │ ├── arrow-collapse-right.svg │ │ │ │ ├── arrow-collapse-up.svg │ │ │ │ ├── arrow-down.svg │ │ │ │ ├── arrow-left.svg │ │ │ │ ├── arrow-right.svg │ │ │ │ ├── arrow-rounded-bottom.svg │ │ │ │ ├── arrow-rounded-left.svg │ │ │ │ ├── arrow-rounded-right.svg │ │ │ │ ├── arrow-rounded-top.svg │ │ │ │ ├── arrow-up.svg │ │ │ │ ├── arrow-xs-down.svg │ │ │ │ ├── arrow-xs-left.svg │ │ │ │ ├── arrow-xs-right.svg │ │ │ │ ├── arrow-xs-up.svg │ │ │ │ ├── arrowthin-down.svg │ │ │ │ ├── arrowthin-left.svg │ │ │ │ ├── arrowthin-right.svg │ │ │ │ ├── arrowthin-up.svg │ │ │ │ ├── asterisk.svg │ │ │ │ ├── auto.svg │ │ │ │ ├── axa-switch.svg │ │ │ │ ├── baby-formula.svg │ │ │ │ ├── backward.svg │ │ │ │ ├── ban-circle.svg │ │ │ │ ├── bank.svg │ │ │ │ ├── barcode.svg │ │ │ │ ├── bed.svg │ │ │ │ ├── bell.svg │ │ │ │ ├── bishop.svg │ │ │ │ ├── bitcoin.svg │ │ │ │ ├── blackboard.svg │ │ │ │ ├── bold.svg │ │ │ │ ├── book.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── briefcase-add.svg │ │ │ │ ├── briefcase-cup.svg │ │ │ │ ├── briefcase-ok.svg │ │ │ │ ├── briefcase-wait.svg │ │ │ │ ├── briefcase.svg │ │ │ │ ├── bullhorn.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── camera.svg │ │ │ │ ├── car-compact.svg │ │ │ │ ├── car-secure.svg │ │ │ │ ├── cd.svg │ │ │ │ ├── certificate.svg │ │ │ │ ├── chair.svg │ │ │ │ ├── check.svg │ │ │ │ ├── chevron-down.svg │ │ │ │ ├── chevron-left.svg │ │ │ │ ├── chevron-right.svg │ │ │ │ ├── chevron-up.svg │ │ │ │ ├── child.svg │ │ │ │ ├── circle-arrow-down.svg │ │ │ │ ├── circle-arrow-left.svg │ │ │ │ ├── circle-arrow-right.svg │ │ │ │ ├── circle-arrow-up.svg │ │ │ │ ├── close.svg │ │ │ │ ├── cloud-download.svg │ │ │ │ ├── cloud-upload.svg │ │ │ │ ├── cloud.svg │ │ │ │ ├── coffre.svg │ │ │ │ ├── cog.svg │ │ │ │ ├── collapse-down.svg │ │ │ │ ├── collapse-up.svg │ │ │ │ ├── comment.svg │ │ │ │ ├── compressed.svg │ │ │ │ ├── console.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── copyright-mark.svg │ │ │ │ ├── credit-card.svg │ │ │ │ ├── cutlery.svg │ │ │ │ ├── dashboard.svg │ │ │ │ ├── download-alt.svg │ │ │ │ ├── download.svg │ │ │ │ ├── duplicate.svg │ │ │ │ ├── earphone.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── education.svg │ │ │ │ ├── eject.svg │ │ │ │ ├── envelope.svg │ │ │ │ ├── equalizer.svg │ │ │ │ ├── erase.svg │ │ │ │ ├── euro-symbol.svg │ │ │ │ ├── exclamation-sign.svg │ │ │ │ ├── expand.svg │ │ │ │ ├── export.svg │ │ │ │ ├── eye-close.svg │ │ │ │ ├── eye-open.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── facetime-video.svg │ │ │ │ ├── fast-backward.svg │ │ │ │ ├── fast-forward.svg │ │ │ │ ├── file-doc.svg │ │ │ │ ├── file-pdf.svg │ │ │ │ ├── file-xls.svg │ │ │ │ ├── file.svg │ │ │ │ ├── film.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── fire.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── flash.svg │ │ │ │ ├── floppy-disk.svg │ │ │ │ ├── floppy-open.svg │ │ │ │ ├── floppy-remove.svg │ │ │ │ ├── floppy-save.svg │ │ │ │ ├── floppy-saved.svg │ │ │ │ ├── folder-close.svg │ │ │ │ ├── folder-open.svg │ │ │ │ ├── font.svg │ │ │ │ ├── forward.svg │ │ │ │ ├── france.svg │ │ │ │ ├── fullscreen.svg │ │ │ │ ├── gbp.svg │ │ │ │ ├── gift.svg │ │ │ │ ├── glass.svg │ │ │ │ ├── globe.svg │ │ │ │ ├── grain.svg │ │ │ │ ├── hand-down.svg │ │ │ │ ├── hand-left.svg │ │ │ │ ├── hand-right.svg │ │ │ │ ├── hand-up.svg │ │ │ │ ├── hd-video.svg │ │ │ │ ├── hdd.svg │ │ │ │ ├── header.svg │ │ │ │ ├── headphone.svg │ │ │ │ ├── heart-empty.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── home.svg │ │ │ │ ├── hourglass.svg │ │ │ │ ├── import.svg │ │ │ │ ├── imprimer.svg │ │ │ │ ├── inbox.svg │ │ │ │ ├── indent-left.svg │ │ │ │ ├── indent-right.svg │ │ │ │ ├── info-sign.svg │ │ │ │ ├── instagram.svg │ │ │ │ ├── italic.svg │ │ │ │ ├── king.svg │ │ │ │ ├── knight.svg │ │ │ │ ├── lamp.svg │ │ │ │ ├── leaf.svg │ │ │ │ ├── level-up.svg │ │ │ │ ├── link.svg │ │ │ │ ├── linkedin-logo.svg │ │ │ │ ├── list-alt.svg │ │ │ │ ├── list.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── log-in.svg │ │ │ │ ├── log-out.svg │ │ │ │ ├── lolly-tasted.svg │ │ │ │ ├── lolly.svg │ │ │ │ ├── magnet.svg │ │ │ │ ├── map-marker.svg │ │ │ │ ├── menu-down.svg │ │ │ │ ├── menu-hamburger.svg │ │ │ │ ├── menu-left.svg │ │ │ │ ├── menu-right.svg │ │ │ │ ├── menu-up.svg │ │ │ │ ├── minus-sign.svg │ │ │ │ ├── minus.svg │ │ │ │ ├── modal-window.svg │ │ │ │ ├── move.svg │ │ │ │ ├── music.svg │ │ │ │ ├── new-window.svg │ │ │ │ ├── object-align-bottom.svg │ │ │ │ ├── object-align-horizontal.svg │ │ │ │ ├── object-align-left.svg │ │ │ │ ├── object-align-right.svg │ │ │ │ ├── object-align-top.svg │ │ │ │ ├── object-align-vertical.svg │ │ │ │ ├── off.svg │ │ │ │ ├── oil.svg │ │ │ │ ├── ok-circle.svg │ │ │ │ ├── ok-sign.svg │ │ │ │ ├── ok.svg │ │ │ │ ├── open-file.svg │ │ │ │ ├── open.svg │ │ │ │ ├── option-horizontal.svg │ │ │ │ ├── option-vertical.svg │ │ │ │ ├── paperclip.svg │ │ │ │ ├── paste.svg │ │ │ │ ├── pause.svg │ │ │ │ ├── pawn.svg │ │ │ │ ├── pdf.svg │ │ │ │ ├── pencil.svg │ │ │ │ ├── phone-alt.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── picture.svg │ │ │ │ ├── plane.svg │ │ │ │ ├── play-circle.svg │ │ │ │ ├── play.svg │ │ │ │ ├── plus-sign.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── print.svg │ │ │ │ ├── pushpin.svg │ │ │ │ ├── pushpin2.svg │ │ │ │ ├── pushpin3.svg │ │ │ │ ├── pushpin4.svg │ │ │ │ ├── pushpin5.svg │ │ │ │ ├── pushpin6.svg │ │ │ │ ├── pushpin7.svg │ │ │ │ ├── pushpin8.svg │ │ │ │ ├── qrcode.svg │ │ │ │ ├── queen.svg │ │ │ │ ├── question-sign.svg │ │ │ │ ├── random.svg │ │ │ │ ├── record.svg │ │ │ │ ├── refresh.svg │ │ │ │ ├── registration-mark.svg │ │ │ │ ├── remove-circle.svg │ │ │ │ ├── remove-sign.svg │ │ │ │ ├── remove.svg │ │ │ │ ├── repeat.svg │ │ │ │ ├── reset.svg │ │ │ │ ├── resize-full.svg │ │ │ │ ├── resize-horizontal.svg │ │ │ │ ├── resize-small.svg │ │ │ │ ├── resize-vertical.svg │ │ │ │ ├── retweet.svg │ │ │ │ ├── road.svg │ │ │ │ ├── ruble.svg │ │ │ │ ├── save-alt.svg │ │ │ │ ├── save-file.svg │ │ │ │ ├── saved.svg │ │ │ │ ├── scale.svg │ │ │ │ ├── scissors.svg │ │ │ │ ├── screenshot.svg │ │ │ │ ├── sd-video.svg │ │ │ │ ├── search.svg │ │ │ │ ├── seat-belt.svg │ │ │ │ ├── send.svg │ │ │ │ ├── share-alt.svg │ │ │ │ ├── share.svg │ │ │ │ ├── shopping-cart.svg │ │ │ │ ├── signal.svg │ │ │ │ ├── sorting-asc.svg │ │ │ │ ├── sorting-desc.svg │ │ │ │ ├── sorting.svg │ │ │ │ ├── sound-5-1.svg │ │ │ │ ├── sound-6-1.svg │ │ │ │ ├── sound-7-1.svg │ │ │ │ ├── sound-dolby.svg │ │ │ │ ├── sound-stereo.svg │ │ │ │ ├── star-empty.svg │ │ │ │ ├── star.svg │ │ │ │ ├── stats.svg │ │ │ │ ├── step-backward.svg │ │ │ │ ├── step-forward.svg │ │ │ │ ├── stop.svg │ │ │ │ ├── subscript.svg │ │ │ │ ├── subtitles.svg │ │ │ │ ├── sunglasses.svg │ │ │ │ ├── superscript.svg │ │ │ │ ├── tag.svg │ │ │ │ ├── tags.svg │ │ │ │ ├── task.svg │ │ │ │ ├── text-background.svg │ │ │ │ ├── text-color.svg │ │ │ │ ├── text-height.svg │ │ │ │ ├── text-size.svg │ │ │ │ ├── text-width.svg │ │ │ │ ├── th-large.svg │ │ │ │ ├── th-list.svg │ │ │ │ ├── th.svg │ │ │ │ ├── thumbs-down.svg │ │ │ │ ├── thumbs-up.svg │ │ │ │ ├── time.svg │ │ │ │ ├── tint.svg │ │ │ │ ├── tow-truck.svg │ │ │ │ ├── towed-car.svg │ │ │ │ ├── tower.svg │ │ │ │ ├── transfer.svg │ │ │ │ ├── trash.svg │ │ │ │ ├── tree-conifer.svg │ │ │ │ ├── tree-deciduous.svg │ │ │ │ ├── twitter-logo-silhouette.svg │ │ │ │ ├── uncheck.svg │ │ │ │ ├── unlock.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── usd.svg │ │ │ │ ├── user.svg │ │ │ │ ├── volume-down.svg │ │ │ │ ├── volume-off.svg │ │ │ │ ├── volume-up.svg │ │ │ │ ├── warning-sign.svg │ │ │ │ ├── wrench.svg │ │ │ │ ├── xls.svg │ │ │ │ ├── yen.svg │ │ │ │ ├── youtube-symbol.svg │ │ │ │ ├── zoom-in.svg │ │ │ │ └── zoom-out.svg │ │ │ ├── legacy │ │ │ │ ├── icons-sprite.svg │ │ │ │ └── icons │ │ │ │ │ ├── af-icons.css │ │ │ │ │ ├── af-icons.scss │ │ │ │ │ ├── icons.eot │ │ │ │ │ ├── icons.svg │ │ │ │ │ ├── icons.ttf │ │ │ │ │ └── icons.woff │ │ │ ├── logo-axa.svg │ │ │ └── scss │ │ │ │ ├── _breakpoints.scss │ │ │ │ ├── _custom-af-colorsvariables.scss │ │ │ │ ├── _custom-af.scss │ │ │ │ ├── _custom-bootstrap.scss │ │ │ │ ├── _functions.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── colorsList.js │ │ │ │ └── core.scss │ │ ├── getClickId.tsx │ │ ├── getComponentClassName.ts │ │ ├── index.ts │ │ └── useId.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── help │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Help.stories.tsx │ │ ├── Help.tsx │ │ ├── __tests__ │ │ │ └── Help.spec.tsx │ │ ├── help-custom.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── helpinfo │ ├── README.md │ ├── package.json │ ├── src │ │ ├── HelpInfo.stories.tsx │ │ ├── HelpInfo.tsx │ │ ├── __tests__ │ │ │ └── HelpInfo.spec.tsx │ │ ├── help-info.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── icon │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Icon.tsx │ │ ├── __tests__ │ │ │ ├── Icon.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ └── Icon.spec.tsx.snap │ │ ├── icons.scss │ │ └── index.ts │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── link │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Link.tsx │ │ ├── __tests__ │ │ │ └── Link.spec.tsx │ │ ├── index.ts │ │ └── link.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── loader │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Loader.stories.tsx │ │ ├── Loader.tsx │ │ ├── LoaderModes.ts │ │ ├── __tests__ │ │ │ └── Loader.spec.tsx │ │ ├── index.ts │ │ └── spinner.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── panel │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Panel.tsx │ │ ├── __tests__ │ │ │ └── Panel.spec.tsx │ │ ├── index.ts │ │ └── panel.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── popover │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Popover.stories.tsx │ │ ├── Popover.tsx │ │ ├── PopoverBase.stories.tsx │ │ ├── PopoverBase.tsx │ │ ├── PopoverModes.ts │ │ ├── PopoverPlacements.ts │ │ ├── __tests__ │ │ │ └── Popover.spec.tsx │ │ ├── help-custom.scss │ │ ├── index.ts │ │ └── popover.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── restitution │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ArticleRestitution.tsx │ │ ├── HeaderRestitution.tsx │ │ ├── Restitution.stories.tsx │ │ ├── Restitution.tsx │ │ ├── RestitutionList.tsx │ │ ├── SectionRestitution.tsx │ │ ├── SectionRestitutionColumn.tsx │ │ ├── SectionRestitutionRow.tsx │ │ ├── SectionRestitutionTitle.tsx │ │ ├── __tests__ │ │ │ ├── Restitution.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ └── Restitution.spec.tsx.snap │ │ ├── index.ts │ │ └── restitution.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── table │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Body.tsx │ │ ├── Header.tsx │ │ ├── Items │ │ │ ├── Items.stories.tsx │ │ │ ├── Items.tsx │ │ │ └── README.md │ │ ├── Pager │ │ │ ├── Li.tsx │ │ │ ├── LiPoint.tsx │ │ │ ├── Modes.ts │ │ │ ├── Next.tsx │ │ │ ├── Pager.stories.tsx │ │ │ ├── Pager.tsx │ │ │ ├── Previous.tsx │ │ │ ├── README.md │ │ │ └── pager.scss │ │ ├── Paging │ │ │ ├── Paging.stories.tsx │ │ │ ├── Paging.tsx │ │ │ ├── README.md │ │ │ └── paging.scss │ │ ├── Table.stories.tsx │ │ ├── Table.tsx │ │ ├── TableCore.tsx │ │ ├── Td.tsx │ │ ├── Th.tsx │ │ ├── Tr.tsx │ │ ├── __tests__ │ │ │ ├── Items.spec.tsx │ │ │ ├── Pager.spec.tsx │ │ │ ├── Paging.spec.tsx │ │ │ ├── Table.spec.tsx │ │ │ └── __snapshots__ │ │ │ │ ├── Items.spec.tsx.snap │ │ │ │ ├── Pager.spec.tsx.snap │ │ │ │ └── Paging.spec.tsx.snap │ │ ├── index.ts │ │ └── table.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── tabs │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Pane.tsx │ │ ├── Tab.tsx │ │ ├── Tabs.stories.tsx │ │ ├── Tabs.tsx │ │ ├── TabsCore.tsx │ │ ├── TabsStateless.tsx │ │ ├── Title.tsx │ │ ├── __tests__ │ │ │ ├── Pane.spec.tsx │ │ │ ├── Tabs.spec.tsx │ │ │ ├── TabsCore.spec.tsx │ │ │ ├── TabsStateless.spec.tsx │ │ │ └── Title.spec.tsx │ │ ├── index.ts │ │ └── tabs.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json └── title │ ├── README.md │ ├── package.json │ ├── src │ ├── Title.stories.tsx │ ├── Title.tsx │ ├── __tests__ │ │ └── Title.spec.tsx │ ├── index.ts │ └── title.scss │ ├── tsconfig-cjs.json │ └── tsconfig.json ├── scripts ├── config.js ├── inject-version.js ├── jest.init.ts ├── style.js └── template.js ├── storybook-public ├── favicon.ico ├── icons.svg ├── images │ ├── react.svg │ └── storybook.svg ├── index.html └── sante.svg ├── tsconfig-base.json ├── tsconfig-cjs.json └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | indent_style = space 9 | indent_size = 2 10 | end_of_line = lf 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | translate_tabs_to_spaces = true 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .cache 2 | dist 3 | coverage 4 | node_modules 5 | package-lock.json 6 | 7 | scripts 8 | babel.config.json 9 | jest.config.json 10 | lerna.json 11 | tsconfig.json 12 | tsconfig-base.json 13 | tsconfig-cjs.json 14 | package.json 15 | 16 | # react-toolkit-all 17 | packages/all/component 18 | packages/all/esm 19 | 20 | storybook-static 21 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Suggest an bug for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | ### Issue and Steps to Reproduce 10 | 11 | 12 | 13 | #### Versions 14 | 15 | #### Screenshots 16 | 17 | #### Expected 18 | 19 | #### Actual 20 | 21 | #### Additional Details 22 | 23 | - Installed packages 24 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Related issue 2 | 3 | ### Reference to the issue 4 | 5 | `Here you can add link to related issue` 6 | 7 | ### Description of the issue 8 | 9 | `Your description` 10 | 11 | ### Person(s) for reviewing proposed changes 12 | 13 | `You can add @mention here` 14 | 15 | # Important 16 | 17 | Before creating a pull request run unit tests 18 | 19 | ```sh 20 | $ npm test 21 | 22 | # watch for changes 23 | $ npm test -- --watch 24 | 25 | # For a specific file (e.g., in packages/context/__tests__/command.test.js) 26 | $ npm test -- --watch packages/action 27 | ``` 28 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .cache 2 | dist 3 | coverage 4 | node_modules 5 | package-lock.json 6 | 7 | CHANGELOG.md 8 | lerna.json 9 | 10 | # react-toolkit-all 11 | packages/all/src/bootstrap/af-components.template.scss 12 | packages/all/src/bootstrap/af-toolkit-core.template.scss 13 | packages/all/component 14 | packages/all/esm 15 | 16 | storybook-static 17 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "es5", 4 | "bracketSameLine": true 5 | } 6 | -------------------------------------------------------------------------------- /.storybook/manager.js: -------------------------------------------------------------------------------- 1 | import addons from '@storybook/addons'; 2 | import { create } from '@storybook/theming/create'; 3 | 4 | const theme = create({ 5 | base: 'light', 6 | brandTitle: '@axa-fr/react-toolkit-all', 7 | brandUrl: 'https://axafrance.github.io/design-system/', 8 | }); 9 | 10 | addons.setConfig({ 11 | isFullscreen: false, 12 | panelPosition: 'bottom', 13 | isToolshown: true, 14 | theme, 15 | }); 16 | -------------------------------------------------------------------------------- /.storybook/storybook.css: -------------------------------------------------------------------------------- 1 | #root { 2 | padding: 2rem; 3 | } 4 | #root > div > div { 5 | text-align: left !important; 6 | } 7 | 8 | .storybook-readme-story > div { 9 | text-align: left !important; 10 | } 11 | 12 | .af-form { 13 | padding-bottom: 5rem; 14 | } 15 | 16 | code[class*='language-'], 17 | pre[class*='language-'] { 18 | text-shadow: none !important; 19 | color: lightgray !important; 20 | } 21 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "sonarlint.connectedMode.project": { 3 | "projectKey": "AxaGuilDEv_react-toolkit", 4 | "serverId": "sonarcloud" 5 | }, 6 | "editor.codeActionsOnSave": { 7 | "source.fixAll.eslint": "explicit" 8 | }, 9 | "[typescriptreact,jsonc,typescript,javascript,html,json]": { 10 | "editor.defaultFormatter": "esbenp.prettier-vscode" 11 | }, 12 | "typescript.tsdk": "node_modules\\typescript\\lib" 13 | } 14 | -------------------------------------------------------------------------------- /__mocks__/fileMock.js: -------------------------------------------------------------------------------- 1 | // __mocks__/fileMock.js 2 | 3 | module.exports = 'test-file-stub'; 4 | -------------------------------------------------------------------------------- /__mocks__/styleMock.js: -------------------------------------------------------------------------------- 1 | // __mocks__/styleMock.js 2 | 3 | module.exports = {}; 4 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "3.0.2", 3 | "command": { 4 | "publish": { 5 | "ignoreChanges": [ 6 | "ignored-file", 7 | "*.md" 8 | ], 9 | "message": "chore(release): publish %s [skip ci]" 10 | }, 11 | "bootstrap": { 12 | "ignore": "component-*", 13 | "npmClientArgs": [ 14 | "--no-package-lock", 15 | "--legacy-peer-deps" 16 | ] 17 | } 18 | }, 19 | "useWorkspaces": true, 20 | "packages": [ 21 | "packages/*", 22 | "packages/Form/*", 23 | "packages/Form/Input/*", 24 | "packages/Layout/*", 25 | "packages/Modal/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/CardContent.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | 3 | type Props = { id?: string; children?: ReactNode | ReactNode[] }; 4 | const CardContent = ({ id, children }: Props) => ( 5 | 8 | ); 9 | export default CardContent; 10 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/CardFooter.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | 3 | type Props = { id?: string; children?: ReactNode }; 4 | const CardFooter = ({ children, id }: Props) => ( 5 | 8 | ); 9 | 10 | export default CardFooter; 11 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/CardGroupCheckbox.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentProps } from 'react'; 2 | import CardGroup from './CardGroup'; 3 | 4 | type Props = Omit, 'type'>; 5 | const CardGroupCheckBox = ({ children, ...props }: Props) => ( 6 | 7 | {children} 8 | 9 | ); 10 | 11 | export default CardGroupCheckBox; 12 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/CardGroupRadio.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentProps } from 'react'; 2 | import CardGroup from './CardGroup'; 3 | 4 | type Props = Omit, 'type'>; 5 | const CardGroupRadio = ({ children, ...props }: Props) => ( 6 | 7 | {children} 8 | 9 | ); 10 | 11 | export default CardGroupRadio; 12 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/CardMeta.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren } from 'react'; 2 | 3 | type Props = PropsWithChildren<{}>; 4 | 5 | const CardMeta = ({ children }: Props) => ( 6 |

{children}

7 | ); 8 | 9 | export default CardMeta; 10 | -------------------------------------------------------------------------------- /packages/Form/Input/card/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CardGroupRadio } from './CardGroupRadio'; 2 | export { default as CardGroupCheckbox } from './CardGroupCheckbox'; 3 | export { default as Card } from './Card'; 4 | export { default as CardMeta } from './CardMeta'; 5 | export { default as CardContent } from './CardContent'; 6 | export { default as CardHeader } from './CardHeader'; 7 | export { default as CardFooter } from './CardFooter'; 8 | -------------------------------------------------------------------------------- /packages/Form/Input/card/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/card/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/checkbox/src/CheckboxModes.ts: -------------------------------------------------------------------------------- 1 | enum Modes { 2 | classic = 'classic', 3 | default = 'default', 4 | inline = 'inline', 5 | toggle = 'toggle', 6 | } 7 | 8 | export default Modes; 9 | -------------------------------------------------------------------------------- /packages/Form/Input/checkbox/src/__tests__/CheckboxInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import CheckboxInput from '../CheckboxInput'; 4 | 5 | describe('', () => { 6 | it('renders CheckboxInput correctly', () => { 7 | const { asFragment } = render( 8 | {}} 15 | /> 16 | ); 17 | expect(asFragment()).toMatchSnapshot(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/Form/Input/checkbox/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as CheckboxItem } from './CheckboxItem'; 2 | export { default as CheckboxInput } from './CheckboxInput'; 3 | export { default as Checkbox } from './Checkbox'; 4 | export { default as CheckboxModes } from './CheckboxModes'; 5 | -------------------------------------------------------------------------------- /packages/Form/Input/checkbox/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/checkbox/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/choice/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ChoiceInput } from './ChoiceInput'; 2 | export { default as Choice } from './Choice'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/choice/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/choice/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/date/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as DateInput } from './DateInput'; 2 | export { default as Date } from './Date'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/date/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/date/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/file/src/__tests__/File.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import File from '../File'; 4 | 5 | describe('', () => { 6 | it('renders File.File correctly', () => { 7 | const { asFragment } = render( 8 | {}} 13 | accept="image/jpeg, image/png, application/*" 14 | multiple 15 | /> 16 | ); 17 | expect(asFragment()).toMatchSnapshot(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/Form/Input/file/src/__tests__/FileInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import FileInput from '../FileInput'; 4 | 5 | describe('', () => { 6 | it('renders FileInput correctly', () => { 7 | const { asFragment } = render( 8 | {}} 13 | accept="image/jpeg, image/png, application/*" 14 | /> 15 | ); 16 | expect(asFragment()).toMatchSnapshot(); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/Form/Input/file/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as FileInput } from './FileInput'; 2 | export { default as File } from './File'; 3 | export { default as FileTable } from './FileTable'; 4 | export { default as FileLine } from './FileLine'; 5 | -------------------------------------------------------------------------------- /packages/Form/Input/file/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/file/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/number/src/__tests__/NumberInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import NumberInput from '../NumberInput'; 4 | 5 | describe('', () => { 6 | it('renders NumberInput correctly', () => { 7 | const { asFragment } = render( 8 | {}} 14 | /> 15 | ); 16 | 17 | expect(asFragment()).toMatchSnapshot(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/Form/Input/number/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as NumberInput } from './NumberInput'; 2 | export { default as Number } from './Number'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/number/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/number/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/pass/src/Constant.ts: -------------------------------------------------------------------------------- 1 | export enum StrengthEnum { 2 | 'bad' = 0, 3 | 'okay' = 1, 4 | 'good' = 2, 5 | 'verygood' = 3, 6 | 'excellent' = 4, 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/pass/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Pass } from './Pass'; 2 | export { default as PassInput } from './PassInput'; 3 | 4 | export { StrengthEnum } from './Constant'; 5 | -------------------------------------------------------------------------------- /packages/Form/Input/pass/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/pass/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/radio/src/__tests__/__snapshots__/RadioItem.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`RadioItem should have correct html rendered 1`] = ` 4 | 5 |
8 | 14 | 24 |
25 |
26 | `; 27 | -------------------------------------------------------------------------------- /packages/Form/Input/radio/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as RadioItem } from './RadioItem'; 2 | export { default as RadioInput } from './RadioInput'; 3 | export { default as Radio, RadioModes } from './Radio'; 4 | -------------------------------------------------------------------------------- /packages/Form/Input/radio/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/radio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/select-multi/src/__tests__/MultiSelectInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import MultiSelectInput from '../MultiSelectInput'; 4 | import { options, values } from './MultiSelect.spec'; 5 | 6 | test('renders MultiSelectInput correctly', () => { 7 | const { asFragment } = render( 8 | 17 | ); 18 | expect(asFragment()).toMatchSnapshot(); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/Form/Input/select-multi/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as MultiSelectInput } from './MultiSelectInput'; 2 | export { default as MultiSelect } from './MultiSelect'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/select-multi/src/select.scss: -------------------------------------------------------------------------------- 1 | @import '@axa-fr/react-toolkit-core/src/common/scss/core.scss'; 2 | 3 | .react-select > div:nth-of-type(2) { 4 | z-index: 2; 5 | } 6 | 7 | .af-form__select { 8 | &--error { 9 | .react-select > div { 10 | border-color: $color-red-axa; 11 | } 12 | } 13 | &--warning { 14 | .react-select > div { 15 | border-color: $color-orange-dark; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/Form/Input/select-multi/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/select-multi/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/select/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Select } from './Select'; 2 | export { default as SelectBase } from './SelectBase'; 3 | export { default as SelectInput } from './SelectInput'; 4 | -------------------------------------------------------------------------------- /packages/Form/Input/select/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/select/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/slider/src/__tests__/Slider.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import Slider from '../Slider'; 4 | 5 | describe('', () => { 6 | it('renders Slider correctly', () => { 7 | const { asFragment } = render( 8 | {}} /> 9 | ); 10 | expect(asFragment()).toMatchSnapshot(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/Form/Input/slider/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Slider } from './Slider'; 2 | export { default as SliderInput } from './SliderInput'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/slider/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/slider/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/switch/src/__tests__/SwitchInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import SwitchInput from '../SwitchInput'; 4 | 5 | describe('', () => { 6 | it('renders SwitchInput correctly', () => { 7 | const { asFragment } = render( 8 | {}} 16 | /> 17 | ); 18 | expect(asFragment()).toMatchSnapshot(); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /packages/Form/Input/switch/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as SwitchInput } from './SwitchInput'; 2 | export { default as Switch } from './Switch'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/switch/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/switch/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/text/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TextInput } from './TextInput'; 2 | export { default as Text } from './Text'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/text/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/text/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/textarea/src/__tests__/TextareaInput.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import TextareaInput from '../TextareaInput'; 4 | 5 | test('renders TextareaInput correctly', () => { 6 | const { asFragment } = render( 7 | {}} 13 | /> 14 | ); 15 | expect(asFragment()).toMatchSnapshot(); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/Form/Input/textarea/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as TextareaInput } from './TextareaInput'; 2 | export { default as Textarea } from './Textarea'; 3 | -------------------------------------------------------------------------------- /packages/Form/Input/textarea/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/Input/textarea/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/core/src/HelpMessage.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | 3 | type HelpProps = { 4 | message?: ReactNode; 5 | isVisible?: boolean; 6 | }; 7 | 8 | const HelpMessage = ({ message, isVisible = true }: HelpProps) => 9 | isVisible && {message}; 10 | 11 | export default HelpMessage; 12 | -------------------------------------------------------------------------------- /packages/Form/core/src/InputList.ts: -------------------------------------------------------------------------------- 1 | export const isDisabled = (option: { disabled?: boolean }, disabled: boolean) => 2 | option.disabled !== undefined ? option.disabled : disabled; 3 | 4 | const InputList = { 5 | isDisabled, 6 | }; 7 | 8 | export default InputList; 9 | -------------------------------------------------------------------------------- /packages/Form/core/src/MessageTypes.ts: -------------------------------------------------------------------------------- 1 | enum MessageTypes { 2 | error = 'error', 3 | success = 'success', 4 | warning = 'warning', 5 | } 6 | 7 | export default MessageTypes; 8 | -------------------------------------------------------------------------------- /packages/Form/core/src/__tests__/__snapshots__/FieldError.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`FieldError Should not render when message undefined 1`] = ``; 4 | 5 | exports[`FieldError Should render 1`] = ` 6 | 7 | 10 | 13 | 16 | Champ obligatoire 17 | 18 | 19 | 20 | `; 21 | -------------------------------------------------------------------------------- /packages/Form/core/src/__tests__/__snapshots__/HelpMessage.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`HelpMessage Render when is not visible 1`] = ``; 4 | 5 | exports[`HelpMessage Render when is visible 1`] = ` 6 | 7 | 10 | Message d'aide à la saisie 11 | 12 | 13 | `; 14 | -------------------------------------------------------------------------------- /packages/Form/core/src/getFirstId.ts: -------------------------------------------------------------------------------- 1 | import type { Option } from '.'; 2 | 3 | const getFirstId = (options: Option[]) => 4 | !options || options.length === 0 ? '' : options[0].id; 5 | 6 | export default getFirstId; 7 | -------------------------------------------------------------------------------- /packages/Form/core/src/getOptionClassName.ts: -------------------------------------------------------------------------------- 1 | import { getComponentClassName } from '@axa-fr/react-toolkit-core'; 2 | 3 | export function getOptionClassName( 4 | className: string, 5 | classModifier: string, 6 | defaultClassName: string, 7 | disabled: boolean 8 | ) { 9 | const classModifierWithDisabled = [ 10 | classModifier, 11 | disabled ? 'disabled' : undefined, 12 | ] 13 | .filter((c) => !!c) 14 | .join(' '); 15 | 16 | return getComponentClassName( 17 | className, 18 | classModifierWithDisabled, 19 | defaultClassName 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /packages/Form/core/src/useInputClassModifier.ts: -------------------------------------------------------------------------------- 1 | export function useInputClassModifier( 2 | classModifier: string, 3 | disabled: boolean, 4 | hasChildren: boolean 5 | ) { 6 | return { 7 | inputClassModifier: [ 8 | classModifier ?? '', 9 | hasChildren ? 'hasinfobulle' : '', 10 | ].join(' '), 11 | inputFieldClassModifier: [ 12 | classModifier ?? '', 13 | disabled ? 'disabled' : '', 14 | ].join(' '), 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /packages/Form/core/src/useOptionsWithId.ts: -------------------------------------------------------------------------------- 1 | import { createId } from '@axa-fr/react-toolkit-core'; 2 | import type { Option } from '.'; 3 | 4 | export function useOptionsWithId(options?: Option[], id?: string) { 5 | if (!options) { 6 | return []; 7 | } 8 | return options.map((option, index) => { 9 | const newOptionId = id ? `${id}_${index}` : createId(); 10 | return { ...option, id: option.id ?? newOptionId }; 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /packages/Form/core/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/README.md: -------------------------------------------------------------------------------- 1 | ## Filter Inline 2 | 3 | ### Get started 4 | 5 | ```sh 6 | npm i @axa-fr/react-toolkit-form-filter-inline 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/src/FilterInline.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const FilterInline = () =>
; 4 | 5 | export default FilterInline; 6 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/src/__tests__/FilterInline.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | 4 | import FilterInline from '../FilterInline'; 5 | 6 | describe('', () => { 7 | it('renders without crashing', () => { 8 | const { asFragment } = render(); 9 | expect(asFragment()).toMatchSnapshot(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/src/__tests__/__snapshots__/FilterInline.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` renders without crashing 1`] = ` 4 | 5 |
6 | 7 | `; 8 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/src/filter-inline.scss: -------------------------------------------------------------------------------- 1 | @import '@axa-fr/react-toolkit-core/src/common/scss/core.scss'; 2 | 3 | .af-filter-inline { 4 | display: flex; 5 | align-items: center; 6 | justify-content: flex-start; 7 | flex-wrap: wrap; 8 | padding: 1rem 1rem; 9 | box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); 10 | 11 | &__title { 12 | padding-top: 1.25rem; 13 | font-weight: 600; 14 | 15 | &-text { 16 | margin-left: 0.5rem; 17 | } 18 | .glyphicon-filter { 19 | width: 17px; 20 | } 21 | } 22 | 23 | &__field { 24 | margin-left: 1rem; 25 | } 26 | 27 | .af-form__checkbox-custom { 28 | display: block; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/src/index.ts: -------------------------------------------------------------------------------- 1 | import FilterInline from './FilterInline'; 2 | 3 | export default FilterInline; 4 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/filter-inline/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/filter/README.md: -------------------------------------------------------------------------------- 1 | ## Form Filter 2 | 3 | ### Get started 4 | 5 | ```sh 6 | npm i @axa-fr/react-toolkit-form-filter 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/Form/filter/src/Filter.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const Filter = () =>
; 4 | 5 | export default Filter; 6 | -------------------------------------------------------------------------------- /packages/Form/filter/src/__tests__/Filter.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | 4 | import Filter from '../Filter'; 5 | 6 | describe('', () => { 7 | it('renders without crashing', () => { 8 | const { asFragment } = render(); 9 | expect(asFragment()).toMatchSnapshot(); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /packages/Form/filter/src/__tests__/__snapshots__/Filter.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` renders without crashing 1`] = ` 4 | 5 |
6 | 7 | `; 8 | -------------------------------------------------------------------------------- /packages/Form/filter/src/index.ts: -------------------------------------------------------------------------------- 1 | import Filter from './Filter'; 2 | 3 | export default Filter; 4 | -------------------------------------------------------------------------------- /packages/Form/filter/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/filter/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/steps/src/StepCurrent.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentPropsWithoutRef } from 'react'; 2 | import StepNoLink from './StepNoLink'; 3 | 4 | type Props = ComponentPropsWithoutRef; 5 | const StepCurrent = ({ 6 | className = 'on af-steps-list-step', 7 | ...otherProps 8 | }: Props) => ; 9 | 10 | export default StepCurrent; 11 | -------------------------------------------------------------------------------- /packages/Form/steps/src/StepDisabled.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentPropsWithoutRef } from 'react'; 2 | import StepNoLink from './StepNoLink'; 3 | 4 | type Props = ComponentPropsWithoutRef; 5 | const StepDisabled = ({ 6 | className = 'disabled af-steps-list-step', 7 | ...otherProps 8 | }: Props) => ; 9 | 10 | export default StepDisabled; 11 | -------------------------------------------------------------------------------- /packages/Form/steps/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Steps } from './Steps'; 2 | export { default as StepBase } from './StepBase'; 3 | export { default as Step } from './Step'; 4 | -------------------------------------------------------------------------------- /packages/Form/steps/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/steps/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/summary/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Summary } from './Summary'; 2 | -------------------------------------------------------------------------------- /packages/Form/summary/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Form/summary/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/footer-client/src/FooterClientItem.tsx: -------------------------------------------------------------------------------- 1 | import React, { MouseEvent, ReactNode } from 'react'; 2 | 3 | type Props = { 4 | path: string; 5 | onClick?: (action: { 6 | path: string; 7 | event: MouseEvent; 8 | }) => void; 9 | children: ReactNode; 10 | }; 11 | const FooterClientItem = ({ path, onClick, children }: Props) => ( 12 |
  • 13 | onClick && onClick({ path, event })} 16 | className="af-footer-client__column-link"> 17 | {children} 18 | 19 |
  • 20 | ); 21 | 22 | export default FooterClientItem; 23 | -------------------------------------------------------------------------------- /packages/Layout/footer-client/src/FooterClientList.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | 3 | type Props = { 4 | title: string; 5 | children: ReactNode; 6 | }; 7 | 8 | const FooterClientList = ({ title, children }: Props) => ( 9 |
    10 |

    {title}

    11 |
      {children}
    12 |
    13 | ); 14 | 15 | export default FooterClientList; 16 | -------------------------------------------------------------------------------- /packages/Layout/footer-client/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as FooterClient } from './FooterClient'; 2 | export { default as FooterClientList } from './FooterClientList'; 3 | export { default as FooterClientItem } from './FooterClientItem'; 4 | export { default as LanguageSelection } from './LanguageSelection'; 5 | export { default as SocialNetwork } from './SocialNetwork'; 6 | -------------------------------------------------------------------------------- /packages/Layout/footer-client/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/footer-client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/footer/globals.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.md'; 2 | 3 | declare module '*.svg'; 4 | -------------------------------------------------------------------------------- /packages/Layout/footer/src/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React, { ComponentProps, ReactNode } from 'react'; 2 | import logo from '@axa-fr/react-toolkit-core/dist/assets/logo-axa.svg'; 3 | import FooterCore from './FooterCore'; 4 | 5 | interface FooterProps 6 | extends Omit, 'children'> { 7 | copyright?: ReactNode; 8 | } 9 | 10 | const Footer = ({ copyright, ...footerProps }: FooterProps) => ( 11 | 12 | {copyright} 13 | 14 | ); 15 | export default Footer; 16 | -------------------------------------------------------------------------------- /packages/Layout/footer/src/__tests__/__snapshots__/FooterCore.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` should render a footer with children as content 1`] = ` 4 | 5 |
    8 |
    11 | 18 |
    19 |
    20 |
    21 | `; 22 | -------------------------------------------------------------------------------- /packages/Layout/footer/src/footer.scss: -------------------------------------------------------------------------------- 1 | @import '@axa-fr/react-toolkit-core/src/common/scss/core.scss'; 2 | 3 | $logo-size: 22px; 4 | 5 | .af-footer { 6 | font-size: 0.6875rem; 7 | padding: 0.5rem 0; 8 | 9 | .container { 10 | display: flex; 11 | align-items: center; 12 | 13 | .af-logo__brand { 14 | width: $logo-size; 15 | height: $logo-size; 16 | margin-right: 0.5rem; 17 | } 18 | } 19 | 20 | &-content { 21 | color: $color-axa; 22 | font-weight: 600; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/Layout/footer/src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Footer } from './Footer'; 2 | export { default as FooterCore } from './FooterCore'; 3 | -------------------------------------------------------------------------------- /packages/Layout/footer/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts", "./globals.d.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/footer/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts", "./globals.d.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/header/src/Drawer/drawer.scss: -------------------------------------------------------------------------------- 1 | @import '@axa-fr/react-toolkit-core/src/common/scss/core.scss'; 2 | 3 | .af-drawer { 4 | position: absolute; 5 | right: 0; 6 | width: $drawer-width; 7 | height: 100%; 8 | margin: 0; 9 | transform: translateX(100%); 10 | z-index: 1; 11 | transition: $drawer-transition; 12 | 13 | &.show { 14 | transform: translateX(0); 15 | } 16 | 17 | &.left { 18 | left: 0; 19 | transform: translateX(-100%); 20 | 21 | &.show { 22 | transform: translateX(0); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /packages/Layout/header/src/Header/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Header } from './Header'; 2 | -------------------------------------------------------------------------------- /packages/Layout/header/src/HeaderTitle/index.tsx: -------------------------------------------------------------------------------- 1 | export { default as HeaderTitle } from './HeaderTitle'; 2 | -------------------------------------------------------------------------------- /packages/Layout/header/src/Infos/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Infos } from './Infos'; 2 | -------------------------------------------------------------------------------- /packages/Layout/header/src/Name/index.ts: -------------------------------------------------------------------------------- 1 | export { default as Name } from './Name'; 2 | -------------------------------------------------------------------------------- /packages/Layout/header/src/NavBar/NavBar.helpers.ts: -------------------------------------------------------------------------------- 1 | export const getPosition = ( 2 | max: number, 3 | position: number, 4 | direction: string 5 | ) => { 6 | switch (direction) { 7 | case 'ArrowRight': 8 | case 'ArrowDown': 9 | return position + 1 < max ? position + 1 : 0; 10 | case 'ArrowLeft': 11 | case 'ArrowUp': 12 | return position - 1 < 0 ? max - 1 : position - 1; 13 | default: 14 | return position; 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /packages/Layout/header/src/NavBar/index.ts: -------------------------------------------------------------------------------- 1 | export { default as NavBar } from './NavBar'; 2 | export { default as NavBarBase } from './NavBarBase'; 3 | export { default as NavBarItem } from './NavBarItem'; 4 | export { NavBarItemBase } from './NavBarItemBase'; 5 | export { default as NavBarItemLink } from './NavBarItemLink'; 6 | -------------------------------------------------------------------------------- /packages/Layout/header/src/ToggleButton/index.ts: -------------------------------------------------------------------------------- 1 | import { cloneElement, isValidElement, ReactNode } from 'react'; 2 | 3 | type Props = { 4 | children: ReactNode; 5 | idControl: string; 6 | }; 7 | const ToggleButton = ({ children, idControl }: Props) => { 8 | return ( 9 | isValidElement(children) && 10 | cloneElement(children, { 11 | 'aria-controls': idControl, 12 | 'aria-haspopup': true, 13 | }) 14 | ); 15 | }; 16 | 17 | export default ToggleButton; 18 | -------------------------------------------------------------------------------- /packages/Layout/header/src/User/index.ts: -------------------------------------------------------------------------------- 1 | export { default as User } from './User'; 2 | -------------------------------------------------------------------------------- /packages/Layout/header/src/__tests__/Header.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import { Header } from '../Header/index'; 4 | 5 | describe('
    ', () => { 6 | it('renders Header correctly', () => { 7 | const { asFragment } = render(
    test
    ); 8 | expect(asFragment()).toMatchSnapshot(); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /packages/Layout/header/src/__tests__/Name.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import { Name } from '../Name/index'; 4 | 5 | describe('', () => { 6 | it('renders Name correctly', () => { 7 | const { asFragment } = render( 8 | null} 14 | /> 15 | ); 16 | 17 | expect(asFragment()).toMatchSnapshot(); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /packages/Layout/header/src/__tests__/ToggleButton.spec.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import ToggleButton from '../ToggleButton'; 4 | 5 | describe('ToggleButton', () => { 6 | it('Children has aria-controls property', () => { 7 | const idControl = 'test'; 8 | const { getByRole } = render( 9 | 10 | 11 | 12 | ); 13 | expect(getByRole('button')).toHaveAttribute('aria-controls', idControl); 14 | expect(getByRole('button')).toHaveAttribute('aria-haspopup', 'true'); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/Layout/header/src/__tests__/__snapshots__/Header.spec.tsx.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`
    renders Header correctly 1`] = ` 4 | 5 |
    8 |
    11 | 17 |
    18 |
    19 |
    20 | `; 21 | -------------------------------------------------------------------------------- /packages/Layout/header/src/index.ts: -------------------------------------------------------------------------------- 1 | export { Header } from './Header'; 2 | export { Infos } from './Infos'; 3 | export { Name } from './Name'; 4 | export { 5 | NavBar, 6 | NavBarBase, 7 | NavBarItem, 8 | NavBarItemBase, 9 | NavBarItemLink, 10 | } from './NavBar'; 11 | export { HeaderTitle } from './HeaderTitle'; 12 | export { default as ToggleButton } from './ToggleButton'; 13 | export { User } from './User'; 14 | -------------------------------------------------------------------------------- /packages/Layout/header/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Layout/header/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Modal/boolean/src/index.ts: -------------------------------------------------------------------------------- 1 | import BooleanModal from './ModalBoolean'; 2 | 3 | export { ModalBooleanProps } from './ModalBoolean'; 4 | 5 | export default BooleanModal; 6 | -------------------------------------------------------------------------------- /packages/Modal/boolean/tsconfig-cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig-cjs.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Modal/boolean/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm" 5 | }, 6 | "include": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/Modal/default/src/Body.tsx: -------------------------------------------------------------------------------- 1 | import { getComponentClassName } from '@axa-fr/react-toolkit-core'; 2 | import React from 'react'; 3 | 4 | export type BodyProps = React.HTMLAttributes & { 5 | classModifier?: string; 6 | }; 7 | 8 | const Body = ({ 9 | children, 10 | className, 11 | classModifier, 12 | ...otherProps 13 | }: BodyProps) => { 14 | const componentClassName = getComponentClassName( 15 | className, 16 | classModifier, 17 | 'af-modal__body' 18 | ); 19 | return ( 20 |
    21 | {children} 22 |
    23 | ); 24 | }; 25 | 26 | export default Body; 27 | -------------------------------------------------------------------------------- /packages/Modal/default/src/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { getComponentClassName } from '@axa-fr/react-toolkit-core'; 3 | 4 | export type FooterProps = React.HTMLAttributes & { 5 | classModifier?: string; 6 | }; 7 | 8 | const Footer = ({ classModifier, className, ...rest }: FooterProps) => { 9 | const componentClassName = getComponentClassName( 10 | className, 11 | classModifier, 12 | 'af-modal__footer' 13 | ); 14 | 15 | return