senke
|
ca3aa6a1ce
|
style(ui): P3 AdminModerationView kodo-* → semantic tokens
- border/text: kodo-steel → border-border, kodo-content-dim → text-muted-foreground
- kodo-text-main → text-foreground, kodo-red → destructive (tabs, card, reason, Ban button)
- Report block: bg-kodo-ink border-kodo-steel → bg-muted/50 border-border
- Loader and empty state use muted-foreground
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:36:27 +01:00 |
|
senke
|
ea1841a526
|
style(ui): P3 AdminAuditLogsView semantic tokens + elevated card
- Replace all text-kodo-content-dim with text-muted-foreground (audit P3)
- Card glass → elevated for consistency with admin dashboard
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:35:33 +01:00 |
|
senke
|
fb1c18dd69
|
style(ui): P3 Rajdhani fallback, dashboard StatCard semantic tokens
- index.css: add 'Inter' to --font-sans fallback (audit P3 glyph robustness)
- dashboard/StatCard.tsx: replace kodo-* with semantic tokens (primary,
secondary, success, warning, destructive, muted-foreground)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:34:45 +01:00 |
|
senke
|
e0ed872e3c
|
style(ui): dashboard cards elevated, progress bar contrast (audit §7.2, §6.1)
- Admin dashboard: StatCard, TrafficCard, ProtocolsCard, NodeHealthCard
glass → elevated for main content depth (audit §7.2)
- MiniPlayer: progress rail bg-muted → bg-white/10, h-1 → h-1.5, fill
bg-white → bg-primary for accessibility and consistency (§6.1)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:32:00 +01:00 |
|
senke
|
2c68b1ecab
|
style(ui): P2 contrast muted-foreground, sidebar spacing, dashboard gap, compact play button
- index.css: --muted-foreground 0.70 → 0.73 in dark for better secondary text readability (audit §5.2)
- PlayerControls: compact play w-10→w-9, icon w-5→w-4; use bg-primary/text-primary-foreground
- Sidebar: space-y-6→space-y-8, section title mb-2→mb-3 mt-1 (audit §4.2)
- AdminDashboardView: stats grid gap-6→gap-8 (audit §4.3)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:30:13 +01:00 |
|
senke
|
3ddff494dc
|
style(ui): unify sidebar badges to primary, improve card depth and affordance
Phase 1 audit (P0 & P1):
- Sidebar: badges use primary (teal) instead of secondary (magenta)
- AdminDashboardStatCard: 0% trend shown as muted, never red
- AdminDashboardTrafficCard: remove fake Math.random() data, show empty state
- Dark theme: increase card luminance (0.21), stronger borders
- Card variants: add border-white/10 to glass, border-border to default
- Header: search input bg-card + border-white/10, migrate kodo-* to semantic tokens
- MiniPlayer: h-20 max (was h-24)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 19:28:12 +01:00 |
|
senke
|
47e535fb46
|
feat(ui): Zone 15 - Live & Checkout polish (Chat/Recommended/StreamInfo glass+glow, OrderSummary Card)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:47:18 +01:00 |
|
senke
|
b7c78618d0
|
feat(ui): Zone 14 - AdminView polish (Sidebar glass/glow, dashboard motion, UserTableRow tokens)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:46:36 +01:00 |
|
senke
|
be5ef43cee
|
feat(ui): Zone 13 - Settings view polish (Header glass, Tabs container, Content/Skeleton sync)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:45:35 +01:00 |
|
senke
|
68179a5912
|
feat(ui): Zone 12 - Library & Analytics polish (min-h-layout-page, motion, glass/glow, skeleton sync)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:45:06 +01:00 |
|
senke
|
17234b6222
|
feat(ui): Zone 11 - MarketplaceView SaaS polish (glass, glow, motion, fix allProducts, ProductCard tokens)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:44:13 +01:00 |
|
senke
|
c1ce0c4b5a
|
feat(ui): Zone 10 - SocialView SaaS polish (glass, glow, motion, error/empty)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:43:04 +01:00 |
|
senke
|
a3a3dd6546
|
style(commerce,upload,error): elevate Commerce, Upload, Error to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:07:09 +01:00 |
|
senke
|
8eac80ffb2
|
style(settings,auth): elevate Security and Auth to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:02:52 +01:00 |
|
senke
|
740f5b6308
|
style(player): elevate player components to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 16:01:56 +01:00 |
|
senke
|
823a0fe1ee
|
style(player): elevate player components to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:33:31 +01:00 |
|
senke
|
e8864fdb25
|
style(playlists,ui): elevate PlaylistListToolbar, DataList, Select to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:26:55 +01:00 |
|
senke
|
7b545f34d1
|
style(layout): elevate Header, Navbar, AudioPlayer, Sidebar to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:25:44 +01:00 |
|
senke
|
cdc9890257
|
style(studio): elevate CloudFileBrowser to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:20:44 +01:00 |
|
senke
|
8cf22aa90c
|
style(chat): elevate ChatSidebar and related stories to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:18:31 +01:00 |
|
senke
|
a69f9d1c89
|
style: fix leftover kodo in ProfileView, FileTableRow.stories, FocusTrap.stories
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:17:47 +01:00 |
|
senke
|
e293cc9366
|
style(stories): replace kodo decorators with design tokens in all story files
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:10:32 +01:00 |
|
senke
|
0218035f53
|
style(settings,views): elevate AccountSettings and ProfileView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:09:53 +01:00 |
|
senke
|
8a3da49fbd
|
style(ui): elevate Dialog to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:08:52 +01:00 |
|
senke
|
aa81603276
|
style: fix leftover kodo tokens in ProjectDetailView, ProductDetailView, CourseDetailView, UploadViewStepper
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:08:19 +01:00 |
|
senke
|
3446af4b31
|
style(studio): elevate ProjectDetailView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:01:03 +01:00 |
|
senke
|
0da580ef6d
|
style(streaming): elevate PlaybackHeatmap to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 15:01:00 +01:00 |
|
senke
|
ca856d807a
|
style(marketplace): elevate ProductDetailView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:58:26 +01:00 |
|
senke
|
cd719fb960
|
style(education): elevate CourseDetailView and CourseLearningView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:57:13 +01:00 |
|
senke
|
945dc8d30c
|
style(notifications): elevate NotificationMenu story to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:57:11 +01:00 |
|
senke
|
d600e3858c
|
style(playlists): elevate playlist batch/track-list to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:46 +01:00 |
|
senke
|
9387af64d4
|
style(views): elevate UploadView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:19 +01:00 |
|
senke
|
d5f1fdaa90
|
style(studio): fix ConnectivityViewWebhooks leftover kodo tokens
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:54:17 +01:00 |
|
senke
|
95d261b2da
|
style(settings): elevate TwoFactorSetup to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:42:45 +01:00 |
|
senke
|
73cc80b020
|
style(studio): elevate ProjectsManager to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:41:25 +01:00 |
|
senke
|
85dc9a49d7
|
style(studio): elevate CreateProjectModal to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:40:07 +01:00 |
|
senke
|
007eba6157
|
style(studio): elevate GoLiveView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:39:24 +01:00 |
|
senke
|
5159b9f34c
|
style(studio): elevate ConnectivityView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:38:15 +01:00 |
|
senke
|
e96c3f5ceb
|
style(settings,studio): remove remaining kodo in EditProfileIdentityCard and AIToolsViewSkeleton
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:37:35 +01:00 |
|
senke
|
64061aff64
|
style(studio): elevate AIToolsView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:25:23 +01:00 |
|
senke
|
9a58d20198
|
style(studio): elevate CloudSettingsView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:25:20 +01:00 |
|
senke
|
6b762173c8
|
style(views): elevate StudioView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:23:54 +01:00 |
|
senke
|
c25b0e957f
|
style(ui): elevate Dropdown, DropdownMenu, Tooltip to SaaS Premium; update test
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:23:04 +01:00 |
|
senke
|
688a4fe67d
|
style(ui): elevate Tabs and Accordion to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:17:49 +01:00 |
|
senke
|
5ac6931999
|
style(settings): elevate EditProfile to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:17:10 +01:00 |
|
senke
|
a51f67a843
|
style(social): elevate Profile + GroupDetailView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:15:35 +01:00 |
|
senke
|
98eab26fa6
|
style(player): remove remaining kodo in AudioPlayerFull
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:14:17 +01:00 |
|
senke
|
3dc15ed2d8
|
style(discover): remove remaining kodo in DiscoverView Trending, Genres, types
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:13:58 +01:00 |
|
senke
|
92faee36e6
|
fix(settings): AccountSettingsPreferencesCard syntax and remaining kodo
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:12:39 +01:00 |
|
senke
|
33ba8d0612
|
style(ui): elevate OptimizedImage to SaaS Premium and update test
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:05:38 +01:00 |
|
senke
|
58f5f2a306
|
style(discover): elevate DiscoverView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:05:04 +01:00 |
|
senke
|
d169d71cd5
|
style(player): elevate AudioPlayer to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:04:13 +01:00 |
|
senke
|
2452ff3239
|
style(file-details): elevate FileDetailsView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:03:36 +01:00 |
|
senke
|
dda00ad565
|
style(seller): elevate CreateProductView to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:03:00 +01:00 |
|
senke
|
95b5773477
|
style(settings): elevate AccountSettings cards to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:02:15 +01:00 |
|
senke
|
900151efc7
|
style(admin): elevate AdminDashboardView stories to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:01:29 +01:00 |
|
senke
|
f66dd3d638
|
style(checkout): elevate CheckoutView BillingCard and Header to SaaS Premium
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:01:11 +01:00 |
|
senke
|
f775c00a3b
|
fix(views): remove remaining kodo in Purchases/Cart/Live/Marketplace/Social
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 14:00:55 +01:00 |
|
senke
|
0eb5260c9b
|
style(views): elevate CheckoutView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:46:39 +01:00 |
|
senke
|
ac48d83c99
|
style(views): elevate LiveView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:45:38 +01:00 |
|
senke
|
cb3abd31e8
|
style(views): elevate AnalyticsView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:44:52 +01:00 |
|
senke
|
477b9c0fdf
|
style(views): elevate MarketplaceView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:44:12 +01:00 |
|
senke
|
871be67446
|
style(views): elevate SocialView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:43:31 +01:00 |
|
senke
|
1131390437
|
style(views): elevate PurchasesView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:42:37 +01:00 |
|
senke
|
b8fb871465
|
style(views): elevate CartView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:41:56 +01:00 |
|
senke
|
6fadfb722c
|
style(views): elevate SettingsView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:41:19 +01:00 |
|
senke
|
18c8feda19
|
style(views): elevate EducationView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:40:54 +01:00 |
|
senke
|
972372259f
|
style(views): elevate NotificationsView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:40:29 +01:00 |
|
senke
|
073779116f
|
style(views): elevate AdminView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:40:12 +01:00 |
|
senke
|
3ddf813275
|
style(views): elevate AuthView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:39:51 +01:00 |
|
senke
|
677163b11f
|
style(views): elevate ChatView to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:39:38 +01:00 |
|
senke
|
4dbab85804
|
style(library): elevate Library to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:39:18 +01:00 |
|
senke
|
6e9bacff54
|
style(ui): elevate Button to SaaS Premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:38:52 +01:00 |
|
senke
|
ba9ccfb30b
|
style(tracks): align story decorators with KŌDŌ tokens
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:17:00 +01:00 |
|
senke
|
798dbc49bc
|
style(track-detail-page): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:16:07 +01:00 |
|
senke
|
f30aea1962
|
style(TrackCard): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:14:35 +01:00 |
|
senke
|
aeec29caa1
|
style(TrackListRow): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:13:34 +01:00 |
|
senke
|
6a8ef31582
|
style(track-search): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:12:01 +01:00 |
|
senke
|
d5418cdb7b
|
style(TrackListContainer): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:11:47 +01:00 |
|
senke
|
11836f55f3
|
style(UploadQuota): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:10:05 +01:00 |
|
senke
|
2e04a3a1da
|
style(track-grid): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:08:39 +01:00 |
|
senke
|
8e640400a1
|
style(TrackStatsDisplay): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:07:10 +01:00 |
|
senke
|
d444fb3896
|
style(TrackSort): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:05:27 +01:00 |
|
senke
|
5b8c8a420e
|
style(ShareDialog): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:04:19 +01:00 |
|
senke
|
1a81e76e26
|
style(LikeButton): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:03:10 +01:00 |
|
senke
|
6832aeed39
|
style(TrackListSelectionActions): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 09:01:35 +01:00 |
|
senke
|
0e9bcb8e99
|
style(ViewToggle): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:59:38 +01:00 |
|
senke
|
c18771df09
|
style(track-search-filters): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:58:24 +01:00 |
|
senke
|
91bb04b956
|
style(track-list-pagination): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:56:06 +01:00 |
|
senke
|
c70046a7f8
|
style(track-filters): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:54:49 +01:00 |
|
senke
|
6d982d1ba0
|
style(comment-thread): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:52:35 +01:00 |
|
senke
|
94487a9b4f
|
style(track-history): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:49:21 +01:00 |
|
senke
|
02f5d18879
|
style(tracks): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:35:52 +01:00 |
|
senke
|
a41e7ce521
|
style(comments): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:13:59 +01:00 |
|
senke
|
a5889cb0ac
|
style(ui): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 08:03:28 +01:00 |
|
senke
|
b10821717d
|
feat(tracks): use TrackListSkeleton for loading state and add Error story
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 07:40:16 +01:00 |
|
senke
|
3c5fb9cc0e
|
test(comments): add comprehensive stories and MSW mocks
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 07:33:05 +01:00 |
|
senke
|
a65e4b7ab2
|
feat(comments): add high-fidelity skeletons and Framer Motion transitions
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 07:32:49 +01:00 |
|
senke
|
1006cc7e3a
|
refactor(comments): modularize CommentSection with atomic sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 07:32:37 +01:00 |
|
senke
|
06c963be46
|
refactor(tracks): split TrackDetailPage into module with Hero, CoverAndActions, Info, Tabs, Skeleton, NotFound
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 06:57:32 +01:00 |
|
senke
|
11ec40b692
|
refactor(playlists): split PlaylistDetailPage into module with Hero, CoverAndInfo, ActionsBar, Tabs, Skeleton, NotFound
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 06:46:30 +01:00 |
|
senke
|
1ebfacd12c
|
refactor(playlists): split PlaylistActions into module (buttons, edit dialog, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 06:09:51 +01:00 |
|
senke
|
efbf54c526
|
refactor(web): split EquipmentDetailView into module (nav, gallery, specs, header, warranty, docs, service, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 05:46:16 +01:00 |
|
senke
|
fa2563558c
|
refactor(web): split TrackListPagination into module (info, nav, utils, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 05:03:53 +01:00 |
|
senke
|
6dd7a312aa
|
refactor(web): split PlaylistAnalytics into module (stat cards, main/advanced, error, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 04:53:54 +01:00 |
|
senke
|
089677321b
|
refactor(web): split VirtualizedChatMessages into module (item, empty, loading, scroll btn, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 04:44:26 +01:00 |
|
senke
|
3834583492
|
refactor(web): split LibraryPage into module (toolbar, empty, grid, list, skeleton)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 04:31:06 +01:00 |
|
senke
|
e243e2c41e
|
refactor(web): split router into module (PublicRoute, ProtectedLayoutRoute, routeConfig)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 04:16:37 +01:00 |
|
senke
|
43d0d7e129
|
refactor(web): split ChatView into chat-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 03:59:32 +01:00 |
|
senke
|
bdda26ad08
|
refactor(web): split AuthView into auth-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-07 03:53:59 +01:00 |
|
senke
|
c92c8d02a4
|
refactor(web): split AdminView into admin-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 22:31:24 +01:00 |
|
senke
|
bb370397d2
|
refactor(web): split NotificationsView into notifications-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 22:22:47 +01:00 |
|
senke
|
6833df9dc5
|
refactor(web): split EducationView into education-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 22:11:13 +01:00 |
|
senke
|
b736de5dc7
|
refactor(web): split SettingsView into settings-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 21:59:42 +01:00 |
|
senke
|
753191d88b
|
refactor(web): split CartView into cart-view module
- types: CartViewProps, CartDiscount
- useCartView: useCartStore, showPromo, discount, tax/finalTotal, handleApplyPromo
- CartViewEmpty, CartViewHeader, CartViewSummary, CartViewSecure, CartViewSkeleton
- PromoCodeModal in orchestrator; min-h-[60vh] -> min-h-layout-page-sm
- Stories: Default, Empty, Loading (Skeleton); decorator min-h-layout-page
- Re-export from CartView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 21:49:55 +01:00 |
|
senke
|
d7c462c8cc
|
refactor(web): split PurchasesView into purchases-view module
- types: PurchasesViewProps, Purchase
- usePurchasesView: commerceService.getPurchases, search, refund, download
- PurchasesViewHeader, PurchasesViewItem, PurchasesViewList, PurchasesViewSkeleton
- RefundRequestModal in orchestrator; Loading renders Skeleton
- Stories: Default, Empty (initialPurchases []), Loading (Skeleton)
- Re-export from PurchasesView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 21:42:35 +01:00 |
|
senke
|
0504810f29
|
refactor(web): split SocialView into social-view module
- types: SocialViewProps, SocialTabKey
- useSocialView: feedTracks (trackService.list), activeTab, playTrack
- SocialViewSidebar, SocialViewFeed, SocialViewFeedItem, SocialViewTrending, SocialViewSkeleton
- Loading renders Skeleton; decorator min-h-layout-page
- Re-export from SocialView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 21:34:18 +01:00 |
|
senke
|
c2c98ff535
|
refactor(web): split MarketplaceView into marketplace-view module
- types: MarketplaceViewProps, MarketplaceCategory; useMarketplaceView with marketplaceService/fallback
- MarketplaceViewHeader, MarketplaceViewCategories, MarketplaceViewSidebar, MarketplaceViewGrid, MarketplaceViewSkeleton
- allProducts for ProductDetailView similarProducts; min-h-screen -> min-h-layout-page
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page
- Re-export from MarketplaceView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 18:42:16 +01:00 |
|
senke
|
6bdb66743e
|
refactor(web): split AnalyticsView into analytics-view module
- types: AnalyticsViewProps, DateRangeKey, GlobalStats, TopTrackRow, TrafficSource, DeviceStats, ChartHoverData
- useAnalyticsView: dateRange, stats, topTracks, trafficSources, deviceStats, loading, hoveredData, handleExport
- AnalyticsViewHeader, AnalyticsViewKpiGrid, AnalyticsViewChart, AnalyticsViewOrigins, AnalyticsViewPlatforms, AnalyticsViewTopTracks, AnalyticsViewSkeleton
- Data via analyticsService; loading renders Skeleton
- text-[10px] -> text-xs, tracking-[0.2em] -> tracking-wide
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page
- Re-export from AnalyticsView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 18:33:42 +01:00 |
|
senke
|
937ec45660
|
refactor(web): split LiveView into live-view module
- types.ts: LiveViewProps, LiveViewChatMessage; mockData: FEATURED_STREAM, CHAT_MESSAGES
- useLiveView: stream, chatMessages, msgInput, handleSend, addToast
- LiveViewPlayer, LiveViewStreamInfo, LiveViewRecommended, LiveViewChat, LiveViewSkeleton
- Layout h-[calc(100vh-120px)] -> min-h-layout-main; text-[10px] -> text-xs
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page
- Re-export from LiveView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 18:15:41 +01:00 |
|
senke
|
e172d67292
|
refactor(web): split CheckoutView into checkout-view module
- types.ts: CheckoutViewProps, CheckoutFormState, INITIAL_CHECKOUT_FORM
- useCheckoutView: form state, cart/tax, handlePurchase, onComplete
- CheckoutViewHeader, CheckoutViewBillingCard, CheckoutViewPaymentCard,
CheckoutViewOrderSummary, CheckoutViewSkeleton
- CheckoutView orchestrator; re-export from CheckoutView.tsx
- Stories: Loading (Skeleton), Default, Processing, Success
- Decorator min-h-screen -> min-h-layout-page
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 18:04:13 +01:00 |
|
senke
|
fb3e5ceb5b
|
refactor(web): split AdminDashboardView into admin-dashboard-view module
- types: DashboardStats, UploadItem, AuditLogItem, StatCardProps, Report
- useAdminDashboardView: fetchData, handleAction, triggerProtocol
- Header, StatCard, TrafficCard, ProtocolsCard, NodeHealthCard, Tabs
- AdminDashboardSkeleton for Loading state
- max-w-layout-content, text-xs, gap-0.5 (no arbitrary values)
- Stories: Default, Loading (Skeleton). Decorator min-h-layout-page
- Re-export from AdminDashboardView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 17:54:02 +01:00 |
|
senke
|
4ef6ed9c3b
|
refactor(web): split AccountSettings (components/settings/account) into module
- account-settings/types: AccountSettingsUserMock, AccountSettingsToggles
- useAccountSettingsPage: view, modals, user, toggles, theme, setThemeOption
- IdentityCard, PreferencesCard, NotificationsCard, PrivacyCard, DangerCard
- AccountSettingsSkeleton for Loading state
- Privacy labels text-xs (no text-[10px])
- Theme selection: isOptionSelected(theme, variant)
- Stories: Default, Loading (Skeleton). Decorator min-h-layout-page
- Re-export from AccountSettings.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 17:42:57 +01:00 |
|
senke
|
98f90c9863
|
refactor(web): split ChatInterface into chat-interface module
- types.ts: ChatInterfaceProps
- useChatInterface: state, wsService, loadMessages, loadChatStats, handleSendMessage, formatTimestamp
- ChatInterfaceHeader, ChatInterfaceMessages, ChatInterfaceInput
- ChatInterfaceSkeleton for Loading state
- Stories: Default, ProductionRoom, Loading (Skeleton)
- Decorator h-[600px] -> min-h-layout-page
- Re-export from ChatInterface.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 14:24:41 +01:00 |
|
senke
|
a164ffa214
|
refactor(web): split CreateProductView into create-product-view module
- types.ts: LicenseConfig
- useCreateProductView: form state, updateLicense, handlePublish, handleSaveDraft
- CreateProductViewHeader, CoverCard, FilesCard, DetailsCard, PricingCard
- CreateProductViewSkeleton for Loading state
- Textarea min-h-24 (no arbitrary value)
- MSW: POST marketplace/products for Storybook
- Stories: Default, Loading (Skeleton)
- Re-export from CreateProductView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 14:16:38 +01:00 |
|
senke
|
162a3bf0a7
|
refactor(web): split FileDetailsView into file-details-view module
- types.ts: FileDetailsViewProps, ActivityItem, VersionItem
- mockData.ts: MOCK_ACTIVITY, MOCK_VERSIONS, getMockFile
- useFileDetailsView.ts: hook returning file, activity, versions
- FileDetailsViewHeader, Preview, Metadata, Activity, Versions, Storage
- FileDetailsViewSkeleton for Loading state
- Layout: min-h-layout-page-sm, badge text-xs
- Imports use @/ for Storybook resolution
- Stories: Default, Loading (Skeleton)
- Re-export from FileDetailsView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 14:05:44 +01:00 |
|
senke
|
9c58ff7818
|
refactor(web): split VirtualizedList into virtualized-list module
- virtualized-list/types.ts: VirtualizedListProps
- virtualized-list/useInfiniteScroll.ts: useInfiniteScroll hook
- virtualized-list/useScrollPosition.ts: useScrollPosition hook
- virtualized-list/VirtualizedList.tsx: main component
- Re-export from virtualized-list.tsx via ./virtualized-list/index
- Test mock extended with getTotalSize, measureElement, key on virtual items
- 4 tests pass
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:55:06 +01:00 |
|
senke
|
9d85485f30
|
refactor(web): split AudioContext into context/audio-context module
- types.ts: VisualizerSettings, AudioContextType
- mockTracks.ts: mock track data for initial state
- useAudioContextValue.ts: all state, effects, and actions
- AudioContext.tsx: createContext, useAudio, AudioProvider
- Re-export from context/AudioContext.tsx (useAudio, AudioProvider, VisualizerSettings)
- Fix toggleMute to toggle isMuted (was incorrectly toggling isPlaying)
- 12 tests pass
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:46:29 +01:00 |
|
senke
|
6aad6d7d03
|
refactor(player): decompose AudioPlayer into audio-player module
- Add audio-player/ with useAudioPlayerLifecycle, AudioPlayerCompact, AudioPlayerFull, AudioPlayerSkeleton
- Re-export and default export from AudioPlayer.tsx
- Story Loading uses AudioPlayerSkeleton; 20 tests pass
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:37:04 +01:00 |
|
senke
|
c8110d2ca2
|
refactor(library): decompose UploadModal into upload-modal module
- Add upload-modal/ with useLibraryUploadModal, UploadModalForm, UploadModalFooter, types
- Re-export UploadModal from UploadModal.tsx
- Form ids for a11y (library-upload-*); trigger role=button tabIndex=0
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:26:19 +01:00 |
|
senke
|
c17c975b59
|
refactor(views): decompose DiscoverView into discover-view module
- Add discover-view/ with useDiscoverView, Hero, Trending, NewReleases, Genres, Skeleton, Error
- Re-export DiscoverView from DiscoverView.tsx
- Loading: Skeleton instead of h-[50vh] spinner; Error: min-h-layout-page-sm
- Conformity: UPDATED badge text-[10px] -> text-xs
- Stories: Default, Loading (Skeleton), Error
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:19:25 +01:00 |
|
senke
|
1744fac6aa
|
refactor(profile): decompose UserProfilePage into user-profile-page module
- Add user-profile-page/ with useUserProfilePage, Hero, Header, Tabs, Skeleton, Error
- Re-export UserProfilePage from UserProfilePage.tsx
- Stories: Default (/u/demo), Loading (Skeleton), NotFound (/u/notfound)
- MSW: GET /api/v1/users/by-username/:username (404 for notfound)
- Tests: mock useUserProfilePage, ToastProvider; 7 tests pass
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 13:10:33 +01:00 |
|
senke
|
98f01e60fe
|
refactor(social): GroupDetailView module, useGroupDetailView, Header, Members, Events, Sidebar, Skeleton, stories
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 12:34:57 +01:00 |
|
senke
|
1b4caba44b
|
refactor(settings): EditProfile module, useEditProfile, ImagesCard, IdentityCard, Sidebar, Skeleton, cropUtils, stories
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 11:45:16 +01:00 |
|
senke
|
3811df2961
|
refactor(forms): FormBuilder module, useFormBuilder, FormBuilderFieldWidget, re-export, stories, a11y id
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 11:36:20 +01:00 |
|
senke
|
31b3c2e712
|
refactor(monitoring): MonitoringDashboardContent split into Header, Stats, ValidationCard, ErrorsCard, PerformanceCard
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 11:27:54 +01:00 |
|
senke
|
85c88c5143
|
refactor(data): Table module, useTable, TableHeadRow, TableBodyRows, re-export, stories, tests
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 11:22:47 +01:00 |
|
senke
|
eead265786
|
refactor(ui): tooltip module, useTooltip, re-export, tests
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 10:32:14 +01:00 |
|
senke
|
cb58101137
|
refactor(ui): tabs module, re-export
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 10:12:33 +01:00 |
|
senke
|
80cc76212a
|
refactor(ui): accordion module, re-export
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:33:10 +01:00 |
|
senke
|
9f78576389
|
refactor(ui): dropdown-menu module, dropdown controlled open, re-export
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:27:29 +01:00 |
|
senke
|
7b5796a3b6
|
refactor(views): StudioView module, re-export, stories
- Module studio-view: types, useStudioView, Header, Sidebar, NavButton,
Content, ProjectsSwitch, Skeleton, orchestrator StudioView
- Re-export from StudioView.tsx
- Stories: Default, Projects, Loading (Skeleton); decorator min-h-layout-main
- Fix: h-[calc(100vh-140px)] -> min-h-layout-main, w-[65%] -> w-2/3
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:17:36 +01:00 |
|
senke
|
38894d8a1d
|
refactor(studio): CloudSettingsView module, re-export, stories
- Module cloud-settings-view: types, useCloudSettingsView, Quota,
Preferences, Skeleton, orchestrator CloudSettingsView
- Re-export from CloudSettingsView.tsx
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:11:33 +01:00 |
|
senke
|
f724b63e38
|
refactor(studio): AIToolsView module, re-export, stories
- Module ai-tools-view: types, constants (AI_TOOLS), useAIToolsView,
ToolGrid, Workspace, Skeleton, orchestrator AIToolsView
- Re-export from AIToolsView.tsx
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page,
no local ToastProvider (use StorybookDecorator)
- Fix: text-[10px] -> text-xs, min-h-[400px] -> min-h-layout-page-sm
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:07:05 +01:00 |
|
senke
|
e2f30ee28a
|
refactor(studio): ConnectivityView module, re-export, stories
- Module connectivity-view: types, useConnectivityView, WebDAV, Webhooks,
Skeleton, orchestrator ConnectivityView
- Re-export from ConnectivityView.tsx
- Stories: Default, Loading (Skeleton); decorator min-h-layout-page
- Fix: text-[10px] -> text-xs (Mount Password hint)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 02:02:00 +01:00 |
|
senke
|
bdcbf277e8
|
refactor(studio): GoLiveView module, re-export, stories
- Module go-live-view: types, useGoLiveView, Header, Preview, StreamInfo,
EncoderSetup, QuickInstructions, MicLevel, Skeleton, orchestrator
- Re-export from GoLiveView.tsx
- Stories: Default, Loading (Skeleton); decorator min-h-layout-main
- Fix: text-[10px] -> text-xs, w-[60%] -> w-3/5
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 01:57:22 +01:00 |
|
senke
|
946b6721b3
|
refactor(studio): CreateProjectModal module, re-export, stories
- Module create-project-modal: types, useCreateProjectModal, Header,
Form, Footer, Skeleton, orchestrator CreateProjectModal
- Re-export from projects/CreateProjectModal.tsx
- Stories: Default, Loading (Skeleton); decorator min-h-layout-story
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 01:51:25 +01:00 |
|
senke
|
41ba59a75f
|
refactor(studio): ProjectsManager module, re-export, stories
- Module projects-manager: types, useProjectsManager, Header, FilterBar,
Card, AddCard, Empty, Skeleton, orchestrator ProjectsManager
- Re-export from studio/ProjectsManager.tsx
- Stories: Default, Loading (Skeleton), Empty; decorator min-h-layout-main
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 01:44:40 +01:00 |
|
senke
|
1ea128b60d
|
refactor(tracks): TrackHistory module, re-export, stories, tests
- Module track-history: types, useTrackHistory, Header, Empty, ItemRow, Pagination, Skeleton, trackHistoryUtils
- Re-export from TrackHistory.tsx
- Stories: Default, Loading, Empty, Error (MSW)
- Tests: mock @/features/tracks/services/trackHistoryService, formatHistoryDate defensive, pagination/error tests fixed
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 01:34:58 +01:00 |
|
senke
|
3886061ec9
|
refactor(settings): TwoFactorSetup module, re-export, stories
- Module two-factor-setup: types, useTwoFactorSetup, Header, Step1/2/3, Skeleton
- Re-export from TwoFactorSetup.tsx
- Stories: Default, Step1, Step2, Loading (Skeleton), Error (MSW)
- Decorator: min-h-layout-page-sm
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-02-06 01:25:43 +01:00 |
|