Skip to content

Version Packages - #1312

Merged
cody-dot-js merged 1 commit into
mainfrom
changeset-release/main
Jul 14, 2026
Merged

Version Packages#1312
cody-dot-js merged 1 commit into
mainfrom
changeset-release/main

Conversation

@ngrok-mantle-release-bot

@ngrok-mantle-release-bot ngrok-mantle-release-bot Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@ngrok/mantle@0.78.0

Minor Changes

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Add Breadcrumb, hierarchy-path navigation at @ngrok/mantle/breadcrumb following the WAI-ARIA APG breadcrumb pattern: six compound parts — Breadcrumb.Root (a <nav> landmark labeled "Breadcrumb" by default, overridable via aria-label for localization or multiple trails), Breadcrumb.List (an <ol> whose order conveys the hierarchy), Breadcrumb.Item (<li> crumbs), Breadcrumb.Link (a router-agnostic <a> that composes onto framework links like react-router's Link via asChild), Breadcrumb.Page (a <span> with aria-current="page" marking the current, non-link crumb), and Breadcrumb.Separator (a role="presentation" + aria-hidden divider defaulting to a caret icon, replaceable with custom children like a slash). Every part supports asChild. Documented at https://mantle.ngrok.com/components/navigation/breadcrumb. Purely additive — no changes to existing components.

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Add CenteredLayout — mantle's first published layout primitive, at @ngrok/mantle/centered-layout and documented at https://mantle.ngrok.com/layouts/centered-layout. It is a viewport-filling centered page flow for sign-in, sign-up, onboarding, 404, checkout, and other focused full-page states, consolidating the centered "auth shell" duplicated across ngrok's dashboard and login apps. Four parts: CenteredLayout.Root (the min-h-full flex frame), CenteredLayout.Header (an optional semantic <header> utility strip for account chips and close buttons — merge sticky top-0 z-10 via className to pin it to the window while the page scrolls), CenteredLayout.Body (the growing centered region — by convention the fully-styled brand mark is its first child, and the primary content follows as composed JSX; there is deliberately no Logo or Content part because they would own nothing), and CenteredLayout.Footer (a pinned semantic <footer> utility strip outside the centered region). Landmark semantics stay compositional: when the layout owns the document, compose mantle's Main directly in Body and pair a SkipToMainLink as the first child of Root. It owns structure only — app state never enters it; links, brand marks, and landmarks arrive as composed JSX. New export, purely additive: no impact on existing consumers.

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Add ThemeSwitcher and ThemeDropdownMenuRadioGroup at @ngrok/mantle/theme-switcher — the canonical picker UI over mantle's theme system (ThemeProvider + useTheme). ThemeSwitcher is a compact standalone picker: a ghost IconButton trigger (overridable appearance and accessible label props) with an SSR-safe icon — a Skeleton until hydration, then AutoThemeIcon matching the applied theme — that opens a DropdownMenu of the five themes. ThemeDropdownMenuRadioGroup is the five-theme DropdownMenu.RadioGroup it hosts, embeddable in any existing menu (e.g. an account-menu Theme submenu) so long as it renders inside a DropdownMenu.Content or DropdownMenu.SubContent. Documented at https://mantle.ngrok.com/components/forms/theme-switcher. This consolidates the near-identical theme-switcher copies across ngrok's apps (dashboard, login, docs site) onto one shipped, tested component.

Patch Changes

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Docs-only: correct Breadcrumb.Separator's JSDoc to describe the actual default children — the size-3.5 Icon-wrapped caret — after the sizing rework.

  • #1315 f9445f5 Thanks @cody-dot-js! - Add a unified size prop to the button family: Button gains size (xs | sm | md | lg | xl, default md) and IconButton's existing scale grows to match (lg and xl join xs | sm | md). The scale is shared — the same size name always renders the same box height on both components (xs 24px, sm 28px, md 36px, lg 40px, xl 48px) — and the new ButtonSize type is exported from @ngrok/mantle/button. SplitButton.Root also accepts size and drives both of its halves through context, so the primary action and menu trigger always share one height; SplitButton.PrimaryAction deliberately does not accept size. Button size has no effect when appearance="link" (link buttons inherit surrounding typography and have no box to size) and data-size is not emitted for link buttons. IconButton now always emits data-size (previously omitted when size was not passed); Button emits data-size too, and SplitButton.Root's wrapper div gains a data-size attribute. Only the box scales — typography and icon glyph size are the same at every size. Purely additive: the default md renders exactly what Button rendered before. See decisions/2026-07-13-button-size-and-intent-api.md.

  • #1288 9d988f2 Thanks @dependabot! - Bump runtime dependencies: @ariakit/react to 0.4.32, @tanstack/react-virtual to 3.14.6, and the Radix UI primitives to their latest patch releases (react-dialog 1.1.19, react-dropdown-menu 2.1.20, react-hover-card 1.1.19, react-popover 1.1.19, react-progress 1.1.12, react-select 2.3.3, react-slider 1.4.3, react-switch 1.3.3, react-tabs 1.1.17, react-tooltip 1.2.12). The tailwindcss peer range floor moves from ^4.3.1 to ^4.3.2.

  • #1310 21c8e35 Thanks @cody-dot-js! - Update every JSDoc @see link to the reorganized docs URLs. Component docs now live at mantle.ngrok.com/components/<category>/<name> (e.g. /components/actions/button); the old flat URLs permanently redirect, so previously published links keep working. Also fixes a handful of @see links that pointed at pages that never existed (/components/progress, /components/theme-provider, /components/button-group, /components/calendar). No runtime changes.

  • #1288 9d988f2 Thanks @dependabot! - MultiSelect.Content no longer applies Ariakit's body scroll lock when its trigger lives inside a mantle modal (Dialog, Sheet, AlertDialog) — the modal already locks body scroll. Starting with @ariakit/react 0.4.30, the redundant lock snapshotted the body's inline style (including the modal's transient pointer-events: none) and re-applied that stale snapshot on the animation frame after unmount, permanently freezing the page after closing a modal that contained an opened multi-select. Consumers can still override via the preventBodyScroll prop.

  • #1310 21c8e35 Thanks @cody-dot-js! - Fix incorrect RadioGroup JSDoc @example blocks: the change handler is onChange (Headless UI), not onValueChange; the namespace object is not renderable (<RadioGroup.Root>, not <RadioGroup>); and RadioGroup.ButtonGroup renders the radio group itself, so the examples no longer nest it inside RadioGroup.Root — that composition binds the buttons to an inner, uncontrolled group and silently ignores outer value/onChange props. Documentation only, no runtime changes.

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Slot now concatenates data-slot values in DOM order instead of letting the child clobber the composing parent's: the parent part's slot chain comes first, then the child's own (e.g. data-slot="breadcrumb-item breadcrumb-page"). Parts that join their incoming data-slot prop with their own slot name (Breadcrumb and CenteredLayout do, more to follow) accumulate the full chain through arbitrarily deep asChild composition.

@ngrok/mantle-server-syntax-highlighter@1.1.7

Patch Changes

@ngrok/mantle-vite-plugins@1.0.17

Patch Changes

  • #1288 9d988f2 Thanks @dependabot! - Raise the optional vite peer range floor from ^8.0.16 to ^8.1.4 to match the workspace's Vite version.

  • #1313 2f5ddc9 Thanks @cody-dot-js! - Add breadcrumb, centered-layout, and theme-switcher to MANTLE_COMPONENT_NAMES so mantleTwSourcePlugin recognizes imports of the new @ngrok/mantle subpaths and emits their @source directives — without this, apps importing the new components would silently get no Tailwind classes for them.

  • Updated dependencies [9d988f2]:

    • @ngrok/mantle-server-syntax-highlighter@1.1.7

@vercel

vercel Bot commented Jul 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
mantle-docs Ready Ready Preview Jul 9, 2026 5:27pm

Request Review

@ngrok-ship

ngrok-ship Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

🚀 Deploy Previews

Updated 2026-07-14 03:40 UTC

App URL Commit Status
ngrok-mantle https://mantle-1312.ngrok-previews.ngrok.app 076d717 🟢 Running

@cody-dot-js
cody-dot-js merged commit 8664ed6 into main Jul 14, 2026
12 checks passed
@cody-dot-js
cody-dot-js deleted the changeset-release/main branch July 14, 2026 03:40
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.

1 participant