@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,30 @@
1
+ {
2
+ description: 'The price card feature bullets — one green check per feature, the catalog\'s value ahead of its name, and the hover explanation a feature `definition` earns (dotted underline + tooltip). A COMPONENT because three surfaces render the same list: /pricing\'s plan cards, its one-time cards, and the homepage plan band (`marketing/pricing-cards`) — one home, so the hover surface can never exist on one and not the other (#539). The caller owns everything around the list, including the tier-note line above it — which reads `and:` on every surface (Ian 2026-08-24).',
3
+
4
+ args: {
5
+ features: 'array', // composed feature view-models — resolved.pricing plan/product `features`, never hand-authored
6
+ },
7
+
8
+ defaults: {
9
+ // No feature defaults, ever: a feature a brand does not sell is fiction,
10
+ // and the catalog is the one source (C2). An empty list renders nothing.
11
+ features: [],
12
+ },
13
+
14
+ // Showcase variants (spec §9): the list is catalog-driven, so the demo
15
+ // bridges feature view-models the way the pricing composer emits them.
16
+ demo: [
17
+ {
18
+ label: 'With a definition',
19
+ stage_class: 'omega-price-card',
20
+ args: {
21
+ features: [
22
+ { id: 'requests', name: 'Requests', value: 10000, definition: 'API requests per month.' },
23
+ { id: 'seats', name: 'Seats', value: 10 },
24
+ { id: 'projects', name: 'Projects', value: 'Unlimited' },
25
+ { id: 'support', name: 'Priority support', value: true },
26
+ ],
27
+ },
28
+ },
29
+ ],
30
+ }
@@ -0,0 +1,30 @@
1
+ {% comment %}
2
+ `orbit` — the framework's REFERENCE hero animation (#441): what a brand's own
3
+ `src/_hero/<name>/` folder looks like, and the proof that the slot's three
4
+ lanes (markup, style.scss, script.js) all land.
5
+
6
+ A product card at the centre with four satellites tracking around it: the
7
+ "one config, every surface" shape, in the theme's own tokens (no colors, no
8
+ fonts, no sizes of its own — style.scss reads `--omega-*` like every other
9
+ core surface, so it re-inks with the brand).
10
+
11
+ Context-free like a section: the markup renders in an empty scope, so
12
+ `omega_*` tags work and no page data leaks in. The wrapper the tag emits
13
+ carries `data-omega-hero="orbit"`, which is what boots script.js.
14
+
15
+ Reduced motion is style.scss's branch: the ring parks and every satellite
16
+ renders at its final position — a still diagram, never a blank box.
17
+ {% endcomment %}
18
+ <div class="omega-orbit" aria-hidden="true">
19
+ <div class="omega-orbit__ring">
20
+ <span class="omega-orbit__satellite" style="--omega-orbit-index: 0;"><i class="fa-solid fa-globe"></i></span>
21
+ <span class="omega-orbit__satellite" style="--omega-orbit-index: 1;"><i class="fa-solid fa-server"></i></span>
22
+ <span class="omega-orbit__satellite" style="--omega-orbit-index: 2;"><i class="fa-solid fa-desktop"></i></span>
23
+ <span class="omega-orbit__satellite" style="--omega-orbit-index: 3;"><i class="fa-solid fa-puzzle-piece"></i></span>
24
+ </div>
25
+
26
+ <div class="omega-orbit__core">
27
+ <span class="omega-orbit__pulse"></span>
28
+ <i class="fa-solid fa-cube"></i>
29
+ </div>
30
+ </div>
@@ -0,0 +1,33 @@
1
+ /**
2
+ * `orbit` — the reference hero animation's behavior (#441).
3
+ *
4
+ * The animation itself is pure CSS and needs no JS at all; this is the slot's
5
+ * third lane doing its ONE honest job: an offscreen orbit is CPU spent on
6
+ * nothing, so the loops park when the piece scrolls out of view and resume when
7
+ * it comes back. The §7 presence init calls this once per rendered instance
8
+ * with the wrapper element (`data-omega-hero="orbit"`), exactly like a
9
+ * section.js.
10
+ *
11
+ * No observer (an old browser, a headless render) leaves the CSS running, which
12
+ * is the state it ships in.
13
+ */
14
+ export default (el) => {
15
+ if (typeof IntersectionObserver !== 'function') {
16
+ return;
17
+ }
18
+
19
+ const $animated = el.querySelectorAll('.omega-orbit__ring, .omega-orbit__satellite, .omega-orbit__pulse');
20
+
21
+ if (!$animated.length) {
22
+ return;
23
+ }
24
+
25
+ const observer = new IntersectionObserver((entries) => {
26
+ entries.forEach((entry) => {
27
+ const state = entry.isIntersecting ? 'running' : 'paused';
28
+ $animated.forEach(($node) => { $node.style.animationPlayState = state; });
29
+ });
30
+ }, { threshold: 0 });
31
+
32
+ observer.observe(el);
33
+ };
@@ -0,0 +1,133 @@
1
+ // `orbit` — the reference hero animation's sheet (#441, the §7 omega:sections
2
+ // lane picks it up like any section.scss).
3
+ //
4
+ // Token-only: every colour, shadow, radius and easing comes off the `--omega-*`
5
+ // design system, so the visual re-inks with the brand instead of carrying a
6
+ // palette of its own. Sizes are `em` off the block's own font-size, so a
7
+ // consumer scales the whole thing with one declaration.
8
+ //
9
+ // The motion is TWO counter-rotations: the ring turns, each satellite turns
10
+ // back by the same amount, so the icons stay upright while they travel. Under
11
+ // `prefers-reduced-motion: reduce` both park and the piece reads as a still
12
+ // diagram — the accessibility contract in docs/shared/theming.md.
13
+
14
+ .omega-orbit {
15
+ --omega-orbit-size: 18em;
16
+ --omega-orbit-duration: 26s;
17
+
18
+ position: relative;
19
+ display: grid;
20
+ place-items: center;
21
+ width: min(var(--omega-orbit-size), 100%);
22
+ aspect-ratio: 1;
23
+ margin-inline: auto;
24
+ font-size: 1rem;
25
+ }
26
+
27
+ .omega-orbit__ring {
28
+ position: absolute;
29
+ inset: 0;
30
+ border: 1px dashed var(--omega-line);
31
+ border-radius: 50%;
32
+ animation: omega-orbit-spin var(--omega-orbit-duration) linear infinite;
33
+ }
34
+
35
+ .omega-orbit__satellite {
36
+ position: absolute;
37
+ top: 50%;
38
+ left: 50%;
39
+ display: grid;
40
+ place-items: center;
41
+ width: 3em;
42
+ height: 3em;
43
+ margin: -1.5em 0 0 -1.5em;
44
+ color: var(--omega-accent);
45
+ background: var(--omega-surface);
46
+ border: 1px solid var(--omega-line);
47
+ border-radius: 50%;
48
+ box-shadow: var(--omega-shadow-1);
49
+ // Out to the rim at this satellite's share of the circle, then back upright
50
+ // by whatever the ring has turned.
51
+ transform:
52
+ rotate(calc(90deg * var(--omega-orbit-index)))
53
+ translateY(calc(var(--omega-orbit-size) / -2))
54
+ rotate(calc(-90deg * var(--omega-orbit-index)));
55
+ animation: omega-orbit-counter var(--omega-orbit-duration) linear infinite;
56
+ }
57
+
58
+ .omega-orbit__core {
59
+ position: relative;
60
+ display: grid;
61
+ place-items: center;
62
+ width: 6em;
63
+ height: 6em;
64
+ font-size: 1.6em;
65
+ color: var(--omega-accent-ink);
66
+ background: var(--omega-accent);
67
+ border-radius: var(--omega-radius-xl);
68
+ box-shadow: var(--omega-shadow-2);
69
+ }
70
+
71
+ // The core's breathing halo — a ring that grows and fades, never a fill, so
72
+ // nothing behind the card shifts.
73
+ .omega-orbit__pulse {
74
+ position: absolute;
75
+ inset: 0;
76
+ border: 1px solid var(--omega-accent);
77
+ border-radius: inherit;
78
+ animation: omega-orbit-pulse 3.2s var(--omega-ease) infinite;
79
+ }
80
+
81
+ @keyframes omega-orbit-spin {
82
+ to {
83
+ transform: rotate(360deg);
84
+ }
85
+ }
86
+
87
+ // The counter-turn: the same rotation, backwards, composed after the satellite's
88
+ // own placement so the icon stays the right way up all the way round.
89
+ @keyframes omega-orbit-counter {
90
+ from {
91
+ transform:
92
+ rotate(calc(90deg * var(--omega-orbit-index)))
93
+ translateY(calc(var(--omega-orbit-size) / -2))
94
+ rotate(calc(-90deg * var(--omega-orbit-index)));
95
+ }
96
+
97
+ to {
98
+ transform:
99
+ rotate(calc(90deg * var(--omega-orbit-index)))
100
+ translateY(calc(var(--omega-orbit-size) / -2))
101
+ rotate(calc(-90deg * var(--omega-orbit-index) - 360deg));
102
+ }
103
+ }
104
+
105
+ @keyframes omega-orbit-pulse {
106
+ from {
107
+ opacity: 0.55;
108
+ transform: scale(1);
109
+ }
110
+
111
+ to {
112
+ opacity: 0;
113
+ transform: scale(1.35);
114
+ }
115
+ }
116
+
117
+ // Reduced motion: everything parks at its final state. The satellites keep the
118
+ // placement transform from the base rule (the animations are what is dropped),
119
+ // so the piece still reads as the diagram it is.
120
+ @media (prefers-reduced-motion: reduce) {
121
+ .omega-orbit__ring,
122
+ .omega-orbit__satellite {
123
+ animation: none;
124
+ }
125
+
126
+ // The halo's own park carries its resting frame too — dropping the animation
127
+ // alone would leave it at the keyframe-less default (fully opaque, unscaled),
128
+ // which is a heavier ring than the loop ever draws.
129
+ .omega-orbit__pulse {
130
+ opacity: 0.55;
131
+ animation: none;
132
+ }
133
+ }
@@ -0,0 +1,3 @@
1
+ {% comment %} Section data: json-in-_includes (a consumer src/_includes/admin/sections/sidebar.json overrides the packaged one); markup is the shared app-sidebar {% endcomment %}
2
+ {% assign data = site.data._includes.admin.sections.sidebar %}
3
+ {% include global/sections/app-sidebar.html %}
@@ -0,0 +1,3 @@
1
+ {% comment %} Section data: json-in-_includes (a consumer src/_includes/admin/sections/topbar.json overrides the packaged one); markup is the shared app-topbar {% endcomment %}
2
+ {% assign data = site.data._includes.admin.sections.topbar %}
3
+ {% include global/sections/app-topbar.html %}
@@ -0,0 +1,3 @@
1
+ {% comment %} Section data: json-in-_includes (a consumer src/_includes/backend/sections/sidebar.json overrides the packaged one); markup is the shared app-sidebar {% endcomment %}
2
+ {% assign data = site.data._includes.backend.sections.sidebar %}
3
+ {% include global/sections/app-sidebar.html %}
@@ -0,0 +1,3 @@
1
+ {% comment %} Section data: json-in-_includes (a consumer src/_includes/backend/sections/topbar.json overrides the packaged one); markup is the shared app-topbar {% endcomment %}
2
+ {% assign data = site.data._includes.backend.sections.topbar %}
3
+ {% include global/sections/app-topbar.html %}
@@ -0,0 +1,49 @@
1
+ {% comment %}
2
+ One connection card on the account page — the row the connections section's
3
+ JS drives (`connection-<id>` is the element it looks for, and its absence is
4
+ what makes a configured provider render the unsupported warning instead).
5
+ Params: id, name, logo, first (the top card wears no hairline).
6
+
7
+ `logo` takes one of two shapes ([#793](https://github.com/Omega-JS-Stack/omega/issues/793)):
8
+ the NAME of a mark this package ships (`core/logos/brandmarks/original/<name>.svg`),
9
+ drawn inline by omega_logo — what the packaged defaults use — or a full URL,
10
+ drawn as an img. A value carrying a `/` or a `:` is a URL; anything else is a
11
+ mark name.
12
+ {% endcomment %}
13
+ <div id="connection-{{ include.id }}" class="{% unless include.first %}border-top{% endunless %} px-0 py-3 d-none">
14
+ <div class="d-flex flex-column flex-sm-row align-items-stretch align-items-sm-center justify-content-between gap-3">
15
+ <div class="d-flex align-items-center">
16
+ <div class="d-flex align-items-center justify-content-center me-3 flex-shrink-0 fa fa-3xl">
17
+ {% assign logoIsUrl = false %}
18
+ {% if include.logo contains '/' or include.logo contains ':' %}{% assign logoIsUrl = true %}{% endif %}
19
+ {% if logoIsUrl %}
20
+ <img src="{{ include.logo | omega_cachebreak }}" class="object-fit-contain" alt="{{ include.name }} Logo"/>
21
+ {% else %}
22
+ {% omega_logo include.logo %}
23
+ {% endif %}
24
+ </div>
25
+ <div>
26
+ <h6 class="mb-0">{{ include.name }}</h6>
27
+ <small class="text-muted d-block" id="{{ include.id }}-connection-description"></small>
28
+ </div>
29
+ </div>
30
+ <div class="text-start text-sm-end flex-shrink-0">
31
+ <div>
32
+ <form id="connection-form-{{ include.id }}" class="d-grid d-sm-inline-block" novalidate data-form-state="initializing" onsubmit="return false">
33
+ <input type="hidden" name="provider" value="{{ include.id }}">
34
+ <!-- Connect button -->
35
+ <button type="submit" class="btn btn-sm btn-adaptive" data-action="connect">
36
+ <i class="fa-solid fa-link fa-sm"></i>
37
+ <span class="button-text">Connect</span>
38
+ </button>
39
+ <!-- Disconnect button (hidden by default) -->
40
+ <button type="submit" class="btn btn-sm btn-outline-danger d-none" data-action="disconnect">
41
+ <i class="fa-solid fa-unlink fa-sm"></i>
42
+ <span class="button-text">Disconnect</span>
43
+ </button>
44
+ </form>
45
+ <small class="text-muted d-block mt-1" id="{{ include.id }}-connection-status"></small>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
@@ -0,0 +1,54 @@
1
+ {% comment %}
2
+ Base post card: the shared blog grid unit (index, related posts,
3
+ category and tag pages all render the SAME card). UNBOXED (bronn pattern):
4
+ media panel, mono CATEGORY · DATE line, serif title, clamped excerpt.
5
+ Usage: {% include frontend/components/post-card.html post=post %}
6
+
7
+ Media contract: post.image === false → designed no-media panel (serif
8
+ monogram on dotgrid); post.image = "/path.jpg" → that image; absent →
9
+ the legacy /assets/images/blog/post-<id>/ convention via omega_post.
10
+ {% endcomment %}
11
+ {% assign _p = include.post %}
12
+ <article class="omega-post-card">
13
+ <a href="{{ _p.url }}" class="omega-post-card__media{% if _p.post.image == false %} omega-post-card__media--pattern omega-dotgrid{% endif %}">
14
+ {%- if _p.post.image == false -%}
15
+ {%- assign _mono_source = _p.post.categories[0] | default: _p.post.title -%}
16
+ <span class="omega-post-card__monogram" aria-hidden="true">{{ _mono_source | slice: 0 | upcase }}</span>
17
+ {%- elsif _p.post.image -%}
18
+ <img src="{{ site.omega.placeholder.src }}" data-lazy="@src {{ _p.post.image }}" alt="{{ _p.post.title }}">
19
+ {%- else -%}
20
+ {%- omega_post _p.post.id, "image-tag", class="" -%}
21
+ {%- endif -%}
22
+ </a>
23
+
24
+ <div class="omega-post-card__body">
25
+ <div class="omega-post-card__eyebrow">
26
+ {% if _p.post.categories[0] %}
27
+ <a href="/blog/categories/{{ _p.post.categories[0] | slugify }}">{{ _p.post.categories[0] | omega_title_case }}</a>
28
+ <span>·</span>
29
+ {% endif %}
30
+ <time datetime="{{ _p.date | date_to_xmlschema }}">{{ _p.date | date: "%b %d, %Y" }}</time>
31
+
32
+ {% comment %} Generated-content tell (#208): sample content renders on the
33
+ real posts lane, so every listing row of a `generated` document says so.
34
+ Keyed off the frontmatter flag ALONE — no environment check, because
35
+ samples never inject into a production build. It rides the meta line
36
+ (#322): a chip beside the date, above the title, never a row of its
37
+ own. {% endcomment %}
38
+ {% if _p.generated %}<span class="omega-chip omega-generated-badge">TEST</span>{% endif %}
39
+ </div>
40
+
41
+ <h3 class="omega-post-card__title">
42
+ <a href="{{ _p.url }}">{{ _p.post.title }}</a>
43
+ </h3>
44
+
45
+ {%- capture _excerpt -%}{{ _p.post.description }}{%- endcapture -%}
46
+ {%- assign _excerpt = _excerpt | strip -%}
47
+ {%- if _excerpt == '' -%}
48
+ {%- capture _excerpt -%}{{ _p.content | strip_html | strip_newlines | truncate: 150 }}{%- endcapture -%}
49
+ {%- endif -%}
50
+ {% if _excerpt != '' %}
51
+ <p class="omega-post-card__excerpt">{{ _excerpt }}</p>
52
+ {% endif %}
53
+ </div>
54
+ </article>
@@ -0,0 +1,42 @@
1
+ {% comment %}
2
+ The account page's connection cards, from ONE source: the brand's `connections`
3
+ config ([#793](https://github.com/Omega-JS-Stack/omega/issues/793)).
4
+
5
+ Every entry carrying a `name` and a `logo` draws a card. The framework's config
6
+ DEFAULTS carry both (plus a description) for the five providers @omega.js/backend
7
+ ships a module for, so a brand that writes `google: { enabled: true }` gets a
8
+ drawn card and can still overwrite any field. The layout's old `connections:`
9
+ frontmatter rows are gone: they shadowed the config, and their CDN logos 404.
10
+
11
+ A configured provider with no name+logo gets the connections section's
12
+ "unsupported connection" card at runtime, which says what is missing.
13
+ Visibility is the JS's alone: every card renders hidden and the section shows
14
+ the enabled ones.
15
+ {% endcomment %}
16
+ <div id="connections-list">
17
+ <!-- Loading state -->
18
+ <div id="connections-loading" class="text-center py-3">
19
+ <div class="spinner-border spinner-border-sm text-primary" role="status">
20
+ <span class="visually-hidden">Loading connections...</span>
21
+ </div>
22
+ </div>
23
+
24
+ <!-- No connections message (hidden by default) -->
25
+ <div id="connections-empty" class="text-center py-4 text-muted d-none">
26
+ <p>No connections are available right now.</p>
27
+ </div>
28
+
29
+ {% assign connectionCardDrawn = false %}
30
+ {% for entry in resolved.config.connections %}
31
+ {% assign providerId = entry[0] %}
32
+ {% assign provider = entry[1] %}
33
+ {% if provider.name and provider.logo %}
34
+ {% assign isFirstCard = false %}
35
+ {% unless connectionCardDrawn %}
36
+ {% assign isFirstCard = true %}
37
+ {% assign connectionCardDrawn = true %}
38
+ {% endunless %}
39
+ {% include frontend/components/connection-card.html id=providerId name=provider.name logo=provider.logo first=isFirstCard %}
40
+ {% endif %}
41
+ {% endfor %}
42
+ </div>
@@ -0,0 +1,11 @@
1
+ {% comment %}
2
+ Account section header — the admin page-header anatomy (icon chip + page
3
+ title + hairline) stamped INSIDE each hash-driven section, so the visible
4
+ page title tracks the active section with zero JS. Params: title, icon.
5
+ {% endcomment %}
6
+ <header class="page-header pb-3 mb-4 hairline-bottom">
7
+ <h2 class="page-title mb-0 d-flex align-items-center">
8
+ <span class="omega-icon-chip omega-icon-chip--neutral me-2"><i class="fa-solid fa-{{ include.icon }} fa-sm"></i></span>
9
+ {{ include.title }}
10
+ </h2>
11
+ </header>
@@ -0,0 +1,154 @@
1
+ {% comment %}
2
+ Shared base footer, omega-* markup: brand block + link columns on one grid,
3
+ then ONE hairline base row where every control (legal links, language,
4
+ appearance) shares the same quiet 1.75rem scale. Section data:
5
+ json-in-_includes (a consumer src/_includes/frontend/sections/footer.json
6
+ overrides the packaged one) — same binding pattern as admin/sections/sidebar.
7
+ {% endcomment %}
8
+ {% assign data = site.data._includes.frontend.sections.footer %}
9
+ <footer class="omega-footer mt-auto" role="contentinfo" aria-label="Site footer">
10
+ <div class="container">
11
+ <div class="omega-footer__grid">
12
+ <!-- Brand block: lockup, one-liner, socials -->
13
+ <div class="omega-footer__brand">
14
+ {% capture logo_href %}{% assign temp_href = data.logo.href | default: resolved.config.brand.href | default: '/' %}{% if temp_href and temp_href != '' and temp_href != 'null' %}{{ temp_href }}{% else %}javascript:void(0){% endif %}{% endcapture %}
15
+ {% comment %} The VISIBLE logo prefers the bridged vector when the mint produced one (#467) —
16
+ `brand.images.brandmark` stays the raster OG/social and payment sync need, and an
17
+ authored `data.logo.src` still outranks both. {% endcomment %}
18
+ {% capture logo_src %}{% if data.logo.src %}{{ data.logo.src }}{% else %}{{ assetManifest.brandmarkSvg | default: resolved.config.brand.images.brandmark | default: null }}{% endif %}{% endcapture %}
19
+ {% capture logo_text %}{{ data.logo.text | default: resolved.config.brand.name | omega_liquify }}{% endcapture %}
20
+ {% capture logo_description %}{{ data.logo.description | default: resolved.config.brand.description | omega_liquify }}{% endcapture %}
21
+ {% assign logo_description = logo_description | strip %}
22
+ {% comment %} A data value that LIQUIFIES to empty (e.g. a descriptor binding whose key the brand never set) still needs the brand fallback — `default:` only sees the raw string {% endcomment %}
23
+ {% if logo_description == '' or logo_description == 'null' %}{% assign logo_description = resolved.config.brand.description %}{% endif %}
24
+ {% capture logo_class %}{{ data.logo.class }}{% endcapture %}
25
+
26
+ <a class="omega-nav__brand" href="{{ logo_href }}">
27
+ {% if logo_src and logo_src != '' and logo_src != 'null' %}
28
+ <img src="{{ site.omega.placeholder.src }}" data-lazy="@src {{ logo_src }}" alt="{{ logo_text }} Logo" class="{{ logo_class }}" style="height: 1.5rem; width: auto;"/>
29
+ {% endif %}
30
+ {% if logo_text and logo_text != '' and logo_text != 'null' %}
31
+ <span>{{ logo_text }}</span>
32
+ {% endif %}
33
+ </a>
34
+ {% if logo_description and logo_description != '' and logo_description != 'null' %}
35
+ <p class="omega-footer__desc">{{ logo_description }}</p>
36
+ {% endif %}
37
+
38
+ {% comment %} The brand's `socials` config block IS the list (#462) — never a
39
+ default platform set. An entry omega_social can't resolve a profile URL for
40
+ (blank handle, redirect-only, unknown platform) prints nothing, and a brand
41
+ that declares none keeps the whole row out of the markup. {% endcomment %}
42
+ {% if data.socials.enabled %}
43
+ {% capture social_links %}
44
+ {% for social in resolved.config.socials %}
45
+ {% assign platform = social[0] %}
46
+ {% capture social_href %}{% omega_social platform %}{% endcapture %}
47
+ {% iftruthy social_href %}
48
+ <a href="{{ social_href }}" class="omega-footer__social-link" aria-label="{{ platform | capitalize }}">
49
+ <i class="fa-solid fa-{{ platform }} fa-sm"></i>
50
+ </a>
51
+ {% endiftruthy %}
52
+ {% endfor %}
53
+ {% endcapture %}
54
+ {% assign social_links = social_links | strip %}
55
+ {% if social_links != '' %}
56
+ <div class="omega-footer__social" aria-label="Social links">
57
+ {{ social_links }}
58
+ </div>
59
+ {% endif %}
60
+ {% endif %}
61
+ </div>
62
+
63
+ <!-- Link columns -->
64
+ {% if data.links and data.links.size > 0 %}
65
+ <div class="omega-footer__cols">
66
+ {% for link_group in data.links %}
67
+ {% capture group_label %}{{ link_group.label | default: 'Links' }}{% endcapture %}
68
+ <nav class="omega-footer__col" aria-label="{{ group_label }}">
69
+ <div class="omega-footer__head">{{ group_label }}</div>
70
+ <ul class="list-unstyled mb-0">
71
+ {% for link in link_group.links %}
72
+ {% capture link_classes %}omega-footer__link{% if link.classes %} {{ link.classes | join: ' ' }}{% endif %}{% endcapture %}
73
+ {% capture link_attributes %}{% if link.attributes %}{% for attr in link.attributes %} {{ attr[0] }}="{{ attr[1] }}"{% endfor %}{% endif %}{% endcapture %}
74
+ {% capture link_icon %}{% if link.icon %}{{ resolved.config.icons[link.icon] }}{% endif %}{% endcapture %}
75
+ {% capture link_href %}{% if link.href and link.href != '' and link.href != 'null' %}{{ link.href }}{% else %}javascript:void(0){% endif %}{% endcapture %}
76
+ <li>
77
+ <a class="{{ link_classes }}" href="{{ link_href }}"{{ link_attributes }}>
78
+ {{ link_icon }}
79
+ {{ link.label }}
80
+ </a>
81
+ </li>
82
+ {% endfor %}
83
+ </ul>
84
+ </nav>
85
+ {% endfor %}
86
+ </div>
87
+ {% endif %}
88
+ </div>
89
+
90
+ <!-- Base row: copyright left, matched-scale utilities right -->
91
+ <div class="omega-footer__base">
92
+ {% if data.copyright.enabled %}
93
+ <span class="omega-footer__copyright">
94
+ {% if data.copyright.text %}
95
+ {{ data.copyright.text | omega_liquify }}
96
+ {% else %}
97
+ {% comment %} A sub-brand credits its parent (brand.company), linked
98
+ when company.url names one — no parent configured (or a company that
99
+ IS the brand) keeps the plain line {% endcomment %}
100
+ {% assign parent_company = resolved.config.brand.company %}
101
+ {% if parent_company and parent_company != '' and parent_company != 'null' and parent_company != resolved.config.brand.name %}
102
+ {% if resolved.config.company.url %}
103
+ {% capture parent_mark %}<a href="{{ resolved.config.company.url }}">{{ parent_company }}</a>{% endcapture %}
104
+ {% else %}
105
+ {% capture parent_mark %}{{ parent_company }}{% endcapture %}
106
+ {% endif %}
107
+ © {{ site.omega.date.year }} {{ resolved.config.brand.name }} by {{ parent_mark }}. All rights reserved.
108
+ {% else %}
109
+ © {{ site.omega.date.year }} {{ resolved.config.brand.name }}. All rights reserved.
110
+ {% endif %}
111
+ {% endif %}
112
+ </span>
113
+ {% endif %}
114
+
115
+ {% comment %} Framework attribution — never brand config: the build's own license verdict (#320) is the only switch {% endcomment %}
116
+ {% if site.license.attribution == 'shown' %}
117
+ <span class="omega-footer__powered">
118
+ <i class="fa-solid fa-bolt fa-sm"></i>
119
+ <span>Powered by <a href="https://omegajs.dev" target="_blank" rel="noopener">omegajs.dev</a></span>
120
+ </span>
121
+ {% endif %}
122
+
123
+ <div class="omega-footer__tools">
124
+ {% if data.legal.enabled %}
125
+ <nav class="omega-footer__legal" aria-label="Legal">
126
+ <a href="/terms">Terms</a>
127
+ <a href="/privacy">Privacy</a>
128
+ <a href="/cookies">Cookies</a>
129
+ </nav>
130
+ {% endif %}
131
+
132
+ <!-- Language (dropup) — the rows render CLIENT-SIDE from the page's own
133
+ hreflang alternates (core/js/core/language-switcher.js). Those tags
134
+ are stitched post-translation and name only the languages actually
135
+ PRODUCED for this page, so the menu can never offer a copy that was
136
+ never written. Fewer than two languages → this block stays hidden. -->
137
+ <div class="dropup omega-language-dropdown" data-omega-language-switcher hidden>
138
+ <button class="omega-footer__pill dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
139
+ <i class="fa-solid fa-language fa-sm"></i>
140
+ <span>Language</span>
141
+ </button>
142
+ <ul class="dropdown-menu" data-omega-language-list></ul>
143
+ </div>
144
+
145
+ <!-- Appearance (segmented; core appearance.js stamps .active/aria-pressed on data-appearance-set) -->
146
+ <div class="omega-footer__seg" role="group" aria-label="Appearance" data-omega-segmented>
147
+ <button type="button" data-appearance-set="light" aria-label="Light theme" aria-pressed="false"><i class="fa-solid fa-sun fa-sm"></i></button>
148
+ <button type="button" data-appearance-set="dark" aria-label="Dark theme" aria-pressed="false"><i class="fa-solid fa-moon fa-sm"></i></button>
149
+ <button type="button" data-appearance-set="system" aria-label="System theme" aria-pressed="false"><i class="fa-solid fa-circle-half-stroke fa-sm"></i></button>
150
+ </div>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </footer>