Skip to content

Commit af06f4b

Browse files
qunabuclaudesl01k
authored
PRO-1063: Migrate docs from VuePress 1 to Astro Starlight (#12195)
* Migrate docs from VuePress 1 to Astro Starlight (Phase 1 foundation) Replaces the VuePress 1 + Webpack 4 + Vue 2 stack with Astro 5 + Starlight. Benefits: - Dev server: Vite HMR replaces VuePress webpack dev + BrowserSync proxy - Build: drops NODE_OPTIONS=--openssl-legacy-provider and 8 GB memory cap - No patch-package, no Angular UMD pre-build step at install time What changes: - docs/package.json → Astro 5 + Starlight; utility scripts preserved - docs/tsconfig.json → Astro tsconfig strict preset - docs/astro.config.mjs (new) → Starlight config with sidebar builder, rehype-table-wrapper, and the Vite vuepress-preprocessor plugin - docs/src/content/docs (symlink → ../../content; no .md files moved) - docs/src/content/config.ts → docsSchema extended with VuePress keys - docs/src/sidebar.mjs → converts existing sidebar.js data to Starlight format; reads frontmatter titles via gray-matter - docs/src/plugins/vuepress-preprocessor.mjs → Vite pre-transform that converts :::: only-for, [[toc]], ::: tip/warning/danger, :::example markers, source-code-link, $withBase(), and @/framework/ links - docs/src/plugins/rehype-table-wrapper.mjs → wraps <table> in scrollable div - docs/src/styles/custom.css → Starlight CSS token overrides + VuePress HTML pattern styles (table-container, source-code-link, boxes-list) - docs/src/assets/logo.svg → copied from .vuepress/public/img/ What is NOT yet migrated (Phase 2+): - ::: example live code containers (render as plain code blocks for now) - Multi-framework per-URL routing (/react-data-grid/, /angular-data-grid/) - Algolia DocSearch (replace default Pagefind with starlightDocSearch plugin) - Vue 2 theme components (Navbar dropdowns, VersionsDropdown, etc.) - nginx redirect generation and Docker multi-version build pipeline To start the dev server: cd docs && npm install && npm run dev Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix Astro Starlight dev server startup errors Three issues resolved after first-run testing: 1. Remove "type":"module" from package.json content/sidebars.js uses require() (CommonJS). With "type":"module" Node treats all .js files as ESM, breaking createRequire() loading. .mjs files remain ESM regardless of the package type field. 2. Fix social config format (array → object) Starlight 0.32.x expects social as { github: 'url' }, not the older array-of-objects format. 3. Replace src/content/docs symlink with Astro 5 glob loader The symlink caused Vite to scan all files in content/ — including hundreds of .tsx/.jsx code-example snippets that import react, handsontable, hyperformula etc., none of which are installed in the docs workspace. Using glob({ base: new URL('../../content', ...) }) with a .md/.mdx-only pattern loads only markdown files; Vite never sees the example assets. Result: dev server starts in ~1.6 s with no errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add Astro Starlight UI components and interactive example features (Phase 2) - Add VersionsDropdown, SupportDropdown, Header, Footer, InfoBox, Sidebar, PageTitle, SiteTitle, and Head component overrides for Starlight - Add breadcrumbs and "Copy as Markdown" button above page title - Add live example loading indicator, source code toggle, StackBlitz and GitHub buttons per example - Add sidebar menuTag badges (new/updated) from frontmatter - Add Headway changelog widget and GitHub stars counter to header - Add page footer with social links, status dot, and copyright - Fix Handsontable.dom.addClass/removeClass undefined in demo examples by replacing with native classList calls Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Remove VuePress files and update ESLint config for Astro - Delete docs/.vuepress/ directory (322 tracked files) and patch files - Update docs/.eslintrc.js to standalone config without VuePress/Vue parser Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Update docs content and gitignore for Astro migration - Add .astro/ build cache to .gitignore - Update guide markdown files migrated from VuePress format to Astro - Fix binding-to-data example to use classList instead of Handsontable.dom Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix docs CI: remove docs-examples workflow, fix peer deps conflict - Remove docs-examples.yml (JS vs TS example check no longer applies to Astro) - Add --legacy-peer-deps to npm ci in docs-linter.yml to resolve react-star-rating-component peer dependency conflict with React 18 - Update docs-linter job name to reflect Astro (not VUE) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Update docs-staging CI and package.json for Astro migration - Fix npm ci peer deps conflict: add --legacy-peer-deps - Remove VuePress-era build steps (angular-wrapper copy, docs:api, docs:build:preview) - Update build command to npm run build (Astro) - Update deploy directory from .vuepress/dist to dist (Astro output) - Remove stale .vuepress scripts from docs/package.json Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix Angular JIT compilation error in production builds Import @angular/compiler explicitly before platformBrowserDynamic in example-runner.ts. Vite tree-shakes it from production bundles otherwise, causing "JIT compiler not available" failures for partially-compiled Angular libraries (@handsontable/angular-wrapper uses Ivy partial compilation). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix React duplicate instance error in production builds Add resolve.dedupe for react/react-dom/react-dom/client in Vite config. Out-of-root packages (wrappers/react-wrapper/) resolve react from their own node_modules tree during Rollup build, creating two React instances. This causes "Cannot read properties of null (reading 'useId')" hook dispatcher errors when createRoot and react-handsontable use different React copies. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix Vue 3 'createElementBlock' missing export error Change vue alias from vue/index.js (CJS) to vue/dist/vue.esm-bundler.js (ESM). The CJS entry cannot be natively imported as an ES module in the browser, so named exports like createElementBlock are not available when Vite serves out-of-root packages (e.g. @handsontable/vue3) that import vue without going through the dep optimizer. Applied to both the resolveMonorepoPackages resolveId hook and resolve.alias to ensure consistent resolution in dev and production. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz examples: Vue detection, extra deps, React wrapper name - Detect Vue examples by scanning imports for 'vue'/'@handsontable/vue3' instead of classifying all .js files as plain JavaScript - Add buildVueProject() with proper Vite + @vitejs/plugin-vue scaffold - Fix React wrapper package name: @handsontable/react → @handsontable/react-wrapper - Use node template for React (Vite-based) instead of create-react-app - Collect extra third-party imports (redux, react-colorful, etc.) from example source files at build time and pass as extraDeps in the JSON payload; client uses DOCS_DEPS versions for pinning - Apply extraDeps to all framework project builders - Add type="module" to JS/Vue index.html script tags Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix docs dev server after Astro 5→6 and Starlight 0.32→0.38 upgrade - Move content config from src/content/config.ts to src/content.config.ts (Astro 6 rejects the legacy location with LegacyContentConfigError) - Update social links syntax from object to array (Starlight 0.33+ breaking change) - Fix z.record() calls: Zod v4 requires two args (key + value type); z.record(z.unknown()) set keyType but left valueType undefined, crashing parseData for every content entry and producing empty routes - Fix StackBlitz framework detection: use directory path (/angular/, /react/, /vue/) instead of file extension so JS examples with a .ts TypeScript tab are no longer misidentified as Angular - Fix custom.css theme variables: Starlight 0.33+ wraps defaults in @layer starlight.base; unlayered :root rules always win over layered ones, so the gray-scale / white / black overrides blocked light-mode from ever applying. Remove those overrides and split accent colors into dark/light blocks using :root and :root[data-theme='light'] Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Docs UI polish: typography, code blocks, tables, sidebar, footer, micro-interactions Refine the docs site visual quality across content area, interactive examples, and footer. Add tighter heading letter-spacing with h2 section separators, hover-only content link underlines, rounded code blocks with inset shadows, styled markdown tables with uppercase headers and zebra rows, small-caps sidebar group headings, pagination card lift effect, card-like callouts, brand-tinted text selection, smooth scrolling, and accent focus outlines. Interactive examples get elevated shadows, unified toolbar background, button hover fills, and refined code panel typography. Footer gets more breathing room, smaller nav links with accent hover background, and social icon lift. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix StackBlitz JS examples: use node template + Vite for npm resolution The 'javascript' StackBlitz template is CDN-based and cannot resolve npm package imports (import Handsontable from 'handsontable/base'). Switch all frameworks to the 'node' template which runs Vite, matching the existing React/Vue setup. For vanilla JS examples: - Add vite + start/build scripts to package.json - Add src/main.js entry that imports Handsontable CSS via npm then re-imports the user's index.js, so Vite bundles CSS correctly - Remove the broken node_modules/ href link from index.html Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz CSS: load handsontable styles via CDN link instead of npm import Vite 8 (rolldown) strictly enforces the package exports field and rejects bare CSS imports from handsontable because the dist CSS paths are not listed under module/browser/import conditions. Fix by injecting a versioned unpkg CDN <link> tag in index.html for all three framework project builders (JS, React, Vue), removing the JS-side CSS imports entirely. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz JS: use ../index.js in src/main.js (root vs src path) index.js lives at the project root, not inside src/, so the import path from src/main.js must be ../index.js (and ../styles.css). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz React/Vue: add vite and plugin deps to package.json vite and @vitejs/plugin-react / @vitejs/plugin-vue were missing from the generated package.json, causing "command not found: vite" on StackBlitz. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz Angular: upgrade to Angular 21, add full project scaffold - Bump all @angular/* deps from 16.x to 21.x; add @angular/router, tslib, @angular/cli, @angular/compiler-cli, @angular-devkit/build-angular, typescript - zone.js bumped to ~0.15.0 (Angular 21 requirement) - Generate angular.json (app-builder + dev-server), tsconfig.json, src/index.html, src/main.ts so `ng serve` works out of the box on StackBlitz - Load Handsontable CSS via CDN <link> (same pattern as JS/React/Vue) - Component placed at src/app/app.component.ts / .html (proper Angular CLI paths) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz Angular: bump TypeScript to ~5.9.0 for Angular 21.2+ Angular 21.2 requires TypeScript >=5.9 <6.1; 5.7 caused a compiler error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz Angular: parse /* file: */ sections, strip skip-in-compilation blocks The docs Angular example .ts files embed multiple sections separated by /* file: name */ ... /* end-file */ markers. The previous builder dumped all of them into a single file causing duplicate class declarations and self-referential imports. - Add parseAngularSourceFiles() to split into app.component.ts / app.module.ts - Add extractAngularSelector() to use the real component selector in index.html - NgModule examples (has app.module.ts) now bootstrap via platformBrowserDynamic - Standalone examples fall back to bootstrapApplication with the detected class name - Strip /* start:skip-in-compilation */ ... /* end:skip-in-compilation */ blocks Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix StackBlitz Angular: re-inject component import into app.module.ts The component class import in app.module.ts lived inside a /* start:skip-in-compilation */ block and was stripped by the parser. Re-add it explicitly so declarations/bootstrap in @NgModule resolve. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Replace boxes-list custom code with Starlight-styled card grid component Transform <div class="boxes-list"> markdown blocks into ht-card-grid/ht-link-card HTML via the vuepress preprocessor and framework-loader, removing all custom boxes-list CSS in favor of Starlight design token-based card styles. Also includes: sidebar changelog entries, expressive code theme config, API sidebar restructuring, UI component polish, and interactive example styling improvements. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update docs: page actions, changelog pages, CSS polish, LTS images - Add starlight-page-actions plugin (Copy Markdown, Open in AI, Share) - Integrate action buttons into PageTitle breadcrumbs bar - Add markdown routes integration for View Markdown feature - Add changelog pages for versions 7–17 - Fix LTS page image paths (add /docs base prefix) - Add theme-aware image CSS (img-light/img-dark toggle) - Fix card grid equal sizing (neutralize content-gap margin) - Polish CSS: table styles, code groups, sidebar, breadcrumbs alignment - Update sidebar with changelog entries and section restructuring Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add Starlight Steps and FileTree components, copy button UX, CSS polish - Rehype plugin transforms numbered h2/h3 headings into real Starlight Steps (<ol class="sl-steps">) with connecting lines and nesting - Transform <div class="dom-tree"> to <starlight-file-tree> elements - Code block copy button: styled to match Copy Markdown, icon swaps to checkmark on click, visible only on hover - Terminal header: remove background and border - Search button bg, sidebar/TOC alignment, active link styling tweaks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: hooks example styling, theme sync, CSS polish, migration steps - Style hooks example: event log panel, 3-column checkbox grid, Starlight aside tip - Add CSS color-scheme sync between docs theme toggle and Handsontable grid - Polish interactive example toolbar, tabs, and code sections - Improve framework-loader: HTML preview injection, aside link conversion, card grid icons - Fix migration steps rehype plugin for Starlight compatibility - Refine header border and custom gray palette Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: collapsible code sections, card grids, border fixes, nav polish - Add @expressive-code/plugin-collapsible-sections with collapse support in @[code] syntax - Collapse data arrays in demo and binding-to-data examples - Convert Related articles/API reference sections to card grid layout - Remove backticks from card grid link titles, add text-overflow ellipsis - Restructure .hot-example borders (each child manages own left border) - Fix nav link active state with real borders instead of box-shadow - Set heading/strong font-weight to 500 - Convert API method lists to Starlight Steps - Add main padding-bottom 4rem - Fix code block horizontal scroll background Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: JS/TS tab dropdown, global checkbox styling, card grids, copy button fix - Merge JS+TS code tabs into single JavaScript dropdown selector - Add custom dropdown matching header framework/version dropdowns - Move checkbox styles to global scope for all examples - Convert callbacks list and plugin options to card grid blocks - Fix copy button position in hot-example and code-group blocks - Bump framework-loader to v17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: theme dropdown, inline code in asides, support menu, steps, CSS polish - Replace native select with custom dropdown on themes page (color dots, upward menu) - Convert backtick code to <code> tags inside aside blocks in framework-loader - Add h4 step heading detection in rehype-migration-steps - Scope checkbox CSS to exclude .handsontable inputs - Add grid-size example critical CSS - Update Support dropdown: remove StackOverflow/GitHub Discussions, add GitHub Issues - Sidebar and ToC line-height set to 20px - Various guide content updates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: custom filter dropdown, loader cache fix, styling guide polish Replace native <select> with custom styled dropdown in column-filter quick filter example (JS/TS/React). Add filter dropdown CSS to global stylesheet. Bump framework-loader version to force cache invalidation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: fix broken demos, selection dropdown, pagination/sorting/renderer polish Fix broken examples using Handsontable.renderers.TextRenderer() with base import by switching to direct textRenderer import from specific path. Replace native <select> with custom dropdown on selection page. Polish pagination, sorting, and cell-renderer examples across all frameworks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: sitemap, dev badge, search toggle, 3rd-party scripts, peer dep fix - Add @astrojs/sitemap integration for sitemap.xml generation during build - Show "dev" badge next to logo when BUILD_MODE is not production - Hide search in non-production builds (Algolia does not crawl dev) - Add 3rd-party scripts (Sentry, Cookiebot, Headway, VWO, GTM, HotJar) - Fix react-star-rating-component peer dep conflict with pnpm/npm overrides - Add symlink src/content/docs for starlight-page-actions compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Docs: fix CodeQL sanitization warning, add missing exceljs dependency - Loop HTML tag stripping in framework-loader to handle residual fragments that a single-pass replace may leave behind (CodeQL high severity) - Add exceljs to docs dependencies (used by export-to-excel examples) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Docs: create src/content/docs symlink programmatically for CI The starlight-page-actions plugin hardcodes src/content/docs/ as the static-copy source path. This project stores content at docs/content/. Create the symlink in astro.config.mjs so it works on CI (not just local). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Docs: custom dropdown for numeric/date cell type demos, cell-type page cleanup Replace native <select> elements with custom theme-dropdown components on numeric-cell-type and date-cell-type demo pages (JS, TS, React, Angular). Add code collapse ranges for data/columns/localeOptions arrays. Fix cell-type page broken demo imports and remove duplicated sections. Add max-height scroll to dropdown menu CSS. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: fix header layout shift from GitHub stars, sidebar active link color - Reserve space for GitHub stars count to prevent header jump on async load - Use theme-aware accent color for active sidebar link (was #fff on white bg) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Docs: reset demo button, code collapse, IME/loading/accessibility page fixes, cell-type cleanup - Add reset demo button to example toolbar (icon + handler in example-runner.ts) - Collapse data/columns arrays in code blocks on loading page - Fix IME support page: VuePress tip → Starlight aside, broken video path, Related API boxes - Style example buttons, smaller description text in loading demo - Accessibility page demo cleanup and focus-scopes CSS improvements - Cell type pages: autocomplete, dropdown, handsontable, multiselect, time — examples and docs cleanup - Dialog page new example, formula-calculation and custom-shortcuts page updates - Vue3 installation and language-change example fixes - Footer, SiteTitle, vuepress-preprocessor, custom.css refinements - Bump LOADER_VERSION to v28 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: remove VWO, fix ISO dates, sidebar link color, table-in-pre style, z-index - Remove VWO (Visual Website Optimizer) integration that caused SyntaxError - Fix favicon config (boolean → string) for Starlight compatibility - Convert demo dates from DD/MM/YYYY to ISO 8601 YYYY-MM-DD for intl-date cell type - Fix sidebar active link color: use --sl-color-white instead of --sl-color-text-accent - Add pre .table-container transparent background and no border - Add .ht-root-wrapper z-index: 1 - Bump LOADER_VERSION to v28 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: details containers, steps components, boxes-list, CSS polish - Add convertDetailsContainers to both vuepress-preprocessor and framework-loader to convert ::: details blocks to <details>/<summary> - Convert numbered import lists to sl-steps on modules page - Convert Related sections to boxes-list on performance, bundle-size, software-license, and custom-plugins pages - Add <details> collapsible section CSS styling - Fix ::selection color, nav height, dropdown overflow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: source-code-link absolute positioning, GitHub icon, hover fix Move source-code-link into heading via client-side script for reliable absolute positioning. Add GitHub icon, border styling, and prevent border-top from disappearing on hover. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: add 17.0.1 changelog entry from develop branch Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: fix file-tree/details chevrons, migration guide sub-steps, file-tree styling - Fix details chevrons by resetting Starlight's SVG-mask marker cascade - Exclude file-tree from general details styles via :not(:where(.not-content *)) - Add custom border-based chevrons for file-tree with proper rotation - Convert 14.6-to-15.0 migration step 3 sub-steps to sl-steps - Bold "Old/New DOM structure" headers in 15.3-to-16.0 migration - File-tree: accent hover line, tree-entry padding, ul margin adjustment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: recipes example-first layout, sidebar overview links, CSS polish - Move recipe examples above overview text for immediate visibility - Remove [[toc]] from recipe pages, add code collapse ranges - Add sidebar overview links for recipe groups, expand by default - Fix iframe height override for CodeSandbox embeds - Fix focus-visible outline leaking into Handsontable/portal elements - Adjust h1/h2 margins for better spacing - Feedback editor button display: block fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: add 'multiselect' to registerAllRenderers expected renderer list The multiSelectRenderer was added to registerAllRenderers() in renderers/index.js but the unit test snapshot was not updated, causing CI to fail. https://claude.ai/code/session_01TXcSrMuefX32DBBJNwtmV8 * revert: remove non-docs changes from renderers/index.js and registerAllRenderers test This PR is docs-only. Reverts source code changes to match develop. https://claude.ai/code/session_01JEvhgEBEpzdwEgph9ypr8t * Docs: a11y improvements — focus trap, keyboard nav, ARIA attributes, CSS fixes - Add reusable a11y-utils.ts (focus trap, dropdown keyboard navigation) - Header: dialog semantics on mobile overlay, aria-controls, aria-current on mobile nav/fw links, breadcrumbs as <nav>, focus management on open/close, hamburger aria-label toggle, sidebar aria-hidden on collapse, GitHub stars aria-live, event listener cleanup for view transitions - Dropdowns: Arrow/Home/End/Enter/Escape keyboard nav on Support, Versions, FrameworkSwitcher; tabindex=-1 on menu items; FrameworkSwitcher bundled script - CSS: skip-link z-index above header, focus indicators on theme/filter dropdowns and filterField, comprehensive prefers-reduced-motion, 44px touch targets, .sr-only utility, ToC active link uses var(--sl-color-white) - Footer: status dot sr-only text, external link labels - PageSidebar: aria-live region for copy button feedback, external link labels - SiteTitle: dev-badge aria-label Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: fix dropdown ARIA semantics, add inert attribute, fix subheader height - Change listbox/option roles to menu/menuitem in FrameworkSwitcher and VersionsDropdown (matches SupportDropdown pattern) - Add inert attribute to main content when mobile overlay or ToC panel is open, preventing assistive tech from reaching background content - Increase subheader height to 2.75rem (44px) on both mobile and tablet to properly accommodate 44px touch target buttons - Hide page breadcrumbs on mobile/tablet (subheader already shows them) - Update a11y-utils keyboard handler for direct <a> menuitem focus Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: refactor custom.css into modular 7-1 structure, add a11y conformance report Split the 2,398-line monolith custom.css into 18 focused modules organized by concern (base, layout, components, mobile, overrides, utilities). The entry point now uses @import statements resolved by Vite at build time. Also adds accessibility conformance report page and miscellaneous component fixes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Docs: reorganize sidebar IA, fix CSS collisions, clean up example styles - Reorganize sidebar: create Data management section, merge Navigation + Accessibility, merge Dialog into Accessories and menus, reorder sections for better IA - Fix CSS ID collisions between selection and hooks examples - Remove redundant per-example CSS from hooks demo (covered by global styles) - Scope bare ID selectors to per-example CSS files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: replace VuePress references with Astro Starlight, remove legacy config - Update CLAUDE.md, AGENTS.md, .ai/STRUCTURE.md, and docs/CLAUDE.md to reflect that the documentation site uses Astro Starlight (not VuePress) - Remove orphaned docs/.vuepress/config.js and docs/.vuepress/tools/jsdoc-convert/configuration.mjs which are legacy VuePress artifacts no longer used by the Astro-based site https://claude.ai/code/session_01328PkwSvxjyDw9cA1v8jTC --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Marek Martuszewski <marek@fachowo.co>
1 parent 3bad25e commit af06f4b

821 files changed

Lines changed: 30643 additions & 45941 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ai/STRUCTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ handsontable-develop/
2121
│ ├── react-wrapper/ # @handsontable/react-wrapper
2222
│ ├── angular-wrapper/ # @handsontable/angular-wrapper
2323
│ └── vue3/ # @handsontable/vue3
24-
├── docs/ # VuePress documentation site (Node 20)
24+
├── docs/ # Astro Starlight documentation site (Node 20)
2525
├── examples/ # Code examples
2626
├── visual-tests/ # Playwright visual regression tests
2727
├── .changelogs/ # Changelog entry mechanism

.github/workflows/docs-examples.yml

Lines changed: 0 additions & 55 deletions
This file was deleted.

.github/workflows/docs-linter.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ concurrency:
1515

1616
jobs:
1717
lint:
18-
name: JS & CSS & VUE
18+
name: JS & CSS & Astro
1919
runs-on: ubuntu-latest
2020
steps:
2121
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # https://github.com/actions/checkout/releases/tag/v6.0.2
@@ -32,7 +32,7 @@ jobs:
3232

3333
- name: Install Documentation dependencies
3434
run: |
35-
cd docs/ && npm ci --no-audit
35+
cd docs/ && npm ci --no-audit --legacy-peer-deps
3636
3737
- name: Install Handsontable dependencies
3838
run: |

.github/workflows/docs-staging.yml

Lines changed: 8 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -94,57 +94,27 @@ jobs:
9494
9595
- name: Install the documentation dependencies
9696
run: |
97-
npm ci
97+
npm ci --legacy-peer-deps
9898
9999
- name: Install the monorepo dependencies and build the packages
100100
run: |
101101
cd ..
102102
pnpm install
103103
npm run all build -- --e examples visual-tests
104104
105-
mkdir -p docs/.vuepress/public/@handsontable
106-
107-
# cp -r ./wrappers/angular-wrapper docs/.vuepress/public/@handsontable
108-
# cp -r ./wrappers/react-wrapper docs/.vuepress/public/@handsontable
109-
# cp -r ./wrappers/vue3 docs/.vuepress/public/@handsontable
110-
111-
cp -r ./wrappers/angular-wrapper/dist/hot-table docs/.vuepress/public/@handsontable/
112-
mv docs/.vuepress/public/@handsontable/hot-table docs/.vuepress/public/@handsontable/angular-wrapper
113-
114-
ls -la docs/.vuepress/public/@handsontable/angular-wrapper
115-
116-
- name: Generate API references
117-
run: |
118-
npm run docs:api
119-
120105
- name: Build docs (for staging preview)
121106
run: |
122-
npm run docs:build:preview
107+
npm run build
123108
124109
- name: Build and deploy the preview to Netlify
125110
run: |
126111
cd netlify
127-
mkdir -p docs/docs
128-
129-
mv ../.vuepress/dist/docs docs
130-
131-
./build_previous_versions.sh
132-
echo "Building the documentation..." >> docs/index.html
133-
cp _dev_headers docs/_headers
134-
cp _redirects docs/_redirects
135-
cp docs/docs/404.html docs/404.html
112+
mkdir -p deploy/docs
136113
137-
rm -rf ../../handsontable/node_modules
138-
rm -rf ../../handsontable/tmp
139-
cp -r ../../handsontable docs/docs
114+
cp -r ../dist/. deploy/docs/
140115
141-
mkdir -p docs/docs/@handsontable
142-
#rm -rf ../../@handsontable/angular-wrapper/node_modules
143-
rm -rf ../../@handsontable/react-wrapper/node_modules
144-
rm -rf ../../@handsontable/vue3/node_modules
145-
#cp -r ../../wrappers/angular-wrapper docs/docs/@handsontable/
146-
cp -r ../../wrappers/react-wrapper docs/docs/@handsontable/
147-
cp -r ../../wrappers/vue3 docs/docs/@handsontable/
116+
cp _dev_headers deploy/_headers
117+
cp _redirects deploy/_redirects
148118
149119
- name: Publish preview to Netlify
150120
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # https://github.com/nick-fields/retry/releases/tag/v3.0.2
@@ -153,9 +123,8 @@ jobs:
153123
max_attempts: 3
154124
retry_on: error
155125
command: |
156-
cd docs
157-
cd netlify
158-
netlify deploy --prod --build --context production
126+
cd docs/netlify
127+
netlify deploy --prod --dir deploy
159128
env:
160129
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_PREVIEW_AUTH_TOKEN }}
161130
NETLIFY_SITE_ID: ${{ env.NETLIFY_SITE_ID }}

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,7 @@ docs/.env
2424
.netlify
2525

