@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
@@ -2,705 +2,7 @@
2
2
 
3
3
  @section('content')
4
4
  @title('Dashboard - File Manager')
5
- <script server>
6
- // Seed the grid from a real Storage disk (stacksjs/stacks#245). Defaults to the
7
- // `public` disk, which carries real media + public URLs so image/video previews
8
- // render. Best-effort: any failure leaves the payload empty and the client
9
- // script falls back to the built-in demo tree below.
10
- let serverFileTreeJson = ''
11
- try {
12
- const { buildStorageFileTree } = await import('../../../../resources/functions/dashboard/files-tree')
13
- const tree = await buildStorageFileTree({ disk: 'public' })
14
- if (tree)
15
- serverFileTreeJson = JSON.stringify(tree)
16
- }
17
- catch {}
18
- </script>
19
- <div class="flex flex-col h-full">
20
- <div data-file-tree hidden>{{ serverFileTreeJson }}</div>
21
- <div class="flex flex-1">
22
- <div :class="sidePanelClass()">
23
- <div :show="showSidePanel" class="flex flex-col h-full">
24
- <div class="p-4 border-b border-black/5 dark:border-white/10">
25
- <h3 class="font-semibold text-sm text-stone-500 tracking-wider uppercase dark:text-neutral-400">Storage</h3>
26
- <div class="mt-2" style="height: 120px;"><canvas id="files_storage_chart"></canvas></div>
27
- <div class="mt-2 text-stone-500 text-xs dark:text-neutral-400">
28
- <div class="flex justify-between py-0.5"><span>Used</span><span>{{ usedLabel }}</span></div>
29
- <div class="flex justify-between py-0.5"><span>Available</span><span>{{ availableLabel }}</span></div>
30
- <div class="flex justify-between py-0.5 font-medium text-stone-700 dark:text-neutral-300"><span>Total</span><span>{{ totalLabel }}</span></div>
31
- </div>
32
- </div>
33
5
 
