@citygross/components_v2 0.0.12 → 0.0.14
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/components/AlertBox/AlertBox.css.ts.vanilla.css +24 -24
- package/dist/components/AlertBox/AlertBox.css.vanilla.js +1 -1
- package/dist/components/AlertBox/AlertBox.d.ts +1 -1
- package/dist/components/AlertBox/AlertBox.js +1 -1
- package/dist/components/Box/Box.css.ts.vanilla.css +4 -0
- package/dist/components/Box/Box.css.vanilla.js +9 -0
- package/dist/components/Box/Box.d.ts +1 -1
- package/dist/components/Box/Box.js +21 -2
- package/dist/components/BoxArrow/BoxArrow.css.ts.vanilla.css +48 -48
- package/dist/components/BoxArrow/BoxArrow.css.vanilla.js +1 -2
- package/dist/components/CartItemSummary/CartItemSummary.css.ts.vanilla.css +23 -0
- package/dist/components/CartItemSummary/CartItemSummary.css.vanilla.js +8 -0
- package/dist/components/CartItemSummary/CartItemSummary.d.ts +15 -0
- package/dist/components/CartItemSummary/CartItemSummary.js +31 -0
- package/dist/components/CartSummary/CartSummary.css.ts.vanilla.css +34 -0
- package/dist/components/CartSummary/CartSummary.css.vanilla.js +11 -0
- package/dist/components/CartSummary/CartSummary.d.ts +26 -0
- package/dist/components/CartSummary/CartSummary.js +60 -0
- package/dist/components/Divider/Divider.css.ts.vanilla.css +6 -0
- package/dist/components/Divider/Divider.css.vanilla.js +7 -0
- package/dist/components/Divider/Divider.d.ts +9 -0
- package/dist/components/Divider/Divider.js +10 -0
- package/dist/components/Dot/Dot.css.ts.vanilla.css +8 -0
- package/dist/components/Dot/Dot.css.vanilla.js +7 -0
- package/dist/components/Dot/Dot.d.ts +9 -0
- package/dist/components/Dot/Dot.js +16 -0
- package/dist/components/FormControl/FormControl.css.ts.vanilla.css +21 -0
- package/dist/components/FormControl/FormControl.css.vanilla.js +7 -0
- package/dist/components/FormControl/FormControl.d.ts +17 -0
- package/dist/components/FormControl/FormControl.js +21 -0
- package/dist/components/Input/Input.css.ts.vanilla.css +60 -0
- package/dist/components/Input/Input.css.vanilla.js +9 -0
- package/dist/components/Input/Input.d.ts +16 -0
- package/dist/components/Input/Input.js +49 -0
- package/dist/components/ListItem/ListItem.css.ts.vanilla.css +72 -0
- package/dist/components/ListItem/ListItem.css.vanilla.js +11 -0
- package/dist/components/ListItem/ListItem.d.ts +29 -0
- package/dist/components/ListItem/ListItem.js +92 -0
- package/dist/components/ListItem/assets/fallback_grocery.js +3 -0
- package/dist/components/Skeleton/Skeleton.css.ts.vanilla.css +164 -0
- package/dist/components/Skeleton/Skeleton.css.vanilla.js +7 -0
- package/dist/components/Skeleton/Skeleton.d.ts +10 -0
- package/dist/components/Skeleton/Skeleton.js +22 -0
- package/dist/components/Spacer/Spacer.css.ts.vanilla.css +3 -0
- package/dist/components/Spacer/Spacer.css.vanilla.js +7 -0
- package/dist/components/Spacer/Spacer.d.ts +9 -0
- package/dist/components/Spacer/Spacer.js +6 -0
- package/dist/components/Spinner/Spinner.css.ts.vanilla.css +171 -0
- package/dist/components/Spinner/Spinner.css.vanilla.js +7 -0
- package/dist/components/Spinner/Spinner.d.ts +10 -0
- package/dist/components/Spinner/Spinner.js +17 -0
- package/dist/components/TimeLine/TimeLine.css.ts.vanilla.css +178 -0
- package/dist/components/TimeLine/TimeLine.css.vanilla.js +9 -0
- package/dist/components/TimeLine/TimeLine.d.ts +25 -0
- package/dist/components/TimeLine/TimeLine.js +53 -0
- package/dist/cssUtils/border.css.d.ts +4 -0
- package/dist/cssUtils/border.css.vanilla.js +6 -0
- package/dist/cssUtils/color.css.d.ts +6 -0
- package/dist/cssUtils/color.css.vanilla.js +8 -0
- package/dist/cssUtils/spacings.css.d.ts +9 -0
- package/dist/cssUtils/spacings.css.ts.vanilla.css +0 -66
- package/dist/cssUtils/spacings.css.vanilla.js +11 -0
- package/dist/cssUtils/typography.css.d.ts +5 -0
- package/dist/cssUtils/typography.css.ts.vanilla.css +100 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +20 -2
- package/dist/typography/BodyText/BodyText.css.vanilla.js +8 -0
- package/dist/typography/BodyText/BodyText.d.ts +16 -0
- package/dist/typography/BodyText/BodyText.js +28 -0
- package/dist/typography/H3/H3.css.ts.vanilla.css +4 -0
- package/dist/typography/H3/H3.css.vanilla.js +8 -0
- package/dist/typography/H3/H3.js +24 -0
- package/package.json +2 -2
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { formatPrice } from '@citygross/utils';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { H3 } from '../../typography/H3/H3.js';
|
|
4
|
+
import { BodyText } from '../../typography/BodyText/BodyText.js';
|
|
5
|
+
import { cartPaymentContainer, cartSummaryTitle, cartSummaryHeader, cartLine, amountWrapper, cartSummaryFooter } from './CartSummary.css.vanilla.js';
|
|
6
|
+
import { Divider } from '../Divider/Divider.js';
|
|
7
|
+
|
|
8
|
+
const calculateSummaryLine = (items) => {
|
|
9
|
+
const sumOfItems = items?.reduce(
|
|
10
|
+
(prev, curr) => {
|
|
11
|
+
return {
|
|
12
|
+
cancelledQuantity: prev.cancelledQuantity + (curr?.cancelledQuantity ?? 0),
|
|
13
|
+
quantity: prev.quantity + curr.quantity,
|
|
14
|
+
amount: prev.amount + (curr?.amount ?? 0),
|
|
15
|
+
cancelledAmount: prev.cancelledAmount + (curr?.cancelledAmount ?? 0)
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
cancelledQuantity: 0,
|
|
20
|
+
quantity: 0,
|
|
21
|
+
amount: 0,
|
|
22
|
+
cancelledAmount: 0
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
return sumOfItems;
|
|
26
|
+
};
|
|
27
|
+
function CartSummary({
|
|
28
|
+
saveLabel = "rabatter",
|
|
29
|
+
shippingLabel = "frakt",
|
|
30
|
+
totalLabel = "totalt",
|
|
31
|
+
taxLabel = "varav moms",
|
|
32
|
+
...cartSummary
|
|
33
|
+
}) {
|
|
34
|
+
const charges = cartSummary.charges ?? [];
|
|
35
|
+
const bags = cartSummary.bags ?? [];
|
|
36
|
+
const groceries = cartSummary.groceries ?? [];
|
|
37
|
+
const cateredMeals = cartSummary?.cateredMeals ?? [];
|
|
38
|
+
const sumOfBags = calculateSummaryLine(bags);
|
|
39
|
+
const sumOfGroceries = calculateSummaryLine(groceries);
|
|
40
|
+
const sumOfCateredMeals = calculateSummaryLine(cateredMeals);
|
|
41
|
+
return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { className: cartPaymentContainer }, cartSummary.title && /* @__PURE__ */ React.createElement("div", { className: cartSummaryTitle }, /* @__PURE__ */ React.createElement(H3, null, cartSummary.title), /* @__PURE__ */ React.createElement(BodyText, null, cartSummary.subTitle)), /* @__PURE__ */ React.createElement(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: cartSummaryHeader({
|
|
45
|
+
title: Boolean(cartSummary.title)
|
|
46
|
+
})
|
|
47
|
+
},
|
|
48
|
+
(groceries?.length > 0 || cateredMeals?.length > 0) && /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(BodyText, null, "varor", " ", (sumOfGroceries?.quantity ?? 0) + (sumOfCateredMeals?.quantity ?? 0), " ", "st"), /* @__PURE__ */ React.createElement("div", { className: amountWrapper }, sumOfGroceries?.cancelledAmount > 0 && /* @__PURE__ */ React.createElement(BodyText, { textDecoration: "lineThrough", color: "dark" }, formatPrice(
|
|
49
|
+
(sumOfGroceries?.cancelledAmount ?? 0) + (sumOfCateredMeals?.cancelledAmount ?? 0)
|
|
50
|
+
)), /* @__PURE__ */ React.createElement(H3, { fontWeight: "semiBold" }, formatPrice(
|
|
51
|
+
sumOfGroceries.amount + sumOfCateredMeals.amount
|
|
52
|
+
)))),
|
|
53
|
+
bags.length > 0 && /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(BodyText, null, "matkassar ", sumOfBags.quantity, " st"), /* @__PURE__ */ React.createElement("div", { className: amountWrapper }, sumOfBags.cancelledAmount > 0 && /* @__PURE__ */ React.createElement(BodyText, { textDecoration: "lineThrough", color: "dark" }, formatPrice(sumOfBags.cancelledAmount)), /* @__PURE__ */ React.createElement(H3, { fontWeight: "semiBold" }, formatPrice(sumOfBags.amount)))),
|
|
54
|
+
charges?.length > 0 && /* @__PURE__ */ React.createElement(Divider, { marginVertical: "xs" }),
|
|
55
|
+
charges?.map((charge) => /* @__PURE__ */ React.createElement("div", { className: cartLine, key: charge.name }, /* @__PURE__ */ React.createElement(BodyText, null, charge?.name?.toLowerCase()), /* @__PURE__ */ React.createElement("div", { className: amountWrapper }, charge.cancelledAmount > 0 && /* @__PURE__ */ React.createElement(BodyText, { textDecoration: "lineThrough", color: "dark" }, formatPrice(charge.cancelledAmount)), /* @__PURE__ */ React.createElement(BodyText, null, formatPrice(charge.amount))))),
|
|
56
|
+
cartSummary.totalDiscount > 0 && /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(BodyText, { color: "alertRed" }, saveLabel), /* @__PURE__ */ React.createElement(BodyText, { color: "alertRed" }, formatPrice(cartSummary.totalDiscount)))
|
|
57
|
+
), /* @__PURE__ */ React.createElement("div", { className: cartSummaryFooter }, cartSummary.deliveryFee?.amount && cartSummary.deliveryFee.amount > 0 && /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(BodyText, null, shippingLabel), /* @__PURE__ */ React.createElement(BodyText, null, formatPrice(cartSummary.deliveryFee.amount))), /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(H3, { fontWeight: "semiBold" }, totalLabel), /* @__PURE__ */ React.createElement(H3, { fontWeight: "semiBold" }, formatPrice(cartSummary.totalAmount))), /* @__PURE__ */ React.createElement("div", { className: cartLine }, /* @__PURE__ */ React.createElement(BodyText, null, taxLabel), /* @__PURE__ */ React.createElement(BodyText, null, formatPrice(cartSummary.totalTaxAmount))))));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { CartSummary };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './../../cssUtils/spacings.css.ts.vanilla.css';
|
|
2
|
+
import './Divider.css.ts.vanilla.css';
|
|
3
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
4
|
+
|
|
5
|
+
var divider = createRuntimeFn({ defaultClassName: "Divider_divider__1ibthdh0", variantClassNames: { marginVertical: { xxxs: "spacings_marginVertical_xxxs__e0awtzo", xxs: "spacings_marginVertical_xxs__e0awtzp", xxs2: "spacings_marginVertical_xxs2__e0awtzq", xs: "spacings_marginVertical_xs__e0awtzr", xs2: "spacings_marginVertical_xs2__e0awtzs", sm: "spacings_marginVertical_sm__e0awtzt", sm2: "spacings_marginVertical_sm2__e0awtzu", md: "spacings_marginVertical_md__e0awtzv", lg: "spacings_marginVertical_lg__e0awtzw", xl: "spacings_marginVertical_xl__e0awtzx", xxl: "spacings_marginVertical_xxl__e0awtzy", false: "spacings_marginVertical_false__e0awtzz" } }, defaultVariants: {}, compoundVariants: [] });
|
|
6
|
+
|
|
7
|
+
export { divider };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './../../cssUtils/color.css.ts.vanilla.css';
|
|
2
|
+
import './Dot.css.ts.vanilla.css';
|
|
3
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
4
|
+
|
|
5
|
+
var dot = createRuntimeFn({ defaultClassName: "Dot_dot__37teiy0", variantClassNames: { backgroundColor: { primary: "color_backgroundColor_primary__13rr0b21b", secondary: "color_backgroundColor_secondary__13rr0b21c", brandYellow: "color_backgroundColor_brandYellow__13rr0b21d", brandBlue: "color_backgroundColor_brandBlue__13rr0b21e", brandPurple: "color_backgroundColor_brandPurple__13rr0b21f", brandPrio: "color_backgroundColor_brandPrio__13rr0b21g", yellowLighter: "color_backgroundColor_yellowLighter__13rr0b21h", yellowLight: "color_backgroundColor_yellowLight__13rr0b21i", blueLight: "color_backgroundColor_blueLight__13rr0b21j", blueLighter: "color_backgroundColor_blueLighter__13rr0b21k", blueMedium: "color_backgroundColor_blueMedium__13rr0b21l", greenLight: "color_backgroundColor_greenLight__13rr0b21m", greenMedium: "color_backgroundColor_greenMedium__13rr0b21n", redLight: "color_backgroundColor_redLight__13rr0b21o", recipeVego: "color_backgroundColor_recipeVego__13rr0b21p", recipeLactose: "color_backgroundColor_recipeLactose__13rr0b21q", recipeGluten: "color_backgroundColor_recipeGluten__13rr0b21r", link: "color_backgroundColor_link__13rr0b21s", white: "color_backgroundColor_white__13rr0b21t", black: "color_backgroundColor_black__13rr0b21u", lightest: "color_backgroundColor_lightest__13rr0b21v", lighter: "color_backgroundColor_lighter__13rr0b21w", light: "color_backgroundColor_light__13rr0b21x", medium: "color_backgroundColor_medium__13rr0b21y", mediumDark: "color_backgroundColor_mediumDark__13rr0b21z", dark: "color_backgroundColor_dark__13rr0b220", darker: "color_backgroundColor_darker__13rr0b221", darkest: "color_backgroundColor_darkest__13rr0b222", buttonGray: "color_backgroundColor_buttonGray__13rr0b223", disabledGray: "color_backgroundColor_disabledGray__13rr0b224", disabledDarkGray: "color_backgroundColor_disabledDarkGray__13rr0b225", placeholder: "color_backgroundColor_placeholder__13rr0b226", border: "color_backgroundColor_border__13rr0b227", boxShadow: "color_backgroundColor_boxShadow__13rr0b228", boxShadowActive: "color_backgroundColor_boxShadowActive__13rr0b229", alertRed: "color_backgroundColor_alertRed__13rr0b22a", alertBlue: "color_backgroundColor_alertBlue__13rr0b22b", alertGreen: "color_backgroundColor_alertGreen__13rr0b22c", darkOverlay: "color_backgroundColor_darkOverlay__13rr0b22d", transparent: "color_backgroundColor_transparent__13rr0b22e", brandBlueHover: "color_backgroundColor_brandBlueHover__13rr0b22f", brandYellowHover: "color_backgroundColor_brandYellowHover__13rr0b22g", brandPrioHover: "color_backgroundColor_brandPrioHover__13rr0b22h", brandBlueActive: "color_backgroundColor_brandBlueActive__13rr0b22i", brandYellowActive: "color_backgroundColor_brandYellowActive__13rr0b22j", brandPrioActive: "color_backgroundColor_brandPrioActive__13rr0b22k", none: "color_backgroundColor_none__13rr0b22l" }, color: { primary: "color_color_primary__13rr0b20", secondary: "color_color_secondary__13rr0b21", brandYellow: "color_color_brandYellow__13rr0b22", brandBlue: "color_color_brandBlue__13rr0b23", brandPurple: "color_color_brandPurple__13rr0b24", brandPrio: "color_color_brandPrio__13rr0b25", yellowLighter: "color_color_yellowLighter__13rr0b26", yellowLight: "color_color_yellowLight__13rr0b27", blueLight: "color_color_blueLight__13rr0b28", blueLighter: "color_color_blueLighter__13rr0b29", blueMedium: "color_color_blueMedium__13rr0b2a", greenLight: "color_color_greenLight__13rr0b2b", greenMedium: "color_color_greenMedium__13rr0b2c", redLight: "color_color_redLight__13rr0b2d", recipeVego: "color_color_recipeVego__13rr0b2e", recipeLactose: "color_color_recipeLactose__13rr0b2f", recipeGluten: "color_color_recipeGluten__13rr0b2g", link: "color_color_link__13rr0b2h", white: "color_color_white__13rr0b2i", black: "color_color_black__13rr0b2j", lightest: "color_color_lightest__13rr0b2k", lighter: "color_color_lighter__13rr0b2l", light: "color_color_light__13rr0b2m", medium: "color_color_medium__13rr0b2n", mediumDark: "color_color_mediumDark__13rr0b2o", dark: "color_color_dark__13rr0b2p", darker: "color_color_darker__13rr0b2q", darkest: "color_color_darkest__13rr0b2r", buttonGray: "color_color_buttonGray__13rr0b2s", disabledGray: "color_color_disabledGray__13rr0b2t", disabledDarkGray: "color_color_disabledDarkGray__13rr0b2u", placeholder: "color_color_placeholder__13rr0b2v", border: "color_color_border__13rr0b2w", boxShadow: "color_color_boxShadow__13rr0b2x", boxShadowActive: "color_color_boxShadowActive__13rr0b2y", alertRed: "color_color_alertRed__13rr0b2z", alertBlue: "color_color_alertBlue__13rr0b210", alertGreen: "color_color_alertGreen__13rr0b211", darkOverlay: "color_color_darkOverlay__13rr0b212", transparent: "color_color_transparent__13rr0b213", brandBlueHover: "color_color_brandBlueHover__13rr0b214", brandYellowHover: "color_color_brandYellowHover__13rr0b215", brandPrioHover: "color_color_brandPrioHover__13rr0b216", brandBlueActive: "color_color_brandBlueActive__13rr0b217", brandYellowActive: "color_color_brandYellowActive__13rr0b218", brandPrioActive: "color_color_brandPrioActive__13rr0b219", none: "color_color_none__13rr0b21a" } }, defaultVariants: {}, compoundVariants: [] });
|
|
6
|
+
|
|
7
|
+
export { dot };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { dot } from './Dot.css.vanilla.js';
|
|
3
|
+
|
|
4
|
+
function Dot({ color = "white", shadow }) {
|
|
5
|
+
return /* @__PURE__ */ React.createElement(
|
|
6
|
+
"div",
|
|
7
|
+
{
|
|
8
|
+
className: dot({
|
|
9
|
+
color: shadow,
|
|
10
|
+
backgroundColor: color
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { Dot };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.FormControl_formControlWrapper__1fqhaql0 {
|
|
2
|
+
flex: 1;
|
|
3
|
+
max-width: 100%;
|
|
4
|
+
}
|
|
5
|
+
.FormControl_formControlElementWrapper__1fqhaql4 {
|
|
6
|
+
position: relative;
|
|
7
|
+
padding-bottom: 8px;
|
|
8
|
+
display: flex;
|
|
9
|
+
width: 100%;
|
|
10
|
+
}
|
|
11
|
+
@media screen and (min-width: 480px) {
|
|
12
|
+
.FormControl_screenWidth_1\/2__1fqhaql1 {
|
|
13
|
+
max-width: calc(50% - 12px);
|
|
14
|
+
}
|
|
15
|
+
.FormControl_screenWidth_1\/3__1fqhaql2 {
|
|
16
|
+
max-width: calc(33% - 12px);
|
|
17
|
+
}
|
|
18
|
+
.FormControl_screenWidth_1\/4__1fqhaql3 {
|
|
19
|
+
max-width: calc(25% - 12px);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './FormControl.css.ts.vanilla.css';
|
|
2
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
3
|
+
|
|
4
|
+
var formControlElementWrapper = createRuntimeFn({ defaultClassName: "FormControl_formControlElementWrapper__1fqhaql4", variantClassNames: { screenWidth: { "1/2": "FormControl_screenWidth_1/2__1fqhaql1", "1/3": "FormControl_screenWidth_1/3__1fqhaql2", "1/4": "FormControl_screenWidth_1/4__1fqhaql3" } }, defaultVariants: {}, compoundVariants: [] });
|
|
5
|
+
var formControlWrapper = "FormControl_formControlWrapper__1fqhaql0";
|
|
6
|
+
|
|
7
|
+
export { formControlElementWrapper, formControlWrapper };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
declare enum TScreenWidth {
|
|
4
|
+
'1/2' = "calc(50% - 12px)",
|
|
5
|
+
'1/3' = "calc(33% - 12px)",
|
|
6
|
+
'1/4' = "calc(25% - 12px)"
|
|
7
|
+
}
|
|
8
|
+
declare type TFormControl = {
|
|
9
|
+
title?: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
errorMessage?: React.ReactNode;
|
|
12
|
+
isValid?: boolean;
|
|
13
|
+
screenWidth?: '1/2' | '1/3' | '1/4';
|
|
14
|
+
};
|
|
15
|
+
declare function FormControl({ title, children, errorMessage, isValid, screenWidth }: TFormControl): JSX.Element;
|
|
16
|
+
|
|
17
|
+
export { FormControl, TFormControl, TScreenWidth };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { H3 } from '@citygross/typography';
|
|
3
|
+
import { formControlWrapper, formControlElementWrapper } from './FormControl.css.vanilla.js';
|
|
4
|
+
|
|
5
|
+
var TScreenWidth = /* @__PURE__ */ ((TScreenWidth2) => {
|
|
6
|
+
TScreenWidth2["1/2"] = "calc(50% - 12px)";
|
|
7
|
+
TScreenWidth2["1/3"] = "calc(33% - 12px)";
|
|
8
|
+
TScreenWidth2["1/4"] = "calc(25% - 12px)";
|
|
9
|
+
return TScreenWidth2;
|
|
10
|
+
})(TScreenWidth || {});
|
|
11
|
+
function FormControl({
|
|
12
|
+
title,
|
|
13
|
+
children,
|
|
14
|
+
errorMessage,
|
|
15
|
+
isValid = true,
|
|
16
|
+
screenWidth
|
|
17
|
+
}) {
|
|
18
|
+
return /* @__PURE__ */ React.createElement("div", { className: formControlWrapper }, title && /* @__PURE__ */ React.createElement("div", { className: formControlElementWrapper() }, /* @__PURE__ */ React.createElement(H3, null, title)), /* @__PURE__ */ React.createElement("div", { className: formControlElementWrapper({ screenWidth }) }, children), errorMessage && !isValid && errorMessage);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { FormControl, TScreenWidth };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
.Input_padding_small__oylrxv0 {
|
|
2
|
+
padding: 4px 8px;
|
|
3
|
+
}
|
|
4
|
+
.Input_padding_default__oylrxv1 {
|
|
5
|
+
padding: 8px 16px;
|
|
6
|
+
}
|
|
7
|
+
.Input_flexGrow_true__oylrxv2 {
|
|
8
|
+
flex-grow: 1;
|
|
9
|
+
}
|
|
10
|
+
.Input_inputWrapper__oylrxv3 {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: inline-block;
|
|
13
|
+
}
|
|
14
|
+
.Input_input__oylrxv5 {
|
|
15
|
+
outline: none;
|
|
16
|
+
border-radius: 2px;
|
|
17
|
+
background-color: #FFFFFF;
|
|
18
|
+
color: #333333;
|
|
19
|
+
transition: box-shadow 250ms ease;
|
|
20
|
+
border-width: 1px;
|
|
21
|
+
border-style: solid;
|
|
22
|
+
border-color: #979797;
|
|
23
|
+
}
|
|
24
|
+
.Input_input__oylrxv5:focus, .Input_input__oylrxv5:hover {
|
|
25
|
+
border-color: #0069AE;
|
|
26
|
+
}
|
|
27
|
+
.Input_input__oylrxv5:focus {
|
|
28
|
+
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.35);
|
|
29
|
+
}
|
|
30
|
+
.Input_input__oylrxv5::placeholder {
|
|
31
|
+
color: #979797;
|
|
32
|
+
}
|
|
33
|
+
.Input_input__oylrxv5:disabled::placeholder {
|
|
34
|
+
color: #DBDBDB;
|
|
35
|
+
}
|
|
36
|
+
.Input_input_withIcon_true__oylrxvi {
|
|
37
|
+
width: 100%;
|
|
38
|
+
padding-right: 45px;
|
|
39
|
+
}
|
|
40
|
+
.Input_input_inValid_true__oylrxvj {
|
|
41
|
+
border-color: #E02721;
|
|
42
|
+
}
|
|
43
|
+
.Input_input_inValid_true__oylrxvj:focus, .Input_input_inValid_true__oylrxvj:hover {
|
|
44
|
+
border-color: #E02721;
|
|
45
|
+
}
|
|
46
|
+
.Input_input_customFocus_false__oylrxvk:focus-visible:not(:hover) {
|
|
47
|
+
outline: none;
|
|
48
|
+
box-shadow: 0 0 0 2px #fff,0 0 0 4px #000,0 0 0 6px #fff;
|
|
49
|
+
transition: all 0.1s ease-in-out;
|
|
50
|
+
}
|
|
51
|
+
.Input_iconWrapper__oylrxvl {
|
|
52
|
+
display: flex;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
position: absolute;
|
|
56
|
+
height: 100%;
|
|
57
|
+
right: 16px;
|
|
58
|
+
top: 0;
|
|
59
|
+
cursor: pointer;
|
|
60
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import './../../cssUtils/typography.css.ts.vanilla.css';
|
|
2
|
+
import './Input.css.ts.vanilla.css';
|
|
3
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
4
|
+
|
|
5
|
+
var iconWrapper = "Input_iconWrapper__oylrxvl";
|
|
6
|
+
var input = createRuntimeFn({ defaultClassName: "Input_input__oylrxv5", variantClassNames: { padding: { small: "Input_padding_small__oylrxv0", "default": "Input_padding_default__oylrxv1" }, fontSize: { xs: "typography_fontSize_xs__xithyt3", s1: "typography_fontSize_s1__xithyt4", s2: "typography_fontSize_s2__xithyt5", s3: "typography_fontSize_s3__xithyt6", s4: "typography_fontSize_s4__xithyt7", m1: "typography_fontSize_m1__xithyt8", m2: "typography_fontSize_m2__xithyt9", l1: "typography_fontSize_l1__xithyta", code: "typography_fontSize_code__xithytb" }, flexGrow: { true: "Input_flexGrow_true__oylrxv2" }, withIcon: { true: "Input_input_withIcon_true__oylrxvi" }, inValid: { true: "Input_input_inValid_true__oylrxvj" }, customFocus: { false: "Input_input_customFocus_false__oylrxvk" } }, defaultVariants: { padding: "default", fontSize: "s3" }, compoundVariants: [] });
|
|
7
|
+
var inputWrapper = createRuntimeFn({ defaultClassName: "Input_inputWrapper__oylrxv3", variantClassNames: { flexGrow: { true: "Input_flexGrow_true__oylrxv2" } }, defaultVariants: {}, compoundVariants: [] });
|
|
8
|
+
|
|
9
|
+
export { iconWrapper, input, inputWrapper };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TFontSizeKeys } from '@citygross/design-tokens_v2';
|
|
2
|
+
import React, { InputHTMLAttributes } from 'react';
|
|
3
|
+
|
|
4
|
+
declare type TInput = InputHTMLAttributes<HTMLInputElement> & {
|
|
5
|
+
icon?: JSX.Element;
|
|
6
|
+
iconOnClick?: () => void;
|
|
7
|
+
flexGrow?: boolean;
|
|
8
|
+
inValid?: boolean;
|
|
9
|
+
fontSize?: TFontSizeKeys;
|
|
10
|
+
inputSize?: 'small' | 'medium';
|
|
11
|
+
};
|
|
12
|
+
declare function Input({ icon, iconOnClick, flexGrow, inValid, fontSize, inputSize, inputRef, ...props }: TInput & {
|
|
13
|
+
inputRef?: React.RefObject<HTMLInputElement>;
|
|
14
|
+
}): JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { Input, TInput };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { inputWrapper, input, iconWrapper } from './Input.css.vanilla.js';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
function Input({
|
|
5
|
+
icon,
|
|
6
|
+
iconOnClick,
|
|
7
|
+
flexGrow,
|
|
8
|
+
inValid,
|
|
9
|
+
fontSize,
|
|
10
|
+
inputSize = "medium",
|
|
11
|
+
inputRef,
|
|
12
|
+
...props
|
|
13
|
+
}) {
|
|
14
|
+
const [customFocus, setCustomFocus] = useState(false);
|
|
15
|
+
return icon ? /* @__PURE__ */ React.createElement("div", { className: inputWrapper({ flexGrow }) }, /* @__PURE__ */ React.createElement(
|
|
16
|
+
"input",
|
|
17
|
+
{
|
|
18
|
+
className: input({
|
|
19
|
+
flexGrow,
|
|
20
|
+
fontSize,
|
|
21
|
+
padding: inputSize === "small" ? "small" : "default",
|
|
22
|
+
withIcon: Boolean(icon),
|
|
23
|
+
inValid
|
|
24
|
+
}),
|
|
25
|
+
ref: inputRef,
|
|
26
|
+
...props
|
|
27
|
+
}
|
|
28
|
+
), /* @__PURE__ */ React.createElement("div", { className: iconWrapper, onClick: iconOnClick }, icon)) : /* @__PURE__ */ React.createElement(
|
|
29
|
+
"input",
|
|
30
|
+
{
|
|
31
|
+
className: input({
|
|
32
|
+
flexGrow,
|
|
33
|
+
fontSize,
|
|
34
|
+
padding: inputSize === "small" ? "small" : "default",
|
|
35
|
+
withIcon: Boolean(icon),
|
|
36
|
+
inValid,
|
|
37
|
+
customFocus
|
|
38
|
+
}),
|
|
39
|
+
ref: inputRef,
|
|
40
|
+
onMouseDown: () => {
|
|
41
|
+
setCustomFocus(true);
|
|
42
|
+
},
|
|
43
|
+
onBlur: () => setCustomFocus(false),
|
|
44
|
+
...props
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { Input };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
.ListItem_itemInformationContainer__60ftl90 {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
align-items: flex-start;
|
|
5
|
+
}
|
|
6
|
+
.ListItem_itemInformationContainer_padding_none__60ftl91 {
|
|
7
|
+
padding: 0;
|
|
8
|
+
}
|
|
9
|
+
.ListItem_itemInformationContainer_padding_default__60ftl92 {
|
|
10
|
+
padding: 8px;
|
|
11
|
+
}
|
|
12
|
+
.ListItem_listItemContainer__60ftl93 {
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
}
|
|
16
|
+
.ListItem_listItemContainer__60ftl93 > p {
|
|
17
|
+
padding: 1px 0px;
|
|
18
|
+
}
|
|
19
|
+
.ListItem_listLeft__60ftl94 {
|
|
20
|
+
display: flex;
|
|
21
|
+
gap: 16px;
|
|
22
|
+
}
|
|
23
|
+
.ListItem_listLeft_alignItems_inherit__60ftl95 {
|
|
24
|
+
align-items: inherit;
|
|
25
|
+
}
|
|
26
|
+
.ListItem_listLeft_alignItems_center__60ftl96 {
|
|
27
|
+
align-items: center;
|
|
28
|
+
}
|
|
29
|
+
.ListItem_listRight__60ftl97 {
|
|
30
|
+
display: flex;
|
|
31
|
+
gap: 16px;
|
|
32
|
+
}
|
|
33
|
+
.ListItem_listRight_alignItems_top__60ftl98 {
|
|
34
|
+
align-items: flex-start;
|
|
35
|
+
}
|
|
36
|
+
.ListItem_listRight_alignItems_center__60ftl99 {
|
|
37
|
+
align-items: center;
|
|
38
|
+
}
|
|
39
|
+
.ListItem_listImageContainer__60ftl9a {
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
flex-direction: row;
|
|
44
|
+
}
|
|
45
|
+
.ListItem_listImageContainer_size_small__60ftl9b {
|
|
46
|
+
width: 32px;
|
|
47
|
+
height: 32px;
|
|
48
|
+
}
|
|
49
|
+
.ListItem_listImageContainer_size_default__60ftl9c {
|
|
50
|
+
width: 64px;
|
|
51
|
+
height: 64px;
|
|
52
|
+
}
|
|
53
|
+
.ListItem_listImage__60ftl9d {
|
|
54
|
+
max-width: 100%;
|
|
55
|
+
}
|
|
56
|
+
.ListItem_listImage_height_auto__60ftl9e {
|
|
57
|
+
max-height: 100%;
|
|
58
|
+
}
|
|
59
|
+
.ListItem_listImage_height_small__60ftl9f {
|
|
60
|
+
max-height: 32px;
|
|
61
|
+
}
|
|
62
|
+
.ListItem_listImage_height_default__60ftl9g {
|
|
63
|
+
max-height: 50px;
|
|
64
|
+
}
|
|
65
|
+
@media screen and (min-width: 480px) {
|
|
66
|
+
.ListItem_listLeft__60ftl94 {
|
|
67
|
+
gap: 20px;
|
|
68
|
+
}
|
|
69
|
+
.ListItem_listRight__60ftl97 {
|
|
70
|
+
gap: 20px;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './ListItem.css.ts.vanilla.css';
|
|
2
|
+
import { createRuntimeFn } from '@vanilla-extract/recipes/createRuntimeFn';
|
|
3
|
+
|
|
4
|
+
var itemInformationContainer = createRuntimeFn({ defaultClassName: "ListItem_itemInformationContainer__60ftl90", variantClassNames: { padding: { none: "ListItem_itemInformationContainer_padding_none__60ftl91", "default": "ListItem_itemInformationContainer_padding_default__60ftl92" } }, defaultVariants: { padding: "default" }, compoundVariants: [] });
|
|
5
|
+
var listImage = createRuntimeFn({ defaultClassName: "ListItem_listImage__60ftl9d", variantClassNames: { height: { auto: "ListItem_listImage_height_auto__60ftl9e", small: "ListItem_listImage_height_small__60ftl9f", "default": "ListItem_listImage_height_default__60ftl9g" } }, defaultVariants: { height: "default" }, compoundVariants: [] });
|
|
6
|
+
var listImageContainer = createRuntimeFn({ defaultClassName: "ListItem_listImageContainer__60ftl9a", variantClassNames: { size: { small: "ListItem_listImageContainer_size_small__60ftl9b", "default": "ListItem_listImageContainer_size_default__60ftl9c" } }, defaultVariants: { size: "default" }, compoundVariants: [] });
|
|
7
|
+
var listItemContainer = "ListItem_listItemContainer__60ftl93";
|
|
8
|
+
var listLeft = createRuntimeFn({ defaultClassName: "ListItem_listLeft__60ftl94", variantClassNames: { alignItems: { inherit: "ListItem_listLeft_alignItems_inherit__60ftl95", center: "ListItem_listLeft_alignItems_center__60ftl96" } }, defaultVariants: { alignItems: "center" }, compoundVariants: [] });
|
|
9
|
+
var listRight = createRuntimeFn({ defaultClassName: "ListItem_listRight__60ftl97", variantClassNames: { alignItems: { top: "ListItem_listRight_alignItems_top__60ftl98", center: "ListItem_listRight_alignItems_center__60ftl99" } }, defaultVariants: { alignItems: "center" }, compoundVariants: [] });
|
|
10
|
+
|
|
11
|
+
export { itemInformationContainer, listImage, listImageContainer, listItemContainer, listLeft, listRight };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TPaletteKeys } from '@citygross/design-tokens_v2';
|
|
3
|
+
|
|
4
|
+
declare type TItem = {
|
|
5
|
+
name?: string;
|
|
6
|
+
image?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
secondaryDescription?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
declare enum EListItemAlignment {
|
|
11
|
+
CENTER = "center",
|
|
12
|
+
TOP = "flex-start"
|
|
13
|
+
}
|
|
14
|
+
declare type TListItem = {
|
|
15
|
+
item?: TItem;
|
|
16
|
+
loading?: boolean;
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
fallBackImage?: string;
|
|
19
|
+
imageAutoHeight?: boolean;
|
|
20
|
+
boldHeader?: boolean;
|
|
21
|
+
smallSkeleton?: boolean;
|
|
22
|
+
isSmall?: boolean;
|
|
23
|
+
usedInSearch?: boolean;
|
|
24
|
+
alignment?: EListItemAlignment;
|
|
25
|
+
textColor?: TPaletteKeys;
|
|
26
|
+
};
|
|
27
|
+
declare function ListItem({ item, loading, isSmall, fallBackImage, imageAutoHeight, boldHeader, smallSkeleton, children, alignment, textColor, usedInSearch }: TListItem): JSX.Element;
|
|
28
|
+
|
|
29
|
+
export { EListItemAlignment, ListItem, TItem, TListItem };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import FallbackIcon from './assets/fallback_grocery.js';
|
|
3
|
+
import { listItemContainer, listLeft, listImageContainer, listImage, itemInformationContainer, listRight } from './ListItem.css.vanilla.js';
|
|
4
|
+
import { BodyText } from '../../typography/BodyText/BodyText.js';
|
|
5
|
+
import Skeleton from '../Skeleton/Skeleton.js';
|
|
6
|
+
|
|
7
|
+
var EListItemAlignment = /* @__PURE__ */ ((EListItemAlignment2) => {
|
|
8
|
+
EListItemAlignment2["CENTER"] = "center";
|
|
9
|
+
EListItemAlignment2["TOP"] = "flex-start";
|
|
10
|
+
return EListItemAlignment2;
|
|
11
|
+
})(EListItemAlignment || {});
|
|
12
|
+
function ListItem({
|
|
13
|
+
item,
|
|
14
|
+
loading,
|
|
15
|
+
isSmall,
|
|
16
|
+
fallBackImage,
|
|
17
|
+
imageAutoHeight,
|
|
18
|
+
boldHeader,
|
|
19
|
+
smallSkeleton,
|
|
20
|
+
children,
|
|
21
|
+
alignment = "center" /* CENTER */,
|
|
22
|
+
textColor,
|
|
23
|
+
usedInSearch
|
|
24
|
+
}) {
|
|
25
|
+
return /* @__PURE__ */ React.createElement("div", { className: listItemContainer }, /* @__PURE__ */ React.createElement(
|
|
26
|
+
"div",
|
|
27
|
+
{
|
|
28
|
+
className: listLeft({
|
|
29
|
+
alignItems: usedInSearch || alignment === "flex-start" /* TOP */ ? "inherit" : "center"
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
/* @__PURE__ */ React.createElement(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: listImageContainer({
|
|
36
|
+
size: isSmall ? "small" : "default"
|
|
37
|
+
})
|
|
38
|
+
},
|
|
39
|
+
/* @__PURE__ */ React.createElement(
|
|
40
|
+
"img",
|
|
41
|
+
{
|
|
42
|
+
className: listImage({
|
|
43
|
+
height: imageAutoHeight ? "auto" : isSmall ? "small" : "default"
|
|
44
|
+
}),
|
|
45
|
+
src: item?.image || fallBackImage || FallbackIcon,
|
|
46
|
+
alt: item?.name,
|
|
47
|
+
onError: (e) => {
|
|
48
|
+
const target = e.target;
|
|
49
|
+
target.onerror = null;
|
|
50
|
+
target.src = fallBackImage || FallbackIcon;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
),
|
|
55
|
+
/* @__PURE__ */ React.createElement(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
className: itemInformationContainer({
|
|
59
|
+
padding: usedInSearch || alignment === "flex-start" /* TOP */ ? "none" : "default"
|
|
60
|
+
})
|
|
61
|
+
},
|
|
62
|
+
/* @__PURE__ */ React.createElement(
|
|
63
|
+
BodyText,
|
|
64
|
+
{
|
|
65
|
+
fontWeight: boldHeader ? "semiBold" : "regular",
|
|
66
|
+
color: textColor || "darkest",
|
|
67
|
+
size: isSmall ? "extraSmall" : "default"
|
|
68
|
+
},
|
|
69
|
+
item?.name || /* @__PURE__ */ React.createElement(Skeleton, { width: smallSkeleton ? 152 : 192, height: 16 })
|
|
70
|
+
),
|
|
71
|
+
loading ? /* @__PURE__ */ React.createElement(BodyText, { size: "small" }, /* @__PURE__ */ React.createElement(Skeleton, { width: smallSkeleton ? 152 : 192, height: 16 })) : item?.description ? /* @__PURE__ */ React.createElement(
|
|
72
|
+
BodyText,
|
|
73
|
+
{
|
|
74
|
+
size: isSmall ? "tiny" : "small",
|
|
75
|
+
color: textColor || "dark"
|
|
76
|
+
},
|
|
77
|
+
item?.description
|
|
78
|
+
) : null,
|
|
79
|
+
item?.secondaryDescription && item.secondaryDescription
|
|
80
|
+
)
|
|
81
|
+
), children && /* @__PURE__ */ React.createElement(
|
|
82
|
+
"div",
|
|
83
|
+
{
|
|
84
|
+
className: listRight({
|
|
85
|
+
alignItems: alignment === "flex-start" /* TOP */ ? "top" : "center"
|
|
86
|
+
})
|
|
87
|
+
},
|
|
88
|
+
children
|
|
89
|
+
));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { EListItemAlignment, ListItem };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var FallbackIcon = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg width=\"128px\" height=\"124px\" viewBox=\"0 0 128 124\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <!-- Generator: Sketch 52.4 (67378) - http://www.bohemiancoding.com/sketch -->\n <title>shopping_cart_loaded</title>\n <desc>Created with Sketch.</desc>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"Artboard\" transform=\"translate(-100.000000, -53.000000)\">\n <g id=\"shopping_cart_loaded\" transform=\"translate(100.000000, 53.000000)\">\n <polygon id=\"Rectangle\" fill=\"#D8D8D8\" transform=\"translate(89.585472, 37.151291) rotate(45.000000) translate(-89.585472, -37.151291) \" points=\"69.9549199 17.5207389 109.199991 17.536771 109.216023 56.7818423 69.970952 56.7658102\"></polygon>\n <polygon id=\"Rectangle\" fill=\"#D1D1D1\" transform=\"translate(61.784256, 30.970598) rotate(45.000000) translate(-61.784256, -30.970598) \" points=\"39.9897062 9.17604823 83.5610058 9.19384764 83.5788052 52.7651473 40.0075056 52.7473478\"></polygon>\n <g id=\"Group\" transform=\"translate(6.000000, 12.000000)\" fill=\"#E8E8E8\">\n <path d=\"M40.2213256,80.6 C36.8179827,80.6 34.0334294,77.81 34.0334294,74.4 L34.0334294,43.4 L21.6576369,43.4 L21.6576369,74.4 C21.6576369,84.63 30.0112968,93 40.2213256,93 L99.0063401,93 L99.0063401,80.6 L40.2213256,80.6 Z\" id=\"Path\"></path>\n <path d=\"M24.1327954,12.4 L22.8952161,8.37 C21.0388473,3.41 16.3979251,0 11.1382133,0 L0,0 L0,12.4 L11.1382133,12.4 L28.154928,63.86 C29.0831124,66.34 31.2488761,68.2 34.0334294,68.2 L92.8184438,68.2 C95.2936023,68.2 97.459366,66.65 98.3875504,64.48 L121.901556,12.4 L24.1327954,12.4 Z\" id=\"Path\"></path>\n </g>\n <ellipse id=\"Oval\" fill=\"#D8D8D8\" cx=\"6\" cy=\"18.5\" rx=\"6\" ry=\"6.5\"></ellipse>\n <g id=\"Group\" transform=\"translate(40.000000, 105.000000)\" fill=\"#D8D8D8\">\n <ellipse id=\"Oval\" cx=\"55.7142857\" cy=\"9.5\" rx=\"9.28571429\" ry=\"9.5\"></ellipse>\n <ellipse id=\"Oval\" cx=\"9.28571429\" cy=\"9.5\" rx=\"9.28571429\" ry=\"9.5\"></ellipse>\n </g>\n <g id=\"Group\" transform=\"translate(46.000000, 112.000000)\" fill=\"#D1D1D1\">\n <ellipse id=\"Oval\" cx=\"49.8823529\" cy=\"3\" rx=\"3.11764706\" ry=\"3\"></ellipse>\n <ellipse id=\"Oval\" cx=\"3.11764706\" cy=\"3\" rx=\"3.11764706\" ry=\"3\"></ellipse>\n </g>\n </g>\n </g>\n </g>\n</svg>";
|
|
2
|
+
|
|
3
|
+
export { FallbackIcon as default };
|