@omega.js/desktop 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 +166 -0
- package/bin/omega +2 -0
- package/bin/omega-desktop +2 -0
- package/bin/omg +2 -0
- package/dist/assets/css/core/_fontawesome.scss +146 -0
- package/dist/assets/css/core/_initialize.scss +38 -0
- package/dist/assets/css/omega-desktop.scss +39 -0
- package/dist/assets/css/shell/_index.scss +207 -0
- package/dist/assets/css/tokens/_index.scss +166 -0
- package/dist/assets/js/bootstrap.bundle.js +1 -0
- package/dist/assets/js/core/app-shell.js +136 -0
- package/dist/assets/themes/_template/README.md +115 -0
- package/dist/assets/themes/_template/_config.scss +60 -0
- package/dist/assets/themes/_template/_theme.js +14 -0
- package/dist/assets/themes/_template/_theme.scss +28 -0
- package/dist/assets/themes/_template/css/base/_root.scss +19 -0
- package/dist/assets/themes/_template/css/components/_components.scss +23 -0
- package/dist/assets/themes/base/README.md +5 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
- package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
- package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
- package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
- package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
- package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
- package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
- package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
- package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
- package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
- package/dist/assets/themes/base/_theme.js +13 -0
- package/dist/assets/themes/base/_theme.scss +4 -0
- package/dist/assets/themes/bootstrap/_theme.js +16 -0
- package/dist/assets/themes/bootstrap/_theme.scss +11 -0
- package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
- package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
- package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
- package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
- package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
- package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
- package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
- package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
- package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
- package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
- package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
- package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
- package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
- package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
- package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
- package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
- package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
- package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
- package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
- package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
- package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
- package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
- package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
- package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
- package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
- package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
- package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
- package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
- package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
- package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
- package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
- package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
- package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
- package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
- package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
- package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
- package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
- package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
- package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
- package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
- package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
- package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/dist/assets/themes/classy/README.md +89 -0
- package/dist/assets/themes/classy/_config.scss +245 -0
- package/dist/assets/themes/classy/_theme.js +31 -0
- package/dist/assets/themes/classy/_theme.scss +57 -0
- package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
- package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
- package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
- package/dist/assets/themes/classy/css/base/_root.scss +113 -0
- package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
- package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
- package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
- package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
- package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
- package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
- package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
- package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
- package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
- package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
- package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
- package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
- package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
- package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
- package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
- package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
- package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
- package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
- package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
- package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
- package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
- package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
- package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
- package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
- package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
- package/dist/assets/themes/neobrutalism/README.md +118 -0
- package/dist/assets/themes/neobrutalism/_config.scss +139 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/dist/assets/themes/neobrutalism/_theme.js +24 -0
- package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
- package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
- package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/assets/themes/newsflash/README.md +117 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/dist/assets/themes/newsflash/_config.scss +147 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/dist/assets/themes/newsflash/_theme.js +24 -0
- package/dist/assets/themes/newsflash/_theme.scss +70 -0
- package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
- package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
- package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
- package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
- package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
- package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
- package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
- package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
- package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
- package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
- package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
- package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
- package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
- package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
- package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
- package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/build.js +249 -0
- package/dist/cli-run.js +34 -0
- package/dist/cli.js +49 -0
- package/dist/commands/build.js +32 -0
- package/dist/commands/cdp/capture.js +91 -0
- package/dist/commands/cdp/client.js +140 -0
- package/dist/commands/cdp/eval.js +20 -0
- package/dist/commands/cdp/quit.js +84 -0
- package/dist/commands/cdp/relaunch.js +62 -0
- package/dist/commands/cdp/shot.js +20 -0
- package/dist/commands/cdp/status.js +38 -0
- package/dist/commands/cdp/theme.js +21 -0
- package/dist/commands/cdp.js +53 -0
- package/dist/commands/clean.js +34 -0
- package/dist/commands/deploy.js +75 -0
- package/dist/commands/finalize-release.js +238 -0
- package/dist/commands/install.js +37 -0
- package/dist/commands/launch.js +150 -0
- package/dist/commands/lib/dependencies.js +35 -0
- package/dist/commands/lib/deploy-precheck.js +117 -0
- package/dist/commands/lib/ensure-target.js +300 -0
- package/dist/commands/logs.js +185 -0
- package/dist/commands/package.js +31 -0
- package/dist/commands/publish.js +34 -0
- package/dist/commands/push-secrets.js +141 -0
- package/dist/commands/release.js +286 -0
- package/dist/commands/runner.js +1874 -0
- package/dist/commands/sign-windows.js +563 -0
- package/dist/commands/test.js +121 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/validate-certs.js +238 -0
- package/dist/commands/version.js +9 -0
- package/dist/config/page-template.html +35 -0
- package/dist/defaults/.github/workflows/build.yml +276 -0
- package/dist/defaults/AGENTS.md +109 -0
- package/dist/defaults/CHANGELOG.md +15 -0
- package/dist/defaults/CLAUDE.md +1 -0
- package/dist/defaults/_.gitignore +24 -0
- package/dist/defaults/_mas/README.md +49 -0
- package/dist/defaults/_mas/entitlements.mas.inherit.plist +12 -0
- package/dist/defaults/_mas/entitlements.mas.loginhelper.plist +8 -0
- package/dist/defaults/_mas/entitlements.mas.plist +33 -0
- package/dist/defaults/config/certs/.gitkeep +0 -0
- package/dist/defaults/config/certs/README.md +60 -0
- package/dist/defaults/config/icons/macos/dmg.png +0 -0
- package/dist/defaults/config/icons/macos/icon.png +0 -0
- package/dist/defaults/config/icons/macos/tray.png +0 -0
- package/dist/defaults/config/icons/windows/icon.png +0 -0
- package/dist/defaults/config/omega.json5 +279 -0
- package/dist/defaults/docs/README.md +17 -0
- package/dist/defaults/gulpfile.js +6 -0
- package/dist/defaults/hooks/build/post.js +9 -0
- package/dist/defaults/hooks/build/pre.js +9 -0
- package/dist/defaults/hooks/notarize/post.js +16 -0
- package/dist/defaults/hooks/release/post.js +9 -0
- package/dist/defaults/hooks/release/pre.js +9 -0
- package/dist/defaults/src/assets/js/components/about/index.js +10 -0
- package/dist/defaults/src/assets/js/components/main/index.js +14 -0
- package/dist/defaults/src/assets/js/components/settings/index.js +10 -0
- package/dist/defaults/src/assets/scss/main.scss +34 -0
- package/dist/defaults/src/assets/scss/pages/about.scss +3 -0
- package/dist/defaults/src/assets/scss/pages/main.scss +4 -0
- package/dist/defaults/src/assets/scss/pages/settings.scss +3 -0
- package/dist/defaults/src/integrations/context-menu/index.js +60 -0
- package/dist/defaults/src/integrations/menu/index.js +58 -0
- package/dist/defaults/src/integrations/tray/index.js +60 -0
- package/dist/defaults/src/main.js +78 -0
- package/dist/defaults/src/preload.js +15 -0
- package/dist/defaults/src/views/about/index.html +3 -0
- package/dist/defaults/src/views/main/index.html +8 -0
- package/dist/defaults/src/views/settings/index.html +3 -0
- package/dist/defaults/test/README.md +41 -0
- package/dist/defaults/test/_init.js +10 -0
- package/dist/gulp/main.js +144 -0
- package/dist/gulp/tasks/audit.js +82 -0
- package/dist/gulp/tasks/build-config.js +445 -0
- package/dist/gulp/tasks/bundle.js +451 -0
- package/dist/gulp/tasks/defaults.js +20 -0
- package/dist/gulp/tasks/distribute.js +8 -0
- package/dist/gulp/tasks/html.js +95 -0
- package/dist/gulp/tasks/package-quick.js +102 -0
- package/dist/gulp/tasks/package.js +53 -0
- package/dist/gulp/tasks/release.js +57 -0
- package/dist/gulp/tasks/sass.js +82 -0
- package/dist/gulp/tasks/serve.js +191 -0
- package/dist/hooks/notarize.js +70 -0
- package/dist/index.js +14 -0
- package/dist/lib/_menu-mixin.js +199 -0
- package/dist/lib/analytics.js +360 -0
- package/dist/lib/app-state.js +220 -0
- package/dist/lib/auth-flow.js +160 -0
- package/dist/lib/auth-persistence.js +207 -0
- package/dist/lib/auto-updater.js +752 -0
- package/dist/lib/client-bridge.js +371 -0
- package/dist/lib/context-menu.js +302 -0
- package/dist/lib/context.js +162 -0
- package/dist/lib/deep-link.js +370 -0
- package/dist/lib/fontawesome.js +203 -0
- package/dist/lib/ipc.js +169 -0
- package/dist/lib/logger-lite.js +259 -0
- package/dist/lib/logger.js +4 -0
- package/dist/lib/menu.js +521 -0
- package/dist/lib/protocol.js +85 -0
- package/dist/lib/remote-config.js +224 -0
- package/dist/lib/remote-scripts.js +158 -0
- package/dist/lib/restart-manager/index.js +550 -0
- package/dist/lib/restart-manager/install.js +353 -0
- package/dist/lib/restart-manager/protocol.js +274 -0
- package/dist/lib/sign-helpers/auto-unlock.js +95 -0
- package/dist/lib/sign-helpers/entitlements.js +98 -0
- package/dist/lib/sign-helpers/resolve-icons.js +171 -0
- package/dist/lib/sign-helpers/sign-events.js +75 -0
- package/dist/lib/sign-helpers/update-info.js +186 -0
- package/dist/lib/startup.js +214 -0
- package/dist/lib/storage.js +193 -0
- package/dist/lib/templating.js +85 -0
- package/dist/lib/theme.js +173 -0
- package/dist/lib/tray.js +414 -0
- package/dist/lib/usage.js +141 -0
- package/dist/lib/window-manager.js +509 -0
- package/dist/main.js +542 -0
- package/dist/omega-bin.js +6 -0
- package/dist/preload.js +241 -0
- package/dist/renderer.js +456 -0
- package/dist/test/assert.js +4 -0
- package/dist/test/fixtures/consumer-app/config/omega.json5 +39 -0
- package/dist/test/fixtures/consumer-app/package.json +13 -0
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +11 -0
- package/dist/test/fixtures/consumer-app/src/assets/scss/main.scss +3 -0
- package/dist/test/fixtures/consumer-app/src/main.js +17 -0
- package/dist/test/fixtures/consumer-app/src/preload.js +4 -0
- package/dist/test/fixtures/consumer-app/src/views/main/index.html +4 -0
- package/dist/test/harness/boot-entry.js +237 -0
- package/dist/test/harness/main-entry.js +494 -0
- package/dist/test/harness/package.json +6 -0
- package/dist/test/harness/renderer-entry.js +173 -0
- package/dist/test/harness/renderer-preload.js +310 -0
- package/dist/test/harness/renderer.html +12 -0
- package/dist/test/index.js +65 -0
- package/dist/test/runner.js +99 -0
- package/dist/test/runners/boot.js +414 -0
- package/dist/test/runners/electron.js +92 -0
- package/dist/test/runners/render-event.js +46 -0
- package/dist/test/suites/boot/build-isolation.test.js +54 -0
- package/dist/test/suites/boot/consumer-app-boots.test.js +99 -0
- package/dist/test/suites/boot/restart-manager.test.js +38 -0
- package/dist/test/suites/boot/storage-bundled.test.js +59 -0
- package/dist/test/suites/boot/theme.test.js +68 -0
- package/dist/test/suites/boot/view-suite.test.js +47 -0
- package/dist/test/suites/build/attach-log-file.test.js +99 -0
- package/dist/test/suites/build/audit.test.js +271 -0
- package/dist/test/suites/build/boot-fixture.test.js +48 -0
- package/dist/test/suites/build/build-config.test.js +457 -0
- package/dist/test/suites/build/build-verbs.test.js +156 -0
- package/dist/test/suites/build/build-workflow-jobs.test.js +55 -0
- package/dist/test/suites/build/cdp.test.js +89 -0
- package/dist/test/suites/build/cli.test.js +135 -0
- package/dist/test/suites/build/config-schema.test.js +133 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +192 -0
- package/dist/test/suites/build/deliver-certs.test.js +95 -0
- package/dist/test/suites/build/derive-signing-env.test.js +122 -0
- package/dist/test/suites/build/electron-node-version.test.js +49 -0
- package/dist/test/suites/build/electron-targets.test.js +92 -0
- package/dist/test/suites/build/ensure-target.test.js +131 -0
- package/dist/test/suites/build/entitlements.test.js +107 -0
- package/dist/test/suites/build/env-delivery.test.js +166 -0
- package/dist/test/suites/build/env-watch.test.js +86 -0
- package/dist/test/suites/build/exports.test.js +63 -0
- package/dist/test/suites/build/finalize-release.test.js +152 -0
- package/dist/test/suites/build/format-fetch-error.test.js +85 -0
- package/dist/test/suites/build/framework-deps.test.js +173 -0
- package/dist/test/suites/build/get-config.test.js +137 -0
- package/dist/test/suites/build/github-utils.test.js +54 -0
- package/dist/test/suites/build/icon-sheet.test.js +62 -0
- package/dist/test/suites/build/license-stamp.test.js +63 -0
- package/dist/test/suites/build/logger-lite.test.js +148 -0
- package/dist/test/suites/build/logs-command.test.js +226 -0
- package/dist/test/suites/build/manager.test.js +193 -0
- package/dist/test/suites/build/menu-mixin.test.js +130 -0
- package/dist/test/suites/build/merge-line-files.test.js +230 -0
- package/dist/test/suites/build/omega-shell.test.js +94 -0
- package/dist/test/suites/build/omega-tokens.test.js +64 -0
- package/dist/test/suites/build/project-scripts-deps.test.js +90 -0
- package/dist/test/suites/build/push-secrets.test.js +226 -0
- package/dist/test/suites/build/release-pipeline.test.js +365 -0
- package/dist/test/suites/build/renderer-auth-bridge.test.js +158 -0
- package/dist/test/suites/build/renderer-entry-key.test.js +37 -0
- package/dist/test/suites/build/renderer-node-shims.test.js +125 -0
- package/dist/test/suites/build/resolve-icons.test.js +296 -0
- package/dist/test/suites/build/resolve-signing-cert.test.js +342 -0
- package/dist/test/suites/build/restart-manager-install.test.js +178 -0
- package/dist/test/suites/build/restart-manager-protocol.test.js +158 -0
- package/dist/test/suites/build/run-consumer-hook.test.js +137 -0
- package/dist/test/suites/build/runner.test.js +2599 -0
- package/dist/test/suites/build/sanitize-signing-env.test.js +98 -0
- package/dist/test/suites/build/sanitize-url.test.js +78 -0
- package/dist/test/suites/build/secure-remote-url.test.js +42 -0
- package/dist/test/suites/build/sentry.test.js +89 -0
- package/dist/test/suites/build/serve-resolve-electron.test.js +58 -0
- package/dist/test/suites/build/setup-scripts.test.js +172 -0
- package/dist/test/suites/build/sign-events.test.js +90 -0
- package/dist/test/suites/build/sign-windows-e2e.test.js +302 -0
- package/dist/test/suites/build/sign-windows.test.js +313 -0
- package/dist/test/suites/build/strip-dev-blocks.test.js +116 -0
- package/dist/test/suites/build/templating.test.js +95 -0
- package/dist/test/suites/build/test-discovery.test.js +64 -0
- package/dist/test/suites/build/test-stealth.test.js +83 -0
- package/dist/test/suites/build/test-target-no-match.test.js +119 -0
- package/dist/test/suites/build/update-info.test.js +224 -0
- package/dist/test/suites/build/url-helpers.test.js +289 -0
- package/dist/test/suites/build/validate-certs.test.js +103 -0
- package/dist/test/suites/build/validate-config.test.js +90 -0
- package/dist/test/suites/build/verb-logs.test.js +43 -0
- package/dist/test/suites/build/wave5-pins.test.js +35 -0
- package/dist/test/suites/main/analytics.test.js +364 -0
- package/dist/test/suites/main/app-state.test.js +197 -0
- package/dist/test/suites/main/auth-flow.test.js +196 -0
- package/dist/test/suites/main/auth-persistence.test.js +167 -0
- package/dist/test/suites/main/auto-updater.test.js +1138 -0
- package/dist/test/suites/main/boot-sequence.test.js +77 -0
- package/dist/test/suites/main/client-bridge.integration.test.js +134 -0
- package/dist/test/suites/main/client-bridge.test.js +249 -0
- package/dist/test/suites/main/context-menu.test.js +365 -0
- package/dist/test/suites/main/context.test.js +155 -0
- package/dist/test/suites/main/deep-link.test.js +288 -0
- package/dist/test/suites/main/epipe-handler.test.js +40 -0
- package/dist/test/suites/main/fontawesome.test.js +147 -0
- package/dist/test/suites/main/harness-cdp.test.js +49 -0
- package/dist/test/suites/main/ipc.test.js +165 -0
- package/dist/test/suites/main/menu.test.js +419 -0
- package/dist/test/suites/main/protocol.test.js +77 -0
- package/dist/test/suites/main/remote-config.test.js +189 -0
- package/dist/test/suites/main/remote-scripts.test.js +276 -0
- package/dist/test/suites/main/restart-manager.test.js +328 -0
- package/dist/test/suites/main/startup-paths-and-ua.test.js +99 -0
- package/dist/test/suites/main/startup.test.js +129 -0
- package/dist/test/suites/main/stealth-window.test.js +74 -0
- package/dist/test/suites/main/storage.test.js +89 -0
- package/dist/test/suites/main/theme.test.js +137 -0
- package/dist/test/suites/main/tray.test.js +322 -0
- package/dist/test/suites/main/truncate-on-boot.test.js +22 -0
- package/dist/test/suites/main/url-helpers.test.js +429 -0
- package/dist/test/suites/main/usage.test.js +127 -0
- package/dist/test/suites/main/window-bounds.test.js +169 -0
- package/dist/test/suites/main/window-manager.test.js +233 -0
- package/dist/test/suites/renderer/analytics-bridge.test.js +128 -0
- package/dist/test/suites/renderer/cross-context-helpers.test.js +131 -0
- package/dist/test/suites/renderer/fontawesome.test.js +190 -0
- package/dist/test/suites/renderer/round-trip.test.js +107 -0
- package/dist/test/suites/renderer/theme.test.js +118 -0
- package/dist/test/suites/renderer/tooltips.test.js +166 -0
- package/dist/test/suites/renderer/verts.test.js +100 -0
- package/dist/test/suites/renderer/window-em-surface.test.js +107 -0
- package/dist/test/utils/dist-snapshot.js +36 -0
- package/dist/test/utils/extended-mode-warning.js +13 -0
- package/dist/utils/app-root.js +28 -0
- package/dist/utils/attach-log-file.js +4 -0
- package/dist/utils/build-pipeline.js +58 -0
- package/dist/utils/deliver-certs.js +69 -0
- package/dist/utils/derive-signing-env.js +56 -0
- package/dist/utils/dist-root.js +21 -0
- package/dist/utils/electron-node-version.js +48 -0
- package/dist/utils/electron-targets.js +72 -0
- package/dist/utils/format-fetch-error.js +38 -0
- package/dist/utils/github.js +73 -0
- package/dist/utils/load-consumer-file.js +26 -0
- package/dist/utils/merge-line-files.js +5 -0
- package/dist/utils/mode-helpers.js +147 -0
- package/dist/utils/resolve-signing-cert.js +175 -0
- package/dist/utils/run-consumer-hook.js +38 -0
- package/dist/utils/runner-env.js +687 -0
- package/dist/utils/safe-install.js +4 -0
- package/dist/utils/sanitize-signing-env.js +45 -0
- package/dist/utils/sanitize-url.js +28 -0
- package/dist/utils/secure-remote-url.js +25 -0
- package/dist/utils/stealth-window.js +37 -0
- package/dist/utils/test-stealth.js +29 -0
- package/dist/utils/url-helpers.js +169 -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/analytics/adapters/ga4.js +26 -0
- package/dist/vendor/analytics/adapters/meta.js +26 -0
- package/dist/vendor/analytics/adapters/resolve.js +130 -0
- package/dist/vendor/analytics/adapters/tiktok.js +27 -0
- package/dist/vendor/analytics/catalog.js +908 -0
- package/dist/vendor/analytics/consent.js +49 -0
- package/dist/vendor/analytics/core.js +141 -0
- package/dist/vendor/analytics/identity.js +136 -0
- package/dist/vendor/analytics/index.js +170 -0
- package/dist/vendor/analytics/logger.js +40 -0
- package/dist/vendor/analytics/transports/browser.js +110 -0
- package/dist/vendor/config/company.js +31 -0
- package/dist/vendor/config/defaults.js +173 -0
- package/dist/vendor/config/demo.js +18 -0
- package/dist/vendor/config/desktop-artifacts.js +110 -0
- package/dist/vendor/config/edit.js +769 -0
- package/dist/vendor/config/env-delivery.js +145 -0
- package/dist/vendor/config/env-rules.js +93 -0
- package/dist/vendor/config/env-schema.js +1078 -0
- package/dist/vendor/config/env.js +445 -0
- package/dist/vendor/config/hooks.js +97 -0
- package/dist/vendor/config/index.js +237 -0
- package/dist/vendor/config/instances.js +208 -0
- package/dist/vendor/config/load.js +490 -0
- package/dist/vendor/config/merge.js +68 -0
- package/dist/vendor/config/order.js +139 -0
- package/dist/vendor/config/ports.js +374 -0
- package/dist/vendor/config/providers.js +32 -0
- package/dist/vendor/config/repo.js +142 -0
- package/dist/vendor/config/retired-keys.js +430 -0
- package/dist/vendor/config/schema.js +1610 -0
- package/dist/vendor/config/secrets.js +50 -0
- package/dist/vendor/config/seed.js +34 -0
- package/dist/vendor/config/site-global.js +205 -0
- package/dist/vendor/config/validate.js +554 -0
- package/dist/vendor/config/winback.js +61 -0
- package/dist/vendor/devkit/actions-secrets.js +145 -0
- package/dist/vendor/devkit/attach-log-file.js +262 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/certs.js +199 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/clean-dirs.js +28 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/defaults-engine.js +372 -0
- package/dist/vendor/devkit/deploy-precheck.js +54 -0
- package/dist/vendor/devkit/deploy-record.js +180 -0
- package/dist/vendor/devkit/deploy.js +286 -0
- package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
- package/dist/vendor/devkit/env-watch.js +132 -0
- package/dist/vendor/devkit/framework-deps.js +46 -0
- package/dist/vendor/devkit/license.js +155 -0
- package/dist/vendor/devkit/local.js +1905 -0
- package/dist/vendor/devkit/logger.js +128 -0
- package/dist/vendor/devkit/merge-line-files.js +296 -0
- package/dist/vendor/devkit/npm-registry.js +52 -0
- package/dist/vendor/devkit/omega-bin.js +345 -0
- package/dist/vendor/devkit/prompt.js +187 -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-dependencies.js +137 -0
- package/dist/vendor/devkit/target-secrets.js +165 -0
- package/dist/vendor/devkit/test/assert.js +120 -0
- package/dist/vendor/devkit/test/define-cases.js +104 -0
- package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
- package/dist/vendor/devkit/test/runner-core.js +554 -0
- package/dist/vendor/devkit/test/scope.js +162 -0
- package/dist/vendor/devkit/update.js +569 -0
- package/dist/vendor/monitoring/core.js +180 -0
- package/dist/vendor/monitoring/env.js +49 -0
- package/dist/vendor/monitoring/index.js +28 -0
- package/dist/vendor/monitoring/logger.js +39 -0
- package/dist/vendor/monitoring/main.js +99 -0
- package/dist/vendor/monitoring/preload.js +45 -0
- package/dist/vendor/monitoring/renderer.js +87 -0
- package/docs/analytics.md +140 -0
- package/docs/app-state.md +92 -0
- package/docs/audit.md +69 -0
- package/docs/auto-updater.md +243 -0
- package/docs/boot-sequence.md +39 -0
- package/docs/build-system.md +161 -0
- package/docs/cdp-debugging.md +169 -0
- package/docs/client-bridge.md +267 -0
- package/docs/common-mistakes.md +21 -0
- package/docs/config-schema.md +120 -0
- package/docs/context-menu.md +112 -0
- package/docs/context.md +81 -0
- package/docs/css.md +84 -0
- package/docs/deep-link.md +178 -0
- package/docs/environment-detection.md +104 -0
- package/docs/fontawesome.md +107 -0
- package/docs/hooks.md +87 -0
- package/docs/icons.md +79 -0
- package/docs/index.md +279 -0
- package/docs/installer-options.md +162 -0
- package/docs/ipc.md +61 -0
- package/docs/lib-modules.md +53 -0
- package/docs/logging.md +229 -0
- package/docs/menu.md +160 -0
- package/docs/releasing.md +229 -0
- package/docs/remote-config.md +118 -0
- package/docs/remote-scripts.md +144 -0
- package/docs/restart-manager.md +144 -0
- package/docs/runner.md +253 -0
- package/docs/sentry.md +97 -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/signing.md +267 -0
- package/docs/startup.md +142 -0
- package/docs/storage.md +59 -0
- package/docs/templating.md +101 -0
- package/docs/test-boot-layer.md +157 -0
- package/docs/test-framework.md +357 -0
- package/docs/themes.md +135 -0
- package/docs/tooltips.md +99 -0
- package/docs/tray.md +164 -0
- package/docs/usage.md +58 -0
- package/docs/verts.md +62 -0
- package/docs/windows.md +149 -0
- package/package.json +184 -0
- package/scripts/sync-nvmrc.js +100 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// OMEGA app shell — structural mechanics for backend/admin surfaces (C3).
|
|
2
|
+
// Layout GEOMETRY only: regions (sidebar / topbar / main / scrim) and
|
|
3
|
+
// STATES (desktop rail collapse, mobile drawer, viewport lock). All paint
|
|
4
|
+
// comes from the token contract (tokens/_index.scss), so a skin restyles by
|
|
5
|
+
// redefining tokens or layering rules — never by fighting these.
|
|
6
|
+
//
|
|
7
|
+
// Markup contract (theme layouts emit this; core/js/core/app-shell.js drives it):
|
|
8
|
+
//
|
|
9
|
+
// <div class="omega-shell" data-omega-shell>
|
|
10
|
+
// <aside class="omega-shell__sidebar" id="…">
|
|
11
|
+
// …pinned head: brand, and any popover-owning module (the selector)…
|
|
12
|
+
// <div class="omega-shell__sidebar-scroll">
|
|
13
|
+
// …nav; text that hides in the rail wears .omega-shell__label…
|
|
14
|
+
// </div>
|
|
15
|
+
// </aside>
|
|
16
|
+
// <header class="omega-shell__topbar">
|
|
17
|
+
// <div class="omega-shell__topbar-start"> (both toggles render only while the page has a rail, #740)
|
|
18
|
+
// <button data-shell-toggle="drawer" aria-expanded="false" aria-controls="…">…</button>
|
|
19
|
+
// <button data-shell-toggle="collapse" aria-expanded="true" aria-controls="…">…</button>
|
|
20
|
+
// </div>
|
|
21
|
+
// <div class="omega-shell__topbar-end">…</div>
|
|
22
|
+
// </header>
|
|
23
|
+
// <button class="omega-shell__drawer-toggle"> (only when the page has a rail and NO topbar, #719)
|
|
24
|
+
// <main class="omega-shell__main">…</main>
|
|
25
|
+
// <div class="omega-shell__scrim" data-shell-dismiss></div>
|
|
26
|
+
// </div>
|
|
27
|
+
//
|
|
28
|
+
// States (stamped on .omega-shell by app-shell.js):
|
|
29
|
+
// data-shell-collapsed="true" — desktop sidebar → icon rail (persisted)
|
|
30
|
+
// data-shell-open="true" — mobile drawer slid in (scrim visible)
|
|
31
|
+
// Variant: .omega-shell--locked — main never scrolls (calendar/studio pages
|
|
32
|
+
// manage their own interior scroll).
|
|
33
|
+
|
|
34
|
+
// Below this, the sidebar becomes the drawer (matches classy's xl cutover).
|
|
35
|
+
$shell-breakpoint: 1200px;
|
|
36
|
+
|
|
37
|
+
:root {
|
|
38
|
+
--omega-shell-sidebar-w: 264px;
|
|
39
|
+
--omega-shell-rail-w: 68px;
|
|
40
|
+
--omega-shell-topbar-h: 60px;
|
|
41
|
+
--omega-shell-pad: 24px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.omega-shell {
|
|
45
|
+
display: grid;
|
|
46
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
47
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
48
|
+
height: 100dvh;
|
|
49
|
+
background: var(--omega-ground);
|
|
50
|
+
color: var(--omega-ink);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// The rail clips NOTHING (#319): a module that opens a popover — the project
|
|
54
|
+
// selector — has to paint outside the 264px box, so the scroll lives one level
|
|
55
|
+
// down on __sidebar-scroll and the rail is merely positioned. Its z-index is
|
|
56
|
+
// the explicit stacking order for those popovers: above sticky page chrome
|
|
57
|
+
// inside the content column (bootstrap's 1020 band), below the drawer/modal
|
|
58
|
+
// layers.
|
|
59
|
+
.omega-shell__sidebar {
|
|
60
|
+
display: flex;
|
|
61
|
+
flex-direction: column;
|
|
62
|
+
grid-row: 1 / -1;
|
|
63
|
+
position: relative;
|
|
64
|
+
z-index: 1030;
|
|
65
|
+
width: var(--omega-shell-sidebar-w);
|
|
66
|
+
background: var(--omega-surface);
|
|
67
|
+
border-inline-end: 1px solid var(--omega-line);
|
|
68
|
+
transition: width var(--omega-speed) var(--omega-ease), transform var(--omega-speed) var(--omega-ease);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Everything under the pinned head scrolls here — nav plus the bottom slot,
|
|
72
|
+
// which keeps its `mt-auto` push because this region is the flex column now.
|
|
73
|
+
.omega-shell__sidebar-scroll {
|
|
74
|
+
display: flex;
|
|
75
|
+
flex: 1;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
min-height: 0;
|
|
78
|
+
overflow-y: auto;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// A rail popover can now outgrow the viewport (nothing clips it), and the
|
|
82
|
+
// shell page itself never scrolls (100dvh grid) — so a long selector menu
|
|
83
|
+
// caps itself and scrolls internally, keeping the tail reachable on short
|
|
84
|
+
// viewports (#319).
|
|
85
|
+
.omega-shell__sidebar .dropdown-menu {
|
|
86
|
+
max-height: calc(100dvh - 8rem);
|
|
87
|
+
overflow-y: auto;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.omega-shell__topbar {
|
|
91
|
+
display: flex;
|
|
92
|
+
align-items: center;
|
|
93
|
+
gap: 8px;
|
|
94
|
+
grid-column: 2;
|
|
95
|
+
min-height: var(--omega-shell-topbar-h);
|
|
96
|
+
padding-inline: 12px;
|
|
97
|
+
background: var(--omega-surface);
|
|
98
|
+
border-bottom: 1px solid var(--omega-line);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.omega-shell__topbar-start,
|
|
102
|
+
.omega-shell__topbar-end {
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: 8px;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.omega-shell__topbar-end {
|
|
109
|
+
margin-inline-start: auto;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// The row is PINNED, not auto-placed (#741): a page that turns the topbar off
|
|
113
|
+
// would otherwise land main in the `auto` row, size it to its content, and
|
|
114
|
+
// hand the scroll back to the document. An empty `auto` row is zero height,
|
|
115
|
+
// so row 2 is the whole `1fr` with or without a topbar — and the drawer block
|
|
116
|
+
// below re-places only the column, so the pin holds at every width.
|
|
117
|
+
.omega-shell__main {
|
|
118
|
+
grid-column: 2;
|
|
119
|
+
grid-row: 2;
|
|
120
|
+
overflow-y: auto;
|
|
121
|
+
padding: var(--omega-shell-pad);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// The floating drawer toggle: a page with a rail and no topbar renders it
|
|
125
|
+
// instead of the topbar's copy ([#719]). It sits above main and below the
|
|
126
|
+
// drawer + scrim, so opening the drawer covers it and the scrim takes the
|
|
127
|
+
// next tap. The layout hides it above the cutover with `d-xl-none` (the rail
|
|
128
|
+
// is on screen there), so this block is geometry only.
|
|
129
|
+
.omega-shell__drawer-toggle {
|
|
130
|
+
position: fixed;
|
|
131
|
+
inset-block-start: 12px;
|
|
132
|
+
inset-inline-start: 12px;
|
|
133
|
+
z-index: 1035;
|
|
134
|
+
background: var(--omega-surface);
|
|
135
|
+
border: 1px solid var(--omega-line);
|
|
136
|
+
border-radius: var(--omega-radius-m);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Scrim only participates in the mobile drawer state.
|
|
140
|
+
.omega-shell__scrim {
|
|
141
|
+
display: none;
|
|
142
|
+
position: fixed;
|
|
143
|
+
inset: 0;
|
|
144
|
+
z-index: 1040; // pairs with the drawer below; sits under modal layers (1050+)
|
|
145
|
+
background: rgb(0 0 0 / 45%);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// ─── Desktop rail collapse ───────────────────────────────────────────────────
|
|
149
|
+
|
|
150
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__sidebar {
|
|
151
|
+
width: var(--omega-shell-rail-w);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__label {
|
|
155
|
+
display: none;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// ─── Viewport-locked variant ─────────────────────────────────────────────────
|
|
159
|
+
|
|
160
|
+
.omega-shell--locked .omega-shell__main {
|
|
161
|
+
overflow: hidden;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// ─── Mobile: sidebar becomes the drawer ──────────────────────────────────────
|
|
165
|
+
|
|
166
|
+
@media (max-width: ($shell-breakpoint - 0.02px)) {
|
|
167
|
+
.omega-shell {
|
|
168
|
+
grid-template-columns: minmax(0, 1fr);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.omega-shell__topbar,
|
|
172
|
+
.omega-shell__main {
|
|
173
|
+
grid-column: 1;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.omega-shell__sidebar {
|
|
177
|
+
position: fixed;
|
|
178
|
+
inset-block: 0;
|
|
179
|
+
inset-inline-start: 0;
|
|
180
|
+
z-index: 1045;
|
|
181
|
+
transform: translateX(-100%);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// The drawer always shows at full width with labels — desktop rail
|
|
185
|
+
// collapse has no meaning here.
|
|
186
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__sidebar {
|
|
187
|
+
width: var(--omega-shell-sidebar-w);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.omega-shell[data-shell-collapsed='true'] .omega-shell__label {
|
|
191
|
+
display: revert;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.omega-shell[data-shell-open='true'] .omega-shell__sidebar {
|
|
195
|
+
transform: translateX(0);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.omega-shell[data-shell-open='true'] .omega-shell__scrim {
|
|
199
|
+
display: block;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@media (prefers-reduced-motion: reduce) {
|
|
204
|
+
.omega-shell__sidebar {
|
|
205
|
+
transition: none;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// OMEGA core design tokens — the runtime contract every theme (and, at C4,
|
|
2
|
+
// every target) consumes. CSS custom properties ONLY: themes restyle by
|
|
3
|
+
// redefining tokens, components read `var(--omega-*)` and never hardcode.
|
|
4
|
+
//
|
|
5
|
+
// VALUES are the classy v2 sheet (docs/web/classy-v2/DIRECTION.md, Ian-approved
|
|
6
|
+
// draft-2 comps): warm-paper light neutrals, de-blued charcoal dark, a single
|
|
7
|
+
// brand accent slot, reserved status hues, and the Manus-split type stacks.
|
|
8
|
+
// The NAMES plus the light/dark/attribute plumbing below are the contract
|
|
9
|
+
// (D2: dual-theme at the token level from day one).
|
|
10
|
+
//
|
|
11
|
+
// The accent family is a BUILD-TIME override surface: when `brand.color`
|
|
12
|
+
// is set, head.html emits inline `:root` ramps from composeBrandTokens
|
|
13
|
+
// (src/brand-tokens.js) — a light ramp AND a dark-variant ramp stamped with
|
|
14
|
+
// this same plumbing — that win the cascade over these placeholders.
|
|
15
|
+
//
|
|
16
|
+
// Theme attribute: `data-bs-theme` is what core/js/core/appearance.js
|
|
17
|
+
// stamps today (Bootstrap-era name; renames alongside the appearance UI
|
|
18
|
+
// when classy retires — keyed here in exactly one place on purpose).
|
|
19
|
+
//
|
|
20
|
+
// Type presets: `data-omega-type` on <html> re-pairs the font tokens
|
|
21
|
+
// (mix is the default pairing — serif marketing display over sans UI).
|
|
22
|
+
//
|
|
23
|
+
// Surface-2 moves in OPPOSITE directions per mode, on purpose (#152): dark
|
|
24
|
+
// elevates by getting lighter (#1d1d1f over the #0d0d0e ground), light
|
|
25
|
+
// elevates with white + shadow and RECESSES by getting darker. It shipped at
|
|
26
|
+
// #f6f6f5, one point off the light ground, so anything painting it directly
|
|
27
|
+
// on the page was invisible in light mode and correct in dark. #ececeb sits
|
|
28
|
+
// between the ground and the hairline in the warm-neutral ramp: a visible well
|
|
29
|
+
// on the ground AND on a white card, still nowhere near --omega-line-strong.
|
|
30
|
+
// Its Bootstrap twins (`$classy-surface-2-light`, `--bs-secondary-bg-rgb` in
|
|
31
|
+
// classy's root bridge) carry the same value and move with it.
|
|
32
|
+
//
|
|
33
|
+
// Status hues ship in PAIRS: `--omega-ok` and `--omega-ok-rgb` (same for
|
|
34
|
+
// warn/danger). Bootstrap's translucency utilities paint from
|
|
35
|
+
// `rgba(var(--bs-success-rgb), …)`, which no var() can feed a hex to, so each
|
|
36
|
+
// theme's root bridge points --bs-success/-warning/-danger and their -rgb
|
|
37
|
+
// companions at these — ONE green for `bg-success`, `.text-success` and every
|
|
38
|
+
// token-painted glyph, in both modes (#13). A theme that re-values a status
|
|
39
|
+
// hue MUST re-value its -rgb twin or the two drift apart again.
|
|
40
|
+
|
|
41
|
+
@mixin light-tokens {
|
|
42
|
+
--omega-ground: #f5f5f4;
|
|
43
|
+
--omega-surface: #ffffff;
|
|
44
|
+
--omega-surface-2: #ececeb; // the light well: RECESSED off the ground, never a second white
|
|
45
|
+
--omega-ink: #1a1a19;
|
|
46
|
+
--omega-ink-muted: #6d6d6c;
|
|
47
|
+
--omega-ink-faint: #a1a19e;
|
|
48
|
+
--omega-line: #e8e8e6;
|
|
49
|
+
--omega-line-strong: #d8d8d5;
|
|
50
|
+
--omega-accent: #2563eb; // placeholder — brand.color wins at build
|
|
51
|
+
--omega-accent-hover: #1451d8;
|
|
52
|
+
--omega-accent-active: #124ac6;
|
|
53
|
+
--omega-accent-subtle: rgba(37, 99, 235, 0.12);
|
|
54
|
+
--omega-accent-ink: #ffffff;
|
|
55
|
+
--omega-accent-ring: rgba(37, 99, 235, 0.35);
|
|
56
|
+
--omega-ok: #12925c;
|
|
57
|
+
--omega-ok-rgb: 18, 146, 92;
|
|
58
|
+
--omega-warn: #c47206;
|
|
59
|
+
--omega-warn-rgb: 196, 114, 6;
|
|
60
|
+
--omega-danger: #d92d20;
|
|
61
|
+
--omega-danger-rgb: 217, 45, 32;
|
|
62
|
+
--omega-chart-2: #0f8fa9;
|
|
63
|
+
--omega-chart-3: #7a45b5;
|
|
64
|
+
--omega-chart-4: #b0416a;
|
|
65
|
+
--omega-chart-5: #a06a08;
|
|
66
|
+
--omega-chart-6: #6a7f2b;
|
|
67
|
+
--omega-shadow-1: 0 1px 2px rgb(24 23 21 / 5%);
|
|
68
|
+
--omega-shadow-2: 0 18px 44px rgb(24 23 21 / 10%);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@mixin dark-tokens {
|
|
72
|
+
--omega-ground: #0d0d0e;
|
|
73
|
+
--omega-surface: #151516;
|
|
74
|
+
--omega-surface-2: #1d1d1f;
|
|
75
|
+
--omega-ink: #ebebea;
|
|
76
|
+
--omega-ink-muted: #9f9fa0;
|
|
77
|
+
--omega-ink-faint: #6c6c6e;
|
|
78
|
+
--omega-line: #262628;
|
|
79
|
+
--omega-line-strong: #333336;
|
|
80
|
+
--omega-accent: #5484ef; // placeholder — brand.color's dark ramp wins at build
|
|
81
|
+
--omega-accent-hover: #336dec;
|
|
82
|
+
--omega-accent-active: #2060eb;
|
|
83
|
+
--omega-accent-subtle: rgba(84, 132, 239, 0.16);
|
|
84
|
+
--omega-accent-ink: #111213;
|
|
85
|
+
--omega-accent-ring: rgba(84, 132, 239, 0.35);
|
|
86
|
+
--omega-ok: #3ecf8e;
|
|
87
|
+
--omega-ok-rgb: 62, 207, 142;
|
|
88
|
+
--omega-warn: #f5a524;
|
|
89
|
+
--omega-warn-rgb: 245, 165, 36;
|
|
90
|
+
--omega-danger: #f0574d;
|
|
91
|
+
--omega-danger-rgb: 240, 87, 77;
|
|
92
|
+
--omega-chart-2: #1f9fb4;
|
|
93
|
+
--omega-chart-3: #c09aec;
|
|
94
|
+
--omega-chart-4: #ee89a8;
|
|
95
|
+
--omega-chart-5: #e0a33c;
|
|
96
|
+
--omega-chart-6: #a9c153;
|
|
97
|
+
--omega-shadow-1: 0 1px 2px rgb(0 0 0 / 30%);
|
|
98
|
+
--omega-shadow-2: 0 18px 44px rgb(0 0 0 / 45%);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
:root {
|
|
102
|
+
@include light-tokens;
|
|
103
|
+
|
|
104
|
+
// scheme-agnostic
|
|
105
|
+
--omega-radius-xs: 6px;
|
|
106
|
+
--omega-radius-s: 8px;
|
|
107
|
+
--omega-radius-m: 10px;
|
|
108
|
+
--omega-radius-l: 14px;
|
|
109
|
+
--omega-radius-xl: 20px;
|
|
110
|
+
--omega-radius-pill: 50rem;
|
|
111
|
+
--omega-speed: 160ms;
|
|
112
|
+
--omega-speed-slow: 550ms;
|
|
113
|
+
--omega-speed-first-paint: 300ms; // the first viewport's reveal, see motion/_index.scss
|
|
114
|
+
--omega-ease: cubic-bezier(0.25, 0.5, 0.35, 1);
|
|
115
|
+
|
|
116
|
+
// Type stacks (D5: system stacks until Ian picks vendored faces — the
|
|
117
|
+
// token seam makes that swap a values-only change).
|
|
118
|
+
--omega-font-ui: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, 'Helvetica Neue', arial, sans-serif;
|
|
119
|
+
--omega-font-serif: ui-serif, georgia, 'Times New Roman', times, serif;
|
|
120
|
+
--omega-font-mono: ui-monospace, 'SF Mono', sfmono-regular, menlo, consolas, 'Liberation Mono', monospace;
|
|
121
|
+
|
|
122
|
+
// Pairing slots components actually read: marketing display vs app display.
|
|
123
|
+
// Default = the "mix" pairing (serif marketing, sans app).
|
|
124
|
+
--omega-font-marketing: var(--omega-font-serif);
|
|
125
|
+
--omega-font-display: var(--omega-font-ui);
|
|
126
|
+
|
|
127
|
+
// Chart series-1 rides the accent; 2–6 are the CVD-validated categorical
|
|
128
|
+
// ramp above (cool half first, warm half after — what keeps two vocabularies
|
|
129
|
+
// apart at a glance). It is ONE ramp for two surfaces: a chart series
|
|
130
|
+
// (core/js/libs/charts.js) and a `.omega-badge-tone` chip read the same slot,
|
|
131
|
+
// so the same thing is the same color wherever it appears. Muted on purpose
|
|
132
|
+
// — status is told by a dot and a label, never by color alone.
|
|
133
|
+
--omega-chart-1: var(--omega-accent);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Consumer type presets — one attribute (or a token override in main.scss)
|
|
137
|
+
// re-pairs the display faces everywhere.
|
|
138
|
+
:root[data-omega-type='sans'] {
|
|
139
|
+
--omega-font-marketing: var(--omega-font-ui);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
:root[data-omega-type='serif'] {
|
|
143
|
+
--omega-font-marketing: var(--omega-font-serif);
|
|
144
|
+
--omega-font-display: var(--omega-font-serif);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:root[data-omega-type='mono'] {
|
|
148
|
+
--omega-font-marketing: var(--omega-font-mono);
|
|
149
|
+
--omega-font-display: var(--omega-font-mono);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// OS preference carries when no explicit choice is stamped…
|
|
153
|
+
@media (prefers-color-scheme: dark) {
|
|
154
|
+
:root {
|
|
155
|
+
@include dark-tokens;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// …and the appearance.js stamp beats the OS in BOTH directions.
|
|
160
|
+
:root[data-bs-theme='dark'] {
|
|
161
|
+
@include dark-tokens;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
:root[data-bs-theme='light'] {
|
|
165
|
+
@include light-tokens;
|
|
166
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bootstrap=e():t.bootstrap=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.d(e,{default:()=>So});var i={};t.r(i),t.d(i,{afterMain:()=>ye,afterRead:()=>_e,afterWrite:()=>Ee,applyStyles:()=>Se,arrow:()=>Ue,auto:()=>oe,basePlacements:()=>re,beforeMain:()=>be,beforeRead:()=>me,beforeWrite:()=>we,bottom:()=>ie,clippingParents:()=>ce,computeStyles:()=>ti,createPopper:()=>Li,createPopperBase:()=>ki,createPopperLite:()=>Si,detectOverflow:()=>mi,end:()=>le,eventListeners:()=>ii,flip:()=>gi,hide:()=>vi,left:()=>se,main:()=>ve,modifierPhases:()=>Ce,offset:()=>yi,placements:()=>pe,popper:()=>de,popperGenerator:()=>xi,popperOffsets:()=>wi,preventOverflow:()=>Ai,read:()=>ge,reference:()=>ue,right:()=>ne,start:()=>ae,top:()=>ee,variationPlacements:()=>fe,viewport:()=>he,write:()=>Ae});const n=new Map,s={set(t,e,i){n.has(t)||n.set(t,new Map);const s=n.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>n.has(t)&&n.get(t).get(e)||null,remove(t,e){if(!n.has(t))return;const i=n.get(t);i.delete(e),0===i.size&&n.delete(t)}},o="transitionend",r=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,(t,e)=>`#${CSS.escape(e)}`)),t),a=t=>null==t?`${t}`:Object.prototype.toString.call(t).match(/\s([a-z]+)/i)[1].toLowerCase(),l=t=>{t.dispatchEvent(new Event(o))},c=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),h=t=>c(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(r(t)):null,d=t=>{if(!c(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},u=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),f=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?f(t.parentNode):null},p=()=>{},m=t=>{t.offsetHeight},g=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,_=[],b=()=>"rtl"===document.documentElement.dir,v=t=>{var e;e=()=>{const e=g();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(_.length||document.addEventListener("DOMContentLoaded",()=>{for(const t of _)t()}),_.push(e)):e()},y=(t,e=[],i=t)=>"function"==typeof t?t.call(...e):i,w=(t,e,i=!0)=>{if(!i)return void y(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const r=({target:i})=>{i===e&&(s=!0,e.removeEventListener(o,r),y(t))};e.addEventListener(o,r),setTimeout(()=>{s||l(e)},n)},A=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},E=/[^.]*(?=\..*)\.|.*/,C=/\..*/,T=/::\d+$/,O={};let x=1;const k={mouseenter:"mouseover",mouseleave:"mouseout"},L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${x++}`||t.uidEvent||x++}function D(t){const e=S(t);return t.uidEvent=e,O[e]=O[e]||{},O[e]}function $(t,e,i=null){return Object.values(t).find(t=>t.callable===e&&t.delegationSelector===i)}function I(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=M(t);return L.has(o)||(o=t),[n,s,o]}function N(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=I(e,i,n);if(e in k){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=D(t),c=l[a]||(l[a]={}),h=$(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=S(r,e.replace(E,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return H(s,{delegateTarget:r}),n.oneOff&&F.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return H(n,{delegateTarget:t}),i.oneOff&&F.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function P(t,e,i,n,s){const o=$(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function j(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&P(t,e,i,r.callable,r.delegationSelector)}function M(t){return t=t.replace(C,""),k[t]||t}const F={on(t,e,i,n){N(t,e,i,n,!1)},one(t,e,i,n){N(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=I(e,i,n),a=r!==e,l=D(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))j(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(T,"");a&&!e.includes(s)||P(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;P(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=g();let s=null,o=!0,r=!0,a=!1;e!==M(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=H(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function H(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch{Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const W=F;function B(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function z(t){return t.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}const R={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${z(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${z(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter(t=>t.startsWith("bs")&&!t.startsWith("bsConfig"));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1),e[i]=B(t.dataset[n])}return e},getDataAttribute:(t,e)=>B(t.getAttribute(`data-bs-${z(e)}`))},q=class{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=c(e)?R.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...c(e)?R.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[i,n]of Object.entries(e)){const e=t[i],s=c(e)?"element":a(e);if(!new RegExp(n).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${n}".`)}}},V=class extends q{constructor(t,e){super(),(t=h(t))&&(this._element=t,this._config=this._getConfig(e),s.set(this._element,this.constructor.DATA_KEY,this))}dispose(){s.remove(this._element,this.constructor.DATA_KEY),W.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){w(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return s.get(h(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.6"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}},K=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map(t=>r(t)).join(","):null},Q={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>`${t}:not([tabindex^="-"])`).join(",");return this.find(e,t).filter(t=>!u(t)&&d(t))},getSelectorFromElement(t){const e=K(t);return e&&Q.findOne(e)?e:null},getElementFromSelector(t){const e=K(t);return e?Q.findOne(e):null},getMultipleElementsFromSelector(t){const e=K(t);return e?Q.find(e):[]}},X=Q,Y=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;W.on(document,i,`[data-bs-dismiss="${n}"]`,function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),u(this))return;const s=X.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()})},U=".bs.alert",G=`close${U}`,J=`closed${U}`;class Z extends V{static get NAME(){return"alert"}close(){if(W.trigger(this._element,G).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),W.trigger(this._element,J),this.dispose()}static jQueryInterface(t){return this.each(function(){const e=Z.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}})}}Y(Z,"close"),v(Z);const tt=Z,et='[data-bs-toggle="button"]';class it extends V{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each(function(){const e=it.getOrCreateInstance(this);"toggle"===t&&e[t]()})}}W.on(document,"click.bs.button.data-api",et,t=>{t.preventDefault();const e=t.target.closest(et);it.getOrCreateInstance(e).toggle()}),v(it);const nt=it,st=".bs.swipe",ot=`touchstart${st}`,rt=`touchmove${st}`,at=`touchend${st}`,lt=`pointerdown${st}`,ct=`pointerup${st}`,ht={endCallback:null,leftCallback:null,rightCallback:null},dt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class ut extends q{constructor(t,e){super(),this._element=t,t&&ut.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return ht}static get DefaultType(){return dt}static get NAME(){return"swipe"}dispose(){W.off(this._element,st)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),y(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&y(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(W.on(this._element,lt,t=>this._start(t)),W.on(this._element,ct,t=>this._end(t)),this._element.classList.add("pointer-event")):(W.on(this._element,ot,t=>this._start(t)),W.on(this._element,rt,t=>this._move(t)),W.on(this._element,at,t=>this._end(t)))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ft=ut,pt=".bs.carousel",mt=".data-api",gt="ArrowLeft",_t="ArrowRight",bt="next",vt="prev",yt="left",wt="right",At=`slide${pt}`,Et=`slid${pt}`,Ct=`keydown${pt}`,Tt=`mouseenter${pt}`,Ot=`mouseleave${pt}`,xt=`dragstart${pt}`,kt=`load${pt}${mt}`,Lt=`click${pt}${mt}`,St="carousel",Dt="active",$t=".active",It=".carousel-item",Nt=$t+It,Pt={[gt]:wt,[_t]:yt},jt={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Mt={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Ft extends V{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=X.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===St&&this.cycle()}static get Default(){return jt}static get DefaultType(){return Mt}static get NAME(){return"carousel"}next(){this._slide(bt)}nextWhenVisible(){!document.hidden&&d(this._element)&&this.next()}prev(){this._slide(vt)}pause(){this._isSliding&&l(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?W.one(this._element,Et,()=>this.cycle()):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void W.one(this._element,Et,()=>this.to(t));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?bt:vt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&W.on(this._element,Ct,t=>this._keydown(t)),"hover"===this._config.pause&&(W.on(this._element,Tt,()=>this.pause()),W.on(this._element,Ot,()=>this._maybeEnableCycle())),this._config.touch&&ft.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of X.find(".carousel-item img",this._element))W.on(t,xt,t=>t.preventDefault());const t={leftCallback:()=>this._slide(this._directionToOrder(yt)),rightCallback:()=>this._slide(this._directionToOrder(wt)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new ft(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Pt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=X.findOne($t,this._indicatorsElement);e.classList.remove(Dt),e.removeAttribute("aria-current");const i=X.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Dt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===bt,s=e||A(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>W.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(At).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),m(s),i.classList.add(l),s.classList.add(l),this._queueCallback(()=>{s.classList.remove(l,c),s.classList.add(Dt),i.classList.remove(Dt,c,l),this._isSliding=!1,r(Et)},i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return X.findOne(Nt,this._element)}_getItems(){return X.find(It,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return b()?t===yt?vt:bt:t===yt?bt:vt}_orderToDirection(t){return b()?t===vt?yt:wt:t===vt?wt:yt}static jQueryInterface(t){return this.each(function(){const e=Ft.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)})}}W.on(document,Lt,"[data-bs-slide], [data-bs-slide-to]",function(t){const e=X.getElementFromSelector(this);if(!e||!e.classList.contains(St))return;t.preventDefault();const i=Ft.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===R.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())}),W.on(window,kt,()=>{const t=X.find('[data-bs-ride="carousel"]');for(const e of t)Ft.getOrCreateInstance(e)}),v(Ft);const Ht=Ft,Wt=".bs.collapse",Bt=`show${Wt}`,zt=`shown${Wt}`,Rt=`hide${Wt}`,qt=`hidden${Wt}`,Vt=`click${Wt}.data-api`,Kt="show",Qt="collapse",Xt="collapsing",Yt=`:scope .${Qt} .${Qt}`,Ut='[data-bs-toggle="collapse"]',Gt={parent:null,toggle:!0},Jt={parent:"(null|element)",toggle:"boolean"};class Zt extends V{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=X.find(Ut);for(const t of i){const e=X.getSelectorFromElement(t),i=X.find(e).filter(t=>t===this._element);null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Gt}static get DefaultType(){return Jt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(t=>t!==this._element).map(t=>Zt.getOrCreateInstance(t,{toggle:!1}))),t.length&&t[0]._isTransitioning)return;if(W.trigger(this._element,Bt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Qt),this._element.classList.add(Xt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Xt),this._element.classList.add(Qt,Kt),this._element.style[e]="",W.trigger(this._element,zt)},this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(W.trigger(this._element,Rt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,m(this._element),this._element.classList.add(Xt),this._element.classList.remove(Qt,Kt);for(const t of this._triggerArray){const e=X.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(Xt),this._element.classList.add(Qt),W.trigger(this._element,qt)},this._element,!0)}_isShown(t=this._element){return t.classList.contains(Kt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=h(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ut);for(const e of t){const t=X.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=X.find(Yt,this._config.parent);return X.find(t,this._config.parent).filter(t=>!e.includes(t))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each(function(){const i=Zt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}})}}W.on(document,Vt,Ut,function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of X.getMultipleElementsFromSelector(this))Zt.getOrCreateInstance(t,{toggle:!1}).toggle()}),v(Zt);const te=Zt;var ee="top",ie="bottom",ne="right",se="left",oe="auto",re=[ee,ie,ne,se],ae="start",le="end",ce="clippingParents",he="viewport",de="popper",ue="reference",fe=re.reduce(function(t,e){return t.concat([e+"-"+ae,e+"-"+le])},[]),pe=[].concat(re,[oe]).reduce(function(t,e){return t.concat([e,e+"-"+ae,e+"-"+le])},[]),me="beforeRead",ge="read",_e="afterRead",be="beforeMain",ve="main",ye="afterMain",we="beforeWrite",Ae="write",Ee="afterWrite",Ce=[me,ge,_e,be,ve,ye,we,Ae,Ee];function Te(t){return t?(t.nodeName||"").toLowerCase():null}function Oe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xe(t){return t instanceof Oe(t).Element||t instanceof Element}function ke(t){return t instanceof Oe(t).HTMLElement||t instanceof HTMLElement}function Le(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Oe(t).ShadowRoot||t instanceof ShadowRoot)}const Se={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach(function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];ke(s)&&Te(s)&&(Object.assign(s.style,i),Object.keys(n).forEach(function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)}))})},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach(function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce(function(t,e){return t[e]="",t},{});ke(n)&&Te(n)&&(Object.assign(n.style,o),Object.keys(s).forEach(function(t){n.removeAttribute(t)}))})}},requires:["computeStyles"]};function De(t){return t.split("-")[0]}var $e=Math.max,Ie=Math.min,Ne=Math.round;function Pe(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function je(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Me(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&ke(t)&&(s=t.offsetWidth>0&&Ne(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&Ne(n.height)/t.offsetHeight||1);var r=(xe(t)?Oe(t):window).visualViewport,a=!je()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Fe(t){var e=Me(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function He(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&Le(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function We(t){return Oe(t).getComputedStyle(t)}function Be(t){return["table","td","th"].indexOf(Te(t))>=0}function ze(t){return((xe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Re(t){return"html"===Te(t)?t:t.assignedSlot||t.parentNode||(Le(t)?t.host:null)||ze(t)}function qe(t){return ke(t)&&"fixed"!==We(t).position?t.offsetParent:null}function Ve(t){for(var e=Oe(t),i=qe(t);i&&Be(i)&&"static"===We(i).position;)i=qe(i);return i&&("html"===Te(i)||"body"===Te(i)&&"static"===We(i).position)?e:i||function(t){var e=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&ke(t)&&"fixed"===We(t).position)return null;var i=Re(t);for(Le(i)&&(i=i.host);ke(i)&&["html","body"].indexOf(Te(i))<0;){var n=We(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ke(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Qe(t,e,i){return $e(t,Ie(e,i))}function Xe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ye(t,e){return e.reduce(function(e,i){return e[i]=t,e},{})}const Ue={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=De(i.placement),l=Ke(a),c=[se,ne].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Xe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ye(t,re))}(s.padding,i),d=Fe(o),u="y"===l?ee:se,f="y"===l?ie:ne,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=Ve(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Qe(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&He(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ge(t){return t.split("-")[1]}var Je={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ze(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=se,y=ee,w=window;if(c){var A=Ve(i),E="clientHeight",C="clientWidth";A===Oe(i)&&"static"!==We(A=ze(i)).position&&"absolute"===a&&(E="scrollHeight",C="scrollWidth"),(s===ee||(s===se||s===ne)&&o===le)&&(y=ie,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==se&&(s!==ee&&s!==ie||o!==le)||(v=ne,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[C])-n.width,f*=l?1:-1)}var T,O=Object.assign({position:a},c&&Je),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:Ne(i*s)/s||0,y:Ne(n*s)/s||0}}({x:f,y:m},Oe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((T={})[y]=b?"0":"",T[v]=_?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",T)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const ti={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:De(e.placement),variation:Ge(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Ze(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ze(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ei={passive:!0};const ii={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=Oe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach(function(t){t.addEventListener("scroll",i.update,ei)}),a&&l.addEventListener("resize",i.update,ei),function(){o&&c.forEach(function(t){t.removeEventListener("scroll",i.update,ei)}),a&&l.removeEventListener("resize",i.update,ei)}},data:{}};var ni={left:"right",right:"left",bottom:"top",top:"bottom"};function si(t){return t.replace(/left|right|bottom|top/g,function(t){return ni[t]})}var oi={start:"end",end:"start"};function ri(t){return t.replace(/start|end/g,function(t){return oi[t]})}function ai(t){var e=Oe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function li(t){return Me(ze(t)).left+ai(t).scrollLeft}function ci(t){var e=We(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function hi(t){return["html","body","#document"].indexOf(Te(t))>=0?t.ownerDocument.body:ke(t)&&ci(t)?t:hi(Re(t))}function di(t,e){var i;void 0===e&&(e=[]);var n=hi(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=Oe(n),r=s?[o].concat(o.visualViewport||[],ci(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(di(Re(r)))}function ui(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function fi(t,e,i){return e===he?ui(function(t,e){var i=Oe(t),n=ze(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=je();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+li(t),y:l}}(t,i)):xe(e)?function(t,e){var i=Me(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ui(function(t){var e,i=ze(t),n=ai(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=$e(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=$e(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+li(t),l=-n.scrollTop;return"rtl"===We(s||i).direction&&(a+=$e(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(ze(t)))}function pi(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?De(s):null,r=s?Ge(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case ee:e={x:a,y:i.y-n.height};break;case ie:e={x:a,y:i.y+i.height};break;case ne:e={x:i.x+i.width,y:l};break;case se:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ke(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case ae:e[c]=e[c]-(i[h]/2-n[h]/2);break;case le:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function mi(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?ce:a,c=i.rootBoundary,h=void 0===c?he:c,d=i.elementContext,u=void 0===d?de:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Xe("number"!=typeof g?g:Ye(g,re)),b=u===de?ue:de,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=di(Re(t)),i=["absolute","fixed"].indexOf(We(t).position)>=0&&ke(t)?Ve(t):t;return xe(i)?e.filter(function(t){return xe(t)&&He(t,i)&&"body"!==Te(t)}):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce(function(e,i){var s=fi(t,i,n);return e.top=$e(s.top,e.top),e.right=Ie(s.right,e.right),e.bottom=Ie(s.bottom,e.bottom),e.left=$e(s.left,e.left),e},fi(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(xe(y)?y:y.contextElement||ze(t.elements.popper),l,h,r),A=Me(t.elements.reference),E=pi({reference:A,element:v,strategy:"absolute",placement:s}),C=ui(Object.assign({},v,E)),T=u===de?C:A,O={top:w.top-T.top+_.top,bottom:T.bottom-w.bottom+_.bottom,left:w.left-T.left+_.left,right:T.right-w.right+_.right},x=t.modifiersData.offset;if(u===de&&x){var k=x[s];Object.keys(O).forEach(function(t){var e=[ne,ie].indexOf(t)>=0?1:-1,i=[ee,ie].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e})}return O}const gi={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=De(g),b=l||(_!==g&&p?function(t){if(De(t)===oe)return[];var e=si(t);return[ri(t),e,ri(e)]}(g):[si(g)]),v=[g].concat(b).reduce(function(t,i){return t.concat(De(i)===oe?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?pe:l,h=Ge(n),d=h?a?fe:fe.filter(function(t){return Ge(t)===h}):re,u=d.filter(function(t){return c.indexOf(t)>=0});0===u.length&&(u=d);var f=u.reduce(function(e,i){return e[i]=mi(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[De(i)],e},{});return Object.keys(f).sort(function(t,e){return f[t]-f[e]})}(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)},[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,C=v[0],T=0;T<v.length;T++){var O=v[T],x=De(O),k=Ge(O)===ae,L=[ee,ie].indexOf(x)>=0,S=L?"width":"height",D=mi(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?ne:se:k?ie:ee;y[S]>w[S]&&($=si($));var I=si($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every(function(t){return t})){C=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find(function(e){var i=A.get(e);if(i)return i.slice(0,t).every(function(t){return t})});if(e)return C=e,"break"},j=p?3:1;j>0&&"break"!==P(j);j--);e.placement!==C&&(e.modifiersData[n]._skip=!0,e.placement=C,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function _i(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function bi(t){return[ee,ne,ie,se].some(function(e){return t[e]>=0})}const vi={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=mi(e,{elementContext:"reference"}),a=mi(e,{altBoundary:!0}),l=_i(r,n),c=_i(a,s,o),h=bi(l),d=bi(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},yi={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=pe.reduce(function(t,i){return t[i]=function(t,e,i){var n=De(t),s=[se,ee].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[se,ne].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t},{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},wi={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=pi({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Ai={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=mi(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=De(e.placement),b=Ge(e.placement),v=!b,y=Ke(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,C=e.rects.popper,T="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?ee:se,D="y"===y?ie:ne,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],j=f?-C[$]/2:0,M=b===ae?E[$]:C[$],F=b===ae?-C[$]:-E[$],H=e.elements.arrow,W=f&&H?Fe(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Qe(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&Ve(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Qe(f?Ie(N,I+V-Y-X):N,I,f?$e(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?ee:se,tt="x"===y?ie:ne,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[ee,se].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-C[it]-rt+O.altAxis,lt=ot?et+E[it]+C[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Qe(t,e,i);return n>i?i:n}(at,et,lt):Qe(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function Ei(t,e,i){void 0===i&&(i=!1);var n,s,o=ke(e),r=ke(e)&&function(t){var e=t.getBoundingClientRect(),i=Ne(e.width)/t.offsetWidth||1,n=Ne(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=ze(e),l=Me(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==Te(e)||ci(a))&&(c=(n=e)!==Oe(n)&&ke(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ai(n)),ke(e)?((h=Me(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=li(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ci(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach(function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}}),n.push(t)}return t.forEach(function(t){e.set(t.name,t)}),t.forEach(function(t){i.has(t.name)||s(t)}),n}var Ti={placement:"bottom",modifiers:[],strategy:"absolute"};function Oi(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some(function(t){return!(t&&"function"==typeof t.getBoundingClientRect)})}function xi(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?Ti:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ti,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:xe(t)?di(t):t.contextElement?di(t.contextElement):[],popper:di(e)};var r,c,u=function(t){var e=Ci(t);return Ce.reduce(function(t,i){return t.concat(e.filter(function(t){return t.phase===i}))},[])}((r=[].concat(n,a.options.modifiers),c=r.reduce(function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t},{}),Object.keys(c).map(function(t){return c[t]})));return a.orderedModifiers=u.filter(function(t){return t.enabled}),a.orderedModifiers.forEach(function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}}),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(Oi(e,i)){a.rects={reference:Ei(e,Ve(i),"fixed"===a.options.strategy),popper:Fe(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach(function(t){return a.modifiersData[t.name]=Object.assign({},t.data)});for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise(function(t){h.forceUpdate(),t(a)})},function(){return r||(r=new Promise(function(t){Promise.resolve().then(function(){r=void 0,t(s())})})),r}),destroy:function(){d(),c=!0}};if(!Oi(t,e))return h;function d(){l.forEach(function(t){return t()}),l=[]}return h.setOptions(i).then(function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)}),h}}var ki=xi(),Li=xi({defaultModifiers:[ii,wi,ti,Se,yi,gi,Ai,Ue,vi]}),Si=xi({defaultModifiers:[ii,wi,ti,Se]});const Di="dropdown",$i=".bs.dropdown",Ii=".data-api",Ni="ArrowUp",Pi="ArrowDown",ji=`hide${$i}`,Mi=`hidden${$i}`,Fi=`show${$i}`,Hi=`shown${$i}`,Wi=`click${$i}${Ii}`,Bi=`keydown${$i}${Ii}`,zi=`keyup${$i}${Ii}`,Ri="show",qi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Vi=`${qi}.${Ri}`,Ki=".dropdown-menu",Qi=b()?"top-end":"top-start",Xi=b()?"top-start":"top-end",Yi=b()?"bottom-end":"bottom-start",Ui=b()?"bottom-start":"bottom-end",Gi=b()?"left-start":"right-start",Ji=b()?"right-start":"left-start",Zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},tn={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class en extends V{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=X.next(this._element,Ki)[0]||X.prev(this._element,Ki)[0]||X.findOne(Ki,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Zi}static get DefaultType(){return tn}static get NAME(){return Di}toggle(){return this._isShown()?this.hide():this.show()}show(){if(u(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!W.trigger(this._element,Fi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))W.on(t,"mouseover",p);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Ri),this._element.classList.add(Ri),W.trigger(this._element,Hi,t)}}hide(){if(u(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!W.trigger(this._element,ji,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))W.off(t,"mouseover",p);this._popper&&this._popper.destroy(),this._menu.classList.remove(Ri),this._element.classList.remove(Ri),this._element.setAttribute("aria-expanded","false"),R.removeDataAttribute(this._menu,"popper"),W.trigger(this._element,Mi,t),this._element.focus()}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!c(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Di.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){let t=this._element;"parent"===this._config.reference?t=this._parent:c(this._config.reference)?t=h(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Li(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Ri)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Gi;if(t.classList.contains("dropstart"))return Ji;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Xi:Qi:e?Ui:Yi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(R.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...y(this._config.popperConfig,[void 0,t])}}_selectMenuItem({key:t,target:e}){const i=X.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(t=>d(t));i.length&&A(i,e,t===Pi,!i.includes(e)).focus()}static jQueryInterface(t){return this.each(function(){const e=en.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=X.find(Vi);for(const i of e){const e=en.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ni,Pi].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(qi)?this:X.prev(this,qi)[0]||X.next(this,qi)[0]||X.findOne(qi,t.delegateTarget.parentNode),o=en.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}W.on(document,Bi,qi,en.dataApiKeydownHandler),W.on(document,Bi,Ki,en.dataApiKeydownHandler),W.on(document,Wi,en.clearMenus),W.on(document,zi,en.clearMenus),W.on(document,Wi,qi,function(t){t.preventDefault(),en.getOrCreateInstance(this).toggle()}),v(en);const nn=en,sn="backdrop",on="show",rn=`mousedown.bs.${sn}`,an={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},ln={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"},cn=class extends q{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return an}static get DefaultType(){return ln}static get NAME(){return sn}show(t){if(!this._config.isVisible)return void y(t);this._append();const e=this._getElement();this._config.isAnimated&&m(e),e.classList.add(on),this._emulateAnimation(()=>{y(t)})}hide(t){this._config.isVisible?(this._getElement().classList.remove(on),this._emulateAnimation(()=>{this.dispose(),y(t)})):y(t)}dispose(){this._isAppended&&(W.off(this._element,rn),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=h(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),W.on(t,rn,()=>{y(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(t){w(t,this._getElement(),this._config.isAnimated)}},hn=".bs.focustrap",dn=`focusin${hn}`,un=`keydown.tab${hn}`,fn="backward",pn={autofocus:!0,trapElement:null},mn={autofocus:"boolean",trapElement:"element"},gn=class extends q{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return pn}static get DefaultType(){return mn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),W.off(document,hn),W.on(document,dn,t=>this._handleFocusin(t)),W.on(document,un,t=>this._handleKeydown(t)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,W.off(document,hn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=X.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===fn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?fn:"forward")}},_n=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",bn=".sticky-top",vn="padding-right",yn="margin-right",wn=class{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,vn,e=>e+t),this._setElementAttributes(_n,vn,e=>e+t),this._setElementAttributes(bn,yn,e=>e-t)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,vn),this._resetElementAttributes(_n,vn),this._resetElementAttributes(bn,yn)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)})}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&R.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const i=R.getDataAttribute(t,e);null!==i?(R.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)})}_applyManipulationCallback(t,e){if(c(t))e(t);else for(const i of X.find(t,this._element))e(i)}},An=".bs.modal",En=`hide${An}`,Cn=`hidePrevented${An}`,Tn=`hidden${An}`,On=`show${An}`,xn=`shown${An}`,kn=`resize${An}`,Ln=`click.dismiss${An}`,Sn=`mousedown.dismiss${An}`,Dn=`keydown.dismiss${An}`,$n=`click${An}.data-api`,In="modal-open",Nn="show",Pn="modal-static",jn={backdrop:!0,focus:!0,keyboard:!0},Mn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Fn extends V{constructor(t,e){super(t,e),this._dialog=X.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new wn,this._addEventListeners()}static get Default(){return jn}static get DefaultType(){return Mn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||W.trigger(this._element,On,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(In),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){this._isShown&&!this._isTransitioning&&(W.trigger(this._element,En).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Nn),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){W.off(window,An),W.off(this._dialog,An),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new cn({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new gn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=X.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),m(this._element),this._element.classList.add(Nn),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,W.trigger(this._element,xn,{relatedTarget:t})},this._dialog,this._isAnimated())}_addEventListeners(){W.on(this._element,Dn,t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),W.on(window,kn,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),W.on(this._element,Sn,t=>{W.one(this._element,Ln,e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(In),this._resetAdjustments(),this._scrollBar.reset(),W.trigger(this._element,Tn)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(W.trigger(this._element,Cn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Pn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Pn),this._queueCallback(()=>{this._element.classList.remove(Pn),this._queueCallback(()=>{this._element.style.overflowY=e},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=b()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=b()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each(function(){const i=Fn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}})}}W.on(document,$n,'[data-bs-toggle="modal"]',function(t){const e=X.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),W.one(e,On,t=>{t.defaultPrevented||W.one(e,Tn,()=>{d(this)&&this.focus()})});const i=X.findOne(".modal.show");i&&Fn.getInstance(i).hide(),Fn.getOrCreateInstance(e).toggle(this)}),Y(Fn),v(Fn);const Hn=Fn,Wn=".bs.offcanvas",Bn=".data-api",zn=`load${Wn}${Bn}`,Rn="show",qn="showing",Vn="hiding",Kn=".offcanvas.show",Qn=`show${Wn}`,Xn=`shown${Wn}`,Yn=`hide${Wn}`,Un=`hidePrevented${Wn}`,Gn=`hidden${Wn}`,Jn=`resize${Wn}`,Zn=`click${Wn}${Bn}`,ts=`keydown.dismiss${Wn}`,es={backdrop:!0,keyboard:!0,scroll:!1},is={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class ns extends V{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return es}static get DefaultType(){return is}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||W.trigger(this._element,Qn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new wn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(qn),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Rn),this._element.classList.remove(qn),W.trigger(this._element,Xn,{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(W.trigger(this._element,Yn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Vn),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Rn,Vn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new wn).reset(),W.trigger(this._element,Gn)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new cn({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():W.trigger(this._element,Un)}:null})}_initializeFocusTrap(){return new gn({trapElement:this._element})}_addEventListeners(){W.on(this._element,ts,t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():W.trigger(this._element,Un))})}static jQueryInterface(t){return this.each(function(){const e=ns.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}})}}W.on(document,Zn,'[data-bs-toggle="offcanvas"]',function(t){const e=X.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),u(this))return;W.one(e,Gn,()=>{d(this)&&this.focus()});const i=X.findOne(Kn);i&&i!==e&&ns.getInstance(i).hide(),ns.getOrCreateInstance(e).toggle(this)}),W.on(window,zn,()=>{for(const t of X.find(Kn))ns.getOrCreateInstance(t).show()}),W.on(window,Jn,()=>{for(const t of X.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&ns.getOrCreateInstance(t).hide()}),Y(ns),v(ns);const ss=ns,os={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},rs=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),as=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ls=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!rs.has(i)||Boolean(as.test(t.nodeValue)):e.filter(t=>t instanceof RegExp).some(t=>t.test(i))},cs={allowList:os,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},hs={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ds={entry:"(string|element|function|null)",selector:"(string|element)"},us=class extends q{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return cs}static get DefaultType(){return hs}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(t=>this._resolvePossibleFunction(t)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},ds)}_setContent(t,e,i){const n=X.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?c(e)?this._putElementInTemplate(h(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)ls(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return y(t,[void 0,this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}},fs=new Set(["sanitize","allowList","sanitizeFn"]),ps="fade",ms="show",gs=".tooltip-inner",_s=".modal",bs="hide.bs.modal",vs="hover",ys="focus",ws={AUTO:"auto",TOP:"top",RIGHT:b()?"left":"right",BOTTOM:"bottom",LEFT:b()?"right":"left"},As={allowList:os,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},Es={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Cs extends V{constructor(t,e){super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return As}static get DefaultType(){return Es}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),W.off(this._element.closest(_s),bs,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=W.trigger(this._element,this.constructor.eventName("show")),e=(f(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),W.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ms),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))W.on(t,"mouseover",p);this._queueCallback(()=>{W.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!W.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ms),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))W.off(t,"mouseover",p);this._activeTrigger.click=!1,this._activeTrigger[ys]=!1,this._activeTrigger[vs]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),W.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ps,ms),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ps),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new us({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[gs]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ps)}_isShown(){return this.tip&&this.tip.classList.contains(ms)}_createPopper(t){const e=y(this._config.placement,[this,t,this._element]),i=ws[e.toUpperCase()];return Li(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return y(t,[this._element,this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...y(this._config.popperConfig,[void 0,e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)W.on(this._element,this.constructor.eventName("click"),this._config.selector,t=>{this._initializeOnDelegatedTarget(t).toggle()});else if("manual"!==e){const t=e===vs?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===vs?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");W.on(this._element,t,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?ys:vs]=!0,e._enter()}),W.on(this._element,i,this._config.selector,t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?ys:vs]=e._element.contains(t.relatedTarget),e._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},W.on(this._element.closest(_s),bs,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=R.getDataAttributes(this._element);for(const t of Object.keys(e))fs.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:h(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each(function(){const e=Cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}}v(Cs);const Ts=Cs,Os=".popover-header",xs=".popover-body",ks={...Ts.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},Ls={...Ts.DefaultType,content:"(null|string|element|function)"};class Ss extends Ts{static get Default(){return ks}static get DefaultType(){return Ls}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[Os]:this._getTitle(),[xs]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each(function(){const e=Ss.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}})}}v(Ss);const Ds=Ss,$s=".bs.scrollspy",Is=`activate${$s}`,Ns=`click${$s}`,Ps=`load${$s}.data-api`,js="active",Ms="[href]",Fs=".nav-link",Hs=`${Fs}, .nav-item > ${Fs}, .list-group-item`,Ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Bs={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class zs extends V{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Ws}static get DefaultType(){return Bs}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=h(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map(t=>Number.parseFloat(t))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(W.off(this._config.target,Ns),W.on(this._config.target,Ns,Ms,t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}}))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(t=>this._observerCallback(t),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=X.find(Ms,this._config.target);for(const e of t){if(!e.hash||u(e))continue;const t=X.findOne(decodeURI(e.hash),this._element);d(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(js),this._activateParents(t),W.trigger(this._element,Is,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))X.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(js);else for(const e of X.parents(t,".nav, .list-group"))for(const t of X.prev(e,Hs))t.classList.add(js)}_clearActiveClass(t){t.classList.remove(js);const e=X.find(`${Ms}.${js}`,t);for(const t of e)t.classList.remove(js)}static jQueryInterface(t){return this.each(function(){const e=zs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}})}}W.on(window,Ps,()=>{for(const t of X.find('[data-bs-spy="scroll"]'))zs.getOrCreateInstance(t)}),v(zs);const Rs=zs,qs=".bs.tab",Vs=`hide${qs}`,Ks=`hidden${qs}`,Qs=`show${qs}`,Xs=`shown${qs}`,Ys=`click${qs}`,Us=`keydown${qs}`,Gs=`load${qs}`,Js="ArrowLeft",Zs="ArrowRight",to="ArrowUp",eo="ArrowDown",io="Home",no="End",so="active",oo="fade",ro="show",ao=".dropdown-toggle",lo=`:not(${ao})`,co='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',ho=`.nav-link${lo}, .list-group-item${lo}, [role="tab"]${lo}, ${co}`,uo=`.${so}[data-bs-toggle="tab"], .${so}[data-bs-toggle="pill"], .${so}[data-bs-toggle="list"]`;class fo extends V{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),W.on(this._element,Us,t=>this._keydown(t)))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?W.trigger(e,Vs,{relatedTarget:t}):null;W.trigger(t,Qs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(so),this._activate(X.getElementFromSelector(t)),this._queueCallback(()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),W.trigger(t,Xs,{relatedTarget:e})):t.classList.add(ro)},t,t.classList.contains(oo)))}_deactivate(t,e){t&&(t.classList.remove(so),t.blur(),this._deactivate(X.getElementFromSelector(t)),this._queueCallback(()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),W.trigger(t,Ks,{relatedTarget:e})):t.classList.remove(ro)},t,t.classList.contains(oo)))}_keydown(t){if(![Js,Zs,to,eo,io,no].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter(t=>!u(t));let i;if([io,no].includes(t.key))i=e[t.key===io?0:e.length-1];else{const n=[Zs,eo].includes(t.key);i=A(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),fo.getOrCreateInstance(i).show())}_getChildren(){return X.find(ho,this._parent)}_getActiveElem(){return this._getChildren().find(t=>this._elemIsActive(t))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=X.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=X.findOne(t,i);s&&s.classList.toggle(n,e)};n(ao,so),n(".dropdown-menu",ro),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(so)}_getInnerElement(t){return t.matches(ho)?t:X.findOne(ho,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each(function(){const e=fo.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}})}}W.on(document,Ys,co,function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),u(this)||fo.getOrCreateInstance(this).show()}),W.on(window,Gs,()=>{for(const t of X.find(uo))fo.getOrCreateInstance(t)}),v(fo);const po=fo,mo=".bs.toast",go=`mouseover${mo}`,_o=`mouseout${mo}`,bo=`focusin${mo}`,vo=`focusout${mo}`,yo=`hide${mo}`,wo=`hidden${mo}`,Ao=`show${mo}`,Eo=`shown${mo}`,Co="hide",To="show",Oo="showing",xo={animation:"boolean",autohide:"boolean",delay:"number"},ko={animation:!0,autohide:!0,delay:5e3};class Lo extends V{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ko}static get DefaultType(){return xo}static get NAME(){return"toast"}show(){W.trigger(this._element,Ao).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Co),m(this._element),this._element.classList.add(To,Oo),this._queueCallback(()=>{this._element.classList.remove(Oo),W.trigger(this._element,Eo),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(W.trigger(this._element,yo).defaultPrevented||(this._element.classList.add(Oo),this._queueCallback(()=>{this._element.classList.add(Co),this._element.classList.remove(Oo,To),W.trigger(this._element,wo)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(To),super.dispose()}isShown(){return this._element.classList.contains(To)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){W.on(this._element,go,t=>this._onInteraction(t,!0)),W.on(this._element,_o,t=>this._onInteraction(t,!1)),W.on(this._element,bo,t=>this._onInteraction(t,!0)),W.on(this._element,vo,t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each(function(){const e=Lo.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}})}}Y(Lo),v(Lo);const So={Alert:tt,Button:nt,Carousel:Ht,Collapse:te,Dropdown:nn,Modal:Hn,Offcanvas:ss,Popover:Ds,ScrollSpy:Rs,Tab:po,Toast:Lo,Tooltip:Ts};return e.default})());
|