feat(ui): scaffold the blueprint SPA — vite 7 + tailwind 4 + kit theme
New workspace member built on @unom/ui 0.9.1 + @unom/app-ui 0.2.0 + @punktfunk/plugin-kit/react, effect 4.0.0-beta.99 exact. base:'./' with build straight into ../plugin/dist/ui; :5599 dev server proxies /api to the plugin dev API only in live mode. styles.css = tailwind + tw-animate + the kit's violet theme (NOT @unom/ui's own neutral palette) + bare-dir @source globs over the design-system dist. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
// The flat route list, shared by App.tsx and the pages (kept out of App.tsx so pages
|
||||
// can type their `navigate` prop without importing the shell).
|
||||
export const ROUTES = [
|
||||
"overview",
|
||||
"library",
|
||||
"sources",
|
||||
"emulators",
|
||||
"settings",
|
||||
] as const;
|
||||
|
||||
export type Route = (typeof ROUTES)[number];
|
||||
|
||||
export type PageProps = {
|
||||
readonly navigate: (route: Route) => void;
|
||||
};
|
||||
@@ -0,0 +1,27 @@
|
||||
/* The plugin UI's single stylesheet entry. The kit theme.css carries the console's
|
||||
* violet identity (shadcn + @unom token vocabularies, Penner easings, `.dark` palette)
|
||||
* so the embedded iframe is indistinguishable from the console around it. Do NOT import
|
||||
* @unom/ui/styles/theme.css — that is the library's own neutral palette. */
|
||||
@import "tailwindcss";
|
||||
@import "tw-animate-css";
|
||||
@import "@punktfunk/plugin-kit/theme.css";
|
||||
@import "@fontsource-variable/geist";
|
||||
|
||||
@custom-variant dark (&:is(.dark *));
|
||||
|
||||
/* Scan the design system's built output so its class names survive Tailwind's purge.
|
||||
* Bare directory globs on purpose — rebased file globs proved flaky. */
|
||||
@source "../node_modules/@unom/ui/dist";
|
||||
@source "../node_modules/@unom/app-ui/dist";
|
||||
|
||||
body {
|
||||
@apply bg-background font-sans text-foreground antialiased;
|
||||
}
|
||||
|
||||
/* @unom/ui uses `text-secondary` as muted TEXT (EmptyState captions, badge text);
|
||||
* the console palette maps --secondary to a dark SURFACE, which renders that text
|
||||
* unreadable on dark. Re-point the text utility at the muted foreground until the
|
||||
* console/theme unification resolves the vocabulary collision upstream. */
|
||||
.text-secondary {
|
||||
color: var(--muted-foreground);
|
||||
}
|
||||
Reference in New Issue
Block a user