@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,62 @@
1
+ {% if args.enabled %}
2
+ <section data-omega-section="marketing/product-demo">
3
+ <div class="container">
4
+ <div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
5
+ {% component "heading/section-head", superheadline: args.superheadline.text, headline: args.headline, headline_accent: args.headline_accent, sub: args.subheadline %}
6
+ </div>
7
+
8
+ <!-- Tab Buttons -->
9
+ <div class="d-flex flex-wrap justify-content-center mb-4" data-omega-reveal>
10
+ <div class="omega-billing-toggle" role="tablist" data-omega-segmented>
11
+ {% for tab in args.tabs %}
12
+ <button
13
+ class="btn {% if forloop.first %}active{% endif %}"
14
+ id="{{ tab.id }}-tab"
15
+ data-bs-toggle="tab"
16
+ data-bs-target="#{{ tab.id }}-pane"
17
+ type="button"
18
+ role="tab"
19
+ aria-controls="{{ tab.id }}-pane"
20
+ aria-selected="{% if forloop.first %}true{% else %}false{% endif %}"
21
+ >
22
+ {% iftruthy tab.icon %}
23
+ <i class="fa-solid fa-{{ tab.icon }} fa-sm me-2"></i>
24
+ {% endiftruthy %}
25
+ {{ tab.label }}
26
+ </button>
27
+ {% endfor %}
28
+ </div>
29
+ </div>
30
+
31
+ <!-- Tab Content -->
32
+ <div class="tab-content" data-omega-reveal>
33
+ {% for tab in args.tabs %}
34
+ <div
35
+ class="tab-pane fade {% if forloop.first %}show active{% endif %}"
36
+ id="{{ tab.id }}-pane"
37
+ role="tabpanel"
38
+ aria-labelledby="{{ tab.id }}-tab"
39
+ tabindex="0"
40
+ >
41
+ <!-- Feature Checkmarks -->
42
+ <div class="d-flex flex-wrap justify-content-center gap-3 gap-md-4 mb-4">
43
+ {% for feature in tab.features %}
44
+ <div class="d-flex align-items-center">
45
+ <i class="fa-solid fa-check text-success me-2"></i>
46
+ <span>{{ feature }}</span>
47
+ </div>
48
+ {% endfor %}
49
+ </div>
50
+
51
+ <!-- Video Player -->
52
+ <div class="card overflow-hidden">
53
+ <div class="ratio ratio-16x9">
54
+ {% omega_video tab.video, class="w-100 d-block object-fit-cover border-0", style="", controls="false", loop="true", autoplay="true", playsinline="true", muted="true", preload="metadata" %}
55
+ </div>
56
+ </div>
57
+ </div>
58
+ {% endfor %}
59
+ </div>
60
+ </div>
61
+ </section>
62
+ {% endif %}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Product-demo tab behavior — Bootstrap handles the tab switching itself
3
+ * (data-bs-toggle="tab"); this pauses the videos of inactive tabs and
4
+ * restarts the active tab's video for better UX. The §7 presence init calls
5
+ * this once per rendered instance with the section's root element, so the
6
+ * behavior works on ANY page that composes the band (moved here from
7
+ * core/js/pages/index.js, which owned it when only the homepage — and the
8
+ * hero-demo test pages via the dead asset_path override — rendered it).
9
+ */
10
+ export default (el) => {
11
+ const $tabButtons = el.querySelectorAll('button[data-bs-toggle="tab"]');
12
+
13
+ if (!$tabButtons.length) {
14
+ return;
15
+ }
16
+
17
+ // Listen to Bootstrap's tab show event
18
+ $tabButtons.forEach(function($button) {
19
+ $button.addEventListener('shown.bs.tab', function() {
20
+ // Get the target tab pane
21
+ const targetId = this.getAttribute('data-bs-target');
22
+ const $targetPane = document.querySelector(targetId);
23
+
24
+ // Pause all videos first
25
+ const $allVideos = el.querySelectorAll('.tab-pane video');
26
+ $allVideos.forEach(function($video) {
27
+ $video.pause();
28
+ });
29
+
30
+ // Play the video in the active tab
31
+ if ($targetPane) {
32
+ const $activeVideo = $targetPane.querySelector('video');
33
+ if ($activeVideo) {
34
+ // Reset to beginning and play
35
+ $activeVideo.currentTime = 0;
36
+ $activeVideo.play().catch(function(error) {
37
+ // Autoplay might be blocked by browser, that's okay
38
+ console.log('[Product demo] Autoplay blocked:', error.message);
39
+ });
40
+ }
41
+ }
42
+ });
43
+ });
44
+ };
@@ -0,0 +1,52 @@
1
+ {
2
+ description: 'Optional video demo tabs — segmented tab buttons, per-tab feature checkmarks + autoplaying video. Off by default (enabled: false); superheadline is an object ({ text }).',
3
+
4
+ args: {
5
+ enabled: 'boolean',
6
+ superheadline: 'object',
7
+ headline: 'string',
8
+ headline_accent: 'string',
9
+ subheadline: 'string',
10
+ tabs: 'array',
11
+ },
12
+
13
+ defaults: {
14
+ enabled: false,
15
+ superheadline: {
16
+ text: 'Demo',
17
+ },
18
+ headline: 'See {{ resolved.config.brand.name }} in action',
19
+ // No sub line by default: an ABSENT subheadline renders NOTHING. A band
20
+ // the brand authors inherits no words it never wrote (the demo line lives
21
+ // in the gallery variant below, where sample content belongs).
22
+ subheadline: '',
23
+ tabs: [
24
+ {
25
+ id: 'dashboard',
26
+ label: 'Dashboard',
27
+ icon: 'gauge-high',
28
+ video: 'https://cdn.itwcreativeworks.com/assets/sample/videos/demos/16x9/sample-demo-1.webm',
29
+ features: ['Easy setup', 'Powerful tools', 'Real-time updates'],
30
+ },
31
+ {
32
+ id: 'analytics',
33
+ label: 'Analytics',
34
+ icon: 'chart-line',
35
+ video: 'https://cdn.itwcreativeworks.com/assets/sample/videos/demos/16x9/sample-demo-2.webm',
36
+ features: ['Advanced analytics', 'Custom reports', 'Data insights'],
37
+ },
38
+ ],
39
+ },
40
+
41
+ // Showcase variants (spec §9) — the band is off by default, so the demo
42
+ // flips it on and the default tabs render.
43
+ demo: [
44
+ {
45
+ label: 'Two tabs',
46
+ args: {
47
+ enabled: true,
48
+ subheadline: 'Explore powerful features that help you succeed',
49
+ },
50
+ },
51
+ ],
52
+ }
@@ -0,0 +1,22 @@
1
+ {% comment %} The head-plus-lede band (#515): the shared section-head cluster
2
+ over a narrow column of paragraphs. Nothing here is new vocabulary — the head
3
+ is heading/section-head (nested composition), the column is the shared
4
+ omega-prose reading measure, and the rhythm is the spacing utilities every
5
+ other band uses. {% endcomment %}
6
+ <section>
7
+ <div class="container" data-omega-reveal-stagger="90">
8
+ <div class="omega-section-head omega-section-head--center mb-4" data-omega-reveal>
9
+ {% component "heading/section-head", superheadline: args.superheadline, headline: args.headline, headline_accent: args.headline_accent, sub: args.subheadline %}
10
+ </div>
11
+
12
+ {% if args.body and args.body.size > 0 %}
13
+ <div class="row justify-content-center">
14
+ <div class="col-lg-8 omega-prose" data-omega-reveal>
15
+ {% for paragraph in args.body %}
16
+ <p{% if forloop.last %} class="mb-0"{% endif %}>{{ paragraph }}</p>
17
+ {% endfor %}
18
+ </div>
19
+ </div>
20
+ {% endif %}
21
+ </div>
22
+ </section>
@@ -0,0 +1,41 @@
1
+ {
2
+ description: 'The head-plus-lede band — the standard section head cluster over one or more paragraphs of copy. No items, no media: when a page just needs a heading and a couple of sentences, this is the section (before it, that shape had to fake itself with an item-less showcase). A SHARED band, so the defaults stay NEUTRAL and every caller passes its own words (spec §6).',
3
+
4
+ args: {
5
+ superheadline: 'string',
6
+ headline: 'string',
7
+ headline_accent: 'string',
8
+ subheadline: 'string',
9
+ body: 'array', // the paragraphs, in order — one <p> each; absent renders the head alone
10
+ },
11
+
12
+ // Neutral by design: a band that serves every page can never carry one
13
+ // page's copy (spec §6 shared-band ruling).
14
+ defaults: {},
15
+
16
+ // Showcase variants (spec §9) — the band is neutral, so the demos supply
17
+ // the copy exactly the way a caller does.
18
+ demo: [
19
+ {
20
+ label: 'Head and lede',
21
+ args: {
22
+ superheadline: 'About',
23
+ headline: 'Built by people who',
24
+ headline_accent: 'ship',
25
+ subheadline: 'The short version.',
26
+ body: [
27
+ 'We started {{ resolved.config.brand.name }} because the tooling kept getting in the way of the work. Every project began the same way: a week of plumbing before a single feature.',
28
+ 'So we built the plumbing once, and kept building on it. That is still the whole idea.',
29
+ ],
30
+ },
31
+ },
32
+ {
33
+ label: 'Head only',
34
+ args: {
35
+ superheadline: 'How it works',
36
+ headline: 'Three steps, and',
37
+ headline_accent: "you're live",
38
+ },
39
+ },
40
+ ],
41
+ }
@@ -0,0 +1,35 @@
1
+ {% if args.enabled %}
2
+ <section>
3
+ <div class="container">
4
+ <div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
5
+ {% component "heading/section-head", superheadline: args.superheadline.text, headline: args.headline, headline_accent: args.headline_accent, sub: args.subheadline %}
6
+ </div>
7
+
8
+ {% for item in args.items %}
9
+ {% assign is_even = forloop.index | modulo: 2 %}
10
+ {% if is_even == 0 %}
11
+ {% assign image_col_class = "col-lg-6 order-lg-2" %}
12
+ {% assign text_col_class = "col-lg-6 order-lg-1 pe-lg-5" %}
13
+ {% else %}
14
+ {% assign image_col_class = "col-lg-6" %}
15
+ {% assign text_col_class = "col-lg-6 ps-lg-5" %}
16
+ {% endif %}
17
+
18
+ <div class="row align-items-center g-3 g-lg-5 {% unless forloop.last %} mb-5 pb-5 {% endunless %}">
19
+ <div class="{{ image_col_class }}" data-omega-reveal>
20
+ {% assign ratio = args.image_ratio | default: "4x3" %}
21
+ {% assign object_position = args.image_object_position | default: "center" %}
22
+ <div class="card overflow-hidden ratio ratio-{{ ratio }}">
23
+ {% capture image_style %}object-position: {{ object_position }};{% endcapture %}
24
+ {% omega_image item.image, class="w-100 h-100 object-fit-cover", style=image_style, alt=item.title %}
25
+ </div>
26
+ </div>
27
+ <div class="{{ text_col_class }}" data-omega-reveal>
28
+ <h3 class="omega-display omega-display--section mb-3">{{ item.title }}</h3>
29
+ <p class="text-muted fs-6 mb-0">{{ item.description }}</p>
30
+ </div>
31
+ </div>
32
+ {% endfor %}
33
+ </div>
34
+ </section>
35
+ {% endif %}
@@ -0,0 +1,52 @@
1
+ {
2
+ description: 'Optional alternating image/text feature rows. Off by default (enabled: false); superheadline is an object ({ text }); image_ratio/image_object_position tune every row.',
3
+
4
+ args: {
5
+ enabled: 'boolean',
6
+ superheadline: 'object',
7
+ headline: 'string',
8
+ headline_accent: 'string',
9
+ subheadline: 'string',
10
+ image_ratio: 'string',
11
+ image_object_position: 'string',
12
+ items: 'array',
13
+ },
14
+
15
+ defaults: {
16
+ enabled: false,
17
+ superheadline: {
18
+ text: 'Showcase',
19
+ },
20
+ headline: 'What makes {{ resolved.config.brand.name }} different',
21
+ // No sub line by default: an ABSENT subheadline renders NOTHING. A band
22
+ // the brand authors inherits no words it never wrote (the demo line lives
23
+ // in the gallery variant below, where sample content belongs).
24
+ subheadline: '',
25
+ image_ratio: '4x3',
26
+ image_object_position: 'center',
27
+ items: [
28
+ {
29
+ title: 'Seamless integration',
30
+ description: 'Connect with your existing tools and platforms effortlessly.',
31
+ image: 'https://cdn.itwcreativeworks.com/assets/sample/images/demos/1x1/sample-demo-1.svg',
32
+ },
33
+ {
34
+ title: 'Data-driven insights',
35
+ description: 'Make informed decisions with real-time analytics and actionable insights.',
36
+ image: 'https://cdn.itwcreativeworks.com/assets/sample/images/demos/1x1/sample-demo-2.svg',
37
+ },
38
+ ],
39
+ },
40
+
41
+ // Showcase variants (spec §9) — the band is off by default, so the demo
42
+ // flips it on and the default rows render.
43
+ demo: [
44
+ {
45
+ label: 'Alternating rows',
46
+ args: {
47
+ enabled: true,
48
+ subheadline: 'Powerful features designed to accelerate your success',
49
+ },
50
+ },
51
+ ],
52
+ }
@@ -0,0 +1,32 @@
1
+ {% if args.items and args.items.size > 0 %}
2
+ <section>
3
+ <div class="container">
4
+ {%- comment %} A stat's color names a slot in the ONE categorical palette
5
+ (core/css/core/_tones.scss). The whitelist is the point: anything else —
6
+ a hex, a Bootstrap name — paints nothing, so a band can never colour
7
+ outside the theme. {% endcomment -%}
8
+ {% assign tone_slots = "tone-1,tone-2,tone-3,tone-4,tone-5,tone-6" | split: "," %}
9
+ <div class="omega-stats" data-omega-reveal-stagger="80">
10
+ {% for stat in args.items %}
11
+ {% capture stat_class %}omega-stat{% if tone_slots contains stat.color %} omega-{{ stat.color }}{% endif %}{% endcapture %}
12
+ <div class="{{ stat_class }}" data-omega-reveal>
13
+ {% iftruthy stat.icon %}
14
+ <span class="omega-icon-chip omega-stat__icon"><i class="fa-solid fa-{{ stat.icon }} fa-sm"></i></span>
15
+ {% endiftruthy %}
16
+ {%- comment %} A value is TEXT, never markup (#580): a stat like
17
+ `<200ms` opened a tag the minifier then ate, printing a visible
18
+ `< div>`. escape_once so a brand's `&lt;` workaround still renders.
19
+ {% endcomment -%}
20
+ <div class="omega-stat__num" data-omega-countup>{{ stat.number | escape_once }}</div>
21
+ <div class="omega-stat__label">{{ stat.label }}</div>
22
+ {% iftruthy stat.sublabel %}
23
+ <div class="omega-stat__sub">{{ stat.sublabel }}</div>
24
+ {% endiftruthy %}
25
+ </div>
26
+ {% endfor %}
27
+ </div>{% if args.after != blank %}
28
+
29
+ {{ args.after }}{% endif %}
30
+ </div>
31
+ </section>
32
+ {% endif %}
@@ -0,0 +1,44 @@
1
+ {
2
+ description: 'Stats band — serif numbers with count-up on reveal. Callers with a bare frontmatter array pass it as the items named arg ({% section "marketing/stats", items: resolved.stats %}); empty items suppresses the band.',
3
+
4
+ args: {
5
+ items: 'array', // [{ number, label, sublabel, icon, color }] — icon names a Font Awesome glyph; color names a tone slot (tone-1…tone-6), never a hex
6
+
7
+ after: 'html', // finished markup rendered inside the band container after the grid ({% slot after %}) — e.g. a trailing CTA button
8
+ },
9
+
10
+ defaults: {
11
+ items: [
12
+ { number: '50,000+', label: 'Active users', sublabel: 'From 120+ countries' },
13
+ { number: '99.98%', label: 'Uptime', sublabel: 'Last 12 months' },
14
+ { number: '200+', label: 'Releases shipped', sublabel: 'And counting' },
15
+ { number: '4.9', label: 'Average rating', sublabel: 'Across review platforms' },
16
+ ],
17
+ },
18
+
19
+ // Showcase variants (spec §9)
20
+ demo: [
21
+ { label: 'Default four' },
22
+ {
23
+ label: 'Icons and tones',
24
+ args: {
25
+ items: [
26
+ { number: '2017', label: 'Founded', sublabel: 'Still shipping', icon: 'calendar', color: 'tone-1' },
27
+ { number: '50+', label: 'Team members', sublabel: 'Across 9 time zones', icon: 'users', color: 'tone-2' },
28
+ { number: '1M+', label: 'Happy customers', sublabel: 'And counting', icon: 'smile', color: 'tone-3' },
29
+ { number: '120+', label: 'Countries', sublabel: 'Served from the edge', icon: 'globe', color: 'tone-4' },
30
+ ],
31
+ },
32
+ },
33
+ {
34
+ label: 'Three stats',
35
+ args: {
36
+ items: [
37
+ { number: '12ms', label: 'Median response', sublabel: 'Global edge' },
38
+ { number: '3x', label: 'Faster launches', sublabel: 'Versus hand-rolled' },
39
+ { number: '100%', label: 'Static output', sublabel: 'Nothing to patch' },
40
+ ],
41
+ },
42
+ },
43
+ ],
44
+ }
@@ -0,0 +1,54 @@
1
+ {% comment %}
2
+ Shared base testimonial quote: one large serif quote with italic emphasis
3
+ (draft-2 marketing DNA). Multiple items cycle via the shared word-rotator
4
+ mechanic; a single item renders static. A SHARED band: index, pricing, and
5
+ alternatives all pass their own copy (items: quote / author / role /
6
+ company / initial / avatar) — so json5 defaults stay NEUTRAL and page copy
7
+ rides the data bridge, never the section.
8
+
9
+ The optional head cluster (headline / headline_accent / subheadline) rides
10
+ the shared heading/section-head component like every sibling band; when it
11
+ is present the superheadline eyebrow leads THAT cluster instead of the
12
+ quote, so the band never renders a label below its own headline.
13
+ {% endcomment %}
14
+ {% assign _t = args %}{% if _t.headline or _t.subheadline %}{% assign _head = true %}{% endif %}
15
+ {% if _t.items and _t.items.size > 0 %}
16
+ <section>
17
+ <div class="container">
18
+ {%- if _head %}
19
+ <div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
20
+ {% component "heading/section-head", superheadline: _t.superheadline.text | default: _t.superheadline, headline: _t.headline, headline_accent: _t.headline_accent, sub: _t.subheadline %}
21
+ </div>
22
+ {%- endif %}
23
+ <div class="omega-quote" data-omega-reveal>
24
+ {% unless _head %}{% iftruthy _t.superheadline %}
25
+ {% if _t.superheadline.text %}
26
+ <span class="omega-micro d-block mb-4">{{ _t.superheadline.text }}</span>
27
+ {% else %}
28
+ <span class="omega-micro d-block mb-4">{{ _t.superheadline }}</span>
29
+ {% endif %}
30
+ {% endiftruthy %}{% endunless %}
31
+
32
+ <div data-omega-rotate="5200" class="w-100">
33
+ {% for item in _t.items %}
34
+ <div class="w-100" style="white-space: normal;">
35
+ <p class="omega-quote__text">&ldquo;{{ item.quote }}&rdquo;</p>
36
+ <div class="omega-quote__attr">
37
+ {% iftruthy item.avatar %}
38
+ <span class="omega-quote__avatar"><img src="{{ args.placeholder }}" data-lazy="@src {{ item.avatar }}" alt="{{ item.author }}"/></span>
39
+ {% endiftruthy %}
40
+ {% iffalsy item.avatar %}
41
+ <span class="omega-quote__avatar">{{ item.initial | default: item.author | slice: 0 }}</span>
42
+ {% endiffalsy %}
43
+ <span class="omega-quote__name">{{ item.author }}</span>
44
+ <span class="omega-quote__role">
45
+ {{ item.role }}{% if item.company %}{% if item.role %}, {% endif %}{{ item.company }}{% endif %}
46
+ </span>
47
+ </div>
48
+ </div>
49
+ {% endfor %}
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </section>
54
+ {% endif %}
@@ -0,0 +1,70 @@
1
+ {
2
+ description: 'Serif quote rotator — optional head cluster (headline with <em> accent + sub, via heading/section-head) over one large quote cycling through the shared word-rotator (single item renders static). SHARED across pages (index, pricing, alternatives each pass their own copy), so defaults carry no copy: page quotes ride the data bridge. superheadline accepts a string or { text } (no schema type on purpose) and leads the head cluster whenever there is one.',
3
+
4
+ args: {
5
+ superheadline: { description: 'string or { text } — both render as the micro label' },
6
+ headline: 'string',
7
+ headline_accent: 'string',
8
+ subheadline: 'string',
9
+ items: 'array',
10
+ placeholder: 'string',
11
+ },
12
+
13
+ defaults: {
14
+ // Lazy-avatar placeholder frame (previously a hardcoded
15
+ // {{ site.omega.placeholder.src }} read in markup — now an arg, per
16
+ // context-freeness).
17
+ placeholder: '{{ site.omega.placeholder.src }}',
18
+ },
19
+
20
+ // Showcase variants (spec §9) — a SHARED band keeps neutral defaults, so
21
+ // the demo carries its own generic copy. The two variants also exercise
22
+ // both superheadline shapes (bare string vs { text }) and both head states
23
+ // (bare quote vs the full headline cluster).
24
+ demo: [
25
+ {
26
+ label: 'Single quote (static)',
27
+ args: {
28
+ superheadline: 'What customers say',
29
+ items: [
30
+ {
31
+ quote: 'We replaced three tools the first week. It just ships.',
32
+ author: 'Avery Quinn',
33
+ role: 'CTO',
34
+ company: 'Fieldnote',
35
+ },
36
+ ],
37
+ },
38
+ },
39
+ {
40
+ label: 'Rotating trio, full head',
41
+ args: {
42
+ superheadline: { text: 'Loved by teams' },
43
+ headline: 'Words from the',
44
+ headline_accent: 'people shipping',
45
+ subheadline: 'Every quote below came from a team running this in production.',
46
+ items: [
47
+ {
48
+ quote: 'Setup took an afternoon. The polish took zero.',
49
+ author: 'Sam Rivera',
50
+ role: 'Founder',
51
+ company: 'Northwind Labs',
52
+ initial: 'S',
53
+ },
54
+ {
55
+ quote: 'The first platform our designers and engineers both like.',
56
+ author: 'Priya Patel',
57
+ role: 'Head of Product',
58
+ company: 'Contoso',
59
+ },
60
+ {
61
+ quote: 'We shipped the rebrand in a weekend.',
62
+ author: 'Jordan Lee',
63
+ role: 'Engineering Lead',
64
+ company: 'Initech',
65
+ },
66
+ ],
67
+ },
68
+ },
69
+ ],
70
+ }
@@ -0,0 +1,30 @@
1
+ {% if args.logos and args.logos.size > 0 %}
2
+ <section class="omega-logos overflow-hidden pt-0">
3
+ <div class="container-fluid px-0" data-omega-reveal="fade">
4
+ <span class="omega-micro">{{ args.headline }}</span>
5
+ <!-- 60 px/s — unhurried logo wall (Ian 2026-07-16: 75% of the 80px/s default) -->
6
+ <div class="omega-marquee" data-omega-marquee="60">
7
+ <div class="omega-marquee__track">
8
+ {% for logo in args.logos %}
9
+ <div class="omega-marquee__item">
10
+ {% if logo.src %}
11
+ <img src="{{ logo.src | omega_cachebreak }}" alt="{{ logo.name }}" loading="lazy"/>
12
+ {% elsif logo.logo %}
13
+ <span class="omega-logos__mark" role="img" aria-label="{{ logo.name }}">
14
+ {% omega_logo logo.logo, "combomarks" %}
15
+ </span>
16
+ {% elsif logo.icon %}
17
+ <span class="omega-logos__lockup">
18
+ <i class="fa-solid fa-{{ logo.icon }}"></i>
19
+ <span>{{ logo.name }}</span>
20
+ </span>
21
+ {% else %}
22
+ <span class="omega-logos__word">{{ logo.name }}</span>
23
+ {% endif %}
24
+ </div>
25
+ {% endfor %}
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </section>
30
+ {% endif %}
@@ -0,0 +1,38 @@
1
+ {
2
+ description: 'Logo marquee — the "trusted by" wall. Per logo: `logo` = combomark slug (core/logos, the REAL wordmark lockups); `icon` = FA brands slug (mark + name lockup); `src` = custom image; name-only falls back to the typographic word. Empty logos suppresses the band.',
3
+
4
+ args: {
5
+ headline: 'string',
6
+ logos: 'array',
7
+ },
8
+
9
+ defaults: {
10
+ headline: 'Trusted by teams at',
11
+ logos: [
12
+ { name: 'Amazon', logo: 'amazon' },
13
+ { name: 'Google', logo: 'google' },
14
+ { name: 'HubSpot', logo: 'hubspot' },
15
+ { name: 'PayPal', logo: 'paypal' },
16
+ { name: 'Slack', logo: 'slack' },
17
+ { name: 'Shopify', logo: 'shopify' },
18
+ { name: 'Stripe', logo: 'stripe' },
19
+ { name: 'GitHub', logo: 'github' },
20
+ ],
21
+ },
22
+
23
+ // Showcase variants (spec §9)
24
+ demo: [
25
+ { label: 'Default wall' },
26
+ {
27
+ label: 'Three logos, one per mode',
28
+ args: {
29
+ headline: 'Backed by',
30
+ logos: [
31
+ { name: 'Google', logo: 'google' },
32
+ { name: 'GitHub', icon: 'github' },
33
+ { name: 'Initech' },
34
+ ],
35
+ },
36
+ },
37
+ ],
38
+ }
@@ -0,0 +1,7 @@
1
+ <section{% if args.section_class != blank %} class="{{ args.section_class }}"{% endif %} data-omega-section="verts/unit">
2
+ <div class="omega-vert-unit" data-omega-vert="{{ args.type }}"
3
+ {%- if args.size != blank %} data-omega-vert-size="{{ args.size }}"{% endif %}
4
+ {%- if args.vert_id != blank %} data-omega-vert-id="{{ args.vert_id }}"{% endif %}
5
+ {%- if args.tags != blank %} data-omega-vert-tags="{{ args.tags | join: ',' }}"{% endif %}
6
+ data-omega-bind="@hide auth.resolved.active"></div>
7
+ </section>
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Vert unit behavior — hands the inner host to the shared client verts module,
3
+ * which owns the WHOLE lifecycle: lazy arming near the viewport, then the
4
+ * ladder — AdSense when configured
5
+ * (script-load failure IS the adblock detector) → the in-house/company
6
+ * fallback lane (sandboxed iframe, origin-validated postMessage, host-owned
7
+ * rotation + staleness recovery) → the built-in OMEGA promo (a unit never
8
+ * renders empty). One implementation
9
+ * across web/desktop/extension (the data-omega-vert vocabulary). Paying users
10
+ * never see the unit: the host carries the standard
11
+ * `@hide auth.resolved.active` binding.
12
+ */
13
+ import omega from '@omega.js/client';
14
+
15
+ export default (el) => {
16
+ const $host = el.querySelector('.omega-vert-unit');
17
+ if (!$host) {
18
+ return;
19
+ }
20
+
21
+ omega.verts().mount($host);
22
+ };
@@ -0,0 +1,24 @@
1
+ {
2
+ description: 'Vert unit — the fallback-ladder vert band (docs/web/ads-system.md). Its section.js arms lazily near the viewport and drives the shared client verts module: AdSense when configured (script-load failure IS the adblock detector), the in-house/company inventory as the fallback lane (sandboxed iframe, origin-validated postMessage, host-owned rotation + staleness recovery), and the built-in OMEGA promo as the terminal lane so a unit never renders empty. Hidden for paying users via the standard auth binding. Without advertising config every unit lands on the promo — key presence enables the paid lanes.',
3
+
4
+ args: {
5
+ type: { type: 'string', description: "Unit type: 'display' | 'in-article' | 'in-feed' | 'multiplex' (AdSense lanes) | 'house' (straight to the in-house inventory)" },
6
+ size: { type: 'string', description: "Max-height preset — banner (150) | leaderboard (90) | rectangle (250) | large-rectangle (600) | skyscraper (600) — or a raw px value" },
7
+ vert_id: { type: 'string', description: 'Pin a specific house vert (served only if eligible)' },
8
+ tags: { type: 'array', description: "Contextual-targeting tags override (defaults to the brand's advertising.tags)" },
9
+ section_class: 'string',
10
+ },
11
+
12
+ // Mechanical knobs only — the unit has no copy to keep neutral
13
+ defaults: {
14
+ type: 'display',
15
+ size: 'rectangle',
16
+ },
17
+
18
+ demo: [
19
+ {
20
+ label: 'House unit',
21
+ args: { type: 'house', size: 'rectangle' },
22
+ },
23
+ ],
24
+ }