@omega.js/extension 0.1.0

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 (684) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +194 -0
  3. package/bin/omega +2 -0
  4. package/bin/omega-extension +2 -0
  5. package/bin/omg +2 -0
  6. package/dist/assets/css/bundles/.gitkeep +0 -0
  7. package/dist/assets/css/components/content/index.scss +5 -0
  8. package/dist/assets/css/components/options/index.scss +9 -0
  9. package/dist/assets/css/components/pages/index.scss +5 -0
  10. package/dist/assets/css/components/popup/index.scss +9 -0
  11. package/dist/assets/css/core/_animations.scss +64 -0
  12. package/dist/assets/css/core/_fontawesome.scss +146 -0
  13. package/dist/assets/css/core/_initialize.scss +23 -0
  14. package/dist/assets/css/core/_utilities.scss +80 -0
  15. package/dist/assets/css/omega-extension.scss +43 -0
  16. package/dist/assets/css/shell/_index.scss +207 -0
  17. package/dist/assets/css/tokens/_index.scss +166 -0
  18. package/dist/assets/js/core/app-shell.js +136 -0
  19. package/dist/assets/js/libs/initialize-tooltips.js +31 -0
  20. package/dist/assets/js/libs/recaptcha.js +94 -0
  21. package/dist/assets/js/main.js +4 -0
  22. package/dist/assets/themes/_template/README.md +115 -0
  23. package/dist/assets/themes/_template/_config.scss +60 -0
  24. package/dist/assets/themes/_template/_theme.js +14 -0
  25. package/dist/assets/themes/_template/_theme.scss +28 -0
  26. package/dist/assets/themes/_template/css/base/_root.scss +19 -0
  27. package/dist/assets/themes/_template/css/components/_components.scss +23 -0
  28. package/dist/assets/themes/base/README.md +5 -0
  29. package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
  30. package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
  31. package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
  32. package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
  33. package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
  34. package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
  35. package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
  36. package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
  37. package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
  38. package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
  39. package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
  40. package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
  41. package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
  42. package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
  43. package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
  44. package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
  45. package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
  46. package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
  47. package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
  48. package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
  49. package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
  50. package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
  51. package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
  52. package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
  53. package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
  54. package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
  55. package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
  56. package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
  57. package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
  58. package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
  59. package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
  60. package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
  61. package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
  62. package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
  63. package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
  64. package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
  65. package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
  66. package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
  67. package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
  68. package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
  69. package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
  70. package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
  71. package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
  72. package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
  73. package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
  74. package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
  75. package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
  76. package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
  77. package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
  78. package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
  79. package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
  80. package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
  81. package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
  82. package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
  83. package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
  84. package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
  85. package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
  86. package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
  87. package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
  88. package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
  89. package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
  90. package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
  91. package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
  92. package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
  93. package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
  94. package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
  95. package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
  96. package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
  97. package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
  98. package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
  99. package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
  100. package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
  101. package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
  102. package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
  103. package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
  104. package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
  105. package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
  106. package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
  107. package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
  108. package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
  109. package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
  110. package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
  111. package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
  112. package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
  113. package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
  114. package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
  115. package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
  116. package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
  117. package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
  118. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
  119. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
  120. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
  121. package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
  122. package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
  123. package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
  124. package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
  125. package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
  126. package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
  127. package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
  128. package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
  129. package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
  130. package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
  131. package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
  132. package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
  133. package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
  134. package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
  135. package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
  136. package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
  137. package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
  138. package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
  139. package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
  140. package/dist/assets/themes/base/_theme.js +13 -0
  141. package/dist/assets/themes/base/_theme.scss +4 -0
  142. package/dist/assets/themes/bootstrap/_theme.js +16 -0
  143. package/dist/assets/themes/bootstrap/_theme.scss +11 -0
  144. package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
  145. package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
  146. package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
  147. package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
  148. package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
  149. package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
  150. package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
  151. package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
  152. package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
  153. package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
  154. package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
  155. package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
  156. package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
  157. package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
  158. package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
  159. package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
  160. package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
  161. package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
  162. package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
  163. package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
  164. package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
  165. package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
  166. package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
  167. package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
  168. package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
  169. package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
  170. package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
  171. package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
  172. package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
  173. package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
  174. package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
  175. package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
  176. package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
  177. package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
  178. package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
  179. package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
  180. package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
  181. package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
  182. package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
  183. package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
  184. package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
  185. package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
  186. package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
  187. package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
  188. package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
  189. package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
  190. package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
  191. package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
  192. package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
  193. package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
  194. package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
  195. package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
  196. package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
  197. package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
  198. package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
  199. package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
  200. package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
  201. package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
  202. package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
  203. package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
  204. package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
  205. package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
  206. package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
  207. package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
  208. package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
  209. package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
  210. package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
  211. package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
  212. package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
  213. package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
  214. package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
  215. package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
  216. package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
  217. package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
  218. package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
  219. package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
  220. package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
  221. package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
  222. package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
  223. package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
  224. package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
  225. package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
  226. package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
  227. package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
  228. package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
  229. package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
  230. package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
  231. package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
  232. package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
  233. package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
  234. package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
  235. package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
  236. package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
  237. package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
  238. package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  239. package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
  240. package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
  241. package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
  242. package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
  243. package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  244. package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  245. package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  246. package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
  247. package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
  248. package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
  249. package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
  250. package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
  251. package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  252. package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  253. package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
  254. package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
  255. package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
  256. package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
  257. package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  258. package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
  259. package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
  260. package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
  261. package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
  262. package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
  263. package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
  264. package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
  265. package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
  266. package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
  267. package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
  268. package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
  269. package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
  270. package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  271. package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
  272. package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
  273. package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
  274. package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
  275. package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
  276. package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  277. package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  278. package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  279. package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
  280. package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
  281. package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  282. package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
  283. package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
  284. package/dist/assets/themes/classy/README.md +89 -0
  285. package/dist/assets/themes/classy/_config.scss +245 -0
  286. package/dist/assets/themes/classy/_theme.js +31 -0
  287. package/dist/assets/themes/classy/_theme.scss +57 -0
  288. package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
  289. package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
  290. package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
  291. package/dist/assets/themes/classy/css/base/_root.scss +113 -0
  292. package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
  293. package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
  294. package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
  295. package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
  296. package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
  297. package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
  298. package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
  299. package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
  300. package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
  301. package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
  302. package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
  303. package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
  304. package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
  305. package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
  306. package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
  307. package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
  308. package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
  309. package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
  310. package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
  311. package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
  312. package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
  313. package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
  314. package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
  315. package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
  316. package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
  317. package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
  318. package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
  319. package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
  320. package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
  321. package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
  322. package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
  323. package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
  324. package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
  325. package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
  326. package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
  327. package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
  328. package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
  329. package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
  330. package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
  331. package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
  332. package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
  333. package/dist/assets/themes/neobrutalism/README.md +118 -0
  334. package/dist/assets/themes/neobrutalism/_config.scss +139 -0
  335. package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
  336. package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
  337. package/dist/assets/themes/neobrutalism/_theme.js +24 -0
  338. package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
  339. package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
  340. package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
  341. package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
  342. package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
  343. package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
  344. package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
  345. package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
  346. package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
  347. package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
  348. package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
  349. package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
  350. package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
  351. package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
  352. package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
  353. package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
  354. package/dist/assets/themes/newsflash/README.md +117 -0
  355. package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
  356. package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
  357. package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
  358. package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
  359. package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
  360. package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
  361. package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
  362. package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
  363. package/dist/assets/themes/newsflash/_config.scss +147 -0
  364. package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
  365. package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
  366. package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
  367. package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
  368. package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
  369. package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
  370. package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
  371. package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
  372. package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
  373. package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
  374. package/dist/assets/themes/newsflash/_theme.js +24 -0
  375. package/dist/assets/themes/newsflash/_theme.scss +70 -0
  376. package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
  377. package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
  378. package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
  379. package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
  380. package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
  381. package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
  382. package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
  383. package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
  384. package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
  385. package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
  386. package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
  387. package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
  388. package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
  389. package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
  390. package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
  391. package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
  392. package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
  393. package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
  394. package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
  395. package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
  396. package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
  397. package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
  398. package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
  399. package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
  400. package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
  401. package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
  402. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
  403. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
  404. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
  405. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
  406. package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
  407. package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
  408. package/dist/background.js +684 -0
  409. package/dist/build.js +268 -0
  410. package/dist/cli-run.js +25 -0
  411. package/dist/cli.js +30 -0
  412. package/dist/commands/build.js +67 -0
  413. package/dist/commands/clean.js +29 -0
  414. package/dist/commands/deploy.js +97 -0
  415. package/dist/commands/install.js +58 -0
  416. package/dist/commands/lib/dependencies.js +33 -0
  417. package/dist/commands/lib/deploy-precheck.js +57 -0
  418. package/dist/commands/lib/ensure-target.js +151 -0
  419. package/dist/commands/lib/push-secrets.js +60 -0
  420. package/dist/commands/migrate.js +77 -0
  421. package/dist/commands/test.js +110 -0
  422. package/dist/commands/update.js +21 -0
  423. package/dist/commands/version.js +12 -0
  424. package/dist/config/manifest.json +117 -0
  425. package/dist/config/page-template.html +21 -0
  426. package/dist/content.js +37 -0
  427. package/dist/defaults/.github/workflows/publish.yml +86 -0
  428. package/dist/defaults/.nvmrc +1 -0
  429. package/dist/defaults/.vscode/settings.json +8 -0
  430. package/dist/defaults/AGENTS.md +113 -0
  431. package/dist/defaults/CHANGELOG.md +15 -0
  432. package/dist/defaults/CLAUDE.md +1 -0
  433. package/dist/defaults/_.gitignore +75 -0
  434. package/dist/defaults/config/description.md +46 -0
  435. package/dist/defaults/config/messages.json +20 -0
  436. package/dist/defaults/config/omega.json5 +64 -0
  437. package/dist/defaults/docs/README.md +17 -0
  438. package/dist/defaults/gulpfile.js +6 -0
  439. package/dist/defaults/hooks/build/post.js +8 -0
  440. package/dist/defaults/hooks/build/pre.js +8 -0
  441. package/dist/defaults/src/assets/css/bundles/.gitkeep +0 -0
  442. package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
  443. package/dist/defaults/src/assets/css/components/offscreen/index.scss +4 -0
  444. package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
  445. package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
  446. package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
  447. package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
  448. package/dist/defaults/src/assets/css/main.scss +32 -0
  449. package/dist/defaults/src/assets/images/.gitkeep +0 -0
  450. package/dist/defaults/src/assets/js/components/background/index.js +25 -0
  451. package/dist/defaults/src/assets/js/components/content/index.js +22 -0
  452. package/dist/defaults/src/assets/js/components/offscreen/index.js +25 -0
  453. package/dist/defaults/src/assets/js/components/options/index.js +22 -0
  454. package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
  455. package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
  456. package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
  457. package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
  458. package/dist/defaults/src/manifest.json +131 -0
  459. package/dist/defaults/src/views/offscreen/index.html +3 -0
  460. package/dist/defaults/src/views/options/index.html +8 -0
  461. package/dist/defaults/src/views/pages/index.html +10 -0
  462. package/dist/defaults/src/views/popup/index.html +4 -0
  463. package/dist/defaults/src/views/sidepanel/index.html +4 -0
  464. package/dist/defaults/test/README.md +41 -0
  465. package/dist/defaults/test/_init.js +10 -0
  466. package/dist/defaults/test/boot/externally-connectable.test.js +28 -0
  467. package/dist/gulp/config/locales.js +12 -0
  468. package/dist/gulp/main.js +78 -0
  469. package/dist/gulp/tasks/_.js +18 -0
  470. package/dist/gulp/tasks/audit.js +222 -0
  471. package/dist/gulp/tasks/bundle.js +687 -0
  472. package/dist/gulp/tasks/defaults.js +281 -0
  473. package/dist/gulp/tasks/distribute.js +172 -0
  474. package/dist/gulp/tasks/fontawesome.js +25 -0
  475. package/dist/gulp/tasks/html.js +163 -0
  476. package/dist/gulp/tasks/icons.js +126 -0
  477. package/dist/gulp/tasks/package.js +742 -0
  478. package/dist/gulp/tasks/publish.js +417 -0
  479. package/dist/gulp/tasks/sass.js +252 -0
  480. package/dist/gulp/tasks/serve.js +103 -0
  481. package/dist/gulp/tasks/translate.js +252 -0
  482. package/dist/gulp/tasks/utils/build-json.js +43 -0
  483. package/dist/gulp/tasks/utils/template-transform.js +50 -0
  484. package/dist/gulp/templates/BUILD_INSTRUCTIONS.md +69 -0
  485. package/dist/index.js +46 -0
  486. package/dist/lib/affiliatizer.js +224 -0
  487. package/dist/lib/analytics.js +26 -0
  488. package/dist/lib/auth-helpers.js +213 -0
  489. package/dist/lib/extension.js +116 -0
  490. package/dist/lib/icons.js +36 -0
  491. package/dist/lib/logger-lite.js +35 -0
  492. package/dist/lib/logger.js +4 -0
  493. package/dist/lib/messaging.js +48 -0
  494. package/dist/lib/safe-install.js +4 -0
  495. package/dist/lib/theme.js +73 -0
  496. package/dist/lib/verts.js +68 -0
  497. package/dist/offscreen.js +31 -0
  498. package/dist/omega-bin.js +6 -0
  499. package/dist/options.js +80 -0
  500. package/dist/page.js +80 -0
  501. package/dist/popup.js +80 -0
  502. package/dist/sidepanel.js +80 -0
  503. package/dist/test/assert.js +4 -0
  504. package/dist/test/fixtures/consumer-extension/dist/background.js +23 -0
  505. package/dist/test/fixtures/consumer-extension/dist/manifest.json +20 -0
  506. package/dist/test/fixtures/consumer-extension/dist/options.html +10 -0
  507. package/dist/test/fixtures/consumer-extension/dist/popup.bundle.js +5 -0
  508. package/dist/test/fixtures/consumer-extension/dist/popup.html +12 -0
  509. package/dist/test/harness/extension/background.js +26 -0
  510. package/dist/test/harness/extension/manifest.json +27 -0
  511. package/dist/test/harness/extension/options.html +12 -0
  512. package/dist/test/harness/extension/popup.html +12 -0
  513. package/dist/test/harness/extension/sidepanel.html +12 -0
  514. package/dist/test/index.js +63 -0
  515. package/dist/test/runner.js +99 -0
  516. package/dist/test/runners/boot.js +221 -0
  517. package/dist/test/runners/chromium.js +391 -0
  518. package/dist/test/runners/helpers.js +24 -0
  519. package/dist/test/suites/background/messaging.test.js +44 -0
  520. package/dist/test/suites/background/storage.test.js +46 -0
  521. package/dist/test/suites/background/sw-context.test.js +49 -0
  522. package/dist/test/suites/boot/build-json-bake.test.js +80 -0
  523. package/dist/test/suites/boot/extension-loads.test.js +58 -0
  524. package/dist/test/suites/build/affiliatizer.test.js +64 -0
  525. package/dist/test/suites/build/app-launch.test.js +65 -0
  526. package/dist/test/suites/build/attach-log-file.test.js +99 -0
  527. package/dist/test/suites/build/auth-emulator-gate.test.js +118 -0
  528. package/dist/test/suites/build/auth-triggers.test.js +71 -0
  529. package/dist/test/suites/build/boot-discovery.test.js +134 -0
  530. package/dist/test/suites/build/boot-timeout.test.js +92 -0
  531. package/dist/test/suites/build/build-error-notification.test.js +122 -0
  532. package/dist/test/suites/build/build-json-bake.test.js +302 -0
  533. package/dist/test/suites/build/build-verb.test.js +138 -0
  534. package/dist/test/suites/build/bundle-targets.test.js +66 -0
  535. package/dist/test/suites/build/cache-warming.test.js +44 -0
  536. package/dist/test/suites/build/cli.test.js +150 -0
  537. package/dist/test/suites/build/default-boot-test.test.js +100 -0
  538. package/dist/test/suites/build/defaults-scaffold.test.js +287 -0
  539. package/dist/test/suites/build/deploy-dispatch.test.js +76 -0
  540. package/dist/test/suites/build/distribute-task.test.js +111 -0
  541. package/dist/test/suites/build/ensure-target.test.js +141 -0
  542. package/dist/test/suites/build/env-delivery.test.js +239 -0
  543. package/dist/test/suites/build/env-watch.test.js +86 -0
  544. package/dist/test/suites/build/expect.test.js +48 -0
  545. package/dist/test/suites/build/exports.test.js +53 -0
  546. package/dist/test/suites/build/extension-fallback.test.js +82 -0
  547. package/dist/test/suites/build/framework-deps.test.js +176 -0
  548. package/dist/test/suites/build/global-handlers.test.js +70 -0
  549. package/dist/test/suites/build/icon-sheet.test.js +74 -0
  550. package/dist/test/suites/build/logger-lite.test.js +61 -0
  551. package/dist/test/suites/build/manager.test.js +249 -0
  552. package/dist/test/suites/build/mode-helpers.test.js +136 -0
  553. package/dist/test/suites/build/omega-shell.test.js +103 -0
  554. package/dist/test/suites/build/omega-tokens.test.js +76 -0
  555. package/dist/test/suites/build/package-task.test.js +831 -0
  556. package/dist/test/suites/build/setup-scripts.test.js +172 -0
  557. package/dist/test/suites/build/strip-dev-blocks.test.js +122 -0
  558. package/dist/test/suites/build/template-replace.test.js +116 -0
  559. package/dist/test/suites/build/test-discovery.test.js +64 -0
  560. package/dist/test/suites/build/test-target-no-match.test.js +119 -0
  561. package/dist/test/suites/build/theme-resolve.test.js +115 -0
  562. package/dist/test/suites/build/translate.test.js +85 -0
  563. package/dist/test/suites/build/url-helpers.test.js +119 -0
  564. package/dist/test/suites/build/verb-logs.test.js +43 -0
  565. package/dist/test/suites/build/verts-binding.test.js +67 -0
  566. package/dist/test/suites/build/wakeup-ping.test.js +90 -0
  567. package/dist/test/suites/build/wave5-messenger.test.js +80 -0
  568. package/dist/test/suites/view/options-and-sidepanel.test.js +16 -0
  569. package/dist/test/suites/view/popup-context.test.js +53 -0
  570. package/dist/test/suites/view/sidepanel.test.js +16 -0
  571. package/dist/test/utils/extended-mode-warning.js +13 -0
  572. package/dist/utils/attach-log-file.js +4 -0
  573. package/dist/utils/mode-helpers.js +117 -0
  574. package/dist/utils/url-helpers.js +69 -0
  575. package/dist/vendor/account/engine.js +182 -0
  576. package/dist/vendor/account/features.js +220 -0
  577. package/dist/vendor/account/index.js +53 -0
  578. package/dist/vendor/account/schema.js +272 -0
  579. package/dist/vendor/account/subscription.js +38 -0
  580. package/dist/vendor/config/company.js +31 -0
  581. package/dist/vendor/config/defaults.js +173 -0
  582. package/dist/vendor/config/demo.js +18 -0
  583. package/dist/vendor/config/desktop-artifacts.js +110 -0
  584. package/dist/vendor/config/edit.js +769 -0
  585. package/dist/vendor/config/env-delivery.js +145 -0
  586. package/dist/vendor/config/env-rules.js +93 -0
  587. package/dist/vendor/config/env-schema.js +1078 -0
  588. package/dist/vendor/config/env.js +445 -0
  589. package/dist/vendor/config/hooks.js +97 -0
  590. package/dist/vendor/config/index.js +237 -0
  591. package/dist/vendor/config/instances.js +208 -0
  592. package/dist/vendor/config/load.js +490 -0
  593. package/dist/vendor/config/merge.js +68 -0
  594. package/dist/vendor/config/order.js +139 -0
  595. package/dist/vendor/config/ports.js +374 -0
  596. package/dist/vendor/config/providers.js +32 -0
  597. package/dist/vendor/config/repo.js +142 -0
  598. package/dist/vendor/config/retired-keys.js +430 -0
  599. package/dist/vendor/config/schema.js +1610 -0
  600. package/dist/vendor/config/secrets.js +50 -0
  601. package/dist/vendor/config/seed.js +34 -0
  602. package/dist/vendor/config/site-global.js +205 -0
  603. package/dist/vendor/config/validate.js +554 -0
  604. package/dist/vendor/config/winback.js +61 -0
  605. package/dist/vendor/devkit/actions-secrets.js +145 -0
  606. package/dist/vendor/devkit/attach-log-file.js +262 -0
  607. package/dist/vendor/devkit/bundle.js +292 -0
  608. package/dist/vendor/devkit/ci-workflows.js +520 -0
  609. package/dist/vendor/devkit/clean-dirs.js +28 -0
  610. package/dist/vendor/devkit/cli-router.js +156 -0
  611. package/dist/vendor/devkit/defaults-engine.js +372 -0
  612. package/dist/vendor/devkit/deploy-precheck.js +54 -0
  613. package/dist/vendor/devkit/deploy-record.js +180 -0
  614. package/dist/vendor/devkit/deploy.js +286 -0
  615. package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
  616. package/dist/vendor/devkit/env-watch.js +132 -0
  617. package/dist/vendor/devkit/framework-deps.js +46 -0
  618. package/dist/vendor/devkit/icons.js +178 -0
  619. package/dist/vendor/devkit/license.js +155 -0
  620. package/dist/vendor/devkit/local.js +1905 -0
  621. package/dist/vendor/devkit/logger.js +128 -0
  622. package/dist/vendor/devkit/merge-line-files.js +296 -0
  623. package/dist/vendor/devkit/npm-registry.js +52 -0
  624. package/dist/vendor/devkit/omega-bin.js +345 -0
  625. package/dist/vendor/devkit/safe-install.js +18 -0
  626. package/dist/vendor/devkit/scaffold-guard.js +96 -0
  627. package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
  628. package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
  629. package/dist/vendor/devkit/target-dependencies.js +137 -0
  630. package/dist/vendor/devkit/target-secrets.js +165 -0
  631. package/dist/vendor/devkit/test/assert.js +120 -0
  632. package/dist/vendor/devkit/test/define-cases.js +104 -0
  633. package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
  634. package/dist/vendor/devkit/test/runner-core.js +554 -0
  635. package/dist/vendor/devkit/test/scope.js +162 -0
  636. package/dist/vendor/devkit/translate/cache.js +84 -0
  637. package/dist/vendor/devkit/translate/engine.js +243 -0
  638. package/dist/vendor/devkit/translate/index.js +49 -0
  639. package/dist/vendor/devkit/translate/languages.js +134 -0
  640. package/dist/vendor/devkit/translate/providers.js +188 -0
  641. package/dist/vendor/devkit/update.js +569 -0
  642. package/docs/affiliatizer.md +81 -0
  643. package/docs/audit.md +67 -0
  644. package/docs/auth.md +149 -0
  645. package/docs/build-system.md +176 -0
  646. package/docs/cdp-debugging.md +42 -0
  647. package/docs/cli.md +73 -0
  648. package/docs/common-mistakes.md +10 -0
  649. package/docs/components.md +87 -0
  650. package/docs/css.md +133 -0
  651. package/docs/defaults.md +72 -0
  652. package/docs/environment-detection.md +79 -0
  653. package/docs/extension.md +93 -0
  654. package/docs/hooks.md +111 -0
  655. package/docs/icons.md +47 -0
  656. package/docs/index.md +291 -0
  657. package/docs/logging.md +33 -0
  658. package/docs/managers.md +100 -0
  659. package/docs/offscreen.md +57 -0
  660. package/docs/publishing.md +182 -0
  661. package/docs/shared/agent-docs.md +89 -0
  662. package/docs/shared/analytics.md +612 -0
  663. package/docs/shared/brands.md +51 -0
  664. package/docs/shared/breaking-changes.md +497 -0
  665. package/docs/shared/config.md +1387 -0
  666. package/docs/shared/deploys.md +215 -0
  667. package/docs/shared/icons.md +201 -0
  668. package/docs/shared/local-dev.md +147 -0
  669. package/docs/shared/logging.md +202 -0
  670. package/docs/shared/monitoring.md +153 -0
  671. package/docs/shared/publishing.md +183 -0
  672. package/docs/shared/rulings.md +34 -0
  673. package/docs/shared/testing.md +147 -0
  674. package/docs/shared/theming.md +604 -0
  675. package/docs/shared/translation.md +291 -0
  676. package/docs/shared/updates.md +61 -0
  677. package/docs/templating.md +66 -0
  678. package/docs/test-boot-layer.md +143 -0
  679. package/docs/test-framework.md +411 -0
  680. package/docs/themes.md +89 -0
  681. package/docs/translations.md +73 -0
  682. package/docs/verts.md +67 -0
  683. package/docs/xss-prevention.md +95 -0
  684. package/package.json +159 -0
