@hotosm/ui 0.7.0 → 0.8.1

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.
Files changed (28) hide show
  1. package/README.md +12 -10
  2. package/dist/chunks/{chunk.2Y7OBKRQ.js → chunk.3FIEOVXD.js} +1 -1
  3. package/dist/chunks/{chunk.XU6UFL27.js → chunk.3T33Y2BX.js} +146 -50
  4. package/dist/chunks/{chunk.CNUZFRRF.js → chunk.6JUW2IZJ.js} +1 -1
  5. package/dist/chunks/chunk.6WYUOJRX.js +569 -0
  6. package/dist/chunks/{chunk.6BGQ256H.js → chunk.LVC64FO7.js} +1 -1
  7. package/dist/chunks/{chunk.7JIKOYG6.js → chunk.M3LK72JN.js} +1 -1
  8. package/dist/chunks/{chunk.APYFF2XE.js → chunk.N5KXL4J6.js} +1 -1
  9. package/dist/chunks/{chunk.LVCDAVRU.js → chunk.R44PTHOJ.js} +1 -1
  10. package/dist/chunks/{chunk.BVHLTKMC.js → chunk.WELXILIP.js} +1 -1
  11. package/dist/chunks/chunk.ZKUACKKG.js +14 -0
  12. package/dist/components/consent/consent.component.js +1 -1
  13. package/dist/components/consent/consent.js +1 -1
  14. package/dist/components/file-input-dropzone/file-input-dropzone.component.js +1 -1
  15. package/dist/components/file-input-dropzone/file-input-dropzone.js +1 -1
  16. package/dist/components/header/header.component.d.ts +57 -4
  17. package/dist/components/header/header.component.js +1 -1
  18. package/dist/components/header/header.js +1 -1
  19. package/dist/components/header/header.styles.d.ts +0 -1
  20. package/dist/components/header/header.styles.js +1 -1
  21. package/dist/components/logo/logo.component.js +1 -1
  22. package/dist/components/logo/logo.js +1 -1
  23. package/dist/components/logo/logo.styles.js +1 -1
  24. package/dist/hotosm-ui.js +1 -1
  25. package/dist/themes/hot-wa.css +9 -9
  26. package/package.json +1 -1
  27. package/dist/chunks/chunk.FDQFFQX3.js +0 -166
  28. package/dist/chunks/chunk.PBBH42B6.js +0 -6
