@hotosm/ui 0.9.0 → 0.9.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 (48) hide show
  1. package/README.md +91 -66
  2. package/dist/chunks/{chunk.P6GWPFCT.js → chunk.24HG5LKA.js} +1 -1
  3. package/dist/chunks/{chunk.WELXILIP.js → chunk.3AWIVJTF.js} +1 -1
  4. package/dist/chunks/{chunk.FN6G7X23.js → chunk.AA57UJ2D.js} +21 -11
  5. package/dist/chunks/{chunk.JYPMFVPO.js → chunk.CCOEI6XU.js} +1 -1
  6. package/dist/chunks/{chunk.LXN3PNAP.js → chunk.DCR6GEE6.js} +3 -4
  7. package/dist/chunks/{chunk.252GL6HT.js → chunk.L7KUSNV7.js} +1 -1
  8. package/dist/chunks/{chunk.IILWGAOM.js → chunk.MKQTK2RW.js} +1 -1
  9. package/dist/chunks/{chunk.M3LK72JN.js → chunk.N7SRHM5F.js} +1 -1
  10. package/dist/chunks/{chunk.LKMWWUYT.js → chunk.NCBKWO6J.js} +1 -1
  11. package/dist/chunks/{chunk.6JUW2IZJ.js → chunk.PESN3BZK.js} +4 -2
  12. package/dist/chunks/{chunk.ZGC6XD6L.js → chunk.TUEFHEUN.js} +7 -2
  13. package/dist/chunks/{chunk.X354U5TL.js → chunk.UVBWHOA2.js} +3 -1
  14. package/dist/chunks/{chunk.5QY2VLMG.js → chunk.V7C4W6GD.js} +1 -1
  15. package/dist/chunks/{chunk.LVC64FO7.js → chunk.ZZ7X3H3S.js} +1 -1
  16. package/dist/components/consent/consent.component.d.ts +1 -1
  17. package/dist/components/consent/consent.component.js +1 -1
  18. package/dist/components/consent/consent.d.ts +2 -2
  19. package/dist/components/consent/consent.js +1 -1
  20. package/dist/components/consent/consent.styles.js +1 -1
  21. package/dist/components/file-input-dropzone/file-input-dropzone.component.d.ts +3 -3
  22. package/dist/components/file-input-dropzone/file-input-dropzone.component.js +1 -1
  23. package/dist/components/file-input-dropzone/file-input-dropzone.d.ts +3 -3
  24. package/dist/components/file-input-dropzone/file-input-dropzone.js +1 -1
  25. package/dist/components/file-input-dropzone/file-input-dropzone.styles.js +1 -1
  26. package/dist/components/header/header.component.d.ts +2 -2
  27. package/dist/components/header/header.d.ts +2 -2
  28. package/dist/components/list-card/list-card.component.d.ts +1 -1
  29. package/dist/components/list-card/list-card.component.js +1 -1
  30. package/dist/components/list-card/list-card.d.ts +2 -2
  31. package/dist/components/list-card/list-card.js +1 -1
  32. package/dist/components/list-card/list-card.styles.js +1 -1
  33. package/dist/components/logo/logo.component.d.ts +1 -1
  34. package/dist/components/logo/logo.d.ts +2 -2
  35. package/dist/components/tool-menu/tool-menu.component.js +1 -1
  36. package/dist/components/tool-menu/tool-menu.d.ts +2 -2
  37. package/dist/components/tool-menu/tool-menu.js +1 -1
  38. package/dist/components/tool-menu/tool-menu.styles.js +1 -1
  39. package/dist/components/tracking/tracking.component.d.ts +3 -0
  40. package/dist/components/tracking/tracking.component.js +1 -1
  41. package/dist/components/tracking/tracking.d.ts +2 -2
  42. package/dist/components/tracking/tracking.js +1 -1
  43. package/dist/hotosm-ui.js +1 -1
  44. package/dist/style-core.css +1 -1
  45. package/dist/style.css +1 -1
  46. package/dist/themes/hot-wa.css +61 -61
  47. package/dist/themes/hot.css +256 -249
  48. package/package.json +15 -15
package/README.md CHANGED
@@ -89,15 +89,18 @@ Two CSS files are published. Choose the one that fits your setup.
89
89
  A single self-contained file with WebAwesome base styles + HOT theme
90
90
  already inlined. Nothing else to load.
91
91
 
92
+ <!-- markdownlint-disable MD013 -->
93
+
92
94
  ```html
93
- <link rel="stylesheet"
94
- href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style.css">
95
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style.css" />
95
96
  ```
96
97
 
98
+ <!-- markdownlint-enable MD013 -->
99
+
97
100
  Or from a bundler:
98
101
 
99
102
  ```js
100
- import '@hotosm/ui/dist/style.css';
103
+ import "@hotosm/ui/dist/style.css";
101
104
  ```
102
105
 
103
106
  ### Option B - Split / CDN-optimised (recommended for multi-tool caching)
@@ -106,36 +109,45 @@ If you run several HOT tools (FMTM, Tasking Manager, etc.) and want
106
109
  the browser to **cache WebAwesome CSS once** across all of them, load
107
110
  WebAwesome from CDN separately and use the slim HOT-only stylesheet:
108
111
 
