@warp-ds/elements 2.10.0-next.20 → 2.10.0-next.21

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 (52) hide show
  1. package/dist/custom-elements.json +38 -0
  2. package/dist/docs/slider/api.md +16 -0
  3. package/dist/docs/slider/slider.md +16 -0
  4. package/dist/index.d.ts +8 -0
  5. package/dist/packages/checkbox-group/checkbox-group.js +6 -6
  6. package/dist/packages/checkbox-group/checkbox-group.js.map +2 -2
  7. package/dist/packages/checkbox-group/checkbox-group.test.js +93 -6
  8. package/dist/packages/combobox/combobox.test.js +101 -0
  9. package/dist/packages/radio-group/radio-group.js +1 -1
  10. package/dist/packages/radio-group/radio-group.js.map +2 -2
  11. package/dist/packages/radio-group/radio-group.test.js +78 -9
  12. package/dist/packages/select/locales/da/messages.mjs +1 -1
  13. package/dist/packages/select/locales/en/messages.mjs +1 -1
  14. package/dist/packages/select/locales/fi/messages.mjs +1 -1
  15. package/dist/packages/select/locales/nb/messages.mjs +1 -1
  16. package/dist/packages/select/locales/sv/messages.mjs +1 -1
  17. package/dist/packages/select/select.js +5 -5
  18. package/dist/packages/select/select.js.map +2 -2
  19. package/dist/packages/select/select.test.js +52 -0
  20. package/dist/packages/slider/locales/da/messages.mjs +1 -1
  21. package/dist/packages/slider/locales/en/messages.mjs +1 -1
  22. package/dist/packages/slider/locales/fi/messages.mjs +1 -1
  23. package/dist/packages/slider/locales/nb/messages.mjs +1 -1
  24. package/dist/packages/slider/locales/sv/messages.mjs +1 -1
  25. package/dist/packages/slider/react.d.ts +1 -1
  26. package/dist/packages/slider/slider.d.ts +8 -0
  27. package/dist/packages/slider/slider.js +52 -13
  28. package/dist/packages/slider/slider.js.map +3 -3
  29. package/dist/packages/slider/slider.react.stories.d.ts +1 -1
  30. package/dist/packages/slider/slider.stories.d.ts +2 -0
  31. package/dist/packages/slider/slider.stories.js +36 -0
  32. package/dist/packages/slider/slider.test.js +107 -0
  33. package/dist/packages/textarea/locales/da/messages.mjs +1 -1
  34. package/dist/packages/textarea/locales/en/messages.mjs +1 -1
  35. package/dist/packages/textarea/locales/fi/messages.mjs +1 -1
  36. package/dist/packages/textarea/locales/nb/messages.mjs +1 -1
  37. package/dist/packages/textarea/locales/sv/messages.mjs +1 -1
  38. package/dist/packages/textarea/textarea.d.ts +1 -0
  39. package/dist/packages/textarea/textarea.js +20 -20
  40. package/dist/packages/textarea/textarea.js.map +4 -4
  41. package/dist/packages/textarea/textarea.test.js +73 -0
  42. package/dist/packages/textfield/locales/da/messages.mjs +1 -1
  43. package/dist/packages/textfield/locales/en/messages.mjs +1 -1
  44. package/dist/packages/textfield/locales/fi/messages.mjs +1 -1
  45. package/dist/packages/textfield/locales/nb/messages.mjs +1 -1
  46. package/dist/packages/textfield/locales/sv/messages.mjs +1 -1
  47. package/dist/packages/textfield/textfield.js +11 -11
  48. package/dist/packages/textfield/textfield.js.map +2 -2
  49. package/dist/packages/textfield/textfield.test.js +71 -0
  50. package/dist/web-types.json +13 -2
  51. package/eik/index.js +11 -11
  52. package/package.json +1 -1
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import { Slider } from "./react";
4
4
  declare const _default: {
5
5
  title: string;
6
- component: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<import("./slider").WarpSlider>, "fieldset" | "label" | "disabled" | "invalid" | "helpText" | "max" | "min" | "required" | "step" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "updated" | "render" | "renderOptions" | "error" | "openEnded" | "markers" | "suffix" | "valueFormatter" | "tooltipFormatter" | "labelFormatter" | "hiddenTextfield" | "_invalidMessage" | "_hasInternalError" | "_showError" | "_tabbableElements" | "edgeMin" | "edgeMax" | "componentHasError" | "errorText"> & {} & Partial<Omit<import("./slider").WarpSlider, keyof HTMLElement>> & React.RefAttributes<import("./slider").WarpSlider>, "ref">, "help-text" | "open-ended" | "hidden-textfield"> & {
6
+ component: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<import("./slider").WarpSlider>, "fieldset" | "label" | "disabled" | "invalid" | "helpText" | "optional" | "max" | "min" | "required" | "step" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "updated" | "_label" | "render" | "renderOptions" | "error" | "openEnded" | "markers" | "suffix" | "valueFormatter" | "tooltipFormatter" | "labelFormatter" | "hiddenTextfield" | "_invalidMessage" | "_hasInternalError" | "_showError" | "_tabbableElements" | "_hasLabel" | "edgeMin" | "edgeMax" | "componentHasError" | "errorText"> & {} & Partial<Omit<import("./slider").WarpSlider, keyof HTMLElement>> & React.RefAttributes<import("./slider").WarpSlider>, "ref">, "help-text" | "open-ended" | "hidden-textfield"> & {
7
7
  openEnded?: boolean;
8
8
  helpText?: string;
9
9
  hiddenTextfield?: boolean;
@@ -10,7 +10,9 @@ export default meta;
10
10
  type Story = StoryObj;
11
11
  export declare const Single: Story;
12
12
  export declare const SingleDisabled: Story;
13
+ export declare const SingleOptional: Story;
13
14
  export declare const Range: Story;
15
+ export declare const RangeOptional: Story;
14
16
  export declare const SuffixSquareMeters: Story;
15
17
  export declare const SuffixCurrency: Story;
16
18
  export declare const SuffixKilometers: Story;
@@ -40,6 +40,18 @@ export const SingleDisabled = {
40
40
  `;
41
41
  },
42
42
  };
43
+ export const SingleOptional = {
44
+ render() {
45
+ return html `
46
+ <form>
47
+ <w-slider label="Single" min="0" max="100" optional>
48
+ <w-slider-thumb name="value"></w-slider-thumb>
49
+ </w-slider>
50
+ <input type="submit" hidden />
51
+ </form>
52
+ `;
53
+ },
54
+ };
43
55
  export const Range = {
44
56
  render() {
45
57
  return html `
@@ -64,6 +76,30 @@ export const Range = {
64
76
  `;
65
77
  },
66
78
  };
79
+ export const RangeOptional = {
80
+ render() {
81
+ return html `
82
+ <form>
83
+ <w-slider label="Range" min="0" max="100" optional>
84
+ <w-slider-thumb
85
+ slot="from"
86
+ aria-label="From value"
87
+ name="from"
88
+ ></w-slider-thumb>
89
+ <w-slider-thumb
90
+ slot="to"
91
+ aria-label="To value"
92
+ name="to"
93
+ ></w-slider-thumb>
94
+ </w-slider>
95
+ <div class="py-8">
96
+ <w-button type="reset">Reset</w-button>
97
+ <w-button type="submit">Submit</w-button>
98
+ </div>
99
+ </form>
100
+ `;
101
+ },
102
+ };
67
103
  // Take a suffix attribute on `<w-slider>` I think, have `<w-slider-thumb>` get from that.
68
104
  export const SuffixSquareMeters = {
69
105
  args: {
@@ -1,3 +1,4 @@
1
+ import { i18n } from "@lingui/core";
1
2
  import { userEvent } from "vitest/browser";
2
3
  import { html } from "lit";
3
4
  import { expect, test } from "vitest";
@@ -7,6 +8,12 @@ import "../affix/affix.js";
7
8
  import "../textfield/textfield.js";
8
9
  import "./slider.js";
9
10
  import "../slider-thumb/slider-thumb.js";
11
+ import { messages } from "./locales/en/messages.mjs";
12
+ import { messages as nbMessages } from "./locales/nb/messages.mjs";
13
+ // Initialize i18n with English locale for tests
14
+ i18n.load("en", messages);
15
+ i18n.load("nb", nbMessages);
16
+ i18n.activate("en");
10
17
  test("single slider starts with a default value equal to max", async () => {
11
18
  const component = html `
12
19
  <form data-testid="form">
@@ -566,3 +573,103 @@ test("aria-description is not set as host attribute (to avoid hydration mismatch
566
573
  expect(fromThumb.ariaDescription).toBeTruthy();
567
574
  expect(toThumb.ariaDescription).toBeTruthy();
568
575
  });
576
+ test("renders optional indicator as 'Optional' without parentheses", async () => {
577
+ const page = render(html `
578
+ <w-slider label="Price" min="0" max="100" optional>
579
+ <w-slider-thumb name="price"></w-slider-thumb>
580
+ </w-slider>
581
+ `);
582
+ await expect.element(page.getByText("Optional")).toBeVisible();
583
+ expect(page.getByText("(optional)").query()).toBeNull();
584
+ });
585
+ test("does not render optional indicator when both required and optional are set", async () => {
586
+ const page = render(html `
587
+ <w-slider label="Price" min="0" max="100" required optional>
588
+ <w-slider-thumb name="price"></w-slider-thumb>
589
+ </w-slider>
590
+ `);
591
+ await expect.element(page.getByText("Price")).toBeVisible();
592
+ expect(page.getByText("Optional").query()).toBeNull();
593
+ });
594
+ test("includes optional indicator in the slider legend", async () => {
595
+ render(html `
596
+ <w-slider label="Price" min="0" max="100" optional>
597
+ <w-slider-thumb name="price"></w-slider-thumb>
598
+ </w-slider>
599
+ `);
600
+ const slider = document.querySelector("w-slider");
601
+ await slider.updateComplete;
602
+ await new Promise((resolve) => setTimeout(resolve, 0)); // Wait for the next microtask to ensure the legend is rendered
603
+ const legend = slider.shadowRoot.querySelector("legend");
604
+ expect(legend).not.toBeNull();
605
+ console.log("Legend text content:", legend.textContent);
606
+ expect(legend.textContent).toContain("Price");
607
+ expect(legend.textContent).toContain("Optional");
608
+ });
609
+ test("removes optional indicator when required is added dynamically", async () => {
610
+ const page = render(html `
611
+ <w-slider label="Price" min="0" max="100" optional data-testid="slider">
612
+ <w-slider-thumb name="price"></w-slider-thumb>
613
+ </w-slider>
614
+ `);
615
+ await expect.element(page.getByText("Optional")).toBeVisible();
616
+ const slider = document.querySelector("w-slider");
617
+ slider.required = true;
618
+ await slider.updateComplete;
619
+ expect(page.getByText("Optional").query()).toBeNull();
620
+ });
621
+ test("shows optional indicator when required is removed dynamically", async () => {
622
+ const page = render(html `
623
+ <w-slider
624
+ label="Price"
625
+ min="0"
626
+ max="100"
627
+ required
628
+ optional
629
+ data-testid="slider"
630
+ >
631
+ <w-slider-thumb name="price"></w-slider-thumb>
632
+ </w-slider>
633
+ `);
634
+ expect(page.getByText("Optional").query()).toBeNull();
635
+ const slider = document.querySelector("w-slider");
636
+ slider.required = false;
637
+ await slider.updateComplete;
638
+ await expect.element(page.getByText("Optional")).toBeVisible();
639
+ });
640
+ test("does not render optional indicator when there is no label", async () => {
641
+ const page = render(html `
642
+ <w-slider aria-label="Price" min="0" max="100" optional>
643
+ <w-slider-thumb name="price"></w-slider-thumb>
644
+ </w-slider>
645
+ `);
646
+ const slider = document.querySelector("w-slider");
647
+ await slider.updateComplete;
648
+ expect(page.getByText("Optional").query()).toBeNull();
649
+ });
650
+ test("excludes optional indicator from legend when required suppresses it", async () => {
651
+ render(html `
652
+ <w-slider label="Price" min="0" max="100" required optional>
653
+ <w-slider-thumb name="price"></w-slider-thumb>
654
+ </w-slider>
655
+ `);
656
+ const slider = document.querySelector("w-slider");
657
+ await slider.updateComplete;
658
+ const legend = slider.shadowRoot.querySelector("legend");
659
+ expect(legend).not.toBeNull();
660
+ expect(legend.textContent).toContain("Price");
661
+ expect(legend.textContent).not.toContain("Optional");
662
+ });
663
+ test("renders localized optional text based on active locale", async () => {
664
+ const originalLang = document.documentElement.lang;
665
+ document.documentElement.lang = "nb";
666
+ const page = render(html `
667
+ <w-slider label="Price" min="0" max="100" optional>
668
+ <w-slider-thumb name="price"></w-slider-thumb>
669
+ </w-slider>
670
+ `);
671
+ const slider = document.querySelector("w-slider");
672
+ await slider.updateComplete;
673
+ await expect.element(page.getByText("Valgfri")).toBeVisible();
674
+ document.documentElement.lang = originalLang;
675
+ });
@@ -1 +1 @@
1
- /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"(valgfrit)\"]}");
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"Valgfri\"]}");
@@ -1 +1 @@
1
- /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"(optional)\"]}");
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"Optional\"]}");
@@ -1 +1 @@
1
- /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"(vapaaehtoinen)\"]}");
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"Valinnainen\"]}");
@@ -1 +1 @@
1
- /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"(valgfritt)\"]}");
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"Valgfri\"]}");
@@ -1 +1 @@
1
- /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"(valfritt)\"]}");
1
+ /*eslint-disable*/ export const messages = JSON.parse("{\"textarea.label.optional\":[\"Valfritt\"]}");
@@ -92,6 +92,7 @@ declare class WarpTextarea extends WarpTextarea_base {
92
92
  /** @internal */
93
93
  maxHeight: number;
94
94
  private _textarea;
95
+ constructor();
95
96
  updated(changedProperties: PropertyValues<this>): void;
96
97
  resetFormControl(): void;
97
98
  /** Returns the validation message if the textarea is invalid, otherwise an empty string */
@@ -1,4 +1,4 @@
1
- var je=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var ge=o=>{throw TypeError(o)};var f=(o,e,r,t)=>{for(var i=t>1?void 0:t?Ne(e,r):e,c=o.length-1,s;c>=0;c--)(s=o[c])&&(i=(t?s(e,r,i):s(i))||i);return t&&i&&je(e,r,i),i};var ae=(o,e,r)=>e.has(o)||ge("Cannot "+r);var M=(o,e,r)=>(ae(o,e,"read from private field"),r?r.call(o):e.get(o)),P=(o,e,r)=>e.has(o)?ge("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,r),F=(o,e,r,t)=>(ae(o,e,"write to private field"),t?t.call(o,r):e.set(o,r),r),v=(o,e,r)=>(ae(o,e,"access private method"),r);var ne=function(){for(var o=[],e=arguments.length;e--;)o[e]=arguments[e];return o.reduce(function(r,t){return r.concat(typeof t=="string"?t:Array.isArray(t)?ne.apply(void 0,t):typeof t=="object"&&t?Object.keys(t).map(function(i){return t[i]?i:""}):"")},[]).join(" ")};var I=o=>typeof o=="string",Ye=o=>typeof o=="function",ve=new Map,fe="en";function ce(o){return[...Array.isArray(o)?o:[o],fe]}function he(o,e,r){let t=ce(o);r||(r="default");let i;if(typeof r=="string")switch(i={day:"numeric",month:"short",year:"numeric"},r){case"full":i.weekday="long";case"long":i.month="long";break;case"short":i.month="numeric";break}else i=r;return K(()=>J("date",t,r),()=>new Intl.DateTimeFormat(t,i)).format(I(e)?new Date(e):e)}function Oe(o,e,r){let t;if(r||(r="default"),typeof r=="string")switch(t={second:"numeric",minute:"numeric",hour:"numeric"},r){case"full":case"long":t.timeZoneName="short";break;case"short":delete t.second}else t=r;return he(o,e,t)}function se(o,e,r){let t=ce(o);return K(()=>J("number",t,r),()=>new Intl.NumberFormat(t,r)).format(e)}function me(o,e,r,{offset:t=0,...i}){let c=ce(o),s=e?K(()=>J("plural-ordinal",c),()=>new Intl.PluralRules(c,{type:"ordinal"})):K(()=>J("plural-cardinal",c),()=>new Intl.PluralRules(c,{type:"cardinal"}));return i[r]??i[s.select(r-t)]??i.other}function K(o,e){let r=o(),t=ve.get(r);return t||(t=e(),ve.set(r,t)),t}function J(o,e,r){let t=e.join("-");return`${o}-${t}-${JSON.stringify(r)}`}var we=/\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/,xe=o=>o.replace(/\\u([a-fA-F0-9]{4})|\\x([a-fA-F0-9]{2})/g,(e,r,t)=>{if(r){let i=parseInt(r,16);return String.fromCharCode(i)}else{let i=parseInt(t,16);return String.fromCharCode(i)}}),ye="%__lingui_octothorpe__%",Re=(o,e,r={})=>{let t=e||o,i=s=>typeof s=="object"?s:r[s],c=(s,a)=>{let h=Object.keys(r).length?i("number"):void 0,w=se(t,s,h);return a.replace(new RegExp(ye,"g"),w)};return{plural:(s,a)=>{let{offset:h=0}=a,w=me(t,!1,s,a);return c(s-h,w)},selectordinal:(s,a)=>{let{offset:h=0}=a,w=me(t,!0,s,a);return c(s-h,w)},select:Te,number:(s,a)=>se(t,s,i(a)||{style:a}),date:(s,a)=>he(t,s,i(a)||a),time:(s,a)=>Oe(t,s,i(a)||a)}},Te=(o,e)=>e[o]??e.other;function He(o,e,r){return(t={},i)=>{let c=Re(e,r,i),s=(h,w=!1)=>Array.isArray(h)?h.reduce((z,C)=>{if(C==="#"&&w)return z+ye;if(I(C))return z+C;let[O,k,A]=C,S={};k==="plural"||k==="selectordinal"||k==="select"?Object.entries(A).forEach(([j,H])=>{S[j]=s(H,k==="plural"||k==="selectordinal")}):S=A;let x;if(k){let j=c[k];x=j(t[O],S)}else x=t[O];return x==null?z:z+x},""):h,a=s(o);return I(a)&&we.test(a)?xe(a):I(a)?a:a?String(a):""}}var De=Object.defineProperty,Xe=(o,e,r)=>e in o?De(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,qe=(o,e,r)=>(Xe(o,typeof e!="symbol"?e+"":e,r),r),le=class{constructor(){qe(this,"_events",{})}on(e,r){var t;return(t=this._events)[e]??(t[e]=[]),this._events[e].push(r),()=>this.removeListener(e,r)}removeListener(e,r){let t=this._getListeners(e);if(!t)return;let i=t.indexOf(r);~i&&t.splice(i,1)}emit(e,...r){let t=this._getListeners(e);t&&t.map(i=>i.apply(this,r))}_getListeners(e){let r=this._events[e];return Array.isArray(r)?r:!1}},Ue=Object.defineProperty,Ze=(o,e,r)=>e in o?Ue(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,N=(o,e,r)=>(Ze(o,typeof e!="symbol"?e+"":e,r),r),de=class extends le{constructor(e){super(),N(this,"_locale",""),N(this,"_locales"),N(this,"_localeData",{}),N(this,"_messages",{}),N(this,"_missing"),N(this,"_messageCompiler"),N(this,"t",this._.bind(this)),e.missing!=null&&(this._missing=e.missing),e.messages!=null&&this.load(e.messages),e.localeData!=null&&this.loadLocaleData(e.localeData),(typeof e.locale=="string"||e.locales)&&this.activate(e.locale??fe,e.locales)}get locale(){return this._locale}get locales(){return this._locales}get messages(){return this._messages[this._locale]??{}}get localeData(){return this._localeData[this._locale]??{}}_loadLocaleData(e,r){let t=this._localeData[e];t?Object.assign(t,r):this._localeData[e]=r}setMessagesCompiler(e){return this._messageCompiler=e,this}loadLocaleData(e,r){typeof e=="string"?this._loadLocaleData(e,r):Object.keys(e).forEach(t=>this._loadLocaleData(t,e[t])),this.emit("change")}_load(e,r){let t=this._messages[e];t?Object.assign(t,r):this._messages[e]=r}load(e,r){typeof e=="string"&&typeof r=="object"?this._load(e,r):Object.entries(e).forEach(([t,i])=>this._load(t,i)),this.emit("change")}loadAndActivate({locale:e,locales:r,messages:t}){this._locale=e,this._locales=r||void 0,this._messages[this._locale]=t,this.emit("change")}activate(e,r){this._locale=e,this._locales=r,this.emit("change")}_(e,r,t){if(!this.locale)throw new Error("Lingui: Attempted to call a translation function without setting a locale.\nMake sure to call `i18n.activate(locale)` before using Lingui functions.\nThis issue may also occur due to a race condition in your initialization logic.");let i=t?.message;e||(e=""),I(e)||(r=e.values||r,i=e.message,e=e.id);let c=this.messages[e],s=c===void 0,a=this._missing;if(a&&s)return Ye(a)?a(this._locale,e):a;s&&this.emit("missing",{id:e,locale:this._locale});let h=c||i||e;return I(h)&&(this._messageCompiler?h=this._messageCompiler(h):console.warn(`Uncompiled message detected! Message:
1
+ var Ge=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var fe=o=>{throw TypeError(o)};var f=(o,e,r,t)=>{for(var a=t>1?void 0:t?Je(e,r):e,l=o.length-1,s;l>=0;l--)(s=o[l])&&(a=(t?s(e,r,a):s(a))||a);return t&&a&&Ge(e,r,a),a};var se=(o,e,r)=>e.has(o)||fe("Cannot "+r);var V=(o,e,r)=>(se(o,e,"read from private field"),r?r.call(o):e.get(o)),N=(o,e,r)=>e.has(o)?fe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,r),F=(o,e,r,t)=>(se(o,e,"write to private field"),t?t.call(o,r):e.set(o,r),r),v=(o,e,r)=>(se(o,e,"access private method"),r);var le=function(){for(var o=[],e=arguments.length;e--;)o[e]=arguments[e];return o.reduce(function(r,t){return r.concat(typeof t=="string"?t:Array.isArray(t)?le.apply(void 0,t):typeof t=="object"&&t?Object.keys(t).map(function(a){return t[a]?a:""}):"")},[]).join(" ")};var I=o=>typeof o=="string",Ke=o=>typeof o=="function",we=new Map,ye="en";function be(o){return[...Array.isArray(o)?o:[o],ye]}function pe(o,e,r){let t=be(o);r||(r="default");let a;if(typeof r=="string")switch(a={day:"numeric",month:"short",year:"numeric"},r){case"full":a.weekday="long";case"long":a.month="long";break;case"short":a.month="numeric";break}else a=r;return K(()=>Q("date",t,r),()=>new Intl.DateTimeFormat(t,a)).format(I(e)?new Date(e):e)}function Qe(o,e,r){let t;if(r||(r="default"),typeof r=="string")switch(t={second:"numeric",minute:"numeric",hour:"numeric"},r){case"full":case"long":t.timeZoneName="short";break;case"short":delete t.second}else t=r;return pe(o,e,t)}function de(o,e,r){let t=be(o);return K(()=>Q("number",t,r),()=>new Intl.NumberFormat(t,r)).format(e)}function xe(o,e,r,{offset:t=0,...a}){let l=be(o),s=e?K(()=>Q("plural-ordinal",l),()=>new Intl.PluralRules(l,{type:"ordinal"})):K(()=>Q("plural-cardinal",l),()=>new Intl.PluralRules(l,{type:"cardinal"}));return a[r]??a[s.select(r-t)]??a.other}function K(o,e){let r=o(),t=we.get(r);return t||(t=e(),we.set(r,t)),t}function Q(o,e,r){let t=e.join("-");return`${o}-${t}-${JSON.stringify(r)}`}var ke=/\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/,_e=o=>o.replace(/\\u([a-fA-F0-9]{4})|\\x([a-fA-F0-9]{2})/g,(e,r,t)=>{if(r){let a=parseInt(r,16);return String.fromCharCode(a)}else{let a=parseInt(t,16);return String.fromCharCode(a)}}),ze="%__lingui_octothorpe__%",We=(o,e,r={})=>{let t=e||o,a=s=>typeof s=="object"?s:r[s],l=(s,i)=>{let h=Object.keys(r).length?a("number"):void 0,w=de(t,s,h);return i.replace(new RegExp(ze,"g"),w)};return{plural:(s,i)=>{let{offset:h=0}=i,w=xe(t,!1,s,i);return l(s-h,w)},selectordinal:(s,i)=>{let{offset:h=0}=i,w=xe(t,!0,s,i);return l(s-h,w)},select:er,number:(s,i)=>de(t,s,a(i)||{style:i}),date:(s,i)=>pe(t,s,a(i)||i),time:(s,i)=>Qe(t,s,a(i)||i)}},er=(o,e)=>e[o]??e.other;function rr(o,e,r){return(t={},a)=>{let l=We(e,r,a),s=(h,w=!1)=>Array.isArray(h)?h.reduce((C,M)=>{if(M==="#"&&w)return C+ze;if(I(M))return C+M;let[T,k,S]=M,A={};k==="plural"||k==="selectordinal"||k==="select"?Object.entries(S).forEach(([$,H])=>{A[$]=s(H,k==="plural"||k==="selectordinal")}):A=S;let x;if(k){let $=l[k];x=$(t[T],A)}else x=t[T];return x==null?C:C+x},""):h,i=s(o);return I(i)&&ke.test(i)?_e(i):I(i)?i:i?String(i):""}}var tr=Object.defineProperty,or=(o,e,r)=>e in o?tr(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,ar=(o,e,r)=>(or(o,typeof e!="symbol"?e+"":e,r),r),ce=class{constructor(){ar(this,"_events",{})}on(e,r){var t;return(t=this._events)[e]??(t[e]=[]),this._events[e].push(r),()=>this.removeListener(e,r)}removeListener(e,r){let t=this._getListeners(e);if(!t)return;let a=t.indexOf(r);~a&&t.splice(a,1)}emit(e,...r){let t=this._getListeners(e);t&&t.map(a=>a.apply(this,r))}_getListeners(e){let r=this._events[e];return Array.isArray(r)?r:!1}},ir=Object.defineProperty,nr=(o,e,r)=>e in o?ir(o,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):o[e]=r,j=(o,e,r)=>(nr(o,typeof e!="symbol"?e+"":e,r),r),he=class extends ce{constructor(e){super(),j(this,"_locale",""),j(this,"_locales"),j(this,"_localeData",{}),j(this,"_messages",{}),j(this,"_missing"),j(this,"_messageCompiler"),j(this,"t",this._.bind(this)),e.missing!=null&&(this._missing=e.missing),e.messages!=null&&this.load(e.messages),e.localeData!=null&&this.loadLocaleData(e.localeData),(typeof e.locale=="string"||e.locales)&&this.activate(e.locale??ye,e.locales)}get locale(){return this._locale}get locales(){return this._locales}get messages(){return this._messages[this._locale]??{}}get localeData(){return this._localeData[this._locale]??{}}_loadLocaleData(e,r){let t=this._localeData[e];t?Object.assign(t,r):this._localeData[e]=r}setMessagesCompiler(e){return this._messageCompiler=e,this}loadLocaleData(e,r){typeof e=="string"?this._loadLocaleData(e,r):Object.keys(e).forEach(t=>this._loadLocaleData(t,e[t])),this.emit("change")}_load(e,r){let t=this._messages[e];t?Object.assign(t,r):this._messages[e]=r}load(e,r){typeof e=="string"&&typeof r=="object"?this._load(e,r):Object.entries(e).forEach(([t,a])=>this._load(t,a)),this.emit("change")}loadAndActivate({locale:e,locales:r,messages:t}){this._locale=e,this._locales=r||void 0,this._messages[this._locale]=t,this.emit("change")}activate(e,r){this._locale=e,this._locales=r,this.emit("change")}_(e,r,t){if(!this.locale)throw new Error("Lingui: Attempted to call a translation function without setting a locale.\nMake sure to call `i18n.activate(locale)` before using Lingui functions.\nThis issue may also occur due to a race condition in your initialization logic.");let a=t?.message;e||(e=""),I(e)||(r=e.values||r,a=e.message,e=e.id);let l=this.messages[e],s=l===void 0,i=this._missing;if(i&&s)return Ke(i)?i(this._locale,e):i;s&&this.emit("missing",{id:e,locale:this._locale});let h=l||a||e;return I(h)&&(this._messageCompiler?h=this._messageCompiler(h):console.warn(`Uncompiled message detected! Message:
2
2
 
3
3
  > ${h}
4
4
 
@@ -6,7 +6,7 @@ That means you use raw catalog or your catalog doesn't have a translation for th
6
6
  ICU features such as interpolation and plurals will not work properly for that message.
7
7
 
8
8
  Please compile your catalog first.
9
- `)),I(h)&&we.test(h)?xe(h):I(h)?h:He(h,this._locale,this._locales)(r,t?.formats)}date(e,r){return he(this._locales||this._locale,e,r)}number(e,r){return se(this._locales||this._locale,e,r)}};function Be(o={}){return new de(o)}var ke=Be();var d=function(o,e,r,t){if(r==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?o!==e||!t:!e.has(o))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?t:r==="a"?t.call(o):t?t.value:e.get(o)},g=function(o,e,r,t,i){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?o!==e||!i:!e.has(o))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?i.call(o,r):i?i.value=r:e.set(o,r),r};function _e(o){var e,r,t,i,c,s,a,h,w,z,C,O,k,A,S,x,j,H,te;class Le extends o{constructor(...n){var l,u,m;super(...n),e.add(this),this.internals=this.attachInternals(),r.set(this,!1),t.set(this,!1),i.set(this,!1),c.set(this,void 0),s.set(this,void 0),a.set(this,!0),w.set(this,""),z.set(this,()=>{g(this,i,!0,"f"),g(this,r,!0,"f"),d(this,e,"m",x).call(this)}),C.set(this,()=>{g(this,r,!1,"f"),d(this,e,"m",j).call(this,this.shouldFormValueUpdate()?d(this,w,"f"):""),!this.validity.valid&&d(this,i,"f")&&g(this,t,!0,"f");let V=d(this,e,"m",x).call(this);this.validationMessageCallback&&this.validationMessageCallback(V?this.internals.validationMessage:"")}),O.set(this,()=>{var V;d(this,a,"f")&&this.validationTarget&&(this.internals.setValidity(this.validity,this.validationMessage,this.validationTarget),g(this,a,!1,"f")),g(this,i,!0,"f"),g(this,t,!0,"f"),d(this,e,"m",x).call(this),(V=this===null||this===void 0?void 0:this.validationMessageCallback)===null||V===void 0||V.call(this,this.showError?this.internals.validationMessage:"")}),k.set(this,void 0),A.set(this,!1),S.set(this,Promise.resolve()),(l=this.addEventListener)===null||l===void 0||l.call(this,"focus",d(this,z,"f")),(u=this.addEventListener)===null||u===void 0||u.call(this,"blur",d(this,C,"f")),(m=this.addEventListener)===null||m===void 0||m.call(this,"invalid",d(this,O,"f")),this.setValue(null)}static get formAssociated(){return!0}static get validators(){return this.formControlValidators||[]}static get observedAttributes(){let n=this.validators.map(m=>m.attribute).flat(),l=super.observedAttributes||[];return[...new Set([...l,...n])]}static getValidator(n){return this.validators.find(l=>l.attribute===n)||null}static getValidators(n){return this.validators.filter(l=>{var u;if(l.attribute===n||!((u=l.attribute)===null||u===void 0)&&u.includes(n))return!0})}get form(){return this.internals.form}get showError(){return d(this,e,"m",x).call(this)}checkValidity(){return this.internals.checkValidity()}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}attributeChangedCallback(n,l,u){var m;(m=super.attributeChangedCallback)===null||m===void 0||m.call(this,n,l,u);let X=this.constructor.getValidators(n);X?.length&&this.validationTarget&&this.setValue(d(this,w,"f"))}setValue(n){var l;g(this,t,!1,"f"),(l=this.validationMessageCallback)===null||l===void 0||l.call(this,""),g(this,w,n,"f");let m=this.shouldFormValueUpdate()?n:null;this.internals.setFormValue(m),d(this,e,"m",j).call(this,m),this.valueChangedCallback&&this.valueChangedCallback(m),d(this,e,"m",x).call(this)}shouldFormValueUpdate(){return!0}get validationComplete(){return new Promise(n=>n(d(this,S,"f")))}formResetCallback(){var n,l;g(this,i,!1,"f"),g(this,t,!1,"f"),d(this,e,"m",x).call(this),(n=this.resetFormControl)===null||n===void 0||n.call(this),(l=this.validationMessageCallback)===null||l===void 0||l.call(this,d(this,e,"m",x).call(this)?this.validationMessage:"")}}return r=new WeakMap,t=new WeakMap,i=new WeakMap,c=new WeakMap,s=new WeakMap,a=new WeakMap,w=new WeakMap,z=new WeakMap,C=new WeakMap,O=new WeakMap,k=new WeakMap,A=new WeakMap,S=new WeakMap,e=new WeakSet,h=function(){let n=this.getRootNode(),l=`${this.localName}[name="${this.getAttribute("name")}"]`;return n.querySelectorAll(l)},x=function(){if(this.hasAttribute("disabled"))return!1;let n=d(this,t,"f")||d(this,i,"f")&&!this.validity.valid&&!d(this,r,"f");return n&&this.internals.states?this.internals.states.add("--show-error"):this.internals.states&&this.internals.states.delete("--show-error"),n},j=function(n){let l=this.constructor,u={},m=l.validators,V=[],X=m.some(_=>_.isValid instanceof Promise);d(this,A,"f")||(g(this,S,new Promise(_=>{g(this,k,_,"f")}),"f"),g(this,A,!0,"f")),d(this,c,"f")&&(d(this,c,"f").abort(),g(this,s,d(this,c,"f"),"f"));let q=new AbortController;g(this,c,q,"f");let U,ue=!1;m.length&&(m.forEach(_=>{let oe=_.key||"customError",R=_.isValid(this,n,q.signal);R instanceof Promise?(V.push(R),R.then(ie=>{ie!=null&&(u[oe]=!ie,U=d(this,e,"m",te).call(this,_,n),d(this,e,"m",H).call(this,u,U))})):(u[oe]=!R,this.validity[oe]!==!R&&(ue=!0),!R&&!U&&(U=d(this,e,"m",te).call(this,_,n)))}),Promise.allSettled(V).then(()=>{var _;q?.signal.aborted||(g(this,A,!1,"f"),(_=d(this,k,"f"))===null||_===void 0||_.call(this))}),(ue||!X)&&d(this,e,"m",H).call(this,u,U))},H=function(n,l){if(this.validationTarget)this.internals.setValidity(n,l,this.validationTarget),g(this,a,!1,"f");else{if(this.internals.setValidity(n,l),this.internals.validity.valid)return;g(this,a,!0,"f")}},te=function(n,l){if(this.validityCallback){let u=this.validityCallback(n.key||"customError");if(u)return u}return n.message instanceof Function?n.message(this,l):n.message},Le}import{html as Q,LitElement as Pe,nothing as W}from"lit";import{property as y,query as Qe,state as Ie}from"lit/decorators.js";import{ifDefined as ee}from"lit/directives/if-defined.js";import{css as Ge}from"lit";import{unsafeCSS as Ke}from"lit";var ze=Ge`
9
+ `)),I(h)&&ke.test(h)?_e(h):I(h)?h:rr(h,this._locale,this._locales)(r,t?.formats)}date(e,r){return pe(this._locales||this._locale,e,r)}number(e,r){return de(this._locales||this._locale,e,r)}};function sr(o={}){return new he(o)}var z=sr();var c=function(o,e,r,t){if(r==="a"&&!t)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?o!==e||!t:!e.has(o))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?t:r==="a"?t.call(o):t?t.value:e.get(o)},g=function(o,e,r,t,a){if(t==="m")throw new TypeError("Private method is not writable");if(t==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?o!==e||!a:!e.has(o))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t==="a"?a.call(o,r):a?a.value=r:e.set(o,r),r};function Ce(o){var e,r,t,a,l,s,i,h,w,C,M,T,k,S,A,x,$,H,ae;class Be extends o{constructor(...n){var d,u,m;super(...n),e.add(this),this.internals=this.attachInternals(),r.set(this,!1),t.set(this,!1),a.set(this,!1),l.set(this,void 0),s.set(this,void 0),i.set(this,!0),w.set(this,""),C.set(this,()=>{g(this,a,!0,"f"),g(this,r,!0,"f"),c(this,e,"m",x).call(this)}),M.set(this,()=>{g(this,r,!1,"f"),c(this,e,"m",$).call(this,this.shouldFormValueUpdate()?c(this,w,"f"):""),!this.validity.valid&&c(this,a,"f")&&g(this,t,!0,"f");let E=c(this,e,"m",x).call(this);this.validationMessageCallback&&this.validationMessageCallback(E?this.internals.validationMessage:"")}),T.set(this,()=>{var E;c(this,i,"f")&&this.validationTarget&&(this.internals.setValidity(this.validity,this.validationMessage,this.validationTarget),g(this,i,!1,"f")),g(this,a,!0,"f"),g(this,t,!0,"f"),c(this,e,"m",x).call(this),(E=this===null||this===void 0?void 0:this.validationMessageCallback)===null||E===void 0||E.call(this,this.showError?this.internals.validationMessage:"")}),k.set(this,void 0),S.set(this,!1),A.set(this,Promise.resolve()),(d=this.addEventListener)===null||d===void 0||d.call(this,"focus",c(this,C,"f")),(u=this.addEventListener)===null||u===void 0||u.call(this,"blur",c(this,M,"f")),(m=this.addEventListener)===null||m===void 0||m.call(this,"invalid",c(this,T,"f")),this.setValue(null)}static get formAssociated(){return!0}static get validators(){return this.formControlValidators||[]}static get observedAttributes(){let n=this.validators.map(m=>m.attribute).flat(),d=super.observedAttributes||[];return[...new Set([...d,...n])]}static getValidator(n){return this.validators.find(d=>d.attribute===n)||null}static getValidators(n){return this.validators.filter(d=>{var u;if(d.attribute===n||!((u=d.attribute)===null||u===void 0)&&u.includes(n))return!0})}get form(){return this.internals.form}get showError(){return c(this,e,"m",x).call(this)}checkValidity(){return this.internals.checkValidity()}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}attributeChangedCallback(n,d,u){var m;(m=super.attributeChangedCallback)===null||m===void 0||m.call(this,n,d,u);let U=this.constructor.getValidators(n);U?.length&&this.validationTarget&&this.setValue(c(this,w,"f"))}setValue(n){var d;g(this,t,!1,"f"),(d=this.validationMessageCallback)===null||d===void 0||d.call(this,""),g(this,w,n,"f");let m=this.shouldFormValueUpdate()?n:null;this.internals.setFormValue(m),c(this,e,"m",$).call(this,m),this.valueChangedCallback&&this.valueChangedCallback(m),c(this,e,"m",x).call(this)}shouldFormValueUpdate(){return!0}get validationComplete(){return new Promise(n=>n(c(this,A,"f")))}formResetCallback(){var n,d;g(this,a,!1,"f"),g(this,t,!1,"f"),c(this,e,"m",x).call(this),(n=this.resetFormControl)===null||n===void 0||n.call(this),(d=this.validationMessageCallback)===null||d===void 0||d.call(this,c(this,e,"m",x).call(this)?this.validationMessage:"")}}return r=new WeakMap,t=new WeakMap,a=new WeakMap,l=new WeakMap,s=new WeakMap,i=new WeakMap,w=new WeakMap,C=new WeakMap,M=new WeakMap,T=new WeakMap,k=new WeakMap,S=new WeakMap,A=new WeakMap,e=new WeakSet,h=function(){let n=this.getRootNode(),d=`${this.localName}[name="${this.getAttribute("name")}"]`;return n.querySelectorAll(d)},x=function(){if(this.hasAttribute("disabled"))return!1;let n=c(this,t,"f")||c(this,a,"f")&&!this.validity.valid&&!c(this,r,"f");return n&&this.internals.states?this.internals.states.add("--show-error"):this.internals.states&&this.internals.states.delete("--show-error"),n},$=function(n){let d=this.constructor,u={},m=d.validators,E=[],U=m.some(_=>_.isValid instanceof Promise);c(this,S,"f")||(g(this,A,new Promise(_=>{g(this,k,_,"f")}),"f"),g(this,S,!0,"f")),c(this,l,"f")&&(c(this,l,"f").abort(),g(this,s,c(this,l,"f"),"f"));let X=new AbortController;g(this,l,X,"f");let Z,me=!1;m.length&&(m.forEach(_=>{let ie=_.key||"customError",D=_.isValid(this,n,X.signal);D instanceof Promise?(E.push(D),D.then(ne=>{ne!=null&&(u[ie]=!ne,Z=c(this,e,"m",ae).call(this,_,n),c(this,e,"m",H).call(this,u,Z))})):(u[ie]=!D,this.validity[ie]!==!D&&(me=!0),!D&&!Z&&(Z=c(this,e,"m",ae).call(this,_,n)))}),Promise.allSettled(E).then(()=>{var _;X?.signal.aborted||(g(this,S,!1,"f"),(_=c(this,k,"f"))===null||_===void 0||_.call(this))}),(me||!U)&&c(this,e,"m",H).call(this,u,Z))},H=function(n,d){if(this.validationTarget)this.internals.setValidity(n,d,this.validationTarget),g(this,i,!1,"f");else{if(this.internals.setValidity(n,d),this.internals.validity.valid)return;g(this,i,!0,"f")}},ae=function(n,d){if(this.validityCallback){let u=this.validityCallback(n.key||"customError");if(u)return u}return n.message instanceof Function?n.message(this,d):n.message},Be}import{html as ee,LitElement as Ue,nothing as re}from"lit";import{property as y,query as vr,state as Xe}from"lit/decorators.js";import{ifDefined as te}from"lit/directives/if-defined.js";import{css as lr}from"lit";import{unsafeCSS as dr}from"lit";var Me=lr`
10
10
  *,
11
11
  :before,
12
12
  :after {
@@ -279,7 +279,7 @@ Please compile your catalog first.
279
279
  svg {
280
280
  pointer-events: none;
281
281
  }
282
- `,nr=Ke(`*, :before, :after {
282
+ `,zr=dr(`*, :before, :after {
283
283
  --w-rotate: 0;
284
284
  --w-rotate-x: 0;
285
285
  --w-rotate-y: 0;
@@ -2445,7 +2445,7 @@ Please compile your catalog first.
2445
2445
  display: none
2446
2446
  }
2447
2447
  }
2448
- `);var Ce="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Fe=(o=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(o|=0));for(;o--;)e+=Ce[r[o]&63];return e};function Ve(o=""){return`${o}${Fe()}`}import{unsafeCSS as Je}from"lit";var Me=Je("*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.focus\\:\\[--w-outline-offset\\:-2px\\]:focus{--w-outline-offset:-2px}.bg-transparent{background-color:#0000}.border-1{border-width:1px}.rounded-4{border-radius:4px}.caret-current{caret-color:currentColor}.block{display:block}.flex{display:flex}.focusable:focus{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:focus-visible{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:not(:focus-visible){outline:none}.outline-\\[--w-s-color-border-negative\\]\\!{outline-color:var(--w-s-color-border-negative)!important}.fixed{position:fixed}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-disabled-subtle{background-color:var(--w-s-color-background-disabled-subtle)}.s-text{color:var(--w-s-color-text)}.s-text-disabled{color:var(--w-s-color-text-disabled)}.s-text-negative{color:var(--w-s-color-text-negative)}.s-text-subtle{color:var(--w-s-color-text-subtle)}.placeholder\\:s-text-placeholder::placeholder{color:var(--w-s-color-text-placeholder)}.s-border-disabled{border-color:var(--w-s-color-border-disabled)}.s-border-negative{border-color:var(--w-s-color-border-negative)}.s-border-strong{border-color:var(--w-s-color-border-strong)}.hover\\:s-border-negative-hover:hover{border-color:var(--w-s-color-border-negative-hover)}.hover\\:s-border-strong-hover:hover{border-color:var(--w-s-color-border-strong-hover)}.active\\:s-border-selected:active{border-color:var(--w-s-color-border-selected)}.w-full{width:100%}.min-h-\\[42\\]{min-height:4.2rem}.mb-0{margin-bottom:0}.mt-4{margin-top:.4rem}.px-8{padding-left:.8rem;padding-right:.8rem}.py-12{padding-top:1.2rem;padding-bottom:1.2rem}.pb-4{padding-bottom:.4rem}.pl-0{padding-left:0}.pl-8{padding-left:.8rem}.pr-40{padding-right:4rem}.pl-\\[var\\(--w-prefix-width\\,_40px\\)\\]{padding-left:var(--w-prefix-width,40px)}.visible{visibility:visible}.cursor-pointer{cursor:pointer}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:grayscale}.font-bold{font-weight:700}.font-normal{font-weight:400}.pointer-events-none{pointer-events:none}.resize{resize:both}.resize-none{resize:none}.text-m{font-size:var(--w-font-size-m);line-height:var(--w-line-height-m)}.text-s{font-size:var(--w-font-size-s);line-height:var(--w-line-height-s)}.text-xs{font-size:var(--w-font-size-xs);line-height:var(--w-line-height-xs)}.leading-m{line-height:var(--w-line-height-m)}@media (min-width:480px){.sm\\:min-h-\\[45\\]{min-height:4.5rem}}");import{css as Ee}from"lit";var Ae=Ee`
2448
+ `);var Fe="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Ee=(o=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(o|=0));for(;o--;)e+=Fe[r[o]&63];return e};function Ve(o=""){return`${o}${Ee()}`}import{unsafeCSS as cr}from"lit";var Le=cr("*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.focus\\:\\[--w-outline-offset\\:-2px\\]:focus{--w-outline-offset:-2px}.bg-transparent{background-color:#0000}.border-1{border-width:1px}.rounded-4{border-radius:4px}.caret-current{caret-color:currentColor}.block{display:block}.flex{display:flex}.focusable:focus{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:focus-visible{outline:2px solid var(--w-s-color-border-focus);outline-offset:var(--w-outline-offset,1px)}.focusable:not(:focus-visible){outline:none}.outline-\\[--w-s-color-border-negative\\]\\!{outline-color:var(--w-s-color-border-negative)!important}.fixed{position:fixed}.relative{position:relative}.static{position:static}.s-bg{background-color:var(--w-s-color-background)}.s-bg-disabled-subtle{background-color:var(--w-s-color-background-disabled-subtle)}.s-text{color:var(--w-s-color-text)}.s-text-disabled{color:var(--w-s-color-text-disabled)}.s-text-negative{color:var(--w-s-color-text-negative)}.s-text-subtle{color:var(--w-s-color-text-subtle)}.placeholder\\:s-text-placeholder::placeholder{color:var(--w-s-color-text-placeholder)}.s-border-disabled{border-color:var(--w-s-color-border-disabled)}.s-border-negative{border-color:var(--w-s-color-border-negative)}.s-border-strong{border-color:var(--w-s-color-border-strong)}.hover\\:s-border-negative-hover:hover{border-color:var(--w-s-color-border-negative-hover)}.hover\\:s-border-strong-hover:hover{border-color:var(--w-s-color-border-strong-hover)}.active\\:s-border-selected:active{border-color:var(--w-s-color-border-selected)}.w-full{width:100%}.min-h-\\[42\\]{min-height:4.2rem}.mb-0{margin-bottom:0}.mt-4{margin-top:.4rem}.px-8{padding-left:.8rem;padding-right:.8rem}.py-12{padding-top:1.2rem;padding-bottom:1.2rem}.pb-4{padding-bottom:.4rem}.pl-0{padding-left:0}.pl-8{padding-left:.8rem}.pr-40{padding-right:4rem}.pl-\\[var\\(--w-prefix-width\\,_40px\\)\\]{padding-left:var(--w-prefix-width,40px)}.visible{visibility:visible}.cursor-pointer{cursor:pointer}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:grayscale}.font-bold{font-weight:700}.font-normal{font-weight:400}.pointer-events-none{pointer-events:none}.resize{resize:both}.resize-none{resize:none}.text-m{font-size:var(--w-font-size-m);line-height:var(--w-line-height-m)}.text-s{font-size:var(--w-font-size-s);line-height:var(--w-line-height-s)}.text-xs{font-size:var(--w-font-size-xs);line-height:var(--w-line-height-xs)}.leading-m{line-height:var(--w-line-height-m)}@media (min-width:480px){.sm\\:min-h-\\[45\\]{min-height:4.5rem}}");import{css as Se}from"lit";var Ae=Se`
2449
2449
  /* Label component tokens with semantic fallbacks */
2450
2450
  label {
2451
2451
  /* Internal tokens - not part of public API */
@@ -2487,7 +2487,7 @@ Please compile your catalog first.
2487
2487
  line-height: var(--_line-height);
2488
2488
  color: var(--_color);
2489
2489
  }
2490
- `,Se=Ee`
2490
+ `,Ne=Se`
2491
2491
  /* Help text component tokens with semantic fallbacks */
2492
2492
  :host {
2493
2493
  --_help-text-color: var(
@@ -2521,36 +2521,36 @@ Please compile your catalog first.
2521
2521
  display: var(--_help-text-display);
2522
2522
  color: var(--_help-text-color);
2523
2523
  }
2524
- `;var $={base:"block text-m leading-m mb-0 px-8 py-12 rounded-4 w-full focusable focus:[--w-outline-offset:-2px] caret-current",default:"border-1 s-text s-bg s-border-strong hover:s-border-strong-hover active:s-border-selected",disabled:"border-1 s-text-disabled s-bg-disabled-subtle s-border-disabled pointer-events-none",invalid:"border-1 s-text-negative s-bg s-border-negative hover:s-border-negative-hover outline-[--w-s-color-border-negative]!",readOnly:"pl-0 bg-transparent pointer-events-none",placeholder:"placeholder:s-text-placeholder",suffix:"pr-40",prefix:"pl-[var(--w-prefix-width,_40px)]",textArea:"min-h-[42] sm:min-h-[45]",fixed:"resize-none"},B,re,Y,T,L,b,be,Z,E,$e,G,pe,p=class extends _e(Pe){constructor(){super(...arguments);P(this,b);this.disabled=!1;this.invalid=!1;this.readOnly=!1;this.readonly=!1;this.required=!1;this.optional=!1;this.minHeight=Number.NEGATIVE_INFINITY;this.maxHeight=Number.POSITIVE_INFINITY;P(this,B);P(this,re,Ve("textarea-"));P(this,Y,!1);P(this,T);P(this,L,!1);P(this,G,r=>{r.preventDefault(),F(this,L,!0),v(this,b,E).call(this)})}updated(r){r.has("value")&&typeof this.value<"u"&&this.setValue(this.value),(r.has("value")||r.has("required")||r.has("disabled"))&&v(this,b,E).call(this)}resetFormControl(){this.value=M(this,B),F(this,L,!1),v(this,b,Z).call(this),v(this,b,E).call(this)}get validationMessage(){return this.internals.validationMessage}get validity(){return this.internals.validity}checkValidity(){return v(this,b,E).call(this),this.internals.checkValidity()}reportValidity(){return F(this,L,!0),v(this,b,E).call(this),this.internals.checkValidity()}setCustomValidity(r){r?(this.internals.setValidity({customError:!0},r,this._textarea),v(this,b,be).call(this,r)):(v(this,b,Z).call(this),v(this,b,E).call(this))}get _textareaStyles(){return ne([$.base,$.textArea,!!this.placeholder&&$.placeholder,!this.invalid&&!this.disabled&&!(this.readonly||this.readOnly)&&$.default,this.invalid&&!this.disabled&&!(this.readonly||this.readOnly)&&$.invalid,!this.invalid&&this.disabled&&!(this.readonly||this.readOnly)&&$.disabled,!this.invalid&&!this.disabled&&(this.readonly||this.readOnly)&&$.readOnly,this.maxRows&&$.fixed])}get _helptextstyles(){return"help-text"}get _helpId(){if(this.helpText)return`${this._id}__hint`}get _id(){return M(this,re)}get _error(){if(this.invalid&&this._helpId)return this._helpId}async connectedCallback(){if(super.connectedCallback(),F(this,B,this.value),typeof this.value<"u"&&this.setValue(this.value),this.addEventListener("invalid",M(this,G)),await this.updateComplete,this.value||this.minRows){let r=this.shadowRoot?.querySelector("textarea");r&&v(this,b,pe).call(this,r)}}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("invalid",M(this,G))}firstUpdated(r){super.firstUpdated(r),v(this,b,E).call(this)}handler(r){let t=r.currentTarget;this.value=t.value,v(this,b,pe).call(this,t)}render(){return Q`
2525
- ${this.label?Q`
2524
+ `;var hr=["en","nb","fi","da","sv"],ue="en",W=o=>hr.find(e=>o===e||o.toLowerCase().includes(e))||ue;function Oe(){if(typeof window>"u"){let o=process.env.NMP_LANGUAGE||Intl.DateTimeFormat().resolvedOptions().locale;return W(o)}try{let o=Pe(document);if(o)return W(o);let e=gr();if(e)return W(e);let r=Pe(Ye());return r?W(r):ue}catch(o){return console.warn("could not detect locale, falling back to source locale",o),ue}}var $e=(o,e,r,t,a)=>{z.load("en",o),z.load("nb",e),z.load("fi",r),z.load("da",t),z.load("sv",a);let l=Oe();z.activate(l),je(),pr()},br="warp-i18n-change";function je(){typeof window>"u"||window.dispatchEvent(new Event(br))}var Ie=!1;function pr(){if(Ie||typeof window>"u"||!document?.documentElement)return;Ie=!0;let o=()=>{let a=Oe();z.locale!==a&&(z.activate(a),je())},e=new MutationObserver(a=>{for(let l of a)if(l.type==="attributes"&&l.attributeName==="lang"){o();break}});e.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"]});let r=Ye();r&&r.documentElement&&r!==document&&e.observe(r.documentElement,{attributes:!0,attributeFilter:["lang"]});let t=ur();t&&e.observe(t,{attributes:!0,attributeFilter:["lang"]})}function Ye(){try{return window.parent?.document??null}catch{return null}}function Pe(o){try{return o?.documentElement?.lang??""}catch{return""}}function ur(){try{return window.frameElement??null}catch{return null}}function gr(){try{return window.frameElement?.getAttribute?.("lang")??""}catch{return""}}var Te=JSON.parse('{"textarea.label.optional":["Valgfri"]}');var De=JSON.parse('{"textarea.label.optional":["Optional"]}');var Re=JSON.parse('{"textarea.label.optional":["Valinnainen"]}');var He=JSON.parse('{"textarea.label.optional":["Valgfri"]}');var qe=JSON.parse('{"textarea.label.optional":["Valfritt"]}');var P={base:"block text-m leading-m mb-0 px-8 py-12 rounded-4 w-full focusable focus:[--w-outline-offset:-2px] caret-current",default:"border-1 s-text s-bg s-border-strong hover:s-border-strong-hover active:s-border-selected",disabled:"border-1 s-text-disabled s-bg-disabled-subtle s-border-disabled pointer-events-none",invalid:"border-1 s-text-negative s-bg s-border-negative hover:s-border-negative-hover outline-[--w-s-color-border-negative]!",readOnly:"pl-0 bg-transparent pointer-events-none",placeholder:"placeholder:s-text-placeholder",suffix:"pr-40",prefix:"pl-[var(--w-prefix-width,_40px)]",textArea:"min-h-[42] sm:min-h-[45]",fixed:"resize-none"},G,oe,Y,R,O,b,ge,B,L,Ze,J,ve,p=class extends Ce(Ue){constructor(){super();N(this,b);this.disabled=!1;this.invalid=!1;this.readOnly=!1;this.readonly=!1;this.required=!1;this.optional=!1;this.minHeight=Number.NEGATIVE_INFINITY;this.maxHeight=Number.POSITIVE_INFINITY;N(this,G);N(this,oe,Ve("textarea-"));N(this,Y,!1);N(this,R);N(this,O,!1);N(this,J,r=>{r.preventDefault(),F(this,O,!0),v(this,b,L).call(this)});$e(De,He,Re,Te,qe)}updated(r){r.has("value")&&typeof this.value<"u"&&this.setValue(this.value),(r.has("value")||r.has("required")||r.has("disabled"))&&v(this,b,L).call(this)}resetFormControl(){this.value=V(this,G),F(this,O,!1),v(this,b,B).call(this),v(this,b,L).call(this)}get validationMessage(){return this.internals.validationMessage}get validity(){return this.internals.validity}checkValidity(){return v(this,b,L).call(this),this.internals.checkValidity()}reportValidity(){return F(this,O,!0),v(this,b,L).call(this),this.internals.checkValidity()}setCustomValidity(r){r?(this.internals.setValidity({customError:!0},r,this._textarea),v(this,b,ge).call(this,r)):(v(this,b,B).call(this),v(this,b,L).call(this))}get _textareaStyles(){return le([P.base,P.textArea,!!this.placeholder&&P.placeholder,!this.invalid&&!this.disabled&&!(this.readonly||this.readOnly)&&P.default,this.invalid&&!this.disabled&&!(this.readonly||this.readOnly)&&P.invalid,!this.invalid&&this.disabled&&!(this.readonly||this.readOnly)&&P.disabled,!this.invalid&&!this.disabled&&(this.readonly||this.readOnly)&&P.readOnly,this.maxRows&&P.fixed])}get _helptextstyles(){return"help-text"}get _helpId(){if(this.helpText)return`${this._id}__hint`}get _id(){return V(this,oe)}get _error(){if(this.invalid&&this._helpId)return this._helpId}async connectedCallback(){if(super.connectedCallback(),F(this,G,this.value),typeof this.value<"u"&&this.setValue(this.value),this.addEventListener("invalid",V(this,J)),await this.updateComplete,this.value||this.minRows){let r=this.shadowRoot?.querySelector("textarea");r&&v(this,b,ve).call(this,r)}}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("invalid",V(this,J))}firstUpdated(r){super.firstUpdated(r),v(this,b,L).call(this)}handler(r){let t=r.currentTarget;this.value=t.value,v(this,b,ve).call(this,t)}render(){return ee`
2525
+ ${this.label?ee`
2526
2526
  <label for="${this._id}">
2527
2527
  ${this.label}
2528
- ${this.optional?Q`
2528
+ ${this.optional&&!this.required?ee`
2529
2529
  <span>
2530
- ${ke._({id:"textarea.label.optional",message:"(optional)",comment:"Shown behind label when marked as optional"})}
2530
+ ${z._({id:"textarea.label.optional",message:"Optional",comment:"Shown behind label when marked as optional"})}
2531
2531
  </span>
2532
- `:W}
2532
+ `:re}
2533
2533
  </label>
2534
- `:W}
2534
+ `:re}
2535
2535
  <textarea
2536
2536
  part="input"
2537
2537
  id="${this._id}"
2538
2538
  class="${this._textareaStyles}"
2539
- name="${ee(this.name)}"
2540
- placeholder="${ee(this.placeholder)}"
2539
+ name="${te(this.name)}"
2540
+ placeholder="${te(this.placeholder)}"
2541
2541
  .value="${this.value||""}"
2542
- aria-describedby="${ee(this._helpId||(this.ariaDescription?"aria-description":void 0))}"
2543
- aria-errormessage="${ee(this._error)}"
2544
- aria-invalid=${this.invalid?"true":W}
2542
+ aria-describedby="${te(this._helpId||(this.ariaDescription?"aria-description":void 0))}"
2543
+ aria-errormessage="${te(this._error)}"
2544
+ aria-invalid=${this.invalid?"true":re}
2545
2545
  ?disabled="${this.disabled}"
2546
2546
  ?readonly="${this.readonly||this.readOnly}"
2547
2547
  ?required="${this.required}"
2548
2548
  @input="${this.handler}"
2549
- @blur="${v(this,b,$e)}"
2549
+ @blur="${v(this,b,Ze)}"
2550
2550
  >
2551
2551
  </textarea>
2552
- ${this.helpText?Q`<div class="${this._helptextstyles}" id="${this._helpId}">
2552
+ ${this.helpText?ee`<div class="${this._helptextstyles}" id="${this._helpId}">
2553
2553
  ${this.helpText}
2554
- </div>`:W}
2555
- `}};B=new WeakMap,re=new WeakMap,Y=new WeakMap,T=new WeakMap,L=new WeakMap,b=new WeakSet,be=function(r){M(this,Y)||F(this,T,this.helpText),F(this,Y,!0),this.invalid=!0,this.helpText=r},Z=function(){M(this,Y)&&(this.invalid=!1,this.helpText=M(this,T),F(this,T,void 0),F(this,Y,!1))},E=function(){if(this.disabled){this.internals.setValidity({}),v(this,b,Z).call(this);return}if(this.required&&!this.value){let r=this._textarea?.validationMessage||"";this.internals.setValidity({valueMissing:!0},r,this._textarea),M(this,L)&&v(this,b,be).call(this,r);return}this.internals.setValidity({}),v(this,b,Z).call(this)},$e=function(){F(this,L,!0),v(this,b,E).call(this)},G=new WeakMap,pe=function(r){let t=getComputedStyle(r),i=Number.parseFloat(t.getPropertyValue("border-top-width")),c=Number.parseFloat(t.getPropertyValue("border-bottom-width")),s=Number.parseFloat(t.getPropertyValue("line-height")),a=Number.parseFloat(t.getPropertyValue("padding-top")),h=Number.parseFloat(t.getPropertyValue("padding-bottom")),w=a+h+c+i;this.minRows&&(this.minHeight=s*this.minRows+w),this.maxRows&&(this.maxHeight=s*this.maxRows+w);let z=r.scrollHeight+i+c,C=Math.min(this.maxHeight,Math.max(this.minHeight,z));r.style.setProperty("height",C+"px")},p.shadowRootOptions={...Pe.shadowRootOptions,delegatesFocus:!0},p.styles=[ze,Me,Ae,Se],f([y({type:Boolean,reflect:!0})],p.prototype,"disabled",2),f([y({type:Boolean,reflect:!0})],p.prototype,"invalid",2),f([y({type:String,reflect:!0})],p.prototype,"label",2),f([y({type:String,reflect:!0,attribute:"help-text"})],p.prototype,"helpText",2),f([y({type:Number,reflect:!0,attribute:"maximum-rows"})],p.prototype,"maxRows",2),f([y({type:Number,reflect:!0,attribute:"minimum-rows"})],p.prototype,"minRows",2),f([y({type:String,reflect:!0})],p.prototype,"name",2),f([y({type:String,reflect:!0})],p.prototype,"placeholder",2),f([y({type:Boolean,reflect:!0,attribute:"read-only"})],p.prototype,"readOnly",2),f([y({type:Boolean,reflect:!0})],p.prototype,"readonly",2),f([y({type:Boolean,reflect:!0})],p.prototype,"required",2),f([y({type:String,reflect:!0})],p.prototype,"value",2),f([y({type:Boolean,reflect:!0})],p.prototype,"optional",2),f([Ie()],p.prototype,"minHeight",2),f([Ie()],p.prototype,"maxHeight",2),f([Qe("textarea")],p.prototype,"_textarea",2);customElements.get("w-textarea")||customElements.define("w-textarea",p);export{p as WarpTextarea};
2554
+ </div>`:re}
2555
+ `}};G=new WeakMap,oe=new WeakMap,Y=new WeakMap,R=new WeakMap,O=new WeakMap,b=new WeakSet,ge=function(r){V(this,Y)||F(this,R,this.helpText),F(this,Y,!0),this.invalid=!0,this.helpText=r},B=function(){V(this,Y)&&(this.invalid=!1,this.helpText=V(this,R),F(this,R,void 0),F(this,Y,!1))},L=function(){if(this.disabled){this.internals.setValidity({}),v(this,b,B).call(this);return}if(this.required&&!this.value){let r=this._textarea?.validationMessage||"";this.internals.setValidity({valueMissing:!0},r,this._textarea),V(this,O)&&v(this,b,ge).call(this,r);return}this.internals.setValidity({}),v(this,b,B).call(this)},Ze=function(){F(this,O,!0),v(this,b,L).call(this)},J=new WeakMap,ve=function(r){let t=getComputedStyle(r),a=Number.parseFloat(t.getPropertyValue("border-top-width")),l=Number.parseFloat(t.getPropertyValue("border-bottom-width")),s=Number.parseFloat(t.getPropertyValue("line-height")),i=Number.parseFloat(t.getPropertyValue("padding-top")),h=Number.parseFloat(t.getPropertyValue("padding-bottom")),w=i+h+l+a;this.minRows&&(this.minHeight=s*this.minRows+w),this.maxRows&&(this.maxHeight=s*this.maxRows+w);let C=r.scrollHeight+a+l,M=Math.min(this.maxHeight,Math.max(this.minHeight,C));r.style.setProperty("height",M+"px")},p.shadowRootOptions={...Ue.shadowRootOptions,delegatesFocus:!0},p.styles=[Me,Le,Ae,Ne],f([y({type:Boolean,reflect:!0})],p.prototype,"disabled",2),f([y({type:Boolean,reflect:!0})],p.prototype,"invalid",2),f([y({type:String,reflect:!0})],p.prototype,"label",2),f([y({type:String,reflect:!0,attribute:"help-text"})],p.prototype,"helpText",2),f([y({type:Number,reflect:!0,attribute:"maximum-rows"})],p.prototype,"maxRows",2),f([y({type:Number,reflect:!0,attribute:"minimum-rows"})],p.prototype,"minRows",2),f([y({type:String,reflect:!0})],p.prototype,"name",2),f([y({type:String,reflect:!0})],p.prototype,"placeholder",2),f([y({type:Boolean,reflect:!0,attribute:"read-only"})],p.prototype,"readOnly",2),f([y({type:Boolean,reflect:!0})],p.prototype,"readonly",2),f([y({type:Boolean,reflect:!0})],p.prototype,"required",2),f([y({type:String,reflect:!0})],p.prototype,"value",2),f([y({type:Boolean,reflect:!0})],p.prototype,"optional",2),f([Xe()],p.prototype,"minHeight",2),f([Xe()],p.prototype,"maxHeight",2),f([vr("textarea")],p.prototype,"_textarea",2);customElements.get("w-textarea")||customElements.define("w-textarea",p);export{p as WarpTextarea};
2556
2556
  //# sourceMappingURL=textarea.js.map