@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,119 @@
1
+ import type { Payments } from '../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../toasts'
4
+
5
+ // Create a persistent payments array using STX useStorage
6
+ const payments = useStorage<Payments[]>('payments', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ async function fetchPayments(): Promise<Payments[]> {
11
+ try {
12
+ const response = await fetch(`${baseURL}/commerce/payments`)
13
+ if (!response.ok) {
14
+ throw new Error(`HTTP error! status: ${response.status}`)
15
+ }
16
+ const data = await response.json() as Payments[]
17
+
18
+ if (Array.isArray(data)) {
19
+ payments.value = data
20
+ return data
21
+ }
22
+ else {
23
+ pushToast('error', 'Couldn\'t load payments', { detail: `Expected array but received ${typeof data}` })
24
+ return []
25
+ }
26
+ }
27
+ catch (error) {
28
+ pushToast('error', 'Couldn\'t load payments', { detail: String(error) })
29
+ return payments.value
30
+ }
31
+ }
32
+
33
+ async function createPayment(payment: Payments): Promise<Payments | null> {
34
+ try {
35
+ const response = await fetch(`${baseURL}/commerce/payments`, {
36
+ method: 'POST',
37
+ headers: { 'Content-Type': 'application/json' },
38
+ body: JSON.stringify(payment),
39
+ })
40
+
41
+ if (!response.ok) {
42
+ throw new Error(`HTTP error! status: ${response.status}`)
43
+ }
44
+
45
+ const data = await response.json() as Payments
46
+ if (data) {
47
+ payments.value.push(data)
48
+ pushToast('success', 'Payment recorded')
49
+ return data
50
+ }
51
+ return null
52
+ }
53
+ catch (error) {
54
+ pushToast('error', 'Failed to record payment', { detail: String(error) })
55
+ return null
56
+ }
57
+ }
58
+
59
+ async function updatePayment(payment: Payments): Promise<Payments | null> {
60
+ try {
61
+ const response = await fetch(`${baseURL}/commerce/payments/${payment.id}`, {
62
+ method: 'PATCH',
63
+ headers: { 'Content-Type': 'application/json' },
64
+ body: JSON.stringify(payment),
65
+ })
66
+
67
+ if (!response.ok) {
68
+ throw new Error(`HTTP error! status: ${response.status}`)
69
+ }
70
+
71
+ const data = await response.json() as Payments
72
+ if (data) {
73
+ const index = payments.value.findIndex(p => p.id === payment.id)
74
+ if (index !== -1) {
75
+ payments.value[index] = data
76
+ }
77
+ pushToast('success', 'Payment updated')
78
+ return data
79
+ }
80
+ return null
81
+ }
82
+ catch (error) {
83
+ pushToast('error', 'Failed to update payment', { detail: String(error) })
84
+ return null
85
+ }
86
+ }
87
+
88
+ async function deletePayment(id: number): Promise<boolean> {
89
+ try {
90
+ const response = await fetch(`${baseURL}/commerce/payments/${id}`, {
91
+ method: 'DELETE',
92
+ })
93
+
94
+ if (!response.ok) {
95
+ throw new Error(`HTTP error! status: ${response.status}`)
96
+ }
97
+
98
+ const index = payments.value.findIndex(p => p.id === id)
99
+ if (index !== -1) {
100
+ payments.value.splice(index, 1)
101
+ }
102
+ pushToast('success', 'Payment deleted')
103
+ return true
104
+ }
105
+ catch (error) {
106
+ pushToast('error', 'Failed to delete payment', { detail: String(error) })
107
+ return false
108
+ }
109
+ }
110
+
111
+ export function usePayments() {
112
+ return {
113
+ payments,
114
+ fetchPayments,
115
+ createPayment,
116
+ updatePayment,
117
+ deletePayment,
118
+ }
119
+ }
@@ -0,0 +1,123 @@
1
+ import type { Categories } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent categories array using STX useStorage
6
+ const categories = useStorage<Categories[]>('categories', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all categories
11
+ async function fetchCategories(): Promise<Categories[]> {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/product-categories`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: Categories[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ categories.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load categories', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching categories', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createCategory(category: Categories): Promise<Categories | null> {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/product-categories`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(category),
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: Categories }
49
+ if (data) {
50
+ categories.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating category', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateCategory(category: Categories): Promise<Categories | null> {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/product-categories/${category.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(category),
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: Categories }
76
+ if (data) {
77
+ const index = categories.value.findIndex(c => c.id === category.id)
78
+ if (index !== -1) {
79
+ categories.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating category', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteCategory(id: number): Promise<boolean> {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/product-categories/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = categories.value.findIndex(c => c.id === id)
102
+ if (index !== -1) {
103
+ categories.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting category', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useCategories() {
116
+ return {
117
+ categories,
118
+ fetchCategories,
119
+ createCategory,
120
+ updateCategory,
121
+ deleteCategory,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { Manufacturers } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent manufacturers array using STX useStorage
6
+ const manufacturers = useStorage<Manufacturers[]>('manufacturers', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all manufacturers
11
+ async function fetchManufacturers(): Promise<Manufacturers[]> {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/product-manufacturers`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const { data } = await response.json() as { data: Manufacturers[] }
18
+
19
+ if (Array.isArray(data)) {
20
+ manufacturers.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load manufacturers', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching manufacturers', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createManufacturer(manufacturer: Manufacturers): Promise<Manufacturers | null> {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/product-manufacturers`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(manufacturer),
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: Manufacturers }
49
+ if (data) {
50
+ manufacturers.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating manufacturer', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateManufacturer(manufacturer: Manufacturers): Promise<Manufacturers | null> {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/product-manufacturers/${manufacturer.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(manufacturer),
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: Manufacturers }
76
+ if (data) {
77
+ const index = manufacturers.value.findIndex(m => m.id === manufacturer.id)
78
+ if (index !== -1) {
79
+ manufacturers.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating manufacturer', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteManufacturer(id: number): Promise<boolean> {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/product-manufacturers/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = manufacturers.value.findIndex(m => m.id === id)
102
+ if (index !== -1) {
103
+ manufacturers.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting manufacturer', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useManufacturers() {
116
+ return {
117
+ manufacturers,
118
+ fetchManufacturers,
119
+ createManufacturer,
120
+ updateManufacturer,
121
+ deleteManufacturer,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { Products } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent items array using STX useStorage
6
+ const products = useStorage<Products[]>('products', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all items
11
+ async function fetchProducts(): Promise<Products[]> {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/products`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const data = await response.json() as Products[]
18
+
19
+ if (Array.isArray(data)) {
20
+ products.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load items', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching items', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createProduct(product: Products): Promise<Products | null> {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/products`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(product),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const data = await response.json() as Products
49
+ if (data) {
50
+ products.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating item', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateProduct(product: Products): Promise<Products | null> {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/products/${product.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(product),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const data = await response.json() as Products
76
+ if (data) {
77
+ const index = products.value.findIndex(i => i.id === product.id)
78
+ if (index !== -1) {
79
+ products.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating product', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteProduct(id: number): Promise<boolean> {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/products/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = products.value.findIndex(i => i.id === id)
102
+ if (index !== -1) {
103
+ products.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting product', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useProducts() {
116
+ return {
117
+ products,
118
+ fetchProducts,
119
+ createProduct,
120
+ updateProduct,
121
+ deleteProduct,
122
+ }
123
+ }
@@ -0,0 +1,123 @@
1
+ import type { Reviews } from '../../../types/defaults'
2
+ import { useStorage } from '@stacksjs/browser'
3
+ import { pushToast } from '../../toasts'
4
+
5
+ // Create a persistent reviews array using STX useStorage
6
+ const reviews = useStorage<Reviews[]>('reviews', [])
7
+
8
+ const baseURL = process.env.VITE_API_URL || `http://localhost:${process.env.PORT_API || '3008'}`
9
+
10
+ // Basic fetch function to get all reviews
11
+ async function fetchReviews(): Promise<Reviews[]> {
12
+ try {
13
+ const response = await fetch(`${baseURL}/commerce/products/reviews`)
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`)
16
+ }
17
+ const data = await response.json() as Reviews[]
18
+
19
+ if (Array.isArray(data)) {
20
+ reviews.value = data
21
+ return data
22
+ }
23
+ else {
24
+ pushToast('error', 'Couldn\'t load reviews', { detail: 'Server returned a non-array response' })
25
+ return []
26
+ }
27
+ }
28
+ catch (error) {
29
+ pushToast('error', 'Error fetching reviews', { detail: String(error) })
30
+ return []
31
+ }
32
+ }
33
+
34
+ async function createReview(review: Reviews): Promise<Reviews | null> {
35
+ try {
36
+ const response = await fetch(`${baseURL}/commerce/products/reviews`, {
37
+ method: 'POST',
38
+ headers: {
39
+ 'Content-Type': 'application/json',
40
+ },
41
+ body: JSON.stringify(review),
42
+ })
43
+
44
+ if (!response.ok) {
45
+ throw new Error(`HTTP error! status: ${response.status}`)
46
+ }
47
+
48
+ const data = await response.json() as Reviews
49
+ if (data) {
50
+ reviews.value.push(data)
51
+ return data
52
+ }
53
+ return null
54
+ }
55
+ catch (error) {
56
+ pushToast('error', 'Error creating review', { detail: String(error) })
57
+ return null
58
+ }
59
+ }
60
+
61
+ async function updateReview(review: Reviews): Promise<Reviews | null> {
62
+ try {
63
+ const response = await fetch(`${baseURL}/commerce/products/reviews/${review.id}`, {
64
+ method: 'PATCH',
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ body: JSON.stringify(review),
69
+ })
70
+
71
+ if (!response.ok) {
72
+ throw new Error(`HTTP error! status: ${response.status}`)
73
+ }
74
+
75
+ const data = await response.json() as Reviews
76
+ if (data) {
77
+ const index = reviews.value.findIndex(r => r.id === review.id)
78
+ if (index !== -1) {
79
+ reviews.value[index] = data
80
+ }
81
+ return data
82
+ }
83
+ return null
84
+ }
85
+ catch (error) {
86
+ pushToast('error', 'Error updating review', { detail: String(error) })
87
+ return null
88
+ }
89
+ }
90
+
91
+ async function deleteReview(id: number): Promise<boolean> {
92
+ try {
93
+ const response = await fetch(`${baseURL}/commerce/products/reviews/${id}`, {
94
+ method: 'DELETE',
95
+ })
96
+
97
+ if (!response.ok) {
98
+ throw new Error(`HTTP error! status: ${response.status}`)
99
+ }
100
+
101
+ const index = reviews.value.findIndex(r => r.id === id)
102
+ if (index !== -1) {
103
+ reviews.value.splice(index, 1)
104
+ }
105
+
106
+ return true
107
+ }
108
+ catch (error) {
109
+ pushToast('error', 'Error deleting review', { detail: String(error) })
110
+ return false
111
+ }
112
+ }
113
+
114
+ // Export the composable
115
+ export function useReviews() {
116
+ return {
117
+ reviews,
118
+ fetchReviews,
119
+ createReview,
120
+ updateReview,
121
+ deleteReview,
122
+ }
123
+ }