Skip to content

Migrate the Icons documentation to Astro and BUI - #2315

Merged
mdo merged 24 commits into
mainfrom
mdo/astro-docs-ui
Oct 8, 2026
Merged

mdo merged 24 commits into
mainfrom
mdo/astro-docs-ui

Conversation

@mdo

@mdo mdo commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Summary

  • migrate the Bootstrap Icons site to Astro using @twbs/bui@0.1.1 and Bootstrap v6-dev
  • rebuild the catalog, category, icon detail, usage, sprite, and font pages around responsive shared navigation and search
  • normalize the icon taxonomy and generated metadata, with route, sitemap, redirect, asset, and HTML validation
  • make Astro the sole documentation development, test, build, and deployment path; remove Hugo configuration, templates, assets, dependencies, and parity tooling
  • preserve shared icon metadata and static assets used by Astro, and prepare the package, generated font assets, and documentation for 1.13.2

Testing

  • npm ci
  • npm ci --prefix astro
  • npm run icons
  • npm test
  • npm run docs-test
  • npm run release-check

mdo added 20 commits September 29, 2026 10:56
Add a Bootstrap 6 Astro site alongside Hugo with shared navigation and
footer UI, an adapter for the existing icon sources, a filterable catalog,
and generated detail and SVG download routes.
Visitors can now browse and filter every icon, keep searches in the URL,
open complete icon detail pages, copy SVG, font, and CSS examples, and read
install, usage, sprite, and accessibility guidance on any screen size.

Build all public routes and package assets into _site-astro, add metadata,
404, robots, sitemap, theme, and validation support, and expose additive
root scripts while leaving the Hugo deployment and npm package contract in
place.
Move every Astro route onto the canonical shared docs layout and navigation,
then port catalog, detail, usage, sprite, font, and error pages to Bootstrap
6 components and utilities.

Compile Bootstrap 6 source through the v6 PostCSS pipeline so shared tokens,
responsive behavior, typography, dialogs, menus, and themes match the docs.
The published bootstrap-icons files contract remains unchanged.
The Astro site can now stand in for the Hugo deployment without dropping
legacy icon aliases or root favicon routes. Generate compatibility pages
from Hugo front matter and preserve local preview redirects.

Add timed builds, route and asset validation, HTML checks, Hugo output
comparison, and npm and release ZIP contract checks. Document the local
audit and keep production cutover gated on immutable shared dependencies.
The shared navigation exposed an oversized custom hero and uneven spacing
across the Icons site, especially when the layout collapsed on mobile.

Restore the production Icons hero structure with Bootstrap 6 components
and utilities, carry the same approach through catalog and content pages,
and retain custom CSS only for icon rendering and code overflow.
Browse icon categories from the homepage or static category pages, filter
within each metadata-backed set, and carry the query between category
links.

Restore the official Figma mark and replace the hero link pile with a
focused subnav. Add a documentation landing page and validate the new
route and sitemap contract.
Browse a small server-rendered icon page, then search or load more across
the complete catalog without blocking footer access. Add deterministic
static pagination for no-JavaScript browsing and preserve query/history
state across all-icon and category views.

Rebuild the documentation around the shared Bootstrap docs navigation and
table of contents, with anchored sections, copyable examples, expanded
usage guidance, responsive cards, and accessible category pills. Enforce
HTML, card-count, search-index, route, sitemap, and output-size budgets.
Give the category sidebar less space on wide screens and simplify its
navigation styling so the icon catalog has more room for content.
Route documentation snippets through @twbs/docs-ui so Icons uses the
same highlighting, toolbar, clipboard feedback, and responsive overflow
behavior as Bootstrap docs and the blog.

Keep HTML validation active while filtering CSS diagnostics from VNU,
which cannot parse Shiki's CSS Color 5 light-dark output.
Visitors can now search the Icons site from the shared navbar in both
development and production, resize catalog previews, and copy the
restored install command. The catalog now uses the v6 form-adorn,
spacing, and card patterns across desktop and mobile.

Generate and budget a focused Pagefind index, copy it into development,
and preserve the 48-card progressive catalog while keeping pagination
and category routes out of duplicate search results.
The icon catalog used oversized square previews, cramped its sidebar
against the grid, and left the filter toolbar visually unbalanced.

Use denser responsive columns and 16:9 previews, center both rendered
and appended icons, and apply Bootstrap gutters across every catalog
route. Bound and simplify the toolbar while preserving filtering,
pagination, and semantic size-button states.
Browse the catalog with install, Figma, version, and documentation
links alongside the category navigation on every catalog route.

Hide the existing hero with a display utility and reuse the canonical
Bootstrap docs sidebar scrolling behavior. Keep the same controls
available above categories in the mobile disclosure.
The icon catalog sidebar used full-size install and resource controls,
which consumed too much vertical space on desktop and mobile.

Size the copy control with generic Bootstrap utilities, use the small
Figma button variant, and keep resource links inline until space
requires wrapping.
Sidebar visitors currently see the Figma destination as a full-width
solid button beside other compact resource links.

Use Bootstrap's icon-link styling and size the official logo relative
to text, while keeping its default dimensions for other placements.
The icon catalog sidebar used centered install text and placed its Figma
link on a separate row from the other resources.

Align the install command to the start, size its copy icon through a
scoped component prop, and group the shortened resource links in one
wrapping flex row.
At desktop widths, the catalog grid extended through the shared
container gutters instead of lining up with the navbar and footer.
Long category headings could also force horizontal scrolling on mobile.

Use a gutter-token CSS grid inside the shared container, preserving the
sidebar-to-catalog gap without the row's negative margins. Let catalog
headings wrap when space is constrained.
Align category controls, icon labels, and catalog copy with the updated
docs UI styles. Size the Figma action consistently and keep appended
cards visually identical to server-rendered cards.
Replace the repeated category hero with a compact breadcrumb heading
inside the catalog. Narrow the desktop sidebar by 50px while preserving
the shared gutter, mobile drawer, and accessible category wrapping.
Move the icon catalog, detail pages, documentation, navigation, and search
to the shared BUI-powered Astro shell. Add the canonical icon taxonomy,
responsive catalog navigation, redirects, and deploy-asset validation.

Install BUI 0.1.1 and Bootstrap v6-dev from CI-safe sources, test and
compare Astro with Hugo in CI, and publish the Astro output on releases.
Prepare the generated package assets and documentation for version 1.13.2.
Comment thread astro/scripts/validate-build.mjs Fixed
mdo added 4 commits October 5, 2026 22:53
Netlify still ran the legacy Hugo build and published `_site`, so the PR
preview showed the production documentation instead of the migration.

Install the Astro workspace dependencies, build the Astro site, and publish
`_site-astro` with Node 24.
Make Astro the only documentation development, test, build, and deploy
path. Remove the Hugo configuration, templates, assets, dependencies,
comparison tooling, and stale migration guidance while retaining shared
icon metadata and static assets.

Also make release ZIP staging consistent across platforms and eliminate
the file-system race reported by CodeQL.
The icon size picker crowds the catalog filter on narrow screens and
causes the controls to overflow. Hide the picker below the medium
breakpoint so the search field has enough room.
Replace the Bootstrap development branch dependency with the published
Bootstrap 6 Alpha 1 npm release.
@mdo
mdo merged commit afbfcbc into main Oct 8, 2026
9 checks passed
@mdo
mdo deleted the mdo/astro-docs-ui branch October 8, 2026 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants