@stacksjs/defaults 0.70.54

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 (286) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +2 -0
  3. package/package.json +20 -0
  4. package/resources/assets/fonts/013717e9.woff +0 -0
  5. package/resources/assets/fonts/03355817.woff2 +0 -0
  6. package/resources/assets/fonts/0380de7e.woff2 +0 -0
  7. package/resources/assets/fonts/0ba5d32a.woff +0 -0
  8. package/resources/assets/fonts/0bd57ddf.woff2 +0 -0
  9. package/resources/assets/fonts/19de0a60.woff2 +0 -0
  10. package/resources/assets/fonts/20b87e84.woff +0 -0
  11. package/resources/assets/fonts/4bbc67e1.woff +0 -0
  12. package/resources/assets/fonts/576fb0d7.woff +0 -0
  13. package/resources/assets/fonts/5ea10ee5.woff2 +0 -0
  14. package/resources/assets/fonts/6413fc0a.woff +0 -0
  15. package/resources/assets/fonts/72c114cf.woff +0 -0
  16. package/resources/assets/fonts/73c57e73.woff2 +0 -0
  17. package/resources/assets/fonts/813dca6c.woff +0 -0
  18. package/resources/assets/fonts/8a9b0995.woff2 +0 -0
  19. package/resources/assets/fonts/90b4832f.woff +0 -0
  20. package/resources/assets/fonts/9394ab85.woff2 +0 -0
  21. package/resources/assets/fonts/9b3c7d7f.woff2 +0 -0
  22. package/resources/assets/fonts/Monaco.ttf +0 -0
  23. package/resources/assets/fonts/b1b36d74.woff +0 -0
  24. package/resources/assets/fonts/b5d74798.woff2 +0 -0
  25. package/resources/assets/fonts/b9f81a4d.woff +0 -0
  26. package/resources/assets/fonts/c9784008.woff2 +0 -0
  27. package/resources/assets/fonts/cf692227.woff +0 -0
  28. package/resources/assets/fonts/d1c6ab51.woff2 +0 -0
  29. package/resources/assets/fonts/e2eb62fc.woff +0 -0
  30. package/resources/assets/fonts/fe21f8d8.woff2 +0 -0
  31. package/resources/assets/fonts/nps/CampmateScript-Regular.woff2 +0 -0
  32. package/resources/assets/fonts/nps/NPS_2026-variable.woff2 +0 -0
  33. package/resources/assets/fonts/nps/RedwoodSerif-Regular.woff2 +0 -0
  34. package/resources/assets/fonts/nps/SequoiaSans-Regular.woff2 +0 -0
  35. package/resources/assets/fonts/nps/Switchback-Regular.woff2 +0 -0
  36. package/resources/assets/images/app-icon.png +0 -0
  37. package/resources/assets/images/bg-img.png +0 -0
  38. package/resources/assets/images/park-ridge.svg +15 -0
  39. package/resources/assets/images/topography.svg +1 -0
  40. package/resources/assets/scripts/main.ts +2153 -0
  41. package/resources/assets/styles/README.md +19 -0
  42. package/resources/assets/styles/docs/main.css +1 -0
  43. package/resources/assets/styles/docs/overrides.css +1 -0
  44. package/resources/assets/styles/docs/vars.css +8 -0
  45. package/resources/assets/styles/main.css +1419 -0
  46. package/resources/components/Button.stx +70 -0
  47. package/resources/components/Buttons/BaseButton.stx +39 -0
  48. package/resources/components/Buttons/Counter.stx +28 -0
  49. package/resources/components/Buttons/ToggleDark.stx +11 -0
  50. package/resources/components/Container.stx +10 -0
  51. package/resources/components/Dashboard/.gitkeep +0 -0
  52. package/resources/components/Dashboard/Auth/ForgotPassword.stx +127 -0
  53. package/resources/components/Dashboard/Auth/Login.stx +212 -0
  54. package/resources/components/Dashboard/Auth/Register.stx +306 -0
  55. package/resources/components/Dashboard/Avatar.stx +123 -0
  56. package/resources/components/Dashboard/Billing/ActivePlan.stx +57 -0
  57. package/resources/components/Dashboard/Billing/CardBrands.stx +32 -0
  58. package/resources/components/Dashboard/Billing/CardForm.stx +34 -0
  59. package/resources/components/Dashboard/Billing/OneTimePayment.stx +28 -0
  60. package/resources/components/Dashboard/Billing/PaymentForm.stx +33 -0
  61. package/resources/components/Dashboard/Billing/PaymentMethod.stx +66 -0
  62. package/resources/components/Dashboard/Billing/PaymentMethodList.stx +52 -0
  63. package/resources/components/Dashboard/Billing/Plans.stx +136 -0
  64. package/resources/components/Dashboard/Buttons/AppButton.stx +48 -0
  65. package/resources/components/Dashboard/Buttons/IconButton.stx +20 -0
  66. package/resources/components/Dashboard/Card.stx +78 -0
  67. package/resources/components/Dashboard/Chart.stx +75 -0
  68. package/resources/components/Dashboard/CodeEditor.stx +41 -0
  69. package/resources/components/Dashboard/Commerce/BulkActionBar.stx +70 -0
  70. package/resources/components/Dashboard/Commerce/CategoriesTable.stx +133 -0
  71. package/resources/components/Dashboard/Commerce/CouponsTable.stx +161 -0
  72. package/resources/components/Dashboard/Commerce/CustomersTable.stx +142 -0
  73. package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesTable.stx +80 -0
  74. package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveryTable.stx +85 -0
  75. package/resources/components/Dashboard/Commerce/Delivery/DriversTable.stx +99 -0
  76. package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysTable.stx +92 -0
  77. package/resources/components/Dashboard/Commerce/Delivery/LicenseTemplatesTable.stx +88 -0
  78. package/resources/components/Dashboard/Commerce/Delivery/Pagination.stx +122 -0
  79. package/resources/components/Dashboard/Commerce/Delivery/SearchFilter.stx +23 -0
  80. package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsTable.stx +80 -0
  81. package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesTable.stx +59 -0
  82. package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesTable.stx +71 -0
  83. package/resources/components/Dashboard/Commerce/Delivery/TabNavigation.stx +36 -0
  84. package/resources/components/Dashboard/Commerce/Forms/CouponsForm.stx +191 -0
  85. package/resources/components/Dashboard/Commerce/OrdersTable.stx +131 -0
  86. package/resources/components/Dashboard/Commerce/ProductsTable.stx +170 -0
  87. package/resources/components/Dashboard/CreateRecordModal.stx +363 -0
  88. package/resources/components/Dashboard/DashboardLayout.stx +155 -0
  89. package/resources/components/Dashboard/Deployments/ActivityFeed.stx +54 -0
  90. package/resources/components/Dashboard/Deployments/DeployScript.stx +23 -0
  91. package/resources/components/Dashboard/Deployments/DeploymentHistory.stx +97 -0
  92. package/resources/components/Dashboard/Deployments/DeploymentList.stx +94 -0
  93. package/resources/components/Dashboard/Deployments/LiveTerminalOutput.stx +18 -0
  94. package/resources/components/Dashboard/Elements/Dropdown.stx +57 -0
  95. package/resources/components/Dashboard/Email/EmailActivityChart.stx +111 -0
  96. package/resources/components/Dashboard/Email/EmailCompose.stx +72 -0
  97. package/resources/components/Dashboard/Email/EmailDetail.stx +105 -0
  98. package/resources/components/Dashboard/Email/EmailList.stx +117 -0
  99. package/resources/components/Dashboard/Email/EmailSearch.stx +40 -0
  100. package/resources/components/Dashboard/Email/EmailSidebar.stx +133 -0
  101. package/resources/components/Dashboard/GlobalSearch.stx +124 -0
  102. package/resources/components/Dashboard/MobileSidebar.stx +47 -0
  103. package/resources/components/Dashboard/Modals/BaseModal.stx +50 -0
  104. package/resources/components/Dashboard/Modals/Popups/Alert.stx +112 -0
  105. package/resources/components/Dashboard/Modals/Popups/Toast.stx +70 -0
  106. package/resources/components/Dashboard/Modals/ToastWrapper.stx +35 -0
  107. package/resources/components/Dashboard/Monitoring/ErrorDetailModal.stx +228 -0
  108. package/resources/components/Dashboard/Monitoring/ErrorsTable.stx +184 -0
  109. package/resources/components/Dashboard/Navbar.stx +194 -0
  110. package/resources/components/Dashboard/NavbarModern.stx +188 -0
  111. package/resources/components/Dashboard/NotificationErrorModal.stx +105 -0
  112. package/resources/components/Dashboard/NotificationStatusBadge.stx +20 -0
  113. package/resources/components/Dashboard/Pagination.stx +90 -0
  114. package/resources/components/Dashboard/Queue/QueueTable.stx +127 -0
  115. package/resources/components/Dashboard/Settings/Forms/AIForm.stx +126 -0
  116. package/resources/components/Dashboard/Settings/Forms/AnalyticsForm.stx +52 -0
  117. package/resources/components/Dashboard/Settings/Forms/AppForm.stx +157 -0
  118. package/resources/components/Dashboard/Settings/Forms/CLIForm.stx +66 -0
  119. package/resources/components/Dashboard/Settings/Forms/CacheForm.stx +253 -0
  120. package/resources/components/Dashboard/Settings/Forms/CloudForm.stx +441 -0
  121. package/resources/components/Dashboard/Settings/Forms/DNSForm.stx +307 -0
  122. package/resources/components/Dashboard/Settings/Forms/DatabaseForm.stx +168 -0
  123. package/resources/components/Dashboard/Settings/Forms/EmailForm.stx +100 -0
  124. package/resources/components/Dashboard/Settings/Forms/FileSystemForm.stx +259 -0
  125. package/resources/components/Dashboard/Settings/Forms/HashingForm.stx +119 -0
  126. package/resources/components/Dashboard/Settings/Forms/LibraryForm.stx +389 -0
  127. package/resources/components/Dashboard/Settings/Forms/QueueForm.stx +219 -0
  128. package/resources/components/Dashboard/Settings/Forms/SearchEngineForm.stx +48 -0
  129. package/resources/components/Dashboard/Settings/Forms/SecurityForm.stx +143 -0
  130. package/resources/components/Dashboard/Settings/Forms/ServicesForm.stx +194 -0
  131. package/resources/components/Dashboard/Settings/Forms/StorageForm.stx +191 -0
  132. package/resources/components/Dashboard/Settings/Forms/TeamsForm.stx +33 -0
  133. package/resources/components/Dashboard/Settings/SettingsFormManager.stx +181 -0
  134. package/resources/components/Dashboard/SettingsHeader.stx +88 -0
  135. package/resources/components/Dashboard/SettingsSidebar.stx +234 -0
  136. package/resources/components/Dashboard/Sidebar.stx +23 -0
  137. package/resources/components/Dashboard/SidebarModern.stx +249 -0
  138. package/resources/components/Dashboard/Skeleton/LoadingCard.stx +15 -0
  139. package/resources/components/Dashboard/Skeleton/LoadingDetails.stx +26 -0
  140. package/resources/components/Dashboard/Table.stx +82 -0
  141. package/resources/components/Dashboard/TerminalContainer.stx +97 -0
  142. package/resources/components/Dashboard/Tooltip.stx +166 -0
  143. package/resources/components/Dashboard/Transaction/index.stx +88 -0
  144. package/resources/components/Dashboard/UI/ActivityTable.stx +54 -0
  145. package/resources/components/Dashboard/UI/Avatar.stx +102 -0
  146. package/resources/components/Dashboard/UI/Badge.stx +66 -0
  147. package/resources/components/Dashboard/UI/Button.stx +73 -0
  148. package/resources/components/Dashboard/UI/Card.stx +51 -0
  149. package/resources/components/Dashboard/UI/ChartCard.stx +36 -0
  150. package/resources/components/Dashboard/UI/Checkbox.stx +74 -0
  151. package/resources/components/Dashboard/UI/ConfirmDialog.stx +74 -0
  152. package/resources/components/Dashboard/UI/DataTable.stx +45 -0
  153. package/resources/components/Dashboard/UI/Dropdown.stx +72 -0
  154. package/resources/components/Dashboard/UI/DropdownItem.stx +80 -0
  155. package/resources/components/Dashboard/UI/EmptyState.stx +50 -0
  156. package/resources/components/Dashboard/UI/FilterBar.stx +48 -0
  157. package/resources/components/Dashboard/UI/Input.stx +77 -0
  158. package/resources/components/Dashboard/UI/Modal.stx +75 -0
  159. package/resources/components/Dashboard/UI/PageHeader.stx +69 -0
  160. package/resources/components/Dashboard/UI/PageLayout.stx +84 -0
  161. package/resources/components/Dashboard/UI/Pagination.stx +126 -0
  162. package/resources/components/Dashboard/UI/QuickLinks.stx +31 -0
  163. package/resources/components/Dashboard/UI/RouterLink.stx +31 -0
  164. package/resources/components/Dashboard/UI/Select.stx +84 -0
  165. package/resources/components/Dashboard/UI/ServiceHealth.stx +38 -0
  166. package/resources/components/Dashboard/UI/StatsCard.stx +79 -0
  167. package/resources/components/Dashboard/UI/Table.stx +143 -0
  168. package/resources/components/Dashboard/UI/Tabs.stx +45 -0
  169. package/resources/components/Dashboard/UI/Textarea.stx +93 -0
  170. package/resources/components/Dashboard/UI/Toggle.stx +84 -0
  171. package/resources/components/Dashboard/UI/WindowControls.stx +135 -0
  172. package/resources/components/Dashboard/Widget.stx +89 -0
  173. package/resources/components/Dashboard/WindowControls.stx +119 -0
  174. package/resources/components/Dashboard/index.ts +106 -0
  175. package/resources/components/Docs/Demo/ComboboxCode.md +114 -0
  176. package/resources/components/Docs/Demo/ComboboxDemo.stx +91 -0
  177. package/resources/components/Docs/Demo/DialogCode.md +42 -0
  178. package/resources/components/Docs/Demo/DialogDemo.stx +76 -0
  179. package/resources/components/Docs/Demo/DocsPlayground.stx +39 -0
  180. package/resources/components/Docs/Demo/DropdownCode.md +109 -0
  181. package/resources/components/Docs/Demo/DropdownDemo.stx +82 -0
  182. package/resources/components/Docs/Demo/Hero.stx +100 -0
  183. package/resources/components/Docs/Demo/ListboxCode.md +87 -0
  184. package/resources/components/Docs/Demo/ListboxDemo.stx +59 -0
  185. package/resources/components/Docs/Demo/NotificationCode.md +173 -0
  186. package/resources/components/Docs/Demo/NotificationDemo.stx +99 -0
  187. package/resources/components/Docs/Demo/PopoverCode.md +161 -0
  188. package/resources/components/Docs/Demo/PopoverDemo.stx +96 -0
  189. package/resources/components/Docs/Demo/RadioGroupCode.md +98 -0
  190. package/resources/components/Docs/Demo/RadioGroupDemo.stx +53 -0
  191. package/resources/components/Docs/Demo/StepperCode.md +216 -0
  192. package/resources/components/Docs/Demo/StepperDemo.stx +137 -0
  193. package/resources/components/Docs/Demo/SwitchCode.md +24 -0
  194. package/resources/components/Docs/Demo/SwitchDemo.stx +28 -0
  195. package/resources/components/Docs/Home.stx +7 -0
  196. package/resources/components/Docs/HomeContributors.stx +23 -0
  197. package/resources/components/Docs/HomeSponsors.stx +17 -0
  198. package/resources/components/Docs/HomeTeam.stx +18 -0
  199. package/resources/components/Docs/TeamMember.stx +79 -0
  200. package/resources/components/Email/EmailButton.stx +32 -0
  201. package/resources/components/Email/EmailDivider.stx +20 -0
  202. package/resources/components/Email/EmailImage.stx +24 -0
  203. package/resources/components/Email/EmailLayout.stx +55 -0
  204. package/resources/components/Email/EmailLink.stx +22 -0
  205. package/resources/components/Email/EmailSection.stx +20 -0
  206. package/resources/components/Email/EmailText.stx +30 -0
  207. package/resources/components/Forum/ForumBreadcrumb.stx +38 -0
  208. package/resources/components/Forum/ForumCategory.stx +16 -0
  209. package/resources/components/Forum/ForumCategoryItem.stx +46 -0
  210. package/resources/components/Forum/ForumLayout.stx +36 -0
  211. package/resources/components/Forum/ForumPagination.stx +39 -0
  212. package/resources/components/Forum/ForumPost.stx +71 -0
  213. package/resources/components/Forum/ForumReplyForm.stx +76 -0
  214. package/resources/components/Forum/ForumSidebar.stx +86 -0
  215. package/resources/components/Forum/ForumTopicItem.stx +77 -0
  216. package/resources/components/Forum/ForumTopicList.stx +23 -0
  217. package/resources/components/HelloWorld.stx +253 -0
  218. package/resources/components/Logo.stx +10 -0
  219. package/resources/components/Marketing/CallToAction.stx +30 -0
  220. package/resources/components/Marketing/ComingSoon.stx +155 -0
  221. package/resources/components/Marketing/Faqs.stx +99 -0
  222. package/resources/components/Marketing/Feature.stx +32 -0
  223. package/resources/components/Marketing/Fields.stx +28 -0
  224. package/resources/components/Marketing/Footer.stx +33 -0
  225. package/resources/components/Marketing/Header.stx +51 -0
  226. package/resources/components/Marketing/Hero.stx +46 -0
  227. package/resources/components/Marketing/Layout.stx +26 -0
  228. package/resources/components/Marketing/NavLink.stx +13 -0
  229. package/resources/components/Marketing/Plan.stx +43 -0
  230. package/resources/components/Marketing/Pricing.stx +120 -0
  231. package/resources/components/Marketing/PrimaryFeatures.stx +80 -0
  232. package/resources/components/Marketing/PrimaryFeatures2.stx +98 -0
  233. package/resources/components/Marketing/SecondaryFeatures.stx +80 -0
  234. package/resources/components/Marketing/Testimonials.stx +120 -0
  235. package/resources/components/Pagination.stx +149 -0
  236. package/resources/components/Playground.stx +9 -0
  237. package/resources/components/README.md +87 -0
  238. package/resources/components/Storefront/AnnouncementBar.stx +17 -0
  239. package/resources/components/Storefront/CartDrawer.stx +227 -0
  240. package/resources/components/Storefront/CheckoutSteps.stx +50 -0
  241. package/resources/components/Storefront/Footer.stx +81 -0
  242. package/resources/components/Storefront/Header.stx +66 -0
  243. package/resources/components/Storefront/OrderSummary.stx +79 -0
  244. package/resources/components/Storefront/ProductCard.stx +63 -0
  245. package/resources/components/Storefront/ProductGallery.stx +88 -0
  246. package/resources/components/Storefront/QuantitySelector.stx +97 -0
  247. package/resources/components/index.ts +13 -0
  248. package/resources/emails/email-verification.stx +46 -0
  249. package/resources/emails/layouts/base.html +113 -0
  250. package/resources/emails/password-changed.stx +55 -0
  251. package/resources/emails/password-reset.stx +43 -0
  252. package/resources/emails/subscription-confirmation.stx +99 -0
  253. package/resources/emails/welcome.stx +48 -0
  254. package/resources/functions/README.md +28 -0
  255. package/resources/functions/counter.ts +13 -0
  256. package/resources/functions/dark.ts +4 -0
  257. package/resources/functions/dashboard/analytics.ts +238 -0
  258. package/resources/functions/dashboard/config-io.ts +316 -0
  259. package/resources/functions/dashboard/data.ts +375 -0
  260. package/resources/functions/dashboard/library.ts +250 -0
  261. package/resources/functions/dashboard/sidebar.ts +537 -0
  262. package/resources/functions/dashboard/system.ts +150 -0
  263. package/resources/layouts/403.stx +188 -0
  264. package/resources/layouts/404.stx +34 -0
  265. package/resources/layouts/README.md +14 -0
  266. package/resources/layouts/dashboard/default.stx +20 -0
  267. package/resources/layouts/dashboard/guest.stx +10 -0
  268. package/resources/layouts/default.stx +3 -0
  269. package/resources/layouts/maintenance.stx +11 -0
  270. package/resources/layouts/storefront.stx +73 -0
  271. package/resources/layouts/system-tray/default.stx +3 -0
  272. package/resources/modules/.gitkeep +0 -0
  273. package/resources/plugins/.gitkeep +0 -0
  274. package/resources/plugins/preloader.ts +308 -0
  275. package/resources/types/README.md +3 -0
  276. package/resources/views/cart.stx +149 -0
  277. package/resources/views/checkout/contact.stx +101 -0
  278. package/resources/views/checkout/payment.stx +114 -0
  279. package/resources/views/checkout/shipping.stx +120 -0
  280. package/resources/views/coming-soon.stx +9 -0
  281. package/resources/views/dashboard/custom-page.stx +45 -0
  282. package/resources/views/dashboard/index.stx +24 -0
  283. package/resources/views/emails/welcome.stx +0 -0
  284. package/resources/views/errors/tester.stx +26 -0
  285. package/resources/views/index.stx +2865 -0
  286. package/resources/views/orders/[id].stx +130 -0
