@kuma-ui/system
Version:
🐻 Kuma UI is a utility-first, zero-runtime CSS-in-JS library that offers an outstanding developer experience and optimized performance.
1,019 lines (989 loc) • 26 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all2) => {
for (var name in all2)
__defProp(target, name, { get: all2[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
StyleGenerator: () => StyleGenerator,
all: () => all,
isPseudoProps: () => isPseudoProps,
isStyledProp: () => isStyledProp,
normalizePseudo: () => normalizePseudo,
toCssUnit: () => toCssUnit
});
module.exports = __toCommonJS(src_exports);
// src/props/animation.ts
var animationMappings = {
animation: "animation",
animationComposition: "animation-composition",
animationDelay: "animation-delay",
animationDirection: "animation-direction",
animationDuration: "animation-duration",
animationFillMode: "animation-fill-mode",
animationName: "animation-name",
animationIterationCount: "animation-iteration-count",
animationPlayState: "animation-play-state",
animationTimeline: "animation-timeline",
animationTimingFunction: "animation-timing-function"
};
// src/props/space.ts
var spaceMappings = {
margin: "margin",
m: "margin",
marginTop: "margin-top",
mt: "margin-top",
marginRight: "margin-right",
mr: "margin-right",
marginBottom: "margin-bottom",
mb: "margin-bottom",
marginLeft: "margin-left",
ml: "margin-left",
marginX: "margin-left,margin-right",
mx: "margin-left,margin-right",
marginY: "margin-top,margin-bottom",
my: "margin-top,margin-bottom",
marginInlineStart: "margin-inline-start",
marginInlineEnd: "margin-inline-end",
marginBlockStart: "margin-block-start",
marginBlockEnd: "margin-block-end",
marginInline: "margin-inline",
marginBlock: "margin-block",
padding: "padding",
p: "padding",
paddingTop: "padding-top",
pt: "padding-top",
paddingRight: "padding-right",
pr: "padding-right",
paddingBottom: "padding-bottom",
pb: "padding-bottom",
paddingLeft: "padding-left",
pl: "padding-left",
paddingX: "padding-left,padding-right",
px: "padding-left,padding-right",
paddingY: "padding-top,padding-bottom",
py: "padding-top,padding-bottom",
paddingInlineStart: "padding-inline-start",
paddingInlineEnd: "padding-inline-end",
paddingBlockStart: "padding-block-start",
paddingBlockEnd: "padding-block-end",
paddingInline: "padding-inline",
paddingBlock: "padding-block"
};
// src/props/typography.ts
var typographyMappings = {
hyphenateCharacter: "hyphenate-character",
hyphenateLimitChars: "hyphenate-limit-chars",
hyphens: "hyphens",
hangingPunctuation: "hanging-punctuation",
lineHeight: "line-height",
lineBreak: "line-break",
orphans: "orphans",
quotes: "quotes",
rubyPosition: "ruby-position",
unicodeBidi: "unicode-bidi",
widows: "widows",
whiteSpace: "white-space",
letterSpacing: "letter-spacing",
wordBreak: "word-break",
wordSpacing: "word-spacing",
writingMode: "writing-mode"
};
// src/props/layout.ts
var layoutMappings = {
width: "width",
w: "width",
minWidth: "min-width",
minW: "min-width",
maxWidth: "max-width",
maxW: "max-width",
height: "height",
h: "height",
minHeight: "min-height",
minH: "min-height",
maxHeight: "max-height",
maxH: "max-height",
display: "display",
overflow: "overflow",
overflowX: "overflow-x",
overflowY: "overflow-y",
position: "position",
zIndex: "z-index",
cursor: "cursor",
aspectRatio: "aspect-ratio",
boxSizing: "box-sizing",
float: "float",
clear: "clear",
objectFit: "object-fit",
objectPosition: "object-position",
resize: "resize",
verticalAlign: "vertical-align",
userSelect: "user-select"
};
// src/props/color.ts
var colorMappings = {
background: "background",
bg: "background",
backgroundColor: "background-color",
bgColor: "background-color",
color: "color",
borderColor: "border-color",
outlineColor: "outline-color",
accentColor: "accent-color",
caretColor: "caret-color",
opacity: "opacity",
visibility: "visibility"
};
// src/props/flex.ts
var flexMappings = {
flexDirection: "flex-direction",
flexDir: "flex-direction",
justifyContent: "justify-content",
justify: "justify-content",
alignContent: "align-content",
alignItems: "align-items",
alignSelf: "align-self",
flex: "flex",
flexBasis: "flex-basis",
flexFlow: "flex-flow",
flexGrow: "flex-grow",
flexShrink: "flex-shrink",
flexWrap: "flex-wrap",
justifyItems: "justify-items",
justifySelf: "justify-self",
gap: "gap",
placeItems: "place-items",
placeContent: "place-content"
};
// src/props/border.ts
var borderMappings = {
border: "border",
borderTop: "border-top",
borderRight: "border-right",
borderLeft: "border-left",
borderBottom: "border-bottom",
borderX: "border-left,border-right",
borderY: "border-top,border-bottom",
borderRadius: "border-radius",
borderTopLeftRadius: "border-top-left-radius",
borderTopRightRadius: "border-top-right-radius",
borderBottomLeftRadius: "border-bottom-left-radius",
borderBottomRightRadius: "border-bottom-right-radius",
borderStyle: "border-style",
borderTopStyle: "border-top-style",
borderBottomStyle: "border-bottom-style",
borderLeftStyle: "border-left-style",
borderRightStyle: "border-right-style",
borderWidth: "border-width",
borderTopWidth: "border-top-width",
borderBottomWidth: "border-bottom-width",
borderLeftWidth: "border-left-width",
borderRightWidth: "border-right-width",
borderStart: "border-inline-start",
borderEnd: "border-inline-end",
borderStartWidth: "border-inline-start-width",
borderEndWidth: "border-inline-end-width",
borderStartStyle: "border-inline-start-style",
borderEndStyle: "border-inline-end-style",
borderStartRadius: "border-top-left-radius,border-bottom-left-radius",
borderEndRadius: "border-top-right-radius,border-bottom-right-radius"
};
// src/props/outline.ts
var outlineMappings = {
outline: "outline",
outlineOffset: "outline-offset",
outlineWidth: "outline-width",
outlineStyle: "outline-style"
};
// src/props/position.ts
var positionMappings = {
top: "top",
right: "right",
left: "left",
bottom: "bottom",
inset: "inset"
};
// src/props/shadow.ts
var shadowMappings = {
boxShadow: "box-shadow",
textShadow: "text-shadow"
};
// src/consumeStyleProps.ts
var import_sheet2 = require("@kuma-ui/sheet");
// src/props/grid.ts
var gridMappings = {
grid: "grid",
gridArea: "grid-area",
gridAutoColumns: "grid-auto-columns",
gridAutoFlow: "grid-auto-flow",
gridAutoRows: "grid-auto-rows",
gridColumn: "grid-column",
gridColumnEnd: "grid-column-end",
gridColumnStart: "grid-column-start",
gridRow: "grid-row",
gridRowEnd: "grid-row-end",
gridRowStart: "grid-row-start",
gridTemplate: "grid-template",
gridTemplateAreas: "grid-template-areas",
gridTemplateColumns: "grid-template-columns",
gridTemplateRows: "grid-template-rows",
gridGap: "grid-gap",
gridColumnGap: "grid-column-gap",
gridRowGap: "grid-row-gap"
};
// src/props/list.ts
var listMappings = {
listStyle: "list-style",
listStyleImage: "list-style-image",
listStylePosition: "list-style-position",
listStyleType: "list-style-type"
};
// src/props/effect.ts
var effectMappings = {
transition: "transition",
transitionDuration: "transition-duration",
transitionProperty: "transition-property",
transitionTimingFunction: "transition-timing-function",
transitionDelay: "transition-delay",
transform: "transform",
transformBox: "transform-box",
transformOrigin: "transform-origin",
transformStyle: "transform-style",
clipPath: "clip-path",
content: "content",
contentVisibility: "content-visibility"
};
// src/props/text.ts
var textMappings = {
textAlign: "text-align",
textAlignLast: "text-align-last",
textCombineUpright: "text-combine-upright",
textDecoration: "text-decoration",
textDecorationColor: "text-decoration-color",
textDecorationLine: "text-decoration-line",
textDecorationSkipInk: "text-decoration-skip-ink",
textDecorationStyle: "text-decoration-style",
textDecorationThickness: "text-decoration-thickness",
textEmphasis: "text-emphasis",
textEmphasisColor: "text-emphasis-color",
textEmphasisPosition: "text-emphasis-position",
textEmphasisStyle: "text-emphasis-style",
textIndent: "text-indent",
textJustify: "text-justify",
textOrientation: "text-orientation",
textOverflow: "text-overflow",
textRendering: "text-rendering",
textShadow: "text-shadow",
textTransform: "text-transform",
textUnderlineOffset: "text-underline-offset",
textUnderlinePosition: "text-underline-position"
};
// src/props/font.ts
var fontMappings = {
font: "font",
fontFamily: "font-family",
fontFeatureSettings: "font-feature-settings",
fontKerning: "font-kerning",
fontLanguageOverride: "font-language-override",
fontOpticalSizing: "font-optical-sizing",
fontPalette: "font-palette",
fontSize: "font-size",
fontSizeAdjust: "font-size-adjust",
fontStretch: "font-stretch",
fontStyle: "font-style",
fontSynthesis: "font-synthesis",
fontVariant: "font-variant",
fontVariantAlternates: "font-variant-alternates",
fontVariantCaps: "font-variant-caps",
fontVariantEastAsian: "font-variant-east-asian",
fontVariantEmoji: "font-variant-emoji",
fontVariantLigatures: "font-variant-ligatures",
fontVariantNumeric: "font-variant-numeric",
fontVariantPosition: "font-variant-position",
fontVariationSettings: "font-variation-settings",
fontWeight: "font-weight"
};
// src/props/mask.ts
var maskMappings = {
mask: "mask",
maskBorder: "mask-border",
maskBorderMode: "mask-border-mode",
maskBorderOutset: "mask-border-outset",
maskBorderRepeat: "mask-border-repeat",
maskBorderSlice: "mask-border-slice",
maskBorderSource: "mask-border-source",
maskBorderWidth: "mask-border-width",
maskClip: "mask-clip",
maskComposite: "mask-composite",
maskImage: "mask-image",
maskMode: "mask-mode",
maskOrigin: "mask-origin",
maskPosition: "mask-position",
maskRepeat: "mask-repeat",
maskSize: "mask-size",
maskType: "mask-type"
};
// src/props/column.ts
var columnMappings = {
columnCount: "column-count",
columnFill: "column-fill",
columnGap: "column-gap",
columnRule: "column-rule",
columnRuleColor: "column-rule-color",
columnRuleStyle: "column-rule-style",
columnRuleWidth: "column-rule-width",
columnSpan: "column-span",
columnWidth: "column-width",
columns: "columns"
};
// src/props/background.ts
var backgroundMappings = {
backgroundImage: "background-image",
bgImage: "background-image",
backgroundPosition: "background-position",
bgPosition: "background-position",
backgroundPositionX: "background-position-x",
bgPositionX: "background-position-x",
backgroundPositionY: "background-position-y",
bgPositionY: "background-position-y",
backgroundSize: "background-size",
bgSize: "background-size",
backgroundRepeat: "background-repeat",
bgRepeat: "background-repeat",
backgroundAttachment: "background-attachment",
bgAttachment: "background-attachment",
backgroundClip: "background-clip",
bgClip: "background-clip",
backgroundOrigin: "background-origin",
bgOrigin: "background-origin",
backgroundBlendMode: "background-blend-mode",
bgBlendMode: "background-blend-mode"
};
// src/props/filter.ts
var filterMappings = {
filter: "filter",
backdropFilter: "backdrop-filter"
};
// src/responsive.ts
var import_sheet = require("@kuma-ui/sheet");
var applyResponsiveStyles = (cssProperty, cssValues, convertFn = (value) => value) => {
const { breakpoints } = import_sheet.theme.getUserTheme();
const media = {};
if (Array.isArray(cssValues)) {
const baseValue = convertFn(cssValues[0]);
cssValues.slice(1).map((value, index) => {
if (breakpoints) {
const breakpoint = Object.keys(breakpoints)[index];
const breakpointValue = breakpoints[breakpoint];
media[breakpointValue] = `${cssProperty}: ${convertFn(value)};`;
}
});
return { base: `${cssProperty}: ${baseValue};`, media };
}
return { base: `${cssProperty}: ${convertFn(cssValues)};`, media: {} };
};
// src/toCSS.ts
var unitless = {
animationIterationCount: 1,
aspectRatio: 1,
borderImageOutset: 1,
borderImageSlice: 1,
borderImageWidth: 1,
boxFlex: 1,
boxFlexGroup: 1,
boxOrdinalGroup: 1,
columnCount: 1,
columns: 1,
flex: 1,
flexGrow: 1,
flexPositive: 1,
flexShrink: 1,
flexNegative: 1,
flexOrder: 1,
gridRow: 1,
gridRowEnd: 1,
gridRowSpan: 1,
gridRowStart: 1,
gridColumn: 1,
gridColumnEnd: 1,
gridColumnSpan: 1,
gridColumnStart: 1,
msGridRow: 1,
msGridRowSpan: 1,
msGridColumn: 1,
msGridColumnSpan: 1,
fontWeight: 1,
lineHeight: 1,
opacity: 1,
order: 1,
orphans: 1,
tabSize: 1,
widows: 1,
zIndex: 1,
zoom: 1,
WebkitLineClamp: 1,
// SVG-related properties
fillOpacity: 1,
floodOpacity: 1,
stopOpacity: 1,
strokeDasharray: 1,
strokeDashoffset: 1,
strokeMiterlimit: 1,
strokeOpacity: 1,
strokeWidth: 1
};
function toCssUnit(propertyName, value) {
if (typeof value === "number") {
return `${value}${!(propertyName in unitless) ? "px" : ""}`;
}
return value;
}
// src/props/contain.ts
var containMappings = {
contain: "contain",
containIntrinsicBlockSize: "contain-intrinsic-block-size",
containIntrinsicHeight: "contain-intrinsic-height",
containIntrinsicInlineSize: "contain-intrinsic-inline-size",
containIntrinsicSize: "contain-intrinsic-size",
containIntrinsicWidth: "contain-intrinsic-width"
};
// src/consumeStyleProps.ts
var styleMappings = Object.assign(
{},
animationMappings,
spaceMappings,
typographyMappings,
layoutMappings,
colorMappings,
flexMappings,
containMappings,
borderMappings,
outlineMappings,
positionMappings,
shadowMappings,
gridMappings,
listMappings,
effectMappings,
textMappings,
fontMappings,
maskMappings,
columnMappings,
backgroundMappings,
filterMappings
);
var consumeStyleProps = (props) => {
const cacheKey = JSON.stringify(props);
const cachedStyles = import_sheet2.styleCache.get(cacheKey);
if (cachedStyles) {
return cachedStyles;
}
let base = "";
const media = {};
for (const key in props) {
const cssValue = props[key];
if (cssValue == null)
continue;
const properties = styleMappings[key]?.split(",") ?? [];
for (const property of properties) {
const responsiveStyles = applyResponsiveStyles(
property,
cssValue,
(value) => toCssUnit(key, value)
);
base += responsiveStyles.base;
for (const [breakpoint, css] of Object.entries(responsiveStyles.media)) {
if (media[breakpoint]) {
media[breakpoint] += css;
} else {
media[breakpoint] = css;
}
}
}
}
const combinedStyles = { base, media };
import_sheet2.styleCache.set(cacheKey, combinedStyles);
return combinedStyles;
};
// src/pseudo.ts
var normalizePseudo = (props) => {
return props.replace("_", ":");
};
var isPseudoProps = (props) => {
return `${props}`.startsWith("_");
};
// src/keys.ts
var styleKeys = {
animation: [
"animation",
"animationComposition",
"animationDelay",
"animationDirection",
"animationDuration",
"animationFillMode",
"animationIterationCount",
"animationName",
"animationPlayState",
"animationTimeline",
"animationTimingFunction"
],
space: [
"margin",
"m",
"marginTop",
"mt",
"marginBottom",
"mb",
"marginLeft",
"ml",
"marginRight",
"mr",
"marginX",
"mx",
"marginY",
"my",
"marginInlineStart",
"marginInlineEnd",
"marginBlockStart",
"marginBlockEnd",
"marginInline",
"marginBlock",
"padding",
"p",
"paddingTop",
"pt",
"paddingBottom",
"pb",
"paddingLeft",
"pl",
"paddingRight",
"pr",
"paddingX",
"px",
"paddingY",
"py",
"paddingInlineStart",
"paddingInlineEnd",
"paddingBlockStart",
"paddingBlockEnd",
"paddingInline",
"paddingBlock"
],
typography: [
"hyphenateCharacter",
"hyphenateLimitChars",
"hyphens",
"hangingPunctuation",
"lineHeight",
"lineBreak",
"letterSpacing",
"orphans",
"quotes",
"rubyPosition",
"unicodeBidi",
"widows",
"whiteSpace",
"wordBreak",
"wordSpacing",
"writingMode"
],
fontKeys: [
"font",
"fontFamily",
"fontFeatureSettings",
"fontKerning",
"fontLanguageOverride",
"fontOpticalSizing",
"fontPalette",
"fontSize",
"fontSizeAdjust",
"fontStretch",
"fontStyle",
"fontSynthesis",
"fontVariant",
"fontVariantAlternates",
"fontVariantCaps",
"fontVariantEastAsian",
"fontVariantEmoji",
"fontVariantLigatures",
"fontVariantNumeric",
"fontVariantPosition",
"fontVariationSettings",
"fontWeight"
],
textKeys: [
"textAlign",
"textAlignLast",
"textCombineUpright",
"textDecoration",
"textDecorationColor",
"textDecorationLine",
"textDecorationSkipInk",
"textDecorationStyle",
"textDecorationThickness",
"textEmphasis",
"textEmphasisColor",
"textEmphasisPosition",
"textEmphasisStyle",
"textIndent",
"textJustify",
"textOrientation",
"textOverflow",
"textRendering",
"textShadow",
"textTransform",
"textUnderlineOffset",
"textUnderlinePosition"
],
layout: [
"width",
"w",
"minWidth",
"minW",
"maxWidth",
"maxW",
"height",
"h",
"minHeight",
"minH",
"maxHeight",
"maxH",
"display",
"overflow",
"overflowX",
"overflowY",
"position",
"zIndex",
"cursor",
"userSelect",
"aspectRatio",
"boxSizing",
"float",
"clear",
"objectFit",
"objectPosition",
"resize",
"verticalAlign"
],
flex: [
"flexDirection",
"flexDir",
"justifyContent",
"justify",
"alignItems",
"alignContent",
"alignSelf",
"flex",
"flexFlow",
"flexWrap",
"flexGrow",
"flexShrink",
"flexBasis",
"justifyItems",
"justifySelf",
"placeItems",
"placeContent",
"gap"
],
color: [
"background",
"bg",
"backgroundColor",
"bgColor",
"color",
"borderColor",
"outlineColor",
"accentColor",
"caretColor",
"opacity",
"visibility"
],
border: [
"border",
"borderWidth",
"borderTopWidth",
"borderBottomWidth",
"borderLeftWidth",
"borderRightWidth",
"borderStyle",
"borderTopStyle",
"borderBottomStyle",
"borderLeftStyle",
"borderRightStyle",
"borderRadius",
"borderTopLeftRadius",
"borderTopRightRadius",
"borderBottomLeftRadius",
"borderBottomRightRadius",
"borderTop",
"borderRight",
"borderBottom",
"borderLeft",
"borderX",
"borderY",
"borderStart",
"borderEnd",
"borderStartWidth",
"borderEndWidth",
"borderStartStyle",
"borderEndStyle",
"borderStartRadius",
"borderEndRadius"
],
outline: [
"outline",
"outlineWidth",
"outlineStyle",
"outlineOffset"
],
position: ["top", "right", "bottom", "left", "inset"],
shadow: ["textShadow", "boxShadow"],
list: [
"listStyle",
"listStyleImage",
"listStylePosition",
"listStyleType"
],
grid: [
"grid",
"gridArea",
"gridAutoColumns",
"gridAutoFlow",
"gridAutoRows",
"gridColumn",
"gridColumnEnd",
"gridColumnStart",
"gridRow",
"gridRowEnd",
"gridRowStart",
"gridTemplate",
"gridTemplateAreas",
"gridTemplateColumns",
"gridTemplateRows",
"gridGap",
"gridColumnGap",
"gridRowGap"
],
column: [
"columnCount",
"columnFill",
"columnGap",
"columnRule",
"columnRuleColor",
"columnRuleStyle",
"columnRuleWidth",
"columnSpan",
"columnWidth",
"columns"
],
contain: [
"contain",
"containIntrinsicBlockSize",
"containIntrinsicHeight",
"containIntrinsicInlineSize",
"containIntrinsicSize",
"containIntrinsicWidth"
],
effect: [
"transition",
"transitionDuration",
"transitionProperty",
"transitionTimingFunction",
"transitionDelay",
"transform",
"transformBox",
"transformOrigin",
"transformStyle",
"clipPath",
"content",
"contentVisibility"
],
mask: [
"mask",
"maskBorder",
"maskBorderMode",
"maskBorderOutset",
"maskBorderRepeat",
"maskBorderSlice",
"maskBorderSource",
"maskBorderWidth",
"maskClip",
"maskComposite",
"maskImage",
"maskMode",
"maskOrigin",
"maskPosition",
"maskRepeat",
"maskSize",
"maskType"
],
background: [
"backgroundImage",
"bgImage",
"backgroundPosition",
"bgPosition",
"backgroundPositionX",
"bgPositionX",
"backgroundPositionY",
"bgPositionY",
"backgroundSize",
"bgSize",
"backgroundRepeat",
"bgRepeat",
"backgroundAttachment",
"bgAttachment",
"backgroundClip",
"bgClip",
"backgroundOrigin",
"bgOrigin",
"backgroundBlendMode",
"bgBlendMode"
],
filter: ["filter", "backdropFilter"]
};
function memo(fn) {
const cache = /* @__PURE__ */ Object.create(null);
return (arg) => {
if (cache[arg] === void 0)
cache[arg] = fn(arg);
return cache[arg];
};
}
var isStyledProp = memo((_prop) => {
const prop = _prop;
return Object.values(styleKeys).some(
(keyGroup) => keyGroup.includes(prop)
);
});
// src/generator.ts
var import_sheet3 = require("@kuma-ui/sheet");
var StyleGenerator = class {
style;
className;
constructor(props, isDynamic = false) {
if (!props || Object.keys(props).length === 0) {
this.className = "";
return;
}
const styledProps = {};
const pseudoProps = {};
const findThemeStyle = (value) => {
const userTheme = import_sheet3.theme.getUserTheme();
const propKey = value.split(".")[0];
if (userTheme[propKey] === void 0)
return void 0;
for (const key in userTheme[propKey]) {
if (value === key) {
return userTheme[propKey][key];
}
}
return void 0;
};
const isThemeStyle = (propValue) => {
return typeof propValue === "string" && /[a-zA-Z]+\.[a-zA-Z0-9]+/.test(propValue) && !/^\w+\(.*\)$/.test(propValue);
};
const convertStyle = (name, value) => {
if (Array.isArray(value)) {
return value.map((v) => {
if (isThemeStyle(v)) {
const customStyle = findThemeStyle(v);
if (customStyle !== void 0) {
return customStyle;
}
}
return v;
});
} else if (isThemeStyle(value)) {
const customStyle = findThemeStyle(value);
if (customStyle !== void 0) {
return customStyle;
}
} else if (isStyledProp(name)) {
return value;
}
return value;
};
for (const [propName, propValue] of Object.entries(props)) {
if (isPseudoProps(propName)) {
pseudoProps[propName] = propValue;
for (const [name, value] of Object.entries(propValue)) {
pseudoProps[propName] = {
...pseudoProps[propName],
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- FIXME
[name]: convertStyle(name, value)
};
}
} else {
styledProps[propName] = convertStyle(propName, propValue);
}
}
const convertedPseudoProps = Object.keys(pseudoProps).length ? Object.entries(pseudoProps).map(([pseudoKey, pseudoValue]) => {
const pseudoStyle = all(pseudoValue);
return {
key: normalizePseudo(pseudoKey),
base: pseudoStyle.base,
responsive: pseudoStyle.media
};
}) : [];
this.style = {
base: all(styledProps).base,
responsive: all(styledProps).media,
pseudo: convertedPseudoProps
};
this.className = StyleGenerator.getClassNamePrefix(isDynamic) + (0, import_sheet3.generateHash)(JSON.stringify(this.style));
}
static getClassNamePrefix(isDynamic = false) {
const isProduction = process.env.NODE_ENV === "production";
if (isProduction)
return "kuma-";
return isDynamic ? "\u{1F984}-" : "\u{1F43B}-";
}
getClassName() {
return this.className;
}
getCSS() {
if (!this.style) {
return "";
}
let css = `.${this.className} { ${this.style.base} }`;
for (const [breakpoint, cssValue] of Object.entries(
this.style.responsive
)) {
css += `@media (min-width: ${breakpoint}) { .${this.className} { ${cssValue} } }`;
}
for (const pseudo of this.style.pseudo) {
css += `.${this.className}${pseudo.key} { ${pseudo.base} }`;
for (const [breakpoint, cssValue] of Object.entries(pseudo.responsive)) {
css += `@media (min-width: ${breakpoint}) { .${this.className}${pseudo.key} { ${cssValue} } }`;
}
}
return css;
}
getStyle() {
return { css: this.getCSS(), className: this.getClassName() };
}
};
// src/index.ts
var all = consumeStyleProps;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
StyleGenerator,
all,
isPseudoProps,
isStyledProp,
normalizePseudo,
toCssUnit
});