vanilla-breeze 0.1.3 → 0.2.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/custom-elements.json +25084 -6649
- package/dist/cdn/components/accessibility-specimen.js +11 -0
- package/dist/cdn/components/accordion-wc.js +1 -1
- package/dist/cdn/components/activity-feed.js +2 -0
- package/dist/cdn/components/adr-wc.js +17 -17
- package/dist/cdn/components/ai-chat.js +28 -0
- package/dist/cdn/components/ai-summary.js +10 -0
- package/dist/cdn/components/analytics-panel.js +5 -5
- package/dist/cdn/components/audio-player.js +3 -3
- package/dist/cdn/components/audio-visualizer.js +2 -2
- package/dist/cdn/components/author-index.js +2 -2
- package/dist/cdn/components/brand-mark.js +1 -1
- package/dist/cdn/components/bread-crumb.js +2 -0
- package/dist/cdn/components/breakpoint-specimen.js +26 -0
- package/dist/cdn/components/burndown-chart.js +2 -0
- package/dist/cdn/components/calendar-wc.js +2 -2
- package/dist/cdn/components/capacity-plan.js +25 -0
- package/dist/cdn/components/card-list.js +1 -1
- package/dist/cdn/components/carousel-wc.js +1 -1
- package/dist/cdn/components/change-set.js +2 -2
- package/dist/cdn/components/chart-wc.js +58 -36
- package/dist/cdn/components/chat-input.js +1 -1
- package/dist/cdn/components/chat-window.js +1 -1
- package/dist/cdn/components/color-palette.js +9 -9
- package/dist/cdn/components/color-picker.js +1 -1
- package/dist/cdn/components/combo-box.js +1 -1
- package/dist/cdn/components/command-palette.js +1 -1
- package/dist/cdn/components/comment-box.js +60 -0
- package/dist/cdn/components/comment-thread.js +60 -0
- package/dist/cdn/components/comment-wc.js +1 -1
- package/dist/cdn/components/compare-surface.js +1 -1
- package/dist/cdn/components/component-sampler.js +2 -2
- package/dist/cdn/components/consent-banner.js +1 -1
- package/dist/cdn/components/content-lens.js +1 -1
- package/dist/cdn/components/content-swap.js +1 -1
- package/dist/cdn/components/context-menu.js +1 -1
- package/dist/cdn/components/data-table.js +1 -1
- package/dist/cdn/components/date-picker.js +1 -1
- package/dist/cdn/components/day-view.js +1 -1
- package/dist/cdn/components/diagram-wc.js +3 -0
- package/dist/cdn/components/drag-surface.js +1 -1
- package/dist/cdn/components/drop-down.js +1 -1
- package/dist/cdn/components/emoji-picker.js +1 -1
- package/dist/cdn/components/empathy-map.js +41 -43
- package/dist/cdn/components/flow-diagram.js +1 -1
- package/dist/cdn/components/font-pairer.js +81 -81
- package/dist/cdn/components/foot-notes.js +1 -1
- package/dist/cdn/components/form-field.js +1 -1
- package/dist/cdn/components/gantt-chart.js +1 -1
- package/dist/cdn/components/geo-map.js +25 -23
- package/dist/cdn/components/glossary-index.js +1 -1
- package/dist/cdn/components/glossary-wc.js +1 -1
- package/dist/cdn/components/gradient-builder.js +29 -29
- package/dist/cdn/components/heading-links.js +1 -1
- package/dist/cdn/components/highlight-wc.js +2 -2
- package/dist/cdn/components/icon-wc.js +4 -4
- package/dist/cdn/components/image-gallery.js +1 -1
- package/dist/cdn/components/image-map.js +1 -1
- package/dist/cdn/components/impact-effort.js +1 -1
- package/dist/cdn/components/include-file.js +1 -1
- package/dist/cdn/components/iron-triangle.js +2 -0
- package/dist/cdn/components/kanban-board.js +1 -1
- package/dist/cdn/components/layout-specimen.js +35 -0
- package/dist/cdn/components/manifest.json +227 -103
- package/dist/cdn/components/markdown-editor.js +1 -1
- package/dist/cdn/components/markdown-viewer.js +12 -12
- package/dist/cdn/components/motion-specimen.js +12 -12
- package/dist/cdn/components/nav-bar.js +2 -0
- package/dist/cdn/components/note-wc.js +2 -2
- package/dist/cdn/components/notification-wc.js +4 -4
- package/dist/cdn/components/page-info.js +4 -4
- package/dist/cdn/components/page-stats.js +1 -1
- package/dist/cdn/components/page-toc.js +1 -1
- package/dist/cdn/components/page-tools.js +1 -1
- package/dist/cdn/components/page-tour.js +6 -6
- package/dist/cdn/components/pager-wc.js +2 -0
- package/dist/cdn/components/palette-generator.js +11 -11
- package/dist/cdn/components/poll-wc.js +2 -0
- package/dist/cdn/components/pop-over.js +2 -0
- package/dist/cdn/components/popularity-index.js +2 -2
- package/dist/cdn/components/print-page.js +1 -1
- package/dist/cdn/components/product-roadmap.js +3 -0
- package/dist/cdn/components/progress-tracker.js +2 -0
- package/dist/cdn/components/qr-code.js +1 -1
- package/dist/cdn/components/quadrant-grid.js +3 -0
- package/dist/cdn/components/quality-target.js +12 -0
- package/dist/cdn/components/reaction-bar.js +2 -0
- package/dist/cdn/components/reader-view.js +3 -3
- package/dist/cdn/components/reading-progress.js +2 -0
- package/dist/cdn/components/recently-visited.js +10 -10
- package/dist/cdn/components/requirement-card.js +122 -0
- package/dist/cdn/components/review-surface.js +34 -40
- package/dist/cdn/components/risk-register.js +25 -0
- package/dist/cdn/components/roadmap.js +3 -0
- package/dist/cdn/components/score-card.js +197 -0
- package/dist/cdn/components/selection-menu.js +1 -1
- package/dist/cdn/components/semantic-palette.js +15 -15
- package/dist/cdn/components/settings-panel.js +12 -12
- package/dist/cdn/components/share-wc.js +2 -2
- package/dist/cdn/components/short-cuts.js +1 -1
- package/dist/cdn/components/site-index.js +4 -4
- package/dist/cdn/components/site-map-wc.js +1 -1
- package/dist/cdn/components/site-map.js +1 -1
- package/dist/cdn/components/site-search.js +9 -9
- package/dist/cdn/components/slide-accept.js +1 -1
- package/dist/cdn/components/social-embed.js +1 -1
- package/dist/cdn/components/spacing-specimen.js +5 -5
- package/dist/cdn/components/split-surface.js +1 -1
- package/dist/cdn/components/star-rating.js +1 -1
- package/dist/cdn/components/status-wc.js +2 -0
- package/dist/cdn/components/stepper-wc.js +2 -0
- package/dist/cdn/components/story-map.js +1 -1
- package/dist/cdn/components/tab-set.js +1 -1
- package/dist/cdn/components/text-reader.js +2 -2
- package/dist/cdn/components/theme-catalog.js +28 -0
- package/dist/cdn/components/theme-export.js +20 -12
- package/dist/cdn/components/theme-import.js +44 -0
- package/dist/cdn/components/theme-picker.js +29 -26
- package/dist/cdn/components/time-index.js +2 -2
- package/dist/cdn/components/time-picker.js +1 -1
- package/dist/cdn/components/toast-msg.js +3 -3
- package/dist/cdn/components/token-specimen.js +14 -14
- package/dist/cdn/components/tool-tip.js +1 -1
- package/dist/cdn/components/topic-map.js +3 -3
- package/dist/cdn/components/traceability-matrix.js +3 -0
- package/dist/cdn/components/trust-filter.js +3 -3
- package/dist/cdn/components/type-specimen.js +15 -15
- package/dist/cdn/components/user-journey.js +63 -70
- package/dist/cdn/components/user-persona.js +75 -13
- package/dist/cdn/components/user-story.js +12 -11
- package/dist/cdn/components/version-switcher.js +17 -0
- package/dist/cdn/components/video-player.js +3 -3
- package/dist/cdn/components/watch-wc.js +2 -2
- package/dist/cdn/components/week-view.js +1 -1
- package/dist/cdn/components/work-item.js +29 -28
- package/dist/cdn/components/youtube-player.js +1 -1
- package/dist/cdn/icons/bold.css +17 -0
- package/dist/cdn/icons/bold.json +1 -0
- package/dist/cdn/icons/custom.css +6 -0
- package/dist/cdn/icons/custom.json +1 -0
- package/dist/cdn/icons/lucide.css +1914 -0
- package/dist/cdn/icons/lucide.json +1 -0
- package/dist/cdn/icons/mage.css +17 -0
- package/dist/cdn/icons/mage.json +1 -0
- package/dist/cdn/icons/phosphor.css +17 -0
- package/dist/cdn/icons/phosphor.json +1 -0
- package/dist/cdn/icons/tabler.css +17 -0
- package/dist/cdn/icons/tabler.json +1 -0
- package/dist/cdn/packs/design-system.full.js +59 -51
- package/dist/cdn/packs/effects.full.js +1 -1
- package/dist/cdn/packs/icons.effects.js +1 -1
- package/dist/cdn/packs/icons.full.js +1 -1
- package/dist/cdn/packs/kawaii.full.css +1 -1
- package/dist/cdn/packs/kawaii.full.js +6 -6
- package/dist/cdn/packs/kawaii.theme.css +1 -1
- package/dist/cdn/packs/manifest.json +11 -11
- package/dist/cdn/packs/ui.full.css +1 -1
- package/dist/cdn/packs/ui.full.js +54 -51
- package/dist/cdn/packs/ux-planning.full.css +1 -1
- package/dist/cdn/packs/ux-planning.full.js +318 -243
- package/dist/cdn/themes/8bit.css +1 -1
- package/dist/cdn/themes/8bit.tokens.json +662 -0
- package/dist/cdn/themes/alpha1999-dark.tokens.json +693 -0
- package/dist/cdn/themes/alpha1999.css +1 -1
- package/dist/cdn/themes/alpha1999.tokens.json +869 -0
- package/dist/cdn/themes/anthropic.css +2 -0
- package/dist/cdn/themes/anthropic.tokens.json +564 -0
- package/dist/cdn/themes/art-deco-dark.tokens.json +407 -0
- package/dist/cdn/themes/art-deco.css +1 -1
- package/dist/cdn/themes/art-deco.tokens.json +581 -0
- package/dist/cdn/themes/bauhaus-dark.tokens.json +260 -0
- package/dist/cdn/themes/bauhaus.css +1 -1
- package/dist/cdn/themes/bauhaus.tokens.json +589 -0
- package/dist/cdn/themes/brutalist-dark.tokens.json +503 -0
- package/dist/cdn/themes/brutalist.tokens.json +677 -0
- package/dist/cdn/themes/catalog/atlassian.tokens.json +303 -0
- package/dist/cdn/themes/catalog/bootstrap.tokens.json +304 -0
- package/dist/cdn/themes/catalog/carbon.tokens.json +301 -0
- package/dist/cdn/themes/catalog/catppuccin-mocha.tokens.json +301 -0
- package/dist/cdn/themes/catalog/govuk.tokens.json +301 -0
- package/dist/cdn/themes/catalog/manifest.json +132 -0
- package/dist/cdn/themes/catalog/material.tokens.json +289 -0
- package/dist/cdn/themes/catalog/salesforce.tokens.json +301 -0
- package/dist/cdn/themes/catalog/tailwind.tokens.json +302 -0
- package/dist/cdn/themes/catppuccin-frappe.css +1 -1
- package/dist/cdn/themes/catppuccin-frappe.tokens.json +608 -0
- package/dist/cdn/themes/catppuccin-latte-dark.tokens.json +472 -0
- package/dist/cdn/themes/catppuccin-latte.css +1 -1
- package/dist/cdn/themes/catppuccin-latte.tokens.json +608 -0
- package/dist/cdn/themes/catppuccin-macchiato.css +1 -1
- package/dist/cdn/themes/catppuccin-macchiato.tokens.json +608 -0
- package/dist/cdn/themes/catppuccin-mocha.tokens.json +608 -0
- package/dist/cdn/themes/classic-dark.tokens.json +503 -0
- package/dist/cdn/themes/classic.tokens.json +640 -0
- package/dist/cdn/themes/claymorphism-dark.tokens.json +493 -0
- package/dist/cdn/themes/claymorphism.css +1 -1
- package/dist/cdn/themes/claymorphism.tokens.json +626 -0
- package/dist/cdn/themes/clinical-dark.tokens.json +472 -0
- package/dist/cdn/themes/clinical.tokens.json +608 -0
- package/dist/cdn/themes/cottagecore-dark.tokens.json +412 -0
- package/dist/cdn/themes/cottagecore.css +1 -1
- package/dist/cdn/themes/cottagecore.tokens.json +544 -0
- package/dist/cdn/themes/cyber.tokens.json +668 -0
- package/dist/cdn/themes/dawn-dark.tokens.json +472 -0
- package/dist/cdn/themes/dawn.css +1 -1
- package/dist/cdn/themes/dawn.tokens.json +608 -0
- package/dist/cdn/themes/dracula.tokens.json +534 -0
- package/dist/cdn/themes/dusk.tokens.json +533 -0
- package/dist/cdn/themes/editorial-dark.tokens.json +400 -0
- package/dist/cdn/themes/editorial.tokens.json +690 -0
- package/dist/cdn/themes/financial-dark.tokens.json +472 -0
- package/dist/cdn/themes/financial.css +1 -1
- package/dist/cdn/themes/financial.tokens.json +607 -0
- package/dist/cdn/themes/genai.tokens.json +534 -0
- package/dist/cdn/themes/glassmorphism-dark.tokens.json +489 -0
- package/dist/cdn/themes/glassmorphism.css +1 -1
- package/dist/cdn/themes/glassmorphism.tokens.json +632 -0
- package/dist/cdn/themes/government-dark.tokens.json +472 -0
- package/dist/cdn/themes/government.tokens.json +608 -0
- package/dist/cdn/themes/gruvbox-dark.tokens.json +472 -0
- package/dist/cdn/themes/gruvbox.tokens.json +608 -0
- package/dist/cdn/themes/high-noon-dark.tokens.json +397 -0
- package/dist/cdn/themes/high-noon.tokens.json +533 -0
- package/dist/cdn/themes/ibm.css +2 -0
- package/dist/cdn/themes/ibm.tokens.json +568 -0
- package/dist/cdn/themes/kawaii-dark.tokens.json +549 -0
- package/dist/cdn/themes/kawaii.css +1 -1
- package/dist/cdn/themes/kawaii.tokens.json +641 -0
- package/dist/cdn/themes/magna-dark.tokens.json +482 -0
- package/dist/cdn/themes/magna.css +1 -1
- package/dist/cdn/themes/magna.tokens.json +632 -0
- package/dist/cdn/themes/manifest.json +162 -62
- package/dist/cdn/themes/mcdonalds.css +2 -0
- package/dist/cdn/themes/mcdonalds.tokens.json +533 -0
- package/dist/cdn/themes/midnight.tokens.json +534 -0
- package/dist/cdn/themes/minimal-dark.tokens.json +294 -0
- package/dist/cdn/themes/minimal.tokens.json +494 -0
- package/dist/cdn/themes/modern-dark.tokens.json +490 -0
- package/dist/cdn/themes/modern.tokens.json +573 -0
- package/dist/cdn/themes/nes-dark.tokens.json +564 -0
- package/dist/cdn/themes/nes.css +1 -1
- package/dist/cdn/themes/nes.tokens.json +687 -0
- package/dist/cdn/themes/neumorphism-dark.tokens.json +471 -0
- package/dist/cdn/themes/neumorphism.css +1 -1
- package/dist/cdn/themes/neumorphism.tokens.json +589 -0
- package/dist/cdn/themes/nord-dark.tokens.json +484 -0
- package/dist/cdn/themes/nord.tokens.json +619 -0
- package/dist/cdn/themes/organic-dark.tokens.json +532 -0
- package/dist/cdn/themes/organic.tokens.json +685 -0
- package/dist/cdn/themes/rose-pine-dark.tokens.json +472 -0
- package/dist/cdn/themes/rose-pine.tokens.json +608 -0
- package/dist/cdn/themes/rough-dark.tokens.json +515 -0
- package/dist/cdn/themes/rough.css +1 -1
- package/dist/cdn/themes/rough.tokens.json +650 -0
- package/dist/cdn/themes/solarized-dark.tokens.json +397 -0
- package/dist/cdn/themes/solarized.tokens.json +532 -0
- package/dist/cdn/themes/starbucks.css +2 -0
- package/dist/cdn/themes/starbucks.tokens.json +593 -0
- package/dist/cdn/themes/startup-dark.tokens.json +522 -0
- package/dist/cdn/themes/startup.css +1 -1
- package/dist/cdn/themes/startup.tokens.json +607 -0
- package/dist/cdn/themes/super2026-dark.tokens.json +667 -0
- package/dist/cdn/themes/super2026.tokens.json +863 -0
- package/dist/cdn/themes/swiss-dark.tokens.json +390 -0
- package/dist/cdn/themes/swiss.tokens.json +750 -0
- package/dist/cdn/themes/terminal.css +1 -1
- package/dist/cdn/themes/terminal.tokens.json +689 -0
- package/dist/cdn/themes/tokyo-night-dark.tokens.json +472 -0
- package/dist/cdn/themes/tokyo-night.tokens.json +608 -0
- package/dist/cdn/themes/vaporwave-dark.tokens.json +413 -0
- package/dist/cdn/themes/vaporwave.tokens.json +549 -0
- package/dist/cdn/themes/win9x-dark.tokens.json +563 -0
- package/dist/cdn/themes/win9x.tokens.json +700 -0
- package/dist/cdn/vanilla-breeze-charts.css +1 -1
- package/dist/cdn/vanilla-breeze-charts.js +58 -36
- package/dist/cdn/vanilla-breeze-core.css +1 -1
- package/dist/cdn/vanilla-breeze-core.js +246 -51
- package/dist/cdn/vanilla-breeze-dev.js +1 -1
- package/dist/cdn/vanilla-breeze-extras.js +90 -80
- package/dist/cdn/vanilla-breeze.css +1 -1
- package/dist/cdn/vanilla-breeze.js +1370 -405
- package/package.json +12 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var r=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#t)t();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,e,i,o){t.addEventListener(e,i,o),this.#t.push(()=>t.removeEventListener(e,i,o))}setup(){}teardown(){}setState(t,e){this.#e||(this.#e=this.attachInternals());let i=this.#e.states;try{e?i.add(t):i.delete(t)}catch{let o=`--${t}`;e?i.add(o):i.delete(o)}}_adoptInternals(t){this.#e||(this.#e=t)}};var w=window.matchMedia("(prefers-reduced-motion: reduce)");var u=new Map;function a(n,t,e={}){let i=e.priority??10,o={impl:t,bundle:e.bundle,contract:e.contract,priority:i},s=u.get(n);if(customElements.get(n)){if(!s||s.priority>=i){s&&s.priority===i&&s.impl!==t&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}" (priority ${s.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${s.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(s&&s.priority>=i){s.priority===i&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${s.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}u.set(n,o),customElements.define(n,t)}var c=CSS.supports("anchor-name","--x"),b=CSS.supports("position-area","bottom"),v=0,d=class extends r{#t=null;#e=null;#i=null;#s=null;setup(){this.id||(this.id=`pop-over-${++v}`);let t=this.dataset.mode||"auto";this.hasAttribute("popover")||this.setAttribute("popover",t),this.#n(),this.#o(),this.#i=e=>{let i=e.newState==="open"?"show":"hide";this.dispatchEvent(new CustomEvent(`pop-over:${i}`,{detail:{state:e.newState},bubbles:!0,composed:!0})),!c&&e.newState==="open"&&this.#t&&this.#a()},this.listen(this,"beforetoggle",this.#i),c||(this.#s=()=>{this.matches(":popover-open")&&this.#t&&this.#a()},this.listen(window,"resize",this.#s),this.listen(window,"scroll",this.#s,{capture:!0,passive:!0}))}show(){this.matches(":popover-open")||this.showPopover()}hide(){this.matches(":popover-open")&&this.hidePopover()}toggle(){this.matches(":popover-open")?this.hide():this.show()}get open(){return this.matches(":popover-open")}#n(){let t=this.dataset.anchor;t?this.#t=document.getElementById(t)||document.querySelector(t):this.#t=document.querySelector(`[popovertarget="${CSS.escape(this.id)}"]`)}#o(){if(!(!this.#t||!c)&&(this.#e=`--pop-over-anchor-${this.id}`,this.#t.style.setProperty("anchor-name",this.#e),this.style.setProperty("position-anchor",this.#e),this.setAttribute("data-anchor-name",this.#e||""),!b)){let t=this.dataset.position||"bottom";this.#r(t)}}#r(t){let e="var(--_pop-over-offset, var(--size-xs))",i={top:{bottom:`calc(anchor(top) + ${e})`,left:"anchor(left)"},bottom:{top:`calc(anchor(bottom) + ${e})`,left:"anchor(left)"},left:{right:`calc(anchor(left) + ${e})`,top:"anchor(top)"},right:{left:`calc(anchor(right) + ${e})`,top:"anchor(top)"}},o=t.split("-")[0],s=i[o]||i.bottom;Object.entries(s).forEach(([h,m])=>this.style.setProperty(h,m))}#a(){if(!this.#t)return;let t=this.#t.getBoundingClientRect(),e=this.dataset.position||"bottom",i=this.#l(),o,s;switch(e.split("-")[0]){case"top":o=t.top-this.offsetHeight-i,s=t.left;break;case"left":o=t.top,s=t.left-this.offsetWidth-i;break;case"right":o=t.top,s=t.right+i;break;default:o=t.bottom+i,s=t.left;break}e.endsWith("-end")&&(e.startsWith("top")||e.startsWith("bottom")?s=t.right-this.offsetWidth:o=t.bottom-this.offsetHeight),this.style.position="fixed",this.style.top=`${Math.round(o)}px`,this.style.left=`${Math.round(s)}px`,this.style.margin="0"}#l(){let t={none:0,xs:4,s:8,m:16,l:24};return t[this.dataset.offset]??t.xs}};a("pop-over",d);var y=new Set(["BUTTON","A","AREA"]);function f(n){return document.documentElement.hasAttribute("data-interest-polyfill")?!0:"interestForElement"in HTMLButtonElement.prototype?y.has(n.tagName):!1}var l=0,p=class extends r{#t=null;#e=null;#i;#s;#n=!1;#o=!1;#r;setup(){this.#n=this.getAttribute("variant")==="card",this.#n?this.#l():this.#a()}#a(){if(this.#t=this.querySelector(":scope > :not(template)"),!this.#t)return;this.#o=f(this.#t);let t=this.querySelector(":scope > template[data-tooltip]"),e=this.getAttribute("content"),i=this.#t.getAttribute("title");if(!t&&!e&&!i)return;i&&(this.#r=i,this.#t.removeAttribute("title"));let o=this.getAttribute("position")||"top";this.#t.id||(this.#t.id=`tooltip-trigger-${++l}`);let s=document.createElement("pop-over");s.className="tooltip",s.setAttribute("role","tooltip"),s.dataset.mode="hint",s.dataset.anchor=this.#t.id,s.dataset.tooltipPosition=o,s.id=`tooltip-${++l}`,t?s.innerHTML=t.innerHTML:s.textContent=e||i;let h=document.createElement("span");h.className="tooltip-arrow",h.setAttribute("aria-hidden","true"),s.appendChild(h),this.appendChild(s),this.#e=s,this.#o?(this.#t.setAttribute("interestfor",s.id),this.#t.hasAttribute("aria-describedby")||this.#t.setAttribute("aria-describedby",s.id)):(this.#t.setAttribute("aria-describedby",s.id),this.listen(this.#t,"mouseenter",this.#c),this.listen(this.#t,"mouseleave",this.#h),this.listen(this.#t,"focus",this.#d),this.listen(this.#t,"blur",this.#u),this.listen(s,"mouseenter",this.#p),this.listen(s,"mouseleave",this.#h)),this.listen(s,"pop-over:show",()=>{this.dispatchEvent(new CustomEvent("tool-tip:show",{bubbles:!0}))}),this.listen(s,"pop-over:hide",()=>{this.dispatchEvent(new CustomEvent("tool-tip:hide",{bubbles:!0}))})}#l(){this.#t=this.querySelector(":scope > [data-trigger]");let t=this.querySelector(":scope > [data-content]");if(!this.#t||!t)return;this.#o=f(this.#t),this.#t.id||(this.#t.id=`tooltip-trigger-${++l}`);let e=document.createElement("pop-over");e.className="hover-card",e.dataset.mode="manual",e.dataset.anchor=this.#t.id,e.dataset.position=this.getAttribute("position")||"bottom",e.id=`hc-${++l}`,e.appendChild(t),t.removeAttribute("data-content"),t.hidden=!1,this.appendChild(e),this.#e=e,this.#o?this.#t.setAttribute("interestfor",e.id):(this.listen(this.#t,"mouseenter",this.#c),this.listen(this.#t,"mouseleave",this.#h),this.listen(this.#t,"focus",this.#d),this.listen(this.#t,"blur",this.#h),this.listen(e,"mouseenter",this.#p),this.listen(e,"mouseleave",this.#h),this.listen(document,"keydown",this.#f)),this.listen(e,"pop-over:show",()=>{this.dispatchEvent(new CustomEvent("tool-tip:show",{bubbles:!0}))}),this.listen(e,"pop-over:hide",()=>{this.dispatchEvent(new CustomEvent("tool-tip:hide",{bubbles:!0}))})}teardown(){this.#t&&(this.#o&&this.#t.removeAttribute("interestfor"),this.#r&&(this.#t.setAttribute("title",this.#r),this.#r=void 0)),this.#e&&(this.#e.remove(),this.#e=null),clearTimeout(this.#i),clearTimeout(this.#s)}#c=()=>{clearTimeout(this.#s);let t=this.#n?300:200,e=parseInt(this.getAttribute("delay")||String(t),10);this.setState("show-pending",!0),this.#i=setTimeout(()=>{this.setState("show-pending",!1),this.show()},e)};#h=()=>{clearTimeout(this.#i),this.setState("show-pending",!1);let t=this.#n?200:100;this.#s=setTimeout(()=>this.hide(),t)};#d=()=>{clearTimeout(this.#s),this.show()};#u=()=>{clearTimeout(this.#i),this.setState("show-pending",!1),this.hide()};#p=()=>{clearTimeout(this.#s)};#f=t=>{t.key==="Escape"&&this.isVisible&&this.hide()};show(){!this.#e||this.isVisible||(typeof this.#e.show=="function"?this.#e.show():this.#e.showPopover())}hide(){!this.#e||!this.isVisible||(typeof this.#e.hide=="function"?this.#e.hide():this.#e.hidePopover())}get isVisible(){return this.#e?.matches(":popover-open")??!1}};a("tool-tip",p);export{p as ToolTip};
|
|
2
2
|
//# sourceMappingURL=tool-tip.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
`)}#
|
|
3
|
-
`)}#
|
|
1
|
+
var _=window.matchMedia("(prefers-reduced-motion: reduce)");var L=new Map;function v(a,t,s={}){let o=s.priority??10,c={impl:t,bundle:s.bundle,contract:s.contract,priority:o},r=L.get(a);if(customElements.get(a)){if(!r||r.priority>=o){r&&r.priority===o&&r.impl!==t&&console.warn(`[VB Bundle] Tag <${a}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${s.bundle}".`);return}console.warn(`[VB Bundle] Tag <${a}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${s.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=o){r.priority===o&&console.warn(`[VB Bundle] Tag <${a}> already registered by "${r.bundle}". Skipping "${s.bundle}" (first wins at equal priority).`);return}L.set(a,c),customElements.define(a,t)}var k=class extends HTMLElement{#e=[];#t;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#e)t();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,s,o,c){t.addEventListener(s,o,c),this.#e.push(()=>t.removeEventListener(s,o,c))}setup(){}teardown(){}setState(t,s){this.#t||(this.#t=this.attachInternals());let o=this.#t.states;try{s?o.add(t):o.delete(t)}catch{let c=`--${t}`;s?o.add(c):o.delete(c)}}_adoptInternals(t){this.#t||(this.#t=t)}};var S=class extends k{setup(){let t=this.getAttribute("data-lens-src")||this.getAttribute("src"),s=this.getAttribute("data-vocabulary-src")||"/vocabulary.json";t?this.#e(t,s).catch(()=>{}):this.#s()}get data(){return this.__data||null}set data(t){if(!t||typeof t!="object")return;let s=Array.isArray(t.pages)?t.pages:[],o=t.vocabulary||{};this.__data={pages:s,vocabulary:o},this.#o(s,o),this.#s(),this.dispatchEvent(new CustomEvent("topic-map:data-changed",{detail:{pages:s,vocabulary:o,source:"property"},bubbles:!0}))}async#e(t,s){let[o,c]=await Promise.all([this.#t(t),this.#t(s)]);if(o.error){this.#n(`Could not load ${t}: ${o.error}`);return}if(c.error){this.#n(`Could not load ${s}: ${c.error}`);return}let r=Array.isArray(o.data)?o.data:o.data.pages||[],u=c.data;this.#o(r,u),this.#s()}async#t(t){try{let s=await fetch(t);if(!s.ok)throw new Error(`status ${s.status}`);return{data:await s.json()}}catch(s){return{error:s.message}}}#o(t,s){let o=Array.isArray(s?.concepts)?s.concepts:[],c=Array.isArray(s?.["skos:hasTopConcept"])?s["skos:hasTopConcept"]:[],r=new Map;for(let e of o)e&&e["@id"]&&r.set(e["@id"],e);let u=new Map,f=new Map;function w(e,n){!e||!n||!r.has(e)||!r.has(n)||(u.has(e)||u.set(e,new Set),u.get(e).add(n),f.has(n)||f.set(n,new Set),f.get(n).add(e))}for(let e of o){let n=e["@id"],y=T(e["skos:broader"]);for(let $ of y)w($,n);let d=T(e["skos:narrower"]);for(let $ of d)w(n,$)}let h=new Map,m=[];for(let e of t){let n=Array.isArray(e.concepts)?e.concepts:[];if(n.length===0){m.push(e);continue}let y=!1;for(let d of n)r.has(d)&&(h.has(d)||h.set(d,[]),h.get(d).push(e),y=!0);y||m.push(e)}let b=new Map,g=new Set;function A(e){if(b.has(e))return b.get(e);if(g.has(e))return 0;g.add(e);let n=(h.get(e)||[]).length,y=0,d=u.get(e);if(d)for(let x of d)y+=A(x);g.delete(e);let $=n+y;return b.set(e,$),$}let i=c.filter(e=>r.has(e));i.length===0&&(i=o.map(e=>e["@id"]).filter(e=>e&&!f.has(e)));let p=this.hasAttribute("expand-all"),l=[`<h2 class="topic-map-heading">Topics <small>(${t.length} pages)</small></h2>`];for(let e of i)l.push(this.#r(e,r,u,h,A,p,0));if(m.length){let e=p?" open":"";l.push(`<details${e} data-topic-node="__uncategorized">`),l.push(`<summary><span class="topic-name">Uncategorized</span> <span class="topic-count">${m.length}</span></summary>`),l.push('<ul class="topic-pages">');for(let n of m)l.push(`<li><a href="${M(n.url)}">${C(n.title||n.url)}</a></li>`);l.push("</ul>"),l.push("</details>")}this.innerHTML=l.join(`
|
|
2
|
+
`)}#r(t,s,o,c,r,u,f){let w=s.get(t);if(!w)return"";let h=w["skos:prefLabel"]||t,m=r(t),b=c.get(t)||[],g=o.get(t),A=u||f<1?" open":"",i=[];if(i.push(`<details${A} data-topic-node="${M(t)}">`),i.push(`<summary><a class="topic-name" href="/topics/${M(t)}/">${C(h)}</a> <span class="topic-count">${m}</span></summary>`),b.length){i.push('<ul class="topic-pages">');for(let p of b)i.push(`<li><a href="${M(p.url)}">${C(p.title||p.url)}</a></li>`);i.push("</ul>")}if(g&&g.size){let p=[...g].sort((E,l)=>{let e=(s.get(E)?.["skos:prefLabel"]||E).toLowerCase(),n=(s.get(l)?.["skos:prefLabel"]||l).toLowerCase();return e.localeCompare(n)});for(let E of p)i.push(this.#r(E,s,o,c,r,u,f+1))}return i.push("</details>"),i.join(`
|
|
3
|
+
`)}#n(t){if(this.children.length>0)return;let s=document.createElement("p");s.setAttribute("data-topic-map-error",""),s.textContent=t,this.append(s)}#s(){}};function T(a){return a==null?[]:Array.isArray(a)?a:[a]}function C(a){return String(a??"").replace(/[&<>]/g,t=>({"&":"&","<":"<",">":">"})[t])}function M(a){return String(a??"").replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""})[t])}v("topic-map",S);export{S as TopicMap};
|
|
4
4
|
//# sourceMappingURL=topic-map.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var N=window.matchMedia("(prefers-reduced-motion: reduce)");var S=new Map;function q(s,t,n={}){let i=n.priority??10,o={impl:t,bundle:n.bundle,contract:n.contract,priority:i},r=S.get(s);if(customElements.get(s)){if(!r||r.priority>=i){r&&r.priority===i&&r.impl!==t&&console.warn(`[VB Bundle] Tag <${s}> already registered by "${r.bundle}" (priority ${r.priority}). Skipping "${n.bundle}".`);return}console.warn(`[VB Bundle] Tag <${s}> defined by "${r.bundle}" cannot be replaced (customElements.define is permanent). "${n.bundle}" has higher priority but arrived late.`);return}if(r&&r.priority>=i){r.priority===i&&console.warn(`[VB Bundle] Tag <${s}> already registered by "${r.bundle}". Skipping "${n.bundle}" (first wins at equal priority).`);return}S.set(s,o),customElements.define(s,t)}var b=class extends HTMLElement{#e=[];#t;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let t of this.#e)t();this.#e=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(t,n,i,o){t.addEventListener(n,i,o),this.#e.push(()=>t.removeEventListener(n,i,o))}setup(){}teardown(){}setState(t,n){this.#t||(this.#t=this.attachInternals());let i=this.#t.states;try{n?i.add(t):i.delete(t)}catch{let o=`--${t}`;n?i.add(o):i.delete(o)}}_adoptInternals(t){this.#t||(this.#t=t)}};var A=class s extends b{setup(){let t=this.getAttribute("rows"),n=this.getAttribute("cols"),i=this.getAttribute("link-attr");return!t||!n||!i?(console.warn("traceability-matrix: requires rows, cols, and link-attr attributes"),!1):(queueMicrotask(()=>this.#e(t,n,i)),!0)}#e(t,n,i){let o=[...document.querySelectorAll(t)].filter(e=>e!==this&&!this.contains(e)),r=[...document.querySelectorAll(n)].filter(e=>e!==this&&!this.contains(e));if(!o.length||!r.length){this.#l();return}let l=this.getAttribute("row-label")||"",c=this.getAttribute("cell-mark")||"\u2713",f=this.hasAttribute("flag-orphans"),k=[],g=new WeakMap,E=new WeakMap;for(let e of o){let a=s.#o(e.getAttribute(i));for(let h of a){let u=r.find(p=>p.id===h);u&&(k.push({rowEl:e,colEl:u}),g.set(e,(g.get(e)||0)+1),E.set(u,(E.get(u)||0)+1))}}let m=document.createElement("data-table"),w=document.createElement("table"),M=document.createElement("thead"),y=document.createElement("tr"),C=document.createElement("th");C.setAttribute("data-sort","string"),C.textContent=l,y.appendChild(C);for(let e of r){let a=document.createElement("th");a.setAttribute("data-sort","number"),a.textContent=s.#s(e),a.dataset.colId=e.id||"",f&&!E.get(e)&&(a.dataset.orphan=""),y.appendChild(a)}M.appendChild(y),w.appendChild(M);let v=document.createElement("tbody");for(let e of o){let a=document.createElement("tr");a.dataset.rowId=e.id||"",f&&!g.get(e)&&(a.dataset.orphan="");let h=document.createElement("th");h.scope="row",h.textContent=s.#s(e),a.appendChild(h);let u=s.#o(e.getAttribute(i));for(let p of r){let d=document.createElement("td"),$=u.includes(p.id);d.setAttribute("data-sort-value",$?"1":"0"),$?(d.dataset.linked="",d.textContent=c,d.setAttribute("aria-label","linked")):d.setAttribute("aria-label","not linked"),d.dataset.colId=p.id||"",a.appendChild(d)}v.appendChild(a)}w.appendChild(v),m.appendChild(w),[...this.children].forEach(e=>{e.tagName!=="TEMPLATE"&&e.remove()});let x=this.getAttribute("label");if(x){let e=document.createElement("header");e.className="tm-label",e.textContent=x,this.appendChild(e)}this.appendChild(m),this.#n=m,this.#i=new Map(o.map(e=>[e.id,e])),this.#r=new Map(r.map(e=>[e.id,e])),this.listen(m,"click",this.#t),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent("traceability-matrix:ready",{bubbles:!0,detail:{rowCount:o.length,colCount:r.length,linkCount:k.length}}))})}#t=t=>{let n=t.target.closest('td, th[scope="row"]');if(!n)return;let i=n.closest("tr");if(!i)return;let o=i.dataset.rowId,r=n.dataset.colId,l=o?this.#i.get(o):null,c=r?this.#r.get(r):null,f=n.hasAttribute("data-state-highlighted");if(this.#a(),f){this.dispatchEvent(new CustomEvent("traceability-matrix:highlight",{bubbles:!0,detail:{rowEl:l,colEl:c,on:!1}}));return}n.setAttribute("data-state-highlighted",""),l&&l.setAttribute("data-state-highlighted",""),c&&c!==l&&c.setAttribute("data-state-highlighted",""),i.setAttribute("data-state-highlighted",""),this.dispatchEvent(new CustomEvent("traceability-matrix:highlight",{bubbles:!0,detail:{rowEl:l,colEl:c,on:!0}}))};#a(){this.#n&&(this.#n.querySelectorAll("[data-state-highlighted]").forEach(t=>t.removeAttribute("data-state-highlighted")),document.querySelectorAll("[data-state-highlighted]").forEach(t=>{(this.#i.has(t.id)||this.#r.has(t.id))&&t.removeAttribute("data-state-highlighted")}))}#l(){[...this.children].forEach(n=>{n.tagName!=="TEMPLATE"&&n.remove()});let t=document.createElement("p");t.className="tm-empty",t.textContent="No matching elements found for this matrix.",this.appendChild(t)}static#o(t){return t?t.split(",").map(n=>n.trim()).filter(Boolean):[]}static#s(t){return t.getAttribute("data-matrix-label")||t.id||(t.textContent||"").trim().split(`
|
|
2
|
+
`)[0].slice(0,60)||"(unnamed)"}#n=null;#i=new Map;#r=new Map};q("traceability-matrix",A);export{A as TraceabilityMatrix};
|
|
3
|
+
//# sourceMappingURL=traceability-matrix.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
`)
|
|
3
|
-
`);let
|
|
1
|
+
var g=window.matchMedia("(prefers-reduced-motion: reduce)");var h=new Map;function p(i,s,e={}){let n=e.priority??10,r={impl:s,bundle:e.bundle,contract:e.contract,priority:n},t=h.get(i);if(customElements.get(i)){if(!t||t.priority>=n){t&&t.priority===n&&t.impl!==s&&console.warn(`[VB Bundle] Tag <${i}> already registered by "${t.bundle}" (priority ${t.priority}). Skipping "${e.bundle}".`);return}console.warn(`[VB Bundle] Tag <${i}> defined by "${t.bundle}" cannot be replaced (customElements.define is permanent). "${e.bundle}" has higher priority but arrived late.`);return}if(t&&t.priority>=n){t.priority===n&&console.warn(`[VB Bundle] Tag <${i}> already registered by "${t.bundle}". Skipping "${e.bundle}" (first wins at equal priority).`);return}h.set(i,r),customElements.define(i,s)}var l=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let s of this.#t)s();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(s,e,n,r){s.addEventListener(e,n,r),this.#t.push(()=>s.removeEventListener(e,n,r))}setup(){}teardown(){}setState(s,e){this.#e||(this.#e=this.attachInternals());let n=this.#e.states;try{e?n.add(s):n.delete(s)}catch{let r=`--${s}`;e?n.add(r):n.delete(r)}}_adoptInternals(s){this.#e||(this.#e=s)}};var d=class extends l{#t=[];#e={provenance:new Set,review:new Set,status:new Set,signed:new Set};setup(){let s=this.getAttribute("data-lens-src")||this.getAttribute("src");if(!s){this.#r("No data source \u2014 set data-lens-src or src to a pages.json URL.");return}this.#i(s).catch(()=>{})}async#i(s){let e;try{let n=await fetch(s);if(!n.ok)throw new Error(`status ${n.status}`);e=await n.json()}catch(n){this.#r(`Could not load ${s}: ${n.message}`);return}this.#t=Array.isArray(e)?e:e.pages||[],this.#o(),this.#n()}#o(){let s=[{key:"provenance",label:"How was it made",values:this.#s("provenance")},{key:"review",label:"Review",values:this.#s("review")},{key:"status",label:"Status",values:this.#s("status")},{key:"signed",label:"Signed",values:["yes","no"]}],e=['<form data-trust-filter-controls aria-label="Filter pages">'];for(let r of s)if(r.values.length!==0){e.push(`<fieldset data-dim="${r.key}"><legend>${a(r.label)}</legend>`);for(let t of r.values){let o=`tf-${r.key}-${m(t)}`;e.push(`<label for="${o}"><input type="checkbox" id="${o}" data-dim="${c(r.key)}" value="${c(t)}"> <span>${a(b(t))}</span></label>`)}e.push("</fieldset>")}e.push('<button type="reset" class="ghost">Clear all</button>'),e.push("</form>"),e.push('<output data-trust-filter-results aria-live="polite"></output>'),this.innerHTML=e.join(`
|
|
2
|
+
`);let n=this.querySelector("form");n.addEventListener("change",r=>{let t=r.target;if(t&&t.matches('input[type="checkbox"]')){let o=t.getAttribute("data-dim"),f=t.value,u=o?this.#e[o]:null;if(!u)return;t.checked?u.add(f):u.delete(f),this.#n()}}),n.addEventListener("reset",()=>{for(let r of Object.values(this.#e))r.clear();setTimeout(()=>this.#n(),0)})}#s(s){let e=new Set;for(let n of this.#t){let r=n[s];if(r)if(s==="provenance")for(let t of String(r).split(/\s+/).filter(Boolean))e.add(t);else e.add(r)}return[...e].sort()}#a(s){if(this.#e.provenance.size&&!(s.provenance||"").split(/\s+/).filter(Boolean).some(n=>this.#e.provenance.has(n))||this.#e.review.size&&!this.#e.review.has(s.review)||this.#e.status.size&&!this.#e.status.has(s.status))return!1;if(this.#e.signed.size){let e=this.#e.signed,n=!!s.signed;if(e.has("yes")&&!n||e.has("no")&&n)return!1;e.has("yes")&&e.has("no")}return!0}#n(){let s=this.querySelector("[data-trust-filter-results]");if(!s)return;let e=this.#t.filter(t=>this.#a(t)),n=[];if(n.push(`<p class="trust-filter-count">${e.length} of ${this.#t.length} pages</p>`),e.length){n.push('<ul class="trust-filter-list">');for(let t of e){let o=[t.provenance?`<span class="trust-filter-prov" data-provenance="${c(t.provenance)}">${a(t.provenance)}</span>`:"",t.review&&t.review!=="unreviewed"?`<span>${a(t.review)}</span>`:"",t.status&&t.status!=="published"?`<span>${a(t.status)}</span>`:"",t.signed?'<span class="trust-filter-signed">signed</span>':""].filter(Boolean).join(" \xB7 ");n.push(`<li><a href="${c(t.url)}">${a(t.title||t.url)}</a>${o?`<small>${o}</small>`:""}</li>`)}n.push("</ul>")}s.innerHTML=n.join(`
|
|
3
|
+
`);let r={};for(let[t,o]of Object.entries(this.#e))r[t]=[...o];this.dispatchEvent(new CustomEvent("trust-filter:change",{detail:{selected:r,count:e.length},bubbles:!0}))}#r(s){let e=document.createElement("p");e.setAttribute("data-trust-filter-error",""),e.textContent=s,this.innerHTML="",this.append(e)}};function a(i){return String(i??"").replace(/[&<>]/g,s=>({"&":"&","<":"<",">":">"})[s])}function c(i){return String(i??"").replace(/[&<>"]/g,s=>({"&":"&","<":"<",">":">",'"':"""})[s])}function m(i){return String(i).toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function b(i){return String(i).replace(/-/g," ").replace(/\b\w/g,s=>s.toUpperCase())}p("trust-filter",d);export{d as TrustFilter};
|
|
4
4
|
//# sourceMappingURL=trust-filter.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
var w=window.matchMedia("(prefers-reduced-motion: reduce)");var p=new Map;function u(r,e,s={}){let
|
|
1
|
+
var w=window.matchMedia("(prefers-reduced-motion: reduce)");var p=new Map;function u(r,e,s={}){let t=s.priority??10,a={impl:e,bundle:s.bundle,contract:s.contract,priority:t},n=p.get(r);if(customElements.get(r)){if(!n||n.priority>=t){n&&n.priority===t&&n.impl!==e&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}" (priority ${n.priority}). Skipping "${s.bundle}".`);return}console.warn(`[VB Bundle] Tag <${r}> defined by "${n.bundle}" cannot be replaced (customElements.define is permanent). "${s.bundle}" has higher priority but arrived late.`);return}if(n&&n.priority>=t){n.priority===t&&console.warn(`[VB Bundle] Tag <${r}> already registered by "${n.bundle}". Skipping "${s.bundle}" (first wins at equal priority).`);return}p.set(r,a),customElements.define(r,e)}var l=class extends HTMLElement{#t=[];#e;connectedCallback(){this.hasAttribute("data-upgraded")||this.setup()!==!1&&(this.setAttribute("data-upgraded",""),queueMicrotask(()=>{this.dispatchEvent(new CustomEvent(`${this.localName}:upgraded`,{bubbles:!0}))}))}disconnectedCallback(){for(let e of this.#t)e();this.#t=[],this.removeAttribute("data-upgraded"),this.teardown()}listen(e,s,t,a){e.addEventListener(s,t,a),this.#t.push(()=>e.removeEventListener(s,t,a))}setup(){}teardown(){}setState(e,s){this.#e||(this.#e=this.attachInternals());let t=this.#e.states;try{s?t.add(e):t.delete(e)}catch{let a=`--${e}`;s?t.add(a):t.delete(a)}}_adoptInternals(e){this.#e||(this.#e=e)}};var b=["system-ui","Georgia","Inter, sans-serif",'"JetBrains Mono", monospace',"Verdana","Cambria","ui-serif"],c=class extends l{static observedAttributes=["font-family","label","sample","show-scale","show-weights","show-characters","weights","editable","target","token"];setup(){this.#t(),this.#e()}attributeChangedCallback(){this.isConnected&&(this.#t(),this.#e())}#t(){let e=this.getAttribute("font-family")||"system-ui",s=this.getAttribute("label")||e.replace(/['"]/g,"").split(",")[0],t=this.getAttribute("sample")||"The quick brown fox jumps over the lazy dog",a=this.hasAttribute("show-scale"),n=this.hasAttribute("show-weights"),m=this.hasAttribute("show-characters"),h=(this.getAttribute("weights")||"300,400,500,600,700").split(",").map(i=>i.trim()),o="",f=this.hasAttribute("editable")?`<input type="text" class="specimen-font-input" value="${e.replace(/"/g,""")}" aria-label="Font family" style="font:inherit;padding:0.25rem 0.5rem;border:1px solid var(--color-border,#ccc);border-radius:var(--radius-s,0.25rem);min-inline-size:18rem;max-inline-size:100%;font-family:${e};font-size:var(--font-size-sm,0.875rem)">
|
|
2
2
|
<span class="specimen-quick" style="display:inline-flex;flex-wrap:wrap;gap:0.25rem;margin-inline-start:0.5rem">
|
|
3
|
-
${b.map(
|
|
4
|
-
</span>`:`<span class="specimen-label">${s}</span>`;if(
|
|
5
|
-
${
|
|
6
|
-
<p class="specimen-sample" contenteditable="plaintext-only" spellcheck="false">${
|
|
7
|
-
</div>`,m&&(
|
|
8
|
-
<div class="char-row"><span class="char-label">Upper</span>${"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").map(
|
|
9
|
-
<div class="char-row"><span class="char-label">Lower</span>${"abcdefghijklmnopqrstuvwxyz".split("").map(
|
|
10
|
-
<div class="char-row"><span class="char-label">Digits</span>${"0123456789".split("").map(
|
|
11
|
-
<div class="char-row"><span class="char-label">Punct</span>${"!@#$%^&*()_+-=[]{}|;:,.<>?".split("").map(
|
|
12
|
-
</div>`),
|
|
13
|
-
<span class="weight-label">${
|
|
3
|
+
${b.map(i=>`<button type="button" class="specimen-quick-btn" data-font="${i.replace(/"/g,""")}" style="font:inherit;font-size:var(--font-size-xs,0.75rem);padding:0.125rem 0.5rem;border:1px solid var(--color-border,#ccc);border-radius:999px;background:var(--color-surface,#fff);color:var(--color-text,#222);cursor:pointer">${i.split(",")[0].replace(/["']/g,"")}</button>`).join("")}
|
|
4
|
+
</span>`:`<span class="specimen-label">${s}</span>`;if(o+=`<div class="specimen-header" style="font-family:${e}">
|
|
5
|
+
${f}
|
|
6
|
+
<p class="specimen-sample" contenteditable="plaintext-only" spellcheck="false">${t}</p>
|
|
7
|
+
</div>`,m&&(o+=`<div class="specimen-chars" style="font-family:${e}">
|
|
8
|
+
<div class="char-row"><span class="char-label">Upper</span>${"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").map(i=>`<span>${i}</span>`).join("")}</div>
|
|
9
|
+
<div class="char-row"><span class="char-label">Lower</span>${"abcdefghijklmnopqrstuvwxyz".split("").map(i=>`<span>${i}</span>`).join("")}</div>
|
|
10
|
+
<div class="char-row"><span class="char-label">Digits</span>${"0123456789".split("").map(i=>`<span>${i}</span>`).join("")}</div>
|
|
11
|
+
<div class="char-row"><span class="char-label">Punct</span>${"!@#$%^&*()_+-=[]{}|;:,.<>?".split("").map(i=>`<span>${i==="<"?"<":i===">"?">":i==="&"?"&":i}</span>`).join("")}</div>
|
|
12
|
+
</div>`),n){o+='<div class="specimen-weights">';for(let i of h)o+=`<div class="weight-sample" style="font-family:${e};font-weight:${i}">
|
|
13
|
+
<span class="weight-label">${i}</span>
|
|
14
14
|
<span class="weight-text">Aa</span>
|
|
15
|
-
</div>`;
|
|
15
|
+
</div>`;o+="</div>"}if(a){let i=[{name:"xs",rem:.75},{name:"sm",rem:.875},{name:"md",rem:1},{name:"lg",rem:1.125},{name:"xl",rem:1.25},{name:"2xl",rem:1.5},{name:"3xl",rem:1.875},{name:"4xl",rem:2.25},{name:"5xl",rem:3}];o+='<div class="specimen-scale">';for(let d of i)o+=`<div class="scale-step" style="font-family:${e};font-size:${d.rem}rem">
|
|
16
16
|
<span class="scale-label">${d.name}</span>
|
|
17
|
-
<span class="scale-text">${
|
|
18
|
-
</div>`;
|
|
17
|
+
<span class="scale-text">${t.substring(0,30)}</span>
|
|
18
|
+
</div>`;o+="</div>"}this.innerHTML=o}#e(){if(!this.hasAttribute("editable"))return;let e=this.querySelector(".specimen-font-input");e&&this.listen(e,"input",()=>this.#s(e.value)),this.querySelectorAll(".specimen-quick-btn").forEach(s=>{this.listen(s,"click",()=>{let t=s.getAttribute("data-font")||"";e&&(e.value=t),this.#s(t)})})}#s(e){let s=this.#i(),t=this.getAttribute("token")||"font-family-base";s&&s.style.setProperty(`--${t}`,e),this.setAttribute("font-family",e),this.dispatchEvent(new CustomEvent("type-specimen:change",{bubbles:!0,detail:{fontFamily:e,token:t,target:this.getAttribute("target")||":root"}}))}#i(){let e=this.getAttribute("target")||":root";try{return e===":root"?document.documentElement:document.querySelector(e)}catch{return document.documentElement}}};u("type-specimen",c);
|
|
19
19
|
//# sourceMappingURL=type-specimen.js.map
|
|
@@ -6,13 +6,17 @@ var g=`
|
|
|
6
6
|
color: var(--_text);
|
|
7
7
|
container-type: inline-size;
|
|
8
8
|
|
|
9
|
-
--_bg:
|
|
10
|
-
--_card:
|
|
11
|
-
--_border:
|
|
12
|
-
--_muted:
|
|
13
|
-
--_text:
|
|
14
|
-
--
|
|
15
|
-
--
|
|
9
|
+
--_bg: var(--user-journey-bg, var(--color-surface-raised, #f8f9fa));
|
|
10
|
+
--_card: var(--user-journey-card, var(--color-surface, #ffffff));
|
|
11
|
+
--_border: var(--user-journey-border, var(--color-border, #e0e0e0));
|
|
12
|
+
--_muted: var(--user-journey-muted, var(--color-text-muted, #666666));
|
|
13
|
+
--_text: var(--user-journey-text, var(--color-text, #1a1a1a));
|
|
14
|
+
--_inverted: var(--user-journey-text-inverted, var(--color-text-inverted, #ffffff));
|
|
15
|
+
--_primary: var(--user-journey-primary, var(--color-primary, var(--color-interactive, #6366f1)));
|
|
16
|
+
--_accent: var(--user-journey-accent, var(--color-accent, #8b5cf6));
|
|
17
|
+
--_link: var(--user-journey-link, var(--color-interactive, var(--color-primary, #6366f1)));
|
|
18
|
+
--_curve-stroke: var(--user-journey-curve-stroke, var(--_primary));
|
|
19
|
+
--_radius: var(--user-journey-radius, var(--radius-l, 0.75rem));
|
|
16
20
|
|
|
17
21
|
--_font-sans: var(--user-journey-font, var(--font-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif));
|
|
18
22
|
--_font-mono: var(--user-journey-font-mono, var(--font-mono, ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace));
|
|
@@ -25,6 +29,20 @@ var g=`
|
|
|
25
29
|
--_space-s: var(--user-journey-space-s, var(--size-s, 0.75rem));
|
|
26
30
|
--_space-m: var(--user-journey-space-m, var(--size-m, 1rem));
|
|
27
31
|
--_space-l: var(--user-journey-space-l, var(--size-l, 1.5rem));
|
|
32
|
+
|
|
33
|
+
/* Semantic tints derived from theme tokens via color-mix.
|
|
34
|
+
Subtle backgrounds (10\u201314%) for body cells, header at 22%. */
|
|
35
|
+
--_tint-pos: color-mix(in oklch, var(--color-success, #22c55e) 14%, var(--_card));
|
|
36
|
+
--_tint-neu: color-mix(in oklch, var(--color-warning, #f59e0b) 12%, var(--_card));
|
|
37
|
+
--_tint-neg: color-mix(in oklch, var(--color-error, #ef4444) 12%, var(--_card));
|
|
38
|
+
--_tint-row-pain: color-mix(in oklch, var(--color-error, #ef4444) 8%, var(--_card));
|
|
39
|
+
--_tint-row-opp: color-mix(in oklch, var(--color-success, #22c55e) 8%, var(--_card));
|
|
40
|
+
--_chip-type-bg: color-mix(in oklch, var(--_accent) 18%, var(--_card));
|
|
41
|
+
--_chip-type-fg: var(--color-accent-text, var(--_accent));
|
|
42
|
+
--_chip-story-bg: color-mix(in oklch, var(--_link) 18%, var(--_card));
|
|
43
|
+
--_chip-story-bg-hover: color-mix(in oklch, var(--_link) 28%, var(--_card));
|
|
44
|
+
--_chip-story-fg: var(--_link);
|
|
45
|
+
--_grid-head-bg: color-mix(in oklch, var(--_primary) 85%, var(--color-text, #000));
|
|
28
46
|
}
|
|
29
47
|
|
|
30
48
|
*, *::before, *::after { box-sizing: border-box; margin: 0; }
|
|
@@ -51,7 +69,7 @@ var g=`
|
|
|
51
69
|
inset-block: 0;
|
|
52
70
|
inset-inline-start: 0;
|
|
53
71
|
width: 4px;
|
|
54
|
-
background: linear-gradient(135deg,
|
|
72
|
+
background: linear-gradient(135deg, var(--_primary), var(--_accent));
|
|
55
73
|
}
|
|
56
74
|
|
|
57
75
|
.journey__header-top {
|
|
@@ -83,22 +101,16 @@ var g=`
|
|
|
83
101
|
}
|
|
84
102
|
|
|
85
103
|
.chip--type {
|
|
86
|
-
color:
|
|
87
|
-
background:
|
|
104
|
+
color: var(--_chip-type-fg);
|
|
105
|
+
background: var(--_chip-type-bg);
|
|
88
106
|
}
|
|
89
107
|
|
|
90
108
|
.chip--story {
|
|
91
|
-
color:
|
|
92
|
-
background:
|
|
109
|
+
color: var(--_chip-story-fg);
|
|
110
|
+
background: var(--_chip-story-bg);
|
|
93
111
|
}
|
|
94
112
|
|
|
95
|
-
.chip--story:hover { background:
|
|
96
|
-
|
|
97
|
-
@media (prefers-color-scheme: dark) {
|
|
98
|
-
.chip--type { color: #a78bfa; background: #2e1065; }
|
|
99
|
-
.chip--story { color: #38bdf8; background: #082f49; }
|
|
100
|
-
.chip--story:hover { background: #0c4a6e; }
|
|
101
|
-
}
|
|
113
|
+
.chip--story:hover { background: var(--_chip-story-bg-hover); }
|
|
102
114
|
|
|
103
115
|
/* Persona ref */
|
|
104
116
|
.persona-ref {
|
|
@@ -112,7 +124,7 @@ var g=`
|
|
|
112
124
|
white-space: nowrap;
|
|
113
125
|
}
|
|
114
126
|
.persona-ref svg { width: 14px; height: 14px; flex-shrink: 0; }
|
|
115
|
-
a.persona-ref:hover { color:
|
|
127
|
+
a.persona-ref:hover { color: var(--_link); text-decoration: underline; }
|
|
116
128
|
|
|
117
129
|
/* Title & summary (slotted content) */
|
|
118
130
|
.journey__title-wrap {
|
|
@@ -161,16 +173,10 @@ var g=`
|
|
|
161
173
|
|
|
162
174
|
.journey--compact .curve-svg { height: 54px; }
|
|
163
175
|
|
|
164
|
-
.zone { opacity: 0.
|
|
165
|
-
.zone--pos { fill:
|
|
166
|
-
.zone--neu { fill:
|
|
167
|
-
.zone--neg { fill:
|
|
168
|
-
|
|
169
|
-
@media (prefers-color-scheme: dark) {
|
|
170
|
-
.zone--pos { fill: #14532d; }
|
|
171
|
-
.zone--neu { fill: #713f12; }
|
|
172
|
-
.zone--neg { fill: #7f1d1d; }
|
|
173
|
-
}
|
|
176
|
+
.zone { opacity: 0.55; }
|
|
177
|
+
.zone--pos { fill: var(--_tint-pos); }
|
|
178
|
+
.zone--neu { fill: var(--_tint-neu); }
|
|
179
|
+
.zone--neg { fill: var(--_tint-neg); }
|
|
174
180
|
|
|
175
181
|
.vline { stroke: var(--_border); stroke-width: 1; stroke-dasharray: 3 4; }
|
|
176
182
|
.curve-line { stroke: var(--_curve-stroke); stroke-width: 2.5; stroke-linecap: round; }
|
|
@@ -187,12 +193,8 @@ var g=`
|
|
|
187
193
|
|
|
188
194
|
/* Head row */
|
|
189
195
|
.journey__grid thead tr {
|
|
190
|
-
background:
|
|
191
|
-
color:
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
@media (prefers-color-scheme: dark) {
|
|
195
|
-
.journey__grid thead tr { background: #0f0d30; }
|
|
196
|
+
background: var(--_grid-head-bg);
|
|
197
|
+
color: var(--_inverted);
|
|
196
198
|
}
|
|
197
199
|
|
|
198
200
|
.corner {
|
|
@@ -207,19 +209,15 @@ var g=`
|
|
|
207
209
|
min-width: 100px;
|
|
208
210
|
position: sticky;
|
|
209
211
|
left: 0;
|
|
210
|
-
background:
|
|
212
|
+
background: var(--_grid-head-bg);
|
|
211
213
|
z-index: 2;
|
|
212
214
|
}
|
|
213
215
|
|
|
214
|
-
@media (prefers-color-scheme: dark) {
|
|
215
|
-
.corner { background: #0f0d30; }
|
|
216
|
-
}
|
|
217
|
-
|
|
218
216
|
.phase-head {
|
|
219
217
|
padding: 10px 14px;
|
|
220
218
|
text-align: left;
|
|
221
219
|
vertical-align: top;
|
|
222
|
-
border-inline-start: 1px solid
|
|
220
|
+
border-inline-start: 1px solid color-mix(in oklch, var(--_inverted) 12%, transparent);
|
|
223
221
|
min-width: 160px;
|
|
224
222
|
position: relative;
|
|
225
223
|
}
|
|
@@ -231,7 +229,7 @@ var g=`
|
|
|
231
229
|
inset-block-start: 0;
|
|
232
230
|
inset-inline: 0;
|
|
233
231
|
height: 3px;
|
|
234
|
-
background: var(--ec,
|
|
232
|
+
background: var(--ec, var(--_primary));
|
|
235
233
|
}
|
|
236
234
|
|
|
237
235
|
.ph-num { display: block; font-size: 10px; opacity: 0.5; margin-block-end: 2px; }
|
|
@@ -271,13 +269,8 @@ var g=`
|
|
|
271
269
|
.data-cell--empty { color: var(--_muted); opacity: 0.35; }
|
|
272
270
|
|
|
273
271
|
/* Semantic row tints */
|
|
274
|
-
.grid-row--painpoints .data-cell { background:
|
|
275
|
-
.grid-row--opportunities .data-cell { background:
|
|
276
|
-
|
|
277
|
-
@media (prefers-color-scheme: dark) {
|
|
278
|
-
.grid-row--painpoints .data-cell { background: #2d0a0a; }
|
|
279
|
-
.grid-row--opportunities .data-cell { background: #052e16; }
|
|
280
|
-
}
|
|
272
|
+
.grid-row--painpoints .data-cell { background: var(--_tint-row-pain); }
|
|
273
|
+
.grid-row--opportunities .data-cell { background: var(--_tint-row-opp); }
|
|
281
274
|
|
|
282
275
|
/* Compact */
|
|
283
276
|
.journey--compact .phase-head { min-width: 120px; padding: 8px 10px; }
|
|
@@ -286,7 +279,7 @@ var g=`
|
|
|
286
279
|
|
|
287
280
|
/* Utility */
|
|
288
281
|
.state-msg { padding: var(--_space-l); font-size: var(--_font-sm); color: var(--_muted); font-style: italic; }
|
|
289
|
-
.state-msg--error { color: #dc2626; }
|
|
282
|
+
.state-msg--error { color: var(--color-error-text, var(--color-error, #dc2626)); }
|
|
290
283
|
.journey__placeholder { padding: 20px 24px; font-size: var(--_font-sm); color: var(--_muted); }
|
|
291
284
|
code { font-family: var(--_font-mono); font-size: 0.88em; }
|
|
292
285
|
|
|
@@ -303,7 +296,7 @@ var g=`
|
|
|
303
296
|
.journey__grid-wrap { overflow: visible; }
|
|
304
297
|
.row-label, .corner { position: relative; }
|
|
305
298
|
}
|
|
306
|
-
`;var
|
|
299
|
+
`;var A=window.matchMedia("(prefers-reduced-motion: reduce)");var $=new Map;function k(n,e,r={}){let a=r.priority??10,o={impl:e,bundle:r.bundle,contract:r.contract,priority:a},t=$.get(n);if(customElements.get(n)){if(!t||t.priority>=a){t&&t.priority===a&&t.impl!==e&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${t.bundle}" (priority ${t.priority}). Skipping "${r.bundle}".`);return}console.warn(`[VB Bundle] Tag <${n}> defined by "${t.bundle}" cannot be replaced (customElements.define is permanent). "${r.bundle}" has higher priority but arrived late.`);return}if(t&&t.priority>=a){t.priority===a&&console.warn(`[VB Bundle] Tag <${n}> already registered by "${t.bundle}". Skipping "${r.bundle}" (first wins at equal priority).`);return}$.set(n,o),customElements.define(n,e)}var M=0;function C(n,e,r="vb-vt"){if(!n?.isConnected||typeof document>"u"||!("startViewTransition"in document)||matchMedia("(prefers-reduced-motion: reduce)").matches)return e(),null;let a=`${r}-${++M}`;n.style.viewTransitionName=a;let o=document.startViewTransition(e);return o.finished.finally(()=>{n.style.viewTransitionName===a&&(n.style.viewTransitionName="")}),o}function l(n){return String(n).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function b(n){return`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${n}</svg>`}var h={user:'<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>',pencil:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/>',check:'<path d="M20 6 9 17l-5-5"/>',target:'<circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/>',alertTriangle:'<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/>',messageCircle:'<path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"/>',lightbulb:'<path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/>',wrench:'<path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"/>',heart:'<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"/>',mapPin:'<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/><circle cx="12" cy="10" r="3"/>',checkCircle:'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><path d="m9 11 3 3L22 4"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',send:'<path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"/><path d="m21.854 2.147-10.94 10.939"/>'},L={says:{label:"Says",icon:h.messageCircle,color:"#3b82f6"},thinks:{label:"Thinks",icon:h.lightbulb,color:"#8b5cf6"},does:{label:"Does",icon:h.wrench,color:"#f59e0b"},feels:{label:"Feels",icon:h.heart,color:"#ef4444"}},m={delighted:{emoji:"\u{1F604}",score:.95,color:"#16a34a"},satisfied:{emoji:"\u{1F60A}",score:.8,color:"#22c55e"},hopeful:{emoji:"\u{1F642}",score:.68,color:"#84cc16"},curious:{emoji:"\u{1F914}",score:.55,color:"#eab308"},neutral:{emoji:"\u{1F610}",score:.5,color:"#94a3b8"},uncertain:{emoji:"\u{1F615}",score:.4,color:"#f97316"},confused:{emoji:"\u{1F635}",score:.3,color:"#fb923c"},frustrated:{emoji:"\u{1F624}",score:.18,color:"#ef4444"},angry:{emoji:"\u{1F620}",score:.05,color:"#dc2626"}};var S=[{key:"actions",label:"Actions"},{key:"thoughts",label:"Thoughts"},{key:"touchpoints",label:"Touchpoints"},{key:"painPoints",label:"Pain Points"},{key:"opportunities",label:"Opportunities"}],w=class extends HTMLElement{static get observedAttributes(){return["src","persona","persona-id","story-ids","compact"]}#e=new Map;constructor(){super(),this.attachShadow({mode:"open"}),this.__phases=null}get phases(){return this.__phases}set phases(e){this.__phases!==e&&(this.__phases=e,this.isConnected&&this._render(),this.dispatchEvent(new CustomEvent("user-journey:phases-changed",{detail:{phases:e,source:"property"},bubbles:!0,composed:!0})))}get data(){return{persona:this.getAttribute("persona")||void 0,personaId:this.getAttribute("persona-id")||void 0,title:this.querySelector('[slot="title"]')?.textContent?.trim()||void 0,summary:this.querySelector('[slot="summary"]')?.textContent?.trim()||void 0,phases:this.__phases||void 0}}set data(e){if(!(!e||typeof e!="object")){if(e.persona&&this.setAttribute("persona",String(e.persona)),e.personaId&&this.setAttribute("persona-id",String(e.personaId)),e.title&&!this.querySelector('[slot="title"]')){let r=document.createElement("h2");r.slot="title",r.textContent=e.title,this.appendChild(r)}if(e.summary&&!this.querySelector('[slot="summary"]')){let r=document.createElement("p");r.slot="summary",r.textContent=e.summary,this.appendChild(r)}e.phases!=null&&(this.__phases=e.phases),this.isConnected&&this._render(),this.dispatchEvent(new CustomEvent("user-journey:data-changed",{detail:{data:this.data,source:"property"},bubbles:!0,composed:!0}))}}#t(){for(let e of this.children){let r=e.getAttribute("slot");r&&this.#e.set(r,e.textContent.trim())}}_resolve(e){return this.getAttribute(e)||this.#e.get(e)||""}connectedCallback(){this.#t(),this.setAttribute("data-upgraded",""),this.hasAttribute("src")?this._loadSrc(this.getAttribute("src")):this._render()}disconnectedCallback(){this.removeAttribute("data-upgraded")}attributeChangedCallback(e){this.isConnected&&(e==="src"?this._loadSrc(this.getAttribute("src")):this._render())}async _loadSrc(e){if(!e)return;let r=this.shadowRoot;r.innerHTML=`<style>${g}</style><div class="state-msg">Loading\u2026</div>`;try{let a=await fetch(e);if(!a.ok)throw new Error(`HTTP ${a.status}`);let o=await a.json();if(o.persona&&this.setAttribute("persona",o.persona),o.personaId&&this.setAttribute("persona-id",o.personaId),o.title&&!this.querySelector('[slot="title"]')){let t=document.createElement("h2");t.slot="title",t.textContent=o.title,this.appendChild(t)}if(o.summary&&!this.querySelector('[slot="summary"]')){let t=document.createElement("p");t.slot="summary",t.textContent=o.summary,this.appendChild(t)}this.__phases=o.phases||[],this._render()}catch(a){r.innerHTML=`<style>${g}</style><div class="state-msg state-msg--error">Could not load journey: ${l(a.message)}</div>`}}_render(){let e=this._resolve("persona")||"",r=this._resolve("persona-id")||"",a=(this.getAttribute("story-ids")||"").split(",").map(i=>i.trim()).filter(Boolean),o=this.hasAttribute("compact"),t=this.__phases,d=!!this.querySelector('[slot="summary"]')||this.#e.has("summary"),p=this.querySelector('[slot="title"]')?.textContent?.trim()||this.#e.get("title")||"",c=`<style>${g}</style>
|
|
307
300
|
<article class="journey${o?" journey--compact":""}">
|
|
308
301
|
|
|
309
302
|
<header class="journey__header">
|
|
@@ -314,24 +307,24 @@ var g=`
|
|
|
314
307
|
</div>
|
|
315
308
|
${e?`
|
|
316
309
|
<div class="journey__persona">
|
|
317
|
-
${r?`<a class="persona-ref" href="#${r}">${
|
|
310
|
+
${r?`<a class="persona-ref" href="#${r}">${b(h.user)} ${l(e)}</a>`:`<span class="persona-ref">${b(h.user)} ${l(e)}</span>`}
|
|
318
311
|
</div>`:""}
|
|
319
312
|
</div>
|
|
320
313
|
<div class="journey__title-wrap">
|
|
321
314
|
<slot name="title"><h2 class="journey__title">User Journey</h2></slot>
|
|
322
315
|
</div>
|
|
323
|
-
${
|
|
316
|
+
${d?'<div class="journey__summary-wrap"><slot name="summary"></slot></div>':""}
|
|
324
317
|
</header>
|
|
325
318
|
|
|
326
319
|
${t&&t.length?this._curve(t)+this._grid(t):`<div class="journey__placeholder">
|
|
327
320
|
<p>Add phase data via <code>src</code> (JSON) or set <code>.phases</code> programmatically.</p>
|
|
328
321
|
</div>`}
|
|
329
322
|
|
|
330
|
-
</article>`,this.dispatchEvent(new CustomEvent("journey-ready",{bubbles:!0,composed:!0,detail:{title,persona:e,phaseCount:t?t.length:0}}))}_curve(e){let
|
|
323
|
+
</article>`,f=this.shadowRoot,v=()=>{f.innerHTML=c};f.querySelector("article")?C(this,v,"uj-vt"):v(),this.dispatchEvent(new CustomEvent("journey-ready",{bubbles:!0,composed:!0,detail:{title:p,persona:e,phaseCount:t?t.length:0}}))}_curve(e){let c=e.length,f=s=>28+(c<2?944/2:s/(c-1)*944),v=s=>14+(1-(m[s.emotion]||m.neutral).score)*72,i=e.map((s,u)=>({x:f(u),y:v(s),ph:s})),x=`M ${i[0].x},${i[0].y}`;for(let s=1;s<i.length;s++){let u=i[s-1],y=i[s],_=(u.x+y.x)/2;x+=` C ${_},${u.y} ${_},${y.y} ${y.x},${y.y}`}let j=`uj-${Math.random().toString(36).slice(2,8)}`,z=i.at(-1);return`
|
|
331
324
|
<div class="journey__curve" aria-hidden="true">
|
|
332
325
|
<svg viewBox="0 0 1000 100" preserveAspectRatio="none" class="curve-svg">
|
|
333
326
|
<defs>
|
|
334
|
-
<linearGradient id="${
|
|
327
|
+
<linearGradient id="${j}" x1="0" y1="0" x2="0" y2="1">
|
|
335
328
|
<stop offset="0%" stop-color="#6366f1" stop-opacity="0.22"/>
|
|
336
329
|
<stop offset="100%" stop-color="#6366f1" stop-opacity="0"/>
|
|
337
330
|
</linearGradient>
|
|
@@ -339,28 +332,28 @@ var g=`
|
|
|
339
332
|
<rect x="0" y="0" width="1000" height="${100*.4}" class="zone zone--pos"/>
|
|
340
333
|
<rect x="0" y="${100*.4}" width="1000" height="${100*.2}" class="zone zone--neu"/>
|
|
341
334
|
<rect x="0" y="${100*.6}" width="1000" height="${100*.4}" class="zone zone--neg"/>
|
|
342
|
-
${
|
|
343
|
-
<path d="${
|
|
344
|
-
<path d="${
|
|
345
|
-
${
|
|
335
|
+
${i.map(({x:s})=>`<line x1="${s}" y1="0" x2="${s}" y2="100" class="vline"/>`).join("")}
|
|
336
|
+
<path d="${x} L ${z.x},100 L ${i[0].x},100 Z" fill="url(#${j})"/>
|
|
337
|
+
<path d="${x}" fill="none" class="curve-line"/>
|
|
338
|
+
${i.map(({x:s,y:u,ph:y})=>{let _=m[y.emotion]||m.neutral;return`<circle cx="${s}" cy="${u}" r="5" class="dot" style="fill:${_.color}"/>`}).join("")}
|
|
346
339
|
</svg>
|
|
347
|
-
</div>`}_grid(e){let r=e.map((o,t)=>{let
|
|
340
|
+
</div>`}_grid(e){let r=e.map((o,t)=>{let d=m[o.emotion]||m.neutral,p=o.storyIds||[];return`
|
|
348
341
|
<th class="phase-head" data-emotion="${o.emotion||"neutral"}"
|
|
349
|
-
style="--ec:${
|
|
342
|
+
style="--ec:${d.color}">
|
|
350
343
|
<span class="ph-num">${t+1}</span>
|
|
351
|
-
<span class="ph-name">${
|
|
352
|
-
<span class="ph-emoji" title="${o.emotion||"neutral"}"><span role="img" aria-label="${
|
|
353
|
-
${
|
|
354
|
-
</th>`}).join(""),a=
|
|
355
|
-
${
|
|
344
|
+
<span class="ph-name">${l(o.name||"")}</span>
|
|
345
|
+
<span class="ph-emoji" title="${o.emotion||"neutral"}"><span role="img" aria-label="${l(o.emotion||"neutral")}">${d.emoji}</span></span>
|
|
346
|
+
${p.length?`<div class="ph-stories">${p.map(c=>`<a class="chip chip--story" href="#${c}">${this._label(c)}</a>`).join("")}</div>`:""}
|
|
347
|
+
</th>`}).join(""),a=S.map(({key:o,label:t})=>{let d=e.map(p=>{let c=p[o]||[];return c.length?`<td class="data-cell data-cell--${o.toLowerCase()}">
|
|
348
|
+
${c.map(f=>`<p>${l(f)}</p>`).join("")}
|
|
356
349
|
</td>`:'<td class="data-cell data-cell--empty">\u2014</td>'}).join("");return`
|
|
357
350
|
<tr class="grid-row grid-row--${o.toLowerCase()}">
|
|
358
351
|
<th class="row-label">${t}</th>
|
|
359
|
-
${
|
|
352
|
+
${d}
|
|
360
353
|
</tr>`}).join("");return`
|
|
361
354
|
<div class="journey__grid-wrap">
|
|
362
355
|
<table class="journey__grid"
|
|
363
|
-
aria-label="${
|
|
356
|
+
aria-label="${l(this.getAttribute("title")||"User Journey")} \u2014 phase breakdown">
|
|
364
357
|
<thead>
|
|
365
358
|
<tr>
|
|
366
359
|
<th class="corner">Stage</th>
|
|
@@ -369,5 +362,5 @@ var g=`
|
|
|
369
362
|
</thead>
|
|
370
363
|
<tbody>${a}</tbody>
|
|
371
364
|
</table>
|
|
372
|
-
</div>`}_label(e){return e.replace(/^(activity|persona|journey|story|user)-/,"").replace(/-/g," ").replace(/\b\w/g,r=>r.toUpperCase())}};
|
|
365
|
+
</div>`}_label(e){return e.replace(/^(activity|persona|journey|story|user)-/,"").replace(/-/g," ").replace(/\b\w/g,r=>r.toUpperCase())}};k("user-journey",w);export{w as UserJourney};
|
|
373
366
|
//# sourceMappingURL=user-journey.js.map
|