@stacksjs/defaults 0.70.206 → 0.70.208

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 (408) hide show
  1. package/TODO.md +21 -0
  2. package/ai/AGENTS.md +79 -0
  3. package/ai/README.md +45 -0
  4. package/ai/claude/launch.json +12 -0
  5. package/ai/skills/stacks-actions/SKILL.md +128 -0
  6. package/ai/skills/stacks-ai/SKILL.md +276 -0
  7. package/ai/skills/stacks-alias/SKILL.md +94 -0
  8. package/ai/skills/stacks-analytics/SKILL.md +91 -0
  9. package/ai/skills/stacks-api/SKILL.md +738 -0
  10. package/ai/skills/stacks-arrays/SKILL.md +277 -0
  11. package/ai/skills/stacks-auth/SKILL.md +422 -0
  12. package/ai/skills/stacks-auto-imports/SKILL.md +138 -0
  13. package/ai/skills/stacks-brandkit/SKILL.md +811 -0
  14. package/ai/skills/stacks-browse/SKILL.md +127 -0
  15. package/ai/skills/stacks-browse/scripts/browse.ts +492 -0
  16. package/ai/skills/stacks-browser/SKILL.md +145 -0
  17. package/ai/skills/stacks-buddy/SKILL.md +676 -0
  18. package/ai/skills/stacks-build/SKILL.md +163 -0
  19. package/ai/skills/stacks-cache/SKILL.md +125 -0
  20. package/ai/skills/stacks-calendar/SKILL.md +113 -0
  21. package/ai/skills/stacks-chat/SKILL.md +371 -0
  22. package/ai/skills/stacks-cli/SKILL.md +112 -0
  23. package/ai/skills/stacks-cloud/SKILL.md +192 -0
  24. package/ai/skills/stacks-cms/SKILL.md +217 -0
  25. package/ai/skills/stacks-collections/SKILL.md +82 -0
  26. package/ai/skills/stacks-commerce/SKILL.md +114 -0
  27. package/ai/skills/stacks-composables/SKILL.md +161 -0
  28. package/ai/skills/stacks-config/SKILL.md +144 -0
  29. package/ai/skills/stacks-configuration/SKILL.md +154 -0
  30. package/ai/skills/stacks-cron/SKILL.md +123 -0
  31. package/ai/skills/stacks-crosswind/SKILL.md +190 -0
  32. package/ai/skills/stacks-dashboard/SKILL.md +173 -0
  33. package/ai/skills/stacks-database/SKILL.md +286 -0
  34. package/ai/skills/stacks-datetime/SKILL.md +269 -0
  35. package/ai/skills/stacks-dependencies/SKILL.md +111 -0
  36. package/ai/skills/stacks-deploy/SKILL.md +102 -0
  37. package/ai/skills/stacks-design-brutalist/SKILL.md +110 -0
  38. package/ai/skills/stacks-design-minimalist/SKILL.md +115 -0
  39. package/ai/skills/stacks-design-output/SKILL.md +55 -0
  40. package/ai/skills/stacks-design-soft/SKILL.md +156 -0
  41. package/ai/skills/stacks-design-taste/SKILL.md +1012 -0
  42. package/ai/skills/stacks-design-taste-codex/SKILL.md +294 -0
  43. package/ai/skills/stacks-desktop/SKILL.md +78 -0
  44. package/ai/skills/stacks-development/SKILL.md +298 -0
  45. package/ai/skills/stacks-dns/SKILL.md +149 -0
  46. package/ai/skills/stacks-docs/SKILL.md +109 -0
  47. package/ai/skills/stacks-email/SKILL.md +236 -0
  48. package/ai/skills/stacks-enums/SKILL.md +100 -0
  49. package/ai/skills/stacks-env/SKILL.md +181 -0
  50. package/ai/skills/stacks-error-handling/SKILL.md +137 -0
  51. package/ai/skills/stacks-events/SKILL.md +228 -0
  52. package/ai/skills/stacks-faker/SKILL.md +158 -0
  53. package/ai/skills/stacks-git/SKILL.md +158 -0
  54. package/ai/skills/stacks-guard/SKILL.md +98 -0
  55. package/ai/skills/stacks-health/SKILL.md +75 -0
  56. package/ai/skills/stacks-http/SKILL.md +316 -0
  57. package/ai/skills/stacks-i18n/SKILL.md +198 -0
  58. package/ai/skills/stacks-image-to-code/SKILL.md +629 -0
  59. package/ai/skills/stacks-imagegen-mobile/SKILL.md +1474 -0
  60. package/ai/skills/stacks-imagegen-web/SKILL.md +998 -0
  61. package/ai/skills/stacks-investigate/SKILL.md +119 -0
  62. package/ai/skills/stacks-jobs/SKILL.md +136 -0
  63. package/ai/skills/stacks-lint/SKILL.md +184 -0
  64. package/ai/skills/stacks-listeners/SKILL.md +99 -0
  65. package/ai/skills/stacks-logging/SKILL.md +78 -0
  66. package/ai/skills/stacks-mail/SKILL.md +120 -0
  67. package/ai/skills/stacks-middleware/SKILL.md +249 -0
  68. package/ai/skills/stacks-migrations/SKILL.md +105 -0
  69. package/ai/skills/stacks-models/SKILL.md +267 -0
  70. package/ai/skills/stacks-new-feature/SKILL.md +206 -0
  71. package/ai/skills/stacks-notifications/SKILL.md +210 -0
  72. package/ai/skills/stacks-objects/SKILL.md +205 -0
  73. package/ai/skills/stacks-office-hours/SKILL.md +134 -0
  74. package/ai/skills/stacks-orm/SKILL.md +342 -0
  75. package/ai/skills/stacks-path/SKILL.md +118 -0
  76. package/ai/skills/stacks-payments/SKILL.md +373 -0
  77. package/ai/skills/stacks-plan-review/SKILL.md +152 -0
  78. package/ai/skills/stacks-plugins/SKILL.md +149 -0
  79. package/ai/skills/stacks-push/SKILL.md +376 -0
  80. package/ai/skills/stacks-query-builder/SKILL.md +128 -0
  81. package/ai/skills/stacks-queue/SKILL.md +559 -0
  82. package/ai/skills/stacks-realtime/SKILL.md +442 -0
  83. package/ai/skills/stacks-redesign/SKILL.md +182 -0
  84. package/ai/skills/stacks-registry/SKILL.md +58 -0
  85. package/ai/skills/stacks-repl/SKILL.md +80 -0
  86. package/ai/skills/stacks-retro/SKILL.md +122 -0
  87. package/ai/skills/stacks-review/SKILL.md +135 -0
  88. package/ai/skills/stacks-router/SKILL.md +231 -0
  89. package/ai/skills/stacks-routes/SKILL.md +105 -0
  90. package/ai/skills/stacks-scaffolding/SKILL.md +162 -0
  91. package/ai/skills/stacks-scheduler/SKILL.md +363 -0
  92. package/ai/skills/stacks-search-engine/SKILL.md +112 -0
  93. package/ai/skills/stacks-security/SKILL.md +129 -0
  94. package/ai/skills/stacks-security-audit/SKILL.md +128 -0
  95. package/ai/skills/stacks-server/SKILL.md +458 -0
  96. package/ai/skills/stacks-shell/SKILL.md +62 -0
  97. package/ai/skills/stacks-slug/SKILL.md +87 -0
  98. package/ai/skills/stacks-sms/SKILL.md +385 -0
  99. package/ai/skills/stacks-socials/SKILL.md +303 -0
  100. package/ai/skills/stacks-storage/SKILL.md +576 -0
  101. package/ai/skills/stacks-strings/SKILL.md +416 -0
  102. package/ai/skills/stacks-stx/SKILL.md +176 -0
  103. package/ai/skills/stacks-technical-diagrams/LICENSE +22 -0
  104. package/ai/skills/stacks-technical-diagrams/SKILL.md +290 -0
  105. package/ai/skills/stacks-technical-diagrams/agents/openai.yaml +4 -0
  106. package/ai/skills/stacks-technical-diagrams/assets/template.html +1252 -0
  107. package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +289 -0
  108. package/ai/skills/stacks-technical-diagrams/bunfig.toml +1 -0
  109. package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +64 -0
  110. package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +88 -0
  111. package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +75 -0
  112. package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +70 -0
  113. package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +41 -0
  114. package/ai/skills/stacks-technical-diagrams/renderers/architecture/grid.mjs +62 -0
  115. package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +371 -0
  116. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +82 -0
  117. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +295 -0
  118. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +91 -0
  119. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +384 -0
  120. package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +84 -0
  121. package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +257 -0
  122. package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +42 -0
  123. package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +13 -0
  124. package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +230 -0
  125. package/ai/skills/stacks-technical-diagrams/renderers/shared/layout-report.mjs +40 -0
  126. package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +88 -0
  127. package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +40 -0
  128. package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +103 -0
  129. package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +481 -0
  130. package/ai/skills/stacks-technical-diagrams/schemas/README.md +68 -0
  131. package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +121 -0
  132. package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +43 -0
  133. package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +221 -0
  134. package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +241 -0
  135. package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +186 -0
  136. package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +332 -0
  137. package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +297 -0
  138. package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +28 -0
  139. package/ai/skills/stacks-testing/SKILL.md +129 -0
  140. package/ai/skills/stacks-tunnel/SKILL.md +125 -0
  141. package/ai/skills/stacks-types/SKILL.md +178 -0
  142. package/ai/skills/stacks-ui/SKILL.md +246 -0
  143. package/ai/skills/stacks-utils/SKILL.md +444 -0
  144. package/ai/skills/stacks-validation/SKILL.md +371 -0
  145. package/ai/skills/stacks-whois/SKILL.md +315 -0
  146. package/assets/world-map-data.ts +121 -0
  147. package/bootstrap.ts +114 -0
  148. package/docs/api-examples.md +46 -0
  149. package/docs/index.md +24 -0
  150. package/docs/markdown-examples.md +87 -0
  151. package/functions/analytics.ts +97 -0
  152. package/functions/api.ts +143 -0
  153. package/functions/auth.ts +208 -0
  154. package/functions/billing/payments.ts +149 -0
  155. package/functions/blog.ts +120 -0
  156. package/functions/cms/categorizables.ts +107 -0
  157. package/functions/cms/pages.ts +108 -0
  158. package/functions/cms/posts.ts +100 -0
  159. package/functions/cms/taggables.ts +102 -0
  160. package/functions/commerce/coupons.ts +128 -0
  161. package/functions/commerce/customers.ts +128 -0
  162. package/functions/commerce/gift-cards.ts +119 -0
  163. package/functions/commerce/orders.ts +112 -0
  164. package/functions/commerce/payments.ts +119 -0
  165. package/functions/commerce/products/categories.ts +123 -0
  166. package/functions/commerce/products/manufacturers.ts +123 -0
  167. package/functions/commerce/products/products.ts +123 -0
  168. package/functions/commerce/products/reviews.ts +123 -0
  169. package/functions/commerce/products/units.ts +123 -0
  170. package/functions/commerce/products/variants.ts +123 -0
  171. package/functions/commerce/shippings/delivery-routes.ts +123 -0
  172. package/functions/commerce/shippings/digital-deliveries.ts +119 -0
  173. package/functions/commerce/shippings/drivers.ts +123 -0
  174. package/functions/commerce/shippings/license-keys.ts +123 -0
  175. package/functions/commerce/shippings/shipping-methods.ts +123 -0
  176. package/functions/commerce/shippings/shipping-rates.ts +119 -0
  177. package/functions/commerce/shippings/shipping-zones.ts +119 -0
  178. package/functions/commerce/taxes.ts +119 -0
  179. package/functions/commerce/waitlist/products.ts +123 -0
  180. package/functions/commerce/waitlist/restaurants.ts +123 -0
  181. package/functions/craft.ts +107 -0
  182. package/functions/dashboard.ts +153 -0
  183. package/functions/inbox.ts +95 -0
  184. package/functions/jobs.ts +86 -0
  185. package/functions/monitoring/errors.ts +295 -0
  186. package/functions/queue.ts +111 -0
  187. package/functions/realtime/websockets.ts +96 -0
  188. package/functions/realtime.ts +52 -0
  189. package/functions/releases.ts +49 -0
  190. package/functions/search.ts +126 -0
  191. package/functions/toasts.ts +95 -0
  192. package/functions/uploads.ts +216 -0
  193. package/ide/.gitignore +4 -0
  194. package/ide/cursor/rules/auto-imports.mdc +574 -0
  195. package/ide/cursor/rules/code-style.mdc +12 -0
  196. package/ide/cursor/rules/documentation.mdc +9 -0
  197. package/ide/cursor/rules/error-handling-validation.mdc +11 -0
  198. package/ide/cursor/rules/key-conventions.mdc +11 -0
  199. package/ide/cursor/rules/project-structure.mdc +169 -0
  200. package/ide/cursor/rules/readme.mdc +318 -0
  201. package/ide/cursor/rules/syntax-formatting.mdc +9 -0
  202. package/ide/cursor/rules/testing.mdc +10 -0
  203. package/ide/cursor/rules/typescript.mdc +9 -0
  204. package/ide/cursor/rules/ui-styling.mdc +0 -0
  205. package/ide/dictionary.txt +397 -0
  206. package/ide/jetbrains/.fleet/settings.json +4 -0
  207. package/ide/jetbrains/.idea/.gitignore +5 -0
  208. package/ide/jetbrains/.idea/.name +1 -0
  209. package/ide/jetbrains/.idea/inspectionProfiles/Project_Default.xml +6 -0
  210. package/ide/jetbrains/.idea/jsLinters/eslint.xml +7 -0
  211. package/ide/jetbrains/.idea/modules.xml +8 -0
  212. package/ide/jetbrains/.idea/stacks.iml +22 -0
  213. package/ide/jetbrains/.idea/vcs.xml +6 -0
  214. package/ide/jetbrains/.idea/webResources.xml +14 -0
  215. package/ide/jetbrains/IntelliJ IDEA Global Settings +0 -0
  216. package/ide/jetbrains/installed.txt +4 -0
  217. package/ide/jetbrains/options/github-copilot.xml +5 -0
  218. package/ide/jetbrains/options/nodejs.xml +7 -0
  219. package/ide/jetbrains/options/templates.xml +124 -0
  220. package/ide/jetbrains/templates/JavaScript.xml +6 -0
  221. package/ide/jetbrains/templates/Stacks.xml +8 -0
  222. package/ide/vscode/.vscode/README.md +23 -0
  223. package/ide/vscode/.vscode/extensions.json +5 -0
  224. package/ide/vscode/.vscode/settings.json +176 -0
  225. package/ide/vscode/.vscode/stacks.code-snippets +181 -0
  226. package/ide/vscode/LICENSE.md +21 -0
  227. package/ide/vscode/README.md +36 -0
  228. package/ide/vscode/logo.png +0 -0
  229. package/ide/vscode/package.json +79 -0
  230. package/ide/zed/.zed/settings.json +139 -0
  231. package/lang/README.md +28 -0
  232. package/lang/de.yml +14 -0
  233. package/lang/en.yml +15 -0
  234. package/package.json +19 -3
  235. package/project/bootstrap +161 -0
  236. package/project/buddy +175 -0
  237. package/project/storage/framework/tsconfig.app.json +50 -0
  238. package/project/storage/framework/tsconfig.base.json +58 -0
  239. package/routes/core.ts +78 -0
  240. package/routes/dashboard-api.ts +233 -0
  241. package/routes/dashboard.ts +739 -0
  242. package/routes/email.ts +129 -0
  243. package/stores/[name].stx +16 -0
  244. package/stores/git.ts +71 -0
  245. package/stores/payment.ts +474 -0
  246. package/stores/queue.ts +43 -0
  247. package/stores/user.ts +29 -0
  248. package/stx-components-plugin.ts +25 -0
  249. package/styles/design-tokens.css +597 -0
  250. package/types/dashboard.ts +70 -0
  251. package/types/defaults.ts +438 -0
  252. package/vcs/github/CODE_OF_CONDUCT.md +83 -0
  253. package/vcs/github/CONTRIBUTING.md +187 -0
  254. package/vcs/github/EXPLANATIONS.md +41 -0
  255. package/vcs/github/FUNDING.yml +1 -0
  256. package/vcs/github/ISSUE_TEMPLATE/bug_report.yml +49 -0
  257. package/vcs/github/ISSUE_TEMPLATE/config.yml +10 -0
  258. package/vcs/github/ISSUE_TEMPLATE/feature_request.yml +44 -0
  259. package/vcs/github/SECURITY.md +70 -0
  260. package/vcs/github/renovate.json +5 -0
  261. package/vcs/github/stale.yml +14 -0
  262. package/vcs/github/workflows/README.md +16 -0
  263. package/vcs/github/workflows/ci.yml +114 -0
  264. package/vcs/github/workflows/export-size.yml +25 -0
  265. package/vcs/github/workflows/labeler.yml +13 -0
  266. package/vcs/github/workflows/release.yml +219 -0
  267. package/views/[...all].stx +8 -0
  268. package/views/about.md +3 -0
  269. package/views/auth/login.stx +1 -0
  270. package/views/auth/signup.stx +85 -0
  271. package/views/dashboard/.discovered-models.json +542 -0
  272. package/views/dashboard/AUDIT.md +904 -0
  273. package/views/dashboard/[...all].stx +89 -0
  274. package/views/dashboard/access-tokens/index.stx +177 -0
  275. package/views/dashboard/actions/index.stx +129 -0
  276. package/views/dashboard/analytics/blog/index.stx +356 -0
  277. package/views/dashboard/analytics/browsers/index.stx +263 -0
  278. package/views/dashboard/analytics/commerce/sales/index.stx +329 -0
  279. package/views/dashboard/analytics/commerce/web/index.stx +379 -0
  280. package/views/dashboard/analytics/countries/index.stx +289 -0
  281. package/views/dashboard/analytics/devices/index.stx +305 -0
  282. package/views/dashboard/analytics/events/index.stx +536 -0
  283. package/views/dashboard/analytics/index.stx +88 -0
  284. package/views/dashboard/analytics/marketing/index.stx +315 -0
  285. package/views/dashboard/analytics/pages/index.stx +271 -0
  286. package/views/dashboard/analytics/referrers/index.stx +319 -0
  287. package/views/dashboard/analytics/web/index.stx +356 -0
  288. package/views/dashboard/buddy/index.stx +198 -0
  289. package/views/dashboard/ci/index.stx +462 -0
  290. package/views/dashboard/cloud/index.stx +452 -0
  291. package/views/dashboard/commands/index.stx +295 -0
  292. package/views/dashboard/commerce/categories/index.stx +406 -0
  293. package/views/dashboard/commerce/coupons/index.stx +485 -0
  294. package/views/dashboard/commerce/customers/index.stx +410 -0
  295. package/views/dashboard/commerce/dashboard/index.stx +287 -0
  296. package/views/dashboard/commerce/delivery/delivery-routes.stx +305 -0
  297. package/views/dashboard/commerce/delivery/digital-delivery.stx +332 -0
  298. package/views/dashboard/commerce/delivery/drivers.stx +397 -0
  299. package/views/dashboard/commerce/delivery/index.stx +18 -0
  300. package/views/dashboard/commerce/delivery/license-keys.stx +380 -0
  301. package/views/dashboard/commerce/delivery/shipping-methods.stx +346 -0
  302. package/views/dashboard/commerce/delivery/shipping-rates.stx +338 -0
  303. package/views/dashboard/commerce/delivery/shipping-zones.stx +302 -0
  304. package/views/dashboard/commerce/delivery/tabs.ts +25 -0
  305. package/views/dashboard/commerce/gift-cards/index.stx +561 -0
  306. package/views/dashboard/commerce/manufacturers/index.stx +308 -0
  307. package/views/dashboard/commerce/orders/index.stx +247 -0
  308. package/views/dashboard/commerce/payments/index.stx +535 -0
  309. package/views/dashboard/commerce/pos/index.stx +653 -0
  310. package/views/dashboard/commerce/printers/devices/index.stx +273 -0
  311. package/views/dashboard/commerce/printers/receipts/index.stx +308 -0
  312. package/views/dashboard/commerce/products/detail.stx +563 -0
  313. package/views/dashboard/commerce/products/index.stx +370 -0
  314. package/views/dashboard/commerce/reviews/index.stx +656 -0
  315. package/views/dashboard/commerce/reviews/index.ts +0 -0
  316. package/views/dashboard/commerce/taxes/index.stx +377 -0
  317. package/views/dashboard/commerce/units/index.stx +317 -0
  318. package/views/dashboard/commerce/variants/index.stx +319 -0
  319. package/views/dashboard/commerce/waitlist/products.stx +942 -0
  320. package/views/dashboard/commerce/waitlist/restaurant.stx +1024 -0
  321. package/views/dashboard/components/index.stx +330 -0
  322. package/views/dashboard/composables/index.ts +19 -0
  323. package/views/dashboard/composables/useChart.ts +77 -0
  324. package/views/dashboard/composables/useNavigation.ts +99 -0
  325. package/views/dashboard/composables/useRole.ts +58 -0
  326. package/views/dashboard/composables/useTheme.ts +74 -0
  327. package/views/dashboard/content/authors/index.stx +171 -0
  328. package/views/dashboard/content/blog/index.stx +493 -0
  329. package/views/dashboard/content/categories/index.stx +169 -0
  330. package/views/dashboard/content/comments/index.stx +189 -0
  331. package/views/dashboard/content/dashboard.stx +383 -0
  332. package/views/dashboard/content/files/index.stx +706 -0
  333. package/views/dashboard/content/pages/index.stx +174 -0
  334. package/views/dashboard/content/posts/index.stx +269 -0
  335. package/views/dashboard/content/seo/index.stx +240 -0
  336. package/views/dashboard/content/tags/index.stx +167 -0
  337. package/views/dashboard/data/activity/index.stx +261 -0
  338. package/views/dashboard/data/dashboard/index.stx +116 -0
  339. package/views/dashboard/data/subscribers.stx +270 -0
  340. package/views/dashboard/data/teams.stx +275 -0
  341. package/views/dashboard/data/users.stx +279 -0
  342. package/views/dashboard/dependencies/index.stx +178 -0
  343. package/views/dashboard/deployments/[id].stx +234 -0
  344. package/views/dashboard/deployments/index.stx +9 -0
  345. package/views/dashboard/dns/index.stx +163 -0
  346. package/views/dashboard/environment/index.stx +283 -0
  347. package/views/dashboard/errors/index.stx +274 -0
  348. package/views/dashboard/forgot-password.stx +57 -0
  349. package/views/dashboard/functions/index.stx +159 -0
  350. package/views/dashboard/health/index.stx +248 -0
  351. package/views/dashboard/inbox/activity.stx +350 -0
  352. package/views/dashboard/inbox/index.stx +452 -0
  353. package/views/dashboard/inbox/settings.stx +290 -0
  354. package/views/dashboard/index.stx +252 -0
  355. package/views/dashboard/insights/index.stx +529 -0
  356. package/views/dashboard/jobs/[id].stx +430 -0
  357. package/views/dashboard/jobs/history.stx +222 -0
  358. package/views/dashboard/jobs/index.stx +214 -0
  359. package/views/dashboard/kanban/[id].stx +899 -0
  360. package/views/dashboard/kanban/index.stx +260 -0
  361. package/views/dashboard/layouts/default.stx +565 -0
  362. package/views/dashboard/layouts/guest.stx +10 -0
  363. package/views/dashboard/login.stx +48 -0
  364. package/views/dashboard/logs/index.stx +540 -0
  365. package/views/dashboard/mailboxes/index.stx +149 -0
  366. package/views/dashboard/management/permissions/index.stx +490 -0
  367. package/views/dashboard/marketing/campaigns/index.stx +604 -0
  368. package/views/dashboard/marketing/lists/index.stx +514 -0
  369. package/views/dashboard/marketing/reviews/index.stx +475 -0
  370. package/views/dashboard/marketing/social-posts/index.stx +560 -0
  371. package/views/dashboard/models/[model].stx +195 -0
  372. package/views/dashboard/models/index.stx +159 -0
  373. package/views/dashboard/monitoring/errors/index.stx +415 -0
  374. package/views/dashboard/notifications/dashboard.stx +383 -0
  375. package/views/dashboard/notifications/email.stx +336 -0
  376. package/views/dashboard/notifications/history.stx +373 -0
  377. package/views/dashboard/notifications/sms.stx +332 -0
  378. package/views/dashboard/packages/index.stx +195 -0
  379. package/views/dashboard/queries/[id].stx +381 -0
  380. package/views/dashboard/queries/history.stx +227 -0
  381. package/views/dashboard/queries/index.stx +335 -0
  382. package/views/dashboard/queries/slow.stx +318 -0
  383. package/views/dashboard/queue/index.stx +427 -0
  384. package/views/dashboard/realtime/index.stx +429 -0
  385. package/views/dashboard/register.stx +46 -0
  386. package/views/dashboard/releases/index.stx +389 -0
  387. package/views/dashboard/requests/index.stx +462 -0
  388. package/views/dashboard/serverless/index.stx +475 -0
  389. package/views/dashboard/servers/[id].stx +299 -0
  390. package/views/dashboard/servers/index.stx +483 -0
  391. package/views/dashboard/settings/billing.stx +50 -0
  392. package/views/dashboard/settings/index.stx +256 -0
  393. package/views/dashboard/settings/mail.stx +252 -0
  394. package/views/dashboard/stores/auth.ts +123 -0
  395. package/views/dashboard/stores/ci.ts +342 -0
  396. package/views/dashboard/stores/index.ts +129 -0
  397. package/views/dashboard/stores/kanban.ts +723 -0
  398. package/views/dashboard/stores/rbac.ts +350 -0
  399. package/views/dashboard/stx.config.ts +34 -0
  400. package/views/dashboard/teams/[id].stx +170 -0
  401. package/views/forum/category.stx +92 -0
  402. package/views/forum/index.stx +209 -0
  403. package/views/forum/new-topic.stx +113 -0
  404. package/views/forum/profile.stx +1 -0
  405. package/views/forum/topic.stx +143 -0
  406. package/views/hello-world/[name].stx +47 -0
  407. package/views/index.stx +21 -0
  408. package/views/system-tray/index.stx +147 -0
