veza/apps/web/src/components/ui
senke 341546d439 feat(v0.12.1): frontend subscription plans UI
- Add subscription types, service, and page component
- Pricing page with Free/Creator/Premium plan cards
- Monthly/yearly billing toggle (17% savings on yearly)
- Current subscription status display
- Cancel/reactivate subscription controls
- Invoice billing history table
- ARIA labels for accessibility
- Lazy-loaded route at /subscription

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:37:35 +01:00
..
accordion fix(tests): add missing component tests and fix failing tests 2026-02-12 22:59:09 +01:00
avatar-upload fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
content-transition feat(ui): header glassmorphism, card hover effects, content transitions, badge animations 2026-02-09 23:25:52 +01:00
context-menu feat(ui): premium polish — route transitions, context menu, slider, sidebar tooltips 2026-02-09 23:10:10 +01:00
data-list ui(components): migrate remaining 27 skeleton files to Skeleton shimmer 2026-02-08 23:21:33 +01:00
date-picker refactor(ui): extract DatePicker into date-picker module 2026-02-05 22:15:11 +01:00
dialog Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
dropdown-menu fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
feature-highlight feat(ui): chat status indicators, notification grouping, feature discovery 2026-02-10 00:04:23 +01:00
file-upload fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
hover-card feat(ui): hover cards, Spotify player layout, scrollbar tokens, context menu integration 2026-02-09 23:18:46 +01:00
lazy-component feat(v0.12.1): frontend subscription plans UI 2026-03-10 19:37:35 +01:00
optimized-image fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
select fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
tabs chore: enable noUncheckedIndexedAccess, isolate ghost MSW handlers, document go-clamd tech debt 2026-02-12 23:12:35 +01:00
tooltip fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
virtualized-list chore: enable noUncheckedIndexedAccess, isolate ghost MSW handlers, document go-clamd tech debt 2026-02-12 23:12:35 +01:00
Accordion.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
accordion.tsx refactor(ui): accordion module, re-export 2026-02-06 02:33:10 +01:00
Alert.stories.tsx chore(dx): add .cursorrules and design system audit documentation 2026-02-05 14:20:06 +01:00
alert.test.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
alert.tsx feat(ui): semantic tokens in modal, button, card, alert 2026-02-10 09:29:48 +01:00
AnimatedNumber.test.tsx fix(tests): add missing component tests and fix failing tests 2026-02-12 22:59:09 +01:00
AnimatedNumber.tsx feat(ui): animated number counters + navigation progress bar 2026-02-10 00:19:18 +01:00
AstralBackground.stories.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
AstralBackground.tsx refactor(ui): migrate arbitrary values to layout tokens 2026-02-17 17:05:08 +01:00
avatar-upload.test.tsx refactor(ui): extract AvatarUpload into avatar-upload module 2026-02-05 22:21:02 +01:00
Avatar.stories.tsx feat(storybook): expanded coverage for core UI components (batch 1) 2026-02-02 19:37:52 +01:00
avatar.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
avatar.tsx chore: enable noUncheckedIndexedAccess, isolate ghost MSW handlers, document go-clamd tech debt 2026-02-12 23:12:35 +01:00
AvatarUpload.stories.tsx refactor(ui): extract AvatarUpload into avatar-upload module 2026-02-05 22:21:02 +01:00
Badge.stories.tsx feat: global update including storybook setup and backend fixes 2026-02-02 19:34:14 +01:00
badge.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
badge.tsx refactor: Phase 4 — Update UI primitives to SUMI design system 2026-02-12 01:58:15 +01:00
button-loading.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
button-loading.tsx Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
Button.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
button.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
button.tsx fix: UI remediation Phase 1 (S0-S5) + Phase 2 Sprint 6 shadow system 2026-02-12 10:13:44 +01:00
Card.stories.tsx refactor(ui): replace gray colors with Sumi tokens 2026-02-17 17:03:57 +01:00
card.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
card.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
Checkbox.stories.tsx feat: global update including storybook setup and backend fixes 2026-02-02 19:34:14 +01:00
checkbox.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
checkbox.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
Collapsible.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
collapsible.test.tsx fix(tests): add missing component tests and fix failing tests 2026-02-12 22:59:09 +01:00
collapsible.tsx feat(ui): avatar polish, smooth accordion, modal animation consistency 2026-02-09 23:46:46 +01:00
ComingSoon.test.tsx test: add tests for ErrorDisplay, LoadingState, ComingSoon 2026-02-12 22:19:54 +01:00
ComingSoon.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
confirmation-dialog.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
confirmation-dialog.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
ConfirmationDialog.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
ContentFadeIn.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
DataList.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
DataList.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
DataList.tsx refactor(ui): extract DataList into data-list module 2026-02-05 22:35:53 +01:00
date-picker.test.tsx refactor(ui): extract DatePicker into date-picker module 2026-02-05 22:15:11 +01:00
DatePicker.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
Dialog.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
dialog.test.tsx Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy 2026-02-14 17:23:32 +01:00
dialog.tsx refactor(ui): extract Dialog into dialog module 2026-02-05 22:59:48 +01:00
dropdown-menu.test.tsx style(ui): elevate Dropdown, DropdownMenu, Tooltip to SaaS Premium; update test 2026-02-07 14:23:04 +01:00
dropdown-menu.tsx refactor(ui): dropdown-menu module, dropdown controlled open, re-export 2026-02-06 02:27:29 +01:00
dropdown.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
dropdown.tsx feat(a11y): ARIA labels, aria-haspopup menu, icon button labels 2026-02-25 09:55:30 +01:00
DropdownMenu.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
empty-state.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
empty-state.tsx refactor: Phase 2 — Font migration to SUMI stack 2026-02-12 01:49:07 +01:00
ERROR_DISPLAY_COMPONENT_API.md incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
ERROR_DISPLAY_STRATEGY.md incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
ErrorBoundary.tsx fix: add override modifier to ErrorBoundary.render() 2026-02-10 00:49:59 +01:00
ErrorDisplay.stories.tsx feat(storybook): complete UI component coverage (batches 6-9) 2026-02-02 19:50:45 +01:00
ErrorDisplay.test.tsx test: add tests for ErrorDisplay, LoadingState, ComingSoon 2026-02-12 22:19:54 +01:00
ErrorDisplay.tsx refactor(frontend): eliminate ~45 'any' types in production code 2026-02-22 17:44:49 +01:00
FAB.stories.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
FAB.test.tsx fix(tests): add missing component tests and fix failing tests 2026-02-12 22:59:09 +01:00
FAB.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
file-upload.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
floating-input.test.tsx fix(tests): add missing component tests and fix failing tests 2026-02-12 22:59:09 +01:00
floating-input.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
FloatingInput.stories.tsx feat(storybook): complete UI component coverage (batches 6-9) 2026-02-02 19:50:45 +01:00
focus-trap.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
focus-trap.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
FocusTrap.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
FormField.stories.tsx feat(storybook): complete UI component coverage (batches 6-9) 2026-02-02 19:50:45 +01:00
FormField.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
FormField.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
HelpText.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
HelpText.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
HelpText.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
ImageCropper.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
ImageCropper.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
ImageCropper.tsx fix: UI remediation Phase 1 (S0-S5) + Phase 2 Sprint 6 shadow system 2026-02-12 10:13:44 +01:00
ImageViewerModal.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
ImageViewerModal.test.tsx feat(ui): badge polish, DnD feedback, typography system, image lightbox 2026-02-09 23:52:33 +01:00
ImageViewerModal.tsx fix: UI remediation Phase 1 (S0-S5) + Phase 2 Sprint 6 shadow system 2026-02-12 10:13:44 +01:00
Input.stories.tsx feat: global update including storybook setup and backend fixes 2026-02-02 19:34:14 +01:00
input.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
input.tsx refactor: Phase 4 — Update UI primitives to SUMI design system 2026-02-12 01:58:15 +01:00
KeyboardShortcutsPanel.tsx feat(ui): profile page premium polish + keyboard shortcuts panel 2026-02-10 00:15:50 +01:00
Label.stories.tsx feat(storybook): expanded coverage for structural components (batch 4) 2026-02-02 19:44:58 +01:00
label.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
label.tsx ui(tokens): complete text-kodo-content-dim → text-muted-foreground migration (52 files) 2026-02-09 00:04:51 +01:00
LazyComponent.test.tsx test(ui): add LazyErrorFallback and LazyComponent stories; fix LazyComponent tests for fallback text 2026-02-05 20:49:17 +01:00
LazyComponent.tsx feat(v0.12.1): frontend subscription plans UI 2026-03-10 19:37:35 +01:00
loading-spinner.test.tsx refactor: unify loading components -- consolidate Spinner into LoadingSpinner 2026-02-12 22:04:45 +01:00
loading-spinner.tsx refactor: unify loading components -- consolidate Spinner into LoadingSpinner 2026-02-12 22:04:45 +01:00
LoadingSpinner.stories.tsx refactor: unify loading components -- consolidate Spinner into LoadingSpinner 2026-02-12 22:04:45 +01:00
LoadingState.stories.tsx ui(design): Phase 3 - rounded tokens, min-w/min-h, stories, NavigationProgress 2026-02-10 19:24:07 +01:00
LoadingState.test.tsx refactor: LoadingState delegates all spinner rendering to LoadingSpinner 2026-02-12 22:23:16 +01:00
LoadingState.tsx refactor: LoadingState delegates all spinner rendering to LoadingSpinner 2026-02-12 22:23:16 +01:00
NavigationProgress.tsx fix: UI remediation Phase 1 (S0-S5) + Phase 2 Sprint 6 shadow system 2026-02-12 10:13:44 +01:00
optimized-image.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
optimized-image.tsx refactor(ui): extract OptimizedImage into optimized-image module 2026-02-05 22:31:35 +01:00
OptimizedImage.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
Progress.stories.tsx feat(storybook): expanded coverage for core UI components (batch 1) 2026-02-02 19:37:52 +01:00
progress.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
progress.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
radio-group.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
radio-group.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
RadioGroup.stories.tsx feat(storybook): expanded coverage for complex form & data components (batch 3) 2026-02-02 19:41:12 +01:00
scroll-area.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
scroll-area.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
ScrollArea.stories.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
ScrollToTop.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
select.test.tsx test(ui): add Select stories (Default, Empty, Disabled, Grouped, MultiSelect), fix tests for listbox/option 2026-02-05 21:16:30 +01:00
Sidebar.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
Sidebar.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
Skeleton.stories.tsx ui(design): Phase 3 - rounded tokens, min-w/min-h, stories, NavigationProgress 2026-02-10 19:24:07 +01:00
skeleton.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
skeleton.tsx feat(a11y): comprehensive accessibility & view states improvements 2026-02-09 23:04:35 +01:00
Slider.stories.tsx feat(storybook): expanded coverage for core UI components (batch 1) 2026-02-02 19:37:52 +01:00
slider.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
slider.tsx chore: enable noUncheckedIndexedAccess, isolate ghost MSW handlers, document go-clamd tech debt 2026-02-12 23:12:35 +01:00
Switch.stories.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00
switch.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
switch.tsx feat(a11y): comprehensive accessibility & view states improvements 2026-02-09 23:04:35 +01:00
Table.stories.tsx feat(storybook): expanded coverage for complex form & data components (batch 3) 2026-02-02 19:41:12 +01:00
table.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
table.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
Tabs.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
tabs.test.tsx incus deployement fully implemented, Makefile updated and make fmt ran 2026-01-13 19:47:57 +01:00
tabs.tsx refactor(ui): tabs module, re-export 2026-02-06 10:12:33 +01:00
Textarea.stories.tsx feat(storybook): expanded coverage for complex UI components (batch 2) 2026-02-02 19:39:50 +01:00
textarea.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
textarea.tsx refactor(ui): replace gray colors with Sumi tokens 2026-02-17 17:03:57 +01:00
Toast.stories.tsx feat(storybook): expanded coverage for structural components (batch 4) 2026-02-02 19:44:58 +01:00
Toast.test.tsx refactor: Phase 3a — Global color class migration to SUMI semantics 2026-02-12 01:51:49 +01:00
Toast.tsx feat(a11y): comprehensive accessibility & view states improvements 2026-02-09 23:04:35 +01:00
Tooltip.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
tooltip.test.tsx refactor(ui): tooltip module, useTooltip, re-export, tests 2026-02-06 10:32:14 +01:00
tooltip.tsx refactor(ui): tooltip module, useTooltip, re-export, tests 2026-02-06 10:32:14 +01:00
virtualized-list.test.tsx refactor(web): split VirtualizedList into virtualized-list module 2026-02-06 13:55:06 +01:00
virtualized-list.tsx refactor(web): split VirtualizedList into virtualized-list module 2026-02-06 13:55:06 +01:00
VirtualizedList.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
WaveformVisualizer.stories.tsx fix(web): resolve all 568 TypeScript errors — tsc --noEmit now passes with zero errors 2026-02-13 00:32:08 +01:00
WaveformVisualizer.test.tsx chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification 2026-02-13 19:39:18 +01:00
WaveformVisualizer.tsx refactor: Phase 7 — Clean up legacy components and remove dead tokens 2026-02-12 02:09:29 +01:00