ublo-lib 1.21.6 → 1.21.8

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 (27) hide show
  1. package/es/lbm/components/lumiplan/api.js +1 -1
  2. package/es/lbm/components/lumiplan/i18n/fr.json +1 -0
  3. package/es/lbm/components/lumiplan/lumiplan.d.ts.map +1 -1
  4. package/es/lbm/components/lumiplan/lumiplan.js +3 -1
  5. package/es/lbm/components/lumiplan/lumiplan.module.css +2 -2
  6. package/es/lbm/components/lumiplan/opening.d.ts +1 -0
  7. package/es/lbm/components/lumiplan/opening.d.ts.map +1 -1
  8. package/es/lbm/components/lumiplan/opening.js +4 -4
  9. package/es/lbm/components/lumiplan/opening.module.css +21 -26
  10. package/es/lbm/components/lumiplan/pois.d.ts.map +1 -1
  11. package/es/lbm/components/lumiplan/pois.js +10 -4
  12. package/es/lbm/components/lumiplan/resort-selector.module.css +3 -3
  13. package/es/lbm/components/lumiplan/road-condition.js +3 -3
  14. package/es/lbm/components/lumiplan/road-condition.module.css +10 -7
  15. package/es/lbm/components/lumiplan/weather/snow-data.js +1 -1
  16. package/es/lbm/components/lumiplan/weather/weather-days.d.ts +7 -0
  17. package/es/lbm/components/lumiplan/weather/weather-days.d.ts.map +1 -0
  18. package/es/lbm/components/lumiplan/weather/weather-days.js +54 -0
  19. package/es/lbm/components/lumiplan/weather/weather-days.module.css +66 -0
  20. package/es/lbm/components/lumiplan/weather/weather-zones.d.ts +6 -0
  21. package/es/lbm/components/lumiplan/weather/weather-zones.d.ts.map +1 -0
  22. package/es/lbm/components/lumiplan/weather/weather-zones.js +48 -0
  23. package/es/lbm/components/lumiplan/weather/weather-zones.module.css +79 -0
  24. package/es/lbm/components/lumiplan/weather/weather.d.ts.map +1 -1
  25. package/es/lbm/components/lumiplan/weather/weather.js +4 -41
  26. package/es/lbm/components/lumiplan/weather/weather.module.css +2 -70
  27. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import getConfig from "next/config";
2
- // import * as Fetcher from "ublo-lib/es/common/utils/fetcher";
3
2
  import * as Fetcher from "../../../common/utils/fetcher";
3
+ // import * as Fetcher from "ublo-lib/es/common/utils/fetcher";
4
4
  const { publicRuntimeConfig } = getConfig();
5
5
  const { lumiplanApi } = publicRuntimeConfig;
6
6
  export async function getResortOpening(resort) {
@@ -4,6 +4,7 @@
4
4
  },
5
5
  "road-conditions": {
6
6
  "title": "<b>Conditions</b> routières",
7
+ "road": "Route",
7
8
  "navigation-title": "Conditions routières",
8
9
  "status": {
9
10
  "OPENED": "Ouverte",
@@ -1 +1 @@
1
- {"version":3,"file":"lumiplan.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/lumiplan.tsx"],"names":[],"mappings":"AAkBA,MAAM,CAAC,OAAO,UAAU,QAAQ,4CA+H/B"}
1
+ {"version":3,"file":"lumiplan.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/lumiplan.tsx"],"names":[],"mappings":"AAkBA,MAAM,CAAC,OAAO,UAAU,QAAQ,4CAyI/B"}
@@ -28,6 +28,8 @@ export default function Lumiplan() {
28
28
  const isOpeningsInView = useInView(openingsRef, IN_VIEW_CONFIG);
29
29
  const isPoisInView = useInView(poisRef, IN_VIEW_CONFIG);
30
30
  const [currentResortId, setCurrentResortId] = React.useState(lumiplanResorts[0].id);
31
+ const currentResort = lumiplanResorts.find((resort) => resort.id === currentResortId);
32
+ const showOpening = Boolean(currentResort.showOpening);
31
33
  const [resortOpening, setResortOpening] = React.useState();
32
34
  const [weather, setWeather] = React.useState();
33
35
  const [resortAccess, setResortAccess] = React.useState();
@@ -114,5 +116,5 @@ export default function Lumiplan() {
114
116
  fetchData();
115
117
  }
116
118
  }, [currentResortId, isPoisInView]);
117
- return (_jsxs("div", { className: css.lumiplan, children: [_jsx(ResortSelector, { resorts: lumiplanResorts, currentResortId: currentResortId, setCurrentResortId: setCurrentResortId }), _jsx(TodaysTips, { ref: todaysTipsRef, resortOpening: resortOpening }), _jsx(Weather, { ref: weatherRef, weather: weather }), _jsx(RoadCondition, { ref: roadConditionRef, resortAccess: resortAccess }), _jsx(Domain, { ref: domainRef, domain: domain }), _jsx(Pois, { ref: poisRef, pois: pois }), _jsx(Opening, { ref: openingsRef, resortOpening: resortOpening })] }));
119
+ return (_jsxs("div", { className: css.lumiplan, children: [_jsx(ResortSelector, { resorts: lumiplanResorts, currentResortId: currentResortId, setCurrentResortId: setCurrentResortId }), _jsx(TodaysTips, { ref: todaysTipsRef, resortOpening: resortOpening }), _jsx(Weather, { ref: weatherRef, weather: weather }), _jsx(RoadCondition, { ref: roadConditionRef, resortAccess: resortAccess }), _jsx(Domain, { ref: domainRef, domain: domain }), _jsx(Pois, { ref: poisRef, pois: pois }), showOpening && (_jsx(Opening, { ref: openingsRef, resortOpening: resortOpening, showOpening: currentResort.showOpening }))] }));
118
120
  }
@@ -1,9 +1,9 @@
1
1
  .lumiplan {
2
- padding: 28px 0;
2
+ padding-top: 20px;
3
3
  }
