@omega.js/extension 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +98 -0
- package/README.md +194 -0
- package/bin/omega +2 -0
- package/bin/omega-extension +2 -0
- package/bin/omg +2 -0
- package/dist/assets/css/bundles/.gitkeep +0 -0
- package/dist/assets/css/components/content/index.scss +5 -0
- package/dist/assets/css/components/options/index.scss +9 -0
- package/dist/assets/css/components/pages/index.scss +5 -0
- package/dist/assets/css/components/popup/index.scss +9 -0
- package/dist/assets/css/core/_animations.scss +64 -0
- package/dist/assets/css/core/_fontawesome.scss +146 -0
- package/dist/assets/css/core/_initialize.scss +23 -0
- package/dist/assets/css/core/_utilities.scss +80 -0
- package/dist/assets/css/omega-extension.scss +43 -0
- package/dist/assets/css/shell/_index.scss +207 -0
- package/dist/assets/css/tokens/_index.scss +166 -0
- package/dist/assets/js/core/app-shell.js +136 -0
- package/dist/assets/js/libs/initialize-tooltips.js +31 -0
- package/dist/assets/js/libs/recaptcha.js +94 -0
- package/dist/assets/js/main.js +4 -0
- package/dist/assets/themes/_template/README.md +115 -0
- package/dist/assets/themes/_template/_config.scss +60 -0
- package/dist/assets/themes/_template/_theme.js +14 -0
- package/dist/assets/themes/_template/_theme.scss +28 -0
- package/dist/assets/themes/_template/css/base/_root.scss +19 -0
- package/dist/assets/themes/_template/css/components/_components.scss +23 -0
- package/dist/assets/themes/base/README.md +5 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
- package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
- package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
- package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
- package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
- package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
- package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
- package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
- package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
- package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
- package/dist/assets/themes/base/_theme.js +13 -0
- package/dist/assets/themes/base/_theme.scss +4 -0
- package/dist/assets/themes/bootstrap/_theme.js +16 -0
- package/dist/assets/themes/bootstrap/_theme.scss +11 -0
- package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
- package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
- package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
- package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
- package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
- package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
- package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
- package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
- package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
- package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
- package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
- package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
- package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
- package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
- package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
- package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
- package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
- package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
- package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
- package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
- package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
- package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
- package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
- package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
- package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
- package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
- package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
- package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
- package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
- package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
- package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
- package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
- package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
- package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
- package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
- package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
- package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
- package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
- package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
- package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
- package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
- package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/dist/assets/themes/classy/README.md +89 -0
- package/dist/assets/themes/classy/_config.scss +245 -0
- package/dist/assets/themes/classy/_theme.js +31 -0
- package/dist/assets/themes/classy/_theme.scss +57 -0
- package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
- package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
- package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
- package/dist/assets/themes/classy/css/base/_root.scss +113 -0
- package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
- package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
- package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
- package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
- package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
- package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
- package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
- package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
- package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
- package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
- package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
- package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
- package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
- package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
- package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
- package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
- package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
- package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
- package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
- package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
- package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
- package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
- package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
- package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
- package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
- package/dist/assets/themes/neobrutalism/README.md +118 -0
- package/dist/assets/themes/neobrutalism/_config.scss +139 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/dist/assets/themes/neobrutalism/_theme.js +24 -0
- package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
- package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
- package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/assets/themes/newsflash/README.md +117 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/dist/assets/themes/newsflash/_config.scss +147 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/dist/assets/themes/newsflash/_theme.js +24 -0
- package/dist/assets/themes/newsflash/_theme.scss +70 -0
- package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
- package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
- package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
- package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
- package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
- package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
- package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
- package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
- package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
- package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
- package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
- package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
- package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
- package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
- package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
- package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/background.js +684 -0
- package/dist/build.js +268 -0
- package/dist/cli-run.js +25 -0
- package/dist/cli.js +30 -0
- package/dist/commands/build.js +67 -0
- package/dist/commands/clean.js +29 -0
- package/dist/commands/deploy.js +97 -0
- package/dist/commands/install.js +58 -0
- package/dist/commands/lib/dependencies.js +33 -0
- package/dist/commands/lib/deploy-precheck.js +57 -0
- package/dist/commands/lib/ensure-target.js +151 -0
- package/dist/commands/lib/push-secrets.js +60 -0
- package/dist/commands/migrate.js +77 -0
- package/dist/commands/test.js +110 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/version.js +12 -0
- package/dist/config/manifest.json +117 -0
- package/dist/config/page-template.html +21 -0
- package/dist/content.js +37 -0
- package/dist/defaults/.github/workflows/publish.yml +86 -0
- package/dist/defaults/.nvmrc +1 -0
- package/dist/defaults/.vscode/settings.json +8 -0
- package/dist/defaults/AGENTS.md +113 -0
- package/dist/defaults/CHANGELOG.md +15 -0
- package/dist/defaults/CLAUDE.md +1 -0
- package/dist/defaults/_.gitignore +75 -0
- package/dist/defaults/config/description.md +46 -0
- package/dist/defaults/config/messages.json +20 -0
- package/dist/defaults/config/omega.json5 +64 -0
- package/dist/defaults/docs/README.md +17 -0
- package/dist/defaults/gulpfile.js +6 -0
- package/dist/defaults/hooks/build/post.js +8 -0
- package/dist/defaults/hooks/build/pre.js +8 -0
- package/dist/defaults/src/assets/css/bundles/.gitkeep +0 -0
- package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
- package/dist/defaults/src/assets/css/components/offscreen/index.scss +4 -0
- package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
- package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
- package/dist/defaults/src/assets/css/main.scss +32 -0
- package/dist/defaults/src/assets/images/.gitkeep +0 -0
- package/dist/defaults/src/assets/js/components/background/index.js +25 -0
- package/dist/defaults/src/assets/js/components/content/index.js +22 -0
- package/dist/defaults/src/assets/js/components/offscreen/index.js +25 -0
- package/dist/defaults/src/assets/js/components/options/index.js +22 -0
- package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
- package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
- package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
- package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
- package/dist/defaults/src/manifest.json +131 -0
- package/dist/defaults/src/views/offscreen/index.html +3 -0
- package/dist/defaults/src/views/options/index.html +8 -0
- package/dist/defaults/src/views/pages/index.html +10 -0
- package/dist/defaults/src/views/popup/index.html +4 -0
- package/dist/defaults/src/views/sidepanel/index.html +4 -0
- package/dist/defaults/test/README.md +41 -0
- package/dist/defaults/test/_init.js +10 -0
- package/dist/defaults/test/boot/externally-connectable.test.js +28 -0
- package/dist/gulp/config/locales.js +12 -0
- package/dist/gulp/main.js +78 -0
- package/dist/gulp/tasks/_.js +18 -0
- package/dist/gulp/tasks/audit.js +222 -0
- package/dist/gulp/tasks/bundle.js +687 -0
- package/dist/gulp/tasks/defaults.js +281 -0
- package/dist/gulp/tasks/distribute.js +172 -0
- package/dist/gulp/tasks/fontawesome.js +25 -0
- package/dist/gulp/tasks/html.js +163 -0
- package/dist/gulp/tasks/icons.js +126 -0
- package/dist/gulp/tasks/package.js +742 -0
- package/dist/gulp/tasks/publish.js +417 -0
- package/dist/gulp/tasks/sass.js +252 -0
- package/dist/gulp/tasks/serve.js +103 -0
- package/dist/gulp/tasks/translate.js +252 -0
- package/dist/gulp/tasks/utils/build-json.js +43 -0
- package/dist/gulp/tasks/utils/template-transform.js +50 -0
- package/dist/gulp/templates/BUILD_INSTRUCTIONS.md +69 -0
- package/dist/index.js +46 -0
- package/dist/lib/affiliatizer.js +224 -0
- package/dist/lib/analytics.js +26 -0
- package/dist/lib/auth-helpers.js +213 -0
- package/dist/lib/extension.js +116 -0
- package/dist/lib/icons.js +36 -0
- package/dist/lib/logger-lite.js +35 -0
- package/dist/lib/logger.js +4 -0
- package/dist/lib/messaging.js +48 -0
- package/dist/lib/safe-install.js +4 -0
- package/dist/lib/theme.js +73 -0
- package/dist/lib/verts.js +68 -0
- package/dist/offscreen.js +31 -0
- package/dist/omega-bin.js +6 -0
- package/dist/options.js +80 -0
- package/dist/page.js +80 -0
- package/dist/popup.js +80 -0
- package/dist/sidepanel.js +80 -0
- package/dist/test/assert.js +4 -0
- package/dist/test/fixtures/consumer-extension/dist/background.js +23 -0
- package/dist/test/fixtures/consumer-extension/dist/manifest.json +20 -0
- package/dist/test/fixtures/consumer-extension/dist/options.html +10 -0
- package/dist/test/fixtures/consumer-extension/dist/popup.bundle.js +5 -0
- package/dist/test/fixtures/consumer-extension/dist/popup.html +12 -0
- package/dist/test/harness/extension/background.js +26 -0
- package/dist/test/harness/extension/manifest.json +27 -0
- package/dist/test/harness/extension/options.html +12 -0
- package/dist/test/harness/extension/popup.html +12 -0
- package/dist/test/harness/extension/sidepanel.html +12 -0
- package/dist/test/index.js +63 -0
- package/dist/test/runner.js +99 -0
- package/dist/test/runners/boot.js +221 -0
- package/dist/test/runners/chromium.js +391 -0
- package/dist/test/runners/helpers.js +24 -0
- package/dist/test/suites/background/messaging.test.js +44 -0
- package/dist/test/suites/background/storage.test.js +46 -0
- package/dist/test/suites/background/sw-context.test.js +49 -0
- package/dist/test/suites/boot/build-json-bake.test.js +80 -0
- package/dist/test/suites/boot/extension-loads.test.js +58 -0
- package/dist/test/suites/build/affiliatizer.test.js +64 -0
- package/dist/test/suites/build/app-launch.test.js +65 -0
- package/dist/test/suites/build/attach-log-file.test.js +99 -0
- package/dist/test/suites/build/auth-emulator-gate.test.js +118 -0
- package/dist/test/suites/build/auth-triggers.test.js +71 -0
- package/dist/test/suites/build/boot-discovery.test.js +134 -0
- package/dist/test/suites/build/boot-timeout.test.js +92 -0
- package/dist/test/suites/build/build-error-notification.test.js +122 -0
- package/dist/test/suites/build/build-json-bake.test.js +302 -0
- package/dist/test/suites/build/build-verb.test.js +138 -0
- package/dist/test/suites/build/bundle-targets.test.js +66 -0
- package/dist/test/suites/build/cache-warming.test.js +44 -0
- package/dist/test/suites/build/cli.test.js +150 -0
- package/dist/test/suites/build/default-boot-test.test.js +100 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +287 -0
- package/dist/test/suites/build/deploy-dispatch.test.js +76 -0
- package/dist/test/suites/build/distribute-task.test.js +111 -0
- package/dist/test/suites/build/ensure-target.test.js +141 -0
- package/dist/test/suites/build/env-delivery.test.js +239 -0
- package/dist/test/suites/build/env-watch.test.js +86 -0
- package/dist/test/suites/build/expect.test.js +48 -0
- package/dist/test/suites/build/exports.test.js +53 -0
- package/dist/test/suites/build/extension-fallback.test.js +82 -0
- package/dist/test/suites/build/framework-deps.test.js +176 -0
- package/dist/test/suites/build/global-handlers.test.js +70 -0
- package/dist/test/suites/build/icon-sheet.test.js +74 -0
- package/dist/test/suites/build/logger-lite.test.js +61 -0
- package/dist/test/suites/build/manager.test.js +249 -0
- package/dist/test/suites/build/mode-helpers.test.js +136 -0
- package/dist/test/suites/build/omega-shell.test.js +103 -0
- package/dist/test/suites/build/omega-tokens.test.js +76 -0
- package/dist/test/suites/build/package-task.test.js +831 -0
- package/dist/test/suites/build/setup-scripts.test.js +172 -0
- package/dist/test/suites/build/strip-dev-blocks.test.js +122 -0
- package/dist/test/suites/build/template-replace.test.js +116 -0
- package/dist/test/suites/build/test-discovery.test.js +64 -0
- package/dist/test/suites/build/test-target-no-match.test.js +119 -0
- package/dist/test/suites/build/theme-resolve.test.js +115 -0
- package/dist/test/suites/build/translate.test.js +85 -0
- package/dist/test/suites/build/url-helpers.test.js +119 -0
- package/dist/test/suites/build/verb-logs.test.js +43 -0
- package/dist/test/suites/build/verts-binding.test.js +67 -0
- package/dist/test/suites/build/wakeup-ping.test.js +90 -0
- package/dist/test/suites/build/wave5-messenger.test.js +80 -0
- package/dist/test/suites/view/options-and-sidepanel.test.js +16 -0
- package/dist/test/suites/view/popup-context.test.js +53 -0
- package/dist/test/suites/view/sidepanel.test.js +16 -0
- package/dist/test/utils/extended-mode-warning.js +13 -0
- package/dist/utils/attach-log-file.js +4 -0
- package/dist/utils/mode-helpers.js +117 -0
- package/dist/utils/url-helpers.js +69 -0
- package/dist/vendor/account/engine.js +182 -0
- package/dist/vendor/account/features.js +220 -0
- package/dist/vendor/account/index.js +53 -0
- package/dist/vendor/account/schema.js +272 -0
- package/dist/vendor/account/subscription.js +38 -0
- package/dist/vendor/config/company.js +31 -0
- package/dist/vendor/config/defaults.js +173 -0
- package/dist/vendor/config/demo.js +18 -0
- package/dist/vendor/config/desktop-artifacts.js +110 -0
- package/dist/vendor/config/edit.js +769 -0
- package/dist/vendor/config/env-delivery.js +145 -0
- package/dist/vendor/config/env-rules.js +93 -0
- package/dist/vendor/config/env-schema.js +1078 -0
- package/dist/vendor/config/env.js +445 -0
- package/dist/vendor/config/hooks.js +97 -0
- package/dist/vendor/config/index.js +237 -0
- package/dist/vendor/config/instances.js +208 -0
- package/dist/vendor/config/load.js +490 -0
- package/dist/vendor/config/merge.js +68 -0
- package/dist/vendor/config/order.js +139 -0
- package/dist/vendor/config/ports.js +374 -0
- package/dist/vendor/config/providers.js +32 -0
- package/dist/vendor/config/repo.js +142 -0
- package/dist/vendor/config/retired-keys.js +430 -0
- package/dist/vendor/config/schema.js +1610 -0
- package/dist/vendor/config/secrets.js +50 -0
- package/dist/vendor/config/seed.js +34 -0
- package/dist/vendor/config/site-global.js +205 -0
- package/dist/vendor/config/validate.js +554 -0
- package/dist/vendor/config/winback.js +61 -0
- package/dist/vendor/devkit/actions-secrets.js +145 -0
- package/dist/vendor/devkit/attach-log-file.js +262 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/clean-dirs.js +28 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/defaults-engine.js +372 -0
- package/dist/vendor/devkit/deploy-precheck.js +54 -0
- package/dist/vendor/devkit/deploy-record.js +180 -0
- package/dist/vendor/devkit/deploy.js +286 -0
- package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
- package/dist/vendor/devkit/env-watch.js +132 -0
- package/dist/vendor/devkit/framework-deps.js +46 -0
- package/dist/vendor/devkit/icons.js +178 -0
- package/dist/vendor/devkit/license.js +155 -0
- package/dist/vendor/devkit/local.js +1905 -0
- package/dist/vendor/devkit/logger.js +128 -0
- package/dist/vendor/devkit/merge-line-files.js +296 -0
- package/dist/vendor/devkit/npm-registry.js +52 -0
- package/dist/vendor/devkit/omega-bin.js +345 -0
- package/dist/vendor/devkit/safe-install.js +18 -0
- package/dist/vendor/devkit/scaffold-guard.js +96 -0
- package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
- package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
- package/dist/vendor/devkit/target-dependencies.js +137 -0
- package/dist/vendor/devkit/target-secrets.js +165 -0
- package/dist/vendor/devkit/test/assert.js +120 -0
- package/dist/vendor/devkit/test/define-cases.js +104 -0
- package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
- package/dist/vendor/devkit/test/runner-core.js +554 -0
- package/dist/vendor/devkit/test/scope.js +162 -0
- package/dist/vendor/devkit/translate/cache.js +84 -0
- package/dist/vendor/devkit/translate/engine.js +243 -0
- package/dist/vendor/devkit/translate/index.js +49 -0
- package/dist/vendor/devkit/translate/languages.js +134 -0
- package/dist/vendor/devkit/translate/providers.js +188 -0
- package/dist/vendor/devkit/update.js +569 -0
- package/docs/affiliatizer.md +81 -0
- package/docs/audit.md +67 -0
- package/docs/auth.md +149 -0
- package/docs/build-system.md +176 -0
- package/docs/cdp-debugging.md +42 -0
- package/docs/cli.md +73 -0
- package/docs/common-mistakes.md +10 -0
- package/docs/components.md +87 -0
- package/docs/css.md +133 -0
- package/docs/defaults.md +72 -0
- package/docs/environment-detection.md +79 -0
- package/docs/extension.md +93 -0
- package/docs/hooks.md +111 -0
- package/docs/icons.md +47 -0
- package/docs/index.md +291 -0
- package/docs/logging.md +33 -0
- package/docs/managers.md +100 -0
- package/docs/offscreen.md +57 -0
- package/docs/publishing.md +182 -0
- package/docs/shared/agent-docs.md +89 -0
- package/docs/shared/analytics.md +612 -0
- package/docs/shared/brands.md +51 -0
- package/docs/shared/breaking-changes.md +497 -0
- package/docs/shared/config.md +1387 -0
- package/docs/shared/deploys.md +215 -0
- package/docs/shared/icons.md +201 -0
- package/docs/shared/local-dev.md +147 -0
- package/docs/shared/logging.md +202 -0
- package/docs/shared/monitoring.md +153 -0
- package/docs/shared/publishing.md +183 -0
- package/docs/shared/rulings.md +34 -0
- package/docs/shared/testing.md +147 -0
- package/docs/shared/theming.md +604 -0
- package/docs/shared/translation.md +291 -0
- package/docs/shared/updates.md +61 -0
- package/docs/templating.md +66 -0
- package/docs/test-boot-layer.md +143 -0
- package/docs/test-framework.md +411 -0
- package/docs/themes.md +89 -0
- package/docs/translations.md +73 -0
- package/docs/verts.md +67 -0
- package/docs/xss-prevention.md +95 -0
- package/package.json +159 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: frontend/core/base
|
|
3
|
+
|
|
4
|
+
# Hero Section — the front-page lead. News voice: the brand IS the publication.
|
|
5
|
+
hero:
|
|
6
|
+
tagline: "{{ resolved.config.brand.name }}: independent journalism"
|
|
7
|
+
headline: "News with a"
|
|
8
|
+
headline_accent: "pulse"
|
|
9
|
+
description: "Sharp reporting and zero noise: the stories that matter, delivered before your coffee gets cold."
|
|
10
|
+
primary_button:
|
|
11
|
+
text: "Read the latest"
|
|
12
|
+
icon: "bolt"
|
|
13
|
+
href: "/blog"
|
|
14
|
+
secondary_button:
|
|
15
|
+
text: "Get the newsletter"
|
|
16
|
+
icon: "envelope"
|
|
17
|
+
href: "#signup"
|
|
18
|
+
|
|
19
|
+
# The Latest — the front-page feed (posts-driven; newsflash-specific section)
|
|
20
|
+
latest:
|
|
21
|
+
superheadline:
|
|
22
|
+
text: "The latest"
|
|
23
|
+
view_all:
|
|
24
|
+
text: "View the firehose"
|
|
25
|
+
href: "/blog"
|
|
26
|
+
|
|
27
|
+
# More to Chew On — extra stories before the big read (posts-driven)
|
|
28
|
+
more_stories:
|
|
29
|
+
superheadline:
|
|
30
|
+
text: "More to chew on"
|
|
31
|
+
|
|
32
|
+
# The Rundown — the newsroom's three-step playbook (newsflash-specific section)
|
|
33
|
+
rundown:
|
|
34
|
+
superheadline:
|
|
35
|
+
text: "The rundown"
|
|
36
|
+
headline: "Journalism worth your"
|
|
37
|
+
headline_accent: "morning"
|
|
38
|
+
subheadline: "What you get from the {{ resolved.config.brand.name }} newsroom every single day"
|
|
39
|
+
items:
|
|
40
|
+
- title: "Original reporting"
|
|
41
|
+
description: "Stories researched and written by people who pick up the phone, not rewrites of someone else's scoop."
|
|
42
|
+
- title: "The daily briefing"
|
|
43
|
+
description: "The five stories that actually matter, distilled into a five-minute read and delivered before sunrise."
|
|
44
|
+
- title: "Deep dives"
|
|
45
|
+
description: "Long-form features that follow the money, the people, and the consequences long after the headlines move on."
|
|
46
|
+
|
|
47
|
+
# Newsletter Rail (sidebar signup)
|
|
48
|
+
newsletter:
|
|
49
|
+
headline: "{{ resolved.config.brand.name }}, daily."
|
|
50
|
+
subheadline: "One ridiculously good email every morning. The stories that matter, minus the noise."
|
|
51
|
+
button:
|
|
52
|
+
text: "Join"
|
|
53
|
+
form:
|
|
54
|
+
placeholder: "you@example.com"
|
|
55
|
+
disclaimer: "Free forever. Unsubscribe anytime."
|
|
56
|
+
|
|
57
|
+
# The Desks — coverage areas (newsflash-specific section)
|
|
58
|
+
desks:
|
|
59
|
+
superheadline:
|
|
60
|
+
text: "The desks"
|
|
61
|
+
headline: "Coverage with"
|
|
62
|
+
headline_accent: "teeth"
|
|
63
|
+
subheadline: "Three desks, one standard: report it right, write it sharp."
|
|
64
|
+
cta_button:
|
|
65
|
+
text: "Browse all stories"
|
|
66
|
+
icon: "arrow-right"
|
|
67
|
+
href: "/blog"
|
|
68
|
+
items:
|
|
69
|
+
- title: "Tech"
|
|
70
|
+
description: "The machines, the makers, and the money rewiring how we live and work."
|
|
71
|
+
icon: "microchip"
|
|
72
|
+
href: "/blog/categories/tech"
|
|
73
|
+
- title: "Culture"
|
|
74
|
+
description: "What we watch, wear, and argue about, and why it matters more than you think."
|
|
75
|
+
icon: "masks-theater"
|
|
76
|
+
href: "/blog/categories/culture"
|
|
77
|
+
- title: "Money"
|
|
78
|
+
description: "Markets, paychecks, and the economics hiding inside everyday decisions."
|
|
79
|
+
icon: "chart-line"
|
|
80
|
+
href: "/blog/categories/money"
|
|
81
|
+
|
|
82
|
+
# Stats Section — the masthead numbers
|
|
83
|
+
stats:
|
|
84
|
+
- number: "2M+"
|
|
85
|
+
label: "Monthly readers"
|
|
86
|
+
sublabel: "Across 120+ countries"
|
|
87
|
+
- number: "12k+"
|
|
88
|
+
label: "Stories published"
|
|
89
|
+
sublabel: "And counting"
|
|
90
|
+
- number: "5 min"
|
|
91
|
+
label: "Daily briefing"
|
|
92
|
+
sublabel: "Fully caught up"
|
|
93
|
+
- number: "0"
|
|
94
|
+
label: "Clickbait headlines"
|
|
95
|
+
sublabel: "We checked"
|
|
96
|
+
|
|
97
|
+
# CTA Section — the big-read band
|
|
98
|
+
cta:
|
|
99
|
+
superheadline:
|
|
100
|
+
text: "The big read"
|
|
101
|
+
headline: "Don't just scroll the news."
|
|
102
|
+
headline_accent: "Understand it."
|
|
103
|
+
subheadline: "Join the readers who start their day with {{ resolved.config.brand.name }}: reporting with teeth, context with heart, and zero filler."
|
|
104
|
+
primary_button:
|
|
105
|
+
text: "Start reading"
|
|
106
|
+
icon: "bolt"
|
|
107
|
+
href: "/blog"
|
|
108
|
+
secondary_button:
|
|
109
|
+
text: "Get the newsletter"
|
|
110
|
+
icon: "envelope"
|
|
111
|
+
href: "#signup"
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
{% comment %}
|
|
115
|
+
NEWSFLASH HOMEPAGE
|
|
116
|
+
A newspaper front page: a featured-story hero (publication pitch left, the
|
|
117
|
+
latest post as the framed cover story right), top-story tiles, "the latest"
|
|
118
|
+
as an editorial post feed (square art + kicker + headline + dek) with a
|
|
119
|
+
sticky rail sidebar (most-read + newsletter signup), "the rundown" as the
|
|
120
|
+
newsroom's numbered three-step playbook, coverage-desk cards (linked to
|
|
121
|
+
their category pages), a masthead numbers strip, "more to chew on" story
|
|
122
|
+
tiles, and a dark big-read CTA band. (Reader quotes live on the about page.)
|
|
123
|
+
The rundown and desks bands render through newsflash-layer sections;
|
|
124
|
+
marketing/stats and marketing/cta fall through to the BASE sections
|
|
125
|
+
(omega-* markup, restyled by this theme's scss), and the rail signup card
|
|
126
|
+
is the newsletter-cta fork's rail variant (managed form, §7-bound); only
|
|
127
|
+
the posts-driven bands are still rendered by this layout. The
|
|
128
|
+
frontmatter defaults are NEWS-genre copy — a theme's defaults are part of
|
|
129
|
+
its identity (see docs/web/sections.md: theme defaults are theme
|
|
130
|
+
identity). Universal sections (hero, stats, cta, newsletter) keep
|
|
131
|
+
the shared key names; `latest`, `rundown`, `desks`, and `more_stories` are
|
|
132
|
+
newsflash-specific. Posts-driven sections disappear gracefully when
|
|
133
|
+
site.posts is empty.
|
|
134
|
+
{% endcomment %}
|
|
135
|
+
|
|
136
|
+
<!-- ============================================ -->
|
|
137
|
+
<!-- HERO — front page lead: pitch left, cover story right -->
|
|
138
|
+
<!-- ============================================ -->
|
|
139
|
+
<section class="newsflash-hero pb-4">
|
|
140
|
+
<div class="container">
|
|
141
|
+
<div class="row align-items-center g-4 g-lg-5">
|
|
142
|
+
<!-- Left: kicker + serif headline + dek + actions -->
|
|
143
|
+
<div class="col-lg-6" data-lazy="@class animation-slide-up">
|
|
144
|
+
{% iftruthy resolved.hero.tagline %}
|
|
145
|
+
<span class="newsflash-kicker">{{ resolved.hero.tagline }}</span>
|
|
146
|
+
{% endiftruthy %}
|
|
147
|
+
<h1 class="newsflash-hero__title my-3">
|
|
148
|
+
{{ resolved.hero.headline }}
|
|
149
|
+
{% iftruthy resolved.hero.headline_accent %}
|
|
150
|
+
<span class="newsflash-accent">{{ resolved.hero.headline_accent }}</span>
|
|
151
|
+
{% endiftruthy %}
|
|
152
|
+
</h1>
|
|
153
|
+
{% iftruthy resolved.hero.description %}
|
|
154
|
+
<p class="lead mb-4" style="max-width: 34em;">{{ resolved.hero.description }}</p>
|
|
155
|
+
{% endiftruthy %}
|
|
156
|
+
<div class="d-flex flex-wrap gap-3">
|
|
157
|
+
{% iftruthy resolved.hero.primary_button %}
|
|
158
|
+
<a href="{{ resolved.hero.primary_button.href }}" class="btn btn-primary btn-lg">
|
|
159
|
+
<i class="fa-solid fa-{{ resolved.hero.primary_button.icon }} me-2"></i>{{ resolved.hero.primary_button.text }}
|
|
160
|
+
</a>
|
|
161
|
+
{% endiftruthy %}
|
|
162
|
+
{% iftruthy resolved.hero.secondary_button %}
|
|
163
|
+
<a href="{{ resolved.hero.secondary_button.href }}" class="btn btn-outline-dark btn-lg">
|
|
164
|
+
<i class="fa-solid fa-{{ resolved.hero.secondary_button.icon }} me-2"></i>{{ resolved.hero.secondary_button.text }}
|
|
165
|
+
</a>
|
|
166
|
+
{% endiftruthy %}
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<!-- Right: the cover story (latest post) — or a cover-art block pre-content -->
|
|
171
|
+
<div class="col-lg-6" data-lazy="@class animation-slide-up">
|
|
172
|
+
{% if site.posts.size > 0 %}
|
|
173
|
+
{% assign featured = site.posts.first %}
|
|
174
|
+
<a href="{{ resolved.config.url }}{{ featured.url }}" class="newsflash-hero__art d-block position-relative text-decoration-none text-body">
|
|
175
|
+
<span class="badge bg-body-tertiary newsflash-hero__chip">Featured</span>
|
|
176
|
+
<div class="newsflash-frame shadow">
|
|
177
|
+
{%- omega_post featured.post.id, "image-tag", class="w-100" -%}
|
|
178
|
+
</div>
|
|
179
|
+
<div class="mt-3">
|
|
180
|
+
{% if featured.post.categories[0] %}
|
|
181
|
+
<span class="newsflash-kicker mb-1">{{ featured.post.categories[0] | omega_title_case }}</span>
|
|
182
|
+
{% endif %}
|
|
183
|
+
<h2 class="h4 mb-1">{{ featured.post.title }}</h2>
|
|
184
|
+
{% capture featured_rt %}{% omega_readtime featured.content %}{% endcapture %}
|
|
185
|
+
{% component "news/byline", author: featured.post.author, date: featured.date | date: "%b %d, %Y", readtime: featured_rt %}
|
|
186
|
+
</div>
|
|
187
|
+
</a>
|
|
188
|
+
{% else %}
|
|
189
|
+
<div class="newsflash-hero__art position-relative">
|
|
190
|
+
<span class="badge bg-body-tertiary newsflash-hero__chip">Featured</span>
|
|
191
|
+
<div class="newsflash-frame shadow">
|
|
192
|
+
<div class="newsflash-hero__cover ratio ratio-4x3"></div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
{% endif %}
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</section>
|
|
200
|
+
|
|
201
|
+
<!-- ============================================ -->
|
|
202
|
+
<!-- TOP STORIES — three editorial tiles -->
|
|
203
|
+
<!-- ============================================ -->
|
|
204
|
+
{% if site.posts.size > 1 %}
|
|
205
|
+
<section class="pt-4">
|
|
206
|
+
<div class="container">
|
|
207
|
+
{% component "heading/rule-head", text: "Top stories", link_text: "View all", link_href: resolved.config.url | append: "/blog" %}
|
|
208
|
+
<div class="row g-4">
|
|
209
|
+
{% for post in site.posts offset: 1 limit: 3 %}
|
|
210
|
+
<div class="col-md-4" data-lazy="@class animation-slide-up">
|
|
211
|
+
{% capture rt %}{% omega_readtime post.content %}{% endcapture %}
|
|
212
|
+
{% component "news/story-card", url: resolved.config.url | append: post.url, id: post.post.id, kicker: post.post.categories[0] | default: "" | omega_title_case, title: post.post.title, author: post.post.author, date: post.date | date: "%b %d, %Y", readtime: rt, generated: post.generated %}
|
|
213
|
+
</div>
|
|
214
|
+
{% endfor %}
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
</section>
|
|
218
|
+
{% endif %}
|
|
219
|
+
|
|
220
|
+
<!-- ============================================ -->
|
|
221
|
+
<!-- THE LATEST — editorial post feed + sticky rail sidebar -->
|
|
222
|
+
<!-- (mirrors the front-page feed: square art, kicker, headline, dek, byline) -->
|
|
223
|
+
<!-- ============================================ -->
|
|
224
|
+
{% comment %}
|
|
225
|
+
Post slots are strictly deduplicated down the page: hero = post 1,
|
|
226
|
+
top stories = 2-4, this feed = 5-9, most-read rail = 10-14, "more to chew
|
|
227
|
+
on" = 15-17. Sections disappear gracefully when the site doesn't have
|
|
228
|
+
enough posts to fill their slice (only the ticker repeats the latest —
|
|
229
|
+
it's chrome, not content).
|
|
230
|
+
{% endcomment %}
|
|
231
|
+
{% if site.posts.size > 4 %}
|
|
232
|
+
<section class="newsflash-feed">
|
|
233
|
+
<div class="container">
|
|
234
|
+
{% component "heading/rule-head", text: resolved.latest.superheadline.text, link_text: resolved.latest.view_all.text, link_href: resolved.latest.view_all.href %}
|
|
235
|
+
|
|
236
|
+
<div class="row g-4 g-lg-5">
|
|
237
|
+
<!-- The feed: posts 5-9 (hero + top stories show 1-4) -->
|
|
238
|
+
<div class="col-lg-7">
|
|
239
|
+
<div>
|
|
240
|
+
{% for post in site.posts offset: 4 limit: 5 %}
|
|
241
|
+
<a href="{{ resolved.config.url }}{{ post.url }}" class="newsflash-feed__item" data-lazy="@class animation-slide-up">
|
|
242
|
+
<div class="newsflash-frame">
|
|
243
|
+
{%- omega_post post.post.id, "image-tag", class="w-100" -%}
|
|
244
|
+
</div>
|
|
245
|
+
<div>
|
|
246
|
+
{% if post.post.categories[0] %}
|
|
247
|
+
<span class="newsflash-kicker mb-1">{{ post.post.categories[0] | omega_title_case }}</span>
|
|
248
|
+
{% endif %}
|
|
249
|
+
<h3 class="h4 my-2">{{ post.post.title }}</h3>
|
|
250
|
+
{% iftruthy post.post.description %}
|
|
251
|
+
<p class="text-body-secondary mb-2">{{ post.post.description }}</p>
|
|
252
|
+
{% endiftruthy %}
|
|
253
|
+
{% capture rt %}{% omega_readtime post.content %}{% endcapture %}
|
|
254
|
+
{% component "news/byline", author: post.post.author, date: post.date | date: "%b %d, %Y", readtime: rt %}
|
|
255
|
+
</div>
|
|
256
|
+
</a>
|
|
257
|
+
{% endfor %}
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<!-- The rail -->
|
|
262
|
+
<aside class="col-lg-5 col-xl-4 ms-auto">
|
|
263
|
+
<div class="newsflash-rail d-flex flex-column gap-4">
|
|
264
|
+
{% comment %} Most read: posts 10-14 — the next slice after the feed (no duplicates) {% endcomment %}
|
|
265
|
+
{% if site.posts.size > 9 %}
|
|
266
|
+
<div class="card p-4" data-lazy="@class animation-slide-up">
|
|
267
|
+
<div class="newsflash-rail__title">Most read</div>
|
|
268
|
+
<ol class="newsflash-rail__mostread list-unstyled mb-0">
|
|
269
|
+
{% for post in site.posts offset: 9 limit: 5 %}
|
|
270
|
+
<li>
|
|
271
|
+
<a href="{{ resolved.config.url }}{{ post.url }}">{{ post.post.title }}</a>
|
|
272
|
+
</li>
|
|
273
|
+
{% endfor %}
|
|
274
|
+
</ol>
|
|
275
|
+
</div>
|
|
276
|
+
{% endif %}
|
|
277
|
+
|
|
278
|
+
{% iftruthy resolved.newsletter %}
|
|
279
|
+
{% section "marketing/newsletter-cta", data: resolved.newsletter, variant: "rail", anchor: "signup" %}
|
|
280
|
+
{% endiftruthy %}
|
|
281
|
+
</div>
|
|
282
|
+
</aside>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</section>
|
|
286
|
+
{% endif %}
|
|
287
|
+
|
|
288
|
+
<!-- ============================================ -->
|
|
289
|
+
<!-- THE RUNDOWN — the newsroom's numbered three-step playbook -->
|
|
290
|
+
<!-- ============================================ -->
|
|
291
|
+
{% section "marketing/rundown", data: resolved.rundown %}
|
|
292
|
+
|
|
293
|
+
<!-- ============================================ -->
|
|
294
|
+
<!-- THE DESKS — coverage cards in a paper well -->
|
|
295
|
+
<!-- ============================================ -->
|
|
296
|
+
{% section "marketing/desks", data: resolved.desks %}
|
|
297
|
+
|
|
298
|
+
<!-- ============================================ -->
|
|
299
|
+
<!-- STATS — masthead numbers (base marketing/stats, restyled) -->
|
|
300
|
+
<!-- ============================================ -->
|
|
301
|
+
{% section "marketing/stats", items: resolved.stats %}
|
|
302
|
+
|
|
303
|
+
<!-- ============================================ -->
|
|
304
|
+
<!-- MORE TO CHEW ON — extra story tiles before the big read -->
|
|
305
|
+
<!-- ============================================ -->
|
|
306
|
+
{% comment %} More to chew on: posts 15-17 — the slice after the most-read rail (no duplicates) {% endcomment %}
|
|
307
|
+
{% if site.posts.size > 14 %}
|
|
308
|
+
<section class="pt-0">
|
|
309
|
+
<div class="container">
|
|
310
|
+
{% component "heading/rule-head", text: resolved.more_stories.superheadline.text %}
|
|
311
|
+
<div class="row g-4">
|
|
312
|
+
{% for post in site.posts offset: 14 limit: 3 %}
|
|
313
|
+
<div class="col-md-4" data-lazy="@class animation-slide-up">
|
|
314
|
+
{% capture rt %}{% omega_readtime post.content %}{% endcapture %}
|
|
315
|
+
{% component "news/story-card", url: resolved.config.url | append: post.url, id: post.post.id, kicker: post.post.categories[0] | default: "" | omega_title_case, title: post.post.title, author: post.post.author, date: post.date | date: "%b %d, %Y", readtime: rt, generated: post.generated %}
|
|
316
|
+
</div>
|
|
317
|
+
{% endfor %}
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
</section>
|
|
321
|
+
{% endif %}
|
|
322
|
+
|
|
323
|
+
<!-- ============================================ -->
|
|
324
|
+
<!-- CTA — the dark big-read band (base marketing/cta, restyled) -->
|
|
325
|
+
<!-- ============================================ -->
|
|
326
|
+
{% section "marketing/cta", data: resolved.cta %}
|
|
327
|
+
|
|
328
|
+
{{ content | omega_content_format }}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
The desks — coverage-area cards in a paper well: rule head, lede header,
|
|
3
|
+
icon story-cards linking to their category pages, optional CTA button.
|
|
4
|
+
Newsflash-specific section; the index passes its copy over the data bridge.
|
|
5
|
+
{% endcomment %}
|
|
6
|
+
<section class="bg-body-tertiary">
|
|
7
|
+
<div class="container">
|
|
8
|
+
{% component "heading/rule-head", text: args.superheadline.text %}
|
|
9
|
+
|
|
10
|
+
<header class="mb-5" data-lazy="@class animation-slide-up">
|
|
11
|
+
{% component "heading/lede", headline: args.headline, headline_accent: args.headline_accent, subheadline: args.subheadline %}
|
|
12
|
+
</header>
|
|
13
|
+
|
|
14
|
+
<div class="row g-4">
|
|
15
|
+
{% for desk in args.items %}
|
|
16
|
+
{% comment %} Each desk card links to its category page (href overrides the slugified title) {% endcomment %}
|
|
17
|
+
{% capture desk_href %}{% if desk.href %}{{ desk.href }}{% else %}/blog/categories/{{ desk.title | slugify }}{% endif %}{% endcapture %}
|
|
18
|
+
<div class="col-md-4" data-lazy="@class animation-slide-up">
|
|
19
|
+
<a href="{{ desk_href }}" class="card newsflash-story-card h-100 p-4 text-decoration-none">
|
|
20
|
+
<span class="newsflash-desks__icon d-inline-flex align-items-center justify-content-center rounded-circle text-bg-primary mb-3">
|
|
21
|
+
<i class="fa-solid fa-{{ desk.icon }}"></i>
|
|
22
|
+
</span>
|
|
23
|
+
<h3 class="h4 mb-2">{{ desk.title }}</h3>
|
|
24
|
+
<p class="text-body-secondary mb-0">{{ desk.description }}</p>
|
|
25
|
+
<span class="small fw-bold text-primary mt-3">Read the desk <i class="fa-solid fa-arrow-right ms-1"></i></span>
|
|
26
|
+
</a>
|
|
27
|
+
</div>
|
|
28
|
+
{% endfor %}
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
{% iftruthy args.cta_button %}
|
|
32
|
+
<div class="text-center mt-5" data-lazy="@class animation-slide-up">
|
|
33
|
+
<a href="{{ args.cta_button.href }}" class="btn btn-primary btn-lg">
|
|
34
|
+
<i class="fa-solid fa-{{ args.cta_button.icon }} me-2"></i>{{ args.cta_button.text }}
|
|
35
|
+
</a>
|
|
36
|
+
</div>
|
|
37
|
+
{% endiftruthy %}
|
|
38
|
+
</div>
|
|
39
|
+
</section>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
description: 'The desks — coverage-area cards in a paper well: rule head, lede header, icon story-cards linking to their category pages (desk.href overrides the slugified title), optional cta_button. Newsflash-specific; the index passes its copy over the data bridge.',
|
|
3
|
+
|
|
4
|
+
args: {
|
|
5
|
+
superheadline: 'object',
|
|
6
|
+
headline: 'string',
|
|
7
|
+
headline_accent: 'string',
|
|
8
|
+
subheadline: 'string',
|
|
9
|
+
items: 'array',
|
|
10
|
+
cta_button: 'object',
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
defaults: {},
|
|
14
|
+
|
|
15
|
+
// Showcase variants (spec §9) — demo desks pass explicit hrefs so the
|
|
16
|
+
// cards never point at category pages the site may not have.
|
|
17
|
+
demo: [
|
|
18
|
+
{
|
|
19
|
+
label: 'Three desks',
|
|
20
|
+
args: {
|
|
21
|
+
superheadline: { text: 'The desks' },
|
|
22
|
+
headline: 'Coverage that',
|
|
23
|
+
headline_accent: 'compounds',
|
|
24
|
+
subheadline: 'Three beats, one standard.',
|
|
25
|
+
items: [
|
|
26
|
+
{
|
|
27
|
+
icon: 'microchip',
|
|
28
|
+
title: 'Technology',
|
|
29
|
+
description: 'Chips, code, and the people shipping both.',
|
|
30
|
+
href: '/blog',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
icon: 'chart-line',
|
|
34
|
+
title: 'Markets',
|
|
35
|
+
description: 'What moved, why it moved, who moved it.',
|
|
36
|
+
href: '/blog',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
icon: 'landmark',
|
|
40
|
+
title: 'Policy',
|
|
41
|
+
description: 'The rules being written while you read this.',
|
|
42
|
+
href: '/blog',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
cta_button: { icon: 'rss', text: 'Browse all coverage', href: '/blog' },
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
The vermilion newsletter capture, two presentations: the default slab band
|
|
3
|
+
(primary card in a full section) and variant: "rail" — the compact sidebar
|
|
4
|
+
signup card with NO section/container wrapper, made to compose inside an
|
|
5
|
+
aside (the index rail). Both speak the client form-manager dialect.
|
|
6
|
+
Theme-layer FORK of the base marketing/newsletter-cta: same args
|
|
7
|
+
contract (+ headline_accent, the narrow column knob, variant/anchor/
|
|
8
|
+
disclaimer), same BEHAVIOR — the json5 declares inherit: ['js'], so
|
|
9
|
+
the base layer's section.js (the FormManager binding) keeps riding the §7 bundle
|
|
10
|
+
and binds through the data-omega-section root of EITHER presentation. That
|
|
11
|
+
makes the inherited js's DOM contract part of this markup:
|
|
12
|
+
form.newsletter-form inside the root and .button-text on the submit
|
|
13
|
+
button. SHARED band: defaults stay neutral, every caller passes its own
|
|
14
|
+
copy.
|
|
15
|
+
{% endcomment %}
|
|
16
|
+
{% if args.variant == "rail" %}
|
|
17
|
+
<div class="card bg-primary text-white p-4" data-lazy="@class animation-slide-up" data-omega-section="marketing/newsletter-cta"{% if args.anchor != blank %} id="{{ args.anchor }}"{% endif %}>
|
|
18
|
+
{% iftruthy args.headline %}
|
|
19
|
+
<h3 class="h3 fst-italic mb-2">{{ args.headline }}</h3>
|
|
20
|
+
{% endiftruthy %}
|
|
21
|
+
{% iftruthy args.subheadline %}
|
|
22
|
+
<p class="small mb-3">{{ args.subheadline }}</p>
|
|
23
|
+
{% endiftruthy %}
|
|
24
|
+
<form class="newsletter-form" novalidate data-form-state="initializing" onsubmit="return false">
|
|
25
|
+
<div class="d-flex gap-2 align-items-start">
|
|
26
|
+
<div class="flex-grow-1">
|
|
27
|
+
<label for="newsletter-email" class="visually-hidden">Email address</label>
|
|
28
|
+
<input
|
|
29
|
+
type="email"
|
|
30
|
+
class="form-control"
|
|
31
|
+
placeholder="{{ args.form.placeholder }}"
|
|
32
|
+
name="email"
|
|
33
|
+
id="newsletter-email"
|
|
34
|
+
required
|
|
35
|
+
autocomplete="email"
|
|
36
|
+
>
|
|
37
|
+
<div class="invalid-feedback text-start">
|
|
38
|
+
Please enter a valid email address.
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
<button type="submit" class="btn btn-dark">
|
|
42
|
+
<span class="button-text">{{ args.button.text }}</span>
|
|
43
|
+
</button>
|
|
44
|
+
</div>
|
|
45
|
+
</form>
|
|
46
|
+
{% iftruthy args.disclaimer %}
|
|
47
|
+
<small class="d-block mt-2 opacity-75">{{ args.disclaimer }}</small>
|
|
48
|
+
{% endiftruthy %}
|
|
49
|
+
</div>
|
|
50
|
+
{% else %}
|
|
51
|
+
<section{% if args.section_class != blank %} class="{{ args.section_class }}"{% endif %}{% if args.anchor != blank %} id="{{ args.anchor }}"{% endif %} data-omega-section="marketing/newsletter-cta">
|
|
52
|
+
<div class="container">
|
|
53
|
+
{% if args.narrow %}<div class="row justify-content-center"><div class="col-xl-8 col-lg-8 col-md-12 col-12">{% endif %}
|
|
54
|
+
<div class="card bg-primary text-white p-4 p-md-5 text-center position-relative overflow-hidden" data-lazy="@class animation-slide-up">
|
|
55
|
+
<div class="position-relative">
|
|
56
|
+
{% iftruthy args.superheadline.text %}
|
|
57
|
+
<span class="badge bg-body-tertiary p-2 mb-3">
|
|
58
|
+
{{ args.superheadline.text }}
|
|
59
|
+
</span>
|
|
60
|
+
{% endiftruthy %}
|
|
61
|
+
|
|
62
|
+
{% iftruthy args.headline %}
|
|
63
|
+
<h2 class="h2 fst-italic mb-3">
|
|
64
|
+
{{ args.headline }}
|
|
65
|
+
{% iftruthy args.headline_accent %}
|
|
66
|
+
{{ args.headline_accent }}
|
|
67
|
+
{% endiftruthy %}
|
|
68
|
+
</h2>
|
|
69
|
+
{% endiftruthy %}
|
|
70
|
+
|
|
71
|
+
{% iftruthy args.subheadline %}
|
|
72
|
+
<p class="lead text-white mb-4">{{ args.subheadline }}</p>
|
|
73
|
+
{% endiftruthy %}
|
|
74
|
+
|
|
75
|
+
<!-- Newsletter Form -->
|
|
76
|
+
<form id="newsletter-form" class="newsletter-form" novalidate data-form-state="initializing" onsubmit="return false">
|
|
77
|
+
<div class="row g-3 justify-content-center">
|
|
78
|
+
<div class="col-md-7">
|
|
79
|
+
<input
|
|
80
|
+
type="email"
|
|
81
|
+
class="form-control form-control-lg"
|
|
82
|
+
placeholder="{{ args.form.placeholder }}"
|
|
83
|
+
name="email"
|
|
84
|
+
required
|
|
85
|
+
autocomplete="email"
|
|
86
|
+
>
|
|
87
|
+
<div class="invalid-feedback text-start">
|
|
88
|
+
Please enter a valid email address.
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="col-md-auto">
|
|
92
|
+
<button type="submit" class="btn btn-dark btn-lg px-4">
|
|
93
|
+
<span class="button-text">{{ args.button.text }}</span>
|
|
94
|
+
</button>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</form>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
{% if args.narrow %}</div></div>{% endif %}
|
|
101
|
+
</div>
|
|
102
|
+
</section>
|
|
103
|
+
{% endif %}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
description: 'The vermilion newsletter capture, two presentations — the default slab band (primary card in a full section) and variant: "rail", the compact sidebar signup card with no section wrapper (composes inside an aside). Both speak the client form-manager dialect (data-form-state; the §7 presence init binds the form). Theme-layer FORK of the base band: newsflash markup, inherited behavior — the base layer\'s FormManager section.js keeps riding the bundle via inherit, and its DOM contract (form.newsletter-form under the data-omega-section root, .button-text) is part of this markup. SHARED band: defaults stay neutral, every caller passes its own copy.',
|
|
3
|
+
|
|
4
|
+
args: {
|
|
5
|
+
superheadline: 'object',
|
|
6
|
+
headline: 'string',
|
|
7
|
+
headline_accent: 'string',
|
|
8
|
+
subheadline: 'string',
|
|
9
|
+
button: 'object',
|
|
10
|
+
form: 'object',
|
|
11
|
+
section_class: 'string',
|
|
12
|
+
narrow: { type: 'boolean', description: 'wrap the card in the centered col-xl-8 column (the post-page variant)' },
|
|
13
|
+
variant: { type: 'string', description: 'presentation family: unset renders the slab band; "rail" renders the compact sidebar card (no section/container wrapper)' },
|
|
14
|
+
anchor: { type: 'string', description: 'optional id on the root element — a deep-link target (e.g. the hero\'s #signup button)' },
|
|
15
|
+
disclaimer: { type: 'string', description: 'small print under the form (rail presentation only)' },
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
defaults: {},
|
|
19
|
+
|
|
20
|
+
// Showcase variants (spec §9) — both presentations, generic copy.
|
|
21
|
+
demo: [
|
|
22
|
+
{
|
|
23
|
+
label: 'Slab band',
|
|
24
|
+
args: {
|
|
25
|
+
superheadline: { text: 'Newsletter' },
|
|
26
|
+
headline: 'Never miss an',
|
|
27
|
+
headline_accent: 'issue',
|
|
28
|
+
subheadline: 'One email a week: the best of the desk, nothing else.',
|
|
29
|
+
button: { text: 'Subscribe' },
|
|
30
|
+
form: { placeholder: 'you@example.com' },
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'Rail card',
|
|
35
|
+
args: {
|
|
36
|
+
variant: 'rail',
|
|
37
|
+
headline: 'The morning brief',
|
|
38
|
+
subheadline: 'The day in five minutes, in your inbox by six.',
|
|
39
|
+
button: { text: 'Sign up' },
|
|
40
|
+
form: { placeholder: 'you@example.com' },
|
|
41
|
+
disclaimer: 'Free forever. Unsubscribe anytime.',
|
|
42
|
+
anchor: 'demo-signup',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
|
|
47
|
+
// §7: this fork replaces markup, not behavior — keep the base layer's
|
|
48
|
+
// section.js (the FormManager binding) in the bundle.
|
|
49
|
+
inherit: ['js'],
|
|
50
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
The rundown — the newsroom playbook: rule head, lede header, then a
|
|
3
|
+
numbered feed of items (big stroked numerals). Newsflash-specific section;
|
|
4
|
+
the index passes its copy over the data bridge.
|
|
5
|
+
{% endcomment %}
|
|
6
|
+
<section class="newsflash-rundown pt-0">
|
|
7
|
+
<div class="container">
|
|
8
|
+
{% component "heading/rule-head", text: args.superheadline.text %}
|
|
9
|
+
|
|
10
|
+
<header class="mb-4" data-lazy="@class animation-slide-up">
|
|
11
|
+
{% component "heading/lede", headline: args.headline, headline_accent: args.headline_accent, subheadline: args.subheadline %}
|
|
12
|
+
</header>
|
|
13
|
+
|
|
14
|
+
<div class="row">
|
|
15
|
+
<div class="col-lg-9">
|
|
16
|
+
{% for item in args.items %}
|
|
17
|
+
<article class="newsflash-feed__item" data-lazy="@class animation-slide-up">
|
|
18
|
+
<div class="newsflash-feed__num" aria-hidden="true">{{ forloop.index | prepend: '0' | slice: -2, 2 }}</div>
|
|
19
|
+
<div>
|
|
20
|
+
<h3 class="h4 mb-2">{{ item.title }}</h3>
|
|
21
|
+
<p class="text-body-secondary mb-0">{{ item.description }}</p>
|
|
22
|
+
</div>
|
|
23
|
+
</article>
|
|
24
|
+
{% endfor %}
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</section>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
description: 'The rundown — the newsroom playbook: rule head, lede header, then a numbered feed of items. Newsflash-specific; the index passes its copy over the data bridge.',
|
|
3
|
+
|
|
4
|
+
args: {
|
|
5
|
+
superheadline: 'object',
|
|
6
|
+
headline: 'string',
|
|
7
|
+
headline_accent: 'string',
|
|
8
|
+
subheadline: 'string',
|
|
9
|
+
items: 'array',
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
defaults: {},
|
|
13
|
+
|
|
14
|
+
// Showcase variants (spec §9)
|
|
15
|
+
demo: [
|
|
16
|
+
{
|
|
17
|
+
label: 'Three-step playbook',
|
|
18
|
+
args: {
|
|
19
|
+
superheadline: { text: 'The rundown' },
|
|
20
|
+
headline: 'How the newsroom',
|
|
21
|
+
headline_accent: 'ships',
|
|
22
|
+
subheadline: 'The playbook, in the order it actually happens.',
|
|
23
|
+
items: [
|
|
24
|
+
{
|
|
25
|
+
title: 'Report it',
|
|
26
|
+
description: 'Every story starts at a desk, with a byline on the hook.',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: 'Edit it',
|
|
30
|
+
description: 'Two reads minimum: copy first, then the desk editor.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: 'Publish it',
|
|
34
|
+
description: 'One verb ships it to every edition at once.',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Newsflash Theme — JS entry point
|
|
2
|
+
// Loaded at runtime via webpack's __theme__ alias (import('__theme__/_theme.js')).
|
|
3
|
+
// Exposes Bootstrap globally and wires up theme behaviors on DOM ready.
|
|
4
|
+
import bootstrap from '__main_assets__/themes/bootstrap/js/index.umd.js';
|
|
5
|
+
import { ready as domReady } from '@omega.js/client/modules/dom.js';
|
|
6
|
+
|
|
7
|
+
// Make Bootstrap available globally (used by omega utilities + components)
|
|
8
|
+
window.bootstrap = bootstrap;
|
|
9
|
+
|
|
10
|
+
/* @dev-only:start */
|
|
11
|
+
{
|
|
12
|
+
console.log('Newsflash theme loaded successfully (assets/themes/newsflash/_theme.js)');
|
|
13
|
+
}
|
|
14
|
+
/* @dev-only:end */
|
|
15
|
+
|
|
16
|
+
// Theme behaviors (masthead scroll state rides the shared motion engine's
|
|
17
|
+
// data-omega-scroll-watch — no theme JS)
|
|
18
|
+
import initializeTooltips from '__main_assets__/js/libs/initialize-tooltips.js';
|
|
19
|
+
|
|
20
|
+
// Initialize when DOM is ready
|
|
21
|
+
domReady().then(() => {
|
|
22
|
+
// Generic Bootstrap initializations
|
|
23
|
+
initializeTooltips();
|
|
24
|
+
});
|