@gxp-dev/tools 2.0.33 → 2.0.34

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/lib/cli.js CHANGED
@@ -57,6 +57,12 @@ yargs
57
57
  alias: "p",
58
58
  choices: ["claude", "codex", "gemini"],
59
59
  },
60
+ yes: {
61
+ describe: "Skip interactive prompts and use defaults",
62
+ type: "boolean",
63
+ alias: "y",
64
+ default: false,
65
+ },
60
66
  },
61
67
  initCommand
62
68
  )
@@ -528,6 +528,12 @@ async function initCommand(argv) {
528
528
 
529
529
  // New project - require a name
530
530
  if (!argv.name) {
531
+ // In non-interactive mode, name is required
532
+ if (argv.yes) {
533
+ console.error("❌ Project name is required when using --yes flag!");
534
+ console.error(" Usage: gxdev init <project-name> --yes");
535
+ process.exit(1);
536
+ }
531
537
  console.log("");
532
538
  console.log("🚀 GxP Plugin Creator");
533
539
  console.log("─".repeat(40));
@@ -579,6 +585,13 @@ async function initCommand(argv) {
579
585
  return;
580
586
  }
581
587
 
588
+ // If --yes flag provided, skip interactive configuration
589
+ if (argv.yes) {
590
+ updateAppManifest(projectPath, projectName, initialDescription);
591
+ printFinalInstructions(projectPath, projectName, false);
592
+ return;
593
+ }
594
+
582
595
  // Run interactive configuration
583
596
  await runInteractiveConfig(projectPath, projectName);
584
597
  }
@@ -124,32 +124,50 @@ function updateExistingProject(projectPath) {
124
124
  }
125
125
 
126
126
  try {
127
+ // Backup existing vite.config.js if present
128
+ const viteConfigPath = path.join(projectPath, "vite.config.js");
129
+ if (fs.existsSync(viteConfigPath)) {
130
+ const backupPath = path.join(projectPath, "vite.config.js.backup");
131
+ fs.renameSync(viteConfigPath, backupPath);
132
+ console.log(" → Renamed vite.config.js to vite.config.js.backup");
133
+ }
134
+
127
135
  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
128
136
  let updated = false;
129
137
 
130
- // Check and add missing dependencies
138
+ // Check and add/update dependencies
131
139
  if (!packageJson.dependencies) {
132
140
  packageJson.dependencies = {};
133
141
  }
134
142
 
135
143
  for (const [dep, version] of Object.entries(REQUIRED_DEPENDENCIES)) {
136
- if (!packageJson.dependencies[dep]) {
144
+ const existingVersion = packageJson.dependencies[dep];
145
+ if (!existingVersion) {
137
146
  packageJson.dependencies[dep] = version;
138
147
  console.log(` + Adding dependency: ${dep}@${version}`);
139
148
  updated = true;
149
+ } else if (existingVersion !== version) {
150
+ packageJson.dependencies[dep] = version;
151
+ console.log(` ↑ Updating dependency: ${dep} (${existingVersion} → ${version})`);
152
+ updated = true;
140
153
  }
141
154
  }
142
155
 
143
- // Check and add missing dev dependencies
156
+ // Check and add/update dev dependencies
144
157
  if (!packageJson.devDependencies) {
145
158
  packageJson.devDependencies = {};
146
159
  }
147
160
 
148
161
  for (const [dep, version] of Object.entries(REQUIRED_DEV_DEPENDENCIES)) {
149
- if (!packageJson.devDependencies[dep]) {
162
+ const existingVersion = packageJson.devDependencies[dep];
163
+ if (!existingVersion) {
150
164
  packageJson.devDependencies[dep] = version;
151
165
  console.log(` + Adding devDependency: ${dep}@${version}`);
152
166
  updated = true;
167
+ } else if (existingVersion !== version) {
168
+ packageJson.devDependencies[dep] = version;
169
+ console.log(` ↑ Updating devDependency: ${dep} (${existingVersion} → ${version})`);
170
+ updated = true;
153
171
  }
154
172
  }
155
173
 
@@ -1,12 +1,21 @@
1
1
  {
2
2
  "manifest_version": 2,
3
3
  "name": "GxP Developer Toolkit",
4
- "version": "1.2",
4
+ "version": "1.2.0",
5
5
  "description": "JavaScript proxy and component inspector for GxP plugin development",
6
+ "homepage_url": "https://github.com/gramercytech/gx-devtools",
7
+ "developer": {
8
+ "name": "Gramercy Tech",
9
+ "url": "https://gramercytech.com"
10
+ },
6
11
 
7
12
  "browser_specific_settings": {
8
13
  "gecko": {
9
- "id": "gxp-toolkit@gx-devtools.dev"
14
+ "id": "gxp-toolkit@gx-devtools.dev",
15
+ "strict_min_version": "109.0",
16
+ "data_collection_permissions": {
17
+ "required": ["none"]
18
+ }
10
19
  }
11
20
  },
12
21
 
@@ -46,7 +55,7 @@
46
55
  "default_icon": {
47
56
  "16": "icons/gx_off_16.png",
48
57
  "32": "icons/gx_off_32.png",
49
- "48": "icons/gx_off_48.png",
58
+ "64": "icons/gx_off_64.png",
50
59
  "128": "icons/gx_off_128.png"
51
60
  }
52
61
  },
@@ -54,7 +63,7 @@
54
63
  "icons": {
55
64
  "16": "icons/gx_off_16.png",
56
65
  "32": "icons/gx_off_32.png",
57
- "48": "icons/gx_off_48.png",
66
+ "48": "icons/gx_off_64.png",
58
67
  "128": "icons/gx_off_128.png"
59
68
  },
60
69
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gxp-dev/tools",
3
- "version": "2.0.33",
3
+ "version": "2.0.34",
4
4
  "description": "Dev tools to create platform plugins",
5
5
  "type": "commonjs",
6
6
  "publishConfig": {
@@ -0,0 +1 @@
1
+ /* This file used to pre-populate the the additional styling editor in the GxP app */
@@ -5,28 +5,16 @@
5
5
  />
6
6
  </template>
7
7
 
8
- <style scoped>
9
- #app {
10
- font-family: Avenir, Helvetica, Arial, sans-serif;
11
- -webkit-font-smoothing: antialiased;
12
- -moz-osx-font-smoothing: grayscale;
13
- }
14
- </style>
8
+
15
9
 
16
10
  <script setup>
17
11
  import { ref, shallowRef } from "vue";
18
12
  import DemoPage from "@/DemoPage.vue";
19
- import {
20
- GxPageStart,
21
- GxPageFinal,
22
- GxPageLoading
23
- } from "@gramercytech/gx-componentkit";
24
13
 
25
14
  // Initialize the GxP store
26
15
  // This import is externalized to window.useGxpStore during build for platform compatibility
27
16
  import { useGxpStore } from "@/stores/gxpPortalConfigStore";
28
17
 
29
-
30
18
 
31
19
  const gxpStore = useGxpStore();
32
20
  gxpStore.sockets?.primary.listenForStateChange((event) => {
@@ -35,4 +23,78 @@
35
23
 
36
24
 
37
25
 
38
- </script>
26
+ </script>
27
+
28
+ <style>
29
+ #app {
30
+ font-family: Avenir, Helvetica, Arial, sans-serif;
31
+ -webkit-font-smoothing: antialiased;
32
+ -moz-osx-font-smoothing: grayscale;
33
+ }
34
+
35
+ /* Primary Color */
36
+ .primary {
37
+ color: var(--primary, #000000);
38
+ }
39
+
40
+ /* Page Styles */
41
+ .page {
42
+ background-color: var(--page_background_color, #000466);
43
+ color: var(--page_text_color, #FFFFFF);
44
+ }
45
+
46
+ /* Input Field Styles */
47
+ .input-field {
48
+ background-color: var(--input_field_background_color, #03054a);
49
+ color: var(--input_field_text_color, #FFFFFF);
50
+ border-color: var(--input_field_border_color, #888C92);
51
+ }
52
+
53
+ /* Primary Button Styles */
54
+ .primary-button {
55
+ background-color: var(--primary_button_background_color, #FFFFFF);
56
+ color: var(--primary_button_text_color, #000596);
57
+ border-color: var(--primary_button_border_color, #FFFFFF);
58
+ }
59
+
60
+ /* Secondary Button Styles */
61
+ .secondary-button {
62
+ background-color: var(--secondary_button_background_color, #000466);
63
+ color: var(--secondary_button_text_color, #FFFFFF);
64
+ border-color: var(--secondary_button_border_color, #FFFFFF);
65
+ }
66
+
67
+ /* Tertiary Button Styles */
68
+ .tertiary-button {
69
+ background-color: var(--tertiary_button_background_color, #FFFFFF00);
70
+ color: var(--tertiary_button_text_color, #FFFFFF);
71
+ border-color: var(--tertiary_button_border_color, #FFFFFF00);
72
+ }
73
+
74
+ /* Spinner Styles */
75
+ .spinner {
76
+ background-color: var(--spinner_background_color, #03054A);
77
+ color: var(--spinner_color, #FFFFFF);
78
+ }
79
+
80
+ /* Modal Styles */
81
+ .modal {
82
+ background-color: var(--modal_background_color, #FFFFFF);
83
+ color: var(--modal_text_color, #222222);
84
+ }
85
+
86
+ /* Modal Primary Button Styles */
87
+ .modal-primary-button {
88
+ background-color: var(--modal_primary_button_background_color, #000596);
89
+ color: var(--modal_primary_button_text_color, #FFFFFF);
90
+ border-color: var(--modal_primary_button_border_color, #000596);
91
+ }
92
+
93
+ /* Modal Secondary Button Styles */
94
+ .modal-secondary-button {
95
+ background-color: var(--modal_secondary_button_background_color, #FFFFFF);
96
+ color: var(--modal_secondary_button_text_color, #000596);
97
+ border-color: var(--modal_secondary_button_border_color, #000596);
98
+ }
99
+
100
+ </style>
@@ -0,0 +1,93 @@
1
+ /* Theme CSS Variables */
2
+ :root {
3
+ --primary: #000000;
4
+ --page_background_color: #000466;
5
+ --page_text_color: #FFFFFF;
6
+ --input_field_background_color: #03054a;
7
+ --input_field_text_color: #FFFFFF;
8
+ --input_field_border_color: #888C92;
9
+ --primary_button_background_color: #FFFFFF;
10
+ --primary_button_text_color: #000596;
11
+ --primary_button_border_color: #FFFFFF;
12
+ --secondary_button_background_color: #000466;
13
+ --secondary_button_text_color: #FFFFFF;
14
+ --secondary_button_border_color: #FFFFFF;
15
+ --tertiary_button_background_color: #FFFFFF00;
16
+ --tertiary_button_text_color: #FFFFFF;
17
+ --tertiary_button_border_color: #FFFFFF00;
18
+ --spinner_background_color: #03054A;
19
+ --spinner_color: #FFFFFF;
20
+ --modal_background_color: #FFFFFF;
21
+ --modal_text_color: #222222;
22
+ --modal_primary_button_background_color: #000596;
23
+ --modal_primary_button_text_color: #FFFFFF;
24
+ --modal_primary_button_border_color: #000596;
25
+ --modal_secondary_button_background_color: #FFFFFF;
26
+ --modal_secondary_button_text_color: #000596;
27
+ --modal_secondary_button_border_color: #000596;
28
+ }
29
+
30
+ /* Primary Color */
31
+ .primary {
32
+ color: var(--primary, #000000);
33
+ }
34
+
35
+ /* Page Styles */
36
+ .page {
37
+ background-color: var(--page_background_color, #000466);
38
+ color: var(--page_text_color, #FFFFFF);
39
+ }
40
+
41
+ /* Input Field Styles */
42
+ .input-field {
43
+ background-color: var(--input_field_background_color, #03054a);
44
+ color: var(--input_field_text_color, #FFFFFF);
45
+ border-color: var(--input_field_border_color, #888C92);
46
+ }
47
+
48
+ /* Primary Button Styles */
49
+ .primary-button {
50
+ background-color: var(--primary_button_background_color, #FFFFFF);
51
+ color: var(--primary_button_text_color, #000596);
52
+ border-color: var(--primary_button_border_color, #FFFFFF);
53
+ }
54
+
55
+ /* Secondary Button Styles */
56
+ .secondary-button {
57
+ background-color: var(--secondary_button_background_color, #000466);
58
+ color: var(--secondary_button_text_color, #FFFFFF);
59
+ border-color: var(--secondary_button_border_color, #FFFFFF);
60
+ }
61
+
62
+ /* Tertiary Button Styles */
63
+ .tertiary-button {
64
+ background-color: var(--tertiary_button_background_color, #FFFFFF00);
65
+ color: var(--tertiary_button_text_color, #FFFFFF);
66
+ border-color: var(--tertiary_button_border_color, #FFFFFF00);
67
+ }
68
+
69
+ /* Spinner Styles */
70
+ .spinner {
71
+ background-color: var(--spinner_background_color, #03054A);
72
+ color: var(--spinner_color, #FFFFFF);
73
+ }
74
+
75
+ /* Modal Styles */
76
+ .modal {
77
+ background-color: var(--modal_background_color, #FFFFFF);
78
+ color: var(--modal_text_color, #222222);
79
+ }
80
+
81
+ /* Modal Primary Button Styles */
82
+ .modal-primary-button {
83
+ background-color: var(--modal_primary_button_background_color, #000596);
84
+ color: var(--modal_primary_button_text_color, #FFFFFF);
85
+ border-color: var(--modal_primary_button_border_color, #000596);
86
+ }
87
+
88
+ /* Modal Secondary Button Styles */
89
+ .modal-secondary-button {
90
+ background-color: var(--modal_secondary_button_background_color, #FFFFFF);
91
+ color: var(--modal_secondary_button_text_color, #000596);
92
+ border-color: var(--modal_secondary_button_border_color, #000596);
93
+ }