UNPKG

@ngzard/ui

Version:

An alternative to shadcn/ui for angular

73 lines 2.07 kB
import { access, readFile } from 'node:fs/promises'; import * as path from 'path'; import { z } from 'zod'; import { logger } from '../utils/logger.js'; async function pathExists(filePath) { try { await access(filePath); return true; } catch { return false; } } async function readJson(filePath) { const content = await readFile(filePath, 'utf-8'); return JSON.parse(content); } const configSchema = z.object({ $schema: z.string().optional(), style: z.enum(['css']).default('css'), packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).default('npm'), tailwind: z .object({ css: z.string().default('src/styles.css'), baseColor: z.string().default('slate'), cssVariables: z.boolean().default(true), }) .default({}), aliases: z .object({ components: z.string().default('src/app/shared/components'), utils: z.string().default('src/app/shared/utils'), }) .default({}), }); export const DEFAULT_CONFIG = { style: 'css', packageManager: 'npm', tailwind: { css: 'src/styles.css', baseColor: 'slate', cssVariables: true, }, aliases: { components: 'src/app/shared/components', utils: 'src/app/shared/utils', }, }; export async function getConfig(cwd) { const configPath = path.resolve(cwd, 'components.json'); if (!(await pathExists(configPath))) { return null; } try { const configJson = await readJson(configPath); return configSchema.parse(configJson); } catch (error) { logger.error('Invalid configuration file'); throw error; } } export async function resolveConfigPaths(cwd, config) { return { ...config, resolvedPaths: { tailwindCss: path.resolve(cwd, config.tailwind.css), components: path.resolve(cwd, config.aliases.components), utils: path.resolve(cwd, config.aliases.utils), }, }; } //# sourceMappingURL=config.js.map