@omega.js/web 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 (1162) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +640 -0
  3. package/bin/omega +2 -0
  4. package/bin/omega-web +2 -0
  5. package/bin/omg +2 -0
  6. package/core/_includes/admin/sections/sidebar.json +100 -0
  7. package/core/_includes/admin/sections/topbar.json +11 -0
  8. package/core/_includes/backend/sections/sidebar.json +39 -0
  9. package/core/_includes/backend/sections/topbar.json +16 -0
  10. package/core/_includes/core/body.html +102 -0
  11. package/core/_includes/core/foot.html +536 -0
  12. package/core/_includes/core/head.html +423 -0
  13. package/core/_includes/core/pricing/price-per-unit.html +33 -0
  14. package/core/_includes/core/showcase/entry-body.html +94 -0
  15. package/core/_includes/core/showcase/index-body.html +43 -0
  16. package/core/_includes/core/showcase/nav.html +60 -0
  17. package/core/_includes/frontend/sections/footer.json +74 -0
  18. package/core/_includes/frontend/sections/nav.json +70 -0
  19. package/core/_includes/global/sections/account.json +31 -0
  20. package/core/_includes/modules/engagement/giscus.html +26 -0
  21. package/core/_layouts/blueprint/404.html +10 -0
  22. package/core/_layouts/blueprint/about.html +10 -0
  23. package/core/_layouts/blueprint/account/index.html +11 -0
  24. package/core/_layouts/blueprint/admin/calendar/index.html +590 -0
  25. package/core/_layouts/blueprint/admin/dashboard/index.html +301 -0
  26. package/core/_layouts/blueprint/admin/firebase/index.html +214 -0
  27. package/core/_layouts/blueprint/admin/posts/editor.html +157 -0
  28. package/core/_layouts/blueprint/admin/posts/index.html +126 -0
  29. package/core/_layouts/blueprint/admin/stackblitz/index.html +30 -0
  30. package/core/_layouts/blueprint/admin/studio/index.html +85 -0
  31. package/core/_layouts/blueprint/admin/users/index.html +272 -0
  32. package/core/_layouts/blueprint/admin/users/new.html +82 -0
  33. package/core/_layouts/blueprint/admin/verts/index.html +204 -0
  34. package/core/_layouts/blueprint/alternatives/alternative.html +15 -0
  35. package/core/_layouts/blueprint/alternatives/index.html +10 -0
  36. package/core/_layouts/blueprint/app.html +10 -0
  37. package/core/_layouts/blueprint/auth/reset.html +19 -0
  38. package/core/_layouts/blueprint/auth/signin.html +19 -0
  39. package/core/_layouts/blueprint/auth/signup.html +19 -0
  40. package/core/_layouts/blueprint/auth/token.html +19 -0
  41. package/core/_layouts/blueprint/blog/categories/category.html +8 -0
  42. package/core/_layouts/blueprint/blog/categories/index.html +11 -0
  43. package/core/_layouts/blueprint/blog/index.html +10 -0
  44. package/core/_layouts/blueprint/blog/post.html +5 -0
  45. package/core/_layouts/blueprint/blog/tags/index.html +11 -0
  46. package/core/_layouts/blueprint/blog/tags/tag.html +8 -0
  47. package/core/_layouts/blueprint/careers.md +13 -0
  48. package/core/_layouts/blueprint/collection/category.html +9 -0
  49. package/core/_layouts/blueprint/collection/document.html +9 -0
  50. package/core/_layouts/blueprint/collection/index.html +9 -0
  51. package/core/_layouts/blueprint/connections/callback.html +11 -0
  52. package/core/_layouts/blueprint/contact.html +14 -0
  53. package/core/_layouts/blueprint/dashboard/index.html +10 -0
  54. package/core/_layouts/blueprint/download.html +20 -0
  55. package/core/_layouts/blueprint/extension/index.html +14 -0
  56. package/core/_layouts/blueprint/extension/installed.html +11 -0
  57. package/core/_layouts/blueprint/feedback.html +10 -0
  58. package/core/_layouts/blueprint/index.html +16 -0
  59. package/core/_layouts/blueprint/legal/cookies.md +57 -0
  60. package/core/_layouts/blueprint/legal/privacy.md +109 -0
  61. package/core/_layouts/blueprint/legal/terms.md +155 -0
  62. package/core/_layouts/blueprint/payment/checkout.html +15 -0
  63. package/core/_layouts/blueprint/payment/confirmation.html +14 -0
  64. package/core/_layouts/blueprint/portal/email-preferences.html +15 -0
  65. package/core/_layouts/blueprint/pricing.html +20 -0
  66. package/core/_layouts/blueprint/status.html +10 -0
  67. package/core/_layouts/blueprint/team/index.html +10 -0
  68. package/core/_layouts/blueprint/team/member.html +5 -0
  69. package/core/_layouts/blueprint/updates/index.html +10 -0
  70. package/core/_layouts/blueprint/updates/update.html +10 -0
  71. package/core/_layouts/core/root.html +45 -0
  72. package/core/_layouts/modules/utilities/redirect.html +129 -0
  73. package/core/css/_studio.scss +237 -0
  74. package/core/css/components/_index.scss +146 -0
  75. package/core/css/core/_.scss +0 -0
  76. package/core/css/core/_alert.scss +87 -0
  77. package/core/css/core/_animations.scss +343 -0
  78. package/core/css/core/_bindings.scss +116 -0
  79. package/core/css/core/_blog-search.scss +57 -0
  80. package/core/css/core/_chatsy.scss +61 -0
  81. package/core/css/core/_consent.scss +424 -0
  82. package/core/css/core/_custom-font-awesome.scss +146 -0
  83. package/core/css/core/_exit-popup.scss +42 -0
  84. package/core/css/core/_generated-badge.scss +33 -0
  85. package/core/css/core/_initialize.scss +29 -0
  86. package/core/css/core/_lazy-loading.scss +104 -0
  87. package/core/css/core/_social-sharing.scss +41 -0
  88. package/core/css/core/_tones.scss +32 -0
  89. package/core/css/core/_utilities.scss +157 -0
  90. package/core/css/main.scss +54 -0
  91. package/core/css/motion/_index.scss +368 -0
  92. package/core/css/pages/404/index.scss +0 -0
  93. package/core/css/pages/admin/calendar/index.scss +692 -0
  94. package/core/css/pages/admin/firebase/index.scss +33 -0
  95. package/core/css/pages/admin/index.scss +9 -0
  96. package/core/css/pages/admin/users/index.scss +9 -0
  97. package/core/css/pages/admin/verts/index.scss +9 -0
  98. package/core/css/pages/alternatives/[alternative]/index.scss +0 -0
  99. package/core/css/pages/blog/[slug].scss +55 -0
  100. package/core/css/pages/dashboard/account/index.scss +242 -0
  101. package/core/css/pages/download/index.scss +480 -0
  102. package/core/css/pages/extension/installed/index.scss +317 -0
  103. package/core/css/pages/feedback/index.scss +31 -0
  104. package/core/css/pages/payment/confirmation/index.scss +14 -0
  105. package/core/css/pages/pricing/index.scss +0 -0
  106. package/core/css/pages/status/index.scss +162 -0
  107. package/core/css/pages/test/libraries/layers/index.scss +28 -0
  108. package/core/css/pages/updates/[update].scss +46 -0
  109. package/core/css/pages/updates/index.scss +13 -0
  110. package/core/css/shell/_index.scss +207 -0
  111. package/core/css/tokens/_index.scss +166 -0
  112. package/core/icons/flags/ar.svg +1 -0
  113. package/core/icons/flags/bd.svg +1 -0
  114. package/core/icons/flags/ca.svg +1 -0
  115. package/core/icons/flags/ch.svg +1 -0
  116. package/core/icons/flags/cn.svg +1 -0
  117. package/core/icons/flags/co.svg +1 -0
  118. package/core/icons/flags/cw.svg +1 -0
  119. package/core/icons/flags/cz.svg +1 -0
  120. package/core/icons/flags/de.svg +1 -0
  121. package/core/icons/flags/dk.svg +1 -0
  122. package/core/icons/flags/eg.svg +1 -0
  123. package/core/icons/flags/es.svg +1 -0
  124. package/core/icons/flags/fi.svg +1 -0
  125. package/core/icons/flags/fr.svg +1 -0
  126. package/core/icons/flags/gb.svg +1 -0
  127. package/core/icons/flags/gq.svg +1 -0
  128. package/core/icons/flags/gr.svg +1 -0
  129. package/core/icons/flags/gt.svg +1 -0
  130. package/core/icons/flags/hn.svg +1 -0
  131. package/core/icons/flags/id.svg +1 -0
  132. package/core/icons/flags/ie.svg +1 -0
  133. package/core/icons/flags/in.svg +1 -0
  134. package/core/icons/flags/ir.svg +1 -0
  135. package/core/icons/flags/it.svg +1 -0
  136. package/core/icons/flags/jp.svg +1 -0
  137. package/core/icons/flags/kp.svg +1 -0
  138. package/core/icons/flags/kr.svg +1 -0
  139. package/core/icons/flags/ly.svg +1 -0
  140. package/core/icons/flags/ma.svg +1 -0
  141. package/core/icons/flags/mu.svg +1 -0
  142. package/core/icons/flags/mx.svg +1 -0
  143. package/core/icons/flags/ng.svg +1 -0
  144. package/core/icons/flags/pa.svg +1 -0
  145. package/core/icons/flags/ph.svg +1 -0
  146. package/core/icons/flags/pk.svg +1 -0
  147. package/core/icons/flags/pt.svg +1 -0
  148. package/core/icons/flags/ru.svg +1 -0
  149. package/core/icons/flags/sa.svg +1 -0
  150. package/core/icons/flags/sd.svg +1 -0
  151. package/core/icons/flags/se.svg +1 -0
  152. package/core/icons/flags/th.svg +1 -0
  153. package/core/icons/flags/tm.svg +1 -0
  154. package/core/icons/flags/tr.svg +1 -0
  155. package/core/icons/flags/us.svg +1 -0
  156. package/core/icons/flags/uy.svg +1 -0
  157. package/core/icons/flags/vn.svg +1 -0
  158. package/core/icons/flags/za.svg +1 -0
  159. package/core/images/exit-popup/subscriber-1.jpg +0 -0
  160. package/core/images/exit-popup/subscriber-2.jpg +0 -0
  161. package/core/images/exit-popup/subscriber-3.jpg +0 -0
  162. package/core/images/exit-popup/subscriber-4.jpg +0 -0
  163. package/core/images/placeholder/photo-1.jpg +0 -0
  164. package/core/images/placeholder/photo-2.jpg +0 -0
  165. package/core/images/placeholder/photo-3.jpg +0 -0
  166. package/core/js/core/analytics-loader.js +253 -0
  167. package/core/js/core/app-shell.js +136 -0
  168. package/core/js/core/appearance.js +195 -0
  169. package/core/js/core/auth.js +457 -0
  170. package/core/js/core/complete.js +72 -0
  171. package/core/js/core/consent.js +384 -0
  172. package/core/js/core/dev-icon-audit.js +63 -0
  173. package/core/js/core/dev-palette.js +670 -0
  174. package/core/js/core/dev-sections.js +53 -0
  175. package/core/js/core/exit-popup.js +276 -0
  176. package/core/js/core/initialize.js +8 -0
  177. package/core/js/core/language-switcher.js +167 -0
  178. package/core/js/core/lazy-loading.js +479 -0
  179. package/core/js/core/motion.js +28 -0
  180. package/core/js/core/query-strings.js +146 -0
  181. package/core/js/core/service-worker.js +28 -0
  182. package/core/js/core/social-sharing.js +293 -0
  183. package/core/js/first-paint.js +35 -0
  184. package/core/js/layouts/modules/utilities/redirect.js +122 -0
  185. package/core/js/libs/admin-helpers.js +62 -0
  186. package/core/js/libs/alert-dismiss.js +35 -0
  187. package/core/js/libs/analytics.js +368 -0
  188. package/core/js/libs/auth/email.js +144 -0
  189. package/core/js/libs/auth/errors.js +119 -0
  190. package/core/js/libs/auth/forms.js +206 -0
  191. package/core/js/libs/auth/index.js +181 -0
  192. package/core/js/libs/auth/oauth.js +394 -0
  193. package/core/js/libs/auth/orphan.js +110 -0
  194. package/core/js/libs/auth/password-toggle.js +44 -0
  195. package/core/js/libs/auth/session-params.js +266 -0
  196. package/core/js/libs/auth/tracking.js +41 -0
  197. package/core/js/libs/charts.js +516 -0
  198. package/core/js/libs/consent-region.js +127 -0
  199. package/core/js/libs/dev.js +150 -0
  200. package/core/js/libs/graph.js +201 -0
  201. package/core/js/libs/initialize-tooltips.js +31 -0
  202. package/core/js/libs/logger.js +38 -0
  203. package/core/js/libs/omega-copy.js +89 -0
  204. package/core/js/libs/path-prefix.js +44 -0
  205. package/core/js/libs/payment-config.js +76 -0
  206. package/core/js/libs/recaptcha.js +94 -0
  207. package/core/js/libs/sale-name.js +295 -0
  208. package/core/js/libs/showcase-frames.js +37 -0
  209. package/core/js/libs/srcset.js +69 -0
  210. package/core/js/libs/tracking-consent.js +161 -0
  211. package/core/js/main.js +144 -0
  212. package/core/js/pages/404/index.js +57 -0
  213. package/core/js/pages/admin/calendar/calendar-core.js +701 -0
  214. package/core/js/pages/admin/calendar/calendar-events.js +853 -0
  215. package/core/js/pages/admin/calendar/calendar-renderer.js +807 -0
  216. package/core/js/pages/admin/calendar/campaign-preview.js +105 -0
  217. package/core/js/pages/admin/calendar/index.js +40 -0
  218. package/core/js/pages/admin/firebase/index.js +727 -0
  219. package/core/js/pages/admin/index.js +531 -0
  220. package/core/js/pages/admin/posts/editor/index.js +230 -0
  221. package/core/js/pages/admin/posts/index.js +237 -0
  222. package/core/js/pages/admin/studio/index.js +538 -0
  223. package/core/js/pages/admin/users/index.js +669 -0
  224. package/core/js/pages/admin/users/new/index.js +65 -0
  225. package/core/js/pages/admin/verts/index.js +407 -0
  226. package/core/js/pages/alternatives/[alternative]/index.js +17 -0
  227. package/core/js/pages/app/index.js +135 -0
  228. package/core/js/pages/blog/[slug].js +132 -0
  229. package/core/js/pages/blog/_search.mjs +108 -0
  230. package/core/js/pages/blog/index.js +193 -0
  231. package/core/js/pages/blog/page/[num]/index.js +7 -0
  232. package/core/js/pages/connections/callback/index.js +148 -0
  233. package/core/js/pages/contact/index.js +170 -0
  234. package/core/js/pages/cookies.js +2 -0
  235. package/core/js/pages/dashboard/account/index.js +366 -0
  236. package/core/js/pages/dashboard/account/modules/orders.js +82 -0
  237. package/core/js/pages/dashboard/account/sections/api-keys.js +149 -0
  238. package/core/js/pages/dashboard/account/sections/billing.js +1667 -0
  239. package/core/js/pages/dashboard/account/sections/connections.js +333 -0
  240. package/core/js/pages/dashboard/account/sections/data-request.js +225 -0
  241. package/core/js/pages/dashboard/account/sections/delete.js +80 -0
  242. package/core/js/pages/dashboard/account/sections/notifications.js +167 -0
  243. package/core/js/pages/dashboard/account/sections/orders.js +151 -0
  244. package/core/js/pages/dashboard/account/sections/profile.js +200 -0
  245. package/core/js/pages/dashboard/account/sections/referrals.js +217 -0
  246. package/core/js/pages/dashboard/account/sections/refund.js +253 -0
  247. package/core/js/pages/dashboard/account/sections/security.js +726 -0
  248. package/core/js/pages/dashboard/account/sections/team.js +247 -0
  249. package/core/js/pages/download/index.js +418 -0
  250. package/core/js/pages/extension/index.js +164 -0
  251. package/core/js/pages/extension/installed/index.js +135 -0
  252. package/core/js/pages/feedback/index.js +193 -0
  253. package/core/js/pages/legal/_document.js +91 -0
  254. package/core/js/pages/payment/checkout/index.js +420 -0
  255. package/core/js/pages/payment/checkout/modules/api.js +139 -0
  256. package/core/js/pages/payment/checkout/modules/dev-section.js +175 -0
  257. package/core/js/pages/payment/checkout/modules/discount.js +69 -0
  258. package/core/js/pages/payment/checkout/modules/pricing.js +73 -0
  259. package/core/js/pages/payment/checkout/modules/state.js +339 -0
  260. package/core/js/pages/payment/checkout/modules/tracking.js +54 -0
  261. package/core/js/pages/payment/confirmation/index.js +91 -0
  262. package/core/js/pages/payment/confirmation/modules/celebration.js +45 -0
  263. package/core/js/pages/payment/confirmation/modules/state.js +112 -0
  264. package/core/js/pages/payment/confirmation/modules/tracking.js +133 -0
  265. package/core/js/pages/payment/confirmation/modules/verify.js +142 -0
  266. package/core/js/pages/portal/email-preferences/index.js +183 -0
  267. package/core/js/pages/pricing/index.js +425 -0
  268. package/core/js/pages/privacy.js +2 -0
  269. package/core/js/pages/reset/index.js +12 -0
  270. package/core/js/pages/signin/index.js +22 -0
  271. package/core/js/pages/signup/index.js +23 -0
  272. package/core/js/pages/status/index.js +687 -0
  273. package/core/js/pages/terms.js +2 -0
  274. package/core/js/pages/test/components/[category]/[name]/index.js +26 -0
  275. package/core/js/pages/test/libraries/appearance/index.js +220 -0
  276. package/core/js/pages/test/libraries/form-manager/index.js +328 -0
  277. package/core/js/pages/test/libraries/layers/index.js +16 -0
  278. package/core/js/pages/test/libraries/verts/index.js +68 -0
  279. package/core/js/pages/test/sections/[category]/[name]/index.js +28 -0
  280. package/core/js/pages/test/styleguide/index.js +35 -0
  281. package/core/js/pages/token/index.js +203 -0
  282. package/core/logos/brandmarks/original/apple-app-store.svg +1 -0
  283. package/core/logos/brandmarks/original/apple.svg +6 -0
  284. package/core/logos/brandmarks/original/bitbucket.svg +14 -0
  285. package/core/logos/brandmarks/original/bitcoin.svg +1 -0
  286. package/core/logos/brandmarks/original/bluesky.svg +7 -0
  287. package/core/logos/brandmarks/original/bootstrap.svg +43 -0
  288. package/core/logos/brandmarks/original/brave.svg +1 -0
  289. package/core/logos/brandmarks/original/chrome.svg +1 -0
  290. package/core/logos/brandmarks/original/discord.svg +1 -0
  291. package/core/logos/brandmarks/original/dropbox.svg +10 -0
  292. package/core/logos/brandmarks/original/edge.svg +1 -0
  293. package/core/logos/brandmarks/original/facebook-f.svg +1 -0
  294. package/core/logos/brandmarks/original/facebook.svg +8 -0
  295. package/core/logos/brandmarks/original/figma.svg +10 -0
  296. package/core/logos/brandmarks/original/firefox.svg +1 -0
  297. package/core/logos/brandmarks/original/github.svg +6 -0
  298. package/core/logos/brandmarks/original/gitlab.svg +17 -0
  299. package/core/logos/brandmarks/original/google-a-s.svg +1 -0
  300. package/core/logos/brandmarks/original/google-chrome-webstore.svg +49 -0
  301. package/core/logos/brandmarks/original/google-play-store.svg +1 -0
  302. package/core/logos/brandmarks/original/google-web-search.svg +1 -0
  303. package/core/logos/brandmarks/original/google.svg +1 -0
  304. package/core/logos/brandmarks/original/gulp.svg +4 -0
  305. package/core/logos/brandmarks/original/html-5.svg +1 -0
  306. package/core/logos/brandmarks/original/instagram.svg +1 -0
  307. package/core/logos/brandmarks/original/javascript.svg +1 -0
  308. package/core/logos/brandmarks/original/jira.svg +18 -0
  309. package/core/logos/brandmarks/original/kick.svg +7 -0
  310. package/core/logos/brandmarks/original/linkedin.svg +1 -0
  311. package/core/logos/brandmarks/original/linux.svg +28 -0
  312. package/core/logos/brandmarks/original/messenger.svg +16 -0
  313. package/core/logos/brandmarks/original/microsoft.svg +1 -0
  314. package/core/logos/brandmarks/original/npm.svg +8 -0
  315. package/core/logos/brandmarks/original/opera.svg +1 -0
  316. package/core/logos/brandmarks/original/patreon.svg +6 -0
  317. package/core/logos/brandmarks/original/pinterest.svg +6 -0
  318. package/core/logos/brandmarks/original/reddit.svg +1 -0
  319. package/core/logos/brandmarks/original/safari.svg +31 -0
  320. package/core/logos/brandmarks/original/sass.svg +3 -0
  321. package/core/logos/brandmarks/original/signal.svg +6 -0
  322. package/core/logos/brandmarks/original/skype.svg +47 -0
  323. package/core/logos/brandmarks/original/slack.svg +33 -0
  324. package/core/logos/brandmarks/original/soundcloud.svg +1 -0
  325. package/core/logos/brandmarks/original/spotify.svg +5 -0
  326. package/core/logos/brandmarks/original/steam.svg +6 -0
  327. package/core/logos/brandmarks/original/telegram.svg +14 -0
  328. package/core/logos/brandmarks/original/tiktok.svg +1 -0
  329. package/core/logos/brandmarks/original/trello.svg +16 -0
  330. package/core/logos/brandmarks/original/tumblr.svg +1 -0
  331. package/core/logos/brandmarks/original/twitch.svg +6 -0
  332. package/core/logos/brandmarks/original/twitter.svg +6 -0
  333. package/core/logos/brandmarks/original/unity.svg +6 -0
  334. package/core/logos/brandmarks/original/x.svg +7 -0
  335. package/core/logos/brandmarks/original/yahoo-y.svg +1 -0
  336. package/core/logos/brandmarks/original/youtube-square.svg +1 -0
  337. package/core/logos/brandmarks/original/youtube.svg +1 -0
  338. package/core/logos/combomarks/dark/airbnb.svg +30 -0
  339. package/core/logos/combomarks/dark/slack.svg +38 -0
  340. package/core/logos/combomarks/dark/spotify.svg +35 -0
  341. package/core/logos/combomarks/dark/twilio.svg +26 -0
  342. package/core/logos/combomarks/dark/weebly.svg +35 -0
  343. package/core/logos/combomarks/gray/airbnb.svg +33 -0
  344. package/core/logos/combomarks/gray/alphabet.svg +23 -0
  345. package/core/logos/combomarks/gray/amazon.svg +38 -0
  346. package/core/logos/combomarks/gray/boring-company.svg +91 -0
  347. package/core/logos/combomarks/gray/burberry.svg +239 -0
  348. package/core/logos/combomarks/gray/embark.svg +21 -0
  349. package/core/logos/combomarks/gray/fitbit.svg +61 -0
  350. package/core/logos/combomarks/gray/fred-perry.svg +94 -0
  351. package/core/logos/combomarks/gray/google.svg +27 -0
  352. package/core/logos/combomarks/gray/hollister.svg +34 -0
  353. package/core/logos/combomarks/gray/hubspot.svg +27 -0
  354. package/core/logos/combomarks/gray/kaplan.svg +33 -0
  355. package/core/logos/combomarks/gray/lenovo.svg +27 -0
  356. package/core/logos/combomarks/gray/levis.svg +25 -0
  357. package/core/logos/combomarks/gray/mapbox.svg +37 -0
  358. package/core/logos/combomarks/gray/netflix.svg +15 -0
  359. package/core/logos/combomarks/gray/new-balance.svg +32 -0
  360. package/core/logos/combomarks/gray/nike.svg +17 -0
  361. package/core/logos/combomarks/gray/paypal.svg +41 -0
  362. package/core/logos/combomarks/gray/puma.svg +82 -0
  363. package/core/logos/combomarks/gray/samsung.svg +26 -0
  364. package/core/logos/combomarks/gray/shopify.svg +36 -0
  365. package/core/logos/combomarks/gray/slack.svg +42 -0
  366. package/core/logos/combomarks/gray/spotify.svg +38 -0
  367. package/core/logos/combomarks/gray/stripe.svg +24 -0
  368. package/core/logos/combomarks/gray/tnf.svg +30 -0
  369. package/core/logos/combomarks/gray/twilio.svg +29 -0
  370. package/core/logos/combomarks/gray/uber.svg +24 -0
  371. package/core/logos/combomarks/gray/weebly.svg +38 -0
  372. package/core/logos/combomarks/original/airbnb.svg +33 -0
  373. package/core/logos/combomarks/original/alphabet.svg +23 -0
  374. package/core/logos/combomarks/original/amazon.svg +38 -0
  375. package/core/logos/combomarks/original/asana.svg +8 -0
  376. package/core/logos/combomarks/original/boring-company.svg +91 -0
  377. package/core/logos/combomarks/original/discord.svg +6 -0
  378. package/core/logos/combomarks/original/embark.svg +24 -0
  379. package/core/logos/combomarks/original/fitbit.svg +60 -0
  380. package/core/logos/combomarks/original/github.svg +6 -0
  381. package/core/logos/combomarks/original/gitlab.svg +20 -0
  382. package/core/logos/combomarks/original/google.svg +28 -0
  383. package/core/logos/combomarks/original/hubspot.svg +29 -0
  384. package/core/logos/combomarks/original/instagram.svg +7 -0
  385. package/core/logos/combomarks/original/kickstarter.svg +6 -0
  386. package/core/logos/combomarks/original/lenovo.svg +24 -0
  387. package/core/logos/combomarks/original/linkedin.svg +6 -0
  388. package/core/logos/combomarks/original/mapbox.svg +39 -0
  389. package/core/logos/combomarks/original/mastodon.svg +7 -0
  390. package/core/logos/combomarks/original/medium.svg +6 -0
  391. package/core/logos/combomarks/original/meta.svg +22 -0
  392. package/core/logos/combomarks/original/microsoft.svg +13 -0
  393. package/core/logos/combomarks/original/monday.svg +12 -0
  394. package/core/logos/combomarks/original/netflix.svg +15 -0
  395. package/core/logos/combomarks/original/notion.svg +9 -0
  396. package/core/logos/combomarks/original/paypal.svg +41 -0
  397. package/core/logos/combomarks/original/reddit.svg +13 -0
  398. package/core/logos/combomarks/original/samsung.svg +25 -0
  399. package/core/logos/combomarks/original/shopify.svg +35 -0
  400. package/core/logos/combomarks/original/slack.svg +47 -0
  401. package/core/logos/combomarks/original/spotify.svg +37 -0
  402. package/core/logos/combomarks/original/stackoverflow.svg +28 -0
  403. package/core/logos/combomarks/original/stripe.svg +24 -0
  404. package/core/logos/combomarks/original/tiktok.svg +12 -0
  405. package/core/logos/combomarks/original/tumblr.svg +6 -0
  406. package/core/logos/combomarks/original/uber.svg +24 -0
  407. package/core/logos/combomarks/original/weebly.svg +34 -0
  408. package/core/logos/combomarks/original/whatsapp.svg +20 -0
  409. package/core/logos/combomarks/original/youtube.svg +10 -0
  410. package/core/logos/combomarks/original/zoom.svg +7 -0
  411. package/core/logos/combomarks/white/airbnb.svg +33 -0
  412. package/core/logos/combomarks/white/alphabet.svg +23 -0
  413. package/core/logos/combomarks/white/amazon.svg +38 -0
  414. package/core/logos/combomarks/white/boring-company.svg +91 -0
  415. package/core/logos/combomarks/white/embark.svg +21 -0
  416. package/core/logos/combomarks/white/fitbit.svg +61 -0
  417. package/core/logos/combomarks/white/google.svg +27 -0
  418. package/core/logos/combomarks/white/hubspot.svg +27 -0
  419. package/core/logos/combomarks/white/kaplan.svg +33 -0
  420. package/core/logos/combomarks/white/lenovo.svg +27 -0
  421. package/core/logos/combomarks/white/mapbox.svg +37 -0
  422. package/core/logos/combomarks/white/netflix.svg +15 -0
  423. package/core/logos/combomarks/white/paypal.svg +40 -0
  424. package/core/logos/combomarks/white/samsung.svg +26 -0
  425. package/core/logos/combomarks/white/shopify.svg +36 -0
  426. package/core/logos/combomarks/white/slack.svg +42 -0
  427. package/core/logos/combomarks/white/spotify.svg +38 -0
  428. package/core/logos/combomarks/white/stripe.svg +24 -0
  429. package/core/logos/combomarks/white/twilio.svg +29 -0
  430. package/core/logos/combomarks/white/uber.svg +24 -0
  431. package/core/logos/combomarks/white/weebly.svg +38 -0
  432. package/defaults/pages/404.md +4 -0
  433. package/defaults/pages/about.md +4 -0
  434. package/defaults/pages/admin/calendar/index.html +4 -0
  435. package/defaults/pages/admin/firebase/index.html +4 -0
  436. package/defaults/pages/admin/index.md +4 -0
  437. package/defaults/pages/admin/posts/editor.html +4 -0
  438. package/defaults/pages/admin/posts/index.html +4 -0
  439. package/defaults/pages/admin/stackblitz/index.html +4 -0
  440. package/defaults/pages/admin/studio/index.html +4 -0
  441. package/defaults/pages/admin/users/index.html +4 -0
  442. package/defaults/pages/admin/users/new.html +4 -0
  443. package/defaults/pages/admin/verts/index.html +4 -0
  444. package/defaults/pages/ads-txt.html +11 -0
  445. package/defaults/pages/alternatives/index.md +4 -0
  446. package/defaults/pages/app.md +4 -0
  447. package/defaults/pages/auth/reset.md +4 -0
  448. package/defaults/pages/auth/signin.md +4 -0
  449. package/defaults/pages/auth/signup.md +4 -0
  450. package/defaults/pages/auth/token.md +4 -0
  451. package/defaults/pages/blog/categories/category.html +21 -0
  452. package/defaults/pages/blog/categories.md +4 -0
  453. package/defaults/pages/blog/index-json.html +27 -0
  454. package/defaults/pages/blog/tags/tag.html +21 -0
  455. package/defaults/pages/blog/tags.md +4 -0
  456. package/defaults/pages/blog.md +22 -0
  457. package/defaults/pages/careers.md +4 -0
  458. package/defaults/pages/connections/callback.md +4 -0
  459. package/defaults/pages/contact.md +4 -0
  460. package/defaults/pages/dashboard/account.md +4 -0
  461. package/defaults/pages/dashboard/index.md +12 -0
  462. package/defaults/pages/download.md +4 -0
  463. package/defaults/pages/extension/index.html +4 -0
  464. package/defaults/pages/extension/installed.html +4 -0
  465. package/defaults/pages/feedback.md +4 -0
  466. package/defaults/pages/feeds/posts-json.html +40 -0
  467. package/defaults/pages/feeds/posts-xml.html +38 -0
  468. package/defaults/pages/humans.html +25 -0
  469. package/defaults/pages/index.md +4 -0
  470. package/defaults/pages/legal/cookies.md +4 -0
  471. package/defaults/pages/legal/privacy.md +4 -0
  472. package/defaults/pages/legal/terms.md +4 -0
  473. package/defaults/pages/llms-txt.html +46 -0
  474. package/defaults/pages/opensearch.html +16 -0
  475. package/defaults/pages/pages-json.html +42 -0
  476. package/defaults/pages/payment/checkout.md +4 -0
  477. package/defaults/pages/payment/confirmation.md +4 -0
  478. package/defaults/pages/portal/email-preferences.md +4 -0
  479. package/defaults/pages/pricing.md +4 -0
  480. package/defaults/pages/redirects/account.md +12 -0
  481. package/defaults/pages/redirects/admin/dashboard.md +11 -0
  482. package/defaults/pages/redirects/auth/change-password.md +9 -0
  483. package/defaults/pages/redirects/auth/forgot.md +9 -0
  484. package/defaults/pages/redirects/auth/join.md +9 -0
  485. package/defaults/pages/redirects/auth/login.md +9 -0
  486. package/defaults/pages/redirects/auth/recover.md +9 -0
  487. package/defaults/pages/redirects/auth/register.md +9 -0
  488. package/defaults/pages/redirects/auth/reset-password.md +9 -0
  489. package/defaults/pages/redirects/billing/cancel.md +9 -0
  490. package/defaults/pages/redirects/billing/refund.md +9 -0
  491. package/defaults/pages/robots.html +36 -0
  492. package/defaults/pages/security-txt.html +11 -0
  493. package/defaults/pages/sitemap.html +37 -0
  494. package/defaults/pages/status.md +4 -0
  495. package/defaults/pages/team/index.md +4 -0
  496. package/defaults/pages/test/account/dashboard.html +16 -0
  497. package/defaults/pages/test/index.md +12 -0
  498. package/defaults/pages/test/libraries/appearance.html +268 -0
  499. package/defaults/pages/test/libraries/cover.html +50 -0
  500. package/defaults/pages/test/libraries/error.html +30 -0
  501. package/defaults/pages/test/libraries/firestore.html +202 -0
  502. package/defaults/pages/test/libraries/form-manager.html +374 -0
  503. package/defaults/pages/test/libraries/layers.html +52 -0
  504. package/defaults/pages/test/libraries/lazy-loading.html +450 -0
  505. package/defaults/pages/test/libraries/verts.html +149 -0
  506. package/defaults/pages/test/redirect/external.md +13 -0
  507. package/defaults/pages/test/redirect/internal.md +13 -0
  508. package/defaults/pages/test/styleguide/index.html +588 -0
  509. package/defaults/pages/test/translation/index.md +50 -0
  510. package/defaults/pages/updates/index.md +4 -0
  511. package/defaults/sample-posts/2026-01-12-welcome-to-the-blog.md +26 -0
  512. package/defaults/sample-posts/2026-02-03-a-field-guide-to-good-defaults.md +50 -0
  513. package/defaults/sample-posts/2026-02-24-shipping-week-notes.md +37 -0
  514. package/defaults/sample-posts/2026-03-17-the-case-for-one-config.md +36 -0
  515. package/defaults/sample-posts/2026-04-09-write-release-notes-people-read.md +34 -0
  516. package/defaults/sample-posts/2026-05-21-dark-mode-done-properly.md +38 -0
  517. package/defaults/sample-posts/2026-06-02-the-boring-deploy-is-the-good-deploy.md +30 -0
  518. package/defaults/sample-posts/2026-06-11-naming-things-a-survival-guide.md +30 -0
  519. package/defaults/sample-posts/2026-06-19-your-pricing-page-is-a-product.md +28 -0
  520. package/defaults/sample-posts/2026-06-30-email-is-an-api-with-feelings.md +28 -0
  521. package/defaults/sample-posts/2026-07-08-ship-the-docs-with-the-diff.md +30 -0
  522. package/defaults/sample-team/avery-quinn.md +22 -0
  523. package/defaults/sample-team/jordan-reyes.md +25 -0
  524. package/defaults/sample-team/riley-nakamura.md +22 -0
  525. package/defaults/sample-team/sam-okafor.md +22 -0
  526. package/defaults/sample-updates/v1.0.0.md +28 -0
  527. package/defaults/sample-updates/v1.1.0.md +27 -0
  528. package/defaults/sample-updates/v1.2.0.md +27 -0
  529. package/defaults/sample-updates/v1.3.0.md +28 -0
  530. package/defaults/showcase/components.html +62 -0
  531. package/defaults/showcase/entry.html +76 -0
  532. package/defaults/showcase/frame.html +62 -0
  533. package/defaults/showcase/index.html +59 -0
  534. package/dist/assets.js +1349 -0
  535. package/dist/brand-tokens.js +195 -0
  536. package/dist/build.js +192 -0
  537. package/dist/cachebreak-html.js +71 -0
  538. package/dist/cli-run.js +25 -0
  539. package/dist/cli.js +47 -0
  540. package/dist/collections.js +183 -0
  541. package/dist/commands/audit.js +470 -0
  542. package/dist/commands/build.js +197 -0
  543. package/dist/commands/clean.js +18 -0
  544. package/dist/commands/customize.js +125 -0
  545. package/dist/commands/deploy.js +441 -0
  546. package/dist/commands/dev.js +1067 -0
  547. package/dist/commands/install.js +31 -0
  548. package/dist/commands/lib/deploy-precheck.js +43 -0
  549. package/dist/commands/lib/ensure-target.js +115 -0
  550. package/dist/commands/migrate.js +86 -0
  551. package/dist/commands/purge.js +31 -0
  552. package/dist/commands/test.js +237 -0
  553. package/dist/commands/translate.js +57 -0
  554. package/dist/commands/update.js +22 -0
  555. package/dist/commands/version.js +11 -0
  556. package/dist/config-sections.js +245 -0
  557. package/dist/consumer-scan.js +118 -0
  558. package/dist/consumer.js +49 -0
  559. package/dist/customize.js +328 -0
  560. package/dist/decisions.js +153 -0
  561. package/dist/dist-audit.js +417 -0
  562. package/dist/dynamic-pages.js +357 -0
  563. package/dist/engine.js +1402 -0
  564. package/dist/firebase-auth-helpers.js +198 -0
  565. package/dist/font-metrics.js +420 -0
  566. package/dist/frontmatter-liquid.js +253 -0
  567. package/dist/github-secrets.js +80 -0
  568. package/dist/hero-animations.js +170 -0
  569. package/dist/imagemin.js +261 -0
  570. package/dist/index.js +41 -0
  571. package/dist/inline-icons.js +65 -0
  572. package/dist/language-flags.js +55 -0
  573. package/dist/layers.js +80 -0
  574. package/dist/layouts.js +44 -0
  575. package/dist/limit-collections.js +199 -0
  576. package/dist/link-resolver.js +303 -0
  577. package/dist/markdown-images.js +85 -0
  578. package/dist/merge.js +20 -0
  579. package/dist/migrate/codemod.js +172 -0
  580. package/dist/migrate/config-convert.js +448 -0
  581. package/dist/migrate/consumer-assets.js +130 -0
  582. package/dist/migrate/index.js +223 -0
  583. package/dist/migrate/lint.js +108 -0
  584. package/dist/migrate/rules.js +1929 -0
  585. package/dist/minify-html.js +148 -0
  586. package/dist/mode-helpers.js +96 -0
  587. package/dist/omega-bin.js +7 -0
  588. package/dist/overrides.js +190 -0
  589. package/dist/path-prefix.js +167 -0
  590. package/dist/paths.js +37 -0
  591. package/dist/pricing.js +301 -0
  592. package/dist/purge.js +95 -0
  593. package/dist/redirect-page.js +45 -0
  594. package/dist/sample-content.js +210 -0
  595. package/dist/scaffold.js +123 -0
  596. package/dist/sections.js +810 -0
  597. package/dist/service-worker.js +200 -0
  598. package/dist/social-pages.js +142 -0
  599. package/dist/srcset.js +67 -0
  600. package/dist/static-assets.js +154 -0
  601. package/dist/target-shortlinks.js +123 -0
  602. package/dist/theme-vocabulary.js +76 -0
  603. package/dist/translate/collect-text-nodes.js +93 -0
  604. package/dist/translate/default-routes.js +152 -0
  605. package/dist/translate/generate-defaults.js +297 -0
  606. package/dist/translate/index.js +568 -0
  607. package/dist/translate/packaged-defaults.js +127 -0
  608. package/dist/translate/sitemap.js +108 -0
  609. package/dist/vendor/account/engine.js +182 -0
  610. package/dist/vendor/account/features.js +220 -0
  611. package/dist/vendor/account/index.js +53 -0
  612. package/dist/vendor/account/schema.js +272 -0
  613. package/dist/vendor/account/subscription.js +38 -0
  614. package/dist/vendor/config/company.js +31 -0
  615. package/dist/vendor/config/defaults.js +173 -0
  616. package/dist/vendor/config/demo.js +18 -0
  617. package/dist/vendor/config/desktop-artifacts.js +110 -0
  618. package/dist/vendor/config/edit.js +769 -0
  619. package/dist/vendor/config/env-delivery.js +145 -0
  620. package/dist/vendor/config/env-rules.js +93 -0
  621. package/dist/vendor/config/env-schema.js +1078 -0
  622. package/dist/vendor/config/env.js +445 -0
  623. package/dist/vendor/config/hooks.js +97 -0
  624. package/dist/vendor/config/index.js +237 -0
  625. package/dist/vendor/config/instances.js +208 -0
  626. package/dist/vendor/config/load.js +490 -0
  627. package/dist/vendor/config/merge.js +68 -0
  628. package/dist/vendor/config/order.js +139 -0
  629. package/dist/vendor/config/ports.js +374 -0
  630. package/dist/vendor/config/providers.js +32 -0
  631. package/dist/vendor/config/repo.js +142 -0
  632. package/dist/vendor/config/retired-keys.js +430 -0
  633. package/dist/vendor/config/schema.js +1610 -0
  634. package/dist/vendor/config/secrets.js +50 -0
  635. package/dist/vendor/config/seed.js +34 -0
  636. package/dist/vendor/config/site-global.js +205 -0
  637. package/dist/vendor/config/validate.js +554 -0
  638. package/dist/vendor/config/winback.js +61 -0
  639. package/dist/vendor/devkit/actions-secrets.js +145 -0
  640. package/dist/vendor/devkit/attach-log-file.js +262 -0
  641. package/dist/vendor/devkit/bare-requires.js +153 -0
  642. package/dist/vendor/devkit/bundle.js +292 -0
  643. package/dist/vendor/devkit/ci-workflows.js +520 -0
  644. package/dist/vendor/devkit/cli-router.js +156 -0
  645. package/dist/vendor/devkit/command-path.js +46 -0
  646. package/dist/vendor/devkit/defaults-engine.js +372 -0
  647. package/dist/vendor/devkit/deploy-precheck.js +54 -0
  648. package/dist/vendor/devkit/deploy-record.js +180 -0
  649. package/dist/vendor/devkit/deploy.js +286 -0
  650. package/dist/vendor/devkit/env-watch.js +132 -0
  651. package/dist/vendor/devkit/framework-deps.js +46 -0
  652. package/dist/vendor/devkit/icons.js +178 -0
  653. package/dist/vendor/devkit/license.js +155 -0
  654. package/dist/vendor/devkit/local-https.js +360 -0
  655. package/dist/vendor/devkit/local.js +1905 -0
  656. package/dist/vendor/devkit/logger.js +128 -0
  657. package/dist/vendor/devkit/merge-line-files.js +296 -0
  658. package/dist/vendor/devkit/omega-bin.js +345 -0
  659. package/dist/vendor/devkit/reads.js +274 -0
  660. package/dist/vendor/devkit/safe-install.js +18 -0
  661. package/dist/vendor/devkit/scaffold-guard.js +96 -0
  662. package/dist/vendor/devkit/stop-signals.js +28 -0
  663. package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
  664. package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
  665. package/dist/vendor/devkit/target-secrets.js +165 -0
  666. package/dist/vendor/devkit/test/scope.js +162 -0
  667. package/dist/vendor/devkit/translate/cache.js +84 -0
  668. package/dist/vendor/devkit/translate/engine.js +243 -0
  669. package/dist/vendor/devkit/translate/index.js +49 -0
  670. package/dist/vendor/devkit/translate/languages.js +134 -0
  671. package/dist/vendor/devkit/translate/providers.js +188 -0
  672. package/dist/vendor/devkit/update.js +569 -0
  673. package/dist/vendor/template-kit/data/language-flags.js +54 -0
  674. package/dist/vendor/template-kit/data/languages.js +195 -0
  675. package/dist/vendor/template-kit/data/social-urls.js +26 -0
  676. package/dist/vendor/template-kit/filters.js +227 -0
  677. package/dist/vendor/template-kit/index.js +28 -0
  678. package/dist/vendor/template-kit/jekyll-compat.js +268 -0
  679. package/dist/vendor/template-kit/register-liquid.js +0 -0
  680. package/dist/vendor/template-kit/tags/collections.js +191 -0
  681. package/dist/vendor/template-kit/tags/conditionals.js +101 -0
  682. package/dist/vendor/template-kit/tags/content.js +175 -0
  683. package/dist/vendor/template-kit/tags/index.js +33 -0
  684. package/dist/vendor/template-kit/tags/media.js +376 -0
  685. package/dist/vendor/template-kit/variable-resolver.js +163 -0
  686. package/docs/ads-system.md +109 -0
  687. package/docs/classy-v2/DIRECTION.md +92 -0
  688. package/docs/classy-v2/draft-1.html +1932 -0
  689. package/docs/classy-v2/draft-2.html +1956 -0
  690. package/docs/frontmatter.md +153 -0
  691. package/docs/index.md +254 -0
  692. package/docs/libs.md +298 -0
  693. package/docs/omega-sections-spec.md +159 -0
  694. package/docs/page-contract.md +112 -0
  695. package/docs/sections.md +845 -0
  696. package/docs/shared/agent-docs.md +89 -0
  697. package/docs/shared/analytics.md +612 -0
  698. package/docs/shared/brands.md +51 -0
  699. package/docs/shared/breaking-changes.md +497 -0
  700. package/docs/shared/config.md +1387 -0
  701. package/docs/shared/deploys.md +215 -0
  702. package/docs/shared/icons.md +201 -0
  703. package/docs/shared/local-dev.md +147 -0
  704. package/docs/shared/logging.md +202 -0
  705. package/docs/shared/monitoring.md +153 -0
  706. package/docs/shared/publishing.md +183 -0
  707. package/docs/shared/rulings.md +34 -0
  708. package/docs/shared/testing.md +147 -0
  709. package/docs/shared/theming.md +604 -0
  710. package/docs/shared/translation.md +291 -0
  711. package/docs/shared/updates.md +61 -0
  712. package/docs/template-kit.md +128 -0
  713. package/docs/test-framework.md +163 -0
  714. package/package.json +122 -0
  715. package/runtime/boot.js +149 -0
  716. package/runtime/icons.js +77 -0
  717. package/runtime/manager.js +36 -0
  718. package/scaffold/.github/workflows/build.yml +139 -0
  719. package/scaffold/.nvmrc +1 -0
  720. package/scaffold/AGENTS.md +55 -0
  721. package/scaffold/CLAUDE.md +1 -0
  722. package/scaffold/_.gitattributes +4 -0
  723. package/scaffold/_.gitignore +27 -0
  724. package/scaffold/config/omega.json5 +20 -0
  725. package/scaffold/src/assets/css/pages/.gitkeep +0 -0
  726. package/scaffold/src/assets/images/.gitkeep +0 -0
  727. package/scaffold/src/assets/js/pages/.gitkeep +0 -0
  728. package/scaffold/src/pages/.gitkeep +0 -0
  729. package/scaffold/src/pages/example.md.txt +94 -0
  730. package/scaffold/src/service-worker.js +16 -0
  731. package/sw/entry.js +19 -0
  732. package/sw/manager.js +281 -0
  733. package/themes/_template/README.md +115 -0
  734. package/themes/_template/_config.scss +60 -0
  735. package/themes/_template/_theme.js +14 -0
  736. package/themes/_template/_theme.scss +28 -0
  737. package/themes/_template/css/base/_root.scss +19 -0
  738. package/themes/_template/css/components/_components.scss +23 -0
  739. package/themes/base/README.md +5 -0
  740. package/themes/base/_components/data/org-chart/component.html +33 -0
  741. package/themes/base/_components/data/org-chart/component.json5 +33 -0
  742. package/themes/base/_components/data/org-chart/component.scss +183 -0
  743. package/themes/base/_components/heading/masthead/component.html +22 -0
  744. package/themes/base/_components/heading/masthead/component.json5 +30 -0
  745. package/themes/base/_components/heading/section-head/component.html +18 -0
  746. package/themes/base/_components/heading/section-head/component.json5 +27 -0
  747. package/themes/base/_components/pricing/features/component.html +29 -0
  748. package/themes/base/_components/pricing/features/component.json5 +30 -0
  749. package/themes/base/_hero/orbit/index.html +30 -0
  750. package/themes/base/_hero/orbit/script.js +33 -0
  751. package/themes/base/_hero/orbit/style.scss +133 -0
  752. package/themes/base/_includes/admin/sections/sidebar.html +3 -0
  753. package/themes/base/_includes/admin/sections/topbar.html +3 -0
  754. package/themes/base/_includes/backend/sections/sidebar.html +3 -0
  755. package/themes/base/_includes/backend/sections/topbar.html +3 -0
  756. package/themes/base/_includes/frontend/components/connection-card.html +49 -0
  757. package/themes/base/_includes/frontend/components/post-card.html +54 -0
  758. package/themes/base/_includes/frontend/sections/account-connections.html +42 -0
  759. package/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
  760. package/themes/base/_includes/frontend/sections/footer.html +154 -0
  761. package/themes/base/_includes/frontend/sections/nav.html +276 -0
  762. package/themes/base/_includes/global/sections/account.html +72 -0
  763. package/themes/base/_includes/global/sections/app-sidebar.html +248 -0
  764. package/themes/base/_includes/global/sections/app-topbar.html +228 -0
  765. package/themes/base/_includes/global/sections/page-header.html +99 -0
  766. package/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
  767. package/themes/base/_layouts/admin/core/minimal.html +23 -0
  768. package/themes/base/_layouts/backend/core/base.html +57 -0
  769. package/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
  770. package/themes/base/_layouts/backend/core/minimal.html +32 -0
  771. package/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
  772. package/themes/base/_layouts/frontend/core/base.html +31 -0
  773. package/themes/base/_layouts/frontend/core/cover.html +40 -0
  774. package/themes/base/_layouts/frontend/core/minimal.html +47 -0
  775. package/themes/base/_layouts/frontend/pages/404.html +54 -0
  776. package/themes/base/_layouts/frontend/pages/about.html +144 -0
  777. package/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
  778. package/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
  779. package/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
  780. package/themes/base/_layouts/frontend/pages/app.html +142 -0
  781. package/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
  782. package/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
  783. package/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
  784. package/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
  785. package/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
  786. package/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
  787. package/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
  788. package/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
  789. package/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
  790. package/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
  791. package/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
  792. package/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
  793. package/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
  794. package/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
  795. package/themes/base/_layouts/frontend/pages/contact.html +214 -0
  796. package/themes/base/_layouts/frontend/pages/download.html +793 -0
  797. package/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
  798. package/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
  799. package/themes/base/_layouts/frontend/pages/feedback.html +171 -0
  800. package/themes/base/_layouts/frontend/pages/index.html +66 -0
  801. package/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
  802. package/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
  803. package/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
  804. package/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
  805. package/themes/base/_layouts/frontend/pages/pricing.html +596 -0
  806. package/themes/base/_layouts/frontend/pages/status.html +361 -0
  807. package/themes/base/_layouts/frontend/pages/team/index.html +210 -0
  808. package/themes/base/_layouts/frontend/pages/team/member.html +125 -0
  809. package/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
  810. package/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
  811. package/themes/base/_sections/about/hero/section.html +68 -0
  812. package/themes/base/_sections/about/hero/section.json5 +58 -0
  813. package/themes/base/_sections/about/letter/section.html +60 -0
  814. package/themes/base/_sections/about/letter/section.json5 +56 -0
  815. package/themes/base/_sections/about/photo-band/section.html +24 -0
  816. package/themes/base/_sections/about/photo-band/section.json5 +23 -0
  817. package/themes/base/_sections/about/principles/section.html +17 -0
  818. package/themes/base/_sections/about/principles/section.json5 +34 -0
  819. package/themes/base/_sections/about/timeline/section.html +20 -0
  820. package/themes/base/_sections/about/timeline/section.json5 +34 -0
  821. package/themes/base/_sections/marketing/bento/section.html +91 -0
  822. package/themes/base/_sections/marketing/bento/section.json5 +152 -0
  823. package/themes/base/_sections/marketing/cta/section.html +44 -0
  824. package/themes/base/_sections/marketing/cta/section.json5 +47 -0
  825. package/themes/base/_sections/marketing/faq/section.html +52 -0
  826. package/themes/base/_sections/marketing/faq/section.json5 +68 -0
  827. package/themes/base/_sections/marketing/hero/section.html +349 -0
  828. package/themes/base/_sections/marketing/hero/section.json5 +335 -0
  829. package/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
  830. package/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
  831. package/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
  832. package/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
  833. package/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
  834. package/themes/base/_sections/marketing/product-demo/section.html +62 -0
  835. package/themes/base/_sections/marketing/product-demo/section.js +44 -0
  836. package/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
  837. package/themes/base/_sections/marketing/prose/section.html +22 -0
  838. package/themes/base/_sections/marketing/prose/section.json5 +41 -0
  839. package/themes/base/_sections/marketing/showcase/section.html +35 -0
  840. package/themes/base/_sections/marketing/showcase/section.json5 +52 -0
  841. package/themes/base/_sections/marketing/stats/section.html +32 -0
  842. package/themes/base/_sections/marketing/stats/section.json5 +44 -0
  843. package/themes/base/_sections/marketing/testimonials/section.html +54 -0
  844. package/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
  845. package/themes/base/_sections/marketing/trusted-by/section.html +30 -0
  846. package/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
  847. package/themes/base/_sections/verts/unit/section.html +7 -0
  848. package/themes/base/_sections/verts/unit/section.js +22 -0
  849. package/themes/base/_sections/verts/unit/section.json5 +24 -0
  850. package/themes/base/_sections/verts/unit/section.scss +24 -0
  851. package/themes/base/_theme.js +13 -0
  852. package/themes/base/_theme.scss +4 -0
  853. package/themes/bootstrap/_theme.js +16 -0
  854. package/themes/bootstrap/_theme.scss +11 -0
  855. package/themes/bootstrap/js/index.esm.js +19 -0
  856. package/themes/bootstrap/js/index.umd.js +34 -0
  857. package/themes/bootstrap/js/src/alert.js +87 -0
  858. package/themes/bootstrap/js/src/base-component.js +86 -0
  859. package/themes/bootstrap/js/src/button.js +72 -0
  860. package/themes/bootstrap/js/src/carousel.js +474 -0
  861. package/themes/bootstrap/js/src/collapse.js +297 -0
  862. package/themes/bootstrap/js/src/dom/data.js +55 -0
  863. package/themes/bootstrap/js/src/dom/event-handler.js +317 -0
  864. package/themes/bootstrap/js/src/dom/manipulator.js +71 -0
  865. package/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
  866. package/themes/bootstrap/js/src/dropdown.js +458 -0
  867. package/themes/bootstrap/js/src/modal.js +378 -0
  868. package/themes/bootstrap/js/src/offcanvas.js +282 -0
  869. package/themes/bootstrap/js/src/popover.js +97 -0
  870. package/themes/bootstrap/js/src/scrollspy.js +296 -0
  871. package/themes/bootstrap/js/src/tab.js +315 -0
  872. package/themes/bootstrap/js/src/toast.js +224 -0
  873. package/themes/bootstrap/js/src/tooltip.js +632 -0
  874. package/themes/bootstrap/js/src/util/backdrop.js +151 -0
  875. package/themes/bootstrap/js/src/util/component-functions.js +35 -0
  876. package/themes/bootstrap/js/src/util/config.js +65 -0
  877. package/themes/bootstrap/js/src/util/focustrap.js +115 -0
  878. package/themes/bootstrap/js/src/util/index.js +306 -0
  879. package/themes/bootstrap/js/src/util/sanitizer.js +117 -0
  880. package/themes/bootstrap/js/src/util/scrollbar.js +114 -0
  881. package/themes/bootstrap/js/src/util/swipe.js +146 -0
  882. package/themes/bootstrap/js/src/util/template-factory.js +160 -0
  883. package/themes/bootstrap/overrides/_accordion.scss +21 -0
  884. package/themes/bootstrap/overrides/_avatars.scss +51 -0
  885. package/themes/bootstrap/overrides/_blog-images.scss +45 -0
  886. package/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
  887. package/themes/bootstrap/overrides/_color-shades.scss +25 -0
  888. package/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
  889. package/themes/bootstrap/overrides/_index.scss +30 -0
  890. package/themes/bootstrap/overrides/_links.scss +26 -0
  891. package/themes/bootstrap/overrides/_soft-colors.scss +99 -0
  892. package/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
  893. package/themes/bootstrap/overrides/_spinners.scss +22 -0
  894. package/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
  895. package/themes/bootstrap/scss/_accordion.scss +153 -0
  896. package/themes/bootstrap/scss/_alert.scss +68 -0
  897. package/themes/bootstrap/scss/_badge.scss +38 -0
  898. package/themes/bootstrap/scss/_breadcrumb.scss +40 -0
  899. package/themes/bootstrap/scss/_button-group.scss +147 -0
  900. package/themes/bootstrap/scss/_buttons.scss +216 -0
  901. package/themes/bootstrap/scss/_card.scss +238 -0
  902. package/themes/bootstrap/scss/_carousel.scss +226 -0
  903. package/themes/bootstrap/scss/_close.scss +66 -0
  904. package/themes/bootstrap/scss/_containers.scss +41 -0
  905. package/themes/bootstrap/scss/_dropdown.scss +250 -0
  906. package/themes/bootstrap/scss/_forms.scss +9 -0
  907. package/themes/bootstrap/scss/_functions.scss +302 -0
  908. package/themes/bootstrap/scss/_grid.scss +39 -0
  909. package/themes/bootstrap/scss/_helpers.scss +12 -0
  910. package/themes/bootstrap/scss/_images.scss +42 -0
  911. package/themes/bootstrap/scss/_list-group.scss +199 -0
  912. package/themes/bootstrap/scss/_maps.scss +174 -0
  913. package/themes/bootstrap/scss/_mixins.scss +42 -0
  914. package/themes/bootstrap/scss/_modal.scss +240 -0
  915. package/themes/bootstrap/scss/_nav.scss +197 -0
  916. package/themes/bootstrap/scss/_navbar.scss +289 -0
  917. package/themes/bootstrap/scss/_offcanvas.scss +147 -0
  918. package/themes/bootstrap/scss/_pagination.scss +109 -0
  919. package/themes/bootstrap/scss/_placeholders.scss +51 -0
  920. package/themes/bootstrap/scss/_popover.scss +196 -0
  921. package/themes/bootstrap/scss/_progress.scss +68 -0
  922. package/themes/bootstrap/scss/_reboot.scss +611 -0
  923. package/themes/bootstrap/scss/_root.scss +187 -0
  924. package/themes/bootstrap/scss/_spinners.scss +85 -0
  925. package/themes/bootstrap/scss/_tables.scss +171 -0
  926. package/themes/bootstrap/scss/_toasts.scss +73 -0
  927. package/themes/bootstrap/scss/_tooltip.scss +119 -0
  928. package/themes/bootstrap/scss/_transitions.scss +27 -0
  929. package/themes/bootstrap/scss/_type.scss +106 -0
  930. package/themes/bootstrap/scss/_utilities.scss +806 -0
  931. package/themes/bootstrap/scss/_variables-dark.scss +102 -0
  932. package/themes/bootstrap/scss/_variables.scss +1753 -0
  933. package/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
  934. package/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
  935. package/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
  936. package/themes/bootstrap/scss/bootstrap.scss +52 -0
  937. package/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
  938. package/themes/bootstrap/scss/forms/_form-check.scss +189 -0
  939. package/themes/bootstrap/scss/forms/_form-control.scss +214 -0
  940. package/themes/bootstrap/scss/forms/_form-range.scss +91 -0
  941. package/themes/bootstrap/scss/forms/_form-select.scss +80 -0
  942. package/themes/bootstrap/scss/forms/_form-text.scss +11 -0
  943. package/themes/bootstrap/scss/forms/_input-group.scss +132 -0
  944. package/themes/bootstrap/scss/forms/_labels.scss +36 -0
  945. package/themes/bootstrap/scss/forms/_validation.scss +12 -0
  946. package/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
  947. package/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
  948. package/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
  949. package/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  950. package/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
  951. package/themes/bootstrap/scss/helpers/_position.scss +36 -0
  952. package/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
  953. package/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
  954. package/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  955. package/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  956. package/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  957. package/themes/bootstrap/scss/helpers/_vr.scss +8 -0
  958. package/themes/bootstrap/scss/mixins/_alert.scss +18 -0
  959. package/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
  960. package/themes/bootstrap/scss/mixins/_banner.scss +7 -0
  961. package/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
  962. package/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  963. package/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  964. package/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
  965. package/themes/bootstrap/scss/mixins/_caret.scss +69 -0
  966. package/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
  967. package/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
  968. package/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  969. package/themes/bootstrap/scss/mixins/_container.scss +11 -0
  970. package/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
  971. package/themes/bootstrap/scss/mixins/_forms.scss +163 -0
  972. package/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
  973. package/themes/bootstrap/scss/mixins/_grid.scss +151 -0
  974. package/themes/bootstrap/scss/mixins/_image.scss +16 -0
  975. package/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
  976. package/themes/bootstrap/scss/mixins/_lists.scss +7 -0
  977. package/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
  978. package/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
  979. package/themes/bootstrap/scss/mixins/_resize.scss +6 -0
  980. package/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
  981. package/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  982. package/themes/bootstrap/scss/mixins/_transition.scss +26 -0
  983. package/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
  984. package/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
  985. package/themes/bootstrap/scss/tests/jasmine.js +16 -0
  986. package/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
  987. package/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  988. package/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  989. package/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  990. package/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
  991. package/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
  992. package/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  993. package/themes/bootstrap/scss/utilities/_api.scss +47 -0
  994. package/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
  995. package/themes/classy/README.md +89 -0
  996. package/themes/classy/_config.scss +245 -0
  997. package/themes/classy/_theme.js +31 -0
  998. package/themes/classy/_theme.scss +57 -0
  999. package/themes/classy/css/app/_panels.scss +183 -0
  1000. package/themes/classy/css/base/_fonts.scss +79 -0
  1001. package/themes/classy/css/base/_no-raise.scss +49 -0
  1002. package/themes/classy/css/base/_root.scss +113 -0
  1003. package/themes/classy/css/base/_typography.scss +154 -0
  1004. package/themes/classy/css/base/_utilities.scss +284 -0
  1005. package/themes/classy/css/components/_alerts.scss +51 -0
  1006. package/themes/classy/css/components/_badges.scss +46 -0
  1007. package/themes/classy/css/components/_buttons.scss +175 -0
  1008. package/themes/classy/css/components/_cards.scss +41 -0
  1009. package/themes/classy/css/components/_dropdowns.scss +48 -0
  1010. package/themes/classy/css/components/_forms.scss +171 -0
  1011. package/themes/classy/css/components/_receipt.scss +45 -0
  1012. package/themes/classy/css/layout/_footer.scss +298 -0
  1013. package/themes/classy/css/layout/_general.scss +209 -0
  1014. package/themes/classy/css/layout/_nav.scss +154 -0
  1015. package/themes/classy/css/layout/_shell.scss +458 -0
  1016. package/themes/classy/css/marketing/_bento.scss +238 -0
  1017. package/themes/classy/css/marketing/_content.scss +1328 -0
  1018. package/themes/classy/css/marketing/_downloads.scss +246 -0
  1019. package/themes/classy/css/marketing/_hero.scss +311 -0
  1020. package/themes/classy/css/marketing/_sections.scss +649 -0
  1021. package/themes/classy/css/pages/404/index.scss +67 -0
  1022. package/themes/classy/css/pages/_auth.scss +235 -0
  1023. package/themes/classy/css/pages/admin/firebase/index.scss +22 -0
  1024. package/themes/classy/css/pages/blog/[slug].scss +56 -0
  1025. package/themes/classy/css/pages/cookies.scss +2 -0
  1026. package/themes/classy/css/pages/dashboard/account/index.scss +31 -0
  1027. package/themes/classy/css/pages/feedback/index.scss +39 -0
  1028. package/themes/classy/css/pages/legal/_document.scss +192 -0
  1029. package/themes/classy/css/pages/payment/checkout/index.scss +585 -0
  1030. package/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
  1031. package/themes/classy/css/pages/privacy.scss +2 -0
  1032. package/themes/classy/css/pages/status/index.scss +164 -0
  1033. package/themes/classy/css/pages/terms.scss +2 -0
  1034. package/themes/classy/css/pages/updates/index.scss +128 -0
  1035. package/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
  1036. package/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
  1037. package/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
  1038. package/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
  1039. package/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
  1040. package/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
  1041. package/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
  1042. package/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
  1043. package/themes/classy/js/hero-demo-form.js +56 -0
  1044. package/themes/neobrutalism/README.md +118 -0
  1045. package/themes/neobrutalism/_config.scss +139 -0
  1046. package/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
  1047. package/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
  1048. package/themes/neobrutalism/_theme.js +24 -0
  1049. package/themes/neobrutalism/_theme.scss +61 -0
  1050. package/themes/neobrutalism/css/base/_mixins.scss +46 -0
  1051. package/themes/neobrutalism/css/base/_root.scss +169 -0
  1052. package/themes/neobrutalism/css/base/_typography.scss +61 -0
  1053. package/themes/neobrutalism/css/base/_utilities.scss +89 -0
  1054. package/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
  1055. package/themes/neobrutalism/css/components/_buttons.scss +148 -0
  1056. package/themes/neobrutalism/css/components/_cards.scss +47 -0
  1057. package/themes/neobrutalism/css/components/_forms.scss +88 -0
  1058. package/themes/neobrutalism/css/components/_marketing.scss +244 -0
  1059. package/themes/neobrutalism/css/layout/_general.scss +213 -0
  1060. package/themes/neobrutalism/css/layout/_navigation.scss +171 -0
  1061. package/themes/neobrutalism/css/pages/index.scss +203 -0
  1062. package/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
  1063. package/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
  1064. package/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
  1065. package/themes/newsflash/README.md +117 -0
  1066. package/themes/newsflash/_components/heading/lede/component.html +14 -0
  1067. package/themes/newsflash/_components/heading/lede/component.json5 +23 -0
  1068. package/themes/newsflash/_components/heading/rule-head/component.html +17 -0
  1069. package/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
  1070. package/themes/newsflash/_components/news/byline/component.html +12 -0
  1071. package/themes/newsflash/_components/news/byline/component.json5 +18 -0
  1072. package/themes/newsflash/_components/news/story-card/component.html +25 -0
  1073. package/themes/newsflash/_components/news/story-card/component.json5 +21 -0
  1074. package/themes/newsflash/_config.scss +147 -0
  1075. package/themes/newsflash/_layouts/frontend/core/base.html +51 -0
  1076. package/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
  1077. package/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
  1078. package/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
  1079. package/themes/newsflash/_sections/marketing/desks/section.html +39 -0
  1080. package/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
  1081. package/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
  1082. package/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
  1083. package/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
  1084. package/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
  1085. package/themes/newsflash/_theme.js +24 -0
  1086. package/themes/newsflash/_theme.scss +70 -0
  1087. package/themes/newsflash/css/base/_fonts.scss +80 -0
  1088. package/themes/newsflash/css/base/_mixins.scss +51 -0
  1089. package/themes/newsflash/css/base/_root.scss +257 -0
  1090. package/themes/newsflash/css/base/_typography.scss +49 -0
  1091. package/themes/newsflash/css/base/_utilities.scss +122 -0
  1092. package/themes/newsflash/css/components/_badges.scss +65 -0
  1093. package/themes/newsflash/css/components/_billing-toggle.scss +61 -0
  1094. package/themes/newsflash/css/components/_buttons.scss +139 -0
  1095. package/themes/newsflash/css/components/_cards.scss +47 -0
  1096. package/themes/newsflash/css/components/_editorial.scss +173 -0
  1097. package/themes/newsflash/css/components/_forms.scss +75 -0
  1098. package/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
  1099. package/themes/newsflash/css/components/_panels.scss +156 -0
  1100. package/themes/newsflash/css/components/_ticker.scss +67 -0
  1101. package/themes/newsflash/css/layout/_general.scss +330 -0
  1102. package/themes/newsflash/css/layout/_navigation.scss +168 -0
  1103. package/themes/newsflash/css/pages/404/index.scss +79 -0
  1104. package/themes/newsflash/css/pages/blog/[slug].scss +186 -0
  1105. package/themes/newsflash/css/pages/blog/index.scss +17 -0
  1106. package/themes/newsflash/css/pages/index.scss +157 -0
  1107. package/themes/newsflash/css/pages/pricing/index.scss +55 -0
  1108. package/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
  1109. package/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
  1110. package/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
  1111. package/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
  1112. package/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
  1113. package/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
  1114. package/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
  1115. package/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
  1116. package/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
  1117. package/themes/newsflash/js/pages/blog/[slug].js +29 -0
  1118. package/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
  1119. package/translations/es/pages/404.json +86 -0
  1120. package/translations/es/pages/account.json +36 -0
  1121. package/translations/es/pages/app.json +44 -0
  1122. package/translations/es/pages/cancel.json +36 -0
  1123. package/translations/es/pages/change-password.json +36 -0
  1124. package/translations/es/pages/connections/callback.json +41 -0
  1125. package/translations/es/pages/dashboard/account.json +475 -0
  1126. package/translations/es/pages/dashboard.json +36 -0
  1127. package/translations/es/pages/forgot.json +36 -0
  1128. package/translations/es/pages/join.json +36 -0
  1129. package/translations/es/pages/login.json +36 -0
  1130. package/translations/es/pages/payment/checkout.json +83 -0
  1131. package/translations/es/pages/payment/confirmation.json +62 -0
  1132. package/translations/es/pages/portal/email-preferences.json +46 -0
  1133. package/translations/es/pages/recover.json +36 -0
  1134. package/translations/es/pages/refund.json +36 -0
  1135. package/translations/es/pages/register.json +36 -0
  1136. package/translations/es/pages/reset-password.json +36 -0
  1137. package/translations/es/pages/reset.json +42 -0
  1138. package/translations/es/pages/signin.json +45 -0
  1139. package/translations/es/pages/signup.json +60 -0
  1140. package/translations/es/pages/token.json +39 -0
  1141. package/translations/fa/pages/404.json +86 -0
  1142. package/translations/fa/pages/account.json +36 -0
  1143. package/translations/fa/pages/app.json +44 -0
  1144. package/translations/fa/pages/cancel.json +36 -0
  1145. package/translations/fa/pages/change-password.json +36 -0
  1146. package/translations/fa/pages/connections/callback.json +41 -0
  1147. package/translations/fa/pages/dashboard/account.json +475 -0
  1148. package/translations/fa/pages/dashboard.json +36 -0
  1149. package/translations/fa/pages/forgot.json +36 -0
  1150. package/translations/fa/pages/join.json +36 -0
  1151. package/translations/fa/pages/login.json +36 -0
  1152. package/translations/fa/pages/payment/checkout.json +83 -0
  1153. package/translations/fa/pages/payment/confirmation.json +62 -0
  1154. package/translations/fa/pages/portal/email-preferences.json +46 -0
  1155. package/translations/fa/pages/recover.json +36 -0
  1156. package/translations/fa/pages/refund.json +36 -0
  1157. package/translations/fa/pages/register.json +36 -0
  1158. package/translations/fa/pages/reset-password.json +36 -0
  1159. package/translations/fa/pages/reset.json +42 -0
  1160. package/translations/fa/pages/signin.json +45 -0
  1161. package/translations/fa/pages/signup.json +60 -0
  1162. package/translations/fa/pages/token.json +39 -0
