Commit Graph

5999 Commits

Author SHA1 Message Date
Benjamin Canac f62aa143fc chore(release): v4.11.0 v4.11.0 2026-08-21 17:01:48 +02:00
Jakub Michálek d6c3802a12 fix(Slider): forward aria attributes to the thumb (#6848)
Co-authored-by: Jakub <jakub.michalek@freelo.io>
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2026-08-21 16:41:28 +02:00
Francesco Mussoni 07f3fe8dac feat(CheckboxGroup/RadioGroup): support icon in items (#6726)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2026-08-21 12:06:57 +02:00
Pavel Eliseev a7f26a3205 docs(showcase): add brusnika-lms.com (#6863)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2026-08-20 12:04:17 +02:00
Benjamin Canac 7d5a7f068d Merge branch 'v4' into pr/6675 2026-08-20 11:19:17 +02:00
Benjamin Canac d4f2ca0232 fix(theme): replace deprecated bare tailwind aliases (#6865) 2026-08-20 11:13:13 +02:00
Benjamin Canac e2a253ec94 docs(header): prevent focus on toggle button animations 2026-08-20 10:38:30 +02:00
Benjamin Canac be58f3f5eb docs(table): pin TanStack Table links to v8 (#6864) 2026-08-19 22:31:31 +02:00
Benjamin Canac 4dd6b451ed refactor(docs): rework the theme studio toolbar
Every picker was a hand-rolled popover, listbox and search input. USelectMenu
already does grouped items, an async-friendly search and custom rows, so that
component is gone and both callers use it directly. Typography collapses into
one panel with the three stacks grouped and offering every category, so a mono
heading is possible; radius and the default variants each get their own
control. `--spacing` is dropped entirely, exposing tailwind's base unit as a
theme knob was never good practice.

Fullscreen goes too. Its job was hiding the site chrome, which the page now
does unconditionally, so what remained was a mousemove listener and a manual
Esc handler buying edge-to-edge width. Controls report divergence from the
preset by turning primary instead of carrying a chip, gated on mount because
the theme is restored before first render and hydration adopts the server's
markup without patching.
2026-08-19 22:10:31 +02:00
Benjamin Canac c3ac5eee5e fix(docs): retune the presets' dark-mode borders
Carbon, Orchard and 8-bit all set a border darker than the surface it sits
on, the opposite of the stock convention. That read as deliberate while the
borders were 2px with hard shadows behind them; at a stock 1px hairline they
became muddy seams, and 8-bit's literal black on a 21% background vanished.
Light keeps the ink, which is those themes' whole identity.
2026-08-19 22:10:22 +02:00
Benjamin Canac 4d53f08f22 docs(blog): remove article for now 2026-08-19 21:28:35 +02:00
Benjamin Canac 864bb55e9d refactor(docs): drop the theme studio's shadow and border axes
They only ever existed as static per-component class bundles, including a
verbatim copy of the private `ssr()` modifier chain from `src/theme/tabs.ts`,
plus site-wide `--shadow-*` and `--default-border-width` overrides in
`main.css`. They come back in v5 on real tokens. An 8-bit export drops from
389 config lines to 68.

Fonts become three independent stacks rather than a family plus a heading
treatment. Preflight already wires `--font-sans` and `--font-mono`, so only
the serif needs an element rule, and it is emitted only when one is set. The
two runtime channels behind them collapse into one, and the engine's nine
modules into five.
2026-08-19 18:10:04 +02:00
Mathieu TUDISCO 545f9e37c1 fix(Icon): render bundled icons during SSR in Vue (#6841)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2026-08-19 17:53:08 +02:00
Benjamin Canac 2484d9cf40 test: remove docs utils 2026-08-19 16:43:57 +02:00
Benjamin Canac 649a335247 Merge branch 'v4' into pr/6675 2026-08-19 16:04:17 +02:00
Benjamin Canac 14ac243804 feat(ProgressGroup): new component (#6860) 2026-08-19 10:49:34 +02:00
Benjamin Canac a630c94366 docs(showcase): add triadtrainer.vercel.app 2026-08-18 12:56:51 +02:00
Benjamin Canac 2beb2345af docs(showcase): add volta.net 2026-08-18 12:53:26 +02:00
Benjamin Canac ae2bd5eb39 feat(Splitter): new component (#6670) 2026-08-18 12:49:22 +02:00
Benjamin Canac 3d2129d2dc test(bench): scale tv benchmarks past codspeed's noise floor 2026-08-18 10:37:51 +02:00
Benjamin Canac 6f82268bc2 chore: add CLAUDE.md importing AGENTS.md (#6852) 2026-08-18 10:23:30 +02:00
Benjamin Canac f6d188bd78 docs(showcase): add kleinezeitung.at 2026-08-17 16:10:53 +02:00
phatdang cf5f15e3c4 docs(showcase): add codemo.dev (#6663)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
2026-08-17 15:17:20 +02:00
Khaled Waleed f3c2ac21fb fix(Slider): bind form aria attributes on thumbs instead of root (#6768)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 14:56:18 +02:00
renovate[bot] f065438d32 chore(deps): update dependency reka-ui to v2.10.3 (#6850) 2026-08-17 14:12:25 +02:00
Benjamin Canac ccd48940fd test(components): fix path expectations on windows 2026-08-17 11:02:02 +02:00
renovate[bot] 6bcc97a621 chore(deps): update all non-major dependencies (#6849) 2026-08-17 10:34:46 +02:00
Benjamin Canac 08e753174f docs: resolve icon load failures during prerender (#6844) 2026-08-16 11:11:05 +02:00
Benjamin Canac a4fe7d86d7 docs(page-hero): resize image in usage example 2026-08-16 11:10:25 +02:00
Benjamin Canac 689c671a28 chore: narrow tailwind source scope in docs and playgrounds (#6843) 2026-08-16 10:41:22 +02:00
Benjamin Canac 652d24c05d refactor(docs): persist the theme under one key
Every setting owned a localStorage key, sixteen of them, and two of those
were derived caches of the others. Restores could interleave, so the derived
stores each needed a self-heal to reconcile, and eight FOUC scripts each
re-read their own key and re-derived a slice of useTheme's style tags.

One key writes atomically, so those states cannot disagree. The style class
bundle and the custom-palette ramps are rebuilt from their source on load
instead of stored, which removes two of the three heals outright. Reads and
writes both live in the plugin, so no composable touches localStorage.

The nine keys the shipped picker wrote migrate once per browser.

Also groups the theme utils under utils/theme/, with the 646-line theme.ts
split by concern and theme-engine moved to utils/theme/engine.
2026-08-15 22:48:58 +02:00
Benjamin Canac a4ab81a995 docs: add calendar template to lists and ci 2026-08-14 17:15:31 +02:00
Benjamin Canac 0fabbe5bc4 fix(theme): keep variants when replacing slot classes in app config (#6824) 2026-08-14 16:33:52 +02:00
Benjamin Canac 4a3168fb0d docs(templates): add calendar template 2026-08-14 16:32:19 +02:00
Benjamin Canac 731ff26bf9 fix(Theme): merge class from props with the component class (#6842) 2026-08-14 15:44:06 +02:00
Benjamin Canac 0673ae689f docs: playground and studio control tweaks 2026-08-14 14:37:13 +02:00
Benjamin Canac ffbc217b37 refactor(docs): rename the Grid preview to Components 2026-08-14 14:37:12 +02:00
Benjamin Canac d6fd65970f feat(docs): extend the radius range to 0.75rem 2026-08-14 14:37:12 +02:00
Benjamin Canac f6afcfd4b6 fix(docs): reset when a persisted preset no longer exists
A renamed preset leaves an id naming nothing while the theme it applied
still sits in the other storage keys, so the pickers read Custom against
a page no preset can name.
2026-08-14 14:37:12 +02:00
Benjamin Canac cda6d504ea refactor(docs): font and icon toolbar controls become direct selects
Both pickers are already popovers, so holding them in a second one was a
popover inside a popover. Drops the headings treatment controls with it.
2026-08-14 14:37:12 +02:00
Benjamin Canac 061f0eccbf feat(docs): let the AI chat apply theme presets 2026-08-14 14:36:59 +02:00
Benjamin Canac 9cc9378383 feat(docs): toggle dark mode with the 'd' shortcut 2026-08-14 14:36:59 +02:00
Benjamin Canac 0297891f13 feat(docs): rework the header theme popover 2026-08-14 14:36:59 +02:00
Benjamin Canac 068a6d3987 refactor(docs): de-brand theme presets
Shadcn, Bootstrap, Anthropic and Spotify become Mono, Cobalt, Parchment
and Signal, with generic lucide glyphs. Cobalt's palettes were named
bs-blue/bs-gray, which put the brand in every exported main.css, so they
are renamed too.
2026-08-14 14:36:58 +02:00
Benjamin Canac dd7037b2be chore: theme studio review cleanup
Reverts collateral edits that were out of scope for a docs branch: the
em dash replacements across src/runtime/types, test/bench and the AI
prompt text, the devtools toggle and the .gitignore entry.

Also fixes the ring-N scanner in the theme importer, whose consumed
separator hid every second adjacent token, and stops the theme engine
specs running in both vitest projects when they need neither.
2026-08-13 15:37:03 +02:00
Benjamin Canac 8c82637540 Merge branch 'v4' into docs/theme-studio-plan 2026-08-13 15:17:58 +02:00
Benjamin Canac 7c74269387 fix(components): resolve theme props consistently in form controls (#6834) 2026-08-13 15:17:47 +02:00
Benjamin Canac 3a568b5e58 feat(vue): support experimental.componentDetection (#6731) 2026-08-13 11:54:43 +02:00
Benjamin Canac edf73d346a chore: remove dead code
- `as any` on the Modal `tv` call
- never-assigned `completed` ref in PinInput
- `@defeaultValue` typo in PricingTable
- unreachable `InferInput` branch, already matched by the first
- empty `compoundVariants` in the color-picker theme
2026-08-12 16:28:36 +02:00
Benjamin Canac 9b08a84f1d fix(Marquee): use logical properties and drop broken vertical RTL animation (#6833) 2026-08-12 16:27:17 +02:00