@open-tender/utils
Version:
A library of utils for use with Open Tender applications that utilize our cloud-based Order API.
267 lines (266 loc) • 24.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.hexToRgbA = exports.decorateTheme = exports.makeBottomTabs = exports.pixelsToFloat = exports.pixelsToInt = exports.objRemsToPixels = exports.remsToNumber = exports.remsToPixels = exports.makeLineHeight = void 0;
const makeLineHeight = (lineHeight, fontSize) => {
var _a;
const size = parseInt((_a = fontSize === null || fontSize === void 0 ? void 0 : fontSize.replace('px', '')) !== null && _a !== void 0 ? _a : '0');
return `${(parseFloat(lineHeight !== null && lineHeight !== void 0 ? lineHeight : '0') * size).toFixed(3)}px`;
};
exports.makeLineHeight = makeLineHeight;
// TODO: remove responsive option
const remsToPixels = (rems, responsive = false) => {
const cleanedUpRems = rems === null || rems === void 0 ? void 0 : rems.trim().replace(/\s+/g, ' ');
if (!cleanedUpRems)
return '0';
const remsToPixelsSingleValue = (remsValue) => {
const pixels = parseFloat(remsValue.replace('rem', '')) * 10;
const adjustedPixels = responsive ? pixels : pixels;
const noZeroes = parseFloat(adjustedPixels.toFixed(2)).toString();
return noZeroes === '0' ? '0' : `${noZeroes}px`;
};
return cleanedUpRems
.split(' ')
.map(i => remsToPixelsSingleValue(i))
.join(' ');
};
exports.remsToPixels = remsToPixels;
const remsToNumber = (rems) => {
return parseFloat(rems.replace('rem', '')) * 10;
};
exports.remsToNumber = remsToNumber;
const objRemsToPixels = (object, responsive = false) => {
return Object.entries(object).reduce((obj, [key, value]) => {
return Object.assign(Object.assign({}, obj), { [key]: (0, exports.remsToPixels)(value, responsive) });
}, {});
};
exports.objRemsToPixels = objRemsToPixels;
const pixelsToInt = (pixels) => {
try {
return parseInt(pixels.replace('px', ''));
}
catch (err) {
return 0;
}
};
exports.pixelsToInt = pixelsToInt;
const pixelsToFloat = (pixels) => {
try {
return parseFloat(pixels.replace('px', ''));
}
catch (err) {
return 0.0;
}
};
exports.pixelsToFloat = pixelsToFloat;
const paddingToPixels = (padding) => {
const [top, horizontal, bottom] = padding.split(' ');
return `${(0, exports.remsToPixels)(top)} ${(0, exports.remsToPixels)(horizontal)} ${(0, exports.remsToPixels)(bottom)}`;
};
/**
* @deprecated use remsToPixels instead
*/
const boxRemsToPixels = (box) => {
const pixels = box
.split(' ')
.map(i => (0, exports.remsToPixels)(i))
.join(' ');
return pixels === '0 0 0 0' ? '0px' : pixels;
};
const buttonToPixels = (button) => {
return Object.assign(Object.assign({}, button), { borderRadius: (0, exports.remsToPixels)(button.borderRadius), borderWidth: (0, exports.remsToPixels)(button.borderWidth), borderWidthApp: button.borderWidthApp
? (0, exports.remsToPixels)(button.borderWidthApp)
: (0, exports.remsToPixels)(button.borderWidth), fontSize: button.fontSize ? (0, exports.remsToPixels)(button.fontSize, true) : null, letterSpacing: button.letterSpacing
? (0, exports.remsToPixels)(button.letterSpacing)
: null, minHeightMobile: button.minHeightMobile
? paddingToPixels(button.minHeightMobile)
: null, padding: button.padding ? paddingToPixels(button.padding) : null, subtitleFontSizeMobile: button.subtitleFontSizeMobile
? (0, exports.remsToPixels)(button.subtitleFontSizeMobile)
: null, subtitleMarginTopMobile: button.subtitleMarginTopMobile
? (0, exports.remsToPixels)(button.subtitleMarginTopMobile)
: null, titleFontSizeMobile: button.titleFontSizeMobile
? (0, exports.remsToPixels)(button.titleFontSizeMobile)
: null, titleMarginTopMobile: button.titleMarginTopMobile
? (0, exports.remsToPixels)(button.titleMarginTopMobile)
: null, titleMarginLeftMobile: button.titleMarginLeftMobile
? (0, exports.remsToPixels)(button.titleMarginLeftMobile)
: null });
};
const makeButtons = (buttons) => {
const sizes = Object.entries(buttons.sizes).reduce((obj, [key, value]) => {
return Object.assign(Object.assign({}, obj), { [key]: buttonToPixels(value) });
}, {});
return Object.assign(Object.assign({}, buttons), { sizes });
};
const makeLineHeights = (sizes, lineHeight) => {
return Object.entries(sizes).reduce((obj, [size, fontSize]) => {
return Object.assign(Object.assign({}, obj), { [size]: (0, exports.makeLineHeight)(lineHeight, fontSize) });
}, {});
};
const makeFont = (font, sizes) => {
const fontStyle = Object.assign(Object.assign({}, font), { letterSpacing: (0, exports.remsToPixels)(font.letterSpacing), lineHeights: makeLineHeights(sizes, `${font.lineHeight}`) });
if (!font.fontSize)
return fontStyle;
const fontSize = (0, exports.remsToPixels)(font.fontSize, true);
const lineHeight = (0, exports.makeLineHeight)(`${font.lineHeight}`, fontSize);
return Object.assign(Object.assign({}, fontStyle), { fontSize, lineHeight });
};
const makeFonts = (fonts, lineHeight) => {
const sizes = (0, exports.objRemsToPixels)(fonts.sizesMobile, true);
const lineHeights = makeLineHeights(sizes, lineHeight);
const headline = makeFont(fonts.headline, sizes);
const headings = makeFont(fonts.headings, sizes);
const body = makeFont(fonts.body, sizes);
const preface = makeFont(fonts.preface, sizes);
return Object.assign(Object.assign({}, fonts), { headline, headings, body, preface, sizes, lineHeights });
};
const makeBorder = (border) => {
return Object.assign(Object.assign({}, border), { radius: (0, exports.remsToPixels)(border.radius), radiusSmall: (0, exports.remsToPixels)(border.radiusSmall), width: (0, exports.remsToPixels)(border.width), widthApp: (0, exports.remsToPixels)(border.widthApp) });
};
const makeLabel = (label, lineHeight) => {
const [vertical, horizontal] = label.padding.split(' ');
const fs = parseFloat(label.fontSizeMobile.replace('rem', '')) * 10.0;
const lh = parseFloat(lineHeight);
return {
fontSize: (0, exports.remsToPixels)(label.fontSizeMobile, true),
lineHeight: `${fs * lh}px`,
offset: (0, exports.remsToPixels)(label.offset),
padding: `${(0, exports.remsToPixels)(vertical)} ${(0, exports.remsToPixels)(horizontal)}`,
top: (0, exports.remsToPixels)(label.top),
left: (0, exports.remsToPixels)(label.left)
};
};
const makeInputs = (inputs) => {
const [vertical, horizontal] = inputs.padding.split(' ');
const fs = parseFloat(inputs.fontSizeMobile.replace('rem', '')) * 10.0;
const lh = parseFloat(inputs.lineHeight);
return Object.assign(Object.assign({}, inputs), { lineHeight: `${fs * lh}px`, letterSpacing: (0, exports.remsToPixels)(inputs.letterSpacing), fontSize: (0, exports.remsToPixels)(inputs.fontSizeMobile, true), radius: (0, exports.remsToPixels)(inputs.radius), borderWidth: (0, exports.remsToPixels)(inputs.borderWidth), borderWidthApp: (0, exports.remsToPixels)(inputs.borderWidthApp), padding: `${(0, exports.remsToPixels)(vertical)} ${(0, exports.remsToPixels)(horizontal)}`, paddingHorizontal: (0, exports.remsToPixels)(inputs.paddingHorizontal), paddingVertical: (0, exports.remsToPixels)(inputs.paddingVertical), paddingTop: (0, exports.remsToPixels)(inputs.paddingTop), paddingTopActive: (0, exports.remsToPixels)(inputs.paddingTopActive), paddingBottom: (0, exports.remsToPixels)(inputs.paddingBottom), paddingBottomActive: (0, exports.remsToPixels)(inputs.paddingBottomActive), label: makeLabel(inputs.label, inputs.lineHeight) });
};
const makeCounts = (counts) => {
const { alerts, quantity } = counts;
return {
alerts: Object.assign(Object.assign({}, alerts), { borderWidth: (0, exports.remsToPixels)(alerts.borderWidth), borderWidthApp: (0, exports.remsToPixels)(alerts.borderWidthApp), fontSize: (0, exports.remsToPixels)(alerts.fontSize, true), fontSizeMobile: (0, exports.remsToPixels)(alerts.fontSizeMobile, true), paddingBottom: (0, exports.remsToPixels)(alerts.paddingBottom), paddingTop: (0, exports.remsToPixels)(alerts.paddingTop) }),
quantity: Object.assign(Object.assign({}, quantity), { fontSize: (0, exports.remsToPixels)(quantity.fontSize, true), fontSizeMobile: (0, exports.remsToPixels)(quantity.fontSizeMobile, true), paddingBottom: (0, exports.remsToPixels)(quantity.paddingBottom), paddingTop: (0, exports.remsToPixels)(quantity.paddingTop) })
};
};
const makeCards = (cards) => {
const { default: box, form, menuItem, modifier } = cards;
return {
default: Object.assign(Object.assign({}, box), { borderWidth: (0, exports.remsToPixels)(box.borderWidth), borderWidthApp: (0, exports.remsToPixels)(box.borderWidthApp), borderRadius: (0, exports.remsToPixels)(box.borderRadius) }),
form: Object.assign(Object.assign({}, form), { borderWidth: (0, exports.remsToPixels)(form.borderWidth), borderWidthApp: (0, exports.remsToPixels)(form.borderWidthApp), borderRadius: (0, exports.remsToPixels)(form.borderRadius) }),
menuItem: Object.assign(Object.assign({}, menuItem), { borderWidth: (0, exports.remsToPixels)(menuItem.borderWidth), borderWidthApp: (0, exports.remsToPixels)(menuItem.borderWidthApp), borderRadius: (0, exports.remsToPixels)(menuItem.borderRadius) }),
modifier: Object.assign(Object.assign({}, modifier), { borderWidth: (0, exports.remsToPixels)(modifier.borderWidth), borderWidthApp: (0, exports.remsToPixels)(modifier.borderWidthApp), borderRadius: (0, exports.remsToPixels)(modifier.borderRadius) })
};
};
const makeWelcome = (welcome) => {
const { mobile } = welcome;
const titleSize = (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.titleSize);
const subtitleSize = (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleSize);
return {
textAlign: mobile === null || mobile === void 0 ? void 0 : mobile.textAlign,
marginTop: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.marginTop),
marginBottom: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.marginBottom),
titleMarginLeft: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.titleMarginLeft),
titleSize,
titleLineHeight: (0, exports.makeLineHeight)(mobile === null || mobile === void 0 ? void 0 : mobile.titleLineHeight.toFixed(5), titleSize),
subtitleSize,
subtitleLineHeight: (0, exports.makeLineHeight)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleLineHeight.toFixed(5), subtitleSize),
subtitleMarginTop: (0, exports.remsToPixels)(mobile === null || mobile === void 0 ? void 0 : mobile.subtitleMarginTop)
};
};
const makeItem = (item) => {
const { mobile } = item;
return Object.assign(Object.assign({}, mobile), { imageMargin: boxRemsToPixels(mobile.imageMargin), imageMaxHeight: (0, exports.remsToPixels)(mobile.imageMaxHeight), imageMinHeight: (0, exports.remsToPixels)(mobile.imageMinHeight), imagePadding: (0, exports.remsToPixels)(mobile.imagePadding), imagePaddingAll: boxRemsToPixels(mobile.imagePaddingAll), maxWidth: (0, exports.remsToPixels)(mobile.maxWidth), padding: (0, exports.remsToPixels)(mobile.padding) });
};
const makeCategories = (categories) => {
const { mobile } = categories;
return Object.assign(Object.assign({}, mobile), { borderRadius: (0, exports.remsToPixels)(mobile.borderRadius), containerMaxWidth: (0, exports.remsToPixels)(mobile.containerMaxWidth), gap: (0, exports.remsToPixels)(mobile.gap), gapDouble: (0, exports.remsToPixels)(mobile.gapDouble), gapHalf: (0, exports.remsToPixels)(mobile.gapHalf), imageBorderRadius: (0, exports.remsToPixels)(mobile.imageBorderRadius), lineHeight: (0, exports.remsToPixels)(mobile.lineHeight), lineMargin: (0, exports.remsToPixels)(mobile.lineMargin), lineWidth: (0, exports.remsToPixels)(mobile.lineWidth), maxWidth: (0, exports.remsToPixels)(mobile.maxWidth), minWidth: (0, exports.remsToPixels)(mobile.minWidth), paddingBottom: (0, exports.remsToPixels)(mobile.paddingBottom), paddingHorizontal: (0, exports.remsToPixels)(mobile.paddingHorizontal), paddingTop: (0, exports.remsToPixels)(mobile.paddingTop), subtitleSize: (0, exports.remsToPixels)(mobile.subtitleSize), titleSize: (0, exports.remsToPixels)(mobile.titleSize) });
};
const fontSizeToLineHeight = (lineHeight, fontSize) => {
var _a;
const lineHt = (_a = parseFloat(lineHeight)) !== null && _a !== void 0 ? _a : 1;
const textFontSize = (0, exports.remsToPixels)(fontSize);
return `${(lineHt * (0, exports.pixelsToFloat)(textFontSize)).toFixed(2)}px`;
};
const makeMenuItems = (menuItems, lineHeight) => {
const { allergens, box, calories, container, content, buttons, image, price, tags, tagsAllergens, text, title } = menuItems;
return {
allergens: Object.assign(Object.assign({}, allergens), { fontSize: (0, exports.remsToPixels)(allergens.fontSize), fontSizeMobile: (0, exports.remsToPixels)(allergens.fontSizeMobile), letterSpacing: (0, exports.remsToPixels)(allergens.letterSpacing), lineHeight: fontSizeToLineHeight(lineHeight, allergens.fontSizeMobile), gap: (0, exports.remsToPixels)(allergens.gap), gapMobile: (0, exports.remsToPixels)(allergens.gapMobile), width: (0, exports.remsToPixels)(allergens.width), widthMobile: (0, exports.remsToPixels)(allergens.widthMobile) }),
box: Object.assign(Object.assign({}, box), { border: boxRemsToPixels(box.border), borderMobile: boxRemsToPixels(box.borderMobile), borderRadius: (0, exports.remsToPixels)(box.borderRadius), borderRadiusMobile: (0, exports.remsToPixels)(box.borderRadiusMobile), margin: boxRemsToPixels(box.margin), marginMobile: boxRemsToPixels(box.marginMobile), minWidth: (0, exports.remsToPixels)(box.minWidth), minWidthMobile: (0, exports.remsToPixels)(box.minWidthMobile), padding: boxRemsToPixels(box.padding), paddingMobile: boxRemsToPixels(box.paddingMobile) }),
calories: Object.assign(Object.assign({}, calories), { fontSize: (0, exports.remsToPixels)(calories.fontSize), fontSizeMobile: (0, exports.remsToPixels)(calories.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, calories.fontSizeMobile), padding: boxRemsToPixels(calories.padding), paddingMobile: boxRemsToPixels(calories.paddingMobile) }),
container: Object.assign(Object.assign({}, container), { gap: (0, exports.remsToPixels)(container.gap), gapHalf: (0, exports.remsToPixels)(container.gapHalf), gapHalfMobile: (0, exports.remsToPixels)(container.gapHalfMobile), gapMobile: (0, exports.remsToPixels)(container.gapMobile), margin: boxRemsToPixels(container.margin), marginMobile: boxRemsToPixels(container.marginMobile), maxWidth: (0, exports.remsToPixels)(container.maxWidth), padding: boxRemsToPixels(container.padding), paddingMobile: boxRemsToPixels(container.paddingMobile) }),
content: Object.assign(Object.assign({}, content), { padding: boxRemsToPixels(content.padding), paddingMobile: boxRemsToPixels(content.paddingMobile) }),
buttons: Object.assign(Object.assign({}, buttons), { gap: (0, exports.remsToPixels)(buttons.gap), gapMobile: (0, exports.remsToPixels)(buttons.gapMobile), padding: boxRemsToPixels(buttons.padding), paddingMobile: boxRemsToPixels(buttons.paddingMobile) }),
image: Object.assign(Object.assign({}, image), { border: boxRemsToPixels(image.border), borderMobile: boxRemsToPixels(image.borderMobile), borderRadius: (0, exports.remsToPixels)(image.borderRadius), borderRadiusMobile: (0, exports.remsToPixels)(image.borderRadiusMobile), margin: boxRemsToPixels(image.margin), marginMobile: boxRemsToPixels(image.marginMobile), minWidth: (0, exports.remsToPixels)(image.minWidth), minWidthMobile: (0, exports.remsToPixels)(image.minWidthMobile), padding: boxRemsToPixels(image.padding), paddingMobile: boxRemsToPixels(image.paddingMobile) }),
price: Object.assign(Object.assign({}, price), { fontSize: (0, exports.remsToPixels)(price.fontSize), fontSizeMobile: (0, exports.remsToPixels)(price.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, price.fontSizeMobile), padding: boxRemsToPixels(price.padding), paddingMobile: boxRemsToPixels(price.paddingMobile) }),
tags: Object.assign(Object.assign({}, tags), { fontSize: (0, exports.remsToPixels)(tags.fontSize), fontSizeMobile: (0, exports.remsToPixels)(tags.fontSizeMobile), letterSpacing: (0, exports.remsToPixels)(tags.letterSpacing), lineHeight: fontSizeToLineHeight(lineHeight, tags.fontSizeMobile), gap: (0, exports.remsToPixels)(tags.gap), gapMobile: (0, exports.remsToPixels)(tags.gapMobile), width: (0, exports.remsToPixels)(tags.width), widthMobile: (0, exports.remsToPixels)(tags.widthMobile) }),
tagsAllergens: Object.assign(Object.assign({}, tagsAllergens), { gap: (0, exports.remsToPixels)(tagsAllergens.gap), gapMobile: (0, exports.remsToPixels)(tagsAllergens.gapMobile), padding: boxRemsToPixels(tagsAllergens.padding), paddingMobile: boxRemsToPixels(tagsAllergens.paddingMobile) }),
text: Object.assign(Object.assign({}, text), { fontSize: (0, exports.remsToPixels)(text.fontSize), fontSizeMobile: (0, exports.remsToPixels)(text.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, text.fontSizeMobile), padding: boxRemsToPixels(text.padding), paddingMobile: boxRemsToPixels(text.paddingMobile) }),
title: Object.assign(Object.assign({}, title), { fontSize: (0, exports.remsToPixels)(title.fontSize), fontSizeMobile: (0, exports.remsToPixels)(title.fontSizeMobile), lineHeight: fontSizeToLineHeight(lineHeight, title.fontSizeMobile), padding: boxRemsToPixels(title.padding), paddingMobile: boxRemsToPixels(title.paddingMobile) })
};
};
const makeModifiers = (modifiers, lineHeight) => {
const { box, calories, content, image, price, text, title } = modifiers;
return Object.assign(Object.assign({}, modifiers), { box: Object.assign(Object.assign({}, box), { border: boxRemsToPixels(box.border), borderMobile: boxRemsToPixels(box.borderMobile), borderRadius: (0, exports.remsToPixels)(box.borderRadius), gap: (0, exports.remsToPixels)(box.gap), gapHalf: (0, exports.remsToPixels)(box.gapHalf), margin: boxRemsToPixels(box.margin), marginMobile: boxRemsToPixels(box.marginMobile), minHeight: (0, exports.remsToPixels)(box.minHeight), minHeightWithGap: (0, exports.remsToPixels)(box.minHeightWithGap), minWidth: (0, exports.remsToPixels)(box.minWidth), padding: boxRemsToPixels(box.padding), paddingMobile: boxRemsToPixels(box.paddingMobile) }), calories: Object.assign(Object.assign({}, calories), { fontSize: (0, exports.remsToPixels)(calories.fontSize), lineHeight: fontSizeToLineHeight(calories.fontSize, lineHeight) }), content: Object.assign(Object.assign({}, content), { padding: boxRemsToPixels(content.padding) }), image: Object.assign(Object.assign({}, image), { border: boxRemsToPixels(image.border), borderRadius: (0, exports.remsToPixels)(image.borderRadius), height: (0, exports.remsToPixels)(image.height), margin: boxRemsToPixels(image.margin), padding: boxRemsToPixels(image.padding), width: (0, exports.remsToPixels)(image.width) }), price: Object.assign(Object.assign({}, price), { fontSize: (0, exports.remsToPixels)(price.fontSize), lineHeight: fontSizeToLineHeight(price.fontSize, lineHeight) }), text: Object.assign(Object.assign({}, text), { fontSize: (0, exports.remsToPixels)(text.fontSize), lineHeight: fontSizeToLineHeight(text.fontSize, lineHeight) }), title: Object.assign(Object.assign({}, title), { fontSize: (0, exports.remsToPixels)(title.fontSize), lineHeight: fontSizeToLineHeight(title.fontSize, lineHeight) }) });
};
const makeTags = (tags) => {
return Object.assign(Object.assign({}, tags), { image: Object.assign(Object.assign({}, tags.image), { padding: (0, exports.remsToPixels)(tags.container.padding), paddingMobile: (0, exports.remsToPixels)(tags.container.paddingMobile), margin: (0, exports.remsToPixels)(tags.container.margin), marginMobile: (0, exports.remsToPixels)(tags.container.marginMobile) }), container: Object.assign(Object.assign({}, tags.container), { padding: (0, exports.remsToPixels)(tags.container.padding), paddingMobile: (0, exports.remsToPixels)(tags.container.paddingMobile), margin: (0, exports.remsToPixels)(tags.container.margin), marginMobile: (0, exports.remsToPixels)(tags.container.marginMobile) }), box: Object.assign(Object.assign({}, tags.box), { padding: (0, exports.remsToPixels)(tags.box.padding), paddingMobile: (0, exports.remsToPixels)(tags.box.paddingMobile), margin: (0, exports.remsToPixels)(tags.box.margin), marginMobile: (0, exports.remsToPixels)(tags.box.marginMobile) }), text: Object.assign(Object.assign({}, tags.text), { fontSize: (0, exports.remsToPixels)(tags.text.fontSize), fontSizeMobile: (0, exports.remsToPixels)(tags.text.fontSizeMobile) }) });
};
const makeLogo = (logo) => {
return {
marginTop: (0, exports.remsToPixels)(logo.marginTop),
marginTopMobile: (0, exports.remsToPixels)(logo.marginTopMobile),
width: (0, exports.remsToPixels)(logo.width),
widthMobile: (0, exports.remsToPixels)(logo.widthMobile)
};
};
const makeBottomTabs = (bottomTabs) => {
const fontSize = (0, exports.remsToPixels)(bottomTabs.buttons.fontSize);
return {
box: Object.assign(Object.assign({}, bottomTabs.box), { borderRadius: (0, exports.remsToPixels)(bottomTabs.box.borderRadius), borderWidth: (0, exports.remsToPixels)(bottomTabs.box.borderWidth), gap: (0, exports.remsToPixels)(bottomTabs.box.gap), padding: (0, exports.remsToPixels)(bottomTabs.box.padding) }),
buttons: Object.assign(Object.assign({}, bottomTabs.buttons), { fontSize: fontSize, letterSpacing: (0, exports.remsToPixels)(bottomTabs.buttons.letterSpacing), lineHeight: (0, exports.makeLineHeight)(`${bottomTabs.buttons.lineHeight}`, fontSize), padding: (0, exports.remsToPixels)(bottomTabs.buttons.padding) }),
icons: Object.assign(Object.assign({}, bottomTabs.icons), { padding: (0, exports.remsToPixels)(bottomTabs.icons.padding) })
};
};
exports.makeBottomTabs = makeBottomTabs;
const decorateTheme = (theme) => {
const logo = makeLogo(theme.logo);
const logoFooter = makeLogo(theme.logoFooter);
const fonts = makeFonts(theme.fonts, theme.lineHeight);
const lineHeight = (0, exports.makeLineHeight)(theme.lineHeight, fonts.sizes.main);
const layout = (0, exports.objRemsToPixels)(theme.layout);
const buttons = makeButtons(theme.buttons);
const border = makeBorder(theme.border);
const inputs = makeInputs(theme.inputs);
const counts = makeCounts(theme.counts);
const cards = makeCards(theme.cards);
const welcome = makeWelcome(theme.welcome);
const item = makeItem(theme.item);
const categories = makeCategories(theme.categories);
const menuItems = makeMenuItems(theme.menuItems, theme.lineHeight);
const modifiers = makeModifiers(theme.modifiers, theme.lineHeight);
const tags = makeTags(theme.tags);
const bottomTabs = (0, exports.makeBottomTabs)(theme.bottomTabs);
return Object.assign(Object.assign({}, theme), { logo,
logoFooter, fonts: fonts, lineHeight, layout: layout, buttons: buttons, border, inputs: inputs, counts,
cards, welcome: welcome, item: item, categories,
menuItems,
modifiers,
tags,
bottomTabs });
};
exports.decorateTheme = decorateTheme;
const hexToRgbA = (hex, opacity) => {
let c;
if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
c = hex.substring(1).split('');
if (c.length === 3) {
c = [c[0], c[0], c[1], c[1], c[2], c[2]];
}
c = '0x' + c.join('');
return ('rgba(' +
[(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') +
`,${opacity})`);
}
return null;
};
exports.hexToRgbA = hexToRgbA;