Repository: fabien-ml/hope-ui Branch: main Commit: e29e96e9dc3d Files: 584 Total size: 1.6 MB Directory structure: gitextract__b_j4ttw/ ├── .all-contributorsrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ └── build-test.yml ├── .gitignore ├── .husky/ │ ├── commit-msg │ └── pre-commit ├── .prettierrc.json ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── ROADMAP.md ├── apps/ │ └── docs/ │ ├── .eslintrc.json │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── AppNavLink.tsx │ │ │ ├── BeatLoader.tsx │ │ │ ├── Code.tsx │ │ │ ├── CodeSnippet.tsx │ │ │ ├── ColorScale.tsx │ │ │ ├── ContextualNav.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Header.tsx │ │ │ ├── MainNavContent.tsx │ │ │ ├── MainNavSubtitle.tsx │ │ │ ├── MainNavTitle.tsx │ │ │ ├── MainNavigation.tsx │ │ │ ├── PageLayout.tsx │ │ │ ├── PageTitle.tsx │ │ │ ├── Preview.tsx │ │ │ ├── PropsTable.tsx │ │ │ ├── SectionSubtitle.tsx │ │ │ ├── SectionTitle.tsx │ │ │ └── StylePropsTable.tsx │ │ ├── icons/ │ │ │ ├── IconAccessibility.tsx │ │ │ ├── IconArrowLeft.tsx │ │ │ ├── IconArrowRight.tsx │ │ │ ├── IconCaretDown.tsx │ │ │ ├── IconCheck.tsx │ │ │ ├── IconChevronRight.tsx │ │ │ ├── IconCircleDashed.tsx │ │ │ ├── IconCode.tsx │ │ │ ├── IconComponent.tsx │ │ │ ├── IconEdit.tsx │ │ │ ├── IconEmail.tsx │ │ │ ├── IconExternalLink.tsx │ │ │ ├── IconGear.tsx │ │ │ ├── IconGithub.tsx │ │ │ ├── IconHamburgerMenu.tsx │ │ │ ├── IconMenu.tsx │ │ │ ├── IconMinus.tsx │ │ │ ├── IconMoon.tsx │ │ │ ├── IconPalette.tsx │ │ │ ├── IconPhone.tsx │ │ │ ├── IconPlus.tsx │ │ │ ├── IconQuestionMark.tsx │ │ │ ├── IconRepeat.tsx │ │ │ ├── IconRocket.tsx │ │ │ ├── IconSearch.tsx │ │ │ ├── IconStar.tsx │ │ │ ├── IconSun.tsx │ │ │ ├── IconTwitter.tsx │ │ │ └── IconUser.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ └── pages/ │ │ ├── component-docs/ │ │ │ ├── data-display/ │ │ │ │ ├── accordion/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── avatar/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── badge/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── icon/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── image/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── kbd/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── list/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── table/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── tag/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── data-entry/ │ │ │ │ ├── checkbox/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── form-control/ │ │ │ │ │ ├── felte-example.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── radio/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── select/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── switch/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── textarea/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── feedback/ │ │ │ │ ├── alert/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── circular-progress/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── notification/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── progress/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── skeleton/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── spinner/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── general/ │ │ │ │ ├── button/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── icon-button/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── layout/ │ │ │ │ ├── aspect-ratio/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── box/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── center/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── container/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── divider/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── flex/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── grid/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── simple-grid/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── stack/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── navigation/ │ │ │ │ ├── anchor/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── breadcrumb/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── tabs/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── others/ │ │ │ │ └── close-button/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── overlay/ │ │ │ │ ├── drawer/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── menu/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── modal/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ ├── popover/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── snippets.ts │ │ │ │ └── tooltip/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ └── typography/ │ │ │ ├── heading/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ └── text/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ ├── features/ │ │ │ ├── create-styles/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── css-prop/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── global-styles/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── hope-factory/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ ├── responsive-styles/ │ │ │ │ ├── index.tsx │ │ │ │ └── snippets.ts │ │ │ └── style-props/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ ├── getting-started/ │ │ │ ├── changelog/ │ │ │ │ └── index.tsx │ │ │ └── installation/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ ├── landing-page.tsx │ │ ├── not-found.tsx │ │ └── theming/ │ │ ├── color-mode/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ ├── css-variables/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ ├── customize-theme/ │ │ │ ├── index.tsx │ │ │ └── snippets.ts │ │ └── default-theme/ │ │ ├── index.tsx │ │ └── snippets.ts │ ├── tsconfig.json │ └── vite.config.ts ├── commitlint.config.js ├── jest.config.js ├── jest.setup.ts ├── netlify.toml ├── package.json ├── packages/ │ └── solid/ │ ├── .browserslistrc │ ├── .storybook/ │ │ ├── main.js │ │ └── preview.js │ ├── CHANGELOG.md │ ├── README.md │ ├── dev/ │ │ ├── index.html │ │ ├── index.tsx │ │ └── vite.config.ts │ ├── jest.config.js │ ├── package.json │ ├── src/ │ │ ├── color-mode.ts │ │ ├── components/ │ │ │ ├── accordion/ │ │ │ │ ├── __tests__/ │ │ │ │ │ └── accordion.test.tsx │ │ │ │ ├── accordion-button.tsx │ │ │ │ ├── accordion-icon.tsx │ │ │ │ ├── accordion-item.tsx │ │ │ │ ├── accordion-panel.tsx │ │ │ │ ├── accordion.styles.ts │ │ │ │ ├── accordion.tsx │ │ │ │ └── index.ts │ │ │ ├── alert/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── alert-description.test.tsx │ │ │ │ │ ├── alert-icon.test.tsx │ │ │ │ │ ├── alert-title.test.tsx │ │ │ │ │ └── alert.test.tsx │ │ │ │ ├── alert-description.tsx │ │ │ │ ├── alert-icon.tsx │ │ │ │ ├── alert-title.tsx │ │ │ │ ├── alert.stories.tsx │ │ │ │ ├── alert.styles.ts │ │ │ │ ├── alert.tsx │ │ │ │ └── index.ts │ │ │ ├── anchor/ │ │ │ │ ├── anchor.stories.tsx │ │ │ │ ├── anchor.styles.ts │ │ │ │ ├── anchor.test.tsx │ │ │ │ ├── anchor.tsx │ │ │ │ └── index.ts │ │ │ ├── aspect-ratio/ │ │ │ │ ├── aspect-ratio.styles.ts │ │ │ │ ├── aspect-ratio.test.tsx │ │ │ │ ├── aspect-ratio.tsx │ │ │ │ └── index.ts │ │ │ ├── async-button/ │ │ │ │ ├── async-button.stories.tsx │ │ │ │ ├── async-button.test.tsx │ │ │ │ ├── async-button.tsx │ │ │ │ └── index.ts │ │ │ ├── avatar/ │ │ │ │ ├── avatar-badge.tsx │ │ │ │ ├── avatar-excess.tsx │ │ │ │ ├── avatar-group.tsx │ │ │ │ ├── avatar-image.tsx │ │ │ │ ├── avatar-initials.tsx │ │ │ │ ├── avatar.styles.ts │ │ │ │ ├── avatar.tsx │ │ │ │ ├── avatar.utils.tsx │ │ │ │ └── index.ts │ │ │ ├── badge/ │ │ │ │ ├── badge.stories.tsx │ │ │ │ ├── badge.styles.ts │ │ │ │ ├── badge.test.tsx │ │ │ │ ├── badge.tsx │ │ │ │ └── index.ts │ │ │ ├── box/ │ │ │ │ ├── box.test.tsx │ │ │ │ ├── box.tsx │ │ │ │ └── index.ts │ │ │ ├── breadcrumb/ │ │ │ │ ├── breadcrumb-item.tsx │ │ │ │ ├── breadcrumb-link.tsx │ │ │ │ ├── breadcrumb-separator.tsx │ │ │ │ ├── breadcrumb.styles.ts │ │ │ │ ├── breadcrumb.tsx │ │ │ │ └── index.ts │ │ │ ├── button/ │ │ │ │ ├── button-group.tsx │ │ │ │ ├── button-icon.tsx │ │ │ │ ├── button-loader.tsx │ │ │ │ ├── button.stories.tsx │ │ │ │ ├── button.styles.ts │ │ │ │ ├── button.test.tsx │ │ │ │ ├── button.tsx │ │ │ │ └── index.ts │ │ │ ├── center/ │ │ │ │ ├── center.stories.tsx │ │ │ │ ├── center.styles.ts │ │ │ │ ├── center.test.tsx │ │ │ │ ├── center.tsx │ │ │ │ └── index.ts │ │ │ ├── checkbox/ │ │ │ │ ├── checkbox-group.tsx │ │ │ │ ├── checkbox-primitive-indicator.tsx │ │ │ │ ├── checkbox-primitive.tsx │ │ │ │ ├── checkbox.stories.tsx │ │ │ │ ├── checkbox.styles.ts │ │ │ │ ├── checkbox.tsx │ │ │ │ └── index.ts │ │ │ ├── circular-progress/ │ │ │ │ ├── circular-progress-indicator.tsx │ │ │ │ ├── circular-progress-label.tsx │ │ │ │ ├── circular-progress.styles.ts │ │ │ │ ├── circular-progress.tsx │ │ │ │ └── index.ts │ │ │ ├── click-outside/ │ │ │ │ ├── click-outside.tsx │ │ │ │ └── index.ts │ │ │ ├── close-button/ │ │ │ │ ├── close-button.styles.ts │ │ │ │ ├── close-button.tsx │ │ │ │ └── index.ts │ │ │ ├── collapse/ │ │ │ │ ├── collapse.styles.ts │ │ │ │ ├── collapse.tsx │ │ │ │ └── index.ts │ │ │ ├── container/ │ │ │ │ ├── container.stories.tsx │ │ │ │ ├── container.styles.ts │ │ │ │ ├── container.test.tsx │ │ │ │ ├── container.tsx │ │ │ │ └── index.ts │ │ │ ├── divider/ │ │ │ │ ├── divider.styles.ts │ │ │ │ ├── divider.tsx │ │ │ │ └── index.ts │ │ │ ├── drawer/ │ │ │ │ ├── drawer-content.tsx │ │ │ │ ├── drawer-overlay.tsx │ │ │ │ ├── drawer.styles.ts │ │ │ │ ├── drawer.tsx │ │ │ │ └── index.ts │ │ │ ├── factory.tsx │ │ │ ├── flex/ │ │ │ │ ├── flex.test.tsx │ │ │ │ ├── flex.tsx │ │ │ │ └── index.ts │ │ │ ├── form-control/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── form-control.test.tsx │ │ │ │ │ ├── form-error-message.test.tsx │ │ │ │ │ ├── form-helper-text.test.tsx │ │ │ │ │ └── form-label.test.tsx │ │ │ │ ├── form-control.stories.tsx │ │ │ │ ├── form-control.styles.ts │ │ │ │ ├── form-control.tsx │ │ │ │ ├── form-error-message.tsx │ │ │ │ ├── form-helper-text.tsx │ │ │ │ ├── form-label.tsx │ │ │ │ ├── index.ts │ │ │ │ └── use-form-control.ts │ │ │ ├── grid/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── grid-item.test.tsx │ │ │ │ │ ├── grid.test.tsx │ │ │ │ │ └── simple-grid.test.tsx │ │ │ │ ├── grid-item.tsx │ │ │ │ ├── grid.tsx │ │ │ │ ├── index.ts │ │ │ │ └── simple-grid.tsx │ │ │ ├── heading/ │ │ │ │ ├── heading.styles.ts │ │ │ │ ├── heading.test.tsx │ │ │ │ ├── heading.tsx │ │ │ │ └── index.ts │ │ │ ├── icon/ │ │ │ │ ├── create-icon.tsx │ │ │ │ ├── icon.styles.ts │ │ │ │ ├── icon.test.tsx │ │ │ │ ├── icon.tsx │ │ │ │ └── index.ts │ │ │ ├── icon-button/ │ │ │ │ ├── icon-button.stories.tsx │ │ │ │ ├── icon-button.test.tsx │ │ │ │ ├── icon-button.tsx │ │ │ │ └── index.ts │ │ │ ├── icons/ │ │ │ │ ├── IconCaretDown.tsx │ │ │ │ ├── IconCheck.tsx │ │ │ │ ├── IconCheckCircleSolid.tsx │ │ │ │ ├── IconClose.tsx │ │ │ │ ├── IconCloseSmall.tsx │ │ │ │ ├── IconCrossCircle.tsx │ │ │ │ ├── IconExclamationCircleSolid.tsx │ │ │ │ ├── IconExclamationTriangleSolid.tsx │ │ │ │ ├── IconInfoCircleSolid.tsx │ │ │ │ ├── IconSelector.tsx │ │ │ │ └── IconSpinner.tsx │ │ │ ├── image/ │ │ │ │ ├── image.test.tsx │ │ │ │ ├── image.tsx │ │ │ │ ├── image.utils.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── input/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── input-addon.test.tsx │ │ │ │ │ ├── input-element.test.tsx │ │ │ │ │ ├── input-group.test.tsx │ │ │ │ │ └── input.test.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── input-addon.tsx │ │ │ │ ├── input-element.tsx │ │ │ │ ├── input-group.tsx │ │ │ │ ├── input.stories.tsx │ │ │ │ ├── input.styles.ts │ │ │ │ └── input.tsx │ │ │ ├── kbd/ │ │ │ │ ├── index.ts │ │ │ │ ├── kbd.styles.ts │ │ │ │ └── kbd.tsx │ │ │ ├── list/ │ │ │ │ ├── index.ts │ │ │ │ ├── list-icon.tsx │ │ │ │ ├── list-item.tsx │ │ │ │ ├── list.styles.ts │ │ │ │ └── list.tsx │ │ │ ├── menu/ │ │ │ │ ├── index.ts │ │ │ │ ├── menu-content.tsx │ │ │ │ ├── menu-group.tsx │ │ │ │ ├── menu-item.tsx │ │ │ │ ├── menu-label.tsx │ │ │ │ ├── menu-trigger.tsx │ │ │ │ ├── menu.styles.ts │ │ │ │ ├── menu.tsx │ │ │ │ └── menu.utils.ts │ │ │ ├── modal/ │ │ │ │ ├── create-modal.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modal-body.tsx │ │ │ │ ├── modal-close-button.tsx │ │ │ │ ├── modal-content.tsx │ │ │ │ ├── modal-footer.tsx │ │ │ │ ├── modal-header.tsx │ │ │ │ ├── modal-overlay.tsx │ │ │ │ ├── modal.styles.ts │ │ │ │ └── modal.tsx │ │ │ ├── notification/ │ │ │ │ ├── index.ts │ │ │ │ ├── notification-container.tsx │ │ │ │ ├── notification-description.tsx │ │ │ │ ├── notification-icon.tsx │ │ │ │ ├── notification-title.tsx │ │ │ │ ├── notification.events.ts │ │ │ │ ├── notification.service.ts │ │ │ │ ├── notification.styles.ts │ │ │ │ ├── notification.tsx │ │ │ │ ├── notification.types.ts │ │ │ │ ├── notifications-provider.context.ts │ │ │ │ └── notifications-provider.tsx │ │ │ ├── popover/ │ │ │ │ ├── index.ts │ │ │ │ ├── popover-anchor.tsx │ │ │ │ ├── popover-arrow.tsx │ │ │ │ ├── popover-body.tsx │ │ │ │ ├── popover-close-button.tsx │ │ │ │ ├── popover-content.tsx │ │ │ │ ├── popover-footer.tsx │ │ │ │ ├── popover-header.tsx │ │ │ │ ├── popover-trigger.tsx │ │ │ │ ├── popover.styles.ts │ │ │ │ └── popover.tsx │ │ │ ├── progress/ │ │ │ │ ├── index.ts │ │ │ │ ├── progress-indicator.tsx │ │ │ │ ├── progress-label.tsx │ │ │ │ ├── progress.styles.ts │ │ │ │ └── progress.tsx │ │ │ ├── radio/ │ │ │ │ ├── index.ts │ │ │ │ ├── radio-group.tsx │ │ │ │ ├── radio.stories.tsx │ │ │ │ ├── radio.styles.ts │ │ │ │ └── radio.tsx │ │ │ ├── select/ │ │ │ │ ├── index.ts │ │ │ │ ├── select-content.tsx │ │ │ │ ├── select-icon.tsx │ │ │ │ ├── select-label.tsx │ │ │ │ ├── select-listbox.tsx │ │ │ │ ├── select-optgroup.tsx │ │ │ │ ├── select-option-indicator.tsx │ │ │ │ ├── select-option-text.tsx │ │ │ │ ├── select-option.tsx │ │ │ │ ├── select-placeholder.tsx │ │ │ │ ├── select-tag-close-button.tsx │ │ │ │ ├── select-tag.tsx │ │ │ │ ├── select-trigger.tsx │ │ │ │ ├── select-value.tsx │ │ │ │ ├── select.styles.ts │ │ │ │ ├── select.tsx │ │ │ │ └── select.utils.ts │ │ │ ├── simple-select/ │ │ │ │ ├── index.ts │ │ │ │ ├── simple-option.tsx │ │ │ │ └── simple-select.tsx │ │ │ ├── skeleton/ │ │ │ │ ├── index.ts │ │ │ │ ├── skeleton-circle.tsx │ │ │ │ ├── skeleton-text.tsx │ │ │ │ ├── skeleton.styles.ts │ │ │ │ └── skeleton.tsx │ │ │ ├── spacer/ │ │ │ │ ├── index.ts │ │ │ │ ├── spacer.styles.ts │ │ │ │ ├── spacer.test.tsx │ │ │ │ └── spacer.tsx │ │ │ ├── spinner/ │ │ │ │ ├── index.ts │ │ │ │ ├── spinner.styles.ts │ │ │ │ └── spinner.tsx │ │ │ ├── stack/ │ │ │ │ ├── index.ts │ │ │ │ ├── stack.styles.ts │ │ │ │ ├── stack.test.tsx │ │ │ │ └── stack.tsx │ │ │ ├── storybook-utils.tsx │ │ │ ├── switch/ │ │ │ │ ├── index.ts │ │ │ │ ├── switch-primitive-thumb.tsx │ │ │ │ ├── switch-primitive.tsx │ │ │ │ ├── switch.stories.tsx │ │ │ │ ├── switch.styles.ts │ │ │ │ └── switch.tsx │ │ │ ├── table/ │ │ │ │ ├── index.ts │ │ │ │ ├── table-caption.tsx │ │ │ │ ├── table.styles.ts │ │ │ │ ├── table.tsx │ │ │ │ ├── tbody.tsx │ │ │ │ ├── td.tsx │ │ │ │ ├── tfoot.tsx │ │ │ │ ├── th.tsx │ │ │ │ ├── thead.tsx │ │ │ │ └── tr.tsx │ │ │ ├── tabs/ │ │ │ │ ├── index.ts │ │ │ │ ├── tab-list.tsx │ │ │ │ ├── tab-panel.tsx │ │ │ │ ├── tab.tsx │ │ │ │ ├── tabs.styles.ts │ │ │ │ └── tabs.tsx │ │ │ ├── tag/ │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── tag-close-button.test.tsx │ │ │ │ │ ├── tag-icon.test.tsx │ │ │ │ │ ├── tag-label.test.tsx │ │ │ │ │ └── tag.test.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── tag-close-button.tsx │ │ │ │ ├── tag-icon.tsx │ │ │ │ ├── tag-label.tsx │ │ │ │ ├── tag.stories.tsx │ │ │ │ ├── tag.styles.ts │ │ │ │ └── tag.tsx │ │ │ ├── test-utils.tsx │ │ │ ├── text/ │ │ │ │ ├── index.ts │ │ │ │ ├── text.styles.ts │ │ │ │ ├── text.test.tsx │ │ │ │ └── text.tsx │ │ │ ├── textarea/ │ │ │ │ ├── index.ts │ │ │ │ ├── textarea.stories.tsx │ │ │ │ ├── textarea.styles.ts │ │ │ │ ├── textarea.test.tsx │ │ │ │ └── textarea.tsx │ │ │ ├── tooltip/ │ │ │ │ ├── index.ts │ │ │ │ ├── tooltip.styles.ts │ │ │ │ └── tooltip.tsx │ │ │ └── types.ts │ │ ├── hooks/ │ │ │ ├── create-disclosure/ │ │ │ │ └── index.ts │ │ │ ├── create-queue/ │ │ │ │ ├── create-queue.test.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── use-click-outside/ │ │ │ │ └── index.ts │ │ │ └── use-event/ │ │ │ ├── __tests__/ │ │ │ │ └── index.spec.tsx │ │ │ ├── index.ts │ │ │ └── use-event.stories.tsx │ │ ├── hope-provider.tsx │ │ ├── index.ts │ │ ├── style-config.types.ts │ │ ├── styled-system/ │ │ │ ├── css-reset.ts │ │ │ ├── index.ts │ │ │ ├── keyframes.ts │ │ │ ├── media.ts │ │ │ ├── props/ │ │ │ │ ├── border.ts │ │ │ │ ├── color.ts │ │ │ │ ├── css.ts │ │ │ │ ├── flexbox.ts │ │ │ │ ├── grid.ts │ │ │ │ ├── interactivity.ts │ │ │ │ ├── layout.ts │ │ │ │ ├── margin.ts │ │ │ │ ├── padding.ts │ │ │ │ ├── position.ts │ │ │ │ ├── pseudo-selector.ts │ │ │ │ ├── radii.ts │ │ │ │ ├── shadow.ts │ │ │ │ ├── size.ts │ │ │ │ ├── transform.ts │ │ │ │ ├── transition.ts │ │ │ │ └── typography.ts │ │ │ ├── stitches-utils/ │ │ │ │ ├── background.ts │ │ │ │ ├── border.ts │ │ │ │ ├── display.ts │ │ │ │ ├── index.ts │ │ │ │ ├── margin.ts │ │ │ │ ├── padding.ts │ │ │ │ ├── position.ts │ │ │ │ ├── pseudo-selector.ts │ │ │ │ ├── radii.ts │ │ │ │ ├── shadow.ts │ │ │ │ ├── size.ts │ │ │ │ └── typography.ts │ │ │ ├── stitches.config.ts │ │ │ ├── system.ts │ │ │ ├── tokens/ │ │ │ │ ├── colors.ts │ │ │ │ ├── index.ts │ │ │ │ ├── radii.ts │ │ │ │ ├── shadows.ts │ │ │ │ ├── sizes.ts │ │ │ │ ├── space.ts │ │ │ │ ├── typography.ts │ │ │ │ └── z-indices.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ └── utils/ │ │ ├── assertion.ts │ │ ├── css.ts │ │ ├── dom.ts │ │ ├── function.ts │ │ ├── index.ts │ │ ├── number.ts │ │ ├── object.ts │ │ ├── solid.ts │ │ ├── tabbable.ts │ │ └── types.ts │ ├── tsconfig.build.json │ ├── tsconfig.json │ └── vite.config.ts ├── pnpm-workspace.yaml ├── tsconfig.eslint.json ├── tsconfig.json ├── turbo.json └── vercel.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .all-contributorsrc ================================================ { "files": [ "README.md" ], "imageSize": 100, "commit": false, "contributors": [ { "login": "fabien-ml", "name": "Fabien MARIE-LOUISE", "avatar_url": "https://avatars.githubusercontent.com/u/2832351?v=4", "profile": "https://github.com/fabien-ml", "contributions": [ "design", "code", "doc", "maintenance" ] }, { "login": "bichikim", "name": "Bichi Kim", "avatar_url": "https://avatars.githubusercontent.com/u/13829322?v=4", "profile": "https://github.com/bichikim", "contributions": [ "code" ] }, { "login": "NurbekGithub", "name": "Nurbek", "avatar_url": "https://avatars.githubusercontent.com/u/24915724?v=4", "profile": "https://github.com/NurbekGithub", "contributions": [ "code" ] } ], "contributorsPerLine": 7, "projectName": "hope-ui", "projectOwner": "fabien-ml", "repoType": "github", "repoHost": "https://github.com", "skipCi": true } ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = space indent_size = 2 end_of_line = LF charset = utf-8 insert_final_newline = true ================================================ FILE: .eslintignore ================================================ node_modules/ # Ignore artifacts: coverage/ dist/ public/ __mocks__/ commitlint.config.js jest.config.js *.d.ts ================================================ FILE: .eslintrc.json ================================================ { "root": true, "extends": [ "eslint:recommended", "plugin:import/recommended", "plugin:solid/recommended", "plugin:jsx-a11y/recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended" ], "plugins": ["solid", "jsx-a11y", "@typescript-eslint", "import", "simple-import-sort"], "rules": { "import/first": "warn", "import/newline-after-import": "warn", "import/no-duplicates": "error", "import/no-named-as-default-member": "off", "simple-import-sort/imports": "warn", "simple-import-sort/exports": "warn", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-types": "off", "@typescript-eslint/no-namespace": "off" }, "env": { "es6": true, "browser": true, "node": true }, "parser": "@typescript-eslint/parser", "parserOptions": { "tsconfigRootDir": "./", "project": ["./tsconfig.eslint.json", "./apps/*/tsconfig.json"], "ecmaVersion": 2021, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "settings": { "import/parsers": { "@typescript-eslint/parser": [".ts", ".tsx"] }, "import/resolver": { "typescript": { "project": ["./tsconfig.eslint.json", "./apps/*/tsconfig.json"], "alwaysTryTypes": true } } } } ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: "" labels: "" assignees: "" --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version [e.g. 22] **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] - Version [e.g. 22] **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: "" labels: "" assignees: "" --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/workflows/build-test.yml ================================================ name: Build and Test Hope UI # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main, develop] pull_request: branches: [main] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build-test: # The type of runner that the job will run on runs-on: ubuntu-latest strategy: matrix: node-version: [16.x] # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - uses: pnpm/action-setup@v2.0.1 with: version: 7.0.0-rc.2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} cache: "pnpm" - name: pnpm install, build and test run: | pnpm install pnpm build pnpm test ================================================ FILE: .gitignore ================================================ # Created by https://www.toptal.com/developers/gitignore/api/jetbrains,macos,node # Edit at https://www.toptal.com/developers/gitignore?templates=jetbrains,macos,node # Vercel .vercel # Turborepo .turbo build/** dist/** # Storybook storybook-static # Local .env files *.local # Vite dist/ ### JetBrains ### # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # Editor-based Rest Client .idea/httpRequests ### JetBrains Patch ### # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 # *.iml # modules.xml # .idea/misc.xml # *.ipr # Sonarlint plugin # https://plugins.jetbrains.com/plugin/7973-sonarlint .idea/**/sonarlint/ # SonarQube Plugin # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin .idea/**/sonarIssues.xml # Markdown Navigator plugin # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced .idea/**/markdown-navigator.xml .idea/**/markdown-navigator-enh.xml .idea/**/markdown-navigator/ # Cache file creation bug # See https://youtrack.jetbrains.com/issue/JBR-2257 .idea/$CACHE_FILE$ # CodeStream plugin # https://plugins.jetbrains.com/plugin/12206-codestream .idea/codestream.xml ### macOS ### # General .DS_Store .AppleDouble .LSOverride # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk ### Node ### # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* lerna-debug.log* .pnpm-debug.log* # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul / jest coverage *.lcov # Dependency directories node_modules/ # TypeScript cache *.tsbuildinfo # Optional npm cache directory .npm # Optional eslint cache .eslintcache # Microbundle cache .rpt2_cache/ .rts2_cache_cjs/ .rts2_cache_es/ .rts2_cache_umd/ # Optional REPL history .node_repl_history # Output of 'npm pack' *.tgz # dotenv environment variables file .env .env.test .env.production # Next.js build output .next out # Gatsby files .cache/ # Comment in the public line in if your project uses Gatsby and not Next.js # https://nextjs.org/blog/next-9-1#public-directory-support # public # Stores VSCode versions used for testing VSCode extensions .vscode-test # Yarn Integrity file .yarn-integrity # yarn v2 .yarn/cache .yarn/unplugged .yarn/build-state.yml .yarn/install-state.gz .pnp.* # End of https://www.toptal.com/developers/gitignore/api/jetbrains,macos,node ================================================ FILE: .husky/commit-msg ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx --no-install commitlint --edit $1 ================================================ FILE: .husky/pre-commit ================================================ #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged ================================================ FILE: .prettierrc.json ================================================ { "arrowParens": "avoid", "printWidth": 100 } ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to Hope UI Thank you for showing interest in contributing to Hope UI. All of your contributions are extremely valuable to the success of this project! ## Ways to contribute - **Improve documentation** - fix incomplete or missing docs, bad wording, examples, or explanations. - **Give feedback** - we are constantly working to make Hope UI a better experience, so please feel free to share what you like, dislike, or any improvements you'd like to see via [GitHub Discussions](https://github.com/fabien-ml/hope-ui/discussions). - **Share Hope UI** - help us spread the word by sharing [Hope UI](https://hope-ui.com/), or even [Tweet about Hope UI directly](https://twitter.com/intent/tweet?text=Hope%20UI%20%E2%80%93%20a%20new%20SolidJS%20component%20library%20with%20over%2040%20components,%20style%20props%20API,%20native%20dark%20theme%20support%20and%20focuses%20on%20accessibility.%0A%0A%23https://hope-ui.com%0A%0A%23solidjs). - **GitHub Issues** - work on an [outstanding issue](https://github.com/fabien-ml/hope-ui/labels/help%20wanted) to help us keep Hope UI a reliable UI solution. - **Suggest New Features** - please feel free to dicuss any new features you'd like to see by creating a [GitHub issue](https://github.com/fabien-ml/hope-ui/labels/help%20wanted). ## Contributing workflow - After deciding which [GitHub issue](https://github.com/fabien-ml/hope-ui/labels/help%20wanted) or feature you'd like to work on, create a local branch to track your changes - If applicable, add unit tests while implementing your code - Ensure that all commits follow [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) - It is highly recommended that you run the `pnpm test` command to ensure new contributions integrate with the old codebase before initiating a merge request - Create a merge request and keep up-to-date with any feedback you receive from a maintainer ## Git branches - **main**: the current version - **develop**: contains the next version under development (you should create a PR to this branch) ## Get started with Hope UI locally - Fork the [Hope UI repository](https://github.com/fabien-ml/hope-ui) - Install the [editorconfig](https://editorconfig.org/) extension for your editor - Install dependencies with pnpm – `pnpm install` - Take an initial peek at our components by running `pnpm storybook` ### Project Structure Hope UI is a monorepo separated in two main folders. ``` apps/ docs/ - Hope UI documentation website packages/ design-system/ - Hope UI component library primitives/ - Hope UI low level primitives for building components ``` ## npm scripts ### Development scripts - `dev:docs` – starts the docs development server - `storybook` - starts the storybook development server ### Testing scripts - `typecheck` – runs TypeScript typechecking with `tsc --noEmit` on all packages and docs - `lint` – runs ESLint on all packages and docs - `test` – runs tests with jest ================================================ FILE: LICENSE.md ================================================ MIT License Copyright (c) 2022 Fabien MARIE-LOUISE Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

