senke
f8a6f9feef
docs(audit): ajouter PlaylistBatchActions au tableau des refactorisations
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:37:26 +01:00
senke
0dcef5fe9e
refactor(playlists): découper PlaylistBatchActions en module
...
- Module playlist-batch-actions/ : usePlaylistBatchActions, exportUtils,
Bar, Buttons, DeleteDialog, Skeleton
- Boutons min-h-11 (remplace min-h-[44px])
- Stories : Default, SingleSelection, Loading
- Tests : mocks URL + Playlist id/user_id en string
- Re-export depuis PlaylistBatchActions.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:37:06 +01:00
senke
f364e08cbb
docs(audit): ajouter AddTrackToPlaylistModal au tableau des refactorisations
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:22:33 +01:00
senke
0d19a1ef01
refactor(playlists): découper AddTrackToPlaylistModal en module
...
- Module add-track-to-playlist-modal/ : useAddTrackToPlaylistModal, Search,
List, TrackRow, Footer, Skeleton
- Liste max-h-96 (layout), Spinner pour chargement
- Stories : Default (useArgs), Loading (Skeleton)
- Re-export depuis AddTrackToPlaylistModal.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:22:09 +01:00
senke
58a8f290db
docs(audit): add PlaylistTrackList to refactored components table
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:14:41 +01:00
senke
7705244e74
refactor(playlists): PlaylistTrackList module with hook, subcomponents, skeleton
...
- Add playlist-track-list/ with usePlaylistTrackList, Empty, SortableItem, Skeleton, utils
- Prop isLoading for skeleton state
- Re-export from PlaylistTrackList.tsx and PlaylistTrackListSkeleton.tsx
- Stories: Default, Loading (Skeleton), Empty, Reordering (with mock data)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:14:19 +01:00
senke
2cb39b9961
docs(audit): add NotificationMenu to refactored components table
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:07:42 +01:00
senke
69e5c30689
refactor(notifications): NotificationMenu module with hook, subcomponents, skeleton
...
- Add notification-menu/ with useNotificationMenu, Trigger, Dropdown, List, Item, Skeleton
- Dropdown max-h-96 (no arbitrary max-h-[500px])
- Props notificationsOverride, isLoadingOverride, errorOverride for Storybook
- Re-export from NotificationMenu.tsx
- Stories: Default, Loading, Empty, Error, Skeleton
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:07:19 +01:00
senke
622aedfb3f
docs(audit): add LibraryManager to refactored components table
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:00:58 +01:00
senke
1cf955bd38
refactor(library): LibraryManager module with hook, subcomponents, skeleton
...
- Add library-manager/ with useLibraryManager, Header, Toolbar, Error, Empty, Content, Stats, Skeleton
- Layout min-h-layout-page (no arbitrary h-[600px])
- Props tracksOverride, errorOverride, isLoadingOverride for Storybook
- Re-export from LibraryManager.tsx
- Stories: Default, Loading (Skeleton), Empty, Error
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 00:00:35 +01:00
senke
398a54daea
docs(audit): add CourseDetailView to refactored components table
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:52:47 +01:00
senke
fbfb56021a
refactor(education): CourseDetailView module with hook, subcomponents, skeleton
...
- Add course-detail-view/ with useCourseDetailView, Header, Tabs, Sidebar, Skeleton
- Stories: Default, Loading (Skeleton), Empty, Enrolled
- Re-export from CourseDetailView.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:52:24 +01:00
senke
19bd49ced0
docs(audit): add CourseLearningView to refactored components table
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:46:20 +01:00
senke
094a0ee4c8
refactor(education): CourseLearningView module with hook, subcomponents, skeleton
...
- Add course-learning-view/ with useCourseLearningView, Header, Player, Tabs, Sidebar, Skeleton
- Layout min-h-layout-main, no arbitrary values
- Re-export from CourseLearningView.tsx
- Stories: Default, Loading (Skeleton), Empty, Complete
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:45:58 +01:00
senke
c3bb896eac
docs(audit): mark ProductDetailView (marketplace) as refactored in frontend audit
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:38:28 +01:00
senke
527fe21f4a
refactor(marketplace): split ProductDetailView into module (Header, Gallery, Info, Licenses, Description, Reviews, Similar, Skeleton)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:38:09 +01:00
senke
4436d9c45a
docs(audit): mark PlaybackHeatmap as refactored in frontend audit
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:31:25 +01:00
senke
7a532023aa
refactor(streaming): split PlaybackHeatmap into module (Header, Stats, Grid, Skeleton, Error, Empty)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:31:06 +01:00
senke
2f7edfdf16
docs(audit): mark ProjectDetailView as refactored in frontend audit
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:24:57 +01:00
senke
64cc0ba505
refactor(studio): split ProjectDetailView into module (Header, Tabs, Overview, Files, Settings, Sidebar, Skeleton)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:24:39 +01:00
senke
3f498cace1
docs(audit): mark SessionsPage as refactored in frontend audit
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:19:26 +01:00
senke
d87859595c
refactor(auth): split SessionsPage into module (Header, Content, Skeleton, stories)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:19:06 +01:00
senke
5fcf1f5831
docs(audit): mark TrackSearchFilters as refactored in frontend audit
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:09:51 +01:00
senke
ef04a9ee2d
refactor(tracks): split TrackSearchFilters into module (Basic, Advanced, Skeleton)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:09:36 +01:00
senke
3691b26c7c
docs(audit): add AccountSettings to refactored components in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:04:31 +01:00
senke
9f06b8e0d4
refactor(settings): extract AccountSettings into account-settings module
...
- Add account-settings/ with useAccountSettings, AccountSettingsErrorBanner,
AccountSettingsPasswordCard, AccountSettingsExportCard, AccountSettingsDeleteCard,
AccountSettingsSkeleton
- Re-export from AccountSettings.tsx for backward compatibility
- Stories: Default, Loading (skeleton, min-h-layout-story); remove ToastProvider
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:04:16 +01:00
senke
140dca846e
docs(audit): add Dialog to refactored components in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 23:00:02 +01:00
senke
04441e15ef
refactor(ui): extract Dialog into dialog module
...
- Add dialog/ with types, Dialog, DialogHeader, DialogBody, DialogFooter,
DialogContent, DialogDescription, DialogTitle, DialogTrigger, DialogSkeleton
- Re-export from dialog.tsx via dialog/index for backward compatibility
- Stories: Default, Alert, Composition (max-w-md), Loading (DialogSkeleton)
- Test: assert Kodo destructive classes (text-kodo-red) for alert variant
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:59:48 +01:00
senke
b0f1e11b99
docs(audit): add PlaylistList to refactored components in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:55:11 +01:00
senke
1a87af02ed
refactor(playlists): extract PlaylistList into playlist-list module
...
- Add playlist-list/ with usePlaylistList, PlaylistListToolbar, PlaylistListEmpty,
PlaylistListError, types; keep PlaylistListSkeleton at components level
- Re-export from PlaylistList.tsx for backward compatibility
- Stories: Default, Grid, Empty (MSW), Loading (skeleton, min-h-layout-story)
- Replace min-h-[44px] with min-h-11; no arbitrary values
- Tests: assert French labels and Pagination text; fix skeleton test
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:54:54 +01:00
senke
3ef94f9235
docs(audit): add TrackFilters to refactored components in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:46:26 +01:00
senke
90b10f70e7
refactor(tracks): extract TrackFilters into track-filters module
...
- Add track-filters/ with useTrackFilters, TrackFiltersHeader, TrackFiltersSearch,
TrackFiltersGrid, TrackFiltersClear, TrackFiltersSkeleton, types
- Re-export from TrackFilters.tsx for backward compatibility
- Stories: Default, Collapsible, Loading (skeleton)
- Layout primitive min-h-layout-story for skeleton; no arbitrary values
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:46:11 +01:00
senke
4c4ef6ab9c
docs(audit): record AudioPlayer (components/player) refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:40:19 +01:00
senke
666c5958e4
refactor(player): extract AudioPlayer into audio-player module
...
- types, useAudioPlayerEffects, AudioPlayerTrackInfo, AudioPlayerControls
- AudioPlayerProgress, AudioPlayerVolume, AudioPlayerSkeleton
- Stories: Default (mock store), Skeleton
- Re-export from AudioPlayer.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:40:06 +01:00
senke
38603ba774
docs(audit): record DataList refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:36:06 +01:00
senke
5791051a5e
refactor(ui): extract DataList into data-list module
...
- types, DataListSkeleton, DataListEmpty, DataListError, DataList
- Remove duplicate Modal/Dropdown from DataList.tsx (exist in modal.tsx/dropdown.tsx)
- Stories: Default, Loading, Empty, Error, Skeleton (min-h-layout-story)
- Re-export from DataList.tsx
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:35:53 +01:00
senke
782e8da648
docs(audit): record OptimizedImage refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:31:48 +01:00
senke
970e92790a
refactor(ui): extract OptimizedImage into optimized-image module
...
- types, generateImageSources, BlurPlaceholder, useImageFormatSupport
- OptimizedImage, OptimizedImageSkeleton, useImagePreloader, ResponsiveImage
- Stories: Default, WithPlaceholder, ErrorState, Loading (skeleton)
- Re-export from optimized-image.tsx; tests adapted to loading state
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:31:35 +01:00
senke
cf31a8279a
fix(ui): call onAvatarUpdated('') after successful avatar delete
...
Ensures parents that rely on onAvatarUpdated get the empty URL when
avatar is removed. Aligns with profile feature test contract.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:24:50 +01:00
senke
e39cd8451c
docs(audit): record AvatarUpload refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:21:13 +01:00
senke
c6774762b2
refactor(ui): extract AvatarUpload into avatar-upload module
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:21:02 +01:00
senke
139706ac05
docs(audit): record DatePicker refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:15:27 +01:00
senke
407cdba6d5
refactor(ui): extract DatePicker into date-picker module
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:15:11 +01:00
senke
4fd7f6080d
docs(audit): record ShareLinkManager refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:09:42 +01:00
senke
94a549efcd
refactor(share): extract ShareLinkManager into share-link-manager module
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:09:31 +01:00
senke
a882b25545
docs(audit): record PlaybackDashboard refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:04:54 +01:00
senke
2b8fec9c11
refactor(streaming): extract PlaybackDashboard into playback-dashboard module
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 22:04:38 +01:00
senke
bec8cb2d64
docs(audit): record MonitoringDashboard refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 21:57:59 +01:00
senke
4b8003c7f4
refactor(monitoring): extract MonitoringDashboard into monitoring-dashboard module
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 21:57:39 +01:00
senke
a32178b900
docs(audit): record RegisterPage refactor in FRONTEND_DEEP_DIVE_AUDIT
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 21:50:42 +01:00