From b19a92ee83c175c1d057c09274470e97eec7ae21 Mon Sep 17 00:00:00 2001 From: Sutu Sebastian <41998826+SutuSebastian@users.noreply.github.com> Date: Sun, 24 Mar 2024 10:48:43 +0200 Subject: [PATCH] Monorepo conversion (using `bun`) (#1264) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * monorepo init: - bun [runtime, package manager, task runner, test runner] - biome [format, lint] - removed `cypress` (to be replaced with `playwright`) - removed codecov - split into multiple packages and apps [web(docs), ui(library), storybook, cli] UNSTABLE * (web): remove unused packages * remove eslint disable rules comments * fix some linting errors * (web): link library to monorepo `ui` package * fix(web): build fix(ui): exports fix(root): sort `package.json` * package upgrade * fix(storybook): - replace `@vitejs/plugin-react-sw` -> `@vitejs/plugin-react` - fix build - add `.gitignore` - update stories path * move git related files in `.git` * cleanup: - remove `biome` and drop `bun:test` until stable - add `prettier` - imporve `.vscode` files and add extentions suggestions * - restore prettier config + add tailwind formatting support - remove more biome leftover - add package json sorter * upgrade all packages * refactor: - prettier config: add import sorting - format files * packages: up * packages: up storybook * fix: prettier plugin order * chore(ui): add `vitest`; add missing `Accordion.spec` import * chore(root): add turbo test commands and format `package.json` * fix: intellisense and tailwind support; add `eslint` * fix(lib): lint errors * feat(ui): add `createTheme` tailwindcss intellisense function * refactor(ui): use new tailwindcss shorthands * fix(storybook/banner): remove invalid tailwind classes * chore: add `.editorconfig` * refactor(ui): wrap all components `theme` with `createTheme` to gain class sorting, linting and apply fixes * fix: prettier config for root and for apps and packages; format code * refactor: move common eslint packages to root `package.json`; - add `eslint` to `web` - optimise onboarding flow - fix tailwind lint errors here and there * chore: up packages * refactor: (web) lint rules + fix examples * refactor: CI/CD improvements: - refactor github actions - setup github actions using `bun` - remove storybook github action (redo later) * fix: CI/CD setup action, add missing required property * fix(web): typecheck * fix(lib): type module for failing tests * fix(lib): `package.json` meta and npm tags; update peerDeps * fix(lib: tsconfig exclude * fix(lib): rename eslint config to cjs since `"type": "module"` * fix(web): eslint nextjs rule; supposably fixed flicker on reload * fix(lib): merge-deep test * chore(lib): eslint config updates * fix(lib): bypass `datepicker` test (unfinished) * refactor(lib): remove `toggleSwitchTheme` empty space * chore: up packages * fix(lib): failing tests due to concurrency * fix(lib): test coverage + format files * refactor(global): switch from `singleQuote` to double * refactor(lib): more tailwind shorthands * chore: up packages * chore: up packages * packages(cli): add first version general: update packages * packages(cli): fix typecheck * packages(cli): refactor - add [dir] argument - add [options] argument - `--template ` - `-h, --help` * packages(cli): add `-v, --version` in [options] * packages(cli): add `README.md` * fix: package.json repository.url * packages(cli): add `--git` option * packages(cli): up package version * packages(cli): update `README.md` * packages(cli): bump package version patch * config: sort and tidy up .vscode settings.json * fix(docs): navbar package version * fix(docs): mdx heading color * feat(docs): code demo: - add screen size controls (desktop/tablet/mobile) - add RTL control * feat(docs): code demo: - add tooltip to copy-to-clipboard - fix icon sizes * feat(docs): create `CLI` page * feat(docs): integratoin guides - add `CLI` and `Templates` sections * fix(web): homepage - components section hover styles; sidebar - more spacing (synced with @Robert) * packages(cli): update `README.md` apps(web): update CLI page * packages(cli): bump package version patch * apps(web): update `README.md`, `CONTRIBUTING` files; change integration guides order based on popularity/category; remove redundant `typescript` page packages(cli): change integration guides order based on popularity/category; bump version (patch) * apps(web): fix, rewrite and simplify `introduction` and `quickstart` pages * apps(web): fix narrow context * apps(web): small style fixes * chore: up packages + format * apps(web): add `Editor Setup` page * apps(web): remix guide: add dark mode section * apps(web): refactor `Dark mode` page * fix: color flicker on reload + move background and text color to root layout * packages(ui): fix alert them blue color * apps(web): code demo: isolate dark/light mode * apps(web): inline code: add background * feat: add `changeset` * chore: move `CHANGELOG` to packages/ui * chore: add self to `FUNDING` * chore: add `@changesets/changelog-github` * chore: up packages * core improvements: - add `rimraf` for windows support - add `clean-package` for cleaner `package.json` file (used for `flowbite-react` and `create-flowbite-react` packages) * packages(cli): change intro color from `blue` to `cyan` + bump version (patch) * packages(cli): update package.json - add [homepage, bugs] links * chore: move root `README.md` to `packages/ui` + create symlink from it to root * core(ci): test build sync times * core(ci): test build async times * chore: format * fix: turbo.json configs and isolate using turbo workspaces * chore: CLI commands to use @latest for `pnpm` and `bun` * chore: version `packages/cli` * chore: remove random code example * chore: spacing * chore: up `packageManager` version * fix: storybook next dependency examples * chore: up packages, see if it fixes storybook build failure * fix: storybook types * fix: storybook warning * packages(ui): fix version * chore: up `packageManager` version * chore: up packages, see if it fixes storybook build failure * chore: rebuild lock file, check if storybook fails * chore: CI cache clear before install * chore: undo CI cache clear before install * chore: downgrade `packageManager` from `bun@1.0.33` to stable `bun@1.0.31` due to storybook failing; update some packages * chore: bump storybook packages * fix(ui): polymorphic component return type -> type casting * chore: simplify types * chore: bump package from merge conflict --------- Co-authored-by: SutuSebastian --- .changeset/README.md | 8 + .changeset/config.json | 11 + .editorconfig | 10 + .../CODE_OF_CONDUCT.md | 0 CONTRIBUTING.md => .github/CONTRIBUTING.md | 48 +- .github/FUNDING.yml | 2 +- .github/actions/setup/action.yml | 19 + .github/workflows/ci.yml | 106 +- .github/workflows/storybook.yml | 21 - .gitignore | 22 +- .idea/.gitignore | 8 - .npmignore | 22 - .prettierignore | 19 - .prettierrc | 6 - .storybook/main.ts | 30 - .storybook/preview.ts | 16 - .vscode/extensions.json | 11 + .vscode/settings.json | 31 +- README.md | 408 +- app/layout.tsx | 74 - .eslintignore => apps/storybook/.gitignore | 1 - .../storybook/.storybook}/inter.woff2 | Bin apps/storybook/.storybook/main.ts | 28 + apps/storybook/.storybook/preview.ts | 30 + .../storybook/.storybook}/style.css | 10 +- apps/storybook/package.json | 37 + .../storybook/postcss.config.js | 4 +- apps/storybook/tailwind.config.js | 8 + apps/storybook/tsconfig.json | 25 + apps/storybook/tsconfig.node.json | 10 + apps/storybook/turbo.json | 8 + apps/storybook/vite.config.ts | 6 + apps/web/.eslintrc.js | 24 + apps/web/.gitignore | 12 + .../web/app}/docs/[[...slug]]/page.tsx | 46 +- {app => apps/web/app}/docs/layout.tsx | 88 +- apps/web/app/layout.tsx | 74 + {app => apps/web/app}/page.tsx | 6 +- .../web/components}/banner.tsx | 14 +- .../web/components}/carbon-ads.tsx | 20 +- .../web/components}/code-demo.tsx | 187 +- .../web/components}/code-highlight.tsx | 22 +- .../web/components}/docsearch-input.tsx | 8 +- .../homepage/components-section.tsx | 36 +- .../homepage/contributors-section.tsx | 20 +- .../dark-mode-section/dark-mode-section.tsx | 30 +- .../dark-mode-section/dark-mode-switcher.tsx | 34 +- .../homepage/dark-mode-section/index.ts | 1 + .../components}/homepage/featured-section.tsx | 4 +- .../components}/homepage/figma-section.tsx | 16 +- .../hero-section/copy-package-input.tsx | 20 +- .../homepage/hero-section/hero-section.tsx | 26 +- .../components/homepage/hero-section/index.ts | 1 + .../web/components}/homepage/home-navbar.tsx | 16 +- apps/web/components/homepage/index.ts | 11 + .../web/components}/homepage/main-footer.tsx | 12 +- .../components}/homepage/react-section.tsx | 34 +- .../homepage/social-proof-section.tsx | 42 +- .../components}/homepage/tailwind-section.tsx | 22 +- {components => apps/web/components}/mdx.tsx | 32 +- .../web/components}/navbar.tsx | 30 +- .../quickstart/integration-guides.tsx | 52 + apps/web/components/text-divider.tsx | 11 + .../content}/docs/components/accordion.mdx | 2 +- .../web/content}/docs/components/alert.mdx | 2 +- .../web/content}/docs/components/avatar.mdx | 2 +- .../web/content}/docs/components/badge.mdx | 2 +- .../web/content}/docs/components/banner.mdx | 2 +- .../content}/docs/components/breadcrumb.mdx | 2 +- .../content}/docs/components/button-group.mdx | 2 +- .../web/content}/docs/components/button.mdx | 2 +- .../web/content}/docs/components/card.mdx | 2 +- .../web/content}/docs/components/carousel.mdx | 2 +- .../content}/docs/components/datepicker.mdx | 2 +- .../web/content}/docs/components/dropdown.mdx | 2 +- .../web/content}/docs/components/footer.mdx | 2 +- .../web/content}/docs/components/forms.mdx | 2 +- .../web/content}/docs/components/kbd.mdx | 2 +- .../content}/docs/components/list-group.mdx | 2 +- .../web/content}/docs/components/modal.mdx | 2 +- .../web/content}/docs/components/navbar.mdx | 2 +- .../content}/docs/components/pagination.mdx | 2 +- .../web/content}/docs/components/popover.mdx | 2 +- .../web/content}/docs/components/progress.mdx | 2 +- .../web/content}/docs/components/rating.mdx | 2 +- .../web/content}/docs/components/sidebar.mdx | 2 +- .../web/content}/docs/components/spinner.mdx | 2 +- .../web/content}/docs/components/table.mdx | 2 +- .../web/content}/docs/components/tabs.mdx | 2 +- .../web/content}/docs/components/timeline.mdx | 2 +- .../web/content}/docs/components/toast.mdx | 2 +- .../web/content}/docs/components/tooltip.mdx | 2 +- apps/web/content/docs/customize/dark-mode.mdx | 56 + .../web/content}/docs/customize/theme.mdx | 20 +- .../web/content}/docs/forms/file-input.mdx | 2 +- .../content}/docs/forms/floating-label.mdx | 0 apps/web/content/docs/getting-started/cli.mdx | 83 + .../docs/getting-started/contributing.mdx | 38 +- .../docs/getting-started/editor-setup.mdx | 98 + .../docs/getting-started/introduction.mdx | 18 +- .../content}/docs/getting-started/license.mdx | 0 .../docs/getting-started/quickstart.mdx | 28 + .../getting-started/server-components.mdx | 16 +- .../web/content}/docs/guides/astro.mdx | 31 +- .../content}/docs/guides/create-react-app.mdx | 35 +- .../web/content}/docs/guides/gatsby.mdx | 35 +- .../web/content}/docs/guides/laravel.mdx | 32 +- .../web/content}/docs/guides/next-js.mdx | 56 +- .../web/content}/docs/guides/parcel.mdx | 41 +- .../web/content}/docs/guides/redwood-js.mdx | 33 +- apps/web/content/docs/guides/remix.mdx | 152 + .../web/content}/docs/guides/vite.mdx | 35 +- .../content}/docs/typography/blockquote.mdx | 2 +- .../web/content}/docs/typography/list.mdx | 2 +- apps/web/contentlayer.config.js | 39 + apps/web/data/components.tsx | 416 + apps/web/data/docs-sidebar.ts | 103 + .../accordion/accordion.collapseAll.tsx | 22 +- .../examples}/accordion/accordion.root.tsx | 22 +- apps/web/examples/accordion/index.ts | 2 + .../alert/alert.additionalContent.tsx | 28 +- .../web/examples}/alert/alert.allOptions.tsx | 22 +- .../examples}/alert/alert.borderAccent.tsx | 22 +- .../web/examples}/alert/alert.dismissible.tsx | 20 +- .../web/examples}/alert/alert.root.tsx | 22 +- .../web/examples}/alert/alert.rounded.tsx | 22 +- .../web/examples}/alert/alert.withIcon.tsx | 28 +- apps/web/examples/alert/index.ts | 7 + .../web/examples}/avatar/avatar.colors.tsx | 22 +- .../examples}/avatar/avatar.dotIndicator.tsx | 22 +- .../web/examples}/avatar/avatar.dropdown.tsx | 22 +- .../examples}/avatar/avatar.overrideImage.tsx | 28 +- .../examples}/avatar/avatar.placeholder.tsx | 22 +- .../avatar/avatar.placeholderInitials.tsx | 22 +- .../web/examples}/avatar/avatar.root.tsx | 22 +- .../web/examples}/avatar/avatar.sizes.tsx | 22 +- .../examples}/avatar/avatar.stackedLayout.tsx | 22 +- .../examples}/avatar/avatar.withBorder.tsx | 22 +- .../web/examples}/avatar/avatar.withText.tsx | 22 +- apps/web/examples/avatar/index.ts | 11 + .../web/examples}/badge/badge.asLink.tsx | 22 +- .../web/examples}/badge/badge.root.tsx | 22 +- .../web/examples}/badge/badge.sizes.tsx | 22 +- .../web/examples}/badge/badge.withIcon.tsx | 28 +- .../examples}/badge/badge.withIconOnly.tsx | 28 +- apps/web/examples/badge/index.ts | 5 + .../banner/banner.bottomPosition.tsx | 36 +- .../examples}/banner/banner.informational.tsx | 42 +- .../examples}/banner/banner.marketingCTA.tsx | 40 +- .../examples}/banner/banner.newsletter.tsx | 40 +- .../web/examples}/banner/banner.root.tsx | 40 +- apps/web/examples/banner/index.ts | 5 + .../blockquote/blockquote.center.tsx | 22 +- .../examples}/blockquote/blockquote.icon.tsx | 22 +- .../examples}/blockquote/blockquote.large.tsx | 22 +- .../examples}/blockquote/blockquote.left.tsx | 22 +- .../blockquote/blockquote.medium.tsx | 22 +- .../blockquote.paragraphContext.tsx | 22 +- .../examples}/blockquote/blockquote.right.tsx | 22 +- .../examples}/blockquote/blockquote.root.tsx | 22 +- .../examples}/blockquote/blockquote.small.tsx | 22 +- .../blockquote/blockquote.solidBackground.tsx | 22 +- .../blockquote/blockquote.userReview.tsx | 22 +- .../blockquote/blockquote.userTestimonial.tsx | 22 +- apps/web/examples/blockquote/index.ts | 12 + .../breadcrumb/breadcrumb.backgroundColor.tsx | 28 +- .../examples}/breadcrumb/breadcrumb.root.tsx | 28 +- apps/web/examples/breadcrumb/index.ts | 2 + .../web/examples}/button/button.disabled.tsx | 22 +- .../examples}/button/button.gradientDuo.tsx | 22 +- .../examples}/button/button.gradientMono.tsx | 22 +- .../web/examples}/button/button.iconOnly.tsx | 28 +- .../web/examples}/button/button.loading.tsx | 22 +- .../button/button.loadingSpinner.tsx | 28 +- .../web/examples}/button/button.outline.tsx | 22 +- .../web/examples}/button/button.pill.tsx | 22 +- .../web/examples}/button/button.polymorph.tsx | 28 +- .../web/examples}/button/button.root.tsx | 22 +- .../web/examples}/button/button.sizes.tsx | 22 +- .../web/examples}/button/button.withIcon.tsx | 28 +- .../web/examples}/button/button.withLabel.tsx | 22 +- apps/web/examples/button/index.ts | 13 + .../buttonGroup/buttonGroup.colorOptions.tsx | 22 +- .../buttonGroup/buttonGroup.outline.tsx | 22 +- .../buttonGroup.outlineWithIcons.tsx | 28 +- .../buttonGroup/buttonGroup.root.tsx | 22 +- .../buttonGroup/buttonGroup.withIcons.tsx | 28 +- apps/web/examples/buttonGroup/index.ts | 5 + .../web/examples}/card/card.CTA.tsx | 28 +- .../web/examples}/card/card.CTAButton.tsx | 22 +- .../web/examples}/card/card.crypto.tsx | 24 +- .../web/examples}/card/card.eCommerce.tsx | 22 +- .../web/examples}/card/card.horizontal.tsx | 22 +- .../web/examples}/card/card.pricing.tsx | 22 +- .../web/examples}/card/card.renderImage.tsx | 28 +- .../web/examples}/card/card.root.tsx | 22 +- .../web/examples}/card/card.userProfile.tsx | 28 +- .../web/examples}/card/card.withForm.tsx | 22 +- .../web/examples}/card/card.withImage.tsx | 22 +- .../web/examples}/card/card.withList.tsx | 28 +- apps/web/examples/card/index.ts | 12 + .../examples}/carousel/carousel.controls.tsx | 22 +- .../examples}/carousel/carousel.events.tsx | 20 +- .../carousel/carousel.indicators.tsx | 22 +- .../carousel/carousel.pauseOnHover.tsx | 22 +- .../web/examples}/carousel/carousel.root.tsx | 22 +- .../web/examples}/carousel/carousel.slide.tsx | 22 +- .../carousel/carousel.slideInterval.tsx | 22 +- .../carousel/carousel.sliderContent.tsx | 22 +- apps/web/examples/carousel/index.ts | 8 + .../datepicker/datepicker.autoHide.tsx | 22 +- .../examples/datepicker/datepicker.inline.tsx | 42 + .../datepicker/datepicker.localization.tsx | 22 +- .../examples}/datepicker/datepicker.range.tsx | 22 +- .../examples/datepicker/datepicker.root.tsx | 42 + .../examples}/datepicker/datepicker.title.tsx | 22 +- .../datepicker/datepicker.weekStart.tsx | 22 +- apps/web/examples/datepicker/index.ts | 7 + .../dropdown/dropdown.customItem.tsx | 24 +- .../dropdown/dropdown.customTrigger.tsx | 18 +- .../examples}/dropdown/dropdown.divider.tsx | 22 +- .../examples}/dropdown/dropdown.events.tsx | 26 +- .../examples}/dropdown/dropdown.header.tsx | 22 +- .../examples}/dropdown/dropdown.inline.tsx | 22 +- .../dropdown/dropdown.itemsWithIcon.tsx | 22 +- .../examples}/dropdown/dropdown.placement.tsx | 22 +- .../web/examples}/dropdown/dropdown.root.tsx | 22 +- .../web/examples}/dropdown/dropdown.sizes.tsx | 22 +- apps/web/examples/dropdown/index.ts | 10 + .../fileInput/fileInput.dropzone.tsx | 28 +- .../examples}/fileInput/fileInput.helper.tsx | 22 +- .../fileInput/fileInput.multiple.tsx | 22 +- .../examples}/fileInput/fileInput.root.tsx | 24 +- .../examples}/fileInput/fileInput.sizes.tsx | 22 +- apps/web/examples/fileInput/index.ts | 5 + .../floatingLabel/floatingLabel.disabled.tsx | 22 +- .../floatingLabel.helperText.tsx | 22 +- .../floatingLabel/floatingLabel.root.tsx | 22 +- .../floatingLabel/floatingLabel.sizes.tsx | 22 +- .../floatingLabel.validation.tsx | 22 +- apps/web/examples/floatingLabel/index.ts | 5 + .../web/examples}/footer/footer.root.tsx | 22 +- .../examples}/footer/footer.sitemapLinks.tsx | 28 +- .../footer/footer.socialMediaIcons.tsx | 28 +- .../web/examples}/footer/footer.withLogo.tsx | 22 +- apps/web/examples/footer/index.ts | 4 + .../web/examples}/forms/forms.checkbox.tsx | 22 +- .../examples}/forms/forms.disabledInputs.tsx | 22 +- .../web/examples}/forms/forms.fileInput.tsx | 22 +- .../web/examples}/forms/forms.helperText.tsx | 22 +- .../web/examples}/forms/forms.inputAddon.tsx | 22 +- .../web/examples}/forms/forms.inputColors.tsx | 22 +- .../examples}/forms/forms.inputLeftIcon.tsx | 28 +- .../forms/forms.inputLeftRightIcon.tsx | 28 +- .../examples}/forms/forms.inputRightIcon.tsx | 28 +- .../web/examples}/forms/forms.inputSizing.tsx | 22 +- .../web/examples}/forms/forms.radioButton.tsx | 22 +- .../web/examples}/forms/forms.rangeSlider.tsx | 22 +- .../web/examples}/forms/forms.root.tsx | 22 +- .../web/examples}/forms/forms.select.tsx | 22 +- .../examples}/forms/forms.shadowInputs.tsx | 28 +- .../web/examples}/forms/forms.textarea.tsx | 22 +- .../examples}/forms/forms.toggleSwitch.tsx | 22 +- .../web/examples}/forms/forms.validation.tsx | 22 +- apps/web/examples/forms/index.ts | 18 + apps/web/examples/index.ts | 33 + apps/web/examples/kbd/index.ts | 7 + .../web/examples}/kbd/kbd.arrowKeys.tsx | 28 +- .../web/examples}/kbd/kbd.functionKeys.tsx | 22 +- .../web/examples}/kbd/kbd.insideTable.tsx | 28 +- .../web/examples}/kbd/kbd.insideText.tsx | 22 +- .../web/examples}/kbd/kbd.letterKeys.tsx | 22 +- .../web/examples}/kbd/kbd.numberKeys.tsx | 22 +- .../web/examples}/kbd/kbd.root.tsx | 22 +- apps/web/examples/list/index.ts | 6 + .../web/examples}/list/list.horizontal.tsx | 22 +- .../web/examples}/list/list.icon.tsx | 28 +- .../web/examples}/list/list.nested.tsx | 22 +- .../web/examples}/list/list.ordered.tsx | 22 +- .../web/examples}/list/list.root.tsx | 22 +- .../web/examples}/list/list.unstyled.tsx | 22 +- apps/web/examples/listGroup/index.ts | 4 + .../listGroup/listGroup.itemsAsLink.tsx | 22 +- .../examples}/listGroup/listGroup.root.tsx | 22 +- .../listGroup/listGroup.withButtons.tsx | 20 +- .../listGroup/listGroup.withIcons.tsx | 28 +- apps/web/examples/modal/index.ts | 7 + .../web/examples}/modal/modal.dismissible.tsx | 22 +- .../examples}/modal/modal.initialFocus.tsx | 22 +- .../web/examples}/modal/modal.popup.tsx | 26 +- .../web/examples}/modal/modal.position.tsx | 24 +- .../web/examples}/modal/modal.root.tsx | 22 +- .../web/examples}/modal/modal.sizes.tsx | 24 +- .../modal/modal.withFormElements.tsx | 26 +- apps/web/examples/navbar/index.ts | 3 + .../web/examples}/navbar/navbar.root.tsx | 28 +- .../examples}/navbar/navbar.withCTAButton.tsx | 22 +- .../examples}/navbar/navbar.withDropdown.tsx | 22 +- apps/web/examples/pagination/index.ts | 7 + .../pagination.controlButtonText.tsx | 22 +- .../pagination/pagination.navigation.tsx | 22 +- .../pagination.navigationWithIcons.tsx | 22 +- .../examples}/pagination/pagination.root.tsx | 22 +- .../examples}/pagination/pagination.table.tsx | 22 +- .../pagination/pagination.tableWithIcons.tsx | 22 +- .../pagination/pagination.withIcons.tsx | 22 +- apps/web/examples/popover/index.ts | 8 + .../examples}/popover/popover.controlled.tsx | 26 +- .../popover/popover.disableArrow.tsx | 14 +- .../web/examples}/popover/popover.image.tsx | 20 +- .../examples}/popover/popover.password.tsx | 18 +- .../examples}/popover/popover.placement.tsx | 14 +- .../web/examples}/popover/popover.profile.tsx | 16 +- .../web/examples}/popover/popover.root.tsx | 16 +- .../web/examples}/popover/popover.trigger.tsx | 22 +- apps/web/examples/progress/index.ts | 5 + .../examples}/progress/progress.colors.tsx | 22 +- .../progress/progress.positioning.tsx | 22 +- .../web/examples}/progress/progress.root.tsx | 22 +- .../examples}/progress/progress.sizing.tsx | 22 +- .../progress/progress.withLabels.tsx | 22 +- apps/web/examples/rating/index.ts | 5 + .../web/examples}/rating/rating.advanced.tsx | 22 +- .../web/examples}/rating/rating.count.tsx | 22 +- .../web/examples}/rating/rating.root.tsx | 22 +- .../web/examples}/rating/rating.sizing.tsx | 22 +- .../web/examples}/rating/rating.withText.tsx | 22 +- apps/web/examples/sidebar/index.ts | 6 + .../examples}/sidebar/sidebar.dropdown.tsx | 22 +- .../sidebar/sidebar.dropdownWithChevron.tsx | 28 +- .../web/examples}/sidebar/sidebar.root.tsx | 22 +- .../examples}/sidebar/sidebar.separator.tsx | 26 +- .../examples}/sidebar/sidebar.withButton.tsx | 22 +- .../examples}/sidebar/sidebar.withLogo.tsx | 22 +- apps/web/examples/spinner/index.ts | 5 + .../examples}/spinner/spinner.alignment.tsx | 22 +- .../web/examples}/spinner/spinner.colors.tsx | 22 +- .../spinner/spinner.loadingButtons.tsx | 22 +- .../web/examples}/spinner/spinner.root.tsx | 22 +- .../web/examples}/spinner/spinner.sizing.tsx | 22 +- apps/web/examples/table/index.ts | 4 + .../web/examples}/table/table.hover.tsx | 22 +- .../web/examples}/table/table.root.tsx | 22 +- .../web/examples}/table/table.striped.tsx | 22 +- .../examples}/table/table.withCheckboxes.tsx | 22 +- apps/web/examples/tabs/index.ts | 6 + .../web/examples}/tabs/tabs.fullWidth.tsx | 24 +- .../web/examples}/tabs/tabs.root.tsx | 24 +- .../web/examples}/tabs/tabs.stateOptions.tsx | 30 +- .../web/examples}/tabs/tabs.withIcons.tsx | 24 +- .../web/examples}/tabs/tabs.withPills.tsx | 16 +- .../web/examples}/tabs/tabs.withUnderline.tsx | 24 +- apps/web/examples/timeline/index.ts | 3 + .../timeline/timeline.horizontal.tsx | 26 +- .../web/examples}/timeline/timeline.root.tsx | 28 +- .../examples}/timeline/timeline.vertical.tsx | 26 +- apps/web/examples/toast/index.ts | 6 + .../web/examples}/toast/toast.colors.tsx | 28 +- .../examples}/toast/toast.customDismissal.tsx | 26 +- .../web/examples}/toast/toast.feedback.tsx | 28 +- .../web/examples}/toast/toast.interactive.tsx | 34 +- .../web/examples}/toast/toast.root.tsx | 28 +- .../web/examples}/toast/toast.withButton.tsx | 22 +- apps/web/examples/tooltip/index.ts | 6 + .../examples}/tooltip/tooltip.animation.tsx | 22 +- .../tooltip/tooltip.disableArrow.tsx | 22 +- .../examples}/tooltip/tooltip.placement.tsx | 22 +- .../web/examples}/tooltip/tooltip.root.tsx | 22 +- .../web/examples}/tooltip/tooltip.styles.tsx | 22 +- .../web/examples}/tooltip/tooltip.trigger.tsx | 22 +- apps/web/helpers/http.ts | 5 + next-env.d.ts => apps/web/next-env.d.ts | 0 apps/web/next.config.js | 146 + apps/web/package.json | 45 + apps/web/postcss.config.js | 7 + apps/web/prettier.config.cjs | 10 + .../web/public}/android-chrome-192x192.png | Bin .../web/public}/android-chrome-512x512.png | Bin .../web/public}/apple-touch-icon.png | Bin {public => apps/web/public}/browserconfig.xml | 0 {public => apps/web/public}/favicon-16x16.png | Bin {public => apps/web/public}/favicon-32x32.png | Bin {public => apps/web/public}/favicon.ico | Bin {public => apps/web/public}/favicon.svg | 0 .../web/public}/images/blog/image-1.jpg | Bin .../web/public}/images/blog/image-4.jpg | Bin .../images/components/accordion-dark.svg | 0 .../public}/images/components/accordion.svg | 0 .../public}/images/components/alerts-dark.svg | 0 .../web/public}/images/components/alerts.svg | 0 .../public}/images/components/avatar-dark.svg | 0 .../web/public}/images/components/avatar.svg | 0 .../public}/images/components/badges-dark.svg | 0 .../web/public}/images/components/badges.svg | 0 .../public}/images/components/banner-dark.svg | 0 .../web/public}/images/components/banner.svg | 0 .../images/components/blockquote-dark.svg | 0 .../public}/images/components/blockquote.svg | 0 .../images/components/breadcrumbs-dark.svg | 0 .../public}/images/components/breadcrumbs.svg | 0 .../images/components/button-group-dark.svg | 0 .../images/components/button-group.svg | 0 .../images/components/buttons-dark.svg | 0 .../web/public}/images/components/buttons.svg | 0 .../public}/images/components/cards-dark.svg | 0 .../web/public}/images/components/cards.svg | 0 .../images/components/carousel-dark.svg | 0 .../public}/images/components/carousel.svg | 0 .../images/components/datepicker-dark.svg | 0 .../public}/images/components/datepicker.svg | 0 .../images/components/dropdown-dark.svg | 0 .../public}/images/components/dropdown.svg | 0 .../images/components/file-input-dark.svg | 0 .../public}/images/components/file-input.svg | 0 .../images/components/floating-label-dark.svg | 0 .../images/components/floating-label.svg | 0 .../public}/images/components/footer-dark.svg | 0 .../web/public}/images/components/footer.svg | 0 .../public}/images/components/forms-dark.svg | 0 .../web/public}/images/components/forms.svg | 0 .../images/components/keyboard-dark.svg | 0 .../public}/images/components/keyboard.svg | 0 .../public}/images/components/list-dark.svg | 0 .../images/components/list-group-dark.svg | 0 .../public}/images/components/list-group.svg | 0 .../web/public}/images/components/list.svg | 0 .../public}/images/components/modal-dark.svg | 0 .../web/public}/images/components/modal.svg | 0 .../public}/images/components/navbar-dark.svg | 0 .../web/public}/images/components/navbar.svg | 0 .../images/components/pagination-dark.svg | 0 .../public}/images/components/pagination.svg | 0 .../images/components/progress-dark.svg | 0 .../public}/images/components/progress.svg | 0 .../public}/images/components/rating-dark.svg | 0 .../web/public}/images/components/rating.svg | 0 .../images/components/sidebar-dark.svg | 0 .../web/public}/images/components/sidebar.svg | 0 .../images/components/spinner-dark.svg | 0 .../web/public}/images/components/spinner.svg | 0 .../public}/images/components/table-dark.svg | 0 .../web/public}/images/components/table.svg | 0 .../public}/images/components/tabs-dark.svg | 0 .../web/public}/images/components/tabs.svg | 0 .../images/components/timeline-dark.svg | 0 .../public}/images/components/timeline.svg | 0 .../public}/images/components/toast-dark.svg | 0 .../web/public}/images/components/toast.svg | 0 .../images/components/tooltips-dark.svg | 0 .../public}/images/components/tooltips.svg | 0 .../images/feature-sections/eugene.jpg | Bin .../flowbite-react-figma-dark.png | Bin .../feature-sections/flowbite-react-figma.png | Bin .../feature-sections/react-dark-mode-dark.png | Bin .../feature-sections/react-dark-mode.png | Bin .../react-ui-components-dark.png | Bin .../feature-sections/react-ui-components.png | Bin .../tailwind-css-react-dark.png | Bin .../feature-sections/tailwind-css-react.png | Bin .../web/public}/images/gallery-dark.png | Bin .../web/public}/images/gallery.png | Bin .../images/people/profile-picture-1.jpg | Bin .../images/people/profile-picture-2.jpg | Bin .../images/people/profile-picture-3.jpg | Bin .../images/people/profile-picture-4.jpg | Bin .../images/people/profile-picture-5.jpg | Bin .../public}/images/products/apple-watch.png | Bin apps/web/public/logos/astro.svg | 1 + apps/web/public/logos/create-react-app.svg | 1 + apps/web/public/logos/gatsby.svg | 1 + apps/web/public/logos/laravel.svg | 1 + apps/web/public/logos/next-js.svg | 1 + apps/web/public/logos/parcel.svg | 1 + apps/web/public/logos/redwood-js.svg | 3 + apps/web/public/logos/remix.svg | 1 + apps/web/public/logos/vite.svg | 1 + .../web/public}/mstile-150x150.png | Bin .../web/public}/safari-pinned-tab.svg | 0 {public => apps/web/public}/site.webmanifest | 0 apps/web/styles/docs.css | 684 + {styles => apps/web/styles}/docsearch.css | 137 +- {styles => apps/web/styles}/globals.css | 0 apps/web/tailwind.config.js | 93 + apps/web/tsconfig.json | 29 + apps/web/turbo.json | 8 + bun.lockb | Bin 0 -> 765928 bytes codecov.yml | 7 - .../homepage/dark-mode-section/index.ts | 1 - components/homepage/hero-section/index.ts | 1 - components/homepage/index.ts | 11 - content/docs/customize/dark-mode.mdx | 71 - content/docs/getting-started/quickstart.mdx | 97 - content/docs/getting-started/typescript.mdx | 88 - content/docs/guides/remix.mdx | 97 - contentlayer.config.js | 39 - cypress.config.ts | 11 - cypress/e2e/docs/pages/CarouselPage.cy.ts | 86 - cypress/support/e2e.ts | 1 - cypress/tsconfig.json | 7 - data/components.tsx | 416 - data/docs-sidebar.ts | 102 - examples/accordion/index.ts | 2 - examples/alert/index.ts | 7 - examples/avatar/index.ts | 11 - examples/badge/index.ts | 5 - examples/banner/index.ts | 5 - examples/blockquote/index.ts | 12 - examples/breadcrumb/index.ts | 2 - examples/button/index.ts | 13 - examples/buttonGroup/index.ts | 5 - examples/card/index.ts | 12 - examples/carousel/index.ts | 8 - examples/datepicker/datepicker.inline.tsx | 42 - examples/datepicker/datepicker.root.tsx | 42 - examples/datepicker/index.ts | 7 - examples/dropdown/index.ts | 10 - examples/fileInput/index.ts | 5 - examples/floatingLabel/index.ts | 5 - examples/footer/index.ts | 4 - examples/forms/index.ts | 18 - examples/index.ts | 33 - examples/kbd/index.ts | 7 - examples/list/index.ts | 6 - examples/listGroup/index.ts | 4 - examples/modal/index.ts | 7 - examples/navbar/index.ts | 3 - examples/pagination/index.ts | 7 - examples/popover/index.ts | 8 - examples/progress/index.ts | 5 - examples/rating/index.ts | 5 - examples/sidebar/index.ts | 6 - examples/spinner/index.ts | 5 - examples/table/index.ts | 4 - examples/tabs/index.ts | 6 - examples/timeline/index.ts | 3 - examples/toast/index.ts | 6 - examples/tooltip/index.ts | 6 - next.config.mjs | 160 - package.json | 229 +- packages/cli/.gitignore | 1 + packages/cli/CHANGELOG.md | 13 + packages/cli/README.md | 84 + packages/cli/package.json | 69 + packages/cli/src/actions/create-project.ts | 22 + packages/cli/src/actions/git.ts | 30 + packages/cli/src/actions/help.ts | 21 + packages/cli/src/actions/intro.ts | 8 + packages/cli/src/actions/next-steps.ts | 7 + packages/cli/src/actions/project-name.ts | 36 + packages/cli/src/actions/template.ts | 33 + packages/cli/src/actions/version.ts | 5 + packages/cli/src/context.ts | 28 + packages/cli/src/data.ts | 13 + packages/cli/src/index.ts | 31 + packages/cli/src/utils/validators.ts | 15 + packages/cli/tsconfig.json | 29 + packages/cli/tsup.config.ts | 10 + packages/cli/turbo.json | 8 + packages/ui/.eslintrc.cjs | 54 + packages/ui/.gitignore | 2 + CHANGELOG.md => packages/ui/CHANGELOG.md | 234 +- packages/ui/README.md | 337 + packages/ui/package.json | 98 + packages/ui/postcss.config.js | 6 + packages/ui/prettier.config.cjs | 10 + .../components/Accordion/Accordion.spec.tsx | 140 +- .../Accordion/Accordion.stories.tsx | 18 +- .../src}/components/Accordion/Accordion.tsx | 44 +- .../components/Accordion/AccordionContent.tsx | 16 +- .../components/Accordion/AccordionPanel.tsx | 10 +- .../Accordion/AccordionPanelContext.tsx | 18 + .../components/Accordion/AccordionTitle.tsx | 28 +- packages/ui/src/components/Accordion/index.ts | 8 + packages/ui/src/components/Accordion/theme.ts | 34 + .../ui/src}/components/Alert/Alert.spec.tsx | 89 +- .../src}/components/Alert/Alert.stories.tsx | 46 +- .../ui/src}/components/Alert/Alert.tsx | 24 +- .../ui/src}/components/Alert/index.ts | 4 +- packages/ui/src/components/Alert/theme.ts | 60 + .../ui/src/components/Avatar/Avatar.spec.tsx | 108 + .../src}/components/Avatar/Avatar.stories.tsx | 16 +- .../ui/src}/components/Avatar/Avatar.tsx | 46 +- .../components/Avatar/AvatarGroup.spec.tsx | 26 + .../components/Avatar/AvatarGroup.stories.tsx | 10 +- .../ui/src}/components/Avatar/AvatarGroup.tsx | 14 +- .../Avatar/AvatarGroupCounter.spec.tsx | 19 + .../components/Avatar/AvatarGroupCounter.tsx | 14 +- .../ui/src}/components/Avatar/index.ts | 12 +- packages/ui/src/components/Avatar/theme.ts | 63 + .../ui/src/components/Badge/Badge.spec.tsx | 96 + .../src}/components/Badge/Badge.stories.tsx | 36 +- .../ui/src}/components/Badge/Badge.tsx | 26 +- .../ui/src}/components/Badge/index.ts | 4 +- packages/ui/src/components/Badge/theme.ts | 48 + .../ui/src/components/Banner/Banner.spec.tsx | 22 + .../src}/components/Banner/Banner.stories.tsx | 20 +- .../ui/src}/components/Banner/Banner.tsx | 8 +- .../Banner/BannerCollapseButton.tsx | 10 +- packages/ui/src/components/Banner/index.ts | 4 + packages/ui/src/components/Banner/theme.ts | 3 + .../components/Blockquote/Blockquote.spec.tsx | 33 + .../Blockquote/Blockquote.stories.tsx | 8 +- .../src}/components/Blockquote/Blockquote.tsx | 14 +- .../ui/src/components/Blockquote/index.ts | 2 + .../ui/src/components/Blockquote/theme.ts | 8 + .../components/Breadcrumb/Breadcrumb.spec.tsx | 107 + .../Breadcrumb/Breadcrumb.stories.tsx | 14 +- .../src}/components/Breadcrumb/Breadcrumb.tsx | 18 +- .../components/Breadcrumb/BreadcrumbItem.tsx | 28 +- .../ui/src/components/Breadcrumb/index.ts | 4 + .../ui/src/components/Breadcrumb/theme.ts | 18 + .../ui/src}/components/Button/Button.spec.tsx | 168 +- .../src/components/Button/Button.stories.tsx | 31 + .../ui/src}/components/Button/Button.tsx | 54 +- .../ui/src/components/Button/ButtonBase.tsx | 20 + .../components/Button/ButtonGroup.spec.tsx | 48 +- .../components/Button/ButtonGroup.stories.tsx | 10 +- .../ui/src}/components/Button/ButtonGroup.tsx | 20 +- .../ui/src}/components/Button/index.ts | 8 +- packages/ui/src/components/Button/theme.ts | 128 + .../ui/src}/components/Card/Card.spec.tsx | 106 +- .../ui/src/components/Card/Card.stories.tsx | 41 + .../ui/src}/components/Card/Card.tsx | 41 +- packages/ui/src/components/Card/index.ts | 2 + packages/ui/src/components/Card/theme.ts | 21 + .../components/Carousel/Carousel.spec.tsx | 86 +- .../components/Carousel/Carousel.stories.tsx | 18 +- .../ui/src}/components/Carousel/Carousel.tsx | 36 +- .../ui/src}/components/Carousel/index.ts | 4 +- packages/ui/src/components/Carousel/theme.ts | 33 + .../src/components/Checkbox/Checkbox.spec.tsx | 35 + .../components/Checkbox/Checkbox.stories.tsx | 14 + .../ui/src}/components/Checkbox/Checkbox.tsx | 20 +- packages/ui/src/components/Checkbox/index.ts | 2 + packages/ui/src/components/Checkbox/theme.ts | 28 + .../DarkThemeToggle/DarkThemeToggle.spec.tsx | 22 + .../DarkThemeToggle.stories.tsx | 10 +- .../DarkThemeToggle/DarkThemeToggle.tsx | 34 +- .../src}/components/DarkThemeToggle/index.ts | 4 +- .../src/components/DarkThemeToggle/theme.ts | 9 + .../components/Datepicker/Datepicker.spec.tsx | 61 +- .../Datepicker/Datepicker.stories.tsx | 24 +- .../src}/components/Datepicker/Datepicker.tsx | 54 +- .../Datepicker/DatepickerContext.tsx | 10 +- .../src}/components/Datepicker/Views/Days.tsx | 14 +- .../components/Datepicker/Views/Decades.tsx | 10 +- .../components/Datepicker/Views/Months.tsx | 12 +- .../components/Datepicker/Views/Years.tsx | 12 +- .../components/Datepicker/helpers.spec.tsx | 74 +- .../ui/src}/components/Datepicker/helpers.ts | 30 +- .../ui/src/components/Datepicker/index.ts | 3 + .../ui/src/components/Datepicker/theme.ts | 86 + .../components/Dropdown/Dropdown.spec.tsx | 74 +- .../components/Dropdown/Dropdown.stories.tsx | 30 +- .../ui/src}/components/Dropdown/Dropdown.tsx | 62 +- .../components/Dropdown/DropdownContext.tsx | 12 +- .../components/Dropdown/DropdownDivider.tsx | 12 +- .../components/Dropdown/DropdownHeader.tsx | 14 +- .../src}/components/Dropdown/DropdownItem.tsx | 34 +- packages/ui/src/components/Dropdown/index.ts | 8 + packages/ui/src/components/Dropdown/theme.ts | 36 + .../FileInput/FileInput.stories.tsx | 14 + .../src}/components/FileInput/FileInput.tsx | 22 +- .../ui/src}/components/FileInput/index.ts | 4 +- packages/ui/src/components/FileInput/theme.ts | 29 + .../ui/src}/components/Floating/Floating.tsx | 52 +- .../ui/src}/components/Floating/helpers.ts | 24 +- packages/ui/src/components/Floating/index.ts | 2 + .../FloatingLabel/FloatingLabel.spec.tsx | 30 + .../FloatingLabel/FloatingLabel.stories.tsx | 92 +- .../FloatingLabel/FloatingLabel.tsx | 36 +- .../ui/src/components/FloatingLabel/index.ts | 8 + .../ui/src/components/FloatingLabel/theme.ts | 99 + .../components/Flowbite/Flowbite.spec.tsx | 44 +- .../ui/src}/components/Flowbite/Flowbite.tsx | 10 +- .../src}/components/Flowbite/FlowbiteTheme.ts | 152 +- .../ui/src}/components/Flowbite/index.ts | 6 +- .../ui/src}/components/Footer/Footer.spec.tsx | 110 +- .../src}/components/Footer/Footer.stories.tsx | 16 +- packages/ui/src/components/Footer/Footer.tsx | 80 + .../ui/src}/components/Footer/FooterBrand.tsx | 12 +- .../components/Footer/FooterCopyright.tsx | 12 +- .../src}/components/Footer/FooterDivider.tsx | 12 +- .../ui/src}/components/Footer/FooterIcon.tsx | 14 +- .../ui/src}/components/Footer/FooterLink.tsx | 14 +- .../components/Footer/FooterLinkGroup.tsx | 14 +- .../ui/src}/components/Footer/FooterTitle.tsx | 14 +- packages/ui/src/components/Footer/index.ts | 16 + packages/ui/src/components/Footer/theme.ts | 38 + .../src}/components/HelperText/HelperText.tsx | 22 +- .../ui/src/components/HelperText/index.ts | 2 + .../ui/src/components/HelperText/theme.ts | 15 + packages/ui/src/components/Kbd/Kbd.spec.tsx | 51 + .../ui/src}/components/Kbd/Kbd.stories.tsx | 14 +- .../ui/src}/components/Kbd/Kbd.tsx | 16 +- .../ui/src}/components/Kbd/index.ts | 4 +- packages/ui/src/components/Kbd/theme.ts | 9 + .../ui/src}/components/Label/Label.spec.tsx | 60 +- .../ui/src/components/Label/Label.stories.tsx | 16 + .../ui/src}/components/Label/Label.tsx | 20 +- packages/ui/src/components/Label/index.ts | 2 + packages/ui/src/components/Label/theme.ts | 16 + .../ui/src}/components/List/List.spec.tsx | 20 +- .../ui/src}/components/List/List.stories.tsx | 18 +- .../ui/src}/components/List/List.tsx | 24 +- .../ui/src}/components/List/ListItem.tsx | 16 +- packages/ui/src/components/List/index.ts | 4 + packages/ui/src/components/List/theme.ts | 22 + .../components/ListGroup/ListGroup.spec.tsx | 134 + .../ListGroup/ListGroup.stories.tsx | 20 +- .../src}/components/ListGroup/ListGroup.tsx | 20 +- .../components/ListGroup/ListGroupItem.tsx | 28 +- packages/ui/src/components/ListGroup/index.ts | 4 + packages/ui/src/components/ListGroup/theme.ts | 27 + .../ui/src}/components/Modal/Modal.spec.tsx | 62 +- .../src}/components/Modal/Modal.stories.tsx | 47 +- .../ui/src}/components/Modal/Modal.tsx | 50 +- .../ui/src}/components/Modal/ModalBody.tsx | 14 +- .../ui/src}/components/Modal/ModalContext.tsx | 8 +- .../ui/src}/components/Modal/ModalFooter.tsx | 14 +- .../ui/src}/components/Modal/ModalHeader.tsx | 18 +- packages/ui/src/components/Modal/index.ts | 15 + packages/ui/src/components/Modal/theme.ts | 56 + .../ui/src}/components/Navbar/Navbar.spec.tsx | 32 +- .../src}/components/Navbar/Navbar.stories.tsx | 16 +- .../ui/src}/components/Navbar/Navbar.tsx | 52 +- .../ui/src}/components/Navbar/NavbarBrand.tsx | 16 +- .../src}/components/Navbar/NavbarCollapse.tsx | 18 +- .../src}/components/Navbar/NavbarContext.tsx | 8 +- .../ui/src}/components/Navbar/NavbarLink.tsx | 20 +- .../src}/components/Navbar/NavbarToggle.tsx | 18 +- packages/ui/src/components/Navbar/index.ts | 10 + packages/ui/src/components/Navbar/theme.ts | 49 + .../components/Pagination/Pagination.spec.tsx | 52 +- .../Pagination/Pagination.stories.tsx | 26 +- .../src}/components/Pagination/Pagination.tsx | 38 +- .../Pagination/PaginationButton.tsx | 18 +- .../src/components/Pagination/helpers.spec.ts | 13 + .../ui/src}/components/Pagination/helpers.ts | 0 .../ui/src}/components/Pagination/index.ts | 8 +- .../ui/src/components/Pagination/theme.ts | 30 + .../src}/components/Popover/Popover.spec.tsx | 36 +- .../components/Popover/Popover.stories.tsx | 26 +- .../ui/src}/components/Popover/Popover.tsx | 50 +- packages/ui/src/components/Popover/index.ts | 2 + packages/ui/src/components/Popover/theme.ts | 10 + .../src/components/Progress/Progress.spec.tsx | 71 + .../components/Progress/Progress.stories.tsx | 24 +- .../ui/src}/components/Progress/Progress.tsx | 48 +- packages/ui/src/components/Progress/index.ts | 2 + packages/ui/src/components/Progress/theme.ts | 28 + .../ui/src/components/Radio/Radio.spec.tsx | 35 + .../ui/src/components/Radio/Radio.stories.tsx | 14 + .../ui/src}/components/Radio/Radio.tsx | 16 +- .../ui/src}/components/Radio/index.ts | 4 +- packages/ui/src/components/Radio/theme.ts | 8 + .../RangeSlider/RangeSlider.spec.tsx | 127 +- .../RangeSlider/RangeSlider.stories.tsx | 16 +- .../components/RangeSlider/RangeSlider.tsx | 20 +- .../ui/src}/components/RangeSlider/index.ts | 4 +- .../ui/src/components/RangeSlider/theme.ts | 19 + .../ui/src}/components/Rating/Rating.spec.tsx | 30 +- .../src}/components/Rating/Rating.stories.tsx | 16 +- .../ui/src}/components/Rating/Rating.tsx | 30 +- .../src}/components/Rating/RatingAdvanced.tsx | 12 +- .../src}/components/Rating/RatingContext.tsx | 10 +- .../ui/src/components/Rating/RatingStar.tsx | 45 + packages/ui/src/components/Rating/index.ts | 6 + packages/ui/src/components/Rating/theme.ts | 28 + .../ui/src/components/Select/Select.spec.tsx | 13 + .../src}/components/Select/Select.stories.tsx | 16 +- .../ui/src}/components/Select/Select.tsx | 36 +- .../ui/src}/components/Select/index.ts | 4 +- packages/ui/src/components/Select/theme.ts | 45 + .../src}/components/Sidebar/Sidebar.spec.tsx | 217 +- .../components/Sidebar/Sidebar.stories.tsx | 30 +- .../ui/src}/components/Sidebar/Sidebar.tsx | 42 +- .../ui/src}/components/Sidebar/SidebarCTA.tsx | 22 +- .../components/Sidebar/SidebarCollapse.tsx | 38 +- .../components/Sidebar/SidebarContext.tsx | 8 +- .../src}/components/Sidebar/SidebarItem.tsx | 36 +- .../components/Sidebar/SidebarItemContext.tsx | 6 +- .../components/Sidebar/SidebarItemGroup.tsx | 18 +- .../src}/components/Sidebar/SidebarItems.tsx | 16 +- .../src}/components/Sidebar/SidebarLogo.tsx | 24 +- packages/ui/src/components/Sidebar/index.ts | 14 + packages/ui/src/components/Sidebar/theme.ts | 82 + .../src}/components/Spinner/Spinner.spec.tsx | 44 +- .../components/Spinner/Spinner.stories.tsx | 14 +- .../ui/src}/components/Spinner/Spinner.tsx | 28 +- packages/ui/src/components/Spinner/index.ts | 2 + packages/ui/src/components/Spinner/theme.ts | 48 + .../ui/src}/components/Table/Table.spec.tsx | 28 +- .../src}/components/Table/Table.stories.tsx | 10 +- .../ui/src}/components/Table/Table.tsx | 30 +- .../ui/src}/components/Table/TableBody.tsx | 21 +- .../components/Table/TableBodyContext.tsx | 8 +- .../ui/src}/components/Table/TableCell.tsx | 17 +- .../ui/src}/components/Table/TableContext.tsx | 8 +- .../ui/src}/components/Table/TableHead.tsx | 21 +- .../src}/components/Table/TableHeadCell.tsx | 17 +- .../components/Table/TableHeadContext.tsx | 8 +- .../ui/src}/components/Table/TableRow.tsx | 17 +- packages/ui/src/components/Table/index.ts | 12 + packages/ui/src/components/Table/theme.ts | 27 + packages/ui/src/components/Tabs/TabItem.tsx | 14 + .../ui/src}/components/Tabs/Tabs.spec.tsx | 82 +- .../ui/src}/components/Tabs/Tabs.stories.tsx | 34 +- .../ui/src}/components/Tabs/Tabs.tsx | 36 +- packages/ui/src/components/Tabs/index.ts | 12 + packages/ui/src/components/Tabs/theme.ts | 60 + .../components/TextInput/TextInput.spec.tsx | 19 + .../TextInput/TextInput.stories.tsx | 14 + .../src}/components/TextInput/TextInput.tsx | 42 +- .../ui/src}/components/TextInput/index.ts | 4 +- packages/ui/src/components/TextInput/theme.ts | 53 + .../src/components/Textarea/Textarea.spec.tsx | 13 + .../components/Textarea/Textarea.stories.tsx | 16 + .../ui/src/components/Textarea/Textarea.tsx | 44 + .../ui/src}/components/Textarea/index.ts | 4 +- packages/ui/src/components/Textarea/theme.ts | 20 + .../ThemeModeScript/ThemeModeScript.spec.tsx | 15 + .../ThemeModeScript/ThemeModeScript.tsx | 42 + .../src/components/ThemeModeScript/index.ts | 2 + .../components/Timeline/Timeline.spec.tsx | 44 +- .../components/Timeline/Timeline.stories.tsx | 8 +- .../ui/src}/components/Timeline/Timeline.tsx | 42 +- .../src}/components/Timeline/TimelineBody.tsx | 14 +- .../components/Timeline/TimelineContent.tsx | 24 +- .../Timeline/TimelineContentContext.tsx | 8 +- .../components/Timeline/TimelineContext.tsx | 8 +- .../src}/components/Timeline/TimelineItem.tsx | 20 +- .../Timeline/TimelineItemContext.tsx | 8 +- .../components/Timeline/TimelinePoint.tsx | 18 +- .../src}/components/Timeline/TimelineTime.tsx | 14 +- .../components/Timeline/TimelineTitle.tsx | 18 +- packages/ui/src/components/Timeline/index.ts | 14 + packages/ui/src/components/Timeline/theme.ts | 49 + .../ui/src}/components/Toast/Toast.spec.tsx | 34 +- .../ui/src/components/Toast/Toast.stories.tsx | 23 + .../ui/src}/components/Toast/Toast.tsx | 42 +- .../ui/src}/components/Toast/ToastContext.tsx | 8 +- .../ui/src}/components/Toast/ToastToggle.tsx | 18 +- packages/ui/src/components/Toast/index.ts | 4 + packages/ui/src/components/Toast/theme.ts | 13 + .../ToggleSwitch/ToggleSwitch.spec.tsx | 94 +- .../ToggleSwitch/ToggleSwitch.stories.tsx | 36 +- .../components/ToggleSwitch/ToggleSwitch.tsx | 30 +- .../ui/src}/components/ToggleSwitch/index.ts | 4 +- .../ui/src/components/ToggleSwitch/theme.ts | 44 + .../src}/components/Tooltip/Tooltip.spec.tsx | 38 +- .../components/Tooltip/Tooltip.stories.tsx | 38 +- .../ui/src}/components/Tooltip/Tooltip.tsx | 30 +- packages/ui/src/components/Tooltip/index.ts | 2 + packages/ui/src/components/Tooltip/theme.ts | 24 + .../ui/src}/helpers/clone-deep.spec.ts | 14 +- .../ui/src}/helpers/clone-deep.ts | 2 +- packages/ui/src/helpers/create-theme.ts | 6 + .../ui/src}/helpers/drag-scroll/index.tsx | 44 +- .../ui/src}/helpers/generic-as-prop.ts | 4 +- {src => packages/ui/src}/helpers/is-client.ts | 2 +- packages/ui/src/helpers/is-object.spec.ts | 28 + {src => packages/ui/src}/helpers/is-object.ts | 2 +- packages/ui/src/helpers/merge-deep.spec.ts | 73 + .../ui/src}/helpers/merge-deep.ts | 4 +- packages/ui/src/helpers/omit.spec.ts | 8 + {src => packages/ui/src}/helpers/omit.ts | 0 .../ui/src}/hooks/use-floating.ts | 24 +- .../ui/src}/hooks/use-is-mounted.ts | 4 +- .../ui/src}/hooks/use-theme-mode.ts | 36 +- .../hooks/use-watch-localstorage-value.ts | 10 +- packages/ui/src/index.ts | 56 + .../ui/src}/theme-store/index.tsx | 10 +- .../ui/src}/theme-store/init/client.tsx | 6 +- .../ui/src}/theme-store/init/index.tsx | 10 +- .../ui/src}/theme-store/init/mode.tsx | 6 +- .../ui/src}/theme-store/init/server.tsx | 4 +- packages/ui/src/theme.ts | 86 + {src => packages/ui/src}/types/index.ts | 0 packages/ui/tailwind.config.js | 8 + packages/ui/tsconfig.build.json | 9 + tsconfig.json => packages/ui/tsconfig.json | 25 +- packages/ui/turbo.json | 8 + packages/ui/vitest-setup.ts | 1 + packages/ui/vitest.config.mjs | 14 + prettier.config.cjs | 7 + .../Accordion/AccordionPanelContext.tsx | 18 - src/components/Accordion/index.ts | 8 - src/components/Accordion/theme.ts | 33 - src/components/Alert/theme.ts | 59 - src/components/Avatar/Avatar.spec.tsx | 108 - src/components/Avatar/AvatarGroup.spec.tsx | 26 - .../Avatar/AvatarGroupCounter.spec.tsx | 19 - src/components/Avatar/theme.ts | 62 - src/components/Badge/Badge.spec.tsx | 96 - src/components/Badge/theme.ts | 47 - src/components/Banner/Banner.spec.tsx | 22 - src/components/Banner/index.ts | 4 - src/components/Banner/theme.ts | 1 - src/components/Blockquote/Blockquote.spec.tsx | 33 - src/components/Blockquote/index.ts | 2 - src/components/Blockquote/theme.ts | 7 - src/components/Breadcrumb/Breadcrumb.spec.tsx | 107 - src/components/Breadcrumb/index.ts | 4 - src/components/Breadcrumb/theme.ts | 17 - src/components/Button/Button.stories.tsx | 31 - src/components/Button/ButtonBase.tsx | 19 - src/components/Button/theme.ts | 127 - src/components/Card/Card.stories.tsx | 57 - src/components/Card/index.ts | 2 - src/components/Card/theme.ts | 20 - src/components/Carousel/theme.ts | 32 - src/components/Checkbox/Checkbox.spec.tsx | 35 - src/components/Checkbox/Checkbox.stories.tsx | 14 - src/components/Checkbox/index.ts | 2 - src/components/Checkbox/theme.ts | 27 - .../DarkThemeToggle/DarkThemeToggle.spec.tsx | 22 - src/components/DarkThemeToggle/theme.ts | 8 - src/components/Datepicker/index.ts | 3 - src/components/Datepicker/theme.ts | 85 - src/components/Dropdown/index.ts | 8 - src/components/Dropdown/theme.ts | 35 - .../FileInput/FileInput.stories.tsx | 14 - src/components/FileInput/theme.ts | 28 - src/components/Floating/index.ts | 2 - .../FloatingLabel/FloatingLabel.spec.tsx | 30 - src/components/FloatingLabel/index.ts | 8 - src/components/FloatingLabel/theme.ts | 97 - src/components/Footer/Footer.tsx | 80 - src/components/Footer/index.ts | 16 - src/components/Footer/theme.ts | 37 - src/components/HelperText/index.ts | 2 - src/components/HelperText/theme.ts | 14 - src/components/Kbd/Kbd.spec.tsx | 51 - src/components/Kbd/theme.ts | 8 - src/components/Label/Label.stories.tsx | 16 - src/components/Label/index.ts | 2 - src/components/Label/theme.ts | 15 - src/components/List/index.ts | 4 - src/components/List/theme.ts | 21 - src/components/ListGroup/ListGroup.spec.tsx | 135 - src/components/ListGroup/index.ts | 4 - src/components/ListGroup/theme.ts | 26 - src/components/Modal/index.ts | 15 - src/components/Modal/theme.ts | 55 - src/components/Navbar/index.ts | 10 - src/components/Navbar/theme.ts | 48 - src/components/Pagination/helpers.spec.ts | 13 - src/components/Pagination/theme.ts | 29 - src/components/Popover/index.ts | 2 - src/components/Popover/theme.ts | 10 - src/components/Progress/Progress.spec.tsx | 71 - src/components/Progress/index.ts | 2 - src/components/Progress/theme.ts | 27 - src/components/Radio/Radio.spec.tsx | 35 - src/components/Radio/Radio.stories.tsx | 14 - src/components/Radio/theme.ts | 7 - src/components/RangeSlider/theme.ts | 18 - src/components/Rating/RatingStar.tsx | 45 - src/components/Rating/index.ts | 6 - src/components/Rating/theme.ts | 27 - src/components/Select/Select.spec.tsx | 13 - src/components/Select/theme.ts | 44 - src/components/Sidebar/index.ts | 14 - src/components/Sidebar/theme.ts | 81 - src/components/Spinner/index.ts | 2 - src/components/Spinner/theme.ts | 47 - src/components/Table/index.ts | 12 - src/components/Table/theme.ts | 26 - src/components/Tabs/TabItem.tsx | 14 - src/components/Tabs/index.ts | 12 - src/components/Tabs/theme.ts | 59 - src/components/TextInput/TextInput.spec.tsx | 19 - .../TextInput/TextInput.stories.tsx | 14 - src/components/TextInput/theme.ts | 52 - src/components/Textarea/Textarea.spec.tsx | 13 - src/components/Textarea/Textarea.stories.tsx | 16 - src/components/Textarea/Textarea.tsx | 44 - src/components/Textarea/theme.ts | 19 - .../ThemeModeScript/ThemeModeScript.spec.tsx | 15 - .../ThemeModeScript/ThemeModeScript.tsx | 42 - src/components/ThemeModeScript/index.ts | 2 - src/components/Timeline/index.ts | 14 - src/components/Timeline/theme.ts | 48 - src/components/Toast/Toast.stories.tsx | 23 - src/components/Toast/index.ts | 4 - src/components/Toast/theme.ts | 12 - src/components/ToggleSwitch/theme.ts | 43 - src/components/Tooltip/index.ts | 2 - src/components/Tooltip/theme.ts | 23 - src/helpers/http.ts | 6 - src/helpers/is-object.spec.ts | 28 - src/helpers/merge-deep.spec.ts | 73 - src/helpers/omit.spec.ts | 8 - src/index.ts | 49 - src/setup-tests.ts | 9 - src/theme.ts | 86 - styles/docs.css | 450 - tailwind.config.ts | 92 - tsconfig.lib.json | 10 - turbo.json | 22 + vitest.config.ts | 26 - yarn.lock | 15615 ---------------- 1003 files changed, 13506 insertions(+), 27884 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json create mode 100644 .editorconfig rename CODE_OF_CONDUCT.md => .github/CODE_OF_CONDUCT.md (100%) rename CONTRIBUTING.md => .github/CONTRIBUTING.md (86%) create mode 100644 .github/actions/setup/action.yml delete mode 100644 .github/workflows/storybook.yml delete mode 100644 .idea/.gitignore delete mode 100644 .npmignore delete mode 100644 .prettierignore delete mode 100644 .prettierrc delete mode 100644 .storybook/main.ts delete mode 100644 .storybook/preview.ts create mode 100644 .vscode/extensions.json mode change 100644 => 120000 README.md delete mode 100644 app/layout.tsx rename .eslintignore => apps/storybook/.gitignore (50%) rename {.storybook => apps/storybook/.storybook}/inter.woff2 (100%) create mode 100644 apps/storybook/.storybook/main.ts create mode 100644 apps/storybook/.storybook/preview.ts rename {.storybook => apps/storybook/.storybook}/style.css (54%) create mode 100644 apps/storybook/package.json rename postcss.config.js => apps/storybook/postcss.config.js (77%) create mode 100644 apps/storybook/tailwind.config.js create mode 100644 apps/storybook/tsconfig.json create mode 100644 apps/storybook/tsconfig.node.json create mode 100644 apps/storybook/turbo.json create mode 100644 apps/storybook/vite.config.ts create mode 100644 apps/web/.eslintrc.js create mode 100644 apps/web/.gitignore rename {app => apps/web/app}/docs/[[...slug]]/page.tsx (88%) rename {app => apps/web/app}/docs/layout.tsx (55%) create mode 100644 apps/web/app/layout.tsx rename {app => apps/web/app}/page.tsx (78%) rename {components => apps/web/components}/banner.tsx (68%) rename {components => apps/web/components}/carbon-ads.tsx (53%) rename {components => apps/web/components}/code-demo.tsx (52%) rename {components => apps/web/components}/code-highlight.tsx (54%) rename {components => apps/web/components}/docsearch-input.tsx (56%) rename {components => apps/web/components}/homepage/components-section.tsx (68%) rename {components => apps/web/components}/homepage/contributors-section.tsx (89%) rename {components => apps/web/components}/homepage/dark-mode-section/dark-mode-section.tsx (84%) rename {components => apps/web/components}/homepage/dark-mode-section/dark-mode-switcher.tsx (79%) create mode 100644 apps/web/components/homepage/dark-mode-section/index.ts rename {components => apps/web/components}/homepage/featured-section.tsx (99%) rename {components => apps/web/components}/homepage/figma-section.tsx (96%) rename {components => apps/web/components}/homepage/hero-section/copy-package-input.tsx (57%) rename {components => apps/web/components}/homepage/hero-section/hero-section.tsx (77%) create mode 100644 apps/web/components/homepage/hero-section/index.ts rename {components => apps/web/components}/homepage/home-navbar.tsx (58%) create mode 100644 apps/web/components/homepage/index.ts rename {components => apps/web/components}/homepage/main-footer.tsx (95%) rename {components => apps/web/components}/homepage/react-section.tsx (83%) rename {components => apps/web/components}/homepage/social-proof-section.tsx (89%) rename {components => apps/web/components}/homepage/tailwind-section.tsx (88%) rename {components => apps/web/components}/mdx.tsx (68%) rename {components => apps/web/components}/navbar.tsx (67%) create mode 100644 apps/web/components/quickstart/integration-guides.tsx create mode 100644 apps/web/components/text-divider.tsx rename {content => apps/web/content}/docs/components/accordion.mdx (96%) rename {content => apps/web/content}/docs/components/alert.mdx (98%) rename {content => apps/web/content}/docs/components/avatar.mdx (98%) rename {content => apps/web/content}/docs/components/badge.mdx (98%) rename {content => apps/web/content}/docs/components/banner.mdx (98%) rename {content => apps/web/content}/docs/components/breadcrumb.mdx (96%) rename {content => apps/web/content}/docs/components/button-group.mdx (98%) rename {content => apps/web/content}/docs/components/button.mdx (98%) rename {content => apps/web/content}/docs/components/card.mdx (98%) rename {content => apps/web/content}/docs/components/carousel.mdx (98%) rename {content => apps/web/content}/docs/components/datepicker.mdx (98%) rename {content => apps/web/content}/docs/components/dropdown.mdx (98%) rename {content => apps/web/content}/docs/components/footer.mdx (97%) rename {content => apps/web/content}/docs/components/forms.mdx (99%) rename {content => apps/web/content}/docs/components/kbd.mdx (97%) rename {content => apps/web/content}/docs/components/list-group.mdx (97%) rename {content => apps/web/content}/docs/components/modal.mdx (98%) rename {content => apps/web/content}/docs/components/navbar.mdx (97%) rename {content => apps/web/content}/docs/components/pagination.mdx (98%) rename {content => apps/web/content}/docs/components/popover.mdx (98%) rename {content => apps/web/content}/docs/components/progress.mdx (97%) rename {content => apps/web/content}/docs/components/rating.mdx (98%) rename {content => apps/web/content}/docs/components/sidebar.mdx (98%) rename {content => apps/web/content}/docs/components/spinner.mdx (97%) rename {content => apps/web/content}/docs/components/table.mdx (97%) rename {content => apps/web/content}/docs/components/tabs.mdx (98%) rename {content => apps/web/content}/docs/components/timeline.mdx (97%) rename {content => apps/web/content}/docs/components/toast.mdx (98%) rename {content => apps/web/content}/docs/components/tooltip.mdx (98%) create mode 100644 apps/web/content/docs/customize/dark-mode.mdx rename {content => apps/web/content}/docs/customize/theme.mdx (81%) rename {content => apps/web/content}/docs/forms/file-input.mdx (97%) rename {content => apps/web/content}/docs/forms/floating-label.mdx (100%) create mode 100644 apps/web/content/docs/getting-started/cli.mdx rename {content => apps/web/content}/docs/getting-started/contributing.mdx (86%) create mode 100644 apps/web/content/docs/getting-started/editor-setup.mdx rename {content => apps/web/content}/docs/getting-started/introduction.mdx (75%) rename {content => apps/web/content}/docs/getting-started/license.mdx (100%) create mode 100644 apps/web/content/docs/getting-started/quickstart.mdx rename {content => apps/web/content}/docs/getting-started/server-components.mdx (86%) rename {content => apps/web/content}/docs/guides/astro.mdx (81%) rename {content => apps/web/content}/docs/guides/create-react-app.mdx (67%) rename {content => apps/web/content}/docs/guides/gatsby.mdx (73%) rename {content => apps/web/content}/docs/guides/laravel.mdx (62%) rename {content => apps/web/content}/docs/guides/next-js.mdx (71%) rename {content => apps/web/content}/docs/guides/parcel.mdx (79%) rename {content => apps/web/content}/docs/guides/redwood-js.mdx (60%) create mode 100644 apps/web/content/docs/guides/remix.mdx rename {content => apps/web/content}/docs/guides/vite.mdx (67%) rename {content => apps/web/content}/docs/typography/blockquote.mdx (98%) rename {content => apps/web/content}/docs/typography/list.mdx (97%) create mode 100644 apps/web/contentlayer.config.js create mode 100644 apps/web/data/components.tsx create mode 100644 apps/web/data/docs-sidebar.ts rename {examples => apps/web/examples}/accordion/accordion.collapseAll.tsx (96%) rename {examples => apps/web/examples}/accordion/accordion.root.tsx (96%) create mode 100644 apps/web/examples/accordion/index.ts rename {examples => apps/web/examples}/alert/alert.additionalContent.tsx (88%) rename {examples => apps/web/examples}/alert/alert.allOptions.tsx (81%) rename {examples => apps/web/examples}/alert/alert.borderAccent.tsx (70%) rename {examples => apps/web/examples}/alert/alert.dismissible.tsx (59%) rename {examples => apps/web/examples}/alert/alert.root.tsx (68%) rename {examples => apps/web/examples}/alert/alert.rounded.tsx (68%) rename {examples => apps/web/examples}/alert/alert.withIcon.tsx (61%) create mode 100644 apps/web/examples/alert/index.ts rename {examples => apps/web/examples}/avatar/avatar.colors.tsx (90%) rename {examples => apps/web/examples}/avatar/avatar.dotIndicator.tsx (82%) rename {examples => apps/web/examples}/avatar/avatar.dropdown.tsx (86%) rename {examples => apps/web/examples}/avatar/avatar.overrideImage.tsx (84%) rename {examples => apps/web/examples}/avatar/avatar.placeholder.tsx (62%) rename {examples => apps/web/examples}/avatar/avatar.placeholderInitials.tsx (67%) rename {examples => apps/web/examples}/avatar/avatar.root.tsx (72%) rename {examples => apps/web/examples}/avatar/avatar.sizes.tsx (81%) rename {examples => apps/web/examples}/avatar/avatar.stackedLayout.tsx (88%) rename {examples => apps/web/examples}/avatar/avatar.withBorder.tsx (71%) rename {examples => apps/web/examples}/avatar/avatar.withText.tsx (76%) create mode 100644 apps/web/examples/avatar/index.ts rename {examples => apps/web/examples}/badge/badge.asLink.tsx (69%) rename {examples => apps/web/examples}/badge/badge.root.tsx (81%) rename {examples => apps/web/examples}/badge/badge.sizes.tsx (85%) rename {examples => apps/web/examples}/badge/badge.withIcon.tsx (62%) rename {examples => apps/web/examples}/badge/badge.withIconOnly.tsx (66%) create mode 100644 apps/web/examples/badge/index.ts rename {examples => apps/web/examples}/banner/banner.bottomPosition.tsx (82%) rename {examples => apps/web/examples}/banner/banner.informational.tsx (85%) rename {examples => apps/web/examples}/banner/banner.marketingCTA.tsx (80%) rename {examples => apps/web/examples}/banner/banner.newsletter.tsx (71%) rename {examples => apps/web/examples}/banner/banner.root.tsx (70%) create mode 100644 apps/web/examples/banner/index.ts rename {examples => apps/web/examples}/blockquote/blockquote.center.tsx (73%) rename {examples => apps/web/examples}/blockquote/blockquote.icon.tsx (86%) rename {examples => apps/web/examples}/blockquote/blockquote.large.tsx (73%) rename {examples => apps/web/examples}/blockquote/blockquote.left.tsx (72%) rename {examples => apps/web/examples}/blockquote/blockquote.medium.tsx (73%) rename {examples => apps/web/examples}/blockquote/blockquote.paragraphContext.tsx (92%) rename {examples => apps/web/examples}/blockquote/blockquote.right.tsx (73%) rename {examples => apps/web/examples}/blockquote/blockquote.root.tsx (72%) rename {examples => apps/web/examples}/blockquote/blockquote.small.tsx (73%) rename {examples => apps/web/examples}/blockquote/blockquote.solidBackground.tsx (88%) rename {examples => apps/web/examples}/blockquote/blockquote.userReview.tsx (88%) rename {examples => apps/web/examples}/blockquote/blockquote.userTestimonial.tsx (91%) create mode 100644 apps/web/examples/blockquote/index.ts rename {examples => apps/web/examples}/breadcrumb/breadcrumb.backgroundColor.tsx (70%) rename {examples => apps/web/examples}/breadcrumb/breadcrumb.root.tsx (68%) create mode 100644 apps/web/examples/breadcrumb/index.ts rename {examples => apps/web/examples}/button/button.disabled.tsx (54%) rename {examples => apps/web/examples}/button/button.gradientDuo.tsx (84%) rename {examples => apps/web/examples}/button/button.gradientMono.tsx (83%) rename {examples => apps/web/examples}/button/button.iconOnly.tsx (75%) rename {examples => apps/web/examples}/button/button.loading.tsx (83%) rename {examples => apps/web/examples}/button/button.loadingSpinner.tsx (58%) rename {examples => apps/web/examples}/button/button.outline.tsx (87%) rename {examples => apps/web/examples}/button/button.pill.tsx (85%) rename {examples => apps/web/examples}/button/button.polymorph.tsx (68%) rename {examples => apps/web/examples}/button/button.root.tsx (82%) rename {examples => apps/web/examples}/button/button.sizes.tsx (76%) rename {examples => apps/web/examples}/button/button.withIcon.tsx (66%) rename {examples => apps/web/examples}/button/button.withLabel.tsx (53%) create mode 100644 apps/web/examples/button/index.ts rename {examples => apps/web/examples}/buttonGroup/buttonGroup.colorOptions.tsx (85%) rename {examples => apps/web/examples}/buttonGroup/buttonGroup.outline.tsx (86%) rename {examples => apps/web/examples}/buttonGroup/buttonGroup.outlineWithIcons.tsx (87%) rename {examples => apps/web/examples}/buttonGroup/buttonGroup.root.tsx (68%) rename {examples => apps/web/examples}/buttonGroup/buttonGroup.withIcons.tsx (69%) create mode 100644 apps/web/examples/buttonGroup/index.ts rename {examples => apps/web/examples}/card/card.CTA.tsx (92%) rename {examples => apps/web/examples}/card/card.CTAButton.tsx (88%) rename {examples => apps/web/examples}/card/card.crypto.tsx (97%) rename {examples => apps/web/examples}/card/card.eCommerce.tsx (97%) rename {examples => apps/web/examples}/card/card.horizontal.tsx (82%) rename {examples => apps/web/examples}/card/card.pricing.tsx (98%) rename {examples => apps/web/examples}/card/card.renderImage.tsx (80%) rename {examples => apps/web/examples}/card/card.root.tsx (81%) rename {examples => apps/web/examples}/card/card.userProfile.tsx (93%) rename {examples => apps/web/examples}/card/card.withForm.tsx (85%) rename {examples => apps/web/examples}/card/card.withImage.tsx (84%) rename {examples => apps/web/examples}/card/card.withList.tsx (97%) create mode 100644 apps/web/examples/card/index.ts rename {examples => apps/web/examples}/carousel/carousel.controls.tsx (85%) rename {examples => apps/web/examples}/carousel/carousel.events.tsx (78%) rename {examples => apps/web/examples}/carousel/carousel.indicators.tsx (90%) rename {examples => apps/web/examples}/carousel/carousel.pauseOnHover.tsx (84%) rename {examples => apps/web/examples}/carousel/carousel.root.tsx (84%) rename {examples => apps/web/examples}/carousel/carousel.slide.tsx (84%) rename {examples => apps/web/examples}/carousel/carousel.slideInterval.tsx (84%) rename {examples => apps/web/examples}/carousel/carousel.sliderContent.tsx (83%) create mode 100644 apps/web/examples/carousel/index.ts rename {examples => apps/web/examples}/datepicker/datepicker.autoHide.tsx (50%) create mode 100644 apps/web/examples/datepicker/datepicker.inline.tsx rename {examples => apps/web/examples}/datepicker/datepicker.localization.tsx (58%) rename {examples => apps/web/examples}/datepicker/datepicker.range.tsx (58%) create mode 100644 apps/web/examples/datepicker/datepicker.root.tsx rename {examples => apps/web/examples}/datepicker/datepicker.title.tsx (52%) rename {examples => apps/web/examples}/datepicker/datepicker.weekStart.tsx (55%) create mode 100644 apps/web/examples/datepicker/index.ts rename {examples => apps/web/examples}/dropdown/dropdown.customItem.tsx (72%) rename {examples => apps/web/examples}/dropdown/dropdown.customTrigger.tsx (73%) rename {examples => apps/web/examples}/dropdown/dropdown.divider.tsx (72%) rename {examples => apps/web/examples}/dropdown/dropdown.events.tsx (56%) rename {examples => apps/web/examples}/dropdown/dropdown.header.tsx (83%) rename {examples => apps/web/examples}/dropdown/dropdown.inline.tsx (72%) rename {examples => apps/web/examples}/dropdown/dropdown.itemsWithIcon.tsx (73%) rename {examples => apps/web/examples}/dropdown/dropdown.placement.tsx (93%) rename {examples => apps/web/examples}/dropdown/dropdown.root.tsx (73%) rename {examples => apps/web/examples}/dropdown/dropdown.sizes.tsx (83%) create mode 100644 apps/web/examples/dropdown/index.ts rename {examples => apps/web/examples}/fileInput/fileInput.dropzone.tsx (75%) rename {examples => apps/web/examples}/fileInput/fileInput.helper.tsx (71%) rename {examples => apps/web/examples}/fileInput/fileInput.multiple.tsx (68%) rename {examples => apps/web/examples}/fileInput/fileInput.root.tsx (67%) rename {examples => apps/web/examples}/fileInput/fileInput.sizes.tsx (84%) create mode 100644 apps/web/examples/fileInput/index.ts rename {examples => apps/web/examples}/floatingLabel/floatingLabel.disabled.tsx (75%) rename {examples => apps/web/examples}/floatingLabel/floatingLabel.helperText.tsx (68%) rename {examples => apps/web/examples}/floatingLabel/floatingLabel.root.tsx (73%) rename {examples => apps/web/examples}/floatingLabel/floatingLabel.sizes.tsx (84%) rename {examples => apps/web/examples}/floatingLabel/floatingLabel.validation.tsx (85%) create mode 100644 apps/web/examples/floatingLabel/index.ts rename {examples => apps/web/examples}/footer/footer.root.tsx (82%) rename {examples => apps/web/examples}/footer/footer.sitemapLinks.tsx (94%) rename {examples => apps/web/examples}/footer/footer.socialMediaIcons.tsx (94%) rename {examples => apps/web/examples}/footer/footer.withLogo.tsx (88%) create mode 100644 apps/web/examples/footer/index.ts rename {examples => apps/web/examples}/forms/forms.checkbox.tsx (92%) rename {examples => apps/web/examples}/forms/forms.disabledInputs.tsx (79%) rename {examples => apps/web/examples}/forms/forms.fileInput.tsx (74%) rename {examples => apps/web/examples}/forms/forms.helperText.tsx (83%) rename {examples => apps/web/examples}/forms/forms.inputAddon.tsx (72%) rename {examples => apps/web/examples}/forms/forms.inputColors.tsx (91%) rename {examples => apps/web/examples}/forms/forms.inputLeftIcon.tsx (67%) rename {examples => apps/web/examples}/forms/forms.inputLeftRightIcon.tsx (68%) rename {examples => apps/web/examples}/forms/forms.inputRightIcon.tsx (67%) rename {examples => apps/web/examples}/forms/forms.inputSizing.tsx (85%) rename {examples => apps/web/examples}/forms/forms.radioButton.tsx (90%) rename {examples => apps/web/examples}/forms/forms.rangeSlider.tsx (89%) rename {examples => apps/web/examples}/forms/forms.root.tsx (84%) rename {examples => apps/web/examples}/forms/forms.select.tsx (78%) rename {examples => apps/web/examples}/forms/forms.shadowInputs.tsx (87%) rename {examples => apps/web/examples}/forms/forms.textarea.tsx (72%) rename {examples => apps/web/examples}/forms/forms.toggleSwitch.tsx (80%) rename {examples => apps/web/examples}/forms/forms.validation.tsx (89%) create mode 100644 apps/web/examples/forms/index.ts create mode 100644 apps/web/examples/index.ts create mode 100644 apps/web/examples/kbd/index.ts rename {examples => apps/web/examples}/kbd/kbd.arrowKeys.tsx (69%) rename {examples => apps/web/examples}/kbd/kbd.functionKeys.tsx (77%) rename {examples => apps/web/examples}/kbd/kbd.insideTable.tsx (91%) rename {examples => apps/web/examples}/kbd/kbd.insideText.tsx (65%) rename {examples => apps/web/examples}/kbd/kbd.letterKeys.tsx (84%) rename {examples => apps/web/examples}/kbd/kbd.numberKeys.tsx (75%) rename {examples => apps/web/examples}/kbd/kbd.root.tsx (74%) create mode 100644 apps/web/examples/list/index.ts rename {examples => apps/web/examples}/list/list.horizontal.tsx (76%) rename {examples => apps/web/examples}/list/list.icon.tsx (71%) rename {examples => apps/web/examples}/list/list.nested.tsx (91%) rename {examples => apps/web/examples}/list/list.ordered.tsx (74%) rename {examples => apps/web/examples}/list/list.root.tsx (74%) rename {examples => apps/web/examples}/list/list.unstyled.tsx (74%) create mode 100644 apps/web/examples/listGroup/index.ts rename {examples => apps/web/examples}/listGroup/listGroup.itemsAsLink.tsx (77%) rename {examples => apps/web/examples}/listGroup/listGroup.root.tsx (75%) rename {examples => apps/web/examples}/listGroup/listGroup.withButtons.tsx (71%) rename {examples => apps/web/examples}/listGroup/listGroup.withIcons.tsx (77%) create mode 100644 apps/web/examples/modal/index.ts rename {examples => apps/web/examples}/modal/modal.dismissible.tsx (89%) rename {examples => apps/web/examples}/modal/modal.initialFocus.tsx (90%) rename {examples => apps/web/examples}/modal/modal.popup.tsx (81%) rename {examples => apps/web/examples}/modal/modal.position.tsx (91%) rename {examples => apps/web/examples}/modal/modal.root.tsx (89%) rename {examples => apps/web/examples}/modal/modal.sizes.tsx (91%) rename {examples => apps/web/examples}/modal/modal.withFormElements.tsx (89%) create mode 100644 apps/web/examples/navbar/index.ts rename {examples => apps/web/examples}/navbar/navbar.root.tsx (85%) rename {examples => apps/web/examples}/navbar/navbar.withCTAButton.tsx (88%) rename {examples => apps/web/examples}/navbar/navbar.withDropdown.tsx (93%) create mode 100644 apps/web/examples/pagination/index.ts rename {examples => apps/web/examples}/pagination/pagination.controlButtonText.tsx (74%) rename {examples => apps/web/examples}/pagination/pagination.navigation.tsx (69%) rename {examples => apps/web/examples}/pagination/pagination.navigationWithIcons.tsx (71%) rename {examples => apps/web/examples}/pagination/pagination.root.tsx (68%) rename {examples => apps/web/examples}/pagination/pagination.table.tsx (69%) rename {examples => apps/web/examples}/pagination/pagination.tableWithIcons.tsx (69%) rename {examples => apps/web/examples}/pagination/pagination.withIcons.tsx (68%) create mode 100644 apps/web/examples/popover/index.ts rename {examples => apps/web/examples}/popover/popover.controlled.tsx (82%) rename {examples => apps/web/examples}/popover/popover.disableArrow.tsx (84%) rename {examples => apps/web/examples}/popover/popover.image.tsx (94%) rename {examples => apps/web/examples}/popover/popover.password.tsx (95%) rename {examples => apps/web/examples}/popover/popover.placement.tsx (88%) rename {examples => apps/web/examples}/popover/popover.profile.tsx (92%) rename {examples => apps/web/examples}/popover/popover.root.tsx (83%) rename {examples => apps/web/examples}/popover/popover.trigger.tsx (86%) create mode 100644 apps/web/examples/progress/index.ts rename {examples => apps/web/examples}/progress/progress.colors.tsx (92%) rename {examples => apps/web/examples}/progress/progress.positioning.tsx (70%) rename {examples => apps/web/examples}/progress/progress.root.tsx (50%) rename {examples => apps/web/examples}/progress/progress.sizing.tsx (84%) rename {examples => apps/web/examples}/progress/progress.withLabels.tsx (59%) create mode 100644 apps/web/examples/rating/index.ts rename {examples => apps/web/examples}/rating/rating.advanced.tsx (87%) rename {examples => apps/web/examples}/rating/rating.count.tsx (78%) rename {examples => apps/web/examples}/rating/rating.root.tsx (66%) rename {examples => apps/web/examples}/rating/rating.sizing.tsx (84%) rename {examples => apps/web/examples}/rating/rating.withText.tsx (74%) create mode 100644 apps/web/examples/sidebar/index.ts rename {examples => apps/web/examples}/sidebar/sidebar.dropdown.tsx (88%) rename {examples => apps/web/examples}/sidebar/sidebar.dropdownWithChevron.tsx (87%) rename {examples => apps/web/examples}/sidebar/sidebar.root.tsx (85%) rename {examples => apps/web/examples}/sidebar/sidebar.separator.tsx (86%) rename {examples => apps/web/examples}/sidebar/sidebar.withButton.tsx (92%) rename {examples => apps/web/examples}/sidebar/sidebar.withLogo.tsx (86%) create mode 100644 apps/web/examples/spinner/index.ts rename {examples => apps/web/examples}/spinner/spinner.alignment.tsx (80%) rename {examples => apps/web/examples}/spinner/spinner.colors.tsx (82%) rename {examples => apps/web/examples}/spinner/spinner.loadingButtons.tsx (78%) rename {examples => apps/web/examples}/spinner/spinner.root.tsx (54%) rename {examples => apps/web/examples}/spinner/spinner.sizing.tsx (80%) create mode 100644 apps/web/examples/table/index.ts rename {examples => apps/web/examples}/table/table.hover.tsx (95%) rename {examples => apps/web/examples}/table/table.root.tsx (95%) rename {examples => apps/web/examples}/table/table.striped.tsx (96%) rename {examples => apps/web/examples}/table/table.withCheckboxes.tsx (95%) create mode 100644 apps/web/examples/tabs/index.ts rename {examples => apps/web/examples}/tabs/tabs.fullWidth.tsx (87%) rename {examples => apps/web/examples}/tabs/tabs.root.tsx (87%) rename {examples => apps/web/examples}/tabs/tabs.stateOptions.tsx (88%) rename {examples => apps/web/examples}/tabs/tabs.withIcons.tsx (87%) rename {examples => apps/web/examples}/tabs/tabs.withPills.tsx (86%) rename {examples => apps/web/examples}/tabs/tabs.withUnderline.tsx (87%) create mode 100644 apps/web/examples/timeline/index.ts rename {examples => apps/web/examples}/timeline/timeline.horizontal.tsx (91%) rename {examples => apps/web/examples}/timeline/timeline.root.tsx (91%) rename {examples => apps/web/examples}/timeline/timeline.vertical.tsx (91%) create mode 100644 apps/web/examples/toast/index.ts rename {examples => apps/web/examples}/toast/toast.colors.tsx (86%) rename {examples => apps/web/examples}/toast/toast.customDismissal.tsx (76%) rename {examples => apps/web/examples}/toast/toast.feedback.tsx (63%) rename {examples => apps/web/examples}/toast/toast.interactive.tsx (81%) rename {examples => apps/web/examples}/toast/toast.root.tsx (72%) rename {examples => apps/web/examples}/toast/toast.withButton.tsx (79%) create mode 100644 apps/web/examples/tooltip/index.ts rename {examples => apps/web/examples}/tooltip/tooltip.animation.tsx (86%) rename {examples => apps/web/examples}/tooltip/tooltip.disableArrow.tsx (62%) rename {examples => apps/web/examples}/tooltip/tooltip.placement.tsx (82%) rename {examples => apps/web/examples}/tooltip/tooltip.root.tsx (60%) rename {examples => apps/web/examples}/tooltip/tooltip.styles.tsx (74%) rename {examples => apps/web/examples}/tooltip/tooltip.trigger.tsx (74%) create mode 100644 apps/web/helpers/http.ts rename next-env.d.ts => apps/web/next-env.d.ts (100%) create mode 100644 apps/web/next.config.js create mode 100644 apps/web/package.json create mode 100644 apps/web/postcss.config.js create mode 100644 apps/web/prettier.config.cjs rename {public => apps/web/public}/android-chrome-192x192.png (100%) rename {public => apps/web/public}/android-chrome-512x512.png (100%) rename {public => apps/web/public}/apple-touch-icon.png (100%) rename {public => apps/web/public}/browserconfig.xml (100%) rename {public => apps/web/public}/favicon-16x16.png (100%) rename {public => apps/web/public}/favicon-32x32.png (100%) rename {public => apps/web/public}/favicon.ico (100%) rename {public => apps/web/public}/favicon.svg (100%) rename {public => apps/web/public}/images/blog/image-1.jpg (100%) rename {public => apps/web/public}/images/blog/image-4.jpg (100%) rename {public => apps/web/public}/images/components/accordion-dark.svg (100%) rename {public => apps/web/public}/images/components/accordion.svg (100%) rename {public => apps/web/public}/images/components/alerts-dark.svg (100%) rename {public => apps/web/public}/images/components/alerts.svg (100%) rename {public => apps/web/public}/images/components/avatar-dark.svg (100%) rename {public => apps/web/public}/images/components/avatar.svg (100%) rename {public => apps/web/public}/images/components/badges-dark.svg (100%) rename {public => apps/web/public}/images/components/badges.svg (100%) rename {public => apps/web/public}/images/components/banner-dark.svg (100%) rename {public => apps/web/public}/images/components/banner.svg (100%) rename {public => apps/web/public}/images/components/blockquote-dark.svg (100%) rename {public => apps/web/public}/images/components/blockquote.svg (100%) rename {public => apps/web/public}/images/components/breadcrumbs-dark.svg (100%) rename {public => apps/web/public}/images/components/breadcrumbs.svg (100%) rename {public => apps/web/public}/images/components/button-group-dark.svg (100%) rename {public => apps/web/public}/images/components/button-group.svg (100%) rename {public => apps/web/public}/images/components/buttons-dark.svg (100%) rename {public => apps/web/public}/images/components/buttons.svg (100%) rename {public => apps/web/public}/images/components/cards-dark.svg (100%) rename {public => apps/web/public}/images/components/cards.svg (100%) rename {public => apps/web/public}/images/components/carousel-dark.svg (100%) rename {public => apps/web/public}/images/components/carousel.svg (100%) rename {public => apps/web/public}/images/components/datepicker-dark.svg (100%) rename {public => apps/web/public}/images/components/datepicker.svg (100%) rename {public => apps/web/public}/images/components/dropdown-dark.svg (100%) rename {public => apps/web/public}/images/components/dropdown.svg (100%) rename {public => apps/web/public}/images/components/file-input-dark.svg (100%) rename {public => apps/web/public}/images/components/file-input.svg (100%) rename {public => apps/web/public}/images/components/floating-label-dark.svg (100%) rename {public => apps/web/public}/images/components/floating-label.svg (100%) rename {public => apps/web/public}/images/components/footer-dark.svg (100%) rename {public => apps/web/public}/images/components/footer.svg (100%) rename {public => apps/web/public}/images/components/forms-dark.svg (100%) rename {public => apps/web/public}/images/components/forms.svg (100%) rename {public => apps/web/public}/images/components/keyboard-dark.svg (100%) rename {public => apps/web/public}/images/components/keyboard.svg (100%) rename {public => apps/web/public}/images/components/list-dark.svg (100%) rename {public => apps/web/public}/images/components/list-group-dark.svg (100%) rename {public => apps/web/public}/images/components/list-group.svg (100%) rename {public => apps/web/public}/images/components/list.svg (100%) rename {public => apps/web/public}/images/components/modal-dark.svg (100%) rename {public => apps/web/public}/images/components/modal.svg (100%) rename {public => apps/web/public}/images/components/navbar-dark.svg (100%) rename {public => apps/web/public}/images/components/navbar.svg (100%) rename {public => apps/web/public}/images/components/pagination-dark.svg (100%) rename {public => apps/web/public}/images/components/pagination.svg (100%) rename {public => apps/web/public}/images/components/progress-dark.svg (100%) rename {public => apps/web/public}/images/components/progress.svg (100%) rename {public => apps/web/public}/images/components/rating-dark.svg (100%) rename {public => apps/web/public}/images/components/rating.svg (100%) rename {public => apps/web/public}/images/components/sidebar-dark.svg (100%) rename {public => apps/web/public}/images/components/sidebar.svg (100%) rename {public => apps/web/public}/images/components/spinner-dark.svg (100%) rename {public => apps/web/public}/images/components/spinner.svg (100%) rename {public => apps/web/public}/images/components/table-dark.svg (100%) rename {public => apps/web/public}/images/components/table.svg (100%) rename {public => apps/web/public}/images/components/tabs-dark.svg (100%) rename {public => apps/web/public}/images/components/tabs.svg (100%) rename {public => apps/web/public}/images/components/timeline-dark.svg (100%) rename {public => apps/web/public}/images/components/timeline.svg (100%) rename {public => apps/web/public}/images/components/toast-dark.svg (100%) rename {public => apps/web/public}/images/components/toast.svg (100%) rename {public => apps/web/public}/images/components/tooltips-dark.svg (100%) rename {public => apps/web/public}/images/components/tooltips.svg (100%) rename {public => apps/web/public}/images/feature-sections/eugene.jpg (100%) rename {public => apps/web/public}/images/feature-sections/flowbite-react-figma-dark.png (100%) rename {public => apps/web/public}/images/feature-sections/flowbite-react-figma.png (100%) rename {public => apps/web/public}/images/feature-sections/react-dark-mode-dark.png (100%) rename {public => apps/web/public}/images/feature-sections/react-dark-mode.png (100%) rename {public => apps/web/public}/images/feature-sections/react-ui-components-dark.png (100%) rename {public => apps/web/public}/images/feature-sections/react-ui-components.png (100%) rename {public => apps/web/public}/images/feature-sections/tailwind-css-react-dark.png (100%) rename {public => apps/web/public}/images/feature-sections/tailwind-css-react.png (100%) rename {public => apps/web/public}/images/gallery-dark.png (100%) rename {public => apps/web/public}/images/gallery.png (100%) rename {public => apps/web/public}/images/people/profile-picture-1.jpg (100%) rename {public => apps/web/public}/images/people/profile-picture-2.jpg (100%) rename {public => apps/web/public}/images/people/profile-picture-3.jpg (100%) rename {public => apps/web/public}/images/people/profile-picture-4.jpg (100%) rename {public => apps/web/public}/images/people/profile-picture-5.jpg (100%) rename {public => apps/web/public}/images/products/apple-watch.png (100%) create mode 100644 apps/web/public/logos/astro.svg create mode 100644 apps/web/public/logos/create-react-app.svg create mode 100644 apps/web/public/logos/gatsby.svg create mode 100644 apps/web/public/logos/laravel.svg create mode 100644 apps/web/public/logos/next-js.svg create mode 100644 apps/web/public/logos/parcel.svg create mode 100644 apps/web/public/logos/redwood-js.svg create mode 100644 apps/web/public/logos/remix.svg create mode 100644 apps/web/public/logos/vite.svg rename {public => apps/web/public}/mstile-150x150.png (100%) rename {public => apps/web/public}/safari-pinned-tab.svg (100%) rename {public => apps/web/public}/site.webmanifest (100%) create mode 100644 apps/web/styles/docs.css rename {styles => apps/web/styles}/docsearch.css (54%) rename {styles => apps/web/styles}/globals.css (100%) create mode 100644 apps/web/tailwind.config.js create mode 100644 apps/web/tsconfig.json create mode 100644 apps/web/turbo.json create mode 100755 bun.lockb delete mode 100644 codecov.yml delete mode 100644 components/homepage/dark-mode-section/index.ts delete mode 100644 components/homepage/hero-section/index.ts delete mode 100644 components/homepage/index.ts delete mode 100644 content/docs/customize/dark-mode.mdx delete mode 100644 content/docs/getting-started/quickstart.mdx delete mode 100644 content/docs/getting-started/typescript.mdx delete mode 100644 content/docs/guides/remix.mdx delete mode 100644 contentlayer.config.js delete mode 100644 cypress.config.ts delete mode 100644 cypress/e2e/docs/pages/CarouselPage.cy.ts delete mode 100644 cypress/support/e2e.ts delete mode 100644 cypress/tsconfig.json delete mode 100644 data/components.tsx delete mode 100644 data/docs-sidebar.ts delete mode 100644 examples/accordion/index.ts delete mode 100644 examples/alert/index.ts delete mode 100644 examples/avatar/index.ts delete mode 100644 examples/badge/index.ts delete mode 100644 examples/banner/index.ts delete mode 100644 examples/blockquote/index.ts delete mode 100644 examples/breadcrumb/index.ts delete mode 100644 examples/button/index.ts delete mode 100644 examples/buttonGroup/index.ts delete mode 100644 examples/card/index.ts delete mode 100644 examples/carousel/index.ts delete mode 100644 examples/datepicker/datepicker.inline.tsx delete mode 100644 examples/datepicker/datepicker.root.tsx delete mode 100644 examples/datepicker/index.ts delete mode 100644 examples/dropdown/index.ts delete mode 100644 examples/fileInput/index.ts delete mode 100644 examples/floatingLabel/index.ts delete mode 100644 examples/footer/index.ts delete mode 100644 examples/forms/index.ts delete mode 100644 examples/index.ts delete mode 100644 examples/kbd/index.ts delete mode 100644 examples/list/index.ts delete mode 100644 examples/listGroup/index.ts delete mode 100644 examples/modal/index.ts delete mode 100644 examples/navbar/index.ts delete mode 100644 examples/pagination/index.ts delete mode 100644 examples/popover/index.ts delete mode 100644 examples/progress/index.ts delete mode 100644 examples/rating/index.ts delete mode 100644 examples/sidebar/index.ts delete mode 100644 examples/spinner/index.ts delete mode 100644 examples/table/index.ts delete mode 100644 examples/tabs/index.ts delete mode 100644 examples/timeline/index.ts delete mode 100644 examples/toast/index.ts delete mode 100644 examples/tooltip/index.ts delete mode 100644 next.config.mjs create mode 100644 packages/cli/.gitignore create mode 100644 packages/cli/CHANGELOG.md create mode 100644 packages/cli/README.md create mode 100644 packages/cli/package.json create mode 100644 packages/cli/src/actions/create-project.ts create mode 100644 packages/cli/src/actions/git.ts create mode 100644 packages/cli/src/actions/help.ts create mode 100644 packages/cli/src/actions/intro.ts create mode 100644 packages/cli/src/actions/next-steps.ts create mode 100644 packages/cli/src/actions/project-name.ts create mode 100644 packages/cli/src/actions/template.ts create mode 100644 packages/cli/src/actions/version.ts create mode 100644 packages/cli/src/context.ts create mode 100644 packages/cli/src/data.ts create mode 100644 packages/cli/src/index.ts create mode 100644 packages/cli/src/utils/validators.ts create mode 100644 packages/cli/tsconfig.json create mode 100644 packages/cli/tsup.config.ts create mode 100644 packages/cli/turbo.json create mode 100644 packages/ui/.eslintrc.cjs create mode 100644 packages/ui/.gitignore rename CHANGELOG.md => packages/ui/CHANGELOG.md (93%) create mode 100644 packages/ui/README.md create mode 100644 packages/ui/package.json create mode 100644 packages/ui/postcss.config.js create mode 100644 packages/ui/prettier.config.cjs rename {src => packages/ui/src}/components/Accordion/Accordion.spec.tsx (59%) rename {src => packages/ui/src}/components/Accordion/Accordion.stories.tsx (89%) rename {src => packages/ui/src}/components/Accordion/Accordion.tsx (54%) rename {src => packages/ui/src}/components/Accordion/AccordionContent.tsx (59%) rename {src => packages/ui/src}/components/Accordion/AccordionPanel.tsx (72%) create mode 100644 packages/ui/src/components/Accordion/AccordionPanelContext.tsx rename {src => packages/ui/src}/components/Accordion/AccordionTitle.tsx (57%) create mode 100644 packages/ui/src/components/Accordion/index.ts create mode 100644 packages/ui/src/components/Accordion/theme.ts rename {src => packages/ui/src}/components/Alert/Alert.spec.tsx (59%) rename {src => packages/ui/src}/components/Alert/Alert.stories.tsx (81%) rename {src => packages/ui/src}/components/Alert/Alert.tsx (74%) rename {src => packages/ui/src}/components/Alert/index.ts (50%) create mode 100644 packages/ui/src/components/Alert/theme.ts create mode 100644 packages/ui/src/components/Avatar/Avatar.spec.tsx rename {src => packages/ui/src}/components/Avatar/Avatar.stories.tsx (70%) rename {src => packages/ui/src}/components/Avatar/Avatar.tsx (77%) create mode 100644 packages/ui/src/components/Avatar/AvatarGroup.spec.tsx rename {src => packages/ui/src}/components/Avatar/AvatarGroup.stories.tsx (75%) rename {src => packages/ui/src}/components/Avatar/AvatarGroup.tsx (56%) create mode 100644 packages/ui/src/components/Avatar/AvatarGroupCounter.spec.tsx rename {src => packages/ui/src}/components/Avatar/AvatarGroupCounter.tsx (64%) rename {src => packages/ui/src}/components/Avatar/index.ts (61%) create mode 100644 packages/ui/src/components/Avatar/theme.ts create mode 100644 packages/ui/src/components/Badge/Badge.spec.tsx rename {src => packages/ui/src}/components/Badge/Badge.stories.tsx (52%) rename {src => packages/ui/src}/components/Badge/Badge.tsx (69%) rename {src => packages/ui/src}/components/Badge/index.ts (69%) create mode 100644 packages/ui/src/components/Badge/theme.ts create mode 100644 packages/ui/src/components/Banner/Banner.spec.tsx rename {src => packages/ui/src}/components/Banner/Banner.stories.tsx (59%) rename {src => packages/ui/src}/components/Banner/Banner.tsx (59%) rename {src => packages/ui/src}/components/Banner/BannerCollapseButton.tsx (69%) create mode 100644 packages/ui/src/components/Banner/index.ts create mode 100644 packages/ui/src/components/Banner/theme.ts create mode 100644 packages/ui/src/components/Blockquote/Blockquote.spec.tsx rename {src => packages/ui/src}/components/Blockquote/Blockquote.stories.tsx (71%) rename {src => packages/ui/src}/components/Blockquote/Blockquote.tsx (60%) create mode 100644 packages/ui/src/components/Blockquote/index.ts create mode 100644 packages/ui/src/components/Blockquote/theme.ts create mode 100644 packages/ui/src/components/Breadcrumb/Breadcrumb.spec.tsx rename {src => packages/ui/src}/components/Breadcrumb/Breadcrumb.stories.tsx (58%) rename {src => packages/ui/src}/components/Breadcrumb/Breadcrumb.tsx (65%) rename {src => packages/ui/src}/components/Breadcrumb/BreadcrumbItem.tsx (60%) create mode 100644 packages/ui/src/components/Breadcrumb/index.ts create mode 100644 packages/ui/src/components/Breadcrumb/theme.ts rename {src => packages/ui/src}/components/Button/Button.spec.tsx (56%) create mode 100644 packages/ui/src/components/Button/Button.stories.tsx rename {src => packages/ui/src}/components/Button/Button.tsx (76%) create mode 100644 packages/ui/src/components/Button/ButtonBase.tsx rename {src => packages/ui/src}/components/Button/ButtonGroup.spec.tsx (69%) rename {src => packages/ui/src}/components/Button/ButtonGroup.stories.tsx (63%) rename {src => packages/ui/src}/components/Button/ButtonGroup.tsx (78%) rename {src => packages/ui/src}/components/Button/index.ts (67%) create mode 100644 packages/ui/src/components/Button/theme.ts rename {src => packages/ui/src}/components/Card/Card.spec.tsx (53%) create mode 100644 packages/ui/src/components/Card/Card.stories.tsx rename {src => packages/ui/src}/components/Card/Card.tsx (69%) create mode 100644 packages/ui/src/components/Card/index.ts create mode 100644 packages/ui/src/components/Card/theme.ts rename {src => packages/ui/src}/components/Carousel/Carousel.spec.tsx (54%) rename {src => packages/ui/src}/components/Carousel/Carousel.stories.tsx (74%) rename {src => packages/ui/src}/components/Carousel/Carousel.tsx (89%) rename {src => packages/ui/src}/components/Carousel/index.ts (80%) create mode 100644 packages/ui/src/components/Carousel/theme.ts create mode 100644 packages/ui/src/components/Checkbox/Checkbox.spec.tsx create mode 100644 packages/ui/src/components/Checkbox/Checkbox.stories.tsx rename {src => packages/ui/src}/components/Checkbox/Checkbox.tsx (53%) create mode 100644 packages/ui/src/components/Checkbox/index.ts create mode 100644 packages/ui/src/components/Checkbox/theme.ts create mode 100644 packages/ui/src/components/DarkThemeToggle/DarkThemeToggle.spec.tsx rename {src => packages/ui/src}/components/DarkThemeToggle/DarkThemeToggle.stories.tsx (52%) rename {src => packages/ui/src}/components/DarkThemeToggle/DarkThemeToggle.tsx (55%) rename {src => packages/ui/src}/components/DarkThemeToggle/index.ts (56%) create mode 100644 packages/ui/src/components/DarkThemeToggle/theme.ts rename {src => packages/ui/src}/components/Datepicker/Datepicker.spec.tsx (57%) rename {src => packages/ui/src}/components/Datepicker/Datepicker.stories.tsx (72%) rename {src => packages/ui/src}/components/Datepicker/Datepicker.tsx (89%) rename {src => packages/ui/src}/components/Datepicker/DatepickerContext.tsx (71%) rename {src => packages/ui/src}/components/Datepicker/Views/Days.tsx (86%) rename {src => packages/ui/src}/components/Datepicker/Views/Decades.tsx (84%) rename {src => packages/ui/src}/components/Datepicker/Views/Months.tsx (84%) rename {src => packages/ui/src}/components/Datepicker/Views/Years.tsx (84%) rename {src => packages/ui/src}/components/Datepicker/helpers.spec.tsx (67%) rename {src => packages/ui/src}/components/Datepicker/helpers.ts (93%) create mode 100644 packages/ui/src/components/Datepicker/index.ts create mode 100644 packages/ui/src/components/Datepicker/theme.ts rename {src => packages/ui/src}/components/Dropdown/Dropdown.spec.tsx (67%) rename {src => packages/ui/src}/components/Dropdown/Dropdown.stories.tsx (77%) rename {src => packages/ui/src}/components/Dropdown/Dropdown.tsx (79%) rename {src => packages/ui/src}/components/Dropdown/DropdownContext.tsx (53%) rename {src => packages/ui/src}/components/Dropdown/DropdownDivider.tsx (66%) rename {src => packages/ui/src}/components/Dropdown/DropdownHeader.tsx (61%) rename {src => packages/ui/src}/components/Dropdown/DropdownItem.tsx (64%) create mode 100644 packages/ui/src/components/Dropdown/index.ts create mode 100644 packages/ui/src/components/Dropdown/theme.ts create mode 100644 packages/ui/src/components/FileInput/FileInput.stories.tsx rename {src => packages/ui/src}/components/FileInput/FileInput.tsx (71%) rename {src => packages/ui/src}/components/FileInput/index.ts (71%) create mode 100644 packages/ui/src/components/FileInput/theme.ts rename {src => packages/ui/src}/components/Floating/Floating.tsx (71%) rename {src => packages/ui/src}/components/Floating/helpers.ts (51%) create mode 100644 packages/ui/src/components/Floating/index.ts create mode 100644 packages/ui/src/components/FloatingLabel/FloatingLabel.spec.tsx rename {src => packages/ui/src}/components/FloatingLabel/FloatingLabel.stories.tsx (52%) rename {src => packages/ui/src}/components/FloatingLabel/FloatingLabel.tsx (58%) create mode 100644 packages/ui/src/components/FloatingLabel/index.ts create mode 100644 packages/ui/src/components/FloatingLabel/theme.ts rename {src => packages/ui/src}/components/Flowbite/Flowbite.spec.tsx (55%) rename {src => packages/ui/src}/components/Flowbite/Flowbite.tsx (59%) rename {src => packages/ui/src}/components/Flowbite/FlowbiteTheme.ts (51%) rename {src => packages/ui/src}/components/Flowbite/index.ts (70%) rename {src => packages/ui/src}/components/Footer/Footer.spec.tsx (69%) rename {src => packages/ui/src}/components/Footer/Footer.stories.tsx (94%) create mode 100644 packages/ui/src/components/Footer/Footer.tsx rename {src => packages/ui/src}/components/Footer/FooterBrand.tsx (74%) rename {src => packages/ui/src}/components/Footer/FooterCopyright.tsx (72%) rename {src => packages/ui/src}/components/Footer/FooterDivider.tsx (57%) rename {src => packages/ui/src}/components/Footer/FooterIcon.tsx (67%) rename {src => packages/ui/src}/components/Footer/FooterLink.tsx (62%) rename {src => packages/ui/src}/components/Footer/FooterLinkGroup.tsx (60%) rename {src => packages/ui/src}/components/Footer/FooterTitle.tsx (59%) create mode 100644 packages/ui/src/components/Footer/index.ts create mode 100644 packages/ui/src/components/Footer/theme.ts rename {src => packages/ui/src}/components/HelperText/HelperText.tsx (51%) create mode 100644 packages/ui/src/components/HelperText/index.ts create mode 100644 packages/ui/src/components/HelperText/theme.ts create mode 100644 packages/ui/src/components/Kbd/Kbd.spec.tsx rename {src => packages/ui/src}/components/Kbd/Kbd.stories.tsx (58%) rename {src => packages/ui/src}/components/Kbd/Kbd.tsx (62%) rename {src => packages/ui/src}/components/Kbd/index.ts (59%) create mode 100644 packages/ui/src/components/Kbd/theme.ts rename {src => packages/ui/src}/components/Label/Label.spec.tsx (70%) create mode 100644 packages/ui/src/components/Label/Label.stories.tsx rename {src => packages/ui/src}/components/Label/Label.tsx (64%) create mode 100644 packages/ui/src/components/Label/index.ts create mode 100644 packages/ui/src/components/Label/theme.ts rename {src => packages/ui/src}/components/List/List.spec.tsx (50%) rename {src => packages/ui/src}/components/List/List.stories.tsx (89%) rename {src => packages/ui/src}/components/List/List.tsx (70%) rename {src => packages/ui/src}/components/List/ListItem.tsx (55%) create mode 100644 packages/ui/src/components/List/index.ts create mode 100644 packages/ui/src/components/List/theme.ts create mode 100644 packages/ui/src/components/ListGroup/ListGroup.spec.tsx rename {src => packages/ui/src}/components/ListGroup/ListGroup.stories.tsx (77%) rename {src => packages/ui/src}/components/ListGroup/ListGroup.tsx (54%) rename {src => packages/ui/src}/components/ListGroup/ListGroupItem.tsx (61%) create mode 100644 packages/ui/src/components/ListGroup/index.ts create mode 100644 packages/ui/src/components/ListGroup/theme.ts rename {src => packages/ui/src}/components/Modal/Modal.spec.tsx (72%) rename {src => packages/ui/src}/components/Modal/Modal.stories.tsx (71%) rename {src => packages/ui/src}/components/Modal/Modal.tsx (73%) rename {src => packages/ui/src}/components/Modal/ModalBody.tsx (60%) rename {src => packages/ui/src}/components/Modal/ModalContext.tsx (64%) rename {src => packages/ui/src}/components/Modal/ModalFooter.tsx (60%) rename {src => packages/ui/src}/components/Modal/ModalHeader.tsx (75%) create mode 100644 packages/ui/src/components/Modal/index.ts create mode 100644 packages/ui/src/components/Modal/theme.ts rename {src => packages/ui/src}/components/Navbar/Navbar.spec.tsx (54%) rename {src => packages/ui/src}/components/Navbar/Navbar.stories.tsx (90%) rename {src => packages/ui/src}/components/Navbar/Navbar.tsx (50%) rename {src => packages/ui/src}/components/Navbar/NavbarBrand.tsx (59%) rename {src => packages/ui/src}/components/Navbar/NavbarCollapse.tsx (54%) rename {src => packages/ui/src}/components/Navbar/NavbarContext.tsx (62%) rename {src => packages/ui/src}/components/Navbar/NavbarLink.tsx (71%) rename {src => packages/ui/src}/components/Navbar/NavbarToggle.tsx (65%) create mode 100644 packages/ui/src/components/Navbar/index.ts create mode 100644 packages/ui/src/components/Navbar/theme.ts rename {src => packages/ui/src}/components/Pagination/Pagination.spec.tsx (72%) rename {src => packages/ui/src}/components/Pagination/Pagination.stories.tsx (66%) rename {src => packages/ui/src}/components/Pagination/Pagination.tsx (79%) rename {src => packages/ui/src}/components/Pagination/PaginationButton.tsx (76%) create mode 100644 packages/ui/src/components/Pagination/helpers.spec.ts rename {src => packages/ui/src}/components/Pagination/helpers.ts (100%) rename {src => packages/ui/src}/components/Pagination/index.ts (67%) create mode 100644 packages/ui/src/components/Pagination/theme.ts rename {src => packages/ui/src}/components/Popover/Popover.spec.tsx (68%) rename {src => packages/ui/src}/components/Popover/Popover.stories.tsx (82%) rename {src => packages/ui/src}/components/Popover/Popover.tsx (68%) create mode 100644 packages/ui/src/components/Popover/index.ts create mode 100644 packages/ui/src/components/Popover/theme.ts create mode 100644 packages/ui/src/components/Progress/Progress.spec.tsx rename {src => packages/ui/src}/components/Progress/Progress.stories.tsx (83%) rename {src => packages/ui/src}/components/Progress/Progress.tsx (59%) create mode 100644 packages/ui/src/components/Progress/index.ts create mode 100644 packages/ui/src/components/Progress/theme.ts create mode 100644 packages/ui/src/components/Radio/Radio.spec.tsx create mode 100644 packages/ui/src/components/Radio/Radio.stories.tsx rename {src => packages/ui/src}/components/Radio/Radio.tsx (55%) rename {src => packages/ui/src}/components/Radio/index.ts (53%) create mode 100644 packages/ui/src/components/Radio/theme.ts rename {src => packages/ui/src}/components/RangeSlider/RangeSlider.spec.tsx (51%) rename {src => packages/ui/src}/components/RangeSlider/RangeSlider.stories.tsx (59%) rename {src => packages/ui/src}/components/RangeSlider/RangeSlider.tsx (65%) rename {src => packages/ui/src}/components/RangeSlider/index.ts (64%) create mode 100644 packages/ui/src/components/RangeSlider/theme.ts rename {src => packages/ui/src}/components/Rating/Rating.spec.tsx (51%) rename {src => packages/ui/src}/components/Rating/Rating.stories.tsx (83%) rename {src => packages/ui/src}/components/Rating/Rating.tsx (51%) rename {src => packages/ui/src}/components/Rating/RatingAdvanced.tsx (74%) rename {src => packages/ui/src}/components/Rating/RatingContext.tsx (55%) create mode 100644 packages/ui/src/components/Rating/RatingStar.tsx create mode 100644 packages/ui/src/components/Rating/index.ts create mode 100644 packages/ui/src/components/Rating/theme.ts create mode 100644 packages/ui/src/components/Select/Select.spec.tsx rename {src => packages/ui/src}/components/Select/Select.stories.tsx (68%) rename {src => packages/ui/src}/components/Select/Select.tsx (64%) rename {src => packages/ui/src}/components/Select/index.ts (50%) create mode 100644 packages/ui/src/components/Select/theme.ts rename {src => packages/ui/src}/components/Sidebar/Sidebar.spec.tsx (54%) rename {src => packages/ui/src}/components/Sidebar/Sidebar.stories.tsx (91%) rename {src => packages/ui/src}/components/Sidebar/Sidebar.tsx (56%) rename {src => packages/ui/src}/components/Sidebar/SidebarCTA.tsx (57%) rename {src => packages/ui/src}/components/Sidebar/SidebarCollapse.tsx (74%) rename {src => packages/ui/src}/components/Sidebar/SidebarContext.tsx (60%) rename {src => packages/ui/src}/components/Sidebar/SidebarItem.tsx (80%) rename {src => packages/ui/src}/components/Sidebar/SidebarItemContext.tsx (65%) rename {src => packages/ui/src}/components/Sidebar/SidebarItemGroup.tsx (58%) rename {src => packages/ui/src}/components/Sidebar/SidebarItems.tsx (57%) rename {src => packages/ui/src}/components/Sidebar/SidebarLogo.tsx (57%) create mode 100644 packages/ui/src/components/Sidebar/index.ts create mode 100644 packages/ui/src/components/Sidebar/theme.ts rename {src => packages/ui/src}/components/Spinner/Spinner.spec.tsx (51%) rename {src => packages/ui/src}/components/Spinner/Spinner.stories.tsx (89%) rename {src => packages/ui/src}/components/Spinner/Spinner.tsx (72%) create mode 100644 packages/ui/src/components/Spinner/index.ts create mode 100644 packages/ui/src/components/Spinner/theme.ts rename {src => packages/ui/src}/components/Table/Table.spec.tsx (80%) rename {src => packages/ui/src}/components/Table/Table.stories.tsx (94%) rename {src => packages/ui/src}/components/Table/Table.tsx (61%) rename {src => packages/ui/src}/components/Table/TableBody.tsx (56%) rename {src => packages/ui/src}/components/Table/TableBodyContext.tsx (58%) rename {src => packages/ui/src}/components/Table/TableCell.tsx (56%) rename {src => packages/ui/src}/components/Table/TableContext.tsx (61%) rename {src => packages/ui/src}/components/Table/TableHead.tsx (56%) rename {src => packages/ui/src}/components/Table/TableHeadCell.tsx (63%) rename {src => packages/ui/src}/components/Table/TableHeadContext.tsx (58%) rename {src => packages/ui/src}/components/Table/TableRow.tsx (64%) create mode 100644 packages/ui/src/components/Table/index.ts create mode 100644 packages/ui/src/components/Table/theme.ts create mode 100644 packages/ui/src/components/Tabs/TabItem.tsx rename {src => packages/ui/src}/components/Tabs/Tabs.spec.tsx (65%) rename {src => packages/ui/src}/components/Tabs/Tabs.stories.tsx (79%) rename {src => packages/ui/src}/components/Tabs/Tabs.tsx (85%) create mode 100644 packages/ui/src/components/Tabs/index.ts create mode 100644 packages/ui/src/components/Tabs/theme.ts create mode 100644 packages/ui/src/components/TextInput/TextInput.spec.tsx create mode 100644 packages/ui/src/components/TextInput/TextInput.stories.tsx rename {src => packages/ui/src}/components/TextInput/TextInput.tsx (69%) rename {src => packages/ui/src}/components/TextInput/index.ts (63%) create mode 100644 packages/ui/src/components/TextInput/theme.ts create mode 100644 packages/ui/src/components/Textarea/Textarea.spec.tsx create mode 100644 packages/ui/src/components/Textarea/Textarea.stories.tsx create mode 100644 packages/ui/src/components/Textarea/Textarea.tsx rename {src => packages/ui/src}/components/Textarea/index.ts (50%) create mode 100644 packages/ui/src/components/Textarea/theme.ts create mode 100644 packages/ui/src/components/ThemeModeScript/ThemeModeScript.spec.tsx create mode 100644 packages/ui/src/components/ThemeModeScript/ThemeModeScript.tsx create mode 100644 packages/ui/src/components/ThemeModeScript/index.ts rename {src => packages/ui/src}/components/Timeline/Timeline.spec.tsx (63%) rename {src => packages/ui/src}/components/Timeline/Timeline.stories.tsx (90%) rename {src => packages/ui/src}/components/Timeline/Timeline.tsx (50%) rename {src => packages/ui/src}/components/Timeline/TimelineBody.tsx (58%) rename {src => packages/ui/src}/components/Timeline/TimelineContent.tsx (55%) rename {src => packages/ui/src}/components/Timeline/TimelineContentContext.tsx (59%) rename {src => packages/ui/src}/components/Timeline/TimelineContext.tsx (60%) rename {src => packages/ui/src}/components/Timeline/TimelineItem.tsx (60%) rename {src => packages/ui/src}/components/Timeline/TimelineItemContext.tsx (58%) rename {src => packages/ui/src}/components/Timeline/TimelinePoint.tsx (74%) rename {src => packages/ui/src}/components/Timeline/TimelineTime.tsx (58%) rename {src => packages/ui/src}/components/Timeline/TimelineTitle.tsx (55%) create mode 100644 packages/ui/src/components/Timeline/index.ts create mode 100644 packages/ui/src/components/Timeline/theme.ts rename {src => packages/ui/src}/components/Toast/Toast.spec.tsx (58%) create mode 100644 packages/ui/src/components/Toast/Toast.stories.tsx rename {src => packages/ui/src}/components/Toast/Toast.tsx (58%) rename {src => packages/ui/src}/components/Toast/ToastContext.tsx (71%) rename {src => packages/ui/src}/components/Toast/ToastToggle.tsx (70%) create mode 100644 packages/ui/src/components/Toast/index.ts create mode 100644 packages/ui/src/components/Toast/theme.ts rename {src => packages/ui/src}/components/ToggleSwitch/ToggleSwitch.spec.tsx (64%) rename {src => packages/ui/src}/components/ToggleSwitch/ToggleSwitch.stories.tsx (56%) rename {src => packages/ui/src}/components/ToggleSwitch/ToggleSwitch.tsx (76%) rename {src => packages/ui/src}/components/ToggleSwitch/index.ts (64%) create mode 100644 packages/ui/src/components/ToggleSwitch/theme.ts rename {src => packages/ui/src}/components/Tooltip/Tooltip.spec.tsx (57%) rename {src => packages/ui/src}/components/Tooltip/Tooltip.stories.tsx (50%) rename {src => packages/ui/src}/components/Tooltip/Tooltip.tsx (53%) create mode 100644 packages/ui/src/components/Tooltip/index.ts create mode 100644 packages/ui/src/components/Tooltip/theme.ts rename {src => packages/ui/src}/helpers/clone-deep.spec.ts (57%) rename {src => packages/ui/src}/helpers/clone-deep.ts (85%) create mode 100644 packages/ui/src/helpers/create-theme.ts rename {src => packages/ui/src}/helpers/drag-scroll/index.tsx (87%) rename {src => packages/ui/src}/helpers/generic-as-prop.ts (91%) rename {src => packages/ui/src}/helpers/is-client.ts (55%) create mode 100644 packages/ui/src/helpers/is-object.spec.ts rename {src => packages/ui/src}/helpers/is-object.ts (74%) create mode 100644 packages/ui/src/helpers/merge-deep.spec.ts rename {src => packages/ui/src}/helpers/merge-deep.ts (92%) create mode 100644 packages/ui/src/helpers/omit.spec.ts rename {src => packages/ui/src}/helpers/omit.ts (100%) rename {src => packages/ui/src}/hooks/use-floating.ts (68%) rename {src => packages/ui/src}/hooks/use-is-mounted.ts (71%) rename {src => packages/ui/src}/hooks/use-theme-mode.ts (73%) rename {src => packages/ui/src}/hooks/use-watch-localstorage-value.ts (65%) create mode 100644 packages/ui/src/index.ts rename {src => packages/ui/src}/theme-store/index.tsx (62%) rename {src => packages/ui/src}/theme-store/init/client.tsx (55%) rename {src => packages/ui/src}/theme-store/init/index.tsx (51%) rename {src => packages/ui/src}/theme-store/init/mode.tsx (56%) rename {src => packages/ui/src}/theme-store/init/server.tsx (58%) create mode 100644 packages/ui/src/theme.ts rename {src => packages/ui/src}/types/index.ts (100%) create mode 100644 packages/ui/tailwind.config.js create mode 100644 packages/ui/tsconfig.build.json rename tsconfig.json => packages/ui/tsconfig.json (52%) create mode 100644 packages/ui/turbo.json create mode 100644 packages/ui/vitest-setup.ts create mode 100644 packages/ui/vitest.config.mjs create mode 100644 prettier.config.cjs delete mode 100644 src/components/Accordion/AccordionPanelContext.tsx delete mode 100644 src/components/Accordion/index.ts delete mode 100644 src/components/Accordion/theme.ts delete mode 100644 src/components/Alert/theme.ts delete mode 100644 src/components/Avatar/Avatar.spec.tsx delete mode 100644 src/components/Avatar/AvatarGroup.spec.tsx delete mode 100644 src/components/Avatar/AvatarGroupCounter.spec.tsx delete mode 100644 src/components/Avatar/theme.ts delete mode 100644 src/components/Badge/Badge.spec.tsx delete mode 100644 src/components/Badge/theme.ts delete mode 100644 src/components/Banner/Banner.spec.tsx delete mode 100644 src/components/Banner/index.ts delete mode 100644 src/components/Banner/theme.ts delete mode 100644 src/components/Blockquote/Blockquote.spec.tsx delete mode 100644 src/components/Blockquote/index.ts delete mode 100644 src/components/Blockquote/theme.ts delete mode 100644 src/components/Breadcrumb/Breadcrumb.spec.tsx delete mode 100644 src/components/Breadcrumb/index.ts delete mode 100644 src/components/Breadcrumb/theme.ts delete mode 100644 src/components/Button/Button.stories.tsx delete mode 100644 src/components/Button/ButtonBase.tsx delete mode 100644 src/components/Button/theme.ts delete mode 100644 src/components/Card/Card.stories.tsx delete mode 100644 src/components/Card/index.ts delete mode 100644 src/components/Card/theme.ts delete mode 100644 src/components/Carousel/theme.ts delete mode 100644 src/components/Checkbox/Checkbox.spec.tsx delete mode 100644 src/components/Checkbox/Checkbox.stories.tsx delete mode 100644 src/components/Checkbox/index.ts delete mode 100644 src/components/Checkbox/theme.ts delete mode 100644 src/components/DarkThemeToggle/DarkThemeToggle.spec.tsx delete mode 100644 src/components/DarkThemeToggle/theme.ts delete mode 100644 src/components/Datepicker/index.ts delete mode 100644 src/components/Datepicker/theme.ts delete mode 100644 src/components/Dropdown/index.ts delete mode 100644 src/components/Dropdown/theme.ts delete mode 100644 src/components/FileInput/FileInput.stories.tsx delete mode 100644 src/components/FileInput/theme.ts delete mode 100644 src/components/Floating/index.ts delete mode 100644 src/components/FloatingLabel/FloatingLabel.spec.tsx delete mode 100644 src/components/FloatingLabel/index.ts delete mode 100644 src/components/FloatingLabel/theme.ts delete mode 100644 src/components/Footer/Footer.tsx delete mode 100644 src/components/Footer/index.ts delete mode 100644 src/components/Footer/theme.ts delete mode 100644 src/components/HelperText/index.ts delete mode 100644 src/components/HelperText/theme.ts delete mode 100644 src/components/Kbd/Kbd.spec.tsx delete mode 100644 src/components/Kbd/theme.ts delete mode 100644 src/components/Label/Label.stories.tsx delete mode 100644 src/components/Label/index.ts delete mode 100644 src/components/Label/theme.ts delete mode 100644 src/components/List/index.ts delete mode 100644 src/components/List/theme.ts delete mode 100644 src/components/ListGroup/ListGroup.spec.tsx delete mode 100644 src/components/ListGroup/index.ts delete mode 100644 src/components/ListGroup/theme.ts delete mode 100644 src/components/Modal/index.ts delete mode 100644 src/components/Modal/theme.ts delete mode 100644 src/components/Navbar/index.ts delete mode 100644 src/components/Navbar/theme.ts delete mode 100644 src/components/Pagination/helpers.spec.ts delete mode 100644 src/components/Pagination/theme.ts delete mode 100644 src/components/Popover/index.ts delete mode 100644 src/components/Popover/theme.ts delete mode 100644 src/components/Progress/Progress.spec.tsx delete mode 100644 src/components/Progress/index.ts delete mode 100644 src/components/Progress/theme.ts delete mode 100644 src/components/Radio/Radio.spec.tsx delete mode 100644 src/components/Radio/Radio.stories.tsx delete mode 100644 src/components/Radio/theme.ts delete mode 100644 src/components/RangeSlider/theme.ts delete mode 100644 src/components/Rating/RatingStar.tsx delete mode 100644 src/components/Rating/index.ts delete mode 100644 src/components/Rating/theme.ts delete mode 100644 src/components/Select/Select.spec.tsx delete mode 100644 src/components/Select/theme.ts delete mode 100644 src/components/Sidebar/index.ts delete mode 100644 src/components/Sidebar/theme.ts delete mode 100644 src/components/Spinner/index.ts delete mode 100644 src/components/Spinner/theme.ts delete mode 100644 src/components/Table/index.ts delete mode 100644 src/components/Table/theme.ts delete mode 100644 src/components/Tabs/TabItem.tsx delete mode 100644 src/components/Tabs/index.ts delete mode 100644 src/components/Tabs/theme.ts delete mode 100644 src/components/TextInput/TextInput.spec.tsx delete mode 100644 src/components/TextInput/TextInput.stories.tsx delete mode 100644 src/components/TextInput/theme.ts delete mode 100644 src/components/Textarea/Textarea.spec.tsx delete mode 100644 src/components/Textarea/Textarea.stories.tsx delete mode 100644 src/components/Textarea/Textarea.tsx delete mode 100644 src/components/Textarea/theme.ts delete mode 100644 src/components/ThemeModeScript/ThemeModeScript.spec.tsx delete mode 100644 src/components/ThemeModeScript/ThemeModeScript.tsx delete mode 100644 src/components/ThemeModeScript/index.ts delete mode 100644 src/components/Timeline/index.ts delete mode 100644 src/components/Timeline/theme.ts delete mode 100644 src/components/Toast/Toast.stories.tsx delete mode 100644 src/components/Toast/index.ts delete mode 100644 src/components/Toast/theme.ts delete mode 100644 src/components/ToggleSwitch/theme.ts delete mode 100644 src/components/Tooltip/index.ts delete mode 100644 src/components/Tooltip/theme.ts delete mode 100644 src/helpers/http.ts delete mode 100644 src/helpers/is-object.spec.ts delete mode 100644 src/helpers/merge-deep.spec.ts delete mode 100644 src/helpers/omit.spec.ts delete mode 100644 src/index.ts delete mode 100644 src/setup-tests.ts delete mode 100644 src/theme.ts delete mode 100644 styles/docs.css delete mode 100644 tailwind.config.ts delete mode 100644 tsconfig.lib.json create mode 100644 turbo.json delete mode 100644 vitest.config.ts delete mode 100644 yarn.lock diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 000000000..e5b6d8d6a --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 000000000..a4ba8a296 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json", + "changelog": ["@changesets/changelog-github", { "repo": "themesberg/flowbite-react" }], + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": ["storybook", "web"] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..ae10a5cce --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +# editorconfig.org +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 86% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md index 8a4071b79..edd224e21 100644 --- a/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -11,18 +11,6 @@ And if you like the project, but just don't have time to contribute, that's fine - Refer this project in your project's readme - Mention the project at local meetups and tell your friends/colleagues -## Table of Contents - -- [Code of Conduct](#code-of-conduct) -- [I Have a Question](#i-have-a-question) -- [I Want To Contribute](#i-want-to-contribute) -- [Reporting Bugs](#reporting-bugs) -- [Suggesting Enhancements](#suggesting-enhancements) -- [Your First Code Contribution](#your-first-code-contribution) -- [Improving The Documentation](#improving-the-documentation) -- [Styleguides](#styleguides) -- [Commit Messages](#commit-messages) - ## Code of Conduct This project has adopted the [Contributor Covenant](https://www.contributor-covenant.org/) as its Code of Conduct. Everyone is expected to adhere to these rules, so please read the [full text](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). Thank you. @@ -108,11 +96,11 @@ Don't forget to: #### Prerequisites -- You need to understand how to use a terminal, Git, Node.js, and Yarn -- You should be able to write Markdown and React TypeScript -- You should be familiar with Tailwind CSS, ESLint, and Prettier +- You need to understand how to use a terminal, `Git`, `Node.js`, and `Bun` +- You should be able to write `Markdown` and `React TypeScript` +- You should be familiar with `Tailwind` `CSS`, `ESLint`, and `Prettier` - You should understand what [vitest](https://vitest.dev/) is, and be able to write tests if your contribution changes the behavior of the library in some way -- You should strongly consider using [Visual Studio Code](https://code.visualstudio.com/) as your editor, as it has plugins for Tailwind CSS, ESLint, and Prettier which will automatically fix most style issues for you, and offer suggestions for how to fix the rest +- You should strongly consider using [Visual Studio Code](https://code.visualstudio.com/) as your editor, as it has plugins for `Tailwind CSS`, `ESLint`, and `Prettier` which will automatically fix most style issues for you, and offer suggestions for how to fix the rest #### Creating a Pull Request @@ -131,39 +119,33 @@ git remote add upstream https://github.com/themesberg/flowbite-react.git git checkout -b fix/accordion-alwaysopen ``` -4. Install dependencies with [`yarn`](https://classic.yarnpkg.com/en/docs/install#debian-stable): +4. Install dependencies with [`bun`](https://bun.sh/): ```bash -yarn install +bun install ``` 5. Start a development server on your machine: ```bash -yarn dev +bun run dev ``` -6. Commit changes with `yarn commit` to follow the required [commitizen](https://github.com/commitizen/cz-cli) format: +6. Make sure your changes work and don't break anything else: ```bash -yarn commit +bun run format && bun run lint:fix && bun run test && bun run build ``` -7. Make sure your changes work and don't break anything else: - -```bash -yarn prettier:fix && yarn lint && yarn test && yarn build -``` - -8. Push to your forked repository +7. Push to your forked repository ```bash git push -u origin fix/accordion-alwaysopen ``` -9. Go to [the repository](https://github.com/themesberg/flowbite-react) and [create a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) +8. Go to [the repository](https://github.com/themesberg/flowbite-react) and [create a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) -10. Fill out the Pull Request template, which will be available automatically +9. Fill out the Pull Request template, which will be available automatically #### What Happens Next? @@ -179,14 +161,10 @@ The [documentation at flowbite-react.com](https://flowbite-react.com/docs/gettin ### Files -We use [Prettier](https://prettier.io/) to format all of our code. Please make sure to run `yarn format` before committing any changes. You can also use VS Code as your editor, and install the Prettier and Tailwind CSS IntelliSense plugins to automatically format your code each time you save. +We use [Prettier](https://prettier.io/) to format all of our code. Please make sure to run `bun run format` before committing any changes. You can also use VS Code as your editor, and install the Prettier and Tailwind CSS IntelliSense plugins to automatically format your code each time you save. Please refer to the code written already in the project to see how we format our code, what naming conventions we use, and so on. The more consistent your code is with the rest of the project, the easier it will be to review and merge your Pull Request. -### Commits - -We use [commitizen](https://github.com/commitizen/cz-cli) to format commit messages. Please use `yarn commit` instead of `git commit` when committing changes. - ### Branches & Pull Requests Please follow the same guidelines published by [commitizen](https://github.com/commitizen/cz-cli) when you name a branch that will be used for a Pull Request. The branch name should be prefixed with the most significant change that will be introduced in the Pull Request. diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 1ea10939a..2e357e5f1 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ # These are supported funding model platforms -github: [rluders, tulup-conner] +github: [rluders, tulup-conner, SutuSebastian] diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 000000000..2b8d831d8 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,19 @@ +name: Setup +description: Setup Bun, Node and install packages + +runs: + using: composite + steps: + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: 1.0.31 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install packages + shell: bash + run: bun install diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 052ebe4d1..b2d9e2e24 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,52 +5,68 @@ on: branches: - main -concurrency: ${{ github.ref }} - jobs: + format: + name: 💅 Format + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Run format + run: bun run format:check + + lint: + name: 🕵 Lint + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Run lint + run: bun run lint + + typecheck: + name: ✅ Typecheck + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Run typecheck + run: bun run typecheck + + test: + name: 🔬 Test + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Run unit tests + run: bun run test:coverage + build: + name: 🧰 Build runs-on: ubuntu-latest steps: - - name: 📥 Check out the code - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: 💿 Setup NodeJS 20 - uses: actions/setup-node@v3 - with: - node-version: 20 - - - name: ⏳ Setup Cache - uses: actions/cache@v3 - with: - path: '**/node_modules' - key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-modules- - - - name: 🏭 Install packages - run: yarn install - - - name: 🕵 Lint the code - run: yarn lint - - - name: 💅 Run Prettier - run: yarn prettier - - - name: 🔬 Run unit tests - run: yarn test:coverage - - - name: 📊 Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - fail_ci_if_error: true - files: coverage/coverage-final.json - token: ${{ secrets.CODECOV_TOKEN }} - verbose: true - - - name: 🧰 Build Library - run: yarn build:lib - - - name: 🧰 Build NextJS - run: yarn build + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Run build + run: bun run build diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml deleted file mode 100644 index b0ecd8483..000000000 --- a/.github/workflows/storybook.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Deploy Storybook - -on: - push: - branches: - - main - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - name: 📥 Checkout - uses: actions/checkout@v2.3.1 - - - name: 🚀 Merge main -> storybook - uses: devmasx/merge-branch@1.4.0 - with: - type: now - from_branch: main - target_branch: storybook - github_token: ${{ github.token }} diff --git a/.gitignore b/.gitignore index 386ee0621..69e98146a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,12 @@ -.next -.vercel -build -coverage -cypress/screenshots -cypress/videos -lib +# dependencies node_modules -storybook-static + +# misc .DS_Store -npm-debug.log* +*.pem + +# typescript tsconfig.tsbuildinfo -yarn-debug.log* -yarn-error.log* -dist -.contentlayer \ No newline at end of file + +# turbo +.turbo diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b81b..000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 0e74707b2..000000000 --- a/.npmignore +++ /dev/null @@ -1,22 +0,0 @@ -.github -.vercel -.vscode -build -pages -public -storybook-static -styles -.gitignore -.prettierrc -CNAME -CODE_OF_CONDUCT.md -codecov.yaml -cypress.json -LICENSE -next-env.d.ts -next.config.mjs -node_modules -README.md -tsconfig.json -tsconfig.tsbuildinfo -vite.config.ts \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 2928ece4b..000000000 --- a/.prettierignore +++ /dev/null @@ -1,19 +0,0 @@ -# Changelog is autogenerate, doesn't make sense to prettier it. -CHANGELOG.md - -# Ignore the same files from .gitignore as well -.next -.vercel -build -coverage -cypress/screenshots -cypress/videos -lib -node_modules -storybook-static -.DS_Store -npm-debug.log* -tsconfig.tsbuildinfo -yarn-debug.log* -yarn-error.log* -.contentlayer \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 25b2b2f47..000000000 --- a/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "plugins": ["prettier-plugin-tailwindcss"], - "printWidth": 120, - "singleQuote": true, - "trailingComma": "all" -} diff --git a/.storybook/main.ts b/.storybook/main.ts deleted file mode 100644 index 72d42b0c5..000000000 --- a/.storybook/main.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { StorybookConfig } from '@storybook/nextjs'; -import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin'; - -const config: StorybookConfig = { - stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], - addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-interactions', - { - name: '@storybook/addon-styling', - options: { - postCss: true, - }, - }, - ], - framework: { - name: '@storybook/nextjs', - options: {}, - }, - docs: { - autodocs: 'tag', - }, - webpackFinal: (config) => { - config.resolve!.plugins = [new TsconfigPathsPlugin()]; - return config; - }, -}; - -export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts deleted file mode 100644 index 14646bac3..000000000 --- a/.storybook/preview.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { Preview } from '@storybook/react'; -import './style.css'; - -const preview: Preview = { - parameters: { - actions: { argTypesRegex: '^on[A-Z].*' }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, - }, - }, - }, -}; - -export default preview; diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..7ceb3b627 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,11 @@ +{ + "recommendations": [ + "oven.bun-vscode", + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "yoavbls.pretty-ts-errors", + "bradlc.vscode-tailwindcss", + "unifiedjs.vscode-mdx", + "DavidAnson.vscode-markdownlint" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index f08d92a02..12188d7e0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,27 +1,18 @@ { "editor.codeActionsOnSave": { - "source.fixAll": "explicit" + "source.fixAll.eslint": "explicit" }, "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnPaste": false, "editor.formatOnSave": true, - "editor.tabSize": 2, - "eslint.enable": true, - "eslint.format.enable": true, - "files.exclude": { - ".next/": true, - ".vercel/": true, - "build/": true, - "coverage/": true, - "lib/": true, - "node_modules": true, - "storybook-static/": true, - "tsconfig.tsbuildinfo": true, - "yarn-error.log": true, - "yarn.lock": true + "eslint.workingDirectories": ["apps/web", "packages/ui"], + "tailwindCSS.classAttributes": ["class", "className", "theme"], + "tailwindCSS.experimental.classRegex": [ + ["twMerge\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], + ["createTheme\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] + ], + "tailwindCSS.experimental.configFile": { + "apps/web/tailwind.config.js": "apps/web/**", + "packages/ui/tailwind.config.js": "packages/ui/**" }, - "javascript.updateImportsOnFileMove.enabled": "always", - "typescript.enablePromptUseWorkspaceTsdk": true, - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.updateImportsOnFileMove.enabled": "always" + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/README.md b/README.md deleted file mode 100644 index 8e59b0cf6..000000000 --- a/README.md +++ /dev/null @@ -1,407 +0,0 @@ -
-

:construction: flowbite-react (unreleased) :construction:

-

- - Flowbite - Tailwind CSS components - -

-

- Build websites even faster with components on top of React and Tailwind CSS -

-

- - - - - Discord - - - Total Downloads - - - Latest release - - - License - -

-
- ---- - -
-

-

- https://flowbite-react.com -

-
- ---- - -### `flowbite-react` is an open source collection of UI components, built in React, with utility classes from Tailwind CSS that you can use as a starting point for user interfaces and websites. - -## Table of Contents - -- [Table of Contents](#table-of-contents) -- [Documentation](#documentation) -- [Getting started](#getting-started) - - [Setup Tailwind CSS](#setup-tailwind-css) - - [Install Flowbite React](#install-flowbite-react) - - [Try it out](#try-it-out) - - [Next steps](#next-steps) - - [Next.js](#nextjs) - - [Dark mode](#dark-mode) - - [Customization](#customization) - - [Contributing](#contributing) -- [Components](#components) -- [Community](#community) -- [Contributing](#contributing-1) -- [Figma](#figma) -- [Copyright and license](#copyright-and-license) - -## Documentation - -Documentation for `flowbite-react` is not yet finished. - -If you want to browse the components, visit [flowbite-react.com](https://flowbite-react.com/). - -If you want to learn more about Flowbite, visit [Flowbite docs](https://flowbite.com/docs/getting-started/introduction/). - -## Getting started - -Learn how to get started with Flowbite React and start leveraging the interactive React components coupled with Flowbite and Tailwind CSS. - -You'll need to be familiar with Node.js and `npm`, and have `npm` installed. You should be comfortable installing packages with `npm`, and experience creating web apps with React and Tailwind CSS will be very helpful. - -### Setup Tailwind CSS - -Install Tailwind CSS: - -```bash -npm i autoprefixer postcss tailwindcss -npx tailwindcss init -p -``` - -Point Tailwind CSS to files you have `className=".."` in: - -```javascript -module.exports = { - content: ['./src/**/*.{js,jsx,ts,tsx}' /* src folder, for example */], - theme: { - extend: {}, - }, - plugins: [], -}; -``` - -Add Tailwind CSS to a CSS file: - -```css -@tailwind base; -@tailwind components; -@tailwind utilities; -``` - -### Install Flowbite React - -1. Run the following command to install `flowbite-react`: - -```bash -npm i flowbite-react -``` - -2. Add the Flowbite plugin to `tailwind.config.js`, and include content from `flowbite-react`: - -```js -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - // ... - 'node_modules/flowbite-react/lib/esm/**/*.js', - ], - plugins: [ - // ... - require('flowbite/plugin'), - ], -}; -``` - -### Try it out - -How you use Flowbite React depends on your project setup. In general, you can just import the components you want to use from `flowbite-react` and use them in a React `.jsx` file: - -```tsx -import { Button } from 'flowbite-react'; - -export default function MyPage() { - return ( -
- -
- ); -} -``` - -### Next steps - -#### Next.js - -If you're using Next.js, you can follow the [Next.js install guide](https://flowbite.com/docs/guides/next-js/), which includes a [Next.js starter project](https://github.com/tulupinc/flowbite-next-starter) with Flowbite React already set up. - -#### Dark mode - -If you want to add a dark mode switcher to your app, you can follow the [dark mode guide](https://flowbite.com/docs/customize/dark-mode/). - -#### Customization - -If you want to customize Flowbite React component, you can follow the [theme guide](https://flowbite.com/docs/customize/theming/). - -#### Contributing - -If you want to contribute to Flowbite React, you can follow the [contributing guide](https://github.com/themesberg/flowbite-react/blob/main/CONTRIBUTING.md). - -## Components - -**Please note that some components in the vanilla Flowbite library are not yet available in Flowbite React.** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AccordionAlertAvatar
- - React Accordion - - - - React Alert - - - - React Avatar - -
BannerBadgeBreadcrumb
- - React Banner - - - - React Badge - - - - React Breadcrumb - -
ButtonButton groupCard
- - React Button - - - - React Button group - - - - React Card - -
CarouselDatepickerDropdown
- - React Carousel - - - - React Datepicker - - - - React Dropdown - -
FooterFormsList group
- - React Footer - - - - React Forms - - - - React List group - -
ModalNavbarPagination
- - React Modal - - - - React Navbar - - - - React Pagination - -
Progress barRatingSidebar
- - React Progress bar - - - - React Rating - - - - React Sidebar - -
SpinnerTableTabs
- - React Spinner - - - - React Table - - - - React Tabs - -
TooltipTimelineToast
- - React Tooltip - - - - React Timeline - - - - React Toast - -
Sticky Banner
- - React Banner - -
- -## Community - -If you need help or just want to discuss about the library join the community on Github: - -⌨️ [Discuss about Flowbite on GitHub](https://github.com/themesberg/flowbite/discussions) - -For casual chatting with others using the library: - -💬 [Join the Flowbite Discord Server](https://discord.gg/4eeurUVvTy) - -## Contributing - -Thank you for your interest in helping! Visit our [guide on contributing](https://github.com/themesberg/flowbite-react/blob/main/CONTRIBUTING.md) to get started. - -## Figma - -If you need the Figma files for the components you can check out our website for more information: - -🎨 [Get access to the Figma design files](https://flowbite.com/figma/) - -## Copyright and license - -The Flowbite name and logos are trademarks of Bergside Srl. - -📝 [Read about the licensing terms](https://flowbite.com/docs/getting-started/license/) -📀 [Brand guideline and trademark usage agreement](https://flowbite.com/brand/) diff --git a/README.md b/README.md new file mode 120000 index 000000000..2624f461c --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +packages/ui/README.md \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx deleted file mode 100644 index fccffdca4..000000000 --- a/app/layout.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { Inter as InterFont } from 'next/font/google'; -import type { Metadata, NextPage, Viewport } from 'next/types'; -import type { FC, PropsWithChildren } from 'react'; -import { ThemeModeScript } from '~/src'; - -import '~/styles/globals.css'; - -const interFont = InterFont({ - subsets: ['latin'], - variable: '--font-inter', -}); - -export const metadata: Metadata = { - description: - 'Flowbite React is an open-source UI component library built with React components, Tailwind CSS utility classes and based on the Flowbite design system and components.', - icons: { - icon: [ - { url: '/favicon-32x32.png', type: 'image/png', sizes: '32x32' }, - { url: '/favicon-16x16.png', type: 'image/png', sizes: '16x16' }, - ], - shortcut: '/favicon.ico', - apple: [{ url: '/apple-touch-icon.png', sizes: '180x180' }], - }, - manifest: '/site.webmanifest', - other: { - charSet: 'utf-8', - lang: 'en', - }, - title: 'Flowbite React - UI Component Library', - openGraph: { - description: - 'Flowbite React is an open-source UI component library built with React components, Tailwind CSS utility classes and based on the Flowbite design system and components.', - images: 'https://flowbite.s3.amazonaws.com/github/flowbite-react.png', - title: 'Flowbite React - UI Component Library', - }, - twitter: { - card: 'summary_large_image', - title: 'Flowbite React - UI component library', - description: - 'Flowbite React is an open-source UI component library built with React components, Tailwind CSS utility classes and based on the Flowbite design system and components.', - creator: '@zoltanszogyenyi', - images: ['https://flowbite.s3.amazonaws.com/github/flowbite-react.png'], - }, -}; - -export const viewport: Viewport = { - width: 'device-width', - initialScale: 1, - maximumScale: 1, - themeColor: [ - { media: '(prefers-color-scheme: light)', color: '#ffffff' }, - { media: '(prefers-color-scheme: dark)', color: '#1f2937' }, - ], -}; - -const RootLayout: NextPage = ({ children }) => { - return ( - - - - - - {children} - - - - ); -}; - -const FathomScript: FC = () => { - return