Skip to content

1.0.19

Patch Changes

  • Updated dependencies [366ae17]
    • @grundtone/design-system@2.15.0
    • @grundtone/vue@2.15.0

1.0.18

Patch Changes

  • Updated dependencies [7e77c0b]
    • @grundtone/design-system@2.14.0
    • @grundtone/vue@2.14.0

1.0.17

Patch Changes

  • Updated dependencies [dbd9c2c]
    • @grundtone/design-system@2.13.0
    • @grundtone/vue@2.13.0

1.0.16

Patch Changes

  • Updated dependencies [fc456bf]:
    • @grundtone/design-system@2.12.0
    • @grundtone/vue@2.12.0
    • @grundtone/utils@2.12.0
    • @grundtone/icons@2.2.0

1.0.15

Patch Changes

  • Updated dependencies [c37762e]:
    • @grundtone/design-system@2.11.0
    • @grundtone/vue@2.11.0

1.0.14

Patch Changes

  • Updated dependencies [200846b]:
    • @grundtone/design-system@2.10.0
    • @grundtone/vue@2.10.0

1.0.13

Patch Changes

  • Updated dependencies [009ab18]:
    • @grundtone/vue@2.9.1
    • @grundtone/icons@2.1.2

1.0.12

Patch Changes

  • Updated dependencies [efee6cf]:
    • @grundtone/design-system@2.9.0
    • @grundtone/vue@2.9.0
    • @grundtone/icons@2.1.1

1.0.11

Patch Changes

  • Updated dependencies [ccb6a4e, 8fc757a, 9cf5217]:
    • @grundtone/design-system@2.8.0
    • @grundtone/vue@2.8.0
    • @grundtone/utils@2.8.0 outline: [2, 3]

1.0.10

Patch Changes

  • Updated dependencies [f41cfa6]:
    • @grundtone/design-system@2.7.1

1.0.9

Patch Changes

  • Updated dependencies [98a30f3]:
    • @grundtone/design-system@2.7.0

1.0.8

Patch Changes

  • Updated dependencies [fd7b9e7]:
    • @grundtone/design-system@2.6.1

Changelog

All notable changes to Grundtone are documented here. This page is generated automatically from changesets.


Unreleased

Changes that are merged and will be included in the next version.

major
Brings @grundtone/react-native onto the 3.x line with the rest of the family, and stops it pinning its siblings to an exact version.

It was never broken against 3.x — it builds and tests green against the 3.0 core today, and none of the five APIs it imports (createTheme, iconRegistry, resolveThemeMode, required, email) were touched by the 3.0 removals, which were confined to @grundtone/vue. The colour palette is byte-for-byte the same 39 slots in 2.22.0 and 3.0.0.

What it was, was isolated. The published 2.22.0 pinned @grundtone/core to 2.22.0 exactly, so a consumer following this package's own README — npm install @grundtone/react-native @grundtone/core — ended up with two copies of core: 3.x at the top and 2.22.0 nested underneath. It worked only because the two palettes happened to be identical. The dependencies are now workspace:^, which publishes as ^3.0.0 and lets a consumer's own 3.x satisfy them.
Affected packages
  • @grundtone/react-nativeMajor

Released

3.1.02026-08-30
#### @grundtone/design-system

Minor Changes



b2a5085 Thanks @allanasp! - New GTBulkActionBar: a sticky bar that rises from the bottom of the viewport when rows are selected, carrying the actions that apply to the whole selection.

Three contracts are worth knowing before using it, each one there because the obvious alternative produces a specific failure:

- It outlives the selection. Visibility is count > 0 OR an unacknowledged receipt. On full success the consumer clears the selection — bound to the count alone, the result would vanish in the same tick it was set, and a successful action would be indistinguishable from no action. - It reserves its own space on document.body and releases it again, so the last row of the list never ends up under it. Consumers add no padding. - It never clears the selection — it emits clear. The consumer clears conditionally on the outcome so a partial success stays retryable on exactly the rows that were missed.

