@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,43 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Browser Extension Manager - Main Entry
|
|
3
|
+
// ============================================
|
|
4
|
+
// This is the main SCSS entry point for Browser Extension Manager
|
|
5
|
+
// Import this in your extension components using:
|
|
6
|
+
// @use 'omega-extension' as * with ($primary: #2563EB);
|
|
7
|
+
|
|
8
|
+
// App shell mechanics (#111) — the .omega-shell grid, region geometry and the
|
|
9
|
+
// collapse/drawer states, vendored from @omega.js/web alongside the theme's
|
|
10
|
+
// shell SKIN. Loaded BEFORE the theme (Sass emits a module's CSS at its first
|
|
11
|
+
// load, @forward included) so the skin layers OVER the mechanics, exactly as
|
|
12
|
+
// web's core/css/main.scss orders them.
|
|
13
|
+
@use 'shell/index' as omega-shell;
|
|
14
|
+
|
|
15
|
+
// Forward the theme (allows consuming project to configure it)
|
|
16
|
+
@forward 'theme';
|
|
17
|
+
|
|
18
|
+
// Core design tokens (C4) — the cross-target `--omega-*` contract, vendored
|
|
19
|
+
// from @omega.js/web at prepare (package.json `omega.vendorAssets`). Emitted
|
|
20
|
+
// BEFORE the theme so theme rules can override at equal specificity.
|
|
21
|
+
@use 'tokens/index' as omega-tokens;
|
|
22
|
+
|
|
23
|
+
@use 'theme' as *;
|
|
24
|
+
|
|
25
|
+
// Import core extension styles
|
|
26
|
+
@use 'core/_initialize' as *;
|
|
27
|
+
@use 'core/_utilities' as *;
|
|
28
|
+
@use 'core/_animations' as *;
|
|
29
|
+
|
|
30
|
+
// Icon presentation (#183): the square glyph-centered box, the size scale and
|
|
31
|
+
// the spin/bounce/beat utilities, vendored VERBATIM from @omega.js/web's one
|
|
32
|
+
// icon sheet at prepare (package.json `omega.vendorAssets`), same channel as
|
|
33
|
+
// the tokens and shell sheets above. Never hand-written here.
|
|
34
|
+
@use 'core/_fontawesome' as *;
|
|
35
|
+
|
|
36
|
+
// Import component-specific styles
|
|
37
|
+
@use '_component-specific' as *;
|
|
38
|
+
|
|
39
|
+
// First cross-target token consumer: native controls pick up the brand accent.
|
|
40
|
+
// The full component migration onto tokens lands with the D10 skin (C4 cp109).
|
|
41
|
+
body {
|
|
42
|
+
accent-color: var(--omega-accent);
|
|
43
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// OMEGA app shell — structural mechanics for backend/admin surfaces (C3).
|
|
2
|
+
// Layout GEOMETRY only: regions (sidebar / topbar / main / scrim) and
|
|
3
|
+
// STATES (desktop rail collapse, mobile drawer, viewport lock). All paint
|
|
4
|
+
// comes from the token contract (tokens/_index.scss), so a skin restyles by
|
|
5
|
+
// redefining tokens or layering rules — never by fighting these.
|
|
6
|
+
//
|
|
7
|
+
// Markup contract (theme layouts emit this; core/js/core/app-shell.js drives it):
|
|
8
|
+
//
|
|
9
|
+
// <div class="omega-shell" data-omega-shell>
|
|
10
|
+
// <aside class="omega-shell__sidebar" id="…">
|
|
11
|
+
// …pinned head: brand, and any popover-owning module (the selector)…
|
|
12
|
+
// <div class="omega-shell__sidebar-scroll">
|
|
13
|
+
// …nav; text that hides in the rail wears .omega-shell__label…
|
|
14
|
+
// </div>
|
|
15
|
+
// </aside>
|
|
16
|
+
// <header class="omega-shell__topbar">
|
|
17
|
+
// <div class="omega-shell__topbar-start"> (both toggles render only while the page has a rail, #740)
|
|
18
|
+
// <button data-shell-toggle="drawer" aria-expanded="false" aria-controls="…">…</button>
|
|
19
|
+
// <button data-shell-toggle="collapse" aria-expanded="true" aria-controls="…">…</button>
|
|
20
|
+
// </div>
|
|
21
|
+
// <div class="omega-shell__topbar-end">…</div>
|
|
22
|
+
// </header>
|
|
23
|
+
// <button class="omega-shell__drawer-toggle"> (only when the page has a rail and NO topbar, #719)
|
|
24
|
+
// <main class="omega-shell__main">…</main>
|
|
25
|
+
// <div class="omega-shell__scrim" data-shell-dismiss></div>
|
|
26
|
+
// </div>
|
|
27
|
+
//
|
|
28
|
+
// States (stamped on .omega-shell by app-shell.js):
|
|
29
|
+
// data-shell-collapsed="true" — desktop sidebar → icon rail (persisted)
|
|
30
|
+
// data-shell-open="true" — mobile drawer slid in (scrim visible)
|
|
31
|
+
// Variant: .omega-shell--locked — main never scrolls (calendar/studio pages
|
|
32
|
+
// manage their own interior scroll).
|
|
33
|
+
|
|
34
|
+
// Below this, the sidebar becomes the drawer (matches classy's xl cutover).
|
|
35
|
+
$shell-breakpoint: 1200px;
|
|
36
|
+
|
|
37
|
+
:root {
|
|
38
|
+
--omega-shell-sidebar-w: 264px;
|
|
39
|
+
--omega-shell-rail-w: 68px;
|
|
40
|
+
--omega-shell-topbar-h: 60px;
|
|
41
|
+
--omega-shell-pad: 24px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.omega-shell {
|
|
45
|
+
display: grid;
|
|
46
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
47
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
48
|
+
height: 100dvh;
|
|
49
|
+
background: var(--omega-ground);
|
|
50
|
+
color: var(--omega-ink);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// The rail clips NOTHING (#319): a module that opens a popover — the project
|
|
54
|
+
// selector — has to paint outside the 264px box, so the scroll lives one level
|
|
55
|
+
// down on __sidebar-scroll and the rail is merely positioned. Its z-index is
|
|
56
|
+
// the explicit stacking order for those popovers: above sticky page chrome
|
|
57
|
+
// inside the content column (bootstrap's 1020 band), below the drawer/modal
|
|
58
|
+
// layers.
|
|
59
|
+
.omega-shell__sidebar {
|
|
60
|
+
display: flex;
|
|
61
|
+
flex-direction: column;
|
|
62
|
+
grid-row: 1 / -1;
|
|
63
|
+
position: relative;
|
|
64
|
+
z-index: 1030;
|
|
65
|
+
width: var(--omega-shell-sidebar-w);
|
|
66
|
+
background: var(--omega-surface);
|
|
67
|
+
border-inline-end: 1px solid var(--omega-line);
|
|
68
|
+
transition: width var(--omega-speed) var(--omega-ease), transform var(--omega-speed) var(--omega-ease);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Everything under the pinned head scrolls here — nav plus the bottom slot,
|
|
72
|
+
// which keeps its `mt-auto` push because this region is the flex column now.
|
|
73
|
+
.omega-shell__sidebar-scroll {
|
|
74
|
+
display: flex;
|
|
75
|
+
flex: 1;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
min-height: 0;
|
|
78
|
+
overflow-y: auto;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// A rail popover can now outgrow the viewport (nothing clips it), and the
|
|
82
|
+
// shell page itself never scrolls (100dvh grid) — so a long selector menu
|
|
83
|
+
// caps itself and scrolls internally, keeping the tail reachable on short
|
|
84
|
+
// viewports (#319).
|
|
85
|
+
.omega-shell__sidebar .dropdown-menu {
|
|
86
|
+
max-height: calc(100dvh - 8rem);
|
|
87
|
+
overflow-y: auto;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.omega-shell__topbar {
|
|
91
|
+
display: flex;
|
|
92
|
+
align-items: center;
|
|
93
|
+
gap: 8px;
|
|
94
|
+
grid-column: 2;
|
|
95
|
+
min-height: var(--omega-shell-topbar-h);
|
|
96
|
+
padding-inline: 12px;
|
|
97
|
+
background: var(--omega-surface);
|
|
98
|
+
border-bottom: 1px solid var(--omega-line);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.omega-shell__topbar-start,
|
|
102
|
+
.omega-shell__topbar-end {
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: 8px;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.omega-shell__topbar-end {
|
|
109
|
+
margin-inline-start: auto;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// The row is PINNED, not auto-placed (#741): a page that turns the topbar off
|
|
113
|
+
// would otherwise land main in the `auto` row, size it to its content, and
|
|
114
|
+
// hand the scroll back to the document. An empty `auto` row is zero height,
|
|
115
|
+
// so row 2 is the whole `1fr` with or without a topbar — and the drawer block
|
|
116
|
+
// below re-places only the column, so the pin holds at every width.
|
|
117
|
+
.omega-shell__main {
|
|
118
|
+
grid-column: 2;
|
|
119
|
+
grid-row: 2;
|
|
120
|
+
overflow-y: auto;
|
|
121
|
+
padding: var(--omega-shell-pad);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// The floating drawer toggle: a page with a rail and no topbar renders it
|
|
125
|
+
// instead of the topbar's copy ([#719]). It sits above main and below the
|
|
126
|
+
// drawer + scrim, so opening the drawer covers it and the scrim takes the
|
|
127
|
+
// next tap. The layout hides it above the cutover with `d-xl-none` (the rail
|
|
128
|
+
// is on screen there), so this block is geometry only.
|
|
129
|
+
.omega-shell__drawer-toggle {
|
|
130
|
+
position: fixed;
|
|
131
|
+
inset-block-start: 12px;
|
|
132
|
+
inset-inline-start: 12px;
|
|
133
|
+
z-index: 1035;
|
|
134
|
+
background: var(--omega-surface);
|
|
135
|
+
border: 1px solid var(--omega-line);
|
|
136
|
+
border-radius: var(--omega-radius-m);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Scrim only participates in the mobile drawer state.
|
|
140
|
+
.omega-shell__scrim {
|
|
141
|
+
display: none;
|
|
142
|
+
position: fixed;
|
|
143
|
+
inset: 0;
|
|
144
|
+
z-index: 1040; // pairs with the drawer below; sits under modal layers (1050+)
|
|
145
|
+
background: rgb(0 0 0 / 45%);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ─── Desktop rail collapse ───────────────────────────────────────────────────
|
|
149
|
+
|
|
150
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__sidebar {
|
|
151
|
+
width: var(--omega-shell-rail-w);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__label {
|
|
155
|
+
display: none;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// ─── Viewport-locked variant ─────────────────────────────────────────────────
|
|
159
|
+
|
|
160
|
+
.omega-shell--locked .omega-shell__main {
|
|
161
|
+
overflow: hidden;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ─── Mobile: sidebar becomes the drawer ──────────────────────────────────────
|
|
165
|
+
|
|
166
|
+
@media (max-width: ($shell-breakpoint - 0.02px)) {
|
|
167
|
+
.omega-shell {
|
|
168
|
+
grid-template-columns: minmax(0, 1fr);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.omega-shell__topbar,
|
|
172
|
+
.omega-shell__main {
|
|
173
|
+
grid-column: 1;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.omega-shell__sidebar {
|
|
177
|
+
position: fixed;
|
|
178
|
+
inset-block: 0;
|
|
179
|
+
inset-inline-start: 0;
|
|
180
|
+
z-index: 1045;
|
|
181
|
+
transform: translateX(-100%);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// The drawer always shows at full width with labels — desktop rail
|
|
185
|
+
// collapse has no meaning here.
|
|
186
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__sidebar {
|
|
187
|
+
width: var(--omega-shell-sidebar-w);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__label {
|
|
191
|
+
display: revert;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.omega-shell[data-shell-open='true'] .omega-shell__sidebar {
|
|
195
|
+
transform: translateX(0);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.omega-shell[data-shell-open='true'] .omega-shell__scrim {
|
|
199
|
+
display: block;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@media (prefers-reduced-motion: reduce) {
|
|
204
|
+
.omega-shell__sidebar {
|
|
205
|
+
transition: none;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// OMEGA core design tokens — the runtime contract every theme (and, at C4,
|
|
2
|
+
// every target) consumes. CSS custom properties ONLY: themes restyle by
|
|
3
|
+
// redefining tokens, components read `var(--omega-*)` and never hardcode.
|
|
4
|
+
//
|
|
5
|
+
// VALUES are the classy v2 sheet (docs/web/classy-v2/DIRECTION.md, Ian-approved
|
|
6
|
+
// draft-2 comps): warm-paper light neutrals, de-blued charcoal dark, a single
|
|
7
|
+
// brand accent slot, reserved status hues, and the Manus-split type stacks.
|
|
8
|
+
// The NAMES plus the light/dark/attribute plumbing below are the contract
|
|
9
|
+
// (D2: dual-theme at the token level from day one).
|
|
10
|
+
//
|
|
11
|
+
// The accent family is a BUILD-TIME override surface: when `brand.color`
|
|
12
|
+
// is set, head.html emits inline `:root` ramps from composeBrandTokens
|
|
13
|
+
// (src/brand-tokens.js) — a light ramp AND a dark-variant ramp stamped with
|
|
14
|
+
// this same plumbing — that win the cascade over these placeholders.
|
|
15
|
+
//
|
|
16
|
+
// Theme attribute: `data-bs-theme` is what core/js/core/appearance.js
|
|
17
|
+
// stamps today (Bootstrap-era name; renames alongside the appearance UI
|
|
18
|
+
// when classy retires — keyed here in exactly one place on purpose).
|
|
19
|
+
//
|
|
20
|
+
// Type presets: `data-omega-type` on <html> re-pairs the font tokens
|
|
21
|
+
// (mix is the default pairing — serif marketing display over sans UI).
|
|
22
|
+
//
|
|
23
|
+
// Surface-2 moves in OPPOSITE directions per mode, on purpose (#152): dark
|
|
24
|
+
// elevates by getting lighter (#1d1d1f over the #0d0d0e ground), light
|
|
25
|
+
// elevates with white + shadow and RECESSES by getting darker. It shipped at
|
|
26
|
+
// #f6f6f5, one point off the light ground, so anything painting it directly
|
|
27
|
+
// on the page was invisible in light mode and correct in dark. #ececeb sits
|
|
28
|
+
// between the ground and the hairline in the warm-neutral ramp: a visible well
|
|
29
|
+
// on the ground AND on a white card, still nowhere near --omega-line-strong.
|
|
30
|
+
// Its Bootstrap twins (`$classy-surface-2-light`, `--bs-secondary-bg-rgb` in
|
|
31
|
+
// classy's root bridge) carry the same value and move with it.
|
|
32
|
+
//
|
|
33
|
+
// Status hues ship in PAIRS: `--omega-ok` and `--omega-ok-rgb` (same for
|
|
34
|
+
// warn/danger). Bootstrap's translucency utilities paint from
|
|
35
|
+
// `rgba(var(--bs-success-rgb), …)`, which no var() can feed a hex to, so each
|
|
36
|
+
// theme's root bridge points --bs-success/-warning/-danger and their -rgb
|
|
37
|
+
// companions at these — ONE green for `bg-success`, `.text-success` and every
|
|
38
|
+
// token-painted glyph, in both modes (#13). A theme that re-values a status
|
|
39
|
+
// hue MUST re-value its -rgb twin or the two drift apart again.
|
|
40
|
+
|
|
41
|
+
@mixin light-tokens {
|
|
42
|
+
--omega-ground: #f5f5f4;
|
|
43
|
+
--omega-surface: #ffffff;
|
|
44
|
+
--omega-surface-2: #ececeb; // the light well: RECESSED off the ground, never a second white
|
|
45
|
+
--omega-ink: #1a1a19;
|
|
46
|
+
--omega-ink-muted: #6d6d6c;
|
|
47
|
+
--omega-ink-faint: #a1a19e;
|
|
48
|
+
--omega-line: #e8e8e6;
|
|
49
|
+
--omega-line-strong: #d8d8d5;
|
|
50
|
+
--omega-accent: #2563eb; // placeholder — brand.color wins at build
|
|
51
|
+
--omega-accent-hover: #1451d8;
|
|
52
|
+
--omega-accent-active: #124ac6;
|
|
53
|
+
--omega-accent-subtle: rgba(37, 99, 235, 0.12);
|
|
54
|
+
--omega-accent-ink: #ffffff;
|
|
55
|
+
--omega-accent-ring: rgba(37, 99, 235, 0.35);
|
|
56
|
+
--omega-ok: #12925c;
|
|
57
|
+
--omega-ok-rgb: 18, 146, 92;
|
|
58
|
+
--omega-warn: #c47206;
|
|
59
|
+
--omega-warn-rgb: 196, 114, 6;
|
|
60
|
+
--omega-danger: #d92d20;
|
|
61
|
+
--omega-danger-rgb: 217, 45, 32;
|
|
62
|
+
--omega-chart-2: #0f8fa9;
|
|
63
|
+
--omega-chart-3: #7a45b5;
|
|
64
|
+
--omega-chart-4: #b0416a;
|
|
65
|
+
--omega-chart-5: #a06a08;
|
|
66
|
+
--omega-chart-6: #6a7f2b;
|
|
67
|
+
--omega-shadow-1: 0 1px 2px rgb(24 23 21 / 5%);
|
|
68
|
+
--omega-shadow-2: 0 18px 44px rgb(24 23 21 / 10%);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@mixin dark-tokens {
|
|
72
|
+
--omega-ground: #0d0d0e;
|
|
73
|
+
--omega-surface: #151516;
|
|
74
|
+
--omega-surface-2: #1d1d1f;
|
|
75
|
+
--omega-ink: #ebebea;
|
|
76
|
+
--omega-ink-muted: #9f9fa0;
|
|
77
|
+
--omega-ink-faint: #6c6c6e;
|
|
78
|
+
--omega-line: #262628;
|
|
79
|
+
--omega-line-strong: #333336;
|
|
80
|
+
--omega-accent: #5484ef; // placeholder — brand.color's dark ramp wins at build
|
|
81
|
+
--omega-accent-hover: #336dec;
|
|
82
|
+
--omega-accent-active: #2060eb;
|
|
83
|
+
--omega-accent-subtle: rgba(84, 132, 239, 0.16);
|
|
84
|
+
--omega-accent-ink: #111213;
|
|
85
|
+
--omega-accent-ring: rgba(84, 132, 239, 0.35);
|
|
86
|
+
--omega-ok: #3ecf8e;
|
|
87
|
+
--omega-ok-rgb: 62, 207, 142;
|
|
88
|
+
--omega-warn: #f5a524;
|
|
89
|
+
--omega-warn-rgb: 245, 165, 36;
|
|
90
|
+
--omega-danger: #f0574d;
|
|
91
|
+
--omega-danger-rgb: 240, 87, 77;
|
|
92
|
+
--omega-chart-2: #1f9fb4;
|
|
93
|
+
--omega-chart-3: #c09aec;
|
|
94
|
+
--omega-chart-4: #ee89a8;
|
|
95
|
+
--omega-chart-5: #e0a33c;
|
|
96
|
+
--omega-chart-6: #a9c153;
|
|
97
|
+
--omega-shadow-1: 0 1px 2px rgb(0 0 0 / 30%);
|
|
98
|
+
--omega-shadow-2: 0 18px 44px rgb(0 0 0 / 45%);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:root {
|
|
102
|
+
@include light-tokens;
|
|
103
|
+
|
|
104
|
+
// scheme-agnostic
|
|
105
|
+
--omega-radius-xs: 6px;
|
|
106
|
+
--omega-radius-s: 8px;
|
|
107
|
+
--omega-radius-m: 10px;
|
|
108
|
+
--omega-radius-l: 14px;
|
|
109
|
+
--omega-radius-xl: 20px;
|
|
110
|
+
--omega-radius-pill: 50rem;
|
|
111
|
+
--omega-speed: 160ms;
|
|
112
|
+
--omega-speed-slow: 550ms;
|
|
113
|
+
--omega-speed-first-paint: 300ms; // the first viewport's reveal, see motion/_index.scss
|
|
114
|
+
--omega-ease: cubic-bezier(0.25, 0.5, 0.35, 1);
|
|
115
|
+
|
|
116
|
+
// Type stacks (D5: system stacks until Ian picks vendored faces — the
|
|
117
|
+
// token seam makes that swap a values-only change).
|
|
118
|
+
--omega-font-ui: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, 'Helvetica Neue', arial, sans-serif;
|
|
119
|
+
--omega-font-serif: ui-serif, georgia, 'Times New Roman', times, serif;
|
|
120
|
+
--omega-font-mono: ui-monospace, 'SF Mono', sfmono-regular, menlo, consolas, 'Liberation Mono', monospace;
|
|
121
|
+
|
|
122
|
+
// Pairing slots components actually read: marketing display vs app display.
|
|
123
|
+
// Default = the "mix" pairing (serif marketing, sans app).
|
|
124
|
+
--omega-font-marketing: var(--omega-font-serif);
|
|
125
|
+
--omega-font-display: var(--omega-font-ui);
|
|
126
|
+
|
|
127
|
+
// Chart series-1 rides the accent; 2–6 are the CVD-validated categorical
|
|
128
|
+
// ramp above (cool half first, warm half after — what keeps two vocabularies
|
|
129
|
+
// apart at a glance). It is ONE ramp for two surfaces: a chart series
|
|
130
|
+
// (core/js/libs/charts.js) and a `.omega-badge-tone` chip read the same slot,
|
|
131
|
+
// so the same thing is the same color wherever it appears. Muted on purpose
|
|
132
|
+
// — status is told by a dot and a label, never by color alone.
|
|
133
|
+
--omega-chart-1: var(--omega-accent);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Consumer type presets — one attribute (or a token override in main.scss)
|
|
137
|
+
// re-pairs the display faces everywhere.
|
|
138
|
+
:root[data-omega-type='sans'] {
|
|
139
|
+
--omega-font-marketing: var(--omega-font-ui);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:root[data-omega-type='serif'] {
|
|
143
|
+
--omega-font-marketing: var(--omega-font-serif);
|
|
144
|
+
--omega-font-display: var(--omega-font-serif);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:root[data-omega-type='mono'] {
|
|
148
|
+
--omega-font-marketing: var(--omega-font-mono);
|
|
149
|
+
--omega-font-display: var(--omega-font-mono);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// OS preference carries when no explicit choice is stamped…
|
|
153
|
+
@media (prefers-color-scheme: dark) {
|
|
154
|
+
:root {
|
|
155
|
+
@include dark-tokens;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// …and the appearance.js stamp beats the OS in BOTH directions.
|
|
160
|
+
:root[data-bs-theme='dark'] {
|
|
161
|
+
@include dark-tokens;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:root[data-bs-theme='light'] {
|
|
165
|
+
@include light-tokens;
|
|
166
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App Shell Module
|
|
3
|
+
* Drives the .omega-shell mechanics (core/css/shell/_index.scss): desktop
|
|
4
|
+
* sidebar collapse (persisted) and the mobile drawer (scrim + Escape dismiss).
|
|
5
|
+
* Controls are declarative — [data-shell-toggle="collapse|drawer"] and
|
|
6
|
+
* [data-shell-dismiss] anywhere in the page.
|
|
7
|
+
*/
|
|
8
|
+
import omega from '@omega.js/client';
|
|
9
|
+
|
|
10
|
+
// Constants
|
|
11
|
+
const STORAGE_KEY = 'shell.collapsed';
|
|
12
|
+
|
|
13
|
+
// Module
|
|
14
|
+
export default () => {
|
|
15
|
+
const $shell = document.querySelector('[data-omega-shell]');
|
|
16
|
+
|
|
17
|
+
// Create app shell API
|
|
18
|
+
const shellAPI = {
|
|
19
|
+
/**
|
|
20
|
+
* Whether the desktop sidebar is collapsed to the icon rail
|
|
21
|
+
* @returns {boolean}
|
|
22
|
+
*/
|
|
23
|
+
isCollapsed: () => $shell?.getAttribute('data-shell-collapsed') === 'true',
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Whether the mobile drawer is open
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
isOpen: () => $shell?.getAttribute('data-shell-open') === 'true',
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Collapse or expand the desktop sidebar (persisted)
|
|
33
|
+
* @param {boolean} value
|
|
34
|
+
*/
|
|
35
|
+
setCollapsed: (value) => {
|
|
36
|
+
if (!$shell) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
$shell.setAttribute('data-shell-collapsed', value ? 'true' : 'false');
|
|
41
|
+
omega.storage().set(STORAGE_KEY, !!value);
|
|
42
|
+
syncControls(shellAPI);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Open or close the mobile drawer (not persisted)
|
|
47
|
+
* @param {boolean} value
|
|
48
|
+
*/
|
|
49
|
+
setOpen: (value) => {
|
|
50
|
+
if (!$shell) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
$shell.setAttribute('data-shell-open', value ? 'true' : 'false');
|
|
55
|
+
syncControls(shellAPI);
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Toggle the desktop sidebar collapse state
|
|
60
|
+
*/
|
|
61
|
+
toggleCollapsed() {
|
|
62
|
+
this.setCollapsed(!this.isCollapsed());
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Toggle the mobile drawer
|
|
67
|
+
*/
|
|
68
|
+
toggleOpen() {
|
|
69
|
+
this.setOpen(!this.isOpen());
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// Register on the omega library — web's bundle entry creates the container before
|
|
74
|
+
// this runs; vendored surfaces (desktop/extension renderers) call this
|
|
75
|
+
// module directly with no such entry, so create it if absent (#111)
|
|
76
|
+
omega._library = omega._library || {};
|
|
77
|
+
omega._library.appShell = shellAPI;
|
|
78
|
+
|
|
79
|
+
// No shell on this page — the API stays registered but inert
|
|
80
|
+
if (!$shell) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Restore the persisted collapse state
|
|
85
|
+
if (String(omega.storage().get(STORAGE_KEY)) === 'true') {
|
|
86
|
+
$shell.setAttribute('data-shell-collapsed', 'true');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Delegated controls
|
|
90
|
+
document.addEventListener('click', (event) => {
|
|
91
|
+
const $control = event.target.closest('[data-shell-toggle], [data-shell-dismiss]');
|
|
92
|
+
|
|
93
|
+
if (!$control) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
|
|
99
|
+
if ($control.hasAttribute('data-shell-dismiss')) {
|
|
100
|
+
shellAPI.setOpen(false);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if ($control.getAttribute('data-shell-toggle') === 'collapse') {
|
|
105
|
+
shellAPI.toggleCollapsed();
|
|
106
|
+
} else {
|
|
107
|
+
shellAPI.toggleOpen();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Escape closes the drawer
|
|
112
|
+
document.addEventListener('keydown', (event) => {
|
|
113
|
+
if (event.key === 'Escape' && shellAPI.isOpen()) {
|
|
114
|
+
shellAPI.setOpen(false);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Reflect the restored state onto the controls
|
|
119
|
+
syncControls(shellAPI);
|
|
120
|
+
|
|
121
|
+
console.log('App shell module loaded');
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Sync aria-expanded on every shell control to the current state
|
|
126
|
+
* @param {object} shellAPI - The shell API
|
|
127
|
+
*/
|
|
128
|
+
const syncControls = (shellAPI) => {
|
|
129
|
+
document.querySelectorAll('[data-shell-toggle]').forEach(($el) => {
|
|
130
|
+
const expanded = $el.getAttribute('data-shell-toggle') === 'collapse'
|
|
131
|
+
? !shellAPI.isCollapsed()
|
|
132
|
+
: shellAPI.isOpen();
|
|
133
|
+
|
|
134
|
+
$el.setAttribute('aria-expanded', expanded ? 'true' : 'false');
|
|
135
|
+
});
|
|
136
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initialize Bootstrap Tooltips
|
|
3
|
+
* Finds all elements with data-bs-toggle="tooltip" and initializes them
|
|
4
|
+
*
|
|
5
|
+
* The ONE home ([#99](https://github.com/Omega-JS-Stack/omega/issues/99)):
|
|
6
|
+
* every theme shipped a byte-identical copy under its own `js/`, so a fix
|
|
7
|
+
* had to be made three times. Themes import it off the core layer
|
|
8
|
+
* (`__main_assets__/js/libs/initialize-tooltips.js`) — same lane as the
|
|
9
|
+
* chart helper beside it — and `window.bootstrap` is already global by the
|
|
10
|
+
* time a theme's DOM-ready handler calls this.
|
|
11
|
+
*
|
|
12
|
+
* @param {ParentNode} [$root] - the subtree to scan; markup injected AFTER the
|
|
13
|
+
* page-load pass (the change-plan modal's feature bullets) passes its own
|
|
14
|
+
* container so only the new triggers are wired.
|
|
15
|
+
*/
|
|
16
|
+
export default function initializeTooltips($root = document) {
|
|
17
|
+
const $tooltipTriggers = $root.querySelectorAll('[data-bs-toggle="tooltip"]');
|
|
18
|
+
|
|
19
|
+
// If no tooltips found, exit early
|
|
20
|
+
if ($tooltipTriggers.length === 0) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Log the number of tooltips being initialized
|
|
25
|
+
console.log(`Initializing ${$tooltipTriggers.length} tooltips`);
|
|
26
|
+
|
|
27
|
+
// Initialize each tooltip
|
|
28
|
+
$tooltipTriggers.forEach(($el) => {
|
|
29
|
+
new bootstrap.Tooltip($el);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Shared reCAPTCHA v3 management — lazy script load + token mint for any
|
|
2
|
+
// public form that posts to a recaptcha-gated backend route (checkout
|
|
3
|
+
// payment intent, newsletter capture). Site key: omega.config.captcha.providers.recaptcha.siteKey.
|
|
4
|
+
import omega from '@omega.js/client';
|
|
5
|
+
import { createLogger } from '__main_assets__/js/libs/logger.js';
|
|
6
|
+
|
|
7
|
+
const logger = createLogger('recaptcha');
|
|
8
|
+
|
|
9
|
+
let recaptchaReady = false;
|
|
10
|
+
let recaptchaSiteKey = null;
|
|
11
|
+
|
|
12
|
+
// Initialize reCAPTCHA
|
|
13
|
+
export async function initializeRecaptcha(siteKey) {
|
|
14
|
+
if (!siteKey) {
|
|
15
|
+
console.warn('No reCAPTCHA site key provided');
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
recaptchaSiteKey = siteKey;
|
|
20
|
+
|
|
21
|
+
// Check if already loaded
|
|
22
|
+
if (window.grecaptcha) {
|
|
23
|
+
recaptchaReady = true;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
// Use omega.dom().loadScript()
|
|
29
|
+
const scriptUrl = `https://www.google.com/recaptcha/api.js?render=${siteKey}`;
|
|
30
|
+
|
|
31
|
+
await omega.dom().loadScript({
|
|
32
|
+
src: scriptUrl,
|
|
33
|
+
async: true,
|
|
34
|
+
defer: true,
|
|
35
|
+
timeout: 30000, // 30 second timeout
|
|
36
|
+
retries: 2 // Retry twice on failure
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Wait for grecaptcha to be ready
|
|
40
|
+
await new Promise((resolve) => {
|
|
41
|
+
if (window.grecaptcha && window.grecaptcha.ready) {
|
|
42
|
+
window.grecaptcha.ready(() => {
|
|
43
|
+
recaptchaReady = true;
|
|
44
|
+
console.log('🔐 reCAPTCHA initialized successfully');
|
|
45
|
+
resolve();
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
// Fallback timeout if grecaptcha.ready is not available
|
|
49
|
+
console.warn('grecaptcha.ready not available, using timeout fallback');
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
recaptchaReady = true;
|
|
52
|
+
resolve();
|
|
53
|
+
}, 1000);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return true;
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.error('Failed to load reCAPTCHA:', error);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Get reCAPTCHA token
|
|
65
|
+
export async function getRecaptchaToken(action = 'submit') {
|
|
66
|
+
/* @dev-only:start */
|
|
67
|
+
{
|
|
68
|
+
const devRecaptcha = new URLSearchParams(window.location.search).get('_dev_recaptcha');
|
|
69
|
+
if (devRecaptcha === 'invalid') {
|
|
70
|
+
logger.warn('Sending invalid reCAPTCHA token');
|
|
71
|
+
return 'invalid-dev-token';
|
|
72
|
+
}
|
|
73
|
+
if (devRecaptcha === 'empty') {
|
|
74
|
+
logger.warn('Sending empty reCAPTCHA token');
|
|
75
|
+
return '';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/* @dev-only:end */
|
|
79
|
+
|
|
80
|
+
if (!recaptchaReady || !recaptchaSiteKey) {
|
|
81
|
+
console.warn('reCAPTCHA not initialized');
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
console.log('🔐 Getting reCAPTCHA token for action:', action);
|
|
87
|
+
const token = await grecaptcha.execute(recaptchaSiteKey, { action });
|
|
88
|
+
console.log('🔐 reCAPTCHA token obtained successfully');
|
|
89
|
+
return token;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error('Failed to get reCAPTCHA token:', error);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|