@electroplix/components 0.2.0 → 0.2.1

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.
Files changed (80) hide show
  1. package/README.md +59 -132
  2. package/cli.cjs +290 -61
  3. package/dist/README.md +14 -89
  4. package/dist/index.esm.js +21 -2
  5. package/dist/src/__tests__/test-utils.d.ts.map +1 -1
  6. package/dist/src/components/blog/index.d.ts.map +1 -1
  7. package/dist/src/components/buttons/index.d.ts.map +1 -1
  8. package/dist/src/components/content/BlockquoteTestimonial.d.ts.map +1 -1
  9. package/dist/src/components/content/CalloutBox.d.ts.map +1 -1
  10. package/dist/src/components/content/HeadingSection.d.ts.map +1 -1
  11. package/dist/src/components/content/InlineCodeText.d.ts.map +1 -1
  12. package/dist/src/components/content/ParagraphBlock.d.ts.map +1 -1
  13. package/dist/src/components/content/RichMarkdown.d.ts.map +1 -1
  14. package/dist/src/components/content/index.d.ts.map +1 -1
  15. package/dist/src/components/data-display/Badge.d.ts.map +1 -1
  16. package/dist/src/components/data-display/BadgeGroup.d.ts.map +1 -1
  17. package/dist/src/components/data-display/BarChart.d.ts.map +1 -1
  18. package/dist/src/components/data-display/CalendarGrid.d.ts.map +1 -1
  19. package/dist/src/components/data-display/DataTable.d.ts.map +1 -1
  20. package/dist/src/components/data-display/LineChart.d.ts.map +1 -1
  21. package/dist/src/components/data-display/PieChart.d.ts.map +1 -1
  22. package/dist/src/components/data-display/ProgressBar.d.ts.map +1 -1
  23. package/dist/src/components/data-display/RatingStars.d.ts.map +1 -1
  24. package/dist/src/components/data-display/Sparkline.d.ts.map +1 -1
  25. package/dist/src/components/data-display/Timeline.d.ts.map +1 -1
  26. package/dist/src/components/data-display/index.d.ts.map +1 -1
  27. package/dist/src/components/ecommerce/index.d.ts.map +1 -1
  28. package/dist/src/components/forms/AddressAutocomplete.d.ts.map +1 -1
  29. package/dist/src/components/forms/Captcha.d.ts.map +1 -1
  30. package/dist/src/components/forms/ContactForm.d.ts.map +1 -1
  31. package/dist/src/components/forms/DateTimePicker.d.ts.map +1 -1
  32. package/dist/src/components/forms/FileUploader.d.ts.map +1 -1
  33. package/dist/src/components/forms/FormShell.d.ts.map +1 -1
  34. package/dist/src/components/forms/InputField.d.ts.map +1 -1
  35. package/dist/src/components/forms/MultiStepWizard.d.ts.map +1 -1
  36. package/dist/src/components/forms/NewsletterSignup.d.ts.map +1 -1
  37. package/dist/src/components/forms/RadioGroup.d.ts.map +1 -1
  38. package/dist/src/components/forms/SelectDropdown.d.ts.map +1 -1
  39. package/dist/src/components/forms/TextAreaField.d.ts.map +1 -1
  40. package/dist/src/components/forms/ToggleSwitch.d.ts.map +1 -1
  41. package/dist/src/components/forms/ValidationWrapper.d.ts.map +1 -1
  42. package/dist/src/components/forms/index.d.ts.map +1 -1
  43. package/dist/src/components/hero/CTAOverlayHero.d.ts.map +1 -1
  44. package/dist/src/components/hero/CarouselHero.d.ts.map +1 -1
  45. package/dist/src/components/hero/HeroShell.d.ts.map +1 -1
  46. package/dist/src/components/hero/PatternedHero.d.ts.map +1 -1
  47. package/dist/src/components/hero/SplitHero.d.ts.map +1 -1
  48. package/dist/src/components/hero/StaticHero.d.ts.map +1 -1
  49. package/dist/src/components/hero/VideoHeaderHero.d.ts.map +1 -1
  50. package/dist/src/components/hero/index.d.ts.map +1 -1
  51. package/dist/src/components/lists-cards/index.d.ts.map +1 -1
  52. package/dist/src/components/marketing/index.d.ts.map +1 -1
  53. package/dist/src/components/media/index.d.ts.map +1 -1
  54. package/dist/src/components/miscellaneous/index.d.ts.map +1 -1
  55. package/dist/src/components/modals/index.d.ts.map +1 -1
  56. package/dist/src/components/navigation/AnchorLinks.d.ts.map +1 -1
  57. package/dist/src/components/navigation/Breadcrumbs.d.ts.map +1 -1
  58. package/dist/src/components/navigation/LanguageSelector.d.ts.map +1 -1
  59. package/dist/src/components/navigation/MegaMenu.d.ts.map +1 -1
  60. package/dist/src/components/navigation/Pagination.d.ts.map +1 -1
  61. package/dist/src/components/navigation/PrimaryNav.d.ts.map +1 -1
  62. package/dist/src/components/navigation/SideDrawerNav.d.ts.map +1 -1
  63. package/dist/src/components/navigation/SidebarMenu.d.ts.map +1 -1
  64. package/dist/src/components/navigation/Stepper.d.ts.map +1 -1
  65. package/dist/src/components/navigation/Tabs.d.ts.map +1 -1
  66. package/dist/src/components/navigation/index.d.ts.map +1 -1
  67. package/dist/src/components/onboarding/index.d.ts.map +1 -1
  68. package/dist/src/components/search/index.d.ts.map +1 -1
  69. package/dist/src/components/site-identity/index.d.ts.map +1 -1
  70. package/dist/src/components/social/index.d.ts.map +1 -1
  71. package/dist/src/components/user-accounts/index.d.ts.map +1 -1
  72. package/dist/src/core/config.d.ts.map +1 -1
  73. package/dist/src/core/icons.d.ts.map +1 -1
  74. package/dist/src/core/index.d.ts.map +1 -1
  75. package/dist/src/core/provider.d.ts.map +1 -1
  76. package/dist/src/core/types.d.ts +1 -1
  77. package/dist/src/core/types.d.ts.map +1 -1
  78. package/dist/src/core/utils.d.ts.map +1 -1
  79. package/dist/src/index.d.ts.map +1 -1
  80. package/package.json +10 -1
