fix(Font): refresh types
This commit is contained in:
43
src/entities/Font/model/store/types.ts
Normal file
43
src/entities/Font/model/store/types.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/**
|
||||||
|
* ============================================================================
|
||||||
|
* UNIFIED FONT STORE TYPES
|
||||||
|
* ============================================================================
|
||||||
|
*
|
||||||
|
* Type definitions for the unified font store infrastructure.
|
||||||
|
* Provides types for filters, sorting, and fetch parameters.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type {
|
||||||
|
FontshareParams,
|
||||||
|
GoogleFontsParams,
|
||||||
|
} from '$entities/Font/api';
|
||||||
|
import type {
|
||||||
|
FontCategory,
|
||||||
|
FontProvider,
|
||||||
|
FontSubset,
|
||||||
|
} from '$entities/Font/model/types/common';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort configuration
|
||||||
|
*/
|
||||||
|
export interface FontSort {
|
||||||
|
field: 'name' | 'popularity' | 'category' | 'date';
|
||||||
|
direction: 'asc' | 'desc';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch params for unified API
|
||||||
|
*/
|
||||||
|
export interface FetchFontsParams {
|
||||||
|
providers?: FontProvider[];
|
||||||
|
categories?: FontCategory[];
|
||||||
|
subsets?: FontSubset[];
|
||||||
|
search?: string;
|
||||||
|
sort?: FontSort;
|
||||||
|
forceRefetch?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provider-specific params union
|
||||||
|
*/
|
||||||
|
export type ProviderParams = GoogleFontsParams | FontshareParams;
|
||||||
@@ -20,3 +20,15 @@ export type FontProvider = 'google' | 'fontshare';
|
|||||||
* Font subset
|
* Font subset
|
||||||
*/
|
*/
|
||||||
export type FontSubset = 'latin' | 'latin-ext' | 'cyrillic' | 'greek' | 'arabic' | 'devanagari';
|
export type FontSubset = 'latin' | 'latin-ext' | 'cyrillic' | 'greek' | 'arabic' | 'devanagari';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter state
|
||||||
|
*/
|
||||||
|
export interface FontFilters {
|
||||||
|
providers: FontProvider[];
|
||||||
|
categories: FontCategory[];
|
||||||
|
subsets: FontSubset[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export type CheckboxFilter = 'providers' | 'categories' | 'subsets';
|
||||||
|
export type FilterType = CheckboxFilter | 'searchQuery';
|
||||||
|
|||||||
@@ -3,18 +3,37 @@
|
|||||||
* FONTHARE API TYPES
|
* FONTHARE API TYPES
|
||||||
* ============================================================================
|
* ============================================================================
|
||||||
*/
|
*/
|
||||||
|
export const FONTSHARE_API_URL = 'https://api.fontshare.com/v2/fonts' as const;
|
||||||
import type { CollectionApiModel } from '$shared/types/collection';
|
|
||||||
|
|
||||||
export const FONTSHARE_API_URL = 'https://api.fontshare.com/v2' as const;
|
|
||||||
|
|
||||||
export type FontCategory = 'sans' | 'serif' | 'slab' | 'display' | 'handwritten' | 'script';
|
export type FontCategory = 'sans' | 'serif' | 'slab' | 'display' | 'handwritten' | 'script';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Model of Fontshare API response
|
* Model of Fontshare API response
|
||||||
* @see https://fontshare.com
|
* @see https://fontshare.com
|
||||||
|
*
|
||||||
|
* Fontshare API uses 'fonts' key instead of 'items' for the array
|
||||||
*/
|
*/
|
||||||
export type FontshareApiModel = CollectionApiModel<FontshareFont>;
|
export interface FontshareApiModel {
|
||||||
|
/**
|
||||||
|
* Number of items returned in current page/response
|
||||||
|
*/
|
||||||
|
count: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Total number of items available across all pages
|
||||||
|
*/
|
||||||
|
count_total: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if there are more items available beyond this page
|
||||||
|
*/
|
||||||
|
has_more: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of fonts (Fontshare uses 'fonts' key, not 'items')
|
||||||
|
*/
|
||||||
|
fonts: FontshareFont[];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Individual font metadata from Fontshare API
|
* Individual font metadata from Fontshare API
|
||||||
|
|||||||
Reference in New Issue
Block a user