Also adds --blur-overlay (8px) as a foundation token for overlaid surfaces. The carousel controls, which had the value hard-coded, now reference it — two independent surfaces landing on the same physical value is what a shared token is for.

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[bef6db7, b2a5085]: - @grundtone/vue@3.1.0 - @grundtone/design-system@3.1.0

#### @grundtone/vue

Minor Changes



b2a5085 Thanks @allanasp! - New GTBulkActionBar: a sticky bar that rises from the bottom of the viewport when rows are selected, carrying the actions that apply to the whole selection.

Three contracts are worth knowing before using it, each one there because the obvious alternative produces a specific failure:

- It outlives the selection. Visibility is count > 0 OR an unacknowledged receipt. On full success the consumer clears the selection — bound to the count alone, the result would vanish in the same tick it was set, and a successful action would be indistinguishable from no action. - It reserves its own space on document.body and releases it again, so the last row of the list never ends up under it. Consumers add no padding. - It never clears the selection — it emits clear. The consumer clears conditionally on the outcome so a partial success stays retryable on exactly the rows that were missed.

Also adds --blur-overlay (8px) as a foundation token for overlaid surfaces. The carousel controls, which had the value hard-coded, now reference it — two independent surfaces landing on the same physical value is what a shared token is for.

Patch Changes



bef6db7 Thanks @allanasp! - GTBulkActionBar: two fixes from a retrospective review.

- Reserved space is now reconciled between instances. It lives on a single custom property on document.body, and releasing it on one bar's unmount used to strip it from every other bar too — including one still on screen, whose last row then slid underneath it. The largest claim wins, and the property only returns to zero when the last bar goes. - New optional selectionKey. The receipt was discarded on a change of count, so swapping three selected rows for three others left a stale "3 of 3 moved" beside a completely fresh selection. A count cannot express identity; pass a key when your selection can change without changing size.

  • Updated dependencies
[b2a5085]: - @grundtone/design-system@3.1.0
3.0.12026-08-28
#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[539ca9c]: - @grundtone/vue@3.0.1

#### @grundtone/vue

Patch Changes



539ca9c Thanks @allanasp! - GTIcon now warns when the icon prop contains active markup (script tags, event handlers, javascript: URLs, foreignObject or SMIL animate/set). The prop's body is rendered with v-html and is not sanitised, so binding it to user-controlled data is an XSS footgun; the name prop with a provided registry is the safe path and is unaffected.

The warning is a detector, not a defence — it does not catch every vector, and the prop's JSDoc now names it as a trust boundary rather than describing it as a way to pass custom icons.
3.0.02026-08-23
#### @grundtone/core

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

#### @grundtone/design-system

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

Patch Changes



  • Updated dependencies
[e4ae9d6]: - @grundtone/core@3.0.0

#### @grundtone/icons

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

#### @grundtone/nuxt

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

Patch Changes



  • Updated dependencies
[e4ae9d6]: - @grundtone/core@3.0.0 - @grundtone/icons@3.0.0 - @grundtone/design-system@3.0.0 - @grundtone/vue@3.0.0

#### @grundtone/utils

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

Patch Changes



  • Updated dependencies
[e4ae9d6]: - @grundtone/core@3.0.0

#### @grundtone/vue

Major Changes



e4ae9d6 Thanks @allanasp! - grundtone 3.0.0 — develop becomes the published line.

The 2.x line was cut from main and never flowed back, so develop and npm drifted apart. Rather than port main's surface onto develop, this release accepts develop as the source of truth and declares what that costs.

BREAKING: 20 public exports and 4 export-map entry points are removed. Every one is declared in .api-removals.json with the reason beside it. Nineteen of the twenty never existed in develop; none of our three internal consumers import any of them. External consumers cannot be enumerated, which is precisely why this is a major and not a minor.

Consumers must update their dependency explicitly: ^2.x does not match 3.0.0.

@grundtone/react-native is deliberately NOT included — it sits ten minor versions behind npm on develop, and publishing it here would ship a regression wrapped in a higher number. Its fate is a separate decision.

Patch Changes



  • Updated dependencies
