Commit Graph

97 Commits

Author SHA1 Message Date
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
Ilia Mashkov
c0ccf4baff refactor(virtual): use store pattern instead of hook, fix styling
Store Pattern Migration:
- Created createVirtualizerStore using Svelte stores (writable/derived)
- Replaced useVirtualList hook with createVirtualizerStore
- Matches existing store patterns (createFilterStore, createControlStore)
- More Svelte-idiomatic than React-inspired hook pattern

Component Refactoring:
- Renamed FontVirtualList.svelte → VirtualList.svelte
- Moved component from shared/virtual/ → shared/ui/
- Updated to use store pattern instead of hook
- Removed pixel values from style tags (uses Tailwind CSS)
- Height now configurable via Tailwind classes (e.g., 'h-96', 'h-[500px]')
- Props changed from shorthand {fonts} to explicit items prop

File Changes:
- Deleted: useVirtualList.ts (replaced by store pattern)
- Deleted: FontVirtualList.svelte (renamed and moved)
- Deleted: useVirtualList.test.ts (updated to test store pattern)
- Updated: README.md with store pattern usage examples
- Updated: index.ts with migration guide
- Created: createVirtualizerStore.ts in shared/store/
- Created: VirtualList.svelte in shared/ui/
- Created: createVirtualizerStore.test.ts
- Created: barrel exports (shared/store/index.ts, shared/ui/index.ts)

Styling Improvements:
- All pixel values removed from <style> tags
- Uses Tailwind CSS for all styling
- Responsive height via Tailwind classes or props
- Only inline styles for dynamic positioning (required for virtualization)

TypeScript & Testing:
- Full TypeScript support with generics
- All 33 tests passing
- Type checking passes
- Linting passes (minor warnings only)

Breaking Changes:
- Component name: FontVirtualList → VirtualList
- Component location: $shared/virtual → $shared/ui
- Hook removed: useVirtualList → createVirtualizerStore
- Props change: {fonts} shorthand → items prop
- Import changes: $shared/virtual → $shared/ui and $shared/store

Documentation:
- Updated README.md with store pattern examples
- Added migration guide in virtual/index.ts
- Documented breaking changes and migration steps
2026-01-06 18:56:30 +03:00
Ilia Mashkov
10b7457f21 refactor(virtual): use store pattern instead of hook, fix styling
Store Pattern Migration:
- Created createVirtualizerStore using Svelte stores (writable/derived)
- Replaced useVirtualList hook with createVirtualizerStore
- Matches existing store patterns (createFilterStore, createControlStore)
- More Svelte-idiomatic than React-inspired hook pattern

Component Refactoring:
- Renamed FontVirtualList.svelte → VirtualList.svelte
- Moved component from shared/virtual/ → shared/ui/
- Updated to use store pattern instead of hook
- Removed pixel values from style tags (uses Tailwind CSS)
- Height now configurable via Tailwind classes (e.g., 'h-96', 'h-[500px]')
- Props changed from shorthand {fonts} to explicit items prop

File Changes:
- Deleted: useVirtualList.ts (replaced by store pattern)
- Deleted: FontVirtualList.svelte (renamed and moved)
- Deleted: useVirtualList.test.ts (updated to test store pattern)
- Updated: README.md with store pattern usage examples
- Updated: index.ts with migration guide
- Created: createVirtualizerStore.ts in shared/store/
- Created: VirtualList.svelte in shared/ui/
- Created: createVirtualizerStore.test.ts
- Created: barrel exports (shared/store/index.ts, shared/ui/index.ts)

Styling Improvements:
- All pixel values removed from <style> tags
- Uses Tailwind CSS for all styling
- Responsive height via Tailwind classes or props
- Only inline styles for dynamic positioning (required for virtualization)

TypeScript & Testing:
- Full TypeScript support with generics
- All 33 tests passing
- Type checking passes
- Linting passes (minor warnings only)

Breaking Changes:
- Component name: FontVirtualList → VirtualList
- Component location: $shared/virtual → $shared/ui
- Hook removed: useVirtualList → createVirtualizerStore
- Props change: {fonts} shorthand → items prop
- Import changes: $shared/virtual → $shared/ui and $shared/store

Documentation:
- Updated README.md with store pattern examples
- Added migration guide in virtual/index.ts
- Documented breaking changes and migration steps
2026-01-06 18:55:07 +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
Ilia Mashkov
9abec4210c feat(utils): add generic buildQueryString utility
- Add type-safe buildQueryString function to /utils
- Support primitives, arrays, and optional values
- Proper URL encoding for special characters
- Add comprehensive tests (25 test cases, all passing)
- Update Google Fonts API client to use shared utility
- Update Fontshare API client to use shared utility
- Export utility from /utils/index.ts