Hope UI | The SolidJS component library you've hoped for.

Language grade: JavaScript MIT License npm - @hope-ui/solid npm - downloads

# ⚠️ WARNING ⚠️ Hope UI is no longer maintained. Focus is on the developement of it's successor: https://github.com/kobaltedev/pigment. ## Documentation For full documentation, visit [hope-ui.netlify.app](https://hope-ui.netlify.app). ## Acknowledgment This project is inspired by : - [Chakra UI](https://chakra-ui.com/) - [Mantine](https://mantine.dev/) ## License This project is licensed under the MIT License. ================================================ FILE: ROADMAP.md ================================================ # Components roadmap ### General | | Development | A11y check | Tests | Storybook | Docs | | ---------- | :---------: | :--------: | :---: | :-------: | :--: | | Button | ✅ | ✅ | ✅ | ✅ | | | IconButton | ✅ | ✅ | ✅ | ✅ | | ### Layout | | Development | A11y check | Tests | Storybook | Docs | | ----------- | :---------: | :--------: | :---: | :-------: | :--: | | AspectRatio | ✅ | n/a | ✅ | | | | Box | ✅ | n/a | ✅ | n/a | | | Center | ✅ | n/a | ✅ | ✅ | | | Container | ✅ | n/a | ✅ | ✅ | | | Divider | ✅ | n/a | | | | | Flex | ✅ | n/a | ✅ | | | | Grid | ✅ | n/a | ✅ | | | | SimpleGrid | ✅ | n/a | ✅ | | | | Stack | ✅ | n/a | ✅ | | | ### Typography | | Development | A11y check | Tests | Storybook | Docs | | ------- | :---------: | :--------: | :---: | :-------: | :--: | | Text | ✅ | ✅ | ✅ | n/a | | | Heading | ✅ | ✅ | ✅ | n/a | | ### Data entry | | Development | A11y check | Tests | Storybook | Docs | | ---------------- | :---------: | :--------: | :---: | :-------: | :--: | | AutoComplete | | | | | | | Checkbox | ✅ | ✅ | | ✅ | | | DatePicker | | | | | | | FormControl | ✅ | ✅ | ✅ | ✅ | | | FormLabel | ✅ | ✅ | ✅ | ✅ | | | FormHelperText | ✅ | ✅ | ✅ | ✅ | | | FormErrorMessage | ✅ | ✅ | ✅ | ✅ | | | Input (Text) | ✅ | ✅ | ✅ | ✅ | | | NumberInput | | | | | | | PasswordInput | | | | | | | RadioGroup | ✅ | ✅ | | ✅ | | | Radio | ✅ | ✅ | | ✅ | | | Select | ✅ | ✅ | | | | | MultiSelect | ✅ | ✅ | | | | | Slider | | | | | | | Switch | ✅ | ✅ | | ✅ | | | Textarea | ✅ | ✅ | ✅ | ✅ | | | TimePicker | | | | | | | UploadInput | | | | | | ### Data display | | Development | A11y check | Tests | Storybook | Docs | | --------- | :---------: | :--------: | :---: | :-------: | :--: | | Accordion | ✅ | ✅ | | | | | Avatar | ✅ | ✅ | | | | | Badge | ✅ | ✅ | | | | | Icon | ✅ | ✅ | ✅ | | | | Kbd | ✅ | n/a | | | | | Table | ✅ | ✅ | | | | | Tag | ✅ | ✅ | ✅ | ✅ | | | Timeline | | | | | | ### Navigation | | Development | A11y check | Tests | Storybook | Docs | | ---------- | :---------: | :--------: | :---: | :-------: | :--: | | Anchor | ✅ | ✅ | ✅ | ✅ | | | Breadcrumb | ✅ | ✅ | | | | | Pagination | | | | | | | Stepper | | | | | | | Tabs | ✅ | ✅ | | | | ### Feedback | | Development | A11y check | Tests | Storybook | Docs | | -------------------- | :---------: | :--------: | :---: | :-------: | :--: | | Alert | ✅ | ✅ | ✅ | ✅ | | | CircularProgress | ✅ | ✅ | | | | | Progress | ✅ | ✅ | | | | | Spinner | ✅ | ✅ | | | | | Skeleton | ✅ | n/a | | | | | Notification (Toast) | ✅ | ✅ | | | | ### Overlay | | Development | A11y check | Tests | Storybook | Docs | | ------- | :---------: | :--------: | :---: | :-------: | :--: | | Drawer | ✅ | ✅ | | | | | Menu | ✅ | ✅ | | | | | Modal | ✅ | ✅ | | | | | Popover | ✅ | ✅ | | | | | Tooltip | ✅ | ✅ | | | | ================================================ FILE: apps/docs/.eslintrc.json ================================================ { "extends": "../../.eslintrc.json", "parserOptions": { "project": ["./tsconfig.json"] } } ================================================ FILE: apps/docs/README.md ================================================ ## @hope-ui/docs Documentation website of the Hope UI component library. ================================================ FILE: apps/docs/index.html ================================================ Hope UI | The SolidJS component library you've hoped for
================================================ FILE: apps/docs/package.json ================================================ { "name": "@hope-ui/docs", "version": "0.0.1", "private": true, "description": "Documentation of the Hope UI component library", "author": "Fabien MARIE-LOUISE (https://github.com/fabien-ml)", "scripts": { "build": "vite build", "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", "dev": "vite --host", "serve": "vite preview --port 3000", "typecheck": "tsc --noEmit" }, "dependencies": { "@felte/solid": "1.1.5", "@felte/validator-yup": "1.0.3", "@hope-ui/solid": "workspace:*", "@stitches/core": "1.2.8", "prism-themes": "1.9.0", "prismjs": "1.27.0", "solid-app-router": "0.2.1", "solid-js": "1.4.0", "solid-transition-group": "0.0.10", "yup": "0.32.11" } } ================================================ FILE: apps/docs/src/App.tsx ================================================ import { Anchor, Box, Center, Container, Flex, hope, HStack, Progress, ProgressIndicator, Spinner, } from "@hope-ui/solid"; import { Outlet, Route, Routes, useIsRouting } from "solid-app-router"; import { lazy, Suspense } from "solid-js"; import { Portal } from "solid-js/web"; import Header from "./components/Header"; import MainNavigation from "./components/MainNavigation"; const LandingPage = lazy(() => import("./pages/landing-page")); const NotFound = lazy(() => import("./pages/not-found")); const Installation = lazy(() => import("./pages/getting-started/installation")); const Changelog = lazy(() => import("./pages/getting-started/changelog")); const StyleProps = lazy(() => import("./pages/features/style-props")); const CSSProp = lazy(() => import("./pages/features/css-prop")); const CreateStyles = lazy(() => import("./pages/features/create-styles")); const ResponsiveStyles = lazy(() => import("./pages/features/responsive-styles")); const GlobalStyles = lazy(() => import("./pages/features/global-styles")); const HopeFactory = lazy(() => import("./pages/features/hope-factory")); const DefaultTheme = lazy(() => import("./pages/theming/default-theme")); const CustomizeTheme = lazy(() => import("./pages/theming/customize-theme")); const CSSVariables = lazy(() => import("./pages/theming/css-variables")); const ColorMode = lazy(() => import("./pages/theming/color-mode")); const ButtonDoc = lazy(() => import("./pages/component-docs/general/button")); const IconButtonDoc = lazy(() => import("./pages/component-docs/general/icon-button")); const AspectRatioDoc = lazy(() => import("./pages/component-docs/layout/aspect-ratio")); const BoxDoc = lazy(() => import("./pages/component-docs/layout/box")); const CenterDoc = lazy(() => import("./pages/component-docs/layout/center")); const ContainerDoc = lazy(() => import("./pages/component-docs/layout/container")); const DividerDoc = lazy(() => import("./pages/component-docs/layout/divider")); const FlexDoc = lazy(() => import("./pages/component-docs/layout/flex")); const GridDoc = lazy(() => import("./pages/component-docs/layout/grid")); const SimpleGridDoc = lazy(() => import("./pages/component-docs/layout/simple-grid")); const StackDoc = lazy(() => import("./pages/component-docs/layout/stack")); const HeadingDoc = lazy(() => import("./pages/component-docs/typography/heading")); const TextDoc = lazy(() => import("./pages/component-docs/typography/text")); const CheckboxDoc = lazy(() => import("./pages/component-docs/data-entry/checkbox")); const FormControlDoc = lazy(() => import("./pages/component-docs/data-entry/form-control")); const InputDoc = lazy(() => import("./pages/component-docs/data-entry/input")); const RadioDoc = lazy(() => import("./pages/component-docs/data-entry/radio")); const SelectDoc = lazy(() => import("./pages/component-docs/data-entry/select")); const SwitchDoc = lazy(() => import("./pages/component-docs/data-entry/switch")); const TextareaDoc = lazy(() => import("./pages/component-docs/data-entry/textarea")); const AccordionDoc = lazy(() => import("./pages/component-docs/data-display/accordion")); const AvatarDoc = lazy(() => import("./pages/component-docs/data-display/avatar")); const BadgeDoc = lazy(() => import("./pages/component-docs/data-display/badge")); const IconDoc = lazy(() => import("./pages/component-docs/data-display/icon")); const ImageDoc = lazy(() => import("./pages/component-docs/data-display/image")); const KbdDoc = lazy(() => import("./pages/component-docs/data-display/kbd")); const ListDoc = lazy(() => import("./pages/component-docs/data-display/list")); const TableDoc = lazy(() => import("./pages/component-docs/data-display/table")); const TagDoc = lazy(() => import("./pages/component-docs/data-display/tag")); const AnchorDoc = lazy(() => import("./pages/component-docs/navigation/anchor")); const BreadcrumbDoc = lazy(() => import("./pages/component-docs/navigation/breadcrumb")); const TabsDoc = lazy(() => import("./pages/component-docs/navigation/tabs")); const AlertDoc = lazy(() => import("./pages/component-docs/feedback/alert")); const CircularProgressDoc = lazy(() => import("./pages/component-docs/feedback/circular-progress")); const ProgressDoc = lazy(() => import("./pages/component-docs/feedback/progress")); const SkeletonDoc = lazy(() => import("./pages/component-docs/feedback/skeleton")); const SpinnerDoc = lazy(() => import("./pages/component-docs/feedback/spinner")); const NotificationDoc = lazy(() => import("./pages/component-docs/feedback/notification")); const DrawerDoc = lazy(() => import("./pages/component-docs/overlay/drawer")); const MenuDoc = lazy(() => import("./pages/component-docs/overlay/menu")); const ModalDoc = lazy(() => import("./pages/component-docs/overlay/modal")); const PopoverDoc = lazy(() => import("./pages/component-docs/overlay/popover")); const TooltipDoc = lazy(() => import("./pages/component-docs/overlay/tooltip")); const CloseButtonDoc = lazy(() => import("./pages/component-docs/others/close-button")); function AppLayout() { const isRouting = useIsRouting(); return ( Hope UI is no longer maintained. Focus is on the developement of it's successor: Pigment.
); } export default function App() { return ( } > } /> } /> }> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); } ================================================ FILE: apps/docs/src/components/AppNavLink.tsx ================================================ import { Badge, hope } from "@hope-ui/solid"; import { NavLink } from "solid-app-router"; import { ComponentProps, Show, splitProps } from "solid-js"; const StyledNavLink = hope(NavLink, { baseStyle: { display: "inline-flex", alignItems: "center", justifyContent: "flex-start", w: "$full", height: "$8", rounded: "$sm", bg: "transparent", px: "$3", color: "$neutral12", fontSize: "$sm", lineHeight: "$none", textDecoration: "none", transition: "color 250ms, background-color 250ms", _hover: { bg: "$neutral4", }, _activeLink: { bg: "$primary4", color: "$primary11", fontWeight: "$medium", }, }, }); type AppNavLinkProps = ComponentProps & { isNew?: boolean; }; export default function AppNavLink(props: AppNavLinkProps) { const [local, others] = splitProps(props, ["children", "href", "isNew"]); return ( {local.children} new ); } ================================================ FILE: apps/docs/src/components/BeatLoader.tsx ================================================ import { createIcon } from "@hope-ui/solid"; export const BeatLoader = createIcon({ viewBox: "0 0 120 30", path: () => ( ), }); ================================================ FILE: apps/docs/src/components/Code.tsx ================================================ import { hope } from "@hope-ui/solid"; const Code = hope("code", { baseStyle: { color: "$primary11", fontFamily: "$mono", fontSize: "0.95em", }, }); export default Code; ================================================ FILE: apps/docs/src/components/CodeSnippet.tsx ================================================ import { Box, HTMLHopeProps } from "@hope-ui/solid"; import { mergeProps, splitProps } from "solid-js"; export interface CodeSnippetProps extends HTMLHopeProps<"div"> { snippet?: string; lang?: "bash" | "js" | "tsx" | "html" | "css"; } export default function CodeSnippet(props: CodeSnippetProps) { const propsWithDefault = mergeProps({ lang: "tsx" }, props); const [local, others] = splitProps(propsWithDefault, ["snippet", "lang"]); return (
        {local.snippet}
      
); } ================================================ FILE: apps/docs/src/components/ColorScale.tsx ================================================ import { Box, Grid, GridItem, GridProps, hope, HStack, SystemConfig, useTheme, VStack, } from "@hope-ui/solid"; import { For, splitProps } from "solid-js"; export interface ColorScaleItem { name: string; token: keyof SystemConfig["theme"]["colors"]; } type ColorScaleProps = GridProps & { scale: ColorScaleItem[]; }; export function ColorScale(props: ColorScaleProps) { const theme = useTheme(); const [local, others] = splitProps(props, ["scale"]); return ( {item => ( {item.name} {theme().colors[item.token].value} )} ); } ================================================ FILE: apps/docs/src/components/ContextualNav.tsx ================================================ import { Anchor, Box, Heading, HTMLHopeProps, VStack } from "@hope-ui/solid"; import { useLocation } from "solid-app-router"; import { For, splitProps } from "solid-js"; export interface ContextualNavLink { href: string; label: string; indent?: boolean; } export type ContextualNavProps = HTMLHopeProps<"div", { links?: ContextualNavLink[] }>; export default function ContextualNav(props: ContextualNavProps) { const [local, others] = splitProps(props, ["links", "children"]); const location = useLocation(); const isActiveLink = (href: string) => { return location.hash === href.replace("#", ""); }; return ( On this page {link => ( {link.label} )} ); } ================================================ FILE: apps/docs/src/components/Footer.tsx ================================================ import { Anchor, Center, HStack, Text } from "@hope-ui/solid"; import { IconGithub } from "@/icons/IconGithub"; import { IconTwitter } from "@/icons/IconTwitter"; export default function Footer() { return (
Made in 🇫🇷  by Fabien MARIE-LOUISE
); } ================================================ FILE: apps/docs/src/components/Header.tsx ================================================ import { Box, Container, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerHeader, DrawerOverlay, hope, HStack, IconButton, Tag, Text, useColorMode, useColorModeValue, } from "@hope-ui/solid"; import { Link } from "solid-app-router"; import { createSignal } from "solid-js"; import { IconGithub } from "@/icons/IconGithub"; import { IconMenu } from "@/icons/IconMenu"; import { IconMoon } from "@/icons/IconMoon"; import { IconSun } from "@/icons/IconSun"; import MainNavContent from "./MainNavContent"; export default function Header() { const [isMainNavOverlayVisible, setIsMainNavOverlayVisible] = createSignal(false); const { toggleColorMode } = useColorMode(); const headerBgColor = useColorModeValue("white", "$neutral1"); const colorModeButtonIcon = useColorModeValue(, ); const headerShadow = useColorModeValue("$sm", "$none"); const toggleMainNavOverlay = () => { setIsMainNavOverlayVisible(prev => !prev); }; const onNavKeyup = (event: KeyboardEvent) => { if (isMainNavOverlayVisible() && event.key === "Enter") { setIsMainNavOverlayVisible(false); } }; return ( } onClick={toggleMainNavOverlay} /> Hope UI v0.6.7 } /> setIsMainNavOverlayVisible(false)} > Hope UI ); } ================================================ FILE: apps/docs/src/components/MainNavContent.tsx ================================================ import { VStack } from "@hope-ui/solid"; import AppNavLink from "./AppNavLink"; import Code from "./Code"; import MainNavSubtitle from "./MainNavSubtitle"; import MainNavTitle from "./MainNavTitle"; export default function MainNavContent() { return ( <> Getting started Installation Changelog Features Style props The css prop Create styles Responsive styles Global styles Hope factory Theming Default theme Customize theme CSS variables Color mode Components General Button IconButton Layout AspectRatio Box Center Container Divider Flex Grid SimpleGrid Stack Typography Heading Text Data entry Checkbox {/* DatePicker */} FormControl Input {/* NumberInput */} {/* PasswordInput */} {/* FileInput */} Radio Select {/* Slider */} Switch Textarea {/* TimePicker */} Data display Accordion Avatar Badge Icon Image Kbd List Table Tag {/* Timeline */} Navigation Anchor Breadcrumb {/* Pagination */} {/* Stepper */} Tabs Feedback Alert CircularProgress Progress Skeleton Spinner Notification Overlay Drawer Menu Modal Popover Tooltip Others CloseButton ); } ================================================ FILE: apps/docs/src/components/MainNavSubtitle.tsx ================================================ import { ElementType, Text, TextProps } from "@hope-ui/solid"; export default function MainNavSubtitle(props: TextProps) { return ( ); } ================================================ FILE: apps/docs/src/components/MainNavTitle.tsx ================================================ import { ElementType, Text, TextProps } from "@hope-ui/solid"; export default function MainNavTitle(props: TextProps) { return ; } ================================================ FILE: apps/docs/src/components/MainNavigation.tsx ================================================ import { Flex } from "@hope-ui/solid"; import MainNavContent from "./MainNavContent"; export default function MainNavigation() { return ( ); } ================================================ FILE: apps/docs/src/components/PageLayout.tsx ================================================ import { Box, Flex, HStack, HTMLHopeProps, Stack, Text, VStack } from "@hope-ui/solid"; import { Link } from "solid-app-router"; import { Show, splitProps } from "solid-js"; import { IconArrowLeft } from "@/icons/IconArrowLeft"; import { IconArrowRight } from "@/icons/IconArrowRight"; import ContextualNav, { ContextualNavLink } from "./ContextualNav"; import Footer from "./Footer"; type PageLayoutProps = HTMLHopeProps< "div", { previousLink?: ContextualNavLink; nextLink?: ContextualNavLink; contextualNavLinks?: ContextualNavLink[]; } >; export default function PageLayout(props: PageLayoutProps) { const [local, others] = splitProps(props, [ "children", "previousLink", "nextLink", "contextualNavLinks", ]); return ( {local.children} Previous {local.previousLink?.label} Next {local.nextLink?.label}