@hotosm/ui 0.3.1-b9 → 0.3.2-b2

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.
@@ -1,4 +1,4 @@
1
- import{a as O,b as g,c as i,d as k,e as C,f as W}from"./chunk.D2BMH7HD.js";import{a as y,b as s,c as D,d as x}from"./chunk.6ZDEZIWM.js";import{a as M}from"./chunk.KO4EOD3I.js";import{a as q,b as z}from"./chunk.HTYJKOJL.js";import{e as r,k as B}from"./chunk.U4P7XQR4.js";import{a as A,d as h,e as p,f as u,g as b}from"./chunk.NI7UJOOZ.js";function rt(t,n){return{top:Math.round(t.getBoundingClientRect().top-n.getBoundingClientRect().top),left:Math.round(t.getBoundingClientRect().left-n.getBoundingClientRect().left)}}var T=new Set;function lt(){let t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}function ct(){let t=Number(getComputedStyle(document.body).paddingRight.replace(/px/,""));return isNaN(t)||!t?0:t}function $(t){if(T.add(t),!document.documentElement.classList.contains("wa-scroll-lock")){let n=lt()+ct(),e=getComputedStyle(document.documentElement).scrollbarGutter;(!e||e==="auto")&&(e="stable"),n<2&&(e=""),document.documentElement.style.setProperty("--wa-scroll-lock-gutter",e),document.documentElement.classList.add("wa-scroll-lock"),document.documentElement.style.setProperty("--wa-scroll-lock-size",`${n}px`)}}function P(t){T.delete(t),T.size===0&&(document.documentElement.classList.remove("wa-scroll-lock"),document.documentElement.style.removeProperty("--wa-scroll-lock-size"))}function I(t,n,e="vertical",o="smooth"){let a=rt(t,n),l=a.top+n.scrollTop,c=a.left+n.scrollLeft,f=n.scrollLeft,E=n.scrollLeft+n.offsetWidth,it=n.scrollTop,st=n.scrollTop+n.offsetHeight;(e==="horizontal"||e==="both")&&(c<f?n.scrollTo({left:c,behavior:o}):c+t.clientWidth>E&&n.scrollTo({left:c-n.offsetWidth+t.clientWidth,behavior:o})),(e==="vertical"||e==="both")&&(l<it?n.scrollTo({top:l,behavior:o}):l+t.clientHeight>st&&n.scrollTo({top:l-n.offsetHeight+t.clientHeight,behavior:o}))}var dt=class extends Event{constructor(t){super("wa-tab-hide",{bubbles:!0,cancelable:!1,composed:!0}),this.detail=t}},ht=class extends Event{constructor(t){super("wa-tab-show",{bubbles:!0,cancelable:!1,composed:!0}),this.detail=t}},pt=`:host {
1
+ import{a as q,b as z}from"./chunk.HTYJKOJL.js";import{a as O,b as g,c as i,d as k,e as C,f as W}from"./chunk.D2BMH7HD.js";import{a as y,b as s,c as D,d as x}from"./chunk.6ZDEZIWM.js";import{a as M}from"./chunk.KO4EOD3I.js";import{e as r,k as B}from"./chunk.U4P7XQR4.js";import{a as A,d as h,e as p,f as u,g as b}from"./chunk.NI7UJOOZ.js";function rt(t,n){return{top:Math.round(t.getBoundingClientRect().top-n.getBoundingClientRect().top),left:Math.round(t.getBoundingClientRect().left-n.getBoundingClientRect().left)}}var T=new Set;function lt(){let t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}function ct(){let t=Number(getComputedStyle(document.body).paddingRight.replace(/px/,""));return isNaN(t)||!t?0:t}function $(t){if(T.add(t),!document.documentElement.classList.contains("wa-scroll-lock")){let n=lt()+ct(),e=getComputedStyle(document.documentElement).scrollbarGutter;(!e||e==="auto")&&(e="stable"),n<2&&(e=""),document.documentElement.style.setProperty("--wa-scroll-lock-gutter",e),document.documentElement.classList.add("wa-scroll-lock"),document.documentElement.style.setProperty("--wa-scroll-lock-size",`${n}px`)}}function P(t){T.delete(t),T.size===0&&(document.documentElement.classList.remove("wa-scroll-lock"),document.documentElement.style.removeProperty("--wa-scroll-lock-size"))}function I(t,n,e="vertical",o="smooth"){let a=rt(t,n),l=a.top+n.scrollTop,c=a.left+n.scrollLeft,f=n.scrollLeft,E=n.scrollLeft+n.offsetWidth,it=n.scrollTop,st=n.scrollTop+n.offsetHeight;(e==="horizontal"||e==="both")&&(c<f?n.scrollTo({left:c,behavior:o}):c+t.clientWidth>E&&n.scrollTo({left:c-n.offsetWidth+t.clientWidth,behavior:o})),(e==="vertical"||e==="both")&&(l<it?n.scrollTo({top:l,behavior:o}):l+t.clientHeight>st&&n.scrollTo({top:l-n.offsetHeight+t.clientHeight,behavior:o}))}var dt=class extends Event{constructor(t){super("wa-tab-hide",{bubbles:!0,cancelable:!1,composed:!0}),this.detail=t}},ht=class extends Event{constructor(t){super("wa-tab-show",{bubbles:!0,cancelable:!1,composed:!0}),this.detail=t}},pt=`:host {
2
2
  --indicator-color: var(--wa-color-brand-fill-loud);
3
3
  --track-color: var(--wa-color-neutral-fill-normal);
4
4
  --track-width: 0.125rem;
@@ -1,4 +1,4 @@
1
- import{a as d}from"./chunk.T4GALJJA.js";import{b as o}from"./chunk.6ZDEZIWM.js";import{a as l}from"./chunk.KO4EOD3I.js";import{e as r,k as c}from"./chunk.U4P7XQR4.js";import{d as s,e as a,f as n,g as i}from"./chunk.NI7UJOOZ.js";l();var u,g,p,b,h,m,v,e=class extends c{constructor(){super(...arguments);this.name="hot-consent";n(this,u,"");n(this,g,!1);n(this,p,!0);n(this,b,"About the information we collect");n(this,h,"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,v,"I Do Not Agree")}get consentId(){return a(this,u)}set consentId(t){i(this,u,t)}get force(){return a(this,g)}set force(t){i(this,g,t)}get isOpen(){return a(this,p)}set isOpen(t){i(this,p,t)}get title(){return a(this,b)}set title(t){i(this,b,t)}get message(){return a(this,h)}set message(t){i(this,h,t)}get agreeLabel(){return a(this,m)}set agreeLabel(t){i(this,m,t)}get notAgreeLabel(){return a(this,v)}set notAgreeLabel(t){i(this,v,t)}render(){return this.isOpen?r`
1
+ import{b as o}from"./chunk.6ZDEZIWM.js";import{a as l}from"./chunk.KO4EOD3I.js";import{a as d}from"./chunk.T4GALJJA.js";import{e as r,k as c}from"./chunk.U4P7XQR4.js";import{d as s,e as a,f as n,g as i}from"./chunk.NI7UJOOZ.js";l();var u,g,p,b,h,m,v,e=class extends c{constructor(){super(...arguments);this.name="hot-consent";n(this,u,"");n(this,g,!1);n(this,p,!0);n(this,b,"About the information we collect");n(this,h,"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,v,"I Do Not Agree")}get consentId(){return a(this,u)}set consentId(t){i(this,u,t)}get force(){return a(this,g)}set force(t){i(this,g,t)}get isOpen(){return a(this,p)}set isOpen(t){i(this,p,t)}get title(){return a(this,b)}set title(t){i(this,b,t)}get message(){return a(this,h)}set message(t){i(this,h,t)}get agreeLabel(){return a(this,m)}set agreeLabel(t){i(this,m,t)}get notAgreeLabel(){return a(this,v)}set notAgreeLabel(t){i(this,v,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">
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk.5F5JALRB.js";var r=e;customElements.define("hot-header",e);export{r as a};
@@ -0,0 +1 @@
1
+ import{b as e}from"./chunk.CS56NBTQ.js";var n=e;customElements.define("hot-consent",e);export{n as a};
@@ -1 +1 @@
1
- import{a,b}from"../../chunks/chunk.MIYFUINI.js";import"../../chunks/chunk.LPSHZWUY.js";import"../../chunks/chunk.T4GALJJA.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as Consent,b as default};
1
+ import{a,b}from"../../chunks/chunk.CS56NBTQ.js";import"../../chunks/chunk.LPSHZWUY.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.T4GALJJA.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as Consent,b as default};
@@ -1 +1 @@
1
- import{a}from"../../chunks/chunk.456NATDG.js";import"../../chunks/chunk.MIYFUINI.js";import"../../chunks/chunk.LPSHZWUY.js";import"../../chunks/chunk.T4GALJJA.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as default};
1
+ import{a}from"../../chunks/chunk.UYOJKKGV.js";import"../../chunks/chunk.CS56NBTQ.js";import"../../chunks/chunk.LPSHZWUY.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.T4GALJJA.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as default};
@@ -1 +1 @@
1
- import{a,b}from"../../chunks/chunk.HCXPZJU6.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.HTYJKOJL.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as Header,b as default};
1
+ import{a,b}from"../../chunks/chunk.5F5JALRB.js";import"../../chunks/chunk.HTYJKOJL.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as Header,b as default};
@@ -1 +1 @@
1
- import{a}from"../../chunks/chunk.CNARC7G7.js";import"../../chunks/chunk.HCXPZJU6.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.HTYJKOJL.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as default};
1
+ import{a}from"../../chunks/chunk.H4QL3V4P.js";import"../../chunks/chunk.5F5JALRB.js";import"../../chunks/chunk.HTYJKOJL.js";import"../../chunks/chunk.D2BMH7HD.js";import"../../chunks/chunk.6ZDEZIWM.js";import"../../chunks/chunk.KO4EOD3I.js";import"../../chunks/chunk.U4P7XQR4.js";import"../../chunks/chunk.NI7UJOOZ.js";export{a as default};
package/dist/hotosm-ui.js CHANGED
@@ -1 +1 @@
1
- import{a as r}from"./chunks/chunk.SZ46YTWY.js";import"./chunks/chunk.7RJ72M75.js";import"./chunks/chunk.UTSKEKTV.js";import{a as t}from"./chunks/chunk.YYEOK7MA.js";import"./chunks/chunk.PDLGEB7T.js";import{a}from"./chunks/chunk.456NATDG.js";import"./chunks/chunk.MIYFUINI.js";import"./chunks/chunk.LPSHZWUY.js";import"./chunks/chunk.T4GALJJA.js";import{a as o}from"./chunks/chunk.CNARC7G7.js";import"./chunks/chunk.HCXPZJU6.js";import"./chunks/chunk.D2BMH7HD.js";import"./chunks/chunk.6ZDEZIWM.js";import"./chunks/chunk.KO4EOD3I.js";import"./chunks/chunk.HTYJKOJL.js";import"./chunks/chunk.U4P7XQR4.js";import"./chunks/chunk.NI7UJOOZ.js";export{a as Consent,o as Header,r as Logo,t as Tracking};
1
+ import{a as r}from"./chunks/chunk.SZ46YTWY.js";import"./chunks/chunk.7RJ72M75.js";import"./chunks/chunk.UTSKEKTV.js";import{a as t}from"./chunks/chunk.YYEOK7MA.js";import"./chunks/chunk.PDLGEB7T.js";import{a as o}from"./chunks/chunk.H4QL3V4P.js";import"./chunks/chunk.5F5JALRB.js";import"./chunks/chunk.HTYJKOJL.js";import{a}from"./chunks/chunk.UYOJKKGV.js";import"./chunks/chunk.CS56NBTQ.js";import"./chunks/chunk.LPSHZWUY.js";import"./chunks/chunk.D2BMH7HD.js";import"./chunks/chunk.6ZDEZIWM.js";import"./chunks/chunk.KO4EOD3I.js";import"./chunks/chunk.T4GALJJA.js";import"./chunks/chunk.U4P7XQR4.js";import"./chunks/chunk.NI7UJOOZ.js";export{a as Consent,o as Header,r as Logo,t as Tracking};
@@ -151,6 +151,76 @@
151
151
  --wa-color-pink: var(--wa-color-pink-50);
152
152
  --wa-color-pink-key: 50;
153
153
 
154
+ /*
155
+ * WebAwesome Theme Override
156
+ * This defines all the semantic color variants used by WebAwesome components
157
+ */
158
+ :where(:root), .wa-theme-default, .wa-light, .wa-dark .wa-invert, .wa-light .wa-theme-default, .wa-dark .wa-theme-default.wa-invert, .wa-dark .wa-theme-default .wa-invert {
159
+ color-scheme: light;
160
+ color: var(--wa-color-text-normal);
161
+ --wa-color-surface-raised: white;
162
+ --wa-color-surface-default: white;
163
+ --wa-color-surface-lowered: var(--wa-color-neutral-95);
164
+ --wa-color-surface-border: var(--wa-color-neutral-90);
165
+ --wa-color-text-normal: var(--wa-color-neutral-10);
166
+ --wa-color-text-quiet: var(--wa-color-neutral-40);
167
+ --wa-color-text-link: var(--wa-color-brand-40);
168
+ --wa-color-overlay-modal:
169
+ color-mix(in oklab, var(--wa-color-neutral-05) 50%, transparent);
170
+ --wa-color-overlay-inline:
171
+ color-mix(in oklab, var(--wa-color-neutral-80) 25%, transparent);
172
+ --wa-color-shadow:
173
+ color-mix(in oklab, var(--wa-color-neutral-05) calc(var(--wa-shadow-blur-scale) * 4% + 8%), transparent);
174
+ --wa-color-focus: var(--wa-color-brand-60);
175
+ --wa-color-mix-hover: black 10%;
176
+ --wa-color-mix-active: black 20%;
177
+ --wa-color-brand-fill-quiet: var(--wa-color-brand-95);
178
+ --wa-color-brand-fill-normal: var(--wa-color-brand-90);
179
+ --wa-color-brand-fill-loud: var(--wa-color-brand-50);
180
+ --wa-color-brand-border-quiet: var(--wa-color-brand-90);
181
+ --wa-color-brand-border-normal: var(--wa-color-brand-80);
182
+ --wa-color-brand-border-loud: var(--wa-color-brand-60);
183
+ --wa-color-brand-on-quiet: var(--wa-color-brand-40);
184
+ --wa-color-brand-on-normal: var(--wa-color-brand-30);
185
+ --wa-color-brand-on-loud: white;
186
+ --wa-color-success-fill-quiet: var(--wa-color-success-95);
187
+ --wa-color-success-fill-normal: var(--wa-color-success-90);
188
+ --wa-color-success-fill-loud: var(--wa-color-success-50);
189
+ --wa-color-success-border-quiet: var(--wa-color-success-90);
190
+ --wa-color-success-border-normal: var(--wa-color-success-80);
191
+ --wa-color-success-border-loud: var(--wa-color-success-60);
192
+ --wa-color-success-on-quiet: var(--wa-color-success-40);
193
+ --wa-color-success-on-normal: var(--wa-color-success-30);
194
+ --wa-color-success-on-loud: white;
195
+ --wa-color-warning-fill-quiet: var(--wa-color-warning-95);
196
+ --wa-color-warning-fill-normal: var(--wa-color-warning-90);
197
+ --wa-color-warning-fill-loud: var(--wa-color-warning-50);
198
+ --wa-color-warning-border-quiet: var(--wa-color-warning-90);
199
+ --wa-color-warning-border-normal: var(--wa-color-warning-80);
200
+ --wa-color-warning-border-loud: var(--wa-color-warning-60);
201
+ --wa-color-warning-on-quiet: var(--wa-color-warning-40);
202
+ --wa-color-warning-on-normal: var(--wa-color-warning-30);
203
+ --wa-color-warning-on-loud: white;
204
+ --wa-color-danger-fill-quiet: var(--wa-color-danger-95);
205
+ --wa-color-danger-fill-normal: var(--wa-color-danger-90);
206
+ --wa-color-danger-fill-loud: var(--wa-color-danger-50);
207
+ --wa-color-danger-border-quiet: var(--wa-color-danger-90);
208
+ --wa-color-danger-border-normal: var(--wa-color-danger-80);
209
+ --wa-color-danger-border-loud: var(--wa-color-danger-60);
210
+ --wa-color-danger-on-quiet: var(--wa-color-danger-40);
211
+ --wa-color-danger-on-normal: var(--wa-color-danger-30);
212
+ --wa-color-danger-on-loud: white;
213
+ --wa-color-neutral-fill-quiet: var(--wa-color-neutral-95);
214
+ --wa-color-neutral-fill-normal: var(--wa-color-neutral-90);
215
+ --wa-color-neutral-fill-loud: var(--wa-color-neutral-20);
216
+ --wa-color-neutral-border-quiet: var(--wa-color-neutral-90);
217
+ --wa-color-neutral-border-normal: var(--wa-color-neutral-80);
218
+ --wa-color-neutral-border-loud: var(--wa-color-neutral-60);
219
+ --wa-color-neutral-on-quiet: var(--wa-color-neutral-40);
220
+ --wa-color-neutral-on-normal: var(--wa-color-neutral-30);
221
+ --wa-color-neutral-on-loud: white;
222
+ }
223
+
154
224
  /*
155
225
  * Typography
156
226
  *
@@ -220,3 +290,228 @@
220
290
  --wa-border-radius-circle: var(--hot-border-radius-circle); /* 50% */
221
291
  }
222
292
  }
293
+
294
+ /*
295
+ * Button Customizations
296
+ * Based on WebAwesome documentation: https://webawesome.com/docs/customizing/
297
+ */
298
+
299
+ /* Custom Properties for Button Components */
300
+ wa-button {
301
+ /* Button sizing */
302
+ --size: var(--wa-space-l); /* 20px - default button height */
303
+ --padding-x: var(--wa-space-m); /* 16px horizontal padding */
304
+ --padding-y: var(--wa-space-s); /* 12px vertical padding */
305
+
306
+ /* Button appearance */
307
+ --border-radius: var(--wa-border-radius-m); /* 4px border radius */
308
+ --border-width: 1px;
309
+ --font-size: var(--wa-font-size-s); /* 14px font size */
310
+ --font-weight: var(--wa-font-weight-action); /* semibold */
311
+
312
+ /* Button states */
313
+ --transition-duration: 150ms;
314
+ --transition-timing: ease-out;
315
+ }
316
+
317
+ /* Button size variants */
318
+ wa-button[size="small"] {
319
+ --size: var(--wa-space-m); /* 16px */
320
+ --padding-x: var(--wa-space-s); /* 12px */
321
+ --padding-y: var(--wa-space-xs); /* 8px */
322
+ --font-size: var(--wa-font-size-xs); /* 12px */
323
+ }
324
+
325
+ wa-button[size="large"] {
326
+ --size: var(--wa-space-xl); /* 28px */
327
+ --padding-x: var(--wa-space-l); /* 20px */
328
+ --padding-y: var(--wa-space-m); /* 16px */
329
+ --font-size: var(--wa-font-size-m); /* 16px */
330
+ }
331
+
332
+ /* CSS Parts for advanced button styling */
333
+ wa-button::part(base) {
334
+ /* Base button styling */
335
+ border-radius: var(--border-radius);
336
+ border-width: var(--border-width);
337
+ font-size: var(--font-size);
338
+ font-weight: var(--font-weight);
339
+ padding: var(--padding-y) var(--padding-x);
340
+ min-height: var(--size);
341
+ transition: all var(--transition-duration) var(--transition-timing);
342
+
343
+ /* HOT-specific styling */
344
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
345
+ }
346
+
347
+ wa-button::part(base):hover {
348
+ /* Hover state */
349
+ transform: translateY(-1px);
350
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
351
+ }
352
+
353
+ wa-button::part(base):active {
354
+ /* Active state */
355
+ transform: translateY(0);
356
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
357
+ }
358
+
359
+ wa-button::part(base):focus-visible {
360
+ /* Focus state */
361
+ outline: 2px solid var(--wa-color-focus);
362
+ outline-offset: 2px;
363
+ }
364
+
365
+ wa-button::part(label) {
366
+ /* Button text styling */
367
+ font-family: var(--wa-font-family-body);
368
+ letter-spacing: 0.025em;
369
+ }
370
+
371
+ /* Button variant-specific styling */
372
+ wa-button[variant="primary"]::part(base) {
373
+ background: linear-gradient(135deg, var(--wa-color-brand-fill-loud), var(--wa-color-brand-fill-normal));
374
+ border-color: var(--wa-color-brand-border-loud);
375
+ color: var(--wa-color-brand-on-loud);
376
+ }
377
+
378
+ wa-button[variant="primary"]::part(base):hover {
379
+ background: linear-gradient(135deg, var(--wa-color-brand-fill-normal), var(--wa-color-brand-fill-quiet));
380
+ border-color: var(--wa-color-brand-border-normal);
381
+ }
382
+
383
+ wa-button[variant="secondary"]::part(base) {
384
+ background: var(--wa-color-neutral-fill-quiet);
385
+ border-color: var(--wa-color-neutral-border-normal);
386
+ color: var(--wa-color-neutral-on-quiet);
387
+ }
388
+
389
+ wa-button[variant="secondary"]::part(base):hover {
390
+ background: var(--wa-color-neutral-fill-normal);
391
+ border-color: var(--wa-color-neutral-border-loud);
392
+ color: var(--wa-color-neutral-on-normal);
393
+ }
394
+
395
+ wa-button[variant="outline"]::part(base) {
396
+ background: transparent;
397
+ border-color: var(--wa-color-brand-border-normal);
398
+ color: var(--wa-color-brand-on-normal);
399
+ }
400
+
401
+ wa-button[variant="outline"]::part(base):hover {
402
+ background: var(--wa-color-brand-fill-quiet);
403
+ border-color: var(--wa-color-brand-border-loud);
404
+ color: var(--wa-color-brand-on-quiet);
405
+ }
406
+
407
+ /* Success, warning, danger variants */
408
+ wa-button[variant="success"]::part(base) {
409
+ background: linear-gradient(135deg, var(--wa-color-success-fill-loud), var(--wa-color-success-fill-normal));
410
+ border-color: var(--wa-color-success-border-loud);
411
+ color: var(--wa-color-success-on-loud);
412
+ }
413
+
414
+ wa-button[variant="warning"]::part(base) {
415
+ background: linear-gradient(135deg, var(--wa-color-warning-fill-loud), var(--wa-color-warning-fill-normal));
416
+ border-color: var(--wa-color-warning-border-loud);
417
+ color: var(--wa-color-warning-on-loud);
418
+ }
419
+
420
+ wa-button[variant="danger"]::part(base) {
421
+ background: linear-gradient(135deg, var(--wa-color-danger-fill-loud), var(--wa-color-danger-fill-normal));
422
+ border-color: var(--wa-color-danger-border-loud);
423
+ color: var(--wa-color-danger-on-loud);
424
+ }
425
+
426
+ /* Custom states using :state() selector */
427
+ wa-button:state(disabled)::part(base) {
428
+ opacity: 0.5;
429
+ cursor: not-allowed;
430
+ transform: none;
431
+ box-shadow: none;
432
+ }
433
+
434
+ wa-button:state(loading)::part(base) {
435
+ cursor: wait;
436
+ }
437
+
438
+ /* Custom button classes for specific use cases */
439
+ wa-button.hot-gradient::part(base) {
440
+ background: linear-gradient(217deg, var(--wa-color-red-50), var(--wa-color-orange-50), var(--wa-color-yellow-50));
441
+ border: solid 1px var(--wa-color-orange-50);
442
+ color: white;
443
+ text-shadow: rgba(0, 0, 0, 0.3) 0 -1px;
444
+ }
445
+
446
+ wa-button.hot-gradient::part(base):hover {
447
+ box-shadow: var(--wa-shadow-m);
448
+ transform: translateY(-3px);
449
+ }
450
+
451
+ wa-button.hot-gradient::part(base):active {
452
+ box-shadow: inset var(--wa-shadow-s);
453
+ transform: translateY(0);
454
+ }
455
+
456
+ /* Icon button styling */
457
+ wa-button[appearance="icon"] {
458
+ --padding-x: var(--wa-space-xs);
459
+ --padding-y: var(--wa-space-xs);
460
+ --size: var(--wa-space-xl);
461
+ }
462
+
463
+ wa-button[appearance="icon"]::part(base) {
464
+ border-radius: var(--wa-border-radius-circle);
465
+ padding: var(--padding-y);
466
+ min-width: var(--size);
467
+ min-height: var(--size);
468
+ display: flex;
469
+ align-items: center;
470
+ justify-content: center;
471
+ }
472
+
473
+ /* Native button element support */
474
+ button {
475
+ /* Apply same custom properties to native buttons */
476
+ --size: var(--wa-space-l);
477
+ --padding-x: var(--wa-space-m);
478
+ --padding-y: var(--wa-space-s);
479
+ --border-radius: var(--wa-border-radius-m);
480
+ --border-width: 1px;
481
+ --font-size: var(--wa-font-size-s);
482
+ --font-weight: var(--wa-font-weight-action);
483
+ --transition-duration: 150ms;
484
+ --transition-timing: ease-out;
485
+
486
+ border-radius: var(--border-radius);
487
+ border-width: var(--border-width);
488
+ font-size: var(--font-size);
489
+ font-weight: var(--font-weight);
490
+ padding: var(--padding-y) var(--padding-x);
491
+ min-height: var(--size);
492
+ transition: all var(--transition-duration) var(--transition-timing);
493
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
494
+ cursor: pointer;
495
+ }
496
+
497
+ button:hover {
498
+ transform: translateY(-1px);
499
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
500
+ }
501
+
502
+ button:active {
503
+ transform: translateY(0);
504
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
505
+ }
506
+
507
+ button:focus-visible {
508
+ outline: 2px solid var(--wa-color-focus);
509
+ outline-offset: 2px;
510
+ }
511
+
512
+ button:disabled {
513
+ opacity: 0.5;
514
+ cursor: not-allowed;
515
+ transform: none;
516
+ box-shadow: none;
517
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hotosm/ui",
3
- "version": "0.3.1-b9",
3
+ "version": "0.3.2-b2",
4
4
  "description": "Shared UI components with HOT theming.",
5
5
  "homepage": "https://github.com/hotosm/ui#readme",
6
6
  "author": {
@@ -1 +0,0 @@
1
- import{b as e}from"./chunk.MIYFUINI.js";var n=e;customElements.define("hot-consent",e);export{n as a};
@@ -1 +0,0 @@
1
- import{b as e}from"./chunk.HCXPZJU6.js";var r=e;customElements.define("hot-header",e);export{r as a};