@@ -0,0 +1,88 @@
1
+ ---
2
+ layout: frontend/core/base
3
+
4
+ # Hero Section
5
+ hero:
6
+ subheadline: "Browse all posts with this tag"
7
+ ---
8
+
9
+ <!-- ═══ Masthead ═══ -->
10
+ {% comment %} The term as it DISPLAYS: the aggregation humanizes the winning
11
+ spelling ("Growth Hacks", #457); the tag cloud on /blog/tags title-cases the
12
+ RAW spelling ("Growth-hacks") — a split legacy UJM shipped too (#294). {% endcomment %}
13
+ {% assign tag_name = resolved.tag.name | omega_title_case %}
14
+ {% comment %} #467 (after #749): this masthead IS the page's first viewport, so
15
+ the band paints with the document — data-omega-first-paint on the section, no
16
+ stagger container, and the masthead cluster on its first_paint switch. The
17
+ bands below keep the reveal lane. {% endcomment %}
18
+ <section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
19
+ <div class="container">
20
+ <div class="omega-post-card__eyebrow mb-4">
21
+ <a href="/blog">Blog</a>
22
+ <span>/</span>
23
+ <a href="/blog/tags">Tags</a>
24
+ <span>/</span>
25
+ <span>{{ tag_name }}</span>
26
+ </div>
27
+
28
+ {% component "heading/masthead", headline: tag_name, sub: resolved.hero.subheadline, first_paint: true %}
29
+ </div>
30
+ </section>
31
+
32
+ <!-- ═══ Posts grid ═══ -->
33
+ <section class="pt-0">
34
+ <div class="container">
35
+ {% comment %} Filter posts by tag (max 100) {% endcomment %}
36
+ {% assign tag_slug = resolved.tag.slug %}
37
+ {% assign filtered_posts = '' | split: ',' %}
38
+ {% for post in site.posts %}
39
+ {% if filtered_posts.size >= 100 %}
40
+ {% break %}
41
+ {% endif %}
42
+ {% for tag in post.post.tags %}
43
+ {% assign t_slug = tag | slugify %}
44
+ {% if t_slug == tag_slug %}
45
+ {% assign filtered_posts = filtered_posts | push: post %}
46
+ {% break %}
47
+ {% endif %}
48
+ {% endfor %}
49
+ {% endfor %}
50
+
51
+ {% comment %} The grid's heading (#313): the cards' names are h3s, so
52
+ without it the page skips from the masthead h1 straight to h3. Visually
53
+ hidden — the blog index carries its h2 as the featured post's title, and
54
+ a term page has no feature, only the grid. {% endcomment %}
55
+ <h2 class="visually-hidden">Posts tagged {{ tag_name }}</h2>
56
+
57
+ <div class="row g-4 mb-5" data-omega-reveal-stagger="60">
58
+ {% for post in filtered_posts %}
59
+ <div class="col-xl-4 col-lg-6 col-md-12" data-omega-reveal>
60
+ {% include frontend/components/post-card.html post=post %}
61
+ </div>
62
+ {% endfor %}
63
+ </div>
64
+
65
+ {% if filtered_posts.size == 0 %}
66
+ <div class="row justify-content-center">
67
+ <div class="col-lg-6 text-center" data-omega-reveal>
68
+ <div class="py-5">
69
+ <h2 class="h5">No posts with this tag</h2>
70
+ <p class="text-muted">Check back soon for new content.</p>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ {% endif %}
75
+
76
+ <!-- Back to Tags -->
77
+ <div class="row justify-content-center">
78
+ <div class="col-12 text-center">
79
+ <a href="/blog/tags" class="btn btn-outline-adaptive">
80
+ <i class="fa-solid fa-arrow-left fa-sm me-2"></i>
81
+ All tags
82
+ </a>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </section>
87
+
88
+ {{ content | omega_content_format }}
@@ -0,0 +1,72 @@
1
+ ---
2
+ layout: frontend/core/base
3
+
4
+ # ═══ One category of a brand's own collection (#207). The term rides the
5
+ # page's `category` pagination alias and carries its own documents.
6
+
7
+ category_empty: "Nothing in this category yet."
8
+ ---
9
+
10
+ <!-- ═══ Masthead ═══ -->
11
+ {% comment %} The term as it DISPLAYS: the aggregation keeps the documents' own
12
+ spelling ("guides"), and the generated page's meta title-cases the same way
13
+ — one presentation of one term (#312). {% endcomment %}
14
+ {% assign category_name = category.name | omega_title_case %}
15
+ {% comment %} #467 (after #749): this masthead IS the page's first viewport, so
16
+ the band paints with the document — data-omega-first-paint on the section, no
17
+ stagger container, and the masthead cluster on its first_paint switch. The
18
+ bands below keep the reveal lane. {% endcomment %}
19
+ <section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
20
+ <div class="container">
21
+ <div class="omega-post-card__eyebrow mb-4">
22
+ <a href="{{ resolved.collection.base }}">{{ resolved.collection.title }}</a>
23
+ <span>/</span>
24
+ <span>{{ category_name }}</span>
25
+ </div>
26
+
27
+ {% component "heading/masthead", headline: category_name, sub: resolved.collection.description, first_paint: true %}
28
+ </div>
29
+ </section>
30
+
31
+ <!-- ═══ The documents in this category ═══ -->
32
+ <section class="pt-0">
33
+ <div class="container">
34
+ <div class="row">
35
+ <div class="col-lg-8">
36
+ {% if category.posts.size > 0 %}
37
+ <div class="omega-rowlist" data-omega-reveal-stagger="50">
38
+ {% comment %} Taxonomy terms carry the raw collection documents, so a
39
+ document's own fields live under `data` (the listing's paginator
40
+ flattens them; this one does not). {% endcomment %}
41
+ {% for item in category.posts %}
42
+ {% assign entry = item.data[resolved.collection.namespace] %}
43
+ <a href="{{ item.url }}" class="omega-rowlist__item omega-rowlist__item--link" data-omega-reveal>
44
+ <span>{{ entry.title | default: item.data.title | default: item.url }}</span>
45
+ <span class="omega-rowlist__meta">
46
+ {{ entry.description | default: item.data.description }}
47
+ <i class="fa-solid fa-arrow-right fa-xs ms-2"></i>
48
+ </span>
49
+ </a>
50
+ {% endfor %}
51
+ </div>
52
+ {% else %}
53
+ <div class="omega-status-empty" data-omega-reveal>
54
+ <span class="omega-dot"></span>
55
+ <span>{{ resolved.category_empty }}</span>
56
+ </div>
57
+ {% endif %}
58
+ </div>
59
+ </div>
60
+
61
+ <div class="row justify-content-center mt-5">
62
+ <div class="col-12 text-center">
63
+ <a href="{{ resolved.collection.base }}" class="btn btn-outline-adaptive">
64
+ <i class="fa-solid fa-arrow-left fa-sm me-2"></i>
65
+ All {{ resolved.collection.title }}
66
+ </a>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </section>
71
+
72
+ {{ content | omega_content_format }}
@@ -0,0 +1,54 @@
1
+ ---
2
+ layout: frontend/core/base
3
+
4
+ # ═══ One document of a brand's own collection (#207). The engine fills the
5
+ # collection block into every document under `_<name>/`, so ONE layout serves
6
+ # docs, guides, recipes, portfolios — exactly like its listing/category
7
+ # siblings.
8
+ ---
9
+
10
+ {% comment %} A document keeps its own fields under the namespace of the
11
+ configured category field (doc.category → doc.title); a bare `title` is the
12
+ flat spelling, and the same pair names the page's meta (#317). {% endcomment %}
13
+ {% assign entry = resolved[resolved.collection.namespace] %}
14
+ {% assign document_title = entry.title | default: resolved.title | default: resolved.collection.title %}
15
+ {% assign document_description = entry.description | default: resolved.description %}
16
+
17
+ <!-- ═══ Masthead ═══ -->
18
+ {% comment %} #467 (after #749): this masthead IS the page's first viewport, so
19
+ the band paints with the document — data-omega-first-paint on the section, no
20
+ stagger container, and the masthead cluster on its first_paint switch. The
21
+ bands below keep the reveal lane. {% endcomment %}
22
+ <section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
23
+ <div class="container">
24
+ <div class="omega-post-card__eyebrow mb-4">
25
+ <a href="{{ resolved.collection.base }}">{{ resolved.collection.title }}</a>
26
+ <span>/</span>
27
+ <span>{{ document_title }}</span>
28
+ </div>
29
+
30
+ {% component "heading/masthead", headline: document_title, sub: document_description, first_paint: true %}
31
+ </div>
32
+ </section>
33
+
34
+ <!-- ═══ The document itself ═══ -->
35
+ <section class="pt-0">
36
+ <div class="container">
37
+ <div class="row">
38
+ <div class="col-lg-8">
39
+ <div class="omega-prose" data-omega-reveal>
40
+ {{ content | omega_content_format }}
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="row justify-content-center mt-5">
46
+ <div class="col-12 text-center">
47
+ <a href="{{ resolved.collection.base }}" class="btn btn-outline-adaptive">
48
+ <i class="fa-solid fa-arrow-left fa-sm me-2"></i>
49
+ All {{ resolved.collection.title }}
50
+ </a>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </section>
@@ -0,0 +1,84 @@
1
+ ---
2
+ layout: frontend/core/base
3
+
4
+ # ═══ The listing page of a brand's own collection (#207). Every value comes
5
+ # from targets.web.collections.<name> through the generated page's
6
+ # `collection` block, so ONE layout serves docs, guides, recipes, portfolios.
7
+
8
+ collection_empty: "Nothing here yet. The first entry will land right on this page."
9
+ ---
10
+
11
+ <!-- ═══ Masthead ═══ -->
12
+ {% comment %} #467 (after #749): this masthead IS the page's first viewport, so
13
+ the band paints with the document — data-omega-first-paint on the section, no
14
+ stagger container, and the masthead cluster on its first_paint switch. The
15
+ bands below keep the reveal lane. {% endcomment %}
16
+ <section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
17
+ <div class="container">
18
+ {% component "heading/masthead", headline: resolved.collection.title, sub: resolved.collection.description, first_paint: true %}
19
+
20
+ {% comment %} Category rail — the collection's own taxonomy, one link per term {% endcomment %}
21
+ {% assign terms = collections[resolved.collection.taxonomy] %}
22
+ {% if terms and terms.size > 0 %}
23
+ <nav class="omega-tabs mt-5" aria-label="{{ resolved.collection.title }} categories">
24
+ <a href="{{ resolved.collection.base }}" class="active">All</a>
25
+ {% for term in terms %}
26
+ <a href="{{ resolved.collection.base }}/categories/{{ term.slug }}">{{ term.name | omega_title_case }}</a>
27
+ {% endfor %}
28
+ </nav>
29
+ {% endif %}
30
+ </div>
31
+ </section>
32
+
33
+ <!-- ═══ The documents on this page ═══ -->
34
+ <section class="pt-0">
35
+ <div class="container">
36
+ <div class="row">
37
+ <div class="col-lg-8">
38
+ {% if paginator.posts.size > 0 %}
39
+ <div class="omega-rowlist" data-omega-reveal-stagger="50">
40
+ {% for item in paginator.posts %}
41
+ {% comment %} A document keeps its own fields under the namespace of the
42
+ configured category field (doc.category → doc.title); a bare `title`
43
+ is the flat spelling. {% endcomment %}
44
+ {% assign entry = item[resolved.collection.namespace] %}
45
+ <a href="{{ item.url }}" class="omega-rowlist__item omega-rowlist__item--link" data-omega-reveal>
46
+ <span>{{ entry.title | default: item.title | default: item.url }}</span>
47
+ <span class="omega-rowlist__meta">
48
+ {{ entry.description | default: item.description }}
49
+ <i class="fa-solid fa-arrow-right fa-xs ms-2"></i>
50
+ </span>
51
+ </a>
52
+ {% endfor %}
53
+ </div>
54
+ {% else %}
55
+ <div class="omega-status-empty" data-omega-reveal>
56
+ <span class="omega-dot"></span>
57
+ <span>{{ resolved.collection_empty }}</span>
58
+ </div>
59
+ {% endif %}
60
+ </div>
61
+ </div>
62
+
63
+ <!-- Pagination — the paths come from the paginator, which is the one home of the URL shape -->
64
+ {% if paginator.total_pages > 1 %}
65
+ <nav aria-label="{{ resolved.collection.title }} pagination" class="d-flex justify-content-center align-items-center gap-3 mt-5" data-omega-reveal>
66
+ {% if paginator.previous_page_path %}
67
+ <a class="btn btn-outline-adaptive btn-sm omega-hover-nudge" href="{{ paginator.previous_page_path }}">
68
+ <i class="fa-solid fa-chevron-left fa-xs me-2"></i>
69
+ Previous
70
+ </a>
71
+ {% endif %}
72
+ <span class="omega-quiet small">Page {{ paginator.page }} of {{ paginator.total_pages }}</span>
73
+ {% if paginator.next_page_path %}
74
+ <a class="btn btn-outline-adaptive btn-sm omega-hover-nudge" href="{{ paginator.next_page_path }}">
75
+ Next
76
+ <i class="fa-solid fa-chevron-right fa-xs ms-2"></i>
77
+ </a>
78
+ {% endif %}
79
+ </nav>
80
+ {% endif %}
81
+ </div>
82
+ </section>
83
+
84
+ {{ content | omega_content_format }}
@@ -0,0 +1,55 @@
1
+ ---
2
+ layout: frontend/core/cover
3
+ ---
4
+
5
+ <section class="col-12">
6
+ <div class="omega-auth" data-omega-reveal>
7
+ <div class="omega-auth__card text-center">
8
+ <!-- Logo -->
9
+ <div class="omega-auth__brand">
10
+ {% comment %} #467: the VISIBLE lockup prefers the bridged vector when the mint produced one — `brand.images.brandmark` stays the raster OG/social and payment sync need. {% endcomment %}
11
+ <img src="{{ assetManifest.brandmarkSvg | default: resolved.config.brand.images.brandmark | omega_cachebreak }}" class="filter-adaptive" alt="{{ resolved.config.brand.name }} Logo"/>
12
+ </div>
13
+
14
+ <!-- Loading State -->
15
+ <div id="connections-loading">
16
+ <h1 class="omega-auth__title">Authorizing <span id="connections-provider">Provider</span></h1>
17
+ <p class="omega-auth__sub">Hold tight. Completing the connection.</p>
18
+ <div class="spinner-border spinner-border-sm mb-0" role="status">
19
+ <span class="visually-hidden">Loading...</span>
20
+ </div>
21
+ </div>
22
+
23
+ <!-- Result State -->
24
+ <div id="connections-result" class="d-none">
25
+ <!-- Success -->
26
+ <div id="result-success" class="d-none">
27
+ <h1 class="omega-auth__title">Connected</h1>
28
+ <p class="omega-auth__sub mb-0">Your account is linked. Redirecting you now.</p>
29
+ </div>
30
+
31
+ <!-- Error -->
32
+ <div id="result-error" class="d-none mb-3">
33
+ <h1 class="omega-auth__title mb-3">Connection failed</h1>
34
+ <div class="alert alert-danger mb-3 text-start" role="alert">
35
+ <p id="error-message" class="mb-0">An error occurred while connecting your account.</p>
36
+ </div>
37
+ <div class="text-center mb-0">
38
+ <a id="return-button" href="/dashboard/account#connections" class="btn btn-adaptive">
39
+ <i class="fa-solid fa-arrow-left fa-sm me-2"></i><span class="button-text">Return to account</span>
40
+ </a>
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+ <!-- Help -->
46
+ <div class="mt-4 pt-3 hairline-top text-center">
47
+ <span class="small omega-quiet">
48
+ Need help? <a href="/contact" class="text-decoration-none">Contact support</a>
49
+ </span>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </section>
54
+
55
+ {{ content | omega_content_format }}
@@ -0,0 +1,214 @@
1
+ ---
2
+ layout: frontend/core/base
3
+
4
+ # Hero Section
5
+ hero:
6
+ headline: "Talk to a <em>human</em>"
7
+ headline_accent: ""
8
+ subheadline: "Questions, ideas, or something broken: a real person from {{ resolved.config.brand.name }} reads every message."
9
+
10
+ # Contact Methods Section (the channels rail)
11
+ contact_methods:
12
+ - title: "Email support"
13
+ description: "Get help within 24 hours"
14
+ icon: "envelope"
15
+ value: "Email us"
16
+ link: "#form"
17
+ - title: "Live chat"
18
+ description: "Chat with our team now 24/7"
19
+ icon: "comments"
20
+ value: "Chat now"
21
+ link: "#chat"
22
+
23
+ # Contact Form Section
24
+ contact_form:
25
+ superheadline:
26
+ text: "Email"
27
+ headline: "Send us a <em>message</em>"
28
+ subheadline: "Fill out the form below and we'll get back to you within 24 hours."
29
+
30
+ # Response facts — the rail footer. Copy lands in markup UNESCAPED, so an
31
+ # angle bracket ships as an entity (#451): a raw `<` opens a bogus tag the
32
+ # production minifier resolves by eating the value's closing tags.
33
+ stats:
34
+ items:
35
+ - number: "&lt;15m"
36
+ label: "Response time"
37
+ sublabel: "Median first reply"
38
+ - number: "24/7"
39
+ label: "Live chat support"
40
+ sublabel: "Every day of the year"
41
+ - number: "4.9"
42
+ label: "Support rating"
43
+ sublabel: "Across review platforms"
44
+ - number: "50+"
45
+ label: "Languages"
46
+ sublabel: "Around the world"
47
+
48
+ # FAQs Section
49
+ faqs:
50
+ superheadline:
51
+ text: "FAQs"
52
+ headline: "Frequently asked <em>questions</em>"
53
+ subheadline: "Everything you need to know about our support experience."
54
+ items:
55
+ - question: "How quickly do you respond to support requests?"
56
+ answer: "We aim to respond to all support requests within 24 hours during business days. For urgent issues, our live chat is available 24/7."
57
+ - question: "Do you offer phone support?"
58
+ answer: "Yes! Phone support is available for premium customers. Contact us to schedule a call with our support team."
59
+ - question: "Can you help with technical integration?"
60
+ answer: "Absolutely! Our technical support team can help with API integration, troubleshooting, and custom implementations."
61
+ ---
62
+
63
+ <!-- ═══ Masthead ═══ -->
64
+ {% comment %} #467 (after #749): this masthead IS the page's first viewport, so
65
+ the band paints with the document — data-omega-first-paint on the section, no
66
+ stagger container, and the masthead cluster on its first_paint switch. The
67
+ bands below keep the reveal lane. {% endcomment %}
68
+ <section class="omega-dotgrid pb-0" data-omega-first-paint data-omega-dotfield>
69
+ <div class="container">
70
+ {% component "heading/masthead", eyebrow: "Contact", headline: resolved.hero.headline, headline_accent: resolved.hero.headline_accent, sub: resolved.hero.subheadline, first_paint: true %}
71
+ </div>
72
+ </section>
73
+
74
+ <!-- ═══ Channels rail + form ═══ -->
75
+ <section id="form">
76
+ <div class="container">
77
+ <div class="omega-duo" style="--omega-duo-cols: 5fr 7fr;">
78
+ <!-- Rail: ways to reach us -->
79
+ <div class="omega-duo__aside" data-omega-reveal-stagger="80">
80
+ <span class="omega-micro d-block mb-2" data-omega-reveal>Ways to reach us</span>
81
+
82
+ <div class="mb-5">
83
+ {% for method in resolved.contact_methods %}
84
+ <a href="{{ method.link }}" class="omega-channel" data-omega-reveal>
85
+ <span class="omega-icon-chip"><i class="fa-solid fa-{{ method.icon }} fa-sm"></i></span>
86
+ <span class="omega-channel__body">
87
+ <span class="omega-channel__title d-block">{{ method.title }}</span>
88
+ <span class="omega-channel__desc d-block">{{ method.description }}</span>
89
+ </span>
90
+ <span class="omega-channel__arrow"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
91
+ </a>
92
+ {% endfor %}
93
+ </div>
94
+
95
+ <!-- Response facts (count up on reveal) -->
96
+ {% if resolved.stats.items %}
97
+ <div class="omega-facts mt-5" style="--omega-facts-cols: 2;" data-omega-reveal>
98
+ {% for stat in resolved.stats.items %}
99
+ <div class="omega-facts__item">
100
+ <span class="omega-micro omega-facts__label">{{ stat.label }}</span>
101
+ <span class="omega-facts__value omega-facts__value--num" data-omega-countup>{{ stat.number }}</span>
102
+ {% iftruthy stat.sublabel %}
103
+ <span class="omega-facts__sub">{{ stat.sublabel }}</span>
104
+ {% endiftruthy %}
105
+ </div>
106
+ {% endfor %}
107
+ </div>
108
+ {% endif %}
109
+ </div>
110
+
111
+ <!-- The form -->
112
+ <div class="omega-form-panel" data-omega-reveal>
113
+ <div class="mb-4">
114
+ {% iftruthy resolved.contact_form.superheadline.text %}
115
+ <span class="omega-micro d-block mb-2">{{ resolved.contact_form.superheadline.text }}</span>
116
+ {% endiftruthy %}
117
+ <h2 class="omega-display omega-display--section mb-2">{{ resolved.contact_form.headline }}</h2>
118
+ {% iftruthy resolved.contact_form.subheadline %}
119
+ <p class="text-muted mb-0">{{ resolved.contact_form.subheadline }}</p>
120
+ {% endiftruthy %}
121
+ </div>
122
+
123
+ <form id="contact-form" autocomplete="on" data-form-state="initializing" onsubmit="return false">
124
+ <div class="row g-3 mb-3">
125
+ <div class="col-md-6">
126
+ <label for="first_name" class="form-label fw-semibold">First name <span class="text-danger">*</span></label>
127
+ <input type="text" class="form-control" id="first_name" name="first_name"
128
+ placeholder="Enter your first name"
129
+ autocomplete="given-name"
130
+ minlength="2"
131
+ maxlength="50"
132
+ required>
133
+ <div class="invalid-feedback"></div>
134
+ </div>
135
+ <div class="col-md-6">
136
+ <label for="last_name" class="form-label fw-semibold">Last name <span class="text-danger">*</span></label>
137
+ <input type="text" class="form-control" id="last_name" name="last_name"
138
+ placeholder="Enter your last name"
139
+ autocomplete="family-name"
140
+ minlength="2"
141
+ maxlength="50"
142
+ required>
143
+ <div class="invalid-feedback"></div>
144
+ </div>
145
+ </div>
146
+
147
+ <!-- Honeypot field (bot detection) -->
148
+ <div class="form-group mb-3" style="display: none;" aria-hidden="true">
149
+ <input type="text" class="form-control" name="honey" tabindex="-1" autocomplete="off">
150
+ </div>
151
+
152
+ <!-- Hidden auth field (auto-populated via bindings) -->
153
+ <input type="hidden" aria-hidden="true" name="uid" data-omega-bind="@value auth.user.uid">
154
+
155
+ <div class="row g-3 mb-3">
156
+ <div class="col-md-6">
157
+ <label for="email" class="form-label fw-semibold">Email address <span class="text-danger">*</span></label>
158
+ <input type="email" class="form-control" id="email" name="email"
159
+ placeholder="Enter your email address"
160
+ autocomplete="email"
161
+ data-omega-bind="@value auth.user.email"
162
+ required>
163
+ <div class="invalid-feedback"></div>
164
+ </div>
165
+ <div class="col-md-6">
166
+ <label for="company" class="form-label fw-semibold">Company</label>
167
+ <input type="text" class="form-control" id="company" name="company"
168
+ placeholder="Optional"
169
+ autocomplete="organization"
170
+ maxlength="100">
171
+ </div>
172
+ </div>
173
+
174
+ <div class="mb-3">
175
+ <label for="subject" class="form-label fw-semibold">Subject <span class="text-danger">*</span></label>
176
+ <select class="form-select" id="subject" name="subject" required>
177
+ <option value="">Choose a topic...</option>
178
+ <option value="general">General inquiry</option>
179
+ <option value="support">Technical support</option>
180
+ <option value="billing">Billing question</option>
181
+ <option value="partnership">Partnership</option>
182
+ <option value="other">Other</option>
183
+ </select>
184
+ <div class="invalid-feedback"></div>
185
+ </div>
186
+
187
+ <div class="mb-4">
188
+ <label for="message" class="form-label fw-semibold">Message <span class="text-danger">*</span></label>
189
+ <textarea class="form-control" id="message" name="message" rows="5"
190
+ placeholder="Tell us how we can help you..."
191
+ minlength="10"
192
+ maxlength="5000"
193
+ required></textarea>
194
+ <div class="invalid-feedback"></div>
195
+ </div>
196
+
197
+ <div class="d-flex flex-wrap align-items-center gap-3">
198
+ <button type="submit" class="btn btn-adaptive btn-lg px-5 omega-hover-nudge">
199
+ Send message
200
+ <span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
201
+ </button>
202
+ </div>
203
+ </form>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </section>
208
+
209
+ <!-- ═══ FAQ — asymmetric ═══ -->
210
+ {% if resolved.faqs.items %}
211
+ {% section "marketing/faq", data: resolved.faqs %}
212
+ {% endif %}
213
+
214
+ {{ content | omega_content_format }}