@cupra/ui-kit 2.0.0-canary.79 → 2.0.0-canary.80

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 (63) hide show
  1. package/dist/cjs/components/ds-calendar/ds-calendar.cjs +26 -0
  2. package/dist/cjs/components/ds-calendar/styles/common.styles.cjs +38 -0
  3. package/dist/cjs/components/ds-calendar-day/ds-calendar-day.cjs +14 -0
  4. package/dist/cjs/components/ds-calendar-day/styles/common.styles.cjs +23 -0
  5. package/dist/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
  6. package/dist/cjs/index.cjs +1 -1
  7. package/dist/cjs/utils/IconsManager.cjs +1 -1
  8. package/dist/cjs/utils/PubSub.cjs +1 -1
  9. package/dist/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
  10. package/dist/cjs/utils/cssWithTokens.cjs +1 -1
  11. package/dist/cjs/utils/htmlWithTokens.cjs +1 -1
  12. package/dist/esm/components/ds-calendar/ds-calendar.js +276 -0
  13. package/dist/esm/components/ds-calendar/styles/common.styles.js +45 -0
  14. package/dist/esm/components/ds-calendar-day/ds-calendar-day.js +84 -0
  15. package/dist/esm/components/ds-calendar-day/styles/common.styles.js +30 -0
  16. package/dist/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
  17. package/dist/esm/index.js +4 -2
  18. package/dist/esm/utils/IconsManager.js +1 -1
  19. package/dist/esm/utils/PubSub.js +1 -1
  20. package/dist/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
  21. package/dist/esm/utils/cssWithTokens.js +1 -1
  22. package/dist/esm/utils/htmlWithTokens.js +1 -1
  23. package/dist/types/components/ds-calendar/ds-calendar.d.ts +42 -0
  24. package/dist/types/components/ds-calendar/ds-calendar.test.d.ts +8 -0
  25. package/dist/types/components/ds-calendar/ds-calendar.types.d.ts +35 -0
  26. package/dist/types/components/ds-calendar/styles/common.styles.d.ts +1 -0
  27. package/dist/types/components/ds-calendar-day/ds-calendar-day.d.ts +20 -0
  28. package/dist/types/components/ds-calendar-day/ds-calendar-day.test.d.ts +8 -0
  29. package/dist/types/components/ds-calendar-day/ds-calendar-day.types.d.ts +10 -0
  30. package/dist/types/components/ds-calendar-day/styles/common.styles.d.ts +1 -0
  31. package/dist/types/components/index.d.ts +2 -0
  32. package/dist-react/cjs/components/ds-calendar/ds-calendar.cjs +26 -0
  33. package/dist-react/cjs/components/ds-calendar/styles/common.styles.cjs +38 -0
  34. package/dist-react/cjs/components/ds-calendar-day/ds-calendar-day.cjs +14 -0
  35. package/dist-react/cjs/components/ds-calendar-day/styles/common.styles.cjs +23 -0
  36. package/dist-react/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
  37. package/dist-react/cjs/index.cjs +1 -1
  38. package/dist-react/cjs/utils/IconsManager.cjs +1 -1
  39. package/dist-react/cjs/utils/PubSub.cjs +1 -1
  40. package/dist-react/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
  41. package/dist-react/cjs/utils/cssWithTokens.cjs +1 -1
  42. package/dist-react/cjs/utils/htmlWithTokens.cjs +1 -1
  43. package/dist-react/esm/components/ds-calendar/ds-calendar.js +276 -0
  44. package/dist-react/esm/components/ds-calendar/styles/common.styles.js +45 -0
  45. package/dist-react/esm/components/ds-calendar-day/ds-calendar-day.js +84 -0
  46. package/dist-react/esm/components/ds-calendar-day/styles/common.styles.js +30 -0
  47. package/dist-react/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
  48. package/dist-react/esm/index.js +4 -2
  49. package/dist-react/esm/utils/IconsManager.js +1 -1
  50. package/dist-react/esm/utils/PubSub.js +1 -1
  51. package/dist-react/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
  52. package/dist-react/esm/utils/cssWithTokens.js +1 -1
  53. package/dist-react/esm/utils/htmlWithTokens.js +1 -1
  54. package/dist-react/types/components/ds-calendar/ds-calendar.d.ts +42 -0
  55. package/dist-react/types/components/ds-calendar/ds-calendar.test.d.ts +8 -0
  56. package/dist-react/types/components/ds-calendar/ds-calendar.types.d.ts +35 -0
  57. package/dist-react/types/components/ds-calendar/styles/common.styles.d.ts +1 -0
  58. package/dist-react/types/components/ds-calendar-day/ds-calendar-day.d.ts +20 -0
  59. package/dist-react/types/components/ds-calendar-day/ds-calendar-day.test.d.ts +8 -0
  60. package/dist-react/types/components/ds-calendar-day/ds-calendar-day.types.d.ts +10 -0
  61. package/dist-react/types/components/ds-calendar-day/styles/common.styles.d.ts +1 -0
  62. package/dist-react/types/components/index.d.ts +2 -0
  63. package/package.json +1 -1
