Commit Graph

112 Commits

Author SHA1 Message Date
Ilia Mashkov 91451f7886 chore: import/export fixes due to code move 2026-01-13 20:00:36 +03:00
Ilia Mashkov 99d4b4e29a chore: rename FetchFonts to GetFonts 2026-01-13 19:59:07 +03:00
Ilia Mashkov d9d45bf9fb chore: move Filters and Controls to GetFont feature 2026-01-13 19:57:22 +03:00
Ilia Mashkov 4810c2b228 chore: delete unused code 2026-01-13 19:56:20 +03:00
Ilia Mashkov 4c9b9f631f fix: minor type changes for fonts 2026-01-13 19:54:56 +03:00
Ilia Mashkov 5fcb381b11 chore(normalize): move font api responce normalization functions to lib 2026-01-13 19:53:26 +03:00
Ilia Mashkov e098da2dbb feat(filterManager): add debouced state support and move manager 2026-01-13 19:52:36 +03:00
Ilia Mashkov 1a76e9387a feat(createDebouncedState): create helper for managing state with debounce 2026-01-13 19:51:41 +03:00
Ilia Mashkov 0f1eb489ed feat: add query provider for Tanstack 2026-01-13 19:49:51 +03:00
Ilia Mashkov 6e8376b8fc fix(arch): move unifiedFontStore context creation to Layout.svelte
- Moved unifiedFontStore creation from Page.svelte to Layout.svelte
- Layout now creates store instance and provides it via setContext()
- Page.svelte now receives store via getContext() instead of creating it
- Fixes context accessibility issue where FiltersSidebar and FontSearch
  (siblings of Page) could not access the store
- All child components now share the same store instance at Layout level

This resolves the architectural issue where context only flows downward,
not sideways. All components (FiltersSidebar, FontSearch, Page) are now
children of Layout and can access the unifiedFontStore context.
2026-01-12 08:51:36 +03:00
Ilia Mashkov d81af0a77b feat: implement P0/P1 performance and code quality optimizations
P0 Performance Optimizations:
- Add debounced search (300ms) to reduce re-renders during typing
- Implement single-pass filter function for O(n) complexity
- Add TanStack Query cancellation before new requests

P1 Code Quality Optimizations:
- Add runtime type guards for filter validation
- Implement two derived values (filteredFonts + sortedFilteredFonts)
- Remove all 'as any[]' casts from filter bridge
- Add fast-path for default sorting (skip unnecessary operations)

New Utilities:
- debounce utility with 4 tests (all pass)
- filterUtils with 15 tests (all pass)
- typeGuards with 20 tests (all pass)
- Total: 39 new tests

Modified Files:
- unifiedFontStore.svelte.ts: Add debouncing, use filter/sort utilities
- filterBridge.svelte.ts: Type-safe validation with type guards
- unifiedFontStore.test.ts: Fix pre-existing bugs (missing async, duplicate imports)

