Ilia Mashkov
7fbeef68e2
feat(fonts): implement Phase 2 - Unified Font Store
...
- Implemented UnifiedFontStore extending BaseFontStore
- Added pagination support with derived metadata
- Added provider-specific shortcuts (setProvider, setCategory, etc.)
- Added pagination methods (nextPage, prevPage, goToPage)
- Added category getter shortcuts (sansSerifFonts, serifFonts, etc.)
- Updated store exports to include unified store
- Fixed typo in googleFontsStore.svelte.ts (createGoogleFontsStore)
Phase 2/7: Proxy API Integration for GlyphDiff
2026-01-29 14:38:07 +03:00
Ilia Mashkov
7078cb6f8c
feat(fonts): implement Phase 1 - Create Proxy API Client
...
- Created src/entities/Font/api/proxy/proxyFonts.ts
- Implemented fetchProxyFonts function with full pagination support
- Implemented fetchProxyFontById convenience function
- Added TypeScript interfaces: ProxyFontsParams, ProxyFontsResponse
- Added comprehensive JSDoc documentation
- Updated src/entities/Font/api/index.ts to export proxy API
Phase 1/7: Proxy API Integration for GlyphDiff
2026-01-29 14:33:12 +03:00
Ilia Mashkov
59b0d9c620
feat(FontListItem): refactor component to enhance UX with animations and move away from checkboxes to avoid scroll problems
2026-01-22 15:41:55 +03:00
Ilia Mashkov
e4970e43ba
chore: switch to use of svelte native prefersReducedMotion media
2026-01-22 15:33:38 +03:00
Ilia Mashkov
d4d2d68d9a
feat(appliedFontsStore): incorporate implemented font weight logic
2026-01-20 14:21:07 +03:00
Ilia Mashkov
55a560b785
feat(appliedFontsStore): implement the logic to update font link when font weight changes
2026-01-20 14:17:41 +03:00
Ilia Mashkov
1bd2a4f2f8
fix(fontshareStore): add normalization to reduce amount of requests
2026-01-20 09:36:39 +03:00
Ilia Mashkov
746a377038
feat(FontVirtualList): add font pairs support
2026-01-20 09:35:44 +03:00
Ilia Mashkov
8591985f62
feat(FontApplicator): implement an appearance animation based on existed intersection observer logic and add a reduced motion check
Workflow / build (pull_request) Successful in 50s
2026-01-18 16:56:53 +03:00
Ilia Mashkov
9cbf4fdc48
doc: comments for codebase and updated documentation
2026-01-18 15:55:07 +03:00
Ilia Mashkov
ee074036f6
chore: add import shortcuts
2026-01-18 15:00:26 +03:00
Ilia Mashkov
28a71452d1
fix(FontListItem): edit FontListItem to work with selectedFontsStore
2026-01-18 14:59: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
ad18a19c4b
chore(FontSampler): delete unused prop
2026-01-18 14:47:31 +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
4d04761d88
feat(appliedFontsStore): create Applied Fonts Manager to manage fonts download
2026-01-18 12:46:11 +03:00
Ilia Mashkov
71d320535e
feat(FontView): integrate FontView into FontList
2026-01-17 09:21:34 +03:00
Ilia Mashkov
4dbf91f600
chore(FontList): Move documentation and remove default height
2026-01-16 17:44:07 +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
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
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
76172aaa6b
fix: minor changes
2026-01-13 20:09:30 +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
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
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
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
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
e1af950442
chore: create index files for better import/export api
2026-01-09 16:14:38 +03:00
Ilia Mashkov
09111a7c61
fix: import/export
2026-01-09 16:13:02 +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
1f19e964ca
fix: import/export paths
2026-01-06 21:36:29 +03:00
Ilia Mashkov
d1f035a6ad
feat(api): create api calls for google fonts and fontshare
2026-01-06 21:31:25 +03:00
Ilia Mashkov
2c666646cb
style(font): fix lint warnings - remove unused imports and variables
...
- Removed unused FontFeatures, FontMetadata, FontProvider from normalize.ts imports
- Removed unused UnifiedFont from normalize.test.ts imports
- Removed unused FontSubset from store.ts imports
- Changed unused queryClient variables to void calls to suppress warnings
2026-01-06 15:24:34 +03:00
Ilia Mashkov
be14a62e83
refactor(font): split types into separate files for better maintainability
2026-01-06 15:23:08 +03:00
Ilia Mashkov
db814f0b93
fix(types): resolve import path and type issues after consolidation
...
- Added GoogleFontItem type alias for backward compatibility
- Updated normalize.ts to properly type Record<string, string> values
- Fixed import paths in Font index.ts (added subdirectory paths)
- Removed unused Readable import from store
- Removed type exports from normalize and API index files
- Updated stores index.ts to import types from parent types.ts
- All tests passing (129 tests)
All imports now use centralized types from model/types.ts:
- API clients re-export types for backward compatibility
- Normalize module imports types and exports functions
- Store module imports types and exports factory
- Main index.ts exports all types from model/types.ts
2026-01-06 15:11:16 +03:00
Ilia Mashkov
9f8b840e7a
refactor(font): consolidate all types into single types.ts file
...
- Created unified model/types.ts with all type definitions
- Consolidated domain types (FontCategory, FontProvider, FontSubset)
- Consolidated Google Fonts API types (FontItem, GoogleFontsApiModel, etc.)
- Consolidated Fontshare API types (FontshareFont, FontshareStyle, etc.)
- Consolidated normalization types (UnifiedFont, FontStyleUrls, etc.)
- Consolidated store types (FontCollectionStore, FontCollectionFilters, etc.)
- Removed duplicate type files (font.ts, google_fonts.ts, fontshare_fonts.ts)
- Updated all imports to use consolidated types
- Updated normalize module to import from /Font
- Updated API clients to re-export types for backward compatibility
- Updated store to use centralized types
- Updated Font index.ts to export all types
Benefits:
- Centralized type definitions in single location
- Cleaner imports (single import from /Font)
- Better code organization with clear sections
- Follows FSD principles (types in model layer)
- No duplicate type definitions
2026-01-06 15:06:38 +03:00