Packages
corex
0.1.0
0.1.2
0.1.1
0.1.0
0.1.0-rc.1
0.1.0-rc.0
0.1.0-beta.5
0.1.0-beta.4
0.1.0-beta.3
0.1.0-beta.2
0.1.0-beta.1
0.1.0-alpha.33
0.1.0-alpha.32
0.1.0-alpha.31
0.1.0-alpha.30
0.1.0-alpha.29
0.1.0-alpha.28
0.1.0-alpha.27
0.1.0-alpha.26
0.1.0-alpha.25
0.1.0-alpha.24
0.1.0-alpha.23
0.1.0-alpha.22
0.1.0-alpha.21
0.1.0-alpha.20
0.1.0-alpha.19
0.1.0-alpha.18
0.1.0-alpha.17
0.1.0-alpha.16
0.1.0-alpha.15
0.1.0-alpha.14
0.1.0-alpha.13
0.1.0-alpha.12
0.1.0-alpha.11
0.1.0-alpha.10
0.1.0-alpha.9
0.1.0-alpha.8
0.1.0-alpha.7
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
Accessible and unstyled UI components library written in Elixir and TypeScript that integrates Zag.js state machines into the Phoenix Framework.
Current section
Files
Jump to
Current section
Files
priv/design/design/transform.mjs
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'url';
export const SingleToMulti = async () => {
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const tokensBasePath = path.resolve(__dirname, "./");
const single_token = path.resolve(tokensBasePath, 'tokens/tokens.json');
const multi_token_path = path.resolve(tokensBasePath, 'tokens/multi');
try {
const tokens = JSON.parse(await fs.promises.readFile(single_token, 'utf8'));
const metadata = tokens.$metadata || {};
const themes = tokens.$themes || {};
delete tokens.$metadata;
delete tokens.$themes;
const writeTokensToFile = async (filePath, tokenData) => {
const dirName = path.dirname(filePath);
await fs.promises.mkdir(dirName, { recursive: true });
await fs.promises.writeFile(filePath, JSON.stringify(tokenData, null, 2), 'utf8');
console.log(`✔︎ ${path.relative(process.cwd(), filePath)}`);
};
await writeTokensToFile(path.join(multi_token_path, '$metadata.json'), metadata);
await writeTokensToFile(path.join(multi_token_path, '$themes.json'), themes);
if (metadata.tokenSetOrder) {
for (const tokenSet of metadata.tokenSetOrder) {
if (tokens[tokenSet]) {
const targetPath = path.join(multi_token_path, ...tokenSet.split('/')) + '.json';
await writeTokensToFile(targetPath, tokens[tokenSet]);
}
}
}
console.log('✅ Tokens transformed successfully');
return { success: true };
} catch (error) {
console.error('❌ Token transformation failed:', error.message);
return { success: false, error };
}
};