@cupra/ui-kit 2.0.0-canary.105 → 2.0.0-canary.107

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 (37) hide show
  1. package/dist/cjs/components/ds-static-box/ds-static-box.cjs +9 -7
  2. package/dist/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
  3. package/dist/cjs/utils/IconsManager.cjs +1 -1
  4. package/dist/cjs/utils/PubSub.cjs +1 -1
  5. package/dist/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
  6. package/dist/cjs/utils/cssWithTokens.cjs +1 -1
  7. package/dist/cjs/utils/htmlWithTokens.cjs +1 -1
  8. package/dist/cjs/utils/observeScroll/observeScroll.cjs +1 -0
  9. package/dist/esm/components/ds-static-box/ds-static-box.js +45 -22
  10. package/dist/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
  11. package/dist/esm/utils/IconsManager.js +1 -1
  12. package/dist/esm/utils/PubSub.js +1 -1
  13. package/dist/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
  14. package/dist/esm/utils/cssWithTokens.js +1 -1
  15. package/dist/esm/utils/htmlWithTokens.js +1 -1
  16. package/dist/esm/utils/observeScroll/observeScroll.js +18 -0
  17. package/dist/types/components/ds-static-box/ds-static-box.d.ts +8 -0
  18. package/dist/types/utils/observeScroll/observeScroll.d.ts +7 -0
  19. package/dist-react/cjs/components/ds-static-box/ds-static-box.cjs +9 -7
  20. package/dist-react/cjs/components/ds-theme-provider/ds-theme-provider.cjs +1 -1
  21. package/dist-react/cjs/utils/IconsManager.cjs +1 -1
  22. package/dist-react/cjs/utils/PubSub.cjs +1 -1
  23. package/dist-react/cjs/utils/StylesRegistry/StylesRegistry.cjs +1 -1
  24. package/dist-react/cjs/utils/cssWithTokens.cjs +1 -1
  25. package/dist-react/cjs/utils/htmlWithTokens.cjs +1 -1
  26. package/dist-react/cjs/utils/observeScroll/observeScroll.cjs +1 -0
  27. package/dist-react/esm/components/ds-static-box/ds-static-box.js +45 -22
  28. package/dist-react/esm/components/ds-theme-provider/ds-theme-provider.js +1 -1
  29. package/dist-react/esm/utils/IconsManager.js +1 -1
  30. package/dist-react/esm/utils/PubSub.js +1 -1
  31. package/dist-react/esm/utils/StylesRegistry/StylesRegistry.js +1 -1
  32. package/dist-react/esm/utils/cssWithTokens.js +1 -1
  33. package/dist-react/esm/utils/htmlWithTokens.js +1 -1
  34. package/dist-react/esm/utils/observeScroll/observeScroll.js +18 -0
  35. package/dist-react/types/components/ds-static-box/ds-static-box.d.ts +8 -0
  36. package/dist-react/types/utils/observeScroll/observeScroll.d.ts +7 -0
  37. package/package.json +1 -1
@@ -1,26 +1,28 @@
1
- const e=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),n=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const r=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),i=require(`../base/UiKitElement.cjs`),a=require(`../../decorators/customUiKitElement.cjs`),o=require(`../../utils/htmlWithTokens.cjs`),s=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.cjs`);const c=require(`../../mixins/ViewportMixin.cjs`),l=require(`../../utils/objectConverter.cjs`),u=require(`./styles/common.styles.cjs`);var d=class extends c.ViewportMixin(i.UiKitElement){constructor(...e){super(...e),this.size=`medium`}static{this.styles=[u.commonStyles]}get classes(){let e=typeof this.size==`string`?this.size:this.size[this.viewport];return{container:!0,[e]:!!e}}get styleTokens(){return o.htmlWithTokens`
1
+ const e=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),n=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs`),r=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query.cjs`),i=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const a=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),o=require(`../base/UiKitElement.cjs`),s=require(`../../decorators/customUiKitElement.cjs`),c=require(`../../utils/htmlWithTokens.cjs`),l=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.cjs`);const u=require(`../../mixins/ViewportMixin.cjs`),d=require(`../../utils/objectConverter.cjs`),f=require(`../../utils/observeScroll/observeScroll.cjs`),p=require(`./styles/common.styles.cjs`);var m=class extends u.ViewportMixin(o.UiKitElement){constructor(...e){super(...e),this.size=`medium`,this.showTopShadow=!1,this.showBottomShadow=!1}static{this.styles=[p.commonStyles]}get classes(){let e=typeof this.size==`string`?this.size:this.size[this.viewport];return{container:!0,[e]:!!e}}get mainWrapperClasses(){return{"main-wrapper":!0,"shadow-top":this.showTopShadow,"shadow-bottom":this.showBottomShadow}}get styleTokens(){return c.htmlWithTokens`
2
2
  <style>
3
3
  .header {
4
4
  display: ${this.headerItems?.length>0?`block`:`none`};
5
5
  }
6
-
6
+
7
7
  .footer {
8
8
  display: ${this.footerItems?.length>0?`block`:`none`};
9
9
  }
10
10
  </style>
11
- `}render(){return e.x`
11
+ `}onSlotChange(){this.cleanupScrollObserver&&this.cleanupScrollObserver(),this.cleanupScrollObserver=f.observeScroll(this.mainElement,({top:e,bottom:t})=>{this.showTopShadow=e,this.showBottomShadow=t})}firstUpdated(){this.onSlotChange()}disconnectedCallback(){super.disconnectedCallback(),this.cleanupScrollObserver?.()}render(){return e.x`
12
12
  ${this.styleTokens}
13
- <div part="container" data-testid="ds-static-box-container" class=${s.e(this.classes)}>
13
+ <div part="container" data-testid="ds-static-box-container" class=${l.e(this.classes)}>
14
14
  <div class="body">
15
15
  <div part="header" class="header">
16
16
  <slot name="header"></slot>
17
17
  </div>
18
- <div part="main" class="main ds-scroll" tabindex="0">
19
- <slot name="main"></slot>
18
+ <div class=${l.e(this.mainWrapperClasses)}>
19
+ <div part="main" class="main ds-scroll" tabindex="0">
20
+ <slot name="main" @slotchange=${this.onSlotChange}></slot>
21
+ </div>
20
22
  </div>
21
23
  </div>
22
24
  <div part="footer" class="footer">
23
25
  <slot name="footer"></slot>
24
26
  </div>
25
27
  </div>
