Commit Graph

129 Commits

Author SHA1 Message Date
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
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
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
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
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
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
d439e97729 feature: change filterStore model 2026-01-02 21:16:07 +03:00
Ilia Mashkov
bf36f8e642 fix: style change 2026-01-02 20:42:36 +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
be267d43d8 feat(CheckboxFilter): add comprehencive documentation 2026-01-02 17:00:34 +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
a76b83ee0e fix(shadcn): fix import path 2026-01-02 16:07:12 +03:00
Ilia Mashkov
792b142c07 fix: delete unused types
Some checks failed
Lint / Lint Code (push) Failing after 7m18s
Test / Svelte Checks (push) Failing after 7m16s
2026-01-02 11:18:05 +03:00
Ilia Mashkov
6041ffd954 feat(api): create api instance 2026-01-02 11:15:20 +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
879e8cd710 fix: format indentatation inside script tag 2026-01-02 11:11:04 +03:00
Ilia Mashkov
873a020959 feature(createFilterStore): create fiter store generator 2026-01-01 15:48:45 +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
2bcded583d feature: add necessary shadcn components for CategoryFilter and Sidebar 2026-01-01 13:12:57 +03:00
Ilia Mashkov
aa951260a0 chore: migrate to FSD architecture 2026-01-01 13:09:54 +03:00