@stacksjs/defaults 0.70.207 → 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 { Units } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent units array using STX useStorage
6
+ const units = useStorage<Units[]>('units', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all units
11
+ async function fetchUnits(): Promise<Units[]> {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/products/units`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const data = await response.json() as Units[]
18
+
19
+ if (Array.isArray(data)) {
20
+ units.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load units', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching units', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createUnit(unit: Units): Promise<Units | null> {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/products/units`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(unit),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const data = await response.json() as Units
49
+ if (data) {
50
+ units.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating unit', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateUnit(unit: Units): Promise<Units | null> {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/products/units/${unit.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(unit),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const data = await response.json() as Units
76
+ if (data) {
77
+ const index = units.value.findIndex(u => u.id === unit.id)
78
+ if (index !== -1) {
79
+ units.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating unit', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteUnit(id: number): Promise<boolean> {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/products/units/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = units.value.findIndex(u => u.id === id)
102
+ if (index !== -1) {
103
+ units.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting unit', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useUnits() {
116
+ return {
117
+ units,
118
+ fetchUnits,
119
+ createUnit,
120
+ updateUnit,
121
+ deleteUnit,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { ProductVariants } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent variants array using STX useStorage
6
+ const variants = useStorage<ProductVariants[]>('variants', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all variants
11
+ async function fetchVariants() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/products/variants`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const data = await response.json() as ProductVariants[]
18
+
19
+ if (Array.isArray(data)) {
20
+ variants.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load variants', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching variants', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createVariant(variant: ProductVariants) {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/products/variants`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(variant),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const data = await response.json() as ProductVariants
49
+ if (data) {
50
+ variants.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating variant', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateVariant(variant: ProductVariants) {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/products/variants/${variant.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(variant),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const data = await response.json() as ProductVariants
76
+ if (data) {
77
+ const index = variants.value.findIndex(v => v.id === variant.id)
78
+ if (index !== -1) {
79
+ variants.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating variant', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteVariant(id: number) {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/products/variants/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = variants.value.findIndex(v => v.id === id)
102
+ if (index !== -1) {
103
+ variants.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting variant', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useVariants() {
116
+ return {
117
+ variants,
118
+ fetchVariants,
119
+ createVariant,
120
+ updateVariant,
121
+ deleteVariant,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { DeliveryRoutes, NewDeliveryRoute } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent delivery routes array using STX useStorage
6
+ const deliveryRoutes = useStorage<DeliveryRoutes[]>('deliveryRoutes', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all delivery routes
11
+ async function fetchDeliveryRoutes() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/delivery-routes`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: DeliveryRoutes[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ deliveryRoutes.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load delivery routes', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching delivery routes', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createDeliveryRoute(deliveryRoute: NewDeliveryRoute) {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/delivery-routes`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(deliveryRoute),
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: DeliveryRoutes }
49
+ if (data) {
50
+ deliveryRoutes.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating delivery route', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateDeliveryRoute(deliveryRoute: DeliveryRoutes) {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/delivery-routes/${deliveryRoute.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(deliveryRoute),
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: DeliveryRoutes }
76
+ if (data) {
77
+ const index = deliveryRoutes.value.findIndex(s => s.id === deliveryRoute.id)
78
+ if (index !== -1) {
79
+ deliveryRoutes.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating delivery route', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteDeliveryRoute(id: number) {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/delivery-routes/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = deliveryRoutes.value.findIndex(s => s.id === id)
102
+ if (index !== -1) {
103
+ deliveryRoutes.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting delivery route', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useDeliveryRoutes() {
116
+ return {
117
+ deliveryRoutes,
118
+ fetchDeliveryRoutes,
119
+ createDeliveryRoute,
120
+ updateDeliveryRoute,
121
+ deleteDeliveryRoute,
122
+ }
123
+ }
@@ -0,0 +1,119 @@
1
+ import type { DigitalDeliveries } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent digital deliveries array using STX useStorage
6
+ const digitalDeliveries = useStorage<DigitalDeliveries[]>('digitalDeliveries', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all digital deliveries
11
+ async function fetchDigitalDeliveries() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/digital-deliveries`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+
18
+ const { data } = await response.json() as { data: DigitalDeliveries[] }
19
+
20
+ digitalDeliveries.value = data
21
+
22
+ return data
23
+ }
24
+ catch (error) {
25
+ pushToast('error', 'Error fetching digital deliveries', { detail: String(error) })
26
+ return []
27
+ }
28
+ }
29
+
30
+ async function createDigitalDelivery(digitalDelivery: Omit<DigitalDeliveries, 'id'>) {
31
+ try {
32
+ const response = await fetch(`${baseURL}/commerce/digital-deliveries`, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ },
37
+ body: JSON.stringify(digitalDelivery),
38
+ })
39
+
40
+ if (!response.ok) {
41
+ throw new Error(`HTTP error! status: ${response.status}`)
42
+ }
43
+
44
+ const data = await response.json() as DigitalDeliveries
45
+ if (data) {
46
+ digitalDeliveries.value.push(data)
47
+ return data
48
+ }
49
+ return null
50
+ }
51
+ catch (error) {
52
+ pushToast('error', 'Error creating digital delivery', { detail: String(error) })
53
+ return null
54
+ }
55
+ }
56
+
57
+ async function updateDigitalDelivery(digitalDelivery: DigitalDeliveries) {
58
+ try {
59
+ const response = await fetch(`${baseURL}/commerce/digital-deliveries/${digitalDelivery.id}`, {
60
+ method: 'PATCH',
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ },
64
+ body: JSON.stringify(digitalDelivery),
65
+ })
66
+
67
+ if (!response.ok) {
68
+ throw new Error(`HTTP error! status: ${response.status}`)
69
+ }
70
+
71
+ const data = await response.json() as DigitalDeliveries
72
+ if (data) {
73
+ const index = digitalDeliveries.value.findIndex(d => d.id === digitalDelivery.id)
74
+ if (index !== -1) {
75
+ digitalDeliveries.value[index] = data
76
+ }
77
+ return data
78
+ }
79
+ return null
80
+ }
81
+ catch (error) {
82
+ pushToast('error', 'Error updating digital delivery', { detail: String(error) })
83
+ return null
84
+ }
85
+ }
86
+
87
+ async function deleteDigitalDelivery(id: number) {
88
+ try {
89
+ const response = await fetch(`${baseURL}/commerce/digital-deliveries/${id}`, {
90
+ method: 'DELETE',
91
+ })
92
+
93
+ if (!response.ok) {
94
+ throw new Error(`HTTP error! status: ${response.status}`)
95
+ }
96
+
97
+ const index = digitalDeliveries.value.findIndex(d => d.id === id)
98
+ if (index !== -1) {
99
+ digitalDeliveries.value.splice(index, 1)
100
+ }
101
+
102
+ return true
103
+ }
104
+ catch (error) {
105
+ pushToast('error', 'Error deleting digital delivery', { detail: String(error) })
106
+ return false
107
+ }
108
+ }
109
+
110
+ // Export the composable
111
+ export function useDigitalDeliveries() {
112
+ return {
113
+ digitalDeliveries,
114
+ fetchDigitalDeliveries,
115
+ createDigitalDelivery,
116
+ updateDigitalDelivery,
117
+ deleteDigitalDelivery,
118
+ }
119
+ }
@@ -0,0 +1,123 @@
1
+ import type { Drivers, NewDriver } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent drivers array using STX useStorage
6
+ const drivers = useStorage<Drivers[]>('drivers', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all drivers
11
+ async function fetchDrivers() {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/drivers`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: Drivers[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ drivers.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load drivers', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching drivers', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createDriver(driver: NewDriver) {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/drivers`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(driver),
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: Drivers }
49
+ if (data) {
50
+ drivers.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating driver', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateDriver(driver: Drivers) {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/drivers/${driver.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(driver),
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: Drivers }
76
+ if (data) {
77
+ const index = drivers.value.findIndex(s => s.id === driver.id)
78
+ if (index !== -1) {
79
+ drivers.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating driver', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteDriver(id: number) {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/drivers/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = drivers.value.findIndex(s => s.id === id)
102
+ if (index !== -1) {
103
+ drivers.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting driver', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useDrivers() {
116
+ return {
117
+ drivers,
118
+ fetchDrivers,
119
+ createDriver,
120
+ updateDriver,
121
+ deleteDriver,
122
+ }
123
+ }