@betty-blocks/cli 25.58.5 → 25.59.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.
@@ -27,45 +27,96 @@ const name = args[0];
27
27
  // eslint-disable-next-line no-void
28
28
  void (() => __awaiter(void 0, void 0, void 0, function* () {
29
29
  yield checkUpdateAvailable_1.checkUpdateAvailableCLI();
30
- if (name.includes(' ')) {
31
- throw new Error(chalk_1.default.red(`\nName cannot contain spaces\n`));
30
+ if (!/^[a-z][a-z0-9]*$/i.test(name)) {
31
+ throw Error(chalk_1.default.red(`\nName cannot contain special characters or spaces\n`));
32
32
  }
33
- if (yield fs_extra_1.pathExists(`src/prefabs/${name}.js`)) {
34
- throw new Error(chalk_1.default.red(`\nPrefab ${name} already exists\n`));
33
+ if (yield fs_extra_1.pathExists(`src/prefabs/${name}.tsx`)) {
34
+ throw Error(chalk_1.default.red(`\nPrefab ${name} already exists\n`));
35
35
  }
36
36
  if (yield fs_extra_1.pathExists(`src/components/${name}.js`)) {
37
- throw new Error(chalk_1.default.red(`\nComponent ${name} already exists\n`));
37
+ throw Error(chalk_1.default.red(`\nComponent ${name} already exists\n`));
38
38
  }
39
- const prefab = `
40
- (() => ({
41
- name: '${name}',
42
- icon: 'TitleIcon',
39
+ const capitalisedName = name.charAt(0).toUpperCase() + name.slice(1);
40
+ const prefab = `import { prefab, Icon } from '@betty-blocks/component-sdk';
41
+
42
+ import { ${capitalisedName} } from './structures/${capitalisedName}';
43
+
44
+ const attributes = {
43
45
  category: 'CONTENT',
44
- structure: [
45
- {
46
- name: '${name}',
47
- options: [],
48
- descendants: [],
49
- },
50
- ],
51
- }))();
52
- `;
53
- const component = `
54
- (() => ({
55
- name: '${name}',
56
- type: 'ROW',
46
+ icon: Icon.TitleIcon,
47
+ keywords: [''],
48
+ };
49
+
50
+ export default prefab('${capitalisedName}', attributes, undefined, [${capitalisedName}({})]);
51
+ `;
52
+ const structureIndex = `import { component, PrefabReference } from '@betty-blocks/component-sdk';
53
+ import { Configuration } from '../Configuration';
54
+ import {
55
+ ${name}Options as defaultOptions,
56
+ categories as defaultCategories,
57
+ } from './options';
58
+
59
+ export const ${capitalisedName} = (
60
+ config: Configuration,
61
+ descendants: PrefabReference[] = [],
62
+ ) => {
63
+ const options = { ...(config.options || defaultOptions) };
64
+ const style = { ...config.style };
65
+ const ref = config.ref ? { ...config.ref } : undefined;
66
+ const label = config.label ? config.label : undefined;
67
+ const optionCategories = config.optionCategories
68
+ ? { ...config.optionCategories }
69
+ : defaultCategories;
70
+
71
+ return component(
72
+ '${capitalisedName}',
73
+ { options, ref, style, label, optionCategories },
74
+ descendants,
75
+ );
76
+ };
77
+ `;
78
+ const optionsIndex = `import { variable } from '@betty-blocks/component-sdk';
79
+ import { advanced } from '../../advanced';
80
+
81
+ export const categories = [
82
+ {
83
+ label: 'Advanced Options',
84
+ expanded: false,
85
+ members: ['dataComponentAttribute'],
86
+ },
87
+ ];
88
+
89
+ export const ${name}Options = {
90
+ content: variable('Content', {
91
+ value: ['Hello world'],
92
+ configuration: { as: 'MULTILINE' },
93
+ }),
94
+
95
+ ...advanced('${capitalisedName}'),
96
+ };
97
+ `;
98
+ const component = `(() => ({
99
+ name: '${capitalisedName}',
100
+ type: 'CONTENT_COMPONENT',
57
101
  allowedTypes: [],
58
102
  orientation: 'HORIZONTAL',
59
- jsx: <div className={classes.root}>Hello World</div>,
103
+ jsx: (() => {
104
+ const { useText } = B;
105
+ const { content } = options;
106
+ return <div className={classes.root}>{useText(content)}</div>;
107
+ })(),
60
108
  styles: () => () => ({
61
109
  root: {},
62
110
  }),
63
111
  }))();
64
- `;
112
+ `;
65
113
  yield Promise.all([
66
- fs_extra_1.outputFile(`src/prefabs/${name}.js`, prefab.trim()),
67
- fs_extra_1.outputFile(`src/components/${name}.js`, component.trim()),
114
+ fs_extra_1.outputFile(`src/prefabs/structures/${capitalisedName}/index.ts`, structureIndex),
115
+ fs_extra_1.outputFile(`src/prefabs/structures/${capitalisedName}/options/index.ts`, optionsIndex),
116
+ fs_extra_1.outputFile(`src/prefabs/${name}.tsx`, prefab),
117
+ fs_extra_1.outputFile(`src/components/${name}.js`, component),
68
118
  console.log(chalk_1.default.green('The component has been generated')),
119
+ console.log(chalk_1.default.blueBright("\nIf you would like to use the component in another prefab, \nwe recommend adding the import and export of the component structure to 'src/prefabs/structures/index.ts' for a clean import from the same file")),
69
120
  ]);
70
121
  }))();
71
122
  //# sourceMappingURL=bb-components-generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bb-components-generate.js","sourceRoot":"","sources":["../src/bb-components-generate.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;;;;;;;;;;;AAEtB,0DAAqD;AACrD,kDAA0B;AAC1B,uCAAkD;AAElD,uEAAuE;AACvE,uBAAuB;AAEvB,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,EAAE,IAAI,EAAE,GAAoB,mBAAO,CAAC;AAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;IACrB,mBAAO,CAAC,IAAI,EAAE,CAAC;CAChB;AAED,MAAM,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,mCAAmC;AACnC,KAAK,CAAC,GAAwB,EAAE;IAC9B,MAAM,8CAAuB,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;KAC9D;IAED,IAAI,MAAM,qBAAU,CAAC,eAAe,IAAI,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,CAAC,CAAC,CAAC;KACjE;IAED,IAAI,MAAM,qBAAU,CAAC,kBAAkB,IAAI,KAAK,CAAC,EAAE;QACjD,MAAM,IAAI,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC;KACpE;IAED,MAAM,MAAM,GAAG;;WAEN,IAAI;;;;;eAKA,IAAI;;;;;;GAMhB,CAAC;IAEF,MAAM,SAAS,GAAG;;WAET,IAAI;;;;;;;;;GASZ,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,qBAAU,CAAC,eAAe,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,qBAAU,CAAC,kBAAkB,IAAI,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC,CAAA,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"bb-components-generate.js","sourceRoot":"","sources":["../src/bb-components-generate.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;;;;;;;;;;;AAEtB,0DAAqD;AACrD,kDAA0B;AAC1B,uCAAkD;AAElD,uEAAuE;AACvE,uBAAuB;AAEvB,mBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3E,MAAM,EAAE,IAAI,EAAE,GAAoB,mBAAO,CAAC;AAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;IACrB,mBAAO,CAAC,IAAI,EAAE,CAAC;CAChB;AAED,MAAM,IAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,mCAAmC;AACnC,KAAK,CAAC,GAAwB,EAAE;IAC9B,MAAM,8CAAuB,EAAE,CAAC;IAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,KAAK,CACT,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE,CAAC;KACH;IAED,IAAI,MAAM,qBAAU,CAAC,eAAe,IAAI,MAAM,CAAC,EAAE;QAC/C,MAAM,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,IAAI,mBAAmB,CAAC,CAAC,CAAC;KAC7D;IAED,IAAI,MAAM,qBAAU,CAAC,kBAAkB,IAAI,KAAK,CAAC,EAAE;QACjD,MAAM,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC;KAChE;IACD,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG;;WAEN,eAAe,yBAAyB,eAAe;;;;;;;;yBAQzC,eAAe,8BAA8B,eAAe;CACpF,CAAC;IAEA,MAAM,cAAc,GAAG;;;IAGrB,IAAI;;;;eAIO,eAAe;;;;;;;;;;;;;OAavB,eAAe;;;;;CAKrB,CAAC;IAEA,MAAM,YAAY,GAAG;;;;;;;;;;;eAWR,IAAI;;;;;;iBAMF,eAAe;;CAE/B,CAAC;IAEA,MAAM,SAAS,GAAG;WACT,eAAe;;;;;;;;;;;;;CAazB,CAAC;IAEA,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,qBAAU,CACR,0BAA0B,eAAe,WAAW,EACpD,cAAc,CACf;QACD,qBAAU,CACR,0BAA0B,eAAe,mBAAmB,EAC5D,YAAY,CACb;QACD,qBAAU,CAAC,eAAe,IAAI,MAAM,EAAE,MAAM,CAAC;QAC7C,qBAAU,CAAC,kBAAkB,IAAI,KAAK,EAAE,SAAS,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,UAAU,CACd,+MAA+M,CAChN,CACF;KACF,CAAC,CAAC;AACL,CAAC,CAAA,CAAC,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@betty-blocks/cli",
3
- "version": "25.58.5",
3
+ "version": "25.59.1",
4
4
  "description": "A Betty Blocks CLI",
5
5
  "main": "build/index.js",
6
6
  "author": "Niek Nijland <niek.nijland@bettyblocks.com>",