From c1e2b5276f8b20a0e847681f37a3b5c8620a278f Mon Sep 17 00:00:00 2001 From: Alexandre LE CORRE Date: Fri, 18 Sep 2026 20:58:14 +0300 Subject: [PATCH 1/4] feat: evolve repository into CodeRocket UI public core --- .github/workflows/check.yml | 26 + .gitignore | 43 +- .nvmrc | 2 +- ANNOUNCEMENT.md | 25 + CONTRIBUTING.md | 11 + LICENSE | 2 +- README.md | 112 +- THIRD_PARTY_NOTICES.md | 9 + docs/.vitepress/theme/index.js | 4 - docs/DEVELOPMENT.md | 75 + docs/REPOSITORY-TRANSITION.md | 13 + docs/ROADMAP.md | 19 + .../vue-tailwind-datepicker/.eslintignore | 0 .../vue-tailwind-datepicker/.eslintrc.cjs | 0 .../.github}/CODE_OF_CONDUCT.md | 0 .../.github}/FUNDING.yml | 0 .../.github}/ISSUE_TEMPLATE/bug_report.md | 0 .../ISSUE_TEMPLATE/feature_request.md | 0 .../.github}/RELEASE_GUIDE.md | 0 .../.github}/workflows/ci.yml | 0 .../.github}/workflows/commitlint.yml | 0 .../.github}/workflows/docs.yml | 0 .../.github}/workflows/release.yml | 0 legacy/vue-tailwind-datepicker/.gitignore | 32 + .../.husky}/commit-msg | 0 .../.husky}/prepare-commit-msg | 0 legacy/vue-tailwind-datepicker/.nvmrc | 1 + .../vue-tailwind-datepicker/CHANGELOG.md | 0 legacy/vue-tailwind-datepicker/LICENSE | 21 + legacy/vue-tailwind-datepicker/README.md | 79 + legacy/vue-tailwind-datepicker/STATUS.md | 9 + .../commitlint.config.js | 0 .../docs}/.postcssrc.cjs | 0 .../docs}/.vitepress/config.ts | 0 .../docs/.vitepress/theme/index.js | 32 + .../docs}/.vitepress/theme/tailwind.postcss | 0 .../theme/tailwind.postcss:Zone.Identifier | 0 .../docs}/DemoLayout.vue | 0 .../docs}/advanced-features.md | 0 .../vue-tailwind-datepicker/docs}/dark.png | Bin .../vue-tailwind-datepicker/docs}/demo.md | 2 +- .../vue-tailwind-datepicker/docs}/events.md | 0 .../vue-tailwind-datepicker/docs}/index.md | 6 +- .../docs}/installation.md | 9 +- .../vue-tailwind-datepicker/docs}/light.png | Bin .../vue-tailwind-datepicker/docs}/logo.png | Bin .../docs}/package-lock.json | 0 .../docs}/package.json | 0 .../vue-tailwind-datepicker/docs}/props.md | 0 .../docs/public/logo.png | Bin 0 -> 11710 bytes .../docs}/theming-options.md | 0 .../vue-tailwind-datepicker/index.html | 0 legacy/vue-tailwind-datepicker/netlify.toml | 7 + .../vue-tailwind-datepicker/package-lock.json | 0 legacy/vue-tailwind-datepicker/package.json | 239 ++ .../postcss.config.cjs | 0 .../scripts}/check-package.mjs | 0 .../vue-tailwind-datepicker/src}/App.vue | 0 .../src}/VueTailwindDatePicker.vue | 0 .../src}/assets/base.css | 0 .../src}/assets/logo.svg | 0 .../src}/assets/main.css | 0 .../src}/components/Calendar.vue | 0 .../src}/components/Header.vue | 0 .../src}/components/Month.vue | 0 .../src}/components/Shortcut.vue | 0 .../src}/components/Week.vue | 0 .../src}/components/Year.vue | 0 .../src}/composables/date.ts | 0 .../src}/composables/dom.ts | 0 .../vue-tailwind-datepicker/src}/entry.esm.ts | 0 .../vue-tailwind-datepicker/src}/entry.ts | 0 .../vue-tailwind-datepicker/src}/index.css | 0 .../vue-tailwind-datepicker/src}/keys.ts | 0 .../vue-tailwind-datepicker/src}/main.ts | 0 .../vue-tailwind-datepicker/src}/types.ts | 0 .../vue-tailwind-datepicker/src}/utils.ts | 0 .../src}/vue-shim.d.ts | 0 legacy/vue-tailwind-datepicker/tsconfig.json | 30 + .../vue-tailwind-datepicker/vite.config.ts | 0 netlify.toml | 3 + package.json | 269 +-- packages/blocks/LICENSE | 21 + packages/blocks/README.md | 12 + packages/blocks/package.json | 45 + packages/blocks/src/application.tsx | 382 +++ packages/blocks/src/auth.tsx | 183 ++ packages/blocks/src/common.tsx | 76 + packages/blocks/src/data.tsx | 221 ++ packages/blocks/src/index.ts | 5 + packages/blocks/src/marketing.tsx | 224 ++ packages/blocks/src/showcase.tsx | 44 + packages/blocks/src/styles.css | 280 +++ packages/blocks/tsconfig.json | 4 + packages/cli/LICENSE | 21 + packages/cli/README.md | 50 + packages/cli/package.json | 34 + packages/cli/src/files.test.ts | 86 + packages/cli/src/files.ts | 158 ++ packages/cli/src/index.ts | 282 +++ packages/cli/tsconfig.json | 5 + packages/engine/LICENSE | 21 + packages/engine/README.md | 17 + packages/engine/package.json | 36 + packages/engine/src/engine.test.ts | 85 + packages/engine/src/import.test.ts | 25 + packages/engine/src/import.ts | 96 + packages/engine/src/index.ts | 453 ++++ packages/engine/tsconfig.json | 4 + packages/mcp/LICENSE | 21 + packages/mcp/README.md | 48 + packages/mcp/package.json | 36 + packages/mcp/src/index.ts | 134 ++ packages/mcp/tsconfig.json | 5 + packages/react/LICENSE | 21 + packages/react/README.md | 24 + packages/react/package.json | 52 + packages/react/src/calendar.test.ts | 20 + packages/react/src/components/accordion.tsx | 30 + .../react/src/components/alert-dialog.tsx | 45 + packages/react/src/components/alert.tsx | 27 + packages/react/src/components/avatar.tsx | 24 + packages/react/src/components/badge.tsx | 19 + packages/react/src/components/breadcrumb.tsx | 29 + packages/react/src/components/button.tsx | 37 + packages/react/src/components/calendar.tsx | 227 ++ packages/react/src/components/card.tsx | 28 + packages/react/src/components/checkbox.tsx | 18 + packages/react/src/components/collapsible.tsx | 22 + packages/react/src/components/combobox.tsx | 47 + packages/react/src/components/command.tsx | 74 + .../react/src/components/context-menu.tsx | 38 + packages/react/src/components/data-table.tsx | 119 + packages/react/src/components/date-picker.tsx | 61 + packages/react/src/components/dialog.tsx | 49 + packages/react/src/components/drawer.tsx | 45 + packages/react/src/components/dropdown.tsx | 44 + packages/react/src/components/empty-state.tsx | 26 + packages/react/src/components/field.tsx | 35 + packages/react/src/components/file-upload.tsx | 177 ++ packages/react/src/components/hover-card.tsx | 27 + packages/react/src/components/input-group.tsx | 16 + packages/react/src/components/input.tsx | 10 + packages/react/src/components/kbd.tsx | 6 + packages/react/src/components/label.tsx | 15 + .../react/src/components/navigation-menu.tsx | 47 + .../react/src/components/number-field.tsx | 41 + packages/react/src/components/pagination.tsx | 50 + packages/react/src/components/popover.tsx | 37 + packages/react/src/components/progress.tsx | 28 + packages/react/src/components/radio-group.tsx | 29 + packages/react/src/components/select.tsx | 49 + packages/react/src/components/separator.tsx | 10 + packages/react/src/components/sheet.tsx | 45 + packages/react/src/components/sidebar.tsx | 51 + packages/react/src/components/skeleton.tsx | 15 + packages/react/src/components/slider.tsx | 24 + packages/react/src/components/spinner.tsx | 9 + packages/react/src/components/switch.tsx | 16 + packages/react/src/components/table.tsx | 37 + packages/react/src/components/tabs.tsx | 52 + packages/react/src/components/textarea.tsx | 16 + packages/react/src/components/toast.tsx | 70 + .../react/src/components/toggle-group.tsx | 22 + packages/react/src/components/toggle.tsx | 10 + packages/react/src/components/tooltip.tsx | 30 + packages/react/src/components/utils.tsx | 33 + packages/react/src/composition.tsx | 259 ++ packages/react/src/index.ts | 49 + packages/react/src/showcase.tsx | 53 + packages/react/src/styles.css | 1145 +++++++++ packages/react/tsconfig.json | 4 + packages/shared/LICENSE | 21 + packages/shared/README.md | 5 + packages/shared/package.json | 34 + packages/shared/src/index.ts | 1 + packages/shared/src/registry-client.ts | 100 + packages/shared/tsconfig.json | 4 + packages/specs/LICENSE | 21 + packages/specs/README.md | 9 + packages/specs/package.json | 37 + packages/specs/src/blocks.json | 262 ++ packages/specs/src/catalogue.json | 452 ++++ packages/specs/src/composition.test.ts | 82 + packages/specs/src/composition.ts | 229 ++ packages/specs/src/index.ts | 97 + packages/specs/tsconfig.json | 4 + pnpm-lock.yaml | 2115 +++++++++++++++++ pnpm-workspace.yaml | 6 + tooling/build.mjs | 76 + tsconfig.build.json | 11 + tsconfig.json | 45 +- vitest.config.ts | 8 + 193 files changed, 11099 insertions(+), 357 deletions(-) create mode 100644 .github/workflows/check.yml create mode 100644 ANNOUNCEMENT.md create mode 100644 CONTRIBUTING.md create mode 100644 THIRD_PARTY_NOTICES.md delete mode 100644 docs/.vitepress/theme/index.js create mode 100644 docs/DEVELOPMENT.md create mode 100644 docs/REPOSITORY-TRANSITION.md create mode 100644 docs/ROADMAP.md rename .eslintignore => legacy/vue-tailwind-datepicker/.eslintignore (100%) rename .eslintrc.cjs => legacy/vue-tailwind-datepicker/.eslintrc.cjs (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/CODE_OF_CONDUCT.md (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/FUNDING.yml (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/ISSUE_TEMPLATE/bug_report.md (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/ISSUE_TEMPLATE/feature_request.md (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/RELEASE_GUIDE.md (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/workflows/ci.yml (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/workflows/commitlint.yml (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/workflows/docs.yml (100%) rename {.github => legacy/vue-tailwind-datepicker/.github}/workflows/release.yml (100%) create mode 100644 legacy/vue-tailwind-datepicker/.gitignore rename {.husky => legacy/vue-tailwind-datepicker/.husky}/commit-msg (100%) rename {.husky => legacy/vue-tailwind-datepicker/.husky}/prepare-commit-msg (100%) create mode 100644 legacy/vue-tailwind-datepicker/.nvmrc rename CHANGELOG.md => legacy/vue-tailwind-datepicker/CHANGELOG.md (100%) create mode 100644 legacy/vue-tailwind-datepicker/LICENSE create mode 100644 legacy/vue-tailwind-datepicker/README.md create mode 100644 legacy/vue-tailwind-datepicker/STATUS.md rename commitlint.config.js => legacy/vue-tailwind-datepicker/commitlint.config.js (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/.postcssrc.cjs (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/.vitepress/config.ts (100%) create mode 100644 legacy/vue-tailwind-datepicker/docs/.vitepress/theme/index.js rename {docs => legacy/vue-tailwind-datepicker/docs}/.vitepress/theme/tailwind.postcss (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/.vitepress/theme/tailwind.postcss:Zone.Identifier (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/DemoLayout.vue (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/advanced-features.md (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/dark.png (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/demo.md (86%) rename {docs => legacy/vue-tailwind-datepicker/docs}/events.md (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/index.md (71%) rename {docs => legacy/vue-tailwind-datepicker/docs}/installation.md (85%) rename {docs => legacy/vue-tailwind-datepicker/docs}/light.png (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/logo.png (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/package-lock.json (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/package.json (100%) rename {docs => legacy/vue-tailwind-datepicker/docs}/props.md (100%) create mode 100644 legacy/vue-tailwind-datepicker/docs/public/logo.png rename {docs => legacy/vue-tailwind-datepicker/docs}/theming-options.md (100%) rename index.html => legacy/vue-tailwind-datepicker/index.html (100%) create mode 100644 legacy/vue-tailwind-datepicker/netlify.toml rename package-lock.json => legacy/vue-tailwind-datepicker/package-lock.json (100%) create mode 100644 legacy/vue-tailwind-datepicker/package.json rename postcss.config.cjs => legacy/vue-tailwind-datepicker/postcss.config.cjs (100%) rename {scripts => legacy/vue-tailwind-datepicker/scripts}/check-package.mjs (100%) rename {src => legacy/vue-tailwind-datepicker/src}/App.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/VueTailwindDatePicker.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/assets/base.css (100%) rename {src => legacy/vue-tailwind-datepicker/src}/assets/logo.svg (100%) rename {src => legacy/vue-tailwind-datepicker/src}/assets/main.css (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Calendar.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Header.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Month.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Shortcut.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Week.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/components/Year.vue (100%) rename {src => legacy/vue-tailwind-datepicker/src}/composables/date.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/composables/dom.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/entry.esm.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/entry.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/index.css (100%) rename {src => legacy/vue-tailwind-datepicker/src}/keys.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/main.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/types.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/utils.ts (100%) rename {src => legacy/vue-tailwind-datepicker/src}/vue-shim.d.ts (100%) create mode 100644 legacy/vue-tailwind-datepicker/tsconfig.json rename vite.config.ts => legacy/vue-tailwind-datepicker/vite.config.ts (100%) create mode 100644 packages/blocks/LICENSE create mode 100644 packages/blocks/README.md create mode 100644 packages/blocks/package.json create mode 100644 packages/blocks/src/application.tsx create mode 100644 packages/blocks/src/auth.tsx create mode 100644 packages/blocks/src/common.tsx create mode 100644 packages/blocks/src/data.tsx create mode 100644 packages/blocks/src/index.ts create mode 100644 packages/blocks/src/marketing.tsx create mode 100644 packages/blocks/src/showcase.tsx create mode 100644 packages/blocks/src/styles.css create mode 100644 packages/blocks/tsconfig.json create mode 100644 packages/cli/LICENSE create mode 100644 packages/cli/README.md create mode 100644 packages/cli/package.json create mode 100644 packages/cli/src/files.test.ts create mode 100644 packages/cli/src/files.ts create mode 100644 packages/cli/src/index.ts create mode 100644 packages/cli/tsconfig.json create mode 100644 packages/engine/LICENSE create mode 100644 packages/engine/README.md create mode 100644 packages/engine/package.json create mode 100644 packages/engine/src/engine.test.ts create mode 100644 packages/engine/src/import.test.ts create mode 100644 packages/engine/src/import.ts create mode 100644 packages/engine/src/index.ts create mode 100644 packages/engine/tsconfig.json create mode 100644 packages/mcp/LICENSE create mode 100644 packages/mcp/README.md create mode 100644 packages/mcp/package.json create mode 100644 packages/mcp/src/index.ts create mode 100644 packages/mcp/tsconfig.json create mode 100644 packages/react/LICENSE create mode 100644 packages/react/README.md create mode 100644 packages/react/package.json create mode 100644 packages/react/src/calendar.test.ts create mode 100644 packages/react/src/components/accordion.tsx create mode 100644 packages/react/src/components/alert-dialog.tsx create mode 100644 packages/react/src/components/alert.tsx create mode 100644 packages/react/src/components/avatar.tsx create mode 100644 packages/react/src/components/badge.tsx create mode 100644 packages/react/src/components/breadcrumb.tsx create mode 100644 packages/react/src/components/button.tsx create mode 100644 packages/react/src/components/calendar.tsx create mode 100644 packages/react/src/components/card.tsx create mode 100644 packages/react/src/components/checkbox.tsx create mode 100644 packages/react/src/components/collapsible.tsx create mode 100644 packages/react/src/components/combobox.tsx create mode 100644 packages/react/src/components/command.tsx create mode 100644 packages/react/src/components/context-menu.tsx create mode 100644 packages/react/src/components/data-table.tsx create mode 100644 packages/react/src/components/date-picker.tsx create mode 100644 packages/react/src/components/dialog.tsx create mode 100644 packages/react/src/components/drawer.tsx create mode 100644 packages/react/src/components/dropdown.tsx create mode 100644 packages/react/src/components/empty-state.tsx create mode 100644 packages/react/src/components/field.tsx create mode 100644 packages/react/src/components/file-upload.tsx create mode 100644 packages/react/src/components/hover-card.tsx create mode 100644 packages/react/src/components/input-group.tsx create mode 100644 packages/react/src/components/input.tsx create mode 100644 packages/react/src/components/kbd.tsx create mode 100644 packages/react/src/components/label.tsx create mode 100644 packages/react/src/components/navigation-menu.tsx create mode 100644 packages/react/src/components/number-field.tsx create mode 100644 packages/react/src/components/pagination.tsx create mode 100644 packages/react/src/components/popover.tsx create mode 100644 packages/react/src/components/progress.tsx create mode 100644 packages/react/src/components/radio-group.tsx create mode 100644 packages/react/src/components/select.tsx create mode 100644 packages/react/src/components/separator.tsx create mode 100644 packages/react/src/components/sheet.tsx create mode 100644 packages/react/src/components/sidebar.tsx create mode 100644 packages/react/src/components/skeleton.tsx create mode 100644 packages/react/src/components/slider.tsx create mode 100644 packages/react/src/components/spinner.tsx create mode 100644 packages/react/src/components/switch.tsx create mode 100644 packages/react/src/components/table.tsx create mode 100644 packages/react/src/components/tabs.tsx create mode 100644 packages/react/src/components/textarea.tsx create mode 100644 packages/react/src/components/toast.tsx create mode 100644 packages/react/src/components/toggle-group.tsx create mode 100644 packages/react/src/components/toggle.tsx create mode 100644 packages/react/src/components/tooltip.tsx create mode 100644 packages/react/src/components/utils.tsx create mode 100644 packages/react/src/composition.tsx create mode 100644 packages/react/src/index.ts create mode 100644 packages/react/src/showcase.tsx create mode 100644 packages/react/src/styles.css create mode 100644 packages/react/tsconfig.json create mode 100644 packages/shared/LICENSE create mode 100644 packages/shared/README.md create mode 100644 packages/shared/package.json create mode 100644 packages/shared/src/index.ts create mode 100644 packages/shared/src/registry-client.ts create mode 100644 packages/shared/tsconfig.json create mode 100644 packages/specs/LICENSE create mode 100644 packages/specs/README.md create mode 100644 packages/specs/package.json create mode 100644 packages/specs/src/blocks.json create mode 100644 packages/specs/src/catalogue.json create mode 100644 packages/specs/src/composition.test.ts create mode 100644 packages/specs/src/composition.ts create mode 100644 packages/specs/src/index.ts create mode 100644 packages/specs/tsconfig.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 tooling/build.mjs create mode 100644 tsconfig.build.json create mode 100644 vitest.config.ts diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..4ed2ddd --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,26 @@ +name: Check public core + +on: + push: + branches: [main, codex/product-transition] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: "24" + cache: pnpm + - run: pnpm install --frozen-lockfile + - run: pnpm check + +# Publication is intentionally not automated. The historical datepicker release +# workflows are archived under legacy/, outside GitHub's active workflow directory. diff --git a/.gitignore b/.gitignore index b210070..aa8498d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,32 +1,15 @@ -# Logs -logs +node_modules/ +dist/ +.build/ +coverage/ *.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules +*.tgz +.env +.env.* +!.env.example .DS_Store -dist -dist-ssr -coverage -*.local - -/cypress/videos/ -/cypress/screenshots/ - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -# vitepress -docs/.vitepress/cache -docs/.vitepress/dist \ No newline at end of file +.netlify/ +.pnpm-store/ +**/.vitepress/cache/ +**/.vitepress/dist/ +*.tsbuildinfo diff --git a/.nvmrc b/.nvmrc index 2bd5a0a..a45fd52 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +24 diff --git a/ANNOUNCEMENT.md b/ANNOUNCEMENT.md new file mode 100644 index 0000000..988198c --- /dev/null +++ b/ANNOUNCEMENT.md @@ -0,0 +1,25 @@ +# Vue Tailwind Datepicker is becoming CodeRocket UI + +Vue Tailwind Datepicker started with a focused problem: make dates easier to work with in a Vue application. Thank you to everyone who used it, reported an issue or contributed. + +The next step is **CodeRocket UI**: tools to make a component library look like your product, keep its rules consistent, and share those rules with coding agents. You can [try the demo](https://ui.coderocket.app/#live-preview) or [read the documentation](https://ui.coderocket.app/docs). + +The repository keeps its existing stars, issues and history. Its active code is now the React components, blocks, design-system engine, specifications, CLI and read-only MCP client. That foundation is open source under MIT. The hosted editor, accounts and AI service are maintained separately. + +## What changes for datepicker users? + +The Vue datepicker is **frozen and no longer maintained**. Its npm package, `@coderocketapp/vue-tailwind-datepicker`, stays available. Its MIT source and original attribution are preserved in [`legacy/vue-tailwind-datepicker`](legacy/vue-tailwind-datepicker), and [its documentation](https://vue-tailwind-datepicker.com) stays online. + +No automatic migration or package rename is required in your applications. CodeRocket UI is a different product, initially for React. It is not a replacement Vue datepicker API, and there is no promised date for Vue support in the new library. + +No new fixes, feature work or package releases are planned for the legacy component. If you need ongoing maintenance, the MIT source remains available for you to adapt or fork. + +## Why this direction? + +Generating another isolated component is easy. Keeping the same design rules across a real application takes care. CodeRocket UI gives you editable source, shared tokens and specifications that both developers and coding agents can use. The CLI preserves local edits; MCP reads the same saved library instead of inventing a different one. + +The current components are experimental. The Studio is free during early access, and no paid subscription is enabled today. We want to learn from real integrations before promising a broader product. + +If you would like to try CodeRocket UI on a project or discuss a pilot, [contact us](https://ui.coderocket.app/contact). This is an invitation to opt in: we will not automatically contact people who starred or used the datepicker. + +— Alexandre Le Corre diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7efea97 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Contributing + +Use Node.js 24+ and pnpm 12.4.2. Run `pnpm install --frozen-lockfile`, then `pnpm check` before opening a pull request. Build outputs are ignored; commit source changes and the lockfile when dependencies change. + +The active workspaces are in `packages/`. Keep new behavior in the components and specifications together, and preserve keyboard interaction, focus behavior and explicit labels. Add tests for meaningful behavior changes. Tailwind must remain optional for consumers. + +The hosted application and its authentication, database and AI services are maintained separately. Do not add credentials, customer data, deployment configuration or private server source to this repository. Registry examples must use placeholders, never real connection tokens. + +The legacy Vue datepicker is frozen. Its historical issues remain available for reference, but new maintenance or feature releases are not planned. For current components, provide a minimal reproduction, package revision, React version and browser details. Review experimental components in your own product before release. + +By contributing, you agree to make your contribution available under this repository's MIT license. Preserve existing third-party notices and attribution. diff --git a/LICENSE b/LICENSE index c558884..96e3ffc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) Kenhyuwa +Copyright (c) 2026 Alexandre Le Corre Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 3af4892..67c1bf1 100644 --- a/README.md +++ b/README.md @@ -1,77 +1,85 @@ -# Vue Tailwind Datepicker +# CodeRocket UI -A date and date range picker for Vue 3, styled with Tailwind CSS. +**A component library you can make your own — and give to your coding agents.** -## Maintained package +Define a design system, compose React interfaces from shared components, and keep editable code in your own application. This repository contains the open-source components, design-system engine, specifications, CLI and MCP client used by [CodeRocket UI](https://ui.coderocket.app). -The maintained package is now **`@coderocketapp/vue-tailwind-datepicker`**. -The previous `vue-tailwind-datepicker` package remains available, but updates are -published under the new name. Existing installations do not migrate automatically. +[Try the interactive demo](https://ui.coderocket.app/#live-preview) · [Read the documentation](https://ui.coderocket.app/docs) · [Discuss a pilot](https://ui.coderocket.app/contact) -```sh -npm uninstall vue-tailwind-datepicker -npm install @coderocketapp/vue-tailwind-datepicker dayjs -``` +## From Vue Tailwind Datepicker to CodeRocket UI -For a new application, only the install command is needed. Vue 3 is required. -The package includes compiled CSS; an application does not need to configure -Tailwind or the forms plugin to display the picker. +This is the same repository, with its stars, issues and Git history. The project is expanding from a Vue datepicker into tools for building a coherent component library. -## Usage +**CodeRocket UI supports React today.** It is not a drop-in update to the Vue datepicker. Vue, Svelte and SolidJS renderers are planned, without a promised release date. -```vue - +Read the [transition announcement](ANNOUNCEMENT.md) and [legacy documentation](https://vue-tailwind-datepicker.com). - -``` +## What is open source? -Import the stylesheet once in your application. To select one date, add `as-single`. -The component also supports arrays and objects as values, custom shortcuts, -disabled dates, translations, inline calendars and explicit Apply/Cancel buttons. +| Package | What it provides | +| --------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| [`@coderocket/react`](packages/react) | 48 React components, accessible primitives based on Base UI, compiled CSS and a composition renderer. | +| [`@coderocket/blocks`](packages/blocks) | 26 interface blocks with typed callbacks for your own application logic. | +| [`@coderocket/engine`](packages/engine) | A versioned design-system model, token validation, theme generation and reviewed token import. | +| [`@coderocket/specs`](packages/specs) | Component and block specifications, plus validated composition schemas. | +| [`@coderocket/shared`](packages/shared) | Types and a read-only registry client shared by the integration tools. | +| [`@coderocket/cli`](packages/cli) | Local import analysis and installation/sync from a saved library, preserving local changes. | +| [`@coderocket/mcp`](packages/mcp) | A read-only MCP server that gives an agent your saved rules and component sources. | -Use `color-mode="light"` or `color-mode="dark"` to force the appearance. -`color-mode="auto"` follows a dark ancestor or the system preference. +These packages are MIT licensed. They are currently experimental: review and test them in your application's context. Authentication, payments, email delivery and uploads are not bundled backends; blocks expose callbacks that you connect yourself. -## Documentation +The hosted Studio, its accounts, database, AI-provider integration and operating infrastructure are separate. They are not included in this repository. Using the React components or engine locally does not require an account or an AI provider. The CLI's registry commands and MCP client need a saved library and a connection token from the Studio, or a compatible registry server. -[Installation](docs/installation.md) · [Props](docs/props.md) · -[Events](docs/events.md) · [Theming](docs/theming-options.md) +## Build from source -[Documentation website](https://elreco.github.io/vue-tailwind-datepicker/) · -[GitHub releases](https://github.com/elreco/vue-tailwind-datepicker/releases) +Use Node.js 24 or newer and pnpm 12.4.2. This repository is the source distribution; package names in the workspace do not imply a public npm release. -## Local development +```sh +git clone https://github.com/elreco/coderocket-ui.git +cd coderocket-ui +pnpm install --frozen-lockfile +pnpm check +``` -Use Node.js 22.14+ (Node 24 is used in CI). +`pnpm check` typechecks the workspace, builds JavaScript/CSS/declarations into each package's `dist/` directory, and runs the unit tests. It does not contact the hosted Studio or an AI provider. The legacy Vue project uses its own npm lockfiles and is outside the pnpm workspace. -```sh -npm ci -npm run dev +### Use the components + +In a pnpm workspace consumer, add `@coderocket/react` as a workspace dependency and import its compiled styles once: + +```tsx +import { Button, ThemeScope } from "@coderocket/react"; +import "@coderocket/react/styles.css"; + +export function App() { + return ( + + + + ); +} ``` -The playground is available at the address printed by Vite. +React 19.3 and Base UI 1.8 are the versions used by this source release. Tailwind is optional. See [development and integration](docs/DEVELOPMENT.md) for tokens, local packages and a standalone example. + +### Use the CLI or MCP + +After the build: ```sh -npm run typecheck -npm run build -npm run check:package -npm run docs:install -npm run docs:dev -npm run docs:build +node packages/cli/dist/index.mjs --help ``` -See the [release guide](.github/RELEASE_GUIDE.md) for npm publishing and GitHub Actions. +Follow the [CLI guide](packages/cli/README.md) for local imports and safe installation, or the [MCP guide](packages/mcp/README.md) for the eight read-only tools. Neither tool writes connection tokens into project files. Generated source is project data and must be reviewed before it is applied. + +## Help shape the pilot + +The hosted Studio is free during early access. We are looking for developers and teams to try it on a real project, show us what fails, and discuss a focused integration pilot. No subscription or paid plan is activated by creating an account. + +[Contact us voluntarily](https://ui.coderocket.app/contact) with your framework, your project and the problem you want to solve. GitHub stars and historical datepicker usage are not treated as permission to contact you. We will not automatically email existing users. -## License and credits +## Contributing and licensing -[MIT](LICENSE). Based on the original work by [Kenhyuwa](https://github.com/kenhyuwa), -with contributions from the Vue Tailwind Datepicker community. +See [CONTRIBUTING.md](CONTRIBUTING.md), [the roadmap](docs/ROADMAP.md), [MIT license](LICENSE) and [third-party notices](THIRD_PARTY_NOTICES.md). New component work belongs in the active packages. The legacy datepicker is kept as an unmaintained reference. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000..400b77a --- /dev/null +++ b/THIRD_PARTY_NOTICES.md @@ -0,0 +1,9 @@ +# Licenses and attribution + +The active CodeRocket UI packages are licensed under the root [MIT license](LICENSE). The repository author is Alexandre Le Corre (`elreco`). + +The historical Vue Tailwind Datepicker source keeps its original [MIT license and Kenhyuwa attribution](legacy/vue-tailwind-datepicker/LICENSE). Moving that source does not remove or replace its license. Its original dependency manifests and lockfiles are preserved alongside it. + +Third-party dependencies retain their own licenses. In particular, the active source uses React, React DOM, Base UI, Lucide, Zod and the Model Context Protocol SDK. Their implementation code is obtained by the package manager; it is not relicensed by this repository. The public build keeps package dependencies external rather than embedding their runtime code in distributable bundles. + +Documentation examples demonstrate interfaces only. The hosted CodeRocket UI application is a separate service and is not licensed by this repository's MIT license. diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js deleted file mode 100644 index 825fc2c..0000000 --- a/docs/.vitepress/theme/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import './tailwind.postcss' - -import DefaultTheme from 'vitepress/theme' -export default { ...DefaultTheme } \ No newline at end of file diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md new file mode 100644 index 0000000..9f4596e --- /dev/null +++ b/docs/DEVELOPMENT.md @@ -0,0 +1,75 @@ +# Develop and use the open-source core + +## Build and test + +```sh +pnpm install --frozen-lockfile +pnpm typecheck +pnpm build +pnpm test +``` + +The build emits ES modules and TypeScript declarations for each package. React/blocks output keeps the client boundary for frameworks such as Next.js. Compiled CSS is copied alongside the runtime. Third-party dependencies remain external. Tests exercise date values, the design-system engine, token import, composition validation and the CLI's filesystem protection. + +The packages are source workspaces, not an announcement of npm availability. Add them to another pnpm workspace as `workspace:*`, or build and package all dependencies locally. The hosted Studio also provides standalone exports that copy source into your own application. + +## A local React consumer + +Add a consumer folder to your workspace configuration, with these dependencies: + +```json +{ + "dependencies": { + "@coderocket/react": "workspace:*", + "@coderocket/blocks": "workspace:*", + "@coderocket/engine": "workspace:*", + "react": "19.3.0", + "react-dom": "19.3.0" + } +} +``` + +Build the core first, then start your consumer's normal React bundler. Import `@coderocket/react/styles.css`, optionally `@coderocket/blocks/styles.css`, and put a `ThemeScope` around the interface. The scope keeps portalled controls on the same typography and color tokens. + +```tsx +import { ThemeScope, Button, Card } from "@coderocket/react"; +import "@coderocket/react/styles.css"; + +export function Example() { + return ( + + + + + + ); +} +``` + +React props that accept callbacks must be placed inside your own client component in an SSR framework. Connect actions to your own backend; example callbacks do not save data remotely, send email or take payment. + +## Design model and specifications + +`@coderocket/engine` validates the versioned model and generates theme CSS. `@coderocket/specs` describes the catalogue and validates bounded compositions of known primitives. This model can be inspected or generated by your own tooling without an AI provider or the hosted Studio. + +The source of truth for a library remains its explicit tokens, recipes and component specifications. AI-generated proposals are still inputs to validate and review, not permission to execute arbitrary code. + +## Hosted registry integrations + +The [CLI](../packages/cli/README.md) and [MCP](../packages/mcp/README.md) share a read-only registry client. They need a saved library ID and scoped connection token for remote reads. The repository does not include the hosted registry backend or account service. `coderocket import` is local analysis and does not need a token. + +## Legacy documentation + +The old project is isolated in `legacy/vue-tailwind-datepicker`, including both npm lockfiles. To reproduce it: + +```sh +npm ci --prefix legacy/vue-tailwind-datepicker +npm --prefix legacy/vue-tailwind-datepicker run typecheck +npm --prefix legacy/vue-tailwind-datepicker run check:package +npm ci --prefix legacy/vue-tailwind-datepicker/docs +DOCS_BASE=/ npm --prefix legacy/vue-tailwind-datepicker run docs:build +``` + +Its package API and npm name are unchanged. These commands reproduce the frozen source; they do not imply ongoing maintenance or publication. diff --git a/docs/REPOSITORY-TRANSITION.md b/docs/REPOSITORY-TRANSITION.md new file mode 100644 index 0000000..7e6907e --- /dev/null +++ b/docs/REPOSITORY-TRANSITION.md @@ -0,0 +1,13 @@ +# Repository transition and release boundaries + +The repository history is preserved. The transition starts from legacy commit `91208cbd9be5465cc43ea3feb722305c476f9fb1` and moves that tracked tree to `legacy/vue-tailwind-datepicker` before adding the public core. + +The existing datepicker version tags remain historical references. The branch `legacy/vue-tailwind-datepicker` and tag `vue-tailwind-datepicker-final` both preserve that final commit in its original directory layout. + +The repository was renamed from `elreco/vue-tailwind-datepicker` to `elreco/coderocket-ui` on 18 September 2026, preserving its 248 stars, issues and history. GitHub redirects the old repository URL. The legacy documentation remains at https://vue-tailwind-datepicker.com; the root Netlify configuration builds the nested legacy documentation only. The hosted CodeRocket UI app deploys from its separate private repository. + +The old workflows are kept under `legacy/vue-tailwind-datepicker/.github/workflows` for provenance. GitHub does not run that nested directory as repository workflows. The only active root workflow validates the public core. There is no active npm publisher and no automatic datepicker release. + +The legacy package remains on npm under `@coderocketapp/vue-tailwind-datepicker`. Do not unpublish it or rename its installed API as part of this repository change. Future CodeRocket package publication requires a separate reviewed release and naming decision. + +The imported public source is restricted to seven packages: `react`, `blocks`, `engine`, `specs`, `shared`, `cli`, and `mcp`. The hosted app, provider integrations, database, customer records, credentials and deployment tools are not part of this source distribution. diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md new file mode 100644 index 0000000..e857c78 --- /dev/null +++ b/docs/ROADMAP.md @@ -0,0 +1,19 @@ +# Current scope + +## Available in the open-source core + +- React components and interface blocks, with compiled CSS and Base UI behavior. +- A typed, versioned design-system model and specifications. +- Local token analysis and reviewed model changes. +- CLI installation/sync that preserves local file changes. +- A read-only MCP server for a saved library and its design rules. + +The catalogue is experimental. Fixes should be driven by real integrations, with particular care for keyboard behavior, focus, SSR and mobile. + +## Next: validate integrations + +The near-term goal is a small number of voluntary pilots using a real application. We want evidence that teams can create a coherent library, install it, preserve local edits and use the same components through an agent. + +Possible later work includes additional framework renderers, stronger import coverage, team workflows and commercial plans. Those are directions to validate, not features already delivered or release commitments. + +Vue Tailwind Datepicker is archived in `legacy/` as unmaintained source. Its presence does not mean the new CodeRocket component renderer supports Vue. diff --git a/.eslintignore b/legacy/vue-tailwind-datepicker/.eslintignore similarity index 100% rename from .eslintignore rename to legacy/vue-tailwind-datepicker/.eslintignore diff --git a/.eslintrc.cjs b/legacy/vue-tailwind-datepicker/.eslintrc.cjs similarity index 100% rename from .eslintrc.cjs rename to legacy/vue-tailwind-datepicker/.eslintrc.cjs diff --git a/.github/CODE_OF_CONDUCT.md b/legacy/vue-tailwind-datepicker/.github/CODE_OF_CONDUCT.md similarity index 100% rename from .github/CODE_OF_CONDUCT.md rename to legacy/vue-tailwind-datepicker/.github/CODE_OF_CONDUCT.md diff --git a/.github/FUNDING.yml b/legacy/vue-tailwind-datepicker/.github/FUNDING.yml similarity index 100% rename from .github/FUNDING.yml rename to legacy/vue-tailwind-datepicker/.github/FUNDING.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/legacy/vue-tailwind-datepicker/.github/ISSUE_TEMPLATE/bug_report.md similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.md rename to legacy/vue-tailwind-datepicker/.github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/legacy/vue-tailwind-datepicker/.github/ISSUE_TEMPLATE/feature_request.md similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.md rename to legacy/vue-tailwind-datepicker/.github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/RELEASE_GUIDE.md b/legacy/vue-tailwind-datepicker/.github/RELEASE_GUIDE.md similarity index 100% rename from .github/RELEASE_GUIDE.md rename to legacy/vue-tailwind-datepicker/.github/RELEASE_GUIDE.md diff --git a/.github/workflows/ci.yml b/legacy/vue-tailwind-datepicker/.github/workflows/ci.yml similarity index 100% rename from .github/workflows/ci.yml rename to legacy/vue-tailwind-datepicker/.github/workflows/ci.yml diff --git a/.github/workflows/commitlint.yml b/legacy/vue-tailwind-datepicker/.github/workflows/commitlint.yml similarity index 100% rename from .github/workflows/commitlint.yml rename to legacy/vue-tailwind-datepicker/.github/workflows/commitlint.yml diff --git a/.github/workflows/docs.yml b/legacy/vue-tailwind-datepicker/.github/workflows/docs.yml similarity index 100% rename from .github/workflows/docs.yml rename to legacy/vue-tailwind-datepicker/.github/workflows/docs.yml diff --git a/.github/workflows/release.yml b/legacy/vue-tailwind-datepicker/.github/workflows/release.yml similarity index 100% rename from .github/workflows/release.yml rename to legacy/vue-tailwind-datepicker/.github/workflows/release.yml diff --git a/legacy/vue-tailwind-datepicker/.gitignore b/legacy/vue-tailwind-datepicker/.gitignore new file mode 100644 index 0000000..b210070 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/.gitignore @@ -0,0 +1,32 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# vitepress +docs/.vitepress/cache +docs/.vitepress/dist \ No newline at end of file diff --git a/.husky/commit-msg b/legacy/vue-tailwind-datepicker/.husky/commit-msg similarity index 100% rename from .husky/commit-msg rename to legacy/vue-tailwind-datepicker/.husky/commit-msg diff --git a/.husky/prepare-commit-msg b/legacy/vue-tailwind-datepicker/.husky/prepare-commit-msg similarity index 100% rename from .husky/prepare-commit-msg rename to legacy/vue-tailwind-datepicker/.husky/prepare-commit-msg diff --git a/legacy/vue-tailwind-datepicker/.nvmrc b/legacy/vue-tailwind-datepicker/.nvmrc new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/legacy/vue-tailwind-datepicker/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/CHANGELOG.md b/legacy/vue-tailwind-datepicker/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to legacy/vue-tailwind-datepicker/CHANGELOG.md diff --git a/legacy/vue-tailwind-datepicker/LICENSE b/legacy/vue-tailwind-datepicker/LICENSE new file mode 100644 index 0000000..c558884 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Kenhyuwa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/legacy/vue-tailwind-datepicker/README.md b/legacy/vue-tailwind-datepicker/README.md new file mode 100644 index 0000000..242b817 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/README.md @@ -0,0 +1,79 @@ +# Vue Tailwind Datepicker + +A date and date range picker for Vue 3, styled with Tailwind CSS. + +> **Frozen and no longer maintained.** This source is preserved under MIT, with its original attribution. Existing npm versions remain available, but no new fixes, features or releases are planned. Active development has moved to [CodeRocket UI](https://ui.coderocket.app), initially for React; it is not a drop-in Vue replacement. + +## Frozen package + +The final package name is **`@coderocketapp/vue-tailwind-datepicker`**. +The previous `vue-tailwind-datepicker` package also remains available. Neither +package is maintained. Existing installations do not migrate automatically. + +```sh +npm uninstall vue-tailwind-datepicker +npm install @coderocketapp/vue-tailwind-datepicker dayjs +``` + +For a new application, only the install command is needed. Vue 3 is required. +The package includes compiled CSS; an application does not need to configure +Tailwind or the forms plugin to display the picker. + +## Usage + +```vue + + + +``` + +Import the stylesheet once in your application. To select one date, add `as-single`. +The component also supports arrays and objects as values, custom shortcuts, +disabled dates, translations, inline calendars and explicit Apply/Cancel buttons. + +Use `color-mode="light"` or `color-mode="dark"` to force the appearance. +`color-mode="auto"` follows a dark ancestor or the system preference. + +## Documentation + +[Installation](docs/installation.md) · [Props](docs/props.md) · +[Events](docs/events.md) · [Theming](docs/theming-options.md) + +[Documentation website](https://vue-tailwind-datepicker.com) · +[Historical releases](https://github.com/elreco/coderocket-ui/releases) + +## Local development + +Use Node.js 22.14+ (Node 24 is used in CI). + +```sh +npm ci +npm run dev +``` + +The playground is available at the address printed by Vite. + +```sh +npm run typecheck +npm run build +npm run check:package +npm run docs:install +npm run docs:dev +npm run docs:build +``` + +The archived [release guide](.github/RELEASE_GUIDE.md) and nested workflows are historical records. Automatic publication is disabled; no new datepicker releases are planned. + +## License and credits + +[MIT](LICENSE). Based on the original work by [Kenhyuwa](https://github.com/kenhyuwa), +with contributions from the Vue Tailwind Datepicker community. diff --git a/legacy/vue-tailwind-datepicker/STATUS.md b/legacy/vue-tailwind-datepicker/STATUS.md new file mode 100644 index 0000000..066f6fb --- /dev/null +++ b/legacy/vue-tailwind-datepicker/STATUS.md @@ -0,0 +1,9 @@ +# Frozen legacy source + +Vue Tailwind Datepicker is no longer maintained. Its source, original MIT license, npm name, changelog and existing behavior are preserved for current users and forks. No fixes, feature work or releases are planned. + +The existing `@coderocketapp/vue-tailwind-datepicker` release remains installable. It does not automatically migrate to CodeRocket UI. The new project currently supports React, not the historical Vue API. + +The original repository tree was preserved from commit `91208cbd9be5465cc43ea3feb722305c476f9fb1`. Existing historical tags remain available. Root workflow automation now validates the new public core; nested legacy workflows do not run automatically. + +The root Netlify configuration builds this folder's `docs/` so the historical documentation domain remains usable. Follow the root development guide to reproduce the frozen package or docs locally. diff --git a/commitlint.config.js b/legacy/vue-tailwind-datepicker/commitlint.config.js similarity index 100% rename from commitlint.config.js rename to legacy/vue-tailwind-datepicker/commitlint.config.js diff --git a/docs/.postcssrc.cjs b/legacy/vue-tailwind-datepicker/docs/.postcssrc.cjs similarity index 100% rename from docs/.postcssrc.cjs rename to legacy/vue-tailwind-datepicker/docs/.postcssrc.cjs diff --git a/docs/.vitepress/config.ts b/legacy/vue-tailwind-datepicker/docs/.vitepress/config.ts similarity index 100% rename from docs/.vitepress/config.ts rename to legacy/vue-tailwind-datepicker/docs/.vitepress/config.ts diff --git a/legacy/vue-tailwind-datepicker/docs/.vitepress/theme/index.js b/legacy/vue-tailwind-datepicker/docs/.vitepress/theme/index.js new file mode 100644 index 0000000..c97a090 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/docs/.vitepress/theme/index.js @@ -0,0 +1,32 @@ +import './tailwind.postcss' +import { h } from 'vue' +import DefaultTheme from 'vitepress/theme' + +const maintenanceNotice = () => h('aside', { + 'aria-label': 'Maintenance status', + style: { + margin: '24px auto', + padding: '16px 20px', + maxWidth: '1152px', + border: '1px solid var(--vp-c-divider)', + borderRadius: '8px', + background: 'var(--vp-c-bg-soft)', + fontSize: '14px', + lineHeight: '1.7', + }, +}, [ + h('strong', 'Frozen legacy package. '), + 'Vue Tailwind Datepicker is no longer maintained. Existing npm releases remain available, but no new fixes or releases are planned. ', + h('a', { + href: 'https://ui.coderocket.app', + style: { color: 'var(--vp-c-brand-1)', textDecoration: 'underline' }, + }, 'Explore CodeRocket UI, currently for React.'), +]) + +export default { + ...DefaultTheme, + Layout: () => h(DefaultTheme.Layout, null, { + 'doc-before': maintenanceNotice, + 'home-hero-before': maintenanceNotice, + }), +} diff --git a/docs/.vitepress/theme/tailwind.postcss b/legacy/vue-tailwind-datepicker/docs/.vitepress/theme/tailwind.postcss similarity index 100% rename from docs/.vitepress/theme/tailwind.postcss rename to legacy/vue-tailwind-datepicker/docs/.vitepress/theme/tailwind.postcss diff --git a/docs/.vitepress/theme/tailwind.postcss:Zone.Identifier b/legacy/vue-tailwind-datepicker/docs/.vitepress/theme/tailwind.postcss:Zone.Identifier similarity index 100% rename from docs/.vitepress/theme/tailwind.postcss:Zone.Identifier rename to legacy/vue-tailwind-datepicker/docs/.vitepress/theme/tailwind.postcss:Zone.Identifier diff --git a/docs/DemoLayout.vue b/legacy/vue-tailwind-datepicker/docs/DemoLayout.vue similarity index 100% rename from docs/DemoLayout.vue rename to legacy/vue-tailwind-datepicker/docs/DemoLayout.vue diff --git a/docs/advanced-features.md b/legacy/vue-tailwind-datepicker/docs/advanced-features.md similarity index 100% rename from docs/advanced-features.md rename to legacy/vue-tailwind-datepicker/docs/advanced-features.md diff --git a/docs/dark.png b/legacy/vue-tailwind-datepicker/docs/dark.png similarity index 100% rename from docs/dark.png rename to legacy/vue-tailwind-datepicker/docs/dark.png diff --git a/docs/demo.md b/legacy/vue-tailwind-datepicker/docs/demo.md similarity index 86% rename from docs/demo.md rename to legacy/vue-tailwind-datepicker/docs/demo.md index 9b79d28..984cbb4 100644 --- a/docs/demo.md +++ b/legacy/vue-tailwind-datepicker/docs/demo.md @@ -9,7 +9,7 @@ # Demo ::: tip -Install `@coderocketapp/vue-tailwind-datepicker` to use this maintained version. +Install `@coderocketapp/vue-tailwind-datepicker` to use this frozen version. It is no longer maintained. See the [installation guide](./installation.md) for the stylesheet and migration instructions. ::: diff --git a/docs/events.md b/legacy/vue-tailwind-datepicker/docs/events.md similarity index 100% rename from docs/events.md rename to legacy/vue-tailwind-datepicker/docs/events.md diff --git a/docs/index.md b/legacy/vue-tailwind-datepicker/docs/index.md similarity index 71% rename from docs/index.md rename to legacy/vue-tailwind-datepicker/docs/index.md index ea17ead..ff7d03a 100644 --- a/docs/index.md +++ b/legacy/vue-tailwind-datepicker/docs/index.md @@ -3,9 +3,9 @@ layout: home hero: name: Vue Tailwind Datepicker - tagline: Now published as @coderocketapp/vue-tailwind-datepicker. A datepicker for Vue 3, styled with Tailwind CSS. + tagline: A frozen Vue 3 datepicker. Existing npm releases remain available; maintenance has ended. image: - src: https://github.com/elreco/vue-tailwind-datepicker/blob/main/docs/logo.png?raw=true + src: /logo.png alt: Vue Tailwind Datepicker actions: - theme: brand @@ -13,7 +13,7 @@ hero: link: /installation#maintained-package - theme: alt text: View on GitHub - link: https://github.com/elreco/vue-tailwind-datepicker + link: https://github.com/elreco/coderocket-ui/tree/main/legacy/vue-tailwind-datepicker - theme: alt text: Live demo link: /demo diff --git a/docs/installation.md b/legacy/vue-tailwind-datepicker/docs/installation.md similarity index 85% rename from docs/installation.md rename to legacy/vue-tailwind-datepicker/docs/installation.md index cd20803..4d69c3b 100644 --- a/docs/installation.md +++ b/legacy/vue-tailwind-datepicker/docs/installation.md @@ -1,9 +1,10 @@ # Installation -## Maintained package +## Frozen package {#maintained-package} -New releases are published as **`@coderocketapp/vue-tailwind-datepicker`**. -The old `vue-tailwind-datepicker` name does not receive these releases automatically. +**This package is no longer maintained.** The existing release remains available as +**`@coderocketapp/vue-tailwind-datepicker`**. No new fixes, features or releases are +planned. The old `vue-tailwind-datepicker` name also remains available. If you used the old package, remove it first: @@ -11,7 +12,7 @@ If you used the old package, remove it first: npm uninstall vue-tailwind-datepicker ``` -Install the maintained package in your Vue 3 application: +Install the frozen package in your Vue 3 application: ```sh npm install @coderocketapp/vue-tailwind-datepicker dayjs diff --git a/docs/light.png b/legacy/vue-tailwind-datepicker/docs/light.png similarity index 100% rename from docs/light.png rename to legacy/vue-tailwind-datepicker/docs/light.png diff --git a/docs/logo.png b/legacy/vue-tailwind-datepicker/docs/logo.png similarity index 100% rename from docs/logo.png rename to legacy/vue-tailwind-datepicker/docs/logo.png diff --git a/docs/package-lock.json b/legacy/vue-tailwind-datepicker/docs/package-lock.json similarity index 100% rename from docs/package-lock.json rename to legacy/vue-tailwind-datepicker/docs/package-lock.json diff --git a/docs/package.json b/legacy/vue-tailwind-datepicker/docs/package.json similarity index 100% rename from docs/package.json rename to legacy/vue-tailwind-datepicker/docs/package.json diff --git a/docs/props.md b/legacy/vue-tailwind-datepicker/docs/props.md similarity index 100% rename from docs/props.md rename to legacy/vue-tailwind-datepicker/docs/props.md diff --git a/legacy/vue-tailwind-datepicker/docs/public/logo.png b/legacy/vue-tailwind-datepicker/docs/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..50f8cc38a0c0c65cbe05ffdb1d319b374e908754 GIT binary patch literal 11710 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 literal 0 HcmV?d00001 diff --git a/docs/theming-options.md b/legacy/vue-tailwind-datepicker/docs/theming-options.md similarity index 100% rename from docs/theming-options.md rename to legacy/vue-tailwind-datepicker/docs/theming-options.md diff --git a/index.html b/legacy/vue-tailwind-datepicker/index.html similarity index 100% rename from index.html rename to legacy/vue-tailwind-datepicker/index.html diff --git a/legacy/vue-tailwind-datepicker/netlify.toml b/legacy/vue-tailwind-datepicker/netlify.toml new file mode 100644 index 0000000..fe207f7 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/netlify.toml @@ -0,0 +1,7 @@ +[build] + command = "npm ci --prefix docs && npm run docs:build" + publish = "docs/.vitepress/dist" + +[build.environment] + NODE_VERSION = "24" + DOCS_BASE = "/" diff --git a/package-lock.json b/legacy/vue-tailwind-datepicker/package-lock.json similarity index 100% rename from package-lock.json rename to legacy/vue-tailwind-datepicker/package-lock.json diff --git a/legacy/vue-tailwind-datepicker/package.json b/legacy/vue-tailwind-datepicker/package.json new file mode 100644 index 0000000..6ad0d67 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/package.json @@ -0,0 +1,239 @@ +{ + "name": "@coderocketapp/vue-tailwind-datepicker", + "type": "module", + "version": "1.8.0", + "description": "A date range picker component for Vue.js 3 using Tailwind CSS", + "author": { + "name": "elreco", + "email": "alexandre@heypongo.com", + "url": "https://github.com/elreco" + }, + "homepage": "https://elreco.github.io/vue-tailwind-datepicker/", + "repository": { + "type": "git", + "url": "https://github.com/elreco/vue-tailwind-datepicker.git" + }, + "bugs": { + "url": "https://github.com/elreco/vue-tailwind-datepicker/issues", + "email": "alexandre@heypongo.com" + }, + "keywords": [ + "vue-tailwind-datepicker", + "vue-datepicker", + "vue-daterangepicker", + "vue-daterange-picker", + "tailwind-datepicker", + "tailwind-daterange-picker" + ], + "exports": { + ".": { + "types": "./dist/types.d.ts", + "import": "./dist/vue-tailwind-datepicker.js", + "require": "./dist/vue-tailwind-datepicker.umd.cjs" + }, + "./style.css": "./dist/vue-tailwind-datepicker.css" + }, + "main": "./dist/vue-tailwind-datepicker.umd.cjs", + "module": "./dist/vue-tailwind-datepicker.js", + "types": "./dist/types.d.ts", + "files": [ + "dist" + ], + "contributors": [], + "scripts": { + "dev": "vite --configLoader runner", + "build": "vite build --configLoader runner", + "preview": "vite preview --port 4173", + "prepare": "npm run build", + "lint": "eslint", + "lint:fix": "eslint --fix", + "docs:dev": "npm --prefix docs run dev", + "docs:build": "npm --prefix docs run build", + "docs:serve": "npm --prefix docs run serve", + "typecheck": "vue-tsc --noEmit", + "semantic-release": "semantic-release", + "check:package": "node scripts/check-package.mjs", + "docs:install": "npm ci --prefix docs" + }, + "release": { + "branches": [ + "main", + { + "name": "develop", + "prerelease": "dev", + "channel": "dev" + }, + { + "name": "next", + "prerelease": true + }, + { + "name": "beta", + "prerelease": true + }, + { + "name": "alpha", + "prerelease": true + } + ], + "plugins": [ + "@semantic-release/changelog", + "@semantic-release/npm", + [ + "@semantic-release/commit-analyzer", + { + "releaseRules": [ + { + "type": "refactor", + "release": "patch" + }, + { + "type": "docs", + "scope": "README", + "release": "patch" + }, + { + "type": "test", + "release": "patch" + }, + { + "type": "style", + "release": "patch" + }, + { + "type": "perf", + "release": "patch" + }, + { + "type": "ci", + "release": "patch" + }, + { + "type": "build", + "release": "patch" + }, + { + "type": "chore", + "release": "patch" + }, + { + "type": "no-release", + "release": false + } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "conventionalcommits", + "presetConfig": { + "types": [ + { + "type": "feat", + "section": ":sparkles: Features", + "hidden": false + }, + { + "type": "fix", + "section": ":bug: Fixes", + "hidden": false + }, + { + "type": "docs", + "section": ":memo: Documentation", + "hidden": false + }, + { + "type": "style", + "section": ":barber: Code-style", + "hidden": false + }, + { + "type": "refactor", + "section": ":zap: Refactor", + "hidden": false + }, + { + "type": "perf", + "section": ":fast_forward: Performance", + "hidden": false + }, + { + "type": "test", + "section": ":white_check_mark: Tests", + "hidden": false + }, + { + "type": "ci", + "section": ":repeat: CI", + "hidden": false + }, + { + "type": "chore", + "section": ":repeat: Chore", + "hidden": false + } + ] + } + } + ], + [ + "@semantic-release/github", + { + "assets": [], + "successComment": false, + "failComment": false + } + ] + ] + }, + "peerDependencies": { + "dayjs": "^1.11.13", + "tailwindcss": "^4.1.11", + "vue": "^3.3.13" + }, + "dependencies": { + "@vueuse/core": "^10.5.0" + }, + "devDependencies": { + "@antfu/eslint-config": "^0.43.1", + "@commitlint/cli": "^20.4.1", + "@commitlint/config-conventional": "^20.4.1", + "@headlessui/vue": "1.7.23", + "@microsoft/api-extractor": "^7.56.3", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/commit-analyzer": "^13.0.1", + "@semantic-release/git": "^10.0.1", + "@semantic-release/npm": "^13.1.4", + "@semantic-release/release-notes-generator": "^14.1.0", + "@tailwindcss/forms": "^0.5.11", + "@tailwindcss/postcss": "^4.1.18", + "@types/fs-extra": "^11.0.4", + "@types/node": "^20.8.10", + "@vitejs/plugin-vue": "^6.0.4", + "dayjs": "^1.11.19", + "esbuild": "^0.27.3", + "eslint": "^8.51.0", + "fs-extra": "^11.3.3", + "husky": "^8.0.3", + "postcss": "^8.4.49", + "semantic-release": "^25.0.3", + "tailwindcss": "^4.1.18", + "typescript": "^5.9.3", + "vite": "^7.3.1", + "vite-plugin-dts": "^4.5.4", + "vue": "^3.5.28", + "vue-tsc": "^3.2.4" + }, + "license": "MIT", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } +} diff --git a/postcss.config.cjs b/legacy/vue-tailwind-datepicker/postcss.config.cjs similarity index 100% rename from postcss.config.cjs rename to legacy/vue-tailwind-datepicker/postcss.config.cjs diff --git a/scripts/check-package.mjs b/legacy/vue-tailwind-datepicker/scripts/check-package.mjs similarity index 100% rename from scripts/check-package.mjs rename to legacy/vue-tailwind-datepicker/scripts/check-package.mjs diff --git a/src/App.vue b/legacy/vue-tailwind-datepicker/src/App.vue similarity index 100% rename from src/App.vue rename to legacy/vue-tailwind-datepicker/src/App.vue diff --git a/src/VueTailwindDatePicker.vue b/legacy/vue-tailwind-datepicker/src/VueTailwindDatePicker.vue similarity index 100% rename from src/VueTailwindDatePicker.vue rename to legacy/vue-tailwind-datepicker/src/VueTailwindDatePicker.vue diff --git a/src/assets/base.css b/legacy/vue-tailwind-datepicker/src/assets/base.css similarity index 100% rename from src/assets/base.css rename to legacy/vue-tailwind-datepicker/src/assets/base.css diff --git a/src/assets/logo.svg b/legacy/vue-tailwind-datepicker/src/assets/logo.svg similarity index 100% rename from src/assets/logo.svg rename to legacy/vue-tailwind-datepicker/src/assets/logo.svg diff --git a/src/assets/main.css b/legacy/vue-tailwind-datepicker/src/assets/main.css similarity index 100% rename from src/assets/main.css rename to legacy/vue-tailwind-datepicker/src/assets/main.css diff --git a/src/components/Calendar.vue b/legacy/vue-tailwind-datepicker/src/components/Calendar.vue similarity index 100% rename from src/components/Calendar.vue rename to legacy/vue-tailwind-datepicker/src/components/Calendar.vue diff --git a/src/components/Header.vue b/legacy/vue-tailwind-datepicker/src/components/Header.vue similarity index 100% rename from src/components/Header.vue rename to legacy/vue-tailwind-datepicker/src/components/Header.vue diff --git a/src/components/Month.vue b/legacy/vue-tailwind-datepicker/src/components/Month.vue similarity index 100% rename from src/components/Month.vue rename to legacy/vue-tailwind-datepicker/src/components/Month.vue diff --git a/src/components/Shortcut.vue b/legacy/vue-tailwind-datepicker/src/components/Shortcut.vue similarity index 100% rename from src/components/Shortcut.vue rename to legacy/vue-tailwind-datepicker/src/components/Shortcut.vue diff --git a/src/components/Week.vue b/legacy/vue-tailwind-datepicker/src/components/Week.vue similarity index 100% rename from src/components/Week.vue rename to legacy/vue-tailwind-datepicker/src/components/Week.vue diff --git a/src/components/Year.vue b/legacy/vue-tailwind-datepicker/src/components/Year.vue similarity index 100% rename from src/components/Year.vue rename to legacy/vue-tailwind-datepicker/src/components/Year.vue diff --git a/src/composables/date.ts b/legacy/vue-tailwind-datepicker/src/composables/date.ts similarity index 100% rename from src/composables/date.ts rename to legacy/vue-tailwind-datepicker/src/composables/date.ts diff --git a/src/composables/dom.ts b/legacy/vue-tailwind-datepicker/src/composables/dom.ts similarity index 100% rename from src/composables/dom.ts rename to legacy/vue-tailwind-datepicker/src/composables/dom.ts diff --git a/src/entry.esm.ts b/legacy/vue-tailwind-datepicker/src/entry.esm.ts similarity index 100% rename from src/entry.esm.ts rename to legacy/vue-tailwind-datepicker/src/entry.esm.ts diff --git a/src/entry.ts b/legacy/vue-tailwind-datepicker/src/entry.ts similarity index 100% rename from src/entry.ts rename to legacy/vue-tailwind-datepicker/src/entry.ts diff --git a/src/index.css b/legacy/vue-tailwind-datepicker/src/index.css similarity index 100% rename from src/index.css rename to legacy/vue-tailwind-datepicker/src/index.css diff --git a/src/keys.ts b/legacy/vue-tailwind-datepicker/src/keys.ts similarity index 100% rename from src/keys.ts rename to legacy/vue-tailwind-datepicker/src/keys.ts diff --git a/src/main.ts b/legacy/vue-tailwind-datepicker/src/main.ts similarity index 100% rename from src/main.ts rename to legacy/vue-tailwind-datepicker/src/main.ts diff --git a/src/types.ts b/legacy/vue-tailwind-datepicker/src/types.ts similarity index 100% rename from src/types.ts rename to legacy/vue-tailwind-datepicker/src/types.ts diff --git a/src/utils.ts b/legacy/vue-tailwind-datepicker/src/utils.ts similarity index 100% rename from src/utils.ts rename to legacy/vue-tailwind-datepicker/src/utils.ts diff --git a/src/vue-shim.d.ts b/legacy/vue-tailwind-datepicker/src/vue-shim.d.ts similarity index 100% rename from src/vue-shim.d.ts rename to legacy/vue-tailwind-datepicker/src/vue-shim.d.ts diff --git a/legacy/vue-tailwind-datepicker/tsconfig.json b/legacy/vue-tailwind-datepicker/tsconfig.json new file mode 100644 index 0000000..4015860 --- /dev/null +++ b/legacy/vue-tailwind-datepicker/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["DOM", "ESNext"], + "jsx": "preserve", + "module": "ESNext", + "moduleResolution": "Bundler", + "baseUrl": ".", + "paths": { + "~/*": ["src/*"] + }, + "types": ["node", "vite/client"], + "resolveJsonModule": true, + "allowJs": true, + "isolatedModules": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "strictNullChecks": true, + "noUnusedLocals": true, + "skipLibCheck": true + }, + "exclude": [ + "dist", + "node_modules", + "cypress", + "postcss.config.cjs", + "tailwind.config.ts" + ] +} diff --git a/vite.config.ts b/legacy/vue-tailwind-datepicker/vite.config.ts similarity index 100% rename from vite.config.ts rename to legacy/vue-tailwind-datepicker/vite.config.ts diff --git a/netlify.toml b/netlify.toml index fe207f7..cc5da68 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,4 +1,7 @@ +# This configuration preserves the historical datepicker documentation site. +# The hosted CodeRocket UI application is deployed from its separate private repository. [build] + base = "legacy/vue-tailwind-datepicker" command = "npm ci --prefix docs && npm run docs:build" publish = "docs/.vitepress/dist" diff --git a/package.json b/package.json index 6ad0d67..9e25be0 100644 --- a/package.json +++ b/package.json @@ -1,239 +1,30 @@ -{ - "name": "@coderocketapp/vue-tailwind-datepicker", - "type": "module", - "version": "1.8.0", - "description": "A date range picker component for Vue.js 3 using Tailwind CSS", - "author": { - "name": "elreco", - "email": "alexandre@heypongo.com", - "url": "https://github.com/elreco" - }, - "homepage": "https://elreco.github.io/vue-tailwind-datepicker/", - "repository": { - "type": "git", - "url": "https://github.com/elreco/vue-tailwind-datepicker.git" - }, - "bugs": { - "url": "https://github.com/elreco/vue-tailwind-datepicker/issues", - "email": "alexandre@heypongo.com" - }, - "keywords": [ - "vue-tailwind-datepicker", - "vue-datepicker", - "vue-daterangepicker", - "vue-daterange-picker", - "tailwind-datepicker", - "tailwind-daterange-picker" - ], - "exports": { - ".": { - "types": "./dist/types.d.ts", - "import": "./dist/vue-tailwind-datepicker.js", - "require": "./dist/vue-tailwind-datepicker.umd.cjs" - }, - "./style.css": "./dist/vue-tailwind-datepicker.css" - }, - "main": "./dist/vue-tailwind-datepicker.umd.cjs", - "module": "./dist/vue-tailwind-datepicker.js", - "types": "./dist/types.d.ts", - "files": [ - "dist" - ], - "contributors": [], - "scripts": { - "dev": "vite --configLoader runner", - "build": "vite build --configLoader runner", - "preview": "vite preview --port 4173", - "prepare": "npm run build", - "lint": "eslint", - "lint:fix": "eslint --fix", - "docs:dev": "npm --prefix docs run dev", - "docs:build": "npm --prefix docs run build", - "docs:serve": "npm --prefix docs run serve", - "typecheck": "vue-tsc --noEmit", - "semantic-release": "semantic-release", - "check:package": "node scripts/check-package.mjs", - "docs:install": "npm ci --prefix docs" - }, - "release": { - "branches": [ - "main", - { - "name": "develop", - "prerelease": "dev", - "channel": "dev" - }, - { - "name": "next", - "prerelease": true - }, - { - "name": "beta", - "prerelease": true - }, - { - "name": "alpha", - "prerelease": true - } - ], - "plugins": [ - "@semantic-release/changelog", - "@semantic-release/npm", - [ - "@semantic-release/commit-analyzer", - { - "releaseRules": [ - { - "type": "refactor", - "release": "patch" - }, - { - "type": "docs", - "scope": "README", - "release": "patch" - }, - { - "type": "test", - "release": "patch" - }, - { - "type": "style", - "release": "patch" - }, - { - "type": "perf", - "release": "patch" - }, - { - "type": "ci", - "release": "patch" - }, - { - "type": "build", - "release": "patch" - }, - { - "type": "chore", - "release": "patch" - }, - { - "type": "no-release", - "release": false - } - ] - } - ], - [ - "@semantic-release/release-notes-generator", - { - "preset": "conventionalcommits", - "presetConfig": { - "types": [ - { - "type": "feat", - "section": ":sparkles: Features", - "hidden": false - }, - { - "type": "fix", - "section": ":bug: Fixes", - "hidden": false - }, - { - "type": "docs", - "section": ":memo: Documentation", - "hidden": false - }, - { - "type": "style", - "section": ":barber: Code-style", - "hidden": false - }, - { - "type": "refactor", - "section": ":zap: Refactor", - "hidden": false - }, - { - "type": "perf", - "section": ":fast_forward: Performance", - "hidden": false - }, - { - "type": "test", - "section": ":white_check_mark: Tests", - "hidden": false - }, - { - "type": "ci", - "section": ":repeat: CI", - "hidden": false - }, - { - "type": "chore", - "section": ":repeat: Chore", - "hidden": false - } - ] - } - } - ], - [ - "@semantic-release/github", - { - "assets": [], - "successComment": false, - "failComment": false - } - ] - ] - }, - "peerDependencies": { - "dayjs": "^1.11.13", - "tailwindcss": "^4.1.11", - "vue": "^3.3.13" - }, - "dependencies": { - "@vueuse/core": "^10.5.0" - }, - "devDependencies": { - "@antfu/eslint-config": "^0.43.1", - "@commitlint/cli": "^20.4.1", - "@commitlint/config-conventional": "^20.4.1", - "@headlessui/vue": "1.7.23", - "@microsoft/api-extractor": "^7.56.3", - "@semantic-release/changelog": "^6.0.3", - "@semantic-release/commit-analyzer": "^13.0.1", - "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^13.1.4", - "@semantic-release/release-notes-generator": "^14.1.0", - "@tailwindcss/forms": "^0.5.11", - "@tailwindcss/postcss": "^4.1.18", - "@types/fs-extra": "^11.0.4", - "@types/node": "^20.8.10", - "@vitejs/plugin-vue": "^6.0.4", - "dayjs": "^1.11.19", - "esbuild": "^0.27.3", - "eslint": "^8.51.0", - "fs-extra": "^11.3.3", - "husky": "^8.0.3", - "postcss": "^8.4.49", - "semantic-release": "^25.0.3", - "tailwindcss": "^4.1.18", - "typescript": "^5.9.3", - "vite": "^7.3.1", - "vite-plugin-dts": "^4.5.4", - "vue": "^3.5.28", - "vue-tsc": "^3.2.4" - }, - "license": "MIT", - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "peerDependenciesMeta": { - "tailwindcss": { - "optional": true - } - } -} +{ + "name": "coderocket-ui", + "version": "0.1.0", + "private": true, + "type": "module", + "license": "MIT", + "packageManager": "pnpm@12.4.2", + "engines": { + "node": ">=24" + }, + "scripts": { + "build": "node tooling/build.mjs", + "typecheck": "tsc --noEmit", + "test": "vitest run", + "check": "pnpm typecheck && pnpm build && pnpm test", + "legacy:build": "npm --prefix legacy/vue-tailwind-datepicker run build", + "legacy:docs": "npm --prefix legacy/vue-tailwind-datepicker run docs:build" + }, + "devDependencies": { + "@types/node": "22.20.3", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "esbuild": "0.28.2", + "prettier": "3.9.7", + "react": "19.3.0", + "react-dom": "19.3.0", + "typescript": "6.0.3", + "vitest": "5.0.1" + } +} diff --git a/packages/blocks/LICENSE b/packages/blocks/LICENSE new file mode 100644 index 0000000..96e3ffc --- /dev/null +++ b/packages/blocks/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Alexandre Le Corre + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/blocks/README.md b/packages/blocks/README.md new file mode 100644 index 0000000..8529dce --- /dev/null +++ b/packages/blocks/README.md @@ -0,0 +1,12 @@ +# CodeRocket blocks + +26 experimental interface patterns composed from `@coderocket/react`. MIT licensed. Import both style sheets: + +```tsx +import "@coderocket/react/styles.css"; +import "@coderocket/blocks/styles.css"; +``` + +Blocks accept typed data and callbacks. They do not supply authentication, payment processing, email delivery or storage; previews demonstrate local interaction only. Build from the repository root with `pnpm build` and use the workspace package in a React consumer. + +[Documentation](https://ui.coderocket.app/docs) · [Development guide](../../docs/DEVELOPMENT.md) diff --git a/packages/blocks/package.json b/packages/blocks/package.json new file mode 100644 index 0000000..728e9b8 --- /dev/null +++ b/packages/blocks/package.json @@ -0,0 +1,45 @@ +{ + "name": "@coderocket/blocks", + "version": "0.1.0", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "source": "./src/index.ts" + }, + "./showcase": { + "types": "./dist/showcase.d.ts", + "import": "./dist/showcase.js", + "source": "./src/showcase.tsx" + }, + "./styles.css": "./dist/styles.css" + }, + "scripts": { + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@coderocket/react": "workspace:*", + "@coderocket/specs": "workspace:*" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/elreco/coderocket-ui.git", + "directory": "packages/blocks" + }, + "homepage": "https://ui.coderocket.app/docs", + "files": [ + "dist", + "README.md", + "LICENSE" + ], + "sideEffects": [ + "**/*.css" + ], + "peerDependencies": { + "react": "^19.3.0", + "react-dom": "^19.3.0" + } +} diff --git a/packages/blocks/src/application.tsx b/packages/blocks/src/application.tsx new file mode 100644 index 0000000..27f770a --- /dev/null +++ b/packages/blocks/src/application.tsx @@ -0,0 +1,382 @@ +"use client"; +import { useState, type ComponentProps } from "react"; +import { + Sidebar, + Avatar, + Badge, + Breadcrumb, + Button, + Card, + Dialog, + Dropdown, + Field, + Input, + Switch, + Tabs, + Textarea, +} from "@coderocket/react"; +import { ActionForm, BlockCard, type FormAction } from "./common"; +export function AppSidebarBlock({ + workspace, + items, + accountName, +}: { + workspace: string; + items: ComponentProps["items"]; + accountName: string; +}) { + return ( + + + {accountName} + + } + /> + ); +} +export function AppHeaderBlock({ + breadcrumbs, + accountName, + onSearch, + onSignOut, +}: { + breadcrumbs: ComponentProps["items"]; + accountName: string; + onSearch: () => void; + onSignOut: () => void; +}) { + return ( +
+ +
+ + } + items={[{ label: "Sign out", onSelect: onSignOut }]} + /> +
+
+ ); +} +export function ProfileBlock({ + name, + email, + bio = "", + onSave, +}: { + name: string; + email: string; + bio?: string; + onSave: FormAction; +}) { + return ( + +
+ + Member +
+ + + + + + + + +