@viur/shop-components 0.0.1-dev.58 → 0.0.1-dev.60

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 (86) hide show
  1. package/.editorconfig +16 -0
  2. package/.github/workflows/npm-publish.yml +42 -0
  3. package/.gitmodules +3 -0
  4. package/LICENSE +21 -0
  5. package/README.md +13 -2
  6. package/package.json +19 -32
  7. package/src/components/ShopCart.vue +512 -0
  8. package/src/components/ShopOrderComplete.vue +73 -0
  9. package/src/components/ShopOrderConfirm.vue +291 -0
  10. package/src/components/ShopOrderStepper.vue +264 -0
  11. package/src/components/ShopUserData.vue +232 -0
  12. package/src/components/cart/CartLeaf.vue +277 -0
  13. package/src/components/cart/CartLeafModel.vue +304 -0
  14. package/src/components/cart/CartNode.vue +25 -0
  15. package/src/components/cart/CartTree.vue +54 -0
  16. package/src/components/cart/CartTreeWrapper.vue +73 -0
  17. package/src/components/cart/CartView.vue +723 -0
  18. package/src/components/cart/Discount.vue +91 -0
  19. package/src/components/lib/utils.js +0 -0
  20. package/src/components/order/OrderSidebar.vue +102 -0
  21. package/src/components/order/category/CategoryList.vue +83 -0
  22. package/src/components/order/category/CategoryView.vue +143 -0
  23. package/src/components/order/information/adress/ShippingAdress.vue +143 -0
  24. package/src/components/order/item/ItemCard.vue +168 -0
  25. package/src/components/order/item/ItemView.vue +232 -0
  26. package/src/components/order/process/ConfirmView.vue +312 -0
  27. package/src/components/order/process/ExampleUsage.vue +113 -0
  28. package/src/components/order/process/OrderTabHeader.vue +16 -0
  29. package/src/components/order/process/SelectPaymentProvider.vue +62 -0
  30. package/src/components/order/process/Shipping.vue +46 -0
  31. package/src/components/ui/ShopSummary.vue +145 -0
  32. package/src/components/ui/generic/ArticleList.vue +222 -0
  33. package/src/components/ui/generic/ExamplePagination.vue +236 -0
  34. package/src/components/ui/generic/ShopPriceFormatter.vue +41 -0
  35. package/src/components/ui/generic/alerts/ShopAlert.vue +19 -0
  36. package/src/components/ui/generic/makeData.js +39 -0
  37. package/src/components/ui/stepper/StepperItem.vue +39 -0
  38. package/src/components/ui/stepper/StepperTab.vue +133 -0
  39. package/src/components/ui/stepper/StepperTrigger.vue +35 -0
  40. package/src/components/ui/userdata/AddForm.vue +125 -0
  41. package/src/components/ui/userdata/AddressBox.vue +117 -0
  42. package/src/components/ui/userdata/BaseLayout.vue +94 -0
  43. package/src/components/ui/userdata/CustomBooleanBone.vue +58 -0
  44. package/src/components/ui/userdata/CustomSelectBone.vue +91 -0
  45. package/src/components/ui/userdata/CustomStringBone.vue +71 -0
  46. package/src/components/ui/userdata/DefaultLayout.vue +126 -0
  47. package/src/components/ui/userdata/SelectAddress.vue +21 -0
  48. package/src/components/ui/userdata/multi/ActionBar.vue +38 -0
  49. package/src/components/ui/userdata/multi/CartSelection.vue +42 -0
  50. package/src/main.js +50 -0
  51. package/src/router/index.js +103 -0
  52. package/src/stores/cart.js +336 -0
  53. package/src/style/ignite/.editorconfig +20 -0
  54. package/src/style/ignite/.github/workflows/ignite.yml +64 -0
  55. package/src/style/ignite/.github/workflows/node.yml +30 -0
  56. package/src/style/ignite/.postcssrc.cjs +25 -0
  57. package/src/style/ignite/CHANGELOG.md +244 -0
  58. package/src/style/ignite/LICENSE +21 -0
  59. package/src/style/ignite/README.md +92 -0
  60. package/src/style/ignite/dist/ignite.css +2019 -0
  61. package/src/style/ignite/dist/ignite.min.css +4 -0
  62. package/src/style/ignite/foundation/basic.css +371 -0
  63. package/src/style/ignite/foundation/color.css +323 -0
  64. package/src/style/ignite/foundation/config.css +188 -0
  65. package/src/style/ignite/foundation/grid.css +78 -0
  66. package/src/style/ignite/foundation/mediaqueries.css +71 -0
  67. package/src/style/ignite/foundation/reset.css +261 -0
  68. package/src/style/ignite/ignite.css +29 -0
  69. package/src/style/ignite/ignite.css.map +1 -0
  70. package/src/style/ignite/package-lock.json +5530 -0
  71. package/src/style/ignite/package.json +58 -0
  72. package/src/style/ignite/shoelace.css +19 -0
  73. package/src/style/ignite/themes/dark.css +12 -0
  74. package/src/style/ignite/themes/light.css +11 -0
  75. package/src/style/ignite/utilities/shoelace.css +537 -0
  76. package/src/style/ignite/utilities/utilities.css +24 -0
  77. package/src/views/ViewMissing.vue +20 -0
  78. package/vite.config.js +53 -0
  79. package/dist/CategoryView-Z-tCFNv1.mjs +0 -60
  80. package/dist/ItemCard-CVfih_bz.mjs +0 -64
  81. package/dist/ItemView-cjeQBSTR.mjs +0 -1848
  82. package/dist/ItemView.css +0 -1
  83. package/dist/main-CZfMYx-A.mjs +0 -3167
  84. package/dist/main.css +0 -1
  85. package/dist/viur-shop-components.es.js +0 -10
  86. package/dist/viur-shop-components.umd.js +0 -417
