diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-25 16:47:22 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-29 15:48:22 +0200 |
| commit | 8db3bead13441a5882d8689dfc6a9f09c82375d9 (patch) | |
| tree | e9d0cafa93904ffcbec3188c37961bcc16c6422d /apps/web/src/lib/stickers/providers/icons.ts | |
| parent | 39ea298a9ccba3104c549c0ca079c231981811f5 (diff) | |
| download | opencut-8db3bead13441a5882d8689dfc6a9f09c82375d9.tar.gz | |
feat: masks, properties refactor, shaders, storage migrations, and more
Diffstat (limited to 'apps/web/src/lib/stickers/providers/icons.ts')
| -rw-r--r-- | apps/web/src/lib/stickers/providers/icons.ts | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/apps/web/src/lib/stickers/providers/icons.ts b/apps/web/src/lib/stickers/providers/icons.ts deleted file mode 100644 index 06b2a4c2..00000000 --- a/apps/web/src/lib/stickers/providers/icons.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { - POPULAR_COLLECTIONS, - getIconSvgUrl, - searchIcons, -} from "@/lib/iconify-api"; -import { buildStickerId, parseStickerId } from "../sticker-id"; -import type { - StickerItem, - StickerProvider, - StickerSearchResult, -} from "../types"; - -const ICONS_PROVIDER_ID = "icons"; -const DEFAULT_SEARCH_LIMIT = 100; - -const ICONS_PREFIXES = Array.from( - new Set( - [...POPULAR_COLLECTIONS.general, ...POPULAR_COLLECTIONS.brands].map( - (collection) => collection.prefix, - ), - ), -); - -const DEFAULT_ICONS_BROWSE = [ - "mdi:home", - "mdi:star", - "mdi:heart", - "mdi:check-circle", - "mdi:account", - "mdi:camera", - "mdi:music", - "mdi:map-marker", - "mdi:calendar", - "mdi:lightning-bolt", - "mdi:cog", - "mdi:rocket", -]; - -function getDisplayNameFromIconName({ - iconName, -}: { - iconName: string; -}): string { - const [, rawName = iconName] = iconName.split(":"); - return rawName.replaceAll("-", " ").replaceAll("_", " "); -} - -function toStickerItem({ iconName }: { iconName: string }): StickerItem { - return { - id: buildStickerId({ - providerId: ICONS_PROVIDER_ID, - providerValue: iconName, - }), - provider: ICONS_PROVIDER_ID, - name: getDisplayNameFromIconName({ iconName }), - previewUrl: getIconSvgUrl(iconName, { width: 64, height: 64 }), - metadata: { iconName }, - }; -} - -function computeHasMore({ - total, - limit, - start = 0, -}: { - total: number; - limit: number; - start?: number; -}): boolean { - return start + limit < total; -} - -export const iconsProvider: StickerProvider = { - id: ICONS_PROVIDER_ID, - async search({ - query, - options, - }: { - query: string; - options?: { limit?: number }; - }): Promise<StickerSearchResult> { - const limit = options?.limit ?? DEFAULT_SEARCH_LIMIT; - const searchResult = await searchIcons(query, limit, ICONS_PREFIXES); - return { - items: searchResult.icons.map((iconName) => toStickerItem({ iconName })), - total: searchResult.total, - hasMore: computeHasMore({ - total: searchResult.total, - limit: searchResult.limit, - start: searchResult.start, - }), - }; - }, - async browse({ - options, - }: { - options?: { page?: number; limit?: number }; - }): Promise<StickerSearchResult> { - const limit = options?.limit ?? DEFAULT_ICONS_BROWSE.length; - const items = DEFAULT_ICONS_BROWSE.slice(0, limit).map((iconName) => - toStickerItem({ iconName }), - ); - return { - items, - total: items.length, - hasMore: false, - }; - }, - resolveUrl({ - stickerId, - options, - }: { - stickerId: string; - options?: { width?: number; height?: number }; - }): string { - const { providerValue } = parseStickerId({ stickerId }); - return getIconSvgUrl(providerValue, { - width: options?.width, - height: options?.height, - }); - }, -}; |