Code Quality:
- 0 linting warnings/errors (oxlint)
- FSD compliant architecture (entity lib layer)
- Backward compatible store API
2026-01-11 14:49:21 +03:00
Ilia Mashkov 77de829b04 fix: types 2026-01-09 16:48:26 +03:00
Ilia Mashkov 7630802363 fix: minor changes in types 2026-01-09 16:20:25 +03:00
Ilia Mashkov 43175fd52a feat(FontSearch): create FontSearch component with SearchBar and FontList with list virtualization 2026-01-09 16:20:00 +03:00
Ilia Mashkov 9598d8c3e4 feat(SearchBar): create SearchBar component with input and popover that contains search results 2026-01-09 16:19:22 +03:00
Ilia Mashkov c863bea2dc feat: create FontList component with use of VirtualList 2026-01-09 16:18:16 +03:00
Ilia Mashkov ea1f46f780 feat(fontCollection): create font collection state manager 2026-01-09 16:17:49 +03:00
Ilia Mashkov bdb67157fd fix: rename file 2026-01-09 16:17:09 +03:00
Ilia Mashkov e198e967ab fix: minor changes in shadcn components import 2026-01-09 16:16:32 +03:00
Ilia Mashkov e1af950442 chore: create index files for better import/export api 2026-01-09 16:14:38 +03:00
Ilia Mashkov 13509a4145 chore: add comments for types and constants 2026-01-09 16:13:47 +03:00
Ilia Mashkov 09111a7c61 fix: import/export 2026-01-09 16:13:02 +03:00
Ilia Mashkov b13c0d268b fix: import/export 2026-01-09 16:12:51 +03:00
Ilia Mashkov 1990860717 feat: add generic type for property value 2026-01-09 16:11:35 +03:00
Ilia Mashkov 6f7e863b13 fix: use proper types for fetching fonts 2026-01-09 16:09:56 +03:00
Ilia Mashkov 8ad29fd3a8 feat(FontCategory): separate types for font categories from different providers 2026-01-09 16:09:18 +03:00
Ilia Mashkov de2688de5a delete: delete stores 2026-01-09 16:08:19 +03:00
Ilia Mashkov 1ebab2d77b feat: add data-testid attribute
Lint / Lint Code (push) Failing after 7m16s
Test / Svelte Checks (push) Failing after 7m8s
2026-01-08 13:15:02 +03:00
Ilia Mashkov fc00717359 feat: test coverage of ComboControl and CheckboxFilter 2026-01-08 13:14:04 +03:00
Ilia Mashkov 36a326817d feat: test coverage for utils
Lint / Lint Code (push) Failing after 7m20s
Test / Svelte Checks (push) Failing after 7m20s
2026-01-07 17:26:59 +03:00
Ilia Mashkov f4c2a38873 fix: imports path 2026-01-07 16:54:19 +03:00
Ilia Mashkov 614d6b0673 fix: imports path 2026-01-07 16:54:12 +03:00
Ilia Mashkov f26f56ddef chore: move createVirtualizer 2026-01-07 16:53:44 +03:00
Ilia Mashkov 76f27a64b2 refactor(createTypographyControl): createControlStore rewrote to runes 2026-01-07 16:53:17 +03:00
Ilia Mashkov baff3b9e27 refactor(createFilter): createFilterStore rewrote to runes 2026-01-07 16:52:17 +03:00
Ilia Mashkov d15b90cfcb feat: move buildQueryString to separate directory 2026-01-07 16:49:37 +03:00
Ilia Mashkov 893bb02459 feat: move buildQueryString to separate directory 2026-01-07 16:49:18 +03:00
Ilia Mashkov f7b19bd97f feat: move functions to separate files 2026-01-07 16:48:49 +03:00
Ilia Mashkov 2c4bfaba41 fix: rename file from .ts to .svelte.ts to support svelte runes 2026-01-07 14:27:25 +03:00
Ilia Mashkov 9fd98aca5d refactor(createFilterStore): move from store pattern to svelte 5 runes usage 2026-01-07 14:26:37 +03:00
Ilia Mashkov 0692711726 fix: import/export paths
Lint / Lint Code (push) Failing after 7m18s
Test / Svelte Checks (push) Failing after 7m16s
2026-01-06 21:40:28 +03:00
Ilia Mashkov 86898bf83c chore: move utils directory into shared/lib 2026-01-06 21:39:17 +03:00
Ilia Mashkov 1950cd4095 refactor(VirtualList): refactor VirtualList with modern svelte 5 patterns 2026-01-06 21:38:53 +03:00
Ilia Mashkov 7a9f7e238c refactor(createVirtualizer): refactor createVirtualizerStore with modern svelte 5 patterns 2026-01-06 21:38:18 +03:00
Ilia Mashkov 1f19e964ca fix: import/export paths 2026-01-06 21:36:29 +03:00
Ilia Mashkov eb10d58128 chore: move store creators to separate directories 2026-01-06 21:35:49 +03:00
Ilia Mashkov c78ab826a2 chore: move fetch directory into shared/lib 2026-01-06 21:35:16 +03:00
Ilia Mashkov 931a2df1ee feat: test coverage for store creators 2026-01-06 21:34:05 +03:00
Ilia Mashkov bea3f7ae7f chore: move store creators to separate directories 2026-01-06 21:33:30 +03:00
Ilia Mashkov d1f035a6ad feat(api): create api calls for google fonts and fontshare 2026-01-06 21:31:25 +03:00