34
- <div class="p-4 border-b border-black/5 dark:border-white/10">
35
- <h3 class="font-semibold text-sm text-stone-500 tracking-wider uppercase dark:text-neutral-400">Storage by Type</h3>
36
- <div class="mt-2" style="height: 120px;"><canvas id="files_type_chart"></canvas></div>
37
- <div class="mt-2 text-stone-500 text-xs dark:text-neutral-400">
38
- <div class="flex justify-between py-0.5"><span>Documents</span><span>{{ docsLabel }}</span></div>
39
- <div class="flex justify-between py-0.5"><span>Images</span><span>{{ imgsLabel }}</span></div>
40
- <div class="flex justify-between py-0.5"><span>Videos</span><span>{{ videosLabel }}</span></div>
41
- <div class="flex justify-between py-0.5"><span>Other</span><span>{{ otherLabel }}</span></div>
42
- </div>
43
- </div>
44
-
45
- <nav class="overflow-y-auto flex-1 px-2 py-2">
46
- <div class="space-y-px">
47
- <button @click="navigateToRoot()" :class="navRowClass(currentFolderId() === root().id)">
48
- <div class="h-[18px] w-[18px] text-blue-500 i-hugeicons-home-02"></div>
49
- Home
50
- </button>
51
- <button :class="navRowClass(false)">
52
- <div class="h-[18px] w-[18px] text-amber-400 i-hugeicons-star"></div>
53
- Starred
54
- <span class="ml-auto tabular-nums text-[12px] text-stone-400 dark:text-neutral-500">{{ starredCount }}</span>
55
- </button>
56
- <button :class="navRowClass(false)">
57
- <div class="h-[18px] w-[18px] text-emerald-500 i-hugeicons-share-01"></div>
58
- Shared
59
- <span class="ml-auto tabular-nums text-[12px] text-stone-400 dark:text-neutral-500">{{ sharedCount }}</span>
60
- </button>
61
- </div>
62
- <div class="mt-5">
63
- <h3 class="mb-1 px-2.5 font-semibold text-[11px] text-stone-400 dark:text-neutral-500">Folders</h3>
64
- <div class="space-y-px">
65
- <template :for="folder in topLevelFolders">
66
- <button @click="navigateToFolder(folder)" :class="navRowClass(currentFolderId() === folder.id)">
67
- <div class="h-[18px] w-[18px] text-amber-400 i-hugeicons-folder-02"></div>
68
- {{ folder.name }}
69
- <span class="ml-auto tabular-nums text-[12px] text-stone-400 dark:text-neutral-500">{{ (folder.items ?? []).length }}</span>
70
- </button>
71
- </template>
72
- </div>
73
- </div>
74
- </nav>
75
-
76
- <div class="p-3 border-black/5 border-t dark:border-white/10">
77
- <button @click="openUploadModal()" class="flex gap-2 items-center justify-center px-4 py-2 w-full font-medium text-[13px] text-white bg-blue-500 hover:bg-blue-600 rounded-lg shadow-sm">
78
- <div class="mr-2 h-5 w-5 i-hugeicons-upload-01"></div>
79
- Upload Files
80
- </button>
81
- </div>
82
- </div>
83
- </div>
84
-
85
- <div class="flex flex-1 flex-col bg-white dark:bg-neutral-900">
86
- <div class="p-4 bg-white/70 dark:bg-neutral-900/50 border-b border-black/5 dark:border-white/10 backdrop-blur-xl">
87
- <div class="flex items-center justify-between">
88
- <button @click="toggleSidePanel()" class="p-2 text-gray-500 dark:text-neutral-400 hover:bg-gray-100 dark:hover:bg-neutral-700 rounded-md">
89
- <div class="h-5 w-5 i-hugeicons-menu-01"></div>
90
- </button>
91
-
92
- <div class="ml-4 max-w-lg w-full lg:max-w-xs">
93
- <div class="relative">
94
- <div class="flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none">
95
- <div class="h-5 w-5 text-gray-400 i-hugeicons-search-01"></div>
96
- </div>
97
- <input x-model="searchQuery" type="search" placeholder="Search files and folders..." class="block placeholder-gray-500 dark:placeholder-gray-400 pl-10 pr-3 py-2 w-full leading-5 text-gray-900 sm:text-sm dark:text-white bg-white dark:bg-neutral-700 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-blue-500 focus:outline-none focus:ring-blue-500" />
98
- </div>
99
- </div>
100
-
101
- <div class="flex items-center space-x-2">
102
- <div class="flex gap-0.5 p-0.5 bg-black/[0.05] dark:bg-white/[0.06] rounded-lg">
103
- <button @click="setViewMode('grid')" :class="gridViewClass()">
104
- <div class="h-5 w-5 i-hugeicons-grid-view"></div>
105
- </button>
106
- <button @click="setViewMode('list')" :class="listViewClass()">
107
- <div class="h-5 w-5 i-hugeicons-right-to-left-list-number"></div>
108
- </button>
109
- </div>
110
-
111
- <select x-model="sortBy" class="block pl-3 pr-10 py-2 w-full text-base text-gray-900 sm:text-sm dark:text-white bg-white dark:bg-neutral-700 border-gray-300 rounded-md dark:border-neutral-600 focus:border-blue-500 focus:outline-none focus:ring-blue-500">
112
- <option value="name">Name</option>
113
- <option value="lastModified">Date</option>
114
- <option value="size">Size</option>
115
- </select>
116
-
117
- <button @click="toggleSortOrder()" class="p-2 text-gray-500 dark:text-neutral-400 hover:bg-gray-100 dark:hover:bg-neutral-700 rounded-md">
118
- <div :class="sortOrderIconClass()"></div>
119
- </button>
120
- </div>
121
-
122
- <div class="flex items-center space-x-2">
123
- <button @click="openCreateFolderModal()" class="inline-flex items-center px-3 py-2 font-medium text-sm text-white bg-indigo-600 hover:bg-indigo-700 rounded-md">
124
- <div class="mr-2 h-4 w-4 i-hugeicons-folder-add"></div>
125
- New Folder
126
- </button>
127
- <button @click="openUploadModal()" class="inline-flex items-center px-3 py-2 font-medium text-sm text-white bg-indigo-600 hover:bg-indigo-700 rounded-md">
128
- <div class="mr-2 h-4 w-4 i-hugeicons-upload-01"></div>
129
- Upload
130
- </button>
131
- </div>
132
- </div>
133
-
134
- <nav class="flex mt-4">
135
- <ol class="flex items-center space-x-1">
136
- <template :for="(path, index) in currentPath">
137
- <li>
138
- <div class="flex items-center">
139
- <span :show="index > 0" class="mx-1 text-gray-400 dark:text-neutral-500">/</span>
140
- <button @click="navigateToPath(index)" class="font-medium text-gray-500 text-sm dark:text-neutral-400 hover:text-gray-700 dark:hover:text-gray-300">{{ path }}</button>
141
- </div>
142
- </li>
143
- </template>
144
- </ol>
145
- </nav>
146
- </div>
147
-
148
- <div class="overflow-auto flex-1 p-4 bg-stone-50/50 dark:bg-neutral-900">
149
- <div :show="filteredItems().length === 0" class="flex flex-col items-center justify-center h-full text-center">
150
- <div class="h-16 w-16 text-gray-400 dark:text-neutral-600 i-hugeicons-folder-02"></div>
151
- <h3 class="mt-2 font-medium text-gray-900 text-sm dark:text-white">No items</h3>
152
- <p class="mt-1 text-gray-500 text-sm dark:text-neutral-400">{{ emptyHint }}</p>
153
- </div>
154
-
155
- <div :show="filteredItems().length > 0 && viewMode() === 'grid'" class="grid gap-4 grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6">
156
- <template :for="item in filteredItems">
157
- <div @click="onItemClick(item)" :class="gridCardClass(item)">
158
- <MediaCard :item="item" />
159
- <div class="flex absolute right-2 top-2 space-x-1 opacity-0 group-hover:opacity-100 transition-opacity">
160
- <button @click="onStarClick(item, $event)" :class="gridStarButtonClass(item)">
161
- <div class="h-4 w-4 i-hugeicons-star"></div>
162
- </button>
163
- <button @click="onShareClick(item, $event)" :class="gridShareButtonClass(item)">
164
- <div class="h-4 w-4 i-hugeicons-share-01"></div>
165
- </button>
166
- </div>
167
- </div>
168
- </template>
169
- </div>
170
-
171
- <div :show="filteredItems().length > 0 && viewMode() === 'list'" class="overflow-hidden ring-1 ring-stone-200/80 rounded-xl dark:ring-neutral-700 shadow-sm">
172
- <table class="min-w-full divide-stone-100 divide-y dark:divide-neutral-700">
173
- <thead class="bg-stone-50/80 dark:bg-neutral-800">
174
- <tr>
175
- <th class="pl-6 pr-3 py-3.5 font-semibold text-left text-stone-500 text-xs tracking-wider uppercase dark:text-neutral-400">Name</th>
176
- <th class="px-3 py-3.5 font-semibold text-left text-stone-500 text-xs tracking-wider uppercase dark:text-neutral-400">Size</th>
177
- <th class="px-3 py-3.5 font-semibold text-left text-stone-500 text-xs tracking-wider uppercase dark:text-neutral-400">Modified</th>
178
- <th class="relative pl-3 pr-6 py-3.5"><span class="sr-only">Actions</span></th>
179
- </tr>
180
- </thead>
181
- <tbody class="bg-white dark:bg-neutral-800 divide-stone-100 divide-y dark:divide-neutral-700">
182
- <template :for="item in filteredItems">
183
- <tr @click="onItemClick(item)" class="hover:bg-stone-50/50 dark:hover:bg-neutral-700/50 transition-colors cursor-pointer">
184
- <td class="pl-6 pr-3 py-3.5 text-sm whitespace-nowrap">
185
- <div class="flex items-center">
186
- <div :class="rowIconClass(item)"></div>
187
- <div class="font-medium text-stone-800 dark:text-white">{{ item.name }}</div>
188
- </div>
189
- </td>
190
- <td class="px-3 py-3.5 text-sm text-stone-500 whitespace-nowrap dark:text-neutral-400">{{ item.type === 'folder' ? '-' : formatFileSize(item.size ?? 0) }}</td>
191
- <td class="px-3 py-3.5 text-sm text-stone-500 whitespace-nowrap dark:text-neutral-400">{{ formatDate(item.lastModified) }}</td>
192
- <td class="relative pl-3 pr-6 py-3.5 font-medium text-right text-sm whitespace-nowrap">
193
- <div class="flex justify-end space-x-2">
194
- <button @click="onStarClick(item, $event)" :class="starButtonClass(item)"><div class="h-5 w-5 i-hugeicons-star"></div></button>
195
- <button @click="onShareClick(item, $event)" :class="shareButtonClass(item)"><div class="h-5 w-5 i-hugeicons-share-01"></div></button>
196
- <button @click="onDeleteClick(item, $event)" class="text-gray-400 hover:text-red-500"><div class="h-5 w-5 i-hugeicons-waste"></div></button>
197
- </div>
198
- </td>
199
- </tr>
200
- </template>
201
- </tbody>
202
- </table>
203
- </div>
204
- </div>
205
- </div>
206
- </div>
207
-
208
- <!-- Meema-style file info / preview slide-over -->
209
- <div :show="showInfoPanel" class="fixed inset-0 z-20">
210
- <div class="absolute inset-0 bg-gray-900/40 dark:bg-black/50" @click="closeInfoPanel()"></div>
211
- <aside class="flex absolute inset-y-0 right-0 flex-col max-w-sm w-full bg-white/80 dark:bg-neutral-900/70 border-black/5 border-l dark:border-white/10 shadow-xl backdrop-blur-2xl">
212
- <div class="flex items-center justify-between p-4 border-b border-black/5 dark:border-white/10">
213
- <h3 class="font-semibold text-sm text-stone-500 tracking-wider uppercase dark:text-neutral-400">Details</h3>
214
- <button @click="closeInfoPanel()" class="p-1.5 text-gray-400 dark:text-neutral-500 hover:text-gray-600 dark:hover:text-neutral-300 hover:bg-gray-100 dark:hover:bg-neutral-700 rounded-md">
215
- <div class="h-5 w-5 i-hugeicons-cancel-01"></div>
216
- </button>
217
- </div>
218
- <div class="overflow-auto flex-1 p-5">
219
- <MediaInfoPanel :item="selectedItem()" />
220
- </div>
221
- </aside>
222
- </div>
223
-
224
- <div :show="showCreateFolderModal" class="fixed inset-0 overflow-y-auto z-10">
225
- <div class="fixed inset-0 bg-gray-500 bg-opacity-75 dark:bg-neutral-900 dark:bg-opacity-75" @click="closeCreateFolderModal()"></div>
226
- <div class="flex sm:block items-end justify-center pb-20 pt-4 px-4 sm:p-0 min-h-screen text-center">
227
- <span class="hidden sm:inline-block sm:h-screen sm:align-middle">&#8203;</span>
228
- <div class="inline-block overflow-hidden pb-4 pt-5 px-4 sm:my-8 sm:p-6 sm:max-w-lg sm:w-full text-left bg-white dark:bg-neutral-800 rounded-lg shadow-xl align-bottom sm:align-middle">
229
- <h3 class="font-medium leading-6 text-gray-900 text-lg dark:text-white">Create New Folder</h3>
230
- <p class="mt-2 text-gray-500 text-sm dark:text-neutral-400">Enter a name for the new folder.</p>
231
- <input x-model="newFolderName" type="text" placeholder="Folder name" class="block mt-4 w-full sm:text-sm dark:text-white dark:bg-neutral-700 border-gray-300 rounded-md dark:border-neutral-600 focus:border-indigo-500 focus:ring-indigo-500 shadow-sm" />
232
- <div class="sm:flex sm:flex-row-reverse mt-5">
233
- <button type="button" @click="createNewFolder()" class="inline-flex justify-center px-4 py-2 sm:ml-3 w-full sm:w-auto font-medium text-base text-white sm:text-sm bg-indigo-600 hover:bg-indigo-700 rounded-md shadow-sm">Create</button>
234
- <button type="button" @click="closeCreateFolderModal()" class="inline-flex justify-center mt-3 px-4 py-2 sm:mt-0 w-full sm:w-auto font-medium text-base text-gray-700 sm:text-sm dark:text-neutral-200 bg-white dark:bg-neutral-700 hover:bg-gray-50 dark:hover:bg-neutral-600 border border-gray-300 rounded-md dark:border-neutral-600 shadow-sm">Cancel</button>
235
- </div>
236
- </div>
237
- </div>
238
- </div>
239
-
240
- <div :show="showUploadModal" class="fixed inset-0 overflow-y-auto z-10">
241
- <div class="fixed inset-0 bg-gray-500 bg-opacity-75 dark:bg-neutral-900 dark:bg-opacity-75" @click="closeUploadModal()"></div>
242
- <div class="flex sm:block items-end justify-center pb-20 pt-4 px-4 sm:p-0 min-h-screen text-center">
243
- <span class="hidden sm:inline-block sm:h-screen sm:align-middle">&#8203;</span>
244
- <div class="inline-block overflow-hidden pb-4 pt-5 px-4 sm:my-8 sm:p-6 sm:max-w-lg sm:w-full text-left bg-white dark:bg-neutral-800 rounded-lg shadow-xl align-bottom sm:align-middle">
245
- <h3 class="font-medium leading-6 text-gray-900 text-lg dark:text-white">Upload Files</h3>
246
- <p class="mt-2 text-gray-500 text-sm dark:text-neutral-400">Select files to upload to the current folder.</p>
247
- <div class="flex justify-center mt-4 pb-6 pt-5 px-6 border-2 border-dashed border-gray-300 rounded-md dark:border-neutral-600">
248
- <div class="space-y-1 text-center">
249
- <div class="mx-auto h-12 w-12 text-gray-400 dark:text-neutral-500 i-hugeicons-upload-01"></div>
250
- <div class="flex text-gray-600 text-sm dark:text-neutral-400">
251
- <label for="file-upload" class="relative font-medium text-indigo-600 dark:text-indigo-400 hover:text-indigo-500 bg-white dark:bg-neutral-800 rounded-md cursor-pointer">
252
- <span>Upload a file</span>
253
- <input id="file-upload" type="file" class="sr-only" multiple />
254
- </label>
255
- <p class="pl-1">or drag and drop</p>
256
- </div>
257
- <p class="text-gray-500 text-xs dark:text-neutral-400">PNG, JPG, GIF, PDF, DOCX up to 10MB</p>
258
- </div>
259
- </div>
260
- <div class="sm:flex sm:flex-row-reverse mt-5">
261
- <button type="button" class="inline-flex justify-center px-4 py-2 sm:ml-3 w-full sm:w-auto font-medium text-base text-white sm:text-sm bg-indigo-600 hover:bg-indigo-700 rounded-md shadow-sm">Upload</button>
262
- <button type="button" @click="closeUploadModal()" class="inline-flex justify-center mt-3 px-4 py-2 sm:mt-0 w-full sm:w-auto font-medium text-base text-gray-700 sm:text-sm dark:text-neutral-200 bg-white dark:bg-neutral-700 hover:bg-gray-50 dark:hover:bg-neutral-600 border border-gray-300 rounded-md dark:border-neutral-600 shadow-sm">Cancel</button>
263
- </div>
264
- </div>
265
- </div>
266
- </div>
267
-
268
- <div :show="showDeleteConfirmation" class="fixed inset-0 overflow-y-auto z-10">
269
- <div class="fixed inset-0 bg-gray-500 bg-opacity-75 dark:bg-neutral-900 dark:bg-opacity-75" @click="closeDeleteConfirmation()"></div>
270
- <div class="flex sm:block items-end justify-center pb-20 pt-4 px-4 sm:p-0 min-h-screen text-center">
271
- <span class="hidden sm:inline-block sm:h-screen sm:align-middle">&#8203;</span>
272
- <div class="inline-block overflow-hidden pb-4 pt-5 px-4 sm:my-8 sm:p-6 sm:max-w-lg sm:w-full text-left bg-white dark:bg-neutral-800 rounded-lg shadow-xl align-bottom sm:align-middle">
273
- <h3 class="font-medium leading-6 text-gray-900 text-lg dark:text-white">Delete Item</h3>
274
- <p class="mt-2 text-gray-500 text-sm dark:text-neutral-400">Are you sure you want to delete this item? This action cannot be undone.</p>
275
- <div class="sm:flex sm:flex-row-reverse mt-5">
276
- <button type="button" @click="deleteSelectedItems()" class="inline-flex justify-center px-4 py-2 sm:ml-3 w-full sm:w-auto font-medium text-base text-white sm:text-sm bg-red-600 hover:bg-red-700 rounded-md shadow-sm">Delete</button>
277
- <button type="button" @click="closeDeleteConfirmation()" class="inline-flex justify-center mt-3 px-4 py-2 sm:mt-0 w-full sm:w-auto font-medium text-base text-gray-700 sm:text-sm dark:text-neutral-200 bg-white dark:bg-neutral-700 hover:bg-gray-50 dark:hover:bg-neutral-600 border border-gray-300 rounded-md dark:border-neutral-600 shadow-sm">Cancel</button>
278
- </div>
279
- </div>
280
- </div>
281
- </div>
282
- </div>
283
-
284
- <script client>
285
-
286
- interface FileItem {
287
- id: number
288
- name: string
289
- type: string
290
- size?: number
291
- path: string
292
- lastModified: string
293
- starred: boolean
294
- shared: boolean
295
- // Present on real Storage-backed items (#245) so MediaCard can render true
296
- // previews; absent on the demo tree.
297
- mime_type?: string
298
- url?: string
299
- items?: FileItem[]
300
- }
301
-
302
- interface ChartLike { destroy: () => void }
303
- type ChartCtor = new (canvas: HTMLElement, config: { type: string, data: unknown, options?: unknown }) => ChartLike
304
-
305
- const fileTypeIcons: Record<string, string> = {
306
- pdf: 'i-hugeicons-pdf-01', doc: 'i-hugeicons-doc-01', docx: 'i-hugeicons-doc-01',
307
- xls: 'i-hugeicons-xls-01', xlsx: 'i-hugeicons-xls-01',
308
- ppt: 'i-hugeicons-ppt-01', pptx: 'i-hugeicons-ppt-01',
309
- jpg: 'i-hugeicons-jpg-01', jpeg: 'i-hugeicons-jpg-01',
310
- png: 'i-hugeicons-png-01', gif: 'i-hugeicons-gif-01', svg: 'i-hugeicons-svg-01',
311
- txt: 'i-hugeicons-txt-01', zip: 'i-hugeicons-zip-01',
312
- mp3: 'i-hugeicons-mp3-01', mp4: 'i-hugeicons-mp-4-01',
313
- folder: 'i-hugeicons-folder-02', default: 'i-hugeicons-file-02',
314
- }
315
-
316
- const rootFolder: FileItem = {
317
- id: 1,
318
- name: 'Root',
319
- type: 'folder',
320
- path: '/',
321
- lastModified: '2023-12-01T10:00:00',
322
- starred: false,
323
- shared: false,
324
- items: [
325
- { id: 2, name: 'Documents', type: 'folder', path: '/Documents', lastModified: '2023-12-01T10:00:00', starred: true, shared: true, items: [
326
- { id: 6, name: 'Project Proposal.pdf', type: 'pdf', size: 2500000, path: '/Documents/Project Proposal.pdf', lastModified: '2023-12-05T14:30:00', starred: true, shared: true },
327
- { id: 7, name: 'Meeting Notes.docx', type: 'docx', size: 350000, path: '/Documents/Meeting Notes.docx', lastModified: '2023-12-10T09:15:00', starred: false, shared: false },
328
- { id: 8, name: 'Budget.xlsx', type: 'xlsx', size: 1200000, path: '/Documents/Budget.xlsx', lastModified: '2023-12-08T16:45:00', starred: false, shared: true },
329
- ] },
330
- { id: 3, name: 'Images', type: 'folder', path: '/Images', lastModified: '2023-12-02T11:30:00', starred: false, shared: false, items: [
331
- { id: 9, name: 'Profile Photo.jpg', type: 'jpg', size: 1800000, path: '/Images/Profile Photo.jpg', lastModified: '2023-12-03T13:20:00', starred: true, shared: false },
332
- { id: 10, name: 'Banner.png', type: 'png', size: 2700000, path: '/Images/Banner.png', lastModified: '2023-12-04T10:10:00', starred: false, shared: true },
333
- { id: 11, name: 'Icon.svg', type: 'svg', size: 150000, path: '/Images/Icon.svg', lastModified: '2023-12-05T09:05:00', starred: false, shared: false },
334
- ] },
335
- { id: 4, name: 'Videos', type: 'folder', path: '/Videos', lastModified: '2023-12-03T14:00:00', starred: false, shared: false, items: [
336
- { id: 12, name: 'Product Demo.mp4', type: 'mp4', size: 15000000, path: '/Videos/Product Demo.mp4', lastModified: '2023-12-06T15:30:00', starred: false, shared: true },
337
- { id: 13, name: 'Tutorial.mp4', type: 'mp4', size: 25000000, path: '/Videos/Tutorial.mp4', lastModified: '2023-12-07T11:45:00', starred: true, shared: true },
338
- ] },
339
- { id: 5, name: 'Downloads', type: 'folder', path: '/Downloads', lastModified: '2023-12-04T09:00:00', starred: false, shared: false, items: [
340
- { id: 14, name: 'Software Update.zip', type: 'zip', size: 45000000, path: '/Downloads/Software Update.zip', lastModified: '2023-12-08T10:20:00', starred: false, shared: false },
341
- { id: 15, name: 'E-book.pdf', type: 'pdf', size: 3500000, path: '/Downloads/E-book.pdf', lastModified: '2023-12-09T14:10:00', starred: true, shared: false },
342
- ] },
343
- ],
344
- }
345
-
346
- // Prefer the server-injected real Storage tree (stacksjs/stacks#245); fall back
347
- // to the demo tree above when it's absent (empty disk, listing failed, or the
348
- // server block couldn't resolve). The payload is HTML-escaped JSON in a hidden
349
- // element — same server->client hand-off the dashboard sidebar uses.
350
- function readInjectedFileTree(): FileItem | null {
351
- try {
352
- const node = document.querySelector('[data-file-tree]')
353
- const raw = node?.textContent?.trim()
354
- if (!raw)
355
- return null
356
- const parsed = JSON.parse(raw)
357
- return parsed && Array.isArray(parsed.items) && parsed.items.length > 0 ? parsed as FileItem : null
358
- }
359
- catch {
360
- return null
361
- }
362
- }
363
-
364
- const initialRoot = readInjectedFileTree() ?? rootFolder
365
- const root = state<FileItem>(initialRoot)
366
- const currentFolderId = state<number>(initialRoot.id)
367
- const searchQuery = state('')
368
- const sortBy = state<'name' | 'lastModified' | 'size'>('name')
369
- const sortOrder = state<'asc' | 'desc'>('asc')
370
- const viewMode = state<'grid' | 'list'>('grid')
371
- const showSidePanel = state(true)
372
- const showUploadModal = state(false)
373
- const showCreateFolderModal = state(false)
374
- const showDeleteConfirmation = state(false)
375
- const newFolderName = state('')
376
- const itemToDelete = state<FileItem | null>(null)
377
- // Selected file for the Meema-style info/preview panel. Defaults to a neutral
378
- // placeholder (never null) so the panel component always receives a valid item
379
- // even while hidden; onItemClick swaps in the real file.
380
- const selectedItem = state<FileItem>({ id: 0, name: '', type: 'file', path: '/', lastModified: '', starred: false } as FileItem)
381
- const showInfoPanel = state(false)
382
-
383
- const storageStats = { total: 100 * 1024 ** 3, used: 45 * 1024 ** 3, available: 55 * 1024 ** 3 }
384
- const storageByType = { documents: 15 * 1024 ** 3, images: 10 * 1024 ** 3, videos: 18 * 1024 ** 3, other: 2 * 1024 ** 3 }
385
-
386
- function findFolderById(folder: FileItem, id: number): FileItem | null {
387
- if (folder.id === id)
388
- return folder
389
- for (const child of folder.items ?? []) {
390
- if (child.type === 'folder') {
391
- const found = findFolderById(child, id)
392
- if (found)
393
- return found
394
- }
395
- }
396
- return null
397
- }
398
-
399
- function findPathToId(folder: FileItem, id: number, path: string[] = []): string[] | null {
400
- const next = [...path, folder.name]
401
- if (folder.id === id)
402
- return next
403
- for (const child of folder.items ?? []) {
404
- if (child.type === 'folder') {
405
- const found = findPathToId(child, id, next)
406
- if (found)
407
- return found
408
- }
409
- }
410
- return null
411
- }
412
-
413
- const currentFolder = derived(() => findFolderById(root(), currentFolderId()) ?? root())
414
- const currentPath = derived(() => findPathToId(root(), currentFolderId()) ?? ['Root'])
415
-
416
- const filteredItems = derived(() => {
417
- let items = [...(currentFolder().items ?? [])]
418
- const q = searchQuery().toLowerCase()
419
- if (q)
420
- items = items.filter(item => item.name.toLowerCase().includes(q))
421
- items.sort((a, b) => {
422
- if (sortBy() === 'name')
423
- return sortOrder() === 'asc' ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name)
424
- if (sortBy() === 'lastModified')
425
- return sortOrder() === 'asc' ? new Date(a.lastModified).getTime() - new Date(b.lastModified).getTime() : new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()
426
- const sa = a.size ?? 0
427
- const sb = b.size ?? 0
428
- return sortOrder() === 'asc' ? sa - sb : sb - sa
429
- })
430
- return items
431
- })
432
-
433
- function countByPredicate(folder: FileItem, predicate: (item: FileItem) => boolean): number {
434
- let count = 0
435
- for (const item of folder.items ?? []) {
436
- if (predicate(item))
437
- count++
438
- if (item.type === 'folder')
439
- count += countByPredicate(item, predicate)
440
- }
441
- return count
442
- }
443
-
444
- const starredCount = derived(() => countByPredicate(root(), i => i.starred))
445
- const sharedCount = derived(() => countByPredicate(root(), i => i.shared))
446
- const topLevelFolders = derived(() => (root().items ?? []).filter(i => i.type === 'folder'))
447
-
448
- // Each derived/function below returns a COMPLETE class string (static + dynamic)
449
- // because stx's `{{ ... }}` placeholder is not reactively bound inside a `class`
450
- // attribute — only inside text content. The `:class="fn()"` directive is the
451
- // supported reactive form, so any class that mixes static and dynamic tokens
452
- // has to be assembled in JS and applied via :class.
453
- // Native macOS sidebar vibrancy: a translucent material over the window
454
- // background rather than a flat fill, matching the desktop shell's macos-themed
455
- // global sidebar (titlebarHidden window). stacksjs — native File Manager.
456
- const sidePanelBase = 'border-r border-black/[0.06] dark:border-white/[0.08] bg-[#F5F3EE]/70 dark:bg-neutral-900/40 backdrop-blur-2xl transition-all duration-300'
457
- const sidePanelClass = derived(() => `${sidePanelBase} ${showSidePanel() ? 'w-64' : 'w-0 overflow-hidden'}`)
458
-
459
- const sortOrderIconClass = derived(() => `${sortOrder() === 'asc' ? 'i-hugeicons-arrow-up-02' : 'i-hugeicons-arrow-down-02'} h-5 w-5`)
460
-
461
- // Native macOS segmented control: the active segment is an elevated white pill
462
- // on a recessed track (see the track container in the toolbar), not a filled
463
- // accent button.
464
- const segmentBase = 'inline-flex items-center px-2.5 py-1.5 rounded-md text-sm font-medium transition-colors'
465
- const segmentActive = 'bg-white dark:bg-neutral-700 text-stone-800 dark:text-white shadow-sm'
466
- const segmentInactive = 'text-stone-500 dark:text-neutral-400 hover:text-stone-700 dark:hover:text-neutral-200'
467
- const gridViewClass = derived(() => `${segmentBase} ${viewMode() === 'grid' ? segmentActive : segmentInactive}`)
468
- const listViewClass = derived(() => `${segmentBase} ${viewMode() === 'list' ? segmentActive : segmentInactive}`)
469
-
470
- // Native macOS source-list row: a rounded selection pill on the active row
471
- // (light translucent fill), colored SF-style icons, plain trailing counts.
472
- const navRowBase = 'group flex items-center gap-2.5 px-2.5 py-1.5 w-full text-left font-medium text-[13px] rounded-lg transition-colors'
473
- function navRowClass(active: boolean): string {
474
- return active
475
- ? `${navRowBase} bg-black/[0.06] dark:bg-white/[0.09] text-stone-900 dark:text-white`
476
- : `${navRowBase} text-stone-600 dark:text-neutral-300 hover:bg-black/[0.04] dark:hover:bg-white/[0.06]`
477
- }
478
-
479
- // Native selection: the open file gets a Finder-style accent ring, updated
480
- // reactively as the info panel opens/closes on different items.
481
- const gridCardBase = 'group relative overflow-hidden rounded-lg border shadow-sm hover:shadow-lg duration-200 transition-all cursor-pointer bg-white dark:bg-neutral-800'
482
- const gridCardClass = (item: FileItem) => `${gridCardBase} ${showInfoPanel() && selectedItem().id === item.id
483
- ? 'border-indigo-400 dark:border-indigo-500 ring-2 ring-indigo-500/30'
484
- : 'border-gray-200 dark:border-neutral-700 hover:border-indigo-300 dark:hover:border-indigo-500/50'}`
485
-
486
- const rowIconClass = (item: FileItem) => `${itemIconClass(item)} h-5 w-5 mr-3`
487
- const gridStarButtonClass = (item: FileItem) => `p-1 hover:bg-gray-100 dark:hover:bg-neutral-700 rounded-full ${starButtonClass(item)}`
488
- const gridShareButtonClass = (item: FileItem) => `p-1 hover:bg-gray-100 dark:hover:bg-neutral-700 rounded-full ${shareButtonClass(item)}`
489
-
490
- const usedLabel = derived(() => formatFileSize(storageStats.used))
491
- const availableLabel = derived(() => formatFileSize(storageStats.available))
492
- const totalLabel = derived(() => formatFileSize(storageStats.total))
493
- const docsLabel = derived(() => formatFileSize(storageByType.documents))
494
- const imgsLabel = derived(() => formatFileSize(storageByType.images))
495
- const videosLabel = derived(() => formatFileSize(storageByType.videos))
496
- const otherLabel = derived(() => formatFileSize(storageByType.other))
497
-
498
- const emptyHint = derived(() => searchQuery() ? 'No items match your search.' : 'This folder is empty.')
499
-
500
- function formatFileSize(bytes: number) {
501
- if (bytes === 0)
502
- return '0 Bytes'
503
- const k = 1024
504
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']
505
- const i = Math.floor(Math.log(bytes) / Math.log(k))
506
- return `${Number.parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`
507
- }
508
-
509
- function formatDate(dateString: string) {
510
- return new Date(dateString).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' })
511
- }
512
-
513
- function getFileIcon(type: string) {
514
- return fileTypeIcons[type] ?? fileTypeIcons.default
515
- }
516
-
517
- function itemIconClass(item: FileItem) {
518
- return item.type === 'folder'
519
- ? 'i-hugeicons-folder-02 text-indigo-400 dark:text-indigo-300'
520
- : `${getFileIcon(item.type)} text-gray-500 dark:text-neutral-400`
521
- }
522
-
523
- function starButtonClass(item: FileItem) {
524
- return item.starred ? 'text-yellow-500' : 'text-gray-400 dark:text-neutral-500 hover:text-yellow-500'
525
- }
526
-
527
- function shareButtonClass(item: FileItem) {
528
- return item.shared ? 'text-indigo-500' : 'text-gray-400 dark:text-neutral-500 hover:text-indigo-500'
529
- }
530
-
531
- function navigateToRoot() {
532
- currentFolderId.set(root().id)
533
- }
534
-
535
- function navigateToFolder(folder: FileItem) {
536
- currentFolderId.set(folder.id)
537
- }
538
-
539
- function navigateToPath(index: number) {
540
- const path = currentPath()
541
- if (index >= path.length - 1)
542
- return
543
- const targetName = path[index]
544
- let folder = root()
545
- for (let i = 1; i <= index; i++) {
546
- const next = (folder.items ?? []).find(it => it.type === 'folder' && it.name === path[i])
547
- if (next)
548
- folder = next
549
- }
550
- if (folder.name === targetName || index === 0)
551
- currentFolderId.set(folder.id)
552
- }
553
-
554
- function toggleSidePanel() {
555
- showSidePanel.set(!showSidePanel())
556
- }
557
-
558
- function setViewMode(mode: 'grid' | 'list') {
559
- viewMode.set(mode)
560
- }
561
-
562
- function toggleSortOrder() {
563
- sortOrder.set(sortOrder() === 'asc' ? 'desc' : 'asc')
564
- }
565
-
566
- function onItemClick(item: FileItem) {
567
- if (item.type === 'folder') {
568
- navigateToFolder(item)
569
- return
570
- }
571
- selectedItem.set(item)
572
- showInfoPanel.set(true)
573
- }
574
-
575
- function closeInfoPanel() {
576
- showInfoPanel.set(false)
577
- }
578
-
579
- function onStarClick(item: FileItem, event: Event) {
580
- event.stopPropagation()
581
- toggleFlag(item.id, 'starred')
582
- }
583
-
584
- function onShareClick(item: FileItem, event: Event) {
585
- event.stopPropagation()
586
- toggleFlag(item.id, 'shared')
587
- }
588
-
589
- function onDeleteClick(item: FileItem, event: Event) {
590
- event.stopPropagation()
591
- itemToDelete.set(item)
592
- showDeleteConfirmation.set(true)
593
- }
594
-
595
- function toggleFlag(id: number, key: 'starred' | 'shared') {
596
- function visit(folder: FileItem): FileItem {
597
- return {
598
- ...folder,
599
- items: (folder.items ?? []).map((child) => {
600
- if (child.id === id)
601
- return { ...child, [key]: !child[key] }
602
- if (child.type === 'folder')
603
- return visit(child)
604
- return child
605
- }),
606
- }
607
- }
608
- root.set(visit(root()))
609
- }
610
-
611
- function openCreateFolderModal() {
612
- newFolderName.set('')
613
- showCreateFolderModal.set(true)
614
- }
615
-
616
- function closeCreateFolderModal() {
617
- showCreateFolderModal.set(false)
618
- }
619
-
620
- function openUploadModal() {
621
- showUploadModal.set(true)
622
- }
623
-
624
- function closeUploadModal() {
625
- showUploadModal.set(false)
626
- }
627
-
628
- function closeDeleteConfirmation() {
629
- showDeleteConfirmation.set(false)
630
- itemToDelete.set(null)
631
- }
632
-
633
- function createNewFolder() {
634
- const name = newFolderName().trim()
635
- if (!name)
636
- return
637
- const newFolder: FileItem = {
638
- id: Date.now(),
639
- name,
640
- type: 'folder',
641
- path: `${currentFolder().path}/${name}`,
642
- lastModified: new Date().toISOString(),
643
- starred: false,
644
- shared: false,
645
- items: [],
646
- }
647
- function visit(folder: FileItem): FileItem {
648
- if (folder.id === currentFolderId())
649
- return { ...folder, items: [...(folder.items ?? []), newFolder] }
650
- return { ...folder, items: (folder.items ?? []).map(child => child.type === 'folder' ? visit(child) : child) }
651
- }
652
- root.set(visit(root()))
653
- showCreateFolderModal.set(false)
654
- }
655
-
656
- function deleteSelectedItems() {
657
- const target = itemToDelete()
658
- if (!target) {
659
- closeDeleteConfirmation()
660
- return
661
- }
662
- function visit(folder: FileItem): FileItem {
663
- return {
664
- ...folder,
665
- items: (folder.items ?? []).filter(c => c.id !== target.id).map(c => c.type === 'folder' ? visit(c) : c),
666
- }
667
- }
668
- root.set(visit(root()))
669
- closeDeleteConfirmation()
670
- }
671
-
672
- let chartHandles: ChartLike[] = []
673
-
674
- onMount(async () => {
675
- const { Chart, registerables } = await import('@stacksjs/charts')
676
- Chart.register(...registerables)
677
- const Ctor = Chart as unknown as ChartCtor
678
-
679
- const doughnutOptions = { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'bottom' } } }
680
-
681
- const handles: Array<ChartLike | null> = [
682
- useChart({
683
- Chart: Ctor,
684
- id: 'files_storage_chart',
685
- type: 'doughnut',
686
- data: { labels: ['Used', 'Available'], datasets: [{ backgroundColor: ['rgba(54, 162, 235, 0.6)', 'rgba(200, 200, 200, 0.6)'], borderColor: ['rgba(54, 162, 235, 1)', 'rgba(200, 200, 200, 1)'], borderWidth: 1, data: [storageStats.used, storageStats.available] }] },
687
- options: doughnutOptions,
688
- }) as ChartLike | null,
689
- useChart({
690
- Chart: Ctor,
691
- id: 'files_type_chart',
692
- type: 'doughnut',
693
- data: { labels: ['Documents', 'Images', 'Videos', 'Other'], datasets: [{ backgroundColor: ['rgba(255, 99, 132, 0.6)', 'rgba(54, 162, 235, 0.6)', 'rgba(255, 206, 86, 0.6)', 'rgba(75, 192, 192, 0.6)'], borderColor: ['rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)'], borderWidth: 1, data: [storageByType.documents, storageByType.images, storageByType.videos, storageByType.other] }] },
694
- options: doughnutOptions,
695
- }) as ChartLike | null,
696
- ]
697
- chartHandles = handles.filter((h): h is ChartLike => h !== null)
698
- })
699
-
700
- onDestroy(() => {
701
- chartHandles.forEach(h => h.destroy())
702
- chartHandles = []
703
- })
704
- </script>
6
+ <FileManagerDashboard />
705
7
 
706
8
  @endsection