@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,596 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: frontend/core/base
|
|
3
|
+
|
|
4
|
+
# Marketing-section defaults (Ian 2026-07-11: deliberate product behavior —
|
|
5
|
+
# promo banner, social proof, testimonials, FAQs ship ON by default and are
|
|
6
|
+
# consumer-overridable). PLANS never live here: payment.products is the only
|
|
7
|
+
# pricing source (C2) — the enterprise row included.
|
|
8
|
+
|
|
9
|
+
# Hero Section — the page's copy (shared heading/masthead cluster; the old
|
|
10
|
+
# inline | default: fallbacks in markup live here now)
|
|
11
|
+
hero:
|
|
12
|
+
headline: "The right plans,"
|
|
13
|
+
headline_accent: "for the right price"
|
|
14
|
+
subheadline: "Simple and affordable pricing. No hidden fees, no surprises."
|
|
15
|
+
|
|
16
|
+
# Social Proof Section
|
|
17
|
+
social_proof:
|
|
18
|
+
items:
|
|
19
|
+
- number: "5M"
|
|
20
|
+
label: "Customers"
|
|
21
|
+
sublabel: "90 countries"
|
|
22
|
+
- number: "#1"
|
|
23
|
+
label: "Product of the month"
|
|
24
|
+
sublabel: "Product Hunt"
|
|
25
|
+
- number: "4.8"
|
|
26
|
+
label: "Capterra"
|
|
27
|
+
show_stars: true
|
|
28
|
+
- number: "4.8"
|
|
29
|
+
label: "G2"
|
|
30
|
+
show_stars: true
|
|
31
|
+
|
|
32
|
+
# CTA Section — the page's copy (shared marketing/cta band; the old inline
|
|
33
|
+
# | default: fallbacks in markup live here now)
|
|
34
|
+
cta:
|
|
35
|
+
headline: "Need help finding the right plan?"
|
|
36
|
+
subheadline: "Talk to our support team. We'll point you to exactly what you need."
|
|
37
|
+
primary_button:
|
|
38
|
+
text: "Talk to us"
|
|
39
|
+
href: "/contact"
|
|
40
|
+
|
|
41
|
+
# Testimonials Section — no avatar: by default, so the quotes wear the
|
|
42
|
+
# initial badge (the framework never loads an external portrait at runtime).
|
|
43
|
+
# A brand adds avatar: pointing at its own shipped image.
|
|
44
|
+
testimonials:
|
|
45
|
+
superheadline: "Testimonials"
|
|
46
|
+
items:
|
|
47
|
+
- quote: "This platform <em>transformed</em> my business. The support is incredible!"
|
|
48
|
+
author: "Sarah Johnson"
|
|
49
|
+
role: "CEO"
|
|
50
|
+
company: "TechStart Inc"
|
|
51
|
+
initial: "S"
|
|
52
|
+
- quote: "Best investment I've made. Achieved more here than with <em>any</em> consultant."
|
|
53
|
+
author: "Michael Chen"
|
|
54
|
+
role: "Founder"
|
|
55
|
+
company: "DataFlow"
|
|
56
|
+
initial: "M"
|
|
57
|
+
- quote: "The community support made all the difference in our <em>growth journey</em>."
|
|
58
|
+
author: "Emily Davis"
|
|
59
|
+
role: "Director"
|
|
60
|
+
company: "Creative Studio"
|
|
61
|
+
initial: "E"
|
|
62
|
+
|
|
63
|
+
# FAQs Section
|
|
64
|
+
faqs:
|
|
65
|
+
superheadline:
|
|
66
|
+
text: "FAQs"
|
|
67
|
+
headline: "Frequently asked <em>questions</em>"
|
|
68
|
+
subheadline: "Everything you need to know about {{ resolved.config.brand.name }} billing & subscriptions."
|
|
69
|
+
# Trial copy DERIVES from the catalog (#273): the answer renders empty when
|
|
70
|
+
# no product carries `trial.days`, and the renderers drop answerless items —
|
|
71
|
+
# so a brand with no trial ships no trial claim. A refund policy is brand
|
|
72
|
+
# copy, never a framework default: the defaults state only what the catalog
|
|
73
|
+
# knows.
|
|
74
|
+
items:
|
|
75
|
+
- question: "Can I cancel at any time?"
|
|
76
|
+
answer: "Yes, you can cancel anytime, no questions asked. However, we would highly appreciate it if you could give us some feedback so we can improve."
|
|
77
|
+
- question: "Is there a free trial?"
|
|
78
|
+
answer: "{% if resolved.pricing.trialDays > 0 %}Yes, every paid plan starts with a {{ resolved.pricing.trialDays }}-day free trial, and you can cancel any time before it ends.{% endif %}"
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
{% comment %}
|
|
82
|
+
Pricing renders from config alone (C2): resolved.pricing is composed from
|
|
83
|
+
payment.products by the engine — plans, one-time products, billing toggle
|
|
84
|
+
availability, savings %, comparison matrix. The marketing chrome above
|
|
85
|
+
(banner, social proof, testimonials, FAQs) ships ON by default; consumer
|
|
86
|
+
page frontmatter overrides any of it (pricing.promo: false kills the
|
|
87
|
+
banner). The enterprise row is DATA, not chrome: it renders only for the
|
|
88
|
+
catalog product marked `enterprise: true`.
|
|
89
|
+
{% endcomment %}
|
|
90
|
+
|
|
91
|
+
{% assign _plans = resolved.pricing.plans %}
|
|
92
|
+
{% assign _plan_count = _plans | size %}
|
|
93
|
+
{% assign _onetime = resolved.pricing.oneTime %}
|
|
94
|
+
{% assign _onetime_count = _onetime | size %}
|
|
95
|
+
{% assign _enterprise = resolved.pricing.enterprise %}
|
|
96
|
+
{% assign _show_toggle = false %}
|
|
97
|
+
{% if resolved.pricing.billing.monthly and resolved.pricing.billing.annually %}
|
|
98
|
+
{% assign _show_toggle = true %}
|
|
99
|
+
{% endif %}
|
|
100
|
+
{% assign _default_annual = resolved.pricing.billing.annually %}
|
|
101
|
+
|
|
102
|
+
<!-- Promo Banner — ON by default; pricing.promo overrides badge/text/code, pricing.promo: false kills it -->
|
|
103
|
+
{% unless resolved.pricing.promo == false %}
|
|
104
|
+
<div id="pricing-promo-banner" class="omega-promo position-fixed top-0 start-0 w-100" style="z-index: 1050;" hidden>
|
|
105
|
+
<div class="py-2 position-relative">
|
|
106
|
+
<button type="button" class="btn-close position-absolute top-50 end-0 translate-middle-y me-3" aria-label="Close" onclick="this.closest('#pricing-promo-banner').hidden=true;var n=document.querySelector('.omega-nav');if(n)n.style.marginTop=''"></button>
|
|
107
|
+
<div class="container-fluid">
|
|
108
|
+
<div class="d-flex align-items-center justify-content-center gap-3 flex-wrap pe-5">
|
|
109
|
+
<span id="pricing-promo-badge" class="omega-chip omega-chip--accent">
|
|
110
|
+
{{ resolved.pricing.promo.badge | default: "15% OFF!" }}
|
|
111
|
+
</span>
|
|
112
|
+
<span id="pricing-promo-text" class="fw-semibold text-body">
|
|
113
|
+
{{ resolved.pricing.promo.text | default: "Flash sale" }}
|
|
114
|
+
</span>
|
|
115
|
+
<span>
|
|
116
|
+
Ending in <span id="pricing-promo-countdown" class="omega-promo__countdown">--</span>
|
|
117
|
+
</span>
|
|
118
|
+
<span>
|
|
119
|
+
Use code <span id="pricing-promo-code" class="omega-promo__code omega-chip">{{ resolved.pricing.promo.code | default: "WELCOME15" }}</span>
|
|
120
|
+
</span>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
{% endunless %}
|
|
126
|
+
|
|
127
|
+
<!-- Hero Section -->
|
|
128
|
+
{% comment %} #467 (after #749): this masthead IS the page's first viewport, so
|
|
129
|
+
the band paints with the document — data-omega-first-paint on the section, no
|
|
130
|
+
stagger container, and the masthead cluster on its first_paint switch. The
|
|
131
|
+
bands below keep the reveal lane. {% endcomment %}
|
|
132
|
+
<section class="omega-dotgrid pb-4" data-omega-first-paint data-omega-dotfield>
|
|
133
|
+
<div class="container">
|
|
134
|
+
<div class="row justify-content-center text-center">
|
|
135
|
+
<div class="col-lg-10">
|
|
136
|
+
{% component "heading/masthead", eyebrow: "Pricing", headline: resolved.hero.headline, headline_accent: resolved.hero.headline_accent, sub: resolved.hero.subheadline, sub_class: "omega-hero__sub mx-auto", first_paint: true %}
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</section>
|
|
141
|
+
|
|
142
|
+
{% if _plan_count == 0 and _onetime_count == 0 and _enterprise == nil %}
|
|
143
|
+
<!-- Empty state: no published catalog (payment.products) — never render fiction -->
|
|
144
|
+
<section class="pt-0">
|
|
145
|
+
<div class="container">
|
|
146
|
+
<div class="row justify-content-center text-center">
|
|
147
|
+
<div class="col-lg-8">
|
|
148
|
+
<div id="pricing-empty" class="card p-5" data-omega-reveal>
|
|
149
|
+
<h2 class="h3 mb-3">Pricing isn't published yet</h2>
|
|
150
|
+
<p class="text-muted mb-4">We're putting the finishing touches on our plans. Reach out and we'll get you set up in the meantime.</p>
|
|
151
|
+
<div>
|
|
152
|
+
<a href="/contact" class="btn btn-adaptive btn-lg px-4">
|
|
153
|
+
<i class="fa-solid fa-envelope me-2"></i>
|
|
154
|
+
Contact us
|
|
155
|
+
</a>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</section>
|
|
162
|
+
{% endif %}
|
|
163
|
+
|
|
164
|
+
{% if _plan_count > 0 %}
|
|
165
|
+
<!-- Pricing Plans Section -->
|
|
166
|
+
<section class="pt-0">
|
|
167
|
+
<div class="container">
|
|
168
|
+
<div class="row justify-content-center">
|
|
169
|
+
<div class="col-12">
|
|
170
|
+
{% comment %} The band's heading (#270): the card names are h3s, so
|
|
171
|
+
without it the page skips from the hero h1 straight to h3. Visually
|
|
172
|
+
hidden — the design carries the band by its cards, not a title. {% endcomment %}
|
|
173
|
+
<h2 class="visually-hidden">Subscription plans</h2>
|
|
174
|
+
|
|
175
|
+
{% if _show_toggle %}
|
|
176
|
+
{% if resolved.pricing.savingsPercent > 0 %}
|
|
177
|
+
{% assign _savings = resolved.pricing.savingsPercent %}
|
|
178
|
+
{% else %}
|
|
179
|
+
{% assign _savings = 20 %}
|
|
180
|
+
{% endif %}
|
|
181
|
+
<div class="d-flex align-items-center justify-content-center mb-5" data-omega-reveal>
|
|
182
|
+
<div class="omega-billing-toggle" role="group" aria-label="Billing toggle" data-omega-segmented>
|
|
183
|
+
<input type="radio" class="btn-check" name="billing" id="monthly" autocomplete="off" data-billing="monthly" {% unless _default_annual %}checked{% endunless %}>
|
|
184
|
+
<label class="btn" for="monthly">Monthly</label>
|
|
185
|
+
|
|
186
|
+
<input type="radio" class="btn-check" name="billing" id="annually" autocomplete="off" {% if _default_annual %}checked{% endif %} data-billing="annually">
|
|
187
|
+
<label class="btn" for="annually">Annually <span class="omega-chip omega-chip--accent omega-billing-toggle__save ms-1">Save {{ _savings }}%</span></label>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
{% endif %}
|
|
191
|
+
|
|
192
|
+
{% comment %} Enterprise left the grid (issue #44 item 8) — it gets its
|
|
193
|
+
own full-width row below, so the cards are peers of each other {% endcomment %}
|
|
194
|
+
{% assign _card_count = _plan_count %}
|
|
195
|
+
|
|
196
|
+
<!-- Determine column classes based on number of cards -->
|
|
197
|
+
{% if _card_count == 1 %}
|
|
198
|
+
{% assign col_classes = "col-12 col-md-8 col-lg-6 col-xl-5" %}
|
|
199
|
+
{% elsif _card_count == 2 %}
|
|
200
|
+
{% assign col_classes = "col-12 col-md-6 col-lg-5 col-xl-5" %}
|
|
201
|
+
{% elsif _card_count == 3 %}
|
|
202
|
+
{% assign col_classes = "col-12 col-md-6 col-lg-6 col-xl-4" %}
|
|
203
|
+
{% elsif _card_count == 4 %}
|
|
204
|
+
{% assign col_classes = "col-12 col-md-6 col-lg-6 col-xl-3" %}
|
|
205
|
+
{% elsif _card_count == 5 %}
|
|
206
|
+
{% assign col_classes = "col-12 col-md-6 col-lg-4 col-xl-4 col-xxl-2" %}
|
|
207
|
+
{% else %}
|
|
208
|
+
{% assign col_classes = "col-12 col-md-6 col-lg-4 col-xl-3 col-xxl-2" %}
|
|
209
|
+
{% endif %}
|
|
210
|
+
|
|
211
|
+
<div class="row g-4 g-xl-5 mb-4 justify-content-center" data-omega-reveal-stagger="80">
|
|
212
|
+
{% for plan in _plans %}
|
|
213
|
+
<div class="{{ col_classes }}" data-omega-reveal>
|
|
214
|
+
<div class="card omega-price-card {% if plan.popular %}omega-price-card--popular{% endif %} h-100">
|
|
215
|
+
{% if plan.popular %}
|
|
216
|
+
<span class="omega-chip omega-chip--ink omega-price-card__popular">Most popular</span>
|
|
217
|
+
{% endif %}
|
|
218
|
+
|
|
219
|
+
<!-- Header (fixed rhythm — every card's features start on the same row) -->
|
|
220
|
+
<h3 class="card-title omega-price-card__name mb-0">{{ plan.name }}</h3>
|
|
221
|
+
<p class="omega-price-card__tagline">{{ plan.tagline }}</p>
|
|
222
|
+
|
|
223
|
+
<!-- Price -->
|
|
224
|
+
{% if plan.free %}
|
|
225
|
+
<div class="omega-price-card__price">
|
|
226
|
+
<span class="omega-price-card__amount">Free</span>
|
|
227
|
+
</div>
|
|
228
|
+
{% else %}
|
|
229
|
+
{% if _default_annual and plan.prices.annually > 0 %}
|
|
230
|
+
{% assign _initial_amount = plan.prices.annuallyPerMonth %}
|
|
231
|
+
{% else %}
|
|
232
|
+
{% assign _initial_amount = plan.prices.monthly %}
|
|
233
|
+
{% endif %}
|
|
234
|
+
<div class="omega-price-card__price">
|
|
235
|
+
<span class="omega-price-card__currency">$</span>
|
|
236
|
+
<span class="omega-price-card__amount amount" data-monthly="{{ plan.prices.monthly }}" data-annually="{{ plan.prices.annuallyPerMonth }}">{{ _initial_amount }}</span>
|
|
237
|
+
<span class="omega-price-card__per">/month</span>
|
|
238
|
+
</div>
|
|
239
|
+
{% endif %}
|
|
240
|
+
|
|
241
|
+
<!-- Billing info line (swaps with the toggle — JS contract) -->
|
|
242
|
+
<p class="omega-price-card__billing">
|
|
243
|
+
{% if plan.free %}
|
|
244
|
+
<span>No credit card required</span>
|
|
245
|
+
{% else %}
|
|
246
|
+
{% if _default_annual and plan.prices.annually > 0 %}
|
|
247
|
+
{% capture _initial_billing %}Billed ${{ plan.prices.annually | omega_commaify }} annually{% endcapture %}
|
|
248
|
+
{% else %}
|
|
249
|
+
{% capture _initial_billing %}Billed ${{ plan.prices.monthly | omega_commaify }} monthly{% endcapture %}
|
|
250
|
+
{% endif %}
|
|
251
|
+
<span class="billing-info" data-monthly="Billed ${{ plan.prices.monthly | omega_commaify }} monthly" data-annually="Billed ${{ plan.prices.annually | omega_commaify }} annually">
|
|
252
|
+
{{ _initial_billing }}
|
|
253
|
+
</span>
|
|
254
|
+
{% if resolved.pricing.price_per_unit.enabled %}
|
|
255
|
+
{% include core/pricing/price-per-unit.html plan=plan %}
|
|
256
|
+
{% if monthly_price_per_unit %}
|
|
257
|
+
· <span class="price-per-unit" data-monthly="${{ monthly_price_per_unit }}" data-annually="${{ annual_price_per_unit }}">${{ annual_price_per_unit }}</span> per {{ resolved.pricing.price_per_unit.label }}
|
|
258
|
+
{% endif %}
|
|
259
|
+
{% endif %}
|
|
260
|
+
{% endif %}
|
|
261
|
+
</p>
|
|
262
|
+
|
|
263
|
+
{% if plan.features.size > 0 %}
|
|
264
|
+
<!-- Features (definitions from config → dotted underline +
|
|
265
|
+
tooltip): the ONE list component the homepage plan band
|
|
266
|
+
renders too (#539) -->
|
|
267
|
+
{% component "pricing/features", features: plan.commonFeatures %}
|
|
268
|
+
|
|
269
|
+
{% if plan.extraFeatures.size > 0 %}
|
|
270
|
+
{% unless forloop.first %}
|
|
271
|
+
{% assign _prev_index = forloop.index0 | minus: 1 %}
|
|
272
|
+
{% assign _prev_plan = _plans[_prev_index] %}
|
|
273
|
+
<div class="omega-price-card__tier-note">
|
|
274
|
+
Everything in <strong>{{ _prev_plan.name }}</strong>, and:
|
|
275
|
+
</div>
|
|
276
|
+
{% endunless %}
|
|
277
|
+
{% component "pricing/features", features: plan.extraFeatures %}
|
|
278
|
+
{% elsif forloop.first == false %}
|
|
279
|
+
{% assign _prev_index = forloop.index0 | minus: 1 %}
|
|
280
|
+
{% assign _prev_plan = _plans[_prev_index] %}
|
|
281
|
+
<div class="omega-price-card__tier-note">
|
|
282
|
+
Everything in <strong>{{ _prev_plan.name }}</strong>
|
|
283
|
+
</div>
|
|
284
|
+
{% endif %}
|
|
285
|
+
{% endif %}
|
|
286
|
+
|
|
287
|
+
<!-- CTA — pinned to the card floor; buttons align across the row -->
|
|
288
|
+
<div class="d-grid omega-price-card__cta">
|
|
289
|
+
{% if plan.popular %}
|
|
290
|
+
{% assign _plan_btn = "btn-adaptive omega-btn-ring" %}
|
|
291
|
+
{% else %}
|
|
292
|
+
{% assign _plan_btn = "btn-outline-adaptive" %}
|
|
293
|
+
{% endif %}
|
|
294
|
+
{% iftruthy plan.url %}
|
|
295
|
+
<a href="{{ plan.url }}" class="btn {{ _plan_btn }} fw-semibold omega-hover-nudge">
|
|
296
|
+
{% if plan.trialDays > 0 %}
|
|
297
|
+
Get free trial
|
|
298
|
+
{% else %}
|
|
299
|
+
Get started
|
|
300
|
+
{% endif %}
|
|
301
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
302
|
+
</a>
|
|
303
|
+
{% endiftruthy %}
|
|
304
|
+
{% iffalsy plan.url %}
|
|
305
|
+
<button class="btn {{ _plan_btn }} fw-semibold omega-hover-nudge" data-plan-id="{{ plan.id }}" data-plan-type="subscription">
|
|
306
|
+
{% if plan.trialDays > 0 %}
|
|
307
|
+
Get free trial
|
|
308
|
+
{% else %}
|
|
309
|
+
Get started
|
|
310
|
+
{% endif %}
|
|
311
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
312
|
+
</button>
|
|
313
|
+
{% endiffalsy %}
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
{% endfor %}
|
|
318
|
+
</div>
|
|
319
|
+
|
|
320
|
+
{% comment %} The guarantee line is BRAND copy (#273): a refund window
|
|
321
|
+
is a policy the framework cannot know, so there is no default — a brand
|
|
322
|
+
sets pricing.guarantee and the line appears. {% endcomment %}
|
|
323
|
+
{% iftruthy resolved.pricing.guarantee %}
|
|
324
|
+
<p class="small text-center omega-quiet mb-0" data-omega-reveal>
|
|
325
|
+
<span class="omega-guarantee-icon me-1"><i class="fa-solid fa-shield-halved"></i></span>
|
|
326
|
+
{{ resolved.pricing.guarantee }}
|
|
327
|
+
</p>
|
|
328
|
+
{% endiftruthy %}
|
|
329
|
+
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</section>
|
|
334
|
+
{% endif %}
|
|
335
|
+
|
|
336
|
+
{% iftruthy _enterprise %}
|
|
337
|
+
<!-- Enterprise — its own full-width row under the cards (the catalog product
|
|
338
|
+
marked enterprise: true; no such product, no row) -->
|
|
339
|
+
<section class="pt-0">
|
|
340
|
+
<div class="container">
|
|
341
|
+
{% comment %} The band's heading (#270): its title is an h3, and an
|
|
342
|
+
enterprise-only catalog renders no plans band above it — so the h2 rides
|
|
343
|
+
here too. Visually hidden — the row carries itself. {% endcomment %}
|
|
344
|
+
<h2 class="visually-hidden">Enterprise</h2>
|
|
345
|
+
|
|
346
|
+
<div class="omega-band omega-band--enterprise" data-omega-reveal>
|
|
347
|
+
<div class="omega-band__body">
|
|
348
|
+
<h3 class="omega-band__title">{{ _enterprise.name }}</h3>
|
|
349
|
+
{% iftruthy _enterprise.tagline %}
|
|
350
|
+
<p class="omega-band__desc">{{ _enterprise.tagline }}</p>
|
|
351
|
+
{% endiftruthy %}
|
|
352
|
+
{% if _enterprise.features.size > 0 %}
|
|
353
|
+
<ul class="omega-band__features">
|
|
354
|
+
{% for feature in _enterprise.features %}
|
|
355
|
+
<li>
|
|
356
|
+
<span class="omega-feature-check text-success"><i class="fa-solid fa-check fa-sm"></i></span>
|
|
357
|
+
<span>
|
|
358
|
+
{% if feature.value == 'Unlimited' %}
|
|
359
|
+
Unlimited
|
|
360
|
+
{% elsif feature.value and feature.value != true %}
|
|
361
|
+
{{ feature.value | omega_commaify }}
|
|
362
|
+
{% endif %}
|
|
363
|
+
{% iftruthy feature.definition %}
|
|
364
|
+
<span class="text-decoration-underline text-decoration-dotted cursor-help" data-bs-toggle="tooltip" data-bs-title="{{ feature.definition }}">{{ feature.name }}</span>
|
|
365
|
+
{% endiftruthy %}
|
|
366
|
+
{% iffalsy feature.definition %}
|
|
367
|
+
{{ feature.name }}
|
|
368
|
+
{% endiffalsy %}
|
|
369
|
+
</span>
|
|
370
|
+
</li>
|
|
371
|
+
{% endfor %}
|
|
372
|
+
</ul>
|
|
373
|
+
{% endif %}
|
|
374
|
+
</div>
|
|
375
|
+
|
|
376
|
+
<div class="omega-band__actions">
|
|
377
|
+
<a href="{{ _enterprise.url }}" class="btn btn-outline-adaptive fw-semibold omega-hover-nudge" data-plan-enterprise="{{ _enterprise.id }}">
|
|
378
|
+
Contact us
|
|
379
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
380
|
+
</a>
|
|
381
|
+
</div>
|
|
382
|
+
</div>
|
|
383
|
+
</div>
|
|
384
|
+
</section>
|
|
385
|
+
{% endiftruthy %}
|
|
386
|
+
|
|
387
|
+
{% if _onetime_count > 0 %}
|
|
388
|
+
<!-- One-time Purchases Section (friction #7: presented per type, no billing cadence) -->
|
|
389
|
+
<section class="pt-0">
|
|
390
|
+
<div class="container">
|
|
391
|
+
<div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
|
|
392
|
+
{% comment %} resolved.pricing is engine-composed from payment.products
|
|
393
|
+
(C2) — copy defaults stay INLINE filter args, never frontmatter. {% endcomment %}
|
|
394
|
+
{% component "heading/section-head", headline: resolved.pricing.one_time_headline | default: "One-time", headline_accent: resolved.pricing.one_time_headline_accent | default: "purchases", sub: resolved.pricing.one_time_subheadline | default: "Pay once, keep it forever. No subscription required." %}
|
|
395
|
+
</div>
|
|
396
|
+
|
|
397
|
+
<div class="row g-4 justify-content-center" data-omega-reveal-stagger="80">
|
|
398
|
+
{% for product in _onetime %}
|
|
399
|
+
<div class="col-12 col-md-6 col-lg-5 col-xl-4" data-omega-reveal>
|
|
400
|
+
<div class="card omega-price-card h-100">
|
|
401
|
+
<h3 class="card-title omega-price-card__name mb-0">{{ product.name }}</h3>
|
|
402
|
+
<p class="omega-price-card__tagline">{{ product.tagline }}</p>
|
|
403
|
+
|
|
404
|
+
<div class="omega-price-card__price">
|
|
405
|
+
<span class="omega-price-card__currency">$</span>
|
|
406
|
+
<span class="omega-price-card__amount">{{ product.price | omega_commaify }}</span>
|
|
407
|
+
<span class="omega-price-card__per">one-time</span>
|
|
408
|
+
</div>
|
|
409
|
+
|
|
410
|
+
<p class="omega-price-card__billing">
|
|
411
|
+
<span>Yours forever, pay once</span>
|
|
412
|
+
</p>
|
|
413
|
+
|
|
414
|
+
{% component "pricing/features", features: product.features %}
|
|
415
|
+
|
|
416
|
+
<div class="d-grid omega-price-card__cta">
|
|
417
|
+
<button class="btn btn-adaptive fw-semibold omega-hover-nudge" data-plan-id="{{ product.id }}" data-plan-type="one-time">
|
|
418
|
+
Buy now
|
|
419
|
+
<span class="omega-nudge ms-2"><i class="fa-solid fa-arrow-right fa-sm"></i></span>
|
|
420
|
+
</button>
|
|
421
|
+
</div>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
{% endfor %}
|
|
425
|
+
</div>
|
|
426
|
+
</div>
|
|
427
|
+
</section>
|
|
428
|
+
{% endif %}
|
|
429
|
+
|
|
430
|
+
{% assign _comparison_features = resolved.pricing.comparison.features %}
|
|
431
|
+
{% assign _comparison_count = _comparison_features | size %}
|
|
432
|
+
{% if _plan_count > 1 and _comparison_count > 0 %}
|
|
433
|
+
<!-- Feature Comparison Grid -->
|
|
434
|
+
<section class="omega-compare">
|
|
435
|
+
<div class="container">
|
|
436
|
+
<div class="omega-section-head omega-section-head--center mb-5" data-omega-reveal>
|
|
437
|
+
{% component "heading/section-head", superheadline: resolved.feature_comparison.superheadline.text | default: "Compare", headline: resolved.feature_comparison.headline | default: "Compare all", headline_accent: resolved.feature_comparison.headline_accent | default: "plans", sub: resolved.feature_comparison.subheadline | default: "See exactly what's included in each plan" %}
|
|
438
|
+
<!-- Mobile scroll indicator -->
|
|
439
|
+
<div class="d-md-none">
|
|
440
|
+
<small class="text-muted">
|
|
441
|
+
<span class="me-2">Swipe to see more</span>
|
|
442
|
+
<i class="fa-solid fa-arrow-right fa-sm"></i>
|
|
443
|
+
</small>
|
|
444
|
+
</div>
|
|
445
|
+
</div>
|
|
446
|
+
</div>
|
|
447
|
+
|
|
448
|
+
<div class="container">
|
|
449
|
+
<div class="table-responsive" data-omega-reveal>
|
|
450
|
+
<table class="table caption-top">
|
|
451
|
+
<caption>Compare features</caption>
|
|
452
|
+
<thead>
|
|
453
|
+
<tr>
|
|
454
|
+
<th scope="col">Feature</th>
|
|
455
|
+
{% for plan in _plans %}
|
|
456
|
+
<th scope="col">{{ plan.name }}</th>
|
|
457
|
+
{% endfor %}
|
|
458
|
+
</tr>
|
|
459
|
+
</thead>
|
|
460
|
+
<tbody>
|
|
461
|
+
{% for feature in _comparison_features %}
|
|
462
|
+
<tr>
|
|
463
|
+
<th scope="row">
|
|
464
|
+
{% iftruthy feature.definition %}
|
|
465
|
+
<span class="text-decoration-underline text-decoration-dotted cursor-help" data-bs-toggle="tooltip" data-bs-title="{{ feature.definition }}">{{ feature.name }}</span>
|
|
466
|
+
{% endiftruthy %}
|
|
467
|
+
{% iffalsy feature.definition %}
|
|
468
|
+
{{ feature.name }}
|
|
469
|
+
{% endiffalsy %}
|
|
470
|
+
</th>
|
|
471
|
+
{% for plan in _plans %}
|
|
472
|
+
{% assign _cell = feature.values[plan.id] %}
|
|
473
|
+
<td>
|
|
474
|
+
{%- comment %} One catalog value, both surfaces (#562): a
|
|
475
|
+
truthy cell is a YES, and a cell that is not a bare `true`
|
|
476
|
+
carries its own value as the label — exactly what the plan
|
|
477
|
+
cards render beside their check. A row of "Included" beside
|
|
478
|
+
circle-xmark icons was the same data telling two stories.
|
|
479
|
+
{% endcomment -%}
|
|
480
|
+
{% if _cell %}
|
|
481
|
+
<span class="omega-compare__yes text-success"><i class="fa-solid fa-circle-check fa-md"></i></span>
|
|
482
|
+
{% if _cell != true %}
|
|
483
|
+
<span class="omega-compare__label">{{ _cell | omega_commaify | escape_once }}</span>
|
|
484
|
+
{% endif %}
|
|
485
|
+
{% else %}
|
|
486
|
+
<span class="omega-compare__no"><i class="fa-solid fa-circle-xmark fa-md"></i></span>
|
|
487
|
+
{% endif %}
|
|
488
|
+
</td>
|
|
489
|
+
{% endfor %}
|
|
490
|
+
</tr>
|
|
491
|
+
{% endfor %}
|
|
492
|
+
</tbody>
|
|
493
|
+
</table>
|
|
494
|
+
</div>
|
|
495
|
+
</div>
|
|
496
|
+
</section>
|
|
497
|
+
{% endif %}
|
|
498
|
+
|
|
499
|
+
<!-- Social Proof Section (consumer-provided: social_proof.items) -->
|
|
500
|
+
{% iftruthy resolved.social_proof.items %}
|
|
501
|
+
<section>
|
|
502
|
+
<div class="container">
|
|
503
|
+
<div class="omega-stats" data-omega-reveal-stagger="80">
|
|
504
|
+
{% for item in resolved.social_proof.items %}
|
|
505
|
+
<div class="omega-stat" data-omega-reveal>
|
|
506
|
+
<div class="omega-stat__num" data-omega-countup>{{ item.number }}</div>
|
|
507
|
+
{% iftruthy item.show_stars %}
|
|
508
|
+
<div class="mt-1" style="color: var(--omega-accent);">
|
|
509
|
+
{% for i in (1..5) %}
|
|
510
|
+
<i class="fa-solid fa-star fa-xs"></i>
|
|
511
|
+
{% endfor %}
|
|
512
|
+
</div>
|
|
513
|
+
{% endiftruthy %}
|
|
514
|
+
<div class="omega-stat__label">{{ item.label }}</div>
|
|
515
|
+
{% iftruthy item.sublabel %}
|
|
516
|
+
<div class="omega-stat__sub">{{ item.sublabel }}</div>
|
|
517
|
+
{% endiftruthy %}
|
|
518
|
+
</div>
|
|
519
|
+
{% endfor %}
|
|
520
|
+
</div>
|
|
521
|
+
</div>
|
|
522
|
+
</section>
|
|
523
|
+
{% endiftruthy %}
|
|
524
|
+
|
|
525
|
+
<!-- CTA Section -->
|
|
526
|
+
{% section "marketing/cta", data: resolved.cta %}
|
|
527
|
+
|
|
528
|
+
{% iftruthy resolved.testimonials.items %}
|
|
529
|
+
{% section "marketing/testimonials", data: resolved.testimonials %}
|
|
530
|
+
{% endiftruthy %}
|
|
531
|
+
|
|
532
|
+
<!-- FAQ Section (consumer-provided: faqs.items) -->
|
|
533
|
+
{% comment %} An answerless item is a DERIVED one whose condition didn't hold
|
|
534
|
+
(#273 — the trial FAQ on a catalog with no trial): it drops out of the
|
|
535
|
+
accordion here and out of the FAQPage schema in core/foot.html. The test is
|
|
536
|
+
`!= ''` on purpose — `!= blank` does not filter inside where_exp here.
|
|
537
|
+
{% endcomment %}
|
|
538
|
+
{% assign _faqs = resolved.faqs.items | where_exp: "faq", "faq.answer != ''" %}
|
|
539
|
+
{% assign _faq_count = _faqs | size %}
|
|
540
|
+
{% if _faq_count > 0 %}
|
|
541
|
+
<section>
|
|
542
|
+
<div class="container">
|
|
543
|
+
<div class="omega-duo">
|
|
544
|
+
<div class="omega-duo__aside omega-section-head" data-omega-reveal>
|
|
545
|
+
{% component "heading/section-head", superheadline: resolved.faqs.superheadline.text, headline: resolved.faqs.headline | default: "Frequently asked <em>questions</em>", headline_accent: resolved.faqs.headline_accent, sub: resolved.faqs.subheadline %}
|
|
546
|
+
|
|
547
|
+
{% comment %} The billing object states what the framework KNOWS: the
|
|
548
|
+
plan-switch route really does prorate. Its refund half — the fragment
|
|
549
|
+
and the floating chip — is the same brand copy as the guarantee line
|
|
550
|
+
above (#273), so it rides the same `pricing.guarantee` gate and the
|
|
551
|
+
object drops its chip clearance with it. {% endcomment %}
|
|
552
|
+
<div class="omega-object position-relative pe-4 mt-4 d-none d-lg-block">
|
|
553
|
+
<div class="omega-fragment{% iftruthy resolved.pricing.guarantee %} pb-5{% endiftruthy %}">
|
|
554
|
+
<span class="omega-micro omega-fragment__label">How billing behaves</span>
|
|
555
|
+
<div class="omega-fragment__msg">
|
|
556
|
+
<span class="omega-fragment__msg-mark"><i class="fa-solid fa-arrows-rotate fa-xs"></i></span>
|
|
557
|
+
<span>Switch plans anytime, <strong>prorated</strong> automatically</span>
|
|
558
|
+
</div>
|
|
559
|
+
{% iftruthy resolved.pricing.guarantee %}
|
|
560
|
+
<div class="omega-fragment__msg">
|
|
561
|
+
<span class="omega-fragment__msg-mark"><i class="fa-solid fa-rotate-left fa-xs"></i></span>
|
|
562
|
+
<span>Changed your mind? <strong>Refunded.</strong></span>
|
|
563
|
+
</div>
|
|
564
|
+
{% endiftruthy %}
|
|
565
|
+
</div>
|
|
566
|
+
{% iftruthy resolved.pricing.guarantee %}
|
|
567
|
+
<div class="omega-fragment-chip omega-float position-absolute bottom-0 end-0 translate-middle-y">
|
|
568
|
+
<span class="omega-dot omega-status--ok"></span>
|
|
569
|
+
Money-back guarantee
|
|
570
|
+
</div>
|
|
571
|
+
{% endiftruthy %}
|
|
572
|
+
</div>
|
|
573
|
+
</div>
|
|
574
|
+
|
|
575
|
+
<div class="accordion omega-faq" id="faqAccordion" data-omega-reveal>
|
|
576
|
+
{% for faq in _faqs %}
|
|
577
|
+
<div class="accordion-item">
|
|
578
|
+
<h2 class="accordion-header">
|
|
579
|
+
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq{{ forloop.index }}" aria-expanded="false" aria-controls="faq{{ forloop.index }}">
|
|
580
|
+
<span>{{ faq.question }}</span>
|
|
581
|
+
</button>
|
|
582
|
+
</h2>
|
|
583
|
+
<div id="faq{{ forloop.index }}" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
|
|
584
|
+
<div class="accordion-body">
|
|
585
|
+
{{ faq.answer }}
|
|
586
|
+
</div>
|
|
587
|
+
</div>
|
|
588
|
+
</div>
|
|
589
|
+
{% endfor %}
|
|
590
|
+
</div>
|
|
591
|
+
</div>
|
|
592
|
+
</div>
|
|
593
|
+
</section>
|
|
594
|
+
{% endif %}
|
|
595
|
+
|
|
596
|
+
{{ content | omega_content_format }}
|