hr-design-system-handlebars 1.124.7 → 1.124.9

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.
@@ -23,6 +23,7 @@ configureActions({
23
23
 
24
24
  // Create CheckCSS instance
25
25
  const checkcss = new CheckCSS();
26
+ window.IS_STORYBOOK = true;
26
27
 
27
28
  checkcss.onClassnameDetected = function (classname, element) {
28
29
  // Return `false` to disable checks for `classname`.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ # v1.124.9 (Mon Dec 15 2025)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - Dpe 3046 [#1328](https://github.com/mumprod/hr-design-system-handlebars/pull/1328) ([@vascoeduardo](https://github.com/vascoeduardo))
6
+
7
+ #### Authors: 1
8
+
9
+ - Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
10
+
11
+ ---
12
+
13
+ # v1.124.8 (Wed Dec 10 2025)
14
+
15
+ #### ⚠️ Pushed to `main`
16
+
17
+ - Introducing new geoMap fetures in article ([@Paul-Atreidis](https://github.com/Paul-Atreidis))
18
+
19
+ #### Authors: 1
20
+
21
+ - [@Paul-Atreidis](https://github.com/Paul-Atreidis)
22
+
23
+ ---
24
+
1
25
  # v1.124.7 (Sun Dec 07 2025)
2
26
 
3
27
  #### 🐛 Bug Fix
@@ -1729,6 +1729,9 @@ article #commentList {
1729
1729
  .h-10 {
1730
1730
  height: 2.5rem;
1731
1731
  }
1732
+ .h-11 {
1733
+ height: 2.75rem;
1734
+ }
1732
1735
  .h-12 {
1733
1736
  height: 3rem;
1734
1737
  }
@@ -1847,6 +1850,9 @@ article #commentList {
1847
1850
  .w-10\/12 {
1848
1851
  width: 83.333333%;
1849
1852
  }
1853
+ .w-11 {
1854
+ width: 2.75rem;
1855
+ }
1850
1856
  .w-12 {
1851
1857
  width: 3rem;
1852
1858
  }
@@ -2724,6 +2730,11 @@ article #commentList {
2724
2730
  background-color: rgba(96, 165, 250, 1);
2725
2731
  background-color: rgba(96, 165, 250, var(--tw-bg-opacity));
2726
2732
  }
2733
+ .bg-blue-aqua {
2734
+ --tw-bg-opacity: 1;
2735
+ background-color: rgba(229, 237, 241, 1);
2736
+ background-color: rgba(229, 237, 241, var(--tw-bg-opacity));
2737
+ }
2727
2738
  .bg-blue-congress-hex {
2728
2739
  --tw-bg-opacity: 1;
2729
2740
  background-color: rgba(0, 82, 147, 1);
@@ -3895,7 +3906,7 @@ article #commentList {
3895
3906
  border-bottom-color: var(--color-secondary-ds);
3896
3907
  }
3897
3908
  .counter-reset {
3898
- counter-reset: cnt1765143682069;
3909
+ counter-reset: cnt1765814559948;
3899
3910
  }
3900
3911
  .animate-delay-100 {
3901
3912
  --tw-animate-delay: 100ms;
@@ -4356,7 +4367,7 @@ html { scroll-behavior: smooth; }
4356
4367
  --tw-ring-color: rgba(255, 255, 255, 0.5);
4357
4368
  }
4358
4369
  .-ordered {
4359
- counter-increment: cnt1765143682069 1;
4370
+ counter-increment: cnt1765814559948 1;
4360
4371
  }
4361
4372
  .-ordered::before {
4362
4373
  position: absolute;
@@ -4374,7 +4385,7 @@ html { scroll-behavior: smooth; }
4374
4385
  --tw-text-opacity: 1;
4375
4386
  color: rgba(0, 0, 0, 1);
4376
4387
  color: rgba(0, 0, 0, var(--tw-text-opacity));
4377
- content: counter(cnt1765143682069);
4388
+ content: counter(cnt1765814559948);
4378
4389
  }
4379
4390
  /*! ****************************/
4380
4391
  /*! DataPolicy stuff */
@@ -7386,6 +7397,11 @@ ul.restrictedToTwo li:nth-of-type(1n + 2) .timelineBorder {
7386
7397
  line-height: 2rem;
7387
7398
  }
7388
7399
 
7400
+ .sm\:text-base {
7401
+ font-size: 1rem;
7402
+ line-height: 1.375rem;
7403
+ }
7404
+
7389
7405
  .sm\:text-lg {
7390
7406
  font-size: 1.125rem;
7391
7407
  line-height: 1.5rem;
@@ -8511,6 +8527,10 @@ ul.restrictedToTwo li:nth-of-type(1n + 2) .timelineBorder {
8511
8527
  max-width: 75%;
8512
8528
  }
8513
8529
 
8530
+ .lg\:max-w-7xl {
8531
+ max-width: 80rem;
8532
+ }
8533
+
8514
8534
  .lg\:flex-initial {
8515
8535
  flex: 0 1 auto;
8516
8536
  }
@@ -13,6 +13,7 @@ import dropdown from 'components/site_header/dropdown.alpine'
13
13
 
14
14
  AsyncAlpine.init(Alpine)
15
15
  .data('podcastPlayer', () => import('components/podcast/podcast_player.alpine.js'))
16
+ .data('appBanner', () => import('components/appBanner/appBanner.alpine.js'))
16
17
  .data('slider', () =>
17
18
  import('components/horizontal_scroll_container/horizontal_scroll_container.alpine.js')
18
19
  )
@@ -0,0 +1,41 @@
1
+ import { uxAction } from 'base/tracking/pianoHelper.subfeature'
2
+
3
+ export default function appBanner() {
4
+ return {
5
+ showBanner: false,
6
+ deferredPrompt: null,
7
+ init: function () {
8
+ window.addEventListener('beforeinstallprompt', (e) => {
9
+ // Prevent Chrome 67 and earlier from automatically showing the prompt
10
+ e.preventDefault();
11
+ // Stash the event so it can be triggered later.
12
+ this.deferredPrompt = e;
13
+ // Update UI notify the user they can add to home screen
14
+ this.showBanner = true;
15
+ });
16
+ if(window.IS_STORYBOOK){ this.showBanner = true;}
17
+ },
18
+ installClickHandler: function(){
19
+ if(this.deferredPrompt){
20
+ this.deferredPrompt.prompt();
21
+ // Wait for the user to respond to the prompt
22
+ this.deferredPrompt.userChoice
23
+ .then((choiceResult) => {
24
+ if (choiceResult.outcome === 'accepted') {
25
+ uxAction('installNativeApp::promt::accepted');
26
+ console.log('User accepted the A2HS prompt');
27
+ } else {
28
+ uxAction('installNativeApp::promt::dismissed');
29
+ console.log('User dismissed the A2HS prompt');
30
+ }
31
+ this.deferredPrompt = null;
32
+ });
33
+ }
34
+ this.showBanner = false
35
+ },
36
+ closeClickHandler: function(){
37
+ uxAction('installNativeApp::bannerClosed');
38
+ this.showBanner = false
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,27 @@
1
+ <div
2
+ x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
+ <div class="flex flex-row items-center gap-4 grow">
5
+ <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
+ <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
7
+ class="w-7 h-7" alt="{{loca "meta_application_name"}}">
8
+ </div>
9
+ <div class="flex flex-col items-start text-sm sm:text-base font-heading">
10
+ <span class="font-bold">hessenschau App</span>
11
+ <span>Kostenlos bei Google Play</span>
12
+ </div>
13
+ </div>
14
+ <div class="flex items-center gap-4 ">
15
+ {{#> components/button/button _size="md" _alpineClick="installClickHandler"}}
16
+ {{> components/button/components/button_label _label="Laden" _css="text-sm sm:text-base"}}
17
+ {{/components/button/button}}
18
+ {{#> components/button/button _size="md" _variant="tertiary" _css="h-10" _alpineClick="closeClickHandler"}}
19
+ {{> components/button/components/button_icon _icon="close" _css="" _iconmap="icons"}}
20
+ {{> components/button/components/button_label _label="schließen" _css="sr-only"}}
21
+ {{/components/button/button}}
22
+ </div>
23
+ </div>
24
+
25
+
26
+
27
+
@@ -2,7 +2,7 @@
2
2
  <div class="mt-6 italic text-gray-dark">coming soon: Map-component</div>
3
3
  {{~else~}}
4
4
  {{> content/geomap/page/components/map
5
- _addClass="copytext__clearBox"
5
+ _addClass="copytext__clearBox region--wide"
6
6
  _id=this.uuid
7
7
  _tilesURL=this.mapTilesUrl
8
8
  _iconURLStyle1=this.markerIconUrl
@@ -17,6 +17,14 @@
17
17
  _initLng=this.initViewLong
18
18
  _initZoom=this.initZoom
19
19
  _border=this.showBorders
20
+ _additionalOverlay=this.borderJsonUrl
21
+ _borderJsonStrokeColor=this.borderJsonStrokeColor
22
+ _borderJsonStrokeWeight=this.borderJsonStrokeWeight
23
+ _borderJsonPolygonFill=this.borderJsonPolygonFill
24
+ _borderJsonPolygonFillActive=this.borderJsonPolygonFillActive
25
+ _borderJsonPolygonOpacity=this.borderJsonPolygonOpacity
26
+ _showGeoJsonInteractive=this.showGeoJsonInteractive
27
+ _showGeoJsonMetadata=this.showGeoJsonMetadata
20
28
  _colorBorder=this.borderColor
21
29
  _borderStrokeWeight=this.borderStrokeWeight
22
30
  _countryFillColor=this.countryFillColor
@@ -0,0 +1,27 @@
1
+ <div
2
+ x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
+ <div class="flex flex-row items-center gap-4 grow">
5
+ <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
+ <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
7
+ class="w-7 h-7" alt="{{loca "meta_application_name"}}">
8
+ </div>
9
+ <div class="flex flex-col items-start text-sm sm:text-base font-heading">
10
+ <span class="font-bold">hessenschau App</span>
11
+ <span>Kostenlos bei Google Play</span>
12
+ </div>
13
+ </div>
14
+ <div class="flex items-center gap-4 ">
15
+ {{#> components/button/button _size="md" _alpineClick="installClickHandler"}}
16
+ {{> components/button/components/button_label _label="Laden" _css="text-sm sm:text-base"}}
17
+ {{/components/button/button}}
18
+ {{#> components/button/button _size="md" _variant="tertiary" _css="h-10" _alpineClick="closeClickHandler"}}
19
+ {{> components/button/components/button_icon _icon="close" _css="" _iconmap="icons"}}
20
+ {{> components/button/components/button_label _label="schließen" _css="sr-only"}}
21
+ {{/components/button/button}}
22
+ </div>
23
+ </div>
24
+
25
+
26
+
27
+
@@ -2,7 +2,7 @@
2
2
  <div class="mt-6 italic text-gray-dark">coming soon: Map-component</div>
3
3
  {{~else~}}
4
4
  {{> content/geomap/page/components/map
5
- _addClass="copytext__clearBox"
5
+ _addClass="copytext__clearBox region--wide"
6
6
  _id=this.uuid
7
7
  _tilesURL=this.mapTilesUrl
8
8
  _iconURLStyle1=this.markerIconUrl
@@ -17,6 +17,14 @@
17
17
  _initLng=this.initViewLong
18
18
  _initZoom=this.initZoom
19
19
  _border=this.showBorders
20
+ _additionalOverlay=this.borderJsonUrl
21
+ _borderJsonStrokeColor=this.borderJsonStrokeColor
22
+ _borderJsonStrokeWeight=this.borderJsonStrokeWeight
23
+ _borderJsonPolygonFill=this.borderJsonPolygonFill
24
+ _borderJsonPolygonFillActive=this.borderJsonPolygonFillActive
25
+ _borderJsonPolygonOpacity=this.borderJsonPolygonOpacity
26
+ _showGeoJsonInteractive=this.showGeoJsonInteractive
27
+ _showGeoJsonMetadata=this.showGeoJsonMetadata
20
28
  _colorBorder=this.borderColor
21
29
  _borderStrokeWeight=this.borderStrokeWeight
22
30
  _countryFillColor=this.countryFillColor
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "repository": "https://github.com/szuelch/hr-design-system-handlebars",
9
- "version": "1.124.7",
9
+ "version": "1.124.9",
10
10
  "scripts": {
11
11
  "test": "echo \"Error: no test specified\" && exit 1",
12
12
  "storybook": "storybook dev -p 6006 public",
@@ -13,6 +13,7 @@ import dropdown from 'components/site_header/dropdown.alpine'
13
13
 
14
14
  AsyncAlpine.init(Alpine)
15
15
  .data('podcastPlayer', () => import('components/podcast/podcast_player.alpine.js'))
16
+ .data('appBanner', () => import('components/appBanner/appBanner.alpine.js'))
16
17
  .data('slider', () =>
17
18
  import('components/horizontal_scroll_container/horizontal_scroll_container.alpine.js')
18
19
  )
@@ -0,0 +1,41 @@
1
+ import { uxAction } from 'base/tracking/pianoHelper.subfeature'
2
+
3
+ export default function appBanner() {
4
+ return {
5
+ showBanner: false,
6
+ deferredPrompt: null,
7
+ init: function () {
8
+ window.addEventListener('beforeinstallprompt', (e) => {
9
+ // Prevent Chrome 67 and earlier from automatically showing the prompt
10
+ e.preventDefault();
11
+ // Stash the event so it can be triggered later.
12
+ this.deferredPrompt = e;
13
+ // Update UI notify the user they can add to home screen
14
+ this.showBanner = true;
15
+ });
16
+ if(window.IS_STORYBOOK){ this.showBanner = true;}
17
+ },
18
+ installClickHandler: function(){
19
+ if(this.deferredPrompt){
20
+ this.deferredPrompt.prompt();
21
+ // Wait for the user to respond to the prompt
22
+ this.deferredPrompt.userChoice
23
+ .then((choiceResult) => {
24
+ if (choiceResult.outcome === 'accepted') {
25
+ uxAction('installNativeApp::promt::accepted');
26
+ console.log('User accepted the A2HS prompt');
27
+ } else {
28
+ uxAction('installNativeApp::promt::dismissed');
29
+ console.log('User dismissed the A2HS prompt');
30
+ }
31
+ this.deferredPrompt = null;
32
+ });
33
+ }
34
+ this.showBanner = false
35
+ },
36
+ closeClickHandler: function(){
37
+ uxAction('installNativeApp::bannerClosed');
38
+ this.showBanner = false
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,27 @@
1
+ <div
2
+ x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
+ <div class="flex flex-row items-center gap-4 grow">
5
+ <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
+ <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
7
+ class="w-7 h-7" alt="{{loca "meta_application_name"}}">
8
+ </div>
9
+ <div class="flex flex-col items-start text-sm sm:text-base font-heading">
10
+ <span class="font-bold">hessenschau App</span>
11
+ <span>Kostenlos bei Google Play</span>
12
+ </div>
13
+ </div>
14
+ <div class="flex items-center gap-4 ">
15
+ {{#> components/button/button _size="md" _alpineClick="installClickHandler"}}
16
+ {{> components/button/components/button_label _label="Laden" _css="text-sm sm:text-base"}}
17
+ {{/components/button/button}}
18
+ {{#> components/button/button _size="md" _variant="tertiary" _css="h-10" _alpineClick="closeClickHandler"}}
19
+ {{> components/button/components/button_icon _icon="close" _css="" _iconmap="icons"}}
20
+ {{> components/button/components/button_label _label="schließen" _css="sr-only"}}
21
+ {{/components/button/button}}
22
+ </div>
23
+ </div>
24
+
25
+
26
+
27
+
@@ -0,0 +1,19 @@
1
+ import { ArgTypes, Meta, Story, Canvas, ColorPalette, ColorItem } from '@storybook/blocks'
2
+ import * as AppBannerStories from './appBanner.stories';
3
+
4
+ import geoTag from './appBanner.hbs'
5
+
6
+ <Meta of={AppBannerStories} />
7
+
8
+ export const Template = ({ ...args }) => {
9
+ // You can either use a function to create DOM elements or use a plain html string!
10
+ // return `<div>${geoTag}</div>`;
11
+ return geoTag({ ...args })
12
+ }
13
+
14
+ # AppBanner
15
+
16
+ <Canvas withToolbar>
17
+ <Story of={AppBannerStories.AppBanner} />
18
+ </Canvas>
19
+
@@ -0,0 +1,33 @@
1
+ import appBanner from './appBanner.hbs'
2
+
3
+ const Template = ({ ...args }) => {
4
+ // You can either use a function to create DOM elements or use a plain html string!
5
+ // return `<div>${appBanner}</div>`;
6
+ return appBanner({ ...args })
7
+ }
8
+
9
+ export default {
10
+ title: 'Komponenten/App Banner',
11
+
12
+ argTypes: {
13
+ _text: {
14
+ control: 'text',
15
+ description: 'Beschriftung der Ortsmarke',
16
+ },
17
+ },
18
+
19
+ decorators: [
20
+ (Story) => {
21
+ return `${Story()}`
22
+ },
23
+ ],
24
+ }
25
+
26
+ export const AppBanner = {
27
+ render: Template.bind({}),
28
+ name: 'AppBanner',
29
+
30
+ args: {
31
+ _text: 'AppBanner',
32
+ },
33
+ }
@@ -2,7 +2,7 @@
2
2
  <div class="mt-6 italic text-gray-dark">coming soon: Map-component</div>
3
3
  {{~else~}}
4
4
  {{> content/geomap/page/components/map
5
- _addClass="copytext__clearBox"
5
+ _addClass="copytext__clearBox region--wide"
6
6
  _id=this.uuid
7
7
  _tilesURL=this.mapTilesUrl
8
8
  _iconURLStyle1=this.markerIconUrl
@@ -17,6 +17,14 @@
17
17
  _initLng=this.initViewLong
18
18
  _initZoom=this.initZoom
19
19
  _border=this.showBorders
20
+ _additionalOverlay=this.borderJsonUrl
21
+ _borderJsonStrokeColor=this.borderJsonStrokeColor
22
+ _borderJsonStrokeWeight=this.borderJsonStrokeWeight
23
+ _borderJsonPolygonFill=this.borderJsonPolygonFill
24
+ _borderJsonPolygonFillActive=this.borderJsonPolygonFillActive
25
+ _borderJsonPolygonOpacity=this.borderJsonPolygonOpacity
26
+ _showGeoJsonInteractive=this.showGeoJsonInteractive
27
+ _showGeoJsonMetadata=this.showGeoJsonMetadata
20
28
  _colorBorder=this.borderColor
21
29
  _borderStrokeWeight=this.borderStrokeWeight
22
30
  _countryFillColor=this.countryFillColor