@@ -0,0 +1,723 @@
1
+ <template>
2
+ <sl-spinner v-if="!currentCartKey"></sl-spinner>
3
+ <h2 v-else-if="state.cartIsEmpty">Keine Artikel im Warenkorb vorhanden</h2>
4
+ <!--todo translations-->
5
+ <template v-else>
6
+ <sl-dialog no-header ref="confirm" @sl-hide="onDialogHide">
7
+ <p>Möchten Sie den Artikel wirklich aus dem Warenkorb entfernen?</p>
8
+ <sl-bar>
9
+ <sl-button
10
+ slot="left"
11
+ variant="danger"
12
+ @click="confirm.hide()"
13
+ size="medium"
14
+ >
15
+ Abbrechen
16
+ </sl-button>
17
+ <sl-button
18
+ slot="right"
19
+ variant="success"
20
+ @click="onConfirm"
21
+ size="medium"
22
+ >
23
+ Aus Warenkorb entfernen
24
+ </sl-button>
25
+ </sl-bar>
26
+ </sl-dialog>
27
+
28
+ <div class="viur-shop-cart-node" v-for="node in state.nodes">
29
+ <template
30
+ v-if="Object.keys(state.leaves).includes(node.key)"
31
+ :key="node.key"
32
+ >
33
+ <!-- <CartNode :node="node"></CartNode> -->
34
+ <CartLeaf
35
+ v-for="leaf in state.leaves[node.key]"
36
+ :key="leaf.key"
37
+ :leaf="leaf"
38
+ :node="node"
39
+ :placeholder="placeholder"
40
+ @removeItem="removeItem"
41
+ @updateItem="updateItem"
42
+ >
43
+ </CartLeaf>
44
+ </template>
45
+ </div>
46
+ <div id="order_sidebar" v-if="standalone">
47
+ <h2 class="viur-shop-cart-sidebar-headline headline">Zusammenfassung</h2>
48
+ <br />
49
+
50
+ <div class="viur-shop-cart-sidebar-info-line">
51
+ <span>Zwischensumme</span>
52
+ <sl-format-number
53
+ type="currency"
54
+ currency="EUR"
55
+ :value="cartStore.state.basketRootNode.total"
56
+ ></sl-format-number>
57
+ </div>
58
+ <div class="viur-shop-cart-sidebar-info-line">
59
+ <span>Rabatt</span>
60
+ <sl-format-number
61
+ type="currency"
62
+ currency="EUR"
63
+ :value="
64
+ cartStore.state.basketRootNode.total -
65
+ cartStore.state.basketRootNode.total_discount_price
66
+ "
67
+ lang="de"
68
+ ></sl-format-number>
69
+ </div>
70
+ <div class="viur-shop-cart-sidebar-info-line">
71
+ <Shipping ref="shipping"></Shipping>
72
+ </div>
73
+ <div class="viur-shop-cart-sidebar-info-line total">
74
+ <span>Gesamt :</span>
75
+ <sl-format-number
76
+ type="currency"
77
+ currency="EUR"
78
+ :value="state.totalPrice"
79
+ lang="de"
80
+ ></sl-format-number>
81
+ </div>
82
+ <div class="viur-shop-cart-sidebar-btn-wrap" v-if="!props.inOrderView">
83
+ <sl-button variant="primary" size="medium"> Jetzt Bestellen </sl-button>
84
+ <Discount></Discount>
85
+
86
+ <div class="viur-shop-cart-mobile-footer">
87
+ <sl-button variant="primary" size="medium">
88
+ Jetzt Bestellen</sl-button
89
+ >
90
+ </div>
91
+ </div>
92
+ </div>
93
+ <Discount v-if="!props.inOrderConfirm"></Discount>
94
+
95
+ <div class="viur-shop-cart-mobile-footer">
96
+ <sl-button variant="primary" size="medium"> Jetzt Bestellen</sl-button>
97
+ </div>
98
+
99
+ <!-- <pre> {{ state.leaves }}</pre> -->
100
+ </template>
101
+ <shop-summary v-if="!props.sidebar">
102
+ <template #custom v-if="customComponent">
103
+ <component :is="customComponent"></component>
104
+ </template>
105
+ </shop-summary>
106
+ <!-- <CartNode></CartNode>
107
+ <CartLeaf></CartLeaf> -->
108
+ <!-- <template v-else>
109
+ <div class="bind viur-shop-cart-wrap">
110
+ <sl-dialog ref="confirm" @sl-hide="onDialogHide">
111
+ <p>Möchten Sie den Artikel wirklich aus dem Warenkorb entfernen?</p>
112
+ <div class="footer-wrap" slot="footer">
113
+ <sl-button variant="danger" @click="confirm.hide()" size="medium">
114
+ Abbrechen
115
+ </sl-button>
116
+ <sl-button variant="success" @click="onConfirm" size="medium">
117
+ Aus Warenkorb entfernen
118
+ </sl-button>
119
+ </div>
120
+ </sl-dialog>
121
+
122
+ <div class="viur-shop-cart-list">
123
+ <div class="viur-shop-cart-controlbar" v-if="mode !== 'basket'">
124
+ <div class="viur-shop-cart-button-list left">
125
+ <sl-input
126
+ ref="cartNameField"
127
+ name="cart-name"
128
+ placeholder="Warenkorbname"
129
+ v-model="cartStore.state.carts[cartStore.state.basket].info.name"
130
+ required="true"
131
+ inputmode="text"
132
+ class="viur-shop-cart-headline"
133
+ >
134
+ <sl-icon library="hsk" name="pen" slot="suffix"></sl-icon>
135
+ </sl-input>
136
+ </div>
137
+ <sl-dropdown distance="10">
138
+ <sl-icon
139
+ class="dots"
140
+ name="dots"
141
+ library="hsk"
142
+ slot="trigger"
143
+ ></sl-icon>
144
+ <sl-menu>
145
+ <sl-menu-item @click="saveCart" title="Warenkorb speichern">
146
+ <sl-icon
147
+ slot="prefix"
148
+ library="hsk"
149
+ name="save"
150
+ class="primary-icon"
151
+ ></sl-icon>
152
+ Warenkorb speichern
153
+ </sl-menu-item>
154
+ <sl-menu-item @click="saveCart" title="Zu Projekt hinzufügen">
155
+ <sl-icon
156
+ slot="prefix"
157
+ library="hsk"
158
+ name="project"
159
+ class="primary-icon"
160
+ ></sl-icon>
161
+ Zu Projekt hinzufügen
162
+ </sl-menu-item>
163
+ <sl-menu-item @click="saveCart" title="Warenkorb kopieren">
164
+ <sl-icon
165
+ slot="prefix"
166
+ library="hsk"
167
+ name="clone"cartKey
168
+ <sl-menu-item @click="saveCart" title="Warenkorb löschen">
169
+ <sl-icon
170
+ slot="prefix"
171
+ library="hsk"
172
+ name="delete"
173
+ class="delete-icon"
174
+ ></sl-icon>
175
+ Warenkorb löschen
176
+ </sl-menu-item>
177
+ </sl-menu>
178
+ </sl-dropdown>
179
+ </div>
180
+ <sl-input
181
+ v-if="mode !== 'basket'"
182
+ name="cart-internalCartNo"
183
+ placeholder="Freifeld (Kommission)"
184
+ v-model="
185
+ cartStore.state.carts[cartStore.state.basket].info.customer_comment
186
+ "
187
+ inputmode="text"
188
+ class="viur-shop-cart-descr"
189
+ >
190
+ <sl-icon library="hsk" name="pen" slot="suffix"></sl-icon>
191
+ </sl-input>
192
+ <br />
193
+ <sl-alert
194
+ ref="cartActionInfo"
195
+ variant="primary"
196
+ duration="3000"
197
+ closable
198
+ >
199
+ <sl-icon slot="icon" name="check"></sl-icon>
200
+ <strong>Warenkorb gespeichert!</strong><br />
201
+ </sl-alert>
202
+ <sl-alert ref="cartErrorInfo" variant="danger" duration="3000" closable>
203
+ <sl-icon slot="icon" name="error"></sl-icon>
204
+ <strong>Warenkorb nicht gespeichert!</strong><br />
205
+ </sl-alert>
206
+
207
+
208
+ </div>
209
+
210
+
211
+ </div>
212
+ </template> -->
213
+ </template>
214
+
215
+ <script setup>
216
+ import { reactive, computed, onBeforeMount, ref } from "vue";
217
+ import { useCartStore } from "../../stores/cart.js";
218
+ import CartNode from "./CartNode.vue";
219
+ import CartLeaf from "./CartLeaf.vue";
220
+ import Shipping from "../order/process/Shipping.vue";
221
+ import ShopSummary from "../ui/ShopSummary.vue";
222
+
223
+ const props = defineProps({
224
+ mode: { type: String, default: "basket" },
225
+ cartKey: { type: String },
226
+ sidebar: { type: Boolean, default: true },
227
+ inOrderView: { type: Boolean, default: false },
228
+ inOrderConfirm: { type: Boolean, default: false },
229
+ customComponent: { default: undefined },
230
+ });
231
+
232
+ console.log("inor",props.inOrderView)
233
+ const cartStore = useCartStore();
234
+
235
+ const confirm = ref(null);
236
+ const shipping = ref(null);
237
+
238
+ const state = reactive({
239
+ itemsIsInit: computed(() => {
240
+ return true;
241
+ }),
242
+ cartIsEmpty: computed(() => {
243
+ return currentCartKey && state.leaves.length===0;
244
+ }),
245
+ totalPrice: computed(() => {
246
+ if (shipping.value) {
247
+ return (
248
+ cartStore.state.basketRootNode.total_discount_price +
249
+ shipping.value.getShippingCost()
250
+ );
251
+ }
252
+ return 0;
253
+ }),
254
+ images: {},
255
+ currentItem: {},
256
+ currentNode: {},
257
+ nodes: [],
258
+ leaves: {},
259
+ });
260
+
261
+ const currentCartKey = computed(() => {
262
+ console.log("compute current cartkey");
263
+ return props.mode === "basket"
264
+ ? cartStore.state.basketRootNode.key
265
+ : props.cartKey;
266
+ });
267
+
268
+ // function getImage(item) {
269
+ // Request.get(`/json/dk_variante/view/${item}`).then(async (resp) => {
270
+ // let data = await resp.json();
271
+
272
+ // data = data.values;
273
+
274
+ // let imageUrl = data.dk_artikel.dest.image
275
+ // ? Request.downloadUrlFor(data.dk_artikel.dest.image)
276
+ // : "https://images.unsplash.com/photo-1559209172-0ff8f6d49ff7?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=80";
277
+
278
+ // state.images[item] = imageUrl;
279
+ // });
280
+
281
+ // return state.images[item];
282
+ // }
283
+
284
+ async function onConfirm() {
285
+ confirm.value.hide();
286
+
287
+ await cartStore.updateItem(
288
+ state.currentItem.article.dest.key,
289
+ state.currentNode.key,
290
+ 0,
291
+ );
292
+ await updateCart();
293
+ }
294
+
295
+ async function updateItem(e) {
296
+ console.log("updateItem :", e);
297
+
298
+ if (e.quantity === 0) {
299
+ confirm.value.show();
300
+ state.currentItem = e.item;
301
+ state.currentNode = e.node;
302
+ } else {
303
+ await cartStore.updateItem(e.articleKey, e.node.key, e.quantity);
304
+
305
+ await cartStore.init();
306
+ }
307
+ }
308
+
309
+ function removeItem(e) {
310
+ console.log("removeItem :", e);
311
+
312
+ confirm.value.show();
313
+ state.currentItem = e.item;
314
+ state.currentNode = e.node;
315
+ }
316
+
317
+ async function onDialogHide() {
318
+ // TODO: console error when removing items
319
+ state.leaves[state.currentNode.key].forEach((item) => {
320
+ if (item.key === state.currentItem.key) {
321
+ item.quantity = 1;
322
+ }
323
+ });
324
+
325
+ state.currentItem = {};
326
+ state.currentNode = {};
327
+ }
328
+
329
+ async function updateCart() {
330
+ state.nodes = [];
331
+ state.leaves = {};
332
+
333
+ await cartStore.init();
334
+ await getChildren();
335
+ }
336
+
337
+ async function getChildren(parentKey = currentCartKey.value) {
338
+ const children = await cartStore.getChildren(parentKey);
339
+
340
+ children.forEach(async (child) => {
341
+ if (child.skel_type === "node") {
342
+ state.nodes.push(child);
343
+ await getChildren(child.key);
344
+ } else {
345
+ if (!Object.keys(state.leaves).includes(parentKey)) {
346
+ state.leaves[parentKey] = [];
347
+ }
348
+ state.leaves[parentKey].push(child);
349
+ }
350
+ });
351
+ }
352
+
353
+ onBeforeMount(async () => {
354
+ await cartStore.init();
355
+ await getChildren();
356
+
357
+ if (props.mode === "basket") {
358
+ state.nodes.push(cartStore.state.basketRootNode);
359
+ }
360
+
361
+ console.log("state.nodes test", state.nodes);
362
+
363
+ console.log("state.leaves", state.leaves);
364
+ });
365
+ </script>
366
+
367
+ <style scoped>
368
+ .viur-shop-cart-wrap {
369
+ display: grid;
370
+ grid-template-columns: subgrid;
371
+ }
372
+
373
+ sl-alert {
374
+ margin-top: var(--sl-spacing-medium);
375
+ margin-bottom: var(--sl-spacing-medium);
376
+ }
377
+
378
+ .viur-shop-cart-controlbar {
379
+ width: 100%;
380
+ display: flex;
381
+ justify-content: space-between;
382
+ align-items: center;
383
+
384
+ sl-input {
385
+ flex: 1;
386
+
387
+ &::part(base) {
388
+ margin-bottom: 0;
389
+ }
390
+ }
391
+ }
392
+
393
+ .viur-shop-cart-button-list {
394
+ display: flex;
395
+ flex-direction: row;
396
+ gap: 10px;
397
+
398
+ &.left {
399
+ flex: 1;
400
+ margin-right: 10px;
401
+ }
402
+ }
403
+
404
+ .search {
405
+ flex: 1 1 100%;
406
+ margin-left: 10px;
407
+ }
408
+
409
+ .article-combobox {
410
+ float: left;
411
+ width: 75ch;
412
+ }
413
+
414
+ .viur-shop-cart-card-img {
415
+ aspect-ratio: 1;
416
+ }
417
+
418
+ .viur-shop-cart-selection {
419
+ flex: 1;
420
+ }
421
+
422
+ .viur-shop-cart-node {
423
+ display: flex;
424
+ flex-direction: column;
425
+ }
426
+
427
+ .cart-wrap {
428
+ display: flex;
429
+ flex-direction: column;
430
+ width: 100%;
431
+ }
432
+
433
+ .soma-input {
434
+ display: grid;
435
+ grid-template-columns: 120px 1fr;
436
+ align-items: center;
437
+ }
438
+
439
+ .soma-label {
440
+ display: flex;
441
+ flex-direction: row;
442
+ align-items: center;
443
+
444
+ sl-icon {
445
+ margin-left: 5px;
446
+ background-color: @highlightColor;
447
+ color: #fff;
448
+ aspect-ratio: 1;
449
+ border-radius: 50%;
450
+ padding: 0.3em;
451
+ font-size: 0.6em;
452
+ cursor: pointer;
453
+ }
454
+ }
455
+
456
+ sl-tooltip {
457
+ &::part(body) {
458
+ line-height: 1.2;
459
+ font-weight: 400;
460
+ padding: 10px;
461
+ }
462
+ }
463
+
464
+ .cart-tab {
465
+ sl-tab {
466
+ width: 25%;
467
+
468
+ &::part(base) {
469
+ width: 100%;
470
+ height: 100%;
471
+ display: flex;
472
+ justify-content: center;
473
+ align-items: center;
474
+ position: relative;
475
+ color: var(--sl-color-neutral-400);
476
+ }
477
+
478
+ &[aria-selected="true"]::part(base) {
479
+ color: var(--ignt-color-primary) !important;
480
+ }
481
+ }
482
+ }
483
+
484
+ .cart-status-text {
485
+ font-size: 0.8em;
486
+ color: inherit;
487
+ text-align: center;
488
+ margin-top: 0.6em;
489
+ white-space: initial;
490
+ }
491
+
492
+ .search-box {
493
+ display: flex;
494
+ flex-direction: row;
495
+ flex-wrap: nowrap;
496
+ align-items: stretch;
497
+ margin-bottom: 30px;
498
+
499
+ sl-button {
500
+ &::part(base) {
501
+ height: 100%;
502
+ }
503
+ }
504
+
505
+ @media (--ignt-mq-max-break-medium) {
506
+ flex-wrap: wrap;
507
+ }
508
+ }
509
+
510
+ .article-combobox {
511
+ flex: 1 1 100%;
512
+ margin-bottom: 10px;
513
+
514
+ &::part(base) {
515
+ margin-bottom: 0;
516
+ }
517
+
518
+ @media (--ignt-mq-max-break-medium) {
519
+ margin-bottom: 0;
520
+ }
521
+ }
522
+
523
+ .comission-box {
524
+ margin-right: 10px;
525
+
526
+ &::part(base) {
527
+ margin-bottom: 0;
528
+ }
529
+
530
+ @media (--ignt-mq-max-break-medium) {
531
+ flex: 1;
532
+ }
533
+ }
534
+
535
+ .search-amt {
536
+ margin-right: 10px;
537
+
538
+ &::part(base) {
539
+ margin-bottom: 0;
540
+ width: 80px;
541
+ }
542
+ }
543
+
544
+ .viur-shop-cart-headline {
545
+ &::part(base) {
546
+ background-color: transparent;
547
+ transition: all ease 0.3s;
548
+ border-bottom: 1px solid transparent;
549
+ height: auto;
550
+ }
551
+
552
+ :deep(.input--focused) {
553
+ border-bottom: 1px solid var(--sl-color-primary-500) !important;
554
+ }
555
+
556
+ &::part(input) {
557
+ color: var(--sl-color-primary-500);
558
+ font-weight: 300;
559
+ text-transform: uppercase;
560
+ font-size: 1.85em;
561
+ padding: 0.1em 0;
562
+ height: auto;
563
+ }
564
+
565
+ &::part(suffix) {
566
+ pointer-events: none;
567
+ width: 1.5em;
568
+ margin-left: -1em;
569
+ font-size: 1.5em;
570
+ }
571
+
572
+ &:hover {
573
+ &::part(base) {
574
+ border-bottom: 1px solid var(--sl-color-primary-500);
575
+ }
576
+ }
577
+ }
578
+
579
+ .viur-shop-cart-descr {
580
+ margin-top: 10px;
581
+
582
+ &::part(base) {
583
+ background-color: transparent;
584
+ transition: all ease 0.3s;
585
+ border-bottom: 1px solid transparent;
586
+ margin-bottom: 0;
587
+ }
588
+
589
+ &::part(input) {
590
+ padding: 0.1em 0;
591
+ height: auto;
592
+ color: var(--ignt-color-text);
593
+ }
594
+
595
+ &::part(suffix) {
596
+ pointer-events: none;
597
+ width: 1.5em;
598
+ margin-left: -1em;
599
+ font-size: 1.5em;
600
+ }
601
+
602
+ &:hover {
603
+ &::part(base) {
604
+ border-bottom: 1px solid var(--ignt-color-text);
605
+ }
606
+ }
607
+ }
608
+
609
+ sl-menu-item {
610
+ &::part(base) {
611
+ padding: 0.2em 0.9em 0.2em 0.8em;
612
+ }
613
+
614
+ &::part(checked-icon) {
615
+ display: none;
616
+ }
617
+
618
+ &::part(prefix) {
619
+ margin-right: 10px;
620
+ }
621
+
622
+ &::part(suffix) {
623
+ margin-right: -1.5em;
624
+ }
625
+ }
626
+
627
+ .primary-icon {
628
+ color: var(--ignt-color-primary);
629
+ }
630
+
631
+ .delete-icon {
632
+ color: @warnColor;
633
+ }
634
+
635
+ .dots {
636
+ color: var(--ignt-color-primary);
637
+ width: 1.5em;
638
+ height: 100%;
639
+ font-size: 1em;
640
+ padding: 0.4em;
641
+ }
642
+
643
+ .viur-shop-cart-card {
644
+ margin-bottom: var(--sl-spacing-x-large);
645
+
646
+ &::part(header) {
647
+ border-bottom: none;
648
+ padding-top: 0;
649
+ padding-right: 0;
650
+ }
651
+
652
+ &::part(image) {
653
+ flex-basis: 25%;
654
+ max-width: 250px;
655
+ }
656
+
657
+ &::part(body) {
658
+ display: flex;
659
+ flex: 1;
660
+ padding-top: 0;
661
+ padding-bottom: 0;
662
+ padding-right: 0;
663
+ }
664
+
665
+ &::part(group) {
666
+ padding: var(--sl-spacing-small) 0;
667
+ }
668
+ }
669
+
670
+ .viur-shop-cart-card-body-row {
671
+ display: grid;
672
+ grid-template-columns: 1fr auto auto;
673
+ gap: var(--sl-spacing-large);
674
+ flex: 1;
675
+ }
676
+
677
+ .viur-shop-cart-card-body-info {
678
+ display: flex;
679
+ flex-direction: column;
680
+ height: 100%;
681
+ }
682
+
683
+ .viur-shop-cart-card-descr {
684
+ margin-bottom: auto;
685
+ }
686
+
687
+ .viur-shop-cart-card-body-footer {
688
+ display: flex;
689
+ flex-direction: row;
690
+ gap: var(--sl-spacing-2x-small);
691
+ margin-top: var(--sl-spacing-large);
692
+ }
693
+
694
+ .amount-input {
695
+ width: 5em;
696
+ }
697
+
698
+ .viur-shop-cart-card-price-wrap {
699
+ display: flex;
700
+ flex-direction: column;
701
+
702
+ .viur-shop-cart-card-small-print {
703
+ font-size: 0.75em;
704
+ margin-left: auto;
705
+ }
706
+ }
707
+
708
+ .viur-shop-cart-card-price {
709
+ font-size: 1.3em;
710
+ }
711
+
712
+ .viur-shop-cart-card-price-label {
713
+ color: var(--ignt-color-primary);
714
+ font-weight: 600;
715
+ margin-bottom: 10px;
716
+ font-size: 1em;
717
+ margin-left: auto;
718
+ }
719
+
720
+ .viur-shop-cart-mobile-footer {
721
+ display: none;
722
+ }
723
+ </style>