@matteoaliano/forest-ui 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sync.mjs +44 -0
- package/dist/{chunk-CQX6QWMF.mjs → chunk-3FZJFTY7.mjs} +624 -253
- package/dist/chunk-3FZJFTY7.mjs.map +1 -0
- package/dist/{index-lqHy9CQ4.d.mts → index-C7JP9vAZ.d.mts} +37 -27
- package/dist/{index-lqHy9CQ4.d.ts → index-C7JP9vAZ.d.ts} +37 -27
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +625 -253
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/dist/theme.d.mts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/theme.js +622 -250
- package/dist/theme.js.map +1 -1
- package/dist/theme.mjs +1 -1
- package/fonts/aeonik/aeonik-bold.woff +0 -0
- package/fonts/aeonik/aeonik-bold.woff2 +0 -0
- package/fonts/aeonik/aeonik-medium.woff +0 -0
- package/fonts/aeonik/aeonik-medium.woff2 +0 -0
- package/fonts/aeonik/aeonik-regular.woff +0 -0
- package/fonts/aeonik/aeonik-regular.woff2 +0 -0
- package/fonts/aeonik/aeonik-semibold.woff +0 -0
- package/fonts/aeonik/aeonik-semibold.woff2 +0 -0
- package/fonts/aeonik/aeonik.css +42 -0
- package/guidelines/FOREST_AI_GUIDELINES.md +8 -1
- package/guidelines/FOREST_DEV_GUIDELINES.md +1 -1
- package/guidelines/themes/FOREST_THEME_ALKEMY_PLUS.md +139 -0
- package/guidelines/themes/FOREST_THEME_DEFAULT.md +1 -1
- package/package.json +5 -3
- package/dist/chunk-CQX6QWMF.mjs.map +0 -1
package/bin/sync.mjs
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* Supported targets:
|
|
11
11
|
* .claude/<name>.md — Claude Code
|
|
12
12
|
* .cursor/rules/<name>.mdc — Cursor
|
|
13
|
+
* .gemini/<name>.md — Gemini CLI
|
|
14
|
+
* .antigravity/rules.md — Antigravity
|
|
13
15
|
*
|
|
14
16
|
* Guideline categories:
|
|
15
17
|
* - FOREST_AI_GUIDELINES.md — Design system components, tokens, patterns
|
|
@@ -32,12 +34,14 @@ const staticEntries = [
|
|
|
32
34
|
{
|
|
33
35
|
source: resolve(guidelinesDir, "FOREST_AI_GUIDELINES.md"),
|
|
34
36
|
claudeName: "forest-ui.md",
|
|
37
|
+
geminiName: "forest-ui.md",
|
|
35
38
|
cursorName: "forest-ui.mdc",
|
|
36
39
|
cursorDescription: "Forest UI Design System guidelines — components, tokens, and patterns",
|
|
37
40
|
},
|
|
38
41
|
{
|
|
39
42
|
source: resolve(guidelinesDir, "FOREST_DEV_GUIDELINES.md"),
|
|
40
43
|
claudeName: "forest-dev.md",
|
|
44
|
+
geminiName: "forest-dev.md",
|
|
41
45
|
cursorName: "forest-dev.mdc",
|
|
42
46
|
cursorDescription: "Forest UI development best practices",
|
|
43
47
|
},
|
|
@@ -58,6 +62,7 @@ function discoverThemeEntries() {
|
|
|
58
62
|
return {
|
|
59
63
|
source: resolve(themesDir, f),
|
|
60
64
|
claudeName: `forest-theme-${themeName}.md`,
|
|
65
|
+
geminiName: `forest-theme-${themeName}.md`,
|
|
61
66
|
cursorName: `forest-theme-${themeName}.mdc`,
|
|
62
67
|
cursorDescription: `Forest UI theme guidelines — ${themeName}`,
|
|
63
68
|
};
|
|
@@ -112,6 +117,45 @@ for (const entry of entries) {
|
|
|
112
117
|
console.log(` ⚠️ Claude Code — .claude/${entry.claudeName} skipped (${err.message})`);
|
|
113
118
|
}
|
|
114
119
|
|
|
120
|
+
// Gemini target
|
|
121
|
+
const geminiDir = resolve(projectRoot, ".gemini");
|
|
122
|
+
const geminiPath = resolve(geminiDir, entry.geminiName);
|
|
123
|
+
total++;
|
|
124
|
+
try {
|
|
125
|
+
mkdirSync(geminiDir, { recursive: true });
|
|
126
|
+
writeFileSync(geminiPath, content, "utf-8");
|
|
127
|
+
console.log(` ✅ Gemini → .gemini/${entry.geminiName}`);
|
|
128
|
+
|
|
129
|
+
// Update .gemini/GEMINI.md to import all synced files
|
|
130
|
+
const geminiMainPath = resolve(geminiDir, "GEMINI.md");
|
|
131
|
+
const geminiMainContent = entries
|
|
132
|
+
.map(e => `@${e.geminiName}`)
|
|
133
|
+
.join("\n");
|
|
134
|
+
writeFileSync(geminiMainPath, `# Forest UI Guidelines\n\n${geminiMainContent}\n`, "utf-8");
|
|
135
|
+
|
|
136
|
+
synced++;
|
|
137
|
+
} catch (err) {
|
|
138
|
+
console.log(` ⚠️ Gemini — .gemini/${entry.geminiName} skipped (${err.message})`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Antigravity target
|
|
142
|
+
const antiDir = resolve(projectRoot, ".antigravity");
|
|
143
|
+
const antiPath = resolve(antiDir, "rules.md");
|
|
144
|
+
total++;
|
|
145
|
+
try {
|
|
146
|
+
mkdirSync(antiDir, { recursive: true });
|
|
147
|
+
// Concatenate all content into rules.md or use imports if supported.
|
|
148
|
+
// Using imports to keep it clean, pointing to the .gemini folder.
|
|
149
|
+
const antiContent = entries
|
|
150
|
+
.map(e => `@../.gemini/${e.geminiName}`)
|
|
151
|
+
.join("\n");
|
|
152
|
+
writeFileSync(antiPath, `# Forest UI — Antigravity Rules\n\n${antiContent}\n`, "utf-8");
|
|
153
|
+
console.log(` ✅ Antigravity → .antigravity/rules.md`);
|
|
154
|
+
synced++;
|
|
155
|
+
} catch (err) {
|
|
156
|
+
console.log(` ⚠️ Antigravity — .antigravity/rules.md skipped (${err.message})`);
|
|
157
|
+
}
|
|
158
|
+
|
|
115
159
|
// Cursor target
|
|
116
160
|
const cursorDir = resolve(projectRoot, ".cursor", "rules");
|
|
117
161
|
const cursorPath = resolve(cursorDir, entry.cursorName);
|