Ilia Mashkov
7ca45c2e63
chore: add import shortcuts
2026-01-18 15:53:16 +03:00
Ilia Mashkov
20f6e193f2
chore: minor changes
2026-01-18 15:01:19 +03:00
Ilia Mashkov
c04518300b
chore: remove unused code
2026-01-18 15:00:54 +03:00
Ilia Mashkov
ee074036f6
chore: add import shortcuts
2026-01-18 15:00:26 +03:00
Ilia Mashkov
ba883ef9a8
fix(motion): edit MotionPreference to avoid errors
2026-01-18 15:00:07 +03:00
Ilia Mashkov
28a71452d1
fix(FontListItem): edit FontListItem to work with selectedFontsStore
2026-01-18 14:59:00 +03:00
Ilia Mashkov
b7ce100407
fix(FontSearch): edit component to render suggested fonts
2026-01-18 14:58:05 +03:00
Ilia Mashkov
96b26fb055
feat(FontDisplay): create a FontDisplay component to show selected font samples
2026-01-18 14:57:15 +03:00
Ilia Mashkov
5ef8d609ab
feat(SuggestedFonts): create a component for Suggested Virtualized Font List
2026-01-18 14:56:25 +03:00
Ilia Mashkov
f457e5116f
feat(displayedFontsStore): create store to manage displayed fonts sample and its content
2026-01-18 14:55:00 +03:00
Ilia Mashkov
e0e0d929bb
chore: add import shortcuts
2026-01-18 14:53:14 +03:00
Ilia Mashkov
37ab7f795e
feat(selectedFontsStore): create selectedFontsStore to manage selected fonts collection
2026-01-18 14:52:12 +03:00
Ilia Mashkov
af2ef77c30
feat(FontSampler): edit FontSampler to applt font-family through FontApplicator component
2026-01-18 14:48:36 +03:00
Ilia Mashkov
ad18a19c4b
chore(FontSampler): delete unused prop
2026-01-18 14:47:31 +03:00
Ilia Mashkov
ef259c6fce
chore: add import shortcuts
2026-01-18 14:39:38 +03:00
Ilia Mashkov
5d23a2af55
feat(EntityStore): create a helper for creation of an Entity Store to store and operate over values that have ids
2026-01-18 14:38:58 +03:00
Ilia Mashkov
df8eca6ef2
feat(splitArray): create a util to split an array based on a boolean resulting callback
2026-01-18 14:37:23 +03:00
Ilia Mashkov
7e62acce49
fix(ContentEditable): change logic to support controlled state
2026-01-18 14:35:35 +03:00
Ilia Mashkov
86e7b2c1ec
feat(FontListItem): create FontListItem component that visualize selection of a certain font
2026-01-18 12:59:12 +03:00
Ilia Mashkov
da0612942c
feat(FontApplicator): create FontApplicator component that register certain font and applies it to the children
2026-01-18 12:57:56 +03:00
Ilia Mashkov
0444f8c114
chore(FontVirtualList): transform FontList into reusable FontVirtualList component with appliedFontsManager support
2026-01-18 12:55:25 +03:00
Ilia Mashkov
6b4e0dbbd0
feat(ContentEditable): create ContentEditable shared component that displays text and allows editing
2026-01-18 12:51:55 +03:00
Ilia Mashkov
7389ec779d
feat:(VirtualList) add onVisibleItemsChange prop that triggers when visibleItems list changes
2026-01-18 12:50:17 +03:00
Ilia Mashkov
4d04761d88
feat(appliedFontsStore): create Applied Fonts Manager to manage fonts download
2026-01-18 12:46:11 +03:00
Ilia Mashkov
32da012b26
feat(MotionPreference): Create common logic to store information about prefers-reduced-motion
2026-01-17 14:29:10 +03:00
Ilia Mashkov
71d320535e
feat(FontView): integrate FontView into FontList
2026-01-17 09:21:34 +03:00
Ilia Mashkov
71c068bad2
feat(FontView): create a FontView component that adds a link to the head tag and applies font-family to the children
2026-01-17 09:20:58 +03:00
Ilia Mashkov
247b683c87
chore(FontSearch): documentation change
2026-01-17 09:19:47 +03:00
Ilia Mashkov
8c0c91deb7
feat(createVirtualizer): enhance logic with binary search and requestAnimationFrame
2026-01-16 17:48:33 +03:00
Ilia Mashkov
261c19db69
fix(SearchBar): change input behavior to turn off popover toggle on click on trigger and keep it open. Add doc
2026-01-16 17:47:05 +03:00
Ilia Mashkov
a85b3cf217
fix(VirtualList): change styles to show the correct scroll instantly
2026-01-16 17:46:06 +03:00
Ilia Mashkov
f02b19eff5
chore(createFilter): change format
2026-01-16 17:45:11 +03:00
Ilia Mashkov
4dbf91f600
chore(FontList): Move documentation and remove default height
2026-01-16 17:44:07 +03:00
Ilia Mashkov
0daf0bf3bf
chore: minor vitest adjustment
2026-01-16 14:00:35 +03:00
Ilia Mashkov
14f9b87680
test(createDebouncedState): create test coverage for createDebouncedState
2026-01-16 14:00:20 +03:00
Ilia Mashkov
3cd9b36411
fix(createFilter): remove dirived from selectedProperties compute
2026-01-16 13:59:39 +03:00
Ilia Mashkov
4c8b5764b3
chore: delete unused code
2026-01-16 13:58:50 +03:00
Ilia Mashkov
62ae0799cc
chore(lib): add export
2026-01-16 13:15:10 +03:00
Ilia Mashkov
53c71a437f
chore: simplify scripts
2026-01-16 13:14:54 +03:00
Ilia Mashkov
1976affdff
fix(tsconfig): add noEmit param to awoid errors
2026-01-16 13:14:33 +03:00
Ilia Mashkov
f3de6c49a3
chore: delete unused code
2026-01-16 12:41:30 +03:00
Ilia Mashkov
42e941083a
doc(createDeboucnedState): add JSDoc for createDebouncedState
2026-01-16 12:38:57 +03:00
Ilia Mashkov
86adec01a0
doc(createVirtualizer): add JSDoc for createVirtualizer
2026-01-16 12:27:14 +03:00
Ilia Mashkov
b0812ff606
chore: delete unused code
2026-01-16 12:24:30 +03:00
Ilia Mashkov
deaf38f8ec
fix(Page): remove unused code and misleading comments
2026-01-16 10:24:06 +03:00
Ilia Mashkov
56e6e450e8
fix(createVirtualizer): add correct type to offset array
Workflow / build (pull_request) Successful in 49s
2026-01-15 20:10:44 +03:00
Ilia Mashkov
824581551f
fix(createVirtualizer): change the way array is created
2026-01-15 20:07:58 +03:00
Ilia Mashkov
f97904f165
fix: minor changes
2026-01-15 20:06:51 +03:00
Ilia Mashkov
6129ad61f4
fix: minor changes
2026-01-15 20:05:55 +03:00
Ilia Mashkov
462abdd2bc
chore: add README
2026-01-15 20:05:37 +03:00
Ilia Mashkov
429a9a0877
feature(VirtualList): remove tanstack virtual list solution, add self written one
2026-01-15 13:33:59 +03:00
Ilia Mashkov
925d2eec3e
chore(workflow): delete comments
2026-01-14 16:06:02 +03:00
Ilia Mashkov
211ed073e6
chore: specify yarn version
Workflow / build (push) Successful in 44s
2026-01-14 16:02:45 +03:00
Ilia Mashkov
976672ce5e
fix(workflow): turn cache on
2026-01-14 16:02:24 +03:00
Ilia Mashkov
83397f3786
fix(workflow): remove cache
Workflow / build (push) Successful in 38s
2026-01-14 15:54:19 +03:00
Ilia Mashkov
a72c0e8136
fix(workflow): remove cache
Workflow / build (push) Failing after 40s
2026-01-14 15:47:56 +03:00
Ilia Mashkov
61dd62af2d
feat(workflow): simplify workflow
Workflow / build (push) Failing after 46s
2026-01-14 15:44:30 +03:00
Ilia Mashkov
147ddd226a
feat(workflow): simplify workflow
Workflow / build (push) Failing after 44s
2026-01-14 15:32:24 +03:00
Ilia Mashkov
c6b18f6dd3
fix: svelte check
Build / build (push) Failing after 37s
Deploy Pipeline / pipeline (push) Failing after 34s
Lint / Lint Code (push) Failing after 28s
Test / Svelte Checks (push) Failing after 35s
2026-01-14 15:27:41 +03:00
Ilia Mashkov
7678ab271d
fix: lint warnings
Build / build (pull_request) Failing after 49s
Lint / Lint Code (pull_request) Failing after 38s
Test / Svelte Checks (pull_request) Failing after 44s
2026-01-14 15:14:58 +03:00
Ilia Mashkov
f730dbc782
fix(workflow): change scripts
Lint / Lint Code (push) Failing after 30s
Test / Svelte Checks (push) Failing after 35s
Build / build (pull_request) Failing after 1m28s
Lint / Lint Code (pull_request) Failing after 39s
Test / Svelte Checks (pull_request) Failing after 44s
2026-01-14 12:58:52 +03:00
Ilia Mashkov
8b704f1f82
fix(workflow): change the yarn install flags
Test / Svelte Checks (push) Failing after 33s
Lint / Lint Code (push) Failing after 29s
2026-01-14 12:40:56 +03:00
Ilia Mashkov
36ed19e195
fix(workflow): yarn cache path
2026-01-14 12:39:30 +03:00
Ilia Mashkov
b209e051e5
fix(workflow): yarn cache path
Lint / Lint Code (push) Failing after 11s
Test / Svelte Checks (push) Failing after 11s
2026-01-14 12:34:10 +03:00
Ilia Mashkov
f49e116408
fix(workflow): change node version
Test / Svelte Checks (push) Failing after 11s
Lint / Lint Code (push) Failing after 18s
2026-01-14 12:25:14 +03:00
Ilia Mashkov
8d1d1cd60f
chore: import/export changes due to code move
Test / Svelte Checks (push) Failing after 5s
Lint / Lint Code (push) Failing after 1m48s
2026-01-13 20:11:58 +03:00
Ilia Mashkov
fb5c15ec32
fix: minor changes
2026-01-13 20:11:18 +03:00
Ilia Mashkov
955cc66916
feat: new version of unifiedFontStore
2026-01-13 20:10:44 +03:00
Ilia Mashkov
a9cdd15787
feat(GetFonts): separated types for filters
2026-01-13 20:10:20 +03:00
Ilia Mashkov
76172aaa6b
fix: minor changes
2026-01-13 20:09:30 +03:00
Ilia Mashkov
7146328982
feat(mapManagerToParams): create mapper to transform filter values to query param values
2026-01-13 20:08:46 +03:00
Ilia Mashkov
52ecb9e304
fix: remove searchQuery from FilterModel
2026-01-13 20:07:42 +03:00
Ilia Mashkov
30cb9ada1a
fix(Font): refresh types
2026-01-13 20:06:58 +03:00
Ilia Mashkov
4eeb43fa34
chore: delete unused code
2026-01-13 20:05:33 +03:00
Ilia Mashkov
ad6ba4f0a0
feat: add query provider to App.svelte
2026-01-13 20:04:39 +03:00
Ilia Mashkov
170c8546d3
chore: import/export changes due to code move
2026-01-13 20:04:02 +03:00
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