@@ -1,4 +1,4 @@
1
- import{a as M}from"./chunk.252GL6HT.js";import{a as f,b as m,c as z}from"./chunk.ZETV7TDG.js";import{d as h,e as x,f as F}from"./chunk.QABMDRWR.js";import{d as n,e as o,f as d,g as c}from"./chunk.N2W26RCT.js";var E={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},y=l=>(...a)=>({_$litDirective$:l,values:a}),$=class{constructor(a){}get _$AU(){return this._$AM._$AU}_$AT(a,e,i){this._$Ct=a,this._$AM=e,this._$Ci=i}_$AS(a,e){return this.update(a,e)}update(a,e){return this.render(...e)}};var _=y(class extends ${constructor(l){var a;if(super(l),l.type!==E.ATTRIBUTE||l.name!=="class"||((a=l.strings)==null?void 0:a.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(l){return" "+Object.keys(l).filter(a=>l[a]).join(" ")+" "}update(l,[a]){var i,s;if(this.st===void 0){this.st=new Set,l.strings!==void 0&&(this.nt=new Set(l.strings.join(" ").split(/\s/).filter(t=>t!=="")));for(let t in a)a[t]&&!((i=this.nt)!=null&&i.has(t))&&this.st.add(t);return this.render(a)}let e=l.element.classList;for(let t of this.st)t in a||(e.remove(t),this.st.delete(t));for(let t in a){let p=!!a[t];p===this.st.has(t)||(s=this.nt)!=null&&s.has(t)||(p?(e.add(t),this.st.add(t)):(e.remove(t),this.st.delete(t)))}return x}});Promise.allSettled([import("@awesome.me/webawesome/dist/components/icon/icon.js"),import("@awesome.me/webawesome/dist/components/divider/divider.js")]);var S,T,C,D,P,A,B,L,k,W,I,O,r=class extends F{constructor(){super(...arguments);this.name="hot-file-input-dropzone";d(this,S,!1);d(this,T,"");d(this,C,0);d(this,D,!1);d(this,P,!1);d(this,A,"");d(this,B,"traditional");d(this,L,!1);d(this,k,[]);d(this,W,"");d(this,I,"");d(this,O)}get multiple(){return o(this,S)}set multiple(e){c(this,S,e)}get accept(){return o(this,T)}set accept(e){c(this,T,e)}get maxSize(){return o(this,C)}set maxSize(e){c(this,C,e)}get showPreview(){return o(this,D)}set showPreview(e){c(this,D,e)}get disabled(){return o(this,P)}set disabled(e){c(this,P,e)}get label(){return o(this,A)}set label(e){c(this,A,e)}get variant(){return o(this,B)}set variant(e){c(this,B,e)}get isDragging(){return o(this,L)}set isDragging(e){c(this,L,e)}get selectedFiles(){return o(this,k)}set selectedFiles(e){c(this,k,e)}get errorMessage(){return o(this,W)}set errorMessage(e){c(this,W,e)}get statusMessage(){return o(this,I)}set statusMessage(e){c(this,I,e)}get fileInput(){return o(this,O)}set fileInput(e){c(this,O,e)}_generateId(){return`file-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}_handleDragOver(e){e.preventDefault(),e.stopPropagation(),this.disabled||(this.isDragging=!0)}_handleDragLeave(e){e.preventDefault(),e.stopPropagation(),this.isDragging=!1}_handleDrop(e){var s;if(e.preventDefault(),e.stopPropagation(),this.isDragging=!1,this.disabled)return;let i=Array.from(((s=e.dataTransfer)==null?void 0:s.files)||[]);this._processFiles(i)}_handleClick(){this.disabled||this.fileInput.click()}_handleKeyDown(e){!this.disabled&&(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.fileInput.click())}_handleFileInputChange(e){let i=e.target,s=Array.from(i.files||[]);this._processFiles(s)}_processFiles(e){if(this.errorMessage="",!this.multiple&&e.length>1){this.errorMessage="Only one file can be selected";return}if(this.accept){let t=this.accept.split(",").map(u=>u.trim().toLowerCase()),p=e.filter(u=>{let b=u.name.toLowerCase(),g=u.type.toLowerCase();return!t.some(v=>{if(v.startsWith("."))return b.endsWith(v);if(v.endsWith("/*")){let w=v.split("/")[0];if(g)return g.startsWith(w+"/");let j=b.substring(b.lastIndexOf("."));return this._getFileIcon(j).includes(w)}return g?g===v:!1})});if(p.length>0){this.errorMessage=`Invalid file type(s): ${p.map(u=>u.name).join(", ")}`;return}}if(this.maxSize>0){let t=e.filter(p=>p.size>this.maxSize);if(t.length>0){this.errorMessage=`File(s) exceed maximum size of ${this._formatFileSize(this.maxSize)}: ${t.map(p=>p.name).join(", ")}`;return}}let i=e.map(t=>({file:t,id:this._generateId()}));this.multiple?this.selectedFiles=[...i,...this.selectedFiles]:this.selectedFiles=i,this.dispatchEvent(new CustomEvent("hot-file-change",{detail:{files:this.selectedFiles.map(t=>t.file)},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("hot-files-selected",{detail:{files:i.map(t=>t.file),allFiles:this.selectedFiles.map(t=>t.file)},bubbles:!0,composed:!0}));let s=i.length;this.statusMessage=`${s} ${s===1?"file":"files"} selected: ${i.map(t=>t.file.name).join(", ")}`}_removeFile(e){let i=this.selectedFiles.find(s=>s.id===e);this.selectedFiles=this.selectedFiles.filter(s=>s.id!==e),this.fileInput&&(this.fileInput.value=""),this.dispatchEvent(new CustomEvent("hot-file-change",{detail:{files:this.selectedFiles.map(s=>s.file)},bubbles:!0,composed:!0})),i&&(this.statusMessage=`File removed: ${i.file.name}. ${this.selectedFiles.length} ${this.selectedFiles.length===1?"file":"files"} remaining.`)}_formatFileSize(e){if(e===0)return"0 Bytes";let i=1e3,s=["Bytes","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(i)),p=e/Math.pow(i,t);return`${Math.round(p*10)/10} ${s[t]}`}_getFileIcon(e){return e.startsWith("image/")?"file-image":e.startsWith("video/")?"file-video":e.startsWith("audio/")?"file-audio":e==="application/pdf"?"file-pdf":e.includes("word")?"file-word":e.includes("sheet")||e.includes("excel")?"file-excel":e.includes("zip")||e.includes("rar")||e.includes("7z")?"file-archive":e.includes("text")?"file-text":"file"}clearFiles(){this.selectedFiles=[],this.errorMessage="",this.fileInput&&(this.fileInput.value="")}getFiles(){return this.selectedFiles.map(e=>e.file)}render(){let e={dropzone:!0,"dropzone--dragging":this.isDragging,"dropzone--disabled":this.disabled,"dropzone--has-files":this.selectedFiles.length>0,"dropzone--compact":this.variant==="compact"},i=this.variant==="compact";return h`
1
+ import{a as f,b as m,c as z}from"./chunk.ZETV7TDG.js";import{a as M}from"./chunk.252GL6HT.js";import{d as h,e as x,f as F}from"./chunk.QABMDRWR.js";import{d as n,e as o,f as d,g as c}from"./chunk.N2W26RCT.js";var E={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},y=l=>(...a)=>({_$litDirective$:l,values:a}),$=class{constructor(a){}get _$AU(){return this._$AM._$AU}_$AT(a,e,i){this._$Ct=a,this._$AM=e,this._$Ci=i}_$AS(a,e){return this.update(a,e)}update(a,e){return this.render(...e)}};var _=y(class extends ${constructor(l){var a;if(super(l),l.type!==E.ATTRIBUTE||l.name!=="class"||((a=l.strings)==null?void 0:a.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(l){return" "+Object.keys(l).filter(a=>l[a]).join(" ")+" "}update(l,[a]){var i,s;if(this.st===void 0){this.st=new Set,l.strings!==void 0&&(this.nt=new Set(l.strings.join(" ").split(/\s/).filter(t=>t!=="")));for(let t in a)a[t]&&!((i=this.nt)!=null&&i.has(t))&&this.st.add(t);return this.render(a)}let e=l.element.classList;for(let t of this.st)t in a||(e.remove(t),this.st.delete(t));for(let t in a){let p=!!a[t];p===this.st.has(t)||(s=this.nt)!=null&&s.has(t)||(p?(e.add(t),this.st.add(t)):(e.remove(t),this.st.delete(t)))}return x}});Promise.allSettled([import("@awesome.me/webawesome/dist/components/icon/icon.js"),import("@awesome.me/webawesome/dist/components/divider/divider.js")]);var S,T,C,D,P,A,B,L,k,W,I,O,r=class extends F{constructor(){super(...arguments);this.name="hot-file-input-dropzone";d(this,S,!1);d(this,T,"");d(this,C,0);d(this,D,!1);d(this,P,!1);d(this,A,"");d(this,B,"traditional");d(this,L,!1);d(this,k,[]);d(this,W,"");d(this,I,"");d(this,O)}get multiple(){return o(this,S)}set multiple(e){c(this,S,e)}get accept(){return o(this,T)}set accept(e){c(this,T,e)}get maxSize(){return o(this,C)}set maxSize(e){c(this,C,e)}get showPreview(){return o(this,D)}set showPreview(e){c(this,D,e)}get disabled(){return o(this,P)}set disabled(e){c(this,P,e)}get label(){return o(this,A)}set label(e){c(this,A,e)}get variant(){return o(this,B)}set variant(e){c(this,B,e)}get isDragging(){return o(this,L)}set isDragging(e){c(this,L,e)}get selectedFiles(){return o(this,k)}set selectedFiles(e){c(this,k,e)}get errorMessage(){return o(this,W)}set errorMessage(e){c(this,W,e)}get statusMessage(){return o(this,I)}set statusMessage(e){c(this,I,e)}get fileInput(){return o(this,O)}set fileInput(e){c(this,O,e)}_generateId(){return`file-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}_handleDragOver(e){e.preventDefault(),e.stopPropagation(),this.disabled||(this.isDragging=!0)}_handleDragLeave(e){e.preventDefault(),e.stopPropagation(),this.isDragging=!1}_handleDrop(e){var s;if(e.preventDefault(),e.stopPropagation(),this.isDragging=!1,this.disabled)return;let i=Array.from(((s=e.dataTransfer)==null?void 0:s.files)||[]);this._processFiles(i)}_handleClick(){this.disabled||this.fileInput.click()}_handleKeyDown(e){!this.disabled&&(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.fileInput.click())}_handleFileInputChange(e){let i=e.target,s=Array.from(i.files||[]);this._processFiles(s)}_processFiles(e){if(this.errorMessage="",!this.multiple&&e.length>1){this.errorMessage="Only one file can be selected";return}if(this.accept){let t=this.accept.split(",").map(u=>u.trim().toLowerCase()),p=e.filter(u=>{let b=u.name.toLowerCase(),g=u.type.toLowerCase();return!t.some(v=>{if(v.startsWith("."))return b.endsWith(v);if(v.endsWith("/*")){let w=v.split("/")[0];if(g)return g.startsWith(w+"/");let j=b.substring(b.lastIndexOf("."));return this._getFileIcon(j).includes(w)}return g?g===v:!1})});if(p.length>0){this.errorMessage=`Invalid file type(s): ${p.map(u=>u.name).join(", ")}`;return}}if(this.maxSize>0){let t=e.filter(p=>p.size>this.maxSize);if(t.length>0){this.errorMessage=`File(s) exceed maximum size of ${this._formatFileSize(this.maxSize)}: ${t.map(p=>p.name).join(", ")}`;return}}let i=e.map(t=>({file:t,id:this._generateId()}));this.multiple?this.selectedFiles=[...i,...this.selectedFiles]:this.selectedFiles=i,this.dispatchEvent(new CustomEvent("hot-file-change",{detail:{files:this.selectedFiles.map(t=>t.file)},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("hot-files-selected",{detail:{files:i.map(t=>t.file),allFiles:this.selectedFiles.map(t=>t.file)},bubbles:!0,composed:!0}));let s=i.length;this.statusMessage=`${s} ${s===1?"file":"files"} selected: ${i.map(t=>t.file.name).join(", ")}`}_removeFile(e){let i=this.selectedFiles.find(s=>s.id===e);this.selectedFiles=this.selectedFiles.filter(s=>s.id!==e),this.fileInput&&(this.fileInput.value=""),this.dispatchEvent(new CustomEvent("hot-file-change",{detail:{files:this.selectedFiles.map(s=>s.file)},bubbles:!0,composed:!0})),i&&(this.statusMessage=`File removed: ${i.file.name}. ${this.selectedFiles.length} ${this.selectedFiles.length===1?"file":"files"} remaining.`)}_formatFileSize(e){if(e===0)return"0 Bytes";let i=1e3,s=["Bytes","KB","MB","GB"],t=Math.floor(Math.log(e)/Math.log(i)),p=e/Math.pow(i,t);return`${Math.round(p*10)/10} ${s[t]}`}_getFileIcon(e){return e.startsWith("image/")?"file-image":e.startsWith("video/")?"file-video":e.startsWith("audio/")?"file-audio":e==="application/pdf"?"file-pdf":e.includes("word")?"file-word":e.includes("sheet")||e.includes("excel")?"file-excel":e.includes("zip")||e.includes("rar")||e.includes("7z")?"file-archive":e.includes("text")?"file-text":"file"}clearFiles(){this.selectedFiles=[],this.errorMessage="",this.fileInput&&(this.fileInput.value="")}getFiles(){return this.selectedFiles.map(e=>e.file)}render(){let e={dropzone:!0,"dropzone--dragging":this.isDragging,"dropzone--disabled":this.disabled,"dropzone--has-files":this.selectedFiles.length>0,"dropzone--compact":this.variant==="compact"},i=this.variant==="compact";return h`
2
2
  <div class="file-input-dropzone">
3
3
  ${this.label&&this.variant==="traditional"?h`<label class="label" id="dropzone-label">${this.label}</label>`:""}
4
4
  ${this.variant==="traditional"?h`<wa-divider></wa-divider>`:""}
@@ -0,0 +1,569 @@
1
+ import{a as u}from"./chunk.QABMDRWR.js";import{a as h,c as v}from"./chunk.N2W26RCT.js";function f(a){var t,e,r="";if(typeof a=="string"||typeof a=="number")r+=a;else if(typeof a=="object")if(Array.isArray(a)){var o=a.length;for(t=0;t<o;t++)a[t]&&(e=f(a[t]))&&(r&&(r+=" "),r+=e)}else for(e in a)a[e]&&(r&&(r+=" "),r+=e);return r}function x(){for(var a,t,e=0,r="",o=arguments.length;e<o;e++)(a=arguments[e])&&(t=f(a))&&(r&&(r+=" "),r+=t);return r}var b=a=>typeof a=="boolean"?`${a}`:a===0?"0":a,w=x,y=(a,t)=>e=>{var r;if((t==null?void 0:t.variants)==null)return w(a,e==null?void 0:e.class,e==null?void 0:e.className);let{variants:o,defaultVariants:d}=t,z=Object.keys(o).map(i=>{let n=e==null?void 0:e[i],s=d==null?void 0:d[i];if(n===null)return null;let l=b(n)||b(s);return o[i][l]}),g=e&&Object.entries(e).reduce((i,n)=>{let[s,l]=n;return l===void 0||(i[s]=l),i},{}),k=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((i,n)=>{let c=n,{class:s,className:l}=c,j=v(c,["class","className"]);return Object.entries(j).every(V=>{let[p,m]=V;return Array.isArray(m)?m.includes(h(h({},d),g)[p]):h(h({},d),g)[p]===m})?[...i,s,l]:i},[]);return w(a,z,k,e==null?void 0:e.class,e==null?void 0:e.className)};var T=y("header",{variants:{size:{small:"header--size-small",medium:"header--size-medium",large:"header--size-large"}}}),D=u`
2
+ /* ================================================================
3
+ * Layout
4
+ * ================================================================ */
5
+
6
+ .header-container {
7
+ background-color: #ffffff;
8
+ border-bottom: 1px solid var(--hot-color-neutral-100);
9
+ }
10
+
11
+ .header {
12
+ display: flex;
13
+ align-items: stretch;
14
+ justify-content: space-between;
15
+ height: auto;
16
+ padding: var(--hot-spacing-2x-small) var(--hot-spacing-small);
17
+ }
18
+
19
+ /* ================================================================
20
+ * Top bar (tagline + external link) - hidden on "small" variant
21
+ * ================================================================ */
22
+
23
+ .header--top {
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: space-between;
27
+ padding: var(--hot-spacing-2x-small) var(--hot-spacing-small);
28
+ background-color: #ffffff;
29
+ font-family: var(--hot-font-sans);
30
+ font-size: var(--hot-font-size-small);
31
+ border-bottom: 1px solid var(--hot-color-neutral-100);
32
+ }
33
+
34
+ .header--top-tagline {
35
+ color: var(--hot-color-primary-400);
36
+ white-space: nowrap;
37
+ }
38
+
39
+ .header--top-link {
40
+ color: var(--hot-color-primary-400);
41
+ text-decoration: none;
42
+ font-weight: var(--hot-font-weight-semibold);
43
+ }
44
+
45
+ .header--top-link:hover {
46
+ text-decoration: underline;
47
+ }
48
+
49
+ .header--external-icon {
50
+ display: inline-block;
51
+ vertical-align: middle;
52
+ margin-left: var(--hot-spacing-3x-small);
53
+ width: 0.65em;
54
+ height: 0.65em;
55
+ }
56
+
57
+ /* On mobile: hide the tagline and show the short link text */
58
+ .header--top-link-short {
59
+ display: inline;
60
+ }
61
+
62
+ .header--top-link-full {
63
+ display: none;
64
+ }
65
+
66
+ @media (min-width: 769px) {
67
+ .header--top-link-short {
68
+ display: none;
69
+ }
70
+
71
+ .header--top-link-full {
72
+ display: inline;
73
+ }
74
+
75
+ .header--top-tagline {
76
+ display: inline;
77
+ }
78
+ }
79
+
80
+ @media (max-width: 768px) {
81
+ .header--top-tagline {
82
+ display: none;
83
+ }
84
+ }
85
+
86
+ /* ================================================================
87
+ * Logo / title link
88
+ * ================================================================ */
89
+
90
+ .header--link {
91
+ text-decoration: none;
92
+ display: flex;
93
+ align-items: center;
94
+ justify-content: flex-start;
95
+ padding-right: var(--hot-spacing-2x-small);
96
+ gap: var(--hot-spacing-x-small);
97
+ flex-shrink: 0;
98
+ }
99
+
100
+ .header--link hot-logo {
101
+ display: flex;
102
+ align-items: center;
103
+ }
104
+
105
+ .header--link .header--logo-img {
106
+ max-height: 2.5rem;
107
+ width: auto;
108
+ display: block;
109
+ object-fit: contain;
110
+ vertical-align: middle;
111
+ }
112
+
113
+ .header--title {
114
+ color: var(--hot-color-neutral-950);
115
+ font-family: var(--hot-font-sans);
116
+ font-size: var(--hot-font-size-large);
117
+ margin: 0;
118
+ line-height: 1;
119
+ white-space: nowrap;
120
+ }
121
+
122
+ /* ================================================================
123
+ * Navigation (desktop tabs with horizontal scroll arrows)
124
+ * Hidden on mobile; shown via media query below.
125
+ * ================================================================ */
126
+
127
+ .header--nav {
128
+ display: none;
129
+ }
130
+
131
+ .header--nav-wrapper {
132
+ display: flex;
133
+ align-items: center;
134
+ width: 100%;
135
+ gap: var(--hot-spacing-2x-small);
136
+ overflow: hidden;
137
+ }
138
+
139
+ .header--nav-scroll {
140
+ flex: 1;
141
+ overflow-x: auto;
142
+ scrollbar-width: none;
143
+ }
144
+
145
+ .header--nav-scroll::-webkit-scrollbar {
146
+ display: none;
147
+ }
148
+
149
+ .header--nav-arrow {
150
+ background: transparent;
151
+ border: none;
152
+ color: var(--hot-color-neutral-500);
153
+ cursor: pointer;
154
+ padding: 0;
155
+ font-size: var(--hot-font-size-medium);
156
+ line-height: 1;
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ flex-shrink: 0;
161
+ }
162
+
163
+ .header--nav-arrow:hover {
164
+ color: var(--hot-color-neutral-800);
165
+ }
166
+
167
+ .header--nav-arrow[disabled] {
168
+ opacity: 0;
169
+ pointer-events: none;
170
+ width: 0;
171
+ padding: 0;
172
+ overflow: hidden;
173
+ }
174
+
175
+ .header--nav-mobile {
176
+ display: block;
177
+ width: 100%;
178
+ margin-top: var(--hot-spacing-small);
179
+ }
180
+
181
+ /* ================================================================
182
+ * Tabs
183
+ * ================================================================ */
184
+
185
+ .header--tab-group::part(base) {
186
+ --track-color: transparent;
187
+ --indicator-color: transparent;
188
+ }
189
+
190
+ .header--tab-group::part(nav) {
191
+ display: flex;
192
+ justify-content: flex-start;
193
+ }
194
+
195
+ .header--nav-center .header--tab-group::part(nav) {
196
+ justify-content: center;
197
+ }
198
+
199
+ .header--tab::part(base) {
200
+ font-size: var(--hot-font-size-medium);
201
+ font-weight: var(--hot-font-weight-bold);
202
+ color: var(--hot-color-neutral-600);
203
+ padding: var(--hot-spacing-small);
204
+ border-bottom: 3px solid transparent;
205
+ transition: all 0.2s ease;
206
+ text-transform: uppercase;
207
+ letter-spacing: 0.5px;
208
+ white-space: nowrap;
209
+ }
210
+
211
+ .header--tab[active]::part(base) {
212
+ color: var(--hot-color-neutral-800);
213
+ border-bottom-color: var(--hot-color-neutral-800);
214
+ }
215
+
216
+ .header--tab:hover::part(base) {
217
+ color: var(--hot-color-neutral-800);
218
+ border-bottom-color: var(--hot-color-neutral-300);
219
+ }
220
+
221
+ .header--tab[active]:hover::part(base) {
222
+ color: var(--hot-color-neutral-900);
223
+ border-bottom-color: var(--hot-color-neutral-900);
224
+ }
225
+
226
+ /* ================================================================
227
+ * Right section (login button, drawer toggle)
228
+ * ================================================================ */
229
+
230
+ .header--right-section {
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: flex-end;
234
+ gap: var(--hot-spacing-x-small);
235
+ flex-shrink: 0;
236
+ }
237
+
238
+ /* Base mobile touch target for drawer / close buttons */
239
+ wa-button[appearance="outlined"] {
240
+ min-width: 2.5rem;
241
+ min-height: 2.5rem;
242
+ padding: 0.5rem;
243
+ }
244
+
245
+ /*
246
+ * When drawer is not explicitly enabled but tabs exist, show the
247
+ * hamburger only on mobile so users can still reach the nav items.
248
+ */
249
+ .header--drawer-mobile-only {
250
+ display: inline-flex;
251
+ }
252
+
253
+ @media (min-width: 769px) {
254
+ .header--drawer-mobile-only {
255
+ display: none;
256
+ }
257
+ }
258
+
259
+ /* ================================================================
260
+ * User avatar + dropdown (shown when logged in)
261
+ * ================================================================ */
262
+
263
+ .header--avatar-trigger {
264
+ background: none;
265
+ border: none;
266
+ padding: 0;
267
+ cursor: pointer;
268
+ display: flex;
269
+ align-items: center;
270
+ justify-content: center;
271
+ border-radius: 50%;
272
+ width: 2rem;
273
+ height: 2rem;
274
+ }
275
+
276
+ .header--avatar-trigger:hover {
277
+ box-shadow: 0 0 0 2px var(--hot-color-neutral-200);
278
+ }
279
+
280
+ /* Google-style text initial avatar */
281
+ .header--avatar-initial {
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
+ width: 100%;
286
+ height: 100%;
287
+ border-radius: 50%;
288
+ background-color: var(--hot-color-primary-500);
289
+ color: #fff;
290
+ font-weight: 600;
291
+ font-size: 0.85rem;
292
+ line-height: 1;
293
+ text-transform: uppercase;
294
+ user-select: none;
295
+ }
296
+
297
+ .header--size-small .header--avatar-trigger {
298
+ width: 1.5rem;
299
+ height: 1.5rem;
300
+ }
301
+
302
+ .header--size-small .header--avatar-initial {
303
+ font-size: 0.7rem;
304
+ }
305
+
306
+ .header--user-dropdown::part(menu) {
307
+ min-width: 10rem;
308
+ }
309
+
310
+ /* ================================================================
311
+ * Login modal
312
+ * ================================================================ */
313
+
314
+ .login-modal {
315
+ --width: 35rem;
316
+ --border-radius: var(--hot-border-radius-large);
317
+ --background-color: white;
318
+ }
319
+
320
+ /* ================================================================
321
+ * Size variants
322
+ *
323
+ * small - compact toolbar (48 px)
324
+ * medium - standard header (60 px)
325
+ * large - prominent header (72 px)
326
+ *
327
+ * Each section scales: header height, logo, title, buttons, tabs.
328
+ * ================================================================ */
329
+
330
+ /* ─── Small (48 px) ─── */
331
+
332
+ .header--size-small {
333
+ height: var(--hot-spacing-3x-large); /* 3rem */
334
+ }
335
+
336
+ .header--size-small .header--link {
337
+ padding-top: var(--hot-spacing-x-small);
338
+ padding-bottom: var(--hot-spacing-x-small);
339
+ }
340
+
341
+ .header--size-small hot-logo {
342
+ --hot-logo-height: calc(var(--hot-spacing-medium) + var(--hot-spacing-x-small)); /* 1.5rem */
343
+ }
344
+
345
+ .header--size-small .header--logo-img {
346
+ max-height: 1.75rem;
347
+ }
348
+
349
+ .header--size-small .header--title {
350
+ font-size: var(--hot-font-size-medium);
351
+ }
352
+
353
+ .header--size-small .header--tab::part(base) {
354
+ font-size: var(--hot-font-size-small);
355
+ padding: var(--hot-spacing-x-small);
356
+ }
357
+
358
+ .header--size-small .header--right-section {
359
+ padding-top: var(--hot-spacing-x-small);
360
+ padding-bottom: var(--hot-spacing-x-small);
361
+ gap: var(--hot-spacing-2x-small);
362
+ }
363
+
364
+ .header--size-small .login-button::part(base) {
365
+ padding: var(--hot-spacing-3x-small) var(--hot-spacing-x-small);
366
+ font-size: var(--hot-font-size-small);
367
+ }
368
+
369
+ .header--size-small .header--right-section wa-button[appearance="outlined"] {
370
+ min-width: 1.5rem;
371
+ min-height: 1.5rem;
372
+ padding: 0;
373
+ }
374
+
375
+ .header--size-small .header--right-section wa-button[appearance="outlined"]::part(base) {
376
+ min-width: 1.5rem;
377
+ min-height: 1.5rem;
378
+ padding: var(--hot-spacing-3x-small);
379
+ }
380
+
381
+ /* ─── Medium (60 px) ─── */
382
+
383
+ .header--size-medium {
384
+ height: calc(var(--hot-spacing-3x-large) + var(--hot-spacing-small)); /* 3.75rem */
385
+ }
386
+
387
+ .header--size-medium .header--link {
388
+ padding-top: var(--hot-spacing-x-small);
389
+ padding-bottom: var(--hot-spacing-x-small);
390
+ }
391
+
392
+ .header--size-medium hot-logo {
393
+ --hot-logo-height: var(--hot-spacing-2x-large); /* 2.25rem */
394
+ }
395
+
396
+ .header--size-medium .header--logo-img {
397
+ max-height: 2.25rem;
398
+ }
399
+
400
+ .header--size-medium .login-button::part(base) {
401
+ padding: var(--hot-spacing-2x-small) var(--hot-spacing-x-small);
402
+ font-size: var(--hot-font-size-small);
403
+ }
404
+
405
+ .header--size-medium .header--right-section wa-button[appearance="outlined"] {
406
+ min-width: 2rem;
407
+ min-height: 2rem;
408
+ padding: 0;
409
+ }
410
+
411
+ .header--size-medium .header--right-section wa-button[appearance="outlined"]::part(base) {
412
+ min-width: 2rem;
413
+ min-height: 2rem;
414
+ padding: var(--hot-spacing-2x-small);
415
+ }
416
+
417
+ /* ─── Large (72 px) ─── */
418
+
419
+ .header--size-large {
420
+ height: var(--hot-spacing-4x-large); /* 4.5rem */
421
+ }
422
+
423
+ .header--size-large .header--link {
424
+ padding-top: var(--hot-spacing-x-small);
425
+ padding-bottom: var(--hot-spacing-x-small);
426
+ }
427
+
428
+ .header--size-large hot-logo {
429
+ --hot-logo-height: var(--hot-spacing-3x-large); /* 3rem */
430
+ }
431
+
432
+ .header--size-large .header--logo-img {
433
+ max-height: 2.75rem;
434
+ }
435
+
436
+ .header--size-large .header--title {
437
+ font-size: var(--hot-font-size-x-large);
438
+ }
439
+
440
+ /* ================================================================
441
+ * Desktop / tablet (≥ 769 px)
442
+ * ================================================================ */
443
+
444
+ @media (min-width: 769px) {
445
+ .header {
446
+ align-items: center;
447
+ height: auto;
448
+ }
449
+
450
+ .header--link {
451
+ justify-content: flex-start;
452
+ padding-right: 0;
453
+ gap: var(--hot-spacing-small);
454
+ }
455
+
456
+ .header--title {
457
+ font-size: var(--hot-font-size-x-large);
458
+ }
459
+
460
+ .header--nav {
461
+ display: flex;
462
+ align-items: center;
463
+ flex: 1;
464
+ min-width: 0;
465
+ margin-left: var(--hot-spacing-x-large);
466
+ font-weight: var(--hot-font-weight-semibold);
467
+ overflow: hidden;
468
+ }
469
+
470
+ .header--nav-mobile {
471
+ display: none;
472
+ }
473
+
474
+ .header--right-section {
475
+ justify-content: center;
476
+ margin-top: 0;
477
+ gap: var(--hot-spacing-small);
478
+ }
479
+
480
+ .header--size-small .header--logo-img {
481
+ max-height: 1.75rem;
482
+ }
483
+
484
+ .header--size-medium .header--logo-img {
485
+ max-height: 2.5rem;
486
+ }
487
+
488
+ .header--size-large .header--logo-img {
489
+ max-height: 2.75rem;
490
+ }
491
+
492
+ wa-button[appearance="outlined"] {
493
+ min-width: auto;
494
+ min-height: auto;
495
+ padding: initial;
496
+ }
497
+ }
498
+
499
+ /* ================================================================
500
+ * Drawer (mobile sidebar)
501
+ * ================================================================ */
502
+
503
+ .drawer-content {
504
+ list-style: none;
505
+ padding: 0;
506
+ margin: 0;
507
+ }
508
+
509
+ .drawer-nav {
510
+ margin-bottom: var(--hot-spacing-small);
511
+ }
512
+
513
+ .drawer-nav-list {
514
+ list-style: none;
515
+ padding: 0;
516
+ margin: 0;
517
+ }
518
+
519
+ .drawer-nav-item + .drawer-nav-item {
520
+ margin-top: var(--hot-spacing-x-small);
521
+ }
522
+
523
+ .drawer-nav-button {
524
+ width: 100%;
525
+ text-align: left;
526
+ background: none;
527
+ border: none;
528
+ padding: var(--hot-spacing-x-small) 0;
529
+ font: inherit;
530
+ color: var(--hot-color-neutral-950);
531
+ cursor: pointer;
532
+ }
533
+
534
+ .drawer-nav-button:hover {
535
+ color: var(--hot-color-primary-600);
536
+ }
537
+
538
+ .drawer-separator {
539
+ border: 0;
540
+ border-top: 1px solid var(--hot-color-neutral-100);
541
+ margin: var(--hot-spacing-small) 0;
542
+ }
543
+
544
+ .drawer-link-list {
545
+ list-style: none;
546
+ padding: 0;
547
+ margin: 0;
548
+ }
549
+
550
+ .drawer-link-item + .drawer-link-item {
551
+ margin-top: var(--hot-spacing-small);
552
+ }
553
+
554
+ .drawer-link {
555
+ color: inherit;
556
+ text-decoration: none;
557
+ font-size: var(--hot-font-size-medium);
558
+ }
559
+
560
+ .drawer-link:hover {
561
+ text-decoration: underline;
562
+ }
563
+
564
+ @media (min-width: 769px) {
565
+ .drawer-nav {
566
+ display: none;
567
+ }
568
+ }
569
+ `;export{T as a,D as b};
@@ -1,4 +1,4 @@
1
- import{a as d}from"./chunk.ZGC6XD6L.js";import{a as o}from"./chunk.ZETV7TDG.js";import{a as l}from"./chunk.KO4EOD3I.js";import{d as r,f as c}from"./chunk.QABMDRWR.js";import{d as s,e as a,f as n,g as i}from"./chunk.N2W26RCT.js";Promise.allSettled([import("@awesome.me/webawesome/dist/components/callout/callout.js"),import("@awesome.me/webawesome/dist/components/icon/icon.js"),import("@awesome.me/webawesome/dist/components/button/button.js")]);l();var u,g,p,b,m,h,e=class extends c{constructor(){super(...arguments);this.name="hot-consent";n(this,u,"");n(this,g,!1);n(this,p,"About the information we collect");n(this,b,"We use cookies and similar technologies to recognize and analyze your visits, and measure traffic usage and activity.");n(this,m,"I Agree");n(this,h,"I Do Not Agree")}get consentId(){return a(this,u)}set consentId(t){i(this,u,t)}get isOpen(){return a(this,g)}set isOpen(t){i(this,g,t)}get title(){return a(this,p)}set title(t){i(this,p,t)}get message(){return a(this,b)}set message(t){i(this,b,t)}get agreeLabel(){return a(this,m)}set agreeLabel(t){i(this,m,t)}get notAgreeLabel(){return a(this,h)}set notAgreeLabel(t){i(this,h,t)}render(){return this.isOpen?r`
1
+ import{a as l}from"./chunk.KO4EOD3I.js";import{a as d}from"./chunk.ZGC6XD6L.js";import{a as o}from"./chunk.ZETV7TDG.js";import{d as r,f as c}from"./chunk.QABMDRWR.js";import{d as s,e as a,f as n,g as i}from"./chunk.N2W26RCT.js";Promise.allSettled([import("@awesome.me/webawesome/dist/components/callout/callout.js"),import("@awesome.me/webawesome/dist/components/icon/icon.js"),import("@awesome.me/webawesome/dist/components/button/button.js")]);l();var u,g,p,b,m,h,e=class extends c{constructor(){super(...arguments);this.name="hot-consent";n(this,u,"");n(this,g,!1);n(this,p,"About the information we collect");n(this,b,"We use cookies and similar technologies to recognize and analyze your visits, and measure traffic usage and activity.");n(this,m,"I Agree");n(this,h,"I Do Not Agree")}get consentId(){return a(this,u)}set consentId(t){i(this,u,t)}get isOpen(){return a(this,g)}set isOpen(t){i(this,g,t)}get title(){return a(this,p)}set title(t){i(this,p,t)}get message(){return a(this,b)}set message(t){i(this,b,t)}get agreeLabel(){return a(this,m)}set agreeLabel(t){i(this,m,t)}get notAgreeLabel(){return a(this,h)}set notAgreeLabel(t){i(this,h,t)}render(){return this.isOpen?r`
2
2
  <div class="consent-overlay">
3
3
  <div class="consent-container">
4
4
  <wa-callout variant="brand" appearance="outlined filled" size="large" class="consent-callout">
@@ -1 +1 @@
1
- import{b as e}from"./chunk.6BGQ256H.js";var n=e;customElements.get("hot-consent")||customElements.define("hot-consent",e);export{n as a};
1
+ import{b as e}from"./chunk.LVC64FO7.js";var n=e;customElements.get("hot-consent")||customElements.define("hot-consent",e);export{n as a};
@@ -1 +1 @@
1
- import{b as o}from"./chunk.LVCDAVRU.js";var t=o;customElements.get("hot-logo")||customElements.define("hot-logo",o);export{t as a};
1
+ import{b as o}from"./chunk.R44PTHOJ.js";var t=o;customElements.get("hot-logo")||customElements.define("hot-logo",o);export{t as a};