Ilia Mashkov
2f15148cdb
feat(VirtualList): add overscan support
2026-01-13 20:02:50 +03:00
Ilia Mashkov
a29b80efbb
feature: Create BaseFontStore class with Tanstack query logic and FontshareStore, GoogleFontsStore based on it
2026-01-13 20:02:20 +03:00
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