Skip to main content
Glama
screen-parser.ts2.13 kB
import { readFileSync, existsSync } from "fs"; import { join } from "path"; import type { Token } from "./types.js"; import { parseValue } from "./types.js"; interface ScreenValue { value: string | number; comment?: string; } interface ScreenTokens { screen?: { [key: string]: ScreenValue }; } export async function parseScreenTokens(tokensPath: string): Promise<Token[]> { const tokens: Token[] = []; const sizePath = join(tokensPath, "properties", "size"); if (!existsSync(sizePath)) { console.warn(`Size tokens path not found: ${sizePath}`); return tokens; } // Look for screens.json const screensFile = join(sizePath, "screens.json"); if (existsSync(screensFile)) { try { const content = readFileSync(screensFile, "utf-8"); const data = JSON.parse(content) as ScreenTokens; const relativePath = "properties/size/screens.json"; const screenData = data.screen || data; for (const [screenName, screenDef] of Object.entries(screenData)) { if (typeof screenDef !== "object" || !("value" in screenDef)) continue; const value = screenDef.value; const parsed = parseValue(value); // Determine subcategory based on name pattern let subcategory = "breakpoint"; if (screenName.includes("-")) { // e.g., "s-medium", "xl-large" const baseName = screenName.split("-")[0]; subcategory = baseName; } tokens.push({ category: "screen", subcategory, name: screenName, path: `screen.${screenName}`, cssVariable: `--screen-${screenName}`, scssVariable: `$screen-${screenName}`, valueRaw: String(value), valueNumber: parsed.number, valueUnit: parsed.unit || "px", valueComputed: String(value), description: screenDef.comment || `Screen breakpoint ${screenName}`, platform: "all", sourceFile: relativePath, }); } } catch (error) { console.warn(`Warning: Could not parse ${screensFile}:`, error); } } return tokens; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MerzoukeMansouri/adeo-mozaic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server