@@ -0,0 +1,423 @@
1
+ <!-- Meta Variables -->
2
+ {% assign page-viewport = "width=device-width, initial-scale=1.0, user-scalable=yes, shrink-to-fit=no" %}
3
+ {%- iftruthy resolved.meta.viewport -%}
4
+ {% assign page-viewport = resolved.meta.viewport | omega_liquify %}
5
+ {% endiftruthy %}
6
+
7
+ {% assign page-referrer = "strict-origin-when-cross-origin" %}
8
+ {%- iftruthy resolved.meta.referrer -%}
9
+ {% assign page-referrer = resolved.meta.referrer | omega_liquify %}
10
+ {%- endiftruthy -%}
11
+
12
+ {% assign page-keywords = "" %}
13
+ {%- iftruthy resolved.meta.keywords -%}
14
+ {% assign page-keywords = resolved.meta.keywords | omega_liquify %}
15
+ {%- endiftruthy -%}
16
+
17
+ {% assign favicon-path = resolved.config.url | append: "/assets/images/favicon" %}
18
+ {%- iftruthy resolved.config.favicon.path -%}
19
+ {% assign favicon-path = resolved.config.favicon.path %}
20
+ {%- endiftruthy -%}
21
+
22
+ <!-- The index posture (#564): `meta.index` is the ONE decision, resolved once
23
+ per page by the engine (engine.js `resolved`): the site default
24
+ `targets.web.meta.index`, then the layout's, then the page's own, then the
25
+ framework's automatic exclusions (drafts, the /test dev surfaces, /admin/,
26
+ redirect stubs, a listing's pages 2..N). sitemap.xml, pages.json and
27
+ llms.txt filter on that very same value, so no signal keeps a rule list of
28
+ its own and none of them can disagree. -->
29
+ {% assign page-robots = "index" %}
30
+ {%- if resolved.meta.index == false -%}
31
+ {% assign page-robots = "noindex" %}
32
+ {%- endif -%}
33
+
34
+ <!-- Redirect pages (#466): a page carrying `redirect.url` is not a page, it is
35
+ a forwarding URL, so the head says so three ways — the destination is the
36
+ canonical (this URL never competes with it in an index), the layout's own
37
+ `meta.index: false` already made it noindex, and a meta-refresh performs
38
+ the hop with JavaScript off. The refresh is emitted inside <noscript>
39
+ BELOW: with JS on, the redirect layout's own script does the hop and forwards the
40
+ querystring and the fragment, which a refresh cannot, so the two must
41
+ never race. A SITE-RELATIVE destination is absolutized here, since the
42
+ base-path pass only rewrites href/src attributes — and only that one: a
43
+ single leading slash. `//cdn.example.com/x` is already absolute and a
44
+ `mailto:` is not a path at all, so both ship verbatim. -->
45
+ {% assign page-redirect = "" %}
46
+ {%- iftruthy resolved.redirect.url -%}
47
+ {% capture page-redirect %}{{ resolved.redirect.url | omega_liquify | strip }}{% endcapture %}
48
+ {%- assign page-redirect-head1 = page-redirect | slice: 0, 1 -%}
49
+ {%- assign page-redirect-head2 = page-redirect | slice: 0, 2 -%}
50
+ {%- if page-redirect-head1 == "/" and page-redirect-head2 != "//" -%}
51
+ {% capture page-redirect %}{{ resolved.config.url }}{{ page-redirect }}{% endcapture %}
52
+ {%- endif -%}
53
+ {%- endiftruthy -%}
54
+
55
+ <!-- Assign Default Dynamic Variables -->
56
+ <!-- (Asset lookups are computed by the engine: pageAssets.css / pageAssets.js
57
+ resolve this URL's content-hashed bundles from the asset manifest, and
58
+ layoutAssets.css / layoutAssets.js this page's layout chain. Each is a LIST
59
+ — every layer that ships one, in load order. A css entry carries `href`
60
+ for a hashed file, or `inline` for a sheet small enough to print in the
61
+ document instead of fetching, #767.) -->
62
+ {% assign page-title = resolved.meta.title | omega_liquify %}
63
+ {% assign page-description = resolved.meta.description | omega_liquify %}
64
+ {% assign page-image = resolved.meta.image | omega_liquify %}
65
+ {% assign page-og-type = "website" %}
66
+
67
+ <!-- Assign Post Dynamic Variables -->
68
+ {%- iftruthy resolved.post.id -%}
69
+ {% assign page-title = resolved.post.title | omega_liquify %}
70
+ {% assign page-description = resolved.post.description | omega_liquify %}
71
+ {% capture page-image %}{%- omega_post resolved.post.id, "image" -%}{% endcapture %}
72
+ {% assign page-og-type = "article" %}
73
+ {% endiftruthy %}
74
+
75
+ <!-- Assign Member Dynamic Variables -->
76
+ {%- iftruthy resolved.member.id -%}
77
+ {% assign page-title = resolved.member.name | omega_liquify %}
78
+ {% assign page-description = resolved.member.description | omega_liquify %}
79
+ {% capture page-image %}{%- omega_member resolved.member.id, "image" -%}{% endcapture %}
80
+ {% assign page-og-type = "profile" %}
81
+ {% endiftruthy %}
82
+
83
+ <!-- Fallbacks: a value that LIQUIFIES to empty (nothing configured) still needs
84
+ the brand default — `default:` only sees the raw string (footer.html pattern) -->
85
+ {% assign page-title = page-title | strip %}
86
+ {% if page-title == '' or page-title == 'null' %}{% assign page-title = resolved.config.brand.name %}{% endif %}
87
+ {% assign page-description = page-description | strip %}
88
+ {% if page-description == '' or page-description == 'null' %}{% assign page-description = resolved.config.brand.description %}{% endif %}
89
+ {% assign page-image = page-image | strip %}
90
+ {% if page-image == '' or page-image == 'null' %}{% assign page-image = resolved.config.brand.images.social | default: resolved.config.brand.images.brandmark %}{% endif %}
91
+
92
+ <!-- Resolve Image -->
93
+ {% capture page-image %}{% omega_external page-image %}{% endcapture %}
94
+
95
+ {% capture page-ie-script %}
96
+ <style media="screen">
97
+ .main-alert-outdated {
98
+ display: block !important;
99
+ }
100
+ </style>
101
+ {% endcapture %}
102
+
103
+ <!-- Prefetch and Preconnect -->
104
+ <!-- First-party themes VENDOR their webfonts (D5) — no font-CDN warmup by
105
+ default. A theme that CDN-loads faces adds its own preconnect alongside
106
+ its stylesheet link via theme.head.content. -->
107
+ <!-- <link rel="preconnect" href="https://cdn.jsdelivr.net"/> -->
108
+ <!-- <link rel="preconnect" href="https://cdnjs.cloudflare.com"/> -->
109
+ <!-- <link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/> -->
110
+ <!-- <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/> -->
111
+
112
+ <!-- Google Adsense (conditionally loaded) -->
113
+ {% iftruthy resolved.config.advertising.providers.adsense.client %}
114
+ <!-- Google AdSense -->
115
+ <!-- <link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin/> -->
116
+ <!-- <link rel="dns-prefetch" href="https://pagead2.googlesyndication.com"/> -->
117
+
118
+ <!-- Additional AdSense domains if needed -->
119
+ <!-- <link rel="preconnect" href="https://googleads.g.doubleclick.net" crossorigin/> -->
120
+ <!-- <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"/> -->
121
+ <!-- <link rel="preconnect" href="https://tpc.googlesyndication.com" crossorigin/> -->
122
+ <!-- <link rel="dns-prefetch" href="https://tpc.googlesyndication.com"/> -->
123
+ {% endiftruthy %}
124
+
125
+ <!-- Chatsy (if used) -->
126
+ {% iftruthy resolved.config.inbound.chat.providers.chatsy.enabled %}
127
+ <link rel="preconnect" href="https://chatsy.ai" crossorigin/>
128
+ <link rel="dns-prefetch" href="https://chatsy.ai"/>
129
+ {% endiftruthy %}
130
+
131
+ <!-- Analytics providers (#467): the three origins core/js/core/analytics-loader.js
132
+ injects a script from, each on the SAME gate the loader reads — a provider
133
+ with no id is never injected, so warming its origin would be a handshake
134
+ nobody spends. Consent gates the injection, not the warmup: a preconnect
135
+ sends no request and sets no cookie, and by the time a visitor accepts the
136
+ banner the connection is already open.
137
+ No crossorigin here: these are plain <script src> fetches, and an anonymous
138
+ preconnect opens a connection the tag cannot reuse. -->
139
+ {% iftruthy resolved.config.analytics.providers.google.id %}
140
+ <link rel="preconnect" href="https://www.googletagmanager.com"/>
141
+ <link rel="dns-prefetch" href="https://www.googletagmanager.com"/>
142
+ {% endiftruthy %}
143
+ {% iftruthy resolved.config.analytics.providers.meta.id %}
144
+ <link rel="preconnect" href="https://connect.facebook.net"/>
145
+ <link rel="dns-prefetch" href="https://connect.facebook.net"/>
146
+ {% endiftruthy %}
147
+ {% iftruthy resolved.config.analytics.providers.tiktok.id %}
148
+ <link rel="preconnect" href="https://analytics.tiktok.com"/>
149
+ <link rel="dns-prefetch" href="https://analytics.tiktok.com"/>
150
+ {% endiftruthy %}
151
+
152
+ <!-- Firebase (#467): @omega.js/client boots the SDK the moment cloud.config
153
+ carries an apiKey (index.js `_resolveFirebaseConfig()?.apiKey`) — auth
154
+ refreshes the persisted token against securetoken, then the auth module
155
+ reads the account doc from firestore. Both are CORS fetches, so the warmup
156
+ IS anonymous or it is not the connection the SDK reuses. -->
157
+ {% iftruthy resolved.config.cloud.config.apiKey %}
158
+ <link rel="preconnect" href="https://securetoken.googleapis.com" crossorigin/>
159
+ <link rel="dns-prefetch" href="https://securetoken.googleapis.com"/>
160
+ <link rel="preconnect" href="https://firestore.googleapis.com" crossorigin/>
161
+ <link rel="dns-prefetch" href="https://firestore.googleapis.com"/>
162
+ {% endiftruthy %}
163
+
164
+ <!-- Cloudflare Insights (if used) -->
165
+ <!-- <link rel="preconnect" href="https://static.cloudflareinsights.com"/>
166
+ <link rel="dns-prefetch" href="https://static.cloudflareinsights.com"/> -->
167
+
168
+ <!-- Meta -->
169
+ <meta charset="utf-8"/>
170
+
171
+ <!-- Motion gate: reveal styles (core/css/motion) only hide content under this
172
+ stamp, so no-JS pages render fully visible. Inline + first so the stamp
173
+ beats first paint. -->
174
+ <script>document.documentElement.setAttribute('data-omega-motion', 'true');</script>
175
+
176
+ <!-- First-paint reveal starter (#763): the band that IS the first viewport
177
+ animates from the moment it is PARSED, not when the engine's observer
178
+ fires. Inline on purpose — a fetch here is the wait it exists to remove
179
+ (#749 measured ~2.0s of a 2,588ms mobile LCP on that wait).
180
+ The guard is PER ELEMENT, never per band: the parser hands the band over at
181
+ its OPEN tag, when it holds no copy yet, so a band-level "already handled"
182
+ flag stamped nothing and left the real work to DOMContentLoaded — which
183
+ waits for the deferred module bundles, exactly the wait this removes. Each
184
+ mutation batch collects the reveals it just saw (data-omega-inview IS the
185
+ guard) and coalesces TWO frames, so the browser paints the opacity-0 state
186
+ and the CSS transition really runs. The stagger is re-applied to the whole
187
+ container each time (motion.js applyStagger, same 60ms default): parse
188
+ order is document order, so an index never changes and re-setting the same
189
+ value restarts nothing. The engine's observeReveal skips a stamped element,
190
+ so its later boot does nothing in here, and reduced motion needs no guard:
191
+ the reveal lane only hides under no-preference. -->
192
+ <script>
193
+ (() => {
194
+ const HOOK = '[data-omega-first-paint] [data-omega-reveal]:not([data-omega-inview])'
195
+ + ', [data-omega-first-paint][data-omega-reveal]:not([data-omega-inview])';
196
+ const queue = new Set();
197
+ const collect = (node) => {
198
+ if (node.nodeType !== 1) { return; }
199
+ if (node.matches(HOOK)) { queue.add(node); }
200
+ node.querySelectorAll(HOOK).forEach((el) => queue.add(el));
201
+ };
202
+ let frame = 0;
203
+ const schedule = () => {
204
+ if (frame || !queue.size) { return; }
205
+ // TWO frames on purpose: the first one paints what has been collected at
206
+ // opacity 0 (a transition needs that starting state to have been rendered),
207
+ // the second stamps it. Anything the parser adds in between rides the next
208
+ // batch, so every element gets its own painted frame first.
209
+ frame = requestAnimationFrame(() => {
210
+ const batch = [...queue];
211
+ queue.clear();
212
+ frame = requestAnimationFrame(() => {
213
+ frame = 0;
214
+ new Set(batch.map((el) => el.closest('[data-omega-first-paint]'))).forEach((band) => {
215
+ if (!band) { return; }
216
+ band.querySelectorAll('[data-omega-reveal-stagger]').forEach((parent) => {
217
+ const step = Number(parent.getAttribute('data-omega-reveal-stagger')) || 60;
218
+ parent.querySelectorAll('[data-omega-reveal]').forEach((el, index) => {
219
+ el.style.setProperty('--omega-reveal-delay', `${index * step}ms`);
220
+ });
221
+ });
222
+ });
223
+ batch.forEach((el) => el.setAttribute('data-omega-inview', 'true'));
224
+ schedule();
225
+ });
226
+ });
227
+ };
228
+ const observer = new MutationObserver((records) => {
229
+ records.forEach((record) => record.addedNodes.forEach(collect));
230
+ schedule();
231
+ });
232
+ observer.observe(document.documentElement, { childList: true, subtree: true });
233
+ // The backstop, for anything the parser was still emitting at the last frame.
234
+ document.addEventListener('DOMContentLoaded', () => {
235
+ observer.disconnect();
236
+ collect(document.documentElement);
237
+ schedule();
238
+ });
239
+ })();
240
+ </script>
241
+
242
+ <!-- First-paint script (#585): the reveal starter, in its own tiny bundle.
243
+ A deferred module, so it downloads in parallel with the stylesheet and runs
244
+ the moment the DOM is parsed — ahead of the main bundle's module in the
245
+ foot, and independent of images, fonts and firebase. Booting reveals from
246
+ the main bundle meant the hero stayed blank for the whole JS download.
247
+ core/js/first-paint.js is the seam; keep it small. -->
248
+ <script type="module" src="{{ assetManifest.js.firstPaint }}"></script>
249
+
250
+ <meta name="viewport" content="{{ page-viewport }}"/>
251
+ <meta name="HandheldFriendly" content="True"/>
252
+ <meta name="MobileOptimized" content="320"/>
253
+ <meta name="generator" content="OMEGA"/>
254
+ <meta name="author" content="{{ resolved.config.brand.name }}"/>
255
+ <meta name="copyright" content="{{ site.characters.copyright }} {{ site.omega.date.year }} {{ resolved.config.brand.name }}">
256
+
257
+ <!-- Referrer -->
258
+ <meta name="referrer" content="{{ page-referrer }}"/>
259
+
260
+ <!-- Canonical (a redirect page's is its DESTINATION, #466) -->
261
+ <link rel="canonical" href="{% if page-redirect != '' %}{{ page-redirect }}{% else %}{{ resolved.config.url }}{{ page.url }}{% endif %}"/>
262
+
263
+ <!-- Meta refresh: the no-JS half of a redirect page. In <noscript> on purpose
264
+ — the redirect layout's script forwards the querystring and the fragment,
265
+ so it must win whenever it can run at all. -->
266
+ {%- if page-redirect != '' -%}
267
+ <noscript><meta http-equiv="refresh" content="0; url={{ page-redirect }}"/></noscript>
268
+ {%- endif -%}
269
+
270
+ <!-- Robots -->
271
+ <meta name="robots" content="{{ page-robots }}"/>
272
+
273
+ <!-- Keywords -->
274
+ <meta name="keywords" content="{{ page-keywords }}"/>
275
+
276
+ <!-- Web app manifest (part of the minted favicon set — static-assets channel;
277
+ no minted set → no link, a virgin brand serves zero dangling refs) -->
278
+ {% if assetManifest.favicons %}
279
+ <link rel="manifest" href="{{ favicon-path | append: '/site.webmanifest' | omega_cachebreak }}"/>
280
+ {% endif %}
281
+
282
+ <!-- Title -->
283
+ <title>{{ page-title }}</title>
284
+ <meta name="twitter:title" content="{{ page-title }}"/>
285
+ <meta property="og:title" content="{{ page-title }}"/>
286
+
287
+ <!-- Description -->
288
+ <meta name="description" content="{{ page-description }}"/>
289
+ <meta name="twitter:description" content="{{ page-description }}"/>
290
+ <meta property="og:description" content="{{ page-description }}"/>
291
+
292
+ <!-- Image -->
293
+ <meta name="twitter:image" content="{{ page-image }}"/>
294
+ <meta property="og:image" content="{{ page-image }}"/>
295
+ <meta property="og:image:width" content="{{ resolved.meta.og_image_width | default: '1200' }}"/>
296
+ <meta property="og:image:height" content="{{ resolved.meta.og_image_height | default: '630' }}"/>
297
+
298
+ <!-- OG: Twitter -->
299
+ <meta name="twitter:card" content="{{ resolved.meta.twitter_card | default: 'summary_large_image' }}"/>
300
+ <meta name="twitter:site" content="@{{ resolved.config.socials.twitter.handle | default: resolved.config.socials.twitter }}"/>
301
+ <meta name="twitter:widgets:theme" content="light"/>
302
+
303
+ <!-- OG: Facebook / Open Graph -->
304
+ <meta property="og:url" content="{{ resolved.config.url }}{{ page.url }}"/>
305
+ <meta property="og:type" content="{{ page-og-type }}"/>
306
+ {% assign page-translation-default = resolved.config.translation.default | default: 'en' %}
307
+ <meta property="og:locale" content="{{ ogLocale }}"/>
308
+ <meta property="og:site_name" content="{{ resolved.config.brand.name }}"/>
309
+
310
+ <!-- Additional SEO Tags -->
311
+ <meta property="article:author" content="{{ resolved.config.brand.name }}"/>
312
+ <meta property="article:publisher" content="{{ resolved.config.url }}"/>
313
+ <meta name="twitter:creator" content="@{{ resolved.config.socials.twitter.handle | default: resolved.config.socials.twitter }}"/>
314
+ {%- iftruthy resolved.post.id -%}
315
+ <meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}"/>
316
+ <meta property="article:modified_time" content="{{ site.time | date_to_xmlschema }}"/>
317
+ {%- endiftruthy -%}
318
+
319
+ <!-- Main Feed -->
320
+ <link href="{{ resolved.config.url }}/feeds/posts.xml" type="application/atom+xml" rel="alternate" title="{{ resolved.config.brand.name }} Feed"/>
321
+
322
+ <!-- Language Tags -->
323
+ <link rel="alternate" href="{{ resolved.config.url }}{{ page.url }}" hreflang="x-default"/>
324
+ <link rel="alternate" href="{{ resolved.config.url }}{{ page.url }}" hreflang="{{ page-translation-default }}"/>
325
+
326
+ <!-- Favicon — exactly the minted set (manager assets service → .omega/assets/favicon,
327
+ bridged to /assets/images/favicon by the static-assets channel) -->
328
+ {% if assetManifest.favicons %}
329
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ favicon-path | append: '/apple-touch-icon.png' | omega_cachebreak }}"/>
330
+ <link rel="icon" type="image/png" sizes="32x32" href="{{ favicon-path | append: '/favicon-32x32.png' | omega_cachebreak }}"/>
331
+ <link rel="icon" type="image/png" sizes="16x16" href="{{ favicon-path | append: '/favicon-16x16.png' | omega_cachebreak }}"/>
332
+ <link rel="shortcut icon" type="image/x-icon" href="{{ favicon-path | append: '/favicon.ico' | omega_cachebreak }}"/>
333
+ {% endif %}
334
+ <meta name="theme-color" content="{{ resolved.config.favicon.theme-color }}"/>
335
+
336
+ <!-- Browser Support -->
337
+ <!--[if lte IE 11]>
338
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
339
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
340
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
341
+ {{ page-ie-script }}
342
+ <![endif]-->
343
+
344
+ <!-- Font preloads: the first-paint faces the asset lane picked off the
345
+ compiled sheet's @font-face rules (#765) — fetched in parallel with the
346
+ stylesheet so glyphs are ready by the time the layout paints (eliminates
347
+ the system-font flash on cold cache). crossorigin is required for font
348
+ preloads per spec. -->
349
+ {% for font in assetManifest.fontPreloads %}
350
+ <link rel="preload" href="{{ font }}" as="font" type="font/woff2" crossorigin/>
351
+ {% endfor %}
352
+
353
+ <!-- CSS Bundles: content-hashed by the asset pipeline, mapped via the manifest.
354
+ The main sheet does NOT render-block (#750): the asset lane extracts its
355
+ first-paint subset (tokens, shell chrome, nav, hero) and it is inlined
356
+ here, then the full sheet loads through rel=preload and swaps itself into
357
+ the cascade on load. The <link> keeps its document position, so cascade
358
+ order never moves — the layout and page sheets below still win over it.
359
+ <noscript> carries the plain sheet for a visitor with JS off.
360
+ Note: media="print" onload="this.media='all'" does NOT improve performance.
361
+ A dev build extracts nothing (that lane never purges either), so there the
362
+ head keeps the plain blocking link — no flash while you work. The dev
363
+ manifest carries '' and Liquid's `if` reads '' as true, hence iftruthy. -->
364
+ {% iftruthy assetManifest.css.critical %}
365
+ <style>{{ assetManifest.css.critical }}</style>
366
+ <link rel="preload" as="style" href="{{ assetManifest.css.main }}" onload="this.onload=null;this.rel='stylesheet'"/>
367
+ <noscript><link rel="stylesheet" type="text/css" href="{{ assetManifest.css.main }}"/></noscript>
368
+ {% endiftruthy %}
369
+ {% iffalsy assetManifest.css.critical %}
370
+ <link rel="stylesheet" type="text/css" href="{{ assetManifest.css.main }}"/>
371
+ {% endiffalsy %}
372
+
373
+ <!-- Then this page's LAYOUT sheets: one per layout in the chain, outermost
374
+ first (css/layouts/<layout>.scss). A sheet under the lane's byte budget
375
+ arrives as css TEXT and prints here as a <style> block instead of a link
376
+ (#767): the request queues behind the HTML and the font preloads, which
377
+ cost about a second of first paint however small the sheet is. The block
378
+ stands exactly where the link stood, so the cascade never moves. -->
379
+ {% for layoutCss in layoutAssets.css %}
380
+ {% if layoutCss.inline %}<style>{{ layoutCss.inline }}</style>
381
+ {% else %}<link rel="stylesheet" type="text/css" href="{{ layoutCss.href }}"/>
382
+ {% endif %}
383
+ {% endfor %}
384
+
385
+ <!-- Then the page-specific bundles: EVERY layer that ships a sheet for this
386
+ URL, in layer order — core, then the theme, then the consumer (#624). One
387
+ rule, the same one the page JS follows: nothing replaces anything, the
388
+ later sheet decorates the earlier one by winning the cascade. A layer with
389
+ no sheet for this path simply contributes nothing. -->
390
+ {% for pageCss in pageAssets.css %}
391
+ {% if pageCss.inline %}<style>{{ pageCss.inline }}</style>
392
+ {% else %}<link rel="stylesheet" type="text/css" href="{{ pageCss.href }}"/>
393
+ {% endif %}
394
+ {% endfor %}
395
+
396
+ <!-- Brand accent tokens: derived from brand.color at build (src/brand-tokens.js);
397
+ emitted AFTER the bundles so the ramps win the cascade over the token sheet's
398
+ placeholders. Two ramps — light plus a legibility-lifted dark variant —
399
+ stamped with the SAME plumbing as the token sheet (OS preference carries,
400
+ the appearance.js data-bs-theme stamp beats it both ways). Values are
401
+ regenerated from parsed channels — config strings never pass through
402
+ verbatim. -->
403
+ {% iftruthy site.brandTokens %}
404
+ {% capture brand-ramp-light %}--omega-accent:{{ site.brandTokens.accent }};--omega-accent-hover:{{ site.brandTokens.accentHover }};--omega-accent-active:{{ site.brandTokens.accentActive }};--omega-accent-subtle:{{ site.brandTokens.accentSubtle }};--omega-accent-ink:{{ site.brandTokens.accentInk }};--omega-accent-ring:{{ site.brandTokens.accentRing }}{% endcapture %}
405
+ {% capture brand-ramp-dark %}--omega-accent:{{ site.brandTokens.dark.accent }};--omega-accent-hover:{{ site.brandTokens.dark.accentHover }};--omega-accent-active:{{ site.brandTokens.dark.accentActive }};--omega-accent-subtle:{{ site.brandTokens.dark.accentSubtle }};--omega-accent-ink:{{ site.brandTokens.dark.accentInk }};--omega-accent-ring:{{ site.brandTokens.dark.accentRing }}{% endcapture %}
406
+ <style>
407
+ :root { {{ brand-ramp-light }} }
408
+ @media (prefers-color-scheme: dark) { :root { {{ brand-ramp-dark }} } }
409
+ :root[data-bs-theme='dark'] { {{ brand-ramp-dark }} }
410
+ :root[data-bs-theme='light'] { {{ brand-ramp-light }} }
411
+ </style>
412
+ {% endiftruthy %}
413
+
414
+ <!-- Style - Scripts are Disabled -->
415
+ <noscript>
416
+ {{ page-ie-script }}
417
+ </noscript>
418
+
419
+ <!-- Theme - Injected head -->
420
+ {{ resolved.config.theme.head.content | omega_content_format }}
421
+
422
+ <!-- Page - Injected head -->
423
+ {{ resolved.head.content | omega_content_format }}
@@ -0,0 +1,33 @@
1
+ {% comment %}
2
+ Per-unit pricing math — shared by every theme's pricing layout. Jekyll
3
+ includes share the caller's variable scope, so the assigns land in the
4
+ calling template.
5
+
6
+ In: include.plan — a composed resolved.pricing.plans item
7
+ resolved.pricing.price_per_unit — consumer knob { enabled, feature_id, label }
8
+
9
+ Out: monthly_price_per_unit — $/unit at monthly billing (nil unless computable)
10
+ annual_price_per_unit — $/unit at annual billing, monthly-equivalent
11
+
12
+ Only computes for paid plans whose target feature resolves to a usable
13
+ positive number (guards the divided_by). Re-assigned on every call so loop
14
+ iterations never see a previous plan's values.
15
+ {% endcomment %}
16
+
17
+ {% assign monthly_price_per_unit = nil %}
18
+ {% assign annual_price_per_unit = nil %}
19
+ {% assign _ppu_value = nil %}
20
+
21
+ {% if include.plan.prices.monthly > 0 %}
22
+ {% for _ppu_feature in include.plan.features %}
23
+ {% if _ppu_feature.id == resolved.pricing.price_per_unit.feature_id %}
24
+ {% assign _ppu_value = _ppu_feature.value %}
25
+ {% break %}
26
+ {% endif %}
27
+ {% endfor %}
28
+ {% if _ppu_value and _ppu_value > 0 %}
29
+ {% assign monthly_price_per_unit = include.plan.prices.monthly | times: 1.0 | divided_by: _ppu_value | round: 2 %}
30
+ {% assign _ppu_annual_monthly = include.plan.prices.annually | divided_by: 12.0 %}
31
+ {% assign annual_price_per_unit = _ppu_annual_monthly | divided_by: _ppu_value | round: 2 %}
32
+ {% endif %}
33
+ {% endif %}
@@ -0,0 +1,94 @@
1
+ {% comment %}
2
+ One resolved library entry's BODY (#540): every demo variant STACKED — its
3
+ label, an Open-frame link, the embedded frame, then its options — followed by
4
+ the args reference the entry's own schema generates.
5
+
6
+ Rendered by `defaults/showcase/entry.html`, the ONE generator behind both
7
+ galleries (#602): a section entry and a component entry are the same page
8
+ wearing kind-aware urls, so neither kind can drift into documenting itself
9
+ differently. The caller owns the HEAD above this.
10
+
11
+ Docs display stays RAW: argsJson, defaultsJson and the descriptions arrive
12
+ HTML-escaped from the collector, printed verbatim, never liquified. The
13
+ frames are #463's — same lazy loading, same min-height fallback, same
14
+ `data-omega-showcase-frame` autosize hook. Their URLs come off the variant
15
+ itself (#602): the library computes each kind's gallery paths, so this
16
+ include never composes one and cannot disagree with the frame page's own
17
+ permalink.
18
+
19
+ In: include.entry — the sectionLibrary entry to render
20
+ include.prefix — panel id prefix ('variant-'), the rail's anchor
21
+ target for each variant
22
+ include.heading — tag for the variant/Args headings, so the document
23
+ outline stays ordered under either caller's head
24
+ include.subheading — tag one level under it (the Options label)
25
+ {% endcomment %}
26
+ {% assign showcase_entry = include.entry %}
27
+
28
+ {% if showcase_entry.demo.size > 0 %}
29
+ <div data-omega-showcase-panels>
30
+ {% for variant in showcase_entry.demo %}
31
+ {% comment %} scroll-margin clears the fixed masthead, so a rail anchor
32
+ lands on the variant's own label, not behind the nav. {% endcomment %}
33
+ <section id="{{ include.prefix }}{{ variant.slug }}" class="mb-4" style="scroll-margin-top: 5.5rem;" data-omega-showcase-variant="{{ variant.slug }}">
34
+ <div class="d-flex flex-wrap align-items-center gap-2 mb-3">
35
+ <span class="badge text-bg-secondary">demo</span>
36
+ <{{ include.heading }} class="h5 mb-0">{{ variant.label }}</{{ include.heading }}>
37
+ <a href="{{ variant.url }}" class="small ms-auto text-decoration-none" target="_blank" rel="noopener">Open frame &rarr;</a>
38
+ </div>
39
+ <iframe
40
+ class="w-100 border rounded"
41
+ src="{{ variant.url }}"
42
+ title="{{ variant.label }}"
43
+ loading="lazy"
44
+ style="min-height: 640px;"
45
+ data-omega-showcase-frame></iframe>
46
+ <{{ include.subheading }} class="h6 text-uppercase text-muted mt-4 mb-2">Options</{{ include.subheading }}>
47
+ {% if variant.argsJson != "" %}
48
+ {% comment %} argsJson arrives HTML-escaped from the collector — print verbatim {% endcomment %}
49
+ <pre class="border rounded p-3 mb-0 small overflow-auto"><code>{{ variant.argsJson }}</code></pre>
50
+ {% else %}
51
+ <p class="text-muted small mb-0">No args — the entry's own defaults, as they ship.</p>
52
+ {% endif %}
53
+ </section>
54
+ {% endfor %}
55
+ </div>
56
+ {% else %}
57
+ <p class="text-muted">
58
+ No demo data: this entry documents its args only (lookup-driven entries render from live site content, which a gallery page can't fabricate).
59
+ </p>
60
+ {% endif %}
61
+
62
+ <!-- ═══ Args reference (generated from the schema) ═══ -->
63
+ <{{ include.heading }} class="h5 border-top pt-4 mb-3">Args</{{ include.heading }}>
64
+ {% if showcase_entry.argsTable.size > 0 %}
65
+ <div class="table-responsive">
66
+ <table class="table align-middle">
67
+ <thead>
68
+ <tr>
69
+ <th>Name</th>
70
+ <th>Type</th>
71
+ <th>Description</th>
72
+ </tr>
73
+ </thead>
74
+ <tbody>
75
+ {% for row in showcase_entry.argsTable %}
76
+ <tr>
77
+ <td><code>{{ row.name }}</code></td>
78
+ <td>{% if row.type != "" %}<code>{{ row.type }}</code>{% else %}<span class="text-muted">any</span>{% endif %}</td>
79
+ <td class="small">{{ row.description }}</td>
80
+ </tr>
81
+ {% endfor %}
82
+ </tbody>
83
+ </table>
84
+ </div>
85
+ {% else %}
86
+ <p class="text-muted">No declared args.</p>
87
+ {% endif %}
88
+
89
+ {% if showcase_entry.defaultsJson != "" %}
90
+ <details class="mt-2">
91
+ <summary class="fw-bold">Defaults</summary>
92
+ <pre class="border rounded p-3 mt-2 small overflow-auto"><code>{{ showcase_entry.defaultsJson }}</code></pre>
93
+ </details>
94
+ {% endif %}
@@ -0,0 +1,43 @@
1
+ {% comment %}
2
+ A gallery INDEX's listing (#602) — one row per resolved entry of ONE kind,
3
+ grouped by its category folder, linking that entry's own page. The two
4
+ galleries mirror each other, so this is ONE home: a listing that grows a
5
+ column grows it on both, and neither can drift into describing its library
6
+ differently.
7
+
8
+ Auto-generated from the resolved library: a new `_sections`/`_components`
9
+ folder appears here with zero authoring, and each row chips the layer that
10
+ owns it (a consumer override says `consumer`).
11
+
12
+ Development-only surface (the engine gates the whole `defaults/showcase/`
13
+ dir), so it reads the sectionLibrary global directly. Neutral Bootstrap
14
+ vocabulary, like the pages around it.
15
+
16
+ In: include.kind — which library to list ('section' / 'component')
17
+ {% endcomment %}
18
+ {% for group in sectionLibrary.groups %}
19
+ {% if group.kind == include.kind %}
20
+ <div class="d-flex align-items-baseline gap-2 border-bottom pb-2 mb-3">
21
+ <h2 class="h5 mb-0 text-capitalize">{{ group.kind }}s</h2>
22
+ <code class="text-muted">{{ group.category }}/</code>
23
+ </div>
24
+
25
+ <ul class="list-unstyled mb-4">
26
+ {% for entry in group.entries %}
27
+ <li class="border-bottom py-3">
28
+ <a href="{{ entry.url }}" class="d-flex align-items-center gap-2 text-decoration-none mb-1">
29
+ <code>{{ entry.id }}</code>
30
+ <span class="badge text-bg-secondary ms-auto">{{ entry.source }}</span>
31
+ </a>
32
+ {% comment %} description arrives HTML-escaped from the collector — print verbatim {% endcomment %}
33
+ <p class="small text-muted mb-1">{{ entry.description | truncate: 200 }}</p>
34
+ <p class="small text-body-secondary mb-0">
35
+ {{ entry.argsTable.size }} args
36
+ · {{ entry.demo.size }} demo{% if entry.demo.size != 1 %}s{% endif %}
37
+ {% if entry.inherit.size > 0 %}· inherits {{ entry.inherit | join: ", " }}{% endif %}
38
+ </p>
39
+ </li>
40
+ {% endfor %}
41
+ </ul>
42
+ {% endif %}
43
+ {% endfor %}
@@ -0,0 +1,60 @@
1
+ {% comment %}
2
+ A gallery's navigation rail (#540) — the resolved library as a SIDEBAR: every
3
+ entry OF ONE KIND, grouped the way that gallery's index groups them, and the
4
+ current entry's demo variants nested under it as ANCHOR JUMPS to that
5
+ variant's frame (Ian's QA call: the entry page stacks every variant, so the
6
+ rail scrolls to one — no tab machinery, no reload).
7
+
8
+ Kind-scoped (#602): the two galleries are separate libraries in separate url
9
+ spaces, so a component rail lists components and a section rail lists
10
+ sections. One home for both — and for each gallery's index and entry pages —
11
+ so a rail that grows a group grows it everywhere it appears.
12
+
13
+ The sticky offset clears the site masthead: classy's nav is `position:
14
+ fixed`, and a rail pinned at the viewport top slid under it — taking the
15
+ back link with it, which is what made that link look dead.
16
+
17
+ Development-only surface (the engine gates the injection), so it reads the
18
+ sectionLibrary global directly. Neutral Bootstrap vocabulary, like the pages
19
+ around it — this renders under whichever theme is active.
20
+
21
+ In: include.kind — which library this rail is ('section'/'component')
22
+ include.home — that library's index url
23
+ include.label — that library's name, for the landmark + back link
24
+ include.current — the entry id the page is showing ('' on the index)
25
+ include.variants — that entry's demo variants (empty on the index)
26
+ {% endcomment %}
27
+ <nav class="position-sticky pb-3" style="top: 5.5rem; max-height: calc(100vh - 7rem); overflow-y: auto;" aria-label="{{ include.label }}">
28
+ <a href="{{ include.home }}" class="d-block small text-decoration-none mb-3">&larr; {{ include.label }}</a>
29
+
30
+ {% for group in sectionLibrary.groups %}
31
+ {% if group.kind == include.kind %}
32
+ <p class="text-uppercase small fw-bold text-muted mb-1">{{ group.category }}/</p>
33
+ <ul class="list-unstyled mb-3">
34
+ {% for item in group.entries %}
35
+ {% assign is_current = false %}
36
+ {% if item.id == include.current %}
37
+ {% assign is_current = true %}
38
+ {% endif %}
39
+ <li>
40
+ <a href="{{ item.url }}"
41
+ class="d-block small py-1 text-decoration-none{% if is_current %} fw-bold{% else %} text-body-secondary{% endif %}"
42
+ {% if is_current %}aria-current="page"{% endif %}>{{ item.id }}</a>
43
+
44
+ {% comment %} The current entry's variants are ANCHOR JUMPS: every
45
+ frame is on the page already, so a rail item scrolls to its own. {% endcomment %}
46
+ {% if is_current and include.variants.size > 0 %}
47
+ <ul class="list-unstyled border-start ms-1 ps-2 mb-2">
48
+ {% for variant in include.variants %}
49
+ <li>
50
+ <a href="#variant-{{ variant.slug }}" class="d-block small py-1 text-decoration-none text-body-secondary">{{ variant.label }}</a>
51
+ </li>
52
+ {% endfor %}
53
+ </ul>
54
+ {% endif %}
55
+ </li>
56
+ {% endfor %}
57
+ </ul>
58
+ {% endif %}
59
+ {% endfor %}
60
+ </nav>