Commit graph

16 commits

Author SHA1 Message Date
04062703ff
refactor: Use ShadCN and toss primevue 2026-07-15 19:19:46 -04:00
23cb57420d fix: alert title contrast, and make Storybook dev serve live library source
Two independent fixes:

1. Alert titles used text-<severity> directly on a bg-<severity>/15 tinted
   background. For danger (a very dark base hue) this reads as near-invisible
   text-on-tinted-background. The original PrimeVue-era Message design kept
   body/title text neutral and only accented the icon/left-border with the
   severity color -- restore that: alert text stays text-foreground, severity
   shows via a border-l-4 accent stripe instead of tinted text.

2. Root-caused why none of the last several fixes were showing up without a
   full `bun run build`: @nychthemeron/library's package.json exports its "."
   entry as ./dist/index.js unconditionally, and every story imports from the
   bare package specifier. So Storybook's dev server was always resolving to
   whatever the dist bundle looked like at last build time, never live
   source -- editing packages/library/src and restarting `bun run dev` (even
   with caches cleared) never picked up changes. Vite auto-injects a
   "development" resolution condition during `vite dev`/serve (and
   "production" during build), which is the standard fix for exactly this
   monorepo dev-vs-published split: added a "development" condition to the
   "." export pointing at src/index.ts, matching the pattern the "./components"
   sub-export already used. Also added the matching "@" alias to
   packages/playground/vite.config.ts, since resolving straight to library
   source pulls in its "@/lib/utils"-style internal imports, which playground's
   own Vite instance didn't previously know how to resolve.

   Verified both paths: dev server now reflects source edits without a
   library rebuild, and `bun run build` still produces a correct dist bundle
   with the same fix baked in.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-13 15:23:13 -04:00
ff02f7ec72 chore: remove PrimeVue and the ThemeEngine, migration complete
- Delete packages/library/src/engine/ and engine.spec.ts; LoadingIcon is
  now exported directly instead of routed through a generic theming engine.
- Remove primevue from every package.json (root devDependencies, library
  peerDependencies, playground dependencies) and from vite.config.ts's
  externalized/global Rollup config; add reka-ui as the library's peer dep.
- Delete the hand-written nychthemeron.css/theme.css, now fully superseded
  by the Tailwind entry CSS; both library exports (./style, ./theme) point
  at it.
- Drop the PrimeVue plugin install from Storybook's preview.ts.
- Add a `@source "../../";` directive to tailwind.css: Tailwind's automatic
  content detection is scoped to whichever Vite project runs it, so when
  the playground consumes this CSS file it never scanned the sibling
  packages/library/src tree for class usage -- every component rendered
  with zero utility classes applied until this was added (verified via the
  compiled Storybook CSS output going from ~2KB/no .bg-primary rule to
  ~40KB with the full utility set, and the pre-fix screenshot that
  surfaced it: buttons and other components with a real background color
  showing as bare, near-invisible text on white).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 15:07:59 -04:00
7bb554aeb0 feat: migrate Dialog to shadcn-vue compound API
Also: fixes DialogContent/DialogFooter's close/action buttons to use our
actual Button variant set (secondary) instead of the CLI's default
ghost/outline variants, which don't exist on our re-themed Button.
Adds an eslint override so shadcn-vue's single-word ui/ component names
(Button.vue, Dialog.vue, ...) aren't flagged by vue/multi-word-component-names.
This was the last PrimeVue-wrapped component, so lib/index.ts no longer
imports anything from primevue or uses the ptThemeable helper.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:57:06 -04:00
4755f9ab6e feat: migrate Select to shadcn-vue compound API
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:50:36 -04:00
5d840fcc16 feat: migrate Message to shadcn-vue Alert
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:45:45 -04:00
fed19667f7 feat: migrate Card to shadcn-vue compound API
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:41:58 -04:00
d999cd95f6 feat: migrate RadioButton/RadioButtonGroup to shadcn-vue RadioGroup
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:39:22 -04:00
2eb438932b feat: migrate Checkbox and CheckboxGroup to shadcn-vue
CheckboxGroup is hand-built (no shadcn-vue stock equivalent) as a simple
name/layout provider via provide/inject, matching RadioGroup's pattern --
it does not coordinate an array modelValue across children the way
PrimeVue's did, since each Checkbox now owns its own boolean v-model.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:35:36 -04:00
5238d61f24 feat: migrate Tag to shadcn-vue Badge
Also fixes Card.stories.ts, which imported the now-removed Tag export.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:32:18 -04:00
7a4ae9ff6a feat: migrate ToggleSwitch to shadcn-vue Switch
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:28:51 -04:00
382d76c2d7 feat: migrate Textarea to shadcn-vue
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:24:29 -04:00
f3002c7eb1 feat: migrate InputText to shadcn-vue Input
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:22:14 -04:00
3a8dd109bb feat: migrate Button from PrimeVue to shadcn-vue
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:19:39 -04:00
106c214b16 feat: wire up Tailwind v4 and shadcn-vue token mapping alongside PrimeVue
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-11 14:15:37 -04:00
8751c150cd Inital Commit
All checks were successful
ci / build (push) Successful in 19s
ci / publish (push) Successful in 11s
ci / publish-docs (push) Successful in 41s
2026-06-14 14:50:44 -04:00