wlmaker 1.2.0 → 1.2.2

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 (2) hide show
  1. package/dist/cli.mjs +59 -28
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -384,7 +384,8 @@ function widgetExists(componentsDir, tierPluralName, widgetName) {
384
384
 
385
385
  // src/core/widget-templates.ts
386
386
  function atomTemplateA(name, pascal) {
387
- return `import 'package:flutter/material.dart';
387
+ return `import 'package:design_system/design_system.dart';
388
+ import 'package:flutter/material.dart';
388
389
 
389
390
  class Wl${pascal} extends StatelessWidget {
390
391
  const Wl${pascal}({super.key});
@@ -398,7 +399,8 @@ class Wl${pascal} extends StatelessWidget {
398
399
  `;
399
400
  }
400
401
  function atomTemplateB(name, pascal) {
401
- return `import 'package:flutter/material.dart';
402
+ return `import 'package:design_system/design_system.dart';
403
+ import 'package:flutter/material.dart';
402
404
 
403
405
  enum Wl${pascal}Variant {
404
406
  primary,
@@ -426,7 +428,8 @@ class Wl${pascal} extends StatelessWidget {
426
428
  }
427
429
  function atomTemplateC(name, pascal) {
428
430
  return {
429
- main: `import 'package:flutter/material.dart';
431
+ main: `import 'package:design_system/design_system.dart';
432
+ import 'package:flutter/material.dart';
430
433
 
431
434
  part '${name}_sizes.dart';
432
435
 
@@ -471,7 +474,8 @@ extension _Wl${pascal}SizeExt on _Wl${pascal}Size {
471
474
  };
472
475
  }
473
476
  function moleculeTemplateA(name, pascal) {
474
- return `import 'package:flutter/material.dart';
477
+ return `import 'package:design_system/design_system.dart';
478
+ import 'package:flutter/material.dart';
475
479
 
476
480
  enum Wl${pascal}Variant {
477
481
  primary,
@@ -501,7 +505,8 @@ class _Wl${pascal}State extends State<Wl${pascal}> {
501
505
  }
502
506
  function moleculeTemplateB(name, pascal) {
503
507
  return {
504
- main: `import 'package:flutter/material.dart';
508
+ main: `import 'package:design_system/design_system.dart';
509
+ import 'package:flutter/material.dart';
505
510
 
506
511
  part '${name}_type.dart';
507
512
 
@@ -539,7 +544,8 @@ extension Wl${pascal}VariantExt on Wl${pascal}Variant {
539
544
  };
540
545
  }
541
546
  function moleculeTemplateC(name, pascal) {
542
- return `import 'package:flutter/material.dart';
547
+ return `import 'package:design_system/design_system.dart';
548
+ import 'package:flutter/material.dart';
543
549
 
544
550
  class Wl${pascal} extends StatefulWidget {
545
551
  const Wl${pascal}({super.key});
@@ -559,7 +565,8 @@ class _Wl${pascal}State extends State<Wl${pascal}> {
559
565
  }
560
566
  function organismTemplateA(name, pascal) {
561
567
  return {
562
- main: `import 'package:flutter/material.dart';
568
+ main: `import 'package:design_system/design_system.dart';
569
+ import 'package:flutter/material.dart';
563
570
 
564
571
  part '${name}_content.dart';
565
572
 
@@ -589,7 +596,8 @@ class _Wl${pascal}Content extends StatelessWidget {
589
596
  };
590
597
  }
591
598
  function organismTemplateB(name, pascal) {
592
- return `import 'package:flutter/material.dart';
599
+ return `import 'package:design_system/design_system.dart';
600
+ import 'package:flutter/material.dart';
593
601
 
594
602
  class Wl${pascal} extends StatefulWidget {
595
603
  const Wl${pascal}({super.key});
@@ -609,7 +617,8 @@ class _Wl${pascal}State extends State<Wl${pascal}> {
609
617
  }
610
618
  function templateA(name, pascal) {
611
619
  return {
612
- main: `import 'package:flutter/material.dart';
620
+ main: `import 'package:design_system/design_system.dart';
621
+ import 'package:flutter/material.dart';
613
622
 
614
623
  part '${name}_i18n.dart';
615
624
  part '${name}_body.dart';
@@ -694,7 +703,8 @@ class _Wl${pascal}Skeleton extends StatelessWidget {
694
703
  }
695
704
  function templateB(name, pascal) {
696
705
  return {
697
- main: `import 'package:flutter/material.dart';
706
+ main: `import 'package:design_system/design_system.dart';
707
+ import 'package:flutter/material.dart';
698
708
 
699
709
  import 'contracts/${name}_callbacks.dart';
700
710
  import 'contracts/${name}_config.dart';
@@ -836,14 +846,18 @@ class Wl${pascal}Data extends Equatable {
836
846
  };
837
847
  }
838
848
  function useCaseTemplate(name, pascal, tierPlural3) {
839
- return `import 'package:widgetbook/widgetbook.dart';
840
- import 'package:wl_design_system/${tierPlural3}/wl_${name}.dart';
841
-
842
- WidgetbookUseCase wl${pascal}UseCase(BuildContext context) {
843
- return WidgetbookUseCase(
844
- name: 'Wl${pascal}',
845
- builder: (context) => const Wl${pascal}(),
846
- );
849
+ return `import 'package:design_system/design_system.dart';
850
+ import 'package:flutter/material.dart';
851
+ import 'package:widgetbook/widgetbook.dart';
852
+ import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
853
+
854
+ @widgetbook.UseCase(
855
+ name: 'Wl${pascal}',
856
+ type: Wl${pascal},
857
+ path: 'wl_design_system/${tierPlural3}/wl_${name}',
858
+ )
859
+ Widget useCaseWl${pascal}(BuildContext context) {
860
+ return const Wl${pascal}();
847
861
  }
848
862
  `;
849
863
  }
@@ -1262,18 +1276,19 @@ async function blocFlow(project) {
1262
1276
  clack.outro(chalk4.red(`Error: ${error}`));
1263
1277
  }
1264
1278
  }
1265
- async function widgetFlow(project) {
1266
- const ds = detectDesignSystem(project.projectRoot);
1279
+ async function widgetFlow() {
1280
+ const projectRoot = process.cwd();
1281
+ const ds = detectDesignSystem(projectRoot);
1267
1282
  if (!ds) {
1268
1283
  clack.outro(
1269
1284
  chalk4.red(
1270
- "No design system detected. Ensure wl_design_system/ directory exists."
1285
+ "No design system detected. Run this command from a project with wl_design_system/ directory."
1271
1286
  )
1272
1287
  );
1273
1288
  return;
1274
1289
  }
1275
1290
  clack.log.info(
1276
- `Design system: ${chalk4.cyan(path8.relative(project.projectRoot, ds.componentsDir))}`
1291
+ `Design system: ${chalk4.cyan(path8.relative(projectRoot, ds.componentsDir))}`
1277
1292
  );
1278
1293
  const name = await clack.text({
1279
1294
  message: "Widget name (snake_case, without wl_ prefix)",
@@ -1322,10 +1337,22 @@ async function widgetFlow(project) {
1322
1337
  genSpinner.start("Generating widget files...");
1323
1338
  try {
1324
1339
  await createWidget(name, tier, {
1325
- projectRoot: project.projectRoot,
1340
+ projectRoot,
1326
1341
  pattern: selectedPattern
1327
1342
  });
1328
1343
  genSpinner.stop("Widget generated");
1344
+ if (ds.widgetbookDir) {
1345
+ genSpinner.start("Creating widgetbook use-case...");
1346
+ try {
1347
+ await createUseCase(name, tier, {
1348
+ projectRoot,
1349
+ buildRunner: false
1350
+ });
1351
+ genSpinner.stop("Use-case created");
1352
+ } catch {
1353
+ genSpinner.stop("Use-case skipped (may already exist)");
1354
+ }
1355
+ }
1329
1356
  clack.outro(chalk4.green("Done!"));
1330
1357
  } catch (error) {
1331
1358
  genSpinner.stop("Failed");
@@ -1418,18 +1445,22 @@ async function interactiveMode() {
1418
1445
  return;
1419
1446
  }
1420
1447
  const type = createType;
1421
- const project = await resolveProject();
1422
- if (!project) return;
1423
1448
  switch (type) {
1424
- case "bloc":
1449
+ case "bloc": {
1450
+ const project = await resolveProject();
1451
+ if (!project) return;
1425
1452
  await blocFlow(project);
1426
1453
  break;
1454
+ }
1427
1455
  case "widget":
1428
- await widgetFlow(project);
1456
+ await widgetFlow();
1429
1457
  break;
1430
- case "usecase":
1458
+ case "usecase": {
1459
+ const project = await resolveProject();
1460
+ if (!project) return;
1431
1461
  await useCaseFlow(project);
1432
1462
  break;
1463
+ }
1433
1464
  }
1434
1465
  }
1435
1466
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wlmaker",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Create Flutter BLoCs with Freezed sealed classes from the terminal",
5
5
  "keywords": [
6
6
  "flutter",