jourma-react-lib 0.1.0 → 0.2.0
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.
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +187 -88
- package/dist/src/components/CollectionThumbnail/CollectionThumbnail.d.ts +15 -0
- package/dist/src/components/CollectionThumbnail/CollectionThumbnail.stories.d.ts +11 -0
- package/dist/src/components/CollectionThumbnail/index.d.ts +2 -0
- package/dist/src/components/LocationTeaser/LocationTeaser.d.ts +21 -0
- package/dist/src/components/LocationTeaser/LocationTeaser.stories.d.ts +11 -0
- package/dist/src/components/LocationTeaser/index.d.ts +2 -0
- package/dist/src/components/ProductTeaser/ProductTeaser.d.ts +19 -0
- package/dist/src/components/ProductTeaser/ProductTeaser.stories.d.ts +10 -0
- package/dist/src/components/ProductTeaser/index.d.ts +2 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react");function w({variant:l="filled",intent:a="normal",size:o="large",label:c,htmlType:i="button",className:n,disabled:s,children:t,...r}){const d=["button",`button--${l}`,`button--${a}`,`button--${o}`,n].filter(Boolean).join(" ");return e.jsx("button",{type:i,className:d,disabled:s,...r,children:t??c??"Button"})}function g({variant:l="filled",intent:a="normal",icon:o,htmlType:c="button",className:i,disabled:n,...s}){const t=["icon-button",`icon-button--${l}`,`icon-button--${a}`,i].filter(Boolean).join(" ");return e.jsx("button",{type:c,className:t,disabled:n,...s,children:e.jsx("span",{className:"icon-button__icon",children:o})})}const N=()=>e.jsxs("svg",{viewBox:"0 0 17 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"text-field__error-icon",children:[e.jsx("circle",{cx:"8.5",cy:"8.5",r:"7.5",stroke:"currentColor",strokeWidth:"1.5"}),e.jsx("line",{x1:"8.5",y1:"4.5",x2:"8.5",y2:"9.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),e.jsx("circle",{cx:"8.5",cy:"12",r:"0.75",fill:"currentColor"})]}),v=m.forwardRef(({size:l="large",label:a,errorMessage:o,errorIcon:c,className:i,disabled:n,onFocus:s,onBlur:t,...r},d)=>{const[_,x]=m.useState(!1),h=m.useCallback(j=>{x(!0),s==null||s(j)},[s]),p=m.useCallback(j=>{x(!1),t==null||t(j)},[t]),b=n?"text-field--disabled":_?"text-field--focused":"",f=["text-field",`text-field--${l}`,b,i].filter(Boolean).join(" "),u=!!o;return l==="compact"?e.jsxs("div",{className:f,children:[e.jsxs("div",{className:"text-field__input-wrapper",children:[a&&e.jsx("label",{className:"text-field__label",children:a}),e.jsx("input",{ref:d,className:"text-field__input",disabled:n,onFocus:h,onBlur:p,...r}),u&&(c??e.jsx(N,{}))]}),u&&e.jsx("p",{className:"text-field__error",children:o})]}):e.jsxs("div",{className:f,children:[a&&e.jsx("label",{className:"text-field__label",children:a}),e.jsxs("div",{className:"text-field__input-wrapper",children:[e.jsx("input",{ref:d,className:"text-field__input",disabled:n,onFocus:h,onBlur:p,...r}),u&&(c??e.jsx(N,{}))]}),u&&e.jsx("p",{className:"text-field__error",children:o})]})});v.displayName="TextField";function C({imageSrc:l,imageAlt:a="",title:o,badgeCount:c,disabled:i=!1,className:n,...s}){const t=["collection-thumbnail",i?"collection-thumbnail--disabled":"",n].filter(Boolean).join(" ");return e.jsxs("div",{className:t,...s,children:[e.jsx("div",{className:"collection-thumbnail__image",children:e.jsx("img",{src:l,alt:a})}),e.jsx("p",{className:"collection-thumbnail__title",children:o}),c!=null&&e.jsx("div",{className:"collection-thumbnail__badge",children:e.jsx("span",{className:"collection-thumbnail__badge-text",children:c})})]})}function k({imageSrc:l,imageAlt:a="",title:o,price:c,priceTranslation:i,discountLabel:n,appIcon:s,className:t,...r}){const d=["product-teaser",t].filter(Boolean).join(" ");return e.jsxs("div",{className:d,...r,children:[e.jsx("div",{className:"product-teaser__image",children:e.jsx("img",{src:l,alt:a})}),e.jsxs("div",{className:"product-teaser__info",children:[e.jsx("p",{className:"product-teaser__title",children:o}),e.jsxs("div",{className:"product-teaser__price-row",children:[e.jsx("span",{className:"product-teaser__price",children:c}),i&&e.jsx("span",{className:"product-teaser__price-translation",children:i})]})]}),s&&e.jsx("div",{className:"product-teaser__app-icon",children:s}),n&&e.jsx("div",{className:"product-teaser__discount",children:n})]})}const B=({filled:l})=>e.jsx("svg",{viewBox:"0 0 24 21",fill:l?"currentColor":"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M12 19.5C12 19.5 1.5 13.5 1.5 6.75C1.5 3.5 4 1.5 6.75 1.5C9 1.5 11 3 12 4.5C13 3 15 1.5 17.25 1.5C20 1.5 22.5 3.5 22.5 6.75C22.5 13.5 12 19.5 12 19.5Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function y({imageSrc:l,imageAlt:a="",title:o,tags:c=[],appIcon:i,showWishlistButton:n=!0,onWishlistClick:s,wishlisted:t=!1,className:r,...d}){const _=["location-teaser",r].filter(Boolean).join(" ");return e.jsxs("div",{className:_,...d,children:[e.jsx("div",{className:"location-teaser__image",children:e.jsx("img",{src:l,alt:a})}),e.jsxs("div",{className:"location-teaser__info",children:[e.jsx("p",{className:"location-teaser__title",children:o}),(c.length>0||i)&&e.jsxs("div",{className:"location-teaser__tags",children:[i&&e.jsx("div",{className:"location-teaser__app-icon-wrapper",children:e.jsx("div",{className:"location-teaser__app-icon",children:i})}),c.map(x=>e.jsx("div",{className:"location-teaser__tag",children:e.jsx("span",{className:"location-teaser__tag-text",children:x})},x))]})]}),n&&e.jsx("button",{className:"location-teaser__wishlist",onClick:s,"aria-label":t?"Remove from wishlist":"Add to wishlist",children:e.jsx(B,{filled:t})})]})}exports.Button=w;exports.CollectionThumbnail=C;exports.IconButton=g;exports.LocationTeaser=y;exports.ProductTeaser=k;exports.TextField=v;
|
package/dist/index.mjs
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
function
|
|
4
|
-
variant:
|
|
5
|
-
intent:
|
|
6
|
-
size:
|
|
7
|
-
label:
|
|
8
|
-
htmlType:
|
|
9
|
-
className:
|
|
10
|
-
disabled:
|
|
11
|
-
children:
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as g, useState as C, useCallback as v } from "react";
|
|
3
|
+
function $({
|
|
4
|
+
variant: a = "filled",
|
|
5
|
+
intent: i = "normal",
|
|
6
|
+
size: r = "large",
|
|
7
|
+
label: c,
|
|
8
|
+
htmlType: s = "button",
|
|
9
|
+
className: n,
|
|
10
|
+
disabled: t,
|
|
11
|
+
children: l,
|
|
12
12
|
...d
|
|
13
13
|
}) {
|
|
14
|
-
const
|
|
14
|
+
const m = [
|
|
15
15
|
"button",
|
|
16
|
+
`button--${a}`,
|
|
16
17
|
`button--${i}`,
|
|
17
|
-
`button--${
|
|
18
|
-
|
|
19
|
-
c
|
|
18
|
+
`button--${r}`,
|
|
19
|
+
n
|
|
20
20
|
].filter(Boolean).join(" ");
|
|
21
|
-
return /* @__PURE__ */
|
|
21
|
+
return /* @__PURE__ */ e(
|
|
22
22
|
"button",
|
|
23
23
|
{
|
|
24
|
-
type:
|
|
25
|
-
className:
|
|
26
|
-
disabled:
|
|
24
|
+
type: s,
|
|
25
|
+
className: m,
|
|
26
|
+
disabled: t,
|
|
27
27
|
...d,
|
|
28
|
-
children:
|
|
28
|
+
children: l ?? c ?? "Button"
|
|
29
29
|
}
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
|
-
function
|
|
33
|
-
variant:
|
|
34
|
-
intent:
|
|
35
|
-
icon:
|
|
36
|
-
htmlType:
|
|
37
|
-
className:
|
|
38
|
-
disabled:
|
|
39
|
-
...
|
|
32
|
+
function T({
|
|
33
|
+
variant: a = "filled",
|
|
34
|
+
intent: i = "normal",
|
|
35
|
+
icon: r,
|
|
36
|
+
htmlType: c = "button",
|
|
37
|
+
className: s,
|
|
38
|
+
disabled: n,
|
|
39
|
+
...t
|
|
40
40
|
}) {
|
|
41
|
-
const
|
|
41
|
+
const l = [
|
|
42
42
|
"icon-button",
|
|
43
|
+
`icon-button--${a}`,
|
|
43
44
|
`icon-button--${i}`,
|
|
44
|
-
|
|
45
|
-
r
|
|
45
|
+
s
|
|
46
46
|
].filter(Boolean).join(" ");
|
|
47
|
-
return /* @__PURE__ */
|
|
47
|
+
return /* @__PURE__ */ e(
|
|
48
48
|
"button",
|
|
49
49
|
{
|
|
50
|
-
type:
|
|
51
|
-
className:
|
|
52
|
-
disabled:
|
|
53
|
-
...
|
|
54
|
-
children: /* @__PURE__ */
|
|
50
|
+
type: c,
|
|
51
|
+
className: l,
|
|
52
|
+
disabled: n,
|
|
53
|
+
...t,
|
|
54
|
+
children: /* @__PURE__ */ e("span", { className: "icon-button__icon", children: r })
|
|
55
55
|
}
|
|
56
56
|
);
|
|
57
57
|
}
|
|
58
|
-
const b = () => /* @__PURE__ */
|
|
58
|
+
const b = () => /* @__PURE__ */ o(
|
|
59
59
|
"svg",
|
|
60
60
|
{
|
|
61
61
|
viewBox: "0 0 17 17",
|
|
@@ -63,7 +63,7 @@ const b = () => /* @__PURE__ */ a(
|
|
|
63
63
|
xmlns: "http://www.w3.org/2000/svg",
|
|
64
64
|
className: "text-field__error-icon",
|
|
65
65
|
children: [
|
|
66
|
-
/* @__PURE__ */
|
|
66
|
+
/* @__PURE__ */ e(
|
|
67
67
|
"circle",
|
|
68
68
|
{
|
|
69
69
|
cx: "8.5",
|
|
@@ -73,7 +73,7 @@ const b = () => /* @__PURE__ */ a(
|
|
|
73
73
|
strokeWidth: "1.5"
|
|
74
74
|
}
|
|
75
75
|
),
|
|
76
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ e(
|
|
77
77
|
"line",
|
|
78
78
|
{
|
|
79
79
|
x1: "8.5",
|
|
@@ -85,77 +85,176 @@ const b = () => /* @__PURE__ */ a(
|
|
|
85
85
|
strokeLinecap: "round"
|
|
86
86
|
}
|
|
87
87
|
),
|
|
88
|
-
/* @__PURE__ */
|
|
88
|
+
/* @__PURE__ */ e("circle", { cx: "8.5", cy: "12", r: "0.75", fill: "currentColor" })
|
|
89
89
|
]
|
|
90
90
|
}
|
|
91
|
-
),
|
|
91
|
+
), k = g(
|
|
92
92
|
({
|
|
93
|
-
size:
|
|
94
|
-
label:
|
|
95
|
-
errorMessage:
|
|
96
|
-
errorIcon:
|
|
97
|
-
className:
|
|
98
|
-
disabled:
|
|
99
|
-
onFocus:
|
|
100
|
-
onBlur:
|
|
93
|
+
size: a = "large",
|
|
94
|
+
label: i,
|
|
95
|
+
errorMessage: r,
|
|
96
|
+
errorIcon: c,
|
|
97
|
+
className: s,
|
|
98
|
+
disabled: n,
|
|
99
|
+
onFocus: t,
|
|
100
|
+
onBlur: l,
|
|
101
101
|
...d
|
|
102
|
-
},
|
|
103
|
-
const [
|
|
104
|
-
(
|
|
105
|
-
|
|
102
|
+
}, m) => {
|
|
103
|
+
const [h, u] = C(!1), f = v(
|
|
104
|
+
(p) => {
|
|
105
|
+
u(!0), t == null || t(p);
|
|
106
106
|
},
|
|
107
|
-
[
|
|
108
|
-
),
|
|
109
|
-
(
|
|
110
|
-
|
|
107
|
+
[t]
|
|
108
|
+
), N = v(
|
|
109
|
+
(p) => {
|
|
110
|
+
u(!1), l == null || l(p);
|
|
111
111
|
},
|
|
112
|
-
[
|
|
113
|
-
),
|
|
112
|
+
[l]
|
|
113
|
+
), w = n ? "text-field--disabled" : h ? "text-field--focused" : "", x = [
|
|
114
114
|
"text-field",
|
|
115
|
-
`text-field--${
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
].filter(Boolean).join(" "),
|
|
119
|
-
return
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
-
|
|
122
|
-
/* @__PURE__ */
|
|
115
|
+
`text-field--${a}`,
|
|
116
|
+
w,
|
|
117
|
+
s
|
|
118
|
+
].filter(Boolean).join(" "), _ = !!r;
|
|
119
|
+
return a === "compact" ? /* @__PURE__ */ o("div", { className: x, children: [
|
|
120
|
+
/* @__PURE__ */ o("div", { className: "text-field__input-wrapper", children: [
|
|
121
|
+
i && /* @__PURE__ */ e("label", { className: "text-field__label", children: i }),
|
|
122
|
+
/* @__PURE__ */ e(
|
|
123
123
|
"input",
|
|
124
124
|
{
|
|
125
|
-
ref:
|
|
125
|
+
ref: m,
|
|
126
126
|
className: "text-field__input",
|
|
127
|
-
disabled:
|
|
128
|
-
onFocus:
|
|
129
|
-
onBlur:
|
|
127
|
+
disabled: n,
|
|
128
|
+
onFocus: f,
|
|
129
|
+
onBlur: N,
|
|
130
130
|
...d
|
|
131
131
|
}
|
|
132
132
|
),
|
|
133
|
-
|
|
133
|
+
_ && (c ?? /* @__PURE__ */ e(b, {}))
|
|
134
134
|
] }),
|
|
135
|
-
|
|
136
|
-
] }) : /* @__PURE__ */
|
|
137
|
-
|
|
138
|
-
/* @__PURE__ */
|
|
139
|
-
/* @__PURE__ */
|
|
135
|
+
_ && /* @__PURE__ */ e("p", { className: "text-field__error", children: r })
|
|
136
|
+
] }) : /* @__PURE__ */ o("div", { className: x, children: [
|
|
137
|
+
i && /* @__PURE__ */ e("label", { className: "text-field__label", children: i }),
|
|
138
|
+
/* @__PURE__ */ o("div", { className: "text-field__input-wrapper", children: [
|
|
139
|
+
/* @__PURE__ */ e(
|
|
140
140
|
"input",
|
|
141
141
|
{
|
|
142
|
-
ref:
|
|
142
|
+
ref: m,
|
|
143
143
|
className: "text-field__input",
|
|
144
|
-
disabled:
|
|
145
|
-
onFocus:
|
|
146
|
-
onBlur:
|
|
144
|
+
disabled: n,
|
|
145
|
+
onFocus: f,
|
|
146
|
+
onBlur: N,
|
|
147
147
|
...d
|
|
148
148
|
}
|
|
149
149
|
),
|
|
150
|
-
|
|
150
|
+
_ && (c ?? /* @__PURE__ */ e(b, {}))
|
|
151
151
|
] }),
|
|
152
|
-
|
|
152
|
+
_ && /* @__PURE__ */ e("p", { className: "text-field__error", children: r })
|
|
153
153
|
] });
|
|
154
154
|
}
|
|
155
155
|
);
|
|
156
|
-
|
|
156
|
+
k.displayName = "TextField";
|
|
157
|
+
function L({
|
|
158
|
+
imageSrc: a,
|
|
159
|
+
imageAlt: i = "",
|
|
160
|
+
title: r,
|
|
161
|
+
badgeCount: c,
|
|
162
|
+
disabled: s = !1,
|
|
163
|
+
className: n,
|
|
164
|
+
...t
|
|
165
|
+
}) {
|
|
166
|
+
const l = [
|
|
167
|
+
"collection-thumbnail",
|
|
168
|
+
s ? "collection-thumbnail--disabled" : "",
|
|
169
|
+
n
|
|
170
|
+
].filter(Boolean).join(" ");
|
|
171
|
+
return /* @__PURE__ */ o("div", { className: l, ...t, children: [
|
|
172
|
+
/* @__PURE__ */ e("div", { className: "collection-thumbnail__image", children: /* @__PURE__ */ e("img", { src: a, alt: i }) }),
|
|
173
|
+
/* @__PURE__ */ e("p", { className: "collection-thumbnail__title", children: r }),
|
|
174
|
+
c != null && /* @__PURE__ */ e("div", { className: "collection-thumbnail__badge", children: /* @__PURE__ */ e("span", { className: "collection-thumbnail__badge-text", children: c }) })
|
|
175
|
+
] });
|
|
176
|
+
}
|
|
177
|
+
function W({
|
|
178
|
+
imageSrc: a,
|
|
179
|
+
imageAlt: i = "",
|
|
180
|
+
title: r,
|
|
181
|
+
price: c,
|
|
182
|
+
priceTranslation: s,
|
|
183
|
+
discountLabel: n,
|
|
184
|
+
appIcon: t,
|
|
185
|
+
className: l,
|
|
186
|
+
...d
|
|
187
|
+
}) {
|
|
188
|
+
const m = ["product-teaser", l].filter(Boolean).join(" ");
|
|
189
|
+
return /* @__PURE__ */ o("div", { className: m, ...d, children: [
|
|
190
|
+
/* @__PURE__ */ e("div", { className: "product-teaser__image", children: /* @__PURE__ */ e("img", { src: a, alt: i }) }),
|
|
191
|
+
/* @__PURE__ */ o("div", { className: "product-teaser__info", children: [
|
|
192
|
+
/* @__PURE__ */ e("p", { className: "product-teaser__title", children: r }),
|
|
193
|
+
/* @__PURE__ */ o("div", { className: "product-teaser__price-row", children: [
|
|
194
|
+
/* @__PURE__ */ e("span", { className: "product-teaser__price", children: c }),
|
|
195
|
+
s && /* @__PURE__ */ e("span", { className: "product-teaser__price-translation", children: s })
|
|
196
|
+
] })
|
|
197
|
+
] }),
|
|
198
|
+
t && /* @__PURE__ */ e("div", { className: "product-teaser__app-icon", children: t }),
|
|
199
|
+
n && /* @__PURE__ */ e("div", { className: "product-teaser__discount", children: n })
|
|
200
|
+
] });
|
|
201
|
+
}
|
|
202
|
+
const j = ({ filled: a }) => /* @__PURE__ */ e(
|
|
203
|
+
"svg",
|
|
204
|
+
{
|
|
205
|
+
viewBox: "0 0 24 21",
|
|
206
|
+
fill: a ? "currentColor" : "none",
|
|
207
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
208
|
+
children: /* @__PURE__ */ e(
|
|
209
|
+
"path",
|
|
210
|
+
{
|
|
211
|
+
d: "M12 19.5C12 19.5 1.5 13.5 1.5 6.75C1.5 3.5 4 1.5 6.75 1.5C9 1.5 11 3 12 4.5C13 3 15 1.5 17.25 1.5C20 1.5 22.5 3.5 22.5 6.75C22.5 13.5 12 19.5 12 19.5Z",
|
|
212
|
+
stroke: "currentColor",
|
|
213
|
+
strokeWidth: "1.5",
|
|
214
|
+
strokeLinecap: "round",
|
|
215
|
+
strokeLinejoin: "round"
|
|
216
|
+
}
|
|
217
|
+
)
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
function E({
|
|
221
|
+
imageSrc: a,
|
|
222
|
+
imageAlt: i = "",
|
|
223
|
+
title: r,
|
|
224
|
+
tags: c = [],
|
|
225
|
+
appIcon: s,
|
|
226
|
+
showWishlistButton: n = !0,
|
|
227
|
+
onWishlistClick: t,
|
|
228
|
+
wishlisted: l = !1,
|
|
229
|
+
className: d,
|
|
230
|
+
...m
|
|
231
|
+
}) {
|
|
232
|
+
const h = ["location-teaser", d].filter(Boolean).join(" ");
|
|
233
|
+
return /* @__PURE__ */ o("div", { className: h, ...m, children: [
|
|
234
|
+
/* @__PURE__ */ e("div", { className: "location-teaser__image", children: /* @__PURE__ */ e("img", { src: a, alt: i }) }),
|
|
235
|
+
/* @__PURE__ */ o("div", { className: "location-teaser__info", children: [
|
|
236
|
+
/* @__PURE__ */ e("p", { className: "location-teaser__title", children: r }),
|
|
237
|
+
(c.length > 0 || s) && /* @__PURE__ */ o("div", { className: "location-teaser__tags", children: [
|
|
238
|
+
s && /* @__PURE__ */ e("div", { className: "location-teaser__app-icon-wrapper", children: /* @__PURE__ */ e("div", { className: "location-teaser__app-icon", children: s }) }),
|
|
239
|
+
c.map((u) => /* @__PURE__ */ e("div", { className: "location-teaser__tag", children: /* @__PURE__ */ e("span", { className: "location-teaser__tag-text", children: u }) }, u))
|
|
240
|
+
] })
|
|
241
|
+
] }),
|
|
242
|
+
n && /* @__PURE__ */ e(
|
|
243
|
+
"button",
|
|
244
|
+
{
|
|
245
|
+
className: "location-teaser__wishlist",
|
|
246
|
+
onClick: t,
|
|
247
|
+
"aria-label": l ? "Remove from wishlist" : "Add to wishlist",
|
|
248
|
+
children: /* @__PURE__ */ e(j, { filled: l })
|
|
249
|
+
}
|
|
250
|
+
)
|
|
251
|
+
] });
|
|
252
|
+
}
|
|
157
253
|
export {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
254
|
+
$ as Button,
|
|
255
|
+
L as CollectionThumbnail,
|
|
256
|
+
T as IconButton,
|
|
257
|
+
E as LocationTeaser,
|
|
258
|
+
W as ProductTeaser,
|
|
259
|
+
k as TextField
|
|
161
260
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface CollectionThumbnailProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
4
|
+
/** Image source URL */
|
|
5
|
+
imageSrc: string;
|
|
6
|
+
/** Image alt text */
|
|
7
|
+
imageAlt?: string;
|
|
8
|
+
/** Title text below the image */
|
|
9
|
+
title: string;
|
|
10
|
+
/** Badge count (shown in top-right corner) */
|
|
11
|
+
badgeCount?: number;
|
|
12
|
+
/** Whether the component is disabled */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function CollectionThumbnail({ imageSrc, imageAlt, title, badgeCount, disabled, className, ...rest }: CollectionThumbnailProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { CollectionThumbnail } from './CollectionThumbnail';
|
|
3
|
+
|
|
4
|
+
declare const meta: Meta<typeof CollectionThumbnail>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof CollectionThumbnail>;
|
|
7
|
+
export declare const Playground: Story;
|
|
8
|
+
export declare const WithBadge: Story;
|
|
9
|
+
export declare const NoBadge: Story;
|
|
10
|
+
export declare const Disabled: Story;
|
|
11
|
+
export declare const AllStates: Story;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface LocationTeaserProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
4
|
+
/** Location image source URL */
|
|
5
|
+
imageSrc: string;
|
|
6
|
+
/** Image alt text */
|
|
7
|
+
imageAlt?: string;
|
|
8
|
+
/** Location title */
|
|
9
|
+
title: string;
|
|
10
|
+
/** Tags displayed below the title (e.g. category, distance, open status) */
|
|
11
|
+
tags?: string[];
|
|
12
|
+
/** App icon element shown before the tags */
|
|
13
|
+
appIcon?: ReactNode;
|
|
14
|
+
/** Whether to show the wishlist/favorite button */
|
|
15
|
+
showWishlistButton?: boolean;
|
|
16
|
+
/** Callback when wishlist button is clicked */
|
|
17
|
+
onWishlistClick?: () => void;
|
|
18
|
+
/** Whether the item is wishlisted */
|
|
19
|
+
wishlisted?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function LocationTeaser({ imageSrc, imageAlt, title, tags, appIcon, showWishlistButton, onWishlistClick, wishlisted, className, ...rest }: LocationTeaserProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { LocationTeaser } from './LocationTeaser';
|
|
3
|
+
|
|
4
|
+
declare const meta: Meta<typeof LocationTeaser>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof LocationTeaser>;
|
|
7
|
+
export declare const Playground: Story;
|
|
8
|
+
export declare const Wishlisted: Story;
|
|
9
|
+
export declare const NoWishlistButton: Story;
|
|
10
|
+
export declare const WithoutTags: Story;
|
|
11
|
+
export declare const LongTitle: Story;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface ProductTeaserProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
4
|
+
/** Product image source URL */
|
|
5
|
+
imageSrc: string;
|
|
6
|
+
/** Image alt text */
|
|
7
|
+
imageAlt?: string;
|
|
8
|
+
/** Product title */
|
|
9
|
+
title: string;
|
|
10
|
+
/** Price in local currency */
|
|
11
|
+
price: string;
|
|
12
|
+
/** Price in translated/secondary currency */
|
|
13
|
+
priceTranslation?: string;
|
|
14
|
+
/** Discount label text (e.g. "-5%") */
|
|
15
|
+
discountLabel?: string;
|
|
16
|
+
/** App icon element shown in top-left corner */
|
|
17
|
+
appIcon?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export declare function ProductTeaser({ imageSrc, imageAlt, title, price, priceTranslation, discountLabel, appIcon, className, ...rest }: ProductTeaserProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ProductTeaser } from './ProductTeaser';
|
|
3
|
+
|
|
4
|
+
declare const meta: Meta<typeof ProductTeaser>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof ProductTeaser>;
|
|
7
|
+
export declare const Playground: Story;
|
|
8
|
+
export declare const WithDiscount: Story;
|
|
9
|
+
export declare const NoDiscount: Story;
|
|
10
|
+
export declare const AllVariants: Story;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -5,3 +5,9 @@ export { IconButton } from './components/IconButton';
|
|
|
5
5
|
export type { IconButtonProps, IconButtonStyle, IconButtonIntent } from './components/IconButton';
|
|
6
6
|
export { TextField } from './components/TextField';
|
|
7
7
|
export type { TextFieldProps, TextFieldSize } from './components/TextField';
|
|
8
|
+
export { CollectionThumbnail } from './components/CollectionThumbnail';
|
|
9
|
+
export type { CollectionThumbnailProps } from './components/CollectionThumbnail';
|
|
10
|
+
export { ProductTeaser } from './components/ProductTeaser';
|
|
11
|
+
export type { ProductTeaserProps } from './components/ProductTeaser';
|
|
12
|
+
export { LocationTeaser } from './components/LocationTeaser';
|
|
13
|
+
export type { LocationTeaserProps } from './components/LocationTeaser';
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--jourma-color-action: #00ff9f;--jourma-color-action-special: #ff46ff;--jourma-color-action-attention: #ff3d48;--jourma-color-action-pressed: white;--jourma-color-text-on-action: #00322f;--jourma-color-text-on-action-attention: black;--jourma-color-text-on-action-special: black;--jourma-color-text-on-surface-focused: black;--jourma-color-text-on-surface: white;--jourma-color-text-action: #00ff9f;--jourma-color-text-attention: #ff3d48;--jourma-color-text-special: #ff46ff;--jourma-color-text-primary: white;--jourma-color-text-secondary: rgba(255, 255, 255, .8);--jourma-color-text-tertiary: rgba(255, 255, 255, .6);--jourma-color-disabled-surface: rgba(255, 255, 255, .2);--jourma-color-disabled-text: rgba(255, 255, 255, .3);--jourma-color-disabled-text-on-surface: rgba(0, 0, 0, .5);--jourma-color-disabled-stroke: rgba(255, 255, 255, .1);--jourma-color-surface: rgba(255, 255, 255, .07);--jourma-color-surface-pressed: rgba(255, 255, 255, .2);--jourma-color-surface-focused: rgba(255, 255, 255, .8);--jourma-color-placeholder-text: rgba(255, 255, 255, .4);--jourma-color-label-on-surface: rgba(255, 255, 255, .6);--jourma-color-label-on-surface-focused: rgba(0, 0, 0, .6);--jourma-color-disabled-surface-text-on-surface: rgba(0, 0, 0, .5);--jourma-color-white-10: rgba(255, 255, 255, .1);--jourma-color-white-30: rgba(255, 255, 255, .3);--jourma-spacing-xxs: 2px;--jourma-spacing-xs: 4px;--jourma-spacing-m: 16px;--jourma-button-padding-top-large: 13px;--jourma-button-padding-bottom-large: 15px;--jourma-button-padding-round-end-large: 24px;--jourma-button-padding-sharp-end-large: 22px;--jourma-button-padding-top-medium: 10px;--jourma-button-padding-bottom-medium: 12px;--jourma-button-padding-round-end-medium: 18px;--jourma-button-padding-sharp-end-medium: 16px;--jourma-button-padding-top-small: 8px;--jourma-button-padding-bottom-small: 10px;--jourma-button-padding-round-end-small: 15px;--jourma-button-padding-sharp-end-small: 12px;--jourma-field-gap: 8px;--jourma-field-padding-ends: 16px;--jourma-field-padding-top-large: 13px;--jourma-field-padding-bottom-large: 15px;--jourma-field-padding-top-compact: 14px;--jourma-field-padding-bottom-compact: 15px;--jourma-field-radius: 12px;--jourma-field-radius-compact: 8px;--jourma-radius-m: 24px}.button{display:inline-flex;align-items:center;justify-content:center;overflow:clip;border:none;background:none;padding:0;font-family:Bugrino,sans-serif;line-height:1.1;white-space:nowrap;text-overflow:ellipsis;text-align:center;font-feature-settings:"dlig" 1}.button:not(:disabled){cursor:pointer}.button--filled{border-radius:0}.button--filled.button--large{border-bottom-left-radius:25px;border-top-left-radius:25px;padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large) var(--jourma-button-padding-round-end-large);font-size:20px;font-weight:700}.button--filled.button--medium{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium) var(--jourma-button-padding-round-end-medium);font-size:20px;font-weight:700}.button--filled.button--small{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small) var(--jourma-button-padding-round-end-small);font-size:18px;font-weight:700}.button--filled.button--normal{background-color:var(--jourma-color-action);color:var(--jourma-color-text-on-action)}.button--filled.button--attention{background-color:var(--jourma-color-action-attention);color:var(--jourma-color-text-on-action-attention)}.button--filled.button--special{background-color:var(--jourma-color-action-special);color:var(--jourma-color-text-on-action-special)}.button--filled:not(:disabled):active{background-color:var(--jourma-color-action-pressed);color:var(--jourma-color-text-on-surface-focused)}.button--filled:disabled{background-color:var(--jourma-color-disabled-surface);color:var(--jourma-color-disabled-text-on-surface);cursor:default}.button--outlined{background:transparent;border-style:solid;border-width:2px}.button--outlined.button--large{border-bottom-left-radius:25px;border-top-left-radius:25px;padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large) var(--jourma-button-padding-round-end-large);font-size:20px;font-weight:500}.button--outlined.button--medium{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium) var(--jourma-button-padding-round-end-medium);font-size:20px;font-weight:500}.button--outlined.button--small{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small) var(--jourma-button-padding-round-end-small);font-size:18px;font-weight:500}.button--outlined.button--normal{border-color:var(--jourma-color-action);color:var(--jourma-color-text-action)}.button--outlined.button--attention{border-color:var(--jourma-color-action-attention);color:var(--jourma-color-text-attention)}.button--outlined.button--special{border-color:var(--jourma-color-action-special);color:var(--jourma-color-text-special)}.button--outlined:not(:disabled):active{border-color:var(--jourma-color-action-pressed);color:var(--jourma-color-action-pressed)}.button--outlined:disabled{border-color:var(--jourma-color-disabled-stroke);color:var(--jourma-color-disabled-text);cursor:default}.button--text{background:transparent;border:none}.button--text.button--large{padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large);font-size:20px;font-weight:500}.button--text.button--medium{padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium);font-size:20px;font-weight:500}.button--text.button--small{padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small);font-size:18px;font-weight:500}.button--text.button--normal{color:var(--jourma-color-text-action)}.button--text.button--attention{color:var(--jourma-color-text-attention)}.button--text.button--special{color:var(--jourma-color-text-special)}.button--text:not(:disabled):active{color:var(--jourma-color-action-pressed)}.button--text:disabled{color:var(--jourma-color-disabled-text);cursor:default}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--jourma-radius-m);border:none;padding:0;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.icon-button:not(:disabled){cursor:pointer}.icon-button--filled.icon-button--normal{background-color:var(--jourma-color-action)}.icon-button--filled.icon-button--special{background-color:var(--jourma-color-action-special)}.icon-button--filled.icon-button--attention{background-color:var(--jourma-color-action-attention)}.icon-button--filled.icon-button--neutral{background-color:var(--jourma-color-white-10)}.icon-button--filled.icon-button--pressed{background-color:var(--jourma-color-action-pressed)}.icon-button--filled:disabled{background-color:var(--jourma-color-disabled-surface);cursor:default}.icon-button--outlined{background:transparent;border-style:solid;border-width:2px}.icon-button--outlined.icon-button--normal{border-color:var(--jourma-color-action)}.icon-button--outlined.icon-button--special{border-color:var(--jourma-color-action-special)}.icon-button--outlined.icon-button--attention{border-color:var(--jourma-color-action-attention)}.icon-button--outlined.icon-button--neutral{border-color:var(--jourma-color-white-30)}.icon-button--outlined.icon-button--pressed{border-color:var(--jourma-color-action-pressed)}.icon-button--outlined:disabled{border-color:var(--jourma-color-disabled-stroke);cursor:default}.icon-button__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.icon-button__icon>svg{width:100%;height:100%}.text-field{display:flex;flex-direction:column;align-items:flex-start;width:100%;font-family:Bugrino,sans-serif;font-feature-settings:"dlig" 1}.text-field--large{gap:var(--jourma-spacing-xs)}.text-field__label{font-size:17px;font-weight:500;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.text-field--large .text-field__label{color:var(--jourma-color-text-secondary)}.text-field--large.text-field--disabled .text-field__label{color:var(--jourma-color-disabled-text)}.text-field--compact .text-field__label{color:var(--jourma-color-label-on-surface);width:100px;flex-shrink:0}.text-field--compact.text-field--focused .text-field__label{color:var(--jourma-color-label-on-surface-focused)}.text-field--compact.text-field--disabled .text-field__label{color:var(--jourma-color-disabled-text)}.text-field__input-wrapper{display:flex;align-items:center;gap:var(--jourma-field-gap);width:100%;overflow:clip;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.text-field--large .text-field__input-wrapper{padding:var(--jourma-field-padding-top-large) var(--jourma-field-padding-ends) var(--jourma-field-padding-bottom-large);border-radius:var(--jourma-field-radius)}.text-field--compact .text-field__input-wrapper{padding:var(--jourma-field-padding-top-compact) var(--jourma-field-padding-ends) var(--jourma-field-padding-bottom-compact);border-radius:var(--jourma-field-radius-compact)}.text-field__input-wrapper{background-color:var(--jourma-color-surface);border:2px solid transparent}.text-field--pressed .text-field__input-wrapper{background-color:var(--jourma-color-surface-pressed)}.text-field--focused .text-field__input-wrapper{background-color:var(--jourma-color-surface-focused)}.text-field--disabled .text-field__input-wrapper{background-color:#00000003;border-color:var(--jourma-color-disabled-stroke)}.text-field__input{flex:1 0 0;min-width:0;background:none;border:none;outline:none;padding:0;font-family:inherit;font-feature-settings:inherit;line-height:1.1}.text-field--large .text-field__input{font-size:20px}.text-field--compact .text-field__input{font-size:17px}.text-field__input{color:var(--jourma-color-text-on-surface)}.text-field__input::placeholder{color:var(--jourma-color-placeholder-text)}.text-field--focused .text-field__input{color:var(--jourma-color-text-on-surface-focused)}.text-field--focused .text-field__input::placeholder{color:var(--jourma-color-disabled-text-on-surface)}.text-field--disabled .text-field__input{color:var(--jourma-color-disabled-text)}.text-field--disabled .text-field__input::placeholder{color:var(--jourma-color-disabled-text);opacity:.5}.text-field__error-icon{flex-shrink:0;width:17px;height:17px;color:var(--jourma-color-text-attention)}.text-field__error{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.4;letter-spacing:.24px;color:var(--jourma-color-text-attention);width:100%}.text-field--large .text-field__error{padding-right:var(--jourma-spacing-m)}.text-field--compact .text-field__error{padding:var(--jourma-spacing-xxs) var(--jourma-spacing-m) var(--jourma-spacing-xs) var(--jourma-spacing-xs)}
|
|
1
|
+
:root{--jourma-color-action: #00ff9f;--jourma-color-action-special: #ff46ff;--jourma-color-action-attention: #ff3d48;--jourma-color-action-pressed: white;--jourma-color-text-on-action: #00322f;--jourma-color-text-on-action-attention: black;--jourma-color-text-on-action-special: black;--jourma-color-text-on-surface-focused: black;--jourma-color-text-on-surface: white;--jourma-color-text-action: #00ff9f;--jourma-color-text-attention: #ff3d48;--jourma-color-text-special: #ff46ff;--jourma-color-text-primary: white;--jourma-color-text-secondary: rgba(255, 255, 255, .8);--jourma-color-text-tertiary: rgba(255, 255, 255, .6);--jourma-color-disabled-surface: rgba(255, 255, 255, .2);--jourma-color-disabled-text: rgba(255, 255, 255, .3);--jourma-color-disabled-text-on-surface: rgba(0, 0, 0, .5);--jourma-color-disabled-stroke: rgba(255, 255, 255, .1);--jourma-color-surface: rgba(255, 255, 255, .07);--jourma-color-surface-pressed: rgba(255, 255, 255, .2);--jourma-color-surface-focused: rgba(255, 255, 255, .8);--jourma-color-placeholder-text: rgba(255, 255, 255, .4);--jourma-color-label-on-surface: rgba(255, 255, 255, .6);--jourma-color-label-on-surface-focused: rgba(0, 0, 0, .6);--jourma-color-disabled-surface-text-on-surface: rgba(0, 0, 0, .5);--jourma-color-white-10: rgba(255, 255, 255, .1);--jourma-color-white-30: rgba(255, 255, 255, .3);--jourma-spacing-xxs: 2px;--jourma-spacing-xs: 4px;--jourma-spacing-m: 16px;--jourma-button-padding-top-large: 13px;--jourma-button-padding-bottom-large: 15px;--jourma-button-padding-round-end-large: 24px;--jourma-button-padding-sharp-end-large: 22px;--jourma-button-padding-top-medium: 10px;--jourma-button-padding-bottom-medium: 12px;--jourma-button-padding-round-end-medium: 18px;--jourma-button-padding-sharp-end-medium: 16px;--jourma-button-padding-top-small: 8px;--jourma-button-padding-bottom-small: 10px;--jourma-button-padding-round-end-small: 15px;--jourma-button-padding-sharp-end-small: 12px;--jourma-field-gap: 8px;--jourma-field-padding-ends: 16px;--jourma-field-padding-top-large: 13px;--jourma-field-padding-bottom-large: 15px;--jourma-field-padding-top-compact: 14px;--jourma-field-padding-bottom-compact: 15px;--jourma-field-radius: 12px;--jourma-field-radius-compact: 8px;--jourma-radius-m: 24px}.button{display:inline-flex;align-items:center;justify-content:center;overflow:clip;border:none;background:none;padding:0;font-family:Bugrino,sans-serif;line-height:1.1;white-space:nowrap;text-overflow:ellipsis;text-align:center;font-feature-settings:"dlig" 1}.button:not(:disabled){cursor:pointer}.button--filled{border-radius:0}.button--filled.button--large{border-bottom-left-radius:25px;border-top-left-radius:25px;padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large) var(--jourma-button-padding-round-end-large);font-size:20px;font-weight:700}.button--filled.button--medium{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium) var(--jourma-button-padding-round-end-medium);font-size:20px;font-weight:700}.button--filled.button--small{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small) var(--jourma-button-padding-round-end-small);font-size:18px;font-weight:700}.button--filled.button--normal{background-color:var(--jourma-color-action);color:var(--jourma-color-text-on-action)}.button--filled.button--attention{background-color:var(--jourma-color-action-attention);color:var(--jourma-color-text-on-action-attention)}.button--filled.button--special{background-color:var(--jourma-color-action-special);color:var(--jourma-color-text-on-action-special)}.button--filled:not(:disabled):active{background-color:var(--jourma-color-action-pressed);color:var(--jourma-color-text-on-surface-focused)}.button--filled:disabled{background-color:var(--jourma-color-disabled-surface);color:var(--jourma-color-disabled-text-on-surface);cursor:default}.button--outlined{background:transparent;border-style:solid;border-width:2px}.button--outlined.button--large{border-bottom-left-radius:25px;border-top-left-radius:25px;padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large) var(--jourma-button-padding-round-end-large);font-size:20px;font-weight:500}.button--outlined.button--medium{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium) var(--jourma-button-padding-round-end-medium);font-size:20px;font-weight:500}.button--outlined.button--small{border-bottom-left-radius:22px;border-top-left-radius:22px;padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small) var(--jourma-button-padding-round-end-small);font-size:18px;font-weight:500}.button--outlined.button--normal{border-color:var(--jourma-color-action);color:var(--jourma-color-text-action)}.button--outlined.button--attention{border-color:var(--jourma-color-action-attention);color:var(--jourma-color-text-attention)}.button--outlined.button--special{border-color:var(--jourma-color-action-special);color:var(--jourma-color-text-special)}.button--outlined:not(:disabled):active{border-color:var(--jourma-color-action-pressed);color:var(--jourma-color-action-pressed)}.button--outlined:disabled{border-color:var(--jourma-color-disabled-stroke);color:var(--jourma-color-disabled-text);cursor:default}.button--text{background:transparent;border:none}.button--text.button--large{padding:var(--jourma-button-padding-top-large) var(--jourma-button-padding-sharp-end-large) var(--jourma-button-padding-bottom-large);font-size:20px;font-weight:500}.button--text.button--medium{padding:var(--jourma-button-padding-top-medium) var(--jourma-button-padding-sharp-end-medium) var(--jourma-button-padding-bottom-medium);font-size:20px;font-weight:500}.button--text.button--small{padding:var(--jourma-button-padding-top-small) var(--jourma-button-padding-sharp-end-small) var(--jourma-button-padding-bottom-small);font-size:18px;font-weight:500}.button--text.button--normal{color:var(--jourma-color-text-action)}.button--text.button--attention{color:var(--jourma-color-text-attention)}.button--text.button--special{color:var(--jourma-color-text-special)}.button--text:not(:disabled):active{color:var(--jourma-color-action-pressed)}.button--text:disabled{color:var(--jourma-color-disabled-text);cursor:default}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--jourma-radius-m);border:none;padding:0;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.icon-button:not(:disabled){cursor:pointer}.icon-button--filled.icon-button--normal{background-color:var(--jourma-color-action)}.icon-button--filled.icon-button--special{background-color:var(--jourma-color-action-special)}.icon-button--filled.icon-button--attention{background-color:var(--jourma-color-action-attention)}.icon-button--filled.icon-button--neutral{background-color:var(--jourma-color-white-10)}.icon-button--filled.icon-button--pressed{background-color:var(--jourma-color-action-pressed)}.icon-button--filled:disabled{background-color:var(--jourma-color-disabled-surface);cursor:default}.icon-button--outlined{background:transparent;border-style:solid;border-width:2px}.icon-button--outlined.icon-button--normal{border-color:var(--jourma-color-action)}.icon-button--outlined.icon-button--special{border-color:var(--jourma-color-action-special)}.icon-button--outlined.icon-button--attention{border-color:var(--jourma-color-action-attention)}.icon-button--outlined.icon-button--neutral{border-color:var(--jourma-color-white-30)}.icon-button--outlined.icon-button--pressed{border-color:var(--jourma-color-action-pressed)}.icon-button--outlined:disabled{border-color:var(--jourma-color-disabled-stroke);cursor:default}.icon-button__icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.icon-button__icon>svg{width:100%;height:100%}.text-field{display:flex;flex-direction:column;align-items:flex-start;width:100%;font-family:Bugrino,sans-serif;font-feature-settings:"dlig" 1}.text-field--large{gap:var(--jourma-spacing-xs)}.text-field__label{font-size:17px;font-weight:500;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.text-field--large .text-field__label{color:var(--jourma-color-text-secondary)}.text-field--large.text-field--disabled .text-field__label{color:var(--jourma-color-disabled-text)}.text-field--compact .text-field__label{color:var(--jourma-color-label-on-surface);width:100px;flex-shrink:0}.text-field--compact.text-field--focused .text-field__label{color:var(--jourma-color-label-on-surface-focused)}.text-field--compact.text-field--disabled .text-field__label{color:var(--jourma-color-disabled-text)}.text-field__input-wrapper{display:flex;align-items:center;gap:var(--jourma-field-gap);width:100%;overflow:clip;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.text-field--large .text-field__input-wrapper{padding:var(--jourma-field-padding-top-large) var(--jourma-field-padding-ends) var(--jourma-field-padding-bottom-large);border-radius:var(--jourma-field-radius)}.text-field--compact .text-field__input-wrapper{padding:var(--jourma-field-padding-top-compact) var(--jourma-field-padding-ends) var(--jourma-field-padding-bottom-compact);border-radius:var(--jourma-field-radius-compact)}.text-field__input-wrapper{background-color:var(--jourma-color-surface);border:2px solid transparent}.text-field--pressed .text-field__input-wrapper{background-color:var(--jourma-color-surface-pressed)}.text-field--focused .text-field__input-wrapper{background-color:var(--jourma-color-surface-focused)}.text-field--disabled .text-field__input-wrapper{background-color:#00000003;border-color:var(--jourma-color-disabled-stroke)}.text-field__input{flex:1 0 0;min-width:0;background:none;border:none;outline:none;padding:0;font-family:inherit;font-feature-settings:inherit;line-height:1.1}.text-field--large .text-field__input{font-size:20px}.text-field--compact .text-field__input{font-size:17px}.text-field__input{color:var(--jourma-color-text-on-surface)}.text-field__input::placeholder{color:var(--jourma-color-placeholder-text)}.text-field--focused .text-field__input{color:var(--jourma-color-text-on-surface-focused)}.text-field--focused .text-field__input::placeholder{color:var(--jourma-color-disabled-text-on-surface)}.text-field--disabled .text-field__input{color:var(--jourma-color-disabled-text)}.text-field--disabled .text-field__input::placeholder{color:var(--jourma-color-disabled-text);opacity:.5}.text-field__error-icon{flex-shrink:0;width:17px;height:17px;color:var(--jourma-color-text-attention)}.text-field__error{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.4;letter-spacing:.24px;color:var(--jourma-color-text-attention);width:100%}.text-field--large .text-field__error{padding-right:var(--jourma-spacing-m)}.text-field--compact .text-field__error{padding:var(--jourma-spacing-xxs) var(--jourma-spacing-m) var(--jourma-spacing-xs) var(--jourma-spacing-xs)}.collection-thumbnail{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:171px;position:relative;cursor:pointer;font-family:Bugrino,sans-serif;font-feature-settings:"dlig" 1}.collection-thumbnail--disabled{cursor:default}.collection-thumbnail__image{position:relative;width:171px;height:171px;border-top-left-radius:16px;border-bottom-left-radius:16px;overflow:hidden;flex-shrink:0}.collection-thumbnail--disabled .collection-thumbnail__image{opacity:.5}.collection-thumbnail__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.collection-thumbnail__image-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-color:var(--jourma-color-surface-pressed)}.collection-thumbnail__title{font-size:17px;font-weight:500;line-height:1.1;color:var(--jourma-color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;flex-shrink:0}.collection-thumbnail--disabled .collection-thumbnail__title{color:var(--jourma-color-disabled-text)}.collection-thumbnail:active:not(.collection-thumbnail--disabled) .collection-thumbnail__title{color:var(--jourma-color-action-pressed)}.collection-thumbnail__badge{position:absolute;top:4px;right:4px;min-width:24px;display:flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:22px;background-color:#00000080;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);overflow:clip}.collection-thumbnail__badge-text{font-size:13px;font-weight:700;line-height:1.2;letter-spacing:.26px;color:var(--jourma-color-text-primary);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collection-thumbnail--disabled .collection-thumbnail__badge-text{color:var(--jourma-color-disabled-text)}.product-teaser{display:flex;flex-direction:column;align-items:center;gap:16px;position:relative;cursor:pointer;font-family:Bugrino,sans-serif;font-feature-settings:"dlig" 1}.product-teaser__image{position:relative;width:128px;height:128px;border-top-left-radius:12px;border-bottom-left-radius:12px;overflow:hidden;flex-shrink:0}.product-teaser__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.product-teaser:active .product-teaser__image:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:var(--jourma-color-surface-pressed);border-radius:inherit}.product-teaser__info{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;text-align:center;white-space:nowrap}.product-teaser__title{font-size:14px;font-weight:500;line-height:1.1;letter-spacing:.28px;color:var(--jourma-color-text-primary);overflow:hidden;text-overflow:ellipsis}.product-teaser__price-row{display:flex;align-items:baseline;gap:8px}.product-teaser__price{font-size:14px;font-weight:500;line-height:1.1;letter-spacing:.28px;color:var(--jourma-color-text-action)}.product-teaser__price-translation{font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:1.4;letter-spacing:.24px;color:var(--jourma-color-text-tertiary)}.product-teaser__app-icon{position:absolute;top:4px;left:4px;width:24px;height:24px}.product-teaser__app-icon img{width:100%;height:100%;display:block}.product-teaser__discount{position:absolute;top:109px;right:0;display:flex;align-items:center;justify-content:center;padding:4px 8px;background-color:var(--jourma-color-action-attention);border-top-left-radius:16px;border-bottom-left-radius:16px;font-size:17px;font-weight:500;line-height:1.1;color:#fff;white-space:nowrap}.location-teaser{display:flex;flex-direction:column;align-items:flex-start;position:relative;overflow:clip;border-top-left-radius:24px;border-bottom-left-radius:24px;background-color:var(--jourma-color-action);font-family:Bugrino,sans-serif;font-feature-settings:"dlig" 1}.location-teaser__image{position:relative;width:100%;height:193px;border-bottom-left-radius:24px;overflow:hidden;flex-shrink:0}.location-teaser__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.location-teaser__info{display:flex;flex-direction:column;gap:16px;align-items:flex-start;width:100%;padding:8px 16px 16px}.location-teaser__title{font-size:20px;font-weight:500;line-height:1.1;color:var(--jourma-color-text-on-action);padding-right:24px;width:100%}.location-teaser__tags{display:flex;flex-wrap:wrap;gap:2px;align-items:flex-start;width:100%}.location-teaser__tag{display:flex;align-items:center;justify-content:center;padding:4px 8px 4px 9px;background-color:#000;border-top-left-radius:22px;border-bottom-left-radius:22px;overflow:clip;flex-shrink:0}.location-teaser__tag-text{font-size:13px;font-weight:400;line-height:1.2;letter-spacing:.26px;color:var(--jourma-color-text-secondary);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.location-teaser__app-icon-wrapper{flex-shrink:0;padding-right:2px}.location-teaser__app-icon{width:24px;height:24px;border-radius:24px;border:2px solid var(--jourma-color-text-on-action);overflow:clip}.location-teaser__app-icon img{width:100%;height:100%;display:block}.location-teaser__wishlist{position:absolute;top:0;right:0;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:0}.location-teaser__wishlist svg{width:24px;height:21px}
|