@msn-control/liftoff 0.4.1 → 0.5.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 (112) hide show
  1. package/README.md +65 -256
  2. package/assets/locks/frontend/package-lock.json +224 -168
  3. package/assets/locks/frontend/package.json +1 -1
  4. package/assets/locks/node-backend/package-lock.json +85 -31
  5. package/assets/locks/node-backend/package.json +1 -1
  6. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/UPSTREAM_LICENSE.txt +21 -0
  7. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/catalog.json +520 -0
  8. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/packaged/gitignore +27 -0
  9. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/README.md +25 -0
  10. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/components.json +22 -0
  11. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/eslint.config.js +23 -0
  12. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/index.html +13 -0
  13. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package-lock.json +6597 -0
  14. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/package.json +60 -0
  15. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/public/power-apps.svg +55 -0
  16. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/App.tsx +17 -0
  17. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/assets/react.svg +1 -0
  18. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/mode-toggle.tsx +37 -0
  19. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/badge.tsx +46 -0
  20. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/button.tsx +60 -0
  21. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/calendar.tsx +211 -0
  22. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/card.tsx +92 -0
  23. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/chart.tsx +355 -0
  24. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/checkbox.tsx +32 -0
  25. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/command.tsx +184 -0
  26. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dialog.tsx +141 -0
  27. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/dropdown-menu.tsx +257 -0
  28. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/input.tsx +21 -0
  29. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/label.tsx +22 -0
  30. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/popover.tsx +46 -0
  31. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/progress.tsx +29 -0
  32. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/select.tsx +185 -0
  33. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/separator.tsx +26 -0
  34. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/skeleton.tsx +13 -0
  35. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/table.tsx +114 -0
  36. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tabs.tsx +66 -0
  37. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/textarea.tsx +18 -0
  38. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/components/ui/tooltip.tsx +61 -0
  39. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/hooks/use-theme.ts +11 -0
  40. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/index.css +131 -0
  41. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/lib/utils.ts +6 -0
  42. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/main.tsx +10 -0
  43. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/_layout.tsx +31 -0
  44. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/home.tsx +59 -0
  45. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/pages/not-found.tsx +14 -0
  46. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/query-provider.tsx +26 -0
  47. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/sonner-provider.tsx +23 -0
  48. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/providers/theme-provider.tsx +64 -0
  49. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/src/router.tsx +24 -0
  50. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.app.json +34 -0
  51. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.json +13 -0
  52. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/tsconfig.node.json +26 -0
  53. package/assets/power-apps-code-app/3438c352483e40982f6c5c0fc36fd71f8e7adbbb/starter/vite.config.ts +19 -0
  54. package/assets/power-apps-code-app/README.md +27 -0
  55. package/dist/args.js +7 -1
  56. package/dist/args.js.map +1 -1
  57. package/dist/catalogs.d.ts +3 -1
  58. package/dist/catalogs.js +23 -0
  59. package/dist/catalogs.js.map +1 -1
  60. package/dist/code-apps-plugin.d.ts +13 -0
  61. package/dist/code-apps-plugin.js +69 -0
  62. package/dist/code-apps-plugin.js.map +1 -0
  63. package/dist/commands.js +282 -55
  64. package/dist/commands.js.map +1 -1
  65. package/dist/file-system.d.ts +16 -1
  66. package/dist/file-system.js +320 -10
  67. package/dist/file-system.js.map +1 -1
  68. package/dist/genai-templates.d.ts +6 -6
  69. package/dist/genai-templates.js +0 -3
  70. package/dist/genai-templates.js.map +1 -1
  71. package/dist/interactive.d.ts +40 -3
  72. package/dist/interactive.js +180 -24
  73. package/dist/interactive.js.map +1 -1
  74. package/dist/migrate-plan.d.ts +4 -4
  75. package/dist/migrate-plan.js +1 -1
  76. package/dist/migrate-plan.js.map +1 -1
  77. package/dist/planner.js +177 -40
  78. package/dist/planner.js.map +1 -1
  79. package/dist/power-apps-assets.d.ts +30 -0
  80. package/dist/power-apps-assets.js +131 -0
  81. package/dist/power-apps-assets.js.map +1 -0
  82. package/dist/power-apps-templates.d.ts +3 -0
  83. package/dist/power-apps-templates.js +140 -0
  84. package/dist/power-apps-templates.js.map +1 -0
  85. package/dist/power-apps-validation.d.ts +1 -0
  86. package/dist/power-apps-validation.js +79 -0
  87. package/dist/power-apps-validation.js.map +1 -0
  88. package/dist/project-dependencies.d.ts +1 -0
  89. package/dist/project-dependencies.js +12 -1
  90. package/dist/project-dependencies.js.map +1 -1
  91. package/dist/standard-templates.d.ts +4 -4
  92. package/dist/standard-templates.js.map +1 -1
  93. package/dist/templates.d.ts +2 -2
  94. package/dist/templates.js +196 -50
  95. package/dist/templates.js.map +1 -1
  96. package/dist/types.d.ts +73 -15
  97. package/dist/workstation.d.ts +10 -5
  98. package/dist/workstation.js +25 -10
  99. package/dist/workstation.js.map +1 -1
  100. package/docs/assets/liftoff-terminal.svg +33 -0
  101. package/docs/azure-deployment.md +66 -0
  102. package/docs/cli-reference.md +128 -0
  103. package/docs/configuration-and-manifests.md +102 -0
  104. package/docs/existing-repositories.md +87 -0
  105. package/docs/getting-started.md +114 -0
  106. package/docs/prerequisites.md +99 -0
  107. package/docs/project-structure.md +119 -0
  108. package/docs/safety-and-consent.md +98 -0
  109. package/docs/spec-workflows-and-agents.md +92 -0
  110. package/docs/troubleshooting.md +133 -0
  111. package/docs/workloads.md +128 -0
  112. package/package.json +10 -2
