@stacksjs/defaults 0.70.229 → 0.70.230

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 (1146) hide show
  1. package/ai/AGENTS.md +4 -4
  2. package/ai/skills/stacks-actions/SKILL.md +48 -12
  3. package/ai/skills/stacks-api/SKILL.md +12 -7
  4. package/ai/skills/stacks-auth/SKILL.md +2 -1
  5. package/ai/skills/stacks-auto-imports/SKILL.md +7 -0
  6. package/ai/skills/stacks-browse/SKILL.md +12 -0
  7. package/ai/skills/stacks-browse/scripts/browse.ts +310 -14
  8. package/ai/skills/stacks-dashboard/SKILL.md +315 -84
  9. package/ai/skills/stacks-dashboard/scripts/audit.ts +374 -0
  10. package/ai/skills/stacks-database/SKILL.md +4 -0
  11. package/ai/skills/stacks-development/SKILL.md +9 -6
  12. package/ai/skills/stacks-email/SKILL.md +29 -3
  13. package/ai/skills/stacks-env/SKILL.md +25 -5
  14. package/ai/skills/stacks-faker/SKILL.md +3 -3
  15. package/ai/skills/stacks-migrations/SKILL.md +21 -2
  16. package/ai/skills/stacks-models/SKILL.md +58 -1
  17. package/ai/skills/stacks-notifications/SKILL.md +14 -10
  18. package/ai/skills/stacks-orm/SKILL.md +15 -1
  19. package/ai/skills/stacks-payments/SKILL.md +32 -0
  20. package/ai/skills/stacks-search-engine/SKILL.md +21 -13
  21. package/ai/skills/stacks-stx/SKILL.md +109 -16
  22. package/ai/skills/stacks-technical-diagrams/assets/template.html +49 -49
  23. package/app/Actions/Auth/CreateTokenAction.ts +13 -12
  24. package/app/Actions/Auth/ListTokensAction.ts +1 -1
  25. package/app/Actions/Auth/token-request.test.ts +26 -0
  26. package/app/Actions/Auth/token-request.ts +22 -0
  27. package/app/Actions/Commerce/CouponDestroyAction.ts +8 -2
  28. package/app/Actions/Commerce/CouponShowAction.ts +7 -1
  29. package/app/Actions/Commerce/CouponStoreAction.ts +2 -1
  30. package/app/Actions/Commerce/CouponUpdateAction.ts +11 -13
  31. package/app/Actions/Commerce/CustomerDestroyAction.ts +8 -2
  32. package/app/Actions/Commerce/CustomerShowAction.ts +7 -1
  33. package/app/Actions/Commerce/CustomerStoreAction.ts +6 -3
  34. package/app/Actions/Commerce/CustomerUpdateAction.ts +15 -5
  35. package/app/Actions/Commerce/GiftCardDestroyAction.ts +8 -2
  36. package/app/Actions/Commerce/GiftCardShowAction.ts +7 -1
  37. package/app/Actions/Commerce/GiftCardStoreAction.ts +3 -16
  38. package/app/Actions/Commerce/GiftCardUpdateAction.ts +12 -9
  39. package/app/Actions/Commerce/OrderDestroyAction.ts +8 -2
  40. package/app/Actions/Commerce/OrderShowAction.ts +7 -1
  41. package/app/Actions/Commerce/OrderStoreAction.ts +3 -13
  42. package/app/Actions/Commerce/OrderUpdateAction.ts +12 -17
  43. package/app/Actions/Commerce/PaymentDestroyAction.ts +8 -2
  44. package/app/Actions/Commerce/PaymentShowAction.ts +7 -1
  45. package/app/Actions/Commerce/PaymentUpdateAction.ts +8 -3
  46. package/app/Actions/Commerce/PrintDeviceDestroyAction.ts +10 -4
  47. package/app/Actions/Commerce/PrintDeviceShowAction.ts +7 -1
  48. package/app/Actions/Commerce/PrintDeviceStoreAction.ts +4 -12
  49. package/app/Actions/Commerce/PrintDeviceUpdateAction.ts +12 -13
  50. package/app/Actions/Commerce/Product/ManufacturerDestroyAction.ts +10 -6
  51. package/app/Actions/Commerce/Product/ManufacturerShowAction.ts +9 -3
  52. package/app/Actions/Commerce/Product/ManufacturerStoreAction.ts +7 -2
  53. package/app/Actions/Commerce/Product/ManufacturerUpdateAction.ts +27 -0
  54. package/app/Actions/Commerce/Product/ProductCategoryDestroyAction.ts +23 -0
  55. package/app/Actions/Commerce/Product/ProductCategoryStoreAction.ts +5 -2
  56. package/app/Actions/Commerce/Product/ProductCategoryUpdateAction.ts +27 -0
  57. package/app/Actions/Commerce/Product/ProductDestroyAction.ts +8 -2
  58. package/app/Actions/Commerce/Product/ProductShowAction.ts +7 -1
  59. package/app/Actions/Commerce/Product/ProductStoreAction.ts +2 -0
  60. package/app/Actions/Commerce/Product/ProductUnitDestroyAction.ts +10 -4
  61. package/app/Actions/Commerce/Product/ProductUnitShowAction.ts +7 -1
  62. package/app/Actions/Commerce/Product/ProductUnitStoreAction.ts +7 -2
  63. package/app/Actions/Commerce/Product/ProductUnitUpdateAction.ts +27 -0
  64. package/app/Actions/Commerce/Product/ProductUpdateAction.ts +12 -2
  65. package/app/Actions/Commerce/Product/ProductVariantDestroyAction.ts +10 -4
  66. package/app/Actions/Commerce/Product/ProductVariantShowAction.ts +7 -1
  67. package/app/Actions/Commerce/Product/ProductVariantStoreAction.ts +7 -2
  68. package/app/Actions/Commerce/Product/ProductVariantUpdateAction.ts +13 -3
  69. package/app/Actions/Commerce/ReceiptDestroyAction.ts +10 -4
  70. package/app/Actions/Commerce/ReceiptShowAction.ts +7 -1
  71. package/app/Actions/Commerce/ReceiptStoreAction.ts +4 -13
  72. package/app/Actions/Commerce/ReceiptUpdateAction.ts +12 -16
  73. package/app/Actions/Commerce/ReviewDestroyAction.ts +22 -0
  74. package/app/Actions/Commerce/ReviewShowAction.ts +7 -1
  75. package/app/Actions/Commerce/ReviewStoreAction.ts +4 -11
  76. package/app/Actions/Commerce/ReviewUpdateAction.ts +12 -14
  77. package/app/Actions/Commerce/Shipping/DeliveryRouteDestroyAction.ts +8 -2
  78. package/app/Actions/Commerce/Shipping/DeliveryRouteShowAction.ts +7 -1
  79. package/app/Actions/Commerce/Shipping/DeliveryRouteStoreAction.ts +12 -2
  80. package/app/Actions/Commerce/Shipping/DeliveryRouteUpdateAction.ts +21 -4
  81. package/app/Actions/Commerce/Shipping/DigitalDeliveryDestroyAction.ts +8 -2
  82. package/app/Actions/Commerce/Shipping/DigitalDeliveryShowAction.ts +7 -1
  83. package/app/Actions/Commerce/Shipping/DigitalDeliveryStoreAction.ts +2 -0
  84. package/app/Actions/Commerce/Shipping/DigitalDeliveryUpdateAction.ts +13 -3
  85. package/app/Actions/Commerce/{DriverDestroyAction.ts → Shipping/DriverDestroyAction.ts} +8 -4
  86. package/app/Actions/Commerce/Shipping/DriverShowAction.ts +7 -1
  87. package/app/Actions/Commerce/Shipping/DriverStoreAction.ts +4 -1
  88. package/app/Actions/Commerce/Shipping/DriverUpdateAction.ts +13 -3
  89. package/app/Actions/Commerce/Shipping/LicenseKeyDestroyAction.ts +8 -2
  90. package/app/Actions/Commerce/Shipping/LicenseKeyShowAction.ts +7 -1
  91. package/app/Actions/Commerce/Shipping/LicenseKeyStoreAction.ts +12 -2
  92. package/app/Actions/Commerce/Shipping/LicenseKeyUpdateAction.ts +21 -4
  93. package/app/Actions/Commerce/Shipping/ShippingMethodDestroyAction.ts +8 -2
  94. package/app/Actions/Commerce/Shipping/ShippingMethodShowAction.ts +7 -1
  95. package/app/Actions/Commerce/Shipping/ShippingMethodStoreAction.ts +3 -1
  96. package/app/Actions/Commerce/Shipping/ShippingMethodUpdateAction.ts +12 -2
  97. package/app/Actions/Commerce/Shipping/ShippingRateDestroyAction.ts +8 -2
  98. package/app/Actions/Commerce/Shipping/ShippingRateShowAction.ts +7 -1
  99. package/app/Actions/Commerce/Shipping/ShippingRateStoreAction.ts +11 -2
  100. package/app/Actions/Commerce/Shipping/ShippingRateUpdateAction.ts +20 -3
  101. package/app/Actions/Commerce/Shipping/ShippingZoneDestroyAction.ts +8 -2
  102. package/app/Actions/Commerce/Shipping/ShippingZoneShowAction.ts +7 -1
  103. package/app/Actions/Commerce/Shipping/ShippingZoneStoreAction.ts +3 -1
  104. package/app/Actions/Commerce/Shipping/ShippingZoneUpdateAction.ts +12 -2
  105. package/app/Actions/Commerce/TaxRateDestroyAction.ts +10 -4
  106. package/app/Actions/Commerce/TaxRateShowAction.ts +7 -1
  107. package/app/Actions/Commerce/TaxRateStoreAction.ts +4 -9
  108. package/app/Actions/Commerce/TaxRateUpdateAction.ts +12 -10
  109. package/app/Actions/Commerce/WaitlistProductDestroyAction.ts +10 -4
  110. package/app/Actions/Commerce/WaitlistProductShowAction.ts +7 -1
  111. package/app/Actions/Commerce/WaitlistProductStoreAction.ts +4 -12
  112. package/app/Actions/Commerce/WaitlistProductUpdateAction.ts +12 -15
  113. package/app/Actions/Commerce/WaitlistRestaurantDestroyAction.ts +10 -4
  114. package/app/Actions/Commerce/WaitlistRestaurantShowAction.ts +7 -1
  115. package/app/Actions/Commerce/WaitlistRestaurantStoreAction.ts +4 -16
  116. package/app/Actions/Commerce/WaitlistRestaurantUpdateAction.ts +12 -19
  117. package/app/Actions/Commerce/commerce-action.test.ts +31 -0
  118. package/app/Actions/Commerce/commerce-action.ts +23 -0
  119. package/app/Actions/Dashboard/Actions/GetActions.ts +12 -9
  120. package/app/Actions/Dashboard/Analytics/BlogAnalyticsAction.ts +2 -63
  121. package/app/Actions/Dashboard/Analytics/BrowserAnalyticsAction.ts +2 -47
  122. package/app/Actions/Dashboard/Analytics/CommerceAnalyticsAction.ts +2 -69
  123. package/app/Actions/Dashboard/Analytics/CountryAnalyticsAction.ts +2 -46
  124. package/app/Actions/Dashboard/Analytics/DeviceAnalyticsAction.ts +2 -63
  125. package/app/Actions/Dashboard/Analytics/EventAnalyticsAction.ts +47 -84
  126. package/app/Actions/Dashboard/Analytics/EventStoreAction.ts +60 -0
  127. package/app/Actions/Dashboard/Analytics/MarketingAnalyticsAction.ts +52 -70
  128. package/app/Actions/Dashboard/Analytics/PageAnalyticsAction.ts +2 -50
  129. package/app/Actions/Dashboard/Analytics/ReferrerAnalyticsAction.ts +2 -77
  130. package/app/Actions/Dashboard/Analytics/SalesAnalyticsAction.ts +88 -60
  131. package/app/Actions/Dashboard/Analytics/WebAnalyticsAction.ts +24 -108
  132. package/app/Actions/Dashboard/Analytics/analytics-record.test.ts +35 -0
  133. package/app/Actions/Dashboard/Analytics/analytics-record.ts +93 -0
  134. package/app/Actions/Dashboard/Analytics/campaign-analytics.test.ts +97 -0
  135. package/app/Actions/Dashboard/Analytics/campaign-analytics.ts +174 -0
  136. package/app/Actions/Dashboard/Analytics/event-analytics.test.ts +56 -0
  137. package/app/Actions/Dashboard/Analytics/event-analytics.ts +136 -0
  138. package/app/Actions/Dashboard/Analytics/request-analytics.test.ts +132 -0
  139. package/app/Actions/Dashboard/Analytics/request-analytics.ts +286 -0
  140. package/app/Actions/Dashboard/Analytics/sales-analytics.test.ts +66 -0
  141. package/app/Actions/Dashboard/Analytics/sales-analytics.ts +226 -0
  142. package/app/Actions/Dashboard/Buddy/BuddyChatAction.ts +57 -0
  143. package/app/Actions/Dashboard/Buddy/BuddyChatClearAction.ts +14 -0
  144. package/app/Actions/Dashboard/Buddy/BuddyChatStateAction.ts +31 -0
  145. package/app/Actions/Dashboard/Buddy/buddy-chat.test.ts +31 -0
  146. package/app/Actions/Dashboard/Buddy/buddy-chat.ts +49 -0
  147. package/app/Actions/Dashboard/BuddyDashboardAction.ts +2 -34
  148. package/app/Actions/Dashboard/Ci/failure-notifier.ts +1 -1
  149. package/app/Actions/Dashboard/Ci/runner-pressure-monitor.ts +1 -1
  150. package/app/Actions/Dashboard/Cloud/CloudIndexAction.ts +4 -53
  151. package/app/Actions/Dashboard/Cloud/ServerlessIndexAction.ts +20 -0
  152. package/app/Actions/Dashboard/Cloud/cloud-overview.test.ts +180 -0
  153. package/app/Actions/Dashboard/Cloud/cloud-overview.ts +575 -0
  154. package/app/Actions/Dashboard/Commerce/CommerceCategoriesAction.ts +32 -0
  155. package/app/Actions/Dashboard/Commerce/CommerceCouponsAction.ts +23 -37
  156. package/app/Actions/Dashboard/Commerce/CommerceCustomersAction.ts +21 -36
  157. package/app/Actions/Dashboard/Commerce/CommerceDashboardAction.ts +50 -84
  158. package/app/Actions/Dashboard/Commerce/CommerceDeliveryAction.ts +23 -52
  159. package/app/Actions/Dashboard/Commerce/CommerceGiftCardsAction.ts +23 -37
  160. package/app/Actions/Dashboard/Commerce/CommerceOrdersAction.ts +50 -39
  161. package/app/Actions/Dashboard/Commerce/CommercePaymentsAction.ts +28 -47
  162. package/app/Actions/Dashboard/Commerce/CommercePosAction.ts +71 -0
  163. package/app/Actions/Dashboard/Commerce/CommercePosCheckoutAction.ts +355 -0
  164. package/app/Actions/Dashboard/Commerce/CommercePrintDevicesAction.ts +27 -0
  165. package/app/Actions/Dashboard/Commerce/CommercePrintLogsAction.ts +124 -0
  166. package/app/Actions/Dashboard/Commerce/CommerceProductDetailAction.ts +68 -0
  167. package/app/Actions/Dashboard/Commerce/CommerceProductsAction.ts +50 -38
  168. package/app/Actions/Dashboard/Commerce/CommerceTaxesAction.ts +15 -34
  169. package/app/Actions/Dashboard/Commerce/DeliveryRouteIndexAction.ts +29 -0
  170. package/app/Actions/Dashboard/Commerce/DigitalDeliveryIndexAction.ts +23 -0
  171. package/app/Actions/Dashboard/Commerce/DriverIndexAction.ts +26 -0
  172. package/app/Actions/Dashboard/Commerce/LicenseKeyIndexAction.ts +39 -0
  173. package/app/Actions/Dashboard/Commerce/LicenseKeyOptionsAction.ts +34 -0
  174. package/app/Actions/Dashboard/Commerce/ManufacturerIndexAction.ts +39 -0
  175. package/app/Actions/Dashboard/Commerce/PaymentRefundAction.ts +36 -0
  176. package/app/Actions/Dashboard/Commerce/PosIndexAction.ts +1 -57
  177. package/app/Actions/Dashboard/Commerce/ProductUnitDefaultAction.ts +23 -0
  178. package/app/Actions/Dashboard/Commerce/ProductUnitIndexAction.ts +38 -0
  179. package/app/Actions/Dashboard/Commerce/ProductVariantIndexAction.ts +37 -0
  180. package/app/Actions/Dashboard/Commerce/ProductWaitlistIndexAction.ts +41 -0
  181. package/app/Actions/Dashboard/Commerce/RestaurantWaitlistIndexAction.ts +36 -0
  182. package/app/Actions/Dashboard/Commerce/ReviewIndexAction.ts +37 -38
  183. package/app/Actions/Dashboard/Commerce/ShippingMethodIndexAction.ts +32 -0
  184. package/app/Actions/Dashboard/Commerce/ShippingRateIndexAction.ts +35 -0
  185. package/app/Actions/Dashboard/Commerce/ShippingZoneIndexAction.ts +31 -0
  186. package/app/Actions/Dashboard/Commerce/TaxRateDefaultAction.ts +23 -0
  187. package/app/Actions/Dashboard/Commerce/commerce-category-records.test.ts +81 -0
  188. package/app/Actions/Dashboard/Commerce/commerce-category-records.ts +62 -0
  189. package/app/Actions/Dashboard/Commerce/commerce-customer-records.test.ts +72 -0
  190. package/app/Actions/Dashboard/Commerce/commerce-customer-records.ts +66 -0
  191. package/app/Actions/Dashboard/Commerce/commerce-dashboard.test.ts +158 -0
  192. package/app/Actions/Dashboard/Commerce/commerce-dashboard.ts +511 -0
  193. package/app/Actions/Dashboard/Commerce/commerce-delivery.test.ts +115 -0
  194. package/app/Actions/Dashboard/Commerce/commerce-delivery.ts +281 -0
  195. package/app/Actions/Dashboard/Commerce/commerce-order-records.test.ts +136 -0
  196. package/app/Actions/Dashboard/Commerce/commerce-order-records.ts +213 -0
  197. package/app/Actions/Dashboard/Commerce/commerce-pos.test.ts +95 -0
  198. package/app/Actions/Dashboard/Commerce/commerce-pos.ts +260 -0
  199. package/app/Actions/Dashboard/Commerce/commerce-product-records.test.ts +139 -0
  200. package/app/Actions/Dashboard/Commerce/commerce-product-records.ts +298 -0
  201. package/app/Actions/Dashboard/Commerce/commerce-record.test.ts +58 -0
  202. package/app/Actions/Dashboard/Commerce/commerce-record.ts +213 -0
  203. package/app/Actions/Dashboard/Commerce/coupon-records.test.ts +91 -0
  204. package/app/Actions/Dashboard/Commerce/coupon-records.ts +141 -0
  205. package/app/Actions/Dashboard/Commerce/delivery-route-records.test.ts +52 -0
  206. package/app/Actions/Dashboard/Commerce/delivery-route-records.ts +113 -0
  207. package/app/Actions/Dashboard/Commerce/digital-delivery-records.test.ts +52 -0
  208. package/app/Actions/Dashboard/Commerce/digital-delivery-records.ts +70 -0
  209. package/app/Actions/Dashboard/Commerce/driver-records.test.ts +42 -0
  210. package/app/Actions/Dashboard/Commerce/driver-records.ts +92 -0
  211. package/app/Actions/Dashboard/Commerce/gift-card-records.test.ts +120 -0
  212. package/app/Actions/Dashboard/Commerce/gift-card-records.ts +181 -0
  213. package/app/Actions/Dashboard/Commerce/license-key-records.test.ts +68 -0
  214. package/app/Actions/Dashboard/Commerce/license-key-records.ts +135 -0
  215. package/app/Actions/Dashboard/Commerce/manufacturer-records.test.ts +63 -0
  216. package/app/Actions/Dashboard/Commerce/manufacturer-records.ts +84 -0
  217. package/app/Actions/Dashboard/Commerce/payment-records.test.ts +105 -0
  218. package/app/Actions/Dashboard/Commerce/payment-records.ts +227 -0
  219. package/app/Actions/Dashboard/Commerce/print-device-records.test.ts +66 -0
  220. package/app/Actions/Dashboard/Commerce/print-device-records.ts +76 -0
  221. package/app/Actions/Dashboard/Commerce/print-log-records.test.ts +110 -0
  222. package/app/Actions/Dashboard/Commerce/print-log-records.ts +121 -0
  223. package/app/Actions/Dashboard/Commerce/product-unit-records.test.ts +90 -0
  224. package/app/Actions/Dashboard/Commerce/product-unit-records.ts +97 -0
  225. package/app/Actions/Dashboard/Commerce/product-variant-records.test.ts +85 -0
  226. package/app/Actions/Dashboard/Commerce/product-variant-records.ts +90 -0
  227. package/app/Actions/Dashboard/Commerce/product-waitlist-records.test.ts +101 -0
  228. package/app/Actions/Dashboard/Commerce/product-waitlist-records.ts +156 -0
  229. package/app/Actions/Dashboard/Commerce/restaurant-waitlist-records.test.ts +108 -0
  230. package/app/Actions/Dashboard/Commerce/restaurant-waitlist-records.ts +186 -0
  231. package/app/Actions/Dashboard/Commerce/review-records.test.ts +125 -0
  232. package/app/Actions/Dashboard/Commerce/review-records.ts +149 -0
  233. package/app/Actions/Dashboard/Commerce/shipping-method-records.test.ts +55 -0
  234. package/app/Actions/Dashboard/Commerce/shipping-method-records.ts +106 -0
  235. package/app/Actions/Dashboard/Commerce/shipping-rate-records.test.ts +48 -0
  236. package/app/Actions/Dashboard/Commerce/shipping-rate-records.ts +147 -0
  237. package/app/Actions/Dashboard/Commerce/shipping-zone-records.test.ts +54 -0
  238. package/app/Actions/Dashboard/Commerce/shipping-zone-records.ts +88 -0
  239. package/app/Actions/Dashboard/Commerce/tax-rate-records.test.ts +100 -0
  240. package/app/Actions/Dashboard/Commerce/tax-rate-records.ts +67 -0
  241. package/app/Actions/Dashboard/Content/AuthorStoreAction.ts +12 -14
  242. package/app/Actions/Dashboard/Content/AuthorUpdateAction.ts +50 -0
  243. package/app/Actions/Dashboard/Content/CategoryDestroyAction.ts +7 -6
  244. package/app/Actions/Dashboard/Content/CategoryStoreAction.ts +7 -0
  245. package/app/Actions/Dashboard/Content/ContentDashboardAction.test.ts +118 -0
  246. package/app/Actions/Dashboard/Content/ContentDashboardAction.ts +248 -47
  247. package/app/Actions/Dashboard/Content/FileDestroyAction.ts +24 -0
  248. package/app/Actions/Dashboard/Content/FileDirectoryStoreAction.ts +25 -0
  249. package/app/Actions/Dashboard/Content/FileIndexAction.ts +16 -16
  250. package/app/Actions/Dashboard/Content/FileUploadAction.ts +42 -0
  251. package/app/Actions/Dashboard/Content/PageStoreAction.ts +12 -13
  252. package/app/Actions/Dashboard/Content/PageUpdateAction.ts +46 -0
  253. package/app/Actions/Dashboard/Content/PostDestroyAction.ts +9 -12
  254. package/app/Actions/Dashboard/Content/PostIndexAction.ts +48 -7
  255. package/app/Actions/Dashboard/Content/PostStoreAction.ts +20 -3
  256. package/app/Actions/Dashboard/Content/PostUpdateAction.ts +20 -3
  257. package/app/Actions/Dashboard/Content/TagDestroyAction.ts +7 -6
  258. package/app/Actions/Dashboard/Content/TagIndexAction.ts +22 -12
  259. package/app/Actions/Dashboard/Content/TagStoreAction.ts +2 -3
  260. package/app/Actions/Dashboard/Content/author-input.ts +34 -0
  261. package/app/Actions/Dashboard/Content/content-record-input.test.ts +45 -0
  262. package/app/Actions/Dashboard/Content/file-manager.test.ts +165 -0
  263. package/app/Actions/Dashboard/Content/file-manager.ts +487 -0
  264. package/app/Actions/Dashboard/Content/page-input.ts +27 -0
  265. package/app/Actions/Dashboard/Content/post-input.ts +68 -0
  266. package/app/Actions/Dashboard/DashboardActivityAction.ts +35 -48
  267. package/app/Actions/Dashboard/DashboardHealthAction.ts +21 -43
  268. package/app/Actions/Dashboard/DashboardHomeAction.test.ts +24 -2
  269. package/app/Actions/Dashboard/DashboardHomeAction.ts +88 -75
  270. package/app/Actions/Dashboard/DashboardLegacyActions.test.ts +32 -0
  271. package/app/Actions/Dashboard/DashboardStatsAction.ts +39 -17
  272. package/app/Actions/Dashboard/Data/ActivityIndexAction.ts +33 -14
  273. package/app/Actions/Dashboard/Data/SubscriberIndexAction.ts +30 -30
  274. package/app/Actions/Dashboard/Data/TeamIndexAction.ts +31 -25
  275. package/app/Actions/Dashboard/Data/UserIndexAction.ts +29 -31
  276. package/app/Actions/Dashboard/Data/data-records.test.ts +19 -0
  277. package/app/Actions/Dashboard/Data/data-records.ts +28 -0
  278. package/app/Actions/Dashboard/Deployments/CreateDeployment.ts +105 -2
  279. package/app/Actions/Dashboard/Deployments/GetAverageDeploymentTime.ts +5 -5
  280. package/app/Actions/Dashboard/Deployments/GetDeployScript.ts +26 -2
  281. package/app/Actions/Dashboard/Deployments/GetDeployment.ts +31 -0
  282. package/app/Actions/Dashboard/Deployments/GetDeploymentCount.ts +3 -2
  283. package/app/Actions/Dashboard/Deployments/GetDeploymentLiveTerminalOutput.ts +29 -2
  284. package/app/Actions/Dashboard/Deployments/GetDeployments.ts +9 -4
  285. package/app/Actions/Dashboard/Deployments/GetRecentDeployments.ts +4 -2
  286. package/app/Actions/Dashboard/Deployments/UpdateDeployScript.ts +31 -1
  287. package/app/Actions/Dashboard/Deployments/deployment-input.test.ts +50 -0
  288. package/app/Actions/Dashboard/Deployments/deployment-input.ts +48 -0
  289. package/app/Actions/Dashboard/Email/CapturedMailIndexAction.ts +27 -0
  290. package/app/Actions/Dashboard/Email/CapturedMailShowAction.ts +31 -0
  291. package/app/Actions/Dashboard/Email/InboxActivityAction.ts +250 -0
  292. package/app/Actions/Dashboard/Email/InboxDeleteAction.ts +26 -0
  293. package/app/Actions/Dashboard/Email/InboxIndexAction.ts +5 -12
  294. package/app/Actions/Dashboard/Email/InboxMarkReadAction.ts +13 -23
  295. package/app/Actions/Dashboard/Email/InboxMarkUnreadAction.ts +26 -0
  296. package/app/Actions/Dashboard/Email/InboxPreferenceShowAction.ts +18 -0
  297. package/app/Actions/Dashboard/Email/InboxPreferenceUpdateAction.ts +163 -0
  298. package/app/Actions/Dashboard/Email/InboxSendAction.ts +44 -0
  299. package/app/Actions/Dashboard/Email/InboxShowAction.ts +11 -16
  300. package/app/Actions/Dashboard/Email/InboxStatsAction.ts +5 -13
  301. package/app/Actions/Dashboard/Email/captured-mail.test.ts +77 -0
  302. package/app/Actions/Dashboard/Email/captured-mail.ts +223 -0
  303. package/app/Actions/Dashboard/Email/mail-preference.test.ts +72 -0
  304. package/app/Actions/Dashboard/Email/mail-preference.ts +185 -0
  305. package/app/Actions/Dashboard/Email/sanitize-inbox-html.test.ts +32 -0
  306. package/app/Actions/Dashboard/Email/sanitize-inbox-html.ts +70 -0
  307. package/app/Actions/Dashboard/Infrastructure/CommandIndexAction.ts +39 -8
  308. package/app/Actions/Dashboard/Infrastructure/DnsIndexAction.ts +3 -91
  309. package/app/Actions/Dashboard/Infrastructure/EnvironmentIndexAction.ts +8 -59
  310. package/app/Actions/Dashboard/Infrastructure/EnvironmentUpdateAction.ts +46 -0
  311. package/app/Actions/Dashboard/Infrastructure/InsightsAction.ts +239 -16
  312. package/app/Actions/Dashboard/Infrastructure/LogIndexAction.ts +102 -38
  313. package/app/Actions/Dashboard/Infrastructure/MailboxIndexAction.ts +2 -75
  314. package/app/Actions/Dashboard/Infrastructure/PermissionIndexAction.ts +37 -42
  315. package/app/Actions/Dashboard/Infrastructure/RequestIndexAction.ts +30 -31
  316. package/app/Actions/Dashboard/Infrastructure/ServerIndexAction.ts +12 -92
  317. package/app/Actions/Dashboard/Infrastructure/ServerShowAction.ts +32 -0
  318. package/app/Actions/Dashboard/Infrastructure/dns-overview.test.ts +55 -0
  319. package/app/Actions/Dashboard/Infrastructure/dns-overview.ts +106 -0
  320. package/app/Actions/Dashboard/Infrastructure/environment-file.test.ts +100 -0
  321. package/app/Actions/Dashboard/Infrastructure/environment-file.ts +287 -0
  322. package/app/Actions/Dashboard/Infrastructure/insights-dashboard.test.ts +47 -0
  323. package/app/Actions/Dashboard/Infrastructure/insights-dashboard.ts +64 -0
  324. package/app/Actions/Dashboard/Infrastructure/log-dashboard.test.ts +58 -0
  325. package/app/Actions/Dashboard/Infrastructure/log-dashboard.ts +94 -0
  326. package/app/Actions/Dashboard/Infrastructure/mailbox-overview.test.ts +57 -0
  327. package/app/Actions/Dashboard/Infrastructure/mailbox-overview.ts +150 -0
  328. package/app/Actions/Dashboard/Infrastructure/server-detail.test.ts +77 -0
  329. package/app/Actions/Dashboard/Infrastructure/server-detail.ts +64 -0
  330. package/app/Actions/Dashboard/Jobs/JobIndexAction.ts +9 -87
  331. package/app/Actions/Dashboard/Jobs/JobRetryAction.ts +11 -4
  332. package/app/Actions/Dashboard/Jobs/JobShowAction.ts +43 -0
  333. package/app/Actions/Dashboard/Jobs/JobStatsAction.ts +5 -8
  334. package/app/Actions/Dashboard/Jobs/job-records.test.ts +159 -0
  335. package/app/Actions/Dashboard/Jobs/job-records.ts +221 -0
  336. package/app/Actions/Dashboard/Kanban/BoardDestroyAction.ts +6 -23
  337. package/app/Actions/Dashboard/Kanban/BoardShowAction.ts +4 -6
  338. package/app/Actions/Dashboard/Kanban/BoardStoreAction.ts +19 -34
  339. package/app/Actions/Dashboard/Kanban/BoardUpdateAction.ts +22 -28
  340. package/app/Actions/Dashboard/Kanban/BoardsIndexAction.ts +2 -7
  341. package/app/Actions/Dashboard/Kanban/BoardsReorderAction.ts +8 -15
  342. package/app/Actions/Dashboard/Kanban/CardAssigneesSyncAction.ts +10 -14
  343. package/app/Actions/Dashboard/Kanban/CardCommentDestroyAction.ts +3 -2
  344. package/app/Actions/Dashboard/Kanban/CardCommentStoreAction.ts +6 -5
  345. package/app/Actions/Dashboard/Kanban/CardDestroyAction.ts +6 -10
  346. package/app/Actions/Dashboard/Kanban/CardLabelsSyncAction.ts +10 -14
  347. package/app/Actions/Dashboard/Kanban/CardShowAction.ts +4 -3
  348. package/app/Actions/Dashboard/Kanban/CardStoreAction.ts +30 -46
  349. package/app/Actions/Dashboard/Kanban/CardUpdateAction.ts +27 -30
  350. package/app/Actions/Dashboard/Kanban/CardsReorderAction.ts +14 -21
  351. package/app/Actions/Dashboard/Kanban/ColumnDestroyAction.ts +6 -10
  352. package/app/Actions/Dashboard/Kanban/ColumnStoreAction.ts +19 -32
  353. package/app/Actions/Dashboard/Kanban/ColumnUpdateAction.ts +23 -25
  354. package/app/Actions/Dashboard/Kanban/ColumnsReorderAction.ts +10 -14
  355. package/app/Actions/Dashboard/Kanban/LabelDestroyAction.ts +6 -10
  356. package/app/Actions/Dashboard/Kanban/LabelStoreAction.ts +13 -26
  357. package/app/Actions/Dashboard/Kanban/LabelUpdateAction.ts +28 -30
  358. package/app/Actions/Dashboard/Kanban/UsersListAction.ts +2 -1
  359. package/app/Actions/Dashboard/Kanban/kanban-model.test.ts +49 -0
  360. package/app/Actions/Dashboard/Kanban/kanban-model.ts +37 -0
  361. package/app/Actions/Dashboard/Kanban/kanban-response.ts +5 -0
  362. package/app/Actions/Dashboard/Library/CreateComponent.ts +23 -6
  363. package/app/Actions/Dashboard/Library/CreateFunction.ts +21 -4
  364. package/app/Actions/Dashboard/Library/DependencyIndexAction.ts +59 -43
  365. package/app/Actions/Dashboard/Library/GetAverageReleaseTime.ts +20 -2
  366. package/app/Actions/Dashboard/Library/GetComponents.ts +9 -13
  367. package/app/Actions/Dashboard/Library/GetComponentsDownloadCount.ts +5 -2
  368. package/app/Actions/Dashboard/Library/GetDownloadCount.ts +7 -2
  369. package/app/Actions/Dashboard/Library/GetFunctions.ts +7 -11
  370. package/app/Actions/Dashboard/Library/GetFunctionsDownloadCount.ts +5 -2
  371. package/app/Actions/Dashboard/Library/GetReleaseCount.ts +7 -2
  372. package/app/Actions/Dashboard/Library/GetReleases.ts +10 -15
  373. package/app/Actions/Dashboard/Library/PackageIndexAction.ts +9 -16
  374. package/app/Actions/Dashboard/Library/library-source.ts +205 -0
  375. package/app/Actions/Dashboard/Marketing/CampaignCancelAction.ts +26 -0
  376. package/app/Actions/Dashboard/Marketing/CampaignDestroyAction.ts +33 -0
  377. package/app/Actions/Dashboard/Marketing/CampaignIndexAction.ts +50 -36
  378. package/app/Actions/Dashboard/Marketing/CampaignScheduleAction.ts +49 -0
  379. package/app/Actions/Dashboard/Marketing/CampaignSendAction.ts +42 -0
  380. package/app/Actions/Dashboard/Marketing/CampaignStoreAction.ts +36 -0
  381. package/app/Actions/Dashboard/Marketing/CampaignUpdateAction.ts +38 -0
  382. package/app/Actions/Dashboard/Marketing/ListDestroyAction.ts +41 -0
  383. package/app/Actions/Dashboard/Marketing/ListIndexAction.ts +35 -32
  384. package/app/Actions/Dashboard/Marketing/ListStoreAction.ts +36 -0
  385. package/app/Actions/Dashboard/Marketing/ListUpdateAction.ts +35 -0
  386. package/app/Actions/Dashboard/Marketing/SocialPostDestroyAction.ts +18 -0
  387. package/app/Actions/Dashboard/Marketing/SocialPostIndexAction.ts +10 -39
  388. package/app/Actions/Dashboard/Marketing/SocialPostStoreAction.ts +29 -0
  389. package/app/Actions/Dashboard/Marketing/SocialPostUpdateAction.ts +28 -0
  390. package/app/Actions/Dashboard/Marketing/campaign-delivery.test.ts +46 -0
  391. package/app/Actions/Dashboard/Marketing/campaign-delivery.ts +60 -0
  392. package/app/Actions/Dashboard/Marketing/campaign-records.test.ts +74 -0
  393. package/app/Actions/Dashboard/Marketing/campaign-records.ts +277 -0
  394. package/app/Actions/Dashboard/Marketing/marketing-list-records.test.ts +71 -0
  395. package/app/Actions/Dashboard/Marketing/marketing-list-records.ts +161 -0
  396. package/app/Actions/Dashboard/Marketing/social-post-records.test.ts +71 -0
  397. package/app/Actions/Dashboard/Marketing/social-post-records.ts +163 -0
  398. package/app/Actions/Dashboard/Models/GetModels.ts +4 -4
  399. package/app/Actions/Dashboard/Models/GetSubscriberCount.ts +2 -2
  400. package/app/Actions/Dashboard/Models/ModelDestroyAction.ts +1 -1
  401. package/app/Actions/Dashboard/Models/ModelShowAction.ts +111 -44
  402. package/app/Actions/Dashboard/Models/ModelStoreAction.ts +39 -0
  403. package/app/Actions/Dashboard/Models/ModelUpdateAction.ts +8 -8
  404. package/app/Actions/Dashboard/Models/ModelsIndexAction.ts +58 -35
  405. package/app/Actions/Dashboard/Models/model-write.ts +268 -4
  406. package/app/Actions/Dashboard/Notifications/NotificationDeliveryHistoryAction.ts +100 -0
  407. package/app/Actions/Dashboard/Notifications/NotificationDeliveryIndexAction.ts +61 -0
  408. package/app/Actions/Dashboard/Notifications/NotificationDeliveryOverviewAction.ts +120 -0
  409. package/app/Actions/Dashboard/Notifications/NotificationDeliveryRetryAction.ts +61 -0
  410. package/app/Actions/Dashboard/Notifications/notification-delivery-index.test.ts +18 -0
  411. package/app/Actions/Dashboard/Notifications/notification-delivery.test.ts +17 -0
  412. package/app/Actions/Dashboard/Notifications/notification-delivery.ts +71 -0
  413. package/app/Actions/Dashboard/Queries/QueryDashboardAction.ts +35 -0
  414. package/app/Actions/Dashboard/Queries/QueryIndexAction.ts +2 -22
  415. package/app/Actions/Dashboard/Queries/QueryShowAction.ts +35 -0
  416. package/app/Actions/Dashboard/Queries/query-dashboard.test.ts +56 -0
  417. package/app/Actions/Dashboard/Queries/query-dashboard.ts +136 -0
  418. package/app/Actions/Dashboard/Queue/QueueRetryFailedAction.ts +4 -1
  419. package/app/Actions/Dashboard/Queue/QueueStatsAction.ts +5 -14
  420. package/app/Actions/Dashboard/Queue/QueueWorkersAction.ts +6 -3
  421. package/app/Actions/Dashboard/Rbac/PermissionDestroyAction.ts +7 -3
  422. package/app/Actions/Dashboard/Rbac/PermissionStoreAction.ts +10 -3
  423. package/app/Actions/Dashboard/Rbac/PermissionsIndexAction.ts +2 -1
  424. package/app/Actions/Dashboard/Rbac/RoleDestroyAction.ts +7 -3
  425. package/app/Actions/Dashboard/Rbac/RolePermissionsShowAction.ts +9 -5
  426. package/app/Actions/Dashboard/Rbac/RolePermissionsSyncAction.ts +12 -8
  427. package/app/Actions/Dashboard/Rbac/RoleStoreAction.ts +10 -3
  428. package/app/Actions/Dashboard/Rbac/RolesIndexAction.ts +2 -1
  429. package/app/Actions/Dashboard/Rbac/UserRolesShowAction.ts +14 -3
  430. package/app/Actions/Dashboard/Rbac/UserRolesSyncAction.ts +16 -7
  431. package/app/Actions/Dashboard/Rbac/UsersListAction.ts +14 -6
  432. package/app/Actions/Dashboard/Realtime/RealtimeStatsAction.ts +28 -34
  433. package/app/Actions/Dashboard/Realtime/realtime-stats.test.ts +30 -0
  434. package/app/Actions/Dashboard/Realtime/realtime-stats.ts +40 -0
  435. package/app/Actions/Dashboard/Releases/ReleaseIndexAction.ts +10 -11
  436. package/app/Actions/Dashboard/Releases/release-records.test.ts +42 -0
  437. package/app/Actions/Dashboard/Releases/release-records.ts +56 -0
  438. package/app/Actions/Dashboard/Search/GlobalSearchAction.ts +239 -15
  439. package/app/Actions/Dashboard/ServiceHealthAction.ts +1 -243
  440. package/app/Actions/Dashboard/Settings/BillingShowAction.test.ts +43 -0
  441. package/app/Actions/Dashboard/Settings/BillingShowAction.ts +93 -0
  442. package/app/Actions/Dashboard/Settings/MailSettingsGetAction.ts +8 -12
  443. package/app/Actions/Dashboard/Settings/MailSettingsUpdateAction.ts +28 -3
  444. package/app/Actions/Dashboard/Settings/SettingsIndexAction.ts +5 -32
  445. package/app/Actions/Dashboard/Settings/mail-settings.test.ts +155 -0
  446. package/app/Actions/Dashboard/Settings/mail-settings.ts +387 -0
  447. package/app/Actions/Dashboard/Settings/settings-summary.test.ts +56 -0
  448. package/app/Actions/Dashboard/Settings/settings-summary.ts +118 -0
  449. package/app/Actions/Dashboard/Source/source-inventory.test.ts +42 -0
  450. package/app/Actions/Dashboard/Source/source-inventory.ts +106 -0
  451. package/app/Actions/Dashboard/Teams/TeamInvitationDestroyAction.ts +48 -0
  452. package/app/Actions/Dashboard/Teams/TeamInvitationResendAction.ts +82 -0
  453. package/app/Actions/Dashboard/Teams/TeamInviteAction.ts +138 -0
  454. package/app/Actions/Dashboard/Teams/TeamMemberDestroyAction.ts +41 -0
  455. package/app/Actions/Dashboard/Teams/TeamMemberUpdateAction.ts +55 -0
  456. package/app/Actions/Dashboard/Teams/TeamPeopleIndexAction.ts +83 -0
  457. package/app/Actions/Dashboard/Teams/team-invitation-delivery.ts +57 -0
  458. package/app/Actions/Dashboard/Teams/team-member-count.ts +20 -0
  459. package/app/Actions/Dashboard/Teams/team-records.test.ts +43 -0
  460. package/app/Actions/Dashboard/Teams/team-records.ts +79 -0
  461. package/app/Actions/Dashboard/legacy-dashboard-actions.test.ts +44 -0
  462. package/app/Actions/LogAction.ts +2 -2
  463. package/app/Actions/Monitoring/ErrorDestroyAction.ts +2 -2
  464. package/app/Actions/Monitoring/ErrorGroupAction.ts +2 -2
  465. package/app/Actions/Teams/AcceptInvitationAction.ts +114 -0
  466. package/app/Actions/Teams/ShowInvitationAction.ts +46 -0
  467. package/app/Jobs/SendCampaignJob.ts +22 -2
  468. package/app/Mail/TeamInvitation.ts +38 -0
  469. package/app/Middleware/Auth.ts +43 -39
  470. package/app/Middleware/Csrf.ts +52 -41
  471. package/app/Models/Activity.ts +1 -0
  472. package/app/Models/AnalyticsEvent.ts +70 -0
  473. package/app/Models/Board.ts +1 -0
  474. package/app/Models/BoardColumn.ts +1 -0
  475. package/app/Models/Campaign.ts +19 -1
  476. package/app/Models/Card.ts +1 -0
  477. package/app/Models/CardComment.ts +1 -0
  478. package/app/Models/Comment.ts +1 -0
  479. package/app/Models/Content/Author.ts +1 -1
  480. package/app/Models/Content/Page.ts +4 -0
  481. package/app/Models/Content/Post.ts +72 -9
  482. package/app/Models/Deployment.ts +1 -0
  483. package/app/Models/EmailList.ts +8 -0
  484. package/app/Models/Error.ts +7 -0
  485. package/app/Models/FailedJob.ts +22 -0
  486. package/app/Models/Job.ts +11 -5
  487. package/app/Models/Label.ts +1 -0
  488. package/app/Models/Log.ts +24 -0
  489. package/app/Models/MailPreference.ts +213 -0
  490. package/app/Models/Notification.ts +11 -62
  491. package/app/Models/NotificationDelivery.ts +99 -0
  492. package/app/Models/QueryLog.ts +182 -0
  493. package/app/Models/Release.ts +0 -4
  494. package/app/Models/Request.ts +20 -1
  495. package/app/Models/SocialPost.ts +8 -0
  496. package/app/Models/Tag.ts +38 -20
  497. package/app/Models/Team.ts +5 -2
  498. package/app/Models/TeamInvitation.ts +146 -0
  499. package/app/Models/TeamMember.ts +88 -0
  500. package/app/Models/User.ts +5 -0
  501. package/app/Models/commerce/Cart.ts +1 -0
  502. package/app/Models/commerce/CartItem.ts +1 -0
  503. package/app/Models/commerce/Category.ts +15 -0
  504. package/app/Models/commerce/Coupon.ts +6 -1
  505. package/app/Models/commerce/Customer.ts +4 -4
  506. package/app/Models/commerce/DeliveryRoute.ts +5 -5
  507. package/app/Models/commerce/DigitalDelivery.ts +3 -2
  508. package/app/Models/commerce/Driver.ts +1 -0
  509. package/app/Models/commerce/GiftCard.ts +6 -2
  510. package/app/Models/commerce/LicenseKey.ts +4 -2
  511. package/app/Models/commerce/LoyaltyPoint.ts +1 -0
  512. package/app/Models/commerce/Manufacturer.ts +1 -0
  513. package/app/Models/commerce/Order.ts +24 -9
  514. package/app/Models/commerce/OrderIdempotency.ts +34 -0
  515. package/app/Models/commerce/Payment.ts +26 -7
  516. package/app/Models/commerce/PrintDevice.ts +5 -2
  517. package/app/Models/commerce/ProductUnit.ts +2 -1
  518. package/app/Models/commerce/Receipt.ts +26 -10
  519. package/app/Models/commerce/Review.ts +6 -2
  520. package/app/Models/commerce/ShippingMethod.ts +1 -1
  521. package/app/Models/commerce/TaxRate.ts +1 -1
  522. package/app/Models/commerce/Transaction.ts +1 -0
  523. package/app/Models/commerce/WaitlistProduct.ts +2 -0
  524. package/app/Models/commerce/WaitlistRestaurant.ts +2 -0
  525. package/app/Models/realtime/Websocket.ts +1 -0
  526. package/bootstrap.ts +3 -0
  527. package/functions/analytics.ts +250 -25
  528. package/functions/api-url.ts +22 -0
  529. package/functions/api.ts +2 -1
  530. package/functions/auth.ts +61 -39
  531. package/functions/billing/dashboard.ts +140 -0
  532. package/functions/billing/payments.ts +5 -5
  533. package/functions/blog.ts +3 -2
  534. package/functions/buddy-chat.ts +45 -0
  535. package/functions/captured-mail.ts +39 -0
  536. package/functions/cms/categorizables.ts +4 -2
  537. package/functions/cms/pages.ts +4 -2
  538. package/functions/cms/posts.ts +4 -2
  539. package/functions/cms/taggables.ts +12 -10
  540. package/functions/commerce/coupons.ts +4 -3
  541. package/functions/commerce/customers.ts +3 -2
  542. package/functions/commerce/gift-cards.ts +3 -2
  543. package/functions/commerce/orders.ts +3 -2
  544. package/functions/commerce/payments.ts +3 -2
  545. package/functions/commerce/products/categories.ts +3 -2
  546. package/functions/commerce/products/manufacturers.ts +3 -2
  547. package/functions/commerce/products/products.ts +3 -2
  548. package/functions/commerce/products/reviews.ts +3 -2
  549. package/functions/commerce/products/units.ts +3 -2
  550. package/functions/commerce/products/variants.ts +3 -2
  551. package/functions/commerce/shippings/dashboard-resource.ts +93 -0
  552. package/functions/commerce/shippings/delivery-routes.ts +12 -116
  553. package/functions/commerce/shippings/digital-deliveries.ts +13 -111
  554. package/functions/commerce/shippings/drivers.ts +12 -116
  555. package/functions/commerce/shippings/license-keys.ts +36 -112
  556. package/functions/commerce/shippings/shipping-methods.ts +12 -116
  557. package/functions/commerce/shippings/shipping-rates.ts +12 -112
  558. package/functions/commerce/shippings/shipping-zones.ts +12 -112
  559. package/functions/commerce/taxes.ts +3 -2
  560. package/functions/commerce/waitlist/products.ts +3 -2
  561. package/functions/commerce/waitlist/restaurants.ts +3 -2
  562. package/functions/craft.ts +116 -5
  563. package/functions/dashboard-api.ts +37 -15
  564. package/functions/dashboard.test.ts +26 -0
  565. package/functions/dashboard.ts +108 -88
  566. package/functions/data.ts +66 -0
  567. package/functions/deployments.test.ts +81 -0
  568. package/functions/deployments.ts +144 -0
  569. package/functions/inbox.test.ts +54 -0
  570. package/functions/inbox.ts +238 -2
  571. package/functions/jobs.ts +104 -42
  572. package/functions/mail-preferences.ts +67 -0
  573. package/functions/monitoring/errors.test.ts +12 -0
  574. package/functions/monitoring/errors.ts +25 -31
  575. package/functions/notifications/deliveries.ts +134 -0
  576. package/functions/queries.ts +42 -0
  577. package/functions/queue.ts +30 -4
  578. package/functions/realtime/websockets.ts +4 -2
  579. package/functions/realtime.ts +53 -15
  580. package/functions/releases.ts +2 -1
  581. package/functions/search.ts +23 -103
  582. package/functions/toasts.ts +20 -3
  583. package/ide/vscode/package.json +1 -1
  584. package/package.json +3 -2
  585. package/resources/components/Dashboard/Analytics/AnalyticsHub.stx +89 -0
  586. package/resources/components/Dashboard/Analytics/AnalyticsPageHeader.stx +43 -0
  587. package/resources/components/Dashboard/Analytics/CampaignAnalytics.stx +246 -0
  588. package/resources/components/Dashboard/Analytics/EventAnalytics.stx +298 -0
  589. package/resources/components/Dashboard/Analytics/SalesAnalytics.stx +228 -0
  590. package/resources/components/Dashboard/Analytics/WebAnalyticsBreakdown.stx +210 -0
  591. package/resources/components/Dashboard/Analytics/WebAnalyticsDashboard.stx +312 -0
  592. package/resources/components/Dashboard/App/RequestsOverview.stx +253 -0
  593. package/resources/components/Dashboard/App/SourceInventory.stx +228 -0
  594. package/resources/components/Dashboard/Auth/AccessTokens.stx +400 -0
  595. package/resources/components/Dashboard/Auth/ForgotPassword.stx +39 -57
  596. package/resources/components/Dashboard/Auth/ForgotPasswordDashboard.stx +42 -0
  597. package/resources/components/Dashboard/Auth/LegalDocument.stx +38 -0
  598. package/resources/components/Dashboard/Auth/Login.stx +75 -146
  599. package/resources/components/Dashboard/Auth/LoginDashboard.stx +45 -0
  600. package/resources/components/Dashboard/Auth/PrivacyDashboard.stx +38 -0
  601. package/resources/components/Dashboard/Auth/Register.stx +97 -165
  602. package/resources/components/Dashboard/Auth/RegisterDashboard.stx +47 -0
  603. package/resources/components/Dashboard/Auth/TermsDashboard.stx +38 -0
  604. package/resources/components/Dashboard/Billing/BillingPaymentMethodsPanel.stx +48 -0
  605. package/resources/components/Dashboard/Billing/BillingPlanSummary.stx +62 -0
  606. package/resources/components/Dashboard/Billing/BillingSettings.stx +88 -0
  607. package/resources/components/Dashboard/Billing/BillingTransactionHistory.stx +50 -0
  608. package/resources/components/Dashboard/Buddy/BuddyAssistant.stx +190 -0
  609. package/resources/components/Dashboard/Ci/CiDashboard.stx +441 -0
  610. package/resources/components/Dashboard/CodeEditor.stx +64 -32
  611. package/resources/components/Dashboard/Commerce/CommerceCategoriesDashboard.stx +300 -0
  612. package/resources/components/Dashboard/Commerce/CommerceCategoriesTable.stx +43 -0
  613. package/resources/components/Dashboard/Commerce/CommerceCategoryDeleteDialog.stx +17 -0
  614. package/resources/components/Dashboard/Commerce/CommerceCategoryDetailsDialog.stx +54 -0
  615. package/resources/components/Dashboard/Commerce/CommerceCategoryDialog.stx +146 -0
  616. package/resources/components/Dashboard/Commerce/CommerceCategoryHierarchy.stx +35 -0
  617. package/resources/components/Dashboard/Commerce/CommerceCouponBreakdown.stx +34 -0
  618. package/resources/components/Dashboard/Commerce/CommerceCouponDeleteDialog.stx +16 -0
  619. package/resources/components/Dashboard/Commerce/CommerceCouponDetailsDialog.stx +53 -0
  620. package/resources/components/Dashboard/Commerce/CommerceCouponDialog.stx +116 -0
  621. package/resources/components/Dashboard/Commerce/CommerceCouponsDashboard.stx +310 -0
  622. package/resources/components/Dashboard/Commerce/CommerceCouponsTable.stx +65 -0
  623. package/resources/components/Dashboard/Commerce/CommerceCustomerDeleteDialog.stx +17 -0
  624. package/resources/components/Dashboard/Commerce/CommerceCustomerDetailsDialog.stx +64 -0
  625. package/resources/components/Dashboard/Commerce/CommerceCustomerDialog.stx +105 -0
  626. package/resources/components/Dashboard/Commerce/CommerceCustomersDashboard.stx +318 -0
  627. package/resources/components/Dashboard/Commerce/CommerceCustomersTable.stx +65 -0
  628. package/resources/components/Dashboard/Commerce/CommerceGiftCardBreakdown.stx +52 -0
  629. package/resources/components/Dashboard/Commerce/CommerceGiftCardDeleteDialog.stx +17 -0
  630. package/resources/components/Dashboard/Commerce/CommerceGiftCardDetailsDialog.stx +68 -0
  631. package/resources/components/Dashboard/Commerce/CommerceGiftCardDialog.stx +193 -0
  632. package/resources/components/Dashboard/Commerce/CommerceGiftCardsDashboard.stx +327 -0
  633. package/resources/components/Dashboard/Commerce/CommerceGiftCardsTable.stx +98 -0
  634. package/resources/components/Dashboard/Commerce/CommerceManufacturerDeleteDialog.stx +25 -0
  635. package/resources/components/Dashboard/Commerce/CommerceManufacturerDialog.stx +88 -0
  636. package/resources/components/Dashboard/Commerce/CommerceManufacturersDashboard.stx +267 -0
  637. package/resources/components/Dashboard/Commerce/CommerceManufacturersTable.stx +71 -0
  638. package/resources/components/Dashboard/Commerce/CommerceOrderDeleteDialog.stx +17 -0
  639. package/resources/components/Dashboard/Commerce/CommerceOrderDetailsDialog.stx +73 -0
  640. package/resources/components/Dashboard/Commerce/CommerceOrderDialog.stx +140 -0
  641. package/resources/components/Dashboard/Commerce/CommerceOrdersDashboard.stx +365 -0
  642. package/resources/components/Dashboard/Commerce/CommerceOrdersTable.stx +70 -0
  643. package/resources/components/Dashboard/Commerce/CommerceOverviewCharts.stx +118 -0
  644. package/resources/components/Dashboard/Commerce/CommerceOverviewDashboard.stx +98 -0
  645. package/resources/components/Dashboard/Commerce/CommerceOverviewOrdersTable.stx +81 -0
  646. package/resources/components/Dashboard/Commerce/CommerceOverviewProductsTable.stx +41 -0
  647. package/resources/components/Dashboard/Commerce/CommerceOverviewStats.stx +45 -0
  648. package/resources/components/Dashboard/Commerce/CommercePaymentsBreakdown.stx +107 -0
  649. package/resources/components/Dashboard/Commerce/CommercePaymentsDashboard.stx +220 -0
  650. package/resources/components/Dashboard/Commerce/CommercePaymentsTable.stx +70 -0
  651. package/resources/components/Dashboard/Commerce/CommercePosCart.stx +72 -0
  652. package/resources/components/Dashboard/Commerce/CommercePosCatalog.stx +85 -0
  653. package/resources/components/Dashboard/Commerce/CommercePosCheckoutDialog.stx +85 -0
  654. package/resources/components/Dashboard/Commerce/CommercePosDashboard.stx +346 -0
  655. package/resources/components/Dashboard/Commerce/CommercePosReceiptDialog.stx +68 -0
  656. package/resources/components/Dashboard/Commerce/CommerceProductDeleteDialog.stx +23 -0
  657. package/resources/components/Dashboard/Commerce/CommerceProductDetailDashboard.stx +268 -0
  658. package/resources/components/Dashboard/Commerce/CommerceProductDialog.stx +137 -0
  659. package/resources/components/Dashboard/Commerce/CommerceProductsDashboard.stx +337 -0
  660. package/resources/components/Dashboard/Commerce/CommerceProductsTable.stx +54 -0
  661. package/resources/components/Dashboard/Commerce/CommerceReviewDeleteDialog.stx +27 -0
  662. package/resources/components/Dashboard/Commerce/CommerceReviewEditDialog.stx +100 -0
  663. package/resources/components/Dashboard/Commerce/CommerceReviewsDashboard.stx +396 -0
  664. package/resources/components/Dashboard/Commerce/CommerceReviewsTable.stx +94 -0
  665. package/resources/components/Dashboard/Commerce/CommerceTaxDeleteDialog.stx +23 -0
  666. package/resources/components/Dashboard/Commerce/CommerceTaxDialog.stx +125 -0
  667. package/resources/components/Dashboard/Commerce/CommerceTaxesDashboard.stx +283 -0
  668. package/resources/components/Dashboard/Commerce/CommerceTaxesTable.stx +68 -0
  669. package/resources/components/Dashboard/Commerce/CommerceUnitDeleteDialog.stx +26 -0
  670. package/resources/components/Dashboard/Commerce/CommerceUnitDialog.stx +122 -0
  671. package/resources/components/Dashboard/Commerce/CommerceUnitsDashboard.stx +301 -0
  672. package/resources/components/Dashboard/Commerce/CommerceUnitsTable.stx +71 -0
  673. package/resources/components/Dashboard/Commerce/CommerceVariantDeleteDialog.stx +17 -0
  674. package/resources/components/Dashboard/Commerce/CommerceVariantDialog.stx +86 -0
  675. package/resources/components/Dashboard/Commerce/CommerceVariantsDashboard.stx +245 -0
  676. package/resources/components/Dashboard/Commerce/CommerceVariantsTable.stx +34 -0
  677. package/resources/components/Dashboard/Commerce/Delivery/DeliveryOverviewDashboard.stx +330 -0
  678. package/resources/components/Dashboard/Commerce/Delivery/DeliveryPagination.stx +128 -0
  679. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDeleteDialog.stx +28 -0
  680. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRouteDialog.stx +153 -0
  681. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesDashboard.stx +272 -0
  682. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesTable.stx +103 -75
  683. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveriesDashboard.stx +236 -0
  684. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryDeleteDialog.stx +28 -0
  685. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryDialog.stx +111 -0
  686. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryTable.stx +95 -79
  687. package/resources/components/Dashboard/Commerce/Delivery/DriverDeleteDialog.stx +28 -0
  688. package/resources/components/Dashboard/Commerce/Delivery/DriverDialog.stx +119 -0
  689. package/resources/components/Dashboard/Commerce/Delivery/DriversDashboard.stx +268 -0
  690. package/resources/components/Dashboard/Commerce/Delivery/DriversTable.stx +97 -93
  691. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeyDeleteDialog.stx +28 -0
  692. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeyDialog.stx +159 -0
  693. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysDashboard.stx +286 -0
  694. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysTable.stx +125 -85
  695. package/resources/components/Dashboard/Commerce/Delivery/SearchFilter.stx +19 -18
  696. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodDeleteDialog.stx +28 -0
  697. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodDialog.stx +93 -0
  698. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsDashboard.stx +243 -0
  699. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsTable.stx +107 -75
  700. package/resources/components/Dashboard/Commerce/Delivery/ShippingRateDeleteDialog.stx +29 -0
  701. package/resources/components/Dashboard/Commerce/Delivery/ShippingRateDialog.stx +123 -0
  702. package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesDashboard.stx +280 -0
  703. package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesTable.stx +96 -54
  704. package/resources/components/Dashboard/Commerce/Delivery/ShippingZoneDeleteDialog.stx +28 -0
  705. package/resources/components/Dashboard/Commerce/Delivery/ShippingZoneDialog.stx +140 -0
  706. package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesDashboard.stx +287 -0
  707. package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesTable.stx +145 -65
  708. package/resources/components/Dashboard/Commerce/Delivery/TabNavigation.stx +39 -27
  709. package/resources/components/Dashboard/Commerce/PaymentDetailsDialog.stx +68 -0
  710. package/resources/components/Dashboard/Commerce/PaymentRefundDialog.stx +70 -0
  711. package/resources/components/Dashboard/Commerce/PrintDeviceBreakdown.stx +80 -0
  712. package/resources/components/Dashboard/Commerce/PrintDeviceDeleteDialog.stx +20 -0
  713. package/resources/components/Dashboard/Commerce/PrintDeviceDetailsDialog.stx +63 -0
  714. package/resources/components/Dashboard/Commerce/PrintDeviceDialog.stx +85 -0
  715. package/resources/components/Dashboard/Commerce/PrintDevicesDashboard.stx +304 -0
  716. package/resources/components/Dashboard/Commerce/PrintDevicesTable.stx +83 -0
  717. package/resources/components/Dashboard/Commerce/PrintLogBreakdown.stx +78 -0
  718. package/resources/components/Dashboard/Commerce/PrintLogDeleteDialog.stx +16 -0
  719. package/resources/components/Dashboard/Commerce/PrintLogDetailsDialog.stx +42 -0
  720. package/resources/components/Dashboard/Commerce/PrintLogsDashboard.stx +244 -0
  721. package/resources/components/Dashboard/Commerce/PrintLogsTable.stx +45 -0
  722. package/resources/components/Dashboard/Commerce/ProductWaitlistDashboard.stx +224 -0
  723. package/resources/components/Dashboard/Commerce/ProductWaitlistDeleteDialog.stx +27 -0
  724. package/resources/components/Dashboard/Commerce/ProductWaitlistEntryDialog.stx +209 -0
  725. package/resources/components/Dashboard/Commerce/ProductWaitlistTable.stx +81 -0
  726. package/resources/components/Dashboard/Commerce/RestaurantWaitlistDashboard.stx +294 -0
  727. package/resources/components/Dashboard/Commerce/RestaurantWaitlistDeleteDialog.stx +27 -0
  728. package/resources/components/Dashboard/Commerce/RestaurantWaitlistEntryDialog.stx +208 -0
  729. package/resources/components/Dashboard/Commerce/RestaurantWaitlistTable.stx +100 -0
  730. package/resources/components/Dashboard/Content/AuthorsDashboard.stx +207 -0
  731. package/resources/components/Dashboard/Content/BlogDashboard.stx +489 -0
  732. package/resources/components/Dashboard/Content/CommentsDashboard.stx +172 -0
  733. package/resources/components/Dashboard/Content/ContentDashboard.stx +441 -0
  734. package/resources/components/Dashboard/Content/ContentTaxonomyDashboard.stx +234 -0
  735. package/resources/components/Dashboard/Content/FileManagerDashboard.stx +604 -0
  736. package/resources/components/Dashboard/Content/PagesDashboard.stx +199 -0
  737. package/resources/components/Dashboard/Content/PostsDashboard.stx +275 -0
  738. package/resources/components/Dashboard/Content/SeoDashboard.stx +389 -0
  739. package/resources/components/Dashboard/CreateRecordModal.stx +131 -345
  740. package/resources/components/Dashboard/DashboardLayout.stx +37 -111
  741. package/resources/components/Dashboard/Data/DataRecords.stx +285 -0
  742. package/resources/components/Dashboard/Deployments/DeployScript.stx +100 -19
  743. package/resources/components/Dashboard/Deployments/DeploymentDetail.stx +149 -0
  744. package/resources/components/Dashboard/Deployments/DeploymentList.stx +202 -84
  745. package/resources/components/Dashboard/Deployments/DeploymentTable.stx +87 -0
  746. package/resources/components/Dashboard/Deployments/LiveTerminalOutput.stx +93 -12
  747. package/resources/components/Dashboard/Elements/DropdownNavigation.stx +55 -0
  748. package/resources/components/Dashboard/Email/CapturedMailDashboard.stx +117 -0
  749. package/resources/components/Dashboard/Email/CapturedMailDetail.stx +76 -0
  750. package/resources/components/Dashboard/Email/CapturedMailList.stx +77 -0
  751. package/resources/components/Dashboard/Email/EmailActivityDashboard.stx +417 -0
  752. package/resources/components/Dashboard/Email/EmailBodyPreview.stx +33 -0
  753. package/resources/components/Dashboard/Email/EmailNavigation.stx +24 -0
  754. package/resources/components/Dashboard/Email/EmailSettingsList.stx +47 -0
  755. package/resources/components/Dashboard/Email/EmailSettingsNavigation.stx +36 -0
  756. package/resources/components/Dashboard/Email/EmailSidebar.stx +106 -116
  757. package/resources/components/Dashboard/Email/InboxComposer.stx +45 -0
  758. package/resources/components/Dashboard/Email/InboxDashboard.stx +317 -0
  759. package/resources/components/Dashboard/Email/InboxMessageDetail.stx +87 -0
  760. package/resources/components/Dashboard/Email/InboxMessageList.stx +80 -0
  761. package/resources/components/Dashboard/Email/InboxSettingsDashboard.stx +465 -0
  762. package/resources/components/Dashboard/Environment/EnvironmentDashboard.stx +301 -0
  763. package/resources/components/Dashboard/FileViewer/MediaCard.stx +33 -61
  764. package/resources/components/Dashboard/FileViewer/MediaInfoPanel.stx +44 -88
  765. package/resources/components/Dashboard/GlobalSearch.stx +182 -71
  766. package/resources/components/Dashboard/Home/DashboardHome.stx +168 -0
  767. package/resources/components/Dashboard/Infrastructure/CloudDashboard.stx +249 -0
  768. package/resources/components/Dashboard/Infrastructure/CloudDetailsDialog.stx +36 -0
  769. package/resources/components/Dashboard/Infrastructure/CloudResourceButton.stx +62 -0
  770. package/resources/components/Dashboard/Infrastructure/CloudStatusBadge.stx +29 -0
  771. package/resources/components/Dashboard/Infrastructure/DnsDashboard.stx +252 -0
  772. package/resources/components/Dashboard/Infrastructure/DnsRecordDialog.stx +34 -0
  773. package/resources/components/Dashboard/Infrastructure/HealthCheckCard.stx +51 -0
  774. package/resources/components/Dashboard/Infrastructure/HealthDashboard.stx +234 -0
  775. package/resources/components/Dashboard/Infrastructure/InsightMetricCard.stx +30 -0
  776. package/resources/components/Dashboard/Infrastructure/InsightResourceCard.stx +23 -0
  777. package/resources/components/Dashboard/Infrastructure/InsightsDashboard.stx +471 -0
  778. package/resources/components/Dashboard/Infrastructure/LogDetailsDialog.stx +46 -0
  779. package/resources/components/Dashboard/Infrastructure/LogLevelBadge.stx +35 -0
  780. package/resources/components/Dashboard/Infrastructure/LogsDashboard.stx +317 -0
  781. package/resources/components/Dashboard/Infrastructure/MailboxDetailsDialog.stx +31 -0
  782. package/resources/components/Dashboard/Infrastructure/MailboxesDashboard.stx +241 -0
  783. package/resources/components/Dashboard/Infrastructure/ServerDetailsDashboard.stx +203 -0
  784. package/resources/components/Dashboard/Infrastructure/ServerlessDashboard.stx +246 -0
  785. package/resources/components/Dashboard/Infrastructure/ServersDashboard.stx +432 -0
  786. package/resources/components/Dashboard/Jobs/JobDashboard.stx +100 -0
  787. package/resources/components/Dashboard/Jobs/JobDetail.stx +188 -0
  788. package/resources/components/Dashboard/Jobs/JobHistory.stx +139 -0
  789. package/resources/components/Dashboard/Jobs/JobTable.stx +91 -0
  790. package/resources/components/Dashboard/Kanban/KanbanBoardDashboard.stx +912 -0
  791. package/resources/components/Dashboard/Kanban/KanbanBoardsDashboard.stx +285 -0
  792. package/resources/components/Dashboard/Library/ComponentsDashboard.stx +296 -0
  793. package/resources/components/Dashboard/Library/DependenciesDashboard.stx +92 -0
  794. package/resources/components/Dashboard/Library/FunctionsDashboard.stx +130 -0
  795. package/resources/components/Dashboard/Library/PackagesDashboard.stx +82 -0
  796. package/resources/components/Dashboard/Management/PermissionsDashboard.stx +639 -0
  797. package/resources/components/Dashboard/Marketing/CampaignDeleteDialog.stx +22 -0
  798. package/resources/components/Dashboard/Marketing/CampaignDeliveryDialog.stx +94 -0
  799. package/resources/components/Dashboard/Marketing/CampaignDialog.stx +225 -0
  800. package/resources/components/Dashboard/Marketing/CampaignsDashboard.stx +324 -0
  801. package/resources/components/Dashboard/Marketing/CampaignsTable.stx +94 -0
  802. package/resources/components/Dashboard/Marketing/MarketingListDeleteDialog.stx +25 -0
  803. package/resources/components/Dashboard/Marketing/MarketingListDialog.stx +129 -0
  804. package/resources/components/Dashboard/Marketing/MarketingListsDashboard.stx +258 -0
  805. package/resources/components/Dashboard/Marketing/MarketingListsTable.stx +82 -0
  806. package/resources/components/Dashboard/Marketing/SocialPostDeleteDialog.stx +22 -0
  807. package/resources/components/Dashboard/Marketing/SocialPostDialog.stx +121 -0
  808. package/resources/components/Dashboard/Marketing/SocialPostsDashboard.stx +240 -0
  809. package/resources/components/Dashboard/Marketing/SocialPostsTable.stx +79 -0
  810. package/resources/components/Dashboard/MobileSidebar.stx +108 -38
  811. package/resources/components/Dashboard/Modals/BaseModal.stx +39 -32
  812. package/resources/components/Dashboard/Modals/Popups/Alert.stx +100 -89
  813. package/resources/components/Dashboard/Modals/Popups/Toast.stx +57 -64
  814. package/resources/components/Dashboard/Modals/ToastWrapper.stx +37 -28
  815. package/resources/components/Dashboard/Models/ModelRecordsDashboard.stx +641 -0
  816. package/resources/components/Dashboard/Models/ModelsOverview.stx +214 -0
  817. package/resources/components/Dashboard/Monitoring/ErrorDashboard.stx +393 -0
  818. package/resources/components/Dashboard/Monitoring/ErrorTable.stx +134 -0
  819. package/resources/components/Dashboard/Navbar.stx +106 -153
  820. package/resources/components/Dashboard/NotFoundDashboard.stx +81 -0
  821. package/resources/components/Dashboard/Notifications/NotificationDeliveries.stx +208 -0
  822. package/resources/components/Dashboard/Notifications/NotificationDeliveryDialog.stx +84 -0
  823. package/resources/components/Dashboard/Notifications/NotificationDeliveryHistory.stx +219 -0
  824. package/resources/components/Dashboard/Notifications/NotificationDeliveryOverview.stx +161 -0
  825. package/resources/components/Dashboard/Notifications/NotificationDeliveryTable.stx +125 -0
  826. package/resources/components/Dashboard/Notifications/NotificationNavigation.stx +24 -0
  827. package/resources/components/Dashboard/Queries/QueryDashboard.stx +272 -0
  828. package/resources/components/Dashboard/Queries/QueryDetail.stx +147 -0
  829. package/resources/components/Dashboard/Queue/QueueDashboard.stx +209 -0
  830. package/resources/components/Dashboard/Realtime/RealtimeDashboard.stx +242 -0
  831. package/resources/components/Dashboard/Releases/ReleaseDashboard.stx +191 -0
  832. package/resources/components/Dashboard/Settings/AppearanceSettingsDashboard.stx +332 -0
  833. package/resources/components/Dashboard/Settings/MailSettingsDashboard.stx +506 -0
  834. package/resources/components/Dashboard/Settings/SettingsDashboard.stx +288 -0
  835. package/resources/components/Dashboard/Teams/TeamInvitationDashboard.stx +146 -0
  836. package/resources/components/Dashboard/Teams/TeamPeopleDashboard.stx +463 -0
  837. package/resources/components/Dashboard/Transaction/index.stx +1 -7
  838. package/resources/components/Dashboard/UI/ActivityTable.stx +68 -47
  839. package/resources/components/Dashboard/UI/Avatar.stx +1 -3
  840. package/resources/components/Dashboard/UI/Button.stx +83 -22
  841. package/resources/components/Dashboard/UI/Card.stx +54 -13
  842. package/resources/components/Dashboard/UI/ChartCard.stx +1 -4
  843. package/resources/components/Dashboard/UI/Checkbox.stx +83 -67
  844. package/resources/components/Dashboard/UI/ConfirmDialog.stx +64 -50
  845. package/resources/components/Dashboard/UI/Dropdown.stx +57 -57
  846. package/resources/components/Dashboard/UI/EmptyState.stx +25 -44
  847. package/resources/components/Dashboard/UI/FilterBar.stx +47 -33
  848. package/resources/components/Dashboard/UI/Input.stx +84 -61
  849. package/resources/components/Dashboard/UI/Modal.stx +36 -30
  850. package/resources/components/Dashboard/UI/Pagination.stx +106 -116
  851. package/resources/components/Dashboard/UI/QuickLinks.stx +67 -25
  852. package/resources/components/Dashboard/UI/Select.stx +86 -65
  853. package/resources/components/Dashboard/UI/ServiceHealth.stx +50 -28
  854. package/resources/components/Dashboard/UI/StatsCard.stx +40 -30
  855. package/resources/components/Dashboard/UI/Table.stx +179 -118
  856. package/resources/components/Dashboard/UI/Tabs.stx +96 -33
  857. package/resources/components/Dashboard/UI/Textarea.stx +98 -78
  858. package/resources/components/Dashboard/UI/Toggle.stx +75 -70
  859. package/resources/components/Dashboard/UI/WindowControls.stx +91 -107
  860. package/resources/components/Dashboard/index.ts +8 -24
  861. package/resources/components/index.ts +1 -2
  862. package/resources/emails/team-invitation.stx +43 -0
  863. package/resources/functions/counter.ts +4 -9
  864. package/resources/functions/dashboard/analytics.ts +20 -21
  865. package/resources/functions/dashboard/config-io.ts +130 -45
  866. package/resources/functions/dashboard/data.test.ts +45 -0
  867. package/resources/functions/dashboard/data.ts +128 -99
  868. package/resources/functions/dashboard/sidebar.ts +113 -210
  869. package/resources/functions/dashboard/toggles.ts +106 -0
  870. package/resources/layouts/dashboard/default.stx +9 -6
  871. package/routes/dashboard-api.ts +280 -42
  872. package/routes/dashboard.ts +15 -30
  873. package/stores/payment.ts +64 -94
  874. package/types/dashboard.ts +8 -1
  875. package/views/dashboard/.discovered-models.json +58 -0
  876. package/views/dashboard/AUDIT.md +148 -899
  877. package/views/dashboard/[...all].stx +5 -83
  878. package/views/dashboard/access-tokens/index.stx +4 -173
  879. package/views/dashboard/actions/index.stx +4 -125
  880. package/views/dashboard/analytics/blog/index.stx +7 -349
  881. package/views/dashboard/analytics/browsers/index.stx +6 -256
  882. package/views/dashboard/analytics/commerce/sales/index.stx +2 -323
  883. package/views/dashboard/analytics/commerce/web/index.stx +7 -372
  884. package/views/dashboard/analytics/countries/index.stx +6 -282
  885. package/views/dashboard/analytics/devices/index.stx +6 -298
  886. package/views/dashboard/analytics/events/index.stx +2 -530
  887. package/views/dashboard/analytics/index.stx +3 -83
  888. package/views/dashboard/analytics/marketing/index.stx +2 -309
  889. package/views/dashboard/analytics/pages/index.stx +6 -264
  890. package/views/dashboard/analytics/referrers/index.stx +6 -312
  891. package/views/dashboard/analytics/web/index.stx +1 -350
  892. package/views/dashboard/buddy/index.stx +4 -194
  893. package/views/dashboard/ci/index.stx +2 -457
  894. package/views/dashboard/cloud/index.stx +4 -446
  895. package/views/dashboard/commands/index.stx +4 -291
  896. package/views/dashboard/commerce/categories/index.stx +3 -399
  897. package/views/dashboard/commerce/coupons/index.stx +3 -478
  898. package/views/dashboard/commerce/customers/index.stx +3 -403
  899. package/views/dashboard/commerce/dashboard/index.stx +3 -280
  900. package/views/dashboard/commerce/delivery/delivery-routes.stx +2 -297
  901. package/views/dashboard/commerce/delivery/digital-delivery.stx +2 -324
  902. package/views/dashboard/commerce/delivery/drivers.stx +2 -389
  903. package/views/dashboard/commerce/delivery/index.stx +6 -12
  904. package/views/dashboard/commerce/delivery/license-keys.stx +2 -372
  905. package/views/dashboard/commerce/delivery/shipping-methods.stx +2 -338
  906. package/views/dashboard/commerce/delivery/shipping-rates.stx +2 -330
  907. package/views/dashboard/commerce/delivery/shipping-zones.stx +2 -294
  908. package/views/dashboard/commerce/gift-cards/index.stx +4 -555
  909. package/views/dashboard/commerce/manufacturers/index.stx +4 -302
  910. package/views/dashboard/commerce/orders/index.stx +3 -240
  911. package/views/dashboard/commerce/payments/index.stx +3 -528
  912. package/views/dashboard/commerce/pos/index.stx +4 -647
  913. package/views/dashboard/commerce/printers/devices/index.stx +3 -266
  914. package/views/dashboard/commerce/printers/receipts/index.stx +3 -301
  915. package/views/dashboard/commerce/products/[id].stx +10 -0
  916. package/views/dashboard/commerce/products/index.stx +3 -363
  917. package/views/dashboard/commerce/reviews/index.stx +3 -649
  918. package/views/dashboard/commerce/taxes/index.stx +4 -371
  919. package/views/dashboard/commerce/units/index.stx +4 -311
  920. package/views/dashboard/commerce/variants/index.stx +4 -313
  921. package/views/dashboard/commerce/waitlist/products.stx +4 -936
  922. package/views/dashboard/commerce/waitlist/restaurant.stx +3 -1017
  923. package/views/dashboard/composables/index.ts +23 -2
  924. package/views/dashboard/composables/useAppearance.ts +316 -0
  925. package/views/dashboard/composables/useChart.ts +55 -7
  926. package/views/dashboard/composables/useRole.ts +4 -2
  927. package/views/dashboard/content/authors/index.stx +3 -164
  928. package/views/dashboard/content/blog/index.stx +1 -487
  929. package/views/dashboard/content/categories/index.stx +8 -163
  930. package/views/dashboard/content/comments/index.stx +3 -182
  931. package/views/dashboard/content/dashboard.stx +3 -376
  932. package/views/dashboard/content/files/index.stx +1 -699
  933. package/views/dashboard/content/pages/index.stx +3 -167
  934. package/views/dashboard/content/posts/index.stx +3 -262
  935. package/views/dashboard/content/seo/index.stx +2 -235
  936. package/views/dashboard/content/tags/index.stx +8 -161
  937. package/views/dashboard/data/activity/index.stx +3 -256
  938. package/views/dashboard/data/dashboard/index.stx +6 -111
  939. package/views/dashboard/data/subscribers.stx +3 -265
  940. package/views/dashboard/data/teams.stx +4 -271
  941. package/views/dashboard/data/users.stx +4 -275
  942. package/views/dashboard/dependencies/index.stx +3 -171
  943. package/views/dashboard/deployments/[id].stx +4 -230
  944. package/views/dashboard/deployments/index.stx +3 -4
  945. package/views/dashboard/dns/index.stx +2 -155
  946. package/views/dashboard/environment/index.stx +2 -278
  947. package/views/dashboard/errors/index.stx +4 -270
  948. package/views/dashboard/forgot-password.stx +1 -52
  949. package/views/dashboard/functions/index.stx +4 -153
  950. package/views/dashboard/health/index.stx +3 -241
  951. package/views/dashboard/inbox/activity.stx +2 -344
  952. package/views/dashboard/inbox/captured.stx +8 -0
  953. package/views/dashboard/inbox/index.stx +3 -447
  954. package/views/dashboard/inbox/settings.stx +1 -284
  955. package/views/dashboard/index.stx +2 -248
  956. package/views/dashboard/insights/index.stx +2 -521
  957. package/views/dashboard/jobs/[id].stx +4 -426
  958. package/views/dashboard/jobs/history.stx +4 -218
  959. package/views/dashboard/jobs/index.stx +3 -209
  960. package/views/dashboard/kanban/[id].stx +2 -894
  961. package/views/dashboard/kanban/index.stx +2 -255
  962. package/views/dashboard/layouts/default.stx +516 -205
  963. package/views/dashboard/layouts/guest.stx +6 -1
  964. package/views/dashboard/library/components/index.stx +10 -0
  965. package/views/dashboard/login.stx +1 -43
  966. package/views/dashboard/logs/index.stx +3 -533
  967. package/views/dashboard/mailboxes/index.stx +3 -142
  968. package/views/dashboard/management/permissions/index.stx +1 -484
  969. package/views/dashboard/marketing/campaigns/index.stx +2 -596
  970. package/views/dashboard/marketing/lists/index.stx +1 -505
  971. package/views/dashboard/marketing/reviews/index.stx +8 -470
  972. package/views/dashboard/marketing/social-posts/index.stx +2 -552
  973. package/views/dashboard/models/[model].stx +2 -570
  974. package/views/dashboard/models/index.stx +7 -155
  975. package/views/dashboard/monitoring/errors/index.stx +3 -410
  976. package/views/dashboard/notifications/dashboard.stx +1 -376
  977. package/views/dashboard/notifications/email.stx +5 -329
  978. package/views/dashboard/notifications/history.stx +1 -366
  979. package/views/dashboard/notifications/sms.stx +5 -325
  980. package/views/dashboard/packages/index.stx +4 -189
  981. package/views/dashboard/privacy.stx +6 -0
  982. package/views/dashboard/queries/[id].stx +4 -377
  983. package/views/dashboard/queries/history.stx +4 -223
  984. package/views/dashboard/queries/index.stx +3 -330
  985. package/views/dashboard/queries/slow.stx +3 -313
  986. package/views/dashboard/queue/index.stx +3 -422
  987. package/views/dashboard/realtime/index.stx +3 -424
  988. package/views/dashboard/register.stx +1 -41
  989. package/views/dashboard/releases/index.stx +2 -381
  990. package/views/dashboard/requests/index.stx +3 -457
  991. package/views/dashboard/serverless/index.stx +2 -467
  992. package/views/dashboard/servers/[id].stx +3 -292
  993. package/views/dashboard/servers/index.stx +2 -475
  994. package/views/dashboard/settings/appearance.stx +7 -0
  995. package/views/dashboard/settings/billing.stx +4 -44
  996. package/views/dashboard/settings/index.stx +2 -251
  997. package/views/dashboard/settings/mail.stx +3 -246
  998. package/views/dashboard/stores/auth.ts +3 -4
  999. package/views/dashboard/stores/ci.ts +17 -18
  1000. package/views/dashboard/stores/index.ts +10 -8
  1001. package/views/dashboard/stores/kanban.ts +32 -74
  1002. package/views/dashboard/stores/rbac.ts +86 -78
  1003. package/views/dashboard/team-invitations/[token].stx +7 -0
  1004. package/views/dashboard/teams/[id].stx +2 -164
  1005. package/views/dashboard/terms.stx +6 -0
  1006. package/views/hello-world/[name].stx +2 -2
  1007. package/app/Actions/Commerce/Product/ProductManufacturerDestroyAction.ts +0 -18
  1008. package/app/Actions/Commerce/Product/ProductManufacturerIndexAction.ts +0 -14
  1009. package/app/Actions/Commerce/Product/ProductManufacturerShowAction.ts +0 -16
  1010. package/app/Actions/Commerce/Product/ProductManufacturerStoreAction.ts +0 -14
  1011. package/app/Actions/Commerce/Product/ProductManufacturerUpdateAction.ts +0 -18
  1012. package/app/Actions/Dashboard/Actions/CreateAction.ts +0 -11
  1013. package/app/Actions/Dashboard/Actions/GetActionCount.ts +0 -12
  1014. package/app/Actions/Dashboard/Commands/CreateCommand.ts +0 -11
  1015. package/app/Actions/Dashboard/Commands/GetAverageCommandTime.ts +0 -12
  1016. package/app/Actions/Dashboard/Commands/GetCommandCount.ts +0 -12
  1017. package/app/Actions/Dashboard/Commands/GetCommandSuccessRate.ts +0 -12
  1018. package/app/Actions/Dashboard/Commands/GetCommands.ts +0 -12
  1019. package/app/Actions/Dashboard/Content/SeoIndexAction.ts +0 -17
  1020. package/app/Actions/Dashboard/CreateDnsRecords.ts +0 -11
  1021. package/app/Actions/Dashboard/CreateMailbox.ts +0 -11
  1022. package/app/Actions/Dashboard/Data/AccessTokenIndexAction.ts +0 -65
  1023. package/app/Actions/Dashboard/Data/DataDashboardAction.ts +0 -67
  1024. package/app/Actions/Dashboard/GetDnsRecords.ts +0 -12
  1025. package/app/Actions/Dashboard/GetEmailInboxes.ts +0 -12
  1026. package/app/Actions/Dashboard/GetProjects.ts +0 -13
  1027. package/app/Actions/Dashboard/GetRecentCommits.ts +0 -13
  1028. package/app/Actions/Dashboard/Inbox/InboxIndexAction.ts +0 -144
  1029. package/app/Actions/Dashboard/Inbox/InboxShowAction.ts +0 -89
  1030. package/app/Actions/Dashboard/Jobs/CreateJob.ts +0 -11
  1031. package/app/Actions/Dashboard/Jobs/GetAverageJobTime.ts +0 -12
  1032. package/app/Actions/Dashboard/Jobs/GetJobHistory.ts +0 -12
  1033. package/app/Actions/Dashboard/Jobs/GetJobs.ts +0 -11
  1034. package/app/Actions/Dashboard/Jobs/GetJobsPerMinute.ts +0 -12
  1035. package/app/Actions/Dashboard/Notifications/CreateNotification.ts +0 -11
  1036. package/app/Actions/Dashboard/Notifications/GetAverageNotificationTime.ts +0 -12
  1037. package/app/Actions/Dashboard/Notifications/GetNotificationCount.ts +0 -12
  1038. package/app/Actions/Dashboard/Notifications/GetNotificationDeliveryRate.ts +0 -12
  1039. package/app/Actions/Dashboard/Notifications/GetNotificationHistory.ts +0 -12
  1040. package/app/Actions/Dashboard/Notifications/GetNotifications.ts +0 -12
  1041. package/app/Actions/Dashboard/Notifications/NotificationDashboardAction.ts +0 -43
  1042. package/app/Actions/Dashboard/Requests/GetAverageRequestTime.ts +0 -12
  1043. package/app/Actions/Dashboard/Requests/GetRequestCount.ts +0 -12
  1044. package/app/Actions/Dashboard/Requests/GetRequestSuccessRate.ts +0 -12
  1045. package/app/Actions/Dashboard/Requests/GetRequests.ts +0 -12
  1046. package/app/Actions/Dashboard/Settings/UpdateAiConfig.ts +0 -27
  1047. package/app/Actions/Dashboard/Settings/UpdateAnalyticsConfig.ts +0 -38
  1048. package/app/Actions/Dashboard/Settings/UpdateAppConfig.ts +0 -38
  1049. package/app/Actions/Dashboard/Settings/UpdateCacheConfig.ts +0 -11
  1050. package/app/Actions/Dashboard/Settings/UpdateCliConfig.ts +0 -11
  1051. package/app/Actions/Dashboard/Settings/UpdateCloudConfig.ts +0 -38
  1052. package/app/Actions/Dashboard/Settings/UpdateDatabaseConfig.ts +0 -38
  1053. package/app/Actions/Dashboard/Settings/UpdateDnsConfig.ts +0 -38
  1054. package/app/Actions/Dashboard/Settings/UpdateDocsConfig.ts +0 -11
  1055. package/app/Actions/Dashboard/Settings/UpdateEmailConfig.ts +0 -38
  1056. package/app/Actions/Dashboard/Settings/UpdateEnvConfig.ts +0 -11
  1057. package/app/Actions/Dashboard/Settings/UpdateErrorsConfig.ts +0 -11
  1058. package/app/Actions/Dashboard/Settings/UpdateFileSystemsConfig.ts +0 -11
  1059. package/app/Actions/Dashboard/Settings/UpdateGitConfig.ts +0 -11
  1060. package/app/Actions/Dashboard/Settings/UpdateHashingConfig.ts +0 -11
  1061. package/app/Actions/Dashboard/Settings/UpdateLibraryConfig.ts +0 -11
  1062. package/app/Actions/Dashboard/Settings/UpdateLoggerConfig.ts +0 -11
  1063. package/app/Actions/Dashboard/Settings/UpdateNotificationConfig.ts +0 -11
  1064. package/app/Actions/Dashboard/Settings/UpdatePaymentConfig.ts +0 -11
  1065. package/app/Actions/Dashboard/Settings/UpdatePortsConfig.ts +0 -38
  1066. package/app/Actions/Dashboard/Settings/UpdateQueueConfig.ts +0 -11
  1067. package/app/Actions/Dashboard/Settings/UpdateSearchEngineConfig.ts +0 -11
  1068. package/app/Actions/Dashboard/Settings/UpdateSecurityConfig.ts +0 -38
  1069. package/app/Actions/Dashboard/Settings/UpdateServicesConfig.ts +0 -38
  1070. package/app/Actions/Dashboard/Settings/UpdateStorageConfig.ts +0 -11
  1071. package/app/Actions/Dashboard/Settings/UpdateTeamConfig.ts +0 -11
  1072. package/app/Actions/Dashboard/Settings/UpdateUiConfig.ts +0 -11
  1073. package/resources/components/Button.stx +0 -70
  1074. package/resources/components/Buttons/BaseButton.stx +0 -39
  1075. package/resources/components/Dashboard/Avatar.stx +0 -123
  1076. package/resources/components/Dashboard/Billing/ActivePlan.stx +0 -57
  1077. package/resources/components/Dashboard/Billing/CardBrands.stx +0 -32
  1078. package/resources/components/Dashboard/Billing/CardForm.stx +0 -34
  1079. package/resources/components/Dashboard/Billing/OneTimePayment.stx +0 -28
  1080. package/resources/components/Dashboard/Billing/PaymentForm.stx +0 -33
  1081. package/resources/components/Dashboard/Billing/PaymentMethod.stx +0 -66
  1082. package/resources/components/Dashboard/Billing/PaymentMethodList.stx +0 -52
  1083. package/resources/components/Dashboard/Billing/Plans.stx +0 -136
  1084. package/resources/components/Dashboard/Buttons/AppButton.stx +0 -48
  1085. package/resources/components/Dashboard/Buttons/IconButton.stx +0 -20
  1086. package/resources/components/Dashboard/Card.stx +0 -78
  1087. package/resources/components/Dashboard/Chart.stx +0 -75
  1088. package/resources/components/Dashboard/Commerce/BulkActionBar.stx +0 -70
  1089. package/resources/components/Dashboard/Commerce/CategoriesTable.stx +0 -133
  1090. package/resources/components/Dashboard/Commerce/CouponsTable.stx +0 -161
  1091. package/resources/components/Dashboard/Commerce/CustomersTable.stx +0 -142
  1092. package/resources/components/Dashboard/Commerce/Delivery/LicenseTemplatesTable.stx +0 -88
  1093. package/resources/components/Dashboard/Commerce/Delivery/Pagination.stx +0 -122
  1094. package/resources/components/Dashboard/Commerce/Forms/CouponsForm.stx +0 -191
  1095. package/resources/components/Dashboard/Commerce/OrdersTable.stx +0 -131
  1096. package/resources/components/Dashboard/Commerce/ProductsTable.stx +0 -170
  1097. package/resources/components/Dashboard/Deployments/ActivityFeed.stx +0 -54
  1098. package/resources/components/Dashboard/Deployments/DeploymentHistory.stx +0 -97
  1099. package/resources/components/Dashboard/Elements/Dropdown.stx +0 -57
  1100. package/resources/components/Dashboard/Email/EmailActivityChart.stx +0 -111
  1101. package/resources/components/Dashboard/Email/EmailCompose.stx +0 -72
  1102. package/resources/components/Dashboard/Email/EmailDetail.stx +0 -105
  1103. package/resources/components/Dashboard/Email/EmailList.stx +0 -117
  1104. package/resources/components/Dashboard/Email/EmailSearch.stx +0 -40
  1105. package/resources/components/Dashboard/Monitoring/ErrorDetailModal.stx +0 -228
  1106. package/resources/components/Dashboard/Monitoring/ErrorsTable.stx +0 -184
  1107. package/resources/components/Dashboard/NavbarModern.stx +0 -188
  1108. package/resources/components/Dashboard/NotificationErrorModal.stx +0 -105
  1109. package/resources/components/Dashboard/NotificationStatusBadge.stx +0 -20
  1110. package/resources/components/Dashboard/Pagination.stx +0 -90
  1111. package/resources/components/Dashboard/Queue/QueueTable.stx +0 -127
  1112. package/resources/components/Dashboard/Settings/Forms/AIForm.stx +0 -126
  1113. package/resources/components/Dashboard/Settings/Forms/AnalyticsForm.stx +0 -52
  1114. package/resources/components/Dashboard/Settings/Forms/AppForm.stx +0 -157
  1115. package/resources/components/Dashboard/Settings/Forms/CLIForm.stx +0 -66
  1116. package/resources/components/Dashboard/Settings/Forms/CacheForm.stx +0 -253
  1117. package/resources/components/Dashboard/Settings/Forms/CloudForm.stx +0 -441
  1118. package/resources/components/Dashboard/Settings/Forms/DNSForm.stx +0 -307
  1119. package/resources/components/Dashboard/Settings/Forms/DatabaseForm.stx +0 -168
  1120. package/resources/components/Dashboard/Settings/Forms/EmailForm.stx +0 -100
  1121. package/resources/components/Dashboard/Settings/Forms/FileSystemForm.stx +0 -259
  1122. package/resources/components/Dashboard/Settings/Forms/HashingForm.stx +0 -119
  1123. package/resources/components/Dashboard/Settings/Forms/LibraryForm.stx +0 -389
  1124. package/resources/components/Dashboard/Settings/Forms/QueueForm.stx +0 -219
  1125. package/resources/components/Dashboard/Settings/Forms/SearchEngineForm.stx +0 -48
  1126. package/resources/components/Dashboard/Settings/Forms/SecurityForm.stx +0 -143
  1127. package/resources/components/Dashboard/Settings/Forms/ServicesForm.stx +0 -194
  1128. package/resources/components/Dashboard/Settings/Forms/StorageForm.stx +0 -191
  1129. package/resources/components/Dashboard/Settings/Forms/TeamsForm.stx +0 -33
  1130. package/resources/components/Dashboard/SettingsHeader.stx +0 -88
  1131. package/resources/components/Dashboard/SettingsSidebar.stx +0 -234
  1132. package/resources/components/Dashboard/SidebarModern.stx +0 -250
  1133. package/resources/components/Dashboard/Table.stx +0 -82
  1134. package/resources/components/Dashboard/TerminalContainer.stx +0 -97
  1135. package/resources/components/Dashboard/UI/DataTable.stx +0 -45
  1136. package/resources/components/Dashboard/UI/RouterLink.stx +0 -31
  1137. package/resources/components/Dashboard/Widget.stx +0 -89
  1138. package/resources/components/Dashboard/WindowControls.stx +0 -119
  1139. package/resources/functions/dashboard/files-tree.ts +0 -162
  1140. package/resources/functions/dashboard/library.ts +0 -250
  1141. package/resources/functions/dashboard/system.ts +0 -150
  1142. package/resources/views/dashboard/custom-page.stx +0 -45
  1143. package/views/dashboard/commerce/delivery/tabs.ts +0 -25
  1144. package/views/dashboard/commerce/products/detail.stx +0 -563
  1145. package/views/dashboard/commerce/reviews/index.ts +0 -0
  1146. package/views/dashboard/components/index.stx +0 -330