@@ -0,0 +1,441 @@
1
+ <script>
2
+ interface CloudFormProps {
3
+ type?: string
4
+ driver?: string
5
+ environments?: string
6
+ apiDescription?: string
7
+ apiPrefix?: string
8
+ apiMemorySize?: string
9
+ apiPrewarm?: string
10
+ apiTimeout?: string
11
+ firewallRateLimit?: string
12
+ firewallCountryCodes?: string
13
+ firewallIpAddresses?: string
14
+ firewallQueryString?: string
15
+ firewallHttpHeaders?: string
16
+ cdnAllowedMethods?: string
17
+ cdnCachedMethods?: string
18
+ cdnOriginShieldRegion?: string
19
+ cdnDefaultTTL?: string
20
+ cdnMinTTL?: string
21
+ cdnMaxTTL?: string
22
+ cdnCookieBehavior?: string
23
+ cdnCookies?: string
24
+ cdnHeaders?: string
25
+ cdnQueryStrings?: string
26
+ cdnSamplingRate?: string
27
+ enableAI?: boolean
28
+ enableCLI?: boolean
29
+ enableDocs?: boolean
30
+ enableFileSystem?: boolean
31
+ apiDeploy?: boolean
32
+ firewallEnabled?: boolean
33
+ firewallIpReputation?: boolean
34
+ firewallBadInputs?: boolean
35
+ cdnCompress?: boolean
36
+ cdnRealTimeLogsEnabled?: boolean
37
+ }
38
+
39
+ const { type = 'serverless', driver = 'aws', environments = 'production,staging,development', apiDescription = 'My awesome Stacks API', apiPrefix = 'api', apiMemorySize = '512', apiPrewarm = '10', apiTimeout = '30', firewallRateLimit = '1000', firewallCountryCodes = 'RU,IN', firewallIpAddresses = '56.123.456.789', firewallQueryString = 'foo,bar', firewallHttpHeaders = 'x-foo,x-bar', cdnAllowedMethods = 'ALL', cdnCachedMethods = 'GET_HEAD', cdnOriginShieldRegion = 'us-east-1', cdnDefaultTTL = '86400', cdnMinTTL = '0', cdnMaxTTL = '31536000', cdnCookieBehavior = 'none', cdnCookies = '', cdnHeaders = '', cdnQueryStrings = '', cdnSamplingRate = '1', enableAI = false, enableCLI = false, enableDocs = true, enableFileSystem = true, apiDeploy = true, firewallEnabled = true, firewallIpReputation = true, firewallBadInputs = true, cdnCompress = true, cdnRealTimeLogsEnabled = true } = defineProps<CloudFormProps>()
40
+
41
+ // API settings
42
+ // Firewall settings
43
+ // CDN settings
44
+ // API Routes
45
+ const routes = [
46
+ { name: 'Index', description: 'Endpoint to list all resources', available: true },
47
+ { name: 'Show', description: 'Endpoint to get one resource', available: true },
48
+ { name: 'Store', description: 'Endpoint to add resource', available: true },
49
+ { name: 'Update', description: 'Endpoint to update resource', available: true },
50
+ { name: 'Delete', description: 'Endpoint to delete resource', available: false }
51
+ ]
52
+ </script>
53
+ <form>
54
+ <main class="border-b border-gray-900/10">
55
+ <!-- Settings forms -->
56
+ <div class="divide-gray-900/10 divide-y">
57
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
58
+ <div>
59
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">
60
+ Default Cloud Settings
61
+ </h2>
62
+ <p class="mt-1 leading-6 text-gray-600 text-sm">
63
+ Update your default cloud settings
64
+ </p>
65
+ </div>
66
+
67
+ <div class="md:col-span-2">
68
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6 w-full">
69
+ <div class="sm:col-span-3">
70
+ <label for="type" class="block font-medium leading-6 text-gray-900 text-sm">Type</label>
71
+ <div class="mt-2">
72
+ <select id="type" name="type" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
73
+ <option {{ type == 'serverless' ? 'selected' : '' }}>serverless</option>
74
+ <option disabled {{ type == 'server' ? 'selected' : '' }}>server</option>
75
+ </select>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="sm:col-span-3">
80
+ <label for="driver" class="block font-medium leading-6 text-gray-900 text-sm">Driver</label>
81
+ <div class="mt-2">
82
+ <input id="driver" type="text" name="driver" value="{{ driver }}" disabled class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 bg-neutral-50 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm cursor-not-allowed">
83
+ </div>
84
+ </div>
85
+
86
+ <div class="sm:col-span-2">
87
+ <label for="enable-ai" class="block font-medium leading-6 text-gray-900 text-sm">Enable AI</label>
88
+ <div class="mt-2">
89
+ <button
90
+ type="button"
91
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ enableAI ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
92
+ role="switch"
93
+ aria-checked="{{ enableAI ? 'true' : 'false' }}"
94
+ data-action="toggle-enable-ai"
95
+ >
96
+ <span class="sr-only">Enable AI</span>
97
+ <span
98
+ aria-hidden="true"
99
+ class="pointer-events-none inline-block h-5 w-5 {{ enableAI ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
100
+ ></span>
101
+ </button>
102
+ </div>
103
+ </div>
104
+ <div class="sm:col-span-2">
105
+ <label for="enable-cli" class="block font-medium leading-6 text-gray-900 text-sm">Enable CLI</label>
106
+ <div class="mt-2">
107
+ <button
108
+ type="button"
109
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ enableCLI ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
110
+ role="switch"
111
+ aria-checked="{{ enableCLI ? 'true' : 'false' }}"
112
+ data-action="toggle-enable-cli"
113
+ >
114
+ <span class="sr-only">Enable CLI</span>
115
+ <span
116
+ aria-hidden="true"
117
+ class="pointer-events-none inline-block h-5 w-5 {{ enableCLI ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
118
+ ></span>
119
+ </button>
120
+ </div>
121
+ </div>
122
+ <div class="sm:col-span-2">
123
+ <label for="enable-docs" class="block font-medium leading-6 text-gray-900 text-sm">Enable Docs</label>
124
+ <div class="mt-2">
125
+ <button
126
+ type="button"
127
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ enableDocs ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
128
+ role="switch"
129
+ aria-checked="{{ enableDocs ? 'true' : 'false' }}"
130
+ data-action="toggle-enable-docs"
131
+ >
132
+ <span class="sr-only">Enable Docs</span>
133
+ <span
134
+ aria-hidden="true"
135
+ class="pointer-events-none inline-block h-5 w-5 {{ enableDocs ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
136
+ ></span>
137
+ </button>
138
+ </div>
139
+ </div>
140
+ <div class="sm:col-span-2">
141
+ <label for="enable-fs" class="block font-medium leading-6 text-gray-900 text-sm">Enable File System</label>
142
+ <div class="mt-2">
143
+ <button
144
+ type="button"
145
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ enableFileSystem ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
146
+ role="switch"
147
+ aria-checked="{{ enableFileSystem ? 'true' : 'false' }}"
148
+ data-action="toggle-enable-fs"
149
+ >
150
+ <span class="sr-only">Enable File System</span>
151
+ <span
152
+ aria-hidden="true"
153
+ class="pointer-events-none inline-block h-5 w-5 {{ enableFileSystem ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"
154
+ ></span>
155
+ </button>
156
+ </div>
157
+ </div>
158
+
159
+ <div class="sm:col-span-full">
160
+ <label for="env" class="block font-medium leading-6 text-gray-900 text-sm">Environments</label>
161
+ <div class="mt-2">
162
+ <input id="env" type="text" name="env" placeholder="https://test.test" value="{{ environments }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ </div>
168
+
169
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
170
+ <div>
171
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">Api</h2>
172
+ <p class="mt-1 leading-6 text-gray-600 text-sm">Update your api settings.</p>
173
+ </div>
174
+
175
+ <div class="md:col-span-2">
176
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6">
177
+ <div class="col-span-2">
178
+ <label for="api-deploy" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Deploy</label>
179
+ <div class="mt-2">
180
+ <button
181
+ type="button"
182
+ class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ apiDeploy ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600"
183
+ role="switch"
184
+ aria-checked="{{ apiDeploy ? 'true' : 'false' }}"
185
+ data-action="toggle-api-deploy"
186
+ >
187
+ <span class="sr-only">Api Deploy</span>
188
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ apiDeploy ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
189
+ </button>
190
+ </div>
191
+ </div>
192
+ <div class="col-span-full">
193
+ <label for="api-description" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Description</label>
194
+ <div class="mt-2">
195
+ <input id="api-description" type="text" value="{{ apiDescription }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
196
+ </div>
197
+ </div>
198
+
199
+ <div class="col-span-2">
200
+ <label for="api-prefix" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Prefix</label>
201
+ <div class="mt-2">
202
+ <input id="api-prefix" name="prefix" type="text" value="{{ apiPrefix }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
203
+ </div>
204
+ </div>
205
+ <div class="col-span-2">
206
+ <label for="api-memory-size" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Memory Size(MB)</label>
207
+ <div class="mt-2">
208
+ <input id="api-memory-size" name="memory-size" type="text" value="{{ apiMemorySize }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
209
+ </div>
210
+ </div>
211
+ <div class="col-span-2">
212
+ <label for="api-prewarm" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Prewarn</label>
213
+ <div class="mt-2">
214
+ <input id="api-prewarm" name="prewarm" type="text" value="{{ apiPrewarm }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
215
+ </div>
216
+ </div>
217
+ <div class="col-span-2">
218
+ <label for="api-timeout" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Timeout</label>
219
+ <div class="mt-2">
220
+ <input id="api-timeout" name="timeout" type="text" value="{{ apiTimeout }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
221
+ </div>
222
+ </div>
223
+ <div class="col-span-full">
224
+ <fieldset>
225
+ <legend class="leading-6 text-gray-900 text-sm">Available Routes</legend>
226
+ <div class="grid gap-y-6 grid-cols-1 sm:gap-x-4 sm:grid-cols-3 mt-2">
227
+ @foreach(routes as route)
228
+ <label class="relative flex cursor-pointer border {{ route.available ? 'border-indigo-600 ring-2 ring-indigo-600' : 'border-gray-300' }} rounded-lg bg-white p-4 shadow-sm focus:outline-none">
229
+ <input type="radio" name="project-type" value="{{ route.name }}" class="sr-only">
230
+ <span class="flex flex-1">
231
+ <span class="flex flex-col">
232
+ <span class="block font-medium text-gray-900 text-sm">{{ route.name }}</span>
233
+ <span class="flex items-center mt-1 text-gray-500 text-sm">{{ route.description }}</span>
234
+ <span class="mt-6 text-sm {{ route.available ? 'text-gray-900' : 'text-gray-500' }} font-medium">{{ route.available ? 'Available' : 'Not Available' }}</span>
235
+ </span>
236
+ </span>
237
+ @if(route.available)
238
+ <svg class="h-5 w-5 text-indigo-600" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
239
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd" />
240
+ </svg>
241
+ @endif
242
+ <span class="absolute border-2 rounded-lg pointer-events-none -inset-px" aria-hidden="true"></span>
243
+ </label>
244
+ @endforeach
245
+ </div>
246
+ </fieldset>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ </div>
251
+
252
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
253
+ <div>
254
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">Firewall</h2>
255
+ <p class="mt-1 leading-6 text-gray-600 text-sm">Update your firewall settings.</p>
256
+ </div>
257
+
258
+ <div class="md:col-span-2">
259
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6">
260
+ <div class="col-span-2">
261
+ <label for="firewall-enabled" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Enabled</label>
262
+ <div class="mt-2">
263
+ <button type="button" class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ firewallEnabled ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600" role="switch" aria-checked="{{ firewallEnabled ? 'true' : 'false' }}" data-action="toggle-firewall">
264
+ <span class="sr-only">Firewall Enabled</span>
265
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ firewallEnabled ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
266
+ </button>
267
+ </div>
268
+ </div>
269
+ <div class="col-span-2">
270
+ <label for="firewall-ip-rep" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Use Ip Reputation Lists</label>
271
+ <div class="mt-2">
272
+ <button type="button" class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ firewallIpReputation ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600" role="switch" data-action="toggle-firewall-ip-rep">
273
+ <span class="sr-only">Use Ip Reputation Lists</span>
274
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ firewallIpReputation ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
275
+ </button>
276
+ </div>
277
+ </div>
278
+ <div class="col-span-2">
279
+ <label for="firewall-bad-inputs" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Use Known Bad Inputs Rule Set</label>
280
+ <div class="mt-2">
281
+ <button type="button" class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ firewallBadInputs ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600" role="switch" data-action="toggle-firewall-bad-inputs">
282
+ <span class="sr-only">Use Known Bad Inputs</span>
283
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ firewallBadInputs ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
284
+ </button>
285
+ </div>
286
+ </div>
287
+ <div class="col-span-2">
288
+ <label for="firewall-rate-limit" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Rate Limit per minute</label>
289
+ <div class="mt-2">
290
+ <input id="firewall-rate-limit" name="limit-per-minute" type="text" value="{{ firewallRateLimit }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
291
+ </div>
292
+ </div>
293
+ <div class="col-span-2">
294
+ <label for="firewall-country-codes" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Country Codes</label>
295
+ <div class="mt-2">
296
+ <input id="firewall-country-codes" name="country-codes" type="text" value="{{ firewallCountryCodes }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
297
+ </div>
298
+ </div>
299
+ <div class="sm:col-span-full">
300
+ <label for="firewall-ip-addresses" class="block font-medium leading-6 text-gray-900 text-sm">IP Addresses</label>
301
+ <div class="mt-2">
302
+ <input id="firewall-ip-addresses" type="text" name="ip-addresses" value="{{ firewallIpAddresses }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
303
+ </div>
304
+ </div>
305
+ <div class="sm:col-span-3">
306
+ <label for="firewall-query-string" class="block font-medium leading-6 text-gray-900 text-sm">Query String</label>
307
+ <div class="mt-2">
308
+ <input id="firewall-query-string" type="text" name="query-string" value="{{ firewallQueryString }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
309
+ </div>
310
+ </div>
311
+ <div class="sm:col-span-3">
312
+ <label for="firewall-http-headers" class="block font-medium leading-6 text-gray-900 text-sm">HTTP Headers</label>
313
+ <div class="mt-2">
314
+ <input id="firewall-http-headers" type="text" name="http-headers" value="{{ firewallHttpHeaders }}" class="block py-1.5 w-full text-gray-900 sm:leading-6 sm:text-sm placeholder:text-gray-400 border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
315
+ </div>
316
+ </div>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ <div class="grid gap-x-8 gap-y-10 grid-cols-1 md:grid-cols-3 py-16 max-w-7xl">
322
+ <div>
323
+ <h2 class="font-semibold leading-7 text-base text-gray-900 dark:text-neutral-100">CDN (Content Delivery Network)</h2>
324
+ <p class="mt-1 leading-6 text-gray-600 text-sm">Update your CDN settings.</p>
325
+ </div>
326
+
327
+ <div class="md:col-span-2">
328
+ <div class="grid gap-x-6 gap-y-8 grid-cols-1 sm:grid-cols-6">
329
+ <div class="sm:col-span-3">
330
+ <label for="cdn-compress" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Compress</label>
331
+ <div class="mt-2">
332
+ <button type="button" class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ cdnCompress ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600" role="switch" data-action="toggle-cdn-compress">
333
+ <span class="sr-only">Compress</span>
334
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ cdnCompress ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
335
+ </button>
336
+ </div>
337
+ </div>
338
+ <div class="sm:col-span-3">
339
+ <label for="cdn-allowed-methods" class="block font-medium leading-6 text-gray-900 text-sm">Allowed Methods</label>
340
+ <div class="mt-2">
341
+ <select id="cdn-allowed-methods" name="allowed-methods" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
342
+ <option {{ cdnAllowedMethods == 'ALL' ? 'selected' : '' }}>ALL</option>
343
+ <option {{ cdnAllowedMethods == 'GET_HEAD' ? 'selected' : '' }}>GET_HEAD</option>
344
+ <option {{ cdnAllowedMethods == 'GET_HEAD_OPTIONS' ? 'selected' : '' }}>GET_HEAD_OPTIONS</option>
345
+ </select>
346
+ </div>
347
+ </div>
348
+ <div class="sm:col-span-3">
349
+ <label for="cdn-cached-methods" class="block font-medium leading-6 text-gray-900 text-sm">Cached Methods</label>
350
+ <div class="mt-2">
351
+ <select id="cdn-cached-methods" name="cached-methods" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
352
+ <option {{ cdnCachedMethods == 'GET_HEAD' ? 'selected' : '' }}>GET_HEAD</option>
353
+ <option {{ cdnCachedMethods == 'GET_HEAD_OPTIONS' ? 'selected' : '' }}>GET_HEAD_OPTIONS</option>
354
+ </select>
355
+ </div>
356
+ </div>
357
+ <div class="sm:col-span-3">
358
+ <label for="cdn-origin-shield" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Origin Shield Region</label>
359
+ <div class="mt-2">
360
+ <input id="cdn-origin-shield" name="origin-shield" type="text" value="{{ cdnOriginShieldRegion }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
361
+ </div>
362
+ </div>
363
+ <div class="sm:col-span-3">
364
+ <label for="cdn-default-ttl" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Default TTL</label>
365
+ <div class="mt-2">
366
+ <input id="cdn-default-ttl" name="default-ttl" type="text" value="{{ cdnDefaultTTL }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
367
+ </div>
368
+ </div>
369
+ <div class="sm:col-span-3">
370
+ <label for="cdn-min-ttl" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Min TTL</label>
371
+ <div class="mt-2">
372
+ <input id="cdn-min-ttl" name="min-ttl" type="text" value="{{ cdnMinTTL }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
373
+ </div>
374
+ </div>
375
+ <div class="sm:col-span-3">
376
+ <label for="cdn-max-ttl" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Max TTL</label>
377
+ <div class="mt-2">
378
+ <input id="cdn-max-ttl" name="max-ttl" type="text" value="{{ cdnMaxTTL }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
379
+ </div>
380
+ </div>
381
+ <div class="sm:col-span-3">
382
+ <label for="cdn-cookie-behavior" class="block font-medium leading-6 text-gray-900 text-sm">Cookie Behavior</label>
383
+ <div class="mt-2">
384
+ <select id="cdn-cookie-behavior" name="cookie-behavior" class="block py-1.5 w-full sm:max-w-xs text-gray-900 sm:leading-6 sm:text-sm border-0 ring-1 ring-gray-300 ring-inset rounded-md focus:ring-2 focus:ring-indigo-600 focus:ring-inset shadow-sm">
385
+ <option {{ cdnCookieBehavior == 'none' ? 'selected' : '' }}>none</option>
386
+ <option {{ cdnCookieBehavior == 'allowList' ? 'selected' : '' }}>allowList</option>
387
+ <option {{ cdnCookieBehavior == 'all' ? 'selected' : '' }}>all</option>
388
+ </select>
389
+ </div>
390
+ </div>
391
+
392
+ <div class="sm:col-span-full">
393
+ <label for="cdn-cookies-label" class="block text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Cookies</label>
394
+ </div>
395
+ <div class="sm:col-span-2">
396
+ <label for="cdn-cookies" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Cookies</label>
397
+ <div class="mt-2">
398
+ <input id="cdn-cookies" name="cookies" type="text" value="{{ cdnCookies }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
399
+ </div>
400
+ </div>
401
+ <div class="sm:col-span-2">
402
+ <label for="cdn-headers" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Headers</label>
403
+ <div class="mt-2">
404
+ <input id="cdn-headers" name="headers" type="text" value="{{ cdnHeaders }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
405
+ </div>
406
+ </div>
407
+ <div class="sm:col-span-2">
408
+ <label for="cdn-query-strings" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Query Strings</label>
409
+ <div class="mt-2">
410
+ <input id="cdn-query-strings" name="query-strings" type="text" value="{{ cdnQueryStrings }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
411
+ </div>
412
+ </div>
413
+
414
+ <div class="sm:col-span-full">
415
+ <label for="cdn-realtime-logs" class="block font-semibold text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Real Time Logs</label>
416
+ </div>
417
+ <div class="sm:col-span-2">
418
+ <label for="cdn-realtime-enabled" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Enabled</label>
419
+ <div class="mt-2">
420
+ <button type="button" class="relative h-6 w-11 inline-flex flex-shrink-0 cursor-pointer border-2 border-transparent rounded-full {{ cdnRealTimeLogsEnabled ? 'bg-indigo-600' : 'bg-gray-200' }} transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-600" role="switch" data-action="toggle-cdn-realtime">
421
+ <span class="sr-only">Enabled</span>
422
+ <span aria-hidden="true" class="pointer-events-none inline-block h-5 w-5 {{ cdnRealTimeLogsEnabled ? 'translate-x-5' : 'translate-x-0' }} transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
423
+ </button>
424
+ </div>
425
+ </div>
426
+ <div class="sm:col-span-2">
427
+ <label for="cdn-sampling-rate" class="block font-medium leading-6 text-gray-900 text-sm dark:text-neutral-100 cursor-pointer">Sampling Rate</label>
428
+ <div class="mt-2">
429
+ <input id="cdn-sampling-rate" name="sampling-rate" type="text" value="{{ cdnSamplingRate }}" class="block px-4 py-2 w-full text-gray-900 dark:text-neutral-100 dark:text-neutral-200 dark:bg-neutral-800 border border-gray-300 rounded-md dark:border-neutral-600 focus:border-none focus:ring-2 focus:ring-blue-500 required:border-red-500 shadow-sm">
430
+ </div>
431
+ </div>
432
+ </div>
433
+ </div>
434
+ </div>
435
+ </div>
436
+ </main>
437
+ <div class="flex gap-x-6 items-center justify-end mt-6">
438
+ <button type="button" class="font-semibold leading-6 text-gray-900 text-sm">Cancel</button>
439
+ <button type="submit" class="px-3 py-2 font-semibold text-sm text-white bg-indigo-600 hover:bg-indigo-500 rounded-md focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-600 focus-visible:outline-offset-2 shadow-sm">Save</button>
440
+ </div>
441
+ </form>