26
- `}};r.__decorate([t.n({type:String,converter:l.objectConverter})],d.prototype,`size`,void 0),r.__decorate([n.n({slot:`header`,flatten:!0})],d.prototype,`headerItems`,void 0),r.__decorate([n.n({slot:`footer`,flatten:!0})],d.prototype,`footerItems`,void 0),d=r.__decorate([a.customUiKitElement(`ds-static-box`)],d);
28
+ `}};a.__decorate([t.n({type:String,converter:d.objectConverter})],m.prototype,`size`,void 0),a.__decorate([i.n({slot:`header`,flatten:!0})],m.prototype,`headerItems`,void 0),a.__decorate([i.n({slot:`footer`,flatten:!0})],m.prototype,`footerItems`,void 0),a.__decorate([r.e(`.main`)],m.prototype,`mainElement`,void 0),a.__decorate([n.r()],m.prototype,`showTopShadow`,void 0),a.__decorate([n.r()],m.prototype,`showBottomShadow`,void 0),m=a.__decorate([s.customUiKitElement(`ds-static-box`)],m);
@@ -1,4 +1,4 @@
1
1
  const e=require(`../../node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/lib/decorators/provide.cjs`),t=require(`./themeContext.cjs`),n=require(`../../core/theme.constants.cjs`),r=require(`../../utils/PubSub.cjs`),i=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`),a=require(`../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const o=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),s=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const c=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),l=require(`../../decorators/customUiKitElement.cjs`),u=require(`../../utils/booleanConverter.cjs`),d=require(`../../styles/source/shared/fonts-config.cjs`);var f=class extends a.i{constructor(...e){super(...e),this.loadFonts=!0,this.loadStyles=!0,this.cssLoaded=!1,this.loadedFonts=new Set}updated(e){super.updated(e),e.has(`theme`)&&(r.pubSub.publish(`theme`,this.theme),sessionStorage?.setItem(n.THEME_STORAGE_KEY,this.theme),typeof FontFace<`u`&&document?.fonts&&this.loadThemeFonts(),this.loadThemeStyles().then(()=>{this.cssLoaded=!0,this.dispatchEvent(new CustomEvent(`ui-kit:ready`,{bubbles:!0,composed:!0}))}))}loadThemeFonts(){d.fontsConfig[this.theme]?.fonts.forEach(e=>{this.loadThemeFont(e)})}async loadThemeFont({weight:e,name:t,file:n}){if(!this.loadFonts)return Promise.resolve();let r=`${t}-${e}`;if(this.loadedFonts.has(r))return;let i=new FontFace(t,`url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.woff2') format('woff2'),
2
2
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.woff') format('woff'),
3
3
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.ttf') format('truetype'),
4
- url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.otf') format('opentype')`,{style:`normal`,weight:e,display:`swap`});try{await i.load(),document.fonts.add(i),this.loadedFonts.add(r)}catch(n){console.error(`Error loading "${t}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,t)=>{let n=`/2.0.0-canary.105`,r=`https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${r}"]`))e();else{let i=`ui-kit-theme-${n}`,a=document.getElementById(i),o=document.createElement(`link`);o.id=i,o.rel=`stylesheet`,o.href=r,o.onload=()=>e(),o.onerror=()=>t(Error(`Failed to load theme CSS: ${r}`)),document.head.appendChild(o),a?.remove()}}):Promise.resolve()}render(){return this.cssLoaded?i.x`<slot></slot>`:i.E}};c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-fonts`})],f.prototype,`loadFonts`,void 0),c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-styles`})],f.prototype,`loadStyles`,void 0),c.__decorate([e.e({context:t.themeContext}),o.n({type:String})],f.prototype,`theme`,void 0),c.__decorate([s.r()],f.prototype,`cssLoaded`,void 0),c.__decorate([s.r()],f.prototype,`loadedFonts`,void 0),f=c.__decorate([l.customUiKitElement(`ds-theme-provider`)],f);
4
+ url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.otf') format('opentype')`,{style:`normal`,weight:e,display:`swap`});try{await i.load(),document.fonts.add(i),this.loadedFonts.add(r)}catch(n){console.error(`Error loading "${t}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,t)=>{let n=`/2.0.0-canary.107`,r=`https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${r}"]`))e();else{let i=`ui-kit-theme-${n}`,a=document.getElementById(i),o=document.createElement(`link`);o.id=i,o.rel=`stylesheet`,o.href=r,o.onload=()=>e(),o.onerror=()=>t(Error(`Failed to load theme CSS: ${r}`)),document.head.appendChild(o),a?.remove()}}):Promise.resolve()}render(){return this.cssLoaded?i.x`<slot></slot>`:i.E}};c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-fonts`})],f.prototype,`loadFonts`,void 0),c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-styles`})],f.prototype,`loadStyles`,void 0),c.__decorate([e.e({context:t.themeContext}),o.n({type:String})],f.prototype,`theme`,void 0),c.__decorate([s.r()],f.prototype,`cssLoaded`,void 0),c.__decorate([s.r()],f.prototype,`loadedFonts`,void 0),f=c.__decorate([l.customUiKitElement(`ds-theme-provider`)],f);
@@ -1 +1 @@
1
- const e=require(`../core/theme.constants.cjs`),t=require(`./PubSub.cjs`);var n=class{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;let t=Object.keys(this.icons);this.icons={},t.forEach(e=>this.fetchIcon(e))},this.fetchIcon=async(t,n={})=>{let r=typeof sessionStorage<`u`?sessionStorage?.getItem(e.THEME_STORAGE_KEY):null;!this.theme&&r&&(this.theme=r);let i=this.icons[t];if(i)return await i;let a=this.loadIcon(t,n).catch(e=>{throw delete this.icons[t],e});return this.icons[t]=a,a},this.loadIcon=(e,{cache:t=`force-cache`,...n})=>!this.theme||typeof fetch>`u`?Promise.resolve(`<svg class="ds-icon"></svg>`):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:t,...n}).then(e=>e.text()).catch(t=>{if(t?.name===`AbortError`)throw t;return console.error(`Failed to fetch icon "${e}":`,t),``}),t.pubSub.subscribe(`theme`,this.handleChangeTheme)}},r=Symbol.for(`@cupra/ui-kit/icons-manager/2.0.0-canary.105`),i=globalThis,a=i[r];a||(a=new n,Object.defineProperty(i,r,{value:a,writable:!1,configurable:!1,enumerable:!1}));var o=a;exports.iconsManager=o;
1
+ const e=require(`../core/theme.constants.cjs`),t=require(`./PubSub.cjs`);var n=class{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;let t=Object.keys(this.icons);this.icons={},t.forEach(e=>this.fetchIcon(e))},this.fetchIcon=async(t,n={})=>{let r=typeof sessionStorage<`u`?sessionStorage?.getItem(e.THEME_STORAGE_KEY):null;!this.theme&&r&&(this.theme=r);let i=this.icons[t];if(i)return await i;let a=this.loadIcon(t,n).catch(e=>{throw delete this.icons[t],e});return this.icons[t]=a,a},this.loadIcon=(e,{cache:t=`force-cache`,...n})=>!this.theme||typeof fetch>`u`?Promise.resolve(`<svg class="ds-icon"></svg>`):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:t,...n}).then(e=>e.text()).catch(t=>{if(t?.name===`AbortError`)throw t;return console.error(`Failed to fetch icon "${e}":`,t),``}),t.pubSub.subscribe(`theme`,this.handleChangeTheme)}},r=Symbol.for(`@cupra/ui-kit/icons-manager/2.0.0-canary.107`),i=globalThis,a=i[r];a||(a=new n,Object.defineProperty(i,r,{value:a,writable:!1,configurable:!1,enumerable:!1}));var o=a;exports.iconsManager=o;
@@ -1 +1 @@
1
- var e=class{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(e,t){return this.subscribers[e]||(this.subscribers[e]=[]),this.subscribers[e].push(t),this.lastPublishedData[e]}unsubscribe(e,t){this.subscribers[e]&&(this.subscribers[e]=this.subscribers[e].filter(e=>e!==t))}publish(e,t){this.lastPublishedData[e]=t,this.subscribers[e]&&this.subscribers[e].forEach(n=>{try{n(t)}catch(t){console.error(`Error in subscriber for event "${e}":`,t)}})}},t=Symbol.for(`@cupra/ui-kit/pubsub/2.0.0-canary.105`),n=globalThis,r=n[t];r||(r=new e,Object.defineProperty(n,t,{value:r,writable:!1,configurable:!1,enumerable:!1}));var i=r;exports.pubSub=i;
1
+ var e=class{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(e,t){return this.subscribers[e]||(this.subscribers[e]=[]),this.subscribers[e].push(t),this.lastPublishedData[e]}unsubscribe(e,t){this.subscribers[e]&&(this.subscribers[e]=this.subscribers[e].filter(e=>e!==t))}publish(e,t){this.lastPublishedData[e]=t,this.subscribers[e]&&this.subscribers[e].forEach(n=>{try{n(t)}catch(t){console.error(`Error in subscriber for event "${e}":`,t)}})}},t=Symbol.for(`@cupra/ui-kit/pubsub/2.0.0-canary.107`),n=globalThis,r=n[t];r||(r=new e,Object.defineProperty(n,t,{value:r,writable:!1,configurable:!1,enumerable:!1}));var i=r;exports.pubSub=i;
@@ -1 +1 @@
1
- var e=require(`../concurrencyLimit.cjs`).concurrencyLimit(20),t=class t{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:t,theme:n})=>{if(!n||!t)return;let r=`https://ds-assets.cupra.com/2.0.0-canary.105/styles/${n}/components/${t}.css`,i=this.getCachedStyleSheetPromise({url:r});if(i)return i;let a=e(()=>this.fetchStyle({url:r})).then(e=>(e||this.stylePromises.delete(r),e));return this.stylePromises.set(r,a),this.stylePromises.get(r)}}async fetchStyle({url:e}){try{if(typeof fetch>`u`)return;let 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 t.instance||=new t,t.instance}}.getInstance();exports.stylesRegistry=t;
1
+ var e=require(`../concurrencyLimit.cjs`).concurrencyLimit(20),t=class t{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:t,theme:n})=>{if(!n||!t)return;let r=`https://ds-assets.cupra.com/2.0.0-canary.107/styles/${n}/components/${t}.css`,i=this.getCachedStyleSheetPromise({url:r});if(i)return i;let a=e(()=>this.fetchStyle({url:r})).then(e=>(e||this.stylePromises.delete(r),e));return this.stylePromises.set(r,a),this.stylePromises.get(r)}}async fetchStyle({url:e}){try{if(typeof fetch>`u`)return;let 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 t.instance||=new t,t.instance}}.getInstance();exports.stylesRegistry=t;
@@ -1 +1 @@
1
- const e=require(`../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);function t(t,...n){return e.i`${e.r(String.raw({raw:t},...n).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-105`))}`}exports.cssWithTokens=t;
1
+ const e=require(`../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);function t(t,...n){return e.i`${e.r(String.raw({raw:t},...n).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-107`))}`}exports.cssWithTokens=t;
@@ -1 +1 @@
1
- const e=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.cjs`);function n(n,...r){return e.x`${t.o(String.raw({raw:n},...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-105`))}`}exports.htmlWithTokens=n;
1
+ const e=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.cjs`);function n(n,...r){return e.x`${t.o(String.raw({raw:n},...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-107`))}`}exports.htmlWithTokens=n;
@@ -0,0 +1 @@
1
+ const e=require(`../debounce.cjs`);function t(t,n){let r=()=>({top:t.scrollTop>0,bottom:Math.ceil(t.scrollTop)<t.scrollHeight-t.clientHeight,left:t.scrollLeft>0,right:Math.ceil(t.scrollLeft)<t.scrollWidth-t.clientWidth}),i=e.debounce({func:()=>n(r()),milliseconds:16}),a=new ResizeObserver(i);return a.observe(t),t.addEventListener(`scroll`,i,{passive:!0}),n(r()),()=>{a.disconnect(),t.removeEventListener(`scroll`,i)}}exports.observeScroll=t;
@@ -1,24 +1,27 @@
1
1
  import { x as e } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
2
2
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.js";
3
3
  import { n as t } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
4
- import { n } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js";
4
+ import { r as n } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js";
5
+ import { e as r } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query.js";
6
+ import { n as i } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js";
5
7
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.js";
6
- import { __decorate as r } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
7
- import { UiKitElement as i } from "../base/UiKitElement.js";
8
- import { customUiKitElement as a } from "../../decorators/customUiKitElement.js";
9
- import { htmlWithTokens as o } from "../../utils/htmlWithTokens.js";
10
- import { e as s } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
8
+ import { __decorate as a } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
9
+ import { UiKitElement as o } from "../base/UiKitElement.js";
10
+ import { customUiKitElement as s } from "../../decorators/customUiKitElement.js";
11
+ import { htmlWithTokens as c } from "../../utils/htmlWithTokens.js";
12
+ import { e as l } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
11
13
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.js";
12
- import { ViewportMixin as c } from "../../mixins/ViewportMixin.js";
13
- import { objectConverter as l } from "../../utils/objectConverter.js";
14
- import { commonStyles as u } from "./styles/common.styles.js";
14
+ import { ViewportMixin as u } from "../../mixins/ViewportMixin.js";
15
+ import { objectConverter as d } from "../../utils/objectConverter.js";
16
+ import { observeScroll as f } from "../../utils/observeScroll/observeScroll.js";
17
+ import { commonStyles as p } from "./styles/common.styles.js";
15
18
  //#region src/components/ds-static-box/ds-static-box.ts
16
- var d = class extends c(i) {
19
+ var m = class extends u(o) {
17
20
  constructor(...e) {
18
- super(...e), this.size = "medium";
21
+ super(...e), this.size = "medium", this.showTopShadow = !1, this.showBottomShadow = !1;
19
22
  }
20
23
  static {
21
- this.styles = [u];
24
+ this.styles = [p];
22
25
  }
23
26
  get classes() {
24
27
  let e = typeof this.size == "string" ? this.size : this.size[this.viewport];
@@ -27,29 +30,49 @@ var d = class extends c(i) {
27
30
  [e]: !!e
28
31
  };
29
32
  }
33
+ get mainWrapperClasses() {
34
+ return {
35
+ "main-wrapper": !0,
36
+ "shadow-top": this.showTopShadow,
37
+ "shadow-bottom": this.showBottomShadow
38
+ };
39
+ }
30
40
  get styleTokens() {
31
- return o`
41
+ return c`
32
42
  <style>
33
43
  .header {
34
44
  display: ${this.headerItems?.length > 0 ? "block" : "none"};
35
45
  }
36
-
46
+
37
47
  .footer {
38
48
  display: ${this.footerItems?.length > 0 ? "block" : "none"};
39
49
  }
40
50
  </style>
41
51
  `;
42
52
  }
53
+ onSlotChange() {
54
+ this.cleanupScrollObserver && this.cleanupScrollObserver(), this.cleanupScrollObserver = f(this.mainElement, ({ top: e, bottom: t }) => {
55
+ this.showTopShadow = e, this.showBottomShadow = t;
56
+ });
57
+ }
58
+ firstUpdated() {
59
+ this.onSlotChange();
60
+ }
61
+ disconnectedCallback() {
62
+ super.disconnectedCallback(), this.cleanupScrollObserver?.();
63
+ }
43
64
  render() {
44
65
  return e`
45
66
  ${this.styleTokens}
46
- <div part="container" data-testid="ds-static-box-container" class=${s(this.classes)}>
67
+ <div part="container" data-testid="ds-static-box-container" class=${l(this.classes)}>
47
68
  <div class="body">
48
69
  <div part="header" class="header">
49
70
  <slot name="header"></slot>
50
71
  </div>
51
- <div part="main" class="main ds-scroll" tabindex="0">
52
- <slot name="main"></slot>
72
+ <div class=${l(this.mainWrapperClasses)}>
73
+ <div part="main" class="main ds-scroll" tabindex="0">
74
+ <slot name="main" @slotchange=${this.onSlotChange}></slot>
75
+ </div>
53
76
  </div>
54
77
  </div>
55
78
  <div part="footer" class="footer">
@@ -59,14 +82,14 @@ var d = class extends c(i) {
59
82
  `;
60
83
  }
61
84
  };
62
- r([t({
85
+ a([t({
63
86
  type: String,
64
- converter: l
65
- })], d.prototype, "size", void 0), r([n({
87
+ converter: d
88
+ })], m.prototype, "size", void 0), a([i({
66
89
  slot: "header",
67
90
  flatten: !0
68
- })], d.prototype, "headerItems", void 0), r([n({
91
+ })], m.prototype, "headerItems", void 0), a([i({
69
92
  slot: "footer",
70
93
  flatten: !0
71
- })], d.prototype, "footerItems", void 0), d = r([a("ds-static-box")], d);
94
+ })], m.prototype, "footerItems", void 0), a([r(".main")], m.prototype, "mainElement", void 0), a([n()], m.prototype, "showTopShadow", void 0), a([n()], m.prototype, "showBottomShadow", void 0), m = a([s("ds-static-box")], m);
72
95
  //#endregion
@@ -50,7 +50,7 @@ var p = class extends o {
50
50
  }
51
51
  loadThemeStyles() {
52
52
  return this.loadStyles ? new Promise((e, t) => {
53
- let n = "/2.0.0-canary.105", r = `https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;
53
+ let n = "/2.0.0-canary.107", r = `https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;
54
54
  if (document.head.querySelector(`link[href="${r}"]`)) e();
55
55
  else {
56
56
  let i = `ui-kit-theme-${n}`, a = document.getElementById(i), o = document.createElement("link");
@@ -25,7 +25,7 @@ var n = class {
25
25
  return console.error(`Failed to fetch icon "${e}":`, t), "";
26
26
  }), t.subscribe("theme", this.handleChangeTheme);
27
27
  }
28
- }, r = Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.105"), i = globalThis, a = i[r];
28
+ }, r = Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.107"), i = globalThis, a = i[r];
29
29
  a || (a = new n(), Object.defineProperty(i, r, {
30
30
  value: a,
31
31
  writable: !1,
@@ -18,7 +18,7 @@ var e = class {
18
18
  }
19
19
  });
20
20
  }
21
- }, t = Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.105"), n = globalThis, r = n[t];
21
+ }, t = Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.107"), n = globalThis, r = n[t];
22
22
  r || (r = new e(), Object.defineProperty(n, t, {
23
23
  value: r,
24
24
  writable: !1,
@@ -4,7 +4,7 @@ var t = e(20), n = class e {
4
4
  constructor() {
5
5
  this.stylePromises = /* @__PURE__ */ new Map(), this.getStyles = async ({ componentName: e, theme: n }) => {
6
6
  if (!n || !e) return;
7
- let r = `https://ds-assets.cupra.com/2.0.0-canary.105/styles/${n}/components/${e}.css`, i = this.getCachedStyleSheetPromise({ url: r });
7
+ let r = `https://ds-assets.cupra.com/2.0.0-canary.107/styles/${n}/components/${e}.css`, i = this.getCachedStyleSheetPromise({ url: r });
8
8
  if (i) return i;
9
9
  let a = t(() => this.fetchStyle({ url: r })).then((e) => (e || this.stylePromises.delete(r), e));
10
10
  return this.stylePromises.set(r, a), this.stylePromises.get(r);
@@ -2,7 +2,7 @@ import { i as e, r as t } from "../node_modules/.pnpm/@lit_reactive-element@2.1.
2
2
  import "../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.js";
3
3
  //#region src/utils/cssWithTokens.ts
4
4
  function n(n, ...r) {
5
- return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-105"))}`;
5
+ return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-107"))}`;
6
6
  }
7
7
  //#endregion
8
8
  export { n as cssWithTokens };
@@ -4,7 +4,7 @@ import { o as t } from "../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-ht
4
4
  import "../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.js";
5
5
  //#region src/utils/htmlWithTokens.ts
6
6
  function n(n, ...r) {
7
- return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-105"))}`;
7
+ return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-107"))}`;
8
8
  }
9
9
  //#endregion
10
10
  export { n as htmlWithTokens };
@@ -0,0 +1,18 @@
1
+ import { debounce as e } from "../debounce.js";
2
+ //#region src/utils/observeScroll/observeScroll.ts
3
+ function t(t, n) {
4
+ let r = () => ({
5
+ top: t.scrollTop > 0,
6
+ bottom: Math.ceil(t.scrollTop) < t.scrollHeight - t.clientHeight,
7
+ left: t.scrollLeft > 0,
8
+ right: Math.ceil(t.scrollLeft) < t.scrollWidth - t.clientWidth
9
+ }), i = e({
10
+ func: () => n(r()),
11
+ milliseconds: 16
12
+ }), a = new ResizeObserver(i);
13
+ return a.observe(t), t.addEventListener("scroll", i, { passive: !0 }), n(r()), () => {
14
+ a.disconnect(), t.removeEventListener("scroll", i);
15
+ };
16
+ }
17
+ //#endregion
18
+ export { t as observeScroll };
@@ -6,8 +6,16 @@ export declare class DsStaticBox extends DsStaticBox_base {
6
6
  size: DsStaticBoxAttrs['size'];
7
7
  headerItems: Array<Node>;
8
8
  footerItems: Array<Node>;
9
+ mainElement: HTMLElement;
10
+ showTopShadow: boolean;
11
+ showBottomShadow: boolean;
12
+ private cleanupScrollObserver?;
9
13
  private get classes();
14
+ private get mainWrapperClasses();
10
15
  protected get styleTokens(): import("lit").HTMLTemplateResult;
16
+ private onSlotChange;
17
+ firstUpdated(): void;
18
+ disconnectedCallback(): void;
11
19
  render(): import("lit").TemplateResult<1>;
12
20
  }
13
21
  export {};
@@ -0,0 +1,7 @@
1
+ export type ScrollState = {
2
+ top: boolean;
3
+ bottom: boolean;
4
+ left: boolean;
5
+ right: boolean;
6
+ };
7
+ export declare function observeScroll(element: HTMLElement, callback: (state: ScrollState) => void): () => void;
@@ -1,26 +1,28 @@
1
- const e=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),n=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const r=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),i=require(`../base/UiKitElement.cjs`),a=require(`../../decorators/customUiKitElement.cjs`),o=require(`../../utils/htmlWithTokens.cjs`),s=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.cjs`);const c=require(`../../mixins/ViewportMixin.cjs`),l=require(`../../utils/objectConverter.cjs`),u=require(`./styles/common.styles.cjs`);var d=class extends c.ViewportMixin(i.UiKitElement){constructor(...e){super(...e),this.size=`medium`}static{this.styles=[u.commonStyles]}get classes(){let e=typeof this.size==`string`?this.size:this.size[this.viewport];return{container:!0,[e]:!!e}}get styleTokens(){return o.htmlWithTokens`
1
+ const e=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),n=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs`),r=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query.cjs`),i=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const a=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),o=require(`../base/UiKitElement.cjs`),s=require(`../../decorators/customUiKitElement.cjs`),c=require(`../../utils/htmlWithTokens.cjs`),l=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.cjs`);const u=require(`../../mixins/ViewportMixin.cjs`),d=require(`../../utils/objectConverter.cjs`),f=require(`../../utils/observeScroll/observeScroll.cjs`),p=require(`./styles/common.styles.cjs`);var m=class extends u.ViewportMixin(o.UiKitElement){constructor(...e){super(...e),this.size=`medium`,this.showTopShadow=!1,this.showBottomShadow=!1}static{this.styles=[p.commonStyles]}get classes(){let e=typeof this.size==`string`?this.size:this.size[this.viewport];return{container:!0,[e]:!!e}}get mainWrapperClasses(){return{"main-wrapper":!0,"shadow-top":this.showTopShadow,"shadow-bottom":this.showBottomShadow}}get styleTokens(){return c.htmlWithTokens`
2
2
  <style>
3
3
  .header {
4
4
  display: ${this.headerItems?.length>0?`block`:`none`};
5
5
  }
6
-
6
+
7
7
  .footer {
8
8
  display: ${this.footerItems?.length>0?`block`:`none`};
9
9
  }
10
10
  </style>
11
- `}render(){return e.x`
11
+ `}onSlotChange(){this.cleanupScrollObserver&&this.cleanupScrollObserver(),this.cleanupScrollObserver=f.observeScroll(this.mainElement,({top:e,bottom:t})=>{this.showTopShadow=e,this.showBottomShadow=t})}firstUpdated(){this.onSlotChange()}disconnectedCallback(){super.disconnectedCallback(),this.cleanupScrollObserver?.()}render(){return e.x`
12
12
  ${this.styleTokens}
13
- <div part="container" data-testid="ds-static-box-container" class=${s.e(this.classes)}>
13
+ <div part="container" data-testid="ds-static-box-container" class=${l.e(this.classes)}>
14
14
  <div class="body">
15
15
  <div part="header" class="header">
16
16
  <slot name="header"></slot>
17
17
  </div>
18
- <div part="main" class="main ds-scroll" tabindex="0">
19
- <slot name="main"></slot>
18
+ <div class=${l.e(this.mainWrapperClasses)}>
19
+ <div part="main" class="main ds-scroll" tabindex="0">
20
+ <slot name="main" @slotchange=${this.onSlotChange}></slot>
21
+ </div>
20
22
  </div>
21
23
  </div>
22
24
  <div part="footer" class="footer">
23
25
  <slot name="footer"></slot>
24
26
  </div>
25
27
  </div>
26
- `}};r.__decorate([t.n({type:String,converter:l.objectConverter})],d.prototype,`size`,void 0),r.__decorate([n.n({slot:`header`,flatten:!0})],d.prototype,`headerItems`,void 0),r.__decorate([n.n({slot:`footer`,flatten:!0})],d.prototype,`footerItems`,void 0),d=r.__decorate([a.customUiKitElement(`ds-static-box`)],d);
28
+ `}};a.__decorate([t.n({type:String,converter:d.objectConverter})],m.prototype,`size`,void 0),a.__decorate([i.n({slot:`header`,flatten:!0})],m.prototype,`headerItems`,void 0),a.__decorate([i.n({slot:`footer`,flatten:!0})],m.prototype,`footerItems`,void 0),a.__decorate([r.e(`.main`)],m.prototype,`mainElement`,void 0),a.__decorate([n.r()],m.prototype,`showTopShadow`,void 0),a.__decorate([n.r()],m.prototype,`showBottomShadow`,void 0),m=a.__decorate([s.customUiKitElement(`ds-static-box`)],m);
@@ -1,4 +1,4 @@
1
1
  const e=require(`../../node_modules/.pnpm/@lit_context@1.1.6/node_modules/@lit/context/lib/decorators/provide.cjs`),t=require(`./themeContext.cjs`),n=require(`../../core/theme.constants.cjs`),r=require(`../../utils/PubSub.cjs`),i=require(`../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`),a=require(`../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const o=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.cjs`),s=require(`../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.cjs`);require(`../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.cjs`);const c=require(`../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.cjs`),l=require(`../../decorators/customUiKitElement.cjs`),u=require(`../../utils/booleanConverter.cjs`),d=require(`../../styles/source/shared/fonts-config.cjs`);var f=class extends a.i{constructor(...e){super(...e),this.loadFonts=!0,this.loadStyles=!0,this.cssLoaded=!1,this.loadedFonts=new Set}updated(e){super.updated(e),e.has(`theme`)&&(r.pubSub.publish(`theme`,this.theme),sessionStorage?.setItem(n.THEME_STORAGE_KEY,this.theme),typeof FontFace<`u`&&document?.fonts&&this.loadThemeFonts(),this.loadThemeStyles().then(()=>{this.cssLoaded=!0,this.dispatchEvent(new CustomEvent(`ui-kit:ready`,{bubbles:!0,composed:!0}))}))}loadThemeFonts(){d.fontsConfig[this.theme]?.fonts.forEach(e=>{this.loadThemeFont(e)})}async loadThemeFont({weight:e,name:t,file:n}){if(!this.loadFonts)return Promise.resolve();let r=`${t}-${e}`;if(this.loadedFonts.has(r))return;let i=new FontFace(t,`url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.woff2') format('woff2'),
2
2
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.woff') format('woff'),
3
3
  url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.ttf') format('truetype'),
4
- url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.otf') format('opentype')`,{style:`normal`,weight:e,display:`swap`});try{await i.load(),document.fonts.add(i),this.loadedFonts.add(r)}catch(n){console.error(`Error loading "${t}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,t)=>{let n=`/2.0.0-canary.105`,r=`https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${r}"]`))e();else{let i=`ui-kit-theme-${n}`,a=document.getElementById(i),o=document.createElement(`link`);o.id=i,o.rel=`stylesheet`,o.href=r,o.onload=()=>e(),o.onerror=()=>t(Error(`Failed to load theme CSS: ${r}`)),document.head.appendChild(o),a?.remove()}}):Promise.resolve()}render(){return this.cssLoaded?i.x`<slot></slot>`:i.E}};c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-fonts`})],f.prototype,`loadFonts`,void 0),c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-styles`})],f.prototype,`loadStyles`,void 0),c.__decorate([e.e({context:t.themeContext}),o.n({type:String})],f.prototype,`theme`,void 0),c.__decorate([s.r()],f.prototype,`cssLoaded`,void 0),c.__decorate([s.r()],f.prototype,`loadedFonts`,void 0),f=c.__decorate([l.customUiKitElement(`ds-theme-provider`)],f);
4
+ url('https://ds-assets.cupra.com/fonts/${this.theme}/${n}.otf') format('opentype')`,{style:`normal`,weight:e,display:`swap`});try{await i.load(),document.fonts.add(i),this.loadedFonts.add(r)}catch(n){console.error(`Error loading "${t}" font with "${e}" weight:`,n)}}loadThemeStyles(){return this.loadStyles?new Promise((e,t)=>{let n=`/2.0.0-canary.107`,r=`https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;if(document.head.querySelector(`link[href="${r}"]`))e();else{let i=`ui-kit-theme-${n}`,a=document.getElementById(i),o=document.createElement(`link`);o.id=i,o.rel=`stylesheet`,o.href=r,o.onload=()=>e(),o.onerror=()=>t(Error(`Failed to load theme CSS: ${r}`)),document.head.appendChild(o),a?.remove()}}):Promise.resolve()}render(){return this.cssLoaded?i.x`<slot></slot>`:i.E}};c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-fonts`})],f.prototype,`loadFonts`,void 0),c.__decorate([o.n({type:Boolean,converter:u.booleanConverter,attribute:`load-styles`})],f.prototype,`loadStyles`,void 0),c.__decorate([e.e({context:t.themeContext}),o.n({type:String})],f.prototype,`theme`,void 0),c.__decorate([s.r()],f.prototype,`cssLoaded`,void 0),c.__decorate([s.r()],f.prototype,`loadedFonts`,void 0),f=c.__decorate([l.customUiKitElement(`ds-theme-provider`)],f);
@@ -1 +1 @@
1
- const e=require(`../core/theme.constants.cjs`),t=require(`./PubSub.cjs`);var n=class{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;let t=Object.keys(this.icons);this.icons={},t.forEach(e=>this.fetchIcon(e))},this.fetchIcon=async(t,n={})=>{let r=typeof sessionStorage<`u`?sessionStorage?.getItem(e.THEME_STORAGE_KEY):null;!this.theme&&r&&(this.theme=r);let i=this.icons[t];if(i)return await i;let a=this.loadIcon(t,n).catch(e=>{throw delete this.icons[t],e});return this.icons[t]=a,a},this.loadIcon=(e,{cache:t=`force-cache`,...n})=>!this.theme||typeof fetch>`u`?Promise.resolve(`<svg class="ds-icon"></svg>`):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:t,...n}).then(e=>e.text()).catch(t=>{if(t?.name===`AbortError`)throw t;return console.error(`Failed to fetch icon "${e}":`,t),``}),t.pubSub.subscribe(`theme`,this.handleChangeTheme)}},r=Symbol.for(`@cupra/ui-kit/icons-manager/2.0.0-canary.105`),i=globalThis,a=i[r];a||(a=new n,Object.defineProperty(i,r,{value:a,writable:!1,configurable:!1,enumerable:!1}));var o=a;exports.iconsManager=o;
1
+ const e=require(`../core/theme.constants.cjs`),t=require(`./PubSub.cjs`);var n=class{constructor(){this.icons={},this.handleChangeTheme=e=>{if(this.theme===e)return;this.theme=e;let t=Object.keys(this.icons);this.icons={},t.forEach(e=>this.fetchIcon(e))},this.fetchIcon=async(t,n={})=>{let r=typeof sessionStorage<`u`?sessionStorage?.getItem(e.THEME_STORAGE_KEY):null;!this.theme&&r&&(this.theme=r);let i=this.icons[t];if(i)return await i;let a=this.loadIcon(t,n).catch(e=>{throw delete this.icons[t],e});return this.icons[t]=a,a},this.loadIcon=(e,{cache:t=`force-cache`,...n})=>!this.theme||typeof fetch>`u`?Promise.resolve(`<svg class="ds-icon"></svg>`):fetch(`https://ds-assets.cupra.com/icons/${this.theme}/${e}.svg`,{cache:t,...n}).then(e=>e.text()).catch(t=>{if(t?.name===`AbortError`)throw t;return console.error(`Failed to fetch icon "${e}":`,t),``}),t.pubSub.subscribe(`theme`,this.handleChangeTheme)}},r=Symbol.for(`@cupra/ui-kit/icons-manager/2.0.0-canary.107`),i=globalThis,a=i[r];a||(a=new n,Object.defineProperty(i,r,{value:a,writable:!1,configurable:!1,enumerable:!1}));var o=a;exports.iconsManager=o;
@@ -1 +1 @@
1
- var e=class{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(e,t){return this.subscribers[e]||(this.subscribers[e]=[]),this.subscribers[e].push(t),this.lastPublishedData[e]}unsubscribe(e,t){this.subscribers[e]&&(this.subscribers[e]=this.subscribers[e].filter(e=>e!==t))}publish(e,t){this.lastPublishedData[e]=t,this.subscribers[e]&&this.subscribers[e].forEach(n=>{try{n(t)}catch(t){console.error(`Error in subscriber for event "${e}":`,t)}})}},t=Symbol.for(`@cupra/ui-kit/pubsub/2.0.0-canary.105`),n=globalThis,r=n[t];r||(r=new e,Object.defineProperty(n,t,{value:r,writable:!1,configurable:!1,enumerable:!1}));var i=r;exports.pubSub=i;
1
+ var e=class{constructor(){this.subscribers={},this.lastPublishedData={}}subscribe(e,t){return this.subscribers[e]||(this.subscribers[e]=[]),this.subscribers[e].push(t),this.lastPublishedData[e]}unsubscribe(e,t){this.subscribers[e]&&(this.subscribers[e]=this.subscribers[e].filter(e=>e!==t))}publish(e,t){this.lastPublishedData[e]=t,this.subscribers[e]&&this.subscribers[e].forEach(n=>{try{n(t)}catch(t){console.error(`Error in subscriber for event "${e}":`,t)}})}},t=Symbol.for(`@cupra/ui-kit/pubsub/2.0.0-canary.107`),n=globalThis,r=n[t];r||(r=new e,Object.defineProperty(n,t,{value:r,writable:!1,configurable:!1,enumerable:!1}));var i=r;exports.pubSub=i;
@@ -1 +1 @@
1
- var e=require(`../concurrencyLimit.cjs`).concurrencyLimit(20),t=class t{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:t,theme:n})=>{if(!n||!t)return;let r=`https://ds-assets.cupra.com/2.0.0-canary.105/styles/${n}/components/${t}.css`,i=this.getCachedStyleSheetPromise({url:r});if(i)return i;let a=e(()=>this.fetchStyle({url:r})).then(e=>(e||this.stylePromises.delete(r),e));return this.stylePromises.set(r,a),this.stylePromises.get(r)}}async fetchStyle({url:e}){try{if(typeof fetch>`u`)return;let 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 t.instance||=new t,t.instance}}.getInstance();exports.stylesRegistry=t;
1
+ var e=require(`../concurrencyLimit.cjs`).concurrencyLimit(20),t=class t{constructor(){this.stylePromises=new Map,this.getStyles=async({componentName:t,theme:n})=>{if(!n||!t)return;let r=`https://ds-assets.cupra.com/2.0.0-canary.107/styles/${n}/components/${t}.css`,i=this.getCachedStyleSheetPromise({url:r});if(i)return i;let a=e(()=>this.fetchStyle({url:r})).then(e=>(e||this.stylePromises.delete(r),e));return this.stylePromises.set(r,a),this.stylePromises.get(r)}}async fetchStyle({url:e}){try{if(typeof fetch>`u`)return;let 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 t.instance||=new t,t.instance}}.getInstance();exports.stylesRegistry=t;
@@ -1 +1 @@
1
- const e=require(`../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);function t(t,...n){return e.i`${e.r(String.raw({raw:t},...n).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-105`))}`}exports.cssWithTokens=t;
1
+ const e=require(`../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);function t(t,...n){return e.i`${e.r(String.raw({raw:t},...n).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-107`))}`}exports.cssWithTokens=t;
@@ -1 +1 @@
1
- const e=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.cjs`);function n(n,...r){return e.x`${t.o(String.raw({raw:n},...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-105`))}`}exports.htmlWithTokens=n;
1
+ const e=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.cjs`);const t=require(`../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/unsafe-html.cjs`);require(`../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.cjs`);function n(n,...r){return e.x`${t.o(String.raw({raw:n},...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g,`$1-v2-0-0-canary-107`))}`}exports.htmlWithTokens=n;
@@ -0,0 +1 @@
1
+ const e=require(`../debounce.cjs`);function t(t,n){let r=()=>({top:t.scrollTop>0,bottom:Math.ceil(t.scrollTop)<t.scrollHeight-t.clientHeight,left:t.scrollLeft>0,right:Math.ceil(t.scrollLeft)<t.scrollWidth-t.clientWidth}),i=e.debounce({func:()=>n(r()),milliseconds:16}),a=new ResizeObserver(i);return a.observe(t),t.addEventListener(`scroll`,i,{passive:!0}),n(r()),()=>{a.disconnect(),t.removeEventListener(`scroll`,i)}}exports.observeScroll=t;
@@ -1,24 +1,27 @@
1
1
  import { x as e } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js";
2
2
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.js";
3
3
  import { n as t } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js";
4
- import { n } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js";
4
+ import { r as n } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js";
5
+ import { e as r } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query.js";
6
+ import { n as i } from "../../node_modules/.pnpm/@lit_reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js";
5
7
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/decorators.js";
6
- import { __decorate as r } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
7
- import { UiKitElement as i } from "../base/UiKitElement.js";
8
- import { customUiKitElement as a } from "../../decorators/customUiKitElement.js";
9
- import { htmlWithTokens as o } from "../../utils/htmlWithTokens.js";
10
- import { e as s } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
8
+ import { __decorate as a } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
9
+ import { UiKitElement as o } from "../base/UiKitElement.js";
10
+ import { customUiKitElement as s } from "../../decorators/customUiKitElement.js";
11
+ import { htmlWithTokens as c } from "../../utils/htmlWithTokens.js";
12
+ import { e as l } from "../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js";
11
13
  import "../../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/class-map.js";
12
- import { ViewportMixin as c } from "../../mixins/ViewportMixin.js";
13
- import { objectConverter as l } from "../../utils/objectConverter.js";
14
- import { commonStyles as u } from "./styles/common.styles.js";
14
+ import { ViewportMixin as u } from "../../mixins/ViewportMixin.js";
15
+ import { objectConverter as d } from "../../utils/objectConverter.js";
16
+ import { observeScroll as f } from "../../utils/observeScroll/observeScroll.js";
17
+ import { commonStyles as p } from "./styles/common.styles.js";
15
18
  //#region src/components/ds-static-box/ds-static-box.ts
16
- var d = class extends c(i) {
19
+ var m = class extends u(o) {
17
20
  constructor(...e) {
18
- super(...e), this.size = "medium";
21
+ super(...e), this.size = "medium", this.showTopShadow = !1, this.showBottomShadow = !1;
19
22
  }
20
23
  static {
21
- this.styles = [u];
24
+ this.styles = [p];
22
25
  }
23
26
  get classes() {
24
27
  let e = typeof this.size == "string" ? this.size : this.size[this.viewport];
@@ -27,29 +30,49 @@ var d = class extends c(i) {
27
30
  [e]: !!e
28
31
  };
29
32
  }
33
+ get mainWrapperClasses() {
34
+ return {
35
+ "main-wrapper": !0,
36
+ "shadow-top": this.showTopShadow,
37
+ "shadow-bottom": this.showBottomShadow
38
+ };
39
+ }
30
40
  get styleTokens() {
31
- return o`
41
+ return c`
32
42
  <style>
33
43
  .header {
34
44
  display: ${this.headerItems?.length > 0 ? "block" : "none"};
35
45
  }
36
-
46
+
37
47
  .footer {
38
48
  display: ${this.footerItems?.length > 0 ? "block" : "none"};
39
49
  }
40
50
  </style>
41
51
  `;
42
52
  }
53
+ onSlotChange() {
54
+ this.cleanupScrollObserver && this.cleanupScrollObserver(), this.cleanupScrollObserver = f(this.mainElement, ({ top: e, bottom: t }) => {
55
+ this.showTopShadow = e, this.showBottomShadow = t;
56
+ });
57
+ }
58
+ firstUpdated() {
59
+ this.onSlotChange();
60
+ }
61
+ disconnectedCallback() {
62
+ super.disconnectedCallback(), this.cleanupScrollObserver?.();
63
+ }
43
64
  render() {
44
65
  return e`
45
66
  ${this.styleTokens}
46
- <div part="container" data-testid="ds-static-box-container" class=${s(this.classes)}>
67
+ <div part="container" data-testid="ds-static-box-container" class=${l(this.classes)}>
47
68
  <div class="body">
48
69
  <div part="header" class="header">
49
70
  <slot name="header"></slot>
50
71
  </div>
51
- <div part="main" class="main ds-scroll" tabindex="0">
52
- <slot name="main"></slot>
72
+ <div class=${l(this.mainWrapperClasses)}>
73
+ <div part="main" class="main ds-scroll" tabindex="0">
74
+ <slot name="main" @slotchange=${this.onSlotChange}></slot>
75
+ </div>
53
76
  </div>
54
77
  </div>
55
78
  <div part="footer" class="footer">
@@ -59,14 +82,14 @@ var d = class extends c(i) {
59
82
  `;
60
83
  }
61
84
  };
62
- r([t({
85
+ a([t({
63
86
  type: String,
64
- converter: l
65
- })], d.prototype, "size", void 0), r([n({
87
+ converter: d
88
+ })], m.prototype, "size", void 0), a([i({
66
89
  slot: "header",
67
90
  flatten: !0
68
- })], d.prototype, "headerItems", void 0), r([n({
91
+ })], m.prototype, "headerItems", void 0), a([i({
69
92
  slot: "footer",
70
93
  flatten: !0
71
- })], d.prototype, "footerItems", void 0), d = r([a("ds-static-box")], d);
94
+ })], m.prototype, "footerItems", void 0), a([r(".main")], m.prototype, "mainElement", void 0), a([n()], m.prototype, "showTopShadow", void 0), a([n()], m.prototype, "showBottomShadow", void 0), m = a([s("ds-static-box")], m);
72
95
  //#endregion
@@ -50,7 +50,7 @@ var p = class extends o {
50
50
  }
51
51
  loadThemeStyles() {
52
52
  return this.loadStyles ? new Promise((e, t) => {
53
- let n = "/2.0.0-canary.105", r = `https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;
53
+ let n = "/2.0.0-canary.107", r = `https://ds-assets.cupra.com${n}/styles/${this.theme}/theme.css`;
54
54
  if (document.head.querySelector(`link[href="${r}"]`)) e();
55
55
  else {
56
56
  let i = `ui-kit-theme-${n}`, a = document.getElementById(i), o = document.createElement("link");
@@ -25,7 +25,7 @@ var n = class {
25
25
  return console.error(`Failed to fetch icon "${e}":`, t), "";
26
26
  }), t.subscribe("theme", this.handleChangeTheme);
27
27
  }
28
- }, r = Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.105"), i = globalThis, a = i[r];
28
+ }, r = Symbol.for("@cupra/ui-kit/icons-manager/2.0.0-canary.107"), i = globalThis, a = i[r];
29
29
  a || (a = new n(), Object.defineProperty(i, r, {
30
30
  value: a,
31
31
  writable: !1,
@@ -18,7 +18,7 @@ var e = class {
18
18
  }
19
19
  });
20
20
  }
21
- }, t = Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.105"), n = globalThis, r = n[t];
21
+ }, t = Symbol.for("@cupra/ui-kit/pubsub/2.0.0-canary.107"), n = globalThis, r = n[t];
22
22
  r || (r = new e(), Object.defineProperty(n, t, {
23
23
  value: r,
24
24
  writable: !1,
@@ -4,7 +4,7 @@ var t = e(20), n = class e {
4
4
  constructor() {
5
5
  this.stylePromises = /* @__PURE__ */ new Map(), this.getStyles = async ({ componentName: e, theme: n }) => {
6
6
  if (!n || !e) return;
7
- let r = `https://ds-assets.cupra.com/2.0.0-canary.105/styles/${n}/components/${e}.css`, i = this.getCachedStyleSheetPromise({ url: r });
7
+ let r = `https://ds-assets.cupra.com/2.0.0-canary.107/styles/${n}/components/${e}.css`, i = this.getCachedStyleSheetPromise({ url: r });
8
8
  if (i) return i;
9
9
  let a = t(() => this.fetchStyle({ url: r })).then((e) => (e || this.stylePromises.delete(r), e));
10
10
  return this.stylePromises.set(r, a), this.stylePromises.get(r);
@@ -2,7 +2,7 @@ import { i as e, r as t } from "../node_modules/.pnpm/@lit_reactive-element@2.1.
2
2
  import "../node_modules/.pnpm/lit@3.3.1/node_modules/lit/index.js";
3
3
  //#region src/utils/cssWithTokens.ts
4
4
  function n(n, ...r) {
5
- return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-105"))}`;
5
+ return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-107"))}`;
6
6
  }
7
7
  //#endregion
8
8
  export { n as cssWithTokens };
@@ -4,7 +4,7 @@ import { o as t } from "../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-ht
4
4
  import "../node_modules/.pnpm/lit@3.3.1/node_modules/lit/directives/unsafe-html.js";
5
5
  //#region src/utils/htmlWithTokens.ts
6
6
  function n(n, ...r) {
7
- return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-105"))}`;
7
+ return e`${t(String.raw({ raw: n }, ...r).replace(/(--private-[\w-]+)(?=\s*[):,])/g, "$1-v2-0-0-canary-107"))}`;
8
8
  }
9
9
  //#endregion
10
10
  export { n as htmlWithTokens };
@@ -0,0 +1,18 @@
1
+ import { debounce as e } from "../debounce.js";
2
+ //#region src/utils/observeScroll/observeScroll.ts
3
+ function t(t, n) {
4
+ let r = () => ({
5
+ top: t.scrollTop > 0,
6
+ bottom: Math.ceil(t.scrollTop) < t.scrollHeight - t.clientHeight,
7
+ left: t.scrollLeft > 0,
8
+ right: Math.ceil(t.scrollLeft) < t.scrollWidth - t.clientWidth
9
+ }), i = e({
10
+ func: () => n(r()),
11
+ milliseconds: 16
12
+ }), a = new ResizeObserver(i);
13
+ return a.observe(t), t.addEventListener("scroll", i, { passive: !0 }), n(r()), () => {
14
+ a.disconnect(), t.removeEventListener("scroll", i);
15
+ };
16
+ }
17
+ //#endregion
18
+ export { t as observeScroll };
@@ -6,8 +6,16 @@ export declare class DsStaticBox extends DsStaticBox_base {
6
6
  size: DsStaticBoxAttrs['size'];
7
7
  headerItems: Array<Node>;
8
8
  footerItems: Array<Node>;
9
+ mainElement: HTMLElement;
10
+ showTopShadow: boolean;
11
+ showBottomShadow: boolean;
12
+ private cleanupScrollObserver?;
9
13
  private get classes();
14
+ private get mainWrapperClasses();
10
15
  protected get styleTokens(): import("lit").HTMLTemplateResult;
16
+ private onSlotChange;
17
+ firstUpdated(): void;
18
+ disconnectedCallback(): void;
11
19
  render(): import("lit").TemplateResult<1>;
12
20
  }
13
21
  export {};
@@ -0,0 +1,7 @@
1
+ export type ScrollState = {
2
+ top: boolean;
3
+ bottom: boolean;
4
+ left: boolean;
5
+ right: boolean;
6
+ };
7
+ export declare function observeScroll(element: HTMLElement, callback: (state: ScrollState) => void): () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cupra/ui-kit",
3
- "version": "2.0.0-canary.105",
3
+ "version": "2.0.0-canary.107",
4
4
  "description": "Web components library",
5
5
  "author": "SEAT S.A.",
6
6
  "license": "SEAT S.A. Library EULA 1.0",