Benefits:
- DRY - Single source of truth for query string logic
- Type-safe - Proper TypeScript support with QueryParams type
- Tested - Comprehensive test coverage
- Maintainable - One place to fix bugs
2026-01-06 15:00:31 +03:00
Ilia Mashkov
29d1cc0cdc refactor(shared): rename fontCache to collectionCache
- Rename fontCache.ts to collectionCache.ts
- Rename FontCacheManager interface to CollectionCacheManager
- Make implementation fully generic (already was, just renamed interface)
- Update exports in shared/fetch/index.ts
- Fix getStats() to return derived store value for accurate statistics
- Add comprehensive test coverage for collection cache manager
  - 41 test cases covering all functionality
  - Tests for caching, deduplication, state tracking
  - Tests for statistics, reactivity, and edge cases

Closes task-1 of Phase 1 refactoring
2026-01-06 14:38:55 +03:00
7d2fe49e9c Merge pull request 'feature/vitest-setup' (#13) from feature/vitest-setup into main
Some checks failed
Build / build (push) Failing after 7m14s
Deploy Pipeline / pipeline (push) Failing after 7m8s
Lint / Lint Code (push) Failing after 7m14s
Test / Svelte Checks (push) Failing after 7m17s
Reviewed-on: #13
2026-01-06 09:24:56 +00:00
Ilia Mashkov
aa087c5c3e fix: move Item component from feature to Widget for FontMenu may be used in different places of the app
Some checks failed
Lint / Lint Code (push) Failing after 7m9s
Test / Svelte Checks (push) Failing after 7m12s
Build / build (pull_request) Failing after 7m14s
Lint / Lint Code (pull_request) Failing after 7m20s
Test / Svelte Checks (pull_request) Failing after 7m14s
2026-01-06 12:23:50 +03:00
Ilia Mashkov
943e6e77d3 feat: create tests for shared/ui components 2026-01-06 12:22:38 +03:00
Ilia Mashkov
809611cb10 feat: create tests for stores 2026-01-06 12:22:05 +03:00
Ilia Mashkov
ffad76a4c0 chore: setup vitest 2026-01-06 12:21:33 +03:00
3a3d6ec577 Merge pull request 'fix: add install-state.gz to gitignore' (#12) from fixes/gitignore into main
Some checks failed
Build / build (push) Failing after 7m18s
Deploy Pipeline / pipeline (push) Failing after 7m12s
Lint / Lint Code (push) Failing after 7m13s
Test / Svelte Checks (push) Failing after 7m7s
Reviewed-on: #12
2026-01-06 06:22:37 +00:00
Ilia Mashkov
ca1077df2f fix: add install-state.gz to gitignore
Some checks failed
Build / build (pull_request) Failing after 7m12s
Lint / Lint Code (pull_request) Failing after 7m25s
Test / Svelte Checks (pull_request) Failing after 7m18s
2026-01-06 09:21:56 +03:00
2e4a711a67 Merge pull request 'feature/setup-stotybook' (#11) from feature/setup-stotybook into main
Some checks failed
Build / build (push) Has been cancelled
Deploy Pipeline / pipeline (push) Has been cancelled
Lint / Lint Code (push) Has been cancelled
Test / Svelte Checks (push) Has been cancelled
Reviewed-on: #11
2026-01-06 06:19:35 +00:00
Ilia Mashkov
73419799ae feat(ComboControl): create stories for ComboControl component
Some checks failed
Lint / Lint Code (push) Failing after 7m10s
Test / Svelte Checks (push) Failing after 7m17s
Build / build (pull_request) Failing after 7m20s
Lint / Lint Code (pull_request) Failing after 7m16s
Test / Svelte Checks (pull_request) Failing after 7m14s
2026-01-06 09:16:21 +03:00
Ilia Mashkov
917b303240 feat: setup storybook for glyphdiff project 2026-01-05 14:43:19 +03:00
9e4667faf0 Merge pull request 'fix: exclude shadcn files from lefthook svetle-check' (#10) from fixes/exclude-shadcn-from-check into main
Some checks failed
Build / build (push) Failing after 7m16s
Deploy Pipeline / pipeline (push) Failing after 7m24s
Lint / Lint Code (push) Failing after 7m14s
Test / Svelte Checks (push) Failing after 7m19s
Reviewed-on: #10
2026-01-05 06:35:14 +00:00
Ilia Mashkov
4705e40f92 fix: exclude shadcn files from lefthook svetle-check
Some checks failed
Build / build (pull_request) Failing after 7m11s
Lint / Lint Code (pull_request) Failing after 7m26s
Test / Svelte Checks (pull_request) Failing after 7m23s
2026-01-05 09:34:01 +03:00
9cf91e0992 Merge pull request 'feature/typography-settings' (#9) from feature/typography-settings into main
Some checks failed
Build / build (push) Has been cancelled
Deploy Pipeline / pipeline (push) Has been cancelled
Lint / Lint Code (push) Has been cancelled
Test / Svelte Checks (push) Has been cancelled
Reviewed-on: #9
2026-01-05 06:29:16 +00:00
Ilia Mashkov
3d35f1901d feature(ComboControl):
Some checks failed
Lint / Lint Code (push) Failing after 7m14s
Test / Svelte Checks (push) Failing after 7m20s
Build / build (pull_request) Failing after 7m6s
Lint / Lint Code (pull_request) Failing after 7m14s
Test / Svelte Checks (pull_request) Failing after 7m16s
- create ComboControl component for typography settings (font size, font
  weight, line height)
- integrate it to TypographyMenu and integrate it to Layout
2026-01-05 09:03:31 +03:00
Ilia Mashkov
d8e5f5a0b5 fix(SetupFont): correct line height increase handler
- Fixed copy-paste error in SetupFontMenu.svelte line 43
- Changed onIncrease from fontSizeStore.increase to lineHeightStore.increase
- Line height control now correctly modifies line height instead of font size

Closes #?
2026-01-04 10:27:46 +03:00
90497fac16 Merge pull request 'feature/sidebar' (#8) from feature/sidebar into main
Some checks failed
Build / build (push) Failing after 7m10s
Deploy Pipeline / pipeline (push) Failing after 7m12s
Lint / Lint Code (push) Failing after 7m20s
Test / Svelte Checks (push) Failing after 7m18s
Reviewed-on: #8
2026-01-03 10:56:22 +00:00
Ilia Mashkov
b0afa0145d feat(FiltersSidebar): add callback to clear all filters
Some checks failed
Lint / Lint Code (push) Failing after 7m40s
Test / Svelte Checks (push) Failing after 7m20s
Build / build (pull_request) Failing after 7m28s
Lint / Lint Code (pull_request) Failing after 7m16s
Test / Svelte Checks (pull_request) Failing after 7m20s
2026-01-03 13:54:56 +03:00
Ilia Mashkov
e01a746460 feat(FilterFonts): join all the filters in one feature 2026-01-03 13:54:27 +03:00
Ilia Mashkov
53baacf05a feature(CheckboxFilter): move filter counter badge 2026-01-03 13:52:11 +03:00
Ilia Mashkov
ac41f324b1 fix(CheckboxFilter): change checkbox gaps
Some checks failed
Lint / Lint Code (push) Failing after 7m31s
Test / Svelte Checks (push) Failing after 7m21s
2026-01-03 13:06:51 +03:00
Ilia Mashkov
00aaecaa22 fix(CheckboxFilter): change checkbox gaps 2026-01-03 13:06:37 +03:00
Ilia Mashkov
bb4db09f87 chore: rename AppSidebar to FiltersSidebar 2026-01-03 13:05:16 +03:00
Ilia Mashkov
4f017c88d5 fix: delete comments from dprint config 2026-01-02 21:27:51 +03:00
Ilia Mashkov
23f3a5b803 feature: change filterStore model
Some checks failed
Lint / Lint Code (push) Failing after 7m17s
Test / Svelte Checks (push) Failing after 7m16s
2026-01-02 21:17:16 +03:00
Ilia Mashkov
d439e97729 feature: change filterStore model 2026-01-02 21:16:07 +03:00
Ilia Mashkov
1bb699ea2d chore: add documentation for svelte components 2026-01-02 21:15:40 +03:00
Ilia Mashkov
bf36f8e642 fix: style change 2026-01-02 20:42:36 +03:00
Ilia Mashkov
0742eb8c3d feat(AppSidebar): move filters and controls to separate components 2026-01-02 20:39:43 +03:00
Ilia Mashkov
109c69c1b9 fix: lint
Some checks failed
Lint / Lint Code (push) Failing after 7m13s
Test / Svelte Checks (push) Failing after 7m18s
2026-01-02 20:07:18 +03:00
Ilia Mashkov
ff665e1d26 feature: add filters for providers and font subsets
Some checks failed
Lint / Lint Code (push) Has been cancelled
Test / Svelte Checks (push) Has been cancelled
2026-01-02 20:06:35 +03:00
Ilia Mashkov
949c7c1b48 feat: delete unnecessary components 2026-01-02 20:03:20 +03:00
Ilia Mashkov
90899c0b3b fix(CategoryFilter): fix toggle behavior 2026-01-02 17:19:53 +03:00
Ilia Mashkov
4ba02b5933 fix: new dprint import format settings
Some checks failed
Lint / Lint Code (push) Failing after 7m9s
Test / Svelte Checks (push) Failing after 7m20s
2026-01-02 17:01:59 +03:00
Ilia Mashkov
3a2cc1c76b feat(dprint): setup import/export order 2026-01-02 17:00:58 +03:00
Ilia Mashkov
be267d43d8 feat(CheckboxFilter): add comprehencive documentation 2026-01-02 17:00:34 +03:00
Ilia Mashkov
14d7f0976c feat(app): add styles for better optimized transitions
Some checks failed
Lint / Lint Code (push) Failing after 7m18s
Test / Svelte Checks (push) Failing after 7m13s
2026-01-02 16:36:40 +03:00
Ilia Mashkov
98febdc24c feat(CheckboxFilter): improve CheckboxFilter animations for better UX 2026-01-02 16:36:04 +03:00
Ilia Mashkov
f8e62340e4 feat(shadcn): add Badge component 2026-01-02 16:35:11 +03:00