Commit af06f4b
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
- .ai
- .github/workflows
- docs
- .vuepress
- code-structure-builder
- components
- containers
- example-without-tabs
- examples
- helpers
- sourceCodeLink
- handsontable-manager
- plugins
- dump-docs-data
- dump-redirect-page-ids
- extend-page-data
- generate-nginx-redirects
- generate-nginx-variables
- include-code-snippet
- markdown-it-conditional-container
- markdown-it-header-anchor
- markdown-it-header-injection
- markdown-it-include-code-snippet
- markdown-it-table-wrapper
- raw-markdown
- public
- fonts/aeonik-pro
- scripts
- json
- theme
- components
- layouts
- styles
- abstract
- base
- components
- layout
- theme
- templates
- tools
- angular-umd-builder
- example-checker
- jsdoc-convert
- integrations/jsdoc-to-markdown
- dmd/partials
- all-docs
- docs
- body
- params
- properties
- member-index
- main-index
- global-index
- module-index
- parser
- renderer
- postProcessors
- preProcessors
- content
- api
- guides
- accessibility
- accessibility-conformance-report
- accessibility
- angular
- javascript
- react
- cell-features
- autofill-values
- clipboard
- comments
- conditional-formatting
- angular
- javascript
- react
- disabled-cells
- formatting-cells
- javascript
- merge-cells
- selection
- angular
- javascript
- react
- text-alignment
- cell-functions
- cell-editor
- cell-function
- cell-renderer
- angular
- javascript
- react
- cell-validator
- custom-cells
- cell-types
- autocomplete-cell-type
- javascript
- react
- cell-type
- javascript
- checkbox-cell-type
- date-cell-type
- angular
- javascript
- react
- dropdown-cell-type
- javascript
- react
- handsontable-cell-type
- javascript
- react
- multiselect-cell-type
- numeric-cell-type
- angular
- javascript
- react
- password-cell-type
- select-cell-type
- time-cell-type
- angular
- javascript
- react
- columns
- column-filter
- javascript
- react
- column-freezing
- column-groups
- column-header
- column-hiding
- column-moving
- column-summary
- column-virtualization
- column-width
- react-hot-column
- dialog
- dialog
- angular
- javascript
- react
- loading
- angular
- javascript
- react
- formulas/formula-calculation
- getting-started
- angular-hot-instance
- binding-to-data
- javascript
- configuration-options
- demo
- angular
- javascript
- react
- events-and-hooks
- javascript
- grid-size
- installation
- introduction
- license-key
- react-methods
- react-redux
- saving-data
- javascript
- react
- server-side-data
- angular
- javascript
- react
- integrate-with-vue3
- vue3-custom-editor-example
- vue3-custom-id-class-style
- vue3-custom-renderer-example
- vue
- vue3-formulas-example
- vue3-hot-column
- vue3-hot-reference
- vue3-installation
- vue3-language-change-example
- vue
- vue3-modules
- vue3-setting-up-a-language
- vue3-simple-example
- vue3-vuex-example
- vue
- internationalization
- ime-support
- language
- layout-direction
- locale
- optimization
- batch-operations
- bundle-size
- performance
- rows
- row-freezing
- row-header
- row-height
- row-hiding
- row-moving
- row-parent-child
- row-prepopulating
- angular
- javascript
- row-trimming
- row-virtualization
- rows-pagination
- angular
- javascript
- react
- rows-sorting
- angular
- javascript
- security/security
- styling
- design-system
- legacy-style
- theme-customization
- themes
- angular
- javascript
- react
- technical-specification
- documentation-license
- software-license
- supported-browsers
- third-party-licenses
- tools-and-building
- custom-builds
- custom-plugins
- modules
- packages
- testing
- upgrade-and-migration
- changelog-10
- changelog-11
- changelog-12
- changelog-13
- changelog-14
- changelog-15
- changelog-16
- changelog-17
- changelog-7
- changelog-8
- changelog-9
- changelog
- deprecation-policy
- long-term-support
- migrating-from-10.0-to-11.0
- migrating-from-11.1-to-12.0
- migrating-from-12.4-to-13.0
- migrating-from-13.1-to-14.0
- migrating-from-14.6-to-15.0
- migrating-from-15.3-to-16.0
- migrating-from-16.0-to-16.1
- migrating-from-16.2-to-17.0
- migrating-from-7.4-to-8.0
- migrating-from-8.4-to-9.0
- migrating-from-9.0-to-10.0
- versioning-policy
- recipes
- cell-types
- color-picker
- colorful-picker
- feedback-react
- feedback
- javascript
- flatpickr
- guide-color-picker-angular
- guide-datepicker-angular
- guide-feedback-angular
- guide-rating-angular
- moment-date
- moment-time
- numbro
- pikaday
- rating
- react-rating
- themes
- custom-theme
- patches
- public
- examples
- img
- examples
- pages
- clipboard
- ime-support
- introduction
- svg
- pages
- clipboard
- ime-support
- introduction
- scripts/json
- svg
- src
- assets
- components
- plugins
- scripts
- styles
- base
- components
- layout
- mobile
- overrides
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
97 | | - | |
| 97 | + | |
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | 105 | | |
121 | 106 | | |
122 | | - | |
| 107 | + | |
123 | 108 | | |
124 | 109 | | |
125 | 110 | | |
126 | 111 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
| 112 | + | |
136 | 113 | | |
137 | | - | |
138 | | - | |
139 | | - | |
| 114 | + | |
140 | 115 | | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
| 116 | + | |
| 117 | + | |
148 | 118 | | |
149 | 119 | | |
150 | 120 | | |
| |||
153 | 123 | | |
154 | 124 | | |
155 | 125 | | |
156 | | - | |
157 | | - | |
158 | | - | |
| 126 | + | |
| 127 | + | |
159 | 128 | | |
160 | 129 | | |
161 | 130 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
82 | | - | |
| 82 | + | |
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | 2 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
4 | 9 | | |
5 | | - | |
6 | | - | |
| 10 | + | |
| 11 | + | |
7 | 12 | | |
8 | 13 | | |
9 | 14 | | |
10 | 15 | | |
11 | 16 | | |
12 | 17 | | |
13 | | - | |
| 18 | + | |
14 | 19 | | |
15 | 20 | | |
16 | 21 | | |
17 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
18 | 26 | | |
19 | 27 | | |
20 | 28 | | |
21 | 29 | | |
22 | | - | |
23 | | - | |
24 | 30 | | |
25 | 31 | | |
26 | 32 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
31 | 38 | | |
32 | 39 | | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
37 | 45 | | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | 46 | | |
45 | 47 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
This file was deleted.
0 commit comments