@@ -1,4 +1,5 @@
1
1
  import { defineStore, derived, registerStoresClient, state } from '@stacksjs/stx'
2
+ import { dashboardApi } from '../../../functions/dashboard-api'
2
3
 
3
4
  interface BoardSummary {
4
5
  id: number
@@ -127,9 +128,7 @@ export const kanbanStore = defineStore('kanban', () => {
127
128
  loading.set(true)
128
129
  error.set(null)
129
130
  try {
130
- const res = await fetch('/api/dashboard/kanban/boards', { headers: { accept: 'application/json' } })
131
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
132
- const data = await res.json() as { boards: BoardSummary[], error?: string }
131
+ const data = await dashboardApi<{ boards: BoardSummary[], error?: string }>('/api/dashboard/kanban/boards')
133
132
  if (data.error) {
134
133
  error.set(data.error)
135
134
  boards.set([])
@@ -150,14 +149,12 @@ export const kanbanStore = defineStore('kanban', () => {
150
149
  errorBoard.set(null)
151
150
  lastViewedBoardId.set(id)
152
151
  try {
153
- const res = await fetch(`/api/dashboard/kanban/boards/${id}`, { headers: { accept: 'application/json' } })
154
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
155
- const data = await res.json() as {
152
+ const data = await dashboardApi<{
156
153
  board?: BoardDetail
157
154
  columns?: ColumnRecord[]
158
155
  labels?: LabelRecord[]
159
156
  error?: string
160
- }
157
+ }>(`/api/dashboard/kanban/boards/${id}`)
161
158
  if (data.error || !data.board) {
162
159
  errorBoard.set(data.error ?? 'Board not found')
163
160
  currentBoard.set(null)
@@ -193,13 +190,10 @@ export const kanbanStore = defineStore('kanban', () => {
193
190
  async function createBoard(input: { name: string, description?: string, color?: string, icon?: string }): Promise<BoardSummary | null> {
194
191
  const snapshot = boards()
195
192
  try {
196
- const res = await fetch('/api/dashboard/kanban/boards', {
193
+ const data = await dashboardApi<{ board?: BoardSummary, error?: string }>('/api/dashboard/kanban/boards', {
197
194
  method: 'POST',
198
- headers: { 'content-type': 'application/json', accept: 'application/json' },
199
- body: JSON.stringify(input),
195
+ body: input,
200
196
  })
201
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
202
- const data = await res.json() as { board?: BoardSummary, error?: string }
203
197
  if (data.error || !data.board) throw new Error(data.error ?? 'Create failed')
204
198
  boards.set([...snapshot, data.board])
205
199
  return data.board
@@ -215,8 +209,7 @@ export const kanbanStore = defineStore('kanban', () => {
215
209
  // Optimistic remove.
216
210
  boards.set(snapshot.filter(b => b.id !== id))
217
211
  try {
218
- const res = await fetch(`/api/dashboard/kanban/boards/${id}`, { method: 'DELETE', headers: { accept: 'application/json' } })
219
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
212
+ await dashboardApi(`/api/dashboard/kanban/boards/${id}`, { method: 'DELETE' })
220
213
  return true
221
214
  }
222
215
  catch (e) {
@@ -229,13 +222,10 @@ export const kanbanStore = defineStore('kanban', () => {
229
222
  async function createColumn(input: { boardId: number, name: string, color?: string }): Promise<ColumnRecord | null> {
230
223
  const snapshot = currentColumns()
231
224
  try {
232
- const res = await fetch('/api/dashboard/kanban/columns', {
225
+ const data = await dashboardApi<{ column?: ColumnRecord, error?: string }>('/api/dashboard/kanban/columns', {
233
226
  method: 'POST',
234
- headers: { 'content-type': 'application/json', accept: 'application/json' },
235
- body: JSON.stringify(input),
227
+ body: input,
236
228
  })
237
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
238
- const data = await res.json() as { column?: ColumnRecord, error?: string }
239
229
  if (data.error || !data.column) throw new Error(data.error ?? 'Create failed')
240
230
  currentColumns.set([...snapshot, data.column])
241
231
  return data.column
@@ -250,8 +240,7 @@ export const kanbanStore = defineStore('kanban', () => {
250
240
  const snapshot = currentColumns()
251
241
  currentColumns.set(snapshot.filter(c => c.id !== columnId))
252
242
  try {
253
- const res = await fetch(`/api/dashboard/kanban/columns/${columnId}`, { method: 'DELETE', headers: { accept: 'application/json' } })
254
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
243
+ await dashboardApi(`/api/dashboard/kanban/columns/${columnId}`, { method: 'DELETE' })
255
244
  return true
256
245
  }
257
246
  catch (e) {
@@ -264,13 +253,10 @@ export const kanbanStore = defineStore('kanban', () => {
264
253
  async function createCard(input: { columnId: number, title: string, description?: string }): Promise<CardRecord | null> {
265
254
  const snapshot = currentColumns()
266
255
  try {
267
- const res = await fetch('/api/dashboard/kanban/cards', {
256
+ const data = await dashboardApi<{ card?: CardRecord, error?: string }>('/api/dashboard/kanban/cards', {
268
257
  method: 'POST',
269
- headers: { 'content-type': 'application/json', accept: 'application/json' },
270
- body: JSON.stringify(input),
258
+ body: input,
271
259
  })
272
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
273
- const data = await res.json() as { card?: CardRecord, error?: string }
274
260
  if (data.error || !data.card) throw new Error(data.error ?? 'Create failed')
275
261
  currentColumns.set(snapshot.map(col =>
276
262
  col.id === input.columnId
@@ -292,8 +278,7 @@ export const kanbanStore = defineStore('kanban', () => {
292
278
  cards: col.cards.filter(c => c.id !== cardId),
293
279
  })))
294
280
  try {
295
- const res = await fetch(`/api/dashboard/kanban/cards/${cardId}`, { method: 'DELETE', headers: { accept: 'application/json' } })
296
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
281
+ await dashboardApi(`/api/dashboard/kanban/cards/${cardId}`, { method: 'DELETE' })
297
282
  return true
298
283
  }
299
284
  catch (e) {
@@ -336,13 +321,10 @@ export const kanbanStore = defineStore('kanban', () => {
336
321
  currentColumns.set(next)
337
322
 
338
323
  try {
339
- const res = await fetch('/api/dashboard/kanban/cards/reorder', {
324
+ const data = await dashboardApi<{ moved?: number, error?: string }>('/api/dashboard/kanban/cards/reorder', {
340
325
  method: 'POST',
341
- headers: { 'content-type': 'application/json', accept: 'application/json' },
342
- body: JSON.stringify({ columns: payload }),
326
+ body: { columns: payload },
343
327
  })
344
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
345
- const data = await res.json() as { moved?: number, error?: string }
346
328
  if (data.error) throw new Error(data.error)
347
329
  return true
348
330
  }
@@ -364,13 +346,10 @@ export const kanbanStore = defineStore('kanban', () => {
364
346
  currentColumns.set(next)
365
347
 
366
348
  try {
367
- const res = await fetch('/api/dashboard/kanban/columns/reorder', {
349
+ const data = await dashboardApi<{ reordered?: number, error?: string }>('/api/dashboard/kanban/columns/reorder', {
368
350
  method: 'POST',
369
- headers: { 'content-type': 'application/json', accept: 'application/json' },
370
- body: JSON.stringify({ boardId, order }),
351
+ body: { boardId, order },
371
352
  })
372
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
373
- const data = await res.json() as { reordered?: number, error?: string }
374
353
  if (data.error) throw new Error(data.error)
375
354
  return true
376
355
  }
@@ -417,15 +396,13 @@ export const kanbanStore = defineStore('kanban', () => {
417
396
  openCard.set(cardToDetail(seed))
418
397
 
419
398
  try {
420
- const res = await fetch(`/api/dashboard/kanban/cards/${cardId}`, { headers: { accept: 'application/json' } })
421
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
422
- const data = await res.json() as {
399
+ const data = await dashboardApi<{
423
400
  card?: CardRecord
424
401
  labels?: CardLabel[]
425
402
  assignees?: CardAssignee[]
426
403
  comments?: CardComment[]
427
404
  error?: string
428
- }
405
+ }>(`/api/dashboard/kanban/cards/${cardId}`)
429
406
  if (data.error || !data.card)
430
407
  throw new Error(data.error ?? 'Card not found')
431
408
  openCard.set({
@@ -470,13 +447,10 @@ export const kanbanStore = defineStore('kanban', () => {
470
447
  const snapshot = { ...oc }
471
448
  patchOpenCard(input as Partial<CardDetail>)
472
449
  try {
473
- const res = await fetch(`/api/dashboard/kanban/cards/${oc.id}`, {
450
+ const data = await dashboardApi<{ card?: CardRecord, error?: string }>(`/api/dashboard/kanban/cards/${oc.id}`, {
474
451
  method: 'PATCH',
475
- headers: { 'content-type': 'application/json', accept: 'application/json' },
476
- body: JSON.stringify(input),
452
+ body: input,
477
453
  })
478
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
479
- const data = await res.json() as { card?: CardRecord, error?: string }
480
454
  if (data.error || !data.card) throw new Error(data.error ?? 'Update failed')
481
455
  // Server-canonical state wins (handles trimming etc.).
482
456
  patchOpenCard(data.card)
@@ -498,9 +472,7 @@ export const kanbanStore = defineStore('kanban', () => {
498
472
  if (loadingUsers() || users().length > 0) return
499
473
  loadingUsers.set(true)
500
474
  try {
501
- const res = await fetch('/api/dashboard/kanban/users', { headers: { accept: 'application/json' } })
502
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
503
- const data = await res.json() as { users?: UserSummary[] }
475
+ const data = await dashboardApi<{ users?: UserSummary[] }>('/api/dashboard/kanban/users')
504
476
  users.set(data.users ?? [])
505
477
  }
506
478
  catch {
@@ -527,13 +499,10 @@ export const kanbanStore = defineStore('kanban', () => {
527
499
  patchOpenCard({ labels: optimistic })
528
500
 
529
501
  try {
530
- const res = await fetch(`/api/dashboard/kanban/cards/${cardId}/labels`, {
502
+ const data = await dashboardApi<{ labels?: CardLabel[], error?: string }>(`/api/dashboard/kanban/cards/${cardId}/labels`, {
531
503
  method: 'POST',
532
- headers: { 'content-type': 'application/json', accept: 'application/json' },
533
- body: JSON.stringify({ labelIds }),
504
+ body: { labelIds },
534
505
  })
535
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
536
- const data = await res.json() as { labels?: CardLabel[], error?: string }
537
506
  if (data.error) throw new Error(data.error)
538
507
  // Canonical reconciliation.
539
508
  patchOpenCard({ labels: data.labels ?? [] })
@@ -563,13 +532,10 @@ export const kanbanStore = defineStore('kanban', () => {
563
532
  patchOpenCard({ assignees: optimistic })
564
533
 
565
534
  try {
566
- const res = await fetch(`/api/dashboard/kanban/cards/${cardId}/assignees`, {
535
+ const data = await dashboardApi<{ assignees?: CardAssignee[], error?: string }>(`/api/dashboard/kanban/cards/${cardId}/assignees`, {
567
536
  method: 'POST',
568
- headers: { 'content-type': 'application/json', accept: 'application/json' },
569
- body: JSON.stringify({ userIds }),
537
+ body: { userIds },
570
538
  })
571
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
572
- const data = await res.json() as { assignees?: CardAssignee[], error?: string }
573
539
  if (data.error) throw new Error(data.error)
574
540
  patchOpenCard({ assignees: data.assignees ?? [] })
575
541
  return true
@@ -588,13 +554,10 @@ export const kanbanStore = defineStore('kanban', () => {
588
554
  if (!trimmed) return false
589
555
 
590
556
  try {
591
- const res = await fetch(`/api/dashboard/kanban/cards/${oc.id}/comments`, {
557
+ const data = await dashboardApi<{ comment?: CardComment, error?: string }>(`/api/dashboard/kanban/cards/${oc.id}/comments`, {
592
558
  method: 'POST',
593
- headers: { 'content-type': 'application/json', accept: 'application/json' },
594
- body: JSON.stringify({ body: trimmed }),
559
+ body: { body: trimmed },
595
560
  })
596
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
597
- const data = await res.json() as { comment?: CardComment, error?: string }
598
561
  if (data.error || !data.comment) throw new Error(data.error ?? 'Comment failed')
599
562
  patchOpenCard({ comments: [...oc.comments, data.comment] })
600
563
  return true
@@ -611,8 +574,7 @@ export const kanbanStore = defineStore('kanban', () => {
611
574
  const snapshot = oc.comments
612
575
  patchOpenCard({ comments: oc.comments.filter(c => c.id !== commentId) })
613
576
  try {
614
- const res = await fetch(`/api/dashboard/kanban/comments/${commentId}`, { method: 'DELETE', headers: { accept: 'application/json' } })
615
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
577
+ await dashboardApi(`/api/dashboard/kanban/comments/${commentId}`, { method: 'DELETE' })
616
578
  return true
617
579
  }
618
580
  catch (e) {
@@ -626,13 +588,10 @@ export const kanbanStore = defineStore('kanban', () => {
626
588
 
627
589
  async function createLabel(input: { boardId: number, name: string, color?: string }): Promise<LabelRecord | null> {
628
590
  try {
629
- const res = await fetch('/api/dashboard/kanban/labels', {
591
+ const data = await dashboardApi<{ label?: LabelRecord, error?: string }>('/api/dashboard/kanban/labels', {
630
592
  method: 'POST',
631
- headers: { 'content-type': 'application/json', accept: 'application/json' },
632
- body: JSON.stringify(input),
593
+ body: input,
633
594
  })
634
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
635
- const data = await res.json() as { label?: LabelRecord, error?: string }
636
595
  if (data.error || !data.label) throw new Error(data.error ?? 'Create failed')
637
596
  currentLabels.set([...currentLabels(), data.label])
638
597
  return data.label
@@ -661,8 +620,7 @@ export const kanbanStore = defineStore('kanban', () => {
661
620
  patchOpenCard({ labels: oc.labels.filter(l => l.id !== labelId) })
662
621
 
663
622
  try {
664
- const res = await fetch(`/api/dashboard/kanban/labels/${labelId}`, { method: 'DELETE', headers: { accept: 'application/json' } })
665
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
623
+ await dashboardApi(`/api/dashboard/kanban/labels/${labelId}`, { method: 'DELETE' })
666
624
  return true
667
625
  }
668
626
  catch (e) {
@@ -1,4 +1,5 @@
1
1
  import { defineStore, derived, registerStoresClient, state } from '@stacksjs/stx'
2
+ import { dashboardApi } from '../../../functions/dashboard-api'
2
3
 
3
4
  interface RoleRow {
4
5
  id: number
@@ -43,7 +44,7 @@ export const rbacStore = defineStore('rbac', () => {
43
44
  // Per-user role memberships, keyed by user id. Lazy-loaded when
44
45
  // the admin picks a user on the Users tab so the page doesn't
45
46
  // burn N+1 round-trips just to show the user list.
46
- const userRoles = state<Record<number, string[]>>({})
47
+ const userRoles = state<Record<string, string[]>>({})
47
48
  // Per-role permission memberships, keyed by role name (the URL
48
49
  // identifier on the matrix endpoint).
49
50
  const rolePermissions = state<Record<string, string[]>>({})
@@ -55,21 +56,32 @@ export const rbacStore = defineStore('rbac', () => {
55
56
  const hasRoles = derived(() => roles().length > 0)
56
57
  const hasPermissions = derived(() => permissions().length > 0)
57
58
 
59
+ function userRoleKey(userId: number, guardName: string): string {
60
+ return `${userId}:${encodeURIComponent(guardName)}`
61
+ }
62
+
63
+ function rolePermissionKey(roleName: string, guardName: string): string {
64
+ return `${encodeURIComponent(guardName)}:${encodeURIComponent(roleName)}`
65
+ }
66
+
67
+ function userRoleNames(userId: number, guardName: string = 'web'): string[] {
68
+ return userRoles()[userRoleKey(userId, guardName)] ?? []
69
+ }
70
+
71
+ function rolePermissionNames(roleName: string, guardName: string = 'web'): string[] {
72
+ return rolePermissions()[rolePermissionKey(roleName, guardName)] ?? []
73
+ }
74
+
58
75
  // ─── Initial load ──────────────────────────────────────────────
59
76
 
60
77
  async function load(): Promise<void> {
61
78
  loading.set(true)
62
79
  error.set(null)
63
80
  try {
64
- const [rolesRes, permsRes, usersRes] = await Promise.all([
65
- fetch('/api/dashboard/rbac/roles', { headers: { accept: 'application/json' } }),
66
- fetch('/api/dashboard/rbac/permissions', { headers: { accept: 'application/json' } }),
67
- fetch('/api/dashboard/rbac/users', { headers: { accept: 'application/json' } }),
68
- ])
69
81
  const [rolesData, permsData, usersData] = await Promise.all([
70
- rolesRes.json() as Promise<{ roles?: RoleRow[], error?: string }>,
71
- permsRes.json() as Promise<{ permissions?: PermissionRow[], error?: string }>,
72
- usersRes.json() as Promise<{ users?: UserRow[], error?: string }>,
82
+ dashboardApi<{ roles?: RoleRow[], error?: string }>('/api/dashboard/rbac/roles'),
83
+ dashboardApi<{ permissions?: PermissionRow[], error?: string }>('/api/dashboard/rbac/permissions'),
84
+ dashboardApi<{ users?: UserRow[], error?: string }>('/api/dashboard/rbac/users'),
73
85
  ])
74
86
  // Pick the first error if any of the three failed — the page
75
87
  // renders a single banner rather than three.
@@ -92,14 +104,12 @@ export const rbacStore = defineStore('rbac', () => {
92
104
  // ─── Role mutations ────────────────────────────────────────────
93
105
 
94
106
  async function createRole(input: { name: string, guardName?: string, description?: string }): Promise<RoleRow | null> {
107
+ error.set(null)
95
108
  try {
96
- const res = await fetch('/api/dashboard/rbac/roles', {
109
+ const data = await dashboardApi<{ role?: RoleRow, error?: string }>('/api/dashboard/rbac/roles', {
97
110
  method: 'POST',
98
- headers: { 'content-type': 'application/json', accept: 'application/json' },
99
- body: JSON.stringify(input),
111
+ body: input,
100
112
  })
101
- if (!res.ok && res.status !== 409) throw new Error(`HTTP ${res.status}`)
102
- const data = await res.json() as { role?: RoleRow, error?: string }
103
113
  if (data.error || !data.role) throw new Error(data.error ?? 'Create failed')
104
114
  roles.set([...roles(), data.role])
105
115
  return data.role
@@ -111,28 +121,29 @@ export const rbacStore = defineStore('rbac', () => {
111
121
  }
112
122
 
113
123
  async function deleteRole(name: string, guardName: string = 'web'): Promise<boolean> {
124
+ error.set(null)
114
125
  const snapshot = roles()
115
126
  roles.set(snapshot.filter(r => !(r.name === name && r.guardName === guardName)))
116
127
  // Cascade: a deleted role drops out of every user's role list +
117
128
  // its row in the rolePermissions cache. Mirror the server-side
118
129
  // cascade so the optimistic UI doesn't show stale attachments.
119
130
  const userRolesSnapshot = userRoles()
120
- const cleanedUserRoles: Record<number, string[]> = {}
121
- for (const [uid, names] of Object.entries(userRolesSnapshot))
122
- cleanedUserRoles[Number(uid)] = names.filter(n => n !== name)
131
+ const cleanedUserRoles: Record<string, string[]> = {}
132
+ const guardSuffix = `:${encodeURIComponent(guardName)}`
133
+ for (const [key, names] of Object.entries(userRolesSnapshot))
134
+ cleanedUserRoles[key] = key.endsWith(guardSuffix) ? names.filter(n => n !== name) : names
123
135
  userRoles.set(cleanedUserRoles)
124
136
 
125
137
  const rolePermsSnapshot = rolePermissions()
126
138
  const cleanedRolePerms = { ...rolePermsSnapshot }
127
- delete cleanedRolePerms[name]
139
+ delete cleanedRolePerms[rolePermissionKey(name, guardName)]
128
140
  rolePermissions.set(cleanedRolePerms)
129
141
 
130
142
  try {
131
- const res = await fetch(
143
+ await dashboardApi(
132
144
  `/api/dashboard/rbac/roles/${encodeURIComponent(name)}?guard=${encodeURIComponent(guardName)}`,
133
- { method: 'DELETE', headers: { accept: 'application/json' } },
145
+ { method: 'DELETE' },
134
146
  )
135
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
136
147
  return true
137
148
  }
138
149
  catch (e) {
@@ -148,14 +159,12 @@ export const rbacStore = defineStore('rbac', () => {
148
159
  // ─── Permission mutations ──────────────────────────────────────
149
160
 
150
161
  async function createPermission(input: { name: string, guardName?: string, description?: string }): Promise<PermissionRow | null> {
162
+ error.set(null)
151
163
  try {
152
- const res = await fetch('/api/dashboard/rbac/permissions', {
164
+ const data = await dashboardApi<{ permission?: PermissionRow, error?: string }>('/api/dashboard/rbac/permissions', {
153
165
  method: 'POST',
154
- headers: { 'content-type': 'application/json', accept: 'application/json' },
155
- body: JSON.stringify(input),
166
+ body: input,
156
167
  })
157
- if (!res.ok && res.status !== 409) throw new Error(`HTTP ${res.status}`)
158
- const data = await res.json() as { permission?: PermissionRow, error?: string }
159
168
  if (data.error || !data.permission) throw new Error(data.error ?? 'Create failed')
160
169
  permissions.set([...permissions(), data.permission])
161
170
  return data.permission
@@ -167,22 +176,23 @@ export const rbacStore = defineStore('rbac', () => {
167
176
  }
168
177
 
169
178
  async function deletePermission(name: string, guardName: string = 'web'): Promise<boolean> {
179
+ error.set(null)
170
180
  const snapshot = permissions()
171
181
  permissions.set(snapshot.filter(p => !(p.name === name && p.guardName === guardName)))
172
182
  // Cascade through the rolePermissions cache: each role drops the
173
183
  // deleted permission from its attached list.
174
184
  const rolePermsSnapshot = rolePermissions()
175
185
  const cleaned: Record<string, string[]> = {}
176
- for (const [roleName, names] of Object.entries(rolePermsSnapshot))
177
- cleaned[roleName] = names.filter(n => n !== name)
186
+ const guardPrefix = `${encodeURIComponent(guardName)}:`
187
+ for (const [key, names] of Object.entries(rolePermsSnapshot))
188
+ cleaned[key] = key.startsWith(guardPrefix) ? names.filter(n => n !== name) : names
178
189
  rolePermissions.set(cleaned)
179
190
 
180
191
  try {
181
- const res = await fetch(
192
+ await dashboardApi(
182
193
  `/api/dashboard/rbac/permissions/${encodeURIComponent(name)}?guard=${encodeURIComponent(guardName)}`,
183
- { method: 'DELETE', headers: { accept: 'application/json' } },
194
+ { method: 'DELETE' },
184
195
  )
185
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
186
196
  return true
187
197
  }
188
198
  catch (e) {
@@ -195,59 +205,57 @@ export const rbacStore = defineStore('rbac', () => {
195
205
 
196
206
  // ─── User-role pivot ───────────────────────────────────────────
197
207
 
198
- async function loadUserRoles(userId: number): Promise<void> {
199
- if (userRoles()[userId] !== undefined) return
200
- const key = `user:${userId}`
201
- if (loadingPivots()[key]) return
202
- loadingPivots.set({ ...loadingPivots(), [key]: true })
208
+ async function loadUserRoles(userId: number, guardName: string = 'web'): Promise<void> {
209
+ const cacheKey = userRoleKey(userId, guardName)
210
+ if (userRoles()[cacheKey] !== undefined) return
211
+ const loadingKey = `user:${cacheKey}`
212
+ if (loadingPivots()[loadingKey]) return
213
+ loadingPivots.set({ ...loadingPivots(), [loadingKey]: true })
203
214
  try {
204
- const res = await fetch(`/api/dashboard/rbac/users/${userId}/roles`, {
205
- headers: { accept: 'application/json' },
206
- })
207
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
208
- const data = await res.json() as { roles?: Array<{ name: string }>, error?: string }
215
+ const data = await dashboardApi<{ roles?: Array<{ name: string }>, error?: string }>(
216
+ `/api/dashboard/rbac/users/${userId}/roles?guard=${encodeURIComponent(guardName)}`,
217
+ )
209
218
  if (data.error) {
210
- userRoles.set({ ...userRoles(), [userId]: [] })
219
+ userRoles.set({ ...userRoles(), [cacheKey]: [] })
211
220
  return
212
221
  }
213
222
  userRoles.set({
214
223
  ...userRoles(),
215
- [userId]: (data.roles ?? []).map(r => r.name),
224
+ [cacheKey]: (data.roles ?? []).map(r => r.name),
216
225
  })
217
226
  }
218
- catch {
219
- // Soft-fail — page shows an empty role list for the user.
220
- userRoles.set({ ...userRoles(), [userId]: [] })
227
+ catch (e) {
228
+ userRoles.set({ ...userRoles(), [cacheKey]: [] })
229
+ error.set(e instanceof Error ? e.message : String(e))
221
230
  }
222
231
  finally {
223
232
  const next = { ...loadingPivots() }
224
- delete next[key]
233
+ delete next[loadingKey]
225
234
  loadingPivots.set(next)
226
235
  }
227
236
  }
228
237
 
229
238
  async function syncUserRoles(userId: number, roleNames: string[], guardName: string = 'web'): Promise<boolean> {
230
- const snapshot = userRoles()[userId] ?? []
239
+ error.set(null)
240
+ const cacheKey = userRoleKey(userId, guardName)
241
+ const snapshot = userRoles()[cacheKey] ?? []
231
242
  // Optimistic mutation.
232
- userRoles.set({ ...userRoles(), [userId]: roleNames })
243
+ userRoles.set({ ...userRoles(), [cacheKey]: roleNames })
233
244
  try {
234
- const res = await fetch(`/api/dashboard/rbac/users/${userId}/roles`, {
245
+ const data = await dashboardApi<{ roles?: Array<{ name: string }>, error?: string }>(`/api/dashboard/rbac/users/${userId}/roles`, {
235
246
  method: 'POST',
236
- headers: { 'content-type': 'application/json', accept: 'application/json' },
237
- body: JSON.stringify({ roles: roleNames, guardName }),
247
+ body: { roles: roleNames, guardName },
238
248
  })
239
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
240
- const data = await res.json() as { roles?: Array<{ name: string }>, error?: string }
241
249
  if (data.error) throw new Error(data.error)
242
250
  // Canonical reconciliation — server returns the final list.
243
251
  userRoles.set({
244
252
  ...userRoles(),
245
- [userId]: (data.roles ?? []).map(r => r.name),
253
+ [cacheKey]: (data.roles ?? []).map(r => r.name),
246
254
  })
247
255
  return true
248
256
  }
249
257
  catch (e) {
250
- userRoles.set({ ...userRoles(), [userId]: snapshot })
258
+ userRoles.set({ ...userRoles(), [cacheKey]: snapshot })
251
259
  error.set(e instanceof Error ? e.message : String(e))
252
260
  return false
253
261
  }
@@ -256,59 +264,57 @@ export const rbacStore = defineStore('rbac', () => {
256
264
  // ─── Role-permission pivot ─────────────────────────────────────
257
265
 
258
266
  async function loadRolePermissions(roleName: string, guardName: string = 'web'): Promise<void> {
259
- if (rolePermissions()[roleName] !== undefined) return
260
- const key = `role:${roleName}`
261
- if (loadingPivots()[key]) return
262
- loadingPivots.set({ ...loadingPivots(), [key]: true })
267
+ const cacheKey = rolePermissionKey(roleName, guardName)
268
+ if (rolePermissions()[cacheKey] !== undefined) return
269
+ const loadingKey = `role:${cacheKey}`
270
+ if (loadingPivots()[loadingKey]) return
271
+ loadingPivots.set({ ...loadingPivots(), [loadingKey]: true })
263
272
  try {
264
- const res = await fetch(
273
+ const data = await dashboardApi<{ permissions?: Array<{ name: string }>, error?: string }>(
265
274
  `/api/dashboard/rbac/roles/${encodeURIComponent(roleName)}/permissions?guard=${encodeURIComponent(guardName)}`,
266
- { headers: { accept: 'application/json' } },
267
275
  )
268
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
269
- const data = await res.json() as { permissions?: Array<{ name: string }>, error?: string }
270
276
  if (data.error) {
271
- rolePermissions.set({ ...rolePermissions(), [roleName]: [] })
277
+ rolePermissions.set({ ...rolePermissions(), [cacheKey]: [] })
272
278
  return
273
279
  }
274
280
  rolePermissions.set({
275
281
  ...rolePermissions(),
276
- [roleName]: (data.permissions ?? []).map(p => p.name),
282
+ [cacheKey]: (data.permissions ?? []).map(p => p.name),
277
283
  })
278
284
  }
279
- catch {
280
- rolePermissions.set({ ...rolePermissions(), [roleName]: [] })
285
+ catch (e) {
286
+ rolePermissions.set({ ...rolePermissions(), [cacheKey]: [] })
287
+ error.set(e instanceof Error ? e.message : String(e))
281
288
  }
282
289
  finally {
283
290
  const next = { ...loadingPivots() }
284
- delete next[key]
291
+ delete next[loadingKey]
285
292
  loadingPivots.set(next)
286
293
  }
287
294
  }
288
295
 
289
296
  async function syncRolePermissions(roleName: string, permissionNames: string[], guardName: string = 'web'): Promise<boolean> {
290
- const snapshot = rolePermissions()[roleName] ?? []
291
- rolePermissions.set({ ...rolePermissions(), [roleName]: permissionNames })
297
+ error.set(null)
298
+ const cacheKey = rolePermissionKey(roleName, guardName)
299
+ const snapshot = rolePermissions()[cacheKey] ?? []
300
+ rolePermissions.set({ ...rolePermissions(), [cacheKey]: permissionNames })
292
301
  try {
293
- const res = await fetch(
302
+ const data = await dashboardApi<{ permissions?: Array<{ name: string }>, error?: string }>(
294
303
  `/api/dashboard/rbac/roles/${encodeURIComponent(roleName)}/permissions`,
295
304
  {
296
305
  method: 'POST',
297
- headers: { 'content-type': 'application/json', accept: 'application/json' },
298
- body: JSON.stringify({ permissions: permissionNames, guardName }),
306
+ body: { permissions: permissionNames, guardName },
299
307
  },
300
308
  )
301
- if (!res.ok) throw new Error(`HTTP ${res.status}`)
302
- const data = await res.json() as { permissions?: Array<{ name: string }>, error?: string }
303
309
  if (data.error) throw new Error(data.error)
304
310
  rolePermissions.set({
305
311
  ...rolePermissions(),
306
- [roleName]: (data.permissions ?? []).map(p => p.name),
312
+ [cacheKey]: (data.permissions ?? []).map(p => p.name),
307
313
  })
308
314
  return true
309
315
  }
310
316
  catch (e) {
311
- rolePermissions.set({ ...rolePermissions(), [roleName]: snapshot })
317
+ rolePermissions.set({ ...rolePermissions(), [cacheKey]: snapshot })
312
318
  error.set(e instanceof Error ? e.message : String(e))
313
319
  return false
314
320
  }
@@ -325,6 +331,8 @@ export const rbacStore = defineStore('rbac', () => {
325
331
  error,
326
332
  hasRoles,
327
333
  hasPermissions,
334
+ userRoleNames,
335
+ rolePermissionNames,
328
336
  load,
329
337
  createRole,
330
338
  deleteRole,
@@ -0,0 +1,7 @@
1
+ @extends('layouts/guest')
2
+
3
+ @section('content')
4
+ @title('Team Invitation')
5
+
6
+ <TeamInvitationDashboard />
7
+ @endsection