112
+ <!-- markdownlint-disable MD013 -->
113
+
109
114
  ```html
110
115
  <!-- WebAwesome CSS - shared across all HOT tools via browser cache -->
111
- <link rel="stylesheet"
112
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/native.css">
113
- <link rel="stylesheet"
114
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/utilities.css">
115
- <link rel="stylesheet"
116
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/themes/default.css">
116
+ <link
117
+ rel="stylesheet"
118
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/native.css"
119
+ />
120
+ <link
121
+ rel="stylesheet"
122
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/utilities.css"
123
+ />
124
+ <link
125
+ rel="stylesheet"
126
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/themes/default.css"
127
+ />
117
128
 
118
129
  <!-- HOT theme only (fonts + design tokens + WebAwesome overrides) -->
119
- <link rel="stylesheet"
120
- href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style-core.css">
130
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style-core.css" />
121
131
  ```
122
132
 
133
+ <!-- markdownlint-enable MD013 -->
134
+
123
135
  Or from a bundler:
124
136
 
125
137
  ```js
126
138
  // WebAwesome (resolve from node_modules)
127
- import '@awesome.me/webawesome/dist/styles/native.css';
128
- import '@awesome.me/webawesome/dist/styles/utilities.css';
129
- import '@awesome.me/webawesome/dist/styles/themes/default.css';
139
+ import "@awesome.me/webawesome/dist/styles/native.css";
140
+ import "@awesome.me/webawesome/dist/styles/utilities.css";
141
+ import "@awesome.me/webawesome/dist/styles/themes/default.css";
130
142
 
131
143
  // HOT theme only
132
- import '@hotosm/ui/dist/style-core.css';
144
+ import "@hotosm/ui/dist/style-core.css";
133
145
  ```
134
146
 
135
- | File | Size | Contains |
136
- | --- | --- | --- |
137
- | `style.css` | ~105 KB | WebAwesome + fonts + HOT theme (everything) |
138
- | `style-core.css` | ~21 KB | Fonts + HOT theme only (no WebAwesome) |
147
+ | File | Size | Contains |
148
+ | ---------------- | ------- | ------------------------------------------- |
149
+ | `style.css` | ~105 KB | WebAwesome + fonts + HOT theme (everything) |
150
+ | `style-core.css` | ~21 KB | Fonts + HOT theme only (no WebAwesome) |
139
151
 
140
152
  > [!TIP]
141
153
  > **Which should I pick?**
@@ -154,8 +166,12 @@ Add the required WebAwesome classes to your `<html>` element:
154
166
  ```html
155
167
  <!DOCTYPE html>
156
168
  <html class="wa-theme-default wa-palette-hotosm">
157
- <head>...</head>
158
- <body>...</body>
169
+ <head>
170
+ ...
171
+ </head>
172
+ <body>
173
+ ...
174
+ </body>
159
175
  </html>
160
176
  ```
161
177
 
@@ -172,7 +188,7 @@ Add the required WebAwesome classes to your `<html>` element:
172
188
  Import individual components - your bundler will tree-shake the rest:
173
189
 
174
190
  ```js
175
- import '@hotosm/ui/dist/components/header/header.js';
191
+ import "@hotosm/ui/dist/components/header/header.js";
176
192
  ```
177
193
 
178
194
  ```html
@@ -188,48 +204,57 @@ all HOT tools (Option B from the styles section above):
188
204
  ```html
189
205
  <!DOCTYPE html>
190
206
  <html class="wa-theme-default wa-palette-hotosm">
191
- <head>
192
- <!-- WebAwesome CSS - cached once across all HOT tools at this WA version -->
193
- <link rel="stylesheet"
194
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/native.css">
195
- <link rel="stylesheet"
196
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/utilities.css">
197
- <link rel="stylesheet"
198
- href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/themes/default.css">
199
-
200
- <!-- HOT UI theme (fonts + HOT design tokens + WebAwesome overrides, ~21 KB) -->
201
- <link rel="stylesheet"
202
- href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style-core.css">
203
-
204
- <!-- Import map: resolves WebAwesome bare-module specifiers
207
+ <head>
208
+ <!-- WebAwesome CSS - cached once across all HOT tools at this WA version -->
209
+ <link
210
+ rel="stylesheet"
211
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/native.css"
212
+ />
213
+ <link
214
+ rel="stylesheet"
215
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/utilities.css"
216
+ />
217
+ <link
218
+ rel="stylesheet"
219
+ href="https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist/styles/themes/default.css"
220
+ />
221
+
222
+ <!-- HOT UI theme (fonts + HOT design tokens + WebAwesome overrides,
223
+ ~21 KB) -->
224
+ <link
225
+ rel="stylesheet"
226
+ href="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/style-core.css"
227
+ />
228
+
229
+ <!-- Import map: resolves WebAwesome bare-module specifiers
205
230
  inside hotosm-ui.js -->
206
- <!-- WA components load lazily from CDN only when first used;
231
+ <!-- WA components load lazily from CDN only when first used;
207
232
  no separate loader needed -->