[e4ae9d6]: - @grundtone/core@3.0.0 - @grundtone/utils@3.0.0 - @grundtone/icons@3.0.0 - @grundtone/design-system@3.0.0
2.15.02026-07-13
#### @grundtone/design-system

Minor Changes



  • 366ae17: Add Slider component
GTSlider: single and dual-thumb range input with pointer drag, keyboard navigation, ARIA slider pattern, vertical orientation, step snapping, and vanilla JS behavior.

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies [366ae17]
- @grundtone/design-system@2.15.0 - @grundtone/vue@2.15.0

#### @grundtone/vue

Minor Changes



  • 366ae17: Add Slider component
GTSlider: single and dual-thumb range input with pointer drag, keyboard navigation, ARIA slider pattern, vertical orientation, step snapping, and vanilla JS behavior.

Patch Changes



  • Updated dependencies [366ae17]
- @grundtone/design-system@2.15.0
2.14.02026-07-13
#### @grundtone/design-system

Minor Changes



  • 7e77c0b: Add Image utilities, Figure, Carousel, Chart, and Error Page components
Image: .img-fluid, .img-thumbnail, .img-cover, .img-contain CSS utilities. Figure: Semantic figure/figcaption with .figure CSS classes. Carousel (GTCarousel + GTCarouselSlide): Slide/fade transitions, continuous touch drag with rubber-band resistance, keyboard nav, autoplay with reduced-motion respect. Vanilla JS behavior included. Chart (GTChartContainer + GTChartLegend): 5 semantic color tokens (--chart-1 to --chart-5), chart-lib agnostic container with CSS custom properties per series. Error Page (GTErrorPage): Musical staff-line SVG illustrations per HTTP status code (404, 403, 500, 503). Auto-resolves title/description.

Also adds vanilla JS behaviors for Tooltip, Toast, Stepper, and SearchField. Replaces manual ESLint globals with globals.browser package. Switches changeset changelog to @changesets/changelog-git.

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies [7e77c0b]
- @grundtone/design-system@2.14.0 - @grundtone/vue@2.14.0

#### @grundtone/vue

Minor Changes



  • 7e77c0b: Add Image utilities, Figure, Carousel, Chart, and Error Page components
Image: .img-fluid, .img-thumbnail, .img-cover, .img-contain CSS utilities. Figure: Semantic figure/figcaption with .figure CSS classes. Carousel (GTCarousel + GTCarouselSlide): Slide/fade transitions, continuous touch drag with rubber-band resistance, keyboard nav, autoplay with reduced-motion respect. Vanilla JS behavior included. Chart (GTChartContainer + GTChartLegend): 5 semantic color tokens (--chart-1 to --chart-5), chart-lib agnostic container with CSS custom properties per series. Error Page (GTErrorPage): Musical staff-line SVG illustrations per HTTP status code (404, 403, 500, 503). Auto-resolves title/description.

Also adds vanilla JS behaviors for Tooltip, Toast, Stepper, and SearchField. Replaces manual ESLint globals with globals.browser package. Switches changeset changelog to @changesets/changelog-git.

Patch Changes



  • Updated dependencies [7e77c0b]
- @grundtone/design-system@2.14.0
2.13.02026-07-13
#### @grundtone/design-system

Minor Changes



  • dbd9c2c: Add Table and Summary List components
Table (GTTable): Data table with sorting, selection, responsive stacking, and variants (default, borderless, zebra, compact). Includes vanilla JS behavior for HTML-only usage.

Summary List (GTSummaryList + GTSummaryItem): Key-value pair display with
semantics, optional actions, and a card variant. Replaces the old .structured-list CSS.

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies [dbd9c2c]
- @grundtone/design-system@2.13.0 - @grundtone/vue@2.13.0

#### @grundtone/vue

Minor Changes



  • dbd9c2c: Add Table and Summary List components
Table (GTTable): Data table with sorting, selection, responsive stacking, and variants (default, borderless, zebra, compact). Includes vanilla JS behavior for HTML-only usage.