4
4
 
5
5
  @media (min-width: 780px) {
6
6
  .lumiplan {
7
- padding: 64px 0;
7
+ padding-top: 34px;
8
8
  }
9
9
  }
@@ -2,6 +2,7 @@ import * as React from "react";
2
2
  import type { ResortOpening } from "./types";
3
3
  type Props = {
4
4
  resortOpening?: ResortOpening | null;
5
+ showOpening?: string[];
5
6
  };
6
7
  declare const Opening: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
7
8
  export default Opening;
@@ -1 +1 @@
1
- {"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/opening.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,aAAa,EAAO,MAAM,SAAS,CAAC;AAGlD,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,QAAA,MAAM,OAAO,8EAuEZ,CAAC;AAuCF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/opening.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,aAAa,EAAO,MAAM,SAAS,CAAC;AAGlD,KAAK,KAAK,GAAG;IACX,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,OAAO,8EAsEZ,CAAC;AAqCF,eAAe,OAAO,CAAC"}
@@ -8,7 +8,7 @@ import NightIcon from "./icons/night";
8
8
  import DawnIcon from "./icons/dawn";
9
9
  import T, { t } from "./i18n/translations";
10
10
  import css from "./opening.module.css";
11
- const Opening = React.forwardRef(({ resortOpening }, ref) => {
11
+ const Opening = React.forwardRef(({ resortOpening, showOpening }, ref) => {
12
12
  const { lang } = useUbloContext();
13
13
  if (resortOpening === undefined) {
14
14
  return (_jsx("div", { ref: ref, className: css.loader, "data-tags": t(lang, "opening.navigation-title"), children: _jsx(Loader, { variant: "overlay" }) }));
@@ -21,15 +21,15 @@ const Opening = React.forwardRef(({ resortOpening }, ref) => {
21
21
  const dayIndex = new Date().getDay() - 1;
22
22
  const orderedDays = reorganizeDays(dawnSkiingDays, dayIndex);
23
23
  const orderedNights = reorganizeDays(nightSkiingDays, dayIndex);
24
- return (_jsx("div", { ref: ref, className: css.opening, "data-tags": t(lang, "opening.navigation-title"), children: _jsx("div", { className: css.tableOuter, children: _jsxs("table", { className: css.table, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { className: css.headingMini }), orderedDays.map((day, i) => {
24
+ return (_jsx("div", { ref: ref, className: css.opening, "data-tags": t(lang, "opening.navigation-title"), children: _jsx("div", { className: css.tableOuter, children: _jsxs("table", { className: css.table, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", {}), orderedDays.map((day, i) => {
25
25
  const dayNumber = new Date();
26
26
  dayNumber.setDate(dayNumber.getDate() + i);
27
27
  return (_jsx("th", { className: css.heading, children: _jsxs("div", { className: css.headingInner, children: [_jsx(T, { id: `opening.days.${day.dayType}` }), " ", dayNumber.getDate()] }) }, day.dayType));
28
- })] }) }), _jsxs("tbody", { children: [_jsx("tr", { children: _jsx(Rows, { kind: "dawn", rows: orderedDays }) }), _jsx("tr", { children: _jsx(Rows, { kind: "night", rows: orderedNights }) })] })] }) }) }));
28
+ })] }) }), _jsxs("tbody", { children: [showOpening?.includes("dawn") && (_jsx("tr", { children: _jsx(Rows, { kind: "dawn", rows: orderedDays }) })), showOpening?.includes("night") && (_jsx("tr", { children: _jsx(Rows, { kind: "night", rows: orderedNights }) }))] })] }) }) }));
29
29
  });