@@ -0,0 +1,123 @@
1
+ import type { LicenseKeys, NewLicenseKey } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent license keys array using STX useStorage
6
+ const licenseKeys = useStorage<LicenseKeys[]>('licenseKeys', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all license keys
11
+ async function fetchLicenseKeys() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/license-keys`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: LicenseKeys[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ licenseKeys.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load license keys', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching license keys', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createLicenseKey(licenseKey: NewLicenseKey) {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/license-keys`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(licenseKey),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const { data } = await response.json() as { data: LicenseKeys }
49
+ if (data) {
50
+ licenseKeys.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating license key', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateLicenseKey(licenseKey: LicenseKeys) {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/license-keys/${licenseKey.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(licenseKey),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const { data } = await response.json() as { data: LicenseKeys }
76
+ if (data) {
77
+ const index = licenseKeys.value.findIndex(s => s.id === licenseKey.id)
78
+ if (index !== -1) {
79
+ licenseKeys.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating license key', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteLicenseKey(id: number) {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/license-keys/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = licenseKeys.value.findIndex(s => s.id === id)
102
+ if (index !== -1) {
103
+ licenseKeys.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting license key', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useLicenseKeys() {
116
+ return {
117
+ licenseKeys,
118
+ fetchLicenseKeys,
119
+ createLicenseKey,
120
+ updateLicenseKey,
121
+ deleteLicenseKey,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { NewShippingMethod, ShippingMethods } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent shipping methods array using STX useStorage
6
+ const shippingMethods = useStorage<ShippingMethods[]>('shippingMethods', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all shipping methods
11
+ async function fetchShippingMethods() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/shipping-methods`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: ShippingMethods[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ shippingMethods.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load shipping methods', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching shipping methods', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createShippingMethod(shippingMethod: NewShippingMethod) {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/shipping-methods`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(shippingMethod),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const data = await response.json() as ShippingMethods
49
+ if (data) {
50
+ shippingMethods.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating shipping method', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateShippingMethod(shippingMethod: ShippingMethods) {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/shipping-methods/${shippingMethod.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(shippingMethod),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const data = await response.json() as ShippingMethods
76
+ if (data) {
77
+ const index = shippingMethods.value.findIndex(s => s.id === shippingMethod.id)
78
+ if (index !== -1) {
79
+ shippingMethods.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating shipping method', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteShippingMethod(id: number) {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/shipping-methods/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = shippingMethods.value.findIndex(s => s.id === id)
102
+ if (index !== -1) {
103
+ shippingMethods.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting shipping method', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useShippingMethods() {
116
+ return {
117
+ shippingMethods,
118
+ fetchShippingMethods,
119
+ createShippingMethod,
120
+ updateShippingMethod,
121
+ deleteShippingMethod,
122
+ }
123
+ }
@@ -0,0 +1,119 @@
1
+ import type { NewShippingRate, ShippingRates } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent shipping rates array using STX useStorage
6
+ const shippingRates = useStorage<ShippingRates[]>('shippingRates', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all shipping rates
11
+ async function fetchShippingRates() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/shipping-rates`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+
18
+ const { data } = await response.json() as { data: ShippingRates[] }
19
+
20
+ shippingRates.value = data
21
+
22
+ return data
23
+ }
24
+ catch (error) {
25
+ pushToast('error', 'Error fetching shipping rates', { detail: String(error) })
26
+ return []
27
+ }
28
+ }
29
+
30
+ async function createShippingRate(shippingRate: NewShippingRate) {
31
+ try {
32
+ const response = await fetch(`${baseURL}/commerce/shipping-rates`, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ },
37
+ body: JSON.stringify(shippingRate),
38
+ })
39
+
40
+ if (!response.ok) {
41
+ throw new Error(`HTTP error! status: ${response.status}`)
42
+ }
43
+
44
+ const data = await response.json() as ShippingRates
45
+ if (data) {
46
+ shippingRates.value.push(data)
47
+ return data
48
+ }
49
+ return null
50
+ }
51
+ catch (error) {
52
+ pushToast('error', 'Error creating shipping rate', { detail: String(error) })
53
+ return null
54
+ }
55
+ }
56
+
57
+ async function updateShippingRate(shippingRate: ShippingRates) {
58
+ try {
59
+ const response = await fetch(`${baseURL}/commerce/shipping-rates/${shippingRate.id}`, {
60
+ method: 'PATCH',
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ },
64
+ body: JSON.stringify(shippingRate),
65
+ })
66
+
67
+ if (!response.ok) {
68
+ throw new Error(`HTTP error! status: ${response.status}`)
69
+ }
70
+
71
+ const data = await response.json() as ShippingRates
72
+ if (data) {
73
+ const index = shippingRates.value.findIndex(s => s.id === shippingRate.id)
74
+ if (index !== -1) {
75
+ shippingRates.value[index] = data
76
+ }
77
+ return data
78
+ }
79
+ return null
80
+ }
81
+ catch (error) {
82
+ pushToast('error', 'Error updating shipping rate', { detail: String(error) })
83
+ return null
84
+ }
85
+ }
86
+
87
+ async function deleteShippingRate(id: number) {
88
+ try {
89
+ const response = await fetch(`${baseURL}/commerce/shipping-rates/${id}`, {
90
+ method: 'DELETE',
91
+ })
92
+
93
+ if (!response.ok) {
94
+ throw new Error(`HTTP error! status: ${response.status}`)
95
+ }
96
+
97
+ const index = shippingRates.value.findIndex(s => s.id === id)
98
+ if (index !== -1) {
99
+ shippingRates.value.splice(index, 1)
100
+ }
101
+
102
+ return true
103
+ }
104
+ catch (error) {
105
+ pushToast('error', 'Error deleting shipping rate', { detail: String(error) })
106
+ return false
107
+ }
108
+ }
109
+
110
+ // Export the composable
111
+ export function useShippingRates() {
112
+ return {
113
+ shippingRates,
114
+ fetchShippingRates,
115
+ createShippingRate,
116
+ updateShippingRate,
117
+ deleteShippingRate,
118
+ }
119
+ }
@@ -0,0 +1,119 @@
1
+ import type { NewShippingZone, ShippingZones } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent shipping zones array using STX useStorage
6
+ const shippingZones = useStorage<ShippingZones[]>('shippingZones', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all shipping zones
11
+ async function fetchShippingZones() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/shipping-zones`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+
18
+ const { data } = await response.json() as { data: ShippingZones[] }
19
+
20
+ shippingZones.value = data
21
+
22
+ return data
23
+ }
24
+ catch (error) {
25
+ pushToast('error', 'Error fetching shipping zones', { detail: String(error) })
26
+ return []
27
+ }
28
+ }
29
+
30
+ async function createShippingZone(shippingZone: NewShippingZone) {
31
+ try {
32
+ const response = await fetch(`${baseURL}/commerce/shipping-zones`, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ },
37
+ body: JSON.stringify(shippingZone),
38
+ })
39
+
40
+ if (!response.ok) {
41
+ throw new Error(`HTTP error! status: ${response.status}`)
42
+ }
43
+
44
+ const data = await response.json() as ShippingZones
45
+ if (data) {
46
+ shippingZones.value.push(data)
47
+ return data
48
+ }
49
+ return null
50
+ }
51
+ catch (error) {
52
+ pushToast('error', 'Error creating shipping zone', { detail: String(error) })
53
+ return null
54
+ }
55
+ }
56
+
57
+ async function updateShippingZone(shippingZone: ShippingZones) {
58
+ try {
59
+ const response = await fetch(`${baseURL}/commerce/shipping-zones/${shippingZone.id}`, {
60
+ method: 'PATCH',
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ },
64
+ body: JSON.stringify(shippingZone),
65
+ })
66
+
67
+ if (!response.ok) {
68
+ throw new Error(`HTTP error! status: ${response.status}`)
69
+ }
70
+
71
+ const data = await response.json() as ShippingZones
72
+ if (data) {
73
+ const index = shippingZones.value.findIndex(s => s.id === shippingZone.id)
74
+ if (index !== -1) {
75
+ shippingZones.value[index] = data
76
+ }
77
+ return data
78
+ }
79
+ return null
80
+ }
81
+ catch (error) {
82
+ pushToast('error', 'Error updating shipping zone', { detail: String(error) })
83
+ return null
84
+ }
85
+ }
86
+
87
+ async function deleteShippingZone(id: number) {
88
+ try {
89
+ const response = await fetch(`${baseURL}/commerce/shipping-zones/${id}`, {
90
+ method: 'DELETE',
91
+ })
92
+
93
+ if (!response.ok) {
94
+ throw new Error(`HTTP error! status: ${response.status}`)
95
+ }
96
+
97
+ const index = shippingZones.value.findIndex(s => s.id === id)
98
+ if (index !== -1) {
99
+ shippingZones.value.splice(index, 1)
100
+ }
101
+
102
+ return true
103
+ }
104
+ catch (error) {
105
+ pushToast('error', 'Error deleting shipping zone', { detail: String(error) })
106
+ return false
107
+ }
108
+ }
109
+
110
+ // Export the composable
111
+ export function useShippingZones() {
112
+ return {
113
+ shippingZones,
114
+ fetchShippingZones,
115
+ createShippingZone,
116
+ updateShippingZone,
117
+ deleteShippingZone,
118
+ }
119
+ }
@@ -0,0 +1,119 @@
1
+ import type { TaxRates } from '../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../toasts'
4
+
5
+ // Create a persistent tax rates array using STX useStorage
6
+ const taxRates = useStorage<TaxRates[]>('taxRates', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ async function fetchTaxRates() {
11
+ try {
12
+ const response = await fetch(`${baseURL}/commerce/tax-rates`)
13
+ if (!response.ok) {
14
+ throw new Error(`HTTP error! status: ${response.status}`)
15
+ }
16
+ const data = await response.json() as TaxRates[]
17
+
18
+ if (Array.isArray(data)) {
19
+ taxRates.value = data
20
+ return data
21
+ }
22
+ else {
23
+ pushToast('error', 'Couldn\'t load tax rates', { detail: `Expected array but received ${typeof data}` })
24
+ return []
25
+ }
26
+ }
27
+ catch (error) {
28
+ pushToast('error', 'Couldn\'t load tax rates', { detail: String(error) })
29
+ return taxRates.value
30
+ }
31
+ }
32
+
33
+ async function createTaxRate(taxRate: TaxRates) {
34
+ try {
35
+ const response = await fetch(`${baseURL}/commerce/tax-rates`, {
36
+ method: 'POST',
37
+ headers: { 'Content-Type': 'application/json' },
38
+ body: JSON.stringify(taxRate),
39
+ })
40
+
41
+ if (!response.ok) {
42
+ throw new Error(`HTTP error! status: ${response.status}`)
43
+ }
44
+
45
+ const data = await response.json() as TaxRates
46
+ if (data) {
47
+ taxRates.value.push(data)
48
+ pushToast('success', 'Tax rate created')
49
+ return data
50
+ }
51
+ return null
52
+ }
53
+ catch (error) {
54
+ pushToast('error', 'Failed to create tax rate', { detail: String(error) })
55
+ return null
56
+ }
57
+ }
58
+
59
+ async function updateTaxRate(taxRate: TaxRates) {
60
+ try {
61
+ const response = await fetch(`${baseURL}/commerce/tax-rates/${taxRate.id}`, {
62
+ method: 'PATCH',
63
+ headers: { 'Content-Type': 'application/json' },
64
+ body: JSON.stringify(taxRate),
65
+ })
66
+
67
+ if (!response.ok) {
68
+ throw new Error(`HTTP error! status: ${response.status}`)
69
+ }
70
+
71
+ const data = await response.json() as TaxRates
72
+ if (data) {
73
+ const index = taxRates.value.findIndex(t => t.id === taxRate.id)
74
+ if (index !== -1) {
75
+ taxRates.value[index] = data
76
+ }
77
+ pushToast('success', 'Tax rate updated')
78
+ return data
79
+ }
80
+ return null
81
+ }
82
+ catch (error) {
83
+ pushToast('error', 'Failed to update tax rate', { detail: String(error) })
84
+ return null
85
+ }
86
+ }
87
+
88
+ async function deleteTaxRate(id: number) {
89
+ try {
90
+ const response = await fetch(`${baseURL}/commerce/tax-rates/${id}`, {
91
+ method: 'DELETE',
92
+ })
93
+
94
+ if (!response.ok) {
95
+ throw new Error(`HTTP error! status: ${response.status}`)
96
+ }
97
+
98
+ const index = taxRates.value.findIndex(t => t.id === id)
99
+ if (index !== -1) {
100
+ taxRates.value.splice(index, 1)
101
+ }
102
+ pushToast('success', 'Tax rate deleted')
103
+ return true
104
+ }
105
+ catch (error) {
106
+ pushToast('error', 'Failed to delete tax rate', { detail: String(error) })
107
+ return false
108
+ }
109
+ }
110
+
111
+ export function useTaxRates() {
112
+ return {
113
+ taxRates,
114
+ fetchTaxRates,
115
+ createTaxRate,
116
+ updateTaxRate,
117
+ deleteTaxRate,
118
+ }
119
+ }