Commit graph

1350 commits

Author SHA1 Message Date
senke
58d47f3e38 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
c9cef0f36d style(tracks): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 08:35:52 +01:00
senke
4b2d86414b style(comments): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 08:13:59 +01:00
senke
e3dbbbb032 style(ui): elevate visual fidelity to premium standards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 08:03:28 +01:00
senke
276229a0e4 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
0527eb76e5 test(comments): add comprehensive stories and MSW mocks
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 07:33:05 +01:00
senke
9573b8261c 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
65e8a69db2 refactor(comments): modularize CommentSection with atomic sub-components
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 07:32:37 +01:00
senke
17b57dc885 docs(audit): TrackDetailPage refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 06:57:46 +01:00
senke
1c4b35a51e 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
1474078090 docs(audit): PlaylistDetailPage refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 06:47:07 +01:00
senke
df9d5f9be8 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
b0921cd070 docs(audit): PlaylistActions refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 06:10:30 +01:00
senke
7d13c23d72 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
92bd9eeef3 docs(audit): EquipmentDetailView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 05:46:19 +01:00
senke
6f7156f035 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
7744e3ca0e docs(audit): TrackListPagination refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 05:04:24 +01:00
senke
79eed88e57 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
5fd968ec4a docs(audit): PlaylistAnalytics refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 04:54:00 +01:00
senke
27c8b9940e 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
0352824f06 docs(audit): VirtualizedChatMessages refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 04:44:30 +01:00
senke
aafb4b083a 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
51c1937b51 docs(audit): LibraryPage refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 04:31:15 +01:00
senke
d7d22b705e 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
e3fa53925c docs(audit): router refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 04:16:43 +01:00
senke
0bec3183d9 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
e342776843 docs(audit): ChatView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 04:01:30 +01:00
senke
d11aa1d3a2 refactor(web): split ChatView into chat-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 03:59:32 +01:00
senke
509a893b50 docs(audit): AuthView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 03:54:38 +01:00
senke
de3e704373 refactor(web): split AuthView into auth-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-07 03:53:59 +01:00
senke
a5a5e001d0 docs(audit): AdminView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:32:04 +01:00
senke
86450a93ab refactor(web): split AdminView into admin-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:31:24 +01:00
senke
5a6d647434 docs(audit): NotificationsView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:23:19 +01:00
senke
b4cca23ec9 refactor(web): split NotificationsView into notifications-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:22:47 +01:00
senke
fe63e56c1f docs(audit): EducationView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:11:45 +01:00
senke
abc4386495 refactor(web): split EducationView into education-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:11:13 +01:00
senke
99517571d3 docs(audit): SettingsView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 22:00:12 +01:00
senke
6ccf3db0e1 refactor(web): split SettingsView into settings-view module
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 21:59:42 +01:00
senke
0c19958cd2 docs(audit): CartView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 21:51:30 +01:00
senke
dcf89cb2da 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
b076b83f19 docs(audit): PurchasesView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 21:43:08 +01:00
senke
de2144f34f 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
7d8345684d docs(audit): SocialView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 21:35:06 +01:00
senke
b6b2791b76 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
be4b297a06 docs(audit): MarketplaceView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 21:26:33 +01:00
senke
9a8af12b6b 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
ac1cf02544 docs(audit): AnalyticsView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 18:34:24 +01:00
senke
461fd9cf6a 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
b74dc97fb4 docs(audit): LiveView refactorised 2026-02-05
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 18:16:11 +01:00
senke
30df8c99ea 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