Commit Graph
40 Commits
Author SHA1 Message Date
Wlad Meixner 3830364f9c refactor!: rename the tailwind prefix from lib: to fui:
BREAKING: every utility this package emits is now fui:* instead of
lib:*. Consumers who wrote lib:-prefixed classes against @foomo/ui must
rename them.

"lib" is a plausible prefix for any in-house library, so it risked
colliding in apps that consume more than one. 3658 occurrences across
59 files, plus tailwind.config.js and components.json. The ./lib/*
export path is untouched — only the prefix token moved.

Also drops the ASCII banner comments and the explanatory docblocks I
had added to data-table and the dashboard story.

Verified: 19 stories x 2 themes, 194 overlays opened, 0 console errors
and 0 elements left unstyled.
2026-09-17 14:25:32 +02:00
Wlad Meixner 92fc19d52b fix(theme): give dark mode its own chart ramp
The .dark block reused the light chart values, so the darkest series sat
on top of the dark card: chart-4 measured 1.73:1 and chart-5 1.17:1
against --card, which is why the revenue/expenses lines looked washed
out. Lightness now ascends 0.52 -> 0.92, keeping the light ramp's
prominence order and its low-chroma mist character.

Measured in the browser: expenses 1.73:1 -> 10.01:1, revenue
3.76:1 -> 5.01:1. All five clear the 3:1 WCAG 1.4.11 non-text minimum;
light mode is unchanged.
2026-09-17 14:25:32 +02:00
Wlad Meixner d520da889f chore: release 0.1.0-alpha.4
Ships the Base UI migration on top of the published alpha.3.

Consumers upgrading from alpha.3 hit breaking changes despite the
prerelease bump: asChild -> render across Button, Badge,
BreadcrumbLink, Item, ButtonGroupText, Prose and every overlay/menu
trigger; AspectRatio.ratio is required; Checkbox takes `indeterminate`;
Separator loses `decorative`; Label is a native <label>;
AlertDialogAction no longer auto-closes; FormControl needs a single
element child. Per-component notes are in .migration/.
2026-09-07 12:19:23 +02:00
Wlad Meixner df83fbddb6 fix(base-ui): keep menu labels inside a Menu.Group
Menu.GroupLabel requires a Menu.Group ancestor, which radix's
DropdownMenu.Label did not. Four labels were orphaned and threw
"MenuGroupContext is missing" as soon as those menus opened.

"Workspaces" moves into the group it labels; the standalone headings
("My account", "lena@foomo.org", "Toggle columns") each get their own
group so the visual order is unchanged.

The first QA pass missed this because it opened only the Notifications
menu, which has no label. Replaced with a sweep over every overlay
trigger in every story and tab panel at two viewports: 203 layers, 0
errors.
2026-09-07 11:50:34 +02:00
Wlad Meixner 2ade068f53 refactor(base-ui)!: complete the migration off radix-ui
Regenerates the remaining 18 wrappers as base-maia variants via the
shadcn CLI and removes the radix-ui dependency. src no longer references
radix anywhere.

Using the CLI rather than hand-porting was the deciding factor: it
reapplies the lib: tailwind prefix, lucide resolution and the
menuColor/menuAccent translucent menu treatment, which raw registry
JSON does not contain and which had looked like hand customizations on
dropdown-menu, context-menu and menubar.

BREAKING:
- asChild -> render on Item, ButtonGroupText, Prose and every
  overlay/menu trigger
- AlertDialogAction is a plain Button and no longer auto-closes
- Select aligns the active item over the trigger (alignItemWithTrigger)
- FormControl requires a single React element child

Also:
- form/typography move off Slot.Root to useRender
- command narrows children to ReactNode; Base UI Dialog.Root accepts a
  render-function child that DialogContent does not
- sidebar drops the stable setOpenMobile setter the registry added to
  two dependency arrays

Reports in .migration/, one per component plus project.md.
2026-09-07 11:42:44 +02:00
Wlad Meixner 70d797a2f6 refactor(base-ui)!: migrate badge and breadcrumb to useRender
BREAKING: Badge and BreadcrumbLink no longer accept `asChild`; pass
`render` instead. The Slot idiom becomes useRender + mergeProps, with
data-slot/data-variant supplied via useRender `state`.
2026-09-07 11:29:40 +02:00
Wlad Meixner dc1aca52dc refactor(base-ui): migrate radio-group and toggle-group to @base-ui/react 2026-09-07 11:28:41 +02:00
Wlad Meixner e7ffdf19d9 refactor(base-ui)!: migrate accordion, collapsible, tabs, aspect-ratio
BREAKING: AspectRatio has no Base UI primitive and is now a div using
CSS aspect-ratio; `ratio` is required rather than defaulting to 1.

- Content -> Panel (accordion, collapsible, tabs); tabs Trigger -> Tab
- accordion height var -> --accordion-panel-height, with
  data-starting-style/data-ending-style for the collapse transition
- accordion/tabs triggers gain aria-disabled variants
- dashboard story: CollapsibleTrigger asChild -> render, and
  data-[state=open] -> data-open
2026-09-07 11:27:33 +02:00
Wlad Meixner 6844d566ca refactor(base-ui)!: migrate button to the Base UI button primitive
BREAKING: Button no longer accepts `asChild`. Use `render` instead:
<Button render={<a href="..." />}>. Matches the shadcn base registry,
which also drops the passthrough data-variant/data-size attributes
(nothing in the library selects on them).

Repoints the internal call-sites in alert-dialog and pagination.
2026-09-07 11:23:38 +02:00
Wlad Meixner f52a90ada5 refactor(base-ui): migrate toggle and avatar to @base-ui/react 2026-09-07 11:22:21 +02:00
Wlad Meixner 120c12d162 refactor(base-ui): migrate leaf primitives to @base-ui/react
checkbox, switch, separator, scroll-area and label move off radix-ui.
Classes are unchanged: the maia style already uses Base UI data
attributes (data-checked, data-vertical), which radix never emitted.

- label drops the primitive for a native <label>
- separator becomes callable and loses `decorative`
- scroll-area renames ScrollAreaScrollbar/ScrollAreaThumb to
  Scrollbar/Thumb
- data-table's header checkbox uses the new `indeterminate` prop
2026-09-07 11:21:30 +02:00
Wlad Meixner eb711f708d feat: migrate to radix-ui, add DataTable, release 0.1.0-alpha.3
Replace the 26 individual @radix-ui/react-* packages with the unified
radix-ui package and regenerate all components against the maia preset.

- add DataTable built on @tanstack/react-table v9 with sorting, global
  filtering, row selection, pagination and column visibility
- add Admin Dashboard and Data Table stories
- clamp the radius scale at lg so maia's 2xl/4xl radii match the system
- drop the bundled Inter typeface from ui.css; hosts now load it
- fix duplicate ./lib/* export and exclude the Vite playground entry
  from the library build so react-dom/client is no longer inlined
- paint the Storybook canvas from --background so dark mode applies
  outside fullscreen stories
2026-09-07 09:19:15 +02:00
Marko Trebizan 27f7afe48c fix: add missing clsx 2026-01-06 08:15:33 +01:00
Marko Trebizan ca43b0a85d fix destructive btn, add lib export 2026-01-05 09:46:50 +01:00
Wlad Meixner 3a973a4d75 fix: add border fallback 2025-11-11 16:05:10 +01:00
Wlad Meixner c1fe67ec32 fix: add prose library prefix v0.0.10 2025-11-11 14:20:37 +01:00
Wlad Meixner 7736edaca6 fix: regenerate card 2025-11-11 14:09:00 +01:00
Wlad Meixner 82bbd94ba5 chore: update readme 2025-11-11 13:45:57 +01:00
Wlad Meixner b29b0d23aa chore: bump version v0.0.6 2025-11-11 13:38:05 +01:00
Wlad Meixner ac0f0aead3 chore: format stories 2025-11-11 13:37:17 +01:00
Wlad Meixner 492a3c29b6 feat: prefix library tailwind 2025-11-11 13:32:29 +01:00
Marko Trebizan 8fd5ef305f add vite playground html, revert layer base border hack 2025-09-11 14:55:57 +02:00
Wlad Meixner 310e821a55 fix: css tailwind layers 2025-08-27 09:01:27 +02:00
Marko Trebizan ce95ec2a3c Merge branch 'lucide' 2025-08-21 10:36:20 +02:00
Wlad Meixner 18720e6a90 fix: add dependency exclude 2025-08-18 14:38:19 +02:00
Wlad Meixner 014f3a18ce chore: bump version 2025-08-18 14:25:21 +02:00
Wlad Meixner de38175500 fix: mark radix as external 2025-08-18 14:23:21 +02:00
Marko Trebizan 1bee09e688 formatter and export icons 2025-08-05 12:59:18 +02:00
Wlad Meixner 044b6f02fd feat: update config 2025-07-31 11:59:06 +02:00
Wlad Meixner 27f1971c75 fix: external libraries 2025-07-31 11:54:06 +02:00
Wlad Meixner 240b12bf0c feat: add generic prose component 2025-07-31 11:44:14 +02:00
Jan Halfar 9dcc6ea98d feat: add typography prose support 2025-07-31 11:36:40 +02:00
Wlad Meixner ef3386497f feat: add typo 2025-07-31 11:29:01 +02:00
Wlad Meixner b8bf9581a4 fix: do not clean folder 2025-07-31 11:14:46 +02:00
Jan Halfar b48472abe7 feat: added them all 2025-07-31 11:14:20 +02:00
Wlad Meixner 0faa37deed feat: add storybook config 2025-07-31 10:46:00 +02:00
Wlad Meixner 50f338f9f6 feat: add initial build setup 2025-07-30 17:36:55 +02:00
Jan Halfar 1404961eda feat: bootstrapped storybook 2025-07-30 14:25:52 +02:00
Jan Halfar c3c9b27c6b basic setup 2025-07-30 12:48:46 +02:00
Jan Halfar c9e041a6c9 Initial commit 2025-07-30 12:25:53 +02:00