migrates the app's domain-specific UI components - #4
Lantum-Brendan wants to merge 20 commits into
Conversation
Lantum-Brendan
commented
Sep 21, 2026
- Adds domain components across (dashboard, reports, transactions, settings, wallets, budgets, imports, onboarding, parties, AI, etc.)
- Composes them from the kit's primitives (TButton, TCard, TTabs, …) and theme tokens
- Ships a *.stories.js Storybook story alongside every component
- Adds supporting composables/ (useTheme, useSidebar, useNotifications, …), types/, and utils/ (currency, colors)
- Keeps components decoupled from app state, routing, and i18n so the host can consume them via a Nuxt layer
- Ends with the migration of financial position, imports, and the outreach composer
Pulled the shared foundation over from webui — design tokens, surface/form/utility styles, plus the color, currency, dropdown and theme helpers — so ui-kit has its base layer. Foundation (Layer 0) now 10/10 curated: - tokens.css + _vars.scss (0.1-0.3, pre-existing) - _surfaces.scss, _form-styles.scss, _utilities.scss (0.4) - utils/colors.ts, utils/currency.ts (0.5) - composables/useDropdown.ts, useTheme.ts (0.5) Verified one-at-a-time: tsc clean, sass compile, happy-dom functional checks and parity vs webui.
…oggleButton with stories Decouple ThemeToggleButton i18n -> props, keep useTheme. Verified per file: diff vs webui, sass compile, vitest happy-dom mount, storybook build 17 stories.
… and ViewToggle with stories Decouple EmptyState/ViewToggle i18n -> props, replace solar icon with lucide Package. Improve LoadingSkeleton visibility: bg-gray -> border-light gradient. Verified per file: diff vs webui, sass compile, vitest happy-dom mount, storybook build.
…der and AuthFooterLink
… using primitives
…tor, CollapsibleSection, KpiCard, ConfirmModal, NotificationsContainer, SparkLine, ReportsTabs - AuthSocialLogin: relative kit imports (TButton + GoogleIcon) - AuthCarousel: fixed SCSS path, self-contained carousel widget - ThemeSelector: raw <button>/<div> → TDropdown + TDropdownItem - LanguageSelector: raw <button>/<div> → TDropdown + TDropdownItem - CollapsibleSection: header-button → TButton(text), edit-button → TButton(outline) - KpiCard: <div class=kpi-card> → TCard - ConfirmModal: close/cancel/confirm buttons → TButton, content div → TCard - NotificationsContainer: close <button> → TButton(text), imports ConfirmModal - SparkLine: migrated pure SVG chart, updated SCSS path - ReportsTabs: migrated pill-tab nav with animated indicator, updated SCSS path
…primitives - DescriptorRenderer: restore plugin escape hatch, sidebar.nav, and onboarding branches - EmptyState: replace string concatenation with title/description props and slots - Logo: bundle package logo.svg directly via static import - TInput: introduce base input primitive and refactor SearchInput to compose it - TAvatar: add extensible menu items prop and slots for custom surfaces - Clean up transitional migration comments and verify strict typing
- Migrate ThemeSelector, LanguageSelector, AuthCarousel, AuthSocialLogin, CollapsibleSection, ConfirmModal, NotificationsContainer, KpiCard, ReportsTabs, and SparkLine - Refactor selectors and modals to compose TButton, TDivider, and TCard primitives - Bundle local flag SVGs and illustration assets directly in ui-kit - Add useNotifications composable for toast and modal states - Add Storybook stories for all 10 components
…PeriodControl, TDashboardTopCard, StatsFilterModal, NotificationBell, TTransactionCard, TTransactionSubCard and chart components with stories
Code Review Summary✨ Migrates the app's domain-specific UI (dashboard, reports, transactions, settings, wallets, budgets, imports, onboarding, parties, AI/outreach, financial position, holdings) into a reusable component kit intended to be consumed by a host app through a Nuxt layer. Components are composed from the kit's primitives ( 🚀 Key Improvements
📉 Regressions
💡 Minor Suggestions
Because these rows feed the
🚨 Critical Issues
|