package/cli.cjs CHANGED
@@ -4,15 +4,79 @@
4
4
  * @electroplix/components CLI
5
5
  *
6
6
  * Usage:
7
- * npx @electroplix/components init – scaffold electroplix.config.ts
8
- * npx @electroplix/components add <name> – show install/import instructions
9
- * npx @electroplix/components list – list all available components
7
+ * npx @electroplix/components init – scaffold config + providers
8
+ * npx @electroplix/components add <name|category> – show install/import instructions
9
+ * npx @electroplix/components list – list all available components
10
10
  */
11
11
 
12
12
  const fs = require("fs");
13
13
  const path = require("path");
14
14
 
15
- /* ── component registry ─────────────────────────────────── */
15
+ /* ══════════════════════════════════════════════════════════════════ */
16
+ /* ANSI Styling */
17
+ /* ══════════════════════════════════════════════════════════════════ */
18
+
19
+ const ESC = "\x1b[";
20
+ const R = `${ESC}0m`;
21
+
22
+ const s = {
23
+ bold: (t) => `${ESC}1m${t}${R}`,
24
+ dim: (t) => `${ESC}2m${t}${R}`,
25
+ italic: (t) => `${ESC}3m${t}${R}`,
26
+ purple: (t) => `${ESC}38;2;139;92;246m${t}${R}`,
27
+ violet: (t) => `${ESC}38;2;167;139;250m${t}${R}`,
28
+ cyan: (t) => `${ESC}38;2;34;211;238m${t}${R}`,
29
+ green: (t) => `${ESC}38;2;52;211;153m${t}${R}`,
30
+ yellow: (t) => `${ESC}38;2;251;191;36m${t}${R}`,
31
+ red: (t) => `${ESC}38;2;251;113;133m${t}${R}`,
32
+ white: (t) => `${ESC}38;2;243;244;246m${t}${R}`,
33
+ gray: (t) => `${ESC}38;2;107;114;128m${t}${R}`,
34
+ };
35
+
36
+ /* ══════════════════════════════════════════════════════════════════ */
37
+ /* Box-drawing helpers */
38
+ /* ══════════════════════════════════════════════════════════════════ */
39
+
40
+ const B = {
41
+ tl: "\u256D", tr: "\u256E", bl: "\u2570", br: "\u256F",
42
+ h: "\u2500", v: "\u2502",
43
+ tee: "\u251C", end: "\u2570",
44
+ branch: "\u251C\u2500\u2500", last: "\u2570\u2500\u2500",
45
+ pipe: "\u2502 ",
46
+ dot: "\u25CF", arrow: "\u2192", check: "\u2713", star: "\u2605",
47
+ diamond: "\u25C6", spark: "\u26A1",
48
+ };
49
+
50
+ function hr(w) { return B.h.repeat(w); }
51
+
52
+ function stripAnsi(t) { return t.replace(/\x1b\[[0-9;]*m/g, ""); }
53
+
54
+ function boxLine(l, content, r, w) {
55
+ const vis = stripAnsi(content);
56
+ const pad = Math.max(0, w - vis.length - 2);
57
+ return ` ${l}${content}${" ".repeat(pad)}${r}`;
58
+ }
59
+
60
+ /* ══════════════════════════════════════════════════════════════════ */
61
+ /* Brand banner */
62
+ /* ══════════════════════════════════════════════════════════════════ */
63
+
64
+ function printBanner() {
65
+ const W = 58;
66
+ const lines = [
67
+ "",
68
+ ` ${B.tl}${hr(W)}${B.tr}`,
69
+ boxLine(B.v, ` ${s.bold(s.purple(`${B.spark} ELECTROPLIX`))} ${s.dim(s.violet("COMPONENTS"))}`, B.v, W),
70
+ boxLine(B.v, ` ${s.gray("Parametric \u2022 Config-Driven \u2022 Zero-Dependency")}`, B.v, W),
71
+ ` ${B.bl}${hr(W)}${B.br}`,
72
+ "",
73
+ ];
74
+ console.log(lines.join("\n"));
75
+ }
76
+
77
+ /* ══════════════════════════════════════════════════════════════════ */
78
+ /* Component registry */
79
+ /* ══════════════════════════════════════════════════════════════════ */
16
80
 
17
81
  const CATEGORIES = {
18
82
  navigation: [
@@ -32,6 +96,7 @@ const CATEGORIES = {
32
96
  "FormShell", "InputField", "TextAreaField", "SelectDropdown", "RadioGroup",
33
97
  "ToggleSwitch", "DateTimePicker", "FileUploader", "ContactForm",
34
98
  "NewsletterSignup", "MultiStepWizard", "Captcha", "AddressAutocomplete",
99
+ "ValidationWrapper",
35
100
  ],
36
101
  content: [
37
102
  "BlockquoteTestimonial", "CalloutBox", "HeadingSection",
@@ -93,100 +158,270 @@ const CATEGORIES = {
93
158
  ],
94
159
  };
95
160
 
161
+ /* build lookup maps */
96
162
  const ALL_COMPONENTS = new Map();
97
163
  for (const [cat, names] of Object.entries(CATEGORIES)) {
98
164
  for (const n of names) ALL_COMPONENTS.set(n.toLowerCase(), { name: n, category: cat });
99
165
  }
100
166
 
101
- /* ── colours ────────────────────────────────────────────── */
167
+ const CATEGORY_ALIASES = new Map();
168
+ for (const cat of Object.keys(CATEGORIES)) {
169
+ CATEGORY_ALIASES.set(cat.toLowerCase(), cat);
170
+ CATEGORY_ALIASES.set(cat.replace(/-/g, "").toLowerCase(), cat);
171
+ CATEGORY_ALIASES.set(cat.replace(/-/g, " ").toLowerCase(), cat);
172
+ }
102
173
 
103
- const PURPLE = "\x1b[35m";
104
- const GREEN = "\x1b[32m";
105
- const CYAN = "\x1b[36m";
106
- const DIM = "\x1b[2m";
107
- const BOLD = "\x1b[1m";
108
- const RESET = "\x1b[0m";
174
+ const totalCount = Object.values(CATEGORIES).reduce((sum, a) => sum + a.length, 0);
109
175
 
110
- /* ── commands ───────────────────────────────────────────── */
176
+ /* ══════════════════════════════════════════════════════════════════ */
177
+ /* INIT command */
178
+ /* ══════════════════════════════════════════════════════════════════ */
111
179
 
112
180
  function init() {
181
+ printBanner();
182
+
113
183
  const configName = "electroplix.config.ts";
114
- const target = path.join(process.cwd(), configName);
184
+ const providerRel = path.join("components", "providers.tsx");
185
+ const configPath = path.join(process.cwd(), configName);
186
+ const providerDir = path.join(process.cwd(), "components");
187
+ const providerPath = path.join(providerDir, "providers.tsx");
115
188
 
116
- if (fs.existsSync(target)) {
117
- console.log(`${PURPLE}electroplix${RESET} ${configName} already exists.`);
118
- process.exit(0);
119
- }
189
+ const created = [];
190
+ const skipped = [];
120
191
 
121
- const template = `import { defineConfig } from "@electroplix/components/config";
192
+ /* ── config file ─────────────────────────────────────── */
193
+ if (fs.existsSync(configPath)) {
194
+ skipped.push(configName);
195
+ } else {
196
+ const configTemplate = `import { defineConfig } from "@electroplix/components/config";
122
197
 
123
- export default defineConfig({
124
- // Global theme overrides
198
+ const config = defineConfig({
199
+ // \u2500\u2500 Global overrides (applied to ALL categories) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
125
200
  accentColor: "#7C3AED",
126
201
  textColor: "#E5E7EB",
127
202
  bgColor: "#0b0b0c",
128
203
  borderColor: "rgba(255,255,255,0.14)",
129
204
  radius: 14,
130
- spacing: 14,
131
205
  fontFamily: "Inter, system-ui, sans-serif",
132
- headingSize: 18,
133
- bodySize: 14,
134
206
 
135
- // Optional: configure per-category themes
136
- // navigation: { accentColor: "#7C3AED" },
137
- // hero: { overlayOpacity: 0.55 },
138
- // ecommerce: { currency: "USD" },
207
+ // \u2500\u2500 Per-category overrides \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
208
+ // navigation: { sticky: true, height: 64 },
209
+ // hero: { minH: 600 },
210
+ // buttons: { bgColor: "#e94560", radius: 12 },
211
+ // forms: { inputBg: "rgba(255,255,255,0.05)" },
212
+ // ecommerce: { accentColor: "#10B981" },
139
213
  });
214
+
215
+ export default config;
216
+ `;
217
+ fs.writeFileSync(configPath, configTemplate, "utf-8");
218
+ created.push(configName);
219
+ }
220
+
221
+ /* ── providers wrapper ───────────────────────────────── */
222
+ if (fs.existsSync(providerPath)) {
223
+ skipped.push(providerRel);
224
+ } else {
225
+ if (!fs.existsSync(providerDir)) {
226
+ fs.mkdirSync(providerDir, { recursive: true });
227
+ }
228
+ const providerTemplate = `"use client";
229
+
230
+ import { ElectroplixProvider } from "@electroplix/components";
231
+ import config from "../electroplix.config";
232
+
233
+ /**
234
+ * Client-side providers wrapper.
235
+ * Import this into your root layout (which stays as a Server Component).
236
+ */
237
+ export function Providers({ children }: { children: React.ReactNode }) {
238
+ return (
239
+ <ElectroplixProvider config={config}>
240
+ {children}
241
+ </ElectroplixProvider>
242
+ );
243
+ }
140
244
  `;
245
+ fs.writeFileSync(providerPath, providerTemplate, "utf-8");
246
+ created.push(providerRel);
247
+ }
248
+
249
+ /* ── output ──────────────────────────────────────────── */
250
+ if (created.length) {
251
+ console.log(` ${s.green(B.check)} ${s.bold("Created:")}`);
252
+ for (const f of created) {
253
+ console.log(` ${s.green(B.arrow)} ${s.cyan(f)}`);
254
+ }
255
+ console.log();
256
+ }
257
+ if (skipped.length) {
258
+ console.log(` ${s.yellow("!")} ${s.bold("Already exists")} ${s.dim("(skipped):")}`);
259
+ for (const f of skipped) {
260
+ console.log(` ${s.gray(B.arrow)} ${s.gray(f)}`);
261
+ }
262
+ console.log();
263
+ }
141
264
 
142
- fs.writeFileSync(target, template, "utf-8");
143
- console.log(`\n${PURPLE}electroplix${RESET} Created ${GREEN}${configName}${RESET}\n`);
144
- console.log(`${DIM}Wrap your app with <ElectroplixProvider config={config}> to apply.${RESET}\n`);
265
+ console.log(` ${s.bold("Next steps:")}`);
266
+ console.log();
267
+ console.log(` ${s.white("1.")} Update your ${s.cyan("app/layout.tsx")}:`);
268
+ console.log();
269
+ console.log(` ${s.gray("import { Providers } from \"../components/providers\";")}`);
270
+ console.log();
271
+ console.log(` ${s.gray("export default function RootLayout({ children }) {")}`);
272
+ console.log(` ${s.gray(" return (")}`);
273
+ console.log(` ${s.gray(" <html><body>")}`);
274
+ console.log(` ${s.gray(" ")}${s.cyan("<Providers>")}${s.gray("{children}")}${s.cyan("</Providers>")}`);
275
+ console.log(` ${s.gray(" </body></html>")}`);
276
+ console.log(` ${s.gray(" );")}`);
277
+ console.log(` ${s.gray("}")}`);
278
+ console.log();
279
+ console.log(` ${s.white("2.")} Import components in ${s.cyan("\"use client\"")} pages:`);
280
+ console.log();
281
+ console.log(` ${s.gray("import { PrimaryNav, StaticHero } from \"@electroplix/components\";")}`);
282
+ console.log();
145
283
  }
146
284
 
285
+ /* ══════════════════════════════════════════════════════════════════ */
286
+ /* ADD command */
287
+ /* ══════════════════════════════════════════════════════════════════ */
288
+
147
289
  function add(name) {
290
+ printBanner();
291
+
148
292
  if (!name) {
149
- console.log(`\n${PURPLE}electroplix${RESET} Usage: ${CYAN}npx @electroplix/components add <ComponentName>${RESET}\n`);
293
+ console.log(` ${s.red("\u2717")} ${s.bold("Missing argument")}\n`);
294
+ console.log(` ${s.white("Usage:")}`);
295
+ console.log(` ${s.cyan("npx @electroplix/components add")} ${s.violet("<ComponentName>")}`);
296
+ console.log(` ${s.cyan("npx @electroplix/components add")} ${s.violet("<category>")}`);
297
+ console.log();
298
+ console.log(` ${s.dim("Examples:")}`);
299
+ console.log(` ${s.gray("npx @electroplix/components add PrimaryNav")}`);
300
+ console.log(` ${s.gray("npx @electroplix/components add navigation")}`);
301
+ console.log();
150
302
  process.exit(1);
151
303
  }
152
304
 
153
- const entry = ALL_COMPONENTS.get(name.toLowerCase());
305
+ const key = name.toLowerCase().replace(/\s+/g, "-");
306
+
307
+ /* ── try category match first ──────────────────────── */
308
+ const catMatch = CATEGORY_ALIASES.get(key);
309
+ if (catMatch) {
310
+ const comps = CATEGORIES[catMatch];
311
+ console.log(` ${s.purple(B.star)} ${s.bold(catMatch)} ${s.dim(`\u2014 ${comps.length} components`)}`);
312
+ console.log();
313
+ console.log(` ${s.white("Import all:")}`);
314
+ console.log();
315
+ console.log(` ${s.cyan("import {")}`);
316
+ for (let i = 0; i < comps.length; i++) {
317
+ const comma = i < comps.length - 1 ? "," : "";
318
+ console.log(` ${s.cyan(" " + comps[i] + comma)}`);
319
+ }
320
+ console.log(` ${s.cyan("} from \"@electroplix/components\";")}`);
321
+ console.log();
322
+
323
+ /* tree display */
324
+ console.log(` ${s.bold("Components:")}`);
325
+ console.log();
326
+ for (let i = 0; i < comps.length; i++) {
327
+ const isLast = i === comps.length - 1;
328
+ const prefix = isLast ? B.last : B.branch;
329
+ console.log(` ${s.gray(prefix)} ${s.violet(comps[i])}`);
330
+ }
331
+ console.log();
332
+ return;
333
+ }
334
+
335
+ /* ── try individual component match ────────────────── */
336
+ const entry = ALL_COMPONENTS.get(key);
154
337
  if (!entry) {
155
- console.log(`\n${PURPLE}electroplix${RESET} Component "${name}" not found.\n`);
156
- console.log(`Run ${CYAN}npx @electroplix/components list${RESET} to see all available components.\n`);
338
+ console.log(` ${s.red("\u2717")} Component or category ${s.bold("\"" + name + "\"")} not found.\n`);
339
+ console.log(` ${s.dim("Run")} ${s.cyan("npx @electroplix/components list")} ${s.dim("to see all options.")}\n`);
157
340
  process.exit(1);
158
341
  }
159
342
 
160
- console.log(`
161
- ${PURPLE}electroplix${RESET} ${BOLD}${entry.name}${RESET} ${DIM}(${entry.category})${RESET}
343
+ const W = 52;
344
+ console.log(` ${B.tl}${hr(W)}${B.tr}`);
345
+ console.log(boxLine(B.v, ` ${s.bold(s.purple(entry.name))} ${s.dim("from " + s.violet(entry.category))}`, B.v, W));
346
+ console.log(` ${B.bl}${hr(W)}${B.br}`);
347
+ console.log();
348
+ console.log(` ${s.green("1.")} ${s.white("Install")} ${s.dim("(if not already):")}`);
349
+ console.log(` ${s.cyan("npm install @electroplix/components")}`);
350
+ console.log();
351
+ console.log(` ${s.green("2.")} ${s.white("Import:")}`);
352
+ console.log(` ${s.cyan("import { " + entry.name + " } from \"@electroplix/components\";")}`);
353
+ console.log();
354
+ console.log(` ${s.green("3.")} ${s.white("Use in JSX:")}`);
355
+ console.log(` ${s.cyan("<" + entry.name + " />")}`);
356
+ console.log();
357
+ console.log(` ${s.dim("All components are config-driven. Wrap your app with")}`);
358
+ console.log(` ${s.dim("<Providers> (from")} ${s.cyan("npx @electroplix/components init")}${s.dim(") to theme globally.")}`);
359
+ console.log();
360
+ }
162
361
 
163
- ${GREEN}1.${RESET} Make sure @electroplix/components is installed:
362
+ /* ══════════════════════════════════════════════════════════════════ */
363
+ /* LIST command */
364
+ /* ══════════════════════════════════════════════════════════════════ */
164
365
 
165
- ${CYAN}npm install @electroplix/components${RESET}
366
+ function list() {
367
+ printBanner();
166
368
 
167
- ${GREEN}2.${RESET} Import the component:
369
+ console.log(` ${s.bold(s.white(totalCount + " components"))} ${s.dim("across")} ${s.bold(s.white(Object.keys(CATEGORIES).length + " categories"))}`);
370
+ console.log(` ${s.gray(hr(54))}`);
371
+ console.log();
168
372
 
169
- ${CYAN}import { ${entry.name} } from "@electroplix/components";${RESET}
373
+ const catEntries = Object.entries(CATEGORIES);
170
374
 
171
- ${GREEN}3.${RESET} Use it in your JSX:
375
+ for (let ci = 0; ci < catEntries.length; ci++) {
376
+ const [cat, names] = catEntries[ci];
377
+ const isLastCat = ci === catEntries.length - 1;
378
+ const catPrefix = isLastCat ? B.end : B.tee;
379
+ const childPipe = isLastCat ? " " : B.pipe;
172
380
 
173
- ${CYAN}<${entry.name} />${RESET}
381
+ console.log(` ${s.gray(catPrefix)} ${s.bold(s.purple(cat))} ${s.dim("(" + names.length + ")")}`);
174
382
 
175
- ${DIM}All components are config-driven. Wrap your app with
176
- <ElectroplixProvider> to customize themes globally.${RESET}
177
- `);
178
- }
383
+ for (let ni = 0; ni < names.length; ni++) {
384
+ const isLastName = ni === names.length - 1;
385
+ const namePrefix = isLastName ? B.last : B.branch;
386
+ console.log(` ${s.gray(childPipe)} ${s.gray(namePrefix)} ${s.cyan(names[ni])}`);
387
+ }
179
388
 
180
- function list() {
181
- console.log(`\n${PURPLE}@electroplix/components${RESET} – ${BOLD}${ALL_COMPONENTS.size} components${RESET}\n`);
182
- for (const [cat, names] of Object.entries(CATEGORIES)) {
183
- console.log(` ${BOLD}${cat}${RESET} ${DIM}(${names.length})${RESET}`);
184
- console.log(` ${names.map((n) => `${CYAN}${n}${RESET}`).join(", ")}`);
185
- console.log();
389
+ if (!isLastCat) console.log(` ${s.gray(B.pipe)}`);
186
390
  }
391
+
392
+ console.log();
393
+ console.log(` ${s.dim("Add a component:")} ${s.cyan("npx @electroplix/components add <name>")}`);
394
+ console.log(` ${s.dim("Add a category:")} ${s.cyan("npx @electroplix/components add <category>")}`);
395
+ console.log(` ${s.dim("Scaffold project:")} ${s.cyan("npx @electroplix/components init")}`);
396
+ console.log();
187
397
  }
188
398
 
189
- /* ── main ───────────────────────────────────────────────── */
399
+ /* ══════════════════════════════════════════════════════════════════ */
400
+ /* HELP / default */
401
+ /* ══════════════════════════════════════════════════════════════════ */
402
+
403
+ function help() {
404
+ printBanner();
405
+
406
+ console.log(` ${s.bold("Commands:")}`);
407
+ console.log();
408
+ console.log(` ${s.cyan("init")} ${s.white("Scaffold config + providers for your project")}`);
409
+ console.log(` ${s.cyan("add")} ${s.violet("<name>")} ${s.white("Show import instructions for a component")}`);
410
+ console.log(` ${s.cyan("add")} ${s.violet("<category>")} ${s.white("Show all components in a category")}`);
411
+ console.log(` ${s.cyan("list")} ${s.white("Browse all")} ${s.bold(totalCount + "")} ${s.white("components")}`);
412
+ console.log();
413
+ console.log(` ${s.bold("Examples:")}`);
414
+ console.log();
415
+ console.log(` ${s.gray("$")} ${s.white("npx @electroplix/components init")}`);
416
+ console.log(` ${s.gray("$")} ${s.white("npx @electroplix/components add PrimaryNav")}`);
417
+ console.log(` ${s.gray("$")} ${s.white("npx @electroplix/components add navigation")}`);
418
+ console.log(` ${s.gray("$")} ${s.white("npx @electroplix/components list")}`);
419
+ console.log();
420
+ }
421
+
422
+ /* ══════════════════════════════════════════════════════════════════ */
423
+ /* Main */
424
+ /* ══════════════════════════════════════════════════════════════════ */
190
425
 
191
426
  const [, , cmd, ...args] = process.argv;
192
427
 
@@ -195,17 +430,11 @@ switch (cmd) {
195
430
  init();
196
431
  break;
197
432
  case "add":
198
- add(args[0]);
433
+ add(args.join(" "));
199
434
  break;
200
435
  case "list":
201
436
  list();
202
437
  break;
203
438
  default:
204
- console.log(`
205
- ${PURPLE}@electroplix/components${RESET} CLI
206
-
207
- ${CYAN}init${RESET} Scaffold electroplix.config.ts
208
- ${CYAN}add <name>${RESET} Show import instructions for a component
209
- ${CYAN}list${RESET} List all ${ALL_COMPONENTS.size} available components
210
- `);
439
+ help();
211
440
  }
package/dist/README.md CHANGED
@@ -1,110 +1,35 @@
1
1
  # @electroplix/components
2
2
 
3
- Parametric, config-driven React UI components.
3
+ Parametric, config-driven React UI components — 153 components across 18 categories.
4
4
 
5
- ## Install
6
-
7
- ```bash
8
- npm install @electroplix/components
9
- # or
10
- pnpm add @electroplix/components
11
- ```
12
-
13
- > **Peer dependencies:** `react >=18` and `react-dom >=18`.
5
+ See the full documentation in the [root README](../README.md).
14
6
 
15
7
  ## Quick start
16
8
 
17
- ```tsx
18
- import { Navbar } from "@electroplix/components";
19
-
20
- export default function Page() {
21
- return (
22
- <Navbar
23
- logoText="MyBrand"
24
- links={[
25
- { label: "Home", href: "/" },
26
- { label: "Docs", href: "/docs" },
27
- ]}
28
- ctaText="Sign Up"
29
- />
30
- );
31
- }
9
+ ```bash
10
+ npm install @electroplix/components
11
+ npx @electroplix/components init
32
12
  ```
33
13
 
34
- ## Global configuration
35
-
36
- Create a config file and wrap your app with `ElectroplixProvider` to set
37
- style defaults for **every** component instance:
38
-
39
- ```ts
40
- // electroplix.config.ts
41
- import { defineConfig } from "@electroplix/components";
42
-
43
- export default defineConfig({
44
- navbar: {
45
- bgColor: "#22223B",
46
- textColor: "#F2E9E4",
47
- accentColor: "#C9ADA7",
48
- borderColor: "#4A4E69",
49
- fontFamily: "Roboto, sans-serif",
50
- height: 80,
51
- padding: 32,
52
- sticky: true,
53
- showSearch: true,
54
- showCTA: true,
55
- },
56
- });
57
- ```
14
+ Then update `app/layout.tsx`:
58
15
 
59
16
  ```tsx
60
- // app/layout.tsx (Next.js App Router example)
61
- import { ElectroplixProvider } from "@electroplix/components";
62
- import config from "../electroplix.config";
17
+ import { Providers } from "../components/providers";
63
18
 
64
19
  export default function RootLayout({ children }: { children: React.ReactNode }) {
65
20
  return (
66
- <html lang="en">
21
+ <html>
67
22
  <body>
68
- <ElectroplixProvider config={config}>
69
- {children}
70
- </ElectroplixProvider>
23
+ <Providers>{children}</Providers>
71
24
  </body>
72
25
  </html>
73
26
  );
74
27
  }
75
28
  ```
76
29
 
77
- Components will merge configuration in priority order:
78
- 1. **Per-instance** `config` prop (highest)
79
- 2. **Global** `ElectroplixProvider` config
80
- 3. **Built-in** defaults
81
-
82
- ## API reference
30
+ Use components in `"use client"` pages:
83
31
 
84
- ### `<Navbar>`
85
-
86
- | Prop | Type | Default | Description |
87
- |------|------|---------|-------------|
88
- | `logoText` | `string` | `"Electroplix"` | Brand text |
89
- | `logoHref` | `string` | `"/"` | Logo link target |
90
- | `links` | `NavLink[]` | `[]` | Navigation links |
91
- | `ctaText` | `string` | `"Get Started"` | CTA button label |
92
- | `ctaHref` | `string` | `"#"` | CTA button href |
93
- | `searchPlaceholder` | `string` | `"Search…"` | Search input placeholder |
94
- | `onSearch` | `(q: string) => void` | — | Search callback |
95
- | `config` | `NavbarConfig` | — | Per-instance style overrides |
96
-
97
- ### `NavbarConfig` (global or per-instance)
98
-
99
- | Key | Type | Default |
100
- |-----|------|---------|
101
- | `bgColor` | `string` | `"#0B0B0C"` |
102
- | `textColor` | `string` | `"#F3F4F6"` |
103
- | `accentColor` | `string` | `"#8B5CF6"` |
104
- | `borderColor` | `string` | `"rgba(255,255,255,0.1)"` |
105
- | `fontFamily` | `string` | `"Inter, ui-sans-serif, system-ui"` |
106
- | `height` | `number` | `72` |
107
- | `padding` | `number` | `24` |
108
- | `sticky` | `boolean` | `false` |
109
- | `showSearch` | `boolean` | `false` |
110
- | `showCTA` | `boolean` | `false` |
32
+ ```tsx
33
+ "use client";
34
+ import { PrimaryNav, StaticHero } from "@electroplix/components";
35
+ ```
package/dist/index.esm.js CHANGED
@@ -234,6 +234,12 @@ function mergeTheme(target, ...sources) {
234
234
 
235
235
  const Ctx = /*#__PURE__*/createContext(defaultConfig);
236
236
 
237
+ /** Keys that belong to BaseTheme (global overrides), not categories */
238
+ const BASE_KEYS = new Set(["bgColor", "textColor", "accentColor", "borderColor", "fontFamily", "radius", "spacing", "headingSize", "bodySize", "fontWeight", "lineHeight", "letterSpacing", "shadow"]);
239
+
240
+ /** Keys that map to per-category theme objects */
241
+ const CATEGORY_KEYS = new Set(["blog", "buttons", "content", "dataDisplay", "ecommerce", "forms", "hero", "listsCards", "marketing", "media", "miscellaneous", "modals", "navigation", "onboarding", "search", "siteIdentity", "social", "userAccounts"]);
242
+
237
243
  /**
238
244
  * Wrap your app (or any subtree) to override default theme tokens.
239
245
  *
@@ -253,9 +259,22 @@ function ElectroplixProvider({
253
259
  }) {
254
260
  const merged = useMemo(() => {
255
261
  if (!config) return defaultConfig;
262
+
263
+ // Extract root-level BaseTheme overrides (accentColor, bgColor, etc.)
264
+ const globalBase = {};
265
+ for (const key of Object.keys(config)) {
266
+ if (BASE_KEYS.has(key)) {
267
+ globalBase[key] = config[key];
268
+ }
269
+ }
270
+
271
+ // Merge each category: default → global base → per-category overrides
256
272
  const out = {};
257
- for (const key of Object.keys(defaultConfig)) {
258
- out[key] = mergeTheme(defaultConfig[key], config[key]);
273
+ for (const key of CATEGORY_KEYS) {
274
+ const catKey = key;
275
+ const defaultVal = defaultConfig[catKey];
276
+ const categoryOverrides = config[catKey];
277
+ out[key] = mergeTheme(defaultVal != null ? defaultVal : {}, globalBase, categoryOverrides);
259
278
  }
260
279
  return out;
261
280
  }, [config]);
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/__tests__/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAEtE"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/__tests__/test-utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAEtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/blog/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/components/blog/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/buttons/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/components/buttons/index.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockquoteTestimonial.d.ts","sourceRoot":"","sources":["../../../../src/components/content/BlockquoteTestimonial.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,0BAA0B;IACzC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,EAAE,EAAE,GAAe,EACnB,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAU,EACV,EAAO,EACP,EAAO,EACP,MAAW,EACX,GAAQ,EACR,KAAU,EACV,SAAc,EACd,KAAyE,EACzE,MAAsB,EACtB,IAAyB,EACzB,SAAS,EACT,WAAW,EACX,SAAc,EACd,UAAe,EACf,WAAW,GACZ,EAAE,0BAA0B,2CAmG5B"}
1
+ {"version":3,"file":"BlockquoteTestimonial.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/components/content/BlockquoteTestimonial.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,0BAA0B;IACzC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,EAAE,EAAE,GAAe,EACnB,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAU,EACV,EAAO,EACP,EAAO,EACP,MAAW,EACX,GAAQ,EACR,KAAU,EACV,SAAc,EACd,KAAyE,EACzE,MAAsB,EACtB,IAAyB,EACzB,SAAS,EACT,WAAW,EACX,SAAc,EACd,UAAe,EACf,WAAW,GACZ,EAAE,0BAA0B,2CAmG5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"CalloutBox.d.ts","sourceRoot":"","sources":["../../../../src/components/content/CalloutBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAoCD,wBAAgB,UAAU,CAAC,EACzB,EAAE,EAAE,GAAe,EACnB,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAU,EACV,EAAM,EACN,EAAM,EACN,MAAU,EACV,GAAQ,EACR,KAAU,EACV,SAAc,EACd,OAAgB,EAChB,KAAc,EACd,OAAyC,EACzC,IAAI,EACJ,SAAc,EACd,WAAgB,EAChB,MAAa,EACb,WAAmB,EACnB,SAAS,GACV,EAAE,eAAe,kDAgIjB"}
1
+ {"version":3,"file":"CalloutBox.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/components/content/CalloutBox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAoCD,wBAAgB,UAAU,CAAC,EACzB,EAAE,EAAE,GAAe,EACnB,OAAO,EACP,SAAS,EACT,UAAU,EACV,IAAU,EACV,EAAM,EACN,EAAM,EACN,MAAU,EACV,GAAQ,EACR,KAAU,EACV,SAAc,EACd,OAAgB,EAChB,KAAc,EACd,OAAyC,EACzC,IAAI,EACJ,SAAc,EACd,WAAgB,EAChB,MAAa,EACb,WAAmB,EACnB,SAAS,GACV,EAAE,eAAe,kDAgIjB"}