208
- <script type="importmap">
209
- {
210
- "imports": {
211
- "@awesome.me/webawesome/dist/components/":
212
- "https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist-cdn/components/"
233
+ <script type="importmap">
234
+ {
235
+ "imports": {
236
+ "@awesome.me/webawesome/dist/components/": "https://cdn.jsdelivr.net/npm/@awesome.me/webawesome@3.2.1/dist-cdn/components/"
237
+ }
213
238
  }
214
- }
215
- </script>
216
-
217
- <!-- HOT UI web components -->
218
- <script type="module"
219
- src="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/hotosm-ui.js">
220
- </script>
221
- </head>
222
-
223
- <body>
224
- <hot-header id="hdr" title="My App" size="small" show-login></hot-header>
225
-
226
- <script>
227
- // Boolean props default to false.
228
- // Include the attribute to make it true.
229
- const hdr = document.getElementById('hdr');
230
- hdr.drawer = true; // enable the hamburger drawer
231
- </script>
232
- </body>
239
+ </script>
240
+
241
+ <!-- HOT UI web components -->
242
+ <script
243
+ type="module"
244
+ src="https://cdn.jsdelivr.net/npm/@hotosm/ui@0.6.1/dist/hotosm-ui.js"
245
+ ></script>
246
+ </head>
247
+
248
+ <body>
249
+ <hot-header id="hdr" title="My App" size="small" show-login></hot-header>
250
+
251
+ <script>
252
+ // Boolean props default to false.
253
+ // Include the attribute to make it true.
254
+ const hdr = document.getElementById("hdr");
255
+ hdr.drawer = true; // enable the hamburger drawer
256
+ </script>
257
+ </body>
233
258
  </html>
234
259
  ```
235
260
 
@@ -245,14 +270,14 @@ Web Components work in React with a small caveat - use `ref` callbacks
245
270
  for custom events if React's synthetic event system doesn't forward them:
246
271
 
247
272
  ```jsx
248
- import '@hotosm/ui/dist/components/header/header.js';
273
+ import "@hotosm/ui/dist/components/header/header.js";
249
274
 
250
275
  function App() {
251
276
  return (
252
277
  <hot-header
253
278
  title="My App"
254
279
  ref={(el) => {
255
- if (el) el.addEventListener('login', () => console.log('logged in'));
280
+ if (el) el.addEventListener("login", () => console.log("logged in"));
256
281
  }}
257
282
  />
258
283
  );
@@ -299,9 +324,9 @@ pnpm run dev # starts Storybook on localhost:3001
299
324
 
300
325
  **Styling files** (under `src/themes/`):
301
326
 
302
- | File | Purpose |
303
- | --- | --- |
304
- | `hot.css` | HOT design tokens (colours, typography, spacing) |
327
+ | File | Purpose |
328
+ | ------------ | ------------------------------------------------------ |
329
+ | `hot.css` | HOT design tokens (colours, typography, spacing) |
305
330
  | `hot-wa.css` | WebAwesome variable overrides to apply the HOT palette |
306
331
 
307
332
  ---
@@ -1,4 +1,4 @@
1
- import{a as f}from"./chunk.LXN3PNAP.js";import{a as l}from"./chunk.ZETV7TDG.js";import{d as a,f as n}from"./chunk.QABMDRWR.js";import{d as s}from"./chunk.N2W26RCT.js";var h='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3-gap-fill" viewBox="0 0 16 16">%0A <path d="M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/>%0A</svg>';var m='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%230f766e" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A DR%0A </text>%0A</svg>%0A';var g='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%230f766e" />%0A <text%0A x="32"%0A y="39"%0A text-anchor="middle"%0A font-size="17"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A OAM%0A </text>%0A</svg>%0A';var d='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23ea580c" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="24"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A TM%0A </text>%0A</svg>%0A';var p='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%239333ea" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A AI%0A </text>%0A</svg>%0A';var c='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%232563eb" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A FM%0A </text>%0A</svg>%0A';var w='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23dc2626" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A CM%0A </text>%0A</svg>%0A';var x='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%234f46e5" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A EX%0A </text>%0A</svg>%0A';var v='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23be185d" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A UM%0A </text>%0A</svg>%0A';Promise.allSettled([import("@awesome.me/webawesome/dist/components/dropdown/dropdown.js"),import("@awesome.me/webawesome/dist/components/button/button.js"),import("@awesome.me/webawesome/dist/components/icon/icon.js")]);var $=[{id:"imagery",title:"Imagery"},{id:"mapping",title:"Mapping"},{id:"field",title:"Field"},{id:"data",title:"Data"}],S=[{id:"drone",title:"Drone Tasking Manager",href:"https://dronetm.org/",icon:m,section:"imagery"},{id:"oam",title:"OpenAerialMap",href:"https://openaerialmap.org/",icon:g,section:"imagery"},{id:"tasking-manager",title:"Tasking Manager",href:"https://tasks.hotosm.org/",icon:d,section:"mapping"},{id:"fair",title:"fAIr",href:"https://fair.hotosm.org/",icon:p,section:"mapping"},{id:"field",title:"Field Mapping Tasking Manager",href:"https://fmtm.hotosm.org/",icon:c,section:"field"},{id:"chat-map",title:"ChatMap",href:"https://www.hotosm.org/tech-suite/chatmap/",icon:w,section:"field"},{id:"export-tool",title:"Export Tool",href:"https://export.hotosm.org/",icon:x,section:"data"},{id:"umap",title:"Maps",href:"https://umap.hotosm.org/",icon:v,section:"data"}],r=class extends n{constructor(){super(...arguments);this.showLogos=!1;this.tools=S}getToolsBySection(t){return this.tools.filter(o=>o.section===t)}handleSelect(t){let o=t.detail.item.value,i=this.tools.find(e=>e.id===o);i&&(this.dispatchEvent(new CustomEvent("tool-selected",{detail:{tool:i},bubbles:!0,composed:!0})),window.open(i.href,"_blank","noopener,noreferrer"))}render(){return a`
1
+ import{a as f}from"./chunk.DCR6GEE6.js";import{a as l}from"./chunk.ZETV7TDG.js";import{d as a,f as n}from"./chunk.QABMDRWR.js";import{d as s}from"./chunk.N2W26RCT.js";var h='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-grid-3x3-gap-fill" viewBox="0 0 16 16">%0A <path d="M1 2a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1zM1 12a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm5 0a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1z"/>%0A</svg>';var m='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%230f766e" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A DR%0A </text>%0A</svg>%0A';var g='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%230f766e" />%0A <text%0A x="32"%0A y="39"%0A text-anchor="middle"%0A font-size="17"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A OAM%0A </text>%0A</svg>%0A';var d='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23ea580c" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="24"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A TM%0A </text>%0A</svg>%0A';var p='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%239333ea" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A AI%0A </text>%0A</svg>%0A';var c='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%232563eb" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A FM%0A </text>%0A</svg>%0A';var w='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23dc2626" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A CM%0A </text>%0A</svg>%0A';var x='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%234f46e5" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A EX%0A </text>%0A</svg>%0A';var v='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">%0A <rect width="64" height="64" rx="12" fill="%23be185d" />%0A <text%0A x="32"%0A y="40"%0A text-anchor="middle"%0A font-size="22"%0A font-family="Arial, sans-serif"%0A font-weight="700"%0A fill="%23ffffff"%0A >%0A UM%0A </text>%0A</svg>%0A';Promise.allSettled([import("@awesome.me/webawesome/dist/components/dropdown/dropdown.js"),import("@awesome.me/webawesome/dist/components/button/button.js"),import("@awesome.me/webawesome/dist/components/icon/icon.js")]);var $=[{id:"imagery",title:"Imagery"},{id:"mapping",title:"Mapping"},{id:"field",title:"Field"},{id:"data",title:"Data"}],S=[{id:"drone",title:"Drone Tasking Manager",href:"https://dronetm.org/",icon:m,section:"imagery"},{id:"oam",title:"OpenAerialMap",href:"https://openaerialmap.org/",icon:g,section:"imagery"},{id:"tasking-manager",title:"Tasking Manager",href:"https://tasks.hotosm.org/",icon:d,section:"mapping"},{id:"fair",title:"fAIr",href:"https://fair.hotosm.org/",icon:p,section:"mapping"},{id:"field",title:"Field Mapping Tasking Manager",href:"https://fmtm.hotosm.org/",icon:c,section:"field"},{id:"chat-map",title:"ChatMap",href:"https://www.hotosm.org/tech-suite/chatmap/",icon:w,section:"field"},{id:"export-tool",title:"Export Tool",href:"https://export.hotosm.org/",icon:x,section:"data"},{id:"umap",title:"Maps",href:"https://umap.hotosm.org/",icon:v,section:"data"}],r=class extends n{constructor(){super(...arguments);this.showLogos=!1;this.tools=S}getToolsBySection(t){return this.tools.filter(o=>o.section===t)}handleSelect(t){let o=t.detail.item.value,i=this.tools.find(e=>e.id===o);i&&(this.dispatchEvent(new CustomEvent("tool-selected",{detail:{tool:i},bubbles:!0,composed:!0})),window.open(i.href,"_blank","noopener,noreferrer"))}render(){return a`
2
2
  <wa-dropdown placement="bottom-end" @wa-select=${this.handleSelect}>
3
3
  <wa-button
4
4
  slot="trigger"
@@ -1 +1 @@
1
- import{b as e}from"./chunk.6JUW2IZJ.js";var t=e;customElements.get("hot-file-input-dropzone")||customElements.define("hot-file-input-dropzone",e);export{t as a};
1
+ import{b as e}from"./chunk.PESN3BZK.js";var t=e;customElements.get("hot-file-input-dropzone")||customElements.define("hot-file-input-dropzone",e);export{t as a};
@@ -1,4 +1,4 @@
1
- import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"./chunk.QABMDRWR.js";import{d as o,e as n,f as s,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")]);var m,v,w,x,f,a=class extends b{constructor(){super(...arguments);this.name="hot-tracking";s(this,m,"");s(this,v,"");s(this,w,"https://matomo.hotosm.org");s(this,x,!1);s(this,f,"We use cookies and similar technologies to help personalize content, tailor and measure ads, and provide a better experience. By clicking 'Accept', you consent to our use of cookies and tracking technologies.");this.consentGiven=!1;this.consentShown=!1;this.errorMessage="";this.showError=!1;this.successMessage="";this.showSuccess=!1;this.infoMessage="";this.showInfo=!1}get siteId(){return n(this,m)}set siteId(r){i(this,m,r)}get domain(){return n(this,v)}set domain(r){i(this,v,r)}get matomoURL(){return n(this,w)}set matomoURL(r){i(this,w,r)}get showConsent(){return n(this,x)}set showConsent(r){i(this,x,r)}get consentMessage(){return n(this,f)}set consentMessage(r){i(this,f,r)}agree(){this.consentGiven=!0,this.consentShown=!1;let r=window._paq=window._paq||[];r.length!==0&&(r.push(["rememberConsentGiven"]),r.push(["trackPageView"]),this.showSuccessCallout("Tracking consent granted. Thank you!"))}disagree(){this.consentGiven=!1,this.consentShown=!1;let r=window._paq=window._paq||[];r.length!==0&&(r.push(["forgetConsentGiven"]),this.showInfoCallout("Tracking disabled. You can change this preference later."))}showConsentBanner(){this.showConsent&&!this.consentGiven&&!this.consentShown&&(this.consentShown=!0)}showErrorCallout(r){this.errorMessage=r,this.showError=!0,setTimeout(()=>{this.showError=!1},1e4)}showSuccessCallout(r){this.successMessage=r,this.showSuccess=!0,setTimeout(()=>{this.showSuccess=!1},5e3)}showInfoCallout(r){this.infoMessage=r,this.showInfo=!0,setTimeout(()=>{this.showInfo=!1},5e3)}render(){return l`
1
+ import{a as c,b as t}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"./chunk.QABMDRWR.js";import{d as a,e as s,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")]);var m,v,w,f,x,r=class extends b{constructor(){super(...arguments);this.name="hot-tracking";n(this,m,"");n(this,v,"");n(this,w,"https://matomo.hotosm.org");n(this,f,!1);n(this,x,"We use cookies and similar technologies to help personalize content, tailor and measure ads, and provide a better experience. By clicking 'Accept', you consent to our use of cookies and tracking technologies.");this.consentGiven=!1;this.consentShown=!1;this.errorMessage="";this.showError=!1;this.successMessage="";this.showSuccess=!1;this.infoMessage="";this.showInfo=!1}get siteId(){return s(this,m)}set siteId(e){i(this,m,e)}get domain(){return s(this,v)}set domain(e){i(this,v,e)}get matomoURL(){return s(this,w)}set matomoURL(e){i(this,w,e)}get showConsent(){return s(this,f)}set showConsent(e){i(this,f,e)}get consentMessage(){return s(this,x)}set consentMessage(e){i(this,x,e)}get consentKey(){return`hot-matomo-consent-${this.siteId}`}getStoredConsent(){let e=localStorage.getItem(this.consentKey);return e===null?null:e==="true"}setStoredConsent(e){localStorage.setItem(this.consentKey,String(e))}agree(){this.consentGiven=!0,this.consentShown=!1,this.setStoredConsent(!0);let e=window._paq=window._paq||[];e.push(["rememberConsentGiven"]),e.push(["trackPageView"]),this.showSuccessCallout("Tracking consent granted. Thank you!")}disagree(){this.consentGiven=!1,this.consentShown=!1,this.setStoredConsent(!1),(window._paq=window._paq||[]).push(["forgetConsentGiven"]),this.showInfoCallout("Tracking disabled. You can change this preference later.")}showConsentBanner(){this.showConsent&&!this.consentGiven&&!this.consentShown&&(this.consentShown=!0)}showErrorCallout(e){this.errorMessage=e,this.showError=!0,setTimeout(()=>{this.showError=!1},1e4)}showSuccessCallout(e){this.successMessage=e,this.showSuccess=!0,setTimeout(()=>{this.showSuccess=!1},5e3)}showInfoCallout(e){this.infoMessage=e,this.showInfo=!0,setTimeout(()=>{this.showInfo=!1},5e3)}render(){return l`
2
2
  ${this.showError?l`
3
3
  <div class="error-banner">
4
4
  <wa-callout style="padding: 1rem;" variant="danger" appearance="outlined filled" size="large">
@@ -43,10 +43,10 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
43
43
  <strong>Privacy & Tracking</strong><br />
44
44
  ${this.consentMessage}
45
45
  <div class="consent-actions">
46
- <wa-button size="small" variant="neutral" @click=${r=>{r.preventDefault(),r.stopPropagation(),this.disagree()}}>
46
+ <wa-button size="small" variant="neutral" @click=${e=>{e.preventDefault(),e.stopPropagation(),this.disagree()}}>
47
47
  Decline
48
48
  </wa-button>
49
- <wa-button size="small" variant="brand" @click=${r=>{r.preventDefault(),r.stopPropagation(),this.agree()}}>
49
+ <wa-button size="small" variant="brand" @click=${e=>{e.preventDefault(),e.stopPropagation(),this.agree()}}>
50
50
  Accept
51
51
  </wa-button>
52
52
  </div>
@@ -54,7 +54,7 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
54
54
  </wa-callout>
55
55
  </div>
56
56
  `:""}
57
- `}connectedCallback(){if(super.connectedCallback(),window.location.hostname!==this.domain){this.showErrorCallout(`Matomo tracking is not configured for this domain. Current domain: ${window.location.hostname}, Expected: ${this.domain}`);return}let r=this.siteId;if(r.length===0||this.domain.length===0){this.showErrorCallout("Matomo tracking is not properly configured. Please provide both site-id and domain attributes.");return}let t=window._paq=window._paq||[];t.push(["requireConsent"]),t.push(["setDomains",[this.domain]]),t.push(["enableLinkTracking"]),t.push(["trackVisibleContentImpressions"]),(function(h){t.push(["setTrackerUrl",`${h}/matomo.php`]),t.push(["setSiteId",r]);let u=document,p=u.createElement("script"),d=u.getElementsByTagName("script")[0];(d==null?void 0:d.parentNode)!=null?(p.async=!0,p.src=`${h}/matomo.js`,d.parentNode.insertBefore(p,d)):console.warn("Script insertion failed. Parent node is null.")})(this.matomoURL),setTimeout(()=>{this.showConsentBanner()},1e3)}};m=new WeakMap,v=new WeakMap,w=new WeakMap,x=new WeakMap,f=new WeakMap,a.styles=g`
57
+ `}connectedCallback(){if(super.connectedCallback(),window.location.hostname!==this.domain){console.warn(`[hot-tracking] Domain mismatch: expected "${this.domain}", got "${window.location.hostname}". Tracking disabled.`);return}let e=this.siteId;if(e.length===0||this.domain.length===0){this.showErrorCallout("Matomo tracking is not properly configured. Please provide both site-id and domain attributes.");return}let o=window._paq=window._paq||[];if(o.push(["setDomains",[this.domain]]),o.push(["enableLinkTracking"]),o.push(["trackVisibleContentImpressions"]),(function(d){o.push(["setTrackerUrl",`${d}/matomo.php`]),o.push(["setSiteId",e]);let u=document,h=u.createElement("script"),p=u.getElementsByTagName("script")[0];(p==null?void 0:p.parentNode)!=null?(h.async=!0,h.src=`${d}/matomo.js`,p.parentNode.insertBefore(h,p)):console.warn("Script insertion failed. Parent node is null.")})(this.matomoURL),this.showConsent){o.push(["requireConsent"]);let d=this.getStoredConsent();d===!0?(this.consentGiven=!0,o.push(["rememberConsentGiven"]),o.push(["trackPageView"])):d===!1?this.consentGiven=!1:setTimeout(()=>{this.showConsentBanner()},1e3)}else o.push(["trackPageView"])}};m=new WeakMap,v=new WeakMap,w=new WeakMap,f=new WeakMap,x=new WeakMap,r.styles=g`
58
58
  :host {
59
59
  display: block;
60
60
  font-family: var(--hot-font-sans);
@@ -140,13 +140,18 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
140
140
  }
141
141
 
142
142
  .error-banner wa-callout::before {
143
- content: '';
143
+ content: "";
144
144
  position: absolute;
145
145
  top: 0;
146
146
  left: 0;
147
147
  right: 0;
148
148
  height: 4px;
149
- background: linear-gradient(90deg, var(--hot-color-primary-500), var(--hot-color-primary-600), var(--hot-color-primary-700));
149
+ background: linear-gradient(
150
+ 90deg,
151
+ var(--hot-color-primary-500),
152
+ var(--hot-color-primary-600),
153
+ var(--hot-color-primary-700)
154
+ );
150
155
  border-radius: var(--hot-border-radius-x-large) var(--hot-border-radius-x-large) 0 0;
151
156
  }
152
157
 
@@ -169,7 +174,7 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
169
174
  }
170
175
 
171
176
  .toast-banner wa-callout[variant="success"]::before {
172
- content: '';
177
+ content: "";
173
178
  position: absolute;
174
179
  top: 0;
175
180
  left: 0;
@@ -190,7 +195,7 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
190
195
  }
191
196
 
192
197
  .toast-banner wa-callout[variant="brand"]::before {
193
- content: '';
198
+ content: "";
194
199
  position: absolute;
195
200
  top: 0;
196
201
  left: 0;
@@ -209,13 +214,18 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
209
214
  }
210
215
 
211
216
  .consent-banner wa-callout::before {
212
- content: '';
217
+ content: "";
213
218
  position: absolute;
214
219
  top: 0;
215
220
  left: 0;
216
221
  right: 0;
217
222
  height: 4px;
218
- background: linear-gradient(90deg, var(--hot-color-primary-500), var(--hot-color-primary-600), var(--hot-color-primary-700));
223
+ background: linear-gradient(
224
+ 90deg,
225
+ var(--hot-color-primary-500),
226
+ var(--hot-color-primary-600),
227
+ var(--hot-color-primary-700)
228
+ );
219
229
  border-radius: var(--hot-border-radius-x-large) var(--hot-border-radius-x-large) 0 0;
220
230
  }
221
231
 
@@ -248,4 +258,4 @@ import{a as c,b as e}from"./chunk.ZETV7TDG.js";import{a as g,d as l,f as b}from"
248
258
  width: 100%;
249
259
  }
250
260
  }
251
- `,o([c({type:String,attribute:"site-id"})],a.prototype,"siteId",1),o([c({type:String})],a.prototype,"domain",1),o([c({type:String})],a.prototype,"matomoURL",1),o([c({type:Boolean,attribute:"show-consent"})],a.prototype,"showConsent",1),o([c({type:String,attribute:"consent-message"})],a.prototype,"consentMessage",1),o([e()],a.prototype,"consentGiven",2),o([e()],a.prototype,"consentShown",2),o([e()],a.prototype,"errorMessage",2),o([e()],a.prototype,"showError",2),o([e()],a.prototype,"successMessage",2),o([e()],a.prototype,"showSuccess",2),o([e()],a.prototype,"infoMessage",2),o([e()],a.prototype,"showInfo",2);var E=a;export{a,E as b};
261
+ `,a([c({type:String,attribute:"site-id"})],r.prototype,"siteId",1),a([c({type:String})],r.prototype,"domain",1),a([c({type:String})],r.prototype,"matomoURL",1),a([c({type:Boolean,attribute:"show-consent"})],r.prototype,"showConsent",1),a([c({type:String,attribute:"consent-message"})],r.prototype,"consentMessage",1),a([t()],r.prototype,"consentGiven",2),a([t()],r.prototype,"consentShown",2),a([t()],r.prototype,"errorMessage",2),a([t()],r.prototype,"showError",2),a([t()],r.prototype,"successMessage",2),a([t()],r.prototype,"showSuccess",2),a([t()],r.prototype,"infoMessage",2),a([t()],r.prototype,"showInfo",2);var I=r;export{r as a,I as b};
@@ -1 +1 @@
1
- import{b as t}from"./chunk.FN6G7X23.js";var a=t;customElements.get("hot-tracking")||customElements.define("hot-tracking",t);export{a};
1
+ import{b as t}from"./chunk.AA57UJ2D.js";var a=t;customElements.get("hot-tracking")||customElements.define("hot-tracking",t);export{a};
@@ -4,8 +4,7 @@ import{a as o}from"./chunk.QABMDRWR.js";var a=o`
4
4
  }
5
5
 
6
6
  wa-dropdown-item {
7
- --wa-dropdown-item-padding: var(--hot-spacing-small)
8
- var(--hot-spacing-medium);
7
+ --wa-dropdown-item-padding: var(--hot-spacing-small) var(--hot-spacing-medium);
9
8
  --wa-dropdown-item-min-height: 60px;
10
9
  cursor: pointer;
11
10
  }
@@ -29,8 +28,8 @@ import{a as o}from"./chunk.QABMDRWR.js";var a=o`
29
28
  wa-dropdown-label {
30
29
  font-weight: var(--hot-font-weight-semibold);
31
30
  font-size: var(--hot-font-size-small);
32
- padding: var(--hot-spacing-x-small) var(--hot-spacing-medium)
33
- var(--hot-spacing-2x-small) var(--hot-spacing-medium);
31
+ padding: var(--hot-spacing-x-small) var(--hot-spacing-medium) var(--hot-spacing-2x-small)
32
+ var(--hot-spacing-medium);
34
33
  }
35
34
 
36
35
  .tool-title {
@@ -70,7 +70,7 @@ import{a as o}from"./chunk.QABMDRWR.js";var e=o`
70
70
  background-color: var(--hot-color-neutral-100);
71
71
  }
72
72
 
73
- .dropzone input[type='file'] {
73
+ .dropzone input[type="file"] {
74
74
  position: absolute;
75
75
  width: 1px;
76
76
  height: 1px;
@@ -1 +1 @@
1
- import{b as t}from"./chunk.LKMWWUYT.js";var a=t;customElements.get("hot-list-card")||customElements.define("hot-list-card",t);export{a};
1
+ import{b as t}from"./chunk.NCBKWO6J.js";var a=t;customElements.get("hot-list-card")||customElements.define("hot-list-card",t);export{a};
@@ -1 +1 @@
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
+ import{b as e}from"./chunk.ZZ7X3H3S.js";var n=e;customElements.get("hot-consent")||customElements.define("hot-consent",e);export{n as a};
@@ -1,4 +1,4 @@
1
- import{a as r}from"./chunk.X354U5TL.js";import{a as n}from"./chunk.ZETV7TDG.js";import{d as a,f as c}from"./chunk.QABMDRWR.js";import{d as t,e as s,f as o,g as i}from"./chunk.N2W26RCT.js";Promise.allSettled([import("@awesome.me/webawesome/dist/components/icon/icon.js")]);var h,m,d,v,u,y,e=class extends c{constructor(){super(...arguments);this.name="hot-list-card";o(this,h,"");o(this,m,"");o(this,d,"");o(this,v,"");o(this,u,!1);o(this,y,!1)}get title(){return s(this,h)}set title(l){i(this,h,l)}get subtitle(){return s(this,m)}set subtitle(l){i(this,m,l)}get icon(){return s(this,d)}set icon(l){i(this,d,l)}get itemId(){return s(this,v)}set itemId(l){i(this,v,l)}get showRemove(){return s(this,u)}set showRemove(l){i(this,u,l)}get showIcon(){return s(this,y)}set showIcon(l){i(this,y,l)}_handleRemove(){this.dispatchEvent(new CustomEvent("hot-remove",{detail:{id:this.itemId},bubbles:!0,composed:!0}))}_handleKeyDown(l){(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),this._handleRemove())}render(){let l=this.showIcon&&this.icon;return a`
1
+ import{a as r}from"./chunk.UVBWHOA2.js";import{a as n}from"./chunk.ZETV7TDG.js";import{d as a,f as c}from"./chunk.QABMDRWR.js";import{d as t,e as s,f as o,g as i}from"./chunk.N2W26RCT.js";Promise.allSettled([import("@awesome.me/webawesome/dist/components/icon/icon.js")]);var h,m,d,v,u,y,e=class extends c{constructor(){super(...arguments);this.name="hot-list-card";o(this,h,"");o(this,m,"");o(this,d,"");o(this,v,"");o(this,u,!1);o(this,y,!1)}get title(){return s(this,h)}set title(l){i(this,h,l)}get subtitle(){return s(this,m)}set subtitle(l){i(this,m,l)}get icon(){return s(this,d)}set icon(l){i(this,d,l)}get itemId(){return s(this,v)}set itemId(l){i(this,v,l)}get showRemove(){return s(this,u)}set showRemove(l){i(this,u,l)}get showIcon(){return s(this,y)}set showIcon(l){i(this,y,l)}_handleRemove(){this.dispatchEvent(new CustomEvent("hot-remove",{detail:{id:this.itemId},bubbles:!0,composed:!0}))}_handleKeyDown(l){(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),this._handleRemove())}render(){let l=this.showIcon&&this.icon;return a`
2
2
  <div class="list-item" role="listitem">
3
3
  ${l?a`<wa-icon name=${this.icon} class="list-icon" aria-hidden="true"></wa-icon>`:""}
4
4
  <div class="list-info">
@@ -1,7 +1,9 @@
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`
1
+ import{a as f,b as m,c as z}from"./chunk.ZETV7TDG.js";import{a as M}from"./chunk.L7KUSNV7.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
- ${this.variant==="traditional"?h`<wa-divider></wa-divider>`:""}
4
+ ${this.variant==="traditional"?h`
5
+ <wa-divider></wa-divider>
6
+ `:""}
5
7
 
6
8
  <div
7
9
  class=${_(e)}
@@ -57,13 +57,18 @@ import{a as o}from"./chunk.QABMDRWR.js";var e=o`
57
57
  }
58
58
 
59
59
  .consent-callout::before {
60
- content: '';
60
+ content: "";
61
61
  position: absolute;
62
62
  top: 0;
63
63
  left: 0;
64
64
  right: 0;
65
65
  height: 4px;
66
- background: linear-gradient(90deg, var(--hot-color-primary-500), var(--hot-color-primary-600), var(--hot-color-primary-700));
66
+ background: linear-gradient(
67
+ 90deg,
68
+ var(--hot-color-primary-500),
69
+ var(--hot-color-primary-600),
70
+ var(--hot-color-primary-700)
71
+ );
67
72
  border-radius: var(--hot-border-radius-x-large) var(--hot-border-radius-x-large) 0 0;
68
73
  }
69
74
 
@@ -50,7 +50,9 @@ import{a as o}from"./chunk.QABMDRWR.js";var t=o`
50
50
  align-items: center;
51
51
  justify-content: center;
52
52
  border-radius: var(--hot-border-radius-small);
53
- transition: background-color 0.2s ease, color 0.2s ease;
53
+ transition:
54
+ background-color 0.2s ease,
55
+ color 0.2s ease;
54
56
  color: var(--hot-color-neutral-500);
55
57
  }
56
58
 
@@ -1 +1 @@
1
- import{b as o}from"./chunk.P6GWPFCT.js";var t=o;customElements.get("hotosm-tool-menu")||customElements.define("hotosm-tool-menu",o);export{t as a};
1
+ import{b as o}from"./chunk.24HG5LKA.js";var t=o;customElements.get("hotosm-tool-menu")||customElements.define("hotosm-tool-menu",o);export{t as a};
@@ -1,4 +1,4 @@
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`
1
+ import{a as l}from"./chunk.KO4EOD3I.js";import{a as d}from"./chunk.TUEFHEUN.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,5 +1,5 @@
1
1
  import { LitElement } from "lit";
2
- import type { CSSResultGroup } from 'lit';
2
+ import type { CSSResultGroup } from "lit";
3
3
  export declare class Consent extends LitElement {
4
4
  static styles: CSSResultGroup;
5
5
  name: string;
@@ -1 +1 @@
1
- import{a,b}from"../../chunks/chunk.LVC64FO7.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.ZGC6XD6L.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as Consent,b as default};
1
+ import{a,b}from"../../chunks/chunk.ZZ7X3H3S.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.TUEFHEUN.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as Consent,b as default};
@@ -1,7 +1,7 @@
1
- import Consent from './consent.component.js';
1
+ import Consent from "./consent.component.js";
2
2
  export default Consent;
3
3
  declare global {
4
4
  interface HTMLElementTagNameMap {
5
- 'hot-consent': Consent;
5
+ "hot-consent": Consent;
6
6
  }
7
7
  }
@@ -1 +1 @@
1
- import{a}from"../../chunks/chunk.M3LK72JN.js";import"../../chunks/chunk.LVC64FO7.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.ZGC6XD6L.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as default};
1
+ import{a}from"../../chunks/chunk.N7SRHM5F.js";import"../../chunks/chunk.ZZ7X3H3S.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.TUEFHEUN.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as default};
@@ -1 +1 @@
1
- import{a}from"../../chunks/chunk.ZGC6XD6L.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as default};
1
+ import{a}from"../../chunks/chunk.TUEFHEUN.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as default};
@@ -1,5 +1,5 @@
1
- import { LitElement } from 'lit';
2
- import '../list-card/list-card.js';
1
+ import { LitElement } from "lit";
2
+ import "../list-card/list-card.js";
3
3
  export interface FileWithPreview {
4
4
  file: File;
5
5
  id: string;
@@ -13,7 +13,7 @@ export declare class FileInputDropzone extends LitElement {
13
13
  accessor showPreview: boolean;
14
14
  accessor disabled: boolean;
15
15
  accessor label: string;
16
- accessor variant: 'traditional' | 'compact';
16
+ accessor variant: "traditional" | "compact";
17
17
  private accessor isDragging;
18
18
  private accessor selectedFiles;
19
19
  private accessor errorMessage;
@@ -1 +1 @@
1
- import{a,b}from"../../chunks/chunk.6JUW2IZJ.js";import"../../chunks/chunk.IILWGAOM.js";import"../../chunks/chunk.LKMWWUYT.js";import"../../chunks/chunk.X354U5TL.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.252GL6HT.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as FileInputDropzone,b as default};
1
+ import{a,b}from"../../chunks/chunk.PESN3BZK.js";import"../../chunks/chunk.MKQTK2RW.js";import"../../chunks/chunk.NCBKWO6J.js";import"../../chunks/chunk.UVBWHOA2.js";import"../../chunks/chunk.ZETV7TDG.js";import"../../chunks/chunk.L7KUSNV7.js";import"../../chunks/chunk.QABMDRWR.js";import"../../chunks/chunk.N2W26RCT.js";export{a as FileInputDropzone,b as default};
@@ -1,8 +1,8 @@
1
- import FileInputDropzone from './file-input-dropzone.component.js';
1
+ import FileInputDropzone from "./file-input-dropzone.component.js";
2
2
  export default FileInputDropzone;
3
- export type { FileWithPreview } from './file-input-dropzone.component.js';
3
+ export type { FileWithPreview } from "./file-input-dropzone.component.js";
4
4
  declare global {
5
5
  interface HTMLElementTagNameMap {
6
- 'hot-file-input-dropzone': FileInputDropzone;
6
+ "hot-file-input-dropzone": FileInputDropzone;
7
7
  }
8
8
  }