@omega.js/web 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +98 -0
- package/README.md +640 -0
- package/bin/omega +2 -0
- package/bin/omega-web +2 -0
- package/bin/omg +2 -0
- package/core/_includes/admin/sections/sidebar.json +100 -0
- package/core/_includes/admin/sections/topbar.json +11 -0
- package/core/_includes/backend/sections/sidebar.json +39 -0
- package/core/_includes/backend/sections/topbar.json +16 -0
- package/core/_includes/core/body.html +102 -0
- package/core/_includes/core/foot.html +536 -0
- package/core/_includes/core/head.html +423 -0
- package/core/_includes/core/pricing/price-per-unit.html +33 -0
- package/core/_includes/core/showcase/entry-body.html +94 -0
- package/core/_includes/core/showcase/index-body.html +43 -0
- package/core/_includes/core/showcase/nav.html +60 -0
- package/core/_includes/frontend/sections/footer.json +74 -0
- package/core/_includes/frontend/sections/nav.json +70 -0
- package/core/_includes/global/sections/account.json +31 -0
- package/core/_includes/modules/engagement/giscus.html +26 -0
- package/core/_layouts/blueprint/404.html +10 -0
- package/core/_layouts/blueprint/about.html +10 -0
- package/core/_layouts/blueprint/account/index.html +11 -0
- package/core/_layouts/blueprint/admin/calendar/index.html +590 -0
- package/core/_layouts/blueprint/admin/dashboard/index.html +301 -0
- package/core/_layouts/blueprint/admin/firebase/index.html +214 -0
- package/core/_layouts/blueprint/admin/posts/editor.html +157 -0
- package/core/_layouts/blueprint/admin/posts/index.html +126 -0
- package/core/_layouts/blueprint/admin/stackblitz/index.html +30 -0
- package/core/_layouts/blueprint/admin/studio/index.html +85 -0
- package/core/_layouts/blueprint/admin/users/index.html +272 -0
- package/core/_layouts/blueprint/admin/users/new.html +82 -0
- package/core/_layouts/blueprint/admin/verts/index.html +204 -0
- package/core/_layouts/blueprint/alternatives/alternative.html +15 -0
- package/core/_layouts/blueprint/alternatives/index.html +10 -0
- package/core/_layouts/blueprint/app.html +10 -0
- package/core/_layouts/blueprint/auth/reset.html +19 -0
- package/core/_layouts/blueprint/auth/signin.html +19 -0
- package/core/_layouts/blueprint/auth/signup.html +19 -0
- package/core/_layouts/blueprint/auth/token.html +19 -0
- package/core/_layouts/blueprint/blog/categories/category.html +8 -0
- package/core/_layouts/blueprint/blog/categories/index.html +11 -0
- package/core/_layouts/blueprint/blog/index.html +10 -0
- package/core/_layouts/blueprint/blog/post.html +5 -0
- package/core/_layouts/blueprint/blog/tags/index.html +11 -0
- package/core/_layouts/blueprint/blog/tags/tag.html +8 -0
- package/core/_layouts/blueprint/careers.md +13 -0
- package/core/_layouts/blueprint/collection/category.html +9 -0
- package/core/_layouts/blueprint/collection/document.html +9 -0
- package/core/_layouts/blueprint/collection/index.html +9 -0
- package/core/_layouts/blueprint/connections/callback.html +11 -0
- package/core/_layouts/blueprint/contact.html +14 -0
- package/core/_layouts/blueprint/dashboard/index.html +10 -0
- package/core/_layouts/blueprint/download.html +20 -0
- package/core/_layouts/blueprint/extension/index.html +14 -0
- package/core/_layouts/blueprint/extension/installed.html +11 -0
- package/core/_layouts/blueprint/feedback.html +10 -0
- package/core/_layouts/blueprint/index.html +16 -0
- package/core/_layouts/blueprint/legal/cookies.md +57 -0
- package/core/_layouts/blueprint/legal/privacy.md +109 -0
- package/core/_layouts/blueprint/legal/terms.md +155 -0
- package/core/_layouts/blueprint/payment/checkout.html +15 -0
- package/core/_layouts/blueprint/payment/confirmation.html +14 -0
- package/core/_layouts/blueprint/portal/email-preferences.html +15 -0
- package/core/_layouts/blueprint/pricing.html +20 -0
- package/core/_layouts/blueprint/status.html +10 -0
- package/core/_layouts/blueprint/team/index.html +10 -0
- package/core/_layouts/blueprint/team/member.html +5 -0
- package/core/_layouts/blueprint/updates/index.html +10 -0
- package/core/_layouts/blueprint/updates/update.html +10 -0
- package/core/_layouts/core/root.html +45 -0
- package/core/_layouts/modules/utilities/redirect.html +129 -0
- package/core/css/_studio.scss +237 -0
- package/core/css/components/_index.scss +146 -0
- package/core/css/core/_.scss +0 -0
- package/core/css/core/_alert.scss +87 -0
- package/core/css/core/_animations.scss +343 -0
- package/core/css/core/_bindings.scss +116 -0
- package/core/css/core/_blog-search.scss +57 -0
- package/core/css/core/_chatsy.scss +61 -0
- package/core/css/core/_consent.scss +424 -0
- package/core/css/core/_custom-font-awesome.scss +146 -0
- package/core/css/core/_exit-popup.scss +42 -0
- package/core/css/core/_generated-badge.scss +33 -0
- package/core/css/core/_initialize.scss +29 -0
- package/core/css/core/_lazy-loading.scss +104 -0
- package/core/css/core/_social-sharing.scss +41 -0
- package/core/css/core/_tones.scss +32 -0
- package/core/css/core/_utilities.scss +157 -0
- package/core/css/main.scss +54 -0
- package/core/css/motion/_index.scss +368 -0
- package/core/css/pages/404/index.scss +0 -0
- package/core/css/pages/admin/calendar/index.scss +692 -0
- package/core/css/pages/admin/firebase/index.scss +33 -0
- package/core/css/pages/admin/index.scss +9 -0
- package/core/css/pages/admin/users/index.scss +9 -0
- package/core/css/pages/admin/verts/index.scss +9 -0
- package/core/css/pages/alternatives/[alternative]/index.scss +0 -0
- package/core/css/pages/blog/[slug].scss +55 -0
- package/core/css/pages/dashboard/account/index.scss +242 -0
- package/core/css/pages/download/index.scss +480 -0
- package/core/css/pages/extension/installed/index.scss +317 -0
- package/core/css/pages/feedback/index.scss +31 -0
- package/core/css/pages/payment/confirmation/index.scss +14 -0
- package/core/css/pages/pricing/index.scss +0 -0
- package/core/css/pages/status/index.scss +162 -0
- package/core/css/pages/test/libraries/layers/index.scss +28 -0
- package/core/css/pages/updates/[update].scss +46 -0
- package/core/css/pages/updates/index.scss +13 -0
- package/core/css/shell/_index.scss +207 -0
- package/core/css/tokens/_index.scss +166 -0
- package/core/icons/flags/ar.svg +1 -0
- package/core/icons/flags/bd.svg +1 -0
- package/core/icons/flags/ca.svg +1 -0
- package/core/icons/flags/ch.svg +1 -0
- package/core/icons/flags/cn.svg +1 -0
- package/core/icons/flags/co.svg +1 -0
- package/core/icons/flags/cw.svg +1 -0
- package/core/icons/flags/cz.svg +1 -0
- package/core/icons/flags/de.svg +1 -0
- package/core/icons/flags/dk.svg +1 -0
- package/core/icons/flags/eg.svg +1 -0
- package/core/icons/flags/es.svg +1 -0
- package/core/icons/flags/fi.svg +1 -0
- package/core/icons/flags/fr.svg +1 -0
- package/core/icons/flags/gb.svg +1 -0
- package/core/icons/flags/gq.svg +1 -0
- package/core/icons/flags/gr.svg +1 -0
- package/core/icons/flags/gt.svg +1 -0
- package/core/icons/flags/hn.svg +1 -0
- package/core/icons/flags/id.svg +1 -0
- package/core/icons/flags/ie.svg +1 -0
- package/core/icons/flags/in.svg +1 -0
- package/core/icons/flags/ir.svg +1 -0
- package/core/icons/flags/it.svg +1 -0
- package/core/icons/flags/jp.svg +1 -0
- package/core/icons/flags/kp.svg +1 -0
- package/core/icons/flags/kr.svg +1 -0
- package/core/icons/flags/ly.svg +1 -0
- package/core/icons/flags/ma.svg +1 -0
- package/core/icons/flags/mu.svg +1 -0
- package/core/icons/flags/mx.svg +1 -0
- package/core/icons/flags/ng.svg +1 -0
- package/core/icons/flags/pa.svg +1 -0
- package/core/icons/flags/ph.svg +1 -0
- package/core/icons/flags/pk.svg +1 -0
- package/core/icons/flags/pt.svg +1 -0
- package/core/icons/flags/ru.svg +1 -0
- package/core/icons/flags/sa.svg +1 -0
- package/core/icons/flags/sd.svg +1 -0
- package/core/icons/flags/se.svg +1 -0
- package/core/icons/flags/th.svg +1 -0
- package/core/icons/flags/tm.svg +1 -0
- package/core/icons/flags/tr.svg +1 -0
- package/core/icons/flags/us.svg +1 -0
- package/core/icons/flags/uy.svg +1 -0
- package/core/icons/flags/vn.svg +1 -0
- package/core/icons/flags/za.svg +1 -0
- package/core/images/exit-popup/subscriber-1.jpg +0 -0
- package/core/images/exit-popup/subscriber-2.jpg +0 -0
- package/core/images/exit-popup/subscriber-3.jpg +0 -0
- package/core/images/exit-popup/subscriber-4.jpg +0 -0
- package/core/images/placeholder/photo-1.jpg +0 -0
- package/core/images/placeholder/photo-2.jpg +0 -0
- package/core/images/placeholder/photo-3.jpg +0 -0
- package/core/js/core/analytics-loader.js +253 -0
- package/core/js/core/app-shell.js +136 -0
- package/core/js/core/appearance.js +195 -0
- package/core/js/core/auth.js +457 -0
- package/core/js/core/complete.js +72 -0
- package/core/js/core/consent.js +384 -0
- package/core/js/core/dev-icon-audit.js +63 -0
- package/core/js/core/dev-palette.js +670 -0
- package/core/js/core/dev-sections.js +53 -0
- package/core/js/core/exit-popup.js +276 -0
- package/core/js/core/initialize.js +8 -0
- package/core/js/core/language-switcher.js +167 -0
- package/core/js/core/lazy-loading.js +479 -0
- package/core/js/core/motion.js +28 -0
- package/core/js/core/query-strings.js +146 -0
- package/core/js/core/service-worker.js +28 -0
- package/core/js/core/social-sharing.js +293 -0
- package/core/js/first-paint.js +35 -0
- package/core/js/layouts/modules/utilities/redirect.js +122 -0
- package/core/js/libs/admin-helpers.js +62 -0
- package/core/js/libs/alert-dismiss.js +35 -0
- package/core/js/libs/analytics.js +368 -0
- package/core/js/libs/auth/email.js +144 -0
- package/core/js/libs/auth/errors.js +119 -0
- package/core/js/libs/auth/forms.js +206 -0
- package/core/js/libs/auth/index.js +181 -0
- package/core/js/libs/auth/oauth.js +394 -0
- package/core/js/libs/auth/orphan.js +110 -0
- package/core/js/libs/auth/password-toggle.js +44 -0
- package/core/js/libs/auth/session-params.js +266 -0
- package/core/js/libs/auth/tracking.js +41 -0
- package/core/js/libs/charts.js +516 -0
- package/core/js/libs/consent-region.js +127 -0
- package/core/js/libs/dev.js +150 -0
- package/core/js/libs/graph.js +201 -0
- package/core/js/libs/initialize-tooltips.js +31 -0
- package/core/js/libs/logger.js +38 -0
- package/core/js/libs/omega-copy.js +89 -0
- package/core/js/libs/path-prefix.js +44 -0
- package/core/js/libs/payment-config.js +76 -0
- package/core/js/libs/recaptcha.js +94 -0
- package/core/js/libs/sale-name.js +295 -0
- package/core/js/libs/showcase-frames.js +37 -0
- package/core/js/libs/srcset.js +69 -0
- package/core/js/libs/tracking-consent.js +161 -0
- package/core/js/main.js +144 -0
- package/core/js/pages/404/index.js +57 -0
- package/core/js/pages/admin/calendar/calendar-core.js +701 -0
- package/core/js/pages/admin/calendar/calendar-events.js +853 -0
- package/core/js/pages/admin/calendar/calendar-renderer.js +807 -0
- package/core/js/pages/admin/calendar/campaign-preview.js +105 -0
- package/core/js/pages/admin/calendar/index.js +40 -0
- package/core/js/pages/admin/firebase/index.js +727 -0
- package/core/js/pages/admin/index.js +531 -0
- package/core/js/pages/admin/posts/editor/index.js +230 -0
- package/core/js/pages/admin/posts/index.js +237 -0
- package/core/js/pages/admin/studio/index.js +538 -0
- package/core/js/pages/admin/users/index.js +669 -0
- package/core/js/pages/admin/users/new/index.js +65 -0
- package/core/js/pages/admin/verts/index.js +407 -0
- package/core/js/pages/alternatives/[alternative]/index.js +17 -0
- package/core/js/pages/app/index.js +135 -0
- package/core/js/pages/blog/[slug].js +132 -0
- package/core/js/pages/blog/_search.mjs +108 -0
- package/core/js/pages/blog/index.js +193 -0
- package/core/js/pages/blog/page/[num]/index.js +7 -0
- package/core/js/pages/connections/callback/index.js +148 -0
- package/core/js/pages/contact/index.js +170 -0
- package/core/js/pages/cookies.js +2 -0
- package/core/js/pages/dashboard/account/index.js +366 -0
- package/core/js/pages/dashboard/account/modules/orders.js +82 -0
- package/core/js/pages/dashboard/account/sections/api-keys.js +149 -0
- package/core/js/pages/dashboard/account/sections/billing.js +1667 -0
- package/core/js/pages/dashboard/account/sections/connections.js +333 -0
- package/core/js/pages/dashboard/account/sections/data-request.js +225 -0
- package/core/js/pages/dashboard/account/sections/delete.js +80 -0
- package/core/js/pages/dashboard/account/sections/notifications.js +167 -0
- package/core/js/pages/dashboard/account/sections/orders.js +151 -0
- package/core/js/pages/dashboard/account/sections/profile.js +200 -0
- package/core/js/pages/dashboard/account/sections/referrals.js +217 -0
- package/core/js/pages/dashboard/account/sections/refund.js +253 -0
- package/core/js/pages/dashboard/account/sections/security.js +726 -0
- package/core/js/pages/dashboard/account/sections/team.js +247 -0
- package/core/js/pages/download/index.js +418 -0
- package/core/js/pages/extension/index.js +164 -0
- package/core/js/pages/extension/installed/index.js +135 -0
- package/core/js/pages/feedback/index.js +193 -0
- package/core/js/pages/legal/_document.js +91 -0
- package/core/js/pages/payment/checkout/index.js +420 -0
- package/core/js/pages/payment/checkout/modules/api.js +139 -0
- package/core/js/pages/payment/checkout/modules/dev-section.js +175 -0
- package/core/js/pages/payment/checkout/modules/discount.js +69 -0
- package/core/js/pages/payment/checkout/modules/pricing.js +73 -0
- package/core/js/pages/payment/checkout/modules/state.js +339 -0
- package/core/js/pages/payment/checkout/modules/tracking.js +54 -0
- package/core/js/pages/payment/confirmation/index.js +91 -0
- package/core/js/pages/payment/confirmation/modules/celebration.js +45 -0
- package/core/js/pages/payment/confirmation/modules/state.js +112 -0
- package/core/js/pages/payment/confirmation/modules/tracking.js +133 -0
- package/core/js/pages/payment/confirmation/modules/verify.js +142 -0
- package/core/js/pages/portal/email-preferences/index.js +183 -0
- package/core/js/pages/pricing/index.js +425 -0
- package/core/js/pages/privacy.js +2 -0
- package/core/js/pages/reset/index.js +12 -0
- package/core/js/pages/signin/index.js +22 -0
- package/core/js/pages/signup/index.js +23 -0
- package/core/js/pages/status/index.js +687 -0
- package/core/js/pages/terms.js +2 -0
- package/core/js/pages/test/components/[category]/[name]/index.js +26 -0
- package/core/js/pages/test/libraries/appearance/index.js +220 -0
- package/core/js/pages/test/libraries/form-manager/index.js +328 -0
- package/core/js/pages/test/libraries/layers/index.js +16 -0
- package/core/js/pages/test/libraries/verts/index.js +68 -0
- package/core/js/pages/test/sections/[category]/[name]/index.js +28 -0
- package/core/js/pages/test/styleguide/index.js +35 -0
- package/core/js/pages/token/index.js +203 -0
- package/core/logos/brandmarks/original/apple-app-store.svg +1 -0
- package/core/logos/brandmarks/original/apple.svg +6 -0
- package/core/logos/brandmarks/original/bitbucket.svg +14 -0
- package/core/logos/brandmarks/original/bitcoin.svg +1 -0
- package/core/logos/brandmarks/original/bluesky.svg +7 -0
- package/core/logos/brandmarks/original/bootstrap.svg +43 -0
- package/core/logos/brandmarks/original/brave.svg +1 -0
- package/core/logos/brandmarks/original/chrome.svg +1 -0
- package/core/logos/brandmarks/original/discord.svg +1 -0
- package/core/logos/brandmarks/original/dropbox.svg +10 -0
- package/core/logos/brandmarks/original/edge.svg +1 -0
- package/core/logos/brandmarks/original/facebook-f.svg +1 -0
- package/core/logos/brandmarks/original/facebook.svg +8 -0
- package/core/logos/brandmarks/original/figma.svg +10 -0
- package/core/logos/brandmarks/original/firefox.svg +1 -0
- package/core/logos/brandmarks/original/github.svg +6 -0
- package/core/logos/brandmarks/original/gitlab.svg +17 -0
- package/core/logos/brandmarks/original/google-a-s.svg +1 -0
- package/core/logos/brandmarks/original/google-chrome-webstore.svg +49 -0
- package/core/logos/brandmarks/original/google-play-store.svg +1 -0
- package/core/logos/brandmarks/original/google-web-search.svg +1 -0
- package/core/logos/brandmarks/original/google.svg +1 -0
- package/core/logos/brandmarks/original/gulp.svg +4 -0
- package/core/logos/brandmarks/original/html-5.svg +1 -0
- package/core/logos/brandmarks/original/instagram.svg +1 -0
- package/core/logos/brandmarks/original/javascript.svg +1 -0
- package/core/logos/brandmarks/original/jira.svg +18 -0
- package/core/logos/brandmarks/original/kick.svg +7 -0
- package/core/logos/brandmarks/original/linkedin.svg +1 -0
- package/core/logos/brandmarks/original/linux.svg +28 -0
- package/core/logos/brandmarks/original/messenger.svg +16 -0
- package/core/logos/brandmarks/original/microsoft.svg +1 -0
- package/core/logos/brandmarks/original/npm.svg +8 -0
- package/core/logos/brandmarks/original/opera.svg +1 -0
- package/core/logos/brandmarks/original/patreon.svg +6 -0
- package/core/logos/brandmarks/original/pinterest.svg +6 -0
- package/core/logos/brandmarks/original/reddit.svg +1 -0
- package/core/logos/brandmarks/original/safari.svg +31 -0
- package/core/logos/brandmarks/original/sass.svg +3 -0
- package/core/logos/brandmarks/original/signal.svg +6 -0
- package/core/logos/brandmarks/original/skype.svg +47 -0
- package/core/logos/brandmarks/original/slack.svg +33 -0
- package/core/logos/brandmarks/original/soundcloud.svg +1 -0
- package/core/logos/brandmarks/original/spotify.svg +5 -0
- package/core/logos/brandmarks/original/steam.svg +6 -0
- package/core/logos/brandmarks/original/telegram.svg +14 -0
- package/core/logos/brandmarks/original/tiktok.svg +1 -0
- package/core/logos/brandmarks/original/trello.svg +16 -0
- package/core/logos/brandmarks/original/tumblr.svg +1 -0
- package/core/logos/brandmarks/original/twitch.svg +6 -0
- package/core/logos/brandmarks/original/twitter.svg +6 -0
- package/core/logos/brandmarks/original/unity.svg +6 -0
- package/core/logos/brandmarks/original/x.svg +7 -0
- package/core/logos/brandmarks/original/yahoo-y.svg +1 -0
- package/core/logos/brandmarks/original/youtube-square.svg +1 -0
- package/core/logos/brandmarks/original/youtube.svg +1 -0
- package/core/logos/combomarks/dark/airbnb.svg +30 -0
- package/core/logos/combomarks/dark/slack.svg +38 -0
- package/core/logos/combomarks/dark/spotify.svg +35 -0
- package/core/logos/combomarks/dark/twilio.svg +26 -0
- package/core/logos/combomarks/dark/weebly.svg +35 -0
- package/core/logos/combomarks/gray/airbnb.svg +33 -0
- package/core/logos/combomarks/gray/alphabet.svg +23 -0
- package/core/logos/combomarks/gray/amazon.svg +38 -0
- package/core/logos/combomarks/gray/boring-company.svg +91 -0
- package/core/logos/combomarks/gray/burberry.svg +239 -0
- package/core/logos/combomarks/gray/embark.svg +21 -0
- package/core/logos/combomarks/gray/fitbit.svg +61 -0
- package/core/logos/combomarks/gray/fred-perry.svg +94 -0
- package/core/logos/combomarks/gray/google.svg +27 -0
- package/core/logos/combomarks/gray/hollister.svg +34 -0
- package/core/logos/combomarks/gray/hubspot.svg +27 -0
- package/core/logos/combomarks/gray/kaplan.svg +33 -0
- package/core/logos/combomarks/gray/lenovo.svg +27 -0
- package/core/logos/combomarks/gray/levis.svg +25 -0
- package/core/logos/combomarks/gray/mapbox.svg +37 -0
- package/core/logos/combomarks/gray/netflix.svg +15 -0
- package/core/logos/combomarks/gray/new-balance.svg +32 -0
- package/core/logos/combomarks/gray/nike.svg +17 -0
- package/core/logos/combomarks/gray/paypal.svg +41 -0
- package/core/logos/combomarks/gray/puma.svg +82 -0
- package/core/logos/combomarks/gray/samsung.svg +26 -0
- package/core/logos/combomarks/gray/shopify.svg +36 -0
- package/core/logos/combomarks/gray/slack.svg +42 -0
- package/core/logos/combomarks/gray/spotify.svg +38 -0
- package/core/logos/combomarks/gray/stripe.svg +24 -0
- package/core/logos/combomarks/gray/tnf.svg +30 -0
- package/core/logos/combomarks/gray/twilio.svg +29 -0
- package/core/logos/combomarks/gray/uber.svg +24 -0
- package/core/logos/combomarks/gray/weebly.svg +38 -0
- package/core/logos/combomarks/original/airbnb.svg +33 -0
- package/core/logos/combomarks/original/alphabet.svg +23 -0
- package/core/logos/combomarks/original/amazon.svg +38 -0
- package/core/logos/combomarks/original/asana.svg +8 -0
- package/core/logos/combomarks/original/boring-company.svg +91 -0
- package/core/logos/combomarks/original/discord.svg +6 -0
- package/core/logos/combomarks/original/embark.svg +24 -0
- package/core/logos/combomarks/original/fitbit.svg +60 -0
- package/core/logos/combomarks/original/github.svg +6 -0
- package/core/logos/combomarks/original/gitlab.svg +20 -0
- package/core/logos/combomarks/original/google.svg +28 -0
- package/core/logos/combomarks/original/hubspot.svg +29 -0
- package/core/logos/combomarks/original/instagram.svg +7 -0
- package/core/logos/combomarks/original/kickstarter.svg +6 -0
- package/core/logos/combomarks/original/lenovo.svg +24 -0
- package/core/logos/combomarks/original/linkedin.svg +6 -0
- package/core/logos/combomarks/original/mapbox.svg +39 -0
- package/core/logos/combomarks/original/mastodon.svg +7 -0
- package/core/logos/combomarks/original/medium.svg +6 -0
- package/core/logos/combomarks/original/meta.svg +22 -0
- package/core/logos/combomarks/original/microsoft.svg +13 -0
- package/core/logos/combomarks/original/monday.svg +12 -0
- package/core/logos/combomarks/original/netflix.svg +15 -0
- package/core/logos/combomarks/original/notion.svg +9 -0
- package/core/logos/combomarks/original/paypal.svg +41 -0
- package/core/logos/combomarks/original/reddit.svg +13 -0
- package/core/logos/combomarks/original/samsung.svg +25 -0
- package/core/logos/combomarks/original/shopify.svg +35 -0
- package/core/logos/combomarks/original/slack.svg +47 -0
- package/core/logos/combomarks/original/spotify.svg +37 -0
- package/core/logos/combomarks/original/stackoverflow.svg +28 -0
- package/core/logos/combomarks/original/stripe.svg +24 -0
- package/core/logos/combomarks/original/tiktok.svg +12 -0
- package/core/logos/combomarks/original/tumblr.svg +6 -0
- package/core/logos/combomarks/original/uber.svg +24 -0
- package/core/logos/combomarks/original/weebly.svg +34 -0
- package/core/logos/combomarks/original/whatsapp.svg +20 -0
- package/core/logos/combomarks/original/youtube.svg +10 -0
- package/core/logos/combomarks/original/zoom.svg +7 -0
- package/core/logos/combomarks/white/airbnb.svg +33 -0
- package/core/logos/combomarks/white/alphabet.svg +23 -0
- package/core/logos/combomarks/white/amazon.svg +38 -0
- package/core/logos/combomarks/white/boring-company.svg +91 -0
- package/core/logos/combomarks/white/embark.svg +21 -0
- package/core/logos/combomarks/white/fitbit.svg +61 -0
- package/core/logos/combomarks/white/google.svg +27 -0
- package/core/logos/combomarks/white/hubspot.svg +27 -0
- package/core/logos/combomarks/white/kaplan.svg +33 -0
- package/core/logos/combomarks/white/lenovo.svg +27 -0
- package/core/logos/combomarks/white/mapbox.svg +37 -0
- package/core/logos/combomarks/white/netflix.svg +15 -0
- package/core/logos/combomarks/white/paypal.svg +40 -0
- package/core/logos/combomarks/white/samsung.svg +26 -0
- package/core/logos/combomarks/white/shopify.svg +36 -0
- package/core/logos/combomarks/white/slack.svg +42 -0
- package/core/logos/combomarks/white/spotify.svg +38 -0
- package/core/logos/combomarks/white/stripe.svg +24 -0
- package/core/logos/combomarks/white/twilio.svg +29 -0
- package/core/logos/combomarks/white/uber.svg +24 -0
- package/core/logos/combomarks/white/weebly.svg +38 -0
- package/defaults/pages/404.md +4 -0
- package/defaults/pages/about.md +4 -0
- package/defaults/pages/admin/calendar/index.html +4 -0
- package/defaults/pages/admin/firebase/index.html +4 -0
- package/defaults/pages/admin/index.md +4 -0
- package/defaults/pages/admin/posts/editor.html +4 -0
- package/defaults/pages/admin/posts/index.html +4 -0
- package/defaults/pages/admin/stackblitz/index.html +4 -0
- package/defaults/pages/admin/studio/index.html +4 -0
- package/defaults/pages/admin/users/index.html +4 -0
- package/defaults/pages/admin/users/new.html +4 -0
- package/defaults/pages/admin/verts/index.html +4 -0
- package/defaults/pages/ads-txt.html +11 -0
- package/defaults/pages/alternatives/index.md +4 -0
- package/defaults/pages/app.md +4 -0
- package/defaults/pages/auth/reset.md +4 -0
- package/defaults/pages/auth/signin.md +4 -0
- package/defaults/pages/auth/signup.md +4 -0
- package/defaults/pages/auth/token.md +4 -0
- package/defaults/pages/blog/categories/category.html +21 -0
- package/defaults/pages/blog/categories.md +4 -0
- package/defaults/pages/blog/index-json.html +27 -0
- package/defaults/pages/blog/tags/tag.html +21 -0
- package/defaults/pages/blog/tags.md +4 -0
- package/defaults/pages/blog.md +22 -0
- package/defaults/pages/careers.md +4 -0
- package/defaults/pages/connections/callback.md +4 -0
- package/defaults/pages/contact.md +4 -0
- package/defaults/pages/dashboard/account.md +4 -0
- package/defaults/pages/dashboard/index.md +12 -0
- package/defaults/pages/download.md +4 -0
- package/defaults/pages/extension/index.html +4 -0
- package/defaults/pages/extension/installed.html +4 -0
- package/defaults/pages/feedback.md +4 -0
- package/defaults/pages/feeds/posts-json.html +40 -0
- package/defaults/pages/feeds/posts-xml.html +38 -0
- package/defaults/pages/humans.html +25 -0
- package/defaults/pages/index.md +4 -0
- package/defaults/pages/legal/cookies.md +4 -0
- package/defaults/pages/legal/privacy.md +4 -0
- package/defaults/pages/legal/terms.md +4 -0
- package/defaults/pages/llms-txt.html +46 -0
- package/defaults/pages/opensearch.html +16 -0
- package/defaults/pages/pages-json.html +42 -0
- package/defaults/pages/payment/checkout.md +4 -0
- package/defaults/pages/payment/confirmation.md +4 -0
- package/defaults/pages/portal/email-preferences.md +4 -0
- package/defaults/pages/pricing.md +4 -0
- package/defaults/pages/redirects/account.md +12 -0
- package/defaults/pages/redirects/admin/dashboard.md +11 -0
- package/defaults/pages/redirects/auth/change-password.md +9 -0
- package/defaults/pages/redirects/auth/forgot.md +9 -0
- package/defaults/pages/redirects/auth/join.md +9 -0
- package/defaults/pages/redirects/auth/login.md +9 -0
- package/defaults/pages/redirects/auth/recover.md +9 -0
- package/defaults/pages/redirects/auth/register.md +9 -0
- package/defaults/pages/redirects/auth/reset-password.md +9 -0
- package/defaults/pages/redirects/billing/cancel.md +9 -0
- package/defaults/pages/redirects/billing/refund.md +9 -0
- package/defaults/pages/robots.html +36 -0
- package/defaults/pages/security-txt.html +11 -0
- package/defaults/pages/sitemap.html +37 -0
- package/defaults/pages/status.md +4 -0
- package/defaults/pages/team/index.md +4 -0
- package/defaults/pages/test/account/dashboard.html +16 -0
- package/defaults/pages/test/index.md +12 -0
- package/defaults/pages/test/libraries/appearance.html +268 -0
- package/defaults/pages/test/libraries/cover.html +50 -0
- package/defaults/pages/test/libraries/error.html +30 -0
- package/defaults/pages/test/libraries/firestore.html +202 -0
- package/defaults/pages/test/libraries/form-manager.html +374 -0
- package/defaults/pages/test/libraries/layers.html +52 -0
- package/defaults/pages/test/libraries/lazy-loading.html +450 -0
- package/defaults/pages/test/libraries/verts.html +149 -0
- package/defaults/pages/test/redirect/external.md +13 -0
- package/defaults/pages/test/redirect/internal.md +13 -0
- package/defaults/pages/test/styleguide/index.html +588 -0
- package/defaults/pages/test/translation/index.md +50 -0
- package/defaults/pages/updates/index.md +4 -0
- package/defaults/sample-posts/2026-01-12-welcome-to-the-blog.md +26 -0
- package/defaults/sample-posts/2026-02-03-a-field-guide-to-good-defaults.md +50 -0
- package/defaults/sample-posts/2026-02-24-shipping-week-notes.md +37 -0
- package/defaults/sample-posts/2026-03-17-the-case-for-one-config.md +36 -0
- package/defaults/sample-posts/2026-04-09-write-release-notes-people-read.md +34 -0
- package/defaults/sample-posts/2026-05-21-dark-mode-done-properly.md +38 -0
- package/defaults/sample-posts/2026-06-02-the-boring-deploy-is-the-good-deploy.md +30 -0
- package/defaults/sample-posts/2026-06-11-naming-things-a-survival-guide.md +30 -0
- package/defaults/sample-posts/2026-06-19-your-pricing-page-is-a-product.md +28 -0
- package/defaults/sample-posts/2026-06-30-email-is-an-api-with-feelings.md +28 -0
- package/defaults/sample-posts/2026-07-08-ship-the-docs-with-the-diff.md +30 -0
- package/defaults/sample-team/avery-quinn.md +22 -0
- package/defaults/sample-team/jordan-reyes.md +25 -0
- package/defaults/sample-team/riley-nakamura.md +22 -0
- package/defaults/sample-team/sam-okafor.md +22 -0
- package/defaults/sample-updates/v1.0.0.md +28 -0
- package/defaults/sample-updates/v1.1.0.md +27 -0
- package/defaults/sample-updates/v1.2.0.md +27 -0
- package/defaults/sample-updates/v1.3.0.md +28 -0
- package/defaults/showcase/components.html +62 -0
- package/defaults/showcase/entry.html +76 -0
- package/defaults/showcase/frame.html +62 -0
- package/defaults/showcase/index.html +59 -0
- package/dist/assets.js +1349 -0
- package/dist/brand-tokens.js +195 -0
- package/dist/build.js +192 -0
- package/dist/cachebreak-html.js +71 -0
- package/dist/cli-run.js +25 -0
- package/dist/cli.js +47 -0
- package/dist/collections.js +183 -0
- package/dist/commands/audit.js +470 -0
- package/dist/commands/build.js +197 -0
- package/dist/commands/clean.js +18 -0
- package/dist/commands/customize.js +125 -0
- package/dist/commands/deploy.js +441 -0
- package/dist/commands/dev.js +1067 -0
- package/dist/commands/install.js +31 -0
- package/dist/commands/lib/deploy-precheck.js +43 -0
- package/dist/commands/lib/ensure-target.js +115 -0
- package/dist/commands/migrate.js +86 -0
- package/dist/commands/purge.js +31 -0
- package/dist/commands/test.js +237 -0
- package/dist/commands/translate.js +57 -0
- package/dist/commands/update.js +22 -0
- package/dist/commands/version.js +11 -0
- package/dist/config-sections.js +245 -0
- package/dist/consumer-scan.js +118 -0
- package/dist/consumer.js +49 -0
- package/dist/customize.js +328 -0
- package/dist/decisions.js +153 -0
- package/dist/dist-audit.js +417 -0
- package/dist/dynamic-pages.js +357 -0
- package/dist/engine.js +1402 -0
- package/dist/firebase-auth-helpers.js +198 -0
- package/dist/font-metrics.js +420 -0
- package/dist/frontmatter-liquid.js +253 -0
- package/dist/github-secrets.js +80 -0
- package/dist/hero-animations.js +170 -0
- package/dist/imagemin.js +261 -0
- package/dist/index.js +41 -0
- package/dist/inline-icons.js +65 -0
- package/dist/language-flags.js +55 -0
- package/dist/layers.js +80 -0
- package/dist/layouts.js +44 -0
- package/dist/limit-collections.js +199 -0
- package/dist/link-resolver.js +303 -0
- package/dist/markdown-images.js +85 -0
- package/dist/merge.js +20 -0
- package/dist/migrate/codemod.js +172 -0
- package/dist/migrate/config-convert.js +448 -0
- package/dist/migrate/consumer-assets.js +130 -0
- package/dist/migrate/index.js +223 -0
- package/dist/migrate/lint.js +108 -0
- package/dist/migrate/rules.js +1929 -0
- package/dist/minify-html.js +148 -0
- package/dist/mode-helpers.js +96 -0
- package/dist/omega-bin.js +7 -0
- package/dist/overrides.js +190 -0
- package/dist/path-prefix.js +167 -0
- package/dist/paths.js +37 -0
- package/dist/pricing.js +301 -0
- package/dist/purge.js +95 -0
- package/dist/redirect-page.js +45 -0
- package/dist/sample-content.js +210 -0
- package/dist/scaffold.js +123 -0
- package/dist/sections.js +810 -0
- package/dist/service-worker.js +200 -0
- package/dist/social-pages.js +142 -0
- package/dist/srcset.js +67 -0
- package/dist/static-assets.js +154 -0
- package/dist/target-shortlinks.js +123 -0
- package/dist/theme-vocabulary.js +76 -0
- package/dist/translate/collect-text-nodes.js +93 -0
- package/dist/translate/default-routes.js +152 -0
- package/dist/translate/generate-defaults.js +297 -0
- package/dist/translate/index.js +568 -0
- package/dist/translate/packaged-defaults.js +127 -0
- package/dist/translate/sitemap.js +108 -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/bare-requires.js +153 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/command-path.js +46 -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/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-https.js +360 -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/omega-bin.js +345 -0
- package/dist/vendor/devkit/reads.js +274 -0
- package/dist/vendor/devkit/safe-install.js +18 -0
- package/dist/vendor/devkit/scaffold-guard.js +96 -0
- package/dist/vendor/devkit/stop-signals.js +28 -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-secrets.js +165 -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/dist/vendor/template-kit/data/language-flags.js +54 -0
- package/dist/vendor/template-kit/data/languages.js +195 -0
- package/dist/vendor/template-kit/data/social-urls.js +26 -0
- package/dist/vendor/template-kit/filters.js +227 -0
- package/dist/vendor/template-kit/index.js +28 -0
- package/dist/vendor/template-kit/jekyll-compat.js +268 -0
- package/dist/vendor/template-kit/register-liquid.js +0 -0
- package/dist/vendor/template-kit/tags/collections.js +191 -0
- package/dist/vendor/template-kit/tags/conditionals.js +101 -0
- package/dist/vendor/template-kit/tags/content.js +175 -0
- package/dist/vendor/template-kit/tags/index.js +33 -0
- package/dist/vendor/template-kit/tags/media.js +376 -0
- package/dist/vendor/template-kit/variable-resolver.js +163 -0
- package/docs/ads-system.md +109 -0
- package/docs/classy-v2/DIRECTION.md +92 -0
- package/docs/classy-v2/draft-1.html +1932 -0
- package/docs/classy-v2/draft-2.html +1956 -0
- package/docs/frontmatter.md +153 -0
- package/docs/index.md +254 -0
- package/docs/libs.md +298 -0
- package/docs/omega-sections-spec.md +159 -0
- package/docs/page-contract.md +112 -0
- package/docs/sections.md +845 -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/template-kit.md +128 -0
- package/docs/test-framework.md +163 -0
- package/package.json +122 -0
- package/runtime/boot.js +149 -0
- package/runtime/icons.js +77 -0
- package/runtime/manager.js +36 -0
- package/scaffold/.github/workflows/build.yml +139 -0
- package/scaffold/.nvmrc +1 -0
- package/scaffold/AGENTS.md +55 -0
- package/scaffold/CLAUDE.md +1 -0
- package/scaffold/_.gitattributes +4 -0
- package/scaffold/_.gitignore +27 -0
- package/scaffold/config/omega.json5 +20 -0
- package/scaffold/src/assets/css/pages/.gitkeep +0 -0
- package/scaffold/src/assets/images/.gitkeep +0 -0
- package/scaffold/src/assets/js/pages/.gitkeep +0 -0
- package/scaffold/src/pages/.gitkeep +0 -0
- package/scaffold/src/pages/example.md.txt +94 -0
- package/scaffold/src/service-worker.js +16 -0
- package/sw/entry.js +19 -0
- package/sw/manager.js +281 -0
- package/themes/_template/README.md +115 -0
- package/themes/_template/_config.scss +60 -0
- package/themes/_template/_theme.js +14 -0
- package/themes/_template/_theme.scss +28 -0
- package/themes/_template/css/base/_root.scss +19 -0
- package/themes/_template/css/components/_components.scss +23 -0
- package/themes/base/README.md +5 -0
- package/themes/base/_components/data/org-chart/component.html +33 -0
- package/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/themes/base/_components/data/org-chart/component.scss +183 -0
- package/themes/base/_components/heading/masthead/component.html +22 -0
- package/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/themes/base/_components/heading/section-head/component.html +18 -0
- package/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/themes/base/_components/pricing/features/component.html +29 -0
- package/themes/base/_components/pricing/features/component.json5 +30 -0
- package/themes/base/_hero/orbit/index.html +30 -0
- package/themes/base/_hero/orbit/script.js +33 -0
- package/themes/base/_hero/orbit/style.scss +133 -0
- package/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/themes/base/_includes/global/sections/account.html +72 -0
- package/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/themes/base/_includes/global/sections/page-header.html +99 -0
- package/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/themes/base/_layouts/backend/core/base.html +57 -0
- package/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/themes/base/_layouts/frontend/core/base.html +31 -0
- package/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/themes/base/_sections/about/hero/section.html +68 -0
- package/themes/base/_sections/about/hero/section.json5 +58 -0
- package/themes/base/_sections/about/letter/section.html +60 -0
- package/themes/base/_sections/about/letter/section.json5 +56 -0
- package/themes/base/_sections/about/photo-band/section.html +24 -0
- package/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/themes/base/_sections/about/principles/section.html +17 -0
- package/themes/base/_sections/about/principles/section.json5 +34 -0
- package/themes/base/_sections/about/timeline/section.html +20 -0
- package/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/themes/base/_sections/marketing/bento/section.html +91 -0
- package/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/themes/base/_sections/marketing/cta/section.html +44 -0
- package/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/themes/base/_sections/marketing/faq/section.html +52 -0
- package/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/themes/base/_sections/marketing/hero/section.html +349 -0
- package/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/themes/base/_sections/marketing/prose/section.html +22 -0
- package/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/themes/base/_sections/marketing/stats/section.html +32 -0
- package/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/themes/base/_sections/verts/unit/section.html +7 -0
- package/themes/base/_sections/verts/unit/section.js +22 -0
- package/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/themes/base/_sections/verts/unit/section.scss +24 -0
- package/themes/base/_theme.js +13 -0
- package/themes/base/_theme.scss +4 -0
- package/themes/bootstrap/_theme.js +16 -0
- package/themes/bootstrap/_theme.scss +11 -0
- package/themes/bootstrap/js/index.esm.js +19 -0
- package/themes/bootstrap/js/index.umd.js +34 -0
- package/themes/bootstrap/js/src/alert.js +87 -0
- package/themes/bootstrap/js/src/base-component.js +86 -0
- package/themes/bootstrap/js/src/button.js +72 -0
- package/themes/bootstrap/js/src/carousel.js +474 -0
- package/themes/bootstrap/js/src/collapse.js +297 -0
- package/themes/bootstrap/js/src/dom/data.js +55 -0
- package/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/themes/bootstrap/js/src/dropdown.js +458 -0
- package/themes/bootstrap/js/src/modal.js +378 -0
- package/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/themes/bootstrap/js/src/popover.js +97 -0
- package/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/themes/bootstrap/js/src/tab.js +315 -0
- package/themes/bootstrap/js/src/toast.js +224 -0
- package/themes/bootstrap/js/src/tooltip.js +632 -0
- package/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/themes/bootstrap/js/src/util/config.js +65 -0
- package/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/themes/bootstrap/js/src/util/index.js +306 -0
- package/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/themes/bootstrap/overrides/_index.scss +30 -0
- package/themes/bootstrap/overrides/_links.scss +26 -0
- package/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/themes/bootstrap/scss/_accordion.scss +153 -0
- package/themes/bootstrap/scss/_alert.scss +68 -0
- package/themes/bootstrap/scss/_badge.scss +38 -0
- package/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/themes/bootstrap/scss/_button-group.scss +147 -0
- package/themes/bootstrap/scss/_buttons.scss +216 -0
- package/themes/bootstrap/scss/_card.scss +238 -0
- package/themes/bootstrap/scss/_carousel.scss +226 -0
- package/themes/bootstrap/scss/_close.scss +66 -0
- package/themes/bootstrap/scss/_containers.scss +41 -0
- package/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/themes/bootstrap/scss/_forms.scss +9 -0
- package/themes/bootstrap/scss/_functions.scss +302 -0
- package/themes/bootstrap/scss/_grid.scss +39 -0
- package/themes/bootstrap/scss/_helpers.scss +12 -0
- package/themes/bootstrap/scss/_images.scss +42 -0
- package/themes/bootstrap/scss/_list-group.scss +199 -0
- package/themes/bootstrap/scss/_maps.scss +174 -0
- package/themes/bootstrap/scss/_mixins.scss +42 -0
- package/themes/bootstrap/scss/_modal.scss +240 -0
- package/themes/bootstrap/scss/_nav.scss +197 -0
- package/themes/bootstrap/scss/_navbar.scss +289 -0
- package/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/themes/bootstrap/scss/_pagination.scss +109 -0
- package/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/themes/bootstrap/scss/_popover.scss +196 -0
- package/themes/bootstrap/scss/_progress.scss +68 -0
- package/themes/bootstrap/scss/_reboot.scss +611 -0
- package/themes/bootstrap/scss/_root.scss +187 -0
- package/themes/bootstrap/scss/_spinners.scss +85 -0
- package/themes/bootstrap/scss/_tables.scss +171 -0
- package/themes/bootstrap/scss/_toasts.scss +73 -0
- package/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/themes/bootstrap/scss/_transitions.scss +27 -0
- package/themes/bootstrap/scss/_type.scss +106 -0
- package/themes/bootstrap/scss/_utilities.scss +806 -0
- package/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/themes/bootstrap/scss/_variables.scss +1753 -0
- package/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/themes/classy/README.md +89 -0
- package/themes/classy/_config.scss +245 -0
- package/themes/classy/_theme.js +31 -0
- package/themes/classy/_theme.scss +57 -0
- package/themes/classy/css/app/_panels.scss +183 -0
- package/themes/classy/css/base/_fonts.scss +79 -0
- package/themes/classy/css/base/_no-raise.scss +49 -0
- package/themes/classy/css/base/_root.scss +113 -0
- package/themes/classy/css/base/_typography.scss +154 -0
- package/themes/classy/css/base/_utilities.scss +284 -0
- package/themes/classy/css/components/_alerts.scss +51 -0
- package/themes/classy/css/components/_badges.scss +46 -0
- package/themes/classy/css/components/_buttons.scss +175 -0
- package/themes/classy/css/components/_cards.scss +41 -0
- package/themes/classy/css/components/_dropdowns.scss +48 -0
- package/themes/classy/css/components/_forms.scss +171 -0
- package/themes/classy/css/components/_receipt.scss +45 -0
- package/themes/classy/css/layout/_footer.scss +298 -0
- package/themes/classy/css/layout/_general.scss +209 -0
- package/themes/classy/css/layout/_nav.scss +154 -0
- package/themes/classy/css/layout/_shell.scss +458 -0
- package/themes/classy/css/marketing/_bento.scss +238 -0
- package/themes/classy/css/marketing/_content.scss +1328 -0
- package/themes/classy/css/marketing/_downloads.scss +246 -0
- package/themes/classy/css/marketing/_hero.scss +311 -0
- package/themes/classy/css/marketing/_sections.scss +649 -0
- package/themes/classy/css/pages/404/index.scss +67 -0
- package/themes/classy/css/pages/_auth.scss +235 -0
- package/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/themes/classy/css/pages/cookies.scss +2 -0
- package/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/themes/classy/css/pages/feedback/index.scss +39 -0
- package/themes/classy/css/pages/legal/_document.scss +192 -0
- package/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/themes/classy/css/pages/privacy.scss +2 -0
- package/themes/classy/css/pages/status/index.scss +164 -0
- package/themes/classy/css/pages/terms.scss +2 -0
- package/themes/classy/css/pages/updates/index.scss +128 -0
- package/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/themes/classy/js/hero-demo-form.js +56 -0
- package/themes/neobrutalism/README.md +118 -0
- package/themes/neobrutalism/_config.scss +139 -0
- package/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/themes/neobrutalism/_theme.js +24 -0
- package/themes/neobrutalism/_theme.scss +61 -0
- package/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/themes/neobrutalism/css/base/_root.scss +169 -0
- package/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/themes/neobrutalism/css/pages/index.scss +203 -0
- package/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/themes/newsflash/README.md +117 -0
- package/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/themes/newsflash/_components/news/byline/component.html +12 -0
- package/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/themes/newsflash/_config.scss +147 -0
- package/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/themes/newsflash/_theme.js +24 -0
- package/themes/newsflash/_theme.scss +70 -0
- package/themes/newsflash/css/base/_fonts.scss +80 -0
- package/themes/newsflash/css/base/_mixins.scss +51 -0
- package/themes/newsflash/css/base/_root.scss +257 -0
- package/themes/newsflash/css/base/_typography.scss +49 -0
- package/themes/newsflash/css/base/_utilities.scss +122 -0
- package/themes/newsflash/css/components/_badges.scss +65 -0
- package/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/themes/newsflash/css/components/_buttons.scss +139 -0
- package/themes/newsflash/css/components/_cards.scss +47 -0
- package/themes/newsflash/css/components/_editorial.scss +173 -0
- package/themes/newsflash/css/components/_forms.scss +75 -0
- package/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/themes/newsflash/css/components/_panels.scss +156 -0
- package/themes/newsflash/css/components/_ticker.scss +67 -0
- package/themes/newsflash/css/layout/_general.scss +330 -0
- package/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/themes/newsflash/css/pages/404/index.scss +79 -0
- package/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/themes/newsflash/css/pages/index.scss +157 -0
- package/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/translations/es/pages/404.json +86 -0
- package/translations/es/pages/account.json +36 -0
- package/translations/es/pages/app.json +44 -0
- package/translations/es/pages/cancel.json +36 -0
- package/translations/es/pages/change-password.json +36 -0
- package/translations/es/pages/connections/callback.json +41 -0
- package/translations/es/pages/dashboard/account.json +475 -0
- package/translations/es/pages/dashboard.json +36 -0
- package/translations/es/pages/forgot.json +36 -0
- package/translations/es/pages/join.json +36 -0
- package/translations/es/pages/login.json +36 -0
- package/translations/es/pages/payment/checkout.json +83 -0
- package/translations/es/pages/payment/confirmation.json +62 -0
- package/translations/es/pages/portal/email-preferences.json +46 -0
- package/translations/es/pages/recover.json +36 -0
- package/translations/es/pages/refund.json +36 -0
- package/translations/es/pages/register.json +36 -0
- package/translations/es/pages/reset-password.json +36 -0
- package/translations/es/pages/reset.json +42 -0
- package/translations/es/pages/signin.json +45 -0
- package/translations/es/pages/signup.json +60 -0
- package/translations/es/pages/token.json +39 -0
- package/translations/fa/pages/404.json +86 -0
- package/translations/fa/pages/account.json +36 -0
- package/translations/fa/pages/app.json +44 -0
- package/translations/fa/pages/cancel.json +36 -0
- package/translations/fa/pages/change-password.json +36 -0
- package/translations/fa/pages/connections/callback.json +41 -0
- package/translations/fa/pages/dashboard/account.json +475 -0
- package/translations/fa/pages/dashboard.json +36 -0
- package/translations/fa/pages/forgot.json +36 -0
- package/translations/fa/pages/join.json +36 -0
- package/translations/fa/pages/login.json +36 -0
- package/translations/fa/pages/payment/checkout.json +83 -0
- package/translations/fa/pages/payment/confirmation.json +62 -0
- package/translations/fa/pages/portal/email-preferences.json +46 -0
- package/translations/fa/pages/recover.json +36 -0
- package/translations/fa/pages/refund.json +36 -0
- package/translations/fa/pages/register.json +36 -0
- package/translations/fa/pages/reset-password.json +36 -0
- package/translations/fa/pages/reset.json +42 -0
- package/translations/fa/pages/signin.json +45 -0
- package/translations/fa/pages/signup.json +60 -0
- package/translations/fa/pages/token.json +39 -0
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
<!-- Meta Variables -->
|
|
2
|
+
{% assign page-viewport = "width=device-width, initial-scale=1.0, user-scalable=yes, shrink-to-fit=no" %}
|
|
3
|
+
{%- iftruthy resolved.meta.viewport -%}
|
|
4
|
+
{% assign page-viewport = resolved.meta.viewport | omega_liquify %}
|
|
5
|
+
{% endiftruthy %}
|
|
6
|
+
|
|
7
|
+
{% assign page-referrer = "strict-origin-when-cross-origin" %}
|
|
8
|
+
{%- iftruthy resolved.meta.referrer -%}
|
|
9
|
+
{% assign page-referrer = resolved.meta.referrer | omega_liquify %}
|
|
10
|
+
{%- endiftruthy -%}
|
|
11
|
+
|
|
12
|
+
{% assign page-keywords = "" %}
|
|
13
|
+
{%- iftruthy resolved.meta.keywords -%}
|
|
14
|
+
{% assign page-keywords = resolved.meta.keywords | omega_liquify %}
|
|
15
|
+
{%- endiftruthy -%}
|
|
16
|
+
|
|
17
|
+
{% assign favicon-path = resolved.config.url | append: "/assets/images/favicon" %}
|
|
18
|
+
{%- iftruthy resolved.config.favicon.path -%}
|
|
19
|
+
{% assign favicon-path = resolved.config.favicon.path %}
|
|
20
|
+
{%- endiftruthy -%}
|
|
21
|
+
|
|
22
|
+
<!-- The index posture (#564): `meta.index` is the ONE decision, resolved once
|
|
23
|
+
per page by the engine (engine.js `resolved`): the site default
|
|
24
|
+
`targets.web.meta.index`, then the layout's, then the page's own, then the
|
|
25
|
+
framework's automatic exclusions (drafts, the /test dev surfaces, /admin/,
|
|
26
|
+
redirect stubs, a listing's pages 2..N). sitemap.xml, pages.json and
|
|
27
|
+
llms.txt filter on that very same value, so no signal keeps a rule list of
|
|
28
|
+
its own and none of them can disagree. -->
|
|
29
|
+
{% assign page-robots = "index" %}
|
|
30
|
+
{%- if resolved.meta.index == false -%}
|
|
31
|
+
{% assign page-robots = "noindex" %}
|
|
32
|
+
{%- endif -%}
|
|
33
|
+
|
|
34
|
+
<!-- Redirect pages (#466): a page carrying `redirect.url` is not a page, it is
|
|
35
|
+
a forwarding URL, so the head says so three ways — the destination is the
|
|
36
|
+
canonical (this URL never competes with it in an index), the layout's own
|
|
37
|
+
`meta.index: false` already made it noindex, and a meta-refresh performs
|
|
38
|
+
the hop with JavaScript off. The refresh is emitted inside <noscript>
|
|
39
|
+
BELOW: with JS on, the redirect layout's own script does the hop and forwards the
|
|
40
|
+
querystring and the fragment, which a refresh cannot, so the two must
|
|
41
|
+
never race. A SITE-RELATIVE destination is absolutized here, since the
|
|
42
|
+
base-path pass only rewrites href/src attributes — and only that one: a
|
|
43
|
+
single leading slash. `//cdn.example.com/x` is already absolute and a
|
|
44
|
+
`mailto:` is not a path at all, so both ship verbatim. -->
|
|
45
|
+
{% assign page-redirect = "" %}
|
|
46
|
+
{%- iftruthy resolved.redirect.url -%}
|
|
47
|
+
{% capture page-redirect %}{{ resolved.redirect.url | omega_liquify | strip }}{% endcapture %}
|
|
48
|
+
{%- assign page-redirect-head1 = page-redirect | slice: 0, 1 -%}
|
|
49
|
+
{%- assign page-redirect-head2 = page-redirect | slice: 0, 2 -%}
|
|
50
|
+
{%- if page-redirect-head1 == "/" and page-redirect-head2 != "//" -%}
|
|
51
|
+
{% capture page-redirect %}{{ resolved.config.url }}{{ page-redirect }}{% endcapture %}
|
|
52
|
+
{%- endif -%}
|
|
53
|
+
{%- endiftruthy -%}
|
|
54
|
+
|
|
55
|
+
<!-- Assign Default Dynamic Variables -->
|
|
56
|
+
<!-- (Asset lookups are computed by the engine: pageAssets.css / pageAssets.js
|
|
57
|
+
resolve this URL's content-hashed bundles from the asset manifest, and
|
|
58
|
+
layoutAssets.css / layoutAssets.js this page's layout chain. Each is a LIST
|
|
59
|
+
— every layer that ships one, in load order. A css entry carries `href`
|
|
60
|
+
for a hashed file, or `inline` for a sheet small enough to print in the
|
|
61
|
+
document instead of fetching, #767.) -->
|
|
62
|
+
{% assign page-title = resolved.meta.title | omega_liquify %}
|
|
63
|
+
{% assign page-description = resolved.meta.description | omega_liquify %}
|
|
64
|
+
{% assign page-image = resolved.meta.image | omega_liquify %}
|
|
65
|
+
{% assign page-og-type = "website" %}
|
|
66
|
+
|
|
67
|
+
<!-- Assign Post Dynamic Variables -->
|
|
68
|
+
{%- iftruthy resolved.post.id -%}
|
|
69
|
+
{% assign page-title = resolved.post.title | omega_liquify %}
|
|
70
|
+
{% assign page-description = resolved.post.description | omega_liquify %}
|
|
71
|
+
{% capture page-image %}{%- omega_post resolved.post.id, "image" -%}{% endcapture %}
|
|
72
|
+
{% assign page-og-type = "article" %}
|
|
73
|
+
{% endiftruthy %}
|
|
74
|
+
|
|
75
|
+
<!-- Assign Member Dynamic Variables -->
|
|
76
|
+
{%- iftruthy resolved.member.id -%}
|
|
77
|
+
{% assign page-title = resolved.member.name | omega_liquify %}
|
|
78
|
+
{% assign page-description = resolved.member.description | omega_liquify %}
|
|
79
|
+
{% capture page-image %}{%- omega_member resolved.member.id, "image" -%}{% endcapture %}
|
|
80
|
+
{% assign page-og-type = "profile" %}
|
|
81
|
+
{% endiftruthy %}
|
|
82
|
+
|
|
83
|
+
<!-- Fallbacks: a value that LIQUIFIES to empty (nothing configured) still needs
|
|
84
|
+
the brand default — `default:` only sees the raw string (footer.html pattern) -->
|
|
85
|
+
{% assign page-title = page-title | strip %}
|
|
86
|
+
{% if page-title == '' or page-title == 'null' %}{% assign page-title = resolved.config.brand.name %}{% endif %}
|
|
87
|
+
{% assign page-description = page-description | strip %}
|
|
88
|
+
{% if page-description == '' or page-description == 'null' %}{% assign page-description = resolved.config.brand.description %}{% endif %}
|
|
89
|
+
{% assign page-image = page-image | strip %}
|
|
90
|
+
{% if page-image == '' or page-image == 'null' %}{% assign page-image = resolved.config.brand.images.social | default: resolved.config.brand.images.brandmark %}{% endif %}
|
|
91
|
+
|
|
92
|
+
<!-- Resolve Image -->
|
|
93
|
+
{% capture page-image %}{% omega_external page-image %}{% endcapture %}
|
|
94
|
+
|
|
95
|
+
{% capture page-ie-script %}
|
|
96
|
+
<style media="screen">
|
|
97
|
+
.main-alert-outdated {
|
|
98
|
+
display: block !important;
|
|
99
|
+
}
|
|
100
|
+
</style>
|
|
101
|
+
{% endcapture %}
|
|
102
|
+
|
|
103
|
+
<!-- Prefetch and Preconnect -->
|
|
104
|
+
<!-- First-party themes VENDOR their webfonts (D5) — no font-CDN warmup by
|
|
105
|
+
default. A theme that CDN-loads faces adds its own preconnect alongside
|
|
106
|
+
its stylesheet link via theme.head.content. -->
|
|
107
|
+
<!-- <link rel="preconnect" href="https://cdn.jsdelivr.net"/> -->
|
|
108
|
+
<!-- <link rel="preconnect" href="https://cdnjs.cloudflare.com"/> -->
|
|
109
|
+
<!-- <link rel="dns-prefetch" href="https://cdn.jsdelivr.net"/> -->
|
|
110
|
+
<!-- <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/> -->
|
|
111
|
+
|
|
112
|
+
<!-- Google Adsense (conditionally loaded) -->
|
|
113
|
+
{% iftruthy resolved.config.advertising.providers.adsense.client %}
|
|
114
|
+
<!-- Google AdSense -->
|
|
115
|
+
<!-- <link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin/> -->
|
|
116
|
+
<!-- <link rel="dns-prefetch" href="https://pagead2.googlesyndication.com"/> -->
|
|
117
|
+
|
|
118
|
+
<!-- Additional AdSense domains if needed -->
|
|
119
|
+
<!-- <link rel="preconnect" href="https://googleads.g.doubleclick.net" crossorigin/> -->
|
|
120
|
+
<!-- <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net"/> -->
|
|
121
|
+
<!-- <link rel="preconnect" href="https://tpc.googlesyndication.com" crossorigin/> -->
|
|
122
|
+
<!-- <link rel="dns-prefetch" href="https://tpc.googlesyndication.com"/> -->
|
|
123
|
+
{% endiftruthy %}
|
|
124
|
+
|
|
125
|
+
<!-- Chatsy (if used) -->
|
|
126
|
+
{% iftruthy resolved.config.inbound.chat.providers.chatsy.enabled %}
|
|
127
|
+
<link rel="preconnect" href="https://chatsy.ai" crossorigin/>
|
|
128
|
+
<link rel="dns-prefetch" href="https://chatsy.ai"/>
|
|
129
|
+
{% endiftruthy %}
|
|
130
|
+
|
|
131
|
+
<!-- Analytics providers (#467): the three origins core/js/core/analytics-loader.js
|
|
132
|
+
injects a script from, each on the SAME gate the loader reads — a provider
|
|
133
|
+
with no id is never injected, so warming its origin would be a handshake
|
|
134
|
+
nobody spends. Consent gates the injection, not the warmup: a preconnect
|
|
135
|
+
sends no request and sets no cookie, and by the time a visitor accepts the
|
|
136
|
+
banner the connection is already open.
|
|
137
|
+
No crossorigin here: these are plain <script src> fetches, and an anonymous
|
|
138
|
+
preconnect opens a connection the tag cannot reuse. -->
|
|
139
|
+
{% iftruthy resolved.config.analytics.providers.google.id %}
|
|
140
|
+
<link rel="preconnect" href="https://www.googletagmanager.com"/>
|
|
141
|
+
<link rel="dns-prefetch" href="https://www.googletagmanager.com"/>
|
|
142
|
+
{% endiftruthy %}
|
|
143
|
+
{% iftruthy resolved.config.analytics.providers.meta.id %}
|
|
144
|
+
<link rel="preconnect" href="https://connect.facebook.net"/>
|
|
145
|
+
<link rel="dns-prefetch" href="https://connect.facebook.net"/>
|
|
146
|
+
{% endiftruthy %}
|
|
147
|
+
{% iftruthy resolved.config.analytics.providers.tiktok.id %}
|
|
148
|
+
<link rel="preconnect" href="https://analytics.tiktok.com"/>
|
|
149
|
+
<link rel="dns-prefetch" href="https://analytics.tiktok.com"/>
|
|
150
|
+
{% endiftruthy %}
|
|
151
|
+
|
|
152
|
+
<!-- Firebase (#467): @omega.js/client boots the SDK the moment cloud.config
|
|
153
|
+
carries an apiKey (index.js `_resolveFirebaseConfig()?.apiKey`) — auth
|
|
154
|
+
refreshes the persisted token against securetoken, then the auth module
|
|
155
|
+
reads the account doc from firestore. Both are CORS fetches, so the warmup
|
|
156
|
+
IS anonymous or it is not the connection the SDK reuses. -->
|
|
157
|
+
{% iftruthy resolved.config.cloud.config.apiKey %}
|
|
158
|
+
<link rel="preconnect" href="https://securetoken.googleapis.com" crossorigin/>
|
|
159
|
+
<link rel="dns-prefetch" href="https://securetoken.googleapis.com"/>
|
|
160
|
+
<link rel="preconnect" href="https://firestore.googleapis.com" crossorigin/>
|
|
161
|
+
<link rel="dns-prefetch" href="https://firestore.googleapis.com"/>
|
|
162
|
+
{% endiftruthy %}
|
|
163
|
+
|
|
164
|
+
<!-- Cloudflare Insights (if used) -->
|
|
165
|
+
<!-- <link rel="preconnect" href="https://static.cloudflareinsights.com"/>
|
|
166
|
+
<link rel="dns-prefetch" href="https://static.cloudflareinsights.com"/> -->
|
|
167
|
+
|
|
168
|
+
<!-- Meta -->
|
|
169
|
+
<meta charset="utf-8"/>
|
|
170
|
+
|
|
171
|
+
<!-- Motion gate: reveal styles (core/css/motion) only hide content under this
|
|
172
|
+
stamp, so no-JS pages render fully visible. Inline + first so the stamp
|
|
173
|
+
beats first paint. -->
|
|
174
|
+
<script>document.documentElement.setAttribute('data-omega-motion', 'true');</script>
|
|
175
|
+
|
|
176
|
+
<!-- First-paint reveal starter (#763): the band that IS the first viewport
|
|
177
|
+
animates from the moment it is PARSED, not when the engine's observer
|
|
178
|
+
fires. Inline on purpose — a fetch here is the wait it exists to remove
|
|
179
|
+
(#749 measured ~2.0s of a 2,588ms mobile LCP on that wait).
|
|
180
|
+
The guard is PER ELEMENT, never per band: the parser hands the band over at
|
|
181
|
+
its OPEN tag, when it holds no copy yet, so a band-level "already handled"
|
|
182
|
+
flag stamped nothing and left the real work to DOMContentLoaded — which
|
|
183
|
+
waits for the deferred module bundles, exactly the wait this removes. Each
|
|
184
|
+
mutation batch collects the reveals it just saw (data-omega-inview IS the
|
|
185
|
+
guard) and coalesces TWO frames, so the browser paints the opacity-0 state
|
|
186
|
+
and the CSS transition really runs. The stagger is re-applied to the whole
|
|
187
|
+
container each time (motion.js applyStagger, same 60ms default): parse
|
|
188
|
+
order is document order, so an index never changes and re-setting the same
|
|
189
|
+
value restarts nothing. The engine's observeReveal skips a stamped element,
|
|
190
|
+
so its later boot does nothing in here, and reduced motion needs no guard:
|
|
191
|
+
the reveal lane only hides under no-preference. -->
|
|
192
|
+
<script>
|
|
193
|
+
(() => {
|
|
194
|
+
const HOOK = '[data-omega-first-paint] [data-omega-reveal]:not([data-omega-inview])'
|
|
195
|
+
+ ', [data-omega-first-paint][data-omega-reveal]:not([data-omega-inview])';
|
|
196
|
+
const queue = new Set();
|
|
197
|
+
const collect = (node) => {
|
|
198
|
+
if (node.nodeType !== 1) { return; }
|
|
199
|
+
if (node.matches(HOOK)) { queue.add(node); }
|
|
200
|
+
node.querySelectorAll(HOOK).forEach((el) => queue.add(el));
|
|
201
|
+
};
|
|
202
|
+
let frame = 0;
|
|
203
|
+
const schedule = () => {
|
|
204
|
+
if (frame || !queue.size) { return; }
|
|
205
|
+
// TWO frames on purpose: the first one paints what has been collected at
|
|
206
|
+
// opacity 0 (a transition needs that starting state to have been rendered),
|
|
207
|
+
// the second stamps it. Anything the parser adds in between rides the next
|
|
208
|
+
// batch, so every element gets its own painted frame first.
|
|
209
|
+
frame = requestAnimationFrame(() => {
|
|
210
|
+
const batch = [...queue];
|
|
211
|
+
queue.clear();
|
|
212
|
+
frame = requestAnimationFrame(() => {
|
|
213
|
+
frame = 0;
|
|
214
|
+
new Set(batch.map((el) => el.closest('[data-omega-first-paint]'))).forEach((band) => {
|
|
215
|
+
if (!band) { return; }
|
|
216
|
+
band.querySelectorAll('[data-omega-reveal-stagger]').forEach((parent) => {
|
|
217
|
+
const step = Number(parent.getAttribute('data-omega-reveal-stagger')) || 60;
|
|
218
|
+
parent.querySelectorAll('[data-omega-reveal]').forEach((el, index) => {
|
|
219
|
+
el.style.setProperty('--omega-reveal-delay', `${index * step}ms`);
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
batch.forEach((el) => el.setAttribute('data-omega-inview', 'true'));
|
|
224
|
+
schedule();
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
const observer = new MutationObserver((records) => {
|
|
229
|
+
records.forEach((record) => record.addedNodes.forEach(collect));
|
|
230
|
+
schedule();
|
|
231
|
+
});
|
|
232
|
+
observer.observe(document.documentElement, { childList: true, subtree: true });
|
|
233
|
+
// The backstop, for anything the parser was still emitting at the last frame.
|
|
234
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
235
|
+
observer.disconnect();
|
|
236
|
+
collect(document.documentElement);
|
|
237
|
+
schedule();
|
|
238
|
+
});
|
|
239
|
+
})();
|
|
240
|
+
</script>
|
|
241
|
+
|
|
242
|
+
<!-- First-paint script (#585): the reveal starter, in its own tiny bundle.
|
|
243
|
+
A deferred module, so it downloads in parallel with the stylesheet and runs
|
|
244
|
+
the moment the DOM is parsed — ahead of the main bundle's module in the
|
|
245
|
+
foot, and independent of images, fonts and firebase. Booting reveals from
|
|
246
|
+
the main bundle meant the hero stayed blank for the whole JS download.
|
|
247
|
+
core/js/first-paint.js is the seam; keep it small. -->
|
|
248
|
+
<script type="module" src="{{ assetManifest.js.firstPaint }}"></script>
|
|
249
|
+
|
|
250
|
+
<meta name="viewport" content="{{ page-viewport }}"/>
|
|
251
|
+
<meta name="HandheldFriendly" content="True"/>
|
|
252
|
+
<meta name="MobileOptimized" content="320"/>
|
|
253
|
+
<meta name="generator" content="OMEGA"/>
|
|
254
|
+
<meta name="author" content="{{ resolved.config.brand.name }}"/>
|
|
255
|
+
<meta name="copyright" content="{{ site.characters.copyright }} {{ site.omega.date.year }} {{ resolved.config.brand.name }}">
|
|
256
|
+
|
|
257
|
+
<!-- Referrer -->
|
|
258
|
+
<meta name="referrer" content="{{ page-referrer }}"/>
|
|
259
|
+
|
|
260
|
+
<!-- Canonical (a redirect page's is its DESTINATION, #466) -->
|
|
261
|
+
<link rel="canonical" href="{% if page-redirect != '' %}{{ page-redirect }}{% else %}{{ resolved.config.url }}{{ page.url }}{% endif %}"/>
|
|
262
|
+
|
|
263
|
+
<!-- Meta refresh: the no-JS half of a redirect page. In <noscript> on purpose
|
|
264
|
+
— the redirect layout's script forwards the querystring and the fragment,
|
|
265
|
+
so it must win whenever it can run at all. -->
|
|
266
|
+
{%- if page-redirect != '' -%}
|
|
267
|
+
<noscript><meta http-equiv="refresh" content="0; url={{ page-redirect }}"/></noscript>
|
|
268
|
+
{%- endif -%}
|
|
269
|
+
|
|
270
|
+
<!-- Robots -->
|
|
271
|
+
<meta name="robots" content="{{ page-robots }}"/>
|
|
272
|
+
|
|
273
|
+
<!-- Keywords -->
|
|
274
|
+
<meta name="keywords" content="{{ page-keywords }}"/>
|
|
275
|
+
|
|
276
|
+
<!-- Web app manifest (part of the minted favicon set — static-assets channel;
|
|
277
|
+
no minted set → no link, a virgin brand serves zero dangling refs) -->
|
|
278
|
+
{% if assetManifest.favicons %}
|
|
279
|
+
<link rel="manifest" href="{{ favicon-path | append: '/site.webmanifest' | omega_cachebreak }}"/>
|
|
280
|
+
{% endif %}
|
|
281
|
+
|
|
282
|
+
<!-- Title -->
|
|
283
|
+
<title>{{ page-title }}</title>
|
|
284
|
+
<meta name="twitter:title" content="{{ page-title }}"/>
|
|
285
|
+
<meta property="og:title" content="{{ page-title }}"/>
|
|
286
|
+
|
|
287
|
+
<!-- Description -->
|
|
288
|
+
<meta name="description" content="{{ page-description }}"/>
|
|
289
|
+
<meta name="twitter:description" content="{{ page-description }}"/>
|
|
290
|
+
<meta property="og:description" content="{{ page-description }}"/>
|
|
291
|
+
|
|
292
|
+
<!-- Image -->
|
|
293
|
+
<meta name="twitter:image" content="{{ page-image }}"/>
|
|
294
|
+
<meta property="og:image" content="{{ page-image }}"/>
|
|
295
|
+
<meta property="og:image:width" content="{{ resolved.meta.og_image_width | default: '1200' }}"/>
|
|
296
|
+
<meta property="og:image:height" content="{{ resolved.meta.og_image_height | default: '630' }}"/>
|
|
297
|
+
|
|
298
|
+
<!-- OG: Twitter -->
|
|
299
|
+
<meta name="twitter:card" content="{{ resolved.meta.twitter_card | default: 'summary_large_image' }}"/>
|
|
300
|
+
<meta name="twitter:site" content="@{{ resolved.config.socials.twitter.handle | default: resolved.config.socials.twitter }}"/>
|
|
301
|
+
<meta name="twitter:widgets:theme" content="light"/>
|
|
302
|
+
|
|
303
|
+
<!-- OG: Facebook / Open Graph -->
|
|
304
|
+
<meta property="og:url" content="{{ resolved.config.url }}{{ page.url }}"/>
|
|
305
|
+
<meta property="og:type" content="{{ page-og-type }}"/>
|
|
306
|
+
{% assign page-translation-default = resolved.config.translation.default | default: 'en' %}
|
|
307
|
+
<meta property="og:locale" content="{{ ogLocale }}"/>
|
|
308
|
+
<meta property="og:site_name" content="{{ resolved.config.brand.name }}"/>
|
|
309
|
+
|
|
310
|
+
<!-- Additional SEO Tags -->
|
|
311
|
+
<meta property="article:author" content="{{ resolved.config.brand.name }}"/>
|
|
312
|
+
<meta property="article:publisher" content="{{ resolved.config.url }}"/>
|
|
313
|
+
<meta name="twitter:creator" content="@{{ resolved.config.socials.twitter.handle | default: resolved.config.socials.twitter }}"/>
|
|
314
|
+
{%- iftruthy resolved.post.id -%}
|
|
315
|
+
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}"/>
|
|
316
|
+
<meta property="article:modified_time" content="{{ site.time | date_to_xmlschema }}"/>
|
|
317
|
+
{%- endiftruthy -%}
|
|
318
|
+
|
|
319
|
+
<!-- Main Feed -->
|
|
320
|
+
<link href="{{ resolved.config.url }}/feeds/posts.xml" type="application/atom+xml" rel="alternate" title="{{ resolved.config.brand.name }} Feed"/>
|
|
321
|
+
|
|
322
|
+
<!-- Language Tags -->
|
|
323
|
+
<link rel="alternate" href="{{ resolved.config.url }}{{ page.url }}" hreflang="x-default"/>
|
|
324
|
+
<link rel="alternate" href="{{ resolved.config.url }}{{ page.url }}" hreflang="{{ page-translation-default }}"/>
|
|
325
|
+
|
|
326
|
+
<!-- Favicon — exactly the minted set (manager assets service → .omega/assets/favicon,
|
|
327
|
+
bridged to /assets/images/favicon by the static-assets channel) -->
|
|
328
|
+
{% if assetManifest.favicons %}
|
|
329
|
+
<link rel="apple-touch-icon" sizes="180x180" href="{{ favicon-path | append: '/apple-touch-icon.png' | omega_cachebreak }}"/>
|
|
330
|
+
<link rel="icon" type="image/png" sizes="32x32" href="{{ favicon-path | append: '/favicon-32x32.png' | omega_cachebreak }}"/>
|
|
331
|
+
<link rel="icon" type="image/png" sizes="16x16" href="{{ favicon-path | append: '/favicon-16x16.png' | omega_cachebreak }}"/>
|
|
332
|
+
<link rel="shortcut icon" type="image/x-icon" href="{{ favicon-path | append: '/favicon.ico' | omega_cachebreak }}"/>
|
|
333
|
+
{% endif %}
|
|
334
|
+
<meta name="theme-color" content="{{ resolved.config.favicon.theme-color }}"/>
|
|
335
|
+
|
|
336
|
+
<!-- Browser Support -->
|
|
337
|
+
<!--[if lte IE 11]>
|
|
338
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
339
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
340
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
|
|
341
|
+
{{ page-ie-script }}
|
|
342
|
+
<![endif]-->
|
|
343
|
+
|
|
344
|
+
<!-- Font preloads: the first-paint faces the asset lane picked off the
|
|
345
|
+
compiled sheet's @font-face rules (#765) — fetched in parallel with the
|
|
346
|
+
stylesheet so glyphs are ready by the time the layout paints (eliminates
|
|
347
|
+
the system-font flash on cold cache). crossorigin is required for font
|
|
348
|
+
preloads per spec. -->
|
|
349
|
+
{% for font in assetManifest.fontPreloads %}
|
|
350
|
+
<link rel="preload" href="{{ font }}" as="font" type="font/woff2" crossorigin/>
|
|
351
|
+
{% endfor %}
|
|
352
|
+
|
|
353
|
+
<!-- CSS Bundles: content-hashed by the asset pipeline, mapped via the manifest.
|
|
354
|
+
The main sheet does NOT render-block (#750): the asset lane extracts its
|
|
355
|
+
first-paint subset (tokens, shell chrome, nav, hero) and it is inlined
|
|
356
|
+
here, then the full sheet loads through rel=preload and swaps itself into
|
|
357
|
+
the cascade on load. The <link> keeps its document position, so cascade
|
|
358
|
+
order never moves — the layout and page sheets below still win over it.
|
|
359
|
+
<noscript> carries the plain sheet for a visitor with JS off.
|
|
360
|
+
Note: media="print" onload="this.media='all'" does NOT improve performance.
|
|
361
|
+
A dev build extracts nothing (that lane never purges either), so there the
|
|
362
|
+
head keeps the plain blocking link — no flash while you work. The dev
|
|
363
|
+
manifest carries '' and Liquid's `if` reads '' as true, hence iftruthy. -->
|
|
364
|
+
{% iftruthy assetManifest.css.critical %}
|
|
365
|
+
<style>{{ assetManifest.css.critical }}</style>
|
|
366
|
+
<link rel="preload" as="style" href="{{ assetManifest.css.main }}" onload="this.onload=null;this.rel='stylesheet'"/>
|
|
367
|
+
<noscript><link rel="stylesheet" type="text/css" href="{{ assetManifest.css.main }}"/></noscript>
|
|
368
|
+
{% endiftruthy %}
|
|
369
|
+
{% iffalsy assetManifest.css.critical %}
|
|
370
|
+
<link rel="stylesheet" type="text/css" href="{{ assetManifest.css.main }}"/>
|
|
371
|
+
{% endiffalsy %}
|
|
372
|
+
|
|
373
|
+
<!-- Then this page's LAYOUT sheets: one per layout in the chain, outermost
|
|
374
|
+
first (css/layouts/<layout>.scss). A sheet under the lane's byte budget
|
|
375
|
+
arrives as css TEXT and prints here as a <style> block instead of a link
|
|
376
|
+
(#767): the request queues behind the HTML and the font preloads, which
|
|
377
|
+
cost about a second of first paint however small the sheet is. The block
|
|
378
|
+
stands exactly where the link stood, so the cascade never moves. -->
|
|
379
|
+
{% for layoutCss in layoutAssets.css %}
|
|
380
|
+
{% if layoutCss.inline %}<style>{{ layoutCss.inline }}</style>
|
|
381
|
+
{% else %}<link rel="stylesheet" type="text/css" href="{{ layoutCss.href }}"/>
|
|
382
|
+
{% endif %}
|
|
383
|
+
{% endfor %}
|
|
384
|
+
|
|
385
|
+
<!-- Then the page-specific bundles: EVERY layer that ships a sheet for this
|
|
386
|
+
URL, in layer order — core, then the theme, then the consumer (#624). One
|
|
387
|
+
rule, the same one the page JS follows: nothing replaces anything, the
|
|
388
|
+
later sheet decorates the earlier one by winning the cascade. A layer with
|
|
389
|
+
no sheet for this path simply contributes nothing. -->
|
|
390
|
+
{% for pageCss in pageAssets.css %}
|
|
391
|
+
{% if pageCss.inline %}<style>{{ pageCss.inline }}</style>
|
|
392
|
+
{% else %}<link rel="stylesheet" type="text/css" href="{{ pageCss.href }}"/>
|
|
393
|
+
{% endif %}
|
|
394
|
+
{% endfor %}
|
|
395
|
+
|
|
396
|
+
<!-- Brand accent tokens: derived from brand.color at build (src/brand-tokens.js);
|
|
397
|
+
emitted AFTER the bundles so the ramps win the cascade over the token sheet's
|
|
398
|
+
placeholders. Two ramps — light plus a legibility-lifted dark variant —
|
|
399
|
+
stamped with the SAME plumbing as the token sheet (OS preference carries,
|
|
400
|
+
the appearance.js data-bs-theme stamp beats it both ways). Values are
|
|
401
|
+
regenerated from parsed channels — config strings never pass through
|
|
402
|
+
verbatim. -->
|
|
403
|
+
{% iftruthy site.brandTokens %}
|
|
404
|
+
{% capture brand-ramp-light %}--omega-accent:{{ site.brandTokens.accent }};--omega-accent-hover:{{ site.brandTokens.accentHover }};--omega-accent-active:{{ site.brandTokens.accentActive }};--omega-accent-subtle:{{ site.brandTokens.accentSubtle }};--omega-accent-ink:{{ site.brandTokens.accentInk }};--omega-accent-ring:{{ site.brandTokens.accentRing }}{% endcapture %}
|
|
405
|
+
{% capture brand-ramp-dark %}--omega-accent:{{ site.brandTokens.dark.accent }};--omega-accent-hover:{{ site.brandTokens.dark.accentHover }};--omega-accent-active:{{ site.brandTokens.dark.accentActive }};--omega-accent-subtle:{{ site.brandTokens.dark.accentSubtle }};--omega-accent-ink:{{ site.brandTokens.dark.accentInk }};--omega-accent-ring:{{ site.brandTokens.dark.accentRing }}{% endcapture %}
|
|
406
|
+
<style>
|
|
407
|
+
:root { {{ brand-ramp-light }} }
|
|
408
|
+
@media (prefers-color-scheme: dark) { :root { {{ brand-ramp-dark }} } }
|
|
409
|
+
:root[data-bs-theme='dark'] { {{ brand-ramp-dark }} }
|
|
410
|
+
:root[data-bs-theme='light'] { {{ brand-ramp-light }} }
|
|
411
|
+
</style>
|
|
412
|
+
{% endiftruthy %}
|
|
413
|
+
|
|
414
|
+
<!-- Style - Scripts are Disabled -->
|
|
415
|
+
<noscript>
|
|
416
|
+
{{ page-ie-script }}
|
|
417
|
+
</noscript>
|
|
418
|
+
|
|
419
|
+
<!-- Theme - Injected head -->
|
|
420
|
+
{{ resolved.config.theme.head.content | omega_content_format }}
|
|
421
|
+
|
|
422
|
+
<!-- Page - Injected head -->
|
|
423
|
+
{{ resolved.head.content | omega_content_format }}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Per-unit pricing math — shared by every theme's pricing layout. Jekyll
|
|
3
|
+
includes share the caller's variable scope, so the assigns land in the
|
|
4
|
+
calling template.
|
|
5
|
+
|
|
6
|
+
In: include.plan — a composed resolved.pricing.plans item
|
|
7
|
+
resolved.pricing.price_per_unit — consumer knob { enabled, feature_id, label }
|
|
8
|
+
|
|
9
|
+
Out: monthly_price_per_unit — $/unit at monthly billing (nil unless computable)
|
|
10
|
+
annual_price_per_unit — $/unit at annual billing, monthly-equivalent
|
|
11
|
+
|
|
12
|
+
Only computes for paid plans whose target feature resolves to a usable
|
|
13
|
+
positive number (guards the divided_by). Re-assigned on every call so loop
|
|
14
|
+
iterations never see a previous plan's values.
|
|
15
|
+
{% endcomment %}
|
|
16
|
+
|
|
17
|
+
{% assign monthly_price_per_unit = nil %}
|
|
18
|
+
{% assign annual_price_per_unit = nil %}
|
|
19
|
+
{% assign _ppu_value = nil %}
|
|
20
|
+
|
|
21
|
+
{% if include.plan.prices.monthly > 0 %}
|
|
22
|
+
{% for _ppu_feature in include.plan.features %}
|
|
23
|
+
{% if _ppu_feature.id == resolved.pricing.price_per_unit.feature_id %}
|
|
24
|
+
{% assign _ppu_value = _ppu_feature.value %}
|
|
25
|
+
{% break %}
|
|
26
|
+
{% endif %}
|
|
27
|
+
{% endfor %}
|
|
28
|
+
{% if _ppu_value and _ppu_value > 0 %}
|
|
29
|
+
{% assign monthly_price_per_unit = include.plan.prices.monthly | times: 1.0 | divided_by: _ppu_value | round: 2 %}
|
|
30
|
+
{% assign _ppu_annual_monthly = include.plan.prices.annually | divided_by: 12.0 %}
|
|
31
|
+
{% assign annual_price_per_unit = _ppu_annual_monthly | divided_by: _ppu_value | round: 2 %}
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% endif %}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
One resolved library entry's BODY (#540): every demo variant STACKED — its
|
|
3
|
+
label, an Open-frame link, the embedded frame, then its options — followed by
|
|
4
|
+
the args reference the entry's own schema generates.
|
|
5
|
+
|
|
6
|
+
Rendered by `defaults/showcase/entry.html`, the ONE generator behind both
|
|
7
|
+
galleries (#602): a section entry and a component entry are the same page
|
|
8
|
+
wearing kind-aware urls, so neither kind can drift into documenting itself
|
|
9
|
+
differently. The caller owns the HEAD above this.
|
|
10
|
+
|
|
11
|
+
Docs display stays RAW: argsJson, defaultsJson and the descriptions arrive
|
|
12
|
+
HTML-escaped from the collector, printed verbatim, never liquified. The
|
|
13
|
+
frames are #463's — same lazy loading, same min-height fallback, same
|
|
14
|
+
`data-omega-showcase-frame` autosize hook. Their URLs come off the variant
|
|
15
|
+
itself (#602): the library computes each kind's gallery paths, so this
|
|
16
|
+
include never composes one and cannot disagree with the frame page's own
|
|
17
|
+
permalink.
|
|
18
|
+
|
|
19
|
+
In: include.entry — the sectionLibrary entry to render
|
|
20
|
+
include.prefix — panel id prefix ('variant-'), the rail's anchor
|
|
21
|
+
target for each variant
|
|
22
|
+
include.heading — tag for the variant/Args headings, so the document
|
|
23
|
+
outline stays ordered under either caller's head
|
|
24
|
+
include.subheading — tag one level under it (the Options label)
|
|
25
|
+
{% endcomment %}
|
|
26
|
+
{% assign showcase_entry = include.entry %}
|
|
27
|
+
|
|
28
|
+
{% if showcase_entry.demo.size > 0 %}
|
|
29
|
+
<div data-omega-showcase-panels>
|
|
30
|
+
{% for variant in showcase_entry.demo %}
|
|
31
|
+
{% comment %} scroll-margin clears the fixed masthead, so a rail anchor
|
|
32
|
+
lands on the variant's own label, not behind the nav. {% endcomment %}
|
|
33
|
+
<section id="{{ include.prefix }}{{ variant.slug }}" class="mb-4" style="scroll-margin-top: 5.5rem;" data-omega-showcase-variant="{{ variant.slug }}">
|
|
34
|
+
<div class="d-flex flex-wrap align-items-center gap-2 mb-3">
|
|
35
|
+
<span class="badge text-bg-secondary">demo</span>
|
|
36
|
+
<{{ include.heading }} class="h5 mb-0">{{ variant.label }}</{{ include.heading }}>
|
|
37
|
+
<a href="{{ variant.url }}" class="small ms-auto text-decoration-none" target="_blank" rel="noopener">Open frame →</a>
|
|
38
|
+
</div>
|
|
39
|
+
<iframe
|
|
40
|
+
class="w-100 border rounded"
|
|
41
|
+
src="{{ variant.url }}"
|
|
42
|
+
title="{{ variant.label }}"
|
|
43
|
+
loading="lazy"
|
|
44
|
+
style="min-height: 640px;"
|
|
45
|
+
data-omega-showcase-frame></iframe>
|
|
46
|
+
<{{ include.subheading }} class="h6 text-uppercase text-muted mt-4 mb-2">Options</{{ include.subheading }}>
|
|
47
|
+
{% if variant.argsJson != "" %}
|
|
48
|
+
{% comment %} argsJson arrives HTML-escaped from the collector — print verbatim {% endcomment %}
|
|
49
|
+
<pre class="border rounded p-3 mb-0 small overflow-auto"><code>{{ variant.argsJson }}</code></pre>
|
|
50
|
+
{% else %}
|
|
51
|
+
<p class="text-muted small mb-0">No args — the entry's own defaults, as they ship.</p>
|
|
52
|
+
{% endif %}
|
|
53
|
+
</section>
|
|
54
|
+
{% endfor %}
|
|
55
|
+
</div>
|
|
56
|
+
{% else %}
|
|
57
|
+
<p class="text-muted">
|
|
58
|
+
No demo data: this entry documents its args only (lookup-driven entries render from live site content, which a gallery page can't fabricate).
|
|
59
|
+
</p>
|
|
60
|
+
{% endif %}
|
|
61
|
+
|
|
62
|
+
<!-- ═══ Args reference (generated from the schema) ═══ -->
|
|
63
|
+
<{{ include.heading }} class="h5 border-top pt-4 mb-3">Args</{{ include.heading }}>
|
|
64
|
+
{% if showcase_entry.argsTable.size > 0 %}
|
|
65
|
+
<div class="table-responsive">
|
|
66
|
+
<table class="table align-middle">
|
|
67
|
+
<thead>
|
|
68
|
+
<tr>
|
|
69
|
+
<th>Name</th>
|
|
70
|
+
<th>Type</th>
|
|
71
|
+
<th>Description</th>
|
|
72
|
+
</tr>
|
|
73
|
+
</thead>
|
|
74
|
+
<tbody>
|
|
75
|
+
{% for row in showcase_entry.argsTable %}
|
|
76
|
+
<tr>
|
|
77
|
+
<td><code>{{ row.name }}</code></td>
|
|
78
|
+
<td>{% if row.type != "" %}<code>{{ row.type }}</code>{% else %}<span class="text-muted">any</span>{% endif %}</td>
|
|
79
|
+
<td class="small">{{ row.description }}</td>
|
|
80
|
+
</tr>
|
|
81
|
+
{% endfor %}
|
|
82
|
+
</tbody>
|
|
83
|
+
</table>
|
|
84
|
+
</div>
|
|
85
|
+
{% else %}
|
|
86
|
+
<p class="text-muted">No declared args.</p>
|
|
87
|
+
{% endif %}
|
|
88
|
+
|
|
89
|
+
{% if showcase_entry.defaultsJson != "" %}
|
|
90
|
+
<details class="mt-2">
|
|
91
|
+
<summary class="fw-bold">Defaults</summary>
|
|
92
|
+
<pre class="border rounded p-3 mt-2 small overflow-auto"><code>{{ showcase_entry.defaultsJson }}</code></pre>
|
|
93
|
+
</details>
|
|
94
|
+
{% endif %}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
A gallery INDEX's listing (#602) — one row per resolved entry of ONE kind,
|
|
3
|
+
grouped by its category folder, linking that entry's own page. The two
|
|
4
|
+
galleries mirror each other, so this is ONE home: a listing that grows a
|
|
5
|
+
column grows it on both, and neither can drift into describing its library
|
|
6
|
+
differently.
|
|
7
|
+
|
|
8
|
+
Auto-generated from the resolved library: a new `_sections`/`_components`
|
|
9
|
+
folder appears here with zero authoring, and each row chips the layer that
|
|
10
|
+
owns it (a consumer override says `consumer`).
|
|
11
|
+
|
|
12
|
+
Development-only surface (the engine gates the whole `defaults/showcase/`
|
|
13
|
+
dir), so it reads the sectionLibrary global directly. Neutral Bootstrap
|
|
14
|
+
vocabulary, like the pages around it.
|
|
15
|
+
|
|
16
|
+
In: include.kind — which library to list ('section' / 'component')
|
|
17
|
+
{% endcomment %}
|
|
18
|
+
{% for group in sectionLibrary.groups %}
|
|
19
|
+
{% if group.kind == include.kind %}
|
|
20
|
+
<div class="d-flex align-items-baseline gap-2 border-bottom pb-2 mb-3">
|
|
21
|
+
<h2 class="h5 mb-0 text-capitalize">{{ group.kind }}s</h2>
|
|
22
|
+
<code class="text-muted">{{ group.category }}/</code>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<ul class="list-unstyled mb-4">
|
|
26
|
+
{% for entry in group.entries %}
|
|
27
|
+
<li class="border-bottom py-3">
|
|
28
|
+
<a href="{{ entry.url }}" class="d-flex align-items-center gap-2 text-decoration-none mb-1">
|
|
29
|
+
<code>{{ entry.id }}</code>
|
|
30
|
+
<span class="badge text-bg-secondary ms-auto">{{ entry.source }}</span>
|
|
31
|
+
</a>
|
|
32
|
+
{% comment %} description arrives HTML-escaped from the collector — print verbatim {% endcomment %}
|
|
33
|
+
<p class="small text-muted mb-1">{{ entry.description | truncate: 200 }}</p>
|
|
34
|
+
<p class="small text-body-secondary mb-0">
|
|
35
|
+
{{ entry.argsTable.size }} args
|
|
36
|
+
· {{ entry.demo.size }} demo{% if entry.demo.size != 1 %}s{% endif %}
|
|
37
|
+
{% if entry.inherit.size > 0 %}· inherits {{ entry.inherit | join: ", " }}{% endif %}
|
|
38
|
+
</p>
|
|
39
|
+
</li>
|
|
40
|
+
{% endfor %}
|
|
41
|
+
</ul>
|
|
42
|
+
{% endif %}
|
|
43
|
+
{% endfor %}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
A gallery's navigation rail (#540) — the resolved library as a SIDEBAR: every
|
|
3
|
+
entry OF ONE KIND, grouped the way that gallery's index groups them, and the
|
|
4
|
+
current entry's demo variants nested under it as ANCHOR JUMPS to that
|
|
5
|
+
variant's frame (Ian's QA call: the entry page stacks every variant, so the
|
|
6
|
+
rail scrolls to one — no tab machinery, no reload).
|
|
7
|
+
|
|
8
|
+
Kind-scoped (#602): the two galleries are separate libraries in separate url
|
|
9
|
+
spaces, so a component rail lists components and a section rail lists
|
|
10
|
+
sections. One home for both — and for each gallery's index and entry pages —
|
|
11
|
+
so a rail that grows a group grows it everywhere it appears.
|
|
12
|
+
|
|
13
|
+
The sticky offset clears the site masthead: classy's nav is `position:
|
|
14
|
+
fixed`, and a rail pinned at the viewport top slid under it — taking the
|
|
15
|
+
back link with it, which is what made that link look dead.
|
|
16
|
+
|
|
17
|
+
Development-only surface (the engine gates the injection), so it reads the
|
|
18
|
+
sectionLibrary global directly. Neutral Bootstrap vocabulary, like the pages
|
|
19
|
+
around it — this renders under whichever theme is active.
|
|
20
|
+
|
|
21
|
+
In: include.kind — which library this rail is ('section'/'component')
|
|
22
|
+
include.home — that library's index url
|
|
23
|
+
include.label — that library's name, for the landmark + back link
|
|
24
|
+
include.current — the entry id the page is showing ('' on the index)
|
|
25
|
+
include.variants — that entry's demo variants (empty on the index)
|
|
26
|
+
{% endcomment %}
|
|
27
|
+
<nav class="position-sticky pb-3" style="top: 5.5rem; max-height: calc(100vh - 7rem); overflow-y: auto;" aria-label="{{ include.label }}">
|
|
28
|
+
<a href="{{ include.home }}" class="d-block small text-decoration-none mb-3">← {{ include.label }}</a>
|
|
29
|
+
|
|
30
|
+
{% for group in sectionLibrary.groups %}
|
|
31
|
+
{% if group.kind == include.kind %}
|
|
32
|
+
<p class="text-uppercase small fw-bold text-muted mb-1">{{ group.category }}/</p>
|
|
33
|
+
<ul class="list-unstyled mb-3">
|
|
34
|
+
{% for item in group.entries %}
|
|
35
|
+
{% assign is_current = false %}
|
|
36
|
+
{% if item.id == include.current %}
|
|
37
|
+
{% assign is_current = true %}
|
|
38
|
+
{% endif %}
|
|
39
|
+
<li>
|
|
40
|
+
<a href="{{ item.url }}"
|
|
41
|
+
class="d-block small py-1 text-decoration-none{% if is_current %} fw-bold{% else %} text-body-secondary{% endif %}"
|
|
42
|
+
{% if is_current %}aria-current="page"{% endif %}>{{ item.id }}</a>
|
|
43
|
+
|
|
44
|
+
{% comment %} The current entry's variants are ANCHOR JUMPS: every
|
|
45
|
+
frame is on the page already, so a rail item scrolls to its own. {% endcomment %}
|
|
46
|
+
{% if is_current and include.variants.size > 0 %}
|
|
47
|
+
<ul class="list-unstyled border-start ms-1 ps-2 mb-2">
|
|
48
|
+
{% for variant in include.variants %}
|
|
49
|
+
<li>
|
|
50
|
+
<a href="#variant-{{ variant.slug }}" class="d-block small py-1 text-decoration-none text-body-secondary">{{ variant.label }}</a>
|
|
51
|
+
</li>
|
|
52
|
+
{% endfor %}
|
|
53
|
+
</ul>
|
|
54
|
+
{% endif %}
|
|
55
|
+
</li>
|
|
56
|
+
{% endfor %}
|
|
57
|
+
</ul>
|
|
58
|
+
{% endif %}
|
|
59
|
+
{% endfor %}
|
|
60
|
+
</nav>
|