Summary List (GTSummaryList + GTSummaryItem): Key-value pair display with
semantics, optional actions, and a card variant. Replaces the old .structured-list CSS.

Patch Changes



  • Updated dependencies [dbd9c2c]
- @grundtone/design-system@2.13.0
2.12.02026-03-22
#### @grundtone/design-system

Minor Changes



Thanks @allanasp! - Add FileUpload, PasswordInput, OtpInput, Fieldset, and password/OTP validators

- design-system: Add _file-upload.scss (modern drop zone), _password-input.scss (show/hide toggle), _otp-input.scss (single-digit fields), _fieldset.scss (form grouping). Web docs for all four with CodePreview. - vue: Add GTFileUpload (drag-and-drop, file validation, 12 tests), GTPasswordInput (eye/eye-off icon toggle, spellcheck=false, 12 tests), GTOtpInput (auto-advance, paste, filled state, 12 tests) - utils: Add isStrongPassword, getPasswordStrength, isValidOtp validation functions + password(), passwordStrength(), otp() validator factories - icons: Add eye, eye-off, upload, file SVG icons (17 total)

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[fc456bf]: - @grundtone/design-system@2.12.0 - @grundtone/vue@2.12.0 - @grundtone/icons@2.2.0

#### @grundtone/react-native

Patch Changes



  • Updated dependencies
[fc456bf]: - @grundtone/utils@2.12.0 - @grundtone/icons@2.2.0

#### @grundtone/utils

Minor Changes



Thanks @allanasp! - Add FileUpload, PasswordInput, OtpInput, Fieldset, and password/OTP validators

- design-system: Add _file-upload.scss (modern drop zone), _password-input.scss (show/hide toggle), _otp-input.scss (single-digit fields), _fieldset.scss (form grouping). Web docs for all four with CodePreview. - vue: Add GTFileUpload (drag-and-drop, file validation, 12 tests), GTPasswordInput (eye/eye-off icon toggle, spellcheck=false, 12 tests), GTOtpInput (auto-advance, paste, filled state, 12 tests) - utils: Add isStrongPassword, getPasswordStrength, isValidOtp validation functions + password(), passwordStrength(), otp() validator factories - icons: Add eye, eye-off, upload, file SVG icons (17 total)

#### @grundtone/vue

Minor Changes



Thanks @allanasp! - Add FileUpload, PasswordInput, OtpInput, Fieldset, and password/OTP validators

- design-system: Add _file-upload.scss (modern drop zone), _password-input.scss (show/hide toggle), _otp-input.scss (single-digit fields), _fieldset.scss (form grouping). Web docs for all four with CodePreview. - vue: Add GTFileUpload (drag-and-drop, file validation, 12 tests), GTPasswordInput (eye/eye-off icon toggle, spellcheck=false, 12 tests), GTOtpInput (auto-advance, paste, filled state, 12 tests) - utils: Add isStrongPassword, getPasswordStrength, isValidOtp validation functions + password(), passwordStrength(), otp() validator factories - icons: Add eye, eye-off, upload, file SVG icons (17 total)

Patch Changes



  • Updated dependencies
[fc456bf]: - @grundtone/design-system@2.12.0 - @grundtone/utils@2.12.0 - @grundtone/icons@2.2.0
2.11.02026-03-22
#### @grundtone/design-system

Minor Changes



Thanks @allanasp! - Add Stepper component, checkout flow, and fixes

- design-system: Add _stepper.scss (horizontal dots, checkmarks, connecting lines, error/simple variants) - vue: Add GTStepper molecule (14 tests) with v-model:activeStep, allClickable, simple variant. Fix Input charWidth with padding compensation. Fix Breadcrumb li margin override. Add checkout flow to Vue playground (4-step: Cart → Delivery → Payment → Confirm using GTStepper, GTAddressInput, GTCard, GTRadioGroup, GTCheckbox, useField, useToast). - react-native: Add GTStepper with Pressable steps and dot/check/error indicators

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[c37762e]: - @grundtone/design-system@2.11.0 - @grundtone/vue@2.11.0

#### @grundtone/react-native

Minor Changes



