{
	"package": "@ngrok/mantle",
	"origin": "https://mantle.ngrok.com",
	"versions": [
		{
			"version": "0.73.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add `Field.LabelText` — static, label-styled text for `Field.Item` rows that do **not** caption a focusable form control. Renders a `<p>` (not a `<label>`) with the same `text-strong text-sm font-medium` typography as `Field.Label`, so read-only rows (owner cards, derived values, system-managed metadata inside sheets and detail panels) compose cleanly alongside real form fields without misrepresenting themselves as control captions. Supports `asChild` for polymorphic rendering. For rows with a real focusable control, keep using `Field.Label` so the label-to-control association stays wired.\n\n```tsx\n<Field.Item name=\"owner\">\n\t<Field.LabelText>Owner</Field.LabelText>\n\t<CredentialOwnerCard owner={owner} />\n\t<Field.Description>The user or service user that owns this API key.</Field.Description>\n</Field.Item>\n```",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1203",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f248067bf0abbff57539710406a37a396aeb7d93",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.73.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Make `Field.Item` the single source of truth for the control's `name`, `id`, `aria-*`, and `validation`. When a control is wrapped in `Field.*`, all four are owned by the surrounding `Field.Item` and overwrite anything passed on the child or `Field.Control`. To override, set the prop on `Field.Item` itself; to opt out of the contract entirely, render the control without `Field.Control`. The pit of success is \"use `Field.*` and let it wire everything up.\"\n\n**Required `name` on `Field.Item`, automatic id/htmlFor**\n- `Field.Item` now requires a `name: string` prop.\n- `Field.Control` splats the surrounding `Field.Item`'s `name` and a stable generated `id` onto its focusable child. Any `name` or `id` passed on the child is intentionally overwritten.\n- `Field.Label` defaults its `htmlFor` to that same generated id when rendered inside a `Field.Item`, so labels wire to their controls without a manual `htmlFor` / `id` pair (or a separate `useId()` call). Pass `htmlFor` on `Field.Label` to opt out (e.g. when the focusable element is rendered outside of `Field.Control`).\n\nThis is a particularly tight fit with TanStack Form's `field.name`:\n\n```tsx\n<form.Field name=\"email\">\n\t{(field) => (\n\t\t<Field.Item name={field.name}>\n\t\t\t<Field.Label>Email</Field.Label>\n\t\t\t<Field.Control>\n\t\t\t\t<Input\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\tvalue={field.state.value}\n\t\t\t\t\tonBlur={field.handleBlur}\n\t\t\t\t\tonChange={(event) => field.handleChange(event.target.value)}\n\t\t\t\t/>\n\t\t\t</Field.Control>\n\t\t</Field.Item>\n\t)}\n</form.Field>\n```\n\n**One policy for overrides**\n\n`Field.Control` no longer accepts a `validation` prop, and no longer reads `aria-invalid` off the child element. Set `validation` on `Field.Item` to opt out of inferred error state from rendered `Field.Errors` / `Field.ErrorList`. This collapses the previous three policies (child wins for `aria-invalid`, context wins for `aria-describedby` / `aria-errormessage`, `Field.Control` wins for `validation`) into one: `Field.Item` owns it.\n\n**`Field.Control` around compound widgets (`Select`, etc.)**\n\n`Field.Control` now publishes the resolved ARIA props through a new internal `FieldControlContext`. `Select.Trigger` consumes it for `aria-describedby` / `aria-errormessage` (which `Select.Root` doesn't forward to its inner trigger), so the natural composition\n\n```tsx\n<Field.Item name=\"fruits\">\n\t<Field.Label>Fruits</Field.Label>\n\t<Field.Control>\n\t\t<Select.Root>\n\t\t\t<Select.Trigger>\n\t\t\t\t<Select.Value placeholder=\"Select a fruit\" />\n\t\t\t</Select.Trigger>\n\t\t\t<Select.Content>…</Select.Content>\n\t\t</Select.Root>\n\t</Field.Control>\n</Field.Item>\n```\n\nworks end-to-end — `name` lands on `Select.Root`'s hidden form input, and the field's helper / error IDs reach the focusable trigger button.\n\n`Slider` now forwards `aria-label` / `aria-labelledby` to its rendered thumb(s), and its Field examples pass an explicit `aria-label`. Slider thumbs are ARIA slider widgets rather than native labelable controls, so `Field.Label` provides the visible caption while the slider prop provides the accessible thumb name.\n\n**Duplicate error messages**\n\n`Field.Errors` and `toErrorMessages` now collapse duplicate validation messages after trimming. This keeps repeated validator output — for example the same Zod message present in multiple TanStack Form validation phases — from rendering the same error twice.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1200",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c4e968e5f625b5e89be5f13bbc9426f5a68b9451",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.73.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add `toErrorMessages`, a first-class helper exported from `@ngrok/mantle/field` for normalizing TanStack React Form's mixed `field.state.meta.errors` array into a clean `string[]` for `Field.Errors`. Folds together the shapes TanStack Form yields across its built-in validators — plain strings, `{ message }` issue objects (Zod / Standard Schema), thrown `Error` instances, and the falsy slots Standard Schema can produce — into trimmed, non-empty strings without coupling Mantle to a specific form library.\n\n```tsx\nimport { Field, toErrorMessages } from \"@ngrok/mantle/field\";\n\n<Field.Errors messages={toErrorMessages(field.state.meta.errors)} />;\n```\n\nAlso exports the `FieldError` input type (`{ message?: string } | string | null | undefined | false`) for callers that want to type their own error arrays against the helper's contract.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1198",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2c00e7caad939048b2b02d19919211385566d031",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.73.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add `Field`, a compound layout primitive for a single form field. Pair with the existing mantle `<Label>` — the component intentionally does not invent a new label primitive. Layout parts plus `Field.Description`, `Field.Optional`, and `Field.ErrorList` support `asChild`; `Field.Set`, `Field.Legend`, and `Field.ErrorItem` always render `<fieldset>`, `<legend>`, and `<li>` respectively so their core semantics cannot be accidentally removed.\n\nThe default tree is a `Field.Group` of `Field.Item`s — that's all most forms need. Reach for the semantic `Field.Set` + `Field.Legend` only when the grouping itself carries semantic weight (radios, related checkboxes); a `<fieldset>` around plain unrelated inputs reads as noise to assistive tech.\n\nParts:\n- `Field.Item` — a single form field. Stacks `Label`, control (`Input`, `Select`, `Checkbox`, etc.), and any `Field.Description` / `Field.Errors` / `Field.ErrorList` siblings vertically with `gap-1.5`. Renders a plain `<div>` — no implicit ARIA role, since the `<label htmlFor>` ↔ control association already provides the right semantics for a single field.\n- `Field.Group` — the default primitive for stacking multiple `Field.Item`s vertically with `gap-4`. Pure layout, no semantics.\n- `Field.Set` / `Field.Legend` — a semantic `<fieldset>` + `<legend>` for grouping a set of related controls under a single accessible name. Use specifically with `RadioGroup` (one question, many answers) or related checkboxes (preference toggles, permission flags). Skip it for unrelated fields stacked together — `Field.Group` is the right call there. `Field.Legend` owns its own `mb-1.5` (instead of relying on the parent fieldset's flex `gap`, which `<legend>` ignores in browsers) so the legend sits 6px above the next sibling — override with any `mb-*` utility.\n- `Field.LabelRow` — horizontal flex container (`items-center`, `gap-1`) for pairing a `<Label>` with a sibling affordance like a help-icon trigger. Clicks on a `<label>` forward focus to the associated control, so an interactive button can't live inside it — `Field.LabelRow` is the way out.\n- `Field.Help` / `Field.HelpTrigger` / `Field.HelpContent` — thin wrappers over `Popover` + `IconButton` + a default Phosphor `QuestionIcon` so the help-affordance pattern stays concise while still requiring a contextual accessible label. `Popover` (not `Tooltip`) so the affordance is reachable on touch. `Field.HelpTrigger` carries a default `-my-0.5` so the 24px `xs` button keeps its full click target while contributing only 20px to the `Field.LabelRow` flex line — matching the label's text line-height so the label is not pushed off-center. Override with any `my-*` utility.\n- `Field.Optional` — inline muted \"(Optional)\" suffix for placement inside the `<Label>` so screen readers announce it as part of the accessible name.\n- `Field.Description` — muted body-color hint text. Sits below the control inside a `Field.Item`.\n- `Field.Errors` — convenience renderer for string validation messages. Trims messages, filters empty values, and renders a semantic `Field.ErrorList` / `Field.ErrorItem` tree without coupling Mantle to a specific form library.\n- `Field.ErrorList` / `Field.ErrorItem` — literal semantic `<ul role=\"list\">` of `<li>` validation errors for custom error markup. Empty `Field.ErrorItem` children collapse so message-less validator results do not produce empty referenced list items.\n\nField parts forward refs through React 18's `forwardRef` API so refs land on the rendered DOM element, including supported `asChild` substitutions.\n\n`Field.Item` auto-generates stable IDs for descendant `Field.Description` / non-empty `Field.Errors` / `Field.ErrorList` parts, then merges those IDs onto known form controls via `aria-describedby` / `aria-errormessage` without changing the control's own `id` or `name`, so `id={field.name}` remains the right TanStack Form pattern.\n\nWhen a `Field.Description` follows `Field.Errors` or `Field.ErrorList`, the parent's `gap-1.5` auto-collapses via `-mt-1.5` so the error list and the trailing helper read as a single tight block. Pass any margin utility on `Field.Description` to override — the rule's specificity is flattened to `(0,1,0)` so a user class wins.\n\n`Switch` now accepts `validation` and reads the ambient `Field.Item` / `Field.Control` state, matching the rest of the mantle form controls (`Checkbox`, `Input`, `Combobox`, `MultiSelect`, `OtpInput`, `Select`, `TextArea`). Validation-specific styles (`data-validation-{success,warning,error}`) drive the checked track color and focus ring.\n\n`Field.Control` now throws a descriptive error when its child is not a valid React element or a render-prop function, instead of crashing inside `Slot` with an opaque \"expected a single child\" message.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1191",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e09de2da092c6f0ab91251ea4a00170593a985a5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Bump `tailwindcss` and `@tailwindcss/vite` to `4.3.0`, and `tailwind-merge` to `3.6.0`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1195",
					"commit": "https://github.com/ngrok-oss/mantle/commit/fb7d6f33d30aacd6be7b215e5466acd58c3925fa",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "`CodeBlock.CopyButton` now accepts an optional `label` prop for the accessible (screen-reader) label, defaulting to `\"Copy code\"`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1193",
					"commit": "https://github.com/ngrok-oss/mantle/commit/985659fd8f91b6bae7d971a0a59e7666f79f46ec",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "`CodeBlock.Code` no longer paints a browser-default focus outline on its `<pre>`, and no longer hardcodes `tabIndex={-1}` on the element.\n\nThe `tabIndex={-1}` default was a leftover workaround from when Prism.js auto-injected `tabIndex={0}` on every `<pre>` it touched. Prism was replaced with build-time Shiki, so nothing is forcing a tabindex anymore — the override is dead weight that also opted the scroll container out of Chrome's keyboard-focusable-scroller heuristic, hurting keyboard-only users on overflowing blocks. The prop is now passed through cleanly via `...props`, so consumers can still set `tabIndex={-1}` (or any other value) per instance if they want to exclude a block from the tab order.\n\nThe `outline-hidden` is paired with the tabindex change so the now-optionally-focusable `<pre>` doesn't paint the browser-default focus ring when scripted focus or scroll-container heuristics put focus on it. Nested controls (fold toggles, copy buttons) keep their own `:focus-visible` styles.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1189",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e2c07e5507fb1819b6e5d8d2237ca9bc6bfc1a16",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "`Label` now defaults to `font-medium` when it doesn't wrap an interactive form control, and inherits weight when it does (e.g. `<Label><Input /></Label>`). The default is applied through a `:where()`-wrapped selector so the rule's total specificity is `(0,0,0)` — a user-supplied `font-bold` / `font-normal` / `font-semibold` overrides it cleanly without needing the `!` important modifier.\n\nDetection covers `<input>`, `<textarea>`, `<select>`, `<button>`, and `[contenteditable]` descendants, which transitively covers mantle's checkbox/radio (real `<input>`), select/multi-select/menu triggers (real `<button>`), and any third-party control built on those primitives. The `[contenteditable]` attribute selector would normally raise the rule's specificity to `(0,1,0)` and tie with a bare utility class — wrapping the whole selector in `:where()` flattens it back to `(0,0,0)` so user overrides still win.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1185",
					"commit": "https://github.com/ngrok-oss/mantle/commit/72b52b1bd442a5561a741430193558de84c01c9b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "`Dialog.Body` and `Sheet.Body` now reserve space for the scrollbar via `scrollbar-gutter: stable`, preventing horizontal content shift when the body grows past its container and a scrollbar appears.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1194",
					"commit": "https://github.com/ngrok-oss/mantle/commit/40cb82019e4eac86f0f47a42062954c11685d76b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.72.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Extend code-block folding toward VS Code parity by switching the JS/TS/JSX/TSX, HTML, XML, and CSS strategies to AST / parser-quality matchers, and adding keyword-pair folding for Bash / Shell / Ruby. The runtime click handler is unchanged — all heavier work runs server- or build-side inside `@ngrok/mantle-server-syntax-highlighter`.\n\nWhat now folds (per language):\n- **JS / TS / JSX / TSX** (`oxc-parser`) — block statements, object/array literals, class/interface/type-literal/enum bodies, switch statements, multi-line template literals (including tagged), JSX elements (`<Foo>…</Foo>`), JSX fragments (`<>…</>`), member-expression element names (`<obj.Foo>`), and multi-line self-closing opening tags / attribute lists. Single-line self-closing JSX tags still don't get a toggle.\n- **HTML / XML** (`parse5` with `sourceCodeLocationInfo`) — multi-line elements (`<div>…</div>`), nested element folds, multi-line opening tags (the attribute list collapses into the tag name), and full HTML documents with explicit `<html>`/`<head>`/`<body>`. XML routes through parse5's SVG fragment context for foreign-content (XML-like) tokenizer rules so `<empty/>` is correctly self-closing.\n- **CSS** — single-pass CSS-aware brace matcher (skips `/* … */` comments, `\"…\"` and `'…'` strings, and backslash escapes) replacing the previous token-based bracket walk.\n- **Bash / Shell** — keyword pairs from VS Code's `shellscript` grammar: `if … fi`, `case … esac`, `for|while|until|select … do … done`, brace-form function bodies. Folds the leading-`}` brace-group close while ignoring `${VAR}` parameter expansions (which never lead a line).\n- **Ruby** — combines the bracket pass with keyword pairs from VS Code's `ruby` grammar: `def`, `class`, `module`, `begin`, `if`, `unless`, `while`, `until`, `for`, `case`, and `do |args|` blocks, all closing on `end`. Mid-block keywords (`else`, `rescue`, `when`) deliberately don't pop, so `begin … rescue … end` is a single fold.\n\nNew exports on `@ngrok/mantle-server-syntax-highlighter`:\n- `computeServerFoldRanges({ code, language, tokens })` — main dispatcher, called by `highlightWithMantleShiki`.\n- `serverFoldStrategyFor(language)` / `serverFoldNeedsTokens(strategy)` — let callers control whether to capture Shiki's `includeExplanation: 'scopeName'` tokens.\n- `computeJsxFoldRanges`, `computeHtmlFoldRanges`, `computeCssFoldRanges`, `computeKeywordFoldRanges` — per-strategy computers, individually testable.\n\n`@ngrok/mantle/highlight-utils` and `@ngrok/mantle/code-block` now also re-export `finalizeFoldRanges` so consumers building custom strategies can reuse the dedup pass.\n\nSkipping `includeExplanation` on the AST and raw-source paths (JS/TS/HTML/CSS/JSON) keeps the highlight pipeline cheaper than the previous token-only approach for those languages.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1174",
					"commit": "https://github.com/ngrok-oss/mantle/commit/51a086436804f6c4f576b9021e0e3ab7699e8907",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Extend fold gutters to every supported language, not just JSON. Each language uses the folding model that fits its grammar:\n- **AST-based** (`javascript`, `typescript`, `jsx`, `tsx`) — `oxc-parser` emits folds for blocks, object/array literals, JSX elements/fragments, multi-line template literals, and TypeScript-only bodies.\n- **Raw-source** (`json`, `css`) — single-pass matchers fold braces/brackets while skipping strings, comments, and escapes without requiring Shiki scope explanations.\n- **Bracket-paired** (`go`, `java`, `csharp`, `rust`) — multi-line `{ … }` and `[ … ]` ranges fold via TextMate-scope-aware token walking.\n- **Indentation-based** (`python`, `yaml`) — blocks are detected by leading whitespace; the opener (e.g. `def`, `class`, a YAML key) stays visible and child lines collapse.\n- **AST-based** (`html`, `xml`) — `parse5` source locations fold multi-line elements and opening tags while honoring self-closing XML tags and HTML void elements.\n- **Keyword-paired** (`bash`, `shell`, `sh`) — shell blocks fold from VS Code-style keyword pairs (`if … fi`, `case … esac`, `do … done`) plus brace-form function bodies.\n- **Bracket + keyword** (`ruby`) — Ruby combines brace/array folds with keyword blocks such as `def`, `class`, `module`, `begin`, `do`, `if`, and `case`, all closing on `end`.\n- **No folding** (plain text) — text-like languages have no block model to fold.\n\nNew helper exports from `@ngrok/mantle/code-block` and `@ngrok/mantle/highlight-utils`:\n- `computeFoldRanges({ language, tokens })` — generic fold-range computer that dispatches to the right strategy. Consumes Shiki tokens with `includeExplanation: 'scopeName'`.\n- `foldStrategyFor(language)` — returns `'bracket' | 'indentation' | 'tag' | 'none'` for a supported language.\n- Types: `ComputeFoldRangesInput`, `FoldStrategy`, `FoldLine`, `FoldToken`, `FoldExplanation`, `FoldScope`.\n\n`computeFoldRanges` is a low-level token helper for custom integrations; the Vite plugin, MDX code fences, and server highlighter use the richer `@ngrok/mantle-server-syntax-highlighter` dispatcher for AST, raw-source, and keyword folding.\n\nThe existing `computeJsonFoldRanges` continues to work for callers that already use it on raw JSON source.\n\nAlso fixes a latent bug where toggling `CodeBlock.ExpanderButton` would replace the highlighted `<code>`'s child DOM (because `dangerouslySetInnerHTML` received a fresh `{ __html }` object on every parent re-render). The replacement was invisible for plain code blocks but silently broke fold toggles, since the runtime's per-`<code>` geometry cache then pointed at detached line elements. The prop is now memoized so child DOM identity survives unrelated re-renders, and the fold runtime additionally validates that cached lines are still connected before reusing them.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1174",
					"commit": "https://github.com/ngrok-oss/mantle/commit/51a086436804f6c4f576b9021e0e3ab7699e8907",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add VS Code-style fold gutters to JSON code blocks. Every multi-line `{ … }` or `[ … ]` now renders a semantic `<button>` toggle in the gutter; clicking (or focusing and pressing `Enter` / `Space`) hides the inner content while keeping the opener and closer lines visible, with a `⋯` placeholder marking the collapsed region.\n- Fold ranges are computed at build time, so there is zero highlighting cost in the browser.\n- All toggle interaction runs through a single delegated click handler per `<pre>` — no per-line listeners and no React re-renders. This keeps fold/unfold cheap even on JSON blobs with thousands of lines.\n- New helper exports from `@ngrok/mantle/code-block` and `@ngrok/mantle/highlight-utils`: `computeJsonFoldRanges(code)` and the `FoldableRange` type.\n- `decorateHighlightedHtml` accepts a new optional `foldableRanges` input. When omitted, the decorator behaves exactly as before — no fold gutter is rendered.\n- Server-highlighted code blocks can provide fold ranges for every supported language with a folding strategy; raw JSON callers can continue using `computeJsonFoldRanges(code)` directly.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1174",
					"commit": "https://github.com/ngrok-oss/mantle/commit/51a086436804f6c4f576b9021e0e3ab7699e8907",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "`OtpInput.Root` now accepts a `validation` prop (`\"error\" | \"success\" | \"warning\" | false`, or a function returning one). When set, each group's outer borders and the active focus ring are recolored with the matching validation hue, mirroring the styling contract of `Input`. `validation=\"error\"` additionally sets `aria-invalid` on the underlying input so assistive tech announces the failure state.\n\nInternal: `ProgressDonut` now uses the `$cssProperties` helper for inline CSS-variable styles instead of an `as CSSProperties` cast — no behavior change.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1176",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5174b313d128c1db89f93cf5d45601ba48d834e0",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.71.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Expand the machine-readable surface for AI agents.\n\nNew endpoints on the docs site:\n- `/api/package.json` — version, peer/dev dependency ranges, and the sorted list of importable `@ngrok/mantle/*` subpaths.\n- `/api/changelog.json` — `CHANGELOG.md` parsed into one entry per version with PR/commit/author metadata broken out by semver bump.\n- `/api/search-index.json` — flat sorted array spanning components, hooks, and utilities, with keyword tokens derived from each name + summary.\n- `/api/schema.json` — JSON Schema (draft-07) definitions for every `/api/*.json` payload.\n\nEach entry in `/api/components.json` now also carries a `jsdoc` field with the first sentence of the source JSDoc on the component's primary export.\n\nThe published package now ships `@ngrok/mantle/agent.json` and `@ngrok/mantle/llms.txt` — pointers to the live endpoints above plus the package's own subpath inventory — for agents working without network access.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1170",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5c7ea22ad5871b05d8b3d1962435cdbe7cda9773",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Reduce `OtpInput.Slot` transition duration from 300ms to 150ms for snappier focus feedback.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1168",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9da2cac4f9b4078fd07cf24feee7ce4fada25303",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.71.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add `OtpInput`, a compound component for capturing one-time passcodes (OTP). Built on top of [`input-otp`](https://github.com/guilhermerodz/input-otp), it renders a single hidden input that handles paste, autofill, and IME correctly while displaying each character in its own styled slot. Composes as `OtpInput.Root` > `OtpInput.Group` > `OtpInput.Slot` with optional `OtpInput.Separator` between groups. Re-exports the `REGEXP_ONLY_DIGITS`, `REGEXP_ONLY_CHARS`, and `REGEXP_ONLY_DIGITS_AND_CHARS` pattern helpers for restricting accepted characters.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1167",
					"commit": "https://github.com/ngrok-oss/mantle/commit/acd0c55527fefdf410e28858db2eaf90a9f5d2f5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Significantly expand JSDoc coverage across the package to improve agentic and IntelliSense-driven discovery. Every `index.ts` barrel now ships a `@see` link to its docs page. All hooks (`useCallbackRef`, `useCopyToClipboard`, `useDebouncedCallback`, `useIsomorphicLayoutEffect`, `useMatchesMediaQuery`, `usePrefersReducedMotion`, `useRandomStableId`, `useScrollBehavior`, `useUndoRedo`) now document `@param`, `@returns`, and at least one `@example`. Compound components (`Dialog`, `Sheet`, `AlertDialog`, `Tooltip`, `Popover`, `HoverCard`, `Select`, `Combobox`, `MultiSelect`, `DataTable`) gained \"when to use vs alternatives\" guidance on their top-level namespace JSDoc, full-tree `@example` blocks across sub-components, and explicit notes on required setup (`TooltipProvider` mount, `useReactTable` instance for `DataTable.Root`, etc.). Also removes the empty `\"./date-picker\"` export from `package.json` (it had no implementation and was never importable). No runtime behavior changes.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1166",
					"commit": "https://github.com/ngrok-oss/mantle/commit/4f35862874e471f871865aabd36a40aff494d523",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Expand JSDoc coverage on `Skeleton`, `Badge`, `Code`, `Kbd`, `MediaObject`, `Anchor`, `Flag`, `Label`, `PasswordInput`, and the top-level `DataTable` (full layout examples — sortable+filterable+paginated, sticky action column, and clickable-row-with-Link). All follow the same template as the flagship components: a one-line summary, a \"When to use / When not to use\" block, accessibility notes where relevant, and `@example`s with imports. No runtime behavior changes — IntelliSense surfaces more guidance for both human contributors and AI agents using the library.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1161",
					"commit": "https://github.com/ngrok-oss/mantle/commit/913acb63b7fd17d490aa64cb110e9d57542ed8a6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update `tailwindcss` and `@tailwindcss/vite` to `4.2.4`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1155",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0f0b607813fbe15c969aa1e3e3c0ac9a4d27c8fe",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.70.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Clean up `CodeBlock` copy button placement and wrapper sizing so it aligns consistently within the code block.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1152",
					"commit": "https://github.com/ngrok-oss/mantle/commit/01b04f4850a38d4f27b87b36eb393150a8098a30",
					"author": "forzalupo"
				},
				{
					"bump": "patch",
					"summary": "`DataTable.Row` now auto-applies `cursor-pointer` when an `onClick` handler is provided, so consumers no longer need to add it manually. Pass a different `cursor-*` class via `className` (for example, `cursor-wait`) to override.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1160",
					"commit": "https://github.com/ngrok-oss/mantle/commit/60d8c53b135181af15654a73588706bb27a57cb5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix `useComposedRefs` returning a thunk (`() => (node) => void`) instead of a ref callback, which meant the composed ref never actually received the DOM node. The hook now returns a stable ref callback that reads the latest refs via an internal ref box, so passed refs stay up-to-date without causing ref thrashing on every render.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1160",
					"commit": "https://github.com/ngrok-oss/mantle/commit/60d8c53b135181af15654a73588706bb27a57cb5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "**Breaking:** `useCopyToClipboard` now returns the async copy function directly instead of a `[state, copyFn]` tuple. The internal `useState` that tracked the last copied value has been removed, eliminating an extra render per successful copy.\n\n```tsx\n// Before\nconst [, copyToClipboard] = useCopyToClipboard();\n\n// After\nconst copyToClipboard = useCopyToClipboard();\n```",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1160",
					"commit": "https://github.com/ngrok-oss/mantle/commit/60d8c53b135181af15654a73588706bb27a57cb5",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.70.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add missing `data-slot` attributes across the component library so every exported component and compound sub-part exposes a stable `data-slot=\"<name>\"` (or `data-slot=\"<name>-<part>\"`) styling hook. Also adds `asChild` support (via `Slot`) to `Empty.Root`, `Empty.Actions`, `Code`, and `ButtonGroup`.\n\nComponents updated include (non-exhaustive): `Main`, `SkipToMainLink`, `Empty`, `CodeBlock`, `Tabs`, `TextArea`, `Toast`/`Toaster`, `Separator`, `HorizontalSeparatorGroup`, `Sheet`, `Skeleton`, `Switch`, `Table`, `Label`, `MediaObject`, `Popover`, `RadioGroup`, `Select`, `Flag`, `HoverCard`, `Icon`, `SvgOnly`, `Input`/`PasswordInput`, `Kbd`, `DescriptionList`, `Dialog`, `DropdownMenu`, `DataTable`, `MetaKey`, `CursorPagination`, `ProgressBar`, and `ProgressDonut`. `HoverCard.Trigger`, `Dialog.Trigger`/`Dialog.Close`, and `DropdownMenu.Trigger` are now thin wrappers around their underlying Radix primitives so they can carry a `data-slot` attribute.\n\nNote: `ProgressBar`'s existing `data-slot` values were renamed to follow the compound-component naming convention — `data-slot=\"progress\"` → `data-slot=\"progress-bar\"` and `data-slot=\"progress-indicator\"` → `data-slot=\"progress-bar-indicator\"`. Consumers styling against those specific values will need to update their selectors.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1148",
					"commit": "https://github.com/ngrok-oss/mantle/commit/60851902cd6ed01ea7c45429817cf16145d84167",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Anchors (`<a>` elements, including those rendered by the `Anchor` component) that are descendants of `Alert.Root` now inherit the alert's variant text color (e.g. `text-warning-700` inside a warning alert) and are underlined at all times — not just on hover. This keeps inline links visually coherent with the surrounding alert copy while still marking them as links.\n\n**Visual change**: consumers that currently render links inside `Alert.Root` will see those links shift from the default `text-accent-600` to the alert's priority color, and the underline will be persistent rather than hover-only.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1150",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e623364b21f9e5b8159e8995fdcaf82700195fa6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add \"when to use\" guidance and WAI-ARIA cross-references to the `Tooltip`, `Popover`, and `HoverCard` compound-namespace JSDoc so editor hover tips surface the correct component for each use case.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1150",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e623364b21f9e5b8159e8995fdcaf82700195fa6",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.70.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add `SkipToMainLink` and `Main` components for accessible \"skip to main content\" navigation. `SkipToMainLink` is a visually-hidden-until-focused link that uses the browser History API directly, so it works in any framework (React Router, Next.js, plain HTML). `Main` renders a focusable `<main id=\"main\" tabIndex={-1}>` landmark designed to pair with it.\n\nAlso registers a new `z-max` utility (backed by `--z-index-max: 2147483647`, i.e. int32 max) so consumers can stack elements above any other z-index layer.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1147",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5e3aca7c859b54403c9845ce93538c8e0b46f929",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Internal: switch `=== undefined` / `!== undefined` checks to `== null` / `!= null` for consistency with the project's nullish-equality style. No behavior change.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1107",
					"commit": "https://github.com/ngrok-oss/mantle/commit/4d35209cd3ec2b15215e51107aec3de007768aa6",
					"author": "forzalupo"
				}
			]
		},
		{
			"version": "0.69.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Bump @ariakit/react from 0.4.25 to 0.4.26",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1126",
					"commit": "https://github.com/ngrok-oss/mantle/commit/545a09d77c0503f7dfdffe5eb1cde69d59aa65f4",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.69.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add a `Composition` section to every compound component doc page showing the structural tree of its parts (ASCII art). Rename existing `asChild`-style `Composition` sections on `Badge`, `Button`, `IconButton`, `Separator`, and `SplitButton` to `Polymorphism`. Rename the `Input` children-composition section to `Child Elements` and the `Dialog` tooltip section to `Combining with a Tooltip` to avoid colliding with the new `Composition` name.\n\nAdd the same ASCII composition tree as a `@example Composition` block to the top-level namespace JSDoc of every compound component (`Accordion`, `Alert`, `AlertDialog`, `Card`, `CodeBlock`, `Combobox`, `Command`, `CursorPagination`, `DataTable`, `DescriptionList`, `Dialog`, `DropdownMenu`, `Empty`, `HoverCard`, `MediaObject`, `MultiSelect`, `Popover`, `ProgressBar`, `ProgressDonut`, `RadioGroup`, `Select`, `Sheet`, `SplitButton`, `Table`, `Tabs`, `Toast`, `Tooltip`) so consumers and LLMs see the full structural shape at a glance in IDE IntelliSense.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1141",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f82feb81f2da67d332962cd16e138bd0de9ae45b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Expand JSDoc coverage across `CodeBlock`, `Command`, `Dialog`, `Empty`, `Popover`, `Select`, and `Sheet` compound components and their sub-parts for improved IntelliSense and documentation.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1141",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f82feb81f2da67d332962cd16e138bd0de9ae45b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix several code fence metastring parsing bugs in `mantleCodeRehypePlugin`:\n- `mantleShowLineNumbers`, `mantleCollapsible`, and `mantleDisableCopy` are now stringified on HAST `<pre>` properties. Previously, boolean `false` values were dropped during HAST→JSX compilation, causing `showLineNumbers=false` fence meta to be silently ignored (the rendered `<pre>` ended up with `data-mantle-line-numbers=\"true\"` and no left padding).\n- `collapsible=true`, `collapsible=false`, and `collapsible=\"true\"` in fence meta are no longer silently dropped. The `collapsible` key now accepts the same bare-flag, key-value, and quoted-value forms as `disableCopy`.\n- When a key appears multiple times in fence meta (e.g. `title=\"first\" title=\"second\"`), `getMetaValue` now returns the last value, matching `parseMetastring` semantics. Previously it returned the first.\n- `tokenizeMetastring` now splits on tabs, newlines, and carriage returns in addition to spaces. Previously only literal spaces were treated as token separators, so meta like `title=\"Foo\"\\tcollapsible` was lexed as a single token.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1141",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f82feb81f2da67d332962cd16e138bd0de9ae45b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.69.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add new `Empty` compound component for rendering empty states. Includes `Empty.Root`, `Empty.Icon`, `Empty.Title`, `Empty.Description`, and `Empty.Actions` sub-components.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1138",
					"commit": "https://github.com/ngrok-oss/mantle/commit/3f06774967405751d4eec8be9d479a6b5516a6d7",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.7",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix InputContainer focus ring flicker by preventing mousedown default on non-input children. Use `flushSync` in PasswordInput to animate the eye icon inline in the click handler after React commits the new icon to the DOM. Remove `pointer-events-none` from validation feedback icons.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1134",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5bde2bb43fd24dff97db51d63a559650151d4ed3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.6",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix Input focus ring showing as black when clicking the PasswordInput visibility toggle by using `focus-within` for both ring size and color. Add a blink animation to the PasswordInput eye icon toggle that respects `prefers-reduced-motion`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1132",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c0ea67486b837fba066000226630f74896ce8dcf",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix(table): switch to border-separate for continuous sticky column indicator\n\nReplaced `border-collapse` with `border-separate border-spacing-0` on `Table.Element` and moved row dividers from group-level borders (`divide-y` on `<thead>`/`<tbody>`/`<tfoot>`) to cell-level borders. This prevents table cells from clipping overflow content, allowing the `StickyColIndicator` shadow strip to extend across row boundaries and render as one continuous vertical line instead of per-row segments with visible gaps.\n\nAlso changed `overscroll-none` to `overscroll-x-none` on the table scroll container so vertical page scrolling is no longer blocked when hovering over a table.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1130",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8c7866b085a3f508d29fd0eed8361f96f6977f62",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix table horizontal scroll masking, improve scroll perf, and add `DataTable.ActionHeader`.\n- **`Table.Root`**: Split into outer wrapper (border, rounded corners, background) and inner scroll container (`scroll-fade-x` mask, `overflow-x: auto`, `overflow-y: clip`, `overscroll-behavior: none`). Tables only scroll horizontally and no longer bounce.\n- **Scroll fade**: Left and right edge fades driven by scroll position. Right-side fade correctly suppressed when a sticky right column is present (`DataTable.ActionCell` / `DataTable.ActionHeader`).\n- **`DataTable.ActionCell`**: Replaced per-cell `box-shadow` with `bg-inherit` and a `StickyColIndicator` child span (1px divider + soft leftward gradient). Tracks the row's background including hover state.\n- **`DataTable.ActionHeader`** (new): Sticky `<th>` that pairs with `DataTable.ActionCell` so the pinned action column aligns across header and body rows during horizontal scroll.\n- **`useHorizontalOverflowObserver`**: Now tracks `scrolledToStart`, coalesces rapid-fire scroll/resize/mutation events via `requestAnimationFrame`, and uses `useLayoutEffect` so corrections apply before the browser paints.\n\nSee `migrations/data-table-action-header-migration.md` for migration guidance.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1122",
					"commit": "https://github.com/ngrok-oss/mantle/commit/327d46ca0e950871fbae0b17f4e587b55afa27d0",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Default `showLineNumbers` to `true` in `mantleCode()` and `highlightWithMantleShiki()` so code blocks show line numbers by default. Single-line shell snippets (`bash`, `sh`, `shell`) default to `false` since line numbers add noise to one-liners like install commands.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1119",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0c20cf736429dd6e0085d4f38affce86f7de8ee9",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "no-op patch to verify publish CI",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1116",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5b0be5a7ffb8372984477da21cbb85b139d04e3f",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Improve contrast in code block syntax highlighting",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1114",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d46e3b3fbdcdf561db1d90e89afc8cca8e374be3",
					"author": "forzalupo"
				},
				{
					"bump": "patch",
					"summary": "Add README documentation for npm packages, switch to ES2025 preset",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1112",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ad24f11155af28d4b3141c1fb77416577bc75ed2",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.68.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Mantle theme updates: updates the functional colors, and modifies the color treatments across various components. It also adds font smoothing globally, while retaining the \"auto\" setting for Family, for a perceived higher weight.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1067",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ab6da43e32e3e2e2dadf29aa8d99fcb2738569f4",
					"author": "forzalupo"
				},
				{
					"bump": "patch",
					"summary": "Bump dependencies: @ariakit/react to 0.4.24, browserslist to 4.28.2, tailwindcss peer to ^4.2.2",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1099",
					"commit": "https://github.com/ngrok-oss/mantle/commit/4a81875621f00eb46887b2b83ab5e6021465d7d4",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update ariakit and headlessui",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1082",
					"commit": "https://github.com/ngrok-oss/mantle/commit/383d53821a264e59c4532f45e07818f541bfb686",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Polish component styles: soften card/popover/dialog hover backgrounds with `color-mix()`, update SplitButton menu item icon placement and gap, use `bg-active-menu-item` in Command palette, reduce table header height, improve Combobox item icon sizing, and flatten DataTable ActionCell layout.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1104",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2be1db1ffb23bb5719181f73090ef28d7e19a50f",
					"author": "forzalupo"
				},
				{
					"bump": "patch",
					"summary": "Themed code block with granular syntax highlighting: richer Shiki token color palette, semantic background tokens (`bg-card`/`bg-base`), redesigned copy button using `IconButton`, and subtler tab trigger styling. Server highlighter adds fine-grained token scope mappings for types, variables, operators, attributes, properties, and escape characters.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1106",
					"commit": "https://github.com/ngrok-oss/mantle/commit/41ce842787bcfb6386d94cba4e5e495a298c5a22",
					"author": "forzalupo"
				}
			]
		},
		{
			"version": "0.67.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "CodeBlock: replace PrismJS with Shiki for build-time syntax highlighting, removing Shiki/Prism from the browser bundle",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1018",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f27c01fc3291344380f32018d65cd6d21381fcaa",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Tabs: use fade mask instead of shadow for horizontal overflow",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1089",
					"commit": "https://github.com/ngrok-oss/mantle/commit/36e59211a9b76f0542d2551bd28d858449d3a131",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "fix(tabs): correct border width and focus ring clipping in horizontal classic tabs",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1089",
					"commit": "https://github.com/ngrok-oss/mantle/commit/36e59211a9b76f0542d2551bd28d858449d3a131",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "fix(tabs): remove bottom border from horizontal classic tab list",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1089",
					"commit": "https://github.com/ngrok-oss/mantle/commit/36e59211a9b76f0542d2551bd28d858449d3a131",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "MultiSelect: polish styling",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1088",
					"commit": "https://github.com/ngrok-oss/mantle/commit/54743f1deee01709952fcf5222e0ea205c282e5d",
					"author": "forzalupo"
				}
			]
		},
		{
			"version": "0.66.17",
			"changes": [
				{
					"bump": "patch",
					"summary": "Bundle prismjs into the code-block dist output to fix `ReferenceError: Prism is not defined` with Vite 8 / Rollup 4. Previously, prismjs component files (plain IIFEs with no `module.exports`) were left as external imports, and Rollup had no visibility into their implicit dependency on the prismjs main module — causing it to evaluate a component before `window.Prism` was set. Bundling prismjs directly resolves the ordering issue transparently for all consuming apps.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1071",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c32a7d23c2d55787042f702377bbdd1ddc923285",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Add horizontal overflow scrolling to `Tabs.List` with scroll-position-aware edge shadows. When the tab list overflows its container it scrolls horizontally; fade shadows appear on whichever sides have hidden content and disappear when you reach an edge or when there is no overflow. Keyboard arrow-key navigation smoothly scrolls the focused trigger into view. Scroll bounce is disabled on the list.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1086",
					"commit": "https://github.com/ngrok-oss/mantle/commit/537de55161043570699316e07162c6bf6d93282a",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.16",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add `--spacing-em` (`1em`) theme token for font-relative sizing utilities like `size-em`, `w-em`, `h-em`",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1076",
					"commit": "https://github.com/ngrok-oss/mantle/commit/582bec9c0cd558fe14ebc5d461b2ddd6debc9c33",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add default `width=\"2.61em\" height=\"1em\"` to `NgrokWordmarkIcon` and `width=\"1em\" height=\"1em\"` to `NgrokLettermarkIcon` so they render at font size without requiring explicit sizing classes",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1076",
					"commit": "https://github.com/ngrok-oss/mantle/commit/582bec9c0cd558fe14ebc5d461b2ddd6debc9c33",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.15",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update NgrokLettermarkIcon dimensions",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1074",
					"commit": "https://github.com/ngrok-oss/mantle/commit/284aaa9e1e3ad894612ea27739a1ae40aa6b06e6",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.14",
			"changes": [
				{
					"bump": "patch",
					"summary": "Rename `NgrokIcon` to `NgrokWordmarkIcon` and add new `NgrokLettermarkIcon`",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1072",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5dcc9be89bf4b61216e7229e68b611bb64496082",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.13",
			"changes": [
				{
					"bump": "patch",
					"summary": "Bump `@ariakit/react` dependency.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1061",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1b0e7227c79396b48d4845b0ed5b534085aa91f7",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.66.12",
			"changes": [
				{
					"bump": "patch",
					"summary": "Decompose `Command.Dialog` into a `Root`/`Trigger`/`Content` namespace.\n\n**Breaking change**: `Command.Dialog` is now a compound namespace instead of a monolithic component. Migrate existing usage:\n\n```diff\n- <Command.Dialog open={open} onOpenChange={setOpen}>\n-   <Command.Input placeholder=\"...\" />\n-   <Command.List>...</Command.List>\n- </Command.Dialog>\n+ <Command.Dialog.Root open={open} onOpenChange={setOpen}>\n+   <Command.Dialog.Content>\n+     <Command.Input placeholder=\"...\" />\n+     <Command.List>...</Command.List>\n+   </Command.Dialog.Content>\n+ </Command.Dialog.Root>\n```\n\nThe new `Command.Dialog.Trigger` sub-component allows opening the dialog from a button without managing `open` state manually:\n\n```tsx\n<Command.Dialog.Root>\n\t<Command.Dialog.Trigger asChild>\n\t\t<Button type=\"button\">Open Command Palette</Button>\n\t</Command.Dialog.Trigger>\n\t<Command.Dialog.Content>\n\t\t<Command.Input placeholder=\"Type a command or search...\" />\n\t\t<Command.List>...</Command.List>\n\t</Command.Dialog.Content>\n</Command.Dialog.Root>\n```\n\nAlso fixes two bugs:\n- `Command.Dialog` now correctly closes on Escape key press.\n- `Command.Separator` now automatically hides when all adjacent groups are filtered out.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1064",
					"commit": "https://github.com/ngrok-oss/mantle/commit/24ffd2558567ec81c6576604be4848cdc8ceaa7e",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.11",
			"changes": [
				{
					"bump": "patch",
					"summary": "Export `fixMediaScriptContent` from `@ngrok/mantle/theme`. This function returns the raw JavaScript string for the inline `<script>` that fixes theme stylesheet `media` attributes — useful for legacy Go services and other non-React servers that need to inline it directly into SSR HTML.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1057",
					"commit": "https://github.com/ngrok-oss/mantle/commit/930e5fbb5883369ca31a6904d6adc369b7912a23",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.10",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix(use-copy-to-clipboard): remove unnecessary async wrapper, guarantee polyfill DOM cleanup",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1055",
					"commit": "https://github.com/ngrok-oss/mantle/commit/714c79e0362b3c2a1f4762755b97471041fb2a73",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.9",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix(code-block): restore syntax highlight token styles to mantle.css\n\nThe `.token.*` styles were moved out of `mantle.css` into a colocated\n`syntax-highlight.css` imported as a side-effect in `code-block.tsx`.\nHowever, tsdown extracts CSS imports into a sidecar file without emitting\na corresponding `import` in the bundled JS, so consuming apps never loaded\nthe styles. Moved the token styles back into `mantle.css` where they are\nreliably included.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1048",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ca1ce982cd68cae8e96181031a59673763c259d1",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.8",
			"changes": [
				{
					"bump": "patch",
					"summary": "**Breaking:** `MantleStylesheets` is renamed to `MantleStyleSheets` (and `MantleStylesheetsProps` → `MantleStyleSheetsProps`).\n\nThe component no longer imports CSS `?url` paths internally. Instead, pass the browser-accessible CSS URLs as required props using the new `mantleStyleSheetUrls` helper, which collects the three Vite `?url` imports into a spreadable object:\n\n```tsx\n// Before\nimport { MantleStylesheets } from \"@ngrok/mantle/theme\";\n<MantleStylesheets nonce={nonce} ssrCookie={ssrCookie} />;\n\n// After\nimport darkCssUrl from \"@ngrok/mantle/mantle-dark.css?url\";\nimport darkHighContrastCssUrl from \"@ngrok/mantle/mantle-dark-high-contrast.css?url\";\nimport lightHighContrastCssUrl from \"@ngrok/mantle/mantle-light-high-contrast.css?url\";\nimport { mantleStyleSheetUrls, MantleStyleSheets } from \"@ngrok/mantle/theme\";\n\nconst themeUrls = mantleStyleSheetUrls({\n\tdarkCssUrl,\n\tlightHighContrastCssUrl,\n\tdarkHighContrastCssUrl,\n});\n\n<MantleStyleSheets {...themeUrls} nonce={nonce} ssrCookie={ssrCookie} />;\n```\n\nThis fixes a build error (`Unknown file extension \".css\"`) in apps using React Router's SSR build, where `?url` imports inside node_modules are not transformed by Vite.\n\nWhen `forceTheme` is set to a non-light theme, only the link tag for that theme is rendered — the others are omitted to avoid unnecessary network requests. `forceTheme=\"light\"` renders no link tags since light is the base theme with no dedicated lazy stylesheet.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1038",
					"commit": "https://github.com/ngrok-oss/mantle/commit/00fda438dd9818cc3f3a63ab2d4798b96e28ec8f",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.7",
			"changes": [
				{
					"bump": "patch",
					"summary": "Move syntax highlight token styles into the code-block component\n\nThe `.token.*` CSS rules for syntax highlighting were previously included unconditionally in `mantle.css`, adding to the critical CSS payload for all pages even those with no code blocks.\n\nThese styles are now colocated in `packages/mantle/src/components/code-block/syntax-highlight.css` and imported as a side-effect from `code-block.tsx`. Vite bundles them as a CSS chunk associated with the code-block module — apps that never import `@ngrok/mantle/code-block` no longer pay the cost, and apps that do get the styles automatically.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1036",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1521814c50e01d0111bd03696c9698dd718ff5f1",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add `MantleStylesheets` component and split dark/high-contrast themes into separate CSS files\n\n**New: `MantleStylesheets`**\n\nA new component exported from `@ngrok/mantle/theme` that renders `<link rel=\"stylesheet\">` tags for the dark, light-high-contrast, and dark-high-contrast theme CSS files. Each stylesheet is gated behind a `media` attribute matching its OS preference, making it non-render-blocking for users whose OS does not match.\n\nPlace it in `<head>`, immediately after `<PreventWrongThemeFlashScript>`:\n\n```tsx\n<head>\n\t<PreventWrongThemeFlashScript nonce={nonce} />\n\t<MantleStylesheets nonce={nonce} ssrCookie={loaderData?.ssrCookie} />\n</head>\n```\n\nProps:\n- `forceTheme?: ResolvedTheme` — force a specific theme's stylesheet to `media=\"all\"` unconditionally (e.g. for a dark-only app)\n- `ssrCookie?: string` — pass the extracted theme cookie (via `extractThemeCookie`) so the server renders the correct `media` attribute directly in SSR HTML, eliminating FOUC for users with a manually-selected non-system theme\n- `nonce?: string` — CSP nonce for the inline fix script\n\nAn inline `<script>` is rendered after the `<link>` tags. It runs synchronously before first paint and corrects any `media` attributes based on `html[data-applied-theme]` set by `PreventWrongThemeFlashScript`, covering cases where `ssrCookie` is not provided. On the client, a `MutationObserver` watches `html[data-applied-theme]` to keep media attributes in sync as the user changes their theme.\n\n**New CSS exports**\n\nThree new CSS files are now exported from `@ngrok/mantle`:\n- `@ngrok/mantle/mantle-dark.css` — dark theme custom properties\n- `@ngrok/mantle/mantle-light-high-contrast.css` — light high-contrast theme custom properties\n- `@ngrok/mantle/mantle-dark-high-contrast.css` — dark high-contrast theme custom properties\n\nThese files contain only CSS custom property blocks and do not need to be added to your app's `@import` chain — `MantleStylesheets` handles loading them via `<link>` tags. `mantle.css` continues to hold the light theme and all Tailwind directives and must remain in your CSS `@import` chain as before.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1036",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1521814c50e01d0111bd03696c9698dd718ff5f1",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add `@ngrok/mantle-vite-plugins` package and `source-all.css`, optimize `mantle.css`\n\n**New: `@ngrok/mantle-vite-plugins`**\n\nA new package that exports `mantleSourcePlugin` — a Vite plugin that writes targeted Tailwind `@source` directives into your global CSS file for only the `@ngrok/mantle` components your app actually imports. Scans `.ts`, `.tsx`, `.js`, `.jsx`, `.mdx`, and `.md` files. Uses a disk-write approach (required because `@tailwindcss/vite` reads CSS from disk at startup before Vite's transform pipeline runs).\n\n**New: `@ngrok/mantle/source-all.css`**\n\nA zero-configuration alternative to `mantleSourcePlugin`. Import it alongside `mantle.css` to tell Tailwind to scan all mantle component dist files:\n\n```css\n@import \"@ngrok/mantle/mantle.css\";\n@import \"@ngrok/mantle/source-all.css\";\n```\n\nUse this for apps that import most or all mantle components. Use `mantleSourcePlugin` for apps that import a subset and want the smallest possible CSS output.\n\n**`mantle.css` optimizations**\n- Removed `@source \"../dist\"` — source scanning is now opt-in via `source-all.css` or `mantleSourcePlugin`\n- Deduplicated `--color-gray-*` in light/dark themes using `var(--color-neutral-*)` aliases\n- Removed 21 light-theme color overrides (`neutral-50`–`neutral-900`, all `red-*` shades) that were identical to Tailwind v4 defaults\n- Moved ~60 semantic tokens (`--background-color-base`, etc.) from `@theme {}` to `@theme inline {}` to stop generating unused utility classes like `bg-background-color-base`",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1036",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1521814c50e01d0111bd03696c9698dd718ff5f1",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.6",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update `font-display` policy for core fonts: `roobert` and `jetbrains-mono` (normal) use `swap`, italic faces (`jetbrains-mono-italic`, `family-italic`) use `optional`, `family-regular` stays `fallback`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1034",
					"commit": "https://github.com/ngrok-oss/mantle/commit/949ec0fb0ca512143eb6f355efb88efbf9f1b518",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "**Add** `preloadFontLink(name: CoreFontName): string` — returns an HTTP `Link` header value that preloads a single core font. Sending preload hints as response headers lets the browser start fetching fonts before it parses any HTML, improving LCP on mobile.\n\n**Remove** `MantleThemeHeadContent` and `PreloadCoreFonts`.\n\n**Migration:** use `PreventWrongThemeFlashScript` in `<head>` and `preloadFontLink` in your HTTP response headers. For apps without header control, use individual `PreloadFont` elements instead.\n\n```ts\n// entry.server.tsx — send font preloads as HTTP Link headers\nimport { assetsCdnOrigin, preloadFontLink } from \"@ngrok/mantle/theme\";\n\nresponseHeaders.set(\n\t\"Link\",\n\t[\n\t\t`<${assetsCdnOrigin}>; rel=preconnect; crossorigin`,\n\t\tpreloadFontLink(\"roobert\"),\n\t\tpreloadFontLink(\"jetbrains-mono\"),\n\t\tpreloadFontLink(\"family-regular\"),\n\t].join(\", \"),\n);\n```\n\n```tsx\n// root.tsx — only the FOUC script in <head>\nimport { PreventWrongThemeFlashScript } from \"@ngrok/mantle/theme\";\n\n<head>\n\t<PreventWrongThemeFlashScript nonce={nonce} />\n</head>;\n```\n\n```tsx\n// Non-SSR fallback — no header control\nimport { PreloadFont, PreventWrongThemeFlashScript } from \"@ngrok/mantle/theme\";\n\n<head>\n\t<PreventWrongThemeFlashScript nonce={nonce} />\n\t<PreloadFont name=\"roobert\" />\n\t<PreloadFont name=\"jetbrains-mono\" />\n\t<PreloadFont name=\"family-regular\" />\n</head>;\n```",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1032",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b9a04ccbea762504b2dddd450757729dcefe3aa5",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "export PreventWrongThemeFlashScript",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1030",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2b740bbf4e6dc42d6a674e2bd25ee04367ef47bf",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Improve code block utility performance by speeding up indentation normalization and `fmtCode`, adding LRU caching for repeated syntax highlighting, and replacing linear language/indentation lookups with set membership checks. Also normalize CRLF input correctly, rename the indentation normalizer to `normalize-indentation`, and guard line-number expansion against excessively large ranges.",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0dac6083db43e746213fa4047ac03aaca3e9bce5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "add individual PreloadFont component, preload a core font by name",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1028",
					"commit": "https://github.com/ngrok-oss/mantle/commit/11f45750cf33affe31108f0e717e26e3ffbf1705",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "multi-select.tsx\n- close the combobox popover on `Escape` at the multi-select trigger level\n\ndialog/primitive.tsx\n- centralize `onInteractOutside` / `onPointerDownOutside` prompt-protection\n- add `preventCloseOnNestedPopupEscape(...)`\n- detect focused nested popup owners via `aria-expanded=\"true\"` + `aria-controls`\n- only prevent parent modal close while the controlled popup is still mounted/open\n- add JSDoc documenting the first-ESC / second-ESC flow\n\ndialog.tsx\n- remove duplicated `onInteractOutside` / `onPointerDownOutside` wrappers\n\nsheet.tsx\n- remove duplicated `onInteractOutside` / `onPointerDownOutside` wrappers\n\nalert-dialog.tsx\n- remove duplicated `onInteractOutside` / `onPointerDownOutside` wrappers",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1023",
					"commit": "https://github.com/ngrok-oss/mantle/commit/bc1bc6cbb8ebbb34a6a771c4f60b60c2e0271757",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update dependencies: tailwind, ariakit, react-day-picker",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1004",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b04e08f14262c1dfad91384e9a6ebdeb7be4b5fe",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Swap from tsup to tsdown (6.2x speedup)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1021",
					"commit": "https://github.com/ngrok-oss/mantle/commit/aab7d305ed2d5222b82dfe701377738c0e5f2c10",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix `MultiSelect.Content` inside modal `Sheet`, `Dialog`, and `AlertDialog` containers so it works with the default modal behavior without requiring `modal={false}`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1022",
					"commit": "https://github.com/ngrok-oss/mantle/commit/df6d158e4ff64406c5d84a71a3e9d0278ffc3c38",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.66.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add MultiSelect component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/997",
					"commit": "https://github.com/ngrok-oss/mantle/commit/612171b3afb4fb44e5695445d69418bd621a203e",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.65.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add `@ngrok/mantle/utils` export and new `useInView` hook.\n\n**Breaking changes:**\n- `@ngrok/mantle/compose-refs` is removed. Import `composeRefs` from `@ngrok/mantle/utils` and `useComposedRefs` from `@ngrok/mantle/hooks` instead.\n- `@ngrok/mantle/utils/sorting` is removed. Import sorting utilities from `@ngrok/mantle/utils` instead.\n\n**New exports at `@ngrok/mantle/utils`:**\n- `inView(element, onStart, options)` — framework-agnostic `IntersectionObserver` helper that calls `onStart` when an element enters the viewport. If `onStart` returns a function, it is called when the element leaves. Returns a cleanup function that disconnects the observer.\n- `composeRefs` and `useComposedRefs` — moved from `@ngrok/mantle/compose-refs`.\n- All sorting utilities — moved from `@ngrok/mantle/utils/sorting`.\n\n**New hook at `@ngrok/mantle/hooks`:**\n- `useInView(ref, options)` — React hook that returns `true` when the referenced element is visible in the viewport. Supports `root`, `margin`, `amount`, `once`, and `initial` options.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1000",
					"commit": "https://github.com/ngrok-oss/mantle/commit/56a5245e386fc0dde2688c25d95b52a1d7c1e871",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Address review feedback from PR #1000.\n- `inView`: call `observer.unobserve(element)` before `observer.disconnect()` in the cleanup function for cleaner teardown.\n- `useInView`: restore intentional omission of `isInView` from `useEffect` deps (matching the upstream motion implementation); replace the bare eslint-disable comment with an explanation of why including `isInView` would cause the observer to restart on every visibility change.\n- `tsup.config.ts`: exclude `compose-refs` and `sorting` from individual build entries since they are now consolidated into the `./utils` export.\n- `hooks.mdx`: fix missing `forwardRef` import in the `useComposedRefs` code example.\n- `hooks.mdx`: remove `inView` from the hooks page; it now has a dedicated page under the new Utils section.\n- `hooks.mdx`: add a live interactive demo for `useInView`.\n- Changeset: correct version bump type to `major` (breaking changes) and clarify `useComposedRefs` migration path to `@ngrok/mantle/hooks`.\n- Add `use-in-view.test.tsx` test coverage for the `useInView` hook.\n- Add a Utils section to the docs site with dedicated pages for `cx`, `color`, `inView`, `composeRefs`, and `sorting`.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1001",
					"commit": "https://github.com/ngrok-oss/mantle/commit/922a053d84fb8ad8f51c42fe1058fb49da7be55d",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add optional `icon` prop to `Alert.DismissIconButton`.\n\nThe dismiss button now accepts an `icon` prop (`ReactNode`) to render a custom icon in place of the default `X` icon.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/1002",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f6e8271c70f6932d657b552f8cb24bebe6094a2a",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Bump tsconfig target/lib to ES2023",
					"pr": "https://github.com/ngrok-oss/mantle/pull/999",
					"commit": "https://github.com/ngrok-oss/mantle/commit/4ebf12bdc73f6c88f7968b2378b94b8ff1a3e0eb",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Bump up min version of tailwind",
					"pr": "https://github.com/ngrok-oss/mantle/pull/994",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c4d9812c9c14924418339d52aa06be61191cd224",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.64.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "update to tailwind 4.2.0",
					"pr": "https://github.com/ngrok-oss/mantle/pull/990",
					"commit": "https://github.com/ngrok-oss/mantle/commit/16c731a10cc1bbfd6299ff0350171ffa48c261e5",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dropdown, select, and combobox menu item styling",
					"pr": "https://github.com/ngrok-oss/mantle/pull/988",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7e59d8722fcf2585105b580e752bf9356e7dea9a",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.64.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Slider: Add `color` prop to customize the range fill color (defaults to `\"bg-accent-500\"`), and `showTicks` prop to render tick marks at each `step` interval. Also adds `--color-card-border` and `--color-card-border-muted` semantic color tokens.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/985",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ce626cc088b7fcf3dc0a36e9c2fa6a2098f5d569",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.64.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix accessibility and linting issues in `Input` and `RadioGroup.InputSandbox`: replace `aria-disabled`/`aria-invalid` CSS hooks on wrapper divs with `data-disabled`, add `role=\"none\"` to presentational wrapper divs",
					"pr": "https://github.com/ngrok-oss/mantle/pull/980",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c2735ed94e9d7ab8b0e5faec42d19deeb4846cd7",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Change `font-display` from `swap` to `fallback` in all `@font-face` declarations to eliminate layout shift (font bounce) while still downloading and caching fonts for subsequent loads",
					"pr": "https://github.com/ngrok-oss/mantle/pull/984",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b3a32ec036d9913cb2d8260902615d47f44e7968",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Bump up Slider thumb shadow to shadow-md (from shadow-sm)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/981",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e43df1c81fb5881376756e6918210ec7927cdc82",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update tailwind-merge",
					"pr": "https://github.com/ngrok-oss/mantle/pull/980",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c2735ed94e9d7ab8b0e5faec42d19deeb4846cd7",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.64.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Remove `AutoScrollToHash` component and `useAutoScrollToHash` hook. This also removes `react-router` as a peer dependency of `@ngrok/mantle`. If you were using `AutoScrollToHash`, move the implementation into your app directly.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/974",
					"commit": "https://github.com/ngrok-oss/mantle/commit/623935c925afad2675aab412ae8ee92e840b7b2f",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add NgrokIcon to Icons",
					"pr": "https://github.com/ngrok-oss/mantle/pull/973",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a8ff1c9857c44abf4bc87c69cc85bb2e54a0a439",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add new Slider component, supports single, range, and multiple use cases",
					"pr": "https://github.com/ngrok-oss/mantle/pull/979",
					"commit": "https://github.com/ngrok-oss/mantle/commit/68cc7946d887bbca790c36ca9580c454be99cadc",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix doc block links",
					"pr": "https://github.com/ngrok-oss/mantle/pull/971",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5781aae83604925bfb03cdbea1d3d85b8e9e47a0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix jerky accordion close animation. Moved spacing from `padding-top` on the animated container to `margin-top` on the first child so it collapses smoothly with the height animation.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/978",
					"commit": "https://github.com/ngrok-oss/mantle/commit/286fab3721c6aabe27fddaf91e4a8dfb7ba8c5ea",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Add explicit generic type parameters to `isValidElement` calls in `Button` and `Slot` for React 19 type compatibility. React 19 changed `ReactElement.props` from `any` to `unknown`, requiring explicit type annotations to access props safely. This change is fully backwards compatible with React 18.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/974",
					"commit": "https://github.com/ngrok-oss/mantle/commit/623935c925afad2675aab412ae8ee92e840b7b2f",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix `CodeBlock.CopyButton` timeout lifecycle handling by clearing pending timers on unmount and before scheduling a new copy-state reset.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/978",
					"commit": "https://github.com/ngrok-oss/mantle/commit/286fab3721c6aabe27fddaf91e4a8dfb7ba8c5ea",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix theme flash on hydration by reading the theme cookie during SSR. `useInitialHtmlThemeProps` now accepts an optional `ssrCookie` string so the server can render the correct theme class, eliminating the mismatch between server HTML and the inline script.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/975",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d9a72068b93aac1524334395fbe0fdc761c6e8cd",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.63.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix `useIsBelowBreakpoint` performance regression during window resize. The `subscribe` and `getSnapshot` functions passed to `useSyncExternalStore` were recreated on every render, causing listener teardown/re-attach churn on each frame. They are now cached per breakpoint for referential stability.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/969",
					"commit": "https://github.com/ngrok-oss/mantle/commit/76e1afd09e6011650e6b4f3ed14ea348143e1591",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Restore all `@custom-variant` definitions in `mantle.css` that were accidentally removed. This includes theme variants (`light`, `dark`, `high-contrast`, `dark-high-contrast`), aria/data attribute variants, hover media query variants (`hover-hover`, `hover-none`), and the `where` variant.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/969",
					"commit": "https://github.com/ngrok-oss/mantle/commit/76e1afd09e6011650e6b4f3ed14ea348143e1591",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.63.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix mantle.css exports",
					"pr": "https://github.com/ngrok-oss/mantle/pull/966",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d26aee3e3ba025847aef6473a96942a86a8c4875",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.63.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add \"info\" as a first-class semantic color (mirrors \"accent\")",
					"pr": "https://github.com/ngrok-oss/mantle/pull/963",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1a684177f8c07e321620910a9edbb771091d7d52",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add new SplitButton component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/965",
					"commit": "https://github.com/ngrok-oss/mantle/commit/fd7e2eb5119a69f1b505c07f7889ea57686c7258",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix Anchor component target types to delegate to React's built-in types",
					"pr": "https://github.com/ngrok-oss/mantle/pull/963",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1a684177f8c07e321620910a9edbb771091d7d52",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix mantle.css theme syntax",
					"pr": "https://github.com/ngrok-oss/mantle/pull/963",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1a684177f8c07e321620910a9edbb771091d7d52",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Apply font-sans to components for consistent typography",
					"pr": "https://github.com/ngrok-oss/mantle/pull/963",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1a684177f8c07e321620910a9edbb771091d7d52",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update react-day-picker",
					"pr": "https://github.com/ngrok-oss/mantle/pull/962",
					"commit": "https://github.com/ngrok-oss/mantle/commit/030099b6645039f0aadde90324ee19feeeef94c5",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.62.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix return type of $cssProperties",
					"pr": "https://github.com/ngrok-oss/mantle/pull/957",
					"commit": "https://github.com/ngrok-oss/mantle/commit/141490dec9ef4b6b5776986a14cac190b65adc77",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.62.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "DescriptionList styling fixes",
					"pr": "https://github.com/ngrok-oss/mantle/pull/955",
					"commit": "https://github.com/ngrok-oss/mantle/commit/bf79ae237df0f9350daf8e998e3b4252f398a2b7",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.62.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add DescriptionList component.\n\nThis component is a semantic wrapper for `<dl>`, `<dt>`, and `<dd>` elements. It allows for a more accessible and semantic way to display label/value pairs.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/954",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7235e4823cb9232ef0ed2853bf1b8ad9af48d368",
					"author": "randseay"
				},
				{
					"bump": "patch",
					"summary": "Add CssProperties, $cssProperties type and helper for supporting typechecking of react CSSProperties AND custom css properties (--foo-bar)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/946",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e095088e084fa07b138715d74ea04ff7f554f969",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.61.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "DataTable.HeaderSortButton: remove scaling when active",
					"pr": "https://github.com/ngrok-oss/mantle/pull/939",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d2922d2b0199aa1361e11e483fed129c3fcd2d15",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.61.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add 2xs breakpoint (360px)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/935",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b03ef99e5a61b81b2b544cce970cfd1b38fed087",
					"author": "aaronshekey"
				}
			]
		},
		{
			"version": "0.60.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Create fluid typography. Kill references to Inter.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/912",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d6c1f46e8d10c9783134ef49e1e159ad67a67cb3",
					"author": "aaronshekey"
				},
				{
					"bump": "patch",
					"summary": "Update runtime dependencies: @ariakit/react, react-day-picker",
					"pr": "https://github.com/ngrok-oss/mantle/pull/902",
					"commit": "https://github.com/ngrok-oss/mantle/commit/da31911f4c78f86181f43a34b682e49ad84dc5e8",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies: react-day-picker and @ariakit/react",
					"pr": "https://github.com/ngrok-oss/mantle/pull/914",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e704a7d314f2341ccea49e6d50bd5f7aa0ae6e82",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Toast: support keeping toasts open until manually dismissed by passing `duration_ms <= 0` or `Number.POSITIVE_INFINITY`",
					"pr": "https://github.com/ngrok-oss/mantle/pull/914",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e704a7d314f2341ccea49e6d50bd5f7aa0ae6e82",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Switch to node-24 as LTS",
					"pr": "https://github.com/ngrok-oss/mantle/pull/902",
					"commit": "https://github.com/ngrok-oss/mantle/commit/da31911f4c78f86181f43a34b682e49ad84dc5e8",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.60.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Button, IconButton: scale w/ transition ease-out",
					"pr": "https://github.com/ngrok-oss/mantle/pull/900",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5174f3906faf163e575b9cb62f3970c4d426f0df",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.60.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add Slot component with automatic className merging\n\nIntroduces a new `@ngrok/mantle/slot` component that wraps Radix UI's Slot with automatic Tailwind CSS className merging using `cx`. All internal components now use the Mantle Slot instead of importing directly from Radix UI, providing consistent className merge behavior across the design system where child classes take priority over parent classes.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/896",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b58edd7c1c97c06ce113a90717c947d6822342c3",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Button, IconButton: add data-appearance, data-priority to DOM",
					"pr": "https://github.com/ngrok-oss/mantle/pull/893",
					"commit": "https://github.com/ngrok-oss/mantle/commit/05070800b4cf647c9abcf2565902d5b1a1deb976",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.59.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix tooltip jsdoc urls",
					"pr": "https://github.com/ngrok-oss/mantle/pull/887",
					"commit": "https://github.com/ngrok-oss/mantle/commit/eeca62d79949a0932c1906bcabf079dbd5a3089c",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.59.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Promote Tooltip component out of preview\n\nThe Tooltip component has been promoted from preview to stable. This includes:\n- Updated documentation route from `/components/preview/tooltip` to `/components/tooltip`\n- Updated all JSDoc URLs to reflect the new documentation path\n- Added comprehensive API reference for TooltipProvider, Tooltip.Root, Tooltip.Trigger, and Tooltip.Content\n- Improved tooltip arrow styling with proper positioning and background matching\n- Fixed Tailwind 4 dev mode class scanning by adding `@source \"../src\"` to mantle.css",
					"pr": "https://github.com/ngrok-oss/mantle/pull/885",
					"commit": "https://github.com/ngrok-oss/mantle/commit/918bdd9078d1edffc7d670326f0600623a4406cc",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.58.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update dependencies; bump min version of tailwind",
					"pr": "https://github.com/ngrok-oss/mantle/pull/878",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9ecfcd47242496ad382451183a241cd76fd843b5",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "move mantle.css to src/ and improve HMR\n- Moved `mantle.css` from `packages/mantle/assets/` to `packages/mantle/src/` to enable proper hot module reload during development\n- Updated `mantle.css` package export to use source conditions (`@ngrok/mantle/source` → `src/mantle.css`, `default` → `dist/mantle.css`), matching the pattern used for component exports\n- Added build step to copy `mantle.css` to `dist/` directory for production builds",
					"pr": "https://github.com/ngrok-oss/mantle/pull/883",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e3d39ef80e1ead067b2a27f3e960d45a432be732",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.58.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "enable an appearance prop on the tabs root component that allows the user to specify pill-style tabs",
					"pr": "https://github.com/ngrok-oss/mantle/pull/879",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8a6685805fa2dc540a5e03a550ebf66e13cae644",
					"author": "acrobat130"
				}
			]
		},
		{
			"version": "0.58.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update dependencies; add static white, static black, and ff00ff as colors",
					"pr": "https://github.com/ngrok-oss/mantle/pull/873",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f8170b9f2a73cde6aa5dfc44b10f64f3c2eb8180",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.58.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update Kbd bg color",
					"pr": "https://github.com/ngrok-oss/mantle/pull/871",
					"commit": "https://github.com/ngrok-oss/mantle/commit/61b3eee335b17bcb12a5df170f070b60d82a1c42",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.58.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add Kbd component and documentation page for keyboard shortcuts",
					"pr": "https://github.com/ngrok-oss/mantle/pull/869",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e38e79a664f26a1793c74f2d4056c2194bb72507",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add `filter` and `shouldFilter` props to `Command.Dialog` for custom filtering behavior",
					"pr": "https://github.com/ngrok-oss/mantle/pull/864",
					"commit": "https://github.com/ngrok-oss/mantle/commit/aa7f600d4abcc7d063da1911e2f2e0acc2d82bb3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix: restore text-size-inherit utility\n\nRe-added `text-size-inherit` font-size utility that was accidentally removed in v0.57.3. This utility allows components to inherit font-size from their parent element.\n\n**Note:** This utility is named `text-size-inherit` (not `text-inherit`) to avoid conflicts with Tailwind's standard `text-inherit` utility which controls color inheritance.\n\n**Changes:**\n- Added `--text-size-inherit: inherit;` to `@theme inline` block\n- Added `text-size-inherit` to font-size class group in cx helper's tailwind-merge config\n- Added tests for proper class merging with text-size-inherit",
					"pr": "https://github.com/ngrok-oss/mantle/pull/858",
					"commit": "https://github.com/ngrok-oss/mantle/commit/df048454e61c20712309ac375547b1154e350a3d",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix: enable text-mono font-size overrides with cx helper\n\nExtended the `cx` helper's tailwind-merge configuration to recognize `text-mono` as a font-size class. This allows users to properly override the monospace font size in Table.Cell and CodeBlock components using standard Tailwind font-size utilities like `text-base`, `text-xl`, etc.\n\n**Before:**\n\n```tsx\n<Table.Cell className=\"text-base\">INV001</Table.Cell>\n// Both text-mono and text-base were present in className\n// text-mono took precedence → 13px font-size\n```\n\n**After:**\n\n```tsx\n<Table.Cell className=\"text-base\">INV001</Table.Cell>\n// tailwind-merge properly removes text-mono\n// text-base takes effect → 16px font-size\n```\n\n**Technical Details:**\n- Added `text-mono` to the `font-size` class group in `extendTailwindMerge` config\n- Added tests verifying proper class merging behavior\n- Updated table docs example to demonstrate font-size override",
					"pr": "https://github.com/ngrok-oss/mantle/pull/856",
					"commit": "https://github.com/ngrok-oss/mantle/commit/20c2da97779a267ad4232f83167f357a07fe5a0f",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "fix: convert text-size-mono to text-mono for proper tailwind-merge support\n\nChanged the custom `@utility text-size-mono` to a proper Tailwind theme fontSize extension `--font-size-mono`, which generates the `text-mono` utility class. This allows `text-mono` to be properly overridden by other font-size utilities like `text-base` or `text-xl` when using the `cx` helper.\n\n**Breaking Change:** Users need to replace `text-size-mono` with `text-mono` in their code.\n\n**Before:**\n\n```tsx\n<Table.Cell className=\"text-size-mono\">...</Table.Cell>\n```\n\n**After:**\n\n```tsx\n<Table.Cell className=\"text-base\">...</Table.Cell> // text-base now properly overrides the default text-mono\n```",
					"pr": "https://github.com/ngrok-oss/mantle/pull/854",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8819cb05a05a7db9415db439f0100104391bb41b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Command: export MetaKey component for platform-aware keyboard shortcuts\n\nExtract MetaKey as a reusable SSR-safe component that displays the appropriate modifier key (⌘ for macOS/iOS, Ctrl for others) in keyboard shortcut hints.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/852",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d5cbefbbb04d507380c90f1e1a5d6642a6a3790c",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.57.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Remove EuclidSquare bold/semibold; export new theme font helper components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/849",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a83221adbe84a309c77b19378ad5ed973584dee7",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.56.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Implement Command component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/839",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7dc68778486e90dd92867c7ecd15450610bd6b8a",
					"author": "randseay"
				}
			]
		},
		{
			"version": "0.55.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "IconButton: add in sr-only label as inner children when using asChild",
					"pr": "https://github.com/ngrok-oss/mantle/pull/842",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0bdcaba1b72080d4b90545ca3d3d559b6aed9b22",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.55.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Table: set overscroll-x-none on Table.Root",
					"pr": "https://github.com/ngrok-oss/mantle/pull/840",
					"commit": "https://github.com/ngrok-oss/mantle/commit/6d60f2ec304241a3a5d98f78c0349eabae78826b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.55.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update ariakit and react-day-picker",
					"pr": "https://github.com/ngrok-oss/mantle/pull/834",
					"commit": "https://github.com/ngrok-oss/mantle/commit/235593be593f2d510ce1917792118c8fa0861ff9",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Theme: improve cookie parsing and reduce risk of FOUC, hydration issues",
					"pr": "https://github.com/ngrok-oss/mantle/pull/837",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ba79d27dd3d04039c81d86cf41abe23d192e13d3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.55.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "AutoScrollToHash + useAutoScrollToHash: switch to context provider, allow for programmatic scrollToHash()",
					"pr": "https://github.com/ngrok-oss/mantle/pull/828",
					"commit": "https://github.com/ngrok-oss/mantle/commit/5cdda38c1278e0fa24f84816ecfc5065db2b6591",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.55.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add react-router to peer dependencies of mantle, document AutoScrollToHash peerDep on react-router",
					"pr": "https://github.com/ngrok-oss/mantle/pull/826",
					"commit": "https://github.com/ngrok-oss/mantle/commit/48ce32d29cb6102620c3658fc5f435608e202248",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.55.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Export AutoScrollToHash, useAutoScrollToHash, and useScrollBehavior",
					"pr": "https://github.com/ngrok-oss/mantle/pull/825",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d9dfa703c8f3029a00f8fbd8b4f066fdfc0d3f92",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/823",
					"commit": "https://github.com/ngrok-oss/mantle/commit/05ca536b24ca024d44c31bb53d6d6388a02887a4",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.54.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Bump tw-animate-css",
					"pr": "https://github.com/ngrok-oss/mantle/pull/813",
					"commit": "https://github.com/ngrok-oss/mantle/commit/30580b7c30b07421d2226143a3b0f5e2b46568c5",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Add visibilitychange handler for ThemeProvider",
					"pr": "https://github.com/ngrok-oss/mantle/pull/815",
					"commit": "https://github.com/ngrok-oss/mantle/commit/dd1eb1f5efeff8e044c808ea0f57267abc47ee55",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.54.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Theme: fix cross-tab theme sync when the cookie changes",
					"pr": "https://github.com/ngrok-oss/mantle/pull/810",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8005c937d5780c45c2a3573023df5967851e08d2",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.54.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "remove microtask in FOUC script",
					"pr": "https://github.com/ngrok-oss/mantle/pull/808",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1f943b7266c9bf3464d4271b8fdc93a421f59eab",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.54.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Switch from localStorage to cookie for theme preference storage primitive",
					"pr": "https://github.com/ngrok-oss/mantle/pull/806",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c1162a40080c574acb76fba83f24b0c4d756a18b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.53.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Rename theme-provider export to theme",
					"pr": "https://github.com/ngrok-oss/mantle/pull/804",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9286f3afb365ae4a7f8881905e8890a0ef7740ef",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update react day picker dependency",
					"pr": "https://github.com/ngrok-oss/mantle/pull/803",
					"commit": "https://github.com/ngrok-oss/mantle/commit/165981f4334a389da899787530cf8b80c2ff52a9",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Add the xs breakpoint to the breakpoint component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/801",
					"commit": "https://github.com/ngrok-oss/mantle/commit/47ecff27f9bea00f5d4b4fc72fb9d281fb331174",
					"author": "aaronshekey"
				}
			]
		},
		{
			"version": "0.52.9",
			"changes": [
				{
					"bump": "patch",
					"summary": "Dialog Overlay Primitive: add data-overlay attribute to Overlay primitive",
					"pr": "https://github.com/ngrok-oss/mantle/pull/797",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a5a1b91428b682c32657540c84ff1912368bf734",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.8",
			"changes": [
				{
					"bump": "patch",
					"summary": "Combobox: fix scrolling presentation in content",
					"pr": "https://github.com/ngrok-oss/mantle/pull/790",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2806bb4efd2cedaf5e6b1a4a3e40a79ed7a31f8d",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Combobox: bump up spacing between input and content",
					"pr": "https://github.com/ngrok-oss/mantle/pull/790",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2806bb4efd2cedaf5e6b1a4a3e40a79ed7a31f8d",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "bump headlessui version",
					"pr": "https://github.com/ngrok-oss/mantle/pull/789",
					"commit": "https://github.com/ngrok-oss/mantle/commit/df7b9546cfb478605528450346560f9fd8d70582",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.52.7",
			"changes": [
				{
					"bump": "patch",
					"summary": "Button: remove the need for inner span",
					"pr": "https://github.com/ngrok-oss/mantle/pull/777",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a484cab854475ccc0e4288d2a6046e896bbe553a",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Button, IconButton: add active:scale-[0.97]",
					"pr": "https://github.com/ngrok-oss/mantle/pull/779",
					"commit": "https://github.com/ngrok-oss/mantle/commit/37f40bd43c97665e412600ce991cb70a83524ae6",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.6",
			"changes": [
				{
					"bump": "patch",
					"summary": "anchor: fix ring class on focus-visible",
					"pr": "https://github.com/ngrok-oss/mantle/pull/775",
					"commit": "https://github.com/ngrok-oss/mantle/commit/3519c45582baf2d2c74daeaddece917062c392db",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "update tailwindcss min peer dep",
					"pr": "https://github.com/ngrok-oss/mantle/pull/773",
					"commit": "https://github.com/ngrok-oss/mantle/commit/17dcb264e1dd504c5cb78bd20ec0a32acfb7a503",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.52.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "Alert: when appearance=\"banner\", also remove the top border",
					"pr": "https://github.com/ngrok-oss/mantle/pull/770",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9f55e0ecebbb3dcaa0644a973038a758d1681acf",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update tw-animate-css",
					"pr": "https://github.com/ngrok-oss/mantle/pull/767",
					"commit": "https://github.com/ngrok-oss/mantle/commit/10899b27d6b3dcc49222a558af86210cf99b82dc",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Alert: add appearance prop to support \"banner\" alerts",
					"pr": "https://github.com/ngrok-oss/mantle/pull/768",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b8cd5d35dcbe349c4d88d22786a4ec6dd1faeb35",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Card: fix how we render borders between Card.Header, Card.Body, and Card.Footer",
					"pr": "https://github.com/ngrok-oss/mantle/pull/763",
					"commit": "https://github.com/ngrok-oss/mantle/commit/fe24bbbfb36d9b325b7b92d1a29d53c7ab73cb5b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "ProgressDonut: add `indeterminateRotationSpeed` prop to control spin speed. Fix default `animation-duration-[15s]` so it no longer overrides consumer-provided `animation-duration-*` classes.",
					"pr": "https://github.com/ngrok-oss/mantle/pull/760",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9b8ea0b409420effb979f4f9a752fc3ed5d962b5",
					"author": "melanieseltzer"
				}
			]
		},
		{
			"version": "0.52.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Combobox: fix ItemValue data-user-value bolding",
					"pr": "https://github.com/ngrok-oss/mantle/pull/752",
					"commit": "https://github.com/ngrok-oss/mantle/commit/be2c37a5df3b9908dd2ed48df0c58acb23ac5b19",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.52.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "add useIsBelowBreakpoint hook, improve performance of breakpoint hooks",
					"pr": "https://github.com/ngrok-oss/mantle/pull/748",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2e7509c937086d51bd7c8dfa00d57cf2dc105212",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Rename InlineCode to Code",
					"pr": "https://github.com/ngrok-oss/mantle/pull/745",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9611901fc1db0daec0691044dcf95535bdf75218",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add useIsHydrated hook",
					"pr": "https://github.com/ngrok-oss/mantle/pull/746",
					"commit": "https://github.com/ngrok-oss/mantle/commit/639eed24e29b23856fec43b99ea11a20fe9da0eb",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add useBreakpoint hook",
					"pr": "https://github.com/ngrok-oss/mantle/pull/746",
					"commit": "https://github.com/ngrok-oss/mantle/commit/639eed24e29b23856fec43b99ea11a20fe9da0eb",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Add BrowserOnly component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/746",
					"commit": "https://github.com/ngrok-oss/mantle/commit/639eed24e29b23856fec43b99ea11a20fe9da0eb",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Switch Alert, Dialog, and AlertDialog Description components to render a div instead of a p by default",
					"pr": "https://github.com/ngrok-oss/mantle/pull/743",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9e2621c83d289ff71f864c1405dccd8367a139a0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update hooks documentation for useMatchesMediaQuery and useCopyToClipboard",
					"pr": "https://github.com/ngrok-oss/mantle/pull/746",
					"commit": "https://github.com/ngrok-oss/mantle/commit/639eed24e29b23856fec43b99ea11a20fe9da0eb",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.51.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Accordion: fix export object for compound component definition",
					"pr": "https://github.com/ngrok-oss/mantle/pull/740",
					"commit": "https://github.com/ngrok-oss/mantle/commit/bbfd6d418d51e8780c108fb905c42fbdb44e95ec",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.51.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update react-day-picker and tw-animate-css",
					"pr": "https://github.com/ngrok-oss/mantle/pull/733",
					"commit": "https://github.com/ngrok-oss/mantle/commit/55565dcbb954f938f4f08ec2171959532a595813",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.51.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "DropdownMenu: support tooltips on disabled dropdown menu items",
					"pr": "https://github.com/ngrok-oss/mantle/pull/731",
					"commit": "https://github.com/ngrok-oss/mantle/commit/cd19eb172a1bcad11137eecb9a0bd5f32e192088",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.51.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "DataTable: remove DataTable.Rows convenience component; instead prefer to map over rows directly",
					"pr": "https://github.com/ngrok-oss/mantle/pull/730",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e61565f9dc66197c65f377afed37642a99822856",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/728",
					"commit": "https://github.com/ngrok-oss/mantle/commit/521d59ffe88f8af4aae54d49b365593eeef0621f",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.50.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "DataTable: support passing fn as child to DataTable.Rows",
					"pr": "https://github.com/ngrok-oss/mantle/pull/722",
					"commit": "https://github.com/ngrok-oss/mantle/commit/961e15757e9147818a9527126b77c002975d58c8",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.50.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Toast: for toast message, use font-body instead of font-sans",
					"pr": "https://github.com/ngrok-oss/mantle/pull/719",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7cab99cb6fa934beae615be4e90391ec0727482b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "DataTable: export cell component too",
					"pr": "https://github.com/ngrok-oss/mantle/pull/721",
					"commit": "https://github.com/ngrok-oss/mantle/commit/31c6ec03a466da457e875eb61c7fee07ba56b3a3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.50.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Colors: fix dark mode swap of white and black as semantic colors",
					"pr": "https://github.com/ngrok-oss/mantle/pull/717",
					"commit": "https://github.com/ngrok-oss/mantle/commit/024cf70f82bd0aed57992ecaa4002868861ecce2",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "replace remaining hsl() usages with oklch() and --color-\\* css vars",
					"pr": "https://github.com/ngrok-oss/mantle/pull/717",
					"commit": "https://github.com/ngrok-oss/mantle/commit/024cf70f82bd0aed57992ecaa4002868861ecce2",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.50.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix missing production dependency for tw-animate-css",
					"pr": "https://github.com/ngrok-oss/mantle/pull/714",
					"commit": "https://github.com/ngrok-oss/mantle/commit/6507acf7248389e94a6c841802241e14621df324",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.50.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Migrate mantle to Tailwind v4",
					"pr": "https://github.com/ngrok-oss/mantle/pull/656",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e0846f8f5dc22ef63efc2fcb776b9161f4eace20",
					"author": "aaronshekey"
				}
			]
		},
		{
			"version": "0.40.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update ariakit (combobox improvements)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/711",
					"commit": "https://github.com/ngrok-oss/mantle/commit/3f531c587caa33a532fb0cc2434cb15d321a302d",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.40.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Implement composite named exports",
					"pr": "https://github.com/ngrok-oss/mantle/pull/687",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a3b49ab9a832c6636416792b73d648dc782265c3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.32.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add nonce prop to MantleThemeHeadContent, update doc blocks",
					"pr": "https://github.com/ngrok-oss/mantle/pull/699",
					"commit": "https://github.com/ngrok-oss/mantle/commit/82f26dccb2605cf9a1dab9e4d8d91d45f929e24d",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.32.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update headlessui and sonner dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/695",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0b342d7675e53317324636309be01d76dfd7b63a",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.32.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Add explicit displayNames to all mantle components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/678",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c30359783e449583ac522bddb36ef92225e5ba84",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "add missing intellisense jsdocs to all mantle components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/680",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7b6b15afdcc42104dbefb9a1213d694c2c7d39dd",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.32.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add ProgressBar component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/675",
					"commit": "https://github.com/ngrok-oss/mantle/commit/4a65a5ac00c0d656f0771503fbe1f8ffeada8057",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.31.6",
			"changes": [
				{
					"bump": "patch",
					"summary": "remove zod as a peerDependency of mantle",
					"pr": "https://github.com/ngrok-oss/mantle/pull/670",
					"commit": "https://github.com/ngrok-oss/mantle/commit/bc3e6ac87bd453b7af82dddad013cd9fd7de0671",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.31.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "Sprinkle use client everywhere",
					"pr": "https://github.com/ngrok-oss/mantle/pull/662",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1cfccd66c5e4091c34553436e422e2e1cda356a4",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.31.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Change peerDependencies for react and react-dom",
					"pr": "https://github.com/ngrok-oss/mantle/pull/660",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2fddd06a2d7ac056f022a96d64888230bb261dcf",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.31.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/642",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1bb8fdd7769f39dfc5fd2556cee5a8d08e3d006d",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/651",
					"commit": "https://github.com/ngrok-oss/mantle/commit/57d5b6054b96c5e68ecafa35099aabcb1adbdce7",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Fix mantle react, react-dom peer dependencies range",
					"pr": "https://github.com/ngrok-oss/mantle/pull/659",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1d43071a93f4d5d618dd503ddf9dfbd2a89adf6b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Fix bug where `setValueOnClick` prop was destructured (to set a default) but then never passed along and used (so the consumer could never override it).",
					"pr": "https://github.com/ngrok-oss/mantle/pull/658",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ad402dbf34c05825538f89ddb4ee03cf778a0bce",
					"author": "melanieseltzer"
				}
			]
		},
		{
			"version": "0.31.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fix breakpoint configuration to allow for arbitrary breakpoint",
					"pr": "https://github.com/ngrok-oss/mantle/pull/643",
					"commit": "https://github.com/ngrok-oss/mantle/commit/148dd764cbcbd4025503e0cbcfb2a5ea24a40b76",
					"author": "aaronshekey"
				}
			]
		},
		{
			"version": "0.31.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "RadioIndicator: add shrink-0 so the indicator does not shrink in flex contexts",
					"pr": "https://github.com/ngrok-oss/mantle/pull/635",
					"commit": "https://github.com/ngrok-oss/mantle/commit/baa2d7fe2008c1e14baeec8618209e48c2ce835b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.31.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "SelectItem: allow for icon slot",
					"pr": "https://github.com/ngrok-oss/mantle/pull/633",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0632cca37f5376072f086256dfc25c69c973e53c",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Icons: export AutoThemeIcon and ThemeIcon",
					"pr": "https://github.com/ngrok-oss/mantle/pull/633",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0632cca37f5376072f086256dfc25c69c973e53c",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/631",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2d18988384fee665f88aa316e2bec112434cb35c",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/609",
					"commit": "https://github.com/ngrok-oss/mantle/commit/fc8b793e1c7ea43b7575cff89f15ed645f3c9ce7",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.30.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add `AlertDismissIconButton` to `Alert` component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/620",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c76d1bd1c32fbc84ccbe69a176e8ea06326cfd28",
					"author": "aaronshekey"
				},
				{
					"bump": "patch",
					"summary": "Table edge case refinements and a sans serif font on tooltips by default",
					"pr": "https://github.com/ngrok-oss/mantle/pull/617",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c72c6e1228f5b62a0fa7ec39957ac71081df2667",
					"author": "aaronshekey"
				}
			]
		},
		{
			"version": "0.29.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Update dependencies; use named \\*Icon imports from phosphor",
					"pr": "https://github.com/ngrok-oss/mantle/pull/603",
					"commit": "https://github.com/ngrok-oss/mantle/commit/264dc1b8947b9c44fac3eef97e22446c249e0f17",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.28.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Revert phosphor update",
					"pr": "https://github.com/ngrok-oss/mantle/pull/595",
					"commit": "https://github.com/ngrok-oss/mantle/commit/26cdffa6a10da1a6eb7b868db892f3c60e15bef6",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.28.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Update phosphor icons to new suffix Icon imports",
					"pr": "https://github.com/ngrok-oss/mantle/pull/591",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2cf4f4c6cd219172f6d8131a4a6b2270152b53d4",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.27.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "RadioButton: don't highlight border on hover when checked AND disabled",
					"pr": "https://github.com/ngrok-oss/mantle/pull/589",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2eb2764c12bcb0cab0e9d99801dc1b8e0ed60dc4",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.27.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "tsconfig: improve tsconfigs and remove unused imports/vars",
					"pr": "https://github.com/ngrok-oss/mantle/pull/559",
					"commit": "https://github.com/ngrok-oss/mantle/commit/9da7027f0009b0f57df385377c73da262177efee",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Table: improve component design and styling",
					"pr": "https://github.com/ngrok-oss/mantle/pull/551",
					"commit": "https://github.com/ngrok-oss/mantle/commit/fceb2effdc828719a340110e5e3fd216d88ae564",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/576",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ce359c0e5046d00af54814693dddad7b95099d66",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/568",
					"commit": "https://github.com/ngrok-oss/mantle/commit/3d9c378c01d278e6376e8a668d465d93666b281a",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.27.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "DataTable: fix react key errors in DataTableHead and DataTableRow",
					"pr": "https://github.com/ngrok-oss/mantle/pull/544",
					"commit": "https://github.com/ngrok-oss/mantle/commit/cc043a74bd909c4c1c4d77027fee10c8ae5653db",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "DataTable: fix hover styles, add DataTableActionCell",
					"pr": "https://github.com/ngrok-oss/mantle/pull/546",
					"commit": "https://github.com/ngrok-oss/mantle/commit/44cc9b9d3eef4f09a87579350e12d12fcf7d78aa",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Tailwind Preset: fix content glob, should point to dist folder now",
					"pr": "https://github.com/ngrok-oss/mantle/pull/546",
					"commit": "https://github.com/ngrok-oss/mantle/commit/44cc9b9d3eef4f09a87579350e12d12fcf7d78aa",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.27.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "DataTable: add most of the remaining core components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/538",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1c2f1af3d26841671fd53f2334d722790bd03454",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "DataTable: export both DataTableHeaderSortButton and DataTableHeader, decouple behavior to make it fully customizable",
					"pr": "https://github.com/ngrok-oss/mantle/pull/536",
					"commit": "https://github.com/ngrok-oss/mantle/commit/585624a29920d6c92d5e2bf81ea682a56cd89f47",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.27.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Tailwind Preset: replace 'text-mono' with 'text-size-mono' (so it doesn't clash with tw-merge text-\\* color classes)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/533",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8211d3b636a5197b305ed4774d7316cf8cf09ca6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "DataTable: add tests to helper methods, render example on docs site",
					"pr": "https://github.com/ngrok-oss/mantle/pull/533",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8211d3b636a5197b305ed4774d7316cf8cf09ca6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Toast: change class from .mantle-prompt to .overlay-prompt, improve compat w/ legacy ui components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/533",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8211d3b636a5197b305ed4774d7316cf8cf09ca6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Table: fix/improve styling",
					"pr": "https://github.com/ngrok-oss/mantle/pull/533",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8211d3b636a5197b305ed4774d7316cf8cf09ca6",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/533",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8211d3b636a5197b305ed4774d7316cf8cf09ca6",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.26.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add custom mantle icons exports (Sort, TrafficPolicyFile) and sorting helper functions, types",
					"pr": "https://github.com/ngrok-oss/mantle/pull/525",
					"commit": "https://github.com/ngrok-oss/mantle/commit/bf41174756a5fe1b563e5fe43ea6f80ec3df09d3",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "DataTable: add DataTableHeader component, which supports column sorting by default (if enabled on the column)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/527",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f702d8a8a228eb568f3273c650b0ad00d0b35adb",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "Table: improve documentation and fix markup, exports to match html spec 1:1; improve styling and include horizontal overflow detection",
					"pr": "https://github.com/ngrok-oss/mantle/pull/527",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f702d8a8a228eb568f3273c650b0ad00d0b35adb",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/524",
					"commit": "https://github.com/ngrok-oss/mantle/commit/38ac3dbadfa45dfa283bc4a8853966b190839776",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Table: Improve Table component docs",
					"pr": "https://github.com/ngrok-oss/mantle/pull/527",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f702d8a8a228eb568f3273c650b0ad00d0b35adb",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.25.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "PopoverContent: add preferredWidth prop, use that instead of explicit width",
					"pr": "https://github.com/ngrok-oss/mantle/pull/515",
					"commit": "https://github.com/ngrok-oss/mantle/commit/eb03234c6ef14d63d4e7d15320a6a8123ef16237",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Calendar: add min-w-min to months container (prevent overflow in nav)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/515",
					"commit": "https://github.com/ngrok-oss/mantle/commit/eb03234c6ef14d63d4e7d15320a6a8123ef16237",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.25.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "AlertDialogContent, DialogContent: add preferredWidth prop",
					"pr": "https://github.com/ngrok-oss/mantle/pull/513",
					"commit": "https://github.com/ngrok-oss/mantle/commit/052f57113ae811c6dbefbb293c0cb22fbcfaf950",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/510",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7dcc1e050bc181d2f193257d51a1df3092a016ef",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.25.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "CodeBlock: add support for setting the indentation used (tabs vs spaces), fallback to detecting what the given language prefers or spaces if none",
					"pr": "https://github.com/ngrok-oss/mantle/pull/501",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a6696155e7fab6651d331af6bfe6459b7b8ecac1",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/500",
					"commit": "https://github.com/ngrok-oss/mantle/commit/275f8d1b40bbc9e87d7271ddcab4b94748fc8744",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "CodeBlock: improve documentation and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/501",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a6696155e7fab6651d331af6bfe6459b7b8ecac1",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.24.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "AlertDialog: improve intellisense and docs, support asChild",
					"pr": "https://github.com/ngrok-oss/mantle/pull/497",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b5526a01de147d8ca7f74e0ceca3b0a0b6f5868d",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Flag: improve intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Icon: update docs and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Label: update docs and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "MediaObject: update docs and intellisense, add asChild support",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Card: improve docs and intellisense, support asChild on all sub-components",
					"pr": "https://github.com/ngrok-oss/mantle/pull/494",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c4961ac846a3d5dddac9d0c9cf371b14c63240a0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Badge: improve intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Combobox: fix intellisense on `ComboboxItemValue`",
					"pr": "https://github.com/ngrok-oss/mantle/pull/493",
					"commit": "https://github.com/ngrok-oss/mantle/commit/410bc330fd2715ca47e1858a1c5949e02d3a7b7e",
					"author": "melanieseltzer"
				},
				{
					"bump": "patch",
					"summary": "Skeleton: update docs and intellisense, add asChild support",
					"pr": "https://github.com/ngrok-oss/mantle/pull/496",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d885708597d45decf0addf40dd5c0179f6b73c0",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.24.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Anchor: add support for icons and their placement, improve docs and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/491",
					"commit": "https://github.com/ngrok-oss/mantle/commit/97538d9986c5b38098729b10acd3274ce28cc98b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.23.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "CodeBlock: fix unescaped inner html on initial render",
					"pr": "https://github.com/ngrok-oss/mantle/pull/489",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1c47edc8c4ac9a352befc154e11be5610f523870",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.23.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Switch: improve intellisense and docs, fix readOnly prop",
					"pr": "https://github.com/ngrok-oss/mantle/pull/486",
					"commit": "https://github.com/ngrok-oss/mantle/commit/671867cb3a23797a28a0434b86e1be1f6df28955",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Separator, ProgressDonut: improve docs and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/483",
					"commit": "https://github.com/ngrok-oss/mantle/commit/247bbc45dde598f90862ebd051be8fad695f9312",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Checkbox: improve intellisense and docs",
					"pr": "https://github.com/ngrok-oss/mantle/pull/485",
					"commit": "https://github.com/ngrok-oss/mantle/commit/13d21f3d01ae93300fc379c8439834c03fbe1d5b",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.23.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add SandboxedOnClick component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/478",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1b8857b0bfc23b027ffadf29f3bb8eb9a7535181",
					"author": "cody-dot-js"
				},
				{
					"bump": "minor",
					"summary": "SheetContent: add preferredWidth prop, remove side: \"top\" and \"bottom\" options",
					"pr": "https://github.com/ngrok-oss/mantle/pull/477",
					"commit": "https://github.com/ngrok-oss/mantle/commit/de42d2073df5d23609df63606e2ebbd9c4565e5b",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies, add dependabot config, clean up scripts",
					"pr": "https://github.com/ngrok-oss/mantle/pull/469",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d879af88e3aff48523b94cd618dee720813ba878",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "PopoverContent: prevent click events from bubbling out of the PopoverContent container",
					"pr": "https://github.com/ngrok-oss/mantle/pull/479",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e775e1115626eb7b38480e36507e44d74ac45b5f",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "TextArea: improve docs and intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/480",
					"commit": "https://github.com/ngrok-oss/mantle/commit/c87c906f5d91c6d5988097eb8ca8f461038355a0",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.22.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/467",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1556c80892e453eb0ce76ba4638a3c2ab79b03a6",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.22.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/464",
					"commit": "https://github.com/ngrok-oss/mantle/commit/b55338ea37f0f1a074713990bdcb96b998ef8c09",
					"author": "dependabot"
				},
				{
					"bump": "patch",
					"summary": "Sheet: improve inline intellisense and docsite documentation",
					"pr": "https://github.com/ngrok-oss/mantle/pull/466",
					"commit": "https://github.com/ngrok-oss/mantle/commit/a708b7f298dcd75c5607f4a226f1fede0d593921",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.22.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Checkbox: remove zodCheckbox export",
					"pr": "https://github.com/ngrok-oss/mantle/pull/462",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2e9f11667f8f2f895ac81883efc386e7df8131d1",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Select: improve component docs, add inline intellisense examples w/ links, make content width default to \"trigger\"",
					"pr": "https://github.com/ngrok-oss/mantle/pull/460",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e62f0ef753984366b4c3f3bc53e656abfc0f4b98",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.21.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "update prism to fix security vulnerability",
					"pr": "https://github.com/ngrok-oss/mantle/pull/458",
					"commit": "https://github.com/ngrok-oss/mantle/commit/494430cfa5e08958de9fc8eb7710644362dee18b",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.21.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Alert: improve doc site entry and intellisense for each component; remove unused default priority and make priority required; add AlertIcon component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/456",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2ed9953b76c231445a67a63b3f4be31158968306",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.21.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "ProgressDonut: properly fix the render AND hydration issue",
					"pr": "https://github.com/ngrok-oss/mantle/pull/454",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2ddbdab61f0a875854452c11a3b7dba1913b4737",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.21.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "ProgressDonut: fix hydration error, add examples in intellisense",
					"pr": "https://github.com/ngrok-oss/mantle/pull/452",
					"commit": "https://github.com/ngrok-oss/mantle/commit/f76dc0e7f3e862f4f50e0270fe29709facd88803",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.21.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "CodeBlock: fix alignment of absolutely positioned copy button",
					"pr": "https://github.com/ngrok-oss/mantle/pull/450",
					"commit": "https://github.com/ngrok-oss/mantle/commit/00de431a6f3f95d877a62a89a6d305d82b56b639",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.21.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add combobox component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/428",
					"commit": "https://github.com/ngrok-oss/mantle/commit/944e9a69b0e295d2794e6dbcbc3bdc6fc922e990",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Flags: add GB alias for UK flag",
					"pr": "https://github.com/ngrok-oss/mantle/pull/447",
					"commit": "https://github.com/ngrok-oss/mantle/commit/8d47922ad3d3cba9305eaab75552c9910f6af7e9",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.20.2",
			"changes": [
				{
					"bump": "patch",
					"summary": "Flags: rename Flags type to CountryCode, export countryCodes list and isCountryCode type predicate fn",
					"pr": "https://github.com/ngrok-oss/mantle/pull/444",
					"commit": "https://github.com/ngrok-oss/mantle/commit/63ce7986ea424774168209218d4562cbda5906d1",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.20.1",
			"changes": [
				{
					"bump": "patch",
					"summary": "Flag: add border radius and inset transparent black border",
					"pr": "https://github.com/ngrok-oss/mantle/pull/443",
					"commit": "https://github.com/ngrok-oss/mantle/commit/46087c5e763c2c0d034f5d9d1e1b48191dfe1ccd",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Prep for react 19: swap react-19-deprecated ElementRef type for ComponentRef type",
					"pr": "https://github.com/ngrok-oss/mantle/pull/441",
					"commit": "https://github.com/ngrok-oss/mantle/commit/2867bdfb23df6d35da1e50bd9ad95b65c70cc3e3",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.20.0",
			"changes": [
				{
					"bump": "minor",
					"summary": "Add Flag component",
					"pr": "https://github.com/ngrok-oss/mantle/pull/439",
					"commit": "https://github.com/ngrok-oss/mantle/commit/15231189ac7f5818fd963d4dc4162c5ca1cfebba",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.17",
			"changes": [
				{
					"bump": "patch",
					"summary": "AlertDialog: actually export AlertDialogClose",
					"pr": "https://github.com/ngrok-oss/mantle/pull/435",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0aac02a732b0c32c21c2183282a1c9fd0b7e5dc5",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.16",
			"changes": [
				{
					"bump": "patch",
					"summary": "AlertDialog: export AlertDialogClose",
					"pr": "https://github.com/ngrok-oss/mantle/pull/433",
					"commit": "https://github.com/ngrok-oss/mantle/commit/474470667d728a02615fb68b9fc5612635c96882",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.15",
			"changes": [
				{
					"bump": "patch",
					"summary": "DropdownMenuRadioItem: only take up space for the checkmark when an item is checked",
					"pr": "https://github.com/ngrok-oss/mantle/pull/431",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7358307706b78eb459803632df08547e588b5cca",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.14",
			"changes": [
				{
					"bump": "patch",
					"summary": "button: fix underline on group-hover bug of <Button appearance=\"link\"> bug",
					"pr": "https://github.com/ngrok-oss/mantle/pull/430",
					"commit": "https://github.com/ngrok-oss/mantle/commit/ec4e2e4867e7eecfd8571abc4092e83ad1e3c2fe",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "Update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/427",
					"commit": "https://github.com/ngrok-oss/mantle/commit/7b9ef0b44b0f16ff36bd2c9dcfc2d3a74915f1f7",
					"author": "cody-dot-js"
				},
				{
					"bump": "patch",
					"summary": "update dependencies",
					"pr": "https://github.com/ngrok-oss/mantle/pull/425",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0dad7df13a14b59be0c53605bc3fec471ead73e1",
					"author": "dependabot"
				}
			]
		},
		{
			"version": "0.19.13",
			"changes": [
				{
					"bump": "patch",
					"summary": "types: export parseBooleanish",
					"pr": "https://github.com/ngrok-oss/mantle/pull/422",
					"commit": "https://github.com/ngrok-oss/mantle/commit/e87acd639bf7c5ad0826b0014733491400daa71f",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.12",
			"changes": [
				{
					"bump": "patch",
					"summary": "Make the `className` arg on `anchorClassNames` optional",
					"pr": "https://github.com/ngrok-oss/mantle/pull/419",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d78b2ceb6bea4beca93358d7732117d7e97fb1bb",
					"author": "melanieseltzer"
				}
			]
		},
		{
			"version": "0.19.11",
			"changes": [
				{
					"bump": "patch",
					"summary": "CodeBlock: adjust styles, add defensive css (for docs)",
					"pr": "https://github.com/ngrok-oss/mantle/pull/417",
					"commit": "https://github.com/ngrok-oss/mantle/commit/298b1753231f89c8102d469d5d79b6492364a9d8",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.10",
			"changes": [
				{
					"bump": "patch",
					"summary": "mantle.css: improve matching for css vars on root",
					"pr": "https://github.com/ngrok-oss/mantle/pull/415",
					"commit": "https://github.com/ngrok-oss/mantle/commit/427598893d974cdbd27fea55bfe322ab437d7a48",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.9",
			"changes": [
				{
					"bump": "patch",
					"summary": "SelectItem: improve styling to fix hover bg color on selected items in docs use case",
					"pr": "https://github.com/ngrok-oss/mantle/pull/413",
					"commit": "https://github.com/ngrok-oss/mantle/commit/d42bb6f7843060a84a363e5162b7d1cbedd59946",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.8",
			"changes": [
				{
					"bump": "patch",
					"summary": "CodeBlock: add CodeBlockIcon component and fix some styling",
					"pr": "https://github.com/ngrok-oss/mantle/pull/411",
					"commit": "https://github.com/ngrok-oss/mantle/commit/88727bd71171ef05ca83dbd43bad1b2449464c2e",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.7",
			"changes": [
				{
					"bump": "patch",
					"summary": "Revamp the readme and contributing guide",
					"pr": "https://github.com/ngrok-oss/mantle/pull/408",
					"commit": "https://github.com/ngrok-oss/mantle/commit/0868adbcf65936e0377236d353610e063a6279f7",
					"author": "melanieseltzer"
				},
				{
					"bump": "patch",
					"summary": "add fade-in keyframes to tailwind preset",
					"pr": "https://github.com/ngrok-oss/mantle/pull/410",
					"commit": "https://github.com/ngrok-oss/mantle/commit/de54a953fcaf64344c652c5cc573515197e68555",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.6",
			"changes": [
				{
					"bump": "patch",
					"summary": "Slack post will work this time for real i promise u 🦐",
					"commit": "https://github.com/ngrok-oss/mantle/commit/1d83e1df14d7848a7eb14de13699aac7d846dcc8",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.5",
			"changes": [
				{
					"bump": "patch",
					"summary": "Fixing the post to slack webhook on mantle release",
					"commit": "https://github.com/ngrok-oss/mantle/commit/595e6c1dc9758a68602492e270452891d3482f60",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.4",
			"changes": [
				{
					"bump": "patch",
					"summary": "Debugging changesets release",
					"commit": "https://github.com/ngrok-oss/mantle/commit/cf2d8c25e1f3525165e0510ae51dc9162a6439c8",
					"author": "cody-dot-js"
				}
			]
		},
		{
			"version": "0.19.3",
			"changes": [
				{
					"bump": "patch",
					"summary": "Update patch dependencies of radix component packages https://github.com/ngrok-oss/mantle/pull/396\nImprove code quality (suggestions from trialing biomejs) https://github.com/ngrok-oss/mantle/pull/398\n\nFor historical release notes prior to `v0.19.3`, please consult https://github.com/ngrok-oss/mantle/releases",
					"pr": "https://github.com/ngrok-oss/mantle/pull/399",
					"commit": "https://github.com/ngrok-oss/mantle/commit/cbeec7482e7b19fba9202d80e842a6785018728e",
					"author": "cody-dot-js"
				}
			]
		}
	]
}