@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,319 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: frontend/core/base
|
|
3
|
+
|
|
4
|
+
# Alternative page defaults - shared content lives here so competitor pages only need competitor-specific data
|
|
5
|
+
#
|
|
6
|
+
# Trial copy DERIVES from the catalog and refund copy from the brand (#273):
|
|
7
|
+
# `resolved.pricing.trialDays` is the number the catalog's paid plans agree on
|
|
8
|
+
# (0 = none) and `resolved.pricing.guarantee` is the brand's own refund words.
|
|
9
|
+
# Neither is a framework default — an answer whose condition doesn't hold
|
|
10
|
+
# renders empty and drops out of the accordion (and the FAQPage schema).
|
|
11
|
+
alternative:
|
|
12
|
+
competitor:
|
|
13
|
+
name: "Competitor"
|
|
14
|
+
description: ""
|
|
15
|
+
hero:
|
|
16
|
+
tagline: "The #1 {{ resolved.alternative.competitor.name }} alternative"
|
|
17
|
+
headline: "{{ resolved.config.brand.name }} vs"
|
|
18
|
+
headline_accent: "{{ resolved.alternative.competitor.name }}"
|
|
19
|
+
description: "Looking for a {{ resolved.alternative.competitor.name }} alternative? See why thousands of users choose {{ resolved.config.brand.name }} for a faster, more powerful experience."
|
|
20
|
+
primary_button:
|
|
21
|
+
text: "{% if resolved.pricing.trialDays > 0 %}Try free for {{ resolved.pricing.trialDays }} days{% else %}Get started{% endif %}"
|
|
22
|
+
href: "/pricing"
|
|
23
|
+
secondary_button:
|
|
24
|
+
text: "See all features"
|
|
25
|
+
href: "/pricing"
|
|
26
|
+
comparison:
|
|
27
|
+
superheadline:
|
|
28
|
+
text: "Head to head"
|
|
29
|
+
headline: "See how we"
|
|
30
|
+
headline_accent: "compare"
|
|
31
|
+
subheadline: "A side-by-side look at {{ resolved.config.brand.name }} vs {{ resolved.alternative.competitor.name }}"
|
|
32
|
+
features: []
|
|
33
|
+
why_switch:
|
|
34
|
+
superheadline:
|
|
35
|
+
text: "Why switch"
|
|
36
|
+
headline: "Why teams are switching to"
|
|
37
|
+
headline_accent: "{{ resolved.config.brand.name }}"
|
|
38
|
+
subheadline: "Here's what makes us different"
|
|
39
|
+
items:
|
|
40
|
+
- title: "10x faster performance"
|
|
41
|
+
description: "Our platform is built on modern infrastructure that delivers blazing-fast load times and real-time updates. No more waiting around for pages to load or data to sync."
|
|
42
|
+
image: "https://cdn.itwcreativeworks.com/assets/sample/images/demos/1x1/sample-demo-1.svg"
|
|
43
|
+
- title: "Built for teams of all sizes"
|
|
44
|
+
description: "Whether you're a solo founder or a growing enterprise, our flexible workspace adapts to your needs. Collaborate seamlessly with unlimited team members on any plan."
|
|
45
|
+
image: "https://cdn.itwcreativeworks.com/assets/sample/images/demos/1x1/sample-demo-2.svg"
|
|
46
|
+
- title: "AI that actually works"
|
|
47
|
+
description: "Our AI features aren't just a gimmick. They're deeply integrated into every workflow to help you automate repetitive tasks and make smarter decisions faster."
|
|
48
|
+
image: "https://cdn.itwcreativeworks.com/assets/sample/images/demos/1x1/sample-demo-3.svg"
|
|
49
|
+
video:
|
|
50
|
+
superheadline:
|
|
51
|
+
text: "Watch demo"
|
|
52
|
+
headline: "See {{ resolved.config.brand.name }} in"
|
|
53
|
+
headline_accent: "action"
|
|
54
|
+
subheadline: "A quick walkthrough of what makes {{ resolved.config.brand.name }} the best {{ resolved.alternative.competitor.name }} alternative"
|
|
55
|
+
youtube_id: null
|
|
56
|
+
testimonials:
|
|
57
|
+
superheadline:
|
|
58
|
+
text: "Testimonials"
|
|
59
|
+
items:
|
|
60
|
+
- quote: "We made the switch and the difference is <em>night and day</em>. Everything just works faster."
|
|
61
|
+
author: "Sarah Johnson"
|
|
62
|
+
role: "Product Manager"
|
|
63
|
+
company: "TechStart Inc"
|
|
64
|
+
initial: "S"
|
|
65
|
+
- quote: "The AI features alone justified the switch. We're saving <em>10+ hours per week</em> on repetitive tasks."
|
|
66
|
+
author: "Michael Chen"
|
|
67
|
+
role: "CTO"
|
|
68
|
+
company: "DataFlow"
|
|
69
|
+
initial: "M"
|
|
70
|
+
- quote: "The support team responds within minutes. It's refreshing to work with a company that <em>actually cares</em>."
|
|
71
|
+
author: "Emily Davis"
|
|
72
|
+
role: "Operations Director"
|
|
73
|
+
company: "Creative Studio"
|
|
74
|
+
initial: "E"
|
|
75
|
+
stats:
|
|
76
|
+
- number: "50,000+"
|
|
77
|
+
label: "Active users"
|
|
78
|
+
sublabel: "From 120+ countries"
|
|
79
|
+
- number: "4.9"
|
|
80
|
+
label: "Average rating"
|
|
81
|
+
sublabel: "Across review platforms"
|
|
82
|
+
- number: "99.99%"
|
|
83
|
+
label: "Uptime"
|
|
84
|
+
sublabel: "Enterprise-grade"
|
|
85
|
+
- number: "24/7"
|
|
86
|
+
label: "Support"
|
|
87
|
+
sublabel: "Real humans"
|
|
88
|
+
faqs:
|
|
89
|
+
superheadline:
|
|
90
|
+
text: "FAQs"
|
|
91
|
+
headline: "Switching"
|
|
92
|
+
headline_accent: "questions"
|
|
93
|
+
subheadline: "Everything you need to know about switching from {{ resolved.alternative.competitor.name }} to {{ resolved.config.brand.name }}"
|
|
94
|
+
items:
|
|
95
|
+
- question: "Can I import my data from {{ resolved.alternative.competitor.name }}?"
|
|
96
|
+
answer: "Yes! We offer a one-click migration tool that imports all your projects, files, and settings. The entire process takes just a few minutes."
|
|
97
|
+
- question: "Is there a free trial?"
|
|
98
|
+
answer: "{% if resolved.pricing.trialDays > 0 %}Absolutely. Every paid plan starts with a {{ resolved.pricing.trialDays }}-day free trial with access to all premium features, and you can cancel any time before it ends.{% endif %}"
|
|
99
|
+
- question: "How does pricing compare to {{ resolved.alternative.competitor.name }}?"
|
|
100
|
+
answer: "Our plans start at the same price point but include significantly more features. Most teams find they save money by switching because they no longer need additional tools."
|
|
101
|
+
- question: "What if I need help migrating?"
|
|
102
|
+
answer: "Our support team is available 24/7 to help with your migration. We also offer dedicated onboarding sessions for teams of 10+ members."
|
|
103
|
+
- question: "Can I cancel anytime?"
|
|
104
|
+
answer: "Yes, you can cancel your subscription at any time with no questions asked.{% if resolved.pricing.guarantee %} {{ resolved.pricing.guarantee }}{% endif %}"
|
|
105
|
+
section_cta:
|
|
106
|
+
text: "Get started free"
|
|
107
|
+
href: "/pricing"
|
|
108
|
+
cta:
|
|
109
|
+
superheadline:
|
|
110
|
+
text: "Make the switch"
|
|
111
|
+
headline: "Ready to leave"
|
|
112
|
+
headline_accent: "{{ resolved.alternative.competitor.name }} behind?"
|
|
113
|
+
subheadline: "Join thousands who chose {{ resolved.config.brand.name }}.{% if resolved.pricing.trialDays > 0 %} Start your free trial today. No credit card required.{% endif %}"
|
|
114
|
+
primary_button:
|
|
115
|
+
text: "{% if resolved.pricing.trialDays > 0 %}Start free trial{% else %}Get started{% endif %}"
|
|
116
|
+
href: "/pricing"
|
|
117
|
+
secondary_button:
|
|
118
|
+
text: "Talk to sales"
|
|
119
|
+
href: "/contact"
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
{% assign alt = resolved.alternative %}
|
|
123
|
+
|
|
124
|
+
{% capture section_cta_block %}
|
|
125
|
+
{% iftruthy alt.section_cta.text %}
|
|
126
|
+
<div class="text-center mt-5" data-omega-reveal>
|
|
127
|
+
<a href="{{ alt.section_cta.href }}" class="btn btn-adaptive btn-lg omega-hover-nudge">
|
|
128
|
+
{{ alt.section_cta.text }}
|
|
129
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
130
|
+
</a>
|
|
131
|
+
</div>
|
|
132
|
+
{% endiftruthy %}
|
|
133
|
+
{% endcapture %}
|
|
134
|
+
|
|
135
|
+
<!-- ═══ Masthead ═══ -->
|
|
136
|
+
{% comment %} #467 (after #749): this masthead IS the page's first viewport, so
|
|
137
|
+
the band paints with the document — data-omega-first-paint on the section, no
|
|
138
|
+
stagger container, and the masthead cluster on its first_paint switch. The
|
|
139
|
+
bands below keep the reveal lane. {% endcomment %}
|
|
140
|
+
<section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield data-competitor-name="{{ alt.competitor.name }}">
|
|
141
|
+
<div class="container">
|
|
142
|
+
<div class="omega-post-card__eyebrow mb-4">
|
|
143
|
+
<a href="/alternatives">Alternatives</a>
|
|
144
|
+
<span>/</span>
|
|
145
|
+
<span>{{ alt.competitor.name }}</span>
|
|
146
|
+
</div>
|
|
147
|
+
{% component "heading/masthead", headline: alt.hero.headline, headline_accent: alt.hero.headline_accent, sub: alt.hero.description, first_paint: true %}
|
|
148
|
+
<div class="d-flex flex-wrap gap-3 mt-4">
|
|
149
|
+
{% iftruthy alt.hero.primary_button.text %}
|
|
150
|
+
<a href="{{ alt.hero.primary_button.href }}" class="btn btn-adaptive btn-lg omega-hover-nudge">
|
|
151
|
+
{{ alt.hero.primary_button.text }}
|
|
152
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
153
|
+
</a>
|
|
154
|
+
{% endiftruthy %}
|
|
155
|
+
{% iftruthy alt.hero.secondary_button.text %}
|
|
156
|
+
<a href="{{ alt.hero.secondary_button.href }}" class="btn btn-outline-adaptive btn-lg omega-hover-nudge">
|
|
157
|
+
{{ alt.hero.secondary_button.text }}
|
|
158
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
159
|
+
</a>
|
|
160
|
+
{% endiftruthy %}
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
</section>
|
|
164
|
+
|
|
165
|
+
<!-- ═══ Comparison table ═══ -->
|
|
166
|
+
{% assign comparison_features = alt.comparison.features %}
|
|
167
|
+
{% assign comparison_size = comparison_features | size %}
|
|
168
|
+
{% if comparison_size > 0 %}
|
|
169
|
+
<section class="pt-0">
|
|
170
|
+
<div class="container">
|
|
171
|
+
<div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
|
|
172
|
+
{% component "heading/section-head", superheadline: alt.comparison.superheadline.text, headline: alt.comparison.headline, headline_accent: alt.comparison.headline_accent, sub: alt.comparison.subheadline %}
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<div class="row justify-content-center">
|
|
176
|
+
<div class="col-lg-10">
|
|
177
|
+
<div class="omega-compare table-responsive" data-omega-reveal>
|
|
178
|
+
<table class="table table-hover align-middle">
|
|
179
|
+
<thead>
|
|
180
|
+
<tr>
|
|
181
|
+
<th scope="col" class="w-40">Feature</th>
|
|
182
|
+
<th scope="col" class="text-center">{{ resolved.config.brand.name }}</th>
|
|
183
|
+
<th scope="col" class="text-center">{{ alt.competitor.name }}</th>
|
|
184
|
+
</tr>
|
|
185
|
+
</thead>
|
|
186
|
+
<tbody>
|
|
187
|
+
{% for feature in comparison_features %}
|
|
188
|
+
<tr>
|
|
189
|
+
<th scope="row">
|
|
190
|
+
{{ feature.name }}
|
|
191
|
+
</th>
|
|
192
|
+
<td class="text-center">
|
|
193
|
+
{% if feature.ours.value == true %}
|
|
194
|
+
<i class="fa-solid fa-circle-check text-success"></i>
|
|
195
|
+
{% elsif feature.ours.value == false %}
|
|
196
|
+
<i class="fa-solid fa-circle-xmark text-muted opacity-25"></i>
|
|
197
|
+
{% else %}
|
|
198
|
+
<span class="fw-semibold text-adaptive">{{ feature.ours.value }}</span>
|
|
199
|
+
{% endif %}
|
|
200
|
+
</td>
|
|
201
|
+
<td class="text-center">
|
|
202
|
+
{% if feature.theirs.value == true %}
|
|
203
|
+
<i class="fa-solid fa-circle-check text-success"></i>
|
|
204
|
+
{% elsif feature.theirs.value == false %}
|
|
205
|
+
<i class="fa-solid fa-circle-xmark text-muted opacity-25"></i>
|
|
206
|
+
{% else %}
|
|
207
|
+
<span class="text-muted">{{ feature.theirs.value }}</span>
|
|
208
|
+
{% endif %}
|
|
209
|
+
</td>
|
|
210
|
+
</tr>
|
|
211
|
+
{% endfor %}
|
|
212
|
+
</tbody>
|
|
213
|
+
</table>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
|
|
218
|
+
{{ section_cta_block }}
|
|
219
|
+
</div>
|
|
220
|
+
</section>
|
|
221
|
+
{% endif %}
|
|
222
|
+
|
|
223
|
+
<!-- ═══ Why switch ═══ -->
|
|
224
|
+
{% assign why_switch_items = alt.why_switch.items %}
|
|
225
|
+
{% assign why_switch_size = why_switch_items | size %}
|
|
226
|
+
{% if why_switch_size > 0 %}
|
|
227
|
+
<section>
|
|
228
|
+
<div class="container">
|
|
229
|
+
<div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
|
|
230
|
+
{% component "heading/section-head", superheadline: alt.why_switch.superheadline.text, headline: alt.why_switch.headline, headline_accent: alt.why_switch.headline_accent, sub: alt.why_switch.subheadline %}
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
{% for item in why_switch_items %}
|
|
234
|
+
{% assign is_even = forloop.index | modulo: 2 %}
|
|
235
|
+
|
|
236
|
+
{% if is_even == 0 %}
|
|
237
|
+
{% assign image_col_class = "col-lg-6 order-lg-2" %}
|
|
238
|
+
{% assign text_col_class = "col-lg-6 order-lg-1 pe-lg-5" %}
|
|
239
|
+
{% else %}
|
|
240
|
+
{% assign image_col_class = "col-lg-6" %}
|
|
241
|
+
{% assign text_col_class = "col-lg-6 ps-lg-5" %}
|
|
242
|
+
{% endif %}
|
|
243
|
+
|
|
244
|
+
<div class="row align-items-center g-3 g-lg-5 {% unless forloop.last %} mb-5 pb-5 {% endunless %}">
|
|
245
|
+
{% iftruthy item.image %}
|
|
246
|
+
<div class="{{ image_col_class }}" data-omega-reveal>
|
|
247
|
+
<div class="card overflow-hidden ratio ratio-4x3">
|
|
248
|
+
{% omega_image item.image, class="w-100 h-100 object-fit-cover", alt=item.title %}
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
{% endiftruthy %}
|
|
252
|
+
<div class="{% iftruthy item.image %}{{ text_col_class }}{% endiftruthy %}{% iffalsy item.image %}col-lg-8 mx-auto text-center{% endiffalsy %}" data-omega-reveal>
|
|
253
|
+
<h3 class="omega-display omega-display--section mb-3">{{ item.title | omega_liquify }}</h3>
|
|
254
|
+
<p class="text-muted fs-6 mb-0">{{ item.description | omega_liquify }}</p>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
{% endfor %}
|
|
258
|
+
|
|
259
|
+
{{ section_cta_block }}
|
|
260
|
+
</div>
|
|
261
|
+
</section>
|
|
262
|
+
{% endif %}
|
|
263
|
+
|
|
264
|
+
<!-- ═══ Video ═══ -->
|
|
265
|
+
{% iftruthy alt.video.youtube_id %}
|
|
266
|
+
<section>
|
|
267
|
+
<div class="container">
|
|
268
|
+
<div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
|
|
269
|
+
{% component "heading/section-head", superheadline: alt.video.superheadline.text, headline: alt.video.headline, headline_accent: alt.video.headline_accent, sub: alt.video.subheadline %}
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
<div class="row justify-content-center">
|
|
273
|
+
<div class="col-lg-10" data-omega-reveal>
|
|
274
|
+
<div class="card overflow-hidden">
|
|
275
|
+
<div class="ratio ratio-16x9">
|
|
276
|
+
<iframe
|
|
277
|
+
data-lazy="@src https://www.youtube.com/embed/{{ alt.video.youtube_id }}?rel=0"
|
|
278
|
+
title="Video"
|
|
279
|
+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
|
280
|
+
allowfullscreen
|
|
281
|
+
class="border-0"
|
|
282
|
+
></iframe>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
</div>
|
|
287
|
+
|
|
288
|
+
{{ section_cta_block }}
|
|
289
|
+
</div>
|
|
290
|
+
</section>
|
|
291
|
+
{% endiftruthy %}
|
|
292
|
+
|
|
293
|
+
<!-- ═══ Testimonials ═══ -->
|
|
294
|
+
{% assign testimonials_size = alt.testimonials.items | size %}
|
|
295
|
+
{% if testimonials_size > 0 %}
|
|
296
|
+
{% section "marketing/testimonials", data: alt.testimonials %}
|
|
297
|
+
{% endif %}
|
|
298
|
+
|
|
299
|
+
<!-- ═══ Stats band ═══ -->
|
|
300
|
+
|
|
301
|
+
{% section "marketing/stats", items: alt.stats %}{% slot after %}{{ section_cta_block }}{% endslot %}{% endsection %}
|
|
302
|
+
<!-- ═══ FAQ ═══ -->
|
|
303
|
+
{% comment %} An answerless item is a DERIVED one whose condition didn't hold
|
|
304
|
+
(#273 — the trial FAQ on a catalog with no trial): it drops out of the
|
|
305
|
+
accordion here and out of the FAQPage schema in core/foot.html. The test is
|
|
306
|
+
`!= ''` on purpose — `!= blank` does not filter inside where_exp here.
|
|
307
|
+
{% endcomment %}
|
|
308
|
+
{% assign _faqs = alt.faqs.items | where_exp: "faq", "faq.answer != ''" %}
|
|
309
|
+
{% assign faqs_size = _faqs | size %}
|
|
310
|
+
{% if faqs_size > 0 %}
|
|
311
|
+
{% section "marketing/faq", data: alt.faqs, items: _faqs, variant: "center" %}
|
|
312
|
+
{% endif %}
|
|
313
|
+
|
|
314
|
+
<!-- ═══ CTA band ═══ -->
|
|
315
|
+
{% iftruthy alt.cta.headline %}
|
|
316
|
+
{% section "marketing/cta", data: alt.cta %}
|
|
317
|
+
{% endiftruthy %}
|
|
318
|
+
|
|
319
|
+
{{ content | omega_content_format }}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: frontend/core/base
|
|
3
|
+
|
|
4
|
+
# Trial copy DERIVES from the catalog (#273): `resolved.pricing.trialDays` is
|
|
5
|
+
# the number the catalog's paid plans agree on (0 = none). A trial is never a
|
|
6
|
+
# framework default, so with no trial the CTA speaks in neutral words.
|
|
7
|
+
|
|
8
|
+
# Hero Section
|
|
9
|
+
hero:
|
|
10
|
+
tagline: "Compare & choose"
|
|
11
|
+
headline: "{{ resolved.config.brand.name }} vs the"
|
|
12
|
+
headline_accent: "competition"
|
|
13
|
+
description: "Head-to-head comparisons, no spin. See exactly where we win."
|
|
14
|
+
primary_button:
|
|
15
|
+
text: "Get started free"
|
|
16
|
+
href: "/pricing"
|
|
17
|
+
secondary_button:
|
|
18
|
+
text: "See pricing"
|
|
19
|
+
href: "/pricing"
|
|
20
|
+
|
|
21
|
+
# Alternatives Section
|
|
22
|
+
alternatives:
|
|
23
|
+
superheadline:
|
|
24
|
+
text: "Comparisons"
|
|
25
|
+
headline: "Explore <em>alternatives</em>"
|
|
26
|
+
subheadline: "In-depth comparisons to help you make the right choice"
|
|
27
|
+
empty_message: "No alternatives available yet"
|
|
28
|
+
view_comparison: "View full comparison"
|
|
29
|
+
|
|
30
|
+
# Value Props Section
|
|
31
|
+
value_props:
|
|
32
|
+
superheadline:
|
|
33
|
+
text: "Why us"
|
|
34
|
+
headline: "Why people choose <em>{{ resolved.config.brand.name }}</em>"
|
|
35
|
+
subheadline: "Here's what sets us apart from the rest"
|
|
36
|
+
items:
|
|
37
|
+
- title: "Lightning fast"
|
|
38
|
+
description: "Built on modern infrastructure for blazing performance. No more waiting around."
|
|
39
|
+
icon: "bolt"
|
|
40
|
+
- title: "AI-powered"
|
|
41
|
+
description: "Smart automation built into every workflow to save you hours every week."
|
|
42
|
+
icon: "wand-magic-sparkles"
|
|
43
|
+
- title: "24/7 support"
|
|
44
|
+
description: "Real humans ready to help whenever you need it. Average response time under 5 minutes."
|
|
45
|
+
icon: "headset"
|
|
46
|
+
|
|
47
|
+
# Stats Section
|
|
48
|
+
stats:
|
|
49
|
+
- number: "50,000+"
|
|
50
|
+
label: "Active users"
|
|
51
|
+
sublabel: "From 120+ countries"
|
|
52
|
+
- number: "4.9"
|
|
53
|
+
label: "Average rating"
|
|
54
|
+
sublabel: "Across review platforms"
|
|
55
|
+
- number: "99.99%"
|
|
56
|
+
label: "Uptime"
|
|
57
|
+
sublabel: "Enterprise-grade"
|
|
58
|
+
- number: "24/7"
|
|
59
|
+
label: "Support"
|
|
60
|
+
sublabel: "Real humans"
|
|
61
|
+
|
|
62
|
+
# CTA Section
|
|
63
|
+
cta:
|
|
64
|
+
superheadline:
|
|
65
|
+
text: "Get started"
|
|
66
|
+
headline: "Ready to make the switch?"
|
|
67
|
+
subheadline: "Join thousands of happy users who chose {{ resolved.config.brand.name }}.{% if resolved.pricing.trialDays > 0 %} Start your free trial today. No credit card required.{% endif %}"
|
|
68
|
+
primary_button:
|
|
69
|
+
text: "{% if resolved.pricing.trialDays > 0 %}Start free trial{% else %}Get started{% endif %}"
|
|
70
|
+
href: "/pricing"
|
|
71
|
+
secondary_button:
|
|
72
|
+
text: "Talk to sales"
|
|
73
|
+
href: "/contact"
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
<!-- ═══ Masthead ═══ -->
|
|
77
|
+
{% comment %} #467 (after #749): this masthead IS the page's first viewport, so
|
|
78
|
+
the band paints with the document — data-omega-first-paint on the section, no
|
|
79
|
+
stagger container, and the masthead cluster on its first_paint switch. The
|
|
80
|
+
bands below keep the reveal lane. {% endcomment %}
|
|
81
|
+
<section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
|
|
82
|
+
<div class="container">
|
|
83
|
+
{% component "heading/masthead", eyebrow: resolved.hero.tagline, headline: resolved.hero.headline, headline_accent: resolved.hero.headline_accent, sub: resolved.hero.description, first_paint: true %}
|
|
84
|
+
<div class="d-flex flex-wrap gap-3 mt-4">
|
|
85
|
+
{% iftruthy resolved.hero.primary_button.text %}
|
|
86
|
+
<a href="{{ resolved.hero.primary_button.href }}" class="btn btn-adaptive btn-lg omega-hover-nudge">
|
|
87
|
+
{{ resolved.hero.primary_button.text }}
|
|
88
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
89
|
+
</a>
|
|
90
|
+
{% endiftruthy %}
|
|
91
|
+
{% iftruthy resolved.hero.secondary_button.text %}
|
|
92
|
+
<a href="{{ resolved.hero.secondary_button.href }}" class="btn btn-outline-adaptive btn-lg omega-hover-nudge">
|
|
93
|
+
{{ resolved.hero.secondary_button.text }}
|
|
94
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
95
|
+
</a>
|
|
96
|
+
{% endiftruthy %}
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</section>
|
|
100
|
+
|
|
101
|
+
<!-- ═══ Comparisons — hairline rows ═══ -->
|
|
102
|
+
<section>
|
|
103
|
+
<div class="container">
|
|
104
|
+
<div class="omega-duo">
|
|
105
|
+
<div class="omega-duo__aside omega-section-head" data-omega-reveal>
|
|
106
|
+
{% component "heading/section-head", superheadline: resolved.alternatives.superheadline.text, headline: resolved.alternatives.headline, sub: resolved.alternatives.subheadline %}
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<div>
|
|
110
|
+
{% if site.alternatives %}
|
|
111
|
+
{% assign alternatives = site.alternatives | sort: 'alternative.competitor.name' %}
|
|
112
|
+
{% else %}
|
|
113
|
+
{% assign alternatives = nil %}
|
|
114
|
+
{% endif %}
|
|
115
|
+
|
|
116
|
+
{% if alternatives and alternatives.size > 0 %}
|
|
117
|
+
<div class="omega-rowlist" data-omega-reveal-stagger="50">
|
|
118
|
+
{% for item in alternatives %}
|
|
119
|
+
{% if item.draft and jekyll.environment == 'production' %}
|
|
120
|
+
{% continue %}
|
|
121
|
+
{% endif %}
|
|
122
|
+
<a href="{{ item.url }}" class="omega-rowlist__item omega-rowlist__item--link" data-omega-reveal>
|
|
123
|
+
{%- comment %} The competitor's own description rides UNDER the
|
|
124
|
+
row title (#563, legacy UJM parity): every _alternatives doc
|
|
125
|
+
authors it, and the hub was the only place it could land.
|
|
126
|
+
Unauthored, the row is exactly what it always was. {% endcomment -%}
|
|
127
|
+
<span>
|
|
128
|
+
<span>{{ resolved.config.brand.name }} vs {{ item.alternative.competitor.name }}</span>
|
|
129
|
+
{% iftruthy item.alternative.competitor.description %}
|
|
130
|
+
<span class="omega-rowlist__desc">{{ item.alternative.competitor.description }}</span>
|
|
131
|
+
{% endiftruthy %}
|
|
132
|
+
</span>
|
|
133
|
+
<span class="omega-rowlist__meta">
|
|
134
|
+
{{ resolved.alternatives.view_comparison }}
|
|
135
|
+
<i class="fa-solid fa-arrow-right fa-xs ms-2"></i>
|
|
136
|
+
</span>
|
|
137
|
+
</a>
|
|
138
|
+
{% endfor %}
|
|
139
|
+
</div>
|
|
140
|
+
{% else %}
|
|
141
|
+
<div class="card" data-omega-reveal>
|
|
142
|
+
<div class="card-body p-5 text-center text-muted">
|
|
143
|
+
<p class="fs-6 mb-0">{{ resolved.alternatives.empty_message }}</p>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
{% endif %}
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
</section>
|
|
151
|
+
|
|
152
|
+
<!-- ═══ Value props — hairline rows ═══ -->
|
|
153
|
+
{% assign value_props_size = resolved.value_props.items | size %}
|
|
154
|
+
{% if value_props_size > 0 %}
|
|
155
|
+
<section>
|
|
156
|
+
<div class="container">
|
|
157
|
+
<div class="omega-duo">
|
|
158
|
+
<div class="omega-duo__aside omega-section-head" data-omega-reveal>
|
|
159
|
+
{% component "heading/section-head", superheadline: resolved.value_props.superheadline.text, headline: resolved.value_props.headline %}
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<div class="omega-rowlist" data-omega-reveal-stagger="60">
|
|
163
|
+
{% for prop in resolved.value_props.items %}
|
|
164
|
+
<div class="omega-rowlist__item" data-omega-reveal>
|
|
165
|
+
<span class="d-inline-flex align-items-center gap-3">
|
|
166
|
+
<span class="omega-icon-chip omega-icon-chip--neutral"><i class="fa-solid fa-{{ prop.icon }} fa-sm"></i></span>
|
|
167
|
+
<strong>{{ prop.title }}</strong>
|
|
168
|
+
</span>
|
|
169
|
+
<span class="omega-rowlist__meta">{{ prop.description }}</span>
|
|
170
|
+
</div>
|
|
171
|
+
{% endfor %}
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</section>
|
|
176
|
+
{% endif %}
|
|
177
|
+
|
|
178
|
+
<!-- ═══ Stats band ═══ -->
|
|
179
|
+
|
|
180
|
+
{% section "marketing/stats", items: resolved.stats %}
|
|
181
|
+
<!-- ═══ CTA band ═══ -->
|
|
182
|
+
{% iftruthy resolved.cta.headline %}
|
|
183
|
+
{% section "marketing/cta", data: resolved.cta %}
|
|
184
|
+
{% endiftruthy %}
|
|
185
|
+
|
|
186
|
+
{{ content | omega_content_format }}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: frontend/core/cover
|
|
3
|
+
|
|
4
|
+
app:
|
|
5
|
+
protocol: "{{ resolved.config.brand.id | default: resolved.config.brand.name | slugify }}://"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- Self-contained, token-driven (mirrors the redirect interstitial) -->
|
|
9
|
+
<style>
|
|
10
|
+
.omega-launch {
|
|
11
|
+
text-align: center;
|
|
12
|
+
padding: 2.75rem 2rem 2.25rem;
|
|
13
|
+
background: var(--omega-surface);
|
|
14
|
+
border: 1px solid var(--omega-line);
|
|
15
|
+
border-radius: var(--omega-radius-xl);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.omega-launch__mark {
|
|
19
|
+
display: inline-flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
width: 3rem;
|
|
23
|
+
height: 3rem;
|
|
24
|
+
margin-bottom: 1.25rem;
|
|
25
|
+
background: var(--omega-surface-2);
|
|
26
|
+
border: 1px solid var(--omega-line);
|
|
27
|
+
border-radius: var(--omega-radius-m);
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.omega-launch__mark img {
|
|
32
|
+
width: 1.75rem;
|
|
33
|
+
height: 1.75rem;
|
|
34
|
+
object-fit: contain;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.omega-launch__title {
|
|
38
|
+
font-family: var(--omega-font-marketing);
|
|
39
|
+
font-weight: 550;
|
|
40
|
+
letter-spacing: -0.02em;
|
|
41
|
+
font-size: 1.75rem;
|
|
42
|
+
margin-bottom: 0.375rem;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.omega-launch__title em {
|
|
46
|
+
font-style: italic;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.omega-launch__sub {
|
|
50
|
+
color: var(--omega-ink-muted);
|
|
51
|
+
font-size: 0.9375rem;
|
|
52
|
+
margin-bottom: 1.5rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.omega-launch__dots {
|
|
56
|
+
display: inline-flex;
|
|
57
|
+
gap: 0.4375rem;
|
|
58
|
+
margin-bottom: 1.75rem;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.omega-launch__dots span {
|
|
62
|
+
width: 7px;
|
|
63
|
+
height: 7px;
|
|
64
|
+
border-radius: 50%;
|
|
65
|
+
background: var(--omega-ink-faint);
|
|
66
|
+
animation: omega-launch-pulse 1.1s var(--omega-ease) infinite;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.omega-launch__dots span:nth-child(2) { animation-delay: 0.18s; }
|
|
70
|
+
.omega-launch__dots span:nth-child(3) { animation-delay: 0.36s; }
|
|
71
|
+
|
|
72
|
+
@keyframes omega-launch-pulse {
|
|
73
|
+
0%, 100% { opacity: 0.35; transform: scale(0.85); }
|
|
74
|
+
40% { opacity: 1; transform: scale(1); background: var(--omega-accent); }
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@media (prefers-reduced-motion: reduce) {
|
|
78
|
+
.omega-launch__dots span { animation: none; }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.omega-launch__footer {
|
|
82
|
+
margin-top: 1.75rem;
|
|
83
|
+
padding-top: 1.375rem;
|
|
84
|
+
border-top: 1px solid var(--omega-line);
|
|
85
|
+
font-size: 0.8125rem;
|
|
86
|
+
color: var(--omega-ink-faint);
|
|
87
|
+
}
|
|
88
|
+
</style>
|
|
89
|
+
|
|
90
|
+
<!-- App Launch Section -->
|
|
91
|
+
<section class="col-12 col-md-8 col-lg-6 col-xl-5 mw-sm">
|
|
92
|
+
<div class="omega-launch">
|
|
93
|
+
<!-- Brand mark -->
|
|
94
|
+
<span class="omega-launch__mark">
|
|
95
|
+
{% comment %} #467: the VISIBLE lockup prefers the bridged vector when the mint produced one — `brand.images.brandmark` stays the raster OG/social and payment sync need. {% endcomment %}
|
|
96
|
+
<img src="{{ assetManifest.brandmarkSvg | default: resolved.config.brand.images.brandmark | omega_cachebreak }}" alt="{{ resolved.config.brand.name }} Logo"/>
|
|
97
|
+
</span>
|
|
98
|
+
|
|
99
|
+
<!-- Header -->
|
|
100
|
+
<h1 class="omega-launch__title">Opening <em>{{ resolved.config.brand.name }}</em></h1>
|
|
101
|
+
<p class="omega-launch__sub">Handing you off to the desktop app.</p>
|
|
102
|
+
|
|
103
|
+
<!-- Progress -->
|
|
104
|
+
<div class="omega-launch__dots" role="status" aria-label="Launching">
|
|
105
|
+
<span></span><span></span><span></span>
|
|
106
|
+
<span class="visually-hidden">Launching…</span>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<!-- Error Alert (Hidden by default) -->
|
|
110
|
+
<div id="error-alert" class="alert alert-warning mb-4 text-start" role="alert" hidden>
|
|
111
|
+
<div class="d-flex align-items-center">
|
|
112
|
+
<i class="fa-solid fa-triangle-exclamation me-2"></i>
|
|
113
|
+
<div>
|
|
114
|
+
<strong>App not installed?</strong><br>
|
|
115
|
+
<small>Download {{ resolved.config.brand.name }} for your platform below.</small>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<!-- Action Buttons -->
|
|
121
|
+
<div class="d-grid gap-2 d-sm-block">
|
|
122
|
+
<a id="launch-button" href="{{ resolved.app.protocol }}" class="btn btn-adaptive mb-2 mb-sm-0 me-sm-2">
|
|
123
|
+
<i class="fa-solid fa-rocket fa-sm me-2"></i>
|
|
124
|
+
<span>Launch app</span>
|
|
125
|
+
</a>
|
|
126
|
+
<a id="download-button" href="/download" class="btn btn-outline-adaptive mb-2 mb-sm-0">
|
|
127
|
+
<i class="fa-solid fa-download fa-sm me-2"></i>
|
|
128
|
+
<span>Download app</span>
|
|
129
|
+
</a>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<!-- Alternative Actions -->
|
|
133
|
+
<div class="omega-launch__footer">
|
|
134
|
+
Having trouble?
|
|
135
|
+
<a href="/" class="text-decoration-none">Go to website</a>
|
|
136
|
+
·
|
|
137
|
+
<a href="/contact" class="text-decoration-none">Get help</a>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</section>
|
|
141
|
+
|
|
142
|
+
{{ content | omega_content_format }}
|