Thanks @allanasp! - Add Stepper component, checkout flow, and fixes

- design-system: Add _stepper.scss (horizontal dots, checkmarks, connecting lines, error/simple variants) - vue: Add GTStepper molecule (14 tests) with v-model:activeStep, allClickable, simple variant. Fix Input charWidth with padding compensation. Fix Breadcrumb li margin override. Add checkout flow to Vue playground (4-step: Cart → Delivery → Payment → Confirm using GTStepper, GTAddressInput, GTCard, GTRadioGroup, GTCheckbox, useField, useToast). - react-native: Add GTStepper with Pressable steps and dot/check/error indicators

#### @grundtone/vue

Minor Changes



Thanks @allanasp! - Add Stepper component, checkout flow, and fixes

- design-system: Add _stepper.scss (horizontal dots, checkmarks, connecting lines, error/simple variants) - vue: Add GTStepper molecule (14 tests) with v-model:activeStep, allClickable, simple variant. Fix Input charWidth with padding compensation. Fix Breadcrumb li margin override. Add checkout flow to Vue playground (4-step: Cart → Delivery → Payment → Confirm using GTStepper, GTAddressInput, GTCard, GTRadioGroup, GTCheckbox, useField, useToast). - react-native: Add GTStepper with Pressable steps and dot/check/error indicators

Patch Changes



  • Updated dependencies
[c37762e]: - @grundtone/design-system@2.11.0
2.10.02026-03-22
#### @grundtone/design-system

Minor Changes



Thanks @allanasp! - Add Tooltip component, Toast playground updates

- design-system: Add _tooltip.scss (dark minimal Sonner-style bubble with auto-positioning and arrow) - vue: Add GTTooltip atom (click with help icon, hover with 300ms delay, auto-flips top↔bottom, 13 tests). Toast icons vertically centered. Toast added to all playgrounds with variant icons. - react-native: Add GTTooltip (long-press trigger with Modal overlay). Toast vertically centered.

#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[200846b]: - @grundtone/design-system@2.10.0 - @grundtone/vue@2.10.0

#### @grundtone/react-native

Minor Changes



Thanks @allanasp! - Add Tooltip component, Toast playground updates

- design-system: Add _tooltip.scss (dark minimal Sonner-style bubble with auto-positioning and arrow) - vue: Add GTTooltip atom (click with help icon, hover with 300ms delay, auto-flips top↔bottom, 13 tests). Toast icons vertically centered. Toast added to all playgrounds with variant icons. - react-native: Add GTTooltip (long-press trigger with Modal overlay). Toast vertically centered.

#### @grundtone/vue

Minor Changes



Thanks @allanasp! - Add Tooltip component, Toast playground updates

- design-system: Add _tooltip.scss (dark minimal Sonner-style bubble with auto-positioning and arrow) - vue: Add GTTooltip atom (click with help icon, hover with 300ms delay, auto-flips top↔bottom, 13 tests). Toast icons vertically centered. Toast added to all playgrounds with variant icons. - react-native: Add GTTooltip (long-press trigger with Modal overlay). Toast vertically centered.

Patch Changes



  • Updated dependencies
[200846b]: - @grundtone/design-system@2.10.0
2.9.12026-03-21
#### @grundtone/nuxt

Patch Changes



  • Updated dependencies
[009ab18]: - @grundtone/vue@2.9.1 - @grundtone/icons@2.1.2

#### @grundtone/react-native

Patch Changes



  • Updated dependencies
[009ab18]: - @grundtone/icons@2.1.2

#### @grundtone/vue

Patch Changes



Thanks @allanasp! - Add Toast component, chevron-up icon, and prefix refactor for all new components

- vue: Add GTToast, GTToastContainer, and useToast composable (Sonner-style with countdown bar, stacking, rich colors, 15 tests). Add chevron-up icon for BackToTop. - vue: Prefix refactor — all new components (Tag, BackLink, BackToTop, Textarea, Checkbox, RadioGroup, CheckboxGroup, SearchField, OverflowMenu, Toast, Modal) now use getClassPrefix() in templates and