import { DecorationLineThrough, DecorationUnderline, ItalicIcon } from "./svgIcon";
export const fontWeightMap = {
100: "Thin 100",
200: "Extra Light 200",
300: "Light 300",
400: "Regular 400",
500: "Medium 500",
600: "Semi Bold 600",
700: "Bold 700",
800: "Extra Bold 800",
900: "Black 900",
"100italic": "italic 100",
"200italic": "italic 200",
"300italic": "italic 300",
italic: "italic 400",
"400italic": "italic 400",
"500italic": "italic 500",
"600italic": "italic 600",
"700italic": "italic 700",
"800italic": "italic 800",
"900italic": "italic 900",
};
export const textDecorationOptions = [
{
label: ,
key: "style",
value: "italic",
},
{
label: ,
key: "decoration",
value: "underline",
},
{
label: ,
key: "decoration",
value: "line-through",
},
];
export const textCaseOptions = [
{
label: "AB",
key: "transform",
value: "uppercase",
},
{
label: "ab",
key: "transform",
value: "lowercase",
},
{
label: "Ab",
key: "transform",
value: "capitalize",
},
];
export const getFontWeightList = (activeFontFamily) => {
const weightLists = activeFontFamily?.font?.variants
?.map((variant) => {
const value = variant === "regular" ? "400" : variant;
if (fontWeightMap[value]) {
return { label: fontWeightMap[value], value };
}
return null;
})
.filter(Boolean);
const updatedWeightLists = [{ label: "Select Font Style", value: "", disabled: true }, ...weightLists];
return updatedWeightLists || [{ label: "Regular", value: "regular" }];
};
const bodyFontSizePresets = [
{ value: 12, label: 12 },
{ value: 14, label: 14 },
{ value: 16, label: 16 },
{ value: 18, label: 18 },
{ value: 20, label: 20 },
];
const titleFontSizePresets = [
{ value: 18, label: 18 },
{ value: 20, label: 20 },
{ value: 24, label: 24 },
{ value: 32, label: 32 },
{ value: 44, label: 44 },
];
export const getFontSizePresets = (type) => {
return type === "body" ? bodyFontSizePresets : titleFontSizePresets;
};
export const getGlobalTypoPresets = () => {
const globalTypo = window.SmartPostSettings.getTypography();
const globalTypoSizes = globalTypo?.typographySizes ?? {};
const result = [];
Object.keys(globalTypoSizes).forEach((typoKey) => {
globalTypoSizes[typoKey].forEach((item) => {
// Handle "sizes" group (heading, body, button)
if (item.sizes) {
item.sizes.forEach((size, index) => {
result.push({
class: `sp-smart-${item.slug}`,
fontSize: `var(--sp-smart-font-size-${item.slug}-${index + 1}, initial)`,
lineHeight: `var(--sp-smart-line-height-${item.slug}-${index + 1}, initial)`,
value: `${item.slug}-${index + 1}`,
label: `${item.title} ${index + 1}`,
});
});
}
// Handle "custom" group
if (item.fontSize) {
result.push({
class: `sp-smart-${item.slug}`,
value: `sp-smart-${item.slug}`,
label: item.title,
fontSize: "",
lineHeight: "",
});
}
});
});
return result;
};