Commit Graph
93 Commits
Author SHA1 Message Date
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
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
Ilia Mashkov aa087c5c3e fix: move Item component from feature to Widget for FontMenu may be used in different places of the app
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
Ilia Mashkov ca1077df2f fix: add install-state.gz to gitignore
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
Ilia Mashkov 73419799ae feat(ComboControl): create stories for ComboControl component
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
Ilia Mashkov 4705e40f92 fix: exclude shadcn files from lefthook svetle-check
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
Ilia Mashkov 3d35f1901d feature(ComboControl):
Lint / Lint Code (push) Failing after 7m14s
Test / Svelte Checks (push) Failing after 7m20s
Lint / Lint Code (pull_request) Failing after 7m14s
Test / Svelte Checks (pull_request) Failing after 7m16s
Build / build (pull_request) Failing after 7m6s
- 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
Ilia Mashkov b0afa0145d feat(FiltersSidebar): add callback to clear all filters
Lint / Lint Code (push) Failing after 7m40s
Test / Svelte Checks (push) Failing after 7m20s
Build / build (pull_request) Failing after 7m28s
Test / Svelte Checks (pull_request) Failing after 7m20s
Lint / Lint Code (pull_request) Failing after 7m16s
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
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
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
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
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
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
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
Ilia Mashkov d78eb3037c feat(font): add constants with information about fonts characteristics
Lint / Lint Code (push) Failing after 7m23s
Test / Svelte Checks (push) Failing after 7m14s
2026-01-02 16:11:58 +03:00
Ilia Mashkov 9f8d7ad844 fix: minor changes 2026-01-02 16:11:05 +03:00
Ilia Mashkov 904b48844d feat(AppSidebar): create first version of AppSidebar widget 2026-01-02 16:10:45 +03:00
Ilia Mashkov 82d36ad156 feat: create single export file for CategoryFIlter feature 2026-01-02 16:10:17 +03:00
Ilia Mashkov c65243ed02 chore: move App and app related code to app layer 2026-01-02 16:09:03 +03:00
Ilia Mashkov 11014f36af chore: create aliases for widgets and app layers 2026-01-02 16:07:57 +03:00
Ilia Mashkov a76b83ee0e fix(shadcn): fix import path 2026-01-02 16:07:12 +03:00
Ilia Mashkov 792b142c07 fix: delete unused types
Lint / Lint Code (push) Failing after 7m18s
Test / Svelte Checks (push) Failing after 7m16s
2026-01-02 11:18:05 +03:00
Ilia Mashkov e35c1cb6dd fix: edit typescript config to avoid import errors 2026-01-02 11:17:16 +03:00
Ilia Mashkov a903554695 chore: adjust package version 2026-01-02 11:16:46 +03:00
Ilia Mashkov 6041ffd954 feat(api): create api instance 2026-01-02 11:15:20 +03:00
Ilia Mashkov 7bc0a690cb feat(CategoryFilter): create CategoryFilter component 2026-01-02 11:15:02 +03:00
Ilia Mashkov e885560c45 feat(CheckboxFilter): create CheckboxFilter component 2026-01-02 11:14:15 +03:00
Ilia Mashkov 1ecbc9b9d7 feat(createFilterStore): create reusable function that creates store object for different filters 2026-01-02 11:13:22 +03:00
Ilia Mashkov 4a283213d4 feat(shadcn): add new shadcn components 2026-01-02 11:12:29 +03:00
Ilia Mashkov fcc266f3a5 feat(font): move font models 2026-01-02 11:11:36 +03:00
Ilia Mashkov 879e8cd710 fix: format indentatation inside script tag 2026-01-02 11:11:04 +03:00
Ilia Mashkov d443f9ab85 fix(dprint): adjust config to avoid indentation errors 2026-01-02 11:08:58 +03:00
Ilia Mashkov 873a020959 feature(createFilterStore): create fiter store generator 2026-01-01 15:48:45 +03:00
Ilia Mashkov 9924fcba3a fix: import paths 2026-01-01 14:37:44 +03:00
Ilia Mashkov 1321347ac3 feature: move all shadcn related code to src/shared/shadcn 2026-01-01 14:37:18 +03:00
Ilia Mashkov 8713207afb feature: move fonts types 2026-01-01 13:15:35 +03:00
Ilia Mashkov 7d6ce78584 chore: new packages version 2026-01-01 13:15:13 +03:00
Ilia Mashkov b4d24cac4e fix: setup import for shadcn components 2026-01-01 13:13:52 +03:00
Ilia Mashkov 2bcded583d feature: add necessary shadcn components for CategoryFilter and Sidebar 2026-01-01 13:12:57 +03:00
Ilia Mashkov fdb8c38b7f feature: Create template for CategoryFilter store 2026-01-01 13:11:38 +03:00
Ilia Mashkov 3971d364bd feature: create Font entity with types for filtering 2026-01-01 13:10:36 +03:00
Ilia Mashkov aa951260a0 chore: migrate to FSD architecture 2026-01-01 13:09:54 +03:00
Ilia Mashkov d5527929f9 fix: setup declarations for files to avoid import errors
Build / build (pull_request) Failing after 16s
Lint / Lint Code (pull_request) Failing after 3s
Test / Svelte Checks (pull_request) Failing after 1s
2025-12-30 19:38:20 +03:00
Ilia Mashkov 53e3d6985b chore(ci/cd): adjust workflows ci/cd files to work with actions/cache 2025-12-30 19:37:25 +03:00
Ilia Mashkov 7c94622b95 fix(setup): fix tsconfig to work with bundler module resolution 2025-12-30 19:07:51 +03:00
Ilia Mashkov f3315be32d chore(setup): migrate from SvelteKit to Svelte 2025-12-30 18:57:58 +03:00
Ilia Mashkov 31e64f4eac feat(types): create comprehensive models for google fonts and fontshare api responses
Lint / Lint Code (push) Failing after 2s
Test / Type Check (push) Failing after 2s
Build / Build Project (pull_request) Failing after 3s
Lint / Lint Code (pull_request) Failing after 2s
Test / Type Check (pull_request) Failing after 2s
2025-12-30 16:44:16 +03:00
Ilia Mashkov b94b0e8b72 fix(setup): Fix pre-push lint and format from all files to push_files
Build / Build Project (pull_request) Failing after 3s
Lint / Lint Code (pull_request) Failing after 2s
Test / Type Check (pull_request) Failing after 2s
2025-12-30 13:26:50 +03:00
Ilia Mashkov a1f34d6942 feat(setup): add gitea actions CI/CD workflows
Lint / Lint Code (push) Failing after 49s
Test / Type Check (push) Failing after 2s
Build / Build Project (pull_request) Failing after 16s
Lint / Lint Code (pull_request) Failing after 2s
Test / Type Check (pull_request) Failing after 2s
2025-12-30 13:06:27 +03:00
Ilia Mashkov a204d29bac fix(setup): Exclude shadcn components from tsc check 2025-12-30 11:25:50 +03:00
Ilia Mashkov 5c25af3684 fix(setup): Fix lefthook config 2025-12-30 11:15:32 +03:00
Ilia Mashkov 2727eacb0e fix(setup): Fix lefthook pre-commit/pre-push config 2025-12-30 11:07:39 +03:00
Ilia Mashkov 324052ce7d feat(setup): Setup shadcn-svelte 2025-12-30 11:06:58 +03:00
Ilia Mashkov 6d70c1ed0e feat(setup): Add oxlint, dprint, vite, playwright configs 2025-12-30 11:05:13 +03:00
Ilia Mashkov cd7c4ef9a3 feat(setup): initialize SvelteKit project with TypeScript template 2025-12-26 14:26:37 +03:00
Ilia Mashkov 42852a77e1 chore: initialize git repository with workflow documentation 2025-12-26 12:41:43 +03:00