@@ -0,0 +1,520 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "source": {
4
+ "repository": "https://github.com/microsoft/PowerAppsCodeApps",
5
+ "path": "templates/starter",
6
+ "commit": "3438c352483e40982f6c5c0fc36fd71f8e7adbbb",
7
+ "archiveSha256": "sha256:2b004d782470e862e6ae858709cd7a083731d21257982192537a1f182946f3f4"
8
+ },
9
+ "license": {
10
+ "spdx": "MIT",
11
+ "assetPath": "UPSTREAM_LICENSE.txt",
12
+ "sha256": "sha256:fd532481d828e13a0b13ccb598e02338a3617740675a862ee6bdc1541b68e93d"
13
+ },
14
+ "lockfile": {
15
+ "nodeBaseline": "22.x",
16
+ "npmVersion": "11.7.0",
17
+ "sha256": "sha256:f1f8a6ecae29d57044070348eebb4aad10eb7b2e7509d4d163e50cd6eba45d3b"
18
+ },
19
+ "files": [
20
+ {
21
+ "logicalName": "power-apps-gitignore",
22
+ "pathParts": [
23
+ ".gitignore"
24
+ ],
25
+ "assetPath": "packaged/gitignore",
26
+ "sha256": "sha256:f609f4bf6cd7129f8dbced50555548654ba81722ef53f4b33ead6ed76d0ac9ac",
27
+ "provenance": "upstream"
28
+ },
29
+ {
30
+ "logicalName": "power-apps-starter-components-json",
31
+ "pathParts": [
32
+ "components.json"
33
+ ],
34
+ "assetPath": "starter/components.json",
35
+ "sha256": "sha256:b08f7d9041f8796656aa56722c74d1712c34bf7df4acbf981f973842b09d4424",
36
+ "provenance": "upstream"
37
+ },
38
+ {
39
+ "logicalName": "power-apps-starter-eslint-config-js",
40
+ "pathParts": [
41
+ "eslint.config.js"
42
+ ],
43
+ "assetPath": "starter/eslint.config.js",
44
+ "sha256": "sha256:088e9031a1668aacb8163463e8c1238c82f9188075c4216b04a615e7ad4c92d4",
45
+ "provenance": "upstream"
46
+ },
47
+ {
48
+ "logicalName": "power-apps-starter-index-html",
49
+ "pathParts": [
50
+ "index.html"
51
+ ],
52
+ "assetPath": "starter/index.html",
53
+ "sha256": "sha256:aa9bb1ea3a07505abf48c5d64df20cb1fb1dc2780f84fd1135829d4ba665754c",
54
+ "provenance": "upstream"
55
+ },
56
+ {
57
+ "logicalName": "power-apps-lock",
58
+ "pathParts": [
59
+ "package-lock.json"
60
+ ],
61
+ "assetPath": "starter/package-lock.json",
62
+ "sha256": "sha256:f1f8a6ecae29d57044070348eebb4aad10eb7b2e7509d4d163e50cd6eba45d3b",
63
+ "provenance": "generated-lockfile"
64
+ },
65
+ {
66
+ "logicalName": "power-apps-package",
67
+ "pathParts": [
68
+ "package.json"
69
+ ],
70
+ "assetPath": "starter/package.json",
71
+ "sha256": "sha256:7b180a3099802fe38387772498b514e04dec8a6fb69f6ebf98c3f46894b0386e",
72
+ "provenance": "upstream"
73
+ },
74
+ {
75
+ "logicalName": "power-apps-starter-public-power-apps-svg",
76
+ "pathParts": [
77
+ "public",
78
+ "power-apps.svg"
79
+ ],
80
+ "assetPath": "starter/public/power-apps.svg",
81
+ "sha256": "sha256:061f718cd0eedfc04e2a6408b3ef1ea95d6ab979dd6be18d6d5afd9350bd3ab4",
82
+ "provenance": "upstream"
83
+ },
84
+ {
85
+ "logicalName": "power-apps-readme",
86
+ "pathParts": [
87
+ "README.md"
88
+ ],
89
+ "assetPath": "starter/README.md",
90
+ "sha256": "sha256:5bfb0804bfd06bcb780983910a5467495d336bf531eda2333349ec07748bb140",
91
+ "provenance": "upstream"
92
+ },
93
+ {
94
+ "logicalName": "power-apps-starter-src-app-tsx",
95
+ "pathParts": [
96
+ "src",
97
+ "App.tsx"
98
+ ],
99
+ "assetPath": "starter/src/App.tsx",
100
+ "sha256": "sha256:1adef81292bf49a7465d58cd8eec09ffb7a271750264646ddd90345c3ef9536c",
101
+ "provenance": "upstream"
102
+ },
103
+ {
104
+ "logicalName": "power-apps-starter-src-assets-react-svg",
105
+ "pathParts": [
106
+ "src",
107
+ "assets",
108
+ "react.svg"
109
+ ],
110
+ "assetPath": "starter/src/assets/react.svg",
111
+ "sha256": "sha256:35ef61ed53b323ae94a16a8ec659b3d0af3880698791133f23b084085ab1c2e5",
112
+ "provenance": "upstream"
113
+ },
114
+ {
115
+ "logicalName": "power-apps-starter-src-components-mode-toggle-tsx",
116
+ "pathParts": [
117
+ "src",
118
+ "components",
119
+ "mode-toggle.tsx"
120
+ ],
121
+ "assetPath": "starter/src/components/mode-toggle.tsx",
122
+ "sha256": "sha256:fafa0b97d19fa15a53dd6c3c35dcdfe8206f0537b6b8af7021751f71f675372c",
123
+ "provenance": "upstream"
124
+ },
125
+ {
126
+ "logicalName": "power-apps-starter-src-components-ui-badge-tsx",
127
+ "pathParts": [
128
+ "src",
129
+ "components",
130
+ "ui",
131
+ "badge.tsx"
132
+ ],
133
+ "assetPath": "starter/src/components/ui/badge.tsx",
134
+ "sha256": "sha256:e7455feb113b38c59456ba29a9ec264b5ffa1daae8883866332ad637ffd57c31",
135
+ "provenance": "upstream"
136
+ },
137
+ {
138
+ "logicalName": "power-apps-starter-src-components-ui-button-tsx",
139
+ "pathParts": [
140
+ "src",
141
+ "components",
142
+ "ui",
143
+ "button.tsx"
144
+ ],
145
+ "assetPath": "starter/src/components/ui/button.tsx",
146
+ "sha256": "sha256:8116b8529db6dc4e3c04bd5ebdd223a38535dcc737830d12ec4b290433d469d8",
147
+ "provenance": "upstream"
148
+ },
149
+ {
150
+ "logicalName": "power-apps-starter-src-components-ui-calendar-tsx",
151
+ "pathParts": [
152
+ "src",
153
+ "components",
154
+ "ui",
155
+ "calendar.tsx"
156
+ ],
157
+ "assetPath": "starter/src/components/ui/calendar.tsx",
158
+ "sha256": "sha256:8954e535da7c6dedf0e162b19ef227efb8b4006c4c4c45716b9b39ea00368431",
159
+ "provenance": "upstream"
160
+ },
161
+ {
162
+ "logicalName": "power-apps-starter-src-components-ui-card-tsx",
163
+ "pathParts": [
164
+ "src",
165
+ "components",
166
+ "ui",
167
+ "card.tsx"
168
+ ],
169
+ "assetPath": "starter/src/components/ui/card.tsx",
170
+ "sha256": "sha256:2040cdff27cd1ed771e0ebbd15abcd73d31f2f1e4be6664bd6816fffd2a87476",
171
+ "provenance": "upstream"
172
+ },
173
+ {
174
+ "logicalName": "power-apps-starter-src-components-ui-chart-tsx",
175
+ "pathParts": [
176
+ "src",
177
+ "components",
178
+ "ui",
179
+ "chart.tsx"
180
+ ],
181
+ "assetPath": "starter/src/components/ui/chart.tsx",
182
+ "sha256": "sha256:ae171f02a6cc4310fd76ee191e594c4a5c43edfd37e2e25f01a5921350fc6720",
183
+ "provenance": "upstream"
184
+ },
185
+ {
186
+ "logicalName": "power-apps-starter-src-components-ui-checkbox-tsx",
187
+ "pathParts": [
188
+ "src",
189
+ "components",
190
+ "ui",
191
+ "checkbox.tsx"
192
+ ],
193
+ "assetPath": "starter/src/components/ui/checkbox.tsx",
194
+ "sha256": "sha256:a8292972a5b81eff164f621ac0bb66f4ed4419d1599e2d4901968e216574677f",
195
+ "provenance": "upstream"
196
+ },
197
+ {
198
+ "logicalName": "power-apps-starter-src-components-ui-command-tsx",
199
+ "pathParts": [
200
+ "src",
201
+ "components",
202
+ "ui",
203
+ "command.tsx"
204
+ ],
205
+ "assetPath": "starter/src/components/ui/command.tsx",
206
+ "sha256": "sha256:4fb4f8f95dfbe884ae598661b80e541d62eacdfe2101beab58819ab58b96c2ea",
207
+ "provenance": "upstream"
208
+ },
209
+ {
210
+ "logicalName": "power-apps-starter-src-components-ui-dialog-tsx",
211
+ "pathParts": [
212
+ "src",
213
+ "components",
214
+ "ui",
215
+ "dialog.tsx"
216
+ ],
217
+ "assetPath": "starter/src/components/ui/dialog.tsx",
218
+ "sha256": "sha256:eacce7500508317e3b31f6d071ac99a20d7f3f8dfc6119ffa6fe0ee8a194a6e0",
219
+ "provenance": "upstream"
220
+ },
221
+ {
222
+ "logicalName": "power-apps-starter-src-components-ui-dropdown-menu-tsx",
223
+ "pathParts": [
224
+ "src",
225
+ "components",
226
+ "ui",
227
+ "dropdown-menu.tsx"
228
+ ],
229
+ "assetPath": "starter/src/components/ui/dropdown-menu.tsx",
230
+ "sha256": "sha256:e1564b0912361081da39e1ee61d5759a75aa4e2e8d28a90f5e229921addb4083",
231
+ "provenance": "upstream"
232
+ },
233
+ {
234
+ "logicalName": "power-apps-starter-src-components-ui-input-tsx",
235
+ "pathParts": [
236
+ "src",
237
+ "components",
238
+ "ui",
239
+ "input.tsx"
240
+ ],
241
+ "assetPath": "starter/src/components/ui/input.tsx",
242
+ "sha256": "sha256:56b7fd30208addbcc2468cfda4f5bc0a55342211deaab61ee35b1c352b1622f1",
243
+ "provenance": "upstream"
244
+ },
245
+ {
246
+ "logicalName": "power-apps-starter-src-components-ui-label-tsx",
247
+ "pathParts": [
248
+ "src",
249
+ "components",
250
+ "ui",
251
+ "label.tsx"
252
+ ],
253
+ "assetPath": "starter/src/components/ui/label.tsx",
254
+ "sha256": "sha256:70d2b90324e521926a48678ce5329446caaed155c6e5954a454499d5b67a014c",
255
+ "provenance": "upstream"
256
+ },
257
+ {
258
+ "logicalName": "power-apps-starter-src-components-ui-popover-tsx",
259
+ "pathParts": [
260
+ "src",
261
+ "components",
262
+ "ui",
263
+ "popover.tsx"
264
+ ],
265
+ "assetPath": "starter/src/components/ui/popover.tsx",
266
+ "sha256": "sha256:00702c92103d2bf0752fac030c9fc6f671c55a5732534a6fc306df618f30e652",
267
+ "provenance": "upstream"
268
+ },
269
+ {
270
+ "logicalName": "power-apps-starter-src-components-ui-progress-tsx",
271
+ "pathParts": [
272
+ "src",
273
+ "components",
274
+ "ui",
275
+ "progress.tsx"
276
+ ],
277
+ "assetPath": "starter/src/components/ui/progress.tsx",
278
+ "sha256": "sha256:9e36ca3f10bc56b69058d8edd342832b72c8c1b2d36cd142a0decb2445c3b724",
279
+ "provenance": "upstream"
280
+ },
281
+ {
282
+ "logicalName": "power-apps-starter-src-components-ui-select-tsx",
283
+ "pathParts": [
284
+ "src",
285
+ "components",
286
+ "ui",
287
+ "select.tsx"
288
+ ],
289
+ "assetPath": "starter/src/components/ui/select.tsx",
290
+ "sha256": "sha256:b21245a179f8a32bc48ac7b32dfce7b1e57e2e5032356595a6fdc4ba05aa5216",
291
+ "provenance": "upstream"
292
+ },
293
+ {
294
+ "logicalName": "power-apps-starter-src-components-ui-separator-tsx",
295
+ "pathParts": [
296
+ "src",
297
+ "components",
298
+ "ui",
299
+ "separator.tsx"
300
+ ],
301
+ "assetPath": "starter/src/components/ui/separator.tsx",
302
+ "sha256": "sha256:18e5bf93682eb91864d9a1b8c0a09e46ad15d6ef1ffe97b3ccf9e4697756b6e2",
303
+ "provenance": "upstream"
304
+ },
305
+ {
306
+ "logicalName": "power-apps-starter-src-components-ui-skeleton-tsx",
307
+ "pathParts": [
308
+ "src",
309
+ "components",
310
+ "ui",
311
+ "skeleton.tsx"
312
+ ],
313
+ "assetPath": "starter/src/components/ui/skeleton.tsx",
314
+ "sha256": "sha256:f2aea81d8baf2b621945382aabac150e3db40f20d19ac1abea7aff805f1dc33c",
315
+ "provenance": "upstream"
316
+ },
317
+ {
318
+ "logicalName": "power-apps-starter-src-components-ui-table-tsx",
319
+ "pathParts": [
320
+ "src",
321
+ "components",
322
+ "ui",
323
+ "table.tsx"
324
+ ],
325
+ "assetPath": "starter/src/components/ui/table.tsx",
326
+ "sha256": "sha256:95e3ef5db88b3bbfb68eed12f341fb942e40ca815f4342e1d5dbc8c8d47c783d",
327
+ "provenance": "upstream"
328
+ },
329
+ {
330
+ "logicalName": "power-apps-starter-src-components-ui-tabs-tsx",
331
+ "pathParts": [
332
+ "src",
333
+ "components",
334
+ "ui",
335
+ "tabs.tsx"
336
+ ],
337
+ "assetPath": "starter/src/components/ui/tabs.tsx",
338
+ "sha256": "sha256:e8469e599381cf021ce751c27cca3d8cb06440a45665ca9c2ef2efb0acef1fd9",
339
+ "provenance": "upstream"
340
+ },
341
+ {
342
+ "logicalName": "power-apps-starter-src-components-ui-textarea-tsx",
343
+ "pathParts": [
344
+ "src",
345
+ "components",
346
+ "ui",
347
+ "textarea.tsx"
348
+ ],
349
+ "assetPath": "starter/src/components/ui/textarea.tsx",
350
+ "sha256": "sha256:de4e9fb0fd8e8ed10ea2e475ffe202a922ffe77e3f3edb2c517b0781447ad1b4",
351
+ "provenance": "upstream"
352
+ },
353
+ {
354
+ "logicalName": "power-apps-starter-src-components-ui-tooltip-tsx",
355
+ "pathParts": [
356
+ "src",
357
+ "components",
358
+ "ui",
359
+ "tooltip.tsx"
360
+ ],
361
+ "assetPath": "starter/src/components/ui/tooltip.tsx",
362
+ "sha256": "sha256:cbc12f4086448f8a307ed5fbb160f79467c84a44c48ca0dbd2c62e39a2db6f5d",
363
+ "provenance": "upstream"
364
+ },
365
+ {
366
+ "logicalName": "power-apps-starter-src-hooks-use-theme-ts",
367
+ "pathParts": [
368
+ "src",
369
+ "hooks",
370
+ "use-theme.ts"
371
+ ],
372
+ "assetPath": "starter/src/hooks/use-theme.ts",
373
+ "sha256": "sha256:b5b03760cb043fb0fb0820314da1a5283aabcde1cab16fea2c547aa3dee50dd1",
374
+ "provenance": "upstream"
375
+ },
376
+ {
377
+ "logicalName": "power-apps-starter-src-index-css",
378
+ "pathParts": [
379
+ "src",
380
+ "index.css"
381
+ ],
382
+ "assetPath": "starter/src/index.css",
383
+ "sha256": "sha256:401c0c516e22d8eea06d410cd8ddca32c6e54c70858fc6c4939eafc03cb84a23",
384
+ "provenance": "upstream"
385
+ },
386
+ {
387
+ "logicalName": "power-apps-starter-src-lib-utils-ts",
388
+ "pathParts": [
389
+ "src",
390
+ "lib",
391
+ "utils.ts"
392
+ ],
393
+ "assetPath": "starter/src/lib/utils.ts",
394
+ "sha256": "sha256:7c8c3dfc0cdd370d44932828eb067ef771c8fe7996693221d5d4b90af6d54f2d",
395
+ "provenance": "upstream"
396
+ },
397
+ {
398
+ "logicalName": "power-apps-starter-src-main-tsx",
399
+ "pathParts": [
400
+ "src",
401
+ "main.tsx"
402
+ ],
403
+ "assetPath": "starter/src/main.tsx",
404
+ "sha256": "sha256:716f174e96ced2b19f2e5f96d460ca60eb119d88e6658892258bc4e4e298f1d4",
405
+ "provenance": "upstream"
406
+ },
407
+ {
408
+ "logicalName": "power-apps-starter-src-pages-layout-tsx",
409
+ "pathParts": [
410
+ "src",
411
+ "pages",
412
+ "_layout.tsx"
413
+ ],
414
+ "assetPath": "starter/src/pages/_layout.tsx",
415
+ "sha256": "sha256:dee4d237dce3856825460a51e233c55130d4871916f47fb1c987240fced87592",
416
+ "provenance": "upstream"
417
+ },
418
+ {
419
+ "logicalName": "power-apps-starter-src-pages-home-tsx",
420
+ "pathParts": [
421
+ "src",
422
+ "pages",
423
+ "home.tsx"
424
+ ],
425
+ "assetPath": "starter/src/pages/home.tsx",
426
+ "sha256": "sha256:1d67b58be040d1b1d97c3fe24cf910fc342be46414d809b35541f3421788ca01",
427
+ "provenance": "upstream"
428
+ },
429
+ {
430
+ "logicalName": "power-apps-starter-src-pages-not-found-tsx",
431
+ "pathParts": [
432
+ "src",
433
+ "pages",
434
+ "not-found.tsx"
435
+ ],
436
+ "assetPath": "starter/src/pages/not-found.tsx",
437
+ "sha256": "sha256:1c52863228c6ec51bcb9a9417f15d414c882cad0322962afc78a37b7b8770170",
438
+ "provenance": "upstream"
439
+ },
440
+ {
441
+ "logicalName": "power-apps-starter-src-providers-query-provider-tsx",
442
+ "pathParts": [
443
+ "src",
444
+ "providers",
445
+ "query-provider.tsx"
446
+ ],
447
+ "assetPath": "starter/src/providers/query-provider.tsx",
448
+ "sha256": "sha256:0106d9861ef211fa2bd76dcea6a47a9d8031d63db11b01d30acd5aadee847ee2",
449
+ "provenance": "upstream"
450
+ },
451
+ {
452
+ "logicalName": "power-apps-starter-src-providers-sonner-provider-tsx",
453
+ "pathParts": [
454
+ "src",
455
+ "providers",
456
+ "sonner-provider.tsx"
457
+ ],
458
+ "assetPath": "starter/src/providers/sonner-provider.tsx",
459
+ "sha256": "sha256:2538a1f0f93ea8840823ff78077bc1a725a49fe5d09a7e9d5ab2bd7bd7f78a0c",
460
+ "provenance": "upstream"
461
+ },
462
+ {
463
+ "logicalName": "power-apps-starter-src-providers-theme-provider-tsx",
464
+ "pathParts": [
465
+ "src",
466
+ "providers",
467
+ "theme-provider.tsx"
468
+ ],
469
+ "assetPath": "starter/src/providers/theme-provider.tsx",
470
+ "sha256": "sha256:4bcdab9ae334d4ef513e24d0443f6280f12de23d0e8b23e533521375e93f6f72",
471
+ "provenance": "upstream"
472
+ },
473
+ {
474
+ "logicalName": "power-apps-starter-src-router-tsx",
475
+ "pathParts": [
476
+ "src",
477
+ "router.tsx"
478
+ ],
479
+ "assetPath": "starter/src/router.tsx",
480
+ "sha256": "sha256:082a2185adf7bf385f26a9bcd3bfd35dac7228dcf2f032ec842cb2e8516d23d0",
481
+ "provenance": "upstream"
482
+ },
483
+ {
484
+ "logicalName": "power-apps-starter-tsconfig-app-json",
485
+ "pathParts": [
486
+ "tsconfig.app.json"
487
+ ],
488
+ "assetPath": "starter/tsconfig.app.json",
489
+ "sha256": "sha256:b5753c005cde40fb3ab4b66e39b087694e69f2ac98bbc27e01dcd6f9a076b2b7",
490
+ "provenance": "upstream"
491
+ },
492
+ {
493
+ "logicalName": "power-apps-starter-tsconfig-json",
494
+ "pathParts": [
495
+ "tsconfig.json"
496
+ ],
497
+ "assetPath": "starter/tsconfig.json",
498
+ "sha256": "sha256:3a8c0ce7d538f1c330907529a1dc9f666bec3b86f75623e432a3ca81f03b8486",
499
+ "provenance": "upstream"
500
+ },
501
+ {
502
+ "logicalName": "power-apps-starter-tsconfig-node-json",
503
+ "pathParts": [
504
+ "tsconfig.node.json"
505
+ ],
506
+ "assetPath": "starter/tsconfig.node.json",
507
+ "sha256": "sha256:c3dd0fb522feba3596713f51b95bd53d781d845d24aedbfa2ac093d8b39c5120",
508
+ "provenance": "upstream"
509
+ },
510
+ {
511
+ "logicalName": "power-apps-starter-vite-config-ts",
512
+ "pathParts": [
513
+ "vite.config.ts"
514
+ ],
515
+ "assetPath": "starter/vite.config.ts",
516
+ "sha256": "sha256:ead4c562a8dc1d5fd1dbd3eff641d60136e8a9321c817eaf78211cc125fde37f",
517
+ "provenance": "upstream"
518
+ }
519
+ ]
520
+ }
@@ -0,0 +1,27 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
25
+
26
+ # Claude Code
27
+ .claude/settings.local.json
@@ -0,0 +1,25 @@
1
+ # Power Apps Template - starter
2
+
3
+ An opinionated **Vite + TypeScript + React** starter template for building Power Apps code apps.
4
+
5
+ Designed for common app scenarios, easy extensibility, and minimal setup.
6
+
7
+ ---
8
+
9
+ ## Highlights
10
+ - **Modern tooling** - Vite, TypeScript, and React
11
+ - **Out-of-box styling** - Tailwind, shadcn/ui components, and theming out of the box
12
+ - **Batteries included** - Curated libraries pre-wired for common scenarios
13
+ - **Standard patterns** - Industry standard patterns and practices
14
+ - **Agent friendly** - Optimized for use with coding agents
15
+ ---
16
+
17
+ ## Pre-installed libraries
18
+ - [Tailwind CSS](https://tailwindcss.com/) - utility-first CSS framework
19
+ - [shadcn/ui](https://ui.shadcn.com/) - pre-installed UI components
20
+ - [React Router](https://reactrouter.com/) - pages, routing
21
+ - [Zustand](https://zustand.docs.pmnd.rs/) - state management
22
+ - [Tanstack Query](https://tanstack.com/query/latest) - data fetching, state management
23
+ - [Tanstack Table](https://tanstack.com/table/latest) - interactive tables, datagrids
24
+ - [Lucide](https://lucide.dev/) - icons
25
+
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/index.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "iconLibrary": "lucide",
14
+ "aliases": {
15
+ "components": "@/components",
16
+ "utils": "@/lib/utils",
17
+ "ui": "@/components/ui",
18
+ "lib": "@/lib",
19
+ "hooks": "@/hooks"
20
+ },
21
+ "registries": {}
22
+ }
@@ -0,0 +1,23 @@
1
+ import js from '@eslint/js'
2
+ import globals from 'globals'
3
+ import reactHooks from 'eslint-plugin-react-hooks'
4
+ import reactRefresh from 'eslint-plugin-react-refresh'
5
+ import tseslint from 'typescript-eslint'
6
+ import { defineConfig, globalIgnores } from 'eslint/config'
7
+
8
+ export default defineConfig([
9
+ globalIgnores(['dist']),
10
+ {
11
+ files: ['**/*.{ts,tsx}'],
12
+ extends: [
13
+ js.configs.recommended,
14
+ tseslint.configs.recommended,
15
+ reactHooks.configs['recommended-latest'],
16
+ reactRefresh.configs.vite,
17
+ ],
18
+ languageOptions: {
19
+ ecmaVersion: 2020,
20
+ globals: globals.browser,
21
+ },
22
+ },
23
+ ])
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/power-apps.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Power Apps</title>
8
+ </head>
9
+ <body>
10
+ <div id="root"></div>
11
+ <script type="module" src="/src/main.tsx"></script>
12
+ </body>
13
+ </html>