domma-cms 1.16.1 → 1.17.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/CHANGELOG.md +10 -0
- package/admin/js/lib/context-menu-action-help.js +1 -0
- package/admin/js/lib/effects-builder.js +1 -1
- package/admin/js/lib/menu-editor-arrange.js +2 -2
- package/admin/js/lib/menu-item-help.js +1 -0
- package/admin/js/lib/scribe-model.js +1 -1
- package/admin/js/lib/shortcode-preview.js +1 -1
- package/admin/js/lib/shortcode-registry.js +1 -1
- package/admin/js/templates/context-menu-editor.html +20 -16
- package/admin/js/templates/docs/usage-navigation.html +7 -0
- package/admin/js/templates/menu-editor.html +104 -53
- package/admin/js/templates/theme.html +2 -0
- package/admin/js/views/context-menu-editor.js +17 -13
- package/admin/js/views/menu-editor.js +23 -22
- package/admin/js/views/menu-locations.js +3 -2
- package/docs/DommaFeatures.md +2 -2
- package/docs/screenshots/context-menu-action-help.png +0 -0
- package/docs/screenshots/context-menu-help-mobile.png +0 -0
- package/docs/screenshots/menu-option-help.png +0 -0
- package/package.json +1 -1
- package/public/css/menu-cards.css +1 -1
- package/public/js/effects.js +1 -1
- package/public/js/menu-cards.mjs +4 -4
- package/public/js/menu-look.mjs +1 -1
- package/public/js/scribe-style.mjs +1 -1
- package/public/js/site.js +1 -1
- package/public/js/text-style.mjs +1 -1
- package/server/services/menus.js +1 -1
- package/server/templates/page.html +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
@media(min-width:993px){#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav{gap:2px;padding:5px;border-radius:999px;background:color-mix(in srgb,currentColor 5%,transparent);border:1px solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:var(--dm-shadow-sm);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link,#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav>li>.navbar-dropdown-toggle{border-radius:999px;padding:.45rem .95rem;transition:background-color .15s ease,color .15s ease}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>.navbar-link:not([data-menu-item-hover]):hover,#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>.navbar-dropdown-toggle:not([data-menu-item-hover]):hover,#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>.navbar-dropdown.open>.navbar-dropdown-toggle{background:color-mix(in srgb,currentColor 10%,transparent)!important;color:inherit!important;text-decoration:none!important}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]){background:color-mix(in srgb,currentColor 14%,transparent)!important;box-shadow:none!important}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]):after{display:none!important}}@media(min-width:993px){#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle):not([data-menu-item-hover]):hover,#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>.navbar-dropdown.open>.navbar-dropdown-toggle{background:transparent!important;color:inherit!important;text-decoration:none!important}#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline):not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]){background:transparent!important;box-shadow:none!important}#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]):after{display:none!important}#site-navbar .navbar-nav:has(>.dm-nav-glider){position:relative}#site-navbar .navbar-nav>li:not(.dm-nav-glider){position:relative;z-index:1}#site-navbar .navbar-nav>.dm-nav-glider{position:absolute;left:0;top:0;width:var(--dm-glide-w, 0px);height:var(--dm-glide-h, 0px);transform:translate(var(--dm-glide-x, 0px),var(--dm-glide-y, 0px));opacity:var(--dm-glide-o, 0);pointer-events:none;list-style:none;z-index:0;transition:transform .32s cubic-bezier(.2,.8,.2,1),width .32s cubic-bezier(.2,.8,.2,1),opacity .2s ease}#site-navbar .navbar-nav>.dm-nav-glider.is-jump{transition:opacity .2s ease}#site-navbar.dm-nav-bar-segmented:not(.dm-nav-vertical) .navbar-nav{background:color-mix(in srgb,currentColor 8%,transparent)}#site-navbar.dm-nav-bar-segmented .navbar-nav>.dm-nav-glider{border-radius:999px;background:color-mix(in srgb,var(--dm-primary) 14%,var(--dm-surface));box-shadow:var(--dm-shadow-sm),inset 0 0 0 1px color-mix(in srgb,var(--dm-primary) 22%,transparent)}#site-navbar.dm-nav-bar-underline .navbar-nav>.dm-nav-glider{border-radius:2px;background:var(--dm-primary)}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav{align-items:flex-end}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){transform:scale(var(--dm-dock-s, 1));transform-origin:50% 85%;transition:transform .18s ease-out}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle) svg{width:1.15em;height:1.15em}#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav{border-color:color-mix(in srgb,var(--dm-primary) 70%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--dm-primary) 25%,transparent),0 0 18px color-mix(in srgb,var(--dm-primary) 35%,transparent),inset 0 0 12px color-mix(in srgb,var(--dm-primary) 12%,transparent)!important;animation:dm-nav-neon 3.2s ease-in-out infinite}#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle):hover,#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link.active{color:var(--dm-primary)!important;text-shadow:0 0 10px color-mix(in srgb,var(--dm-primary) 60%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dm-primary) 55%,transparent),0 0 12px color-mix(in srgb,var(--dm-primary) 30%,transparent)!important}}@keyframes dm-nav-neon{50%{filter:brightness(1.12) saturate(1.2)}}@media(prefers-reduced-motion:reduce){#site-navbar .navbar-nav>.dm-nav-glider{transition:none}#site-navbar.dm-nav-bar-neon .navbar-nav{animation:none}}html.dm-reduced-motion #site-navbar .navbar-nav>.dm-nav-glider{transition:none}html.dm-reduced-motion #site-navbar.dm-nav-bar-neon .navbar-nav{animation:none}@media(min-width:993px){#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-container,#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle),#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-brand{transition:padding .25s ease,font-size .25s ease,min-height .25s ease}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-container{padding-top:.25rem;padding-bottom:.25rem;min-height:0}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){padding-top:.3rem;padding-bottom:.3rem}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-brand{font-size:.9em}}@media(min-width:993px){#site-navbar.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand:has(img,svg,[data-icon]){padding-left:.55rem}#site-navbar.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand{display:inline-flex;align-items:center;padding:.3rem 1.1rem;border-radius:999px;background:color-mix(in srgb,currentColor 5%,transparent);border:1px solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:var(--dm-shadow-sm);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}}@media(min-width:993px){#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical){position:fixed!important;top:0;left:0;right:0;background:transparent!important;border-color:transparent!important;border-bottom-width:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav,#site-navbar.dm-nav-no-strip.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand{background:color-mix(in srgb,var(--dm-surface) 80%,transparent);border-color:color-mix(in srgb,var(--dm-text) 10%,transparent);box-shadow:var(--dm-shadow-md);color:var(--dm-text)}#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link,#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav>li>.navbar-dropdown-toggle,#site-navbar.dm-nav-no-strip.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand :is(a,.navbar-brand-text){color:var(--dm-text)}body.dm-nav-floating-pills>.site-main{padding-top:calc(2rem + var(--dm-nav-float-h, 76px))}}#site-navbar .dm-nc-card .dm-nc-link{display:flex!important;align-items:flex-start;gap:.8rem;white-space:normal;text-decoration:none}#site-navbar .dm-nc-tile{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:.65rem;color:var(--dm-nc-tone, var(--dm-primary));background:color-mix(in srgb,var(--dm-nc-tone, var(--dm-primary)) 13%,var(--dm-surface));border:1px solid color-mix(in srgb,var(--dm-nc-tone, var(--dm-primary)) 28%,transparent)}#site-navbar .dm-nc-tile svg{width:1.1rem;height:1.1rem;margin:0!important}#site-navbar .dm-nc-icon{flex:0 0 auto;margin:.15rem 0 0!important}#site-navbar .dm-nc-card .dm-nc-link:not(:has(.dm-nc-desc)){align-items:center}#site-navbar .dm-nc-body{display:flex;flex-direction:column;gap:.15rem;min-width:0}#site-navbar .dm-nc-title{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--dm-text);line-height:1.3}#site-navbar .dm-nc-desc{font-size:.82rem;font-weight:400;line-height:1.4;color:var(--dm-text-muted)}#site-navbar .dm-nc-card .dm-nc-skip,#site-navbar .dm-nc-card [hidden]{display:none!important}@keyframes dm-nc-in{0%{clip-path:inset(0 0 calc(100% - 1.5rem) 0 round 18px);transform:translate(calc(-50% + var(--dm-nc-shift, 0px))) translateY(-4px)}to{clip-path:inset(-20px -20px -40px -20px round 18px);transform:translate(calc(-50% + var(--dm-nc-shift, 0px)))}}@media(min-width:993px){#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown>.dm-nc-card{left:50%;right:auto;transform:translate(calc(-50% + var(--dm-nc-shift, 0px)));margin-top:.75rem;padding:1.1rem;min-width:0;width:max-content;max-width:calc(100vw - 2rem);max-height:none!important;overflow:visible!important;border-radius:18px;border:1px solid var(--dm-border);background:var(--dm-surface);color:var(--dm-text);box-shadow:var(--dm-shadow-xl);column-gap:.5rem;row-gap:.25rem;grid-template-columns:repeat(var(--dm-nc-cols, 2),minmax(13rem,16.5rem));align-items:start}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown>.dm-nc-card.dm-nc-has-feature{grid-template-columns:repeat(var(--dm-nc-cols, 2),minmax(13rem,16.5rem)) minmax(15rem,17rem)}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown.open>.dm-nc-card{display:grid}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown.open>.dm-nc-card:not([data-nc-morph]){animation:dm-nc-in .22s cubic-bezier(.2,.8,.2,1)}#site-navbar:not(.dm-nav-vertical) .dm-nc-card:before{content:"";position:absolute;top:-7px;left:var(--dm-nc-caret, 50%);width:12px;height:12px;margin-left:-6px;background:var(--dm-surface);border-top:1px solid var(--dm-border);border-left:1px solid var(--dm-border);transform:rotate(45deg);border-top-left-radius:3px}#site-navbar:not(.dm-nav-vertical) .dm-nc-card:after{content:"";position:absolute;left:0;right:0;top:-.85rem;height:.85rem}#site-navbar:not(.dm-nav-vertical) .dm-nc-card>li{grid-row:var(--dm-nc-r, auto);grid-column:var(--dm-nc-c, auto);list-style:none;min-width:0}#site-navbar .dm-nc-card .dm-nc-link{padding:.6rem .7rem;border-radius:12px;font-size:var(--dm-font-size-sm);background:transparent;transition:background-color .15s ease}#site-navbar .dm-nc-card .dm-nc-link:hover,#site-navbar .dm-nc-card .dm-nc-link:focus-visible{background:var(--dm-hover-bg)!important;color:var(--dm-text)!important;border-radius:12px;text-decoration:none!important}#site-navbar .dm-nc-card>.dm-nc-head{--dm-nc-r: 1;--dm-nc-c: 1 / span var(--dm-nc-cols, 2);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.15rem .7rem .45rem}#site-navbar .dm-nc-eyebrow{font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-more{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--dm-font-size-sm);font-weight:600;color:var(--dm-text);text-decoration:none;white-space:nowrap}#site-navbar .dm-nc-more:hover .dm-nc-arrow{transform:translate(2px)}#site-navbar .dm-nc-arrow{transition:transform .15s ease;display:inline-flex}#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle{pointer-events:none;padding:.3rem .7rem;font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted);background:none!important}#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle .navbar-caret,#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle svg{display:none}#site-navbar .dm-nc-card .dm-nc-group>.navbar-dropdown-menu{display:block;position:static;margin:0;padding:0;min-width:0;border:0;box-shadow:none;background:none}#site-navbar .dm-nc-card>.dm-nc-feature{--dm-nc-c: calc(var(--dm-nc-cols, 2) + 1);--dm-nc-r: 1 / span var(--dm-nc-rows, 1);align-self:stretch;margin-left:.5rem}#site-navbar .dm-nc-feature-box{display:flex;flex-direction:column;gap:.55rem;height:100%;padding:1rem 1.1rem;border-radius:14px}#site-navbar .dm-nc-feature--dark .dm-nc-feature-box{color:#f5f3ff;background:radial-gradient(120% 80% at 100% 100%,color-mix(in srgb,var(--dm-primary) 45%,transparent),transparent 60%),linear-gradient(160deg,#1d1a33,#0e0d1c)}#site-navbar .dm-nc-feature--accent .dm-nc-feature-box{color:var(--dm-primary-text);background:var(--dm-primary)}#site-navbar .dm-nc-feature--light .dm-nc-feature-box{color:var(--dm-text);background:color-mix(in srgb,var(--dm-text) 4%,var(--dm-surface));border:1px solid var(--dm-border)}#site-navbar .dm-nc-feature-eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;opacity:.75}#site-navbar .dm-nc-feature-title{font-size:1.05rem}#site-navbar .dm-nc-points{margin:.1rem 0 0;display:flex;flex-direction:column;gap:.45rem;font-size:.85rem}#site-navbar .dm-nc-point{display:flex;gap:.5rem;align-items:flex-start;line-height:1.35}#site-navbar .dm-nc-point-tick{flex:0 0 auto;width:1rem;height:1rem;margin-top:.1rem;border-radius:50%;border:1.5px solid currentColor;opacity:.85;position:relative}#site-navbar .dm-nc-point-tick:after{content:"";position:absolute;left:.27rem;top:.13rem;width:.25rem;height:.45rem;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}#site-navbar .dm-nc-feature-btn{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .9rem;border-radius:999px;font-size:var(--dm-font-size-sm);font-weight:600;text-decoration:none;background:#fff;color:#15131f}#site-navbar .dm-nc-feature--light .dm-nc-feature-btn{background:var(--dm-primary);color:var(--dm-primary-text)}#site-navbar .dm-nc-card>.dm-nc-chips{--dm-nc-c: 1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.6rem -1.1rem -1.1rem;padding:.75rem 1.4rem;border-top:1px solid var(--dm-border);border-radius:0 0 18px 18px;background:color-mix(in srgb,var(--dm-text) 3%,var(--dm-surface))}}#site-navbar .dm-nc-chips-label{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-chips-row{display:flex;flex-wrap:wrap;gap:.4rem}#site-navbar .dm-nc-card .dm-nc-chip{display:inline-flex!important;align-items:center;gap:.35rem;padding:.22rem .7rem!important;border-radius:999px!important;border:1px solid var(--dm-border);background:var(--dm-surface);color:var(--dm-text-secondary);font-size:.8rem;white-space:nowrap}#site-navbar .dm-nc-card .dm-nc-chip svg{width:.85rem;height:.85rem;margin:0!important}#site-navbar .dm-nc-card .dm-nc-chip:hover{background:var(--dm-hover-bg)!important;color:var(--dm-text)!important;border-radius:999px!important}@media(max-width:992px){#site-navbar .dm-nc-card .dm-nc-link{padding:.55rem 1rem}#site-navbar .dm-nc-tile{width:2rem;height:2rem;border-radius:.55rem}#site-navbar .dm-nc-card>.dm-nc-head{display:flex;justify-content:space-between;padding:.5rem 1rem .25rem}#site-navbar .dm-nc-eyebrow,#site-navbar .dm-nc-chips-label{font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-more{font-size:.8rem;font-weight:600}#site-navbar .dm-nc-card>.dm-nc-feature,#site-navbar .dm-nc-card>.dm-nc-chips{padding:.5rem 1rem}#site-navbar .dm-nc-feature-box{padding:.75rem .9rem;border-radius:12px;display:flex;flex-direction:column;gap:.4rem}#site-navbar .dm-nc-feature--dark .dm-nc-feature-box{color:#f5f3ff;background:linear-gradient(160deg,#1d1a33,#0e0d1c)}#site-navbar .dm-nc-feature--accent .dm-nc-feature-box{color:var(--dm-primary-text);background:var(--dm-primary)}#site-navbar .dm-nc-feature--light .dm-nc-feature-box{background:var(--dm-hover-bg)}#site-navbar .dm-nc-feature-eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;opacity:.75}#site-navbar .dm-nc-feature-title{font-size:1rem}#site-navbar .dm-nc-points{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem}#site-navbar .dm-nc-point-tick{display:none}#site-navbar .dm-nc-feature-btn{font-weight:600;text-decoration:underline;color:inherit}#site-navbar .dm-nc-chips{display:flex;flex-direction:column;gap:.4rem}}
|
|
1
|
+
@media(min-width:993px){#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav{gap:2px;padding:5px;border-radius:999px;background:color-mix(in srgb,currentColor 5%,transparent);border:1px solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:var(--dm-shadow-sm);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link,#site-navbar.dm-nav-tray:not(.dm-nav-vertical) .navbar-nav>li>.navbar-dropdown-toggle{border-radius:999px;padding:.45rem .95rem;transition:background-color .15s ease,color .15s ease}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>.navbar-link:not([data-menu-item-hover]):hover,#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>.navbar-dropdown-toggle:not([data-menu-item-hover]):hover,#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>.navbar-dropdown.open>.navbar-dropdown-toggle{background:color-mix(in srgb,currentColor 10%,transparent)!important;color:inherit!important;text-decoration:none!important}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]){background:color-mix(in srgb,currentColor 14%,transparent)!important;box-shadow:none!important}#site-navbar.dm-nav-bar-pill:not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]):after{display:none!important}}@media(min-width:993px){#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle):not([data-menu-item-hover]):hover,#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-hover]) .navbar-nav>.navbar-dropdown.open>.navbar-dropdown-toggle{background:transparent!important;color:inherit!important;text-decoration:none!important}#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline):not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]){background:transparent!important;box-shadow:none!important}#site-navbar:is(.dm-nav-bar-segmented,.dm-nav-bar-underline,.dm-nav-bar-dock,.dm-nav-bar-neon):not(.dm-nav-vertical):not([data-menu-active]) .navbar-nav>li>.navbar-link.active:not([data-menu-item-active]):after{display:none!important}#site-navbar .navbar-nav:has(>.dm-nav-glider){position:relative}#site-navbar .navbar-nav>li:not(.dm-nav-glider){position:relative;z-index:1}#site-navbar .navbar-nav>.dm-nav-glider{position:absolute;left:0;top:0;width:var(--dm-glide-w, 0px);height:var(--dm-glide-h, 0px);transform:translate(var(--dm-glide-x, 0px),var(--dm-glide-y, 0px));opacity:var(--dm-glide-o, 0);pointer-events:none;list-style:none;z-index:0;transition:transform .32s cubic-bezier(.2,.8,.2,1),width .32s cubic-bezier(.2,.8,.2,1),opacity .2s ease}#site-navbar .navbar-nav>.dm-nav-glider.is-jump{transition:opacity .2s ease}#site-navbar.dm-nav-bar-segmented:not(.dm-nav-vertical) .navbar-nav{background:color-mix(in srgb,currentColor 8%,transparent)}#site-navbar.dm-nav-bar-segmented .navbar-nav>.dm-nav-glider{border-radius:999px;background:color-mix(in srgb,var(--dm-primary) 14%,var(--dm-surface));box-shadow:var(--dm-shadow-sm),inset 0 0 0 1px color-mix(in srgb,var(--dm-primary) 22%,transparent)}#site-navbar.dm-nav-bar-underline .navbar-nav>.dm-nav-glider{border-radius:2px;background:var(--dm-primary)}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav{align-items:flex-end}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){transform:scale(var(--dm-dock-s, 1));transform-origin:50% 85%;transition:transform .18s ease-out}#site-navbar.dm-nav-bar-dock:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle) svg{width:1.15em;height:1.15em}#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav{border-color:color-mix(in srgb,var(--dm-primary) 70%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--dm-primary) 25%,transparent),0 0 18px color-mix(in srgb,var(--dm-primary) 35%,transparent),inset 0 0 12px color-mix(in srgb,var(--dm-primary) 12%,transparent)!important;animation:dm-nav-neon 3.2s ease-in-out infinite}#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle):hover,#site-navbar.dm-nav-bar-neon:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link.active{color:var(--dm-primary)!important;text-shadow:0 0 10px color-mix(in srgb,var(--dm-primary) 60%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dm-primary) 55%,transparent),0 0 12px color-mix(in srgb,var(--dm-primary) 30%,transparent)!important}}@keyframes dm-nav-neon{50%{filter:brightness(1.12) saturate(1.2)}}@media(prefers-reduced-motion:reduce){#site-navbar .navbar-nav>.dm-nav-glider{transition:none}#site-navbar.dm-nav-bar-neon .navbar-nav{animation:none}}html.dm-reduced-motion #site-navbar .navbar-nav>.dm-nav-glider{transition:none}html.dm-reduced-motion #site-navbar.dm-nav-bar-neon .navbar-nav{animation:none}@media(min-width:993px){#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-container,#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle),#site-navbar.dm-nav-shrinks:not(.dm-nav-vertical) .navbar-brand{transition:padding .25s ease,font-size .25s ease,min-height .25s ease}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-container{padding-top:.25rem;padding-bottom:.25rem;min-height:0}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){padding-top:.3rem;padding-bottom:.3rem}#site-navbar.dm-nav-shrinks.is-shrunk:not(.dm-nav-vertical) .navbar-brand{font-size:.9em}}#site-navbar.dm-nav-icons .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle)>svg:not(.navbar-caret){color:var(--dm-nav-ic, currentColor)!important}@media(min-width:993px){#site-navbar[data-nav-fit]:not([data-nav-fit="0"]) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){padding-left:.55rem!important;padding-right:.55rem!important}#site-navbar:is([data-nav-fit="2"],[data-nav-fit="3"],[data-nav-fit="4"],[data-nav-fit="5"],[data-nav-fit="6"]) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){font-size:.92em!important;padding-left:.45rem!important;padding-right:.45rem!important}#site-navbar:is([data-nav-fit="3"],[data-nav-fit="4"],[data-nav-fit="5"],[data-nav-fit="6"]) .navbar-brand:has(.navbar-brand-logo) .navbar-brand-text{display:none!important}#site-navbar:is([data-nav-fit="4"],[data-nav-fit="5"],[data-nav-fit="6"]) .navbar-nav>li>.navbar-dropdown-toggle>.navbar-caret{display:none!important}#site-navbar:is([data-nav-fit="5"],[data-nav-fit="6"]) .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle):not(.dm-nav-pill)>svg:not(.navbar-caret){display:none!important}#site-navbar[data-nav-fit="6"] .navbar-nav>li>:is(.navbar-link,.navbar-dropdown-toggle){font-size:.86em!important;padding-left:.32rem!important;padding-right:.32rem!important}}@media(min-width:993px){#site-navbar.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand:has(img,svg,[data-icon]){padding-left:.55rem}#site-navbar.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand{display:inline-flex;align-items:center;padding:.3rem 1.1rem;border-radius:999px;background:color-mix(in srgb,currentColor 5%,transparent);border:1px solid color-mix(in srgb,currentColor 12%,transparent);box-shadow:var(--dm-shadow-sm);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}}@media(min-width:993px){#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical){position:fixed!important;top:0;left:0;right:0;background:transparent!important;border-color:transparent!important;border-bottom-width:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav,#site-navbar.dm-nav-no-strip.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand{background:color-mix(in srgb,var(--dm-surface) 80%,transparent);border-color:color-mix(in srgb,var(--dm-text) 10%,transparent);box-shadow:var(--dm-shadow-md);color:var(--dm-text)}#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav>li>.navbar-link,#site-navbar.dm-nav-no-strip:not(.dm-nav-vertical) .navbar-nav>li>.navbar-dropdown-toggle,#site-navbar.dm-nav-no-strip.dm-nav-brand-pill:not(.dm-nav-vertical) .navbar-brand :is(a,.navbar-brand-text){color:var(--dm-text)}body.dm-nav-floating-pills>.site-main{padding-top:calc(2rem + var(--dm-nav-float-h, 76px))}}#site-navbar .dm-nc-card .dm-nc-link{display:flex!important;align-items:flex-start;gap:.8rem;white-space:normal;text-decoration:none}#site-navbar .dm-nc-tile{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:.65rem;color:var(--dm-nc-tone, var(--dm-primary));background:color-mix(in srgb,var(--dm-nc-tone, var(--dm-primary)) 13%,var(--dm-surface));border:1px solid color-mix(in srgb,var(--dm-nc-tone, var(--dm-primary)) 28%,transparent)}#site-navbar .dm-nc-tile svg{width:1.1rem;height:1.1rem;margin:0!important}#site-navbar .dm-nc-icon{flex:0 0 auto;margin:.15rem 0 0!important}#site-navbar .dm-nc-card .dm-nc-link:not(:has(.dm-nc-desc)){align-items:center}#site-navbar .dm-nc-body{display:flex;flex-direction:column;gap:.15rem;min-width:0}#site-navbar .dm-nc-title{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--dm-text);line-height:1.3}#site-navbar .dm-nc-desc{font-size:.82rem;font-weight:400;line-height:1.4;color:var(--dm-text-muted)}#site-navbar .dm-nc-card .dm-nc-skip,#site-navbar .dm-nc-card [hidden]{display:none!important}@keyframes dm-nc-in{0%{clip-path:inset(0 0 calc(100% - 1.5rem) 0 round 18px);transform:translate(calc(-50% + var(--dm-nc-shift, 0px))) translateY(-4px)}to{clip-path:inset(-20px -20px -40px -20px round 18px);transform:translate(calc(-50% + var(--dm-nc-shift, 0px)))}}@media(min-width:993px){#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown>.dm-nc-card{left:50%;right:auto;transform:translate(calc(-50% + var(--dm-nc-shift, 0px)));margin-top:.75rem;padding:1.1rem;min-width:0;width:max-content;max-width:calc(100vw - 2rem);max-height:none!important;overflow:visible!important;border-radius:18px;border:1px solid var(--dm-border);background:var(--dm-surface);color:var(--dm-text);box-shadow:var(--dm-shadow-xl);column-gap:.5rem;row-gap:.25rem;grid-template-columns:repeat(var(--dm-nc-cols, 2),minmax(13rem,16.5rem));align-items:start}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown>.dm-nc-card.dm-nc-has-feature{grid-template-columns:repeat(var(--dm-nc-cols, 2),minmax(13rem,16.5rem)) minmax(15rem,17rem)}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown.open>.dm-nc-card{display:grid}#site-navbar:not(.dm-nav-vertical) .navbar-nav>.navbar-dropdown.open>.dm-nc-card:not([data-nc-morph]){animation:dm-nc-in .22s cubic-bezier(.2,.8,.2,1)}#site-navbar:not(.dm-nav-vertical) .dm-nc-card:before{content:"";position:absolute;top:-7px;left:var(--dm-nc-caret, 50%);width:12px;height:12px;margin-left:-6px;background:var(--dm-surface);border-top:1px solid var(--dm-border);border-left:1px solid var(--dm-border);transform:rotate(45deg);border-top-left-radius:3px}#site-navbar:not(.dm-nav-vertical) .dm-nc-card:after{content:"";position:absolute;left:0;right:0;top:-.85rem;height:.85rem}#site-navbar:not(.dm-nav-vertical) .dm-nc-card>li{grid-row:var(--dm-nc-r, auto);grid-column:var(--dm-nc-c, auto);list-style:none;min-width:0}#site-navbar .dm-nc-card .dm-nc-link{padding:.6rem .7rem;border-radius:12px;font-size:var(--dm-font-size-sm);background:transparent;transition:background-color .15s ease}#site-navbar .dm-nc-card .dm-nc-link:hover,#site-navbar .dm-nc-card .dm-nc-link:focus-visible{background:var(--dm-hover-bg)!important;color:var(--dm-text)!important;border-radius:12px;text-decoration:none!important}#site-navbar .dm-nc-card>.dm-nc-head{--dm-nc-r: 1;--dm-nc-c: 1 / span var(--dm-nc-cols, 2);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.15rem .7rem .45rem}#site-navbar .dm-nc-eyebrow{font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-more{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--dm-font-size-sm);font-weight:600;color:var(--dm-text);text-decoration:none;white-space:nowrap}#site-navbar .dm-nc-more:hover .dm-nc-arrow{transform:translate(2px)}#site-navbar .dm-nc-arrow{transition:transform .15s ease;display:inline-flex}#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle{pointer-events:none;padding:.3rem .7rem;font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted);background:none!important}#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle .navbar-caret,#site-navbar .dm-nc-card .dm-nc-group>.navbar-submenu-toggle svg{display:none}#site-navbar .dm-nc-card .dm-nc-group>.navbar-dropdown-menu{display:block;position:static;margin:0;padding:0;min-width:0;border:0;box-shadow:none;background:none}#site-navbar .dm-nc-card>.dm-nc-feature{--dm-nc-c: calc(var(--dm-nc-cols, 2) + 1);--dm-nc-r: 1 / span var(--dm-nc-rows, 1);align-self:stretch;margin-left:.5rem}#site-navbar .dm-nc-feature-box{display:flex;flex-direction:column;gap:.55rem;height:100%;padding:1rem 1.1rem;border-radius:14px}#site-navbar .dm-nc-feature--dark .dm-nc-feature-box{color:#f5f3ff;background:radial-gradient(120% 80% at 100% 100%,color-mix(in srgb,var(--dm-primary) 45%,transparent),transparent 60%),linear-gradient(160deg,#1d1a33,#0e0d1c)}#site-navbar .dm-nc-feature--accent .dm-nc-feature-box{color:var(--dm-primary-text);background:var(--dm-primary)}#site-navbar .dm-nc-feature--light .dm-nc-feature-box{color:var(--dm-text);background:color-mix(in srgb,var(--dm-text) 4%,var(--dm-surface));border:1px solid var(--dm-border)}#site-navbar .dm-nc-feature-eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;opacity:.75}#site-navbar .dm-nc-feature-title{font-size:1.05rem}#site-navbar .dm-nc-points{margin:.1rem 0 0;display:flex;flex-direction:column;gap:.45rem;font-size:.85rem}#site-navbar .dm-nc-point{display:flex;gap:.5rem;align-items:flex-start;line-height:1.35}#site-navbar .dm-nc-point-tick{flex:0 0 auto;width:1rem;height:1rem;margin-top:.1rem;border-radius:50%;border:1.5px solid currentColor;opacity:.85;position:relative}#site-navbar .dm-nc-point-tick:after{content:"";position:absolute;left:.27rem;top:.13rem;width:.25rem;height:.45rem;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}#site-navbar .dm-nc-feature-btn{margin-top:auto;align-self:flex-start;display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .9rem;border-radius:999px;font-size:var(--dm-font-size-sm);font-weight:600;text-decoration:none;background:#fff;color:#15131f}#site-navbar .dm-nc-feature--light .dm-nc-feature-btn{background:var(--dm-primary);color:var(--dm-primary-text)}#site-navbar .dm-nc-card>.dm-nc-chips{--dm-nc-c: 1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.6rem -1.1rem -1.1rem;padding:.75rem 1.4rem;border-top:1px solid var(--dm-border);border-radius:0 0 18px 18px;background:color-mix(in srgb,var(--dm-text) 3%,var(--dm-surface))}}#site-navbar .dm-nc-chips-label{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-chips-row{display:flex;flex-wrap:wrap;gap:.4rem}#site-navbar .dm-nc-card .dm-nc-chip{display:inline-flex!important;align-items:center;gap:.35rem;padding:.22rem .7rem!important;border-radius:999px!important;border:1px solid var(--dm-border);background:var(--dm-surface);color:var(--dm-text-secondary);font-size:.8rem;white-space:nowrap}#site-navbar .dm-nc-card .dm-nc-chip svg{width:.85rem;height:.85rem;margin:0!important}#site-navbar .dm-nc-card .dm-nc-chip:hover{background:var(--dm-hover-bg)!important;color:var(--dm-text)!important;border-radius:999px!important}@media(max-width:992px){#site-navbar .dm-nc-card .dm-nc-link{padding:.55rem 1rem}#site-navbar .dm-nc-tile{width:2rem;height:2rem;border-radius:.55rem}#site-navbar .dm-nc-card>.dm-nc-head{display:flex;justify-content:space-between;padding:.5rem 1rem .25rem}#site-navbar .dm-nc-eyebrow,#site-navbar .dm-nc-chips-label{font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--dm-text-muted)}#site-navbar .dm-nc-more{font-size:.8rem;font-weight:600}#site-navbar .dm-nc-card>.dm-nc-feature,#site-navbar .dm-nc-card>.dm-nc-chips{padding:.5rem 1rem}#site-navbar .dm-nc-feature-box{padding:.75rem .9rem;border-radius:12px;display:flex;flex-direction:column;gap:.4rem}#site-navbar .dm-nc-feature--dark .dm-nc-feature-box{color:#f5f3ff;background:linear-gradient(160deg,#1d1a33,#0e0d1c)}#site-navbar .dm-nc-feature--accent .dm-nc-feature-box{color:var(--dm-primary-text);background:var(--dm-primary)}#site-navbar .dm-nc-feature--light .dm-nc-feature-box{background:var(--dm-hover-bg)}#site-navbar .dm-nc-feature-eyebrow{font-size:.68rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;opacity:.75}#site-navbar .dm-nc-feature-title{font-size:1rem}#site-navbar .dm-nc-points{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem}#site-navbar .dm-nc-point-tick{display:none}#site-navbar .dm-nc-feature-btn{font-weight:600;text-decoration:underline;color:inherit}#site-navbar .dm-nc-chips{display:flex;flex-direction:column;gap:.4rem}}
|
package/public/js/effects.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";Promise.all([fetch("/api/effects/settings").then(function(g){return g.json()}),import("/public/js/scribe-style.mjs?v=20261013-cms-fonts")]).then(function(g){var w=g[0],F=g[1].buildScribeStyle,q=g[1].loadScribeFont,C=w.respectMotion!==!1,R=w.defaultDuration||600,Y=w.defaultAnimation||"fade",N=w.defaultThreshold!=null?w.defaultThreshold:.1,p=C&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,m=document.querySelector(".page-body");if(!m)return;var A=m.querySelector?m.querySelector(".dm-fx-demo-controls"):null;if(A){A.hidden=!1;var k=A.querySelector("[data-fx-demo-status]"),M=A.querySelector("[data-fx-demo-play]");k.textContent=p?"Animations are disabled by your Reduce motion preference. The demos show static content.":"Animations are enabled. Scroll to each demo to see it, or replay the page.",M.textContent=p?"Enable animations on this site":"Replay demos",M.addEventListener("click",function(){if(p)try{localStorage.setItem("domma:reduced_motion","false")}catch{k.textContent="Your browser blocked saving the motion preference. Use its accessibility settings to allow animations.";return}window.location.reload()})}function r(t,e){return t.getAttribute("data-fx-"+e)}function i(t,e,n){var a=r(t,e),o=a!==null?parseFloat(a):NaN;return Number.isFinite(o)?o:n}function x(t,e,n){var a=r(t,e);return a===null?n:a==="true"||a==="1"}function I(t,e,n){var a=new IntersectionObserver(function(o){o[0].isIntersecting&&(a.unobserve(t),n())},{threshold:e});a.observe(t)}m.querySelectorAll(".dm-fx-reveal").forEach(function(t){var e=r(t,"animation")||Y,n=i(t,"duration",R),a=i(t,"delay",0),o=i(t,"threshold",N),d=x(t,"once",!0);p||(t.style.opacity="0",t.style.transition="none",e==="slide-up"?t.style.transform="translateY(30px)":e==="slide-down"?t.style.transform="translateY(-30px)":e==="zoom"?t.style.transform="scale(0.85)":e==="flip"&&(t.style.transform="rotateY(90deg)"),requestAnimationFrame(function(){requestAnimationFrame(function(){t.style.transition="opacity "+n+"ms ease "+a+"ms, transform "+n+"ms ease "+a+"ms";var f=new IntersectionObserver(function(c){c.forEach(function(l){l.isIntersecting?(t.style.opacity="1",t.style.transform="",d&&f.unobserve(t)):d||(t.style.opacity="0",e==="slide-up"?t.style.transform="translateY(30px)":e==="slide-down"?t.style.transform="translateY(-30px)":e==="zoom"?t.style.transform="scale(0.85)":e==="flip"?t.style.transform="rotateY(90deg)":t.style.transform="")})},{threshold:o});f.observe(t)})}))}),m.querySelectorAll(".dm-fx-counter").forEach(function(t){var e=i(t,"to",0),n=i(t,"from",0),a=i(t,"duration",2e3),o=r(t,"prefix")||"",d=r(t,"suffix")||"",f=i(t,"decimals",0),c=r(t,"separator")||"";function l(v){var u=v.toFixed(f);if(c){var y=u.split(".");y[0]=y[0].replace(/\B(?=(\d{3})+(?!\d))/g,c),u=y.join(".")}return o+u+d}if(p){t.textContent=l(e);return}I(t,.5,function(){var v=null;requestAnimationFrame(function u(y){v||(v=y);var S=Math.min((y-v)/a,1),E=1-Math.pow(1-S,3);t.textContent=l(n+(e-n)*E),S<1&&requestAnimationFrame(u)})})}),p||m.querySelectorAll(".dm-fx-scramble").forEach(function(t){var e=i(t,"speed",50),n=t.textContent,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&",o=0;I(t,.3,function(){var d=setInterval(function(){for(var f="",c=0;c<n.length;c++)c<o||n[c]===" "?f+=n[c]:f+=a[Math.floor(Math.random()*a.length)];t.textContent=f,o<n.length?o++:clearInterval(d)},e)})}),p||m.querySelectorAll(".dm-fx-shake").forEach(function(t){var e=i(t,"intensity",5),n=i(t,"duration",500),a=r(t,"direction")||"horizontal",o=a==="vertical"?"translateY":"translateX";t.animate([{transform:o+"(0)"},{transform:o+"(-"+e+"px)"},{transform:o+"("+e+"px)"},{transform:o+"(-"+e+"px)"},{transform:o+"("+e+"px)"},{transform:o+"(0)"}],{duration:n,easing:"ease-in-out"})}),m.querySelectorAll(".dm-fx-ripple").forEach(function(t){t.style.position="relative",t.style.overflow="hidden",t.addEventListener("click",function(e){var n=r(t,"colour")||"rgba(255,255,255,0.3)",a=i(t,"duration",600),o=t.getBoundingClientRect(),d=Math.max(o.width,o.height)*2,f=document.createElement("span");f.style.cssText="position:absolute;border-radius:50%;pointer-events:none;width:"+d+"px;height:"+d+"px;left:"+(e.clientX-o.left-d/2)+"px;top:"+(e.clientY-o.top-d/2)+"px;background:"+n+";transform:scale(0);opacity:1;transition:transform "+a+"ms ease,opacity "+a+"ms ease;",t.appendChild(f),requestAnimationFrame(function(){f.style.transform="scale(1)",f.style.opacity="0"}),setTimeout(function(){f.remove()},a)})});var h=window.Domma&&window.Domma.effects;h&&(m.querySelectorAll(".dm-fx-breathe").forEach(function(t){if(!p){var e={};r(t,"amplitude")&&(e.amplitude=i(t,"amplitude",6)),r(t,"duration")&&(e.duration=i(t,"duration",3e3)),r(t,"easing")&&(e.easing=r(t,"easing")),r(t,"stagger")&&(e.stagger=i(t,"stagger",0)),h.breathe(t,e)}}),m.querySelectorAll(".dm-fx-pulse").forEach(function(t){if(!p){var e={};r(t,"scale")&&(e.scale=i(t,"scale",1.05)),r(t,"duration")&&(e.duration=i(t,"duration",2e3)),r(t,"easing")&&(e.easing=r(t,"easing")),h.pulse(t,e)}}),m.querySelectorAll(".dm-fx-scribe").forEach(function(t){var e={};["font","size","font-size","weight","colour","color","italic","align","line-height","spacing"].forEach(function(s){var b=r(t,s);b!==null&&(e[s]=b)}),typeof q=="function"&&q(e.font);var n=F(e);n&&(t.style.cssText+=";"+n);var a={respectMotionPreference:C};[["speed","speed",50],["delete-speed","deleteSpeed",30],["loop-delay","loopDelay",1e3]].forEach(function(s){r(t,s[0])!==null&&(a[s[1]]=Math.max(0,i(t,s[0],s[2])))}),[["cursor","cursor",!0],["cursor-blink","cursorBlink",!0],["pause-on-hover","pauseOnHover",!1],["auto-start","autoStart",!0],["respect-motion-preference","respectMotionPreference",C]].forEach(function(s){r(t,s[0])!==null&&(a[s[1]]=x(t,s[0],s[2]))}),r(t,"cursor-char")!==null&&(a.cursorChar=r(t,"cursor-char"));var o=r(t,"mode");["typewriter","word","sentence"].includes(o)&&(a.mode=o);var d=r(t,"cursor-type");["caret","block","underline"].includes(d)&&(a.cursorType=d);var f=r(t,"loop");if(f!==null){var c=Number(f);a.loop=f==="true"?!0:Number.isInteger(c)&&c>=1?c:!1}var l=r(t,"effect");["none","fade","bounce","glow"].includes(l)||(l="none");var v=r(t,"actions");if(v){try{a.actions=JSON.parse(v)}catch{return}if(!Array.isArray(a.actions)||a.actions.some(function(s){return!s||typeof s!="object"}))return;a.actions=a.actions.map(function(s){return s.render!==void 0&&s.effect===void 0?Object.assign({},s,{effect:l}):s})}else{var u=t.textContent.trim();if(!u)return;a.actions=[{render:u,effect:l}]}var y=a.respectMotionPreference&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(y){var S=a.actions.find(function(s){return s.render!=null});S&&(t.textContent=String(S.render));return}v||(t.textContent=""),[["onStart","start"],["onComplete","complete"],["onCharacter","character"],["onRender","render"],["onUndoRender","undo"],["onLoop","loop"]].forEach(function(s){a[s[0]]=function(b,O){t.dispatchEvent(new CustomEvent("scribe:"+s[1],{bubbles:!0,detail:{value:b,index:O}}))}});var E=h.scribe(t,a);if(E&&(x(t,"controls",!1)||a.autoStart===!1)){var z=document.createElement("span");z.className="dm-scribe-controls",z.setAttribute("role","group"),z.setAttribute("aria-label","Text animation playback"),[["Play","resume"],["Pause","pause"],["Replay","restart"]].forEach(function(s){var b=document.createElement("button");b.type="button",b.className="btn btn-ghost btn-sm",b.textContent=s[0],b.addEventListener("click",function(){E[s[1]]()}),z.appendChild(b)}),t.insertAdjacentElement("afterend",z)}}),m.querySelectorAll(".dm-fx-twinkle").forEach(function(t){var e={};r(t,"count")&&(e.count=i(t,"count",100)),r(t,"shape")&&(e.shape=r(t,"shape")),r(t,"colour")&&(e.colour=r(t,"colour")),r(t,"min-size")&&(e.minSize=i(t,"min-size",1)),r(t,"max-size")&&(e.maxSize=i(t,"max-size",3)),h.twinkle(t,e)}),typeof h.tickerTape=="function"&&m.querySelectorAll(".dm-fx-ticker-tape").forEach(function(t){if(!p){var e={};r(t,"palette")&&(e.palette=r(t,"palette")),r(t,"density")&&(e.density=i(t,"density",50)),r(t,"speed")&&(e.speed=i(t,"speed",1)),r(t,"sway")&&(e.sway=i(t,"sway",60)),r(t,"rotation-speed")&&(e.rotationSpeed=i(t,"rotation-speed",6)),r(t,"min-width")&&(e.minWidth=i(t,"min-width",5)),r(t,"max-width")&&(e.maxWidth=i(t,"max-width",9)),r(t,"min-height")&&(e.minHeight=i(t,"min-height",12)),r(t,"max-height")&&(e.maxHeight=i(t,"max-height",22)),r(t,"fade-start")&&(e.fadeStart=i(t,"fade-start",.55)),r(t,"burst")&&(e.burst=x(t,"burst",!1)),r(t,"burst-count")&&(e.burstCount=i(t,"burst-count",150)),r(t,"z-index")&&(e.zIndex=i(t,"z-index",1));var n=r(t,"mode");n==="page"?h.tickerTape(null,e):h.tickerTape(t,e)}}),typeof h.butterflies=="function"&&m.querySelectorAll(".dm-fx-butterflies").forEach(function(t){if(!p){var e={};r(t,"palette")&&(e.palette=r(t,"palette")),r(t,"density")&&(e.density=i(t,"density",18)),r(t,"speed")&&(e.speed=i(t,"speed",1)),r(t,"wander")&&(e.wander=i(t,"wander",1)),r(t,"rise-speed")&&(e.riseSpeed=i(t,"rise-speed",.4)),r(t,"flap-speed")&&(e.flapSpeed=i(t,"flap-speed",1)),r(t,"min-size")&&(e.minSize=i(t,"min-size",14)),r(t,"max-size")&&(e.maxSize=i(t,"max-size",26)),r(t,"two-tone")&&(e.twoTone=x(t,"two-tone",!0)),r(t,"burst")&&(e.burst=x(t,"burst",!1)),r(t,"burst-count")&&(e.burstCount=i(t,"burst-count",40)),r(t,"z-index")&&(e.zIndex=i(t,"z-index",1));var n=r(t,"mode");n==="page"?h.butterflies(null,e):h.butterflies(t,e)}}),typeof h.strobe=="function"&&m.querySelectorAll(".dm-fx-strobe").forEach(function(t){if(p)return;function e(f){var c=r(t,f);if(!c)return null;var l=c.split(",").map(function(v){return v.trim()}).filter(Boolean);return l.length?l:null}var n={};r(t,"preset")&&(n.preset=r(t,"preset")),r(t,"motion")&&(n.motion=r(t,"motion")),r(t,"speed")&&(n.speed=i(t,"speed",1)),r(t,"sweep-arc")&&(n.sweepArc=i(t,"sweep-arc",100)),r(t,"beam-width")&&(n.beamWidth=i(t,"beam-width",16)),r(t,"intensity")&&(n.intensity=i(t,"intensity",.7)),r(t,"flicker")&&(n.flicker=x(t,"flicker",!0)),r(t,"hz")&&(n.hz=i(t,"hz",10));var a=e("origins");a&&(n.origins=a);var o=e("colours");o&&(n.colours=o),r(t,"duration")&&(n.duration=i(t,"duration",null)),r(t,"z-index")&&(n.zIndex=i(t,"z-index",9999));var d=r(t,"mode");d==="page"?h.strobe(null,n):h.strobe(t,n)}));var T=m.querySelectorAll(".dm-fx-celebrate");T.length&&import("/public/js/celebrations/index.js?v=20261015-occasions").then(function(t){var e=t.CelebrationsEffect;T.forEach(function(n){var a=r(n,"character");if(a){if(n.querySelector("canvas"))return;t.mountCharacter(n,{character:a,size:r(n,"size")||"medium",facing:r(n,"facing")||"right",animate:!p&&x(n,"animate",!0)}).then(function(u){var y=new MutationObserver(function(){n.isConnected||(u.destroy(),y.disconnect())});n.isConnected?y.observe(document.body,{childList:!0,subtree:!0}):u.destroy()}).catch(function(u){console.error("[celebrate]",u)});return}if(!p){var o=n.getAttribute("data-fx-theme")||"auto";o==="auto"&&r(n,"message")&&(o="greeting");var d=n.getAttribute("data-fx-intensity")||"medium",f=n.getAttribute("data-fx-z-index")?parseInt(n.getAttribute("data-fx-z-index"),10):999;if(!(o==="auto"&&(o=e.getCurrentTheme(),!o))){var c={},l=["data-fx-theme","data-fx-intensity","data-fx-z-index"];if(Array.from(n.attributes).forEach(function(u){u.name.startsWith("data-fx-")&&!l.includes(u.name)&&(c[u.name.slice(8)]=u.value)}),o==="make-it-rain"||o==="money-rain"){t[o==="money-rain"?"moneyRain":"makeItRain"]({intensity:d,zIndex:f,overrides:c,duration:i(n,"duration",8e3)}).catch(function(u){console.error("[make-it-rain]",u)});return}var v=new e({theme:o,intensity:d,enabled:!0,zIndex:f,overrides:c});v.init().then(function(){v.start()})}}})}).catch(function(){})}).catch(function(){})})();
|
|
1
|
+
(function(){"use strict";Promise.all([fetch("/api/effects/settings").then(function(g){return g.json()}),import("/public/js/scribe-style.mjs?v=20261029-more-fonts")]).then(function(g){var w=g[0],F=g[1].buildScribeStyle,q=g[1].loadScribeFont,C=w.respectMotion!==!1,R=w.defaultDuration||600,Y=w.defaultAnimation||"fade",N=w.defaultThreshold!=null?w.defaultThreshold:.1,p=C&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,m=document.querySelector(".page-body");if(!m)return;var A=m.querySelector?m.querySelector(".dm-fx-demo-controls"):null;if(A){A.hidden=!1;var k=A.querySelector("[data-fx-demo-status]"),M=A.querySelector("[data-fx-demo-play]");k.textContent=p?"Animations are disabled by your Reduce motion preference. The demos show static content.":"Animations are enabled. Scroll to each demo to see it, or replay the page.",M.textContent=p?"Enable animations on this site":"Replay demos",M.addEventListener("click",function(){if(p)try{localStorage.setItem("domma:reduced_motion","false")}catch{k.textContent="Your browser blocked saving the motion preference. Use its accessibility settings to allow animations.";return}window.location.reload()})}function r(t,e){return t.getAttribute("data-fx-"+e)}function i(t,e,n){var a=r(t,e),o=a!==null?parseFloat(a):NaN;return Number.isFinite(o)?o:n}function x(t,e,n){var a=r(t,e);return a===null?n:a==="true"||a==="1"}function I(t,e,n){var a=new IntersectionObserver(function(o){o[0].isIntersecting&&(a.unobserve(t),n())},{threshold:e});a.observe(t)}m.querySelectorAll(".dm-fx-reveal").forEach(function(t){var e=r(t,"animation")||Y,n=i(t,"duration",R),a=i(t,"delay",0),o=i(t,"threshold",N),d=x(t,"once",!0);p||(t.style.opacity="0",t.style.transition="none",e==="slide-up"?t.style.transform="translateY(30px)":e==="slide-down"?t.style.transform="translateY(-30px)":e==="zoom"?t.style.transform="scale(0.85)":e==="flip"&&(t.style.transform="rotateY(90deg)"),requestAnimationFrame(function(){requestAnimationFrame(function(){t.style.transition="opacity "+n+"ms ease "+a+"ms, transform "+n+"ms ease "+a+"ms";var f=new IntersectionObserver(function(c){c.forEach(function(l){l.isIntersecting?(t.style.opacity="1",t.style.transform="",d&&f.unobserve(t)):d||(t.style.opacity="0",e==="slide-up"?t.style.transform="translateY(30px)":e==="slide-down"?t.style.transform="translateY(-30px)":e==="zoom"?t.style.transform="scale(0.85)":e==="flip"?t.style.transform="rotateY(90deg)":t.style.transform="")})},{threshold:o});f.observe(t)})}))}),m.querySelectorAll(".dm-fx-counter").forEach(function(t){var e=i(t,"to",0),n=i(t,"from",0),a=i(t,"duration",2e3),o=r(t,"prefix")||"",d=r(t,"suffix")||"",f=i(t,"decimals",0),c=r(t,"separator")||"";function l(v){var u=v.toFixed(f);if(c){var y=u.split(".");y[0]=y[0].replace(/\B(?=(\d{3})+(?!\d))/g,c),u=y.join(".")}return o+u+d}if(p){t.textContent=l(e);return}I(t,.5,function(){var v=null;requestAnimationFrame(function u(y){v||(v=y);var S=Math.min((y-v)/a,1),E=1-Math.pow(1-S,3);t.textContent=l(n+(e-n)*E),S<1&&requestAnimationFrame(u)})})}),p||m.querySelectorAll(".dm-fx-scramble").forEach(function(t){var e=i(t,"speed",50),n=t.textContent,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&",o=0;I(t,.3,function(){var d=setInterval(function(){for(var f="",c=0;c<n.length;c++)c<o||n[c]===" "?f+=n[c]:f+=a[Math.floor(Math.random()*a.length)];t.textContent=f,o<n.length?o++:clearInterval(d)},e)})}),p||m.querySelectorAll(".dm-fx-shake").forEach(function(t){var e=i(t,"intensity",5),n=i(t,"duration",500),a=r(t,"direction")||"horizontal",o=a==="vertical"?"translateY":"translateX";t.animate([{transform:o+"(0)"},{transform:o+"(-"+e+"px)"},{transform:o+"("+e+"px)"},{transform:o+"(-"+e+"px)"},{transform:o+"("+e+"px)"},{transform:o+"(0)"}],{duration:n,easing:"ease-in-out"})}),m.querySelectorAll(".dm-fx-ripple").forEach(function(t){t.style.position="relative",t.style.overflow="hidden",t.addEventListener("click",function(e){var n=r(t,"colour")||"rgba(255,255,255,0.3)",a=i(t,"duration",600),o=t.getBoundingClientRect(),d=Math.max(o.width,o.height)*2,f=document.createElement("span");f.style.cssText="position:absolute;border-radius:50%;pointer-events:none;width:"+d+"px;height:"+d+"px;left:"+(e.clientX-o.left-d/2)+"px;top:"+(e.clientY-o.top-d/2)+"px;background:"+n+";transform:scale(0);opacity:1;transition:transform "+a+"ms ease,opacity "+a+"ms ease;",t.appendChild(f),requestAnimationFrame(function(){f.style.transform="scale(1)",f.style.opacity="0"}),setTimeout(function(){f.remove()},a)})});var h=window.Domma&&window.Domma.effects;h&&(m.querySelectorAll(".dm-fx-breathe").forEach(function(t){if(!p){var e={};r(t,"amplitude")&&(e.amplitude=i(t,"amplitude",6)),r(t,"duration")&&(e.duration=i(t,"duration",3e3)),r(t,"easing")&&(e.easing=r(t,"easing")),r(t,"stagger")&&(e.stagger=i(t,"stagger",0)),h.breathe(t,e)}}),m.querySelectorAll(".dm-fx-pulse").forEach(function(t){if(!p){var e={};r(t,"scale")&&(e.scale=i(t,"scale",1.05)),r(t,"duration")&&(e.duration=i(t,"duration",2e3)),r(t,"easing")&&(e.easing=r(t,"easing")),h.pulse(t,e)}}),m.querySelectorAll(".dm-fx-scribe").forEach(function(t){var e={};["font","size","font-size","weight","colour","color","italic","align","line-height","spacing"].forEach(function(s){var b=r(t,s);b!==null&&(e[s]=b)}),typeof q=="function"&&q(e.font);var n=F(e);n&&(t.style.cssText+=";"+n);var a={respectMotionPreference:C};[["speed","speed",50],["delete-speed","deleteSpeed",30],["loop-delay","loopDelay",1e3]].forEach(function(s){r(t,s[0])!==null&&(a[s[1]]=Math.max(0,i(t,s[0],s[2])))}),[["cursor","cursor",!0],["cursor-blink","cursorBlink",!0],["pause-on-hover","pauseOnHover",!1],["auto-start","autoStart",!0],["respect-motion-preference","respectMotionPreference",C]].forEach(function(s){r(t,s[0])!==null&&(a[s[1]]=x(t,s[0],s[2]))}),r(t,"cursor-char")!==null&&(a.cursorChar=r(t,"cursor-char"));var o=r(t,"mode");["typewriter","word","sentence"].includes(o)&&(a.mode=o);var d=r(t,"cursor-type");["caret","block","underline"].includes(d)&&(a.cursorType=d);var f=r(t,"loop");if(f!==null){var c=Number(f);a.loop=f==="true"?!0:Number.isInteger(c)&&c>=1?c:!1}var l=r(t,"effect");["none","fade","bounce","glow"].includes(l)||(l="none");var v=r(t,"actions");if(v){try{a.actions=JSON.parse(v)}catch{return}if(!Array.isArray(a.actions)||a.actions.some(function(s){return!s||typeof s!="object"}))return;a.actions=a.actions.map(function(s){return s.render!==void 0&&s.effect===void 0?Object.assign({},s,{effect:l}):s})}else{var u=t.textContent.trim();if(!u)return;a.actions=[{render:u,effect:l}]}var y=a.respectMotionPreference&&window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(y){var S=a.actions.find(function(s){return s.render!=null});S&&(t.textContent=String(S.render));return}v||(t.textContent=""),[["onStart","start"],["onComplete","complete"],["onCharacter","character"],["onRender","render"],["onUndoRender","undo"],["onLoop","loop"]].forEach(function(s){a[s[0]]=function(b,O){t.dispatchEvent(new CustomEvent("scribe:"+s[1],{bubbles:!0,detail:{value:b,index:O}}))}});var E=h.scribe(t,a);if(E&&(x(t,"controls",!1)||a.autoStart===!1)){var z=document.createElement("span");z.className="dm-scribe-controls",z.setAttribute("role","group"),z.setAttribute("aria-label","Text animation playback"),[["Play","resume"],["Pause","pause"],["Replay","restart"]].forEach(function(s){var b=document.createElement("button");b.type="button",b.className="btn btn-ghost btn-sm",b.textContent=s[0],b.addEventListener("click",function(){E[s[1]]()}),z.appendChild(b)}),t.insertAdjacentElement("afterend",z)}}),m.querySelectorAll(".dm-fx-twinkle").forEach(function(t){var e={};r(t,"count")&&(e.count=i(t,"count",100)),r(t,"shape")&&(e.shape=r(t,"shape")),r(t,"colour")&&(e.colour=r(t,"colour")),r(t,"min-size")&&(e.minSize=i(t,"min-size",1)),r(t,"max-size")&&(e.maxSize=i(t,"max-size",3)),h.twinkle(t,e)}),typeof h.tickerTape=="function"&&m.querySelectorAll(".dm-fx-ticker-tape").forEach(function(t){if(!p){var e={};r(t,"palette")&&(e.palette=r(t,"palette")),r(t,"density")&&(e.density=i(t,"density",50)),r(t,"speed")&&(e.speed=i(t,"speed",1)),r(t,"sway")&&(e.sway=i(t,"sway",60)),r(t,"rotation-speed")&&(e.rotationSpeed=i(t,"rotation-speed",6)),r(t,"min-width")&&(e.minWidth=i(t,"min-width",5)),r(t,"max-width")&&(e.maxWidth=i(t,"max-width",9)),r(t,"min-height")&&(e.minHeight=i(t,"min-height",12)),r(t,"max-height")&&(e.maxHeight=i(t,"max-height",22)),r(t,"fade-start")&&(e.fadeStart=i(t,"fade-start",.55)),r(t,"burst")&&(e.burst=x(t,"burst",!1)),r(t,"burst-count")&&(e.burstCount=i(t,"burst-count",150)),r(t,"z-index")&&(e.zIndex=i(t,"z-index",1));var n=r(t,"mode");n==="page"?h.tickerTape(null,e):h.tickerTape(t,e)}}),typeof h.butterflies=="function"&&m.querySelectorAll(".dm-fx-butterflies").forEach(function(t){if(!p){var e={};r(t,"palette")&&(e.palette=r(t,"palette")),r(t,"density")&&(e.density=i(t,"density",18)),r(t,"speed")&&(e.speed=i(t,"speed",1)),r(t,"wander")&&(e.wander=i(t,"wander",1)),r(t,"rise-speed")&&(e.riseSpeed=i(t,"rise-speed",.4)),r(t,"flap-speed")&&(e.flapSpeed=i(t,"flap-speed",1)),r(t,"min-size")&&(e.minSize=i(t,"min-size",14)),r(t,"max-size")&&(e.maxSize=i(t,"max-size",26)),r(t,"two-tone")&&(e.twoTone=x(t,"two-tone",!0)),r(t,"burst")&&(e.burst=x(t,"burst",!1)),r(t,"burst-count")&&(e.burstCount=i(t,"burst-count",40)),r(t,"z-index")&&(e.zIndex=i(t,"z-index",1));var n=r(t,"mode");n==="page"?h.butterflies(null,e):h.butterflies(t,e)}}),typeof h.strobe=="function"&&m.querySelectorAll(".dm-fx-strobe").forEach(function(t){if(p)return;function e(f){var c=r(t,f);if(!c)return null;var l=c.split(",").map(function(v){return v.trim()}).filter(Boolean);return l.length?l:null}var n={};r(t,"preset")&&(n.preset=r(t,"preset")),r(t,"motion")&&(n.motion=r(t,"motion")),r(t,"speed")&&(n.speed=i(t,"speed",1)),r(t,"sweep-arc")&&(n.sweepArc=i(t,"sweep-arc",100)),r(t,"beam-width")&&(n.beamWidth=i(t,"beam-width",16)),r(t,"intensity")&&(n.intensity=i(t,"intensity",.7)),r(t,"flicker")&&(n.flicker=x(t,"flicker",!0)),r(t,"hz")&&(n.hz=i(t,"hz",10));var a=e("origins");a&&(n.origins=a);var o=e("colours");o&&(n.colours=o),r(t,"duration")&&(n.duration=i(t,"duration",null)),r(t,"z-index")&&(n.zIndex=i(t,"z-index",9999));var d=r(t,"mode");d==="page"?h.strobe(null,n):h.strobe(t,n)}));var T=m.querySelectorAll(".dm-fx-celebrate");T.length&&import("/public/js/celebrations/index.js?v=20261015-occasions").then(function(t){var e=t.CelebrationsEffect;T.forEach(function(n){var a=r(n,"character");if(a){if(n.querySelector("canvas"))return;t.mountCharacter(n,{character:a,size:r(n,"size")||"medium",facing:r(n,"facing")||"right",animate:!p&&x(n,"animate",!0)}).then(function(u){var y=new MutationObserver(function(){n.isConnected||(u.destroy(),y.disconnect())});n.isConnected?y.observe(document.body,{childList:!0,subtree:!0}):u.destroy()}).catch(function(u){console.error("[celebrate]",u)});return}if(!p){var o=n.getAttribute("data-fx-theme")||"auto";o==="auto"&&r(n,"message")&&(o="greeting");var d=n.getAttribute("data-fx-intensity")||"medium",f=n.getAttribute("data-fx-z-index")?parseInt(n.getAttribute("data-fx-z-index"),10):999;if(!(o==="auto"&&(o=e.getCurrentTheme(),!o))){var c={},l=["data-fx-theme","data-fx-intensity","data-fx-z-index"];if(Array.from(n.attributes).forEach(function(u){u.name.startsWith("data-fx-")&&!l.includes(u.name)&&(c[u.name.slice(8)]=u.value)}),o==="make-it-rain"||o==="money-rain"){t[o==="money-rain"?"moneyRain":"makeItRain"]({intensity:d,zIndex:f,overrides:c,duration:i(n,"duration",8e3)}).catch(function(u){console.error("[make-it-rain]",u)});return}var v=new e({theme:o,intensity:d,enabled:!0,zIndex:f,overrides:c});v.init().then(function(){v.start()})}}})}).catch(function(){})}).catch(function(){})})();
|
package/public/js/menu-cards.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{colourToCss as
|
|
1
|
+
import{colourToCss as S}from"/public/js/menu-decor.mjs?v=20261014-menu-entrance";import{normaliseLook as R,normalisePanel as E,cardColumns as B,floatsWithoutStrip as F,TRAY_BARS as $,TILE_RAINBOW as v}from"/public/js/menu-look.mjs?v=20261029-bar-fit";const y="(min-width: 993px)",N=`
|
|
2
2
|
<span class="dm-nc-eyebrow" data-bind-text="heading.value"></span>
|
|
3
|
-
<a class="dm-nc-more" data-bind-href="linkUrl.value" data-bind-hidden="!linkUrl.value"><span data-bind-text="linkText.value"></span><span class="dm-nc-arrow" data-icon="arrow-right" data-size="14" aria-hidden="true"></span></a>`,
|
|
3
|
+
<a class="dm-nc-more" data-bind-href="linkUrl.value" data-bind-hidden="!linkUrl.value"><span data-bind-text="linkText.value"></span><span class="dm-nc-arrow" data-icon="arrow-right" data-size="14" aria-hidden="true"></span></a>`,_=`
|
|
4
4
|
<div class="dm-nc-feature-box">
|
|
5
5
|
<span class="dm-nc-feature-eyebrow" data-bind-text="eyebrow.value" data-bind-hidden="!eyebrow.value"></span>
|
|
6
6
|
<strong class="dm-nc-feature-title" data-bind-text="title.value" data-bind-hidden="!title.value"></strong>
|
|
7
7
|
<div class="dm-nc-points" data-bind-hidden="!hasPoints.value" data-each="points key=id"><div class="dm-nc-point"><span class="dm-nc-point-tick" aria-hidden="true"></span><span>{{text}}</span></div></div>
|
|
8
8
|
<a class="dm-nc-feature-btn" data-bind-href="buttonUrl.value" data-bind-hidden="!buttonUrl.value"><span data-bind-text="buttonText.value"></span><span data-icon="arrow-right" data-size="14" aria-hidden="true"></span></a>
|
|
9
|
-
</div>`,
|
|
9
|
+
</div>`,z=`
|
|
10
10
|
<span class="dm-nc-chips-label" data-bind-text="label.value" data-bind-hidden="!label.value"></span>
|
|
11
|
-
<span class="dm-nc-chips-row"></span>`;function y(t,n,r){const e=document.createElement("li");return e.className=t,e.setAttribute("role","presentation"),e.innerHTML=n,M.applyBindings(r,e),e}function S(t,n,r){return t?.tile?q(t.tile):n==="accent"?"var(--dm-primary)":n==="neutral"?"var(--dm-text-secondary)":L[r%L.length]}function P(t,n,r,e){if(t.querySelector(":scope > .dm-nc-body"))return;const s=t.querySelector(":scope > svg, :scope > [data-icon]"),i=document.createElement("span");i.className="dm-nc-body";const p=document.createElement("span");for(p.className="dm-nc-title",s&&s.remove();t.firstChild;)p.appendChild(t.firstChild);if(i.appendChild(p),n?.description){const d=document.createElement("span");d.className="dm-nc-desc",d.textContent=n.description,i.appendChild(d)}if(s&&e!=="none"){const d=document.createElement("span");d.className="dm-nc-tile",d.setAttribute("aria-hidden","true"),d.appendChild(s),t.appendChild(d),t.style.setProperty("--dm-nc-tone",r)}else s&&(s.classList.add("dm-nc-icon"),t.appendChild(s));t.appendChild(i),t.classList.add("dm-nc-link")}function _(t,n,r){const e=t.querySelector(":scope > .navbar-dropdown-menu");if(!e||e.classList.contains("dm-nc-card"))return null;const s=R(n.panel),i=r.tiles||"rainbow";e.classList.add("dm-nc-card");const p=Array.isArray(n.items)?n.items:[],d=[],c=[];let m=0;for(const a of[...e.children]){if(a.classList.contains("navbar-dropdown-divider")){a.classList.add("dm-nc-skip");continue}const u=a.querySelector(":scope > .navbar-dropdown-item"),h=a.classList.contains("navbar-dropdown-sub")?a:null,v=(u||a.querySelector(":scope > .navbar-submenu-toggle"))?.dataset.path||"",b=p[Number(v.split(".").pop())];if(u&&b?.chip){c.push(u),a.remove();continue}if(u)P(u,b,S(b,i,m++),i),a.classList.add("dm-nc-entry"),d.push(a);else if(h){h.classList.add("dm-nc-group");const E=h.querySelector(":scope > .navbar-dropdown-menu"),k=Array.isArray(b?.items)?b.items:[];E?.querySelectorAll(":scope > li > .navbar-dropdown-item").forEach(w=>{const x=k[Number((w.dataset.path||"").split(".").pop())];P(w,x,S(x,i,m++),i)}),d.push(h)}}const o=Math.min($(d.length,s),Math.max(1,d.length));e.style.setProperty("--dm-nc-cols",String(o));const l=s?.heading||s?.link?1:0;d.forEach((a,u)=>{a.style.setProperty("--dm-nc-r",String(l+Math.floor(u/o)+1)),a.style.setProperty("--dm-nc-c",String(u%o+1))});const f=l+Math.ceil(d.length/o);if(l){const a=y("dm-nc-head",z,{heading:M.observable(s.heading||""),linkUrl:M.observable(s.link?.url||""),linkText:M.observable(s.link?.text||"")});e.insertBefore(a,e.firstChild)}if(s?.feature){const a=s.feature,u=(a.points||[]).map((v,b)=>({id:b,text:v})),h=y(`dm-nc-feature dm-nc-feature--${a.tone||"dark"}`,F,{eyebrow:M.observable(a.eyebrow||""),title:M.observable(a.title||""),points:M.observableArray(u),hasPoints:M.observable(u.length>0),buttonUrl:M.observable(a.button?.url||""),buttonText:M.observable(a.button?.text||"")});h.style.setProperty("--dm-nc-rows",String(Math.max(1,f))),e.appendChild(h),e.classList.add("dm-nc-has-feature")}if(c.length){const a=y("dm-nc-chips",O,{label:M.observable(s?.chipsLabel||"")}),u=a.querySelector(".dm-nc-chips-row");c.forEach(h=>{h.classList.add("dm-nc-chip"),u.appendChild(h)}),a.style.setProperty("--dm-nc-r",String(f+1)),e.appendChild(a)}return Domma.icons.scan(e),e}function A(t,n){if(!matchMedia(g).matches)return;n.classList.remove("navbar-dropdown-flip-end"),n.style.maxHeight="",n.style.overflowY="",n.style.setProperty("--dm-nc-shift","0px"),n._ncShift=0;const e=t.querySelector(":scope > .navbar-dropdown-toggle").getBoundingClientRect(),s=n.getBoundingClientRect(),i=16,p=document.documentElement.clientWidth,d=e.left+e.width/2-s.width/2,c=Math.max(i,Math.min(p-i-s.width,d));n._ncShift=Math.round(c-d),n.style.setProperty("--dm-nc-shift",`${n._ncShift}px`),n.style.setProperty("--dm-nc-caret",`${Math.round(e.left+e.width/2-c)}px`)}function U(t,n){if(!matchMedia(g).matches||!t||matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion"))return;const r=n.getBoundingClientRect();if(!r.width)return;const e=t.left-r.left,s=n._ncShift||0,i=Math.max(0,r.width-t.width),p=Math.max(0,r.height-t.height);n.dataset.ncMorph="1";const d=n.animate([{transform:`translateX(calc(-50% + ${s+e}px))`,clipPath:`inset(0 ${i}px ${p}px 0 round 18px)`},{transform:`translateX(calc(-50% + ${s}px))`,clipPath:"inset(-20px -20px -40px -20px round 18px)"}],{duration:260,easing:"cubic-bezier(.2,.8,.2,1)"});d.oncancel=()=>{delete n.dataset.ncMorph}}const C=()=>matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion");function H(t,n){const r=t.querySelector(".navbar-nav");if(!r||r.querySelector(":scope > .dm-nav-glider"))return;const e=document.createElement("li");e.className="dm-nav-glider",e.setAttribute("aria-hidden","true"),r.appendChild(e);const s=()=>[...r.querySelectorAll(":scope > li > :is(.navbar-link, .navbar-dropdown-toggle)")],i=()=>s().find(o=>o.classList.contains("active")||o.getAttribute("aria-current")==="page")||r.querySelector(":scope > .navbar-dropdown.open > .navbar-dropdown-toggle");let p=!1;const d=o=>{if(!o||!matchMedia(g).matches){e.style.setProperty("--dm-glide-o","0"),p=!1;return}const l=o.parentElement,f=l.offsetLeft+o.offsetLeft,a=l.offsetTop+o.offsetTop,u=o.offsetWidth,h=o.offsetHeight;e.classList.toggle("is-jump",!p);const v=n==="underline",b=v?Math.min(14,u*.2):0;e.style.setProperty("--dm-glide-x",`${Math.round(f+b)}px`),e.style.setProperty("--dm-glide-y",`${Math.round(v?a+h-3:a)}px`),e.style.setProperty("--dm-glide-w",`${Math.round(u-b*2)}px`),e.style.setProperty("--dm-glide-h",v?"2px":`${Math.round(h)}px`),e.style.setProperty("--dm-glide-o","1"),p=!0};let c=!1;r.addEventListener("pointerover",o=>{let l=o.target.closest?.("li");for(;l&&l.parentElement!==r;)l=l.parentElement?.closest("li");const f=l?.querySelector(":scope > :is(.navbar-link, .navbar-dropdown-toggle)");f&&(c=!0,d(f))}),t.addEventListener("pointerleave",()=>{c=!1,d(i())});const m=()=>{c||d(i())};if(addEventListener("resize",m),addEventListener("load",m),"ResizeObserver"in window){const o=new ResizeObserver(m);o.observe(r),s().forEach(l=>o.observe(l))}requestAnimationFrame(m),document.fonts?.ready?.then(m),C()&&e.classList.add("is-jump")}function D(t){const n=t.querySelector(".navbar-nav");if(!n||C())return;const r=()=>[...n.querySelectorAll(":scope > li > :is(.navbar-link, .navbar-dropdown-toggle)")];let e=0;n.addEventListener("pointermove",s=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{for(const i of r()){const p=i.getBoundingClientRect(),d=Math.abs(s.clientX-(p.left+p.width/2));i.style.setProperty("--dm-dock-s",(1+.28*Math.max(0,1-d/140)).toFixed(3))}})},{passive:!0}),n.addEventListener("pointerleave",()=>{cancelAnimationFrame(e);for(const s of r())s.style.removeProperty("--dm-dock-s")})}function I(t){t.classList.add("dm-nav-shrinks");let n=!1;const r=()=>{n=!1,t.classList.toggle("is-shrunk",scrollY>24)};addEventListener("scroll",()=>{n||(n=!0,requestAnimationFrame(r))},{passive:!0}),r()}function W(t){t.classList.add("dm-nav-no-strip"),document.body.classList.add("dm-nav-floating-pills");const n=()=>{document.body.style.setProperty("--dm-nav-float-h",`${Math.round(t.getBoundingClientRect().height)}px`)};n(),addEventListener("resize",n)}export function applyMenuLook(t,n,r){const e=T(n?.look);if(!t||!e||n.orientation==="vertical")return;const s=e.bar||(e.strip==="none"?"pill":"");if(s&&t.classList.add(`dm-nav-bar-${s}`),N.includes(s)&&t.classList.add("dm-nav-tray"),(s==="segmented"||s==="underline")&&H(t,s),s==="dock"&&D(t),e.shrink&&I(t),e.brand==="pill"&&t.classList.add("dm-nav-brand-pill"),B(e)&&W(t),e.dropdown!=="cards")return;t.classList.add("dm-nav-cards");const i=new Map;if(t.querySelectorAll(".navbar-nav > .navbar-dropdown").forEach(c=>{const m=c.querySelector(":scope > .navbar-dropdown-toggle"),o=r?.[Number(m?.dataset.path)],l=o&&_(c,o,e);l&&i.set(c,l)}),!i.size)return;const p=new Map,d=new MutationObserver(c=>{let m=null,o=null;for(const f of c){const a=f.target;if(!i.has(a))continue;const u=a.classList.contains("open"),h=(f.oldValue||"").split(/\s+/).includes("open");u&&!h&&(m=a),!u&&h&&(o=a)}if(o&&delete i.get(o).dataset.ncMorph,!m)return;const l=i.get(m);A(m,l),e.morph&&o&&p.has(o)&&U(p.get(o),l),matchMedia(g).matches&&p.set(m,l.getBoundingClientRect())});for(const c of i.keys())d.observe(c,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0});addEventListener("resize",()=>{for(const[c,m]of i)c.classList.contains("open")&&A(c,m)})}
|
|
11
|
+
<span class="dm-nc-chips-row"></span>`;function w(t,n,o){const e=document.createElement("li");return e.className=t,e.setAttribute("role","presentation"),e.innerHTML=n,M.applyBindings(o,e),e}function C(t,n,o){return t?.tile?S(t.tile):n==="accent"?"var(--dm-primary)":n==="neutral"?"var(--dm-text-secondary)":v[o%v.length]}function P(t,n,o,e){if(t.querySelector(":scope > .dm-nc-body"))return;const s=t.querySelector(":scope > svg, :scope > [data-icon]"),i=document.createElement("span");i.className="dm-nc-body";const p=document.createElement("span");for(p.className="dm-nc-title",s&&s.remove();t.firstChild;)p.appendChild(t.firstChild);if(i.appendChild(p),n?.description){const d=document.createElement("span");d.className="dm-nc-desc",d.textContent=n.description,i.appendChild(d)}if(s&&e!=="none"){const d=document.createElement("span");d.className="dm-nc-tile",d.setAttribute("aria-hidden","true"),d.appendChild(s),t.appendChild(d),t.style.setProperty("--dm-nc-tone",o)}else s&&(s.classList.add("dm-nc-icon"),t.appendChild(s));t.appendChild(i),t.classList.add("dm-nc-link")}function O(t,n,o){const e=t.querySelector(":scope > .navbar-dropdown-menu");if(!e||e.classList.contains("dm-nc-card"))return null;const s=E(n.panel),i=o.tiles||"rainbow";e.classList.add("dm-nc-card");const p=Array.isArray(n.items)?n.items:[],d=[],m=[];let f=0;for(const a of[...e.children]){if(a.classList.contains("navbar-dropdown-divider")){a.classList.add("dm-nc-skip");continue}const c=a.querySelector(":scope > .navbar-dropdown-item"),u=a.classList.contains("navbar-dropdown-sub")?a:null,b=(c||a.querySelector(":scope > .navbar-submenu-toggle"))?.dataset.path||"",g=p[Number(b.split(".").pop())];if(c&&g?.chip){m.push(c),a.remove();continue}if(c)P(c,g,C(g,i,f++),i),a.classList.add("dm-nc-entry"),d.push(a);else if(u){u.classList.add("dm-nc-group");const k=u.querySelector(":scope > .navbar-dropdown-menu"),T=Array.isArray(g?.items)?g.items:[];k?.querySelectorAll(":scope > li > .navbar-dropdown-item").forEach(x=>{const L=T[Number((x.dataset.path||"").split(".").pop())];P(x,L,C(L,i,f++),i)}),d.push(u)}}const r=Math.min(B(d.length,s),Math.max(1,d.length));e.style.setProperty("--dm-nc-cols",String(r));const l=s?.heading||s?.link?1:0;d.forEach((a,c)=>{a.style.setProperty("--dm-nc-r",String(l+Math.floor(c/r)+1)),a.style.setProperty("--dm-nc-c",String(c%r+1))});const h=l+Math.ceil(d.length/r);if(l){const a=w("dm-nc-head",N,{heading:M.observable(s.heading||""),linkUrl:M.observable(s.link?.url||""),linkText:M.observable(s.link?.text||"")});e.insertBefore(a,e.firstChild)}if(s?.feature){const a=s.feature,c=(a.points||[]).map((b,g)=>({id:g,text:b})),u=w(`dm-nc-feature dm-nc-feature--${a.tone||"dark"}`,_,{eyebrow:M.observable(a.eyebrow||""),title:M.observable(a.title||""),points:M.observableArray(c),hasPoints:M.observable(c.length>0),buttonUrl:M.observable(a.button?.url||""),buttonText:M.observable(a.button?.text||"")});u.style.setProperty("--dm-nc-rows",String(Math.max(1,h))),e.appendChild(u),e.classList.add("dm-nc-has-feature")}if(m.length){const a=w("dm-nc-chips",z,{label:M.observable(s?.chipsLabel||"")}),c=a.querySelector(".dm-nc-chips-row");m.forEach(u=>{u.classList.add("dm-nc-chip"),c.appendChild(u)}),a.style.setProperty("--dm-nc-r",String(h+1)),e.appendChild(a)}return Domma.icons.scan(e),e}function A(t,n){if(!matchMedia(y).matches)return;n.classList.remove("navbar-dropdown-flip-end"),n.style.maxHeight="",n.style.overflowY="",n.style.setProperty("--dm-nc-shift","0px"),n._ncShift=0;const e=t.querySelector(":scope > .navbar-dropdown-toggle").getBoundingClientRect(),s=n.getBoundingClientRect(),i=16,p=document.documentElement.clientWidth,d=e.left+e.width/2-s.width/2,m=Math.max(i,Math.min(p-i-s.width,d));n._ncShift=Math.round(m-d),n.style.setProperty("--dm-nc-shift",`${n._ncShift}px`),n.style.setProperty("--dm-nc-caret",`${Math.round(e.left+e.width/2-m)}px`)}function W(t,n){if(!matchMedia(y).matches||!t||matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion"))return;const o=n.getBoundingClientRect();if(!o.width)return;const e=t.left-o.left,s=n._ncShift||0,i=Math.max(0,o.width-t.width),p=Math.max(0,o.height-t.height);n.dataset.ncMorph="1";const d=n.animate([{transform:`translateX(calc(-50% + ${s+e}px))`,clipPath:`inset(0 ${i}px ${p}px 0 round 18px)`},{transform:`translateX(calc(-50% + ${s}px))`,clipPath:"inset(-20px -20px -40px -20px round 18px)"}],{duration:260,easing:"cubic-bezier(.2,.8,.2,1)"});d.oncancel=()=>{delete n.dataset.ncMorph}}const q=()=>matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion");function U(t,n){const o=t.querySelector(".navbar-nav");if(!o||o.querySelector(":scope > .dm-nav-glider"))return;const e=document.createElement("li");e.className="dm-nav-glider",e.setAttribute("aria-hidden","true"),o.appendChild(e);const s=()=>[...o.querySelectorAll(":scope > li > :is(.navbar-link, .navbar-dropdown-toggle)")],i=()=>s().find(r=>r.classList.contains("active")||r.getAttribute("aria-current")==="page")||o.querySelector(":scope > .navbar-dropdown.open > .navbar-dropdown-toggle");let p=!1;const d=r=>{if(!r||!matchMedia(y).matches){e.style.setProperty("--dm-glide-o","0"),p=!1;return}const l=r.parentElement,h=l.offsetLeft+r.offsetLeft,a=l.offsetTop+r.offsetTop,c=r.offsetWidth,u=r.offsetHeight;e.classList.toggle("is-jump",!p);const b=n==="underline",g=b?Math.min(14,c*.2):0;e.style.setProperty("--dm-glide-x",`${Math.round(h+g)}px`),e.style.setProperty("--dm-glide-y",`${Math.round(b?a+u-3:a)}px`),e.style.setProperty("--dm-glide-w",`${Math.round(c-g*2)}px`),e.style.setProperty("--dm-glide-h",b?"2px":`${Math.round(u)}px`),e.style.setProperty("--dm-glide-o","1"),p=!0};let m=!1;o.addEventListener("pointerover",r=>{let l=r.target.closest?.("li");for(;l&&l.parentElement!==o;)l=l.parentElement?.closest("li");const h=l?.querySelector(":scope > :is(.navbar-link, .navbar-dropdown-toggle)");h&&(m=!0,d(h))}),t.addEventListener("pointerleave",()=>{m=!1,d(i())});const f=()=>{m||d(i())};if(addEventListener("resize",f),addEventListener("load",f),"ResizeObserver"in window){const r=new ResizeObserver(f);r.observe(o),s().forEach(l=>r.observe(l))}requestAnimationFrame(f),document.fonts?.ready?.then(f),q()&&e.classList.add("is-jump")}function I(t){const n=t.querySelector(".navbar-nav");if(!n||q())return;const o=()=>[...n.querySelectorAll(":scope > li > :is(.navbar-link, .navbar-dropdown-toggle)")];let e=0;n.addEventListener("pointermove",s=>{cancelAnimationFrame(e),e=requestAnimationFrame(()=>{for(const i of o()){const p=i.getBoundingClientRect(),d=Math.abs(s.clientX-(p.left+p.width/2));i.style.setProperty("--dm-dock-s",(1+.28*Math.max(0,1-d/140)).toFixed(3))}})},{passive:!0}),n.addEventListener("pointerleave",()=>{cancelAnimationFrame(e);for(const s of o())s.style.removeProperty("--dm-dock-s")})}function H(t){t.classList.add("dm-nav-shrinks");let n=!1;const o=()=>{n=!1,t.classList.toggle("is-shrunk",scrollY>24)};addEventListener("scroll",()=>{n||(n=!0,requestAnimationFrame(o))},{passive:!0}),o()}function D(t){t.classList.add("dm-nav-no-strip"),document.body.classList.add("dm-nav-floating-pills");const n=()=>{document.body.style.setProperty("--dm-nav-float-h",`${Math.round(t.getBoundingClientRect().height)}px`)};n(),addEventListener("resize",n)}function X(t,n,o){t.classList.add("dm-nav-icons");let e=0;t.querySelectorAll(".navbar-nav > li").forEach(s=>{const i=s.querySelector(":scope > :is(.navbar-link, .navbar-dropdown-toggle)");if(!i||i.classList.contains("dm-nav-pill"))return;const p=n?.[Number(i.dataset.path)];if(p?.colour)return;const d=p?.tile?S(p.tile):o==="accent"?"var(--dm-primary)":v[e%v.length];e++,s.style.setProperty("--dm-nav-ic",d)})}const Y=6,j=".site-search-floating-trigger, .dm-motion-fab, #back-to-top-btn, #go-to-bottom-btn, .dm-theme-switcher:not(.dm-ts-inline)";function V(t){const n=t.querySelector(".navbar-nav"),o=t.querySelector(".navbar-container")||t;if(!n)return;const e=()=>t.querySelector(".navbar-brand"),s=getComputedStyle(o),i={left:parseFloat(s.paddingLeft)||0,right:parseFloat(s.paddingRight)||0},p=()=>{const l=t.getBoundingClientRect();let h=0,a=0;for(const c of document.querySelectorAll(j)){if(t.contains(c))continue;const u=getComputedStyle(c);if(u.position!=="fixed"||u.display==="none"||u.visibility==="hidden")continue;const b=c.getBoundingClientRect();!b.width||b.bottom<=l.top||b.top>=l.bottom||(b.left+b.width/2>innerWidth/2?a=Math.max(a,innerWidth-b.left+8):h=Math.max(h,b.right+8))}for(const[c,u]of[["left",h],["right",a]])u>i[c]?o.style.setProperty(`padding-${c}`,`${Math.round(u)}px`,"important"):o.style.removeProperty(`padding-${c}`)},d=()=>{if(n.scrollWidth>n.clientWidth+1)return!1;const l=n.getBoundingClientRect(),h=e()?.getBoundingClientRect(),a=[...n.children].filter(b=>b.offsetWidth),c=a[0]?.getBoundingClientRect(),u=a.at(-1)?.getBoundingClientRect();return c&&c.left<l.left-1||u&&u.right>l.right+1?!1:!(h&&h.width&&c&&h.right>c.left)},m=()=>{if(!matchMedia(y).matches){delete t.dataset.navFit;return}p();let l=0;for(t.dataset.navFit="0";!d()&&l<Y;)t.dataset.navFit=String(++l)};let f=!1;const r=()=>{f||(f=!0,requestAnimationFrame(()=>{f=!1,m()}))};m(),addEventListener("resize",r),addEventListener("load",r),document.fonts?.ready?.then(r),setTimeout(r,400),setTimeout(r,1500)}export function applyMenuLook(t,n,o){const e=R(n?.look);if(!t||!e||n.orientation==="vertical")return;const s=e.bar||(e.strip==="none"?"pill":"");if(s&&t.classList.add(`dm-nav-bar-${s}`),$.includes(s)&&t.classList.add("dm-nav-tray"),(s==="segmented"||s==="underline")&&U(t,s),s==="dock"&&I(t),e.shrink&&H(t),e.brand==="pill"&&t.classList.add("dm-nav-brand-pill"),e.icons&&X(t,o,e.icons),F(e)&&D(t),s&&V(t),e.dropdown!=="cards")return;t.classList.add("dm-nav-cards");const i=new Map;if(t.querySelectorAll(".navbar-nav > .navbar-dropdown").forEach(m=>{const f=m.querySelector(":scope > .navbar-dropdown-toggle"),r=o?.[Number(f?.dataset.path)],l=r&&O(m,r,e);l&&i.set(m,l)}),!i.size)return;const p=new Map,d=new MutationObserver(m=>{let f=null,r=null;for(const h of m){const a=h.target;if(!i.has(a))continue;const c=a.classList.contains("open"),u=(h.oldValue||"").split(/\s+/).includes("open");c&&!u&&(f=a),!c&&u&&(r=a)}if(r&&delete i.get(r).dataset.ncMorph,!f)return;const l=i.get(f);A(f,l),e.morph&&r&&p.has(r)&&W(p.get(r),l),matchMedia(y).matches&&p.set(f,l.getBoundingClientRect())});for(const m of i.keys())d.observe(m,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0});addEventListener("resize",()=>{for(const[m,f]of i)m.classList.contains("open")&&A(m,f)})}
|
package/public/js/menu-look.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LOOK_BARS=["pill","segmented","underline","dock","neon"],TRAY_BARS=["pill","segmented","dock","neon"],LOOK_BRANDS=["pill"],LOOK_STRIPS=["none","band"],LOOK_DROPDOWNS=["cards"],LOOK_TILES=["rainbow","accent","neutral","none"],FEATURE_TONES=["dark","light","accent"],DESCRIPTION_MAX=160,FEATURE_POINTS_MAX=6;const b=/^(\/|#|https?:\/\/|mailto:)/,o=(t,
|
|
1
|
+
export const LOOK_BARS=["pill","segmented","underline","dock","neon"],TRAY_BARS=["pill","segmented","dock","neon"],LOOK_BRANDS=["pill"],LOOK_STRIPS=["none","band"],LOOK_DROPDOWNS=["cards"],LOOK_TILES=["rainbow","accent","neutral","none"],LOOK_ICONS=["rainbow","accent"],FEATURE_TONES=["dark","light","accent"],DESCRIPTION_MAX=160,FEATURE_POINTS_MAX=6;const b=/^(\/|#|https?:\/\/|mailto:)/,o=(t,n=120)=>typeof t=="string"?t.trim().slice(0,n):"";export function normaliseLook(t){if(!t||typeof t!="object"||Array.isArray(t))return null;const n={};return LOOK_BARS.includes(t.bar)&&(n.bar=t.bar),LOOK_BRANDS.includes(t.brand)&&(n.brand=t.brand),LOOK_STRIPS.includes(t.strip)&&(n.strip=t.strip),t.shrink===!0&&(n.shrink=!0),LOOK_ICONS.includes(t.icons)&&(n.icons=t.icons),LOOK_DROPDOWNS.includes(t.dropdown)&&(n.dropdown=t.dropdown),n.dropdown&&(LOOK_TILES.includes(t.tiles)&&t.tiles!=="rainbow"&&(n.tiles=t.tiles),t.morph===!0&&(n.morph=!0)),Object.keys(n).length?n:null}export function lookProblems(t){if(t==null)return[];if(typeof t!="object"||Array.isArray(t))return["look must be an object"];const n=[];return t.bar!=null&&t.bar!==""&&!LOOK_BARS.includes(t.bar)&&n.push(`look.bar must be one of: ${LOOK_BARS.join(", ")}`),t.brand!=null&&t.brand!==""&&!LOOK_BRANDS.includes(t.brand)&&n.push(`look.brand must be one of: ${LOOK_BRANDS.join(", ")}`),t.strip!=null&&t.strip!==""&&!LOOK_STRIPS.includes(t.strip)&&n.push(`look.strip must be one of: ${LOOK_STRIPS.join(", ")}`),t.dropdown!=null&&t.dropdown!==""&&!LOOK_DROPDOWNS.includes(t.dropdown)&&n.push(`look.dropdown must be one of: ${LOOK_DROPDOWNS.join(", ")}`),t.tiles!=null&&t.tiles!==""&&!LOOK_TILES.includes(t.tiles)&&n.push(`look.tiles must be one of: ${LOOK_TILES.join(", ")}`),t.icons!=null&&t.icons!==""&&!LOOK_ICONS.includes(t.icons)&&n.push(`look.icons must be one of: ${LOOK_ICONS.join(", ")}`),t.morph!=null&&typeof t.morph!="boolean"&&n.push("look.morph must be true or false"),t.shrink!=null&&typeof t.shrink!="boolean"&&n.push("look.shrink must be true or false"),n}function d(t){if(!t||typeof t!="object")return null;const n=o(t.text,60),r=o(t.url,500);return n&&b.test(r)?{text:n,url:r}:null}export function normalisePanel(t){if(!t||typeof t!="object"||Array.isArray(t))return null;const n={},r=o(t.heading,80);r&&(n.heading=r);const e=d(t.link);e&&(n.link=e);const c=Number(t.columns);Number.isInteger(c)&&c>=1&&c<=4&&(n.columns=c);const u=o(t.chipsLabel,60);u&&(n.chipsLabel=u);const s=t.feature;if(s&&typeof s=="object"&&!Array.isArray(s)){const i={};FEATURE_TONES.includes(s.tone)&&s.tone!=="dark"&&(i.tone=s.tone);const l=o(s.eyebrow,60),f=o(s.title,80);l&&(i.eyebrow=l),f&&(i.title=f);const p=(Array.isArray(s.points)?s.points:[]).map(h=>o(h,100)).filter(Boolean).slice(0,6);p.length&&(i.points=p);const a=d(s.button);a&&(i.button=a),(i.title||i.points||i.button)&&(n.feature=i)}return Object.keys(n).length?n:null}export function itemLookProblems(t,n){const r=[];if(t.description!=null&&typeof t.description!="string"?r.push("description must be a string"):typeof t.description=="string"&&t.description.length>160&&r.push("description must be at most 160 characters"),t.tile!=null&&t.tile!==""&&!n(t.tile)&&r.push("tile must be a preset key or #rrggbb"),t.chip!=null&&typeof t.chip!="boolean"&&r.push("chip must be true or false"),t.panel!=null){const e=t.panel;if(typeof e!="object"||Array.isArray(e))r.push("panel must be an object");else{e.columns!=null&&e.columns!==""&&!(Number.isInteger(Number(e.columns))&&e.columns>=1&&e.columns<=4)&&r.push("panel.columns must be 1 to 4");for(const[c,u]of[["link",e.link],["feature.button",e.feature?.button]])u&&typeof u=="object"&&u.url&&!b.test(String(u.url))&&r.push(`panel.${c}.url must start with /, #, http(s)://, or mailto:`);e.feature?.tone!=null&&e.feature.tone!==""&&!FEATURE_TONES.includes(e.feature.tone)&&r.push(`panel.feature.tone must be one of: ${FEATURE_TONES.join(", ")}`),e.feature?.points!=null&&!Array.isArray(e.feature.points)&&r.push("panel.feature.points must be a list")}}return r}export const TILE_RAINBOW=["#f26b3a","#8b5cf6","#3b82f6","#10b981","#f59e0b","#ec4899","#06b6d4","#84cc16"];export function floatsWithoutStrip(t){return t?t.strip==="none"||TRAY_BARS.includes(t.bar)&&t.strip!=="band":!1}export function cardColumns(t,n){return n?.columns?n.columns:t<=4?Math.max(1,Math.min(2,t)):3}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{FONT_MAP as c,CMS_WEB_FONTS as p,SIZE_MAP as a,WEIGHT_MAP as f,COLOUR_TOKENS as g,SPACING_MAP as h}from"./text-style.mjs?v=
|
|
1
|
+
import{FONT_MAP as c,CMS_WEB_FONTS as p,SIZE_MAP as a,WEIGHT_MAP as f,COLOUR_TOKENS as g,SPACING_MAP as h}from"./text-style.mjs?v=20261029-more-fonts";export{p as CMS_WEB_FONTS};export function loadScribeFont(e,t=globalThis.document){if(!t||!p.includes(e))return;const i=`dm-scribe-font-${e.toLowerCase().replace(/[^a-z0-9]+/g,"-")}`;if(t.getElementById(i))return;const n=t.createElement("link");n.id=i,n.rel="stylesheet",n.href=`https://fonts.googleapis.com/css2?family=${encodeURIComponent(e).replace(/%20/g,"+")}&display=swap`,t.head?.appendChild(n)}export const SCRIBE_STYLE_FIELDS=[{name:"font",key:"font",label:"Font",type:"select",default:"",options:[["","Inherit"],["system","System"],["serif","Serif"],["mono","Monospace"],...Object.keys(c).map(e=>[e,e])]},{name:"size",key:"size",label:"Font size (e.g. 3xl, 48px, 3rem)",type:"text",default:""},{name:"weight",key:"weight",label:"Font weight",type:"select",default:"",options:[["","Inherit"],...Object.keys(f).map(e=>[e,e])]},{name:"colour",key:"colour",label:"Text colour (name or hex)",type:"text",default:""},{name:"italic",key:"italic",label:"Italic",type:"checkbox",default:!1},{name:"align",key:"align",label:"Alignment",type:"select",default:"",options:[["","Inherit"],["left","Left"],["center","Centre"],["right","Right"]]},{name:"line-height",key:"lineHeight",label:"Line height (e.g. 1.5)",type:"text",default:""},{name:"spacing",key:"spacing",label:"Letter spacing (e.g. wide, .05em)",type:"text",default:""}];const r=/^(?:\d+(?:\.\d+)?|\.\d+)(?:px|pt|rem|em|vw|vh|%)$/i,u={...c,system:"system-ui,sans-serif",serif:"serif",mono:"monospace"};export function buildScribeStyle(e={}){const t=[],i=e.size||e["font-size"];a[i]?t.push(`font-size:${a[i]}`):r.test(String(i||""))&&t.push(`font-size:${i}`),u[e.font]&&t.push(`font-family:${u[e.font]}`);const n=f[e.weight]||(/^[1-9]00$/.test(String(e.weight||""))?e.weight:"");n&&t.push(`font-weight:${n}`),(e.italic===!0||e.italic==="true")&&t.push("font-style:italic");const l=e.colour||e.color;g[l]?t.push(`color:${g[l]}`):/^(?:#[\da-f]{3,4}|#[\da-f]{6}|#[\da-f]{8}|[a-z]+)$/i.test(String(l||""))&&t.push(`color:${l}`);const s=e["line-height"]||e.lineHeight;(/^(?:\d+(?:\.\d+)?|\.\d+)$/.test(String(s||""))||r.test(String(s||"")))&&t.push(`line-height:${s}`);const o=e.spacing;return h[o]?t.push(`letter-spacing:${h[o]}`):/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:px|rem|em)$/i.test(String(o||""))&&t.push(`letter-spacing:${o}`),["left","center","right"].includes(e.align)&&t.push(`display:block;text-align:${e.align}`),t.join(";")}
|
package/public/js/site.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{applyMobileMenu as ne,initCarouselPopup as ae}from"/public/js/mobile-ui.mjs?v=20261016-mobile-options";import{installSmoothCarets as se}from"/public/js/smooth-caret.js";import{decodeBase64Json as V}from"/public/js/utf8-base64.mjs";import{makeBadgeEl as U,applyColour as G,applyPill as ie,applyFloat as re,applyHighlight as Y,applyItemHighlight as ce,itemHighlightAttrs as le,isCurrentItem as K,menuAlign as de,applyClasses as P,cssClasses as X,applyEntrance as J}from"/public/js/menu-decor.mjs?v=20261014-menu-entrance";import{applyMenuLook as me}from"/public/js/menu-cards.mjs?v=20261029-glider-layout";import{initPageMotion as ue}from"/public/js/page-motion.mjs?v=20261029-page-motion";import{applyFooterShowcase as pe}from"/public/js/footer-showcase.mjs?v=20261029-footer-showcase";import{initFloatingMenus as fe}from"/public/js/menu-float.js?v=20260829-float-panel";import{enhancePickerFields as Q,markInvalidFields as Z,showValidationPopup as ee}from"/public/js/forms.js?v=20261025-forms-files-total";import{buildWizardSteps as he}from"/public/js/form-steps.mjs";import{mountMotionControl as ge}from"/public/js/motion-control.mjs?v=20261029-motion-under-switcher";import{applyFormClasses as te,applySubmitButtons as ye,applyWizardButtons as ve}from"/public/js/form-submit.mjs";import{captureFileFields as oe,destroyDropzones as be,fileBlueprint as we,restoreFileFields as Ce,setFileLimits as Se,splitFiles as xe,submitBody as ke,totalTooLarge as Le,wireFileFields as $e}from"/public/js/form-files.mjs";document.addEventListener("click",m=>{const i=m.target?.closest?.(".dm-banner__dismiss");i&&(m.preventDefault(),i.closest(".dm-banner")?.remove())}),$(()=>{se(document);const m=window.__CMS_NAV__||{},i=window.__CMS_SITE__||{},M=i.brandingEnabled!==!1&&m.brand?.enabled!==!1;if(i.autoTheme?.enabled){let o=function(c){const d=(c||"07:00").split(":");return+d[0]*60+(+d[1]||0)},e=function(){const c=new Date,d=c.getHours()*60+c.getMinutes();return d>=o(s.dayStart)&&d<o(s.nightStart)?s.dayTheme:s.nightTheme},t=function(c){const d=s.apply&&s.apply[c]||{theme:c,custom:""};Domma.theme.set(d.theme);for(const n of[...document.body.classList])n.startsWith("dm-custom-")&&document.body.classList.remove(n);d.custom&&document.body.classList.add(d.custom)};const s=i.autoTheme;t(e()),setInterval(()=>t(e()),6e4)}const L=$("#site-navbar");if(L.length&&m.brand){let e=function(u,f=0){return Array.isArray(u)?u.filter(h=>!(h&&(h.type==="spacer"||h.type==="theme-switcher"))).filter(h=>!(h&&h.type==="separator"&&f===0)).map(h=>h&&h.type==="separator"?{divider:!0}:Array.isArray(h?.items)?{...h,items:e(h.items,f+1)}:h):u};const s={...m.brand},o=s.size&&s.size!=="md"?` navbar-brand-${s.size}`:"";if(s.logo||s.icon||s.tagline){let u="";s.logo?u+=`<img src="${s.logo}" class="navbar-brand-logo" alt="${s.text||""}">`:s.icon&&(u+=`<span data-icon="${s.icon}" style="width:1.1em;height:1.1em;margin-right:.35em;vertical-align:middle;"></span>`),s.text&&(u+=`<span class="navbar-brand-text${o}">${s.text}</span>`),s.tagline&&(u+=`<small class="navbar-brand-tagline">${s.tagline}</small>`),s.html=u}else o&&s.text&&(s.html=`<span class="navbar-brand-text${o}">${s.text}</span>`);const t=e(m.items||[]),c=m.position==="floating",d=m.orientation==="vertical";L.get(0).querySelector(":scope > .cms-nojs-links")?.remove(),Domma.elements.navbar("#site-navbar",{brand:M?s:null,items:t,variant:m.variant||"dark",position:c?"static":m.position||"sticky",collapsible:!0,appearOnHover:!!m.appearOnHover}),Domma.icons.scan("#site-navbar");const n=L.get(0);ne(n,m.mobile);const y=()=>{if(!d)return;const f=n.querySelector('a[aria-current="page"]')?.closest(".navbar-dropdown");f&&!f.classList.contains("open")&&f.querySelector(":scope > .navbar-dropdown-toggle")?.click()};n.classList.add(`dm-nav-align-${de(m)||"centre"}`),d&&L.get(0).classList.add("dm-nav-vertical",m.side==="right"?"dm-nav-vertical-right":"dm-nav-vertical-left");const g=m.dock||{};d&&!c&&Ee(n,m.side==="right"),!d&&g.hideOnScroll&&Ae(n),Y(n,m),J(n,m),P(n,m.class),c&&(re(L.get(0),m),fe(L.get(0).parentNode||document));const l=n.querySelector(".navbar-toggle"),b=n.querySelector(".navbar-collapse");if(l&&b){let u=null;const f=()=>{b.classList.contains("show")&&l.click()},h=()=>{u&&(u.remove(),u=null),document.body.classList.remove("dm-drawer-open")},p=()=>{u||(u=document.createElement("div"),u.className="dm-navbar-backdrop",u.addEventListener("click",f),document.body.appendChild(u),document.body.classList.add("dm-drawer-open"))};l.addEventListener("click",()=>{requestAnimationFrame(()=>{b.classList.contains("show")?(y(),p()):h()})}),b.addEventListener("click",k=>{k.target.closest("a")&&requestAnimationFrame(h)}),document.addEventListener("keydown",k=>{k.key==="Escape"&&b.classList.contains("show")&&f()})}const w=n.querySelector(".navbar-nav");if(w){const u=Array.from(w.children);let f=0;for(const h of m.items||[])if(!(h&&h.type==="separator")){if(h&&h.type==="spacer"){const p=document.createElement("li"),k=["xs","sm","md","lg","xl","flex"].includes(h.size)?h.size:"md";p.className=`dm-menu-spacer dm-menu-spacer--${k}`,p.setAttribute("aria-hidden","true"),w.insertBefore(p,u[f]||null);continue}if(h&&h.type==="theme-switcher"){const p=document.createElement("li");p.className="dm-menu-theme-switcher";const k=document.createElement("span");k.dataset.themeSwitcher="menu",k.dataset.position="inline",p.appendChild(k),w.insertBefore(p,u[f]||null);continue}f++}window.CMSThemeSwitcher?.scan(w)}n.querySelectorAll("[data-path]").forEach(u=>{const f=u.dataset.path.split(".").map(Number),h=f.length>1,p=f.reduce((q,r)=>q?.items?.[r],{items:t});if(!p)return;p.colour&&G(u,p.colour),p.pill&&!h&&ie(u,p.pill),ce(u,p),P(u.closest("li"),p.class);const k=U(p.badge);k&&u.appendChild(k),K(p.url,location.pathname)&&(u.classList.add("active"),u.setAttribute("aria-current","page"))}),me(n,m,t),y()}let I=null;const C=$("#site-footer");if(C.length){let c=function(r){return String(r??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},d=function(r){return c(r).replace(/'/g,"'")},n=function(r){if(r&&r.type==="separator")return'<li class="footer-sep"><hr></li>';if(r&&r.type==="spacer")return`<li class="dm-menu-spacer dm-menu-spacer--${["xs","sm","md","lg","xl","flex"].includes(r.size)?r.size:"md"}" aria-hidden="true"></li>`;if(r&&r.type==="theme-switcher")return'<li class="dm-menu-theme-switcher"><span data-theme-switcher="menu" data-position="inline"></span></li>';const D=d(r.url||"#"),v=c(r.text||""),x=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(n).join("")}</ul>`:"",N=le(r),O=[N.hover&&` data-menu-item-hover="${d(N.hover)}"`,N.active&&` data-menu-item-active="${d(N.active)}"`].filter(Boolean).join(""),j=N.accent?` style="--dm-menu-highlight:${d(N.accent)}"`:"",W=X(r.class).join(" ");return`<li${W?` class="${d(W)}"`:""}><a href="${D}"${O}${j}>${v}</a>${x}</li>`},g=function(){if(!i.footer)return"";const r=Object.keys(o).filter(v=>s[v]);if(!r.length)return"";const D=X(i.footer.socialClass).join(" ");return`<div class="footer-social">${r.map(v=>{const{label:x,svg:N}=o[v];return`<a href="${s[v]}" target="_blank" rel="noopener noreferrer" aria-label="${x}" class="footer-social-link${D?` ${d(D)}`:""}">${N}</a>`}).join("")}</div>`},u=function(r){if(!r||r.type==="separator"||r.type==="spacer")return"";if(r.type==="theme-switcher")return`<li class="cms-footer-col">${n(r).replace(/^<li[^>]*>|<\/li>$/g,"")}</li>`;const D=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(n).join("")}</ul>`:"",v=w(r)?`<span class="cms-footer-col-title">${c(r.text||"")}</span>`:`<a class="cms-footer-col-title" href="${d(r.url||"#")}">${c(r.text||"")}</a>`,x=["cms-footer-col",...X(r.class)].join(" ");return`<li class="${d(x)}">${v}${D}</li>`},p=function(r,D,v=!1){return(r||[]).forEach(x=>{x&&(x.type==="separator"||x.type==="spacer"||x.type==="theme-switcher")||(v&&w(x)||D.push(x),Array.isArray(x.items)&&x.items.length&&p(x.items,D))}),D};const s=i.social||{},o={twitter:{label:"X / Twitter",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.742l7.73-8.835L1.254 2.25H8.08l4.259 5.629L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>'},facebook:{label:"Facebook",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>'},instagram:{label:"Instagram",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>'},linkedin:{label:"LinkedIn",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>'},github:{label:"GitHub",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>'},youtube:{label:"YouTube",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg>'}};let e='<div class="footer-inner container">';const t=window.__CMS_FOOTER__||{primary:[],legal:[],copyright:""},y=(()=>{const r=i.cookieConsent;if(!r||r.showSettingsLink===!1)return"";const D=v=>(v||[]).some(x=>x&&(x.url==="#cookie-settings"||D(x.items)));return D(t.primary)||D(t.legal)?"":`<li class="cms-cookie-settings"><a href="#cookie-settings">${c(r.settingsLinkText||"Cookie settings")}</a></li>`})(),l=["columns","row"].includes(i.footer?.layout)?i.footer.layout:"auto",b=i.footer?.look==="showcase"||l==="columns"||l==="auto"&&t.primary.some(r=>Array.isArray(r?.items)&&r.items.length),w=r=>b&&!r.url&&Array.isArray(r.items)&&r.items.length>0;if(b){const r=m.brand||{},D=M&&(r.text||i.title)||"",v=M?r.logo?`<img src="${d(r.logo)}" class="cms-footer-brand-logo" alt="">`:r.icon?'<span class="cms-footer-brand-icon"></span>':"":"",x=String(i.footer?.blurb||"").trim();e='<div class="footer-inner footer-inner--columns container"><div class="cms-footer-top">',e+=`<div class="cms-footer-brand">${D||v?`<a class="cms-footer-brand-name" href="${d(r.url||"/")}">${v}<span>${c(D)}</span></a>`:""}${x?`<p class="cms-footer-blurb">${c(x)}</p>`:""}${g()}</div>`,t.primary.length&&(e+=`<nav class="footer-nav footer-nav--primary footer-nav--columns" aria-label="Footer"><ul>${t.primary.map(u).join("")}</ul></nav>`),e+='</div><div class="cms-footer-bottom">',t.copyright&&(e+=`<p class="cms-footer-copyright">${c(t.copyright)}</p>`),(t.legal.length||y)&&(e+=`<nav class="footer-nav footer-nav--legal" aria-label="Legal"><ul>${t.legal.map(n).join("")}${y}</ul></nav>`),e+="</div>"}else t.copyright&&(e+=`<p>${c(t.copyright)}</p>`),t.primary.length&&(e+=`<nav class="footer-nav footer-nav--primary"><ul>${t.primary.map(n).join("")}</ul></nav>`),(t.legal.length||y)&&(e+=`<nav class="footer-nav footer-nav--legal"><ul>${t.legal.map(n).join("")}${y}</ul></nav>`),e+=g();e+="</div>",C.get(0).querySelector(":scope > .cms-nojs-links")?.remove();const f=C.get(0).querySelector(":scope > .cms-footer-blocks");f?.remove(),C.html(e),f&&C.get(0).prepend(f),window.CMSThemeSwitcher?.scan(C.get(0));const h=C.get(0).querySelector(".cms-footer-brand-icon");h&&m.brand?.icon&&h.setAttribute("data-icon",m.brand.icon),P(C.get(0),i.footer?.class),b&&pe(C.get(0),i);const k=[...p(t.primary,[],!0),...p(t.legal,[])];C.get(0).querySelectorAll(".footer-nav a").forEach((r,D)=>{const v=k[D];if(!v)return;v.colour&&G(r,v.colour);const x=U(v.badge);x&&r.appendChild(x),K(v.url,location.pathname)&&(r.classList.add("is-active"),r.setAttribute("aria-current","page"))}),Y(C.get(0).querySelector(".footer-nav--primary"),{highlight:t.primaryHighlight}),Y(C.get(0).querySelector(".footer-nav--legal"),{highlight:t.legalHighlight}),J(C.get(0).querySelector(".footer-nav--primary"),{entrance:t.primaryEntrance}),J(C.get(0).querySelector(".footer-nav--legal"),{entrance:t.legalEntrance}),P(C.get(0).querySelector(".footer-nav--primary"),t.primaryClass),P(C.get(0).querySelector(".footer-nav--legal"),t.legalClass),I=C.get(0).querySelector(".cms-footer-bottom")||C.get(0).querySelector(".footer-inner")}ge(i.motion||{enabled:i.footer?.showMotionToggle!==!1,default:i.footer?.motionDefault,placement:"footer",control:i.footer?.motionControl,label:"Reduce motion"},{footer:I,navbar:document.querySelector("#site-navbar .navbar-container")?.closest("#site-navbar")||null});const A=document.getElementById("site-sidebar");A&&Te(A),Domma.icons.scan(),Domma.syntax?.scan&&Domma.syntax.scan();const a=$(".page-body");if(a.length){a.find(".accordion").each(function(){Domma.elements.accordion(this,{allowMultiple:this.dataset.multi==="true"})}),a.find(".tabs").each(function(){Domma.elements.tabs(this)}),a.find(".carousel").each(function(){const o={primary:"--dm-primary",secondary:"--dm-secondary",accent:"--dm-primary",text:"--dm-text",surface:"--dm-surface",background:"--dm-background",success:"--dm-success",warning:"--dm-warning",danger:"--dm-danger",info:"--dm-info"},e=g=>{const l=String(g||"").trim();return l?o[l.toLowerCase()]?`var(${o[l.toLowerCase()]})`:CSS.supports("color",l)?l:"":""},t=e(this.dataset.background),c=e(this.dataset.arrowBackground),d=e(this.dataset.arrowColor);t&&(this.style.setProperty("--dm-carousel-background",t),this.classList.add("dm-carousel-custom-background")),c&&this.style.setProperty("--dm-carousel-arrow-background",c),d&&this.style.setProperty("--dm-carousel-arrow-color",d);const n=["top","middle","bottom"].includes(this.dataset.arrowPosition)?this.dataset.arrowPosition:"middle";this.classList.add(`dm-carousel-arrows-${n}`);const y={autoplay:this.dataset.autoplay==="true",interval:parseInt(this.dataset.interval,10)||5e3,loop:this.dataset.loop!=="false",animation:this.dataset.animation||"slide",heightMode:this.dataset.heightMode==="average"?"average":"crop"};if(this.dataset.height){const g=Number(this.dataset.height);Number.isFinite(g)&&g>0&&(y.height=g)}if(this.dataset.animationDuration){const g=parseInt(this.dataset.animationDuration,10);Number.isFinite(g)&&(y.animationDuration=g)}this.dataset.animationEasing&&(y.animationEasing=this.dataset.animationEasing),this.dataset.ctx&&(this._dmCtxSlides=Array.from(this.querySelectorAll(".carousel-slide")).map(g=>g.cloneNode(!0)),this._dmCarouselOpts=y),this._dmCarousel=Domma.elements.carousel(this,y),ae(this)}),a.find(".dm-countdown").each(function(){const o={autoStart:!0},e=String(this.dataset.format||"").trim(),t=String(this.dataset.to||"").trim(),c=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t),d=c?new Date(+c[1],+c[2]-1,+c[3]).getTime():t?new Date(t).getTime():NaN;Number.isFinite(d)?o.duration=Math.max(0,d-Date.now()):this.dataset.duration&&(o.duration=(parseInt(this.dataset.duration,10)||0)*1e3);const n=/^dd:/i.test(e);o.format=n?"hh:mm:ss":e||(o.duration>=36e5?"hh:mm:ss":"mm:ss");const y=this,g=b=>String(b).padStart(2,"0"),l=b=>{const w=Math.max(0,Math.floor(b/1e3)),u=y.querySelector(".dm-timer-time");u&&(u.textContent=`${g(Math.floor(w/86400))}:${g(Math.floor(w%86400/3600))}:${g(Math.floor(w%3600/60))}:${g(w%60)}`)};n&&(o.onTick=l),Domma.elements.timer(this,o),n&&l(o.duration||0)}),a.find("[data-tooltip]:not(.dm-range-slider)").each(function(){Domma.elements.tooltip(this,{content:$(this).data("tooltip"),position:$(this).data("tooltip-position")||"top"})}),a.find(".dm-progression").each(function(){const o=Array.from(this.querySelectorAll(".dm-progression-item")).map(c=>{const d={title:c.querySelector(".dm-progression-item-title")?.textContent?.trim()||"",description:c.querySelector(".dm-progression-item-body")?.innerHTML?.trim()||""};return c.dataset.date&&(d.date=c.dataset.date),c.dataset.status&&(d.status=c.dataset.status),c.dataset.eventIcon&&(d.icon=c.dataset.eventIcon),c.dataset.entryId&&(d._entryId=c.dataset.entryId),d}),e=this.dataset.layout==="centred"?"centered":this.dataset.layout||"vertical",t=Domma.elements.progression(this,{layout:e,theme:this.dataset.theme||"minimal",mode:this.dataset.mode||"timeline",statusIcons:!0,allowHtml:!0,...o.length?{items:o}:{}});if((this.dataset.mode||"timeline")==="timeline"){const c={completed:{label:"Completed",icon:"check-circle",tone:"success"},planned:{label:"Planned",icon:"circle",tone:"secondary"},"in-progress":{label:"In progress",icon:"clock",tone:"primary"},blocked:{label:"Blocked",icon:"alert-circle",tone:"danger"}};this.querySelectorAll(".dm-progression-item").forEach((d,n)=>{const y=o[n];if(!y)return;const g=d.querySelector(".dm-progression-title");if(y.icon&&g){const b=document.createElement("span");b.dataset.icon=y.icon,b.style.cssText="display:inline-flex;vertical-align:middle;margin-right:.4em",b.setAttribute("aria-hidden","true"),g.prepend(b)}const l=c[y.status];if(l&&g){const b=document.createElement("span");b.className=`badge badge-${l.tone} cms-timeline-status`,b.style.cssText="display:inline-flex;align-items:center;gap:.35em;margin:.4rem 0";const w=document.createElement("span");w.dataset.icon=l.icon,w.dataset.iconSize="14",w.setAttribute("aria-hidden","true"),b.append(w,document.createTextNode(l.label)),g.after(b)}})}Domma.icons.scan(this),o.length&&(this._dmCtx={instance:t,items:o})});try{Domma.effects.reveal(".page-body .hero",{animation:"slide-up",duration:480,threshold:.06,stagger:60,once:!1})}catch{}const s=matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion");document.querySelectorAll(".page-body .row[data-reveal]").forEach(o=>{const e=o.dataset.revealMode||"stagger",t=o.dataset.revealAnimation||"slide-up",c=parseInt(o.dataset.revealDuration,10)||(t.startsWith("swoosh")?700:400),d=parseInt(o.dataset.revealStagger,10)||(t.startsWith("swoosh")?90:60),n=parseInt(o.dataset.revealDelay,10)||0,y=o.dataset.revealDirection==="rtl",g=o.dataset.revealReplay==="true",l=Array.from(o.children);if(s&&t.startsWith("swoosh"))return;const b={"slide-up":"translateY(30px)","slide-down":"translateY(-30px)","slide-left":"translateX(30px)","slide-right":"translateX(-30px)",zoom:"scale(0.85)",flip:"perspective(600px) rotateX(15deg)",swoosh:"translateY(36px) scale(0.96)"},w=p=>t!=="swoosh-sides"?b[t]||"":l.length>1&&p===0?"translateX(-64px) rotate(-1.5deg)":l.length>1&&p===l.length-1?"translateX(64px) rotate(1.5deg)":"translateY(40px) scale(0.94)",u=t.startsWith("swoosh"),f=u?"cubic-bezier(.2,.8,.2,1)":"ease",h=(p,k)=>{p.style.opacity="0",p.style.transform=w(k),u&&(p.style.filter="blur(10px)")};l.forEach((p,k)=>{h(p,k),p.style.transition=`opacity ${c}ms ${f}, transform ${c}ms ${f}`+(u?`, filter ${c}ms ${f}`:"");const q=y?l.length-1-k:k;p.style.transitionDelay=e==="stagger"?`${n+q*d}ms`:`${n}ms`}),requestAnimationFrame(()=>requestAnimationFrame(()=>{const p=new IntersectionObserver(k=>{k.forEach(q=>{if(q.isIntersecting){if(q.target.offsetWidth,q.target.style.opacity="1",q.target.style.transform="",u&&(q.target.style.filter=""),!g){p.unobserve(q.target);const r=q.target;r.addEventListener("transitionend",function D(v){v.target!==r||v.propertyName!=="opacity"||(r.removeEventListener("transitionend",D),r.style.transition="",r.style.transitionDelay="")})}}else g&&q.boundingClientRect.top>0&&h(q.target,l.indexOf(q.target))})},{threshold:.1});l.forEach(k=>p.observe(k))}))}),ue(document.querySelector(".page-body")||document),a.find(".card[data-collapsible]").each(function(){const o=this.querySelector(".card-header");o&&o.addEventListener("click",()=>this.classList.toggle("is-collapsed"))}),a.find(".dm-so-trigger").each(function(){this.addEventListener("click",()=>{const o=this.dataset.soTarget,e=document.getElementById(o);if(!e)return;const t=E.slideover({title:e.dataset.soTitle||"",size:e.dataset.soSize||"md",position:e.dataset.soPosition||"right"});e.style.display="",t.setContent(e),t.open()})})}if(typeof $.setup=="function"){const s=Object.assign({},window.__CMS_DCONFIG__||{});if(document.querySelectorAll(".dm-page-config[data-config]").forEach(o=>{try{const e=V(o.dataset.config);Object.assign(s,e)}catch{}}),Object.keys(s).length>0){const o={};for(const[e,t]of Object.entries(s)){const c=t?.events?.click,{confirm:d,toast:n,alert:y,prompt:g,...l}=c||{};if(d||n||y||g){$(e).on("click",async function(W){if(W.preventDefault(),d&&!await E.confirm(d))return;let z=null;if(!(g&&(z=await E.prompt(g,{inputPlaceholder:l.promptPlaceholder||"",inputValue:l.promptDefault||""}),z===null))){{const B=$(l.target||this);l.toggleClass&&B.toggleClass(l.toggleClass),l.addClass&&B.addClass(l.addClass),l.removeClass&&B.removeClass(l.removeClass),z!==null&&(l.setText&&B.text(z),l.setVal&&B.val(z),l.setAttr&&B.attr(l.setAttr,z))}l.href&&(window.location.href=l.href),n&&E.toast(n,{type:l.toastType||"success"}),y&&E.alert(y)}});const{target:w,toggleClass:u,addClass:f,removeClass:h,setText:p,setVal:k,setAttr:q,href:r,toastType:D,promptPlaceholder:v,promptDefault:x,...N}=l,O={...t.events};Object.keys(N).length?O.click=w?{target:w,...N}:N:delete O.click;const j={...t,events:O};Object.keys(O).length||delete j.events,Object.keys(j).length&&(o[e]=j)}else o[e]=t}$.setup(o)}}a.length&&R(a.get(0))}),window.wireCTAButtons=R;function R(m){m.querySelectorAll(".dm-cta-trigger").forEach(i=>{i.__ctaWired||(i.__ctaWired=!0,i.addEventListener("click",async()=>{const M=i.dataset.action,L=i.dataset.entry,I=i.dataset.confirm;let C=S.get("auth_token");if(!C){E.toast("Please log in to perform this action.",{type:"warning"});return}if(I&&!await E.confirm(I))return;const A=Array.from(i.childNodes).map(s=>s.cloneNode(!0));i.disabled=!0,i.textContent="Running\u2026";const a=s=>fetch(`/api/actions/${M}/public`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(i.dataset.scope?{entryId:L,scope:i.dataset.scope}:{entryId:L})});try{let s=await a(C);if(s.status===401){const e=S.get("auth_refresh_token");if(e){const t=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:e})});if(t.ok){const{token:c}=await t.json();S.set("auth_token",c),C=c,s=await a(C)}}}const o=await s.json().catch(()=>({}));if(!s.ok||o.success===!1)throw new Error(o.error||o.message||`Error ${s.status}`);E.toast(o.message||"Action completed.",{type:"success"})}catch(s){E.toast(s.message||"Action failed.",{type:"error"})}finally{i.disabled=!1,i.textContent="",A.forEach(s=>i.appendChild(s)),Domma.icons.scan(i)}}))})}(function(){const i=document.querySelectorAll('.dm-collection-hydrate[data-collection-scope="mine"]');if(!i.length)return;const M=S.get("auth_token");function L(C,A){const a=document.createElement("div");a.className="dm-collection-display dm-collection-empty";const s=document.createElement("p");if(A){s.appendChild(document.createTextNode("Please "));const o=document.createElement("a");o.href="/login",o.textContent="sign in",s.appendChild(o),s.appendChild(document.createTextNode(" to view your entries."))}else s.textContent=C;return a.appendChild(s),a}function I(C,A){const a=document.createElement("template");a.innerHTML=A||"",C.replaceWith(a.content)}i.forEach(async C=>{const A=C.dataset.collectionAttrs;if(!A)return;if(!M){C.replaceChildren(L("",!0));return}const a=s=>fetch("/api/collections/render-scope",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({attrs:A})});try{let s=M,o=await a(s);if(o.status===401){const t=S.get("auth_refresh_token");if(t){const c=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:t})});if(c.ok){const{token:d}=await c.json();S.set("auth_token",d),s=d,o=await a(s)}}}if(!o.ok){const{error:t}=await o.json().catch(()=>({}));C.replaceChildren(L(t||"Unable to load entries.",!1));return}const{html:e}=await o.json();I(C,e),window.DommaCollectionBrowser?.hydrate&&window.DommaCollectionBrowser.hydrate(document)}catch{C.replaceChildren(L("Unable to load entries.",!1))}}),setTimeout(()=>{typeof Domma<"u"&&Domma.icons?.scan&&Domma.icons.scan(),typeof Domma<"u"&&Domma.syntax?.scan&&Domma.syntax.scan(),R(document.body)},100)})(),(function(){const i=document.querySelectorAll("[data-collection-table]");!i.length||typeof T>"u"||!T.create||i.forEach(M=>{let L;try{L=V(M.dataset.payload)}catch{return}const{columns:I,rows:C,search:A,sortable:a,exportable:s,pageSize:o,empty:e,ctaConfig:t,slug:c,exportCfg:d}=L;if(!I?.length)return;if(t){const g=I.findIndex(l=>l.key==="_cta");g!==-1&&(I[g]={key:"_cta",title:"",render:(l,b)=>{const w=document.createElement("button");if(w.className=`btn btn-${t.style||"primary"} dm-cta-trigger`,w.dataset.action=t.action||"",t.scope&&(w.dataset.scope=t.scope),w.dataset.entry=b._entryId||"",t.confirm&&(w.dataset.confirm=t.confirm),t.icon){const u=document.createElement("span");u.dataset.icon=t.icon,w.appendChild(u),w.appendChild(document.createTextNode(" "))}return w.appendChild(document.createTextNode(t.label||"Run")),w}})}const n="col-table-"+Math.random().toString(36).slice(2,7),y=document.createElement("div");y.id=n,M.replaceChildren(y),T.create("#"+n,{data:C,columns:I,search:A,sortable:a,exportable:s,pageSize:o,emptyMessage:e}),t&&R(y),M._dmTable={columns:I,rows:C,slug:c,exportCfg:d,render(g){T.create("#"+n,{data:g,columns:I,search:A,sortable:a,exportable:s,pageSize:o,emptyMessage:e}),t&&R(y)}}})})(),(function(){const i=document.querySelectorAll("[data-form-inline]");if(!i.length||typeof F>"u")return;function M(a){const s=a&&a.logic;return!!(s&&(s.visibility||s.requirement))}function L(a,s){const o={};return(a||[]).forEach(e=>{if(e.type==="page-break"||e.type==="spacer"||!e.name)return;const t=e.type==="chooser"||!!(e.variant&&["select","radio","checkbox-group"].includes(e.type)),c=e.type==="checkbox"?"boolean":e.type==="date"||e.type==="icon"||e.type==="image"?"string":t?"chooser":e.type,d={...e.formConfig||{}};d.span==="full"&&s&&(d.span=s);const n={type:c,required:M(e)?!1:e.required,label:e.label,options:e.options,formConfig:{...e.placeholder&&{placeholder:e.placeholder},...e.helper&&{hint:e.helper},...e.tooltip&&{tooltip:e.tooltip},...d}};e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.min!==void 0&&(n.min=e.min),e.max!==void 0&&(n.max=e.max),t&&(e.variant&&(n.variant=e.variant),(e.multiple||e.type==="checkbox-group")&&(n.multiple=!0),e.density&&(n.density=e.density),e.columns&&(n.columns=e.columns),e.accent&&(n.accent=e.accent),e.accentStyle&&(n.accentStyle=e.accentStyle),e.glow&&(n.glow=!0),e.glowColour&&(n.glowColour=e.glowColour),e.shadow&&(n.shadow=e.shadow),e.shadowColour&&(n.shadowColour=e.shadowColour)),o[e.name]=e.type==="file"?we(e,n):n}),o}function I(a){const s={};return(a||[]).forEach(o=>{if(!(!o.name||o.type==="page-break"||o.type==="spacer")&&(o.type==="select"||o.type==="multiselect")&&o.required){const e=(o.options||[])[0];e&&(s[o.name]=typeof e=="object"?e.value:e)}}),s}function C(a,s){(s||[]).forEach(o=>{if(o.type!=="date"||!o.name)return;const e=a.querySelector(`[name="${o.name}"]`);e&&e.type!=="date"&&(e.type="date")})}function A(a,s,o){let e=a.querySelector(".cms-form-message");e||(e=document.createElement("p"),e.className="cms-form-message",a.appendChild(e)),e.textContent=s,e.style.cssText=o?"color:var(--dm-danger);margin-top:.75rem;":"color:var(--dm-success);margin-top:.75rem;"}i.forEach(a=>{let s;try{s=V(a.dataset.formInline)}catch{return}a.querySelector(":scope > .cms-form-embed-summary")?.remove();const o=s.fields||[],e=s.settings||{},t=Number(e.columns)===3?3:2,c=e.layout||"grid",d=o.some(u=>u.type==="page-break"),n=new Map;Se(a,s.fileLimits,n),$e(a,o);const y=async u=>{if(a.dataset.triggerBlocked==="true"){const f=a._formLogicRuntime,h=f&&f.submitBlock?f.submitBlock().reasons:[];A(a,h.join(" ")||"This form cannot be submitted yet.",!0);const p=new Error("Blocked by a form trigger");throw p.formSubmitFailed=!0,p}try{const f=a.querySelector(".fb-form-honeypot"),h=f?.querySelector('input[type="text"]')||null,p=f?.querySelector('[name="_t"]')||null,k=Object.assign({},u);delete k._t,f?.dataset.hpName&&delete k[f.dataset.hpName],h!==null&&(k._hp=h.value),p!==null&&(k._t=p.value);const q=new Map(n);oe(a,q);const r=xe(k,o,q),D=Le(a,r.files);if(D){A(a,D,!0);const x=new Error(D);throw x.formSubmitFailed=!0,x}const v=await H.post(`/api/forms/submit/${s.slug}`,r.files.size?ke(r.values,r.files).body:r.values);if(v&&v.error){A(a,v.error,!0);const x=new Error(v.error);throw x.formSubmitFailed=!0,x}if(v?.redirect){window.location.href=v.redirect;return}for(be(a);a.firstChild;)a.removeChild(a.firstChild);A(a,v?.message||e.successMessage||"Thank you for your submission.",!1)}catch(f){throw f.formSubmitFailed||A(a,f.message||"Submission failed. Please try again.",!0),f}},g=Date.now();function l(u){const f=u.querySelector("form");if(!f||f.querySelector(".fb-form-honeypot"))return;const h=document.createElement("div");h.className="fb-form-honeypot",h.setAttribute("aria-hidden","true");const p=document.createElement("input");p.name=f.querySelector('[name="website"]')?"_website":"website",h.dataset.hpName=p.name,p.type="text",p.tabIndex=-1,p.autocomplete="url",p.placeholder="https://",h.appendChild(p);const k=document.createElement("input");k.name="_t",k.type="hidden",k.value=g,h.appendChild(k),f.appendChild(h)}function b(u){if(!window.FormLogicEngine||!o.some(h=>h.logic||Array.isArray(h.triggers)&&h.triggers.length))return null;const f=new window.FormLogicEngine.FormLogicRuntime(s,a,u?{baseValues:u}:void 0);if(f.init(),a._formLogicRuntime=f,a._formLogicObserved)return f;if(a._formLogicObserved=!0,a.parentNode&&typeof MutationObserver<"u"){const h=new MutationObserver(function(p){for(const k of p)for(const q of k.removedNodes)if(q===a||q.nodeType===1&&q.contains&&q.contains(a)){a._formLogicRuntime&&a._formLogicRuntime.destroy(),h.disconnect();return}});h.observe(a.parentNode,{childList:!0,subtree:!1}),a._formLogicObserver=h}return f}let w=!1;if(a.addEventListener("dm-form-end",u=>{const f=u.detail?.validation;if(f&&!f.valid){Z(a,f.missing),ee(f);return}w||(w=!0,y(u.detail?.values||{}).catch(()=>{}).finally(()=>{w=!1}))}),d&&F.wizard){const u=he(o,s.title),f=u.map(v=>({title:v.title,description:v.description,fields:L(v.fields,t)})),h=u.map(v=>v.fields);let p=0,k=null,q=null;const r=v=>{const x=window.FormLogicEngine;if(!x||!x.validateFields)return;const N=x.validateFields(a,h[p]||[]);N.valid||(v.preventDefault(),v.stopImmediatePropagation(),Z(a,N.missing),ee(N))},D=()=>{const v=h[p]||o;ve(a,e),te(a,e,v),C(a,v),Q(a,v),Ce(a,n),e.honeypot!==!1&&l(a),k&&k.destroy(),k=b(q?.getStepData?q.getStepData():void 0),a.querySelectorAll(".wizard-next, .wizard-submit").forEach(x=>x.addEventListener("click",r,!0))};q=F.wizard(a,{schema:{steps:f},layout:c,columns:t,finishText:e.submitText||"Finish",onSubmit:y,onStepChange:v=>{oe(a,n),p=v,setTimeout(D,0)}}),a.addEventListener("dm-form-trigger",v=>{if(v.detail?.type!=="goto-step"||!q?.goToStep)return;const x=Number(v.detail.action.step);!Number.isFinite(x)||x<0||x>=f.length||x!==p&&q.goToStep(x)}),Promise.resolve(q).then(D)}else if(F.render){const u=F.render(a,L(o,t),I(o),{submitText:e.submitText||"Submit",layout:c,columns:t,onSubmit:y});Promise.resolve(u).then(function(){ye(a,e,c),te(a,e,o),C(a,o),Q(a,o),e.honeypot!==!1&&l(a),b()})}})})();function Ee(m,i){const M=document.body,L=M.classList,I=new Set((M.dataset.railSite||"").split(" ").filter(Boolean)),C=()=>window.matchMedia("(min-width: 993px)").matches;m.querySelectorAll(".navbar-link, .navbar-dropdown-toggle").forEach(t=>{const c=t.textContent.trim();c&&(t.setAttribute("title",c),t.querySelector("svg, [data-icon]")||(t.dataset.initial=c.charAt(0).toUpperCase()))});const A=document.createElement("button");A.type="button",A.className="dm-nav-collapse-toggle";const a=()=>{const t=L.contains("dm-vnav-collapsed");A.setAttribute("aria-pressed",String(t)),A.setAttribute("aria-label",t?"Expand menu":"Collapse menu"),A.title=A.getAttribute("aria-label");const c=i?"chevrons-left":"chevrons-right",d=i?"chevrons-right":"chevrons-left";A.innerHTML=`<span data-icon="${t?c:d}"></span>`,window.Domma&&Domma.icons&&Domma.icons.scan(A)},s=t=>{L.toggle("dm-vnav-collapsed",t),S.set("nav_collapsed",t),a()};A.addEventListener("click",()=>s(!L.contains("dm-vnav-collapsed"))),a();const o=m.querySelector(".navbar-container")||m;o.insertBefore(A,o.firstChild?.nextSibling||null);const e=t=>{L.toggle("dm-vnav-autohide",t),L.toggle("dm-vnav-collapsible",!t&&I.has("collapsible")),t?L.remove("dm-vnav-collapsed"):I.has("collapsible")&&S.get("nav_collapsed")===!0&&L.add("dm-vnav-collapsed"),m.classList.remove("dm-nav-revealed"),a()};m.addEventListener("pointerdown",t=>{L.contains("dm-vnav-autohide")&&t.pointerType!=="mouse"&&!m.classList.contains("dm-nav-revealed")&&(m.classList.add("dm-nav-revealed"),t.preventDefault())}),document.addEventListener("pointerdown",t=>{m.contains(t.target)||m.classList.remove("dm-nav-revealed")}),window.E&&typeof E.contextMenu=="function"&&E.contextMenu(m,{items:()=>{const t=L.contains("dm-vnav-autohide"),c=L.contains("dm-vnav-collapsed"),d=S.has("nav_autohide")||S.has("nav_collapsed");return[{header:"Menu"},{label:c?"Expand menu":"Collapse to icons",icon:c?"maximize":"minimize",disabled:!C()||t||!I.has("collapsible"),action:()=>s(!c)},{label:t?"Keep on screen":"Hide when not in use",icon:t?"eye":"eye-off",disabled:!C(),action:()=>{S.set("nav_autohide",!t),e(!t)}},{type:"divider"},{label:"Reset to the site's setting",icon:"refresh",disabled:!d,action:()=>{S.remove("nav_autohide"),S.remove("nav_collapsed"),e(I.has("autohide")),L.toggle("dm-vnav-collapsed",!I.has("autohide")&&I.has("start-collapsed")),a()}}]}})}function Ae(m){m.classList.add("dm-nav-scroll-hide");let i=window.scrollY,M=!1;window.addEventListener("scroll",()=>{M||(M=!0,requestAnimationFrame(()=>{M=!1;const L=window.scrollY,I=m.matches(":focus-within")||m.querySelector(".navbar-dropdown.open, .navbar-collapse.show");L>i&&L>m.offsetHeight&&!I?m.classList.add("dm-nav-scrolled-away"):L<i&&m.classList.remove("dm-nav-scrolled-away"),i=L}))},{passive:!0})}function Te(m){let i={};try{i=JSON.parse(m.dataset.contents||"{}")}catch{}const M=m.closest(".site-main"),L=document.querySelector(".site-content"),I=new Set(String(i.exclude||"").split(",").map(n=>n.trim().toLowerCase()).filter(Boolean)),C=n=>!n.closest(".hero, .card, .accordion, .tabs, figure, #site-sidebar"),A=n=>(L?[...L.querySelectorAll(n)]:[]).filter(C).filter(y=>!I.has(y.textContent.trim().toLowerCase())),a=i.headings==="h2"?A("h2"):i.headings==="h3"?A("h3"):i.headings==="h2h3"?A("h2, h3"):A("h2").length?A("h2"):A("h3");if(!a.length){M?.classList.add("no-sidebar-items");return}const s=new Set([...document.querySelectorAll("[id]")].map(n=>n.id)),o=document.createElement("nav");o.className="dm-contents",o.setAttribute("aria-label",i.title||"Page contents"),i.hover&&(o.dataset.menuHover=i.hover),i.selected&&(o.dataset.menuActive=i.selected),i.accent&&o.style.setProperty("--dm-menu-highlight",i.accent.startsWith("#")?i.accent:`var(--dm-${i.accent})`),i.font&&(o.style.fontFamily=i.font),i.fontSize&&(o.style.fontSize=i.fontSize),i.fontWeight&&(o.style.fontWeight=i.fontWeight);const e=document.createElement("div");e.className="dm-contents-head";const t=document.createElement("p");t.className="dm-contents-title",t.textContent=i.title||"",e.appendChild(t),o.appendChild(e);const c=document.createElement("ol");c.className="dm-contents-list"+(i.numbered?" is-numbered":"");const d=[];for(const n of a){if(!n.id){const l=(n.textContent||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"section";let b=l;for(let w=2;s.has(b);w++)b=`${l}-${w}`;s.add(b),n.id=b}const y=document.createElement("li");y.className=`dm-contents-item dm-contents-${n.tagName.toLowerCase()}`;const g=document.createElement("a");g.href=`#${n.id}`,g.textContent=n.textContent.trim(),y.appendChild(g),c.appendChild(y),d.push([n,g])}if(o.appendChild(c),m.replaceChildren(o),i.scrollSpy!==!1&&"IntersectionObserver"in window){const n=new Map,y=()=>{const l=d.find(([b])=>n.get(b))||null;d.forEach(([,b])=>{const w=l&&b===l[1];b.classList.toggle("is-active",!!w),w?b.setAttribute("aria-current","location"):b.removeAttribute("aria-current")})},g=new IntersectionObserver(l=>{l.forEach(b=>n.set(b.target,b.isIntersecting)),y()},{rootMargin:"-80px 0px -60% 0px"});d.forEach(([l])=>g.observe(l))}if(M?.classList.contains("contents-collapsible")){const n=document.createElement("button");n.type="button",n.className="dm-contents-toggle";const y=()=>{const g=M.classList.contains("contents-collapsed");n.setAttribute("aria-expanded",String(!g)),n.setAttribute("aria-label",g?"Show the contents":"Hide the contents"),n.title=n.getAttribute("aria-label"),n.innerHTML=`<span data-icon="${g?"list":"x"}"></span>`,window.Domma?.icons&&Domma.icons.scan(n)};n.addEventListener("click",()=>{S.set("contents_collapsed",M.classList.toggle("contents-collapsed")),y()}),y(),e.insertBefore(n,e.firstChild)}if(M?.classList.contains("contents-floating")&&i.movable){o.classList.add("is-movable");const n=S.get("contents_position");n&&Number.isFinite(n.x)&&Object.assign(m.style,{left:`${n.x}px`,top:`${n.y}px`,right:"auto",bottom:"auto"}),e.addEventListener("pointerdown",y=>{if(y.target.closest("button"))return;const g=m.getBoundingClientRect(),l=y.clientX-g.left,b=y.clientY-g.top,w=f=>{const h=Math.max(0,Math.min(window.innerWidth-g.width,f.clientX-l)),p=Math.max(0,Math.min(window.innerHeight-40,f.clientY-b));Object.assign(m.style,{left:`${h}px`,top:`${p}px`,right:"auto",bottom:"auto"})},u=()=>{document.removeEventListener("pointermove",w),S.set("contents_position",{x:parseInt(m.style.left,10),y:parseInt(m.style.top,10)})};document.addEventListener("pointermove",w),document.addEventListener("pointerup",u,{once:!0})})}window.E&&typeof E.contextMenu=="function"&&E.contextMenu(m,{items:()=>{const n=M?.classList.contains("contents-collapsible"),y=M?.classList.contains("contents-collapsed"),g=d.find(([,l])=>l.classList.contains("is-active"));return[{header:"Contents"},...n?[{label:y?"Show the contents":"Collapse to a button",icon:y?"list":"minimize",action:()=>m.querySelector(".dm-contents-toggle")?.click()}]:[],{label:"Copy a link to this section",icon:"link",disabled:!g,action:async()=>{const l=`${location.origin}${location.pathname}#${g[0].id}`;try{await _.copyToClipboard(l),E.toast("Link copied.",{type:"success"})}catch{E.toast("Could not copy the link.",{type:"error"})}}},{label:"Back to the top",icon:"arrow-up",action:()=>window.scrollTo({top:0,behavior:"smooth"})}]}}),M?.classList.contains("contents-autohide")&&(m.addEventListener("pointerdown",n=>{n.pointerType!=="mouse"&&!m.classList.contains("is-revealed")&&(m.classList.add("is-revealed"),n.preventDefault())}),document.addEventListener("pointerdown",n=>{m.contains(n.target)||m.classList.remove("is-revealed")}))}
|
|
1
|
+
import{applyMobileMenu as ne,initCarouselPopup as ae}from"/public/js/mobile-ui.mjs?v=20261016-mobile-options";import{installSmoothCarets as se}from"/public/js/smooth-caret.js";import{decodeBase64Json as V}from"/public/js/utf8-base64.mjs";import{makeBadgeEl as U,applyColour as G,applyPill as ie,applyFloat as re,applyHighlight as Y,applyItemHighlight as ce,itemHighlightAttrs as le,isCurrentItem as K,menuAlign as de,applyClasses as P,cssClasses as X,applyEntrance as J}from"/public/js/menu-decor.mjs?v=20261014-menu-entrance";import{applyMenuLook as me}from"/public/js/menu-cards.mjs?v=20261029-bar-fit";import{initPageMotion as ue}from"/public/js/page-motion.mjs?v=20261029-page-motion";import{applyFooterShowcase as pe}from"/public/js/footer-showcase.mjs?v=20261029-footer-showcase";import{initFloatingMenus as fe}from"/public/js/menu-float.js?v=20260829-float-panel";import{enhancePickerFields as Q,markInvalidFields as Z,showValidationPopup as ee}from"/public/js/forms.js?v=20261025-forms-files-total";import{buildWizardSteps as he}from"/public/js/form-steps.mjs";import{mountMotionControl as ge}from"/public/js/motion-control.mjs?v=20261029-motion-under-switcher";import{applyFormClasses as te,applySubmitButtons as ye,applyWizardButtons as ve}from"/public/js/form-submit.mjs";import{captureFileFields as oe,destroyDropzones as be,fileBlueprint as we,restoreFileFields as Ce,setFileLimits as Se,splitFiles as xe,submitBody as ke,totalTooLarge as Le,wireFileFields as $e}from"/public/js/form-files.mjs";document.addEventListener("click",m=>{const i=m.target?.closest?.(".dm-banner__dismiss");i&&(m.preventDefault(),i.closest(".dm-banner")?.remove())}),$(()=>{se(document);const m=window.__CMS_NAV__||{},i=window.__CMS_SITE__||{},M=i.brandingEnabled!==!1&&m.brand?.enabled!==!1;if(i.autoTheme?.enabled){let o=function(c){const d=(c||"07:00").split(":");return+d[0]*60+(+d[1]||0)},e=function(){const c=new Date,d=c.getHours()*60+c.getMinutes();return d>=o(s.dayStart)&&d<o(s.nightStart)?s.dayTheme:s.nightTheme},t=function(c){const d=s.apply&&s.apply[c]||{theme:c,custom:""};Domma.theme.set(d.theme);for(const n of[...document.body.classList])n.startsWith("dm-custom-")&&document.body.classList.remove(n);d.custom&&document.body.classList.add(d.custom)};const s=i.autoTheme;t(e()),setInterval(()=>t(e()),6e4)}const L=$("#site-navbar");if(L.length&&m.brand){let e=function(u,f=0){return Array.isArray(u)?u.filter(h=>!(h&&(h.type==="spacer"||h.type==="theme-switcher"))).filter(h=>!(h&&h.type==="separator"&&f===0)).map(h=>h&&h.type==="separator"?{divider:!0}:Array.isArray(h?.items)?{...h,items:e(h.items,f+1)}:h):u};const s={...m.brand},o=s.size&&s.size!=="md"?` navbar-brand-${s.size}`:"";if(s.logo||s.icon||s.tagline){let u="";s.logo?u+=`<img src="${s.logo}" class="navbar-brand-logo" alt="${s.text||""}">`:s.icon&&(u+=`<span data-icon="${s.icon}" style="width:1.1em;height:1.1em;margin-right:.35em;vertical-align:middle;"></span>`),s.text&&(u+=`<span class="navbar-brand-text${o}">${s.text}</span>`),s.tagline&&(u+=`<small class="navbar-brand-tagline">${s.tagline}</small>`),s.html=u}else o&&s.text&&(s.html=`<span class="navbar-brand-text${o}">${s.text}</span>`);const t=e(m.items||[]),c=m.position==="floating",d=m.orientation==="vertical";L.get(0).querySelector(":scope > .cms-nojs-links")?.remove(),Domma.elements.navbar("#site-navbar",{brand:M?s:null,items:t,variant:m.variant||"dark",position:c?"static":m.position||"sticky",collapsible:!0,appearOnHover:!!m.appearOnHover}),Domma.icons.scan("#site-navbar");const n=L.get(0);ne(n,m.mobile);const y=()=>{if(!d)return;const f=n.querySelector('a[aria-current="page"]')?.closest(".navbar-dropdown");f&&!f.classList.contains("open")&&f.querySelector(":scope > .navbar-dropdown-toggle")?.click()};n.classList.add(`dm-nav-align-${de(m)||"centre"}`),d&&L.get(0).classList.add("dm-nav-vertical",m.side==="right"?"dm-nav-vertical-right":"dm-nav-vertical-left");const g=m.dock||{};d&&!c&&Ee(n,m.side==="right"),!d&&g.hideOnScroll&&Ae(n),Y(n,m),J(n,m),P(n,m.class),c&&(re(L.get(0),m),fe(L.get(0).parentNode||document));const l=n.querySelector(".navbar-toggle"),b=n.querySelector(".navbar-collapse");if(l&&b){let u=null;const f=()=>{b.classList.contains("show")&&l.click()},h=()=>{u&&(u.remove(),u=null),document.body.classList.remove("dm-drawer-open")},p=()=>{u||(u=document.createElement("div"),u.className="dm-navbar-backdrop",u.addEventListener("click",f),document.body.appendChild(u),document.body.classList.add("dm-drawer-open"))};l.addEventListener("click",()=>{requestAnimationFrame(()=>{b.classList.contains("show")?(y(),p()):h()})}),b.addEventListener("click",k=>{k.target.closest("a")&&requestAnimationFrame(h)}),document.addEventListener("keydown",k=>{k.key==="Escape"&&b.classList.contains("show")&&f()})}const w=n.querySelector(".navbar-nav");if(w){const u=Array.from(w.children);let f=0;for(const h of m.items||[])if(!(h&&h.type==="separator")){if(h&&h.type==="spacer"){const p=document.createElement("li"),k=["xs","sm","md","lg","xl","flex"].includes(h.size)?h.size:"md";p.className=`dm-menu-spacer dm-menu-spacer--${k}`,p.setAttribute("aria-hidden","true"),w.insertBefore(p,u[f]||null);continue}if(h&&h.type==="theme-switcher"){const p=document.createElement("li");p.className="dm-menu-theme-switcher";const k=document.createElement("span");k.dataset.themeSwitcher="menu",k.dataset.position="inline",p.appendChild(k),w.insertBefore(p,u[f]||null);continue}f++}window.CMSThemeSwitcher?.scan(w)}n.querySelectorAll("[data-path]").forEach(u=>{const f=u.dataset.path.split(".").map(Number),h=f.length>1,p=f.reduce((q,r)=>q?.items?.[r],{items:t});if(!p)return;p.colour&&G(u,p.colour),p.pill&&!h&&ie(u,p.pill),ce(u,p),P(u.closest("li"),p.class);const k=U(p.badge);k&&u.appendChild(k),K(p.url,location.pathname)&&(u.classList.add("active"),u.setAttribute("aria-current","page"))}),me(n,m,t),y()}let I=null;const C=$("#site-footer");if(C.length){let c=function(r){return String(r??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},d=function(r){return c(r).replace(/'/g,"'")},n=function(r){if(r&&r.type==="separator")return'<li class="footer-sep"><hr></li>';if(r&&r.type==="spacer")return`<li class="dm-menu-spacer dm-menu-spacer--${["xs","sm","md","lg","xl","flex"].includes(r.size)?r.size:"md"}" aria-hidden="true"></li>`;if(r&&r.type==="theme-switcher")return'<li class="dm-menu-theme-switcher"><span data-theme-switcher="menu" data-position="inline"></span></li>';const D=d(r.url||"#"),v=c(r.text||""),x=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(n).join("")}</ul>`:"",N=le(r),O=[N.hover&&` data-menu-item-hover="${d(N.hover)}"`,N.active&&` data-menu-item-active="${d(N.active)}"`].filter(Boolean).join(""),j=N.accent?` style="--dm-menu-highlight:${d(N.accent)}"`:"",W=X(r.class).join(" ");return`<li${W?` class="${d(W)}"`:""}><a href="${D}"${O}${j}>${v}</a>${x}</li>`},g=function(){if(!i.footer)return"";const r=Object.keys(o).filter(v=>s[v]);if(!r.length)return"";const D=X(i.footer.socialClass).join(" ");return`<div class="footer-social">${r.map(v=>{const{label:x,svg:N}=o[v];return`<a href="${s[v]}" target="_blank" rel="noopener noreferrer" aria-label="${x}" class="footer-social-link${D?` ${d(D)}`:""}">${N}</a>`}).join("")}</div>`},u=function(r){if(!r||r.type==="separator"||r.type==="spacer")return"";if(r.type==="theme-switcher")return`<li class="cms-footer-col">${n(r).replace(/^<li[^>]*>|<\/li>$/g,"")}</li>`;const D=Array.isArray(r.items)&&r.items.length?`<ul>${r.items.map(n).join("")}</ul>`:"",v=w(r)?`<span class="cms-footer-col-title">${c(r.text||"")}</span>`:`<a class="cms-footer-col-title" href="${d(r.url||"#")}">${c(r.text||"")}</a>`,x=["cms-footer-col",...X(r.class)].join(" ");return`<li class="${d(x)}">${v}${D}</li>`},p=function(r,D,v=!1){return(r||[]).forEach(x=>{x&&(x.type==="separator"||x.type==="spacer"||x.type==="theme-switcher")||(v&&w(x)||D.push(x),Array.isArray(x.items)&&x.items.length&&p(x.items,D))}),D};const s=i.social||{},o={twitter:{label:"X / Twitter",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.742l7.73-8.835L1.254 2.25H8.08l4.259 5.629L18.244 2.25zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>'},facebook:{label:"Facebook",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>'},instagram:{label:"Instagram",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>'},linkedin:{label:"LinkedIn",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>'},github:{label:"GitHub",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>'},youtube:{label:"YouTube",svg:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M23.495 6.205a3.007 3.007 0 00-2.088-2.088c-1.87-.501-9.396-.501-9.396-.501s-7.507-.01-9.396.501A3.007 3.007 0 00.527 6.205a31.247 31.247 0 00-.522 5.805 31.247 31.247 0 00.522 5.783 3.007 3.007 0 002.088 2.088c1.868.502 9.396.502 9.396.502s7.506 0 9.396-.502a3.007 3.007 0 002.088-2.088 31.247 31.247 0 00.5-5.783 31.247 31.247 0 00-.5-5.805zM9.609 15.601V8.408l6.264 3.602z"/></svg>'}};let e='<div class="footer-inner container">';const t=window.__CMS_FOOTER__||{primary:[],legal:[],copyright:""},y=(()=>{const r=i.cookieConsent;if(!r||r.showSettingsLink===!1)return"";const D=v=>(v||[]).some(x=>x&&(x.url==="#cookie-settings"||D(x.items)));return D(t.primary)||D(t.legal)?"":`<li class="cms-cookie-settings"><a href="#cookie-settings">${c(r.settingsLinkText||"Cookie settings")}</a></li>`})(),l=["columns","row"].includes(i.footer?.layout)?i.footer.layout:"auto",b=i.footer?.look==="showcase"||l==="columns"||l==="auto"&&t.primary.some(r=>Array.isArray(r?.items)&&r.items.length),w=r=>b&&!r.url&&Array.isArray(r.items)&&r.items.length>0;if(b){const r=m.brand||{},D=M&&(r.text||i.title)||"",v=M?r.logo?`<img src="${d(r.logo)}" class="cms-footer-brand-logo" alt="">`:r.icon?'<span class="cms-footer-brand-icon"></span>':"":"",x=String(i.footer?.blurb||"").trim();e='<div class="footer-inner footer-inner--columns container"><div class="cms-footer-top">',e+=`<div class="cms-footer-brand">${D||v?`<a class="cms-footer-brand-name" href="${d(r.url||"/")}">${v}<span>${c(D)}</span></a>`:""}${x?`<p class="cms-footer-blurb">${c(x)}</p>`:""}${g()}</div>`,t.primary.length&&(e+=`<nav class="footer-nav footer-nav--primary footer-nav--columns" aria-label="Footer"><ul>${t.primary.map(u).join("")}</ul></nav>`),e+='</div><div class="cms-footer-bottom">',t.copyright&&(e+=`<p class="cms-footer-copyright">${c(t.copyright)}</p>`),(t.legal.length||y)&&(e+=`<nav class="footer-nav footer-nav--legal" aria-label="Legal"><ul>${t.legal.map(n).join("")}${y}</ul></nav>`),e+="</div>"}else t.copyright&&(e+=`<p>${c(t.copyright)}</p>`),t.primary.length&&(e+=`<nav class="footer-nav footer-nav--primary"><ul>${t.primary.map(n).join("")}</ul></nav>`),(t.legal.length||y)&&(e+=`<nav class="footer-nav footer-nav--legal"><ul>${t.legal.map(n).join("")}${y}</ul></nav>`),e+=g();e+="</div>",C.get(0).querySelector(":scope > .cms-nojs-links")?.remove();const f=C.get(0).querySelector(":scope > .cms-footer-blocks");f?.remove(),C.html(e),f&&C.get(0).prepend(f),window.CMSThemeSwitcher?.scan(C.get(0));const h=C.get(0).querySelector(".cms-footer-brand-icon");h&&m.brand?.icon&&h.setAttribute("data-icon",m.brand.icon),P(C.get(0),i.footer?.class),b&&pe(C.get(0),i);const k=[...p(t.primary,[],!0),...p(t.legal,[])];C.get(0).querySelectorAll(".footer-nav a").forEach((r,D)=>{const v=k[D];if(!v)return;v.colour&&G(r,v.colour);const x=U(v.badge);x&&r.appendChild(x),K(v.url,location.pathname)&&(r.classList.add("is-active"),r.setAttribute("aria-current","page"))}),Y(C.get(0).querySelector(".footer-nav--primary"),{highlight:t.primaryHighlight}),Y(C.get(0).querySelector(".footer-nav--legal"),{highlight:t.legalHighlight}),J(C.get(0).querySelector(".footer-nav--primary"),{entrance:t.primaryEntrance}),J(C.get(0).querySelector(".footer-nav--legal"),{entrance:t.legalEntrance}),P(C.get(0).querySelector(".footer-nav--primary"),t.primaryClass),P(C.get(0).querySelector(".footer-nav--legal"),t.legalClass),I=C.get(0).querySelector(".cms-footer-bottom")||C.get(0).querySelector(".footer-inner")}ge(i.motion||{enabled:i.footer?.showMotionToggle!==!1,default:i.footer?.motionDefault,placement:"footer",control:i.footer?.motionControl,label:"Reduce motion"},{footer:I,navbar:document.querySelector("#site-navbar .navbar-container")?.closest("#site-navbar")||null});const A=document.getElementById("site-sidebar");A&&Te(A),Domma.icons.scan(),Domma.syntax?.scan&&Domma.syntax.scan();const a=$(".page-body");if(a.length){a.find(".accordion").each(function(){Domma.elements.accordion(this,{allowMultiple:this.dataset.multi==="true"})}),a.find(".tabs").each(function(){Domma.elements.tabs(this)}),a.find(".carousel").each(function(){const o={primary:"--dm-primary",secondary:"--dm-secondary",accent:"--dm-primary",text:"--dm-text",surface:"--dm-surface",background:"--dm-background",success:"--dm-success",warning:"--dm-warning",danger:"--dm-danger",info:"--dm-info"},e=g=>{const l=String(g||"").trim();return l?o[l.toLowerCase()]?`var(${o[l.toLowerCase()]})`:CSS.supports("color",l)?l:"":""},t=e(this.dataset.background),c=e(this.dataset.arrowBackground),d=e(this.dataset.arrowColor);t&&(this.style.setProperty("--dm-carousel-background",t),this.classList.add("dm-carousel-custom-background")),c&&this.style.setProperty("--dm-carousel-arrow-background",c),d&&this.style.setProperty("--dm-carousel-arrow-color",d);const n=["top","middle","bottom"].includes(this.dataset.arrowPosition)?this.dataset.arrowPosition:"middle";this.classList.add(`dm-carousel-arrows-${n}`);const y={autoplay:this.dataset.autoplay==="true",interval:parseInt(this.dataset.interval,10)||5e3,loop:this.dataset.loop!=="false",animation:this.dataset.animation||"slide",heightMode:this.dataset.heightMode==="average"?"average":"crop"};if(this.dataset.height){const g=Number(this.dataset.height);Number.isFinite(g)&&g>0&&(y.height=g)}if(this.dataset.animationDuration){const g=parseInt(this.dataset.animationDuration,10);Number.isFinite(g)&&(y.animationDuration=g)}this.dataset.animationEasing&&(y.animationEasing=this.dataset.animationEasing),this.dataset.ctx&&(this._dmCtxSlides=Array.from(this.querySelectorAll(".carousel-slide")).map(g=>g.cloneNode(!0)),this._dmCarouselOpts=y),this._dmCarousel=Domma.elements.carousel(this,y),ae(this)}),a.find(".dm-countdown").each(function(){const o={autoStart:!0},e=String(this.dataset.format||"").trim(),t=String(this.dataset.to||"").trim(),c=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t),d=c?new Date(+c[1],+c[2]-1,+c[3]).getTime():t?new Date(t).getTime():NaN;Number.isFinite(d)?o.duration=Math.max(0,d-Date.now()):this.dataset.duration&&(o.duration=(parseInt(this.dataset.duration,10)||0)*1e3);const n=/^dd:/i.test(e);o.format=n?"hh:mm:ss":e||(o.duration>=36e5?"hh:mm:ss":"mm:ss");const y=this,g=b=>String(b).padStart(2,"0"),l=b=>{const w=Math.max(0,Math.floor(b/1e3)),u=y.querySelector(".dm-timer-time");u&&(u.textContent=`${g(Math.floor(w/86400))}:${g(Math.floor(w%86400/3600))}:${g(Math.floor(w%3600/60))}:${g(w%60)}`)};n&&(o.onTick=l),Domma.elements.timer(this,o),n&&l(o.duration||0)}),a.find("[data-tooltip]:not(.dm-range-slider)").each(function(){Domma.elements.tooltip(this,{content:$(this).data("tooltip"),position:$(this).data("tooltip-position")||"top"})}),a.find(".dm-progression").each(function(){const o=Array.from(this.querySelectorAll(".dm-progression-item")).map(c=>{const d={title:c.querySelector(".dm-progression-item-title")?.textContent?.trim()||"",description:c.querySelector(".dm-progression-item-body")?.innerHTML?.trim()||""};return c.dataset.date&&(d.date=c.dataset.date),c.dataset.status&&(d.status=c.dataset.status),c.dataset.eventIcon&&(d.icon=c.dataset.eventIcon),c.dataset.entryId&&(d._entryId=c.dataset.entryId),d}),e=this.dataset.layout==="centred"?"centered":this.dataset.layout||"vertical",t=Domma.elements.progression(this,{layout:e,theme:this.dataset.theme||"minimal",mode:this.dataset.mode||"timeline",statusIcons:!0,allowHtml:!0,...o.length?{items:o}:{}});if((this.dataset.mode||"timeline")==="timeline"){const c={completed:{label:"Completed",icon:"check-circle",tone:"success"},planned:{label:"Planned",icon:"circle",tone:"secondary"},"in-progress":{label:"In progress",icon:"clock",tone:"primary"},blocked:{label:"Blocked",icon:"alert-circle",tone:"danger"}};this.querySelectorAll(".dm-progression-item").forEach((d,n)=>{const y=o[n];if(!y)return;const g=d.querySelector(".dm-progression-title");if(y.icon&&g){const b=document.createElement("span");b.dataset.icon=y.icon,b.style.cssText="display:inline-flex;vertical-align:middle;margin-right:.4em",b.setAttribute("aria-hidden","true"),g.prepend(b)}const l=c[y.status];if(l&&g){const b=document.createElement("span");b.className=`badge badge-${l.tone} cms-timeline-status`,b.style.cssText="display:inline-flex;align-items:center;gap:.35em;margin:.4rem 0";const w=document.createElement("span");w.dataset.icon=l.icon,w.dataset.iconSize="14",w.setAttribute("aria-hidden","true"),b.append(w,document.createTextNode(l.label)),g.after(b)}})}Domma.icons.scan(this),o.length&&(this._dmCtx={instance:t,items:o})});try{Domma.effects.reveal(".page-body .hero",{animation:"slide-up",duration:480,threshold:.06,stagger:60,once:!1})}catch{}const s=matchMedia("(prefers-reduced-motion: reduce)").matches||document.documentElement.classList.contains("dm-reduced-motion");document.querySelectorAll(".page-body .row[data-reveal]").forEach(o=>{const e=o.dataset.revealMode||"stagger",t=o.dataset.revealAnimation||"slide-up",c=parseInt(o.dataset.revealDuration,10)||(t.startsWith("swoosh")?700:400),d=parseInt(o.dataset.revealStagger,10)||(t.startsWith("swoosh")?90:60),n=parseInt(o.dataset.revealDelay,10)||0,y=o.dataset.revealDirection==="rtl",g=o.dataset.revealReplay==="true",l=Array.from(o.children);if(s&&t.startsWith("swoosh"))return;const b={"slide-up":"translateY(30px)","slide-down":"translateY(-30px)","slide-left":"translateX(30px)","slide-right":"translateX(-30px)",zoom:"scale(0.85)",flip:"perspective(600px) rotateX(15deg)",swoosh:"translateY(36px) scale(0.96)"},w=p=>t!=="swoosh-sides"?b[t]||"":l.length>1&&p===0?"translateX(-64px) rotate(-1.5deg)":l.length>1&&p===l.length-1?"translateX(64px) rotate(1.5deg)":"translateY(40px) scale(0.94)",u=t.startsWith("swoosh"),f=u?"cubic-bezier(.2,.8,.2,1)":"ease",h=(p,k)=>{p.style.opacity="0",p.style.transform=w(k),u&&(p.style.filter="blur(10px)")};l.forEach((p,k)=>{h(p,k),p.style.transition=`opacity ${c}ms ${f}, transform ${c}ms ${f}`+(u?`, filter ${c}ms ${f}`:"");const q=y?l.length-1-k:k;p.style.transitionDelay=e==="stagger"?`${n+q*d}ms`:`${n}ms`}),requestAnimationFrame(()=>requestAnimationFrame(()=>{const p=new IntersectionObserver(k=>{k.forEach(q=>{if(q.isIntersecting){if(q.target.offsetWidth,q.target.style.opacity="1",q.target.style.transform="",u&&(q.target.style.filter=""),!g){p.unobserve(q.target);const r=q.target;r.addEventListener("transitionend",function D(v){v.target!==r||v.propertyName!=="opacity"||(r.removeEventListener("transitionend",D),r.style.transition="",r.style.transitionDelay="")})}}else g&&q.boundingClientRect.top>0&&h(q.target,l.indexOf(q.target))})},{threshold:.1});l.forEach(k=>p.observe(k))}))}),ue(document.querySelector(".page-body")||document),a.find(".card[data-collapsible]").each(function(){const o=this.querySelector(".card-header");o&&o.addEventListener("click",()=>this.classList.toggle("is-collapsed"))}),a.find(".dm-so-trigger").each(function(){this.addEventListener("click",()=>{const o=this.dataset.soTarget,e=document.getElementById(o);if(!e)return;const t=E.slideover({title:e.dataset.soTitle||"",size:e.dataset.soSize||"md",position:e.dataset.soPosition||"right"});e.style.display="",t.setContent(e),t.open()})})}if(typeof $.setup=="function"){const s=Object.assign({},window.__CMS_DCONFIG__||{});if(document.querySelectorAll(".dm-page-config[data-config]").forEach(o=>{try{const e=V(o.dataset.config);Object.assign(s,e)}catch{}}),Object.keys(s).length>0){const o={};for(const[e,t]of Object.entries(s)){const c=t?.events?.click,{confirm:d,toast:n,alert:y,prompt:g,...l}=c||{};if(d||n||y||g){$(e).on("click",async function(W){if(W.preventDefault(),d&&!await E.confirm(d))return;let z=null;if(!(g&&(z=await E.prompt(g,{inputPlaceholder:l.promptPlaceholder||"",inputValue:l.promptDefault||""}),z===null))){{const B=$(l.target||this);l.toggleClass&&B.toggleClass(l.toggleClass),l.addClass&&B.addClass(l.addClass),l.removeClass&&B.removeClass(l.removeClass),z!==null&&(l.setText&&B.text(z),l.setVal&&B.val(z),l.setAttr&&B.attr(l.setAttr,z))}l.href&&(window.location.href=l.href),n&&E.toast(n,{type:l.toastType||"success"}),y&&E.alert(y)}});const{target:w,toggleClass:u,addClass:f,removeClass:h,setText:p,setVal:k,setAttr:q,href:r,toastType:D,promptPlaceholder:v,promptDefault:x,...N}=l,O={...t.events};Object.keys(N).length?O.click=w?{target:w,...N}:N:delete O.click;const j={...t,events:O};Object.keys(O).length||delete j.events,Object.keys(j).length&&(o[e]=j)}else o[e]=t}$.setup(o)}}a.length&&R(a.get(0))}),window.wireCTAButtons=R;function R(m){m.querySelectorAll(".dm-cta-trigger").forEach(i=>{i.__ctaWired||(i.__ctaWired=!0,i.addEventListener("click",async()=>{const M=i.dataset.action,L=i.dataset.entry,I=i.dataset.confirm;let C=S.get("auth_token");if(!C){E.toast("Please log in to perform this action.",{type:"warning"});return}if(I&&!await E.confirm(I))return;const A=Array.from(i.childNodes).map(s=>s.cloneNode(!0));i.disabled=!0,i.textContent="Running\u2026";const a=s=>fetch(`/api/actions/${M}/public`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(i.dataset.scope?{entryId:L,scope:i.dataset.scope}:{entryId:L})});try{let s=await a(C);if(s.status===401){const e=S.get("auth_refresh_token");if(e){const t=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:e})});if(t.ok){const{token:c}=await t.json();S.set("auth_token",c),C=c,s=await a(C)}}}const o=await s.json().catch(()=>({}));if(!s.ok||o.success===!1)throw new Error(o.error||o.message||`Error ${s.status}`);E.toast(o.message||"Action completed.",{type:"success"})}catch(s){E.toast(s.message||"Action failed.",{type:"error"})}finally{i.disabled=!1,i.textContent="",A.forEach(s=>i.appendChild(s)),Domma.icons.scan(i)}}))})}(function(){const i=document.querySelectorAll('.dm-collection-hydrate[data-collection-scope="mine"]');if(!i.length)return;const M=S.get("auth_token");function L(C,A){const a=document.createElement("div");a.className="dm-collection-display dm-collection-empty";const s=document.createElement("p");if(A){s.appendChild(document.createTextNode("Please "));const o=document.createElement("a");o.href="/login",o.textContent="sign in",s.appendChild(o),s.appendChild(document.createTextNode(" to view your entries."))}else s.textContent=C;return a.appendChild(s),a}function I(C,A){const a=document.createElement("template");a.innerHTML=A||"",C.replaceWith(a.content)}i.forEach(async C=>{const A=C.dataset.collectionAttrs;if(!A)return;if(!M){C.replaceChildren(L("",!0));return}const a=s=>fetch("/api/collections/render-scope",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify({attrs:A})});try{let s=M,o=await a(s);if(o.status===401){const t=S.get("auth_refresh_token");if(t){const c=await fetch("/api/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:t})});if(c.ok){const{token:d}=await c.json();S.set("auth_token",d),s=d,o=await a(s)}}}if(!o.ok){const{error:t}=await o.json().catch(()=>({}));C.replaceChildren(L(t||"Unable to load entries.",!1));return}const{html:e}=await o.json();I(C,e),window.DommaCollectionBrowser?.hydrate&&window.DommaCollectionBrowser.hydrate(document)}catch{C.replaceChildren(L("Unable to load entries.",!1))}}),setTimeout(()=>{typeof Domma<"u"&&Domma.icons?.scan&&Domma.icons.scan(),typeof Domma<"u"&&Domma.syntax?.scan&&Domma.syntax.scan(),R(document.body)},100)})(),(function(){const i=document.querySelectorAll("[data-collection-table]");!i.length||typeof T>"u"||!T.create||i.forEach(M=>{let L;try{L=V(M.dataset.payload)}catch{return}const{columns:I,rows:C,search:A,sortable:a,exportable:s,pageSize:o,empty:e,ctaConfig:t,slug:c,exportCfg:d}=L;if(!I?.length)return;if(t){const g=I.findIndex(l=>l.key==="_cta");g!==-1&&(I[g]={key:"_cta",title:"",render:(l,b)=>{const w=document.createElement("button");if(w.className=`btn btn-${t.style||"primary"} dm-cta-trigger`,w.dataset.action=t.action||"",t.scope&&(w.dataset.scope=t.scope),w.dataset.entry=b._entryId||"",t.confirm&&(w.dataset.confirm=t.confirm),t.icon){const u=document.createElement("span");u.dataset.icon=t.icon,w.appendChild(u),w.appendChild(document.createTextNode(" "))}return w.appendChild(document.createTextNode(t.label||"Run")),w}})}const n="col-table-"+Math.random().toString(36).slice(2,7),y=document.createElement("div");y.id=n,M.replaceChildren(y),T.create("#"+n,{data:C,columns:I,search:A,sortable:a,exportable:s,pageSize:o,emptyMessage:e}),t&&R(y),M._dmTable={columns:I,rows:C,slug:c,exportCfg:d,render(g){T.create("#"+n,{data:g,columns:I,search:A,sortable:a,exportable:s,pageSize:o,emptyMessage:e}),t&&R(y)}}})})(),(function(){const i=document.querySelectorAll("[data-form-inline]");if(!i.length||typeof F>"u")return;function M(a){const s=a&&a.logic;return!!(s&&(s.visibility||s.requirement))}function L(a,s){const o={};return(a||[]).forEach(e=>{if(e.type==="page-break"||e.type==="spacer"||!e.name)return;const t=e.type==="chooser"||!!(e.variant&&["select","radio","checkbox-group"].includes(e.type)),c=e.type==="checkbox"?"boolean":e.type==="date"||e.type==="icon"||e.type==="image"?"string":t?"chooser":e.type,d={...e.formConfig||{}};d.span==="full"&&s&&(d.span=s);const n={type:c,required:M(e)?!1:e.required,label:e.label,options:e.options,formConfig:{...e.placeholder&&{placeholder:e.placeholder},...e.helper&&{hint:e.helper},...e.tooltip&&{tooltip:e.tooltip},...d}};e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.min!==void 0&&(n.min=e.min),e.max!==void 0&&(n.max=e.max),t&&(e.variant&&(n.variant=e.variant),(e.multiple||e.type==="checkbox-group")&&(n.multiple=!0),e.density&&(n.density=e.density),e.columns&&(n.columns=e.columns),e.accent&&(n.accent=e.accent),e.accentStyle&&(n.accentStyle=e.accentStyle),e.glow&&(n.glow=!0),e.glowColour&&(n.glowColour=e.glowColour),e.shadow&&(n.shadow=e.shadow),e.shadowColour&&(n.shadowColour=e.shadowColour)),o[e.name]=e.type==="file"?we(e,n):n}),o}function I(a){const s={};return(a||[]).forEach(o=>{if(!(!o.name||o.type==="page-break"||o.type==="spacer")&&(o.type==="select"||o.type==="multiselect")&&o.required){const e=(o.options||[])[0];e&&(s[o.name]=typeof e=="object"?e.value:e)}}),s}function C(a,s){(s||[]).forEach(o=>{if(o.type!=="date"||!o.name)return;const e=a.querySelector(`[name="${o.name}"]`);e&&e.type!=="date"&&(e.type="date")})}function A(a,s,o){let e=a.querySelector(".cms-form-message");e||(e=document.createElement("p"),e.className="cms-form-message",a.appendChild(e)),e.textContent=s,e.style.cssText=o?"color:var(--dm-danger);margin-top:.75rem;":"color:var(--dm-success);margin-top:.75rem;"}i.forEach(a=>{let s;try{s=V(a.dataset.formInline)}catch{return}a.querySelector(":scope > .cms-form-embed-summary")?.remove();const o=s.fields||[],e=s.settings||{},t=Number(e.columns)===3?3:2,c=e.layout||"grid",d=o.some(u=>u.type==="page-break"),n=new Map;Se(a,s.fileLimits,n),$e(a,o);const y=async u=>{if(a.dataset.triggerBlocked==="true"){const f=a._formLogicRuntime,h=f&&f.submitBlock?f.submitBlock().reasons:[];A(a,h.join(" ")||"This form cannot be submitted yet.",!0);const p=new Error("Blocked by a form trigger");throw p.formSubmitFailed=!0,p}try{const f=a.querySelector(".fb-form-honeypot"),h=f?.querySelector('input[type="text"]')||null,p=f?.querySelector('[name="_t"]')||null,k=Object.assign({},u);delete k._t,f?.dataset.hpName&&delete k[f.dataset.hpName],h!==null&&(k._hp=h.value),p!==null&&(k._t=p.value);const q=new Map(n);oe(a,q);const r=xe(k,o,q),D=Le(a,r.files);if(D){A(a,D,!0);const x=new Error(D);throw x.formSubmitFailed=!0,x}const v=await H.post(`/api/forms/submit/${s.slug}`,r.files.size?ke(r.values,r.files).body:r.values);if(v&&v.error){A(a,v.error,!0);const x=new Error(v.error);throw x.formSubmitFailed=!0,x}if(v?.redirect){window.location.href=v.redirect;return}for(be(a);a.firstChild;)a.removeChild(a.firstChild);A(a,v?.message||e.successMessage||"Thank you for your submission.",!1)}catch(f){throw f.formSubmitFailed||A(a,f.message||"Submission failed. Please try again.",!0),f}},g=Date.now();function l(u){const f=u.querySelector("form");if(!f||f.querySelector(".fb-form-honeypot"))return;const h=document.createElement("div");h.className="fb-form-honeypot",h.setAttribute("aria-hidden","true");const p=document.createElement("input");p.name=f.querySelector('[name="website"]')?"_website":"website",h.dataset.hpName=p.name,p.type="text",p.tabIndex=-1,p.autocomplete="url",p.placeholder="https://",h.appendChild(p);const k=document.createElement("input");k.name="_t",k.type="hidden",k.value=g,h.appendChild(k),f.appendChild(h)}function b(u){if(!window.FormLogicEngine||!o.some(h=>h.logic||Array.isArray(h.triggers)&&h.triggers.length))return null;const f=new window.FormLogicEngine.FormLogicRuntime(s,a,u?{baseValues:u}:void 0);if(f.init(),a._formLogicRuntime=f,a._formLogicObserved)return f;if(a._formLogicObserved=!0,a.parentNode&&typeof MutationObserver<"u"){const h=new MutationObserver(function(p){for(const k of p)for(const q of k.removedNodes)if(q===a||q.nodeType===1&&q.contains&&q.contains(a)){a._formLogicRuntime&&a._formLogicRuntime.destroy(),h.disconnect();return}});h.observe(a.parentNode,{childList:!0,subtree:!1}),a._formLogicObserver=h}return f}let w=!1;if(a.addEventListener("dm-form-end",u=>{const f=u.detail?.validation;if(f&&!f.valid){Z(a,f.missing),ee(f);return}w||(w=!0,y(u.detail?.values||{}).catch(()=>{}).finally(()=>{w=!1}))}),d&&F.wizard){const u=he(o,s.title),f=u.map(v=>({title:v.title,description:v.description,fields:L(v.fields,t)})),h=u.map(v=>v.fields);let p=0,k=null,q=null;const r=v=>{const x=window.FormLogicEngine;if(!x||!x.validateFields)return;const N=x.validateFields(a,h[p]||[]);N.valid||(v.preventDefault(),v.stopImmediatePropagation(),Z(a,N.missing),ee(N))},D=()=>{const v=h[p]||o;ve(a,e),te(a,e,v),C(a,v),Q(a,v),Ce(a,n),e.honeypot!==!1&&l(a),k&&k.destroy(),k=b(q?.getStepData?q.getStepData():void 0),a.querySelectorAll(".wizard-next, .wizard-submit").forEach(x=>x.addEventListener("click",r,!0))};q=F.wizard(a,{schema:{steps:f},layout:c,columns:t,finishText:e.submitText||"Finish",onSubmit:y,onStepChange:v=>{oe(a,n),p=v,setTimeout(D,0)}}),a.addEventListener("dm-form-trigger",v=>{if(v.detail?.type!=="goto-step"||!q?.goToStep)return;const x=Number(v.detail.action.step);!Number.isFinite(x)||x<0||x>=f.length||x!==p&&q.goToStep(x)}),Promise.resolve(q).then(D)}else if(F.render){const u=F.render(a,L(o,t),I(o),{submitText:e.submitText||"Submit",layout:c,columns:t,onSubmit:y});Promise.resolve(u).then(function(){ye(a,e,c),te(a,e,o),C(a,o),Q(a,o),e.honeypot!==!1&&l(a),b()})}})})();function Ee(m,i){const M=document.body,L=M.classList,I=new Set((M.dataset.railSite||"").split(" ").filter(Boolean)),C=()=>window.matchMedia("(min-width: 993px)").matches;m.querySelectorAll(".navbar-link, .navbar-dropdown-toggle").forEach(t=>{const c=t.textContent.trim();c&&(t.setAttribute("title",c),t.querySelector("svg, [data-icon]")||(t.dataset.initial=c.charAt(0).toUpperCase()))});const A=document.createElement("button");A.type="button",A.className="dm-nav-collapse-toggle";const a=()=>{const t=L.contains("dm-vnav-collapsed");A.setAttribute("aria-pressed",String(t)),A.setAttribute("aria-label",t?"Expand menu":"Collapse menu"),A.title=A.getAttribute("aria-label");const c=i?"chevrons-left":"chevrons-right",d=i?"chevrons-right":"chevrons-left";A.innerHTML=`<span data-icon="${t?c:d}"></span>`,window.Domma&&Domma.icons&&Domma.icons.scan(A)},s=t=>{L.toggle("dm-vnav-collapsed",t),S.set("nav_collapsed",t),a()};A.addEventListener("click",()=>s(!L.contains("dm-vnav-collapsed"))),a();const o=m.querySelector(".navbar-container")||m;o.insertBefore(A,o.firstChild?.nextSibling||null);const e=t=>{L.toggle("dm-vnav-autohide",t),L.toggle("dm-vnav-collapsible",!t&&I.has("collapsible")),t?L.remove("dm-vnav-collapsed"):I.has("collapsible")&&S.get("nav_collapsed")===!0&&L.add("dm-vnav-collapsed"),m.classList.remove("dm-nav-revealed"),a()};m.addEventListener("pointerdown",t=>{L.contains("dm-vnav-autohide")&&t.pointerType!=="mouse"&&!m.classList.contains("dm-nav-revealed")&&(m.classList.add("dm-nav-revealed"),t.preventDefault())}),document.addEventListener("pointerdown",t=>{m.contains(t.target)||m.classList.remove("dm-nav-revealed")}),window.E&&typeof E.contextMenu=="function"&&E.contextMenu(m,{items:()=>{const t=L.contains("dm-vnav-autohide"),c=L.contains("dm-vnav-collapsed"),d=S.has("nav_autohide")||S.has("nav_collapsed");return[{header:"Menu"},{label:c?"Expand menu":"Collapse to icons",icon:c?"maximize":"minimize",disabled:!C()||t||!I.has("collapsible"),action:()=>s(!c)},{label:t?"Keep on screen":"Hide when not in use",icon:t?"eye":"eye-off",disabled:!C(),action:()=>{S.set("nav_autohide",!t),e(!t)}},{type:"divider"},{label:"Reset to the site's setting",icon:"refresh",disabled:!d,action:()=>{S.remove("nav_autohide"),S.remove("nav_collapsed"),e(I.has("autohide")),L.toggle("dm-vnav-collapsed",!I.has("autohide")&&I.has("start-collapsed")),a()}}]}})}function Ae(m){m.classList.add("dm-nav-scroll-hide");let i=window.scrollY,M=!1;window.addEventListener("scroll",()=>{M||(M=!0,requestAnimationFrame(()=>{M=!1;const L=window.scrollY,I=m.matches(":focus-within")||m.querySelector(".navbar-dropdown.open, .navbar-collapse.show");L>i&&L>m.offsetHeight&&!I?m.classList.add("dm-nav-scrolled-away"):L<i&&m.classList.remove("dm-nav-scrolled-away"),i=L}))},{passive:!0})}function Te(m){let i={};try{i=JSON.parse(m.dataset.contents||"{}")}catch{}const M=m.closest(".site-main"),L=document.querySelector(".site-content"),I=new Set(String(i.exclude||"").split(",").map(n=>n.trim().toLowerCase()).filter(Boolean)),C=n=>!n.closest(".hero, .card, .accordion, .tabs, figure, #site-sidebar"),A=n=>(L?[...L.querySelectorAll(n)]:[]).filter(C).filter(y=>!I.has(y.textContent.trim().toLowerCase())),a=i.headings==="h2"?A("h2"):i.headings==="h3"?A("h3"):i.headings==="h2h3"?A("h2, h3"):A("h2").length?A("h2"):A("h3");if(!a.length){M?.classList.add("no-sidebar-items");return}const s=new Set([...document.querySelectorAll("[id]")].map(n=>n.id)),o=document.createElement("nav");o.className="dm-contents",o.setAttribute("aria-label",i.title||"Page contents"),i.hover&&(o.dataset.menuHover=i.hover),i.selected&&(o.dataset.menuActive=i.selected),i.accent&&o.style.setProperty("--dm-menu-highlight",i.accent.startsWith("#")?i.accent:`var(--dm-${i.accent})`),i.font&&(o.style.fontFamily=i.font),i.fontSize&&(o.style.fontSize=i.fontSize),i.fontWeight&&(o.style.fontWeight=i.fontWeight);const e=document.createElement("div");e.className="dm-contents-head";const t=document.createElement("p");t.className="dm-contents-title",t.textContent=i.title||"",e.appendChild(t),o.appendChild(e);const c=document.createElement("ol");c.className="dm-contents-list"+(i.numbered?" is-numbered":"");const d=[];for(const n of a){if(!n.id){const l=(n.textContent||"").toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"section";let b=l;for(let w=2;s.has(b);w++)b=`${l}-${w}`;s.add(b),n.id=b}const y=document.createElement("li");y.className=`dm-contents-item dm-contents-${n.tagName.toLowerCase()}`;const g=document.createElement("a");g.href=`#${n.id}`,g.textContent=n.textContent.trim(),y.appendChild(g),c.appendChild(y),d.push([n,g])}if(o.appendChild(c),m.replaceChildren(o),i.scrollSpy!==!1&&"IntersectionObserver"in window){const n=new Map,y=()=>{const l=d.find(([b])=>n.get(b))||null;d.forEach(([,b])=>{const w=l&&b===l[1];b.classList.toggle("is-active",!!w),w?b.setAttribute("aria-current","location"):b.removeAttribute("aria-current")})},g=new IntersectionObserver(l=>{l.forEach(b=>n.set(b.target,b.isIntersecting)),y()},{rootMargin:"-80px 0px -60% 0px"});d.forEach(([l])=>g.observe(l))}if(M?.classList.contains("contents-collapsible")){const n=document.createElement("button");n.type="button",n.className="dm-contents-toggle";const y=()=>{const g=M.classList.contains("contents-collapsed");n.setAttribute("aria-expanded",String(!g)),n.setAttribute("aria-label",g?"Show the contents":"Hide the contents"),n.title=n.getAttribute("aria-label"),n.innerHTML=`<span data-icon="${g?"list":"x"}"></span>`,window.Domma?.icons&&Domma.icons.scan(n)};n.addEventListener("click",()=>{S.set("contents_collapsed",M.classList.toggle("contents-collapsed")),y()}),y(),e.insertBefore(n,e.firstChild)}if(M?.classList.contains("contents-floating")&&i.movable){o.classList.add("is-movable");const n=S.get("contents_position");n&&Number.isFinite(n.x)&&Object.assign(m.style,{left:`${n.x}px`,top:`${n.y}px`,right:"auto",bottom:"auto"}),e.addEventListener("pointerdown",y=>{if(y.target.closest("button"))return;const g=m.getBoundingClientRect(),l=y.clientX-g.left,b=y.clientY-g.top,w=f=>{const h=Math.max(0,Math.min(window.innerWidth-g.width,f.clientX-l)),p=Math.max(0,Math.min(window.innerHeight-40,f.clientY-b));Object.assign(m.style,{left:`${h}px`,top:`${p}px`,right:"auto",bottom:"auto"})},u=()=>{document.removeEventListener("pointermove",w),S.set("contents_position",{x:parseInt(m.style.left,10),y:parseInt(m.style.top,10)})};document.addEventListener("pointermove",w),document.addEventListener("pointerup",u,{once:!0})})}window.E&&typeof E.contextMenu=="function"&&E.contextMenu(m,{items:()=>{const n=M?.classList.contains("contents-collapsible"),y=M?.classList.contains("contents-collapsed"),g=d.find(([,l])=>l.classList.contains("is-active"));return[{header:"Contents"},...n?[{label:y?"Show the contents":"Collapse to a button",icon:y?"list":"minimize",action:()=>m.querySelector(".dm-contents-toggle")?.click()}]:[],{label:"Copy a link to this section",icon:"link",disabled:!g,action:async()=>{const l=`${location.origin}${location.pathname}#${g[0].id}`;try{await _.copyToClipboard(l),E.toast("Link copied.",{type:"success"})}catch{E.toast("Could not copy the link.",{type:"error"})}}},{label:"Back to the top",icon:"arrow-up",action:()=>window.scrollTo({top:0,behavior:"smooth"})}]}}),M?.classList.contains("contents-autohide")&&(m.addEventListener("pointerdown",n=>{n.pointerType!=="mouse"&&!m.classList.contains("is-revealed")&&(m.classList.add("is-revealed"),n.preventDefault())}),document.addEventListener("pointerdown",n=>{m.contains(n.target)||m.classList.remove("is-revealed")}))}
|
package/public/js/text-style.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SIZE_MAP={xs:".75rem",sm:".875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},WEIGHT_MAP={thin:"100",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},SPACING_MAP={tight:"-0.05em",normal:"0em",wide:"0.05em",wider:"0.1em"},COLOUR_TOKENS={primary:"var(--dm-color-primary)",secondary:"var(--dm-color-secondary)",muted:"var(--dm-text-muted)",danger:"var(--dm-color-danger)",success:"var(--dm-color-success)",warning:"var(--dm-color-warning)",info:"var(--dm-color-info)"},FONT_MAP={Georgia:"Georgia,serif",Arial:"Arial,sans-serif",Verdana:"Verdana,sans-serif","Courier New":"'Courier New',monospace","Times New Roman":"'Times New Roman',serif","Trebuchet MS":"'Trebuchet MS',sans-serif",Roboto:"'Roboto',sans-serif",Inter:"'Inter',sans-serif","Open Sans":"'Open Sans',sans-serif",Lato:"'Lato',sans-serif",Nunito:"'Nunito',sans-serif",Poppins:"'Poppins',sans-serif","Source Sans 3":"'Source Sans 3',sans-serif",Montserrat:"'Montserrat',sans-serif",Raleway:"'Raleway',sans-serif","DM Sans":"'DM Sans',sans-serif","Work Sans":"'Work Sans',sans-serif",Merriweather:"'Merriweather',serif","Playfair Display":"'Playfair Display',serif",Lora:"'Lora',serif","Roboto Slab":"'Roboto Slab',serif",Lexend:"'Lexend',sans-serif","Atkinson Hyperlegible":"'Atkinson Hyperlegible',sans-serif",Andika:"'Andika',sans-serif"},CMS_WEB_FONTS=Object.freeze(["Roboto","Inter","Open Sans","Lato","Nunito","Poppins","Source Sans 3","Montserrat","Raleway","DM Sans","Work Sans","Merriweather","Playfair Display","Lora","Roboto Slab","Lexend","Atkinson Hyperlegible","Andika"]),TRANSFORM_MAP={upper:"uppercase",lower:"lowercase",capitalize:"capitalize",none:"none"},DECORATION_MAP={underline:"underline","line-through":"line-through",none:"none"};function a(e){return e!=null&&e!==!1&&e!=="false"&&e!=="0"}function r(e){return String(e).replace(/["<>]/g,"").trim()}export function buildTextStyle(e={}){const n=[];if(e.size&&n.push(`font-size:${SIZE_MAP[e.size]||r(e.size)}`),e["point-size"]){const
|
|
1
|
+
export const SIZE_MAP={xs:".75rem",sm:".875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem"},WEIGHT_MAP={thin:"100",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},SPACING_MAP={tight:"-0.05em",normal:"0em",wide:"0.05em",wider:"0.1em"},COLOUR_TOKENS={primary:"var(--dm-color-primary)",secondary:"var(--dm-color-secondary)",muted:"var(--dm-text-muted)",danger:"var(--dm-color-danger)",success:"var(--dm-color-success)",warning:"var(--dm-color-warning)",info:"var(--dm-color-info)"},FONT_MAP={Georgia:"Georgia,serif",Arial:"Arial,sans-serif",Verdana:"Verdana,sans-serif","Courier New":"'Courier New',monospace","Times New Roman":"'Times New Roman',serif","Trebuchet MS":"'Trebuchet MS',sans-serif",Roboto:"'Roboto',sans-serif",Inter:"'Inter',sans-serif","Open Sans":"'Open Sans',sans-serif",Lato:"'Lato',sans-serif",Nunito:"'Nunito',sans-serif",Poppins:"'Poppins',sans-serif","Source Sans 3":"'Source Sans 3',sans-serif",Montserrat:"'Montserrat',sans-serif",Raleway:"'Raleway',sans-serif","DM Sans":"'DM Sans',sans-serif","Work Sans":"'Work Sans',sans-serif",Merriweather:"'Merriweather',serif","Playfair Display":"'Playfair Display',serif",Lora:"'Lora',serif","Roboto Slab":"'Roboto Slab',serif",Lexend:"'Lexend',sans-serif","Atkinson Hyperlegible":"'Atkinson Hyperlegible',sans-serif",Andika:"'Andika',sans-serif","Nunito Sans":"'Nunito Sans',sans-serif",Mulish:"'Mulish',sans-serif"},CMS_WEB_FONTS=Object.freeze(["Roboto","Inter","Open Sans","Lato","Nunito","Poppins","Source Sans 3","Montserrat","Raleway","DM Sans","Work Sans","Merriweather","Playfair Display","Lora","Roboto Slab","Lexend","Atkinson Hyperlegible","Andika","Nunito Sans","Mulish"]),TRANSFORM_MAP={upper:"uppercase",lower:"lowercase",capitalize:"capitalize",none:"none"},DECORATION_MAP={underline:"underline","line-through":"line-through",none:"none"};function a(e){return e!=null&&e!==!1&&e!=="false"&&e!=="0"}function r(e){return String(e).replace(/["<>]/g,"").trim()}export function buildTextStyle(e={}){const n=[];if(e.size&&n.push(`font-size:${SIZE_MAP[e.size]||r(e.size)}`),e["point-size"]){const i=parseFloat(e["point-size"]);!isNaN(i)&&i>0&&n.push(`font-size:${i}pt`)}a(e.bold)?n.push("font-weight:700"):e.weight&&WEIGHT_MAP[e.weight]&&n.push(`font-weight:${WEIGHT_MAP[e.weight]}`),a(e.italic)&&n.push("font-style:italic");const o=e.colour||e.color;return o&&n.push(`color:${COLOUR_TOKENS[o]||r(o)}`),e.font&&FONT_MAP[e.font]&&n.push(`font-family:${FONT_MAP[e.font]}`),e.transform&&TRANSFORM_MAP[e.transform]&&n.push(`text-transform:${TRANSFORM_MAP[e.transform]}`),e.decoration&&DECORATION_MAP[e.decoration]&&n.push(`text-decoration:${DECORATION_MAP[e.decoration]}`),e.spacing&&n.push(`letter-spacing:${SPACING_MAP[e.spacing]||r(e.spacing)}`),e.align&&(n.push("display:block"),n.push(`text-align:${r(e.align)}`)),e.style&&n.push(r(e.style).replace(/;+$/,"")),n.join(";")}export const TEXT_GRADIENTS={brand:["var(--dm-primary)","color-mix(in oklab, var(--dm-primary) 45%, #a855f7)"],sunset:["#f26b3a","#8b5cf6"],ocean:["#06b6d4","#3b82f6"],forest:["#10b981","#84cc16"],fire:["#f59e0b","#ef4444"],candy:["#ec4899","#8b5cf6"]},TEXT_SHINES=["hover","sweep"];const f=/^#[0-9a-f]{6}$/i;export function buildTextMotion(e={}){const n=[],o=[],i=e.gradient;if(i!=null&&i!==!1&&i!=="false"){let s=TEXT_GRADIENTS[i===!0||i===""||i==="true"?"brand":i];if(!s){const t=String(i).split(",").map(l=>l.trim());t.length===2&&t.every(l=>f.test(l))&&(s=t)}s&&(n.push("dm-tg"),o.push(`--dm-tg-a:${s[0]}`,`--dm-tg-b:${s[1]}`),TEXT_SHINES.includes(e.shine)&&n.push(`dm-tg--${e.shine}`))}return a(e["light-up"])&&n.push("dm-tm-ink"),a(e.words)&&n.push("dm-tm-words"),{classes:n,style:o.join(";")}}
|
package/server/services/menus.js
CHANGED
|
@@ -317,7 +317,7 @@ export const NAVBAR_OVERRIDE_ATTRS = {
|
|
|
317
317
|
'collapsed': ['dock', 'collapsed', 'bool'], 'autohide': ['dock', 'autohide', 'bool'],
|
|
318
318
|
'hide-on-scroll': ['dock', 'hideOnScroll', 'bool'],
|
|
319
319
|
'bar': ['look', 'bar'], 'dropdown': ['look', 'dropdown'], 'tiles': ['look', 'tiles'],
|
|
320
|
-
'brand': ['look', 'brand'], 'strip': ['look', 'strip'], 'shrink': ['look', 'shrink', 'bool'],
|
|
320
|
+
'brand': ['look', 'brand'], 'strip': ['look', 'strip'], 'shrink': ['look', 'shrink', 'bool'], 'icons': ['look', 'icons'],
|
|
321
321
|
'morph': ['look', 'morph', 'bool'],
|
|
322
322
|
'float-anchor': ['float', 'anchor'], 'float-x': ['float', 'offsetX', 'num'], 'float-y': ['float', 'offsetY', 'num'],
|
|
323
323
|
'float-width': ['float', 'width', 'num'], 'float-radius': ['float', 'radius', 'num'],
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<!-- Menu item hover / current-page effects. Loaded after site.css so a
|
|
31
31
|
menu's own highlight wins over the blanket link styling there. -->
|
|
32
32
|
<link rel="stylesheet" href="/public/css/menu-highlight.css?v=20261024-menu-highlight-fix">
|
|
33
|
-
<link rel="stylesheet" href="/public/css/menu-cards.css?v=20261029-bar-
|
|
33
|
+
<link rel="stylesheet" href="/public/css/menu-cards.css?v=20261029-bar-fit">
|
|
34
34
|
<link rel="stylesheet" href="/public/css/footer-showcase.css?v=20261029-footer-showcase">
|
|
35
35
|
<link rel="stylesheet" href="/public/css/page-motion.css?v=20261029-page-motion">
|
|
36
36
|
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
<script src="/public/js/form-logic-engine.js?v=20261025-dropzone-disable" defer></script>
|
|
189
189
|
|
|
190
190
|
<!-- Site initialisation -->
|
|
191
|
-
<script src="/public/js/site.js?v=20261029-
|
|
191
|
+
<script src="/public/js/site.js?v=20261029-bar-fit-js" type="module"></script>
|
|
192
192
|
<script src="/public/js/collection-context.js?v=20261010-utf8-payloads" type="module"></script>
|
|
193
193
|
{{ctxMenusModule}}
|
|
194
194
|
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
<script src="/public/js/forms.js?v=20261025-forms-files-total" type="module"></script>
|
|
202
202
|
|
|
203
203
|
<!-- Core effects runtime -->
|
|
204
|
-
<script src="/public/js/effects.js?v=
|
|
204
|
+
<script src="/public/js/effects.js?v=20261029-more-fonts" defer></script>
|
|
205
205
|
|
|
206
206
|
<!-- Plugin body-end injection -->
|
|
207
207
|
{{bodyEndInject}}
|