@@ -0,0 +1,26 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("../base/UiKitElement.cjs");require("../ds-calendar-day/ds-calendar-day.cjs");const _=require("../../decorators/customUiKitElement.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const p=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),m=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs"),C=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs"),M=require("./styles/common.styles.cjs");var S=Object.defineProperty,k=Object.getOwnPropertyDescriptor,n=(f,e,t,s)=>{for(var r=s>1?void 0:s?k(e,t):e,i=f.length-1,a;i>=0;i--)(a=f[i])&&(r=(s?a(e,t,r):a(r))||r);return s&&r&&S(e,t,r),r};exports.DsCalendar=class extends b.UiKitElement{constructor(){super(...arguments),this.variant="plane",this.locale="en-US",this.firstDayOfWeek=1,this.disabledDates=[],this.disabledWeekdays=[],this._viewDate=new Date,this._value=null,this._initialValueApplied=!1}get selectedDate(){if(this.value){const e=this.parseDate(this.value);if(e)return e}return this._value}get viewDate(){return this._viewDate}connectedCallback(){super.connectedCallback(),this.applyInitialValue(),this.initializeViewDate()}updated(e){super.updated(e),(e.has("value")||e.has("viewDateAttr"))&&this.initializeViewDate()}applyInitialValue(){if(!this._initialValueApplied&&(this._initialValueApplied=!0,this.initialValue)){const e=this.parseDate(this.initialValue);e&&(this._value=e)}}initializeViewDate(){if(this.viewDateAttr){const e=this.parseDate(this.viewDateAttr);e&&(this._viewDate=e)}else if(this.value){const e=this.parseDate(this.value);e&&(this._viewDate=new Date(e))}else this._value?this._viewDate=new Date(this._value):this._viewDate=new Date}parseDate(e){const t=e.split("-");if(t.length>=2){const s=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10)-1,i=t.length>=3?Number.parseInt(t[2],10):1,a=new Date(s,r,i);if(!Number.isNaN(a.getTime()))return a}return null}get calendarClasses(){return{calendar:!0,[this.variant]:!0}}get weekdayNames(){const e=new Intl.DateTimeFormat(this.locale,{weekday:"short"}),t=[],s=new Date(2024,0,1);for(;s.getDay()!==this.firstDayOfWeek;)s.setDate(s.getDate()+1);for(let r=0;r<7;r++){const i=new Date(s);i.setDate(s.getDate()+r);const a=e.format(i);t.push(a.slice(0,2))}return t}get monthYearLabel(){return new Intl.DateTimeFormat(this.locale,{month:"long",year:"numeric"}).format(this._viewDate)}getDaysInMonth(e,t){return new Date(e,t+1,0).getDate()}getFirstDayOfMonth(e,t){return new Date(e,t,1).getDay()}get calendarDays(){const e=this._viewDate.getFullYear(),t=this._viewDate.getMonth(),s=new Date;s.setHours(0,0,0,0);const r=this.getDaysInMonth(e,t);let a=this.getFirstDayOfMonth(e,t)-this.firstDayOfWeek;a<0&&(a+=7);const d=[],c=t===0?11:t-1,h=t===0?e-1:e,u=this.getDaysInMonth(h,c);for(let l=a-1;l>=0;l--){const D=u-l,w=new Date(h,c,D);d.push(this.createCalendarDay(w,!1,s))}for(let l=1;l<=r;l++){const D=new Date(e,t,l);d.push(this.createCalendarDay(D,!0,s))}const y=42-d.length,v=t===11?0:t+1,g=t===11?e+1:e;for(let l=1;l<=y;l++){const D=new Date(g,v,l);d.push(this.createCalendarDay(D,!1,s))}return d}createCalendarDay(e,t,s){e.setHours(0,0,0,0);const r=e.getDate(),i=e.getMonth(),a=e.getFullYear(),d=r===s.getDate()&&i===s.getMonth()&&a===s.getFullYear(),c=this.selectedDate,h=c?r===c.getDate()&&i===c.getMonth()&&a===c.getFullYear():!1,u=!t||this.isDateDisabled(e);return{day:r,month:i,year:a,date:e,isCurrentMonth:t,isToday:d,isSelected:h,isDisabled:u}}isDateDisabled(e){if(this.minDate){const t=new Date(this.minDate);if(t.setHours(0,0,0,0),e<t)return!0}if(this.maxDate){const t=new Date(this.maxDate);if(t.setHours(0,0,0,0),e>t)return!0}if(this.disabledWeekdays&&this.disabledWeekdays.length>0){const t=e.getDay();if(this.disabledWeekdays.includes(t))return!0}if(this.disabledDates&&this.disabledDates.length>0){const t=e.toISOString().split("T")[0];if(this.disabledDates.includes(t))return!0}return!1}handlePrevMonth(){const e=new Date(this._viewDate);e.setMonth(e.getMonth()-1),this._viewDate=e}handleNextMonth(){const e=new Date(this._viewDate);e.setMonth(e.getMonth()+1),this._viewDate=e}handleDayChange(e){var y;e.stopPropagation();const t=e.target;if(!t||!t.tagName.toLowerCase().startsWith("ds-calendar-day"))return;const r=Array.from(((y=this.shadowRoot)==null?void 0:y.querySelectorAll("ds-calendar-day"))||[]).indexOf(t);if(r===-1)return;const a=this.calendarDays[r];if(!a||a.isDisabled)return;this._value=a.date,this._viewDate=new Date(a.date);const d=a.date.getFullYear(),c=String(a.date.getMonth()+1).padStart(2,"0"),h=String(a.date.getDate()).padStart(2,"0"),u=`${d}-${c}-${h}`;this.dispatchEvent(new CustomEvent("ds-calendar-change",{bubbles:!0,composed:!0,detail:{value:u,date:a.date}}))}get prevButtonTemplate(){return this.componentFactory.createIconButton({class:"nav-button","icon-name":"arrow-left","data-aria-label":"Previous month","@click":this.handlePrevMonth,variant:"naked",size:"medium",color:"var(--ds-icon-button-icon-color-standard-default, #fafafa)"})}get nextButtonTemplate(){return this.componentFactory.createIconButton({class:"nav-button","icon-name":"arrow-right","data-aria-label":"Next month","@click":this.handleNextMonth,variant:"naked",size:"medium",color:"var(--ds-icon-button-icon-color-standard-default, #fafafa)"})}get weekdaysTemplate(){return p.html`
2
+ <div class="weekdays">
3
+ ${this.weekdayNames.map(e=>p.html`<div class="weekday">${e}</div>`)}
4
+ </div>
5
+ `}get daysTemplate(){return p.html`
6
+ <div class="days-grid" @ds-calendar-day-change=${this.handleDayChange}>
7
+ ${this.calendarDays.map(e=>p.html`
8
+ <ds-calendar-day
9
+ day=${e.day}
10
+ ?disabled=${e.isDisabled}
11
+ ?selected=${e.isSelected}
12
+ ?today=${e.isToday}
13
+ ?outside-month=${!e.isCurrentMonth}
14
+ ></ds-calendar-day>
15
+ `)}
16
+ </div>
17
+ `}render(){return p.html`
18
+ <div class=${C.classMap(this.calendarClasses)} role="application" aria-label="Calendar">
19
+ <div class="header">
20
+ ${this.prevButtonTemplate}
21
+ <div class="month-year" aria-live="polite">${this.monthYearLabel}</div>
22
+ ${this.nextButtonTemplate}
23
+ </div>
24
+ ${this.weekdaysTemplate} ${this.daysTemplate}
25
+ </div>
26
+ `}};exports.DsCalendar.styles=[M.commonStyles];n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"value",2);n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"variant",2);n([o.property({type:String,reflect:!0})],exports.DsCalendar.prototype,"locale",2);n([o.property({type:Number,reflect:!0,attribute:"first-day-of-week"})],exports.DsCalendar.prototype,"firstDayOfWeek",2);n([o.property({type:String,reflect:!0,attribute:"min-date"})],exports.DsCalendar.prototype,"minDate",2);n([o.property({type:String,reflect:!0,attribute:"max-date"})],exports.DsCalendar.prototype,"maxDate",2);n([o.property({type:Array,attribute:"disabled-dates"})],exports.DsCalendar.prototype,"disabledDates",2);n([o.property({type:Array,attribute:"disabled-weekdays"})],exports.DsCalendar.prototype,"disabledWeekdays",2);n([o.property({type:String,reflect:!0,attribute:"view-date"})],exports.DsCalendar.prototype,"viewDateAttr",2);n([o.property({type:String,attribute:"initial-value"})],exports.DsCalendar.prototype,"initialValue",2);n([m.state()],exports.DsCalendar.prototype,"_viewDate",2);n([m.state()],exports.DsCalendar.prototype,"_value",2);exports.DsCalendar=n([_.customUiKitElement("ds-calendar")],exports.DsCalendar);
@@ -0,0 +1,38 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs"),t=e.css`
2
+ :host {
3
+ display: inline-block;
4
+ }
5
+
6
+ .calendar {
7
+ display: flex;
8
+ flex-direction: column;
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ .header {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: space-between;
16
+ }
17
+
18
+ .month-year {
19
+ flex: 1;
20
+ text-align: center;
21
+ }
22
+
23
+ .weekdays {
24
+ display: grid;
25
+ grid-template-columns: repeat(7, 1fr);
26
+ }
27
+
28
+ .weekday {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ }
33
+
34
+ .days-grid {
35
+ display: grid;
36
+ grid-template-columns: repeat(7, 1fr);
37
+ }
38
+ `;exports.commonStyles=t;
@@ -0,0 +1,14 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("../base/UiKitElement.cjs"),c=require("../../decorators/customUiKitElement.cjs"),o=require("../../utils/booleanConverter.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const u=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const a=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),p=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs"),h=require("./styles/common.styles.cjs");var b=Object.defineProperty,D=Object.getOwnPropertyDescriptor,r=(l,e,n,s)=>{for(var t=s>1?void 0:s?D(e,n):e,i=l.length-1,d;i>=0;i--)(d=l[i])&&(t=(s?d(e,n,t):d(t))||t);return s&&t&&b(e,n,t),t};exports.DsCalendarDay=class extends y.UiKitElement{constructor(){super(...arguments),this.disabled=!1,this.selected=!1,this.today=!1,this.outsideMonth=!1}get classes(){return{day:!0,disabled:this.disabled,selected:this.selected,today:this.today,"outside-month":this.outsideMonth}}handleClick(e){if(this.disabled){e.preventDefault(),e.stopPropagation();return}this.dispatchEvent(new CustomEvent("ds-calendar-day-change",{bubbles:!0,composed:!0,detail:{day:this.day}}))}handleKeyDown(e){this.disabled||(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.handleClick(e))}render(){return u.html`
2
+ <button
3
+ class=${p.classMap(this.classes)}
4
+ ?disabled=${this.disabled}
5
+ aria-label=${this.day?`Day ${this.day}`:""}
6
+ aria-selected=${this.selected}
7
+ aria-current=${this.today?"date":"false"}
8
+ tabindex=${this.disabled?-1:0}
9
+ @click=${this.handleClick}
10
+ @keydown=${this.handleKeyDown}
11
+ >
12
+ ${this.day}
13
+ </button>
14
+ `}};exports.DsCalendarDay.styles=[h.commonStyles];r([a.property({type:Number,reflect:!0})],exports.DsCalendarDay.prototype,"day",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"disabled",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"selected",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0})],exports.DsCalendarDay.prototype,"today",2);r([a.property({type:Boolean,converter:o.booleanConverter,reflect:!0,attribute:"outside-month"})],exports.DsCalendarDay.prototype,"outsideMonth",2);exports.DsCalendarDay=r([c.customUiKitElement("ds-calendar-day")],exports.DsCalendarDay);
@@ -0,0 +1,23 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs"),n=e.css`
2
+ :host {
3
+ display: inline-flex;
4
+ }
5
+
6
+ .day {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ box-sizing: border-box;
11
+ cursor: pointer;
12
+ user-select: none;
13
+ border: none;
14
+ background: none;
15
+ padding: 0;
16
+ margin: 0;
17
+ }
18
+
19
+ .day.disabled {
20
+ cursor: default;
21
+ pointer-events: none;
22
+ }
23
+ `;exports.commonStyles=n;
@@ -1,4 +1,4 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../core/theme.constants.cjs"),p=require("../../decorators/customUiKitElement.cjs"),f=require("../../node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/lib/decorators/provide.cjs"),y=require("../../utils/PubSub.cjs"),m=require("../../utils/booleanConverter.cjs");require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const l=require("../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs"),v=require("../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs"),h=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs"),u=require("../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs"),$=require("../../styles/source/shared/fonts-config.cjs"),T=require("./themeContext.cjs");var b=Object.defineProperty,P=Object.getOwnPropertyDescriptor,d=(a,e,s,o)=>{for(var t=o>1?void 0:o?P(e,s):e,r=a.length-1,n;r>=0;r--)(n=a[r])&&(t=(o?n(e,s,t):n(t))||t);return o&&t&&b(e,s,t),t};exports.DsThemeProvider=class extends v.LitElement{constructor(){super(...arguments),this.loadFonts=!0,this.loadStyles=!0,this.cssLoaded=!1,this.loadedFonts=new Set}updated(e){super.updated(e),e.has("theme")&&(y.pubSub.publish("theme",this.theme),sessionStorage==null||sessionStorage.setItem(c.THEME_STORAGE_KEY,this.theme),typeof FontFace<"u"&&(document!=null&&document.fonts)&&this.loadThemeFonts(),this.loadThemeStyles().then(()=>{this.cssLoaded=!0,this.dispatchEvent(new CustomEvent("ui-kit:ready",{bubbles:!0,composed:!0}))}))}loadThemeFonts(){var e;(e=$.fontsConfig[this.theme])==null||e.fonts.forEach(s=>{this.loadThemeFont(s)})}async loadThemeFont({weight:e,name:s,file:o}){if(!this.loadFonts)return Promise.resolve();const t=`${s}-${e}`;if(this.loadedFonts.has(t))return;const r=new FontFace(s,`url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.woff2') format('woff2'),
2
2
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.woff') format('woff'),
3
3
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.ttf') format('truetype'),
4
- url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.otf') format('opentype')`,{style:"normal",weight:e,display:"swap"});try{await r.load(),document.fonts.add(r),this.loadedFonts.add(t)}catch(n){console.error(`Error loading "${s}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,s)=>{const o="/2.0.0-canary.79",t=`https://ds-assets.cupra.com${o}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${t}"]`))e();else{const r=`ui-kit-theme-${o}`,n=document.getElementById(r),i=document.createElement("link");i.id=r,i.rel="stylesheet",i.href=t,i.onload=()=>e(),i.onerror=()=>s(new Error(`Failed to load theme CSS: ${t}`)),document.head.appendChild(i),n==null||n.remove()}}):Promise.resolve()}render(){return this.cssLoaded?l.html`<slot></slot>`:l.nothing}};d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-fonts"})],exports.DsThemeProvider.prototype,"loadFonts",2);d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-styles"})],exports.DsThemeProvider.prototype,"loadStyles",2);d([f.provide({context:T.themeContext}),h.property({type:String})],exports.DsThemeProvider.prototype,"theme",2);d([u.state()],exports.DsThemeProvider.prototype,"cssLoaded",2);d([u.state()],exports.DsThemeProvider.prototype,"loadedFonts",2);exports.DsThemeProvider=d([p.customUiKitElement("ds-theme-provider")],exports.DsThemeProvider);
4
+ url('https://ds-assets.cupra.com/fonts/${this.theme}/${o}.otf') format('opentype')`,{style:"normal",weight:e,display:"swap"});try{await r.load(),document.fonts.add(r),this.loadedFonts.add(t)}catch(n){console.error(`Error loading "${s}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,s)=>{const o="/2.0.0-canary.80",t=`https://ds-assets.cupra.com${o}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${t}"]`))e();else{const r=`ui-kit-theme-${o}`,n=document.getElementById(r),i=document.createElement("link");i.id=r,i.rel="stylesheet",i.href=t,i.onload=()=>e(),i.onerror=()=>s(new Error(`Failed to load theme CSS: ${t}`)),document.head.appendChild(i),n==null||n.remove()}}):Promise.resolve()}render(){return this.cssLoaded?l.html`<slot></slot>`:l.nothing}};d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-fonts"})],exports.DsThemeProvider.prototype,"loadFonts",2);d([h.property({type:Boolean,converter:m.booleanConverter,attribute:"load-styles"})],exports.DsThemeProvider.prototype,"loadStyles",2);d([f.provide({context:T.themeContext}),h.property({type:String})],exports.DsThemeProvider.prototype,"theme",2);d([u.state()],exports.DsThemeProvider.prototype,"cssLoaded",2);d([u.state()],exports.DsThemeProvider.prototype,"loadedFonts",2);exports.DsThemeProvider=d([p.customUiKitElement("ds-theme-provider")],exports.DsThemeProvider);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./components/ds-accordion/ds-accordion.cjs");require("./components/ds-avatar/ds-avatar.cjs");require("./components/ds-badge/ds-badge.cjs");require("./components/ds-basic-card/ds-basic-card.cjs");require("./components/ds-basic-card-image/ds-basic-card-image.cjs");require("./components/ds-basic-card-header/ds-basic-card-header.cjs");require("./components/ds-basic-card-section/ds-basic-card-section.cjs");require("./components/ds-breadcrumbs/ds-breadcrumbs.cjs");require("./components/ds-breadcrumbs-item/ds-breadcrumbs-item.cjs");require("./components/ds-bullets/ds-bullets.cjs");require("./components/ds-button/ds-button.cjs");require("./components/ds-carousel-indicator/ds-carousel-indicator.cjs");require("./components/ds-checkbox/ds-checkbox.cjs");require("./components/ds-checkbox-group/ds-checkbox-group.cjs");require("./components/ds-chip/ds-chip.cjs");require("./components/ds-chips/ds-chips.cjs");require("./components/ds-currency/ds-currency.cjs");require("./components/ds-dialog/ds-dialog.cjs");require("./components/ds-dialog-body/ds-dialog-body.cjs");require("./components/ds-dialog-footer/ds-dialog-footer.cjs");require("./components/ds-dialog-fullscreen/ds-dialog-fullscreen.cjs");require("./components/ds-dialog-header/ds-dialog-header.cjs");require("./components/ds-divider/ds-divider.cjs");require("./components/ds-drawer/ds-drawer.cjs");require("./components/ds-hyperlink/ds-hyperlink.cjs");require("./components/ds-icon/ds-icon.cjs");require("./components/ds-icon-button/ds-icon-button.cjs");require("./components/ds-input/ds-input.cjs");require("./components/ds-interactive-card/ds-interactive-card.cjs");require("./components/ds-link-button/ds-link-button.cjs");require("./components/ds-loader-bar/ds-loader-bar.cjs");require("./components/ds-loader-dots/ds-loader-dots.cjs");require("./components/ds-loader-logo/ds-loader-logo.cjs");require("./components/ds-loader-spinner/ds-loader-spinner.cjs");require("./components/ds-logo/ds-logo.cjs");require("./components/ds-main-title/ds-main-title.cjs");require("./components/ds-map-pin/ds-map-pin.cjs");require("./components/ds-modal/ds-modal.cjs");require("./components/ds-password-input/ds-password-input.cjs");require("./components/ds-picker-item/ds-picker-item.cjs");require("./components/ds-portal/ds-portal.cjs");require("./components/ds-progress-bar/ds-progress-bar.cjs");require("./components/ds-radio/ds-radio.cjs");require("./components/ds-radio-button/ds-radio-button.cjs");require("./components/ds-radio-button-group/ds-radio-button-group.cjs");require("./components/ds-radio-group/ds-radio-group.cjs");require("./components/ds-rating/ds-rating.cjs");require("./components/ds-search/ds-search.cjs");require("./components/ds-search-input/ds-search-input.cjs");require("./components/ds-secondary-navigation/ds-secondary-navigation.cjs");require("./components/ds-segmented-control/ds-segmented-control.cjs");require("./components/ds-select/ds-select.cjs");require("./components/ds-selection/ds-selection.cjs");require("./components/ds-skeleton/ds-skeleton.cjs");require("./components/ds-sidebar-navigation/ds-sidebar-navigation.cjs");require("./components/ds-slider/ds-slider.cjs");require("./components/ds-static-box/ds-static-box.cjs");require("./components/ds-stepper/ds-stepper.cjs");require("./components/ds-tabs/ds-tabs.cjs");require("./components/ds-tag/ds-tag.cjs");require("./components/ds-text/ds-text.cjs");require("./components/ds-text-input/ds-text-input.cjs");require("./components/ds-textarea/ds-textarea.cjs");require("./components/ds-theme-provider/ds-theme-provider.cjs");require("./components/ds-toast/ds-toast.cjs");require("./components/ds-toast-message/ds-toast-message.cjs");require("./components/ds-inline-alert/ds-inline-alert.cjs");require("./components/ds-toggle-button/ds-toggle-button.cjs");require("./components/ds-toggle-switch/ds-toggle-switch.cjs");require("./components/ds-tooltip/ds-tooltip.cjs");require("./components/ds-value-unit/ds-value-unit.cjs");require("./components/ds-media-control/ds-media-control.cjs");require("./components/ds-list-item/ds-list-item.cjs");require("./components/ds-list/ds-list.cjs");require("./components/ds-icon-button-group/ds-icon-button-group.cjs");require("./components/ds-navigation-controls/ds-navigation-controls.cjs");require("./components/ds-table/ds-table.cjs");require("./components/ds-table-row/ds-table-row.cjs");require("./components/ds-table-cell/ds-table-cell.cjs");const e=require("./components/ds-icon/iconNames.cjs");exports.iconNames=e.iconNames;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./components/ds-accordion/ds-accordion.cjs");require("./components/ds-avatar/ds-avatar.cjs");require("./components/ds-badge/ds-badge.cjs");require("./components/ds-basic-card/ds-basic-card.cjs");require("./components/ds-basic-card-image/ds-basic-card-image.cjs");require("./components/ds-basic-card-header/ds-basic-card-header.cjs");require("./components/ds-basic-card-section/ds-basic-card-section.cjs");require("./components/ds-breadcrumbs/ds-breadcrumbs.cjs");require("./components/ds-breadcrumbs-item/ds-breadcrumbs-item.cjs");require("./components/ds-bullets/ds-bullets.cjs");require("./components/ds-button/ds-button.cjs");require("./components/ds-calendar/ds-calendar.cjs");require("./components/ds-calendar-day/ds-calendar-day.cjs");require("./components/ds-carousel-indicator/ds-carousel-indicator.cjs");require("./components/ds-checkbox/ds-checkbox.cjs");require("./components/ds-checkbox-group/ds-checkbox-group.cjs");require("./components/ds-chip/ds-chip.cjs");require("./components/ds-chips/ds-chips.cjs");require("./components/ds-currency/ds-currency.cjs");require("./components/ds-dialog/ds-dialog.cjs");require("./components/ds-dialog-body/ds-dialog-body.cjs");require("./components/ds-dialog-footer/ds-dialog-footer.cjs");require("./components/ds-dialog-fullscreen/ds-dialog-fullscreen.cjs");require("./components/ds-dialog-header/ds-dialog-header.cjs");require("./components/ds-divider/ds-divider.cjs");require("./components/ds-drawer/ds-drawer.cjs");require("./components/ds-hyperlink/ds-hyperlink.cjs");require("./components/ds-icon/ds-icon.cjs");require("./components/ds-icon-button/ds-icon-button.cjs");require("./components/ds-input/ds-input.cjs");require("./components/ds-interactive-card/ds-interactive-card.cjs");require("./components/ds-link-button/ds-link-button.cjs");require("./components/ds-loader-bar/ds-loader-bar.cjs");require("./components/ds-loader-dots/ds-loader-dots.cjs");require("./components/ds-loader-logo/ds-loader-logo.cjs");require("./components/ds-loader-spinner/ds-loader-spinner.cjs");require("./components/ds-logo/ds-logo.cjs");require("./components/ds-main-title/ds-main-title.cjs");require("./components/ds-map-pin/ds-map-pin.cjs");require("./components/ds-modal/ds-modal.cjs");require("./components/ds-password-input/ds-password-input.cjs");require("./components/ds-picker-item/ds-picker-item.cjs");require("./components/ds-portal/ds-portal.cjs");require("./components/ds-progress-bar/ds-progress-bar.cjs");require("./components/ds-radio/ds-radio.cjs");require("./components/ds-radio-button/ds-radio-button.cjs");require("./components/ds-radio-button-group/ds-radio-button-group.cjs");require("./components/ds-radio-group/ds-radio-group.cjs");require("./components/ds-rating/ds-rating.cjs");require("./components/ds-search/ds-search.cjs");require("./components/ds-search-input/ds-search-input.cjs");require("./components/ds-secondary-navigation/ds-secondary-navigation.cjs");require("./components/ds-segmented-control/ds-segmented-control.cjs");require("./components/ds-select/ds-select.cjs");require("./components/ds-selection/ds-selection.cjs");require("./components/ds-skeleton/ds-skeleton.cjs");require("./components/ds-sidebar-navigation/ds-sidebar-navigation.cjs");require("./components/ds-slider/ds-slider.cjs");require("./components/ds-static-box/ds-static-box.cjs");require("./components/ds-stepper/ds-stepper.cjs");require("./components/ds-tabs/ds-tabs.cjs");require("./components/ds-tag/ds-tag.cjs");require("./components/ds-text/ds-text.cjs");require("./components/ds-text-input/ds-text-input.cjs");require("./components/ds-textarea/ds-textarea.cjs");require("./components/ds-theme-provider/ds-theme-provider.cjs");require("./components/ds-toast/ds-toast.cjs");require("./components/ds-toast-message/ds-toast-message.cjs");require("./components/ds-inline-alert/ds-inline-alert.cjs");require("./components/ds-toggle-button/ds-toggle-button.cjs");require("./components/ds-toggle-switch/ds-toggle-switch.cjs");require("./components/ds-tooltip/ds-tooltip.cjs");require("./components/ds-value-unit/ds-value-unit.cjs");require("./components/ds-media-control/ds-media-control.cjs");require("./components/ds-list-item/ds-list-item.cjs");require("./components/ds-list/ds-list.cjs");require("./components/ds-icon-button-group/ds-icon-button-group.cjs");require("./components/ds-navigation-controls/ds-navigation-controls.cjs");require("./components/ds-table/ds-table.cjs");require("./components/ds-table-row/ds-table-row.cjs");require("./components/ds-table-cell/ds-table-cell.cjs");const e=require("./components/ds-icon/iconNames.cjs");exports.iconNames=e.iconNames;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../core/theme.constants.cjs"),l=require("./PubSub.cjs");class u{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;const n=Object.keys(this.icons);this.icons={},n.forEach(s=>this.fetchIcon(s))},this.fetchIcon=async(e,n={})=>{const s=typeof sessionStorage<"u"?sessionStorage==null?void 0:sessionStorage.getItem(r.THEME_STORAGE_KEY):null;!this.theme&&s&&(this.theme=s);const t=this.icons[e];if(t)return await t;const i=this.loadIcon(e,n).catch(a=>{throw delete this.icons[e],a});return this.icons[e]=i,i},this.loadIcon=(e,{cache:n="force-cache",...s})=>!this.theme||typeof fetch>"u"?Promise.resolve('<svg class="ds-icon"></svg>'):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:n,...s}).then(t=>t.text()).catch(t=>{if((t==null?void 0:t.name)==="AbortError")throw t;return console.error(`Failed to fetch icon "${e}":`,t),""}),l.pubSub.subscribe("theme",this.handleChangeTheme)}}const o=Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.79"),h=globalThis;let c=h[o];c||(c=new u,Object.defineProperty(h,o,{value:c,writable:!1,configurable:!1,enumerable:!1}));const f=c;exports.iconsManager=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../core/theme.constants.cjs"),l=require("./PubSub.cjs");class u{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;const n=Object.keys(this.icons);this.icons={},n.forEach(s=>this.fetchIcon(s))},this.fetchIcon=async(e,n={})=>{const s=typeof sessionStorage<"u"?sessionStorage==null?void 0:sessionStorage.getItem(r.THEME_STORAGE_KEY):null;!this.theme&&s&&(this.theme=s);const t=this.icons[e];if(t)return await t;const i=this.loadIcon(e,n).catch(a=>{throw delete this.icons[e],a});return this.icons[e]=i,i},this.loadIcon=(e,{cache:n="force-cache",...s})=>!this.theme||typeof fetch>"u"?Promise.resolve('<svg class="ds-icon"></svg>'):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:n,...s}).then(t=>t.text()).catch(t=>{if((t==null?void 0:t.name)==="AbortError")throw t;return console.error(`Failed to fetch icon "${e}":`,t),""}),l.pubSub.subscribe("theme",this.handleChangeTheme)}}const o=Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.80"),h=globalThis;let c=h[o];c||(c=new u,Object.defineProperty(h,o,{value:c,writable:!1,configurable:!1,enumerable:!1}));const f=c;exports.iconsManager=f;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class u{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(s,r){return this.subscribers[s]||(this.subscribers[s]=[]),this.subscribers[s].push(r),this.lastPublishedData[s]}unsubscribe(s,r){this.subscribers[s]&&(this.subscribers[s]=this.subscribers[s].filter(i=>i!==r))}publish(s,r){this.lastPublishedData[s]=r,this.subscribers[s]&&this.subscribers[s].forEach(i=>{try{i(r)}catch(c){console.error(`Error in subscriber for event "${s}":`,c)}})}}const t=Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.79"),e=globalThis;let b=e[t];b||(b=new u,Object.defineProperty(e,t,{value:b,writable:!1,configurable:!1,enumerable:!1}));const l=b;exports.PubSub=u;exports.pubSub=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class u{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(s,r){return this.subscribers[s]||(this.subscribers[s]=[]),this.subscribers[s].push(r),this.lastPublishedData[s]}unsubscribe(s,r){this.subscribers[s]&&(this.subscribers[s]=this.subscribers[s].filter(i=>i!==r))}publish(s,r){this.lastPublishedData[s]=r,this.subscribers[s]&&this.subscribers[s].forEach(i=>{try{i(r)}catch(c){console.error(`Error in subscriber for event "${s}":`,c)}})}}const t=Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.80"),e=globalThis;let b=e[t];b||(b=new u,Object.defineProperty(e,t,{value:b,writable:!1,configurable:!1,enumerable:!1}));const l=b;exports.PubSub=u;exports.pubSub=l;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../concurrencyLimit.cjs"),a=o.concurrencyLimit(20);class s{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:e,theme:t})=>{if(!t||!e)return;const c=`https://ds-assets.cupra.com/2.0.0-canary.79/styles/${t}/components/${e}.css`,r=this.getCachedStyleSheetPromise({url:c});if(r)return r;const i=a(()=>this.fetchStyle({url:c})).then(n=>(n||this.stylePromises.delete(c),n));return this.stylePromises.set(c,i),this.stylePromises.get(c)}}async fetchStyle({url:e}){try{if(typeof fetch>"u")return;const t=await fetch(e,{cache:"force-cache"});if(t.ok)return t.text()}catch(t){console.error(`Failed to fetch Style Sheet "${e}":`,t)}}getCachedStyleSheetPromise({url:e}){return this.stylePromises.get(e)}static getInstance(){return s.instance||(s.instance=new s),s.instance}}const h=s.getInstance();exports.stylesRegistry=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../concurrencyLimit.cjs"),a=o.concurrencyLimit(20);class s{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:e,theme:t})=>{if(!t||!e)return;const c=`https://ds-assets.cupra.com/2.0.0-canary.80/styles/${t}/components/${e}.css`,r=this.getCachedStyleSheetPromise({url:c});if(r)return r;const i=a(()=>this.fetchStyle({url:c})).then(n=>(n||this.stylePromises.delete(c),n));return this.stylePromises.set(c,i),this.stylePromises.get(c)}}async fetchStyle({url:e}){try{if(typeof fetch>"u")return;const t=await fetch(e,{cache:"force-cache"});if(t.ok)return t.text()}catch(t){console.error(`Failed to fetch Style Sheet "${e}":`,t)}}getCachedStyleSheetPromise({url:e}){return this.stylePromises.get(e)}static getInstance(){return s.instance||(s.instance=new s),s.instance}}const h=s.getInstance();exports.stylesRegistry=h;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs");function i(r,...t){const s=String.raw({raw:r},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-79"),n=e.unsafeCSS(s);return e.css`${n}`}exports.cssWithTokens=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const e=require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs");function i(r,...t){const s=String.raw({raw:r},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-80"),n=e.unsafeCSS(s);return e.css`${n}`}exports.cssWithTokens=i;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const i=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs");function a(e,...t){const r=String.raw({raw:e},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-79"),n=o.unsafeHTML(r);return i.html`${n}`}exports.htmlWithTokens=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.cjs");const i=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs");require("../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs");const o=require("../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs");function a(e,...t){const r=String.raw({raw:e},...t).replace(/(--private-[\w-]+)(?=\s*[):,])/g,"$1-v2-0-0-canary-80"),n=o.unsafeHTML(r);return i.html`${n}`}exports.htmlWithTokens=a;
@@ -0,0 +1,276 @@
1
+ import { UiKitElement as b } from "../base/UiKitElement.js";
2
+ import "../ds-calendar-day/ds-calendar-day.js";
3
+ import { customUiKitElement as _ } from "../../decorators/customUiKitElement.js";
4
+ import "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
5
+ import { html as y } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
6
+ import "../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
7
+ import { property as h } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
8
+ import { state as m } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js";
9
+ import { classMap as M } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
10
+ import { commonStyles as k } from "./styles/common.styles.js";
11
+ var S = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, l = (t, e, s, i) => {
12
+ for (var r = i > 1 ? void 0 : i ? $(e, s) : e, a = t.length - 1, o; a >= 0; a--)
13
+ (o = t[a]) && (r = (i ? o(e, s, r) : o(r)) || r);
14
+ return i && r && S(e, s, r), r;
15
+ };
16
+ let n = class extends b {
17
+ constructor() {
18
+ super(...arguments), this.variant = "plane", this.locale = "en-US", this.firstDayOfWeek = 1, this.disabledDates = [], this.disabledWeekdays = [], this._viewDate = /* @__PURE__ */ new Date(), this._value = null, this._initialValueApplied = !1;
19
+ }
20
+ get selectedDate() {
21
+ if (this.value) {
22
+ const t = this.parseDate(this.value);
23
+ if (t) return t;
24
+ }
25
+ return this._value;
26
+ }
27
+ get viewDate() {
28
+ return this._viewDate;
29
+ }
30
+ connectedCallback() {
31
+ super.connectedCallback(), this.applyInitialValue(), this.initializeViewDate();
32
+ }
33
+ updated(t) {
34
+ super.updated(t), (t.has("value") || t.has("viewDateAttr")) && this.initializeViewDate();
35
+ }
36
+ applyInitialValue() {
37
+ if (!this._initialValueApplied && (this._initialValueApplied = !0, this.initialValue)) {
38
+ const t = this.parseDate(this.initialValue);
39
+ t && (this._value = t);
40
+ }
41
+ }
42
+ initializeViewDate() {
43
+ if (this.viewDateAttr) {
44
+ const t = this.parseDate(this.viewDateAttr);
45
+ t && (this._viewDate = t);
46
+ } else if (this.value) {
47
+ const t = this.parseDate(this.value);
48
+ t && (this._viewDate = new Date(t));
49
+ } else this._value ? this._viewDate = new Date(this._value) : this._viewDate = /* @__PURE__ */ new Date();
50
+ }
51
+ parseDate(t) {
52
+ const e = t.split("-");
53
+ if (e.length >= 2) {
54
+ const s = Number.parseInt(e[0], 10), i = Number.parseInt(e[1], 10) - 1, r = e.length >= 3 ? Number.parseInt(e[2], 10) : 1, a = new Date(s, i, r);
55
+ if (!Number.isNaN(a.getTime()))
56
+ return a;
57
+ }
58
+ return null;
59
+ }
60
+ get calendarClasses() {
61
+ return {
62
+ calendar: !0,
63
+ [this.variant]: !0
64
+ };
65
+ }
66
+ get weekdayNames() {
67
+ const t = new Intl.DateTimeFormat(this.locale, { weekday: "short" }), e = [], s = new Date(2024, 0, 1);
68
+ for (; s.getDay() !== this.firstDayOfWeek; )
69
+ s.setDate(s.getDate() + 1);
70
+ for (let i = 0; i < 7; i++) {
71
+ const r = new Date(s);
72
+ r.setDate(s.getDate() + i);
73
+ const a = t.format(r);
74
+ e.push(a.slice(0, 2));
75
+ }
76
+ return e;
77
+ }
78
+ get monthYearLabel() {
79
+ return new Intl.DateTimeFormat(this.locale, {
80
+ month: "long",
81
+ year: "numeric"
82
+ }).format(this._viewDate);
83
+ }
84
+ getDaysInMonth(t, e) {
85
+ return new Date(t, e + 1, 0).getDate();
86
+ }
87
+ getFirstDayOfMonth(t, e) {
88
+ return new Date(t, e, 1).getDay();
89
+ }
90
+ get calendarDays() {
91
+ const t = this._viewDate.getFullYear(), e = this._viewDate.getMonth(), s = /* @__PURE__ */ new Date();
92
+ s.setHours(0, 0, 0, 0);
93
+ const i = this.getDaysInMonth(t, e);
94
+ let a = this.getFirstDayOfMonth(t, e) - this.firstDayOfWeek;
95
+ a < 0 && (a += 7);
96
+ const o = [], c = e === 0 ? 11 : e - 1, u = e === 0 ? t - 1 : t, p = this.getDaysInMonth(u, c);
97
+ for (let d = a - 1; d >= 0; d--) {
98
+ const D = p - d, w = new Date(u, c, D);
99
+ o.push(this.createCalendarDay(w, !1, s));
100
+ }
101
+ for (let d = 1; d <= i; d++) {
102
+ const D = new Date(t, e, d);
103
+ o.push(this.createCalendarDay(D, !0, s));
104
+ }
105
+ const f = 42 - o.length, v = e === 11 ? 0 : e + 1, g = e === 11 ? t + 1 : t;
106
+ for (let d = 1; d <= f; d++) {
107
+ const D = new Date(g, v, d);
108
+ o.push(this.createCalendarDay(D, !1, s));
109
+ }
110
+ return o;
111
+ }
112
+ createCalendarDay(t, e, s) {
113
+ t.setHours(0, 0, 0, 0);
114
+ const i = t.getDate(), r = t.getMonth(), a = t.getFullYear(), o = i === s.getDate() && r === s.getMonth() && a === s.getFullYear(), c = this.selectedDate, u = c ? i === c.getDate() && r === c.getMonth() && a === c.getFullYear() : !1, p = !e || this.isDateDisabled(t);
115
+ return {
116
+ day: i,
117
+ month: r,
118
+ year: a,
119
+ date: t,
120
+ isCurrentMonth: e,
121
+ isToday: o,
122
+ isSelected: u,
123
+ isDisabled: p
124
+ };
125
+ }
126
+ isDateDisabled(t) {
127
+ if (this.minDate) {
128
+ const e = new Date(this.minDate);
129
+ if (e.setHours(0, 0, 0, 0), t < e) return !0;
130
+ }
131
+ if (this.maxDate) {
132
+ const e = new Date(this.maxDate);
133
+ if (e.setHours(0, 0, 0, 0), t > e) return !0;
134
+ }
135
+ if (this.disabledWeekdays && this.disabledWeekdays.length > 0) {
136
+ const e = t.getDay();
137
+ if (this.disabledWeekdays.includes(e)) return !0;
138
+ }
139
+ if (this.disabledDates && this.disabledDates.length > 0) {
140
+ const e = t.toISOString().split("T")[0];
141
+ if (this.disabledDates.includes(e)) return !0;
142
+ }
143
+ return !1;
144
+ }
145
+ handlePrevMonth() {
146
+ const t = new Date(this._viewDate);
147
+ t.setMonth(t.getMonth() - 1), this._viewDate = t;
148
+ }
149
+ handleNextMonth() {
150
+ const t = new Date(this._viewDate);
151
+ t.setMonth(t.getMonth() + 1), this._viewDate = t;
152
+ }
153
+ handleDayChange(t) {
154
+ var f;
155
+ t.stopPropagation();
156
+ const e = t.target;
157
+ if (!e || !e.tagName.toLowerCase().startsWith("ds-calendar-day")) return;
158
+ const i = Array.from(((f = this.shadowRoot) == null ? void 0 : f.querySelectorAll("ds-calendar-day")) || []).indexOf(e);
159
+ if (i === -1) return;
160
+ const a = this.calendarDays[i];
161
+ if (!a || a.isDisabled) return;
162
+ this._value = a.date, this._viewDate = new Date(a.date);
163
+ const o = a.date.getFullYear(), c = String(a.date.getMonth() + 1).padStart(2, "0"), u = String(a.date.getDate()).padStart(2, "0"), p = `${o}-${c}-${u}`;
164
+ this.dispatchEvent(
165
+ new CustomEvent("ds-calendar-change", {
166
+ bubbles: !0,
167
+ composed: !0,
168
+ detail: {
169
+ value: p,
170
+ date: a.date
171
+ }
172
+ })
173
+ );
174
+ }
175
+ get prevButtonTemplate() {
176
+ return this.componentFactory.createIconButton({
177
+ class: "nav-button",
178
+ "icon-name": "arrow-left",
179
+ "data-aria-label": "Previous month",
180
+ "@click": this.handlePrevMonth,
181
+ variant: "naked",
182
+ size: "medium",
183
+ color: "var(--ds-icon-button-icon-color-standard-default, #fafafa)"
184
+ });
185
+ }
186
+ get nextButtonTemplate() {
187
+ return this.componentFactory.createIconButton({
188
+ class: "nav-button",
189
+ "icon-name": "arrow-right",
190
+ "data-aria-label": "Next month",
191
+ "@click": this.handleNextMonth,
192
+ variant: "naked",
193
+ size: "medium",
194
+ color: "var(--ds-icon-button-icon-color-standard-default, #fafafa)"
195
+ });
196
+ }
197
+ get weekdaysTemplate() {
198
+ return y`
199
+ <div class="weekdays">
200
+ ${this.weekdayNames.map((t) => y`<div class="weekday">${t}</div>`)}
201
+ </div>
202
+ `;
203
+ }
204
+ get daysTemplate() {
205
+ return y`
206
+ <div class="days-grid" @ds-calendar-day-change=${this.handleDayChange}>
207
+ ${this.calendarDays.map(
208
+ (t) => y`
209
+ <ds-calendar-day
210
+ day=${t.day}
211
+ ?disabled=${t.isDisabled}
212
+ ?selected=${t.isSelected}
213
+ ?today=${t.isToday}
214
+ ?outside-month=${!t.isCurrentMonth}
215
+ ></ds-calendar-day>
216
+ `
217
+ )}
218
+ </div>
219
+ `;
220
+ }
221
+ render() {
222
+ return y`
223
+ <div class=${M(this.calendarClasses)} role="application" aria-label="Calendar">
224
+ <div class="header">
225
+ ${this.prevButtonTemplate}
226
+ <div class="month-year" aria-live="polite">${this.monthYearLabel}</div>
227
+ ${this.nextButtonTemplate}
228
+ </div>
229
+ ${this.weekdaysTemplate} ${this.daysTemplate}
230
+ </div>
231
+ `;
232
+ }
233
+ };
234
+ n.styles = [k];
235
+ l([
236
+ h({ type: String, reflect: !0 })
237
+ ], n.prototype, "value", 2);
238
+ l([
239
+ h({ type: String, reflect: !0 })
240
+ ], n.prototype, "variant", 2);
241
+ l([
242
+ h({ type: String, reflect: !0 })
243
+ ], n.prototype, "locale", 2);
244
+ l([
245
+ h({ type: Number, reflect: !0, attribute: "first-day-of-week" })
246
+ ], n.prototype, "firstDayOfWeek", 2);
247
+ l([
248
+ h({ type: String, reflect: !0, attribute: "min-date" })
249
+ ], n.prototype, "minDate", 2);
250
+ l([
251
+ h({ type: String, reflect: !0, attribute: "max-date" })
252
+ ], n.prototype, "maxDate", 2);
253
+ l([
254
+ h({ type: Array, attribute: "disabled-dates" })
255
+ ], n.prototype, "disabledDates", 2);
256
+ l([
257
+ h({ type: Array, attribute: "disabled-weekdays" })
258
+ ], n.prototype, "disabledWeekdays", 2);
259
+ l([
260
+ h({ type: String, reflect: !0, attribute: "view-date" })
261
+ ], n.prototype, "viewDateAttr", 2);
262
+ l([
263
+ h({ type: String, attribute: "initial-value" })
264
+ ], n.prototype, "initialValue", 2);
265
+ l([
266
+ m()
267
+ ], n.prototype, "_viewDate", 2);
268
+ l([
269
+ m()
270
+ ], n.prototype, "_value", 2);
271
+ n = l([
272
+ _("ds-calendar")
273
+ ], n);
274
+ export {
275
+ n as DsCalendar
276
+ };
@@ -0,0 +1,45 @@
1
+ import "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
2
+ import "../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
3
+ import "../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
4
+ import { css as e } from "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js";
5
+ const n = e`
6
+ :host {
7
+ display: inline-block;
8
+ }
9
+
10
+ .calendar {
11
+ display: flex;
12
+ flex-direction: column;
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .header {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: space-between;
20
+ }
21
+
22
+ .month-year {
23
+ flex: 1;
24
+ text-align: center;
25
+ }
26
+
27
+ .weekdays {
28
+ display: grid;
29
+ grid-template-columns: repeat(7, 1fr);
30
+ }
31
+
32
+ .weekday {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ }
37
+
38
+ .days-grid {
39
+ display: grid;
40
+ grid-template-columns: repeat(7, 1fr);
41
+ }
42
+ `;
43
+ export {
44
+ n as commonStyles
45
+ };
@@ -0,0 +1,84 @@
1
+ import { UiKitElement as c } from "../base/UiKitElement.js";
2
+ import { customUiKitElement as h } from "../../decorators/customUiKitElement.js";
3
+ import { booleanConverter as l } from "../../utils/booleanConverter.js";
4
+ import "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
5
+ import { html as y } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
6
+ import "../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
7
+ import { property as o } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
8
+ import { classMap as u } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
9
+ import { commonStyles as m } from "./styles/common.styles.js";
10
+ var f = Object.defineProperty, b = Object.getOwnPropertyDescriptor, s = (e, a, d, i) => {
11
+ for (var r = i > 1 ? void 0 : i ? b(a, d) : a, n = e.length - 1, p; n >= 0; n--)
12
+ (p = e[n]) && (r = (i ? p(a, d, r) : p(r)) || r);
13
+ return i && r && f(a, d, r), r;
14
+ };
15
+ let t = class extends c {
16
+ constructor() {
17
+ super(...arguments), this.disabled = !1, this.selected = !1, this.today = !1, this.outsideMonth = !1;
18
+ }
19
+ get classes() {
20
+ return {
21
+ day: !0,
22
+ disabled: this.disabled,
23
+ selected: this.selected,
24
+ today: this.today,
25
+ "outside-month": this.outsideMonth
26
+ };
27
+ }
28
+ handleClick(e) {
29
+ if (this.disabled) {
30
+ e.preventDefault(), e.stopPropagation();
31
+ return;
32
+ }
33
+ this.dispatchEvent(
34
+ new CustomEvent("ds-calendar-day-change", {
35
+ bubbles: !0,
36
+ composed: !0,
37
+ detail: {
38
+ day: this.day
39
+ }
40
+ })
41
+ );
42
+ }
43
+ handleKeyDown(e) {
44
+ this.disabled || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), this.handleClick(e));
45
+ }
46
+ render() {
47
+ return y`
48
+ <button
49
+ class=${u(this.classes)}
50
+ ?disabled=${this.disabled}
51
+ aria-label=${this.day ? `Day ${this.day}` : ""}
52
+ aria-selected=${this.selected}
53
+ aria-current=${this.today ? "date" : "false"}
54
+ tabindex=${this.disabled ? -1 : 0}
55
+ @click=${this.handleClick}
56
+ @keydown=${this.handleKeyDown}
57
+ >
58
+ ${this.day}
59
+ </button>
60
+ `;
61
+ }
62
+ };
63
+ t.styles = [m];
64
+ s([
65
+ o({ type: Number, reflect: !0 })
66
+ ], t.prototype, "day", 2);
67
+ s([
68
+ o({ type: Boolean, converter: l, reflect: !0 })
69
+ ], t.prototype, "disabled", 2);
70
+ s([
71
+ o({ type: Boolean, converter: l, reflect: !0 })
72
+ ], t.prototype, "selected", 2);
73
+ s([
74
+ o({ type: Boolean, converter: l, reflect: !0 })
75
+ ], t.prototype, "today", 2);
76
+ s([
77
+ o({ type: Boolean, converter: l, reflect: !0, attribute: "outside-month" })
78
+ ], t.prototype, "outsideMonth", 2);
79
+ t = s([
80
+ h("ds-calendar-day")
81
+ ], t);
82
+ export {
83
+ t as DsCalendarDay
84
+ };
@@ -0,0 +1,30 @@
1
+ import "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js";
2
+ import "../../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
3
+ import "../../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js";
4
+ import { css as e } from "../../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js";
5
+ const t = e`
6
+ :host {
7
+ display: inline-flex;
8
+ }
9
+
10
+ .day {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ box-sizing: border-box;
15
+ cursor: pointer;
16
+ user-select: none;
17
+ border: none;
18
+ background: none;
19
+ padding: 0;
20
+ margin: 0;
21
+ }
22
+
23
+ .day.disabled {
24
+ cursor: default;
25
+ pointer-events: none;
26
+ }
27
+ `;
28
+ export {
29
+ t as commonStyles
30
+ };