2626
*.nupkg
27+
28+
# Playwright screenshots (created by Claude Code sessions)
29+
/*.png
30+
/docs/*.png

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ These are the most frequent mistakes. Read this section first.
7979
| `@handsontable/vue3` | `wrappers/vue3/` | Vue 3 wrapper |
8080
| `handsontable-visual-tests` | `visual-tests/` | Playwright visual regression tests |
8181
| `handsontable-examples-internal` | `examples/` | Code examples |
82-
| `handsontable-documentation` | `docs/` | VuePress docs site (requires Node 20) |
82+
| `handsontable-documentation` | `docs/` | Astro Starlight docs site (requires Node 20) |
8383

8484
---
8585

docs/.eslintignore

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,2 @@
11
node_modules
2-
!.vuepress
3-
.vuepress/public/handsontable
4-
.vuepress/public/@handsontable
5-
.vuepress/public/scripts/hot-versions.js
6-
.vuepress/dist
7-
82
netlify/docs

docs/.eslintrc.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
11
module.exports = {
2-
extends: ['../.eslintrc.js'],
3-
parser: 'vue-eslint-parser',
2+
root: true,
3+
env: {
4+
browser: true,
5+
commonjs: true,
6+
es6: true,
7+
node: true,
8+
},
49
parserOptions: {
5-
parser: '@babel/eslint-parser',
6-
sourceType: 'module'
10+
ecmaVersion: 2022,
11+
sourceType: 'module',
712
},
813
ignorePatterns: [
914
'**/guides/**/*.js',
1015
'**/guides/**/*.ts',
1116
'**/guides/**/*.jsx',
1217
'**/guides/**/*.tsx',
13-
'**/public/scripts/prebuilt-umd/*.*',
18+
'**/public/**/*',
1419
'**/recipes/**/*.js',
1520
'**/recipes/**/*.ts',
1621
'**/recipes/**/*.jsx',
1722
'**/recipes/**/*.tsx',
23+
'**/*.astro',
24+
'**/scripts/**/*.ts',
25+
'**/content/config.ts',
1826
],
1927
rules: {
2028
'no-restricted-globals': 'off',
2129
'import/no-unresolved': 'off',
22-
'jsdoc/check-param-names': 'off',
23-
'jsdoc/require-param': 'off',
2430
},
2531
overrides: [
2632
{
27-
files: ['*.mjs'],
28-
rules: {
29-
'import/extensions': 'off'
30-
}
33+
files: ['**/*.mjs'],
34+
parserOptions: {
35+
sourceType: 'module',
36+
ecmaVersion: 2022,
37+
},
3138
},
3239
{
33-
files: ['SvgFrameworkIcons.vue', 'Navbar.vue', '.vuepress/3rdparty-scripts.js', 'CopyMarkdown.vue'],
34-
rules: {
35-
'max-len': 'off'
36-
}
40+
files: ['**/*.ts'],
41+
parserOptions: {
42+
sourceType: 'module',
43+
ecmaVersion: 2022,
44+
},
3745
},
38-
{
39-
files: ['content/recipes/**/*.ts', 'content/recipes/**/*.tsx'],
40-
rules: {
41-
'no-undef': 'off'
42-
}
43-
}
4446
]
4547
};

docs/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,9 @@ report-check-links.xlsx
3232
/playwright-report/
3333
/blob-report/
3434
/playwright/.cache/
35+
36+
# Playwright screenshots (created by Claude Code sessions)
37+
/*.png
38+
.astro/
39+
/public/_md/
40+
/src/content/docs

docs/.vuepress/3rdparty-scripts.js

Lines changed: 0 additions & 122 deletions
This file was deleted.

0 commit comments

Comments
 (0)