30
30
  function Rows({ kind, rows }) {
31
31
  const Icon = kind === "dawn" ? DawnIcon : NightIcon;
32
- return (_jsxs(_Fragment, { children: [_jsx("td", { className: css.headingMini, children: _jsxs("span", { className: css.headingInner, children: [_jsx(Icon, {}), _jsx("span", { className: css.headingInnerText, children: _jsx(T, { id: `opening.${kind}` }) })] }) }), rows.map(({ dayType, open }) => {
32
+ return (_jsxs(_Fragment, { children: [_jsx("td", { className: css.heading, children: _jsxs("span", { className: css.headingInner, children: [_jsx(Icon, {}), _jsx(T, { id: `opening.${kind}` })] }) }), rows.map(({ dayType, open }) => {
33
33
  const code = open ? "opening.available" : "opening.unavailable";
34
34
  const classes = classNames(css.cell, {
35
35
  [css.cellAvailable]: open,
@@ -3,7 +3,7 @@
3
3
  width: 100%;
4
4
  max-width: 1200px;
5
5
  height: 300px;
6
- margin: 30px auto;
6
+ margin: 40px auto;
7
7
  border-radius: var(--radius-200);
8
8
  overflow: hidden;
9
9
  }
@@ -14,7 +14,7 @@
14
14
  display: flex;
15
15
  flex-direction: column;
16
16
  gap: 40px;
17
- margin: 36px auto;
17
+ margin: 40px auto;
18
18
  padding: 0 10px;
19
19
  }
20
20
 
@@ -29,6 +29,17 @@
29
29
  padding: 20px;
30
30
  border: 2px solid hsl(var(--primary));
31
31
  border-radius: calc(var(--radius-400) * 2);
32
+ background-image: linear-gradient(to right, white, white),
33
+ linear-gradient(to right, white, white),
34
+ linear-gradient(to right, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0)),
35
+ linear-gradient(to left, rgba(0, 0, 0, 0.25), rgba(255, 255, 255, 0));
36
+ background-position: left center, right center, left center, right center;
37
+ background-repeat: no-repeat;
38
+ background-color: white;
39
+ background-size: 40px 100%, 40px 100%, 20px 100%, 20px 100%;
40
+
41
+ background-attachment: local, local, scroll, scroll;
42
+
32
43
  overflow: auto;
33
44
  }
34
45
 
@@ -61,7 +72,6 @@
61
72
  line-height: 1;
62
73
  white-space: nowrap;
63
74
  min-width: 60px;
64
- margin-top: 25px;
65
75
  }
66
76
 
67
77
  @media (min-width: 580px) {
@@ -71,29 +81,21 @@
71
81
  }
72
82
 
73
83
  .headingInner {
74
- display: block;
75
- height: 100%;
76
- /* height: 18px; */
77
- line-height: 1;
84
+ height: 18px;
85
+ display: flex;
86
+ align-items: flex-end;
87
+ justify-content: center;
88
+ text-align: center;
89
+ gap: 10px;
90
+ margin: 20px 0;
78
91
  background-color: hsla(var(--secondary), 10%);
79
92
  white-space: nowrap;
80
93
  }
81
94
 
82
- .headingInnerText {
83
- display: none;
84
- }
85
-
86
- @media (min-width: 580px) {
87
- .headingInnerText {
88
- display: inline-block;
89
- }
90
- }
91
-
92
95
  .headingInner > svg {
93
96
  min-width: 30px;
94
97
  width: 30px;
95
98
  height: 30px;
96
- margin-right: 6%;
97
99
  }
98
100
 
99
101
  .table td {
@@ -119,20 +121,13 @@
119
121
  }
120
122
 
121
123
  .cellInner {
122
- margin-top: 35px;
123
- padding: 0 10px;
124
+ padding: 20px 10px;
124
125
  display: flex;
125
126
  align-items: center;
126
127
  justify-content: center;
127
128
  text-align: center;
128
129
  }
129
130
 
130
- @media (min-width: 580px) {
131
- .cellInner {
132
- margin-top: 40px;
133
- }
134
- }
135
-
136
131
  .cellAvailable {
137
132
  color: hsl(var(--secondary));
138
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pois.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/pois.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAO,QAAQ,EAAQ,MAAM,SAAS,CAAC;AAwDnD,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxB,CAAC;AASF,QAAA,MAAM,IAAI,8EA+KR,CAAC;AAIH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"pois.d.ts","sourceRoot":"","sources":["../../../../src/lbm/components/lumiplan/pois.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAO,QAAQ,EAAQ,MAAM,SAAS,CAAC;AAwDnD,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxB,CAAC;AASF,QAAA,MAAM,IAAI,8EA0LR,CAAC;AAIH,eAAe,IAAI,CAAC"}
@@ -97,7 +97,7 @@ const Pois = React.forwardRef(({ pois }, ref) => {
97
97
  setExpanded(!expanded);
98
98
  };
99
99
  const displayedPois = expanded ? flattenedPois : flattenedPois.slice(0, 16);
100
- return (_jsx("div", { className: css.pois, children: _jsxs("div", { className: css.inner, children: [_jsx("div", { className: css.list, children: displayedPois.map(({ id, name, type, liftType, trailType, trailLevel, sectorName, messagePoi, openingStatus, snowQuality, groomingStatus, }) => {
100
+ return (_jsx("div", { className: css.pois, children: _jsxs("div", { className: css.inner, children: [_jsx("div", { className: css.list, children: displayedPois.map(({ id, name, type, liftType, trailType, trailLevel, sectorName, messagePoi, openingStatus, snowQuality, groomingStatus, openingTimesReal, }) => {
101
101
  const isLift = type === "SKI_LIFT";
102
102
  const translationCode = isLift
103
103
  ? `pois.lifts.${liftType}`
@@ -106,7 +106,7 @@ const Pois = React.forwardRef(({ pois }, ref) => {
106
106
  const trailLevelLabel = hasTrailLevel
107
107
  ? `(${t(lang, `pois.trailLevels.${trailLevel}`)})`
108
108
  : null;
109
- const specialTrail = Object.keys(SPECIAL_TRAILS).find((key) => name.includes(key));
109
+ const specialTrail = Object.keys(SPECIAL_TRAILS).find((key) => name?.includes(key));
110
110
  const message = messagePoi?.data?.find(({ language }) => {
111
111
  const _lang = lang === "fr" ? "fr_FR" : "en_US";
112
112
  return language === _lang;
@@ -117,9 +117,15 @@ const Pois = React.forwardRef(({ pois }, ref) => {
117
117
  [css[trailLevel]]: hasTrailLevel,
118
118
  });
119
119
  let status = "OPEN";
120
- if (openingStatus.includes("DELAYED")) {
120
+ if (openingStatus?.includes("DELAYED")) {
121
121
  status = "DELAYED";
122
122
  }
123
+ else if (openingStatus?.includes("STOPPED")) {
124
+ status = "STOPPED";
125
+ }
126
+ else if (openingStatus?.includes("FORECAST")) {
127
+ status = "FORECAST";
128
+ }
123
129
  else {
124
130
  status = "CLOSED";
125
131
  }
@@ -127,7 +133,7 @@ const Pois = React.forwardRef(({ pois }, ref) => {
127
133
  const Icon = isLift
128
134
  ? LIFT_ICONS[liftType] || LIFT_ICONS.DEFAULT
129
135
  : TRAIL_ICONS[trailType] || TRAIL_ICONS.DEFAULT;
130
- return (_jsxs("div", { className: classes, children: [_jsx("div", { className: css.poiIcon, children: specialTrail ? (_jsx(Image, { src: SPECIAL_TRAILS[specialTrail], width: 50, height: 50, alt: specialTrail })) : (_jsx(Icon, {})) }), _jsxs("div", { className: css.poiInfo, children: [_jsxs("div", { className: css.poiHeader, children: [_jsx("span", { className: css.poiName, children: name }), _jsx("span", { className: css.poiStatus, children: _jsx(T, { id: statusCode }) })] }), _jsxs("div", { className: css.poiDetail, children: [_jsxs("div", { className: css.poiDetailHeader, children: [_jsx("b", { children: sectorName }), " | ", _jsx(T, { id: translationCode }), " ", trailLevelLabel] }), !isLift && (_jsxs("div", { className: css.poiTrailDetail, children: [hasGroomingStatus && (_jsx("div", { className: css.poiTrailDetailItem, children: _jsx(T, { id: `snow.grooming.states.${groomingStatus}` }) })), hasSnowQuality && (_jsxs("div", { className: css.poiTrailDetailItem, children: [_jsx(T, { id: "snow.snow-quality.title" }), " :", " ", _jsx(T, { id: `snow.snow-quality.states.${snowQuality}` })] }))] }))] })] }), _jsx("div", { className: css.poiMessage, children: message && (_jsx(Tooltip, { content: message.data, children: _jsx(Button, { variant: "transparent", children: _jsx(Icons.Info, {}) }) })) })] }, id));
136
+ return (_jsxs("div", { className: classes, children: [_jsx("div", { className: css.poiIcon, children: specialTrail ? (_jsx(Image, { src: SPECIAL_TRAILS[specialTrail], width: 50, height: 50, alt: specialTrail })) : (_jsx(Icon, {})) }), _jsxs("div", { className: css.poiInfo, children: [_jsxs("div", { className: css.poiHeader, children: [_jsx("span", { className: css.poiName, children: name }), _jsx("span", { className: css.poiStatus, children: _jsx(T, { id: statusCode }) })] }), _jsxs("div", { className: css.poiDetail, children: [_jsxs("div", { className: css.poiDetailHeader, children: [_jsx("b", { children: sectorName }), " | ", _jsx(T, { id: translationCode }), " ", trailLevelLabel] }), !isLift && (_jsxs("div", { className: css.poiTrailDetail, children: [hasGroomingStatus && (_jsx("div", { className: css.poiTrailDetailItem, children: _jsx(T, { id: `snow.grooming.states.${groomingStatus}` }) })), hasSnowQuality && (_jsxs("div", { className: css.poiTrailDetailItem, children: [_jsx(T, { id: "snow.snow-quality.title" }), " :", " ", _jsx(T, { id: `snow.snow-quality.states.${snowQuality}` })] }))] })), openingTimesReal && (_jsxs("div", { className: css.poiOpeningTimes, children: [openingTimesReal.beginTime, " -", " ", openingTimesReal.endTime] }))] })] }), _jsx("div", { className: css.poiMessage, children: message && (_jsx(Tooltip, { content: message.data, children: _jsx(Button, { variant: "transparent", children: _jsx(Icons.Info, {}) }) })) })] }, id));
131
137
  }) }), _jsx(Tooltip, { content: t(lang, expanded ? "see-less" : "see-more"), children: _jsx(Button, { className: css.expandButton, variant: "transparent", onClick: toggleExpanded, children: _jsx(ExpandIcon, {}) }) })] }) }));
132
138
  });
133
139
  Pois.displayName = "Pois";
@@ -3,12 +3,12 @@
3
3
  justify-content: center;
4
4
  flex-wrap: wrap;
5
5
  gap: 20px;
6
- margin-bottom: 40px;
6
+ margin-bottom: 10px;
7
7
  }
8
8
 
9
9
  button.button {
10
- --ds-button-padding: 12px;
11
- --ds-button-font-size: 16px;
10
+ --ds-button-padding: 14px;
11
+ --ds-button-font-size: 19px;
12
12
  --ds-button-foreground: hsl(var(--primary));
13
13
  --ds-button-font-weight: 400;
14
14
  --ds-button-background: transparent;
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { useUbloContext } from "ublo/with-ublo";
4
4
  import Loader from "dt-design-system/es/loader";
@@ -19,8 +19,8 @@ const RoadCondition = React.forwardRef(({ resortAccess }, ref) => {
19
19
  const _lang = lang === "fr" ? "fr_FR" : "en_US";
20
20
  return language === _lang;
21
21
  });
22
- const hasValidNumber = !isNaN(parseInt(number, 10));
23
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: css.condition, children: [_jsx(RoadConditionIcon, { className: css.icon }), _jsxs("div", { className: css.right, children: [_jsxs("div", { className: css.top, children: [_jsxs("div", { className: css.name, children: [name, " ", hasValidNumber && _jsxs(_Fragment, { children: ["n\u00B0", number] })] }), _jsxs("div", { className: css.surface, children: [_jsx("b", { children: _jsx(T, { id: "road-conditions.surface.title" }) }), _jsx(T, { id: `road-conditions.surface.states.${surface}` }), "."] }), _jsxs("div", { className: css.equipment, children: [_jsx("b", { children: _jsx(T, { id: "road-conditions.equipment.title" }) }), _jsx(T, { id: `road-conditions.equipment.states.${equipment}` })] })] }), roadInfoData && (_jsx("div", { className: css.bottom, dangerouslySetInnerHTML: { __html: roadInfoData.data } }))] })] }, id), _jsx("div", { className: css.status, children: _jsx(T, { id: `road-conditions.status.${status ? "OPENED" : "CLOSED"}` }) })] }));
22
+ const hasValidNumber = !isNaN(parseInt(number, 10)) && number !== "0";
23
+ return (_jsxs("div", { className: css.condition, children: [_jsx(RoadConditionIcon, { className: css.icon }), _jsxs("div", { className: css.right, children: [_jsxs("div", { className: css.status, children: [_jsx(T, { id: "road-conditions.road" }), " ", _jsx(T, { id: `road-conditions.status.${status ? "OPENED" : "CLOSED"}` })] }), _jsxs("div", { className: css.top, children: [name?.trim() && (_jsxs("div", { className: css.name, children: [name, " ", hasValidNumber && _jsxs(_Fragment, { children: ["n\u00B0", number] })] })), _jsxs("div", { className: css.surface, children: [_jsx("b", { children: _jsx(T, { id: "road-conditions.surface.title" }) }), _jsx(T, { id: `road-conditions.surface.states.${surface}` }), "."] }), _jsxs("div", { className: css.equipment, children: [_jsx("b", { children: _jsx(T, { id: "road-conditions.equipment.title" }) }), _jsx(T, { id: `road-conditions.equipment.states.${equipment}` })] })] }), roadInfoData && (_jsx("div", { className: css.bottom, dangerouslySetInnerHTML: { __html: roadInfoData.data } }))] })] }, id));
24
24
  })] }));
25
25
  });
26
26
  RoadCondition.displayName = "RoadCondition";
@@ -55,7 +55,12 @@
55
55
  display: flex;
56
56
  flex-direction: column;
57
57
  margin-right: auto;
58
- gap: 10px;
58
+ }
59
+
60
+ .status {
61
+ font-size: 17px;
62
+ font-weight: 700;
63
+ text-transform: uppercase;
59
64
  }
60
65
 
61
66
  .top {
@@ -76,6 +81,10 @@
76
81
  font-weight: 700;
77
82
  }
78
83
 
84
+ .name:empty {
85
+ display: none;
86
+ }
87
+
79
88
  .surface,
80
89
  .equipment {
81
90
  font-size: 17px;
@@ -84,9 +93,3 @@
84
93
  .bottom {
85
94
  font-size: 15px;
86
95
  }
87
-
88
- .status {
89
- font-size: 20px;
90
- font-weight: 700;
91
- text-transform: uppercase;
92
- }
@@ -4,5 +4,5 @@ import SnowCover from "../icons/snow-cover";
4
4
  import css from "./snow-data.module.css";
5
5
  export default function SnowData({ data, expanded }) {
6
6
  const { snowQuality, snowTotalDepth, freshSnowFallDepth12H, freshSnowFallDepth24H, freshSnowFallDepth48H, freshSnowFallDepth72H, } = data;
7
- return (_jsxs("div", { className: css.snow, children: [_jsx(SnowCover, { className: css.snowIcon }), _jsxs("div", { className: css.snowInfo, children: [_jsxs("div", { className: css.snowState, children: [_jsx(T, { id: "snow.snow-quality.title" }), " ", snowQuality && snowQuality !== "UNDEF" && (_jsxs(_Fragment, { children: [": ", _jsx(T, { id: `snow.snow-quality.states.${snowQuality}` })] }))] }), _jsxs("div", { className: css.snowDepth, children: [snowTotalDepth?.value || 0, _jsx(T, { id: snowTotalDepth?.unit || "CENTIMETER" })] }), expanded && (_jsxs("div", { className: css.expanded, children: [freshSnowFallDepth12H && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 12h :", " ", freshSnowFallDepth12H.value, _jsx(T, { id: freshSnowFallDepth12H.unit })] })), freshSnowFallDepth24H && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 24h :", " ", freshSnowFallDepth24H.value, _jsx(T, { id: freshSnowFallDepth24H.unit })] })), freshSnowFallDepth48H && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 48h :", " ", freshSnowFallDepth48H.value, _jsx(T, { id: freshSnowFallDepth48H.unit })] })), freshSnowFallDepth72H && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 72h :", " ", freshSnowFallDepth72H.value, _jsx(T, { id: freshSnowFallDepth72H.unit })] }))] }))] })] }));
7
+ return (_jsxs("div", { className: css.snow, children: [_jsx(SnowCover, { className: css.snowIcon }), _jsxs("div", { className: css.snowInfo, children: [_jsxs("div", { className: css.snowState, children: [_jsx(T, { id: "snow.snow-quality.title" }), " ", snowQuality && snowQuality !== "UNDEF" && (_jsxs(_Fragment, { children: [": ", _jsx(T, { id: `snow.snow-quality.states.${snowQuality}` })] }))] }), _jsxs("div", { className: css.snowDepth, children: [snowTotalDepth?.value || 0, _jsx(T, { id: snowTotalDepth?.unit || "CENTIMETER" })] }), expanded && (_jsxs("div", { className: css.expanded, children: [freshSnowFallDepth12H?.value !== 0 && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 12h :", " ", freshSnowFallDepth12H.value, _jsx(T, { id: freshSnowFallDepth12H.unit })] })), freshSnowFallDepth24H?.value !== 0 && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 24h :", " ", freshSnowFallDepth24H.value, _jsx(T, { id: freshSnowFallDepth24H.unit })] })), freshSnowFallDepth48H?.value !== 0 && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 48h :", " ", freshSnowFallDepth48H.value, _jsx(T, { id: freshSnowFallDepth48H.unit })] })), freshSnowFallDepth72H?.value !== 0 && (_jsxs("div", { className: css.snowFall, children: [_jsx(T, { id: "snow.fresh-snow-fall" }), " 72h :", " ", freshSnowFallDepth72H.value, _jsx(T, { id: freshSnowFallDepth72H.unit })] }))] }))] })] }));
8
8
  }
@@ -0,0 +1,7 @@
1
+ export default function Days({ days, currentDayIndex, setCurrentDayIndex, lang, }: {
2
+ days: any;
3
+ currentDayIndex: any;
4
+ setCurrentDayIndex: any;
5
+ lang: any;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=weather-days.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weather-days.d.ts","sourceRoot":"","sources":["../../../../../src/lbm/components/lumiplan/weather/weather-days.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,IAAI,EACJ,eAAe,EACf,kBAAkB,EAClB,IAAI,GACL;;;;;CAAA,2CAiEA"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import classNames from "classnames";
4
+ import Button from "dt-design-system/es/button";
5
+ import T from "../i18n/translations";
6
+ // import useWindowSizes from "ublo-lib/es/common/hooks/use-window-sizes";
7
+ import useWindowSizes from "../../../../common/hooks/use-window-sizes";
8
+ import css from "./weather-days.module.css";
9
+ export default function Days({ days, currentDayIndex, setCurrentDayIndex, lang, }) {
10
+ const [showLeftShadow, setShowLeftShadow] = React.useState(false);
11
+ const [showRightShadow, setShowRightShadow] = React.useState(false);
12
+ const containerRef = React.useRef(null);
13
+ const scrollerRef = React.useRef(null);
14
+ const { width, height } = useWindowSizes();
15
+ const refreshShadows = React.useCallback(() => {
16
+ const container = containerRef.current;
17
+ const scroller = scrollerRef.current;
18
+ if (container && scroller) {
19
+ setShowLeftShadow(scroller.scrollLeft > 50);
20
+ const maxScroll = Math.round(scroller.scrollWidth) - Math.round(scroller.clientWidth);
21
+ setShowRightShadow(scroller.scrollLeft < maxScroll - 50);
22
+ }
23
+ }, []);
24
+ React.useEffect(() => {
25
+ refreshShadows();
26
+ }, [refreshShadows, width, height]);
27
+ const daysClasses = classNames(css.days, {
28
+ [css.leftShadow]: showLeftShadow,
29
+ [css.rightShadow]: showRightShadow,
30
+ });
31
+ return (_jsx("div", { ref: containerRef, className: daysClasses, children: _jsx("div", { ref: scrollerRef, onScroll: refreshShadows, className: css.content, children: days.map((day, i) => {
32
+ const { date, am, pm } = day;
33
+ if (!pm || !am)
34
+ return null;
35
+ const isSelected = i === currentDayIndex;
36
+ const updateCurrentDay = () => {
37
+ setCurrentDayIndex(i);
38
+ };
39
+ const isToday = new Date(date).getDate() === new Date().getDate();
40
+ const locale = lang === "fr" ? "fr-FR" : "en-UK";
41
+ const today = new Date(date).toLocaleDateString(locale, {
42
+ weekday: "long",
43
+ });
44
+ const formatedDate = new Date(date).toLocaleDateString(locale, {
45
+ day: "2-digit",
46
+ month: "2-digit",
47
+ year: "numeric",
48
+ });
49
+ const classes = classNames(css.day, {
50
+ [css.daySelected]: isSelected,
51
+ });
52
+ return (_jsxs(Button, { className: classes, onClick: updateCurrentDay, children: [_jsx("b", { children: isToday ? _jsx(T, { id: "weather.today" }) : today }), formatedDate] }, date));
53
+ }) }) }));
54
+ }
@@ -0,0 +1,66 @@
1
+ .days {
2
+ position: relative;
3
+ }
4
+
5
+ .days::before,
6
+ .days::after {
7
+ content: "";
8
+ position: absolute;
9
+ top: 0;
10
+ width: 40px;
11
+ height: 100%;
12
+ background: linear-gradient(
13
+ to right,
14
+ #fff,
15
+ rgba(255, 255, 255, 0.6),
16
+ transparent
17
+ );
18
+ z-index: 1;
19
+ opacity: 0;
20
+ transition: opacity 320ms ease;
21
+ pointer-events: none;
22
+ }
23
+
24
+ .days::before {
25
+ left: 0;
26
+ }
27
+
28
+ .days::after {
29
+ right: 0;
30
+ transform: rotate(0.5turn);
31
+ }
32
+
33
+ .leftShadow::before,
34
+ .rightShadow::after {
35
+ opacity: 1;
36
+ }
37
+
38
+ .content {
39
+ width: 100%;
40
+ display: flex;
41
+ align-items: center;
42
+ overflow: auto;
43
+ scroll-snap-type: x proximity;
44
+ }
45
+
46
+ button.day {
47
+ --ds-button-padding: 16px;
48
+ --ds-button-font-size: 14px;
49
+ --ds-button-foreground: hsl(var(--primary));
50
+ --ds-button-font-weight: 400;
51
+ --ds-button-background: transparent;
52
+ --ds-button-hover-background: hsla(var(--primary), 10%);
53
+ --ds-button-radius: 0;
54
+
55
+ flex-direction: column;
56
+ scroll-snap-align: start;
57
+ }
58
+
59
+ button.daySelected {
60
+ position: relative;
61
+ --ds-button-background: hsla(var(--primary), 10%);
62
+ }
63
+
64
+ button.day b {
65
+ text-transform: uppercase;
66
+ }
@@ -0,0 +1,6 @@
1
+ export default function Zones({ weatherZones, currentZoneIndex, setCurrentZoneIndex, }: {
2
+ weatherZones: any;
3
+ currentZoneIndex: any;
4
+ setCurrentZoneIndex: any;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=weather-zones.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weather-zones.d.ts","sourceRoot":"","sources":["../../../../../src/lbm/components/lumiplan/weather/weather-zones.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,GACpB;;;;CAAA,2CAgEA"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import classNames from "classnames";
4
+ // import useWindowSizes from "ublo-lib/es/common/hooks/use-window-sizes";
5
+ import useWindowSizes from "../../../../common/hooks/use-window-sizes";
6
+ import Button from "dt-design-system/es/button";
7
+ import T from "../i18n/translations";
8
+ import css from "./weather-zones.module.css";
9
+ export default function Zones({ weatherZones, currentZoneIndex, setCurrentZoneIndex, }) {
10
+ const [showLeftShadow, setShowLeftShadow] = React.useState(false);
11
+ const [showRightShadow, setShowRightShadow] = React.useState(false);
12
+ const containerRef = React.useRef(null);
13
+ const scrollerRef = React.useRef(null);
14
+ const { width, height } = useWindowSizes();
15
+ const refreshShadows = React.useCallback(() => {
16
+ const container = containerRef.current;
17
+ const scroller = scrollerRef.current;
18
+ if (container && scroller) {
19
+ setShowLeftShadow(scroller.scrollLeft > 50);
20
+ const maxScroll = Math.round(scroller.scrollWidth) - Math.round(scroller.clientWidth);
21
+ setShowRightShadow(scroller.scrollLeft < maxScroll - 50);
22
+ }
23
+ }, []);
24
+ React.useEffect(() => {
25
+ refreshShadows();
26
+ }, [refreshShadows, width, height]);
27
+ const zonesClasses = classNames(css.zones, {
28
+ [css.leftShadow]: showLeftShadow,
29
+ [css.rightShadow]: showRightShadow,
30
+ });
31
+ return (_jsx("div", { ref: containerRef, className: zonesClasses, children: _jsx("div", { ref: scrollerRef, onScroll: refreshShadows, className: css.content, children: weatherZones.map((zone, i) => {
32
+ const hasData = Boolean(zone.weatherInfos.length > 0 &&
33
+ zone.weatherInfos[0].am &&
34
+ zone.weatherInfos[0].pm);
35
+ if (!hasData)
36
+ return null;
37
+ const { name, altitude } = zone;
38
+ const { value, unit } = altitude;
39
+ const isSelected = i === currentZoneIndex;
40
+ const updateCurrentZone = () => {
41
+ setCurrentZoneIndex(i);
42
+ };
43
+ const classes = classNames(css.zone, {
44
+ [css.zoneSelected]: isSelected,
45
+ });
46
+ return (_jsxs(Button, { className: classes, onClick: updateCurrentZone, children: [_jsx("b", { children: name }), " ", value, _jsx("span", { children: _jsx(T, { id: unit }) })] }, name));
47
+ }) }) }));
48
+ }
@@ -0,0 +1,79 @@
1
+ .zones {
2
+ position: relative;
3
+ margin-bottom: 30px;
4
+ }
5
+
6
+ .zones::before,
7
+ .zones::after {
8
+ content: "";
9
+ position: absolute;
10
+ top: 0;
11
+ width: 40px;
12
+ height: 100%;
13
+ background: linear-gradient(
14
+ to right,
15
+ #fff,
16
+ rgba(255, 255, 255, 0.6),
17
+ transparent
18
+ );
19
+ z-index: 1;
20
+ opacity: 0;
21
+ transition: opacity 320ms ease;
22
+ pointer-events: none;
23
+ }
24
+
25
+ .zones::before {
26
+ left: 0;
27
+ }
28
+
29
+ .zones::after {
30
+ right: 0;
31
+ transform: rotate(0.5turn);
32
+ }
33
+
34
+ .leftShadow::before,
35
+ .rightShadow::after {
36
+ opacity: 1;
37
+ }
38
+
39
+ .content {
40
+ width: 100%;
41
+ display: flex;
42
+ align-items: center;
43
+ gap: 10px;
44
+ overflow: auto;
45
+ scroll-snap-type: x proximity;
46
+ }
47
+
48
+ button.zone {
49
+ --ds-button-padding: 8px;
50
+ --ds-button-font-size: 14px;
51
+ --ds-button-foreground: hsl(var(--primary));
52
+ --ds-button-font-weight: 400;
53
+ --ds-button-background: transparent;
54
+ --ds-button-hover-background: hsla(var(--primary), 10%);
55
+ --ds-button-shadow: 0 0 0 1px hsl(var(--primary)) inset;
56
+
57
+ display: block;
58
+ white-space: nowrap;
59
+ scroll-snap-align: start;
60
+ }
61
+
62
+ button.zone:first-child {
63
+ margin-left: auto;
64
+ }
65
+
66
+ button.zone:last-child {
67
+ margin-right: auto;
68
+ }
69
+
70
+ button.zoneSelected {
71
+ --ds-button-foreground: hsl(var(--grey-000));
72
+ --ds-button-shadow: 0;
73
+
74
+ background: var(--blue-gradient);
75
+ }
76
+
77
+ button.zone b {
78
+ text-transform: uppercase;
79
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"weather.d.ts","sourceRoot":"","sources":["../../../../../src/lbm/components/lumiplan/weather/weather.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,QAAA,MAAM,OAAO,8EA+IZ,CAAC;AAIF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"weather.d.ts","sourceRoot":"","sources":["../../../../../src/lbm/components/lumiplan/weather/weather.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,KAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,QAAA,MAAM,OAAO,8EA+EZ,CAAC;AAIF,eAAe,OAAO,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import classNames from "classnames";
4
3
  import { useUbloContext } from "ublo/with-ublo";
5
4
  import Button from "dt-design-system/es/button";
6
5
  import Tooltip from "dt-design-system/es/tooltip";
@@ -9,8 +8,10 @@ import * as Icons from "dt-design-system/es/icons";
9
8
  import AvalancheRisk from "./avalanche-risk";
10
9
  import SnowData from "./snow-data";
11
10
  import WeatherData from "./weather-data";
12
- import T, { t } from "../i18n/translations";
11
+ import { t } from "../i18n/translations";
13
12
  import css from "./weather.module.css";
13
+ import Days from "./weather-days";
14
+ import Zones from "./weather-zones";
14
15
  const Weather = React.forwardRef(({ weather }, ref) => {
15
16
  const { lang } = useUbloContext();
16
17
  const [currentZoneIndex, setCurrentZoneIndex] = React.useState(0);
@@ -36,45 +37,7 @@ const Weather = React.forwardRef(({ weather }, ref) => {
36
37
  const toggleExpanded = () => {
37
38
  setExpanded(!expanded);
38
39
  };
39
- return (_jsxs("div", { ref: ref, className: css.weather, "data-tags": t(lang, "weather.title"), children: [_jsxs("div", { className: css.header, children: [_jsx("div", { className: css.days, children: days.map((day, i) => {
40
- const { date, am, pm } = day;
41
- if (!pm || !am)
42
- return null;
43
- const isSelected = i === currentDayIndex;
44
- const updateCurrentDay = () => {
45
- setCurrentDayIndex(i);
46
- };
47
- const isToday = new Date(date).getDate() === new Date().getDate();
48
- const locale = lang === "fr" ? "fr-FR" : "en-UK";
49
- const today = new Date(date).toLocaleDateString(locale, {
50
- weekday: "long",
51
- });
52
- const formatedDate = new Date(date).toLocaleDateString(locale, {
53
- day: "2-digit",
54
- month: "2-digit",
55
- year: "numeric",
56
- });
57
- const classes = classNames(css.day, {
58
- [css.daySelected]: isSelected,
59
- });
60
- return (_jsxs(Button, { className: classes, onClick: updateCurrentDay, children: [_jsx("b", { children: isToday ? _jsx(T, { id: "weather.today" }) : today }), formatedDate] }, date));
61
- }) }), _jsx("div", { className: css.zones, children: weatherZones.map((zone, i) => {
62
- const hasData = Boolean(zone.weatherInfos.length > 0 &&
63
- zone.weatherInfos[0].am &&
64
- zone.weatherInfos[0].pm);
65
- if (!hasData)
66
- return null;
67
- const { name, altitude } = zone;
68
- const { value, unit } = altitude;
69
- const isSelected = i === currentZoneIndex;
70
- const updateCurrentZone = () => {
71
- setCurrentZoneIndex(i);
72
- };
73
- const classes = classNames(css.zone, {
74
- [css.zoneSelected]: isSelected,
75
- });
76
- return (_jsxs(Button, { className: classes, onClick: updateCurrentZone, children: [_jsx("b", { children: name }), " ", value, _jsx("span", { children: _jsx(T, { id: unit }) })] }, name));
77
- }) })] }), _jsxs("div", { className: css.info, children: [_jsx(AvalancheRisk, { avalancheRisk: snowData.avalancheRisk }), _jsxs("div", { className: css.infoBottom, children: [_jsx(SnowData, { data: snowData, expanded: expanded }), _jsx(WeatherData, { kind: "am", data: am, expanded: expanded }), _jsx(WeatherData, { kind: "pm", data: pm, expanded: expanded })] }), _jsx(Tooltip, { content: t(lang, expanded ? "see-less" : "see-more"), children: _jsx(Button, { className: css.expandButton, variant: "transparent", onClick: toggleExpanded, children: _jsx(ExpandIcon, {}) }) })] })] }));
40
+ return (_jsxs("div", { ref: ref, className: css.weather, "data-tags": t(lang, "weather.title"), children: [_jsx(Zones, { weatherZones: weatherZones, currentZoneIndex: currentZoneIndex, setCurrentZoneIndex: setCurrentZoneIndex }), _jsx(Days, { days: days, currentDayIndex: currentDayIndex, setCurrentDayIndex: setCurrentDayIndex, lang: lang }), _jsxs("div", { className: css.info, children: [_jsx(AvalancheRisk, { avalancheRisk: snowData.avalancheRisk }), _jsxs("div", { className: css.infoBottom, children: [_jsx(SnowData, { data: snowData, expanded: expanded }), _jsx(WeatherData, { kind: "am", data: am, expanded: expanded }), _jsx(WeatherData, { kind: "pm", data: pm, expanded: expanded })] }), _jsx(Tooltip, { content: t(lang, expanded ? "see-less" : "see-more"), children: _jsx(Button, { className: css.expandButton, variant: "transparent", onClick: toggleExpanded, children: _jsx(ExpandIcon, {}) }) })] })] }));
78
41
  });
79
42
  Weather.displayName = "Weather";
80
43
  export default Weather;
@@ -3,7 +3,7 @@
3
3
  width: 100%;
4
4
  max-width: 1200px;
5
5
  height: 300px;
6
- margin: 30px auto;
6
+ margin: 20px auto;
7
7
  border-radius: var(--radius-200);
8
8
  overflow: hidden;
9
9
  }
@@ -13,7 +13,7 @@
13
13
  max-width: 1200px;
14
14
  display: flex;
15
15
  flex-direction: column;
16
- margin: 36px auto;
16
+ margin: 20px auto;
17
17
  padding: 0 10px;
18
18
  }
19
19
 
@@ -23,74 +23,6 @@
23
23
  }
24
24
  }
25
25
 
26
- .header {
27
- display: flex;
28
- flex-direction: column-reverse;
29
- gap: 16px;
30
- overflow: auto;
31
- }
32
-
33
- @media (min-width: 700px) {
34
- .header {
35
- flex-direction: row;
36
- align-items: center;
37
- justify-content: space-between;
38
- }
39
- }
40
-
41
- .days {
42
- display: flex;
43
- }
44
-
45
- .zones {
46
- display: flex;
47
- gap: 10px;
48
- }
49
-
50
- button.zone {
51
- --ds-button-padding: 12px;
52
- --ds-button-font-size: 14px;
53
- --ds-button-foreground: hsl(var(--primary));
54
- --ds-button-font-weight: 400;
55
- --ds-button-background: transparent;
56
- --ds-button-hover-background: hsla(var(--primary), 10%);
57
- --ds-button-shadow: 0 0 0 1px hsl(var(--primary)) inset;
58
-
59
- display: block;
60
- }
61
-
62
- button.zoneSelected {
63
- --ds-button-foreground: hsl(var(--grey-000));
64
- --ds-button-shadow: 0;
65
-
66
- background: var(--blue-gradient);
67
- }
68
-
69
- button.zone b {
70
- text-transform: uppercase;
71
- }
72
-
73
- button.day {
74
- --ds-button-padding: 16px;
75
- --ds-button-font-size: 14px;
76
- --ds-button-foreground: hsl(var(--primary));
77
- --ds-button-font-weight: 400;
78
- --ds-button-background: transparent;
79
- --ds-button-hover-background: hsla(var(--primary), 10%);
80
- --ds-button-radius: 0;
81
-
82
- flex-direction: column;
83
- }
84
-
85
- button.daySelected {
86
- position: relative;
87
- --ds-button-background: hsla(var(--primary), 10%);
88
- }
89
-
90
- button.day b {
91
- text-transform: uppercase;
92
- }
93
-
94
26
  .info {
95
27
  display: flex;
96
28
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.21.6",
3
+ "version": "1.21.8",
4
4
  "peerDependencies": {
5
5
  "dt-design-system": "^3.1.5",
6
6
  "leaflet": "^1.9.1",