@vitus-labs/unistyle 1.3.1 → 1.3.2-alpha.2
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/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["CoreProvider","isValidValue","hasAnyValue","formatShorthand","formatIndividual"],"sources":["../src/responsive/breakpoints.ts","../src/responsive/createMediaQueries.ts","../src/responsive/normalizeTheme.ts","../src/responsive/optimizeTheme.ts","../src/responsive/transformTheme.ts","../src/responsive/makeItResponsive.ts","../src/responsive/sortBreakpoints.ts","../src/context.tsx","../src/styles/alignContent.ts","../src/styles/extendCss.ts","../src/units/stripUnit.ts","../src/units/value.ts","../src/units/values.ts","../src/styles/shorthands/borderRadius.ts","../src/styles/shorthands/edge.ts","../src/styles/styles/processDescriptor.ts","../src/styles/styles/propertyMap.ts","../src/styles/styles/index.ts"],"sourcesContent":["const breakpoints = {\n rootSize: 16,\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1440,\n },\n} as const\n\nexport type Breakpoints = typeof breakpoints\n\nexport default breakpoints\n","export type CreateMediaQueries = <\n B extends Record<string, number>,\n R extends number,\n C extends (...args: any) => any,\n>(props: {\n breakpoints: B\n rootSize: R\n css: C\n}) => Record<keyof B, ReturnType<C>>\n\n/**\n * Builds a map of breakpoint-name → tagged-template function.\n * The smallest breakpoint (value 0) gets no media wrapper.\n * Others are wrapped in `@media (min-width: <em>)` — em units\n * ensure correct behaviour when users change browser font size.\n */\nconst createMediaQueries: CreateMediaQueries = ({\n breakpoints,\n rootSize,\n css,\n}) =>\n Object.keys(breakpoints).reduce<Record<string, any>>((acc, key) => {\n // use em in breakpoints to work properly cross-browser and support users\n // changing their browsers font-size: https://zellwk.com/blog/media-query-units/\n const breakpointValue = (breakpoints as Record<string, number>)[key]\n\n if (breakpointValue === 0) {\n acc[key] = (...args: any[]) => css(...args)\n } else if (breakpointValue != null) {\n const emSize = breakpointValue / rootSize\n\n acc[key] = (...args: any[]) => css`\n @media only screen and (min-width: ${emSize}em) {\n ${css(...args)};\n }\n `\n }\n\n return acc\n }, {}) as any\n\nexport default createMediaQueries\n","type AssignToBreakpointKey = (\n breakpoints: string[],\n) => (\n value: (\n breakpoint: string,\n i: number,\n breakpoints: string[],\n result: Record<string, unknown>,\n ) => void,\n) => Record<string, unknown>\n\n/** Iterates breakpoints and populates a result object using a callback per breakpoint. */\nconst assignToBreakpointKey: AssignToBreakpointKey =\n (breakpoints) => (value) => {\n const result: Record<string, unknown> = {}\n\n breakpoints.forEach((item, i) => {\n result[item] = value(item, i, breakpoints, result)\n })\n\n return result\n }\n\nconst handleArrayCb = (arr: (string | number)[]) => (_: any, i: number) => {\n const currentValue = arr[i]\n const lastValue = arr[arr.length - 1]\n\n return currentValue ?? lastValue\n}\n\n// type HandleObjectCb = (\n// obj: Record<string, unknown>\n// ) => (\n// bp: string,\n// i: number,\n// breakpoint: Array<string>,\n// result: Record<string, unknown>\n// ) => Record<string, unknown>\n\nconst handleObjectCb =\n (obj: Record<string, unknown>) =>\n (bp: string, i: number, bps: string[], res: Record<string, unknown>) => {\n const currentValue = obj[bp]\n const previousValue = res[bps[i - 1]!]\n\n // check for non-nullable values\n if (currentValue != null) return currentValue\n return previousValue\n }\n\nconst handleValueCb = (value: unknown) => () => value\n\nconst shouldNormalize = (props: Record<string, any>) =>\n Object.values(props).some(\n (item) => typeof item === 'object' || Array.isArray(item),\n )\n\nexport type NormalizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => Record<string, unknown>\n\n/**\n * Expands each theme property into a full breakpoint map so every\n * breakpoint has a value. Arrays fill by index (last value carries forward),\n * objects inherit from the previous breakpoint, scalars repeat for all.\n * Skipped entirely when no property is array/object (fast path).\n */\nconst normalizeTheme: NormalizeTheme = ({ theme, breakpoints }) => {\n if (!shouldNormalize(theme)) return theme\n\n const getBpValues = assignToBreakpointKey(breakpoints)\n const result: Record<string, unknown> = {}\n\n Object.entries(theme).forEach(([key, value]) => {\n if (value == null) return\n\n // if it's an array\n if (Array.isArray(value)) {\n result[key] = getBpValues(handleArrayCb(value as any))\n }\n // if it's an object\n else if (typeof value === 'object') {\n result[key] = getBpValues(handleObjectCb(value as Record<string, any>))\n }\n // if any other value\n else {\n result[key] = getBpValues(handleValueCb(value))\n }\n })\n\n return result\n}\n\nexport default normalizeTheme\n","export type OptimizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, Record<string, unknown>>\n breakpoints: string[]\n}) => Record<string, Record<string, unknown>>\n\nconst shallowEqual = (\n a: Record<string, unknown> | undefined,\n b: Record<string, unknown> | undefined,\n): boolean => {\n if (a === b) return true\n if (!a || !b) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (const key of keysA) {\n if (a[key] !== b[key]) return false\n }\n\n return true\n}\n\n/**\n * Removes breakpoints whose styles are identical to the previous one.\n * This avoids generating duplicate `@media` blocks.\n * The smallest breakpoint is always kept.\n */\nconst optimizeTheme: OptimizeTheme = ({ theme, breakpoints }) => {\n const result: Record<string, Record<string, unknown>> = {}\n\n for (let i = 0; i < breakpoints.length; i++) {\n const key = breakpoints[i] as string\n const previousBreakpoint = breakpoints[i - 1] as string\n\n const current = theme[key]\n if (\n current &&\n (i === 0 || !shallowEqual(theme[previousBreakpoint], current))\n ) {\n result[key] = current\n }\n }\n\n return result\n}\n\nexport default optimizeTheme\n","import { isEmpty, set } from '@vitus-labs/core'\n\n/** Filter out breakpoint keys that don't exist in the sorted breakpoints list. */\nconst removeUnexpectedKeys = (obj: Record<string, unknown>, keys: string[]) => {\n const result: Record<string, unknown> = {}\n\n keys.forEach((bp) => {\n const value = obj[bp]\n\n if (value) {\n result[bp] = value\n }\n })\n\n return result\n}\n\nexport type TransformTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => any\n\n/**\n * Pivots the theme from property-centric to breakpoint-centric layout.\n * Input: `{ fontSize: { xs: 12, md: 15 }, color: 'red' }`\n * Output: `{ xs: { fontSize: 12, color: 'red' }, md: { fontSize: 15 } }`\n * Supports three input shapes per property: scalar, array (positional), or object (keyed).\n */\nconst transformTheme: TransformTheme = ({ theme, breakpoints }) => {\n const result = {}\n\n if (isEmpty(theme) || isEmpty(breakpoints)) return result\n\n // can be one of following types\n // { fontSize: 12 }\n // { fontSize: { xs: 12, md: 15 }}\n // { fontSize: [12, 15] }\n Object.entries(theme).forEach(([key, value]) => {\n // array\n if (Array.isArray(value) && value.length > 0) {\n value.forEach((child, i) => {\n const indexBreakpoint = breakpoints[i]!\n set(result, [indexBreakpoint, key], child)\n })\n }\n // object\n else if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([childKey, childValue]) => {\n set(result, [childKey, key], childValue)\n })\n }\n // normal value\n else if (value != null) {\n const firstBreakpoint = breakpoints[0]!\n set(result, [firstBreakpoint, key], value)\n }\n })\n\n return removeUnexpectedKeys(result, breakpoints)\n}\n\nexport default transformTheme\n","import { isEmpty } from '@vitus-labs/core'\nimport type { Css } from '~/types'\nimport type createMediaQueries from './createMediaQueries'\nimport normalizeTheme from './normalizeTheme'\nimport optimizeTheme from './optimizeTheme'\nimport type sortBreakpoints from './sortBreakpoints'\nimport transformTheme from './transformTheme'\n\ntype CustomTheme = Record<\n string,\n Record<string, unknown> | number | string | boolean\n>\ntype Theme = Partial<{\n rootSize: number\n breakpoints: Record<string, number>\n __VITUS_LABS__: Partial<{\n media: ReturnType<typeof createMediaQueries>\n sortedBreakpoints: ReturnType<typeof sortBreakpoints>\n }>\n}> &\n CustomTheme\n\nexport type MakeItResponsiveStyles<\n T extends Partial<Record<string, any>> = any,\n> = ({\n theme,\n css,\n rootSize,\n globalTheme,\n}: {\n theme: T\n css: Css\n rootSize?: number\n globalTheme?: Record<string, any>\n}) => ReturnType<typeof css> | string | any\n\nexport type MakeItResponsive = ({\n theme,\n key,\n css,\n styles,\n normalize,\n}: {\n theme?: CustomTheme\n key?: string\n css: any\n styles: MakeItResponsiveStyles\n normalize?: boolean\n}) => (props: { theme?: Theme; [key: string]: any }) => any\n\n/**\n * Core responsive engine used by every styled component in the system.\n *\n * Returns a styled-components interpolation function that:\n * 1. Reads the component's theme prop (via `key` or direct `theme`)\n * 2. Without breakpoints → renders plain CSS\n * 3. With breakpoints → normalizes, transforms (property-per-breakpoint →\n * breakpoint-per-property), optimizes (deduplicates identical breakpoints),\n * and wraps each breakpoint's styles in the appropriate `@media` query.\n */\nconst makeItResponsive: MakeItResponsive =\n ({ theme: customTheme, key = '', css, styles, normalize = false }) =>\n ({ theme = {}, ...props }) => {\n const internalTheme = customTheme || props[key]\n\n // if no theme is defined, return empty objct\n if (isEmpty(internalTheme)) return ''\n\n const { rootSize, breakpoints, __VITUS_LABS__, ...restTheme } =\n theme as Theme\n\n const renderStyles = (\n theme: Record<string, unknown>,\n ): ReturnType<typeof styles> =>\n styles({ theme, css, rootSize, globalTheme: restTheme })\n\n // if there are no breakpoints, return just standard css\n if (isEmpty(breakpoints) || isEmpty(__VITUS_LABS__)) {\n return css`\n ${renderStyles(internalTheme)}\n `\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { media, sortedBreakpoints } = __VITUS_LABS__!\n\n let helperTheme = internalTheme\n\n if (normalize) {\n helperTheme = normalizeTheme({\n theme: internalTheme,\n breakpoints: sortedBreakpoints,\n })\n }\n\n const transformedTheme = transformTheme({\n theme: helperTheme,\n breakpoints: sortedBreakpoints,\n })\n\n const optimizedTheme = optimizeTheme({\n theme: transformedTheme,\n breakpoints: sortedBreakpoints,\n })\n\n return sortedBreakpoints.map((item: string) => {\n const breakpointTheme = optimizedTheme[item]\n\n if (!breakpointTheme || !media) return ''\n\n const result = renderStyles(breakpointTheme)\n\n return (media as Record<string, any>)[item]`\n ${result};\n `\n })\n }\n\nexport default makeItResponsive\n","export type SortBreakpoints = <T extends Record<string, number>>(\n breakpoints: T,\n) => (keyof T)[]\n\n/** Sorts breakpoint keys by their pixel value (ascending, mobile-first). */\nconst sortBreakpoints: SortBreakpoints = (breakpoints) => {\n const result = Object.keys(breakpoints).sort(\n (a, b) => breakpoints[a]! - breakpoints[b]!,\n )\n\n return result\n}\n\nexport default sortBreakpoints\n","import {\n Provider as CoreProvider,\n config,\n context,\n isEmpty,\n} from '@vitus-labs/core'\nimport type { FC, ReactNode } from 'react'\nimport { useMemo } from 'react'\nimport { createMediaQueries, sortBreakpoints } from '~/responsive'\n\n// type VitusLabsContext = {\n// sortedBreakpoints?: ReturnType<typeof sortBreakpoints>\n// media?: ReturnType<typeof createMediaQueries>\n// }\n\ntype Theme = {\n rootSize: number\n breakpoints?: Record<string, number>\n __VITUS_LABS__?: never\n} & Partial<Record<string, unknown>>\n\nexport type TProvider = {\n theme: Theme\n children: ReactNode\n} & Partial<Record<string, unknown>>\n\n/**\n * Unistyle Provider — wraps the core Provider and enriches the theme\n * with pre-computed sorted breakpoints and media-query tagged-template\n * helpers consumed by `makeItResponsive`.\n */\nconst Provider: FC<TProvider> = ({ theme, children, ...props }) => {\n const { breakpoints, rootSize } = theme\n\n const sortedBreakpoints = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return sortBreakpoints(breakpoints)\n }\n\n return undefined\n }, [breakpoints])\n\n const media = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return createMediaQueries({\n breakpoints,\n css: config.css,\n rootSize,\n })\n }\n\n return undefined\n }, [breakpoints, rootSize])\n\n const result = {\n ...theme,\n __VITUS_LABS__: {\n sortedBreakpoints,\n media,\n },\n }\n\n return (\n <CoreProvider theme={result} {...props}>\n {children}\n </CoreProvider>\n )\n}\n\nexport { context }\n\nexport default Provider\n","import { config, isEmpty } from '@vitus-labs/core'\n\nexport type AlignContentDirectionKeys = keyof typeof ALIGN_CONTENT_DIRECTION\nexport type AlignContentAlignXKeys = keyof typeof ALIGN_CONTENT_MAP_X\nexport type AlignContentAlignYKeys = keyof typeof ALIGN_CONTENT_MAP_Y\n\nconst ALIGN_CONTENT_MAP_SHARED = {\n center: 'center',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n block: 'stretch',\n}\n\nexport const ALIGN_CONTENT_MAP_X = {\n left: 'flex-start',\n right: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_MAP_Y = {\n top: 'flex-start',\n bottom: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_DIRECTION = __WEB__\n ? {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n : {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n\nexport type AlignContent = ({\n direction,\n alignX,\n alignY,\n}: {\n direction: AlignContentDirectionKeys\n alignX: AlignContentAlignXKeys\n alignY: AlignContentAlignYKeys\n}) => ReturnType<typeof config.css> | null\n\n/**\n * Converts semantic direction/alignX/alignY values into `flex-direction`,\n * `align-items`, and `justify-content`. For inline directions (row) the\n * X/Y axes are swapped so that `alignX` always controls the horizontal axis.\n */\nconst alignContent: AlignContent = (attrs) => {\n const { direction, alignX, alignY } = attrs\n\n if (isEmpty(attrs) || !direction || !alignX || !alignY) {\n return null\n }\n\n const isReverted = ['inline', 'reverseInline'].includes(direction)\n const dir = ALIGN_CONTENT_DIRECTION[direction]\n const x = ALIGN_CONTENT_MAP_X[alignX]\n const y = ALIGN_CONTENT_MAP_Y[alignY]\n\n return config.css`\n flex-direction: ${dir};\n align-items: ${isReverted ? y : x};\n justify-content: ${isReverted ? x : y};\n `\n}\n\nexport default alignContent\n","import { config } from '@vitus-labs/core'\n\nexport type ExtendCss = (\n styles:\n | ((css: typeof config.css) => ReturnType<typeof css>)\n | string\n | null\n | undefined,\n) => string | ReturnType<typeof config.css>\n\n/**\n * Evaluates an `extendCss` value — either a callback receiving `css`\n * or a raw CSS string. Returns empty string for null/undefined.\n */\nconst extendCss: ExtendCss = (styles) => {\n if (!styles) return ''\n if (typeof styles === 'function') {\n return styles(config.css)\n }\n\n return styles\n}\n\nexport default extendCss\n","type Value<V> = V extends string ? number : V\ntype Unit<V> = V extends string ? string : undefined\n\nexport type StripUnit = <V extends string | number, UR extends boolean = false>(\n value: V,\n unitReturn?: UR,\n) => UR extends true ? [Value<V>, Unit<V>] : Value<V>\n\n/**\n * Strips the CSS unit suffix from a value.\n * With `unitReturn=true`, returns a `[number, unit]` tuple.\n * Otherwise returns just the numeric part.\n * Non-string inputs are passed through unchanged.\n */\nconst stripUnit: StripUnit = (value, unitReturn) => {\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/\n\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value\n\n const matchedValue = value.match(cssRegex)\n\n if (unitReturn) {\n if (matchedValue) return [parseFloat(value), matchedValue[2]]\n return [value, undefined]\n }\n\n if (matchedValue) return parseFloat(value)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value as any\n}\n\nexport default stripUnit\n","import stripUnit from './stripUnit'\n\ntype CssUnits =\n | 'px'\n | 'rem'\n | '%'\n | 'em'\n | 'ex'\n | 'cm'\n | 'mm'\n | 'in'\n | 'pt'\n | 'pc'\n | 'ch'\n | 'vh'\n | 'vw'\n | 'vmin'\n | 'vmax'\n\n/** Returns true for null/undefined/NaN but not for 0. */\nconst isNotValue = (value: unknown) => !value && value !== 0\n\nexport type Value = (\n param: string | number | null | undefined,\n rootSize?: number,\n outputUnit?: CssUnits,\n) => string | number | null\n\n/**\n * Converts a raw numeric value to a CSS string with appropriate units.\n * - Numbers without a unit are divided by `rootSize` and output as rem (web) or px (native).\n * - Values that already carry a unit are returned as-is, unless converting px→rem.\n * - Zero is always returned unitless.\n */\nconst value: Value = (\n param,\n rootSize = 16,\n outputUnit = __WEB__ ? 'rem' : 'px',\n) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (isNotValue(param)) return null as any\n\n const [val, unit] = stripUnit(param as string, true)\n if (isNotValue(val)) return null\n if (val === 0 || typeof val === 'string') return param // zero should be unitless\n\n const canConvert = rootSize && !Number.isNaN(val)\n if (canConvert && !unit && outputUnit === 'px') return `${val}${outputUnit}`\n if (canConvert && !unit) return `${val / rootSize}rem`\n if (canConvert && unit === 'px' && outputUnit === 'rem')\n return `${val / rootSize}rem`\n if (unit) return param\n\n return `${val}${outputUnit}`\n}\n\nexport default value\n","import type { Units } from '~/types'\nimport value from './value'\n\n/** Returns the first non-null/undefined value from the arguments. */\ntype GetValueOf = (...values: unknown[]) => number | string\nconst getValueOf: GetValueOf = (...values: any[]) =>\n values.find((value) => typeof value !== 'undefined' && value !== null)\n\nexport type Values = (\n values: unknown[],\n rootSize?: number,\n outputUnit?: Units,\n) => string | number | null\n\n/**\n * Picks the first non-null value from the array, converts it via `value()`,\n * and returns the result. If the picked value is itself an array, each item\n * is converted and joined with spaces (e.g. for shorthand properties).\n */\nconst values: Values = (values, rootSize, outputUnit) => {\n const param = getValueOf(...values)\n\n if (Array.isArray(param)) {\n return param.map((item) => value(item, rootSize, outputUnit)).join(' ')\n }\n\n return value(param, rootSize, outputUnit)\n}\n\nexport default values\n","import type { PropertyValue } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype PV = PropertyValue | null | undefined\n\ntype CornerValues = {\n full: PV\n top: PV\n bottom: PV\n left: PV\n right: PV\n topLeft: PV\n topRight: PV\n bottomLeft: PV\n bottomRight: PV\n}\n\nconst hasAnyValue = (v: CornerValues) =>\n isValidValue(v.full) ||\n isValidValue(v.top) ||\n isValidValue(v.bottom) ||\n isValidValue(v.left) ||\n isValidValue(v.right) ||\n isValidValue(v.topLeft) ||\n isValidValue(v.topRight) ||\n isValidValue(v.bottomLeft) ||\n isValidValue(v.bottomRight)\n\n// topLeft - topRight - bottomRight - bottomLeft\nconst resolveCorners = (v: CornerValues) => {\n const corners: PV[] = [v.full, v.full, v.full, v.full]\n\n if (isValidValue(v.top)) {\n corners[0] = v.top\n corners[1] = v.top\n }\n if (isValidValue(v.bottom)) {\n corners[2] = v.bottom\n corners[3] = v.bottom\n }\n if (isValidValue(v.left)) {\n corners[0] = v.left\n corners[3] = v.left\n }\n if (isValidValue(v.right)) {\n corners[1] = v.right\n corners[2] = v.right\n }\n\n if (isValidValue(v.topLeft)) corners[0] = v.topLeft\n if (isValidValue(v.topRight)) corners[1] = v.topRight\n if (isValidValue(v.bottomRight)) corners[2] = v.bottomRight\n if (isValidValue(v.bottomLeft)) corners[3] = v.bottomLeft\n\n return corners\n}\n\nconst formatShorthand = (corners: PV[], calc: (p: PV) => any) => {\n const [tl, tr, br, bl] = corners\n\n if (corners.every((val, _, arr) => val === arr[0]))\n return `border-radius: ${calc(tl)};`\n\n if (tl === br && tr === bl) return `border-radius: ${calc(tl)} ${calc(tr)};`\n\n if (tl && tr === bl && br)\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)};`\n\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)} ${calc(bl)};`\n}\n\nconst CORNER_CSS = [\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius',\n] as const\n\nconst formatIndividual = (corners: PV[], calc: (p: PV) => any) => {\n let output = ''\n for (let i = 0; i < corners.length; i++) {\n if (isValidValue(corners[i]))\n output += `${CORNER_CSS[i]}: ${calc(corners[i])};`\n }\n return output\n}\n\nexport type BorderRadius = (\n rootSize?: number,\n) => (props: CornerValues) => string | null\n\n/**\n * Border radius shorthand processor. Accepts full/top/bottom/left/right\n * and individual corner values. Produces the most compact CSS output —\n * single-value, two-value, three-value, or four-value shorthand\n * when all corners are specified, or individual corner properties otherwise.\n */\nconst borderRadius: BorderRadius = (rootSize) => (props) => {\n if (!hasAnyValue(props)) return null\n\n const calc = (param: PV) => value(param as any, rootSize)\n const corners = resolveCorners(props)\n\n if (corners.every((val) => isValidValue(val)))\n return formatShorthand(corners, calc)\n\n return formatIndividual(corners, calc)\n}\n\nexport default borderRadius\n","import type { Units } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype Property =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\ntype Value = string | number | null | undefined\ntype Side = 'top' | 'bottom' | 'left' | 'right'\n\ntype EdgeValues = {\n full: Value\n x: Value\n y: Value\n top: Value\n left: Value\n right: Value\n bottom: Value\n}\n\ntype Definitions = Record<\n Property,\n { unit?: Units; edgeCss: (side: Side) => string }\n>\n\nconst definitions: Definitions = {\n inset: {\n unit: 'rem',\n edgeCss: (side) => side,\n },\n margin: {\n unit: 'rem',\n edgeCss: (side) => `margin-${side}`,\n },\n padding: {\n unit: 'rem',\n edgeCss: (side) => `padding-${side}`,\n },\n 'border-width': {\n unit: 'px',\n edgeCss: (side) => `border-${side}-width`,\n },\n 'border-style': {\n edgeCss: (side) => `border-${side}-style`,\n },\n 'border-color': {\n edgeCss: (side) => `border-${side}-color`,\n },\n}\n\nconst hasAnyValue = (vals: EdgeValues) =>\n isValidValue(vals.top) ||\n isValidValue(vals.bottom) ||\n isValidValue(vals.left) ||\n isValidValue(vals.right) ||\n isValidValue(vals.x) ||\n isValidValue(vals.y) ||\n isValidValue(vals.full)\n\n// top - right - bottom - left\nconst resolveSides = ({ full, x, y, top, left, right, bottom }: EdgeValues) => {\n const sides: Value[] = [full, full, full, full]\n\n if (isValidValue(x)) {\n sides[1] = x\n sides[3] = x\n }\n\n if (isValidValue(y)) {\n sides[0] = y\n sides[2] = y\n }\n\n if (isValidValue(top)) sides[0] = top\n if (isValidValue(right)) sides[1] = right\n if (isValidValue(bottom)) sides[2] = bottom\n if (isValidValue(left)) sides[3] = left\n\n return sides\n}\n\nconst formatShorthand = (\n property: Property,\n sides: Value[],\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n\n if (sides.every((val, _, arr) => val === arr[0]))\n return `${property}: ${calc(t)};`\n\n if (t === b && r === l) return `${property}: ${calc(t)} ${calc(r)};`\n\n if (t && r === l && b) return `${property}: ${calc(t)} ${calc(r)} ${calc(b)};`\n\n return `${property}: ${calc(t)} ${calc(r)} ${calc(b)} ${calc(l)};`\n}\n\nconst formatIndividual = (\n sides: Value[],\n edgeCss: (side: Side) => string,\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n let output = ''\n\n if (isValidValue(t)) output += `${edgeCss('top')}: ${calc(t)};`\n if (isValidValue(b)) output += `${edgeCss('bottom')}: ${calc(b)};`\n if (isValidValue(l)) output += `${edgeCss('left')}: ${calc(l)};`\n if (isValidValue(r)) output += `${edgeCss('right')}: ${calc(r)};`\n\n return output\n}\n\nexport type Edge = (\n rootSize?: number,\n) => (property: Property, values: EdgeValues) => string | null\n\n/**\n * Edge shorthand processor for margin, padding, inset, border-width/style/color.\n * Accepts full/x/y/top/right/bottom/left values and produces the most compact\n * CSS output — using shorthand syntax when all four sides are specified,\n * or individual side properties when only some are set.\n */\nconst edge: Edge =\n (rootSize = 16) =>\n (property, values) => {\n if (!hasAnyValue(values)) return null\n\n const { unit, edgeCss } = definitions[property]\n const calc = (param: Value) =>\n unit ? value(param as any, rootSize, unit) : param\n\n const sides = resolveSides(values)\n\n if (sides.every((val) => isValidValue(val)))\n return formatShorthand(property, sides, calc)\n\n return formatIndividual(sides, edgeCss, calc)\n }\n\nexport default edge\n","import type { BorderRadius } from '~/styles/shorthands/borderRadius'\nimport type { Edge } from '~/styles/shorthands/edge'\nimport type { Css } from '~/types'\nimport type { Values } from '~/units/values'\nimport type { PropertyDescriptor } from './propertyMap'\nimport type { InnerTheme } from './types'\n\ntype Calc = (...params: any[]) => ReturnType<Values>\n\nconst toCssDecl = (css: string, v: unknown) =>\n v == null ? '' : `${css}: ${v};`\n\n/**\n * Converts a single property descriptor + theme values into a CSS fragment.\n *\n * - `simple` — pass-through (no unit conversion)\n * - `convert` — number→rem via `calc()`\n * - `convert_fallback` — picks first non-null from multiple theme keys, then converts\n * - `edge` — delegates to the edge shorthand (margin, padding, inset, border-*)\n * - `border_radius` — delegates to the border-radius shorthand\n * - `special` — one-off logic (fullScreen, backgroundImage url wrapping, animation combo, etc.)\n */\nconst processSpecial = (\n d: Extract<PropertyDescriptor, { kind: 'special' }>,\n t: InnerTheme,\n css: Css,\n): string | ReturnType<typeof css> => {\n switch (d.id) {\n case 'fullScreen':\n if (!t.fullScreen) return ''\n return css`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n `\n\n case 'backgroundImage':\n if (!t.backgroundImage) return ''\n return css`\n background-image: url(${t.backgroundImage});\n `\n\n case 'animation': {\n const parts = [t.keyframe, t.animation].filter(Boolean).join(' ')\n return parts ? `animation: ${parts};` : ''\n }\n\n case 'hideEmpty':\n if (!(__WEB__ && t.hideEmpty)) return ''\n return css`\n &:empty {\n display: none;\n }\n `\n\n case 'clearFix':\n if (!(__WEB__ && t.clearFix)) return ''\n return css`\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n `\n\n case 'extendCss':\n return t.extendCss ?? ''\n\n default:\n return ''\n }\n}\n\nconst processDescriptor = (\n d: PropertyDescriptor,\n t: InnerTheme,\n css: Css,\n calc: Calc,\n shorthand: ReturnType<Edge>,\n borderRadiusFn: ReturnType<BorderRadius>,\n): string | ReturnType<typeof css> => {\n switch (d.kind) {\n case 'simple':\n return toCssDecl(d.css, t[d.key])\n\n case 'convert':\n return toCssDecl(d.css, calc(t[d.key]))\n\n case 'convert_fallback':\n return toCssDecl(d.css, calc(...d.keys.map((k) => t[k])))\n\n case 'edge':\n return (\n shorthand(d.property, {\n full: t[d.keys.full],\n x: t[d.keys.x],\n y: t[d.keys.y],\n top: t[d.keys.top],\n left: t[d.keys.left],\n bottom: t[d.keys.bottom],\n right: t[d.keys.right],\n }) ?? ''\n )\n\n case 'border_radius':\n return (\n borderRadiusFn({\n full: t[d.keys.full],\n top: t[d.keys.top],\n bottom: t[d.keys.bottom],\n left: t[d.keys.left],\n right: t[d.keys.right],\n topLeft: t[d.keys.topLeft],\n topRight: t[d.keys.topRight],\n bottomLeft: t[d.keys.bottomLeft],\n bottomRight: t[d.keys.bottomRight],\n }) ?? ''\n )\n\n case 'special':\n return processSpecial(d, t, css)\n }\n}\n\nexport default processDescriptor\n","import type { InnerTheme } from './types'\n\n/**\n * Descriptor types for the data-driven CSS property map.\n *\n * - `simple` — CSS pass-through (no unit conversion).\n * - `convert` — Number values are converted via `values()` (px→rem).\n * - `convert_fallback` — Picks first non-null from multiple theme keys, then converts.\n * - `edge` — Spacing shorthand (margin, padding, inset, border-*) via `edge()`.\n * - `border_radius` — Border radius shorthand via `borderRadius()`.\n * - `special` — One-off logic (fullScreen, backgroundImage, animation, etc.).\n */\ntype EdgeProperty =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\n\ntype EdgeKeys = {\n full: keyof InnerTheme\n x: keyof InnerTheme\n y: keyof InnerTheme\n top: keyof InnerTheme\n left: keyof InnerTheme\n bottom: keyof InnerTheme\n right: keyof InnerTheme\n}\n\ntype BorderRadiusKeys = {\n full: keyof InnerTheme\n top: keyof InnerTheme\n bottom: keyof InnerTheme\n left: keyof InnerTheme\n right: keyof InnerTheme\n topLeft: keyof InnerTheme\n topRight: keyof InnerTheme\n bottomLeft: keyof InnerTheme\n bottomRight: keyof InnerTheme\n}\n\nexport type PropertyDescriptor =\n | { kind: 'simple'; css: string; key: keyof InnerTheme }\n | { kind: 'convert'; css: string; key: keyof InnerTheme }\n | { kind: 'convert_fallback'; css: string; keys: (keyof InnerTheme)[] }\n | {\n kind: 'edge'\n property: EdgeProperty\n keys: EdgeKeys\n }\n | { kind: 'border_radius'; keys: BorderRadiusKeys }\n | { kind: 'special'; id: string }\n\nconst propertyMap: PropertyDescriptor[] = [\n // ─── SPECIAL: fullScreen ──────────────────────────────────────────\n { kind: 'special', id: 'fullScreen' },\n\n // ─── POSITION ─────────────────────────────────────────────────────\n { kind: 'simple', css: 'all', key: 'all' },\n { kind: 'simple', css: 'display', key: 'display' },\n { kind: 'simple', css: 'position', key: 'position' },\n { kind: 'simple', css: 'box-sizing', key: 'boxSizing' },\n { kind: 'simple', css: 'float', key: 'float' },\n\n // ─── INSET (edge shorthand) ───────────────────────────────────────\n {\n kind: 'edge',\n property: 'inset',\n keys: {\n full: 'inset',\n x: 'insetX',\n y: 'insetY',\n top: 'top',\n left: 'left',\n bottom: 'bottom',\n right: 'right',\n },\n },\n\n // ─── SIZING ───────────────────────────────────────────────────────\n { kind: 'convert_fallback', css: 'width', keys: ['width', 'size'] },\n { kind: 'convert_fallback', css: 'min-width', keys: ['minWidth', 'minSize'] },\n { kind: 'convert_fallback', css: 'max-width', keys: ['maxWidth', 'maxSize'] },\n { kind: 'convert_fallback', css: 'height', keys: ['height', 'size'] },\n {\n kind: 'convert_fallback',\n css: 'min-height',\n keys: ['minHeight', 'minSize'],\n },\n {\n kind: 'convert_fallback',\n css: 'max-height',\n keys: ['maxHeight', 'maxSize'],\n },\n { kind: 'convert', css: 'gap', key: 'gap' },\n { kind: 'simple', css: 'aspect-ratio', key: 'aspectRatio' },\n { kind: 'simple', css: 'contain', key: 'contain' },\n { kind: 'simple', css: 'container-type', key: 'containerType' },\n { kind: 'simple', css: 'container-name', key: 'containerName' },\n { kind: 'simple', css: 'container', key: 'container' },\n { kind: 'convert', css: 'inline-size', key: 'inlineSize' },\n { kind: 'convert', css: 'block-size', key: 'blockSize' },\n { kind: 'convert', css: 'min-inline-size', key: 'minInlineSize' },\n { kind: 'convert', css: 'min-block-size', key: 'minBlockSize' },\n { kind: 'convert', css: 'max-inline-size', key: 'maxInlineSize' },\n { kind: 'convert', css: 'max-block-size', key: 'maxBlockSize' },\n\n // ─── SPACING (edge shorthands) ────────────────────────────────────\n {\n kind: 'edge',\n property: 'margin',\n keys: {\n full: 'margin',\n x: 'marginX',\n y: 'marginY',\n top: 'marginTop',\n left: 'marginLeft',\n bottom: 'marginBottom',\n right: 'marginRight',\n },\n },\n {\n kind: 'edge',\n property: 'padding',\n keys: {\n full: 'padding',\n x: 'paddingX',\n y: 'paddingY',\n top: 'paddingTop',\n left: 'paddingLeft',\n bottom: 'paddingBottom',\n right: 'paddingRight',\n },\n },\n\n // Logical spacing\n { kind: 'convert', css: 'margin-inline', key: 'marginInline' },\n { kind: 'convert', css: 'margin-inline-start', key: 'marginInlineStart' },\n { kind: 'convert', css: 'margin-inline-end', key: 'marginInlineEnd' },\n { kind: 'convert', css: 'margin-block', key: 'marginBlock' },\n { kind: 'convert', css: 'margin-block-start', key: 'marginBlockStart' },\n { kind: 'convert', css: 'margin-block-end', key: 'marginBlockEnd' },\n { kind: 'convert', css: 'padding-inline', key: 'paddingInline' },\n { kind: 'convert', css: 'padding-inline-start', key: 'paddingInlineStart' },\n { kind: 'convert', css: 'padding-inline-end', key: 'paddingInlineEnd' },\n { kind: 'convert', css: 'padding-block', key: 'paddingBlock' },\n { kind: 'convert', css: 'padding-block-start', key: 'paddingBlockStart' },\n { kind: 'convert', css: 'padding-block-end', key: 'paddingBlockEnd' },\n\n // Logical inset\n { kind: 'convert', css: 'inset-inline', key: 'insetInline' },\n { kind: 'convert', css: 'inset-inline-start', key: 'insetInlineStart' },\n { kind: 'convert', css: 'inset-inline-end', key: 'insetInlineEnd' },\n { kind: 'convert', css: 'inset-block', key: 'insetBlock' },\n { kind: 'convert', css: 'inset-block-start', key: 'insetBlockStart' },\n { kind: 'convert', css: 'inset-block-end', key: 'insetBlockEnd' },\n\n // ─── FLEX ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'align-content', key: 'alignContent' },\n { kind: 'simple', css: 'align-items', key: 'alignItems' },\n { kind: 'simple', css: 'align-self', key: 'alignSelf' },\n { kind: 'simple', css: 'flex', key: 'flex' },\n { kind: 'simple', css: 'flex-basis', key: 'flexBasis' },\n { kind: 'simple', css: 'flex-direction', key: 'flexDirection' },\n { kind: 'simple', css: 'flex-flow', key: 'flexFlow' },\n { kind: 'simple', css: 'flex-grow', key: 'flexGrow' },\n { kind: 'simple', css: 'flex-shrink', key: 'flexShrink' },\n { kind: 'simple', css: 'flex-wrap', key: 'flexWrap' },\n { kind: 'simple', css: 'justify-content', key: 'justifyContent' },\n { kind: 'simple', css: 'justify-items', key: 'justifyItems' },\n { kind: 'simple', css: 'justify-self', key: 'justifySelf' },\n { kind: 'simple', css: 'place-items', key: 'placeItems' },\n { kind: 'simple', css: 'place-content', key: 'placeContent' },\n { kind: 'simple', css: 'place-self', key: 'placeSelf' },\n { kind: 'convert', css: 'row-gap', key: 'rowGap' },\n { kind: 'convert', css: 'column-gap', key: 'columnGap' },\n\n // ─── GRID ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'grid', key: 'grid' },\n { kind: 'simple', css: 'grid-area', key: 'gridArea' },\n { kind: 'convert', css: 'grid-auto-columns', key: 'gridAutoColumns' },\n { kind: 'simple', css: 'grid-auto-flow', key: 'gridAutoFlow' },\n { kind: 'convert', css: 'grid-auto-rows', key: 'gridAutoRows' },\n { kind: 'simple', css: 'grid-column', key: 'gridColumn' },\n { kind: 'simple', css: 'grid-column-end', key: 'gridColumnEnd' },\n { kind: 'convert', css: 'grid-column-gap', key: 'gridColumnGap' },\n { kind: 'convert', css: 'grid-column-start', key: 'gridColumnStart' },\n { kind: 'convert', css: 'grid-gap', key: 'gridGap' },\n { kind: 'simple', css: 'grid-row', key: 'gridRow' },\n { kind: 'simple', css: 'grid-row-start', key: 'gridRowStart' },\n { kind: 'simple', css: 'grid-row-end', key: 'gridRowEnd' },\n { kind: 'convert', css: 'grid-row-gap', key: 'gridRowGap' },\n { kind: 'simple', css: 'grid-template', key: 'gridTemplate' },\n { kind: 'simple', css: 'grid-template-areas', key: 'gridTemplateAreas' },\n { kind: 'simple', css: 'grid-template-columns', key: 'gridTemplateColumns' },\n { kind: 'simple', css: 'grid-template-rows', key: 'gridTemplateRows' },\n\n // ─── POSITIONING ──────────────────────────────────────────────────\n { kind: 'simple', css: 'object-fit', key: 'objectFit' },\n { kind: 'simple', css: 'object-position', key: 'objectPosition' },\n { kind: 'simple', css: 'order', key: 'order' },\n { kind: 'simple', css: 'opacity', key: 'opacity' },\n { kind: 'simple', css: 'resize', key: 'resize' },\n { kind: 'simple', css: 'vertical-align', key: 'verticalAlign' },\n\n // ─── FONT & TEXT ──────────────────────────────────────────────────\n { kind: 'simple', css: 'line-height', key: 'lineHeight' },\n { kind: 'simple', css: 'font', key: 'font' },\n { kind: 'simple', css: 'font-family', key: 'fontFamily' },\n { kind: 'convert', css: 'font-size', key: 'fontSize' },\n { kind: 'convert', css: 'font-size-adjust', key: 'fontSizeAdjust' },\n { kind: 'convert', css: 'font-stretch', key: 'fontStretch' },\n { kind: 'simple', css: 'font-style', key: 'fontStyle' },\n { kind: 'simple', css: 'font-variant', key: 'fontVariant' },\n { kind: 'simple', css: 'font-weight', key: 'fontWeight' },\n { kind: 'simple', css: 'font-kerning', key: 'fontKerning' },\n { kind: 'simple', css: 'font-feature-settings', key: 'fontFeatureSettings' },\n {\n kind: 'simple',\n css: 'font-variation-settings',\n key: 'fontVariationSettings',\n },\n { kind: 'simple', css: 'font-optical-sizing', key: 'fontOpticalSizing' },\n { kind: 'simple', css: 'text-align', key: 'textAlign' },\n { kind: 'simple', css: 'text-align-last', key: 'textAlignLast' },\n { kind: 'simple', css: 'text-transform', key: 'textTransform' },\n { kind: 'simple', css: 'text-decoration', key: 'textDecoration' },\n { kind: 'simple', css: 'text-decoration-color', key: 'textDecorationColor' },\n { kind: 'simple', css: 'text-decoration-line', key: 'textDecorationLine' },\n { kind: 'simple', css: 'text-decoration-style', key: 'textDecorationStyle' },\n {\n kind: 'simple',\n css: 'text-decoration-thickness',\n key: 'textDecorationThickness',\n },\n {\n kind: 'simple',\n css: 'text-underline-offset',\n key: 'textUnderlineOffset',\n },\n { kind: 'simple', css: 'text-emphasis', key: 'textEmphasis' },\n { kind: 'simple', css: 'text-emphasis-color', key: 'textEmphasisColor' },\n { kind: 'simple', css: 'text-emphasis-style', key: 'textEmphasisStyle' },\n { kind: 'simple', css: 'letter-spacing', key: 'letterSpacing' },\n { kind: 'simple', css: 'word-spacing', key: 'wordSpacing' },\n { kind: 'simple', css: 'text-indent', key: 'textIndent' },\n { kind: 'simple', css: 'text-justify', key: 'textJustify' },\n { kind: 'simple', css: 'text-overflow', key: 'textOverflow' },\n { kind: 'simple', css: 'text-shadow', key: 'textShadow' },\n { kind: 'simple', css: 'text-wrap', key: 'textWrap' },\n { kind: 'simple', css: 'text-rendering', key: 'textRendering' },\n { kind: 'simple', css: 'white-space', key: 'whiteSpace' },\n { kind: 'simple', css: 'word-break', key: 'wordBreak' },\n { kind: 'simple', css: 'word-wrap', key: 'wordWrap' },\n { kind: 'simple', css: 'writing-mode', key: 'writingMode' },\n { kind: 'simple', css: 'direction', key: 'direction' },\n { kind: 'simple', css: 'hyphens', key: 'hyphens' },\n\n // ─── LIST ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'list-style', key: 'listStyle' },\n { kind: 'simple', css: 'list-style-image', key: 'listStyleImage' },\n { kind: 'simple', css: 'list-style-position', key: 'listStylePosition' },\n { kind: 'simple', css: 'list-style-type', key: 'listStyleType' },\n\n // ─── BACKGROUND & COLORS ─────────────────────────────────────────\n { kind: 'simple', css: 'color', key: 'color' },\n { kind: 'simple', css: 'background', key: 'background' },\n { kind: 'simple', css: 'background-color', key: 'backgroundColor' },\n { kind: 'special', id: 'backgroundImage' },\n { kind: 'simple', css: 'background-attachment', key: 'backgroundAttachment' },\n { kind: 'simple', css: 'background-clip', key: 'backgroundClip' },\n { kind: 'simple', css: 'background-origin', key: 'backgroundOrigin' },\n { kind: 'simple', css: 'background-position', key: 'backgroundPosition' },\n { kind: 'simple', css: 'background-repeat', key: 'backgroundRepeat' },\n { kind: 'simple', css: 'background-size', key: 'backgroundSize' },\n\n // ─── BORDERS ──────────────────────────────────────────────────────\n {\n kind: 'border_radius',\n keys: {\n full: 'borderRadius',\n top: 'borderRadiusTop',\n bottom: 'borderRadiusBottom',\n left: 'borderRadiusLeft',\n right: 'borderRadiusRight',\n topLeft: 'borderRadiusTopLeft',\n topRight: 'borderRadiusTopRight',\n bottomLeft: 'borderRadiusBottomLeft',\n bottomRight: 'borderRadiusBottomRight',\n },\n },\n { kind: 'simple', css: 'border', key: 'border' },\n { kind: 'simple', css: 'border-top', key: 'borderTop' },\n { kind: 'simple', css: 'border-bottom', key: 'borderBottom' },\n { kind: 'simple', css: 'border-left', key: 'borderLeft' },\n { kind: 'simple', css: 'border-right', key: 'borderRight' },\n {\n kind: 'edge',\n property: 'border-width',\n keys: {\n full: 'borderWidth',\n x: 'borderWidthX',\n y: 'borderWidthY',\n top: 'borderWidthTop',\n left: 'borderWidthLeft',\n bottom: 'borderWidthBottom',\n right: 'borderWidthRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-style',\n keys: {\n full: 'borderStyle',\n x: 'borderStyleX',\n y: 'borderStyleY',\n top: 'borderStyleTop',\n left: 'borderStyleLeft',\n bottom: 'borderStyleBottom',\n right: 'borderStyleRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-color',\n keys: {\n full: 'borderColor',\n x: 'borderColorX',\n y: 'borderColorY',\n top: 'borderColorTop',\n left: 'borderColorLeft',\n bottom: 'borderColorBottom',\n right: 'borderColorRight',\n },\n },\n { kind: 'simple', css: 'border-image', key: 'borderImage' },\n { kind: 'simple', css: 'border-image-outset', key: 'borderImageOutset' },\n { kind: 'simple', css: 'border-image-repeat', key: 'borderImageRepeat' },\n { kind: 'simple', css: 'border-image-slice', key: 'borderImageSlice' },\n { kind: 'simple', css: 'border-image-source', key: 'borderImageSource' },\n { kind: 'simple', css: 'border-image-width', key: 'borderImageWidth' },\n { kind: 'simple', css: 'border-spacing', key: 'borderSpacing' },\n\n // Logical borders\n { kind: 'simple', css: 'border-inline', key: 'borderInline' },\n { kind: 'simple', css: 'border-block', key: 'borderBlock' },\n { kind: 'simple', css: 'border-inline-start', key: 'borderInlineStart' },\n { kind: 'simple', css: 'border-inline-end', key: 'borderInlineEnd' },\n { kind: 'simple', css: 'border-block-start', key: 'borderBlockStart' },\n { kind: 'simple', css: 'border-block-end', key: 'borderBlockEnd' },\n\n // ─── VISUAL EFFECTS ───────────────────────────────────────────────\n { kind: 'simple', css: 'backface-visibility', key: 'backfaceVisibility' },\n { kind: 'simple', css: 'box-shadow', key: 'boxShadow' },\n { kind: 'simple', css: 'filter', key: 'filter' },\n { kind: 'simple', css: 'backdrop-filter', key: 'backdropFilter' },\n { kind: 'simple', css: 'mix-blend-mode', key: 'mixBlendMode' },\n {\n kind: 'simple',\n css: 'background-blend-mode',\n key: 'backgroundBlendMode',\n },\n { kind: 'simple', css: 'isolation', key: 'isolation' },\n { kind: 'simple', css: 'outline', key: 'outline' },\n { kind: 'simple', css: 'outline-color', key: 'outlineColor' },\n { kind: 'simple', css: 'outline-offset', key: 'outlineOffset' },\n { kind: 'simple', css: 'outline-style', key: 'outlineStyle' },\n { kind: 'simple', css: 'outline-width', key: 'outlineWidth' },\n\n // ─── ANIMATIONS ───────────────────────────────────────────────────\n { kind: 'special', id: 'animation' },\n { kind: 'simple', css: 'animation-name', key: 'animationName' },\n { kind: 'simple', css: 'animation-duration', key: 'animationDuration' },\n {\n kind: 'simple',\n css: 'animation-timing-function',\n key: 'animationTimingFunction',\n },\n { kind: 'simple', css: 'animation-delay', key: 'animationDelay' },\n {\n kind: 'simple',\n css: 'animation-iteration-count',\n key: 'animationIterationCount',\n },\n { kind: 'simple', css: 'animation-direction', key: 'animationDirection' },\n { kind: 'simple', css: 'animation-fill-mode', key: 'animationFillMode' },\n { kind: 'simple', css: 'animation-play-state', key: 'animationPlayState' },\n { kind: 'simple', css: 'transition', key: 'transition' },\n { kind: 'simple', css: 'transition-delay', key: 'transitionDelay' },\n { kind: 'simple', css: 'transition-duration', key: 'transitionDuration' },\n { kind: 'simple', css: 'transition-property', key: 'transitionProperty' },\n {\n kind: 'simple',\n css: 'transition-timing-function',\n key: 'transitionTimingFunction',\n },\n\n // ─── TRANSFORM ────────────────────────────────────────────────────\n { kind: 'simple', css: 'transform', key: 'transform' },\n { kind: 'simple', css: 'transform-origin', key: 'transformOrigin' },\n { kind: 'simple', css: 'transform-style', key: 'transformStyle' },\n { kind: 'simple', css: 'translate', key: 'translate' },\n { kind: 'simple', css: 'rotate', key: 'rotate' },\n { kind: 'simple', css: 'scale', key: 'scale' },\n { kind: 'simple', css: 'will-change', key: 'willChange' },\n\n // ─── SCROLL ───────────────────────────────────────────────────────\n { kind: 'simple', css: 'scroll-behavior', key: 'scrollBehavior' },\n { kind: 'simple', css: 'scroll-snap-type', key: 'scrollSnapType' },\n { kind: 'simple', css: 'scroll-snap-align', key: 'scrollSnapAlign' },\n { kind: 'simple', css: 'scroll-snap-stop', key: 'scrollSnapStop' },\n { kind: 'simple', css: 'scroll-margin', key: 'scrollMargin' },\n { kind: 'simple', css: 'scroll-padding', key: 'scrollPadding' },\n { kind: 'simple', css: 'overscroll-behavior', key: 'overscrollBehavior' },\n {\n kind: 'simple',\n css: 'overscroll-behavior-x',\n key: 'overscrollBehaviorX',\n },\n {\n kind: 'simple',\n css: 'overscroll-behavior-y',\n key: 'overscrollBehaviorY',\n },\n\n // ─── INTERACTION ──────────────────────────────────────────────────\n { kind: 'simple', css: 'cursor', key: 'cursor' },\n { kind: 'simple', css: 'pointer-events', key: 'pointerEvents' },\n { kind: 'simple', css: 'user-select', key: 'userSelect' },\n { kind: 'simple', css: 'touch-action', key: 'touchAction' },\n { kind: 'simple', css: 'scrollbar-width', key: 'scrollbarWidth' },\n { kind: 'simple', css: 'scrollbar-color', key: 'scrollbarColor' },\n { kind: 'simple', css: 'scrollbar-gutter', key: 'scrollbarGutter' },\n { kind: 'simple', css: 'caret-color', key: 'caretColor' },\n { kind: 'simple', css: 'accent-color', key: 'accentColor' },\n { kind: 'simple', css: 'color-scheme', key: 'colorScheme' },\n\n // ─── OTHER ────────────────────────────────────────────────────────\n { kind: 'simple', css: 'caption-side', key: 'captionSide' },\n { kind: 'simple', css: 'clear', key: 'clear' },\n { kind: 'simple', css: 'clip', key: 'clip' },\n { kind: 'simple', css: 'clip-path', key: 'clipPath' },\n { kind: 'simple', css: 'content', key: 'content' },\n { kind: 'simple', css: 'content-visibility', key: 'contentVisibility' },\n { kind: 'simple', css: 'counter-increment', key: 'counterIncrement' },\n { kind: 'simple', css: 'counter-reset', key: 'counterReset' },\n { kind: 'simple', css: 'empty-cells', key: 'emptyCells' },\n { kind: 'simple', css: 'z-index', key: 'zIndex' },\n { kind: 'simple', css: 'overflow', key: 'overflow' },\n { kind: 'simple', css: 'overflow-wrap', key: 'overflowWrap' },\n { kind: 'simple', css: 'overflow-x', key: 'overflowX' },\n { kind: 'simple', css: 'overflow-y', key: 'overflowY' },\n { kind: 'simple', css: 'perspective', key: 'perspective' },\n { kind: 'simple', css: 'perspective-origin', key: 'perspectiveOrigin' },\n { kind: 'simple', css: 'quotes', key: 'quotes' },\n { kind: 'simple', css: 'tab-size', key: 'tabSize' },\n { kind: 'simple', css: 'table-layout', key: 'tableLayout' },\n { kind: 'simple', css: 'visibility', key: 'visibility' },\n { kind: 'simple', css: 'appearance', key: 'appearance' },\n { kind: 'simple', css: 'image-rendering', key: 'imageRendering' },\n\n // Masks\n { kind: 'simple', css: 'mask-image', key: 'maskImage' },\n { kind: 'simple', css: 'mask-size', key: 'maskSize' },\n { kind: 'simple', css: 'mask-position', key: 'maskPosition' },\n { kind: 'simple', css: 'mask-repeat', key: 'maskRepeat' },\n\n // Shapes\n { kind: 'simple', css: 'shape-outside', key: 'shapeOutside' },\n { kind: 'simple', css: 'shape-margin', key: 'shapeMargin' },\n {\n kind: 'simple',\n css: 'shape-image-threshold',\n key: 'shapeImageThreshold',\n },\n\n // Columns\n { kind: 'simple', css: 'column-count', key: 'columnCount' },\n { kind: 'simple', css: 'column-width', key: 'columnWidth' },\n { kind: 'simple', css: 'column-rule', key: 'columnRule' },\n { kind: 'simple', css: 'columns', key: 'columns' },\n\n // Fragmentation\n { kind: 'simple', css: 'break-before', key: 'breakBefore' },\n { kind: 'simple', css: 'break-after', key: 'breakAfter' },\n { kind: 'simple', css: 'break-inside', key: 'breakInside' },\n { kind: 'simple', css: 'orphans', key: 'orphans' },\n { kind: 'simple', css: 'widows', key: 'widows' },\n { kind: 'simple', css: 'print-color-adjust', key: 'printColorAdjust' },\n\n // ─── CUSTOM ATTRIBUTES ────────────────────────────────────────────\n { kind: 'special', id: 'hideEmpty' },\n { kind: 'special', id: 'clearFix' },\n { kind: 'special', id: 'extendCss' },\n]\n\nexport default propertyMap\n","import { borderRadius, edge } from '~/styles/shorthands'\nimport type { Css } from '~/types'\nimport { values } from '~/units'\nimport processDescriptor from './processDescriptor'\nimport propertyMap from './propertyMap'\nimport type { InnerTheme, Theme } from './types'\n\nexport type { Theme as StylesTheme }\n\nexport type Styles = ({\n theme,\n css,\n rootSize,\n}: {\n theme: InnerTheme\n css: Css\n rootSize?: number\n}) => ReturnType<typeof css>\n\n/**\n * Data-driven style processor. Iterates the `propertyMap` descriptors\n * and delegates each to `processDescriptor`, which maps theme values\n * to CSS strings. The result is a single `css` tagged-template literal\n * containing all non-null property outputs.\n */\nconst styles: Styles = ({ theme: t, css, rootSize }) => {\n const calc = (...params: any[]) => values(params, rootSize)\n const shorthand = edge(rootSize)\n const borderRadiusFn = borderRadius(rootSize)\n\n const fragments = propertyMap.map((d) =>\n processDescriptor(d, t, css, calc, shorthand, borderRadiusFn),\n )\n\n return css`\n ${fragments}\n `\n}\n\nexport default styles\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["CoreProvider","isValidValue","hasAnyValue","formatShorthand","formatIndividual"],"sources":["../src/responsive/breakpoints.ts","../src/responsive/createMediaQueries.ts","../src/responsive/normalizeTheme.ts","../src/responsive/optimizeTheme.ts","../src/responsive/transformTheme.ts","../src/responsive/makeItResponsive.ts","../src/responsive/sortBreakpoints.ts","../src/context.tsx","../src/styles/alignContent.ts","../src/styles/extendCss.ts","../src/units/stripUnit.ts","../src/units/value.ts","../src/units/values.ts","../src/styles/shorthands/borderRadius.ts","../src/styles/shorthands/edge.ts","../src/styles/styles/processDescriptor.ts","../src/styles/styles/propertyMap.ts","../src/styles/styles/index.ts"],"sourcesContent":["const breakpoints = {\n rootSize: 16,\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1440,\n },\n} as const\n\nexport type Breakpoints = typeof breakpoints\n\nexport default breakpoints\n","export type CreateMediaQueries = <\n B extends Record<string, number>,\n R extends number,\n C extends (...args: any) => any,\n>(props: {\n breakpoints: B\n rootSize: R\n css: C\n}) => Record<keyof B, ReturnType<C>>\n\n/**\n * Builds a map of breakpoint-name → tagged-template function.\n * The smallest breakpoint (value 0) gets no media wrapper.\n * Others are wrapped in `@media (min-width: <em>)` — em units\n * ensure correct behaviour when users change browser font size.\n */\nconst createMediaQueries: CreateMediaQueries = ({\n breakpoints,\n rootSize,\n css,\n}) =>\n Object.keys(breakpoints).reduce<Record<string, any>>((acc, key) => {\n // use em in breakpoints to work properly cross-browser and support users\n // changing their browsers font-size: https://zellwk.com/blog/media-query-units/\n const breakpointValue = (breakpoints as Record<string, number>)[key]\n\n if (breakpointValue === 0) {\n acc[key] = (...args: any[]) => css(...args)\n } else if (breakpointValue != null) {\n const emSize = breakpointValue / rootSize\n\n acc[key] = (...args: any[]) => css`\n @media only screen and (min-width: ${emSize}em) {\n ${css(...args)};\n }\n `\n }\n\n return acc\n }, {}) as any\n\nexport default createMediaQueries\n","type AssignToBreakpointKey = (\n breakpoints: string[],\n) => (\n value: (\n breakpoint: string,\n i: number,\n breakpoints: string[],\n result: Record<string, unknown>,\n ) => void,\n) => Record<string, unknown>\n\n/** Iterates breakpoints and populates a result object using a callback per breakpoint. */\nconst assignToBreakpointKey: AssignToBreakpointKey =\n (breakpoints) => (value) => {\n const result: Record<string, unknown> = {}\n\n breakpoints.forEach((item, i) => {\n result[item] = value(item, i, breakpoints, result)\n })\n\n return result\n }\n\nconst handleArrayCb = (arr: (string | number)[]) => (_: any, i: number) => {\n const currentValue = arr[i]\n const lastValue = arr[arr.length - 1]\n\n return currentValue ?? lastValue\n}\n\n// type HandleObjectCb = (\n// obj: Record<string, unknown>\n// ) => (\n// bp: string,\n// i: number,\n// breakpoint: Array<string>,\n// result: Record<string, unknown>\n// ) => Record<string, unknown>\n\nconst handleObjectCb =\n (obj: Record<string, unknown>) =>\n (bp: string, i: number, bps: string[], res: Record<string, unknown>) => {\n const currentValue = obj[bp]\n const previousValue = res[bps[i - 1]!]\n\n // check for non-nullable values\n if (currentValue != null) return currentValue\n return previousValue\n }\n\nconst handleValueCb = (value: unknown) => () => value\n\nconst shouldNormalize = (props: Record<string, any>) =>\n Object.values(props).some(\n (item) => typeof item === 'object' || Array.isArray(item),\n )\n\nexport type NormalizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => Record<string, unknown>\n\n/**\n * Expands each theme property into a full breakpoint map so every\n * breakpoint has a value. Arrays fill by index (last value carries forward),\n * objects inherit from the previous breakpoint, scalars repeat for all.\n * Skipped entirely when no property is array/object (fast path).\n */\nconst normalizeTheme: NormalizeTheme = ({ theme, breakpoints }) => {\n if (!shouldNormalize(theme)) return theme\n\n const getBpValues = assignToBreakpointKey(breakpoints)\n const result: Record<string, unknown> = {}\n\n Object.entries(theme).forEach(([key, value]) => {\n if (value == null) return\n\n // if it's an array\n if (Array.isArray(value)) {\n result[key] = getBpValues(handleArrayCb(value as any))\n }\n // if it's an object\n else if (typeof value === 'object') {\n result[key] = getBpValues(handleObjectCb(value as Record<string, any>))\n }\n // if any other value\n else {\n result[key] = getBpValues(handleValueCb(value))\n }\n })\n\n return result\n}\n\nexport default normalizeTheme\n","export type OptimizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, Record<string, unknown>>\n breakpoints: string[]\n}) => Record<string, Record<string, unknown>>\n\nconst shallowEqual = (\n a: Record<string, unknown> | undefined,\n b: Record<string, unknown> | undefined,\n): boolean => {\n if (a === b) return true\n if (!a || !b) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (const key of keysA) {\n if (a[key] !== b[key]) return false\n }\n\n return true\n}\n\n/**\n * Removes breakpoints whose styles are identical to the previous one.\n * This avoids generating duplicate `@media` blocks.\n * The smallest breakpoint is always kept.\n */\nconst optimizeTheme: OptimizeTheme = ({ theme, breakpoints }) => {\n const result: Record<string, Record<string, unknown>> = {}\n\n for (let i = 0; i < breakpoints.length; i++) {\n const key = breakpoints[i] as string\n const previousBreakpoint = breakpoints[i - 1] as string\n\n const current = theme[key]\n if (\n current &&\n (i === 0 || !shallowEqual(theme[previousBreakpoint], current))\n ) {\n result[key] = current\n }\n }\n\n return result\n}\n\nexport default optimizeTheme\n","import { isEmpty, set } from '@vitus-labs/core'\n\n/** Filter out breakpoint keys that don't exist in the sorted breakpoints list. */\nconst removeUnexpectedKeys = (obj: Record<string, unknown>, keys: string[]) => {\n const result: Record<string, unknown> = {}\n\n keys.forEach((bp) => {\n const value = obj[bp]\n\n if (value) {\n result[bp] = value\n }\n })\n\n return result\n}\n\nexport type TransformTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => any\n\n/**\n * Pivots the theme from property-centric to breakpoint-centric layout.\n * Input: `{ fontSize: { xs: 12, md: 15 }, color: 'red' }`\n * Output: `{ xs: { fontSize: 12, color: 'red' }, md: { fontSize: 15 } }`\n * Supports three input shapes per property: scalar, array (positional), or object (keyed).\n */\nconst transformTheme: TransformTheme = ({ theme, breakpoints }) => {\n const result = {}\n\n if (isEmpty(theme) || isEmpty(breakpoints)) return result\n\n // can be one of following types\n // { fontSize: 12 }\n // { fontSize: { xs: 12, md: 15 }}\n // { fontSize: [12, 15] }\n Object.entries(theme).forEach(([key, value]) => {\n // array\n if (Array.isArray(value) && value.length > 0) {\n value.forEach((child, i) => {\n const indexBreakpoint = breakpoints[i]!\n set(result, [indexBreakpoint, key], child)\n })\n }\n // object\n else if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([childKey, childValue]) => {\n set(result, [childKey, key], childValue)\n })\n }\n // normal value\n else if (value != null) {\n const firstBreakpoint = breakpoints[0]!\n set(result, [firstBreakpoint, key], value)\n }\n })\n\n return removeUnexpectedKeys(result, breakpoints)\n}\n\nexport default transformTheme\n","import { isEmpty } from '@vitus-labs/core'\nimport type { Css } from '~/types'\nimport type createMediaQueries from './createMediaQueries'\nimport normalizeTheme from './normalizeTheme'\nimport optimizeTheme from './optimizeTheme'\nimport type sortBreakpoints from './sortBreakpoints'\nimport transformTheme from './transformTheme'\n\ntype CustomTheme = Record<\n string,\n Record<string, unknown> | number | string | boolean\n>\ntype Theme = Partial<{\n rootSize: number\n breakpoints: Record<string, number>\n __VITUS_LABS__: Partial<{\n media: ReturnType<typeof createMediaQueries>\n sortedBreakpoints: ReturnType<typeof sortBreakpoints>\n }>\n}> &\n CustomTheme\n\nexport type MakeItResponsiveStyles<\n T extends Partial<Record<string, any>> = any,\n> = ({\n theme,\n css,\n rootSize,\n globalTheme,\n}: {\n theme: T\n css: Css\n rootSize?: number\n globalTheme?: Record<string, any>\n}) => ReturnType<typeof css> | string | any\n\nexport type MakeItResponsive = ({\n theme,\n key,\n css,\n styles,\n normalize,\n}: {\n theme?: CustomTheme\n key?: string\n css: any\n styles: MakeItResponsiveStyles\n normalize?: boolean\n}) => (props: { theme?: Theme; [key: string]: any }) => any\n\n/**\n * Core responsive engine used by every styled component in the system.\n *\n * Returns a styled-components interpolation function that:\n * 1. Reads the component's theme prop (via `key` or direct `theme`)\n * 2. Without breakpoints → renders plain CSS\n * 3. With breakpoints → normalizes, transforms (property-per-breakpoint →\n * breakpoint-per-property), optimizes (deduplicates identical breakpoints),\n * and wraps each breakpoint's styles in the appropriate `@media` query.\n */\nconst makeItResponsive: MakeItResponsive =\n ({ theme: customTheme, key = '', css, styles, normalize = false }) =>\n ({ theme = {}, ...props }) => {\n const internalTheme = customTheme || props[key]\n\n // if no theme is defined, return empty objct\n if (isEmpty(internalTheme)) return ''\n\n const { rootSize, breakpoints, __VITUS_LABS__, ...restTheme } =\n theme as Theme\n\n const renderStyles = (\n theme: Record<string, unknown>,\n ): ReturnType<typeof styles> =>\n styles({ theme, css, rootSize, globalTheme: restTheme })\n\n // if there are no breakpoints, return just standard css\n if (isEmpty(breakpoints) || isEmpty(__VITUS_LABS__)) {\n return css`\n ${renderStyles(internalTheme)}\n `\n }\n\n const { media, sortedBreakpoints } = __VITUS_LABS__!\n\n let helperTheme = internalTheme\n\n if (normalize) {\n helperTheme = normalizeTheme({\n theme: internalTheme,\n breakpoints: sortedBreakpoints,\n })\n }\n\n const transformedTheme = transformTheme({\n theme: helperTheme,\n breakpoints: sortedBreakpoints,\n })\n\n const optimizedTheme = optimizeTheme({\n theme: transformedTheme,\n breakpoints: sortedBreakpoints,\n })\n\n return sortedBreakpoints.map((item: string) => {\n const breakpointTheme = optimizedTheme[item]\n\n if (!breakpointTheme || !media) return ''\n\n const result = renderStyles(breakpointTheme)\n\n return (media as Record<string, any>)[item]`\n ${result};\n `\n })\n }\n\nexport default makeItResponsive\n","export type SortBreakpoints = <T extends Record<string, number>>(\n breakpoints: T,\n) => (keyof T)[]\n\n/** Sorts breakpoint keys by their pixel value (ascending, mobile-first). */\nconst sortBreakpoints: SortBreakpoints = (breakpoints) => {\n const result = Object.keys(breakpoints).sort(\n (a, b) => breakpoints[a]! - breakpoints[b]!,\n )\n\n return result\n}\n\nexport default sortBreakpoints\n","import {\n Provider as CoreProvider,\n config,\n context,\n isEmpty,\n} from '@vitus-labs/core'\nimport type { FC, ReactNode } from 'react'\nimport { useMemo } from 'react'\nimport { createMediaQueries, sortBreakpoints } from '~/responsive'\n\n// type VitusLabsContext = {\n// sortedBreakpoints?: ReturnType<typeof sortBreakpoints>\n// media?: ReturnType<typeof createMediaQueries>\n// }\n\ntype Theme = {\n rootSize: number\n breakpoints?: Record<string, number>\n __VITUS_LABS__?: never\n} & Partial<Record<string, unknown>>\n\nexport type TProvider = {\n theme: Theme\n children: ReactNode\n} & Partial<Record<string, unknown>>\n\n/**\n * Unistyle Provider — wraps the core Provider and enriches the theme\n * with pre-computed sorted breakpoints and media-query tagged-template\n * helpers consumed by `makeItResponsive`.\n */\nconst Provider: FC<TProvider> = ({ theme, children, ...props }) => {\n const { breakpoints, rootSize } = theme\n\n const sortedBreakpoints = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return sortBreakpoints(breakpoints)\n }\n\n return undefined\n }, [breakpoints])\n\n const media = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return createMediaQueries({\n breakpoints,\n css: config.css,\n rootSize,\n })\n }\n\n return undefined\n }, [breakpoints, rootSize])\n\n const result = {\n ...theme,\n __VITUS_LABS__: {\n sortedBreakpoints,\n media,\n },\n }\n\n return (\n <CoreProvider theme={result} {...props}>\n {children}\n </CoreProvider>\n )\n}\n\nexport { context }\n\nexport default Provider\n","import { config, isEmpty } from '@vitus-labs/core'\n\nexport type AlignContentDirectionKeys = keyof typeof ALIGN_CONTENT_DIRECTION\nexport type AlignContentAlignXKeys = keyof typeof ALIGN_CONTENT_MAP_X\nexport type AlignContentAlignYKeys = keyof typeof ALIGN_CONTENT_MAP_Y\n\nconst ALIGN_CONTENT_MAP_SHARED = {\n center: 'center',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n block: 'stretch',\n}\n\nexport const ALIGN_CONTENT_MAP_X = {\n left: 'flex-start',\n right: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_MAP_Y = {\n top: 'flex-start',\n bottom: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_DIRECTION = __WEB__\n ? {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n : {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n\nexport type AlignContent = ({\n direction,\n alignX,\n alignY,\n}: {\n direction: AlignContentDirectionKeys\n alignX: AlignContentAlignXKeys\n alignY: AlignContentAlignYKeys\n}) => ReturnType<typeof config.css> | null\n\n/**\n * Converts semantic direction/alignX/alignY values into `flex-direction`,\n * `align-items`, and `justify-content`. For inline directions (row) the\n * X/Y axes are swapped so that `alignX` always controls the horizontal axis.\n */\nconst alignContent: AlignContent = (attrs) => {\n const { direction, alignX, alignY } = attrs\n\n if (isEmpty(attrs) || !direction || !alignX || !alignY) {\n return null\n }\n\n const isReverted = ['inline', 'reverseInline'].includes(direction)\n const dir = ALIGN_CONTENT_DIRECTION[direction]\n const x = ALIGN_CONTENT_MAP_X[alignX]\n const y = ALIGN_CONTENT_MAP_Y[alignY]\n\n return config.css`\n flex-direction: ${dir};\n align-items: ${isReverted ? y : x};\n justify-content: ${isReverted ? x : y};\n `\n}\n\nexport default alignContent\n","import { config } from '@vitus-labs/core'\n\nexport type ExtendCss = (\n styles:\n | ((css: typeof config.css) => ReturnType<typeof css>)\n | string\n | null\n | undefined,\n) => string | ReturnType<typeof config.css>\n\n/**\n * Evaluates an `extendCss` value — either a callback receiving `css`\n * or a raw CSS string. Returns empty string for null/undefined.\n */\nconst extendCss: ExtendCss = (styles) => {\n if (!styles) return ''\n if (typeof styles === 'function') {\n return styles(config.css)\n }\n\n return styles\n}\n\nexport default extendCss\n","type Value<V> = V extends string ? number : V\ntype Unit<V> = V extends string ? string : undefined\n\nexport type StripUnit = <V extends string | number, UR extends boolean = false>(\n value: V,\n unitReturn?: UR,\n) => UR extends true ? [Value<V>, Unit<V>] : Value<V>\n\n/**\n * Strips the CSS unit suffix from a value.\n * With `unitReturn=true`, returns a `[number, unit]` tuple.\n * Otherwise returns just the numeric part.\n * Non-string inputs are passed through unchanged.\n */\nconst stripUnit: StripUnit = (value, unitReturn) => {\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/\n\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value\n\n const matchedValue = value.match(cssRegex)\n\n if (unitReturn) {\n if (matchedValue) return [parseFloat(value), matchedValue[2]]\n return [value, undefined]\n }\n\n if (matchedValue) return parseFloat(value)\n return value as any\n}\n\nexport default stripUnit\n","import stripUnit from './stripUnit'\n\ntype CssUnits =\n | 'px'\n | 'rem'\n | '%'\n | 'em'\n | 'ex'\n | 'cm'\n | 'mm'\n | 'in'\n | 'pt'\n | 'pc'\n | 'ch'\n | 'vh'\n | 'vw'\n | 'vmin'\n | 'vmax'\n\n/** Returns true for null/undefined/NaN but not for 0. */\nconst isNotValue = (value: unknown) => !value && value !== 0\n\nexport type Value = (\n param: string | number | null | undefined,\n rootSize?: number,\n outputUnit?: CssUnits,\n) => string | number | null\n\n/**\n * Converts a raw numeric value to a CSS string with appropriate units.\n * - Numbers without a unit are divided by `rootSize` and output as rem (web) or px (native).\n * - Values that already carry a unit are returned as-is, unless converting px→rem.\n * - Zero is always returned unitless.\n */\nconst value: Value = (\n param,\n rootSize = 16,\n outputUnit = __WEB__ ? 'rem' : 'px',\n) => {\n if (isNotValue(param)) return null as any\n\n const [val, unit] = stripUnit(param as string, true)\n if (isNotValue(val)) return null\n if (val === 0 || typeof val === 'string') return param // zero should be unitless\n\n const canConvert = rootSize && !Number.isNaN(val)\n if (canConvert && !unit && outputUnit === 'px') return `${val}${outputUnit}`\n if (canConvert && !unit) return `${val / rootSize}rem`\n if (canConvert && unit === 'px' && outputUnit === 'rem')\n return `${val / rootSize}rem`\n if (unit) return param\n\n return `${val}${outputUnit}`\n}\n\nexport default value\n","import type { Units } from '~/types'\nimport value from './value'\n\n/** Returns the first non-null/undefined value from the arguments. */\ntype GetValueOf = (...values: unknown[]) => number | string\nconst getValueOf: GetValueOf = (...values: any[]) =>\n values.find((value) => typeof value !== 'undefined' && value !== null)\n\nexport type Values = (\n values: unknown[],\n rootSize?: number,\n outputUnit?: Units,\n) => string | number | null\n\n/**\n * Picks the first non-null value from the array, converts it via `value()`,\n * and returns the result. If the picked value is itself an array, each item\n * is converted and joined with spaces (e.g. for shorthand properties).\n */\nconst values: Values = (values, rootSize, outputUnit) => {\n const param = getValueOf(...values)\n\n if (Array.isArray(param)) {\n return param.map((item) => value(item, rootSize, outputUnit)).join(' ')\n }\n\n return value(param, rootSize, outputUnit)\n}\n\nexport default values\n","import type { PropertyValue } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype PV = PropertyValue | null | undefined\n\ntype CornerValues = {\n full: PV\n top: PV\n bottom: PV\n left: PV\n right: PV\n topLeft: PV\n topRight: PV\n bottomLeft: PV\n bottomRight: PV\n}\n\nconst hasAnyValue = (v: CornerValues) =>\n isValidValue(v.full) ||\n isValidValue(v.top) ||\n isValidValue(v.bottom) ||\n isValidValue(v.left) ||\n isValidValue(v.right) ||\n isValidValue(v.topLeft) ||\n isValidValue(v.topRight) ||\n isValidValue(v.bottomLeft) ||\n isValidValue(v.bottomRight)\n\n// topLeft - topRight - bottomRight - bottomLeft\nconst resolveCorners = (v: CornerValues) => {\n const corners: PV[] = [v.full, v.full, v.full, v.full]\n\n if (isValidValue(v.top)) {\n corners[0] = v.top\n corners[1] = v.top\n }\n if (isValidValue(v.bottom)) {\n corners[2] = v.bottom\n corners[3] = v.bottom\n }\n if (isValidValue(v.left)) {\n corners[0] = v.left\n corners[3] = v.left\n }\n if (isValidValue(v.right)) {\n corners[1] = v.right\n corners[2] = v.right\n }\n\n if (isValidValue(v.topLeft)) corners[0] = v.topLeft\n if (isValidValue(v.topRight)) corners[1] = v.topRight\n if (isValidValue(v.bottomRight)) corners[2] = v.bottomRight\n if (isValidValue(v.bottomLeft)) corners[3] = v.bottomLeft\n\n return corners\n}\n\nconst formatShorthand = (corners: PV[], calc: (p: PV) => any) => {\n const [tl, tr, br, bl] = corners\n\n if (corners.every((val, _, arr) => val === arr[0]))\n return `border-radius: ${calc(tl)};`\n\n if (tl === br && tr === bl) return `border-radius: ${calc(tl)} ${calc(tr)};`\n\n if (tl && tr === bl && br)\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)};`\n\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)} ${calc(bl)};`\n}\n\nconst CORNER_CSS = [\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius',\n] as const\n\nconst formatIndividual = (corners: PV[], calc: (p: PV) => any) => {\n let output = ''\n for (let i = 0; i < corners.length; i++) {\n if (isValidValue(corners[i]))\n output += `${CORNER_CSS[i]}: ${calc(corners[i])};`\n }\n return output\n}\n\nexport type BorderRadius = (\n rootSize?: number,\n) => (props: CornerValues) => string | null\n\n/**\n * Border radius shorthand processor. Accepts full/top/bottom/left/right\n * and individual corner values. Produces the most compact CSS output —\n * single-value, two-value, three-value, or four-value shorthand\n * when all corners are specified, or individual corner properties otherwise.\n */\nconst borderRadius: BorderRadius = (rootSize) => (props) => {\n if (!hasAnyValue(props)) return null\n\n const calc = (param: PV) => value(param as any, rootSize)\n const corners = resolveCorners(props)\n\n if (corners.every((val) => isValidValue(val)))\n return formatShorthand(corners, calc)\n\n return formatIndividual(corners, calc)\n}\n\nexport default borderRadius\n","import type { Units } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype Property =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\ntype Value = string | number | null | undefined\ntype Side = 'top' | 'bottom' | 'left' | 'right'\n\ntype EdgeValues = {\n full: Value\n x: Value\n y: Value\n top: Value\n left: Value\n right: Value\n bottom: Value\n}\n\ntype Definitions = Record<\n Property,\n { unit?: Units; edgeCss: (side: Side) => string }\n>\n\nconst definitions: Definitions = {\n inset: {\n unit: 'rem',\n edgeCss: (side) => side,\n },\n margin: {\n unit: 'rem',\n edgeCss: (side) => `margin-${side}`,\n },\n padding: {\n unit: 'rem',\n edgeCss: (side) => `padding-${side}`,\n },\n 'border-width': {\n unit: 'px',\n edgeCss: (side) => `border-${side}-width`,\n },\n 'border-style': {\n edgeCss: (side) => `border-${side}-style`,\n },\n 'border-color': {\n edgeCss: (side) => `border-${side}-color`,\n },\n}\n\nconst hasAnyValue = (vals: EdgeValues) =>\n isValidValue(vals.top) ||\n isValidValue(vals.bottom) ||\n isValidValue(vals.left) ||\n isValidValue(vals.right) ||\n isValidValue(vals.x) ||\n isValidValue(vals.y) ||\n isValidValue(vals.full)\n\n// top - right - bottom - left\nconst resolveSides = ({ full, x, y, top, left, right, bottom }: EdgeValues) => {\n const sides: Value[] = [full, full, full, full]\n\n if (isValidValue(x)) {\n sides[1] = x\n sides[3] = x\n }\n\n if (isValidValue(y)) {\n sides[0] = y\n sides[2] = y\n }\n\n if (isValidValue(top)) sides[0] = top\n if (isValidValue(right)) sides[1] = right\n if (isValidValue(bottom)) sides[2] = bottom\n if (isValidValue(left)) sides[3] = left\n\n return sides\n}\n\nconst formatShorthand = (\n property: Property,\n sides: Value[],\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n\n if (sides.every((val, _, arr) => val === arr[0]))\n return `${property}: ${calc(t)};`\n\n if (t === b && r === l) return `${property}: ${calc(t)} ${calc(r)};`\n\n if (t && r === l && b) return `${property}: ${calc(t)} ${calc(r)} ${calc(b)};`\n\n return `${property}: ${calc(t)} ${calc(r)} ${calc(b)} ${calc(l)};`\n}\n\nconst formatIndividual = (\n sides: Value[],\n edgeCss: (side: Side) => string,\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n let output = ''\n\n if (isValidValue(t)) output += `${edgeCss('top')}: ${calc(t)};`\n if (isValidValue(b)) output += `${edgeCss('bottom')}: ${calc(b)};`\n if (isValidValue(l)) output += `${edgeCss('left')}: ${calc(l)};`\n if (isValidValue(r)) output += `${edgeCss('right')}: ${calc(r)};`\n\n return output\n}\n\nexport type Edge = (\n rootSize?: number,\n) => (property: Property, values: EdgeValues) => string | null\n\n/**\n * Edge shorthand processor for margin, padding, inset, border-width/style/color.\n * Accepts full/x/y/top/right/bottom/left values and produces the most compact\n * CSS output — using shorthand syntax when all four sides are specified,\n * or individual side properties when only some are set.\n */\nconst edge: Edge =\n (rootSize = 16) =>\n (property, values) => {\n if (!hasAnyValue(values)) return null\n\n const { unit, edgeCss } = definitions[property]\n const calc = (param: Value) =>\n unit ? value(param as any, rootSize, unit) : param\n\n const sides = resolveSides(values)\n\n if (sides.every((val) => isValidValue(val)))\n return formatShorthand(property, sides, calc)\n\n return formatIndividual(sides, edgeCss, calc)\n }\n\nexport default edge\n","import type { BorderRadius } from '~/styles/shorthands/borderRadius'\nimport type { Edge } from '~/styles/shorthands/edge'\nimport type { Css } from '~/types'\nimport type { Values } from '~/units/values'\nimport type { PropertyDescriptor } from './propertyMap'\nimport type { InnerTheme } from './types'\n\ntype Calc = (...params: any[]) => ReturnType<Values>\n\nconst toCssDecl = (css: string, v: unknown) =>\n v == null ? '' : `${css}: ${v};`\n\n/**\n * Converts a single property descriptor + theme values into a CSS fragment.\n *\n * - `simple` — pass-through (no unit conversion)\n * - `convert` — number→rem via `calc()`\n * - `convert_fallback` — picks first non-null from multiple theme keys, then converts\n * - `edge` — delegates to the edge shorthand (margin, padding, inset, border-*)\n * - `border_radius` — delegates to the border-radius shorthand\n * - `special` — one-off logic (fullScreen, backgroundImage url wrapping, animation combo, etc.)\n */\nconst processSpecial = (\n d: Extract<PropertyDescriptor, { kind: 'special' }>,\n t: InnerTheme,\n css: Css,\n): string | ReturnType<typeof css> => {\n switch (d.id) {\n case 'fullScreen':\n if (!t.fullScreen) return ''\n return css`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n `\n\n case 'backgroundImage':\n if (!t.backgroundImage) return ''\n return css`\n background-image: url(${t.backgroundImage});\n `\n\n case 'animation': {\n const parts = [t.keyframe, t.animation].filter(Boolean).join(' ')\n return parts ? `animation: ${parts};` : ''\n }\n\n case 'hideEmpty':\n if (!(__WEB__ && t.hideEmpty)) return ''\n return css`\n &:empty {\n display: none;\n }\n `\n\n case 'clearFix':\n if (!(__WEB__ && t.clearFix)) return ''\n return css`\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n `\n\n case 'extendCss':\n return t.extendCss ?? ''\n\n default:\n return ''\n }\n}\n\nconst processDescriptor = (\n d: PropertyDescriptor,\n t: InnerTheme,\n css: Css,\n calc: Calc,\n shorthand: ReturnType<Edge>,\n borderRadiusFn: ReturnType<BorderRadius>,\n): string | ReturnType<typeof css> => {\n switch (d.kind) {\n case 'simple':\n return toCssDecl(d.css, t[d.key])\n\n case 'convert':\n return toCssDecl(d.css, calc(t[d.key]))\n\n case 'convert_fallback':\n return toCssDecl(d.css, calc(...d.keys.map((k) => t[k])))\n\n case 'edge':\n return (\n shorthand(d.property, {\n full: t[d.keys.full],\n x: t[d.keys.x],\n y: t[d.keys.y],\n top: t[d.keys.top],\n left: t[d.keys.left],\n bottom: t[d.keys.bottom],\n right: t[d.keys.right],\n }) ?? ''\n )\n\n case 'border_radius':\n return (\n borderRadiusFn({\n full: t[d.keys.full],\n top: t[d.keys.top],\n bottom: t[d.keys.bottom],\n left: t[d.keys.left],\n right: t[d.keys.right],\n topLeft: t[d.keys.topLeft],\n topRight: t[d.keys.topRight],\n bottomLeft: t[d.keys.bottomLeft],\n bottomRight: t[d.keys.bottomRight],\n }) ?? ''\n )\n\n case 'special':\n return processSpecial(d, t, css)\n }\n}\n\nexport default processDescriptor\n","import type { InnerTheme } from './types'\n\n/**\n * Descriptor types for the data-driven CSS property map.\n *\n * - `simple` — CSS pass-through (no unit conversion).\n * - `convert` — Number values are converted via `values()` (px→rem).\n * - `convert_fallback` — Picks first non-null from multiple theme keys, then converts.\n * - `edge` — Spacing shorthand (margin, padding, inset, border-*) via `edge()`.\n * - `border_radius` — Border radius shorthand via `borderRadius()`.\n * - `special` — One-off logic (fullScreen, backgroundImage, animation, etc.).\n */\ntype EdgeProperty =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\n\ntype EdgeKeys = {\n full: keyof InnerTheme\n x: keyof InnerTheme\n y: keyof InnerTheme\n top: keyof InnerTheme\n left: keyof InnerTheme\n bottom: keyof InnerTheme\n right: keyof InnerTheme\n}\n\ntype BorderRadiusKeys = {\n full: keyof InnerTheme\n top: keyof InnerTheme\n bottom: keyof InnerTheme\n left: keyof InnerTheme\n right: keyof InnerTheme\n topLeft: keyof InnerTheme\n topRight: keyof InnerTheme\n bottomLeft: keyof InnerTheme\n bottomRight: keyof InnerTheme\n}\n\nexport type PropertyDescriptor =\n | { kind: 'simple'; css: string; key: keyof InnerTheme }\n | { kind: 'convert'; css: string; key: keyof InnerTheme }\n | { kind: 'convert_fallback'; css: string; keys: (keyof InnerTheme)[] }\n | {\n kind: 'edge'\n property: EdgeProperty\n keys: EdgeKeys\n }\n | { kind: 'border_radius'; keys: BorderRadiusKeys }\n | { kind: 'special'; id: string }\n\nconst propertyMap: PropertyDescriptor[] = [\n // ─── SPECIAL: fullScreen ──────────────────────────────────────────\n { kind: 'special', id: 'fullScreen' },\n\n // ─── POSITION ─────────────────────────────────────────────────────\n { kind: 'simple', css: 'all', key: 'all' },\n { kind: 'simple', css: 'display', key: 'display' },\n { kind: 'simple', css: 'position', key: 'position' },\n { kind: 'simple', css: 'box-sizing', key: 'boxSizing' },\n { kind: 'simple', css: 'float', key: 'float' },\n\n // ─── INSET (edge shorthand) ───────────────────────────────────────\n {\n kind: 'edge',\n property: 'inset',\n keys: {\n full: 'inset',\n x: 'insetX',\n y: 'insetY',\n top: 'top',\n left: 'left',\n bottom: 'bottom',\n right: 'right',\n },\n },\n\n // ─── SIZING ───────────────────────────────────────────────────────\n { kind: 'convert_fallback', css: 'width', keys: ['width', 'size'] },\n { kind: 'convert_fallback', css: 'min-width', keys: ['minWidth', 'minSize'] },\n { kind: 'convert_fallback', css: 'max-width', keys: ['maxWidth', 'maxSize'] },\n { kind: 'convert_fallback', css: 'height', keys: ['height', 'size'] },\n {\n kind: 'convert_fallback',\n css: 'min-height',\n keys: ['minHeight', 'minSize'],\n },\n {\n kind: 'convert_fallback',\n css: 'max-height',\n keys: ['maxHeight', 'maxSize'],\n },\n { kind: 'convert', css: 'gap', key: 'gap' },\n { kind: 'simple', css: 'aspect-ratio', key: 'aspectRatio' },\n { kind: 'simple', css: 'contain', key: 'contain' },\n { kind: 'simple', css: 'container-type', key: 'containerType' },\n { kind: 'simple', css: 'container-name', key: 'containerName' },\n { kind: 'simple', css: 'container', key: 'container' },\n { kind: 'convert', css: 'inline-size', key: 'inlineSize' },\n { kind: 'convert', css: 'block-size', key: 'blockSize' },\n { kind: 'convert', css: 'min-inline-size', key: 'minInlineSize' },\n { kind: 'convert', css: 'min-block-size', key: 'minBlockSize' },\n { kind: 'convert', css: 'max-inline-size', key: 'maxInlineSize' },\n { kind: 'convert', css: 'max-block-size', key: 'maxBlockSize' },\n\n // ─── SPACING (edge shorthands) ────────────────────────────────────\n {\n kind: 'edge',\n property: 'margin',\n keys: {\n full: 'margin',\n x: 'marginX',\n y: 'marginY',\n top: 'marginTop',\n left: 'marginLeft',\n bottom: 'marginBottom',\n right: 'marginRight',\n },\n },\n {\n kind: 'edge',\n property: 'padding',\n keys: {\n full: 'padding',\n x: 'paddingX',\n y: 'paddingY',\n top: 'paddingTop',\n left: 'paddingLeft',\n bottom: 'paddingBottom',\n right: 'paddingRight',\n },\n },\n\n // Logical spacing\n { kind: 'convert', css: 'margin-inline', key: 'marginInline' },\n { kind: 'convert', css: 'margin-inline-start', key: 'marginInlineStart' },\n { kind: 'convert', css: 'margin-inline-end', key: 'marginInlineEnd' },\n { kind: 'convert', css: 'margin-block', key: 'marginBlock' },\n { kind: 'convert', css: 'margin-block-start', key: 'marginBlockStart' },\n { kind: 'convert', css: 'margin-block-end', key: 'marginBlockEnd' },\n { kind: 'convert', css: 'padding-inline', key: 'paddingInline' },\n { kind: 'convert', css: 'padding-inline-start', key: 'paddingInlineStart' },\n { kind: 'convert', css: 'padding-inline-end', key: 'paddingInlineEnd' },\n { kind: 'convert', css: 'padding-block', key: 'paddingBlock' },\n { kind: 'convert', css: 'padding-block-start', key: 'paddingBlockStart' },\n { kind: 'convert', css: 'padding-block-end', key: 'paddingBlockEnd' },\n\n // Logical inset\n { kind: 'convert', css: 'inset-inline', key: 'insetInline' },\n { kind: 'convert', css: 'inset-inline-start', key: 'insetInlineStart' },\n { kind: 'convert', css: 'inset-inline-end', key: 'insetInlineEnd' },\n { kind: 'convert', css: 'inset-block', key: 'insetBlock' },\n { kind: 'convert', css: 'inset-block-start', key: 'insetBlockStart' },\n { kind: 'convert', css: 'inset-block-end', key: 'insetBlockEnd' },\n\n // ─── FLEX ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'align-content', key: 'alignContent' },\n { kind: 'simple', css: 'align-items', key: 'alignItems' },\n { kind: 'simple', css: 'align-self', key: 'alignSelf' },\n { kind: 'simple', css: 'flex', key: 'flex' },\n { kind: 'simple', css: 'flex-basis', key: 'flexBasis' },\n { kind: 'simple', css: 'flex-direction', key: 'flexDirection' },\n { kind: 'simple', css: 'flex-flow', key: 'flexFlow' },\n { kind: 'simple', css: 'flex-grow', key: 'flexGrow' },\n { kind: 'simple', css: 'flex-shrink', key: 'flexShrink' },\n { kind: 'simple', css: 'flex-wrap', key: 'flexWrap' },\n { kind: 'simple', css: 'justify-content', key: 'justifyContent' },\n { kind: 'simple', css: 'justify-items', key: 'justifyItems' },\n { kind: 'simple', css: 'justify-self', key: 'justifySelf' },\n { kind: 'simple', css: 'place-items', key: 'placeItems' },\n { kind: 'simple', css: 'place-content', key: 'placeContent' },\n { kind: 'simple', css: 'place-self', key: 'placeSelf' },\n { kind: 'convert', css: 'row-gap', key: 'rowGap' },\n { kind: 'convert', css: 'column-gap', key: 'columnGap' },\n\n // ─── GRID ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'grid', key: 'grid' },\n { kind: 'simple', css: 'grid-area', key: 'gridArea' },\n { kind: 'convert', css: 'grid-auto-columns', key: 'gridAutoColumns' },\n { kind: 'simple', css: 'grid-auto-flow', key: 'gridAutoFlow' },\n { kind: 'convert', css: 'grid-auto-rows', key: 'gridAutoRows' },\n { kind: 'simple', css: 'grid-column', key: 'gridColumn' },\n { kind: 'simple', css: 'grid-column-end', key: 'gridColumnEnd' },\n { kind: 'convert', css: 'grid-column-gap', key: 'gridColumnGap' },\n { kind: 'convert', css: 'grid-column-start', key: 'gridColumnStart' },\n { kind: 'convert', css: 'grid-gap', key: 'gridGap' },\n { kind: 'simple', css: 'grid-row', key: 'gridRow' },\n { kind: 'simple', css: 'grid-row-start', key: 'gridRowStart' },\n { kind: 'simple', css: 'grid-row-end', key: 'gridRowEnd' },\n { kind: 'convert', css: 'grid-row-gap', key: 'gridRowGap' },\n { kind: 'simple', css: 'grid-template', key: 'gridTemplate' },\n { kind: 'simple', css: 'grid-template-areas', key: 'gridTemplateAreas' },\n { kind: 'simple', css: 'grid-template-columns', key: 'gridTemplateColumns' },\n { kind: 'simple', css: 'grid-template-rows', key: 'gridTemplateRows' },\n\n // ─── POSITIONING ──────────────────────────────────────────────────\n { kind: 'simple', css: 'object-fit', key: 'objectFit' },\n { kind: 'simple', css: 'object-position', key: 'objectPosition' },\n { kind: 'simple', css: 'order', key: 'order' },\n { kind: 'simple', css: 'opacity', key: 'opacity' },\n { kind: 'simple', css: 'resize', key: 'resize' },\n { kind: 'simple', css: 'vertical-align', key: 'verticalAlign' },\n\n // ─── FONT & TEXT ──────────────────────────────────────────────────\n { kind: 'simple', css: 'line-height', key: 'lineHeight' },\n { kind: 'simple', css: 'font', key: 'font' },\n { kind: 'simple', css: 'font-family', key: 'fontFamily' },\n { kind: 'convert', css: 'font-size', key: 'fontSize' },\n { kind: 'convert', css: 'font-size-adjust', key: 'fontSizeAdjust' },\n { kind: 'convert', css: 'font-stretch', key: 'fontStretch' },\n { kind: 'simple', css: 'font-style', key: 'fontStyle' },\n { kind: 'simple', css: 'font-variant', key: 'fontVariant' },\n { kind: 'simple', css: 'font-weight', key: 'fontWeight' },\n { kind: 'simple', css: 'font-kerning', key: 'fontKerning' },\n { kind: 'simple', css: 'font-feature-settings', key: 'fontFeatureSettings' },\n {\n kind: 'simple',\n css: 'font-variation-settings',\n key: 'fontVariationSettings',\n },\n { kind: 'simple', css: 'font-optical-sizing', key: 'fontOpticalSizing' },\n { kind: 'simple', css: 'text-align', key: 'textAlign' },\n { kind: 'simple', css: 'text-align-last', key: 'textAlignLast' },\n { kind: 'simple', css: 'text-transform', key: 'textTransform' },\n { kind: 'simple', css: 'text-decoration', key: 'textDecoration' },\n { kind: 'simple', css: 'text-decoration-color', key: 'textDecorationColor' },\n { kind: 'simple', css: 'text-decoration-line', key: 'textDecorationLine' },\n { kind: 'simple', css: 'text-decoration-style', key: 'textDecorationStyle' },\n {\n kind: 'simple',\n css: 'text-decoration-thickness',\n key: 'textDecorationThickness',\n },\n {\n kind: 'simple',\n css: 'text-underline-offset',\n key: 'textUnderlineOffset',\n },\n { kind: 'simple', css: 'text-emphasis', key: 'textEmphasis' },\n { kind: 'simple', css: 'text-emphasis-color', key: 'textEmphasisColor' },\n { kind: 'simple', css: 'text-emphasis-style', key: 'textEmphasisStyle' },\n { kind: 'simple', css: 'letter-spacing', key: 'letterSpacing' },\n { kind: 'simple', css: 'word-spacing', key: 'wordSpacing' },\n { kind: 'simple', css: 'text-indent', key: 'textIndent' },\n { kind: 'simple', css: 'text-justify', key: 'textJustify' },\n { kind: 'simple', css: 'text-overflow', key: 'textOverflow' },\n { kind: 'simple', css: 'text-shadow', key: 'textShadow' },\n { kind: 'simple', css: 'text-wrap', key: 'textWrap' },\n { kind: 'simple', css: 'text-rendering', key: 'textRendering' },\n { kind: 'simple', css: 'white-space', key: 'whiteSpace' },\n { kind: 'simple', css: 'word-break', key: 'wordBreak' },\n { kind: 'simple', css: 'word-wrap', key: 'wordWrap' },\n { kind: 'simple', css: 'writing-mode', key: 'writingMode' },\n { kind: 'simple', css: 'direction', key: 'direction' },\n { kind: 'simple', css: 'hyphens', key: 'hyphens' },\n\n // ─── LIST ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'list-style', key: 'listStyle' },\n { kind: 'simple', css: 'list-style-image', key: 'listStyleImage' },\n { kind: 'simple', css: 'list-style-position', key: 'listStylePosition' },\n { kind: 'simple', css: 'list-style-type', key: 'listStyleType' },\n\n // ─── BACKGROUND & COLORS ─────────────────────────────────────────\n { kind: 'simple', css: 'color', key: 'color' },\n { kind: 'simple', css: 'background', key: 'background' },\n { kind: 'simple', css: 'background-color', key: 'backgroundColor' },\n { kind: 'special', id: 'backgroundImage' },\n { kind: 'simple', css: 'background-attachment', key: 'backgroundAttachment' },\n { kind: 'simple', css: 'background-clip', key: 'backgroundClip' },\n { kind: 'simple', css: 'background-origin', key: 'backgroundOrigin' },\n { kind: 'simple', css: 'background-position', key: 'backgroundPosition' },\n { kind: 'simple', css: 'background-repeat', key: 'backgroundRepeat' },\n { kind: 'simple', css: 'background-size', key: 'backgroundSize' },\n\n // ─── BORDERS ──────────────────────────────────────────────────────\n {\n kind: 'border_radius',\n keys: {\n full: 'borderRadius',\n top: 'borderRadiusTop',\n bottom: 'borderRadiusBottom',\n left: 'borderRadiusLeft',\n right: 'borderRadiusRight',\n topLeft: 'borderRadiusTopLeft',\n topRight: 'borderRadiusTopRight',\n bottomLeft: 'borderRadiusBottomLeft',\n bottomRight: 'borderRadiusBottomRight',\n },\n },\n { kind: 'simple', css: 'border', key: 'border' },\n { kind: 'simple', css: 'border-top', key: 'borderTop' },\n { kind: 'simple', css: 'border-bottom', key: 'borderBottom' },\n { kind: 'simple', css: 'border-left', key: 'borderLeft' },\n { kind: 'simple', css: 'border-right', key: 'borderRight' },\n {\n kind: 'edge',\n property: 'border-width',\n keys: {\n full: 'borderWidth',\n x: 'borderWidthX',\n y: 'borderWidthY',\n top: 'borderWidthTop',\n left: 'borderWidthLeft',\n bottom: 'borderWidthBottom',\n right: 'borderWidthRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-style',\n keys: {\n full: 'borderStyle',\n x: 'borderStyleX',\n y: 'borderStyleY',\n top: 'borderStyleTop',\n left: 'borderStyleLeft',\n bottom: 'borderStyleBottom',\n right: 'borderStyleRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-color',\n keys: {\n full: 'borderColor',\n x: 'borderColorX',\n y: 'borderColorY',\n top: 'borderColorTop',\n left: 'borderColorLeft',\n bottom: 'borderColorBottom',\n right: 'borderColorRight',\n },\n },\n { kind: 'simple', css: 'border-image', key: 'borderImage' },\n { kind: 'simple', css: 'border-image-outset', key: 'borderImageOutset' },\n { kind: 'simple', css: 'border-image-repeat', key: 'borderImageRepeat' },\n { kind: 'simple', css: 'border-image-slice', key: 'borderImageSlice' },\n { kind: 'simple', css: 'border-image-source', key: 'borderImageSource' },\n { kind: 'simple', css: 'border-image-width', key: 'borderImageWidth' },\n { kind: 'simple', css: 'border-spacing', key: 'borderSpacing' },\n\n // Logical borders\n { kind: 'simple', css: 'border-inline', key: 'borderInline' },\n { kind: 'simple', css: 'border-block', key: 'borderBlock' },\n { kind: 'simple', css: 'border-inline-start', key: 'borderInlineStart' },\n { kind: 'simple', css: 'border-inline-end', key: 'borderInlineEnd' },\n { kind: 'simple', css: 'border-block-start', key: 'borderBlockStart' },\n { kind: 'simple', css: 'border-block-end', key: 'borderBlockEnd' },\n\n // ─── VISUAL EFFECTS ───────────────────────────────────────────────\n { kind: 'simple', css: 'backface-visibility', key: 'backfaceVisibility' },\n { kind: 'simple', css: 'box-shadow', key: 'boxShadow' },\n { kind: 'simple', css: 'filter', key: 'filter' },\n { kind: 'simple', css: 'backdrop-filter', key: 'backdropFilter' },\n { kind: 'simple', css: 'mix-blend-mode', key: 'mixBlendMode' },\n {\n kind: 'simple',\n css: 'background-blend-mode',\n key: 'backgroundBlendMode',\n },\n { kind: 'simple', css: 'isolation', key: 'isolation' },\n { kind: 'simple', css: 'outline', key: 'outline' },\n { kind: 'simple', css: 'outline-color', key: 'outlineColor' },\n { kind: 'simple', css: 'outline-offset', key: 'outlineOffset' },\n { kind: 'simple', css: 'outline-style', key: 'outlineStyle' },\n { kind: 'simple', css: 'outline-width', key: 'outlineWidth' },\n\n // ─── ANIMATIONS ───────────────────────────────────────────────────\n { kind: 'special', id: 'animation' },\n { kind: 'simple', css: 'animation-name', key: 'animationName' },\n { kind: 'simple', css: 'animation-duration', key: 'animationDuration' },\n {\n kind: 'simple',\n css: 'animation-timing-function',\n key: 'animationTimingFunction',\n },\n { kind: 'simple', css: 'animation-delay', key: 'animationDelay' },\n {\n kind: 'simple',\n css: 'animation-iteration-count',\n key: 'animationIterationCount',\n },\n { kind: 'simple', css: 'animation-direction', key: 'animationDirection' },\n { kind: 'simple', css: 'animation-fill-mode', key: 'animationFillMode' },\n { kind: 'simple', css: 'animation-play-state', key: 'animationPlayState' },\n { kind: 'simple', css: 'transition', key: 'transition' },\n { kind: 'simple', css: 'transition-delay', key: 'transitionDelay' },\n { kind: 'simple', css: 'transition-duration', key: 'transitionDuration' },\n { kind: 'simple', css: 'transition-property', key: 'transitionProperty' },\n {\n kind: 'simple',\n css: 'transition-timing-function',\n key: 'transitionTimingFunction',\n },\n\n // ─── TRANSFORM ────────────────────────────────────────────────────\n { kind: 'simple', css: 'transform', key: 'transform' },\n { kind: 'simple', css: 'transform-origin', key: 'transformOrigin' },\n { kind: 'simple', css: 'transform-style', key: 'transformStyle' },\n { kind: 'simple', css: 'translate', key: 'translate' },\n { kind: 'simple', css: 'rotate', key: 'rotate' },\n { kind: 'simple', css: 'scale', key: 'scale' },\n { kind: 'simple', css: 'will-change', key: 'willChange' },\n\n // ─── SCROLL ───────────────────────────────────────────────────────\n { kind: 'simple', css: 'scroll-behavior', key: 'scrollBehavior' },\n { kind: 'simple', css: 'scroll-snap-type', key: 'scrollSnapType' },\n { kind: 'simple', css: 'scroll-snap-align', key: 'scrollSnapAlign' },\n { kind: 'simple', css: 'scroll-snap-stop', key: 'scrollSnapStop' },\n { kind: 'simple', css: 'scroll-margin', key: 'scrollMargin' },\n { kind: 'simple', css: 'scroll-padding', key: 'scrollPadding' },\n { kind: 'simple', css: 'overscroll-behavior', key: 'overscrollBehavior' },\n {\n kind: 'simple',\n css: 'overscroll-behavior-x',\n key: 'overscrollBehaviorX',\n },\n {\n kind: 'simple',\n css: 'overscroll-behavior-y',\n key: 'overscrollBehaviorY',\n },\n\n // ─── INTERACTION ──────────────────────────────────────────────────\n { kind: 'simple', css: 'cursor', key: 'cursor' },\n { kind: 'simple', css: 'pointer-events', key: 'pointerEvents' },\n { kind: 'simple', css: 'user-select', key: 'userSelect' },\n { kind: 'simple', css: 'touch-action', key: 'touchAction' },\n { kind: 'simple', css: 'scrollbar-width', key: 'scrollbarWidth' },\n { kind: 'simple', css: 'scrollbar-color', key: 'scrollbarColor' },\n { kind: 'simple', css: 'scrollbar-gutter', key: 'scrollbarGutter' },\n { kind: 'simple', css: 'caret-color', key: 'caretColor' },\n { kind: 'simple', css: 'accent-color', key: 'accentColor' },\n { kind: 'simple', css: 'color-scheme', key: 'colorScheme' },\n\n // ─── OTHER ────────────────────────────────────────────────────────\n { kind: 'simple', css: 'caption-side', key: 'captionSide' },\n { kind: 'simple', css: 'clear', key: 'clear' },\n { kind: 'simple', css: 'clip', key: 'clip' },\n { kind: 'simple', css: 'clip-path', key: 'clipPath' },\n { kind: 'simple', css: 'content', key: 'content' },\n { kind: 'simple', css: 'content-visibility', key: 'contentVisibility' },\n { kind: 'simple', css: 'counter-increment', key: 'counterIncrement' },\n { kind: 'simple', css: 'counter-reset', key: 'counterReset' },\n { kind: 'simple', css: 'empty-cells', key: 'emptyCells' },\n { kind: 'simple', css: 'z-index', key: 'zIndex' },\n { kind: 'simple', css: 'overflow', key: 'overflow' },\n { kind: 'simple', css: 'overflow-wrap', key: 'overflowWrap' },\n { kind: 'simple', css: 'overflow-x', key: 'overflowX' },\n { kind: 'simple', css: 'overflow-y', key: 'overflowY' },\n { kind: 'simple', css: 'perspective', key: 'perspective' },\n { kind: 'simple', css: 'perspective-origin', key: 'perspectiveOrigin' },\n { kind: 'simple', css: 'quotes', key: 'quotes' },\n { kind: 'simple', css: 'tab-size', key: 'tabSize' },\n { kind: 'simple', css: 'table-layout', key: 'tableLayout' },\n { kind: 'simple', css: 'visibility', key: 'visibility' },\n { kind: 'simple', css: 'appearance', key: 'appearance' },\n { kind: 'simple', css: 'image-rendering', key: 'imageRendering' },\n\n // Masks\n { kind: 'simple', css: 'mask-image', key: 'maskImage' },\n { kind: 'simple', css: 'mask-size', key: 'maskSize' },\n { kind: 'simple', css: 'mask-position', key: 'maskPosition' },\n { kind: 'simple', css: 'mask-repeat', key: 'maskRepeat' },\n\n // Shapes\n { kind: 'simple', css: 'shape-outside', key: 'shapeOutside' },\n { kind: 'simple', css: 'shape-margin', key: 'shapeMargin' },\n {\n kind: 'simple',\n css: 'shape-image-threshold',\n key: 'shapeImageThreshold',\n },\n\n // Columns\n { kind: 'simple', css: 'column-count', key: 'columnCount' },\n { kind: 'simple', css: 'column-width', key: 'columnWidth' },\n { kind: 'simple', css: 'column-rule', key: 'columnRule' },\n { kind: 'simple', css: 'columns', key: 'columns' },\n\n // Fragmentation\n { kind: 'simple', css: 'break-before', key: 'breakBefore' },\n { kind: 'simple', css: 'break-after', key: 'breakAfter' },\n { kind: 'simple', css: 'break-inside', key: 'breakInside' },\n { kind: 'simple', css: 'orphans', key: 'orphans' },\n { kind: 'simple', css: 'widows', key: 'widows' },\n { kind: 'simple', css: 'print-color-adjust', key: 'printColorAdjust' },\n\n // ─── CUSTOM ATTRIBUTES ────────────────────────────────────────────\n { kind: 'special', id: 'hideEmpty' },\n { kind: 'special', id: 'clearFix' },\n { kind: 'special', id: 'extendCss' },\n]\n\nexport default propertyMap\n","import { borderRadius, edge } from '~/styles/shorthands'\nimport type { Css } from '~/types'\nimport { values } from '~/units'\nimport processDescriptor from './processDescriptor'\nimport propertyMap from './propertyMap'\nimport type { InnerTheme, Theme } from './types'\n\nexport type { Theme as StylesTheme }\n\nexport type Styles = ({\n theme,\n css,\n rootSize,\n}: {\n theme: InnerTheme\n css: Css\n rootSize?: number\n}) => ReturnType<typeof css>\n\n/**\n * Data-driven style processor. Iterates the `propertyMap` descriptors\n * and delegates each to `processDescriptor`, which maps theme values\n * to CSS strings. The result is a single `css` tagged-template literal\n * containing all non-null property outputs.\n */\nconst styles: Styles = ({ theme: t, css, rootSize }) => {\n const calc = (...params: any[]) => values(params, rootSize)\n const shorthand = edge(rootSize)\n const borderRadiusFn = borderRadius(rootSize)\n\n const fragments = propertyMap.map((d) =>\n processDescriptor(d, t, css, calc, shorthand, borderRadiusFn),\n )\n\n return css`\n ${fragments}\n `\n}\n\nexport default styles\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitus-labs-unistyle.native.js","names":["CoreProvider","isValidValue","hasAnyValue","formatShorthand","formatIndividual"],"sources":["../src/responsive/breakpoints.ts","../src/responsive/createMediaQueries.ts","../src/responsive/normalizeTheme.ts","../src/responsive/optimizeTheme.ts","../src/responsive/transformTheme.ts","../src/responsive/makeItResponsive.ts","../src/responsive/sortBreakpoints.ts","../src/context.tsx","../src/styles/alignContent.ts","../src/styles/extendCss.ts","../src/units/stripUnit.ts","../src/units/value.ts","../src/units/values.ts","../src/styles/shorthands/borderRadius.ts","../src/styles/shorthands/edge.ts","../src/styles/styles/processDescriptor.ts","../src/styles/styles/propertyMap.ts","../src/styles/styles/index.ts"],"sourcesContent":["const breakpoints = {\n rootSize: 16,\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1440,\n },\n} as const\n\nexport type Breakpoints = typeof breakpoints\n\nexport default breakpoints\n","export type CreateMediaQueries = <\n B extends Record<string, number>,\n R extends number,\n C extends (...args: any) => any,\n>(props: {\n breakpoints: B\n rootSize: R\n css: C\n}) => Record<keyof B, ReturnType<C>>\n\n/**\n * Builds a map of breakpoint-name → tagged-template function.\n * The smallest breakpoint (value 0) gets no media wrapper.\n * Others are wrapped in `@media (min-width: <em>)` — em units\n * ensure correct behaviour when users change browser font size.\n */\nconst createMediaQueries: CreateMediaQueries = ({\n breakpoints,\n rootSize,\n css,\n}) =>\n Object.keys(breakpoints).reduce<Record<string, any>>((acc, key) => {\n // use em in breakpoints to work properly cross-browser and support users\n // changing their browsers font-size: https://zellwk.com/blog/media-query-units/\n const breakpointValue = (breakpoints as Record<string, number>)[key]\n\n if (breakpointValue === 0) {\n acc[key] = (...args: any[]) => css(...args)\n } else if (breakpointValue != null) {\n const emSize = breakpointValue / rootSize\n\n acc[key] = (...args: any[]) => css`\n @media only screen and (min-width: ${emSize}em) {\n ${css(...args)};\n }\n `\n }\n\n return acc\n }, {}) as any\n\nexport default createMediaQueries\n","type AssignToBreakpointKey = (\n breakpoints: string[],\n) => (\n value: (\n breakpoint: string,\n i: number,\n breakpoints: string[],\n result: Record<string, unknown>,\n ) => void,\n) => Record<string, unknown>\n\n/** Iterates breakpoints and populates a result object using a callback per breakpoint. */\nconst assignToBreakpointKey: AssignToBreakpointKey =\n (breakpoints) => (value) => {\n const result: Record<string, unknown> = {}\n\n breakpoints.forEach((item, i) => {\n result[item] = value(item, i, breakpoints, result)\n })\n\n return result\n }\n\nconst handleArrayCb = (arr: (string | number)[]) => (_: any, i: number) => {\n const currentValue = arr[i]\n const lastValue = arr[arr.length - 1]\n\n return currentValue ?? lastValue\n}\n\n// type HandleObjectCb = (\n// obj: Record<string, unknown>\n// ) => (\n// bp: string,\n// i: number,\n// breakpoint: Array<string>,\n// result: Record<string, unknown>\n// ) => Record<string, unknown>\n\nconst handleObjectCb =\n (obj: Record<string, unknown>) =>\n (bp: string, i: number, bps: string[], res: Record<string, unknown>) => {\n const currentValue = obj[bp]\n const previousValue = res[bps[i - 1]!]\n\n // check for non-nullable values\n if (currentValue != null) return currentValue\n return previousValue\n }\n\nconst handleValueCb = (value: unknown) => () => value\n\nconst shouldNormalize = (props: Record<string, any>) =>\n Object.values(props).some(\n (item) => typeof item === 'object' || Array.isArray(item),\n )\n\nexport type NormalizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => Record<string, unknown>\n\n/**\n * Expands each theme property into a full breakpoint map so every\n * breakpoint has a value. Arrays fill by index (last value carries forward),\n * objects inherit from the previous breakpoint, scalars repeat for all.\n * Skipped entirely when no property is array/object (fast path).\n */\nconst normalizeTheme: NormalizeTheme = ({ theme, breakpoints }) => {\n if (!shouldNormalize(theme)) return theme\n\n const getBpValues = assignToBreakpointKey(breakpoints)\n const result: Record<string, unknown> = {}\n\n Object.entries(theme).forEach(([key, value]) => {\n if (value == null) return\n\n // if it's an array\n if (Array.isArray(value)) {\n result[key] = getBpValues(handleArrayCb(value as any))\n }\n // if it's an object\n else if (typeof value === 'object') {\n result[key] = getBpValues(handleObjectCb(value as Record<string, any>))\n }\n // if any other value\n else {\n result[key] = getBpValues(handleValueCb(value))\n }\n })\n\n return result\n}\n\nexport default normalizeTheme\n","export type OptimizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, Record<string, unknown>>\n breakpoints: string[]\n}) => Record<string, Record<string, unknown>>\n\nconst shallowEqual = (\n a: Record<string, unknown> | undefined,\n b: Record<string, unknown> | undefined,\n): boolean => {\n if (a === b) return true\n if (!a || !b) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (const key of keysA) {\n if (a[key] !== b[key]) return false\n }\n\n return true\n}\n\n/**\n * Removes breakpoints whose styles are identical to the previous one.\n * This avoids generating duplicate `@media` blocks.\n * The smallest breakpoint is always kept.\n */\nconst optimizeTheme: OptimizeTheme = ({ theme, breakpoints }) => {\n const result: Record<string, Record<string, unknown>> = {}\n\n for (let i = 0; i < breakpoints.length; i++) {\n const key = breakpoints[i] as string\n const previousBreakpoint = breakpoints[i - 1] as string\n\n const current = theme[key]\n if (\n current &&\n (i === 0 || !shallowEqual(theme[previousBreakpoint], current))\n ) {\n result[key] = current\n }\n }\n\n return result\n}\n\nexport default optimizeTheme\n","import { isEmpty, set } from '@vitus-labs/core'\n\n/** Filter out breakpoint keys that don't exist in the sorted breakpoints list. */\nconst removeUnexpectedKeys = (obj: Record<string, unknown>, keys: string[]) => {\n const result: Record<string, unknown> = {}\n\n keys.forEach((bp) => {\n const value = obj[bp]\n\n if (value) {\n result[bp] = value\n }\n })\n\n return result\n}\n\nexport type TransformTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => any\n\n/**\n * Pivots the theme from property-centric to breakpoint-centric layout.\n * Input: `{ fontSize: { xs: 12, md: 15 }, color: 'red' }`\n * Output: `{ xs: { fontSize: 12, color: 'red' }, md: { fontSize: 15 } }`\n * Supports three input shapes per property: scalar, array (positional), or object (keyed).\n */\nconst transformTheme: TransformTheme = ({ theme, breakpoints }) => {\n const result = {}\n\n if (isEmpty(theme) || isEmpty(breakpoints)) return result\n\n // can be one of following types\n // { fontSize: 12 }\n // { fontSize: { xs: 12, md: 15 }}\n // { fontSize: [12, 15] }\n Object.entries(theme).forEach(([key, value]) => {\n // array\n if (Array.isArray(value) && value.length > 0) {\n value.forEach((child, i) => {\n const indexBreakpoint = breakpoints[i]!\n set(result, [indexBreakpoint, key], child)\n })\n }\n // object\n else if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([childKey, childValue]) => {\n set(result, [childKey, key], childValue)\n })\n }\n // normal value\n else if (value != null) {\n const firstBreakpoint = breakpoints[0]!\n set(result, [firstBreakpoint, key], value)\n }\n })\n\n return removeUnexpectedKeys(result, breakpoints)\n}\n\nexport default transformTheme\n","import { isEmpty } from '@vitus-labs/core'\nimport type { Css } from '~/types'\nimport type createMediaQueries from './createMediaQueries'\nimport normalizeTheme from './normalizeTheme'\nimport optimizeTheme from './optimizeTheme'\nimport type sortBreakpoints from './sortBreakpoints'\nimport transformTheme from './transformTheme'\n\ntype CustomTheme = Record<\n string,\n Record<string, unknown> | number | string | boolean\n>\ntype Theme = Partial<{\n rootSize: number\n breakpoints: Record<string, number>\n __VITUS_LABS__: Partial<{\n media: ReturnType<typeof createMediaQueries>\n sortedBreakpoints: ReturnType<typeof sortBreakpoints>\n }>\n}> &\n CustomTheme\n\nexport type MakeItResponsiveStyles<\n T extends Partial<Record<string, any>> = any,\n> = ({\n theme,\n css,\n rootSize,\n globalTheme,\n}: {\n theme: T\n css: Css\n rootSize?: number\n globalTheme?: Record<string, any>\n}) => ReturnType<typeof css> | string | any\n\nexport type MakeItResponsive = ({\n theme,\n key,\n css,\n styles,\n normalize,\n}: {\n theme?: CustomTheme\n key?: string\n css: any\n styles: MakeItResponsiveStyles\n normalize?: boolean\n}) => (props: { theme?: Theme; [key: string]: any }) => any\n\n/**\n * Core responsive engine used by every styled component in the system.\n *\n * Returns a styled-components interpolation function that:\n * 1. Reads the component's theme prop (via `key` or direct `theme`)\n * 2. Without breakpoints → renders plain CSS\n * 3. With breakpoints → normalizes, transforms (property-per-breakpoint →\n * breakpoint-per-property), optimizes (deduplicates identical breakpoints),\n * and wraps each breakpoint's styles in the appropriate `@media` query.\n */\nconst makeItResponsive: MakeItResponsive =\n ({ theme: customTheme, key = '', css, styles, normalize = false }) =>\n ({ theme = {}, ...props }) => {\n const internalTheme = customTheme || props[key]\n\n // if no theme is defined, return empty objct\n if (isEmpty(internalTheme)) return ''\n\n const { rootSize, breakpoints, __VITUS_LABS__, ...restTheme } =\n theme as Theme\n\n const renderStyles = (\n theme: Record<string, unknown>,\n ): ReturnType<typeof styles> =>\n styles({ theme, css, rootSize, globalTheme: restTheme })\n\n // if there are no breakpoints, return just standard css\n if (isEmpty(breakpoints) || isEmpty(__VITUS_LABS__)) {\n return css`\n ${renderStyles(internalTheme)}\n `\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { media, sortedBreakpoints } = __VITUS_LABS__!\n\n let helperTheme = internalTheme\n\n if (normalize) {\n helperTheme = normalizeTheme({\n theme: internalTheme,\n breakpoints: sortedBreakpoints,\n })\n }\n\n const transformedTheme = transformTheme({\n theme: helperTheme,\n breakpoints: sortedBreakpoints,\n })\n\n const optimizedTheme = optimizeTheme({\n theme: transformedTheme,\n breakpoints: sortedBreakpoints,\n })\n\n return sortedBreakpoints.map((item: string) => {\n const breakpointTheme = optimizedTheme[item]\n\n if (!breakpointTheme || !media) return ''\n\n const result = renderStyles(breakpointTheme)\n\n return (media as Record<string, any>)[item]`\n ${result};\n `\n })\n }\n\nexport default makeItResponsive\n","export type SortBreakpoints = <T extends Record<string, number>>(\n breakpoints: T,\n) => (keyof T)[]\n\n/** Sorts breakpoint keys by their pixel value (ascending, mobile-first). */\nconst sortBreakpoints: SortBreakpoints = (breakpoints) => {\n const result = Object.keys(breakpoints).sort(\n (a, b) => breakpoints[a]! - breakpoints[b]!,\n )\n\n return result\n}\n\nexport default sortBreakpoints\n","import {\n Provider as CoreProvider,\n config,\n context,\n isEmpty,\n} from '@vitus-labs/core'\nimport type { FC, ReactNode } from 'react'\nimport { useMemo } from 'react'\nimport { createMediaQueries, sortBreakpoints } from '~/responsive'\n\n// type VitusLabsContext = {\n// sortedBreakpoints?: ReturnType<typeof sortBreakpoints>\n// media?: ReturnType<typeof createMediaQueries>\n// }\n\ntype Theme = {\n rootSize: number\n breakpoints?: Record<string, number>\n __VITUS_LABS__?: never\n} & Partial<Record<string, unknown>>\n\nexport type TProvider = {\n theme: Theme\n children: ReactNode\n} & Partial<Record<string, unknown>>\n\n/**\n * Unistyle Provider — wraps the core Provider and enriches the theme\n * with pre-computed sorted breakpoints and media-query tagged-template\n * helpers consumed by `makeItResponsive`.\n */\nconst Provider: FC<TProvider> = ({ theme, children, ...props }) => {\n const { breakpoints, rootSize } = theme\n\n const sortedBreakpoints = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return sortBreakpoints(breakpoints)\n }\n\n return undefined\n }, [breakpoints])\n\n const media = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return createMediaQueries({\n breakpoints,\n css: config.css,\n rootSize,\n })\n }\n\n return undefined\n }, [breakpoints, rootSize])\n\n const result = {\n ...theme,\n __VITUS_LABS__: {\n sortedBreakpoints,\n media,\n },\n }\n\n return (\n <CoreProvider theme={result} {...props}>\n {children}\n </CoreProvider>\n )\n}\n\nexport { context }\n\nexport default Provider\n","import { config, isEmpty } from '@vitus-labs/core'\n\nexport type AlignContentDirectionKeys = keyof typeof ALIGN_CONTENT_DIRECTION\nexport type AlignContentAlignXKeys = keyof typeof ALIGN_CONTENT_MAP_X\nexport type AlignContentAlignYKeys = keyof typeof ALIGN_CONTENT_MAP_Y\n\nconst ALIGN_CONTENT_MAP_SHARED = {\n center: 'center',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n block: 'stretch',\n}\n\nexport const ALIGN_CONTENT_MAP_X = {\n left: 'flex-start',\n right: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_MAP_Y = {\n top: 'flex-start',\n bottom: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_DIRECTION = __WEB__\n ? {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n : {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n\nexport type AlignContent = ({\n direction,\n alignX,\n alignY,\n}: {\n direction: AlignContentDirectionKeys\n alignX: AlignContentAlignXKeys\n alignY: AlignContentAlignYKeys\n}) => ReturnType<typeof config.css> | null\n\n/**\n * Converts semantic direction/alignX/alignY values into `flex-direction`,\n * `align-items`, and `justify-content`. For inline directions (row) the\n * X/Y axes are swapped so that `alignX` always controls the horizontal axis.\n */\nconst alignContent: AlignContent = (attrs) => {\n const { direction, alignX, alignY } = attrs\n\n if (isEmpty(attrs) || !direction || !alignX || !alignY) {\n return null\n }\n\n const isReverted = ['inline', 'reverseInline'].includes(direction)\n const dir = ALIGN_CONTENT_DIRECTION[direction]\n const x = ALIGN_CONTENT_MAP_X[alignX]\n const y = ALIGN_CONTENT_MAP_Y[alignY]\n\n return config.css`\n flex-direction: ${dir};\n align-items: ${isReverted ? y : x};\n justify-content: ${isReverted ? x : y};\n `\n}\n\nexport default alignContent\n","import { config } from '@vitus-labs/core'\n\nexport type ExtendCss = (\n styles:\n | ((css: typeof config.css) => ReturnType<typeof css>)\n | string\n | null\n | undefined,\n) => string | ReturnType<typeof config.css>\n\n/**\n * Evaluates an `extendCss` value — either a callback receiving `css`\n * or a raw CSS string. Returns empty string for null/undefined.\n */\nconst extendCss: ExtendCss = (styles) => {\n if (!styles) return ''\n if (typeof styles === 'function') {\n return styles(config.css)\n }\n\n return styles\n}\n\nexport default extendCss\n","type Value<V> = V extends string ? number : V\ntype Unit<V> = V extends string ? string : undefined\n\nexport type StripUnit = <V extends string | number, UR extends boolean = false>(\n value: V,\n unitReturn?: UR,\n) => UR extends true ? [Value<V>, Unit<V>] : Value<V>\n\n/**\n * Strips the CSS unit suffix from a value.\n * With `unitReturn=true`, returns a `[number, unit]` tuple.\n * Otherwise returns just the numeric part.\n * Non-string inputs are passed through unchanged.\n */\nconst stripUnit: StripUnit = (value, unitReturn) => {\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/\n\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value\n\n const matchedValue = value.match(cssRegex)\n\n if (unitReturn) {\n if (matchedValue) return [parseFloat(value), matchedValue[2]]\n return [value, undefined]\n }\n\n if (matchedValue) return parseFloat(value)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value as any\n}\n\nexport default stripUnit\n","import stripUnit from './stripUnit'\n\ntype CssUnits =\n | 'px'\n | 'rem'\n | '%'\n | 'em'\n | 'ex'\n | 'cm'\n | 'mm'\n | 'in'\n | 'pt'\n | 'pc'\n | 'ch'\n | 'vh'\n | 'vw'\n | 'vmin'\n | 'vmax'\n\n/** Returns true for null/undefined/NaN but not for 0. */\nconst isNotValue = (value: unknown) => !value && value !== 0\n\nexport type Value = (\n param: string | number | null | undefined,\n rootSize?: number,\n outputUnit?: CssUnits,\n) => string | number | null\n\n/**\n * Converts a raw numeric value to a CSS string with appropriate units.\n * - Numbers without a unit are divided by `rootSize` and output as rem (web) or px (native).\n * - Values that already carry a unit are returned as-is, unless converting px→rem.\n * - Zero is always returned unitless.\n */\nconst value: Value = (\n param,\n rootSize = 16,\n outputUnit = __WEB__ ? 'rem' : 'px',\n) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (isNotValue(param)) return null as any\n\n const [val, unit] = stripUnit(param as string, true)\n if (isNotValue(val)) return null\n if (val === 0 || typeof val === 'string') return param // zero should be unitless\n\n const canConvert = rootSize && !Number.isNaN(val)\n if (canConvert && !unit && outputUnit === 'px') return `${val}${outputUnit}`\n if (canConvert && !unit) return `${val / rootSize}rem`\n if (canConvert && unit === 'px' && outputUnit === 'rem')\n return `${val / rootSize}rem`\n if (unit) return param\n\n return `${val}${outputUnit}`\n}\n\nexport default value\n","import type { Units } from '~/types'\nimport value from './value'\n\n/** Returns the first non-null/undefined value from the arguments. */\ntype GetValueOf = (...values: unknown[]) => number | string\nconst getValueOf: GetValueOf = (...values: any[]) =>\n values.find((value) => typeof value !== 'undefined' && value !== null)\n\nexport type Values = (\n values: unknown[],\n rootSize?: number,\n outputUnit?: Units,\n) => string | number | null\n\n/**\n * Picks the first non-null value from the array, converts it via `value()`,\n * and returns the result. If the picked value is itself an array, each item\n * is converted and joined with spaces (e.g. for shorthand properties).\n */\nconst values: Values = (values, rootSize, outputUnit) => {\n const param = getValueOf(...values)\n\n if (Array.isArray(param)) {\n return param.map((item) => value(item, rootSize, outputUnit)).join(' ')\n }\n\n return value(param, rootSize, outputUnit)\n}\n\nexport default values\n","import type { PropertyValue } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype PV = PropertyValue | null | undefined\n\ntype CornerValues = {\n full: PV\n top: PV\n bottom: PV\n left: PV\n right: PV\n topLeft: PV\n topRight: PV\n bottomLeft: PV\n bottomRight: PV\n}\n\nconst hasAnyValue = (v: CornerValues) =>\n isValidValue(v.full) ||\n isValidValue(v.top) ||\n isValidValue(v.bottom) ||\n isValidValue(v.left) ||\n isValidValue(v.right) ||\n isValidValue(v.topLeft) ||\n isValidValue(v.topRight) ||\n isValidValue(v.bottomLeft) ||\n isValidValue(v.bottomRight)\n\n// topLeft - topRight - bottomRight - bottomLeft\nconst resolveCorners = (v: CornerValues) => {\n const corners: PV[] = [v.full, v.full, v.full, v.full]\n\n if (isValidValue(v.top)) {\n corners[0] = v.top\n corners[1] = v.top\n }\n if (isValidValue(v.bottom)) {\n corners[2] = v.bottom\n corners[3] = v.bottom\n }\n if (isValidValue(v.left)) {\n corners[0] = v.left\n corners[3] = v.left\n }\n if (isValidValue(v.right)) {\n corners[1] = v.right\n corners[2] = v.right\n }\n\n if (isValidValue(v.topLeft)) corners[0] = v.topLeft\n if (isValidValue(v.topRight)) corners[1] = v.topRight\n if (isValidValue(v.bottomRight)) corners[2] = v.bottomRight\n if (isValidValue(v.bottomLeft)) corners[3] = v.bottomLeft\n\n return corners\n}\n\nconst formatShorthand = (corners: PV[], calc: (p: PV) => any) => {\n const [tl, tr, br, bl] = corners\n\n if (corners.every((val, _, arr) => val === arr[0]))\n return `border-radius: ${calc(tl)};`\n\n if (tl === br && tr === bl) return `border-radius: ${calc(tl)} ${calc(tr)};`\n\n if (tl && tr === bl && br)\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)};`\n\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)} ${calc(bl)};`\n}\n\nconst CORNER_CSS = [\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius',\n] as const\n\nconst formatIndividual = (corners: PV[], calc: (p: PV) => any) => {\n let output = ''\n for (let i = 0; i < corners.length; i++) {\n if (isValidValue(corners[i]))\n output += `${CORNER_CSS[i]}: ${calc(corners[i])};`\n }\n return output\n}\n\nexport type BorderRadius = (\n rootSize?: number,\n) => (props: CornerValues) => string | null\n\n/**\n * Border radius shorthand processor. Accepts full/top/bottom/left/right\n * and individual corner values. Produces the most compact CSS output —\n * single-value, two-value, three-value, or four-value shorthand\n * when all corners are specified, or individual corner properties otherwise.\n */\nconst borderRadius: BorderRadius = (rootSize) => (props) => {\n if (!hasAnyValue(props)) return null\n\n const calc = (param: PV) => value(param as any, rootSize)\n const corners = resolveCorners(props)\n\n if (corners.every((val) => isValidValue(val)))\n return formatShorthand(corners, calc)\n\n return formatIndividual(corners, calc)\n}\n\nexport default borderRadius\n","import type { Units } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype Property =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\ntype Value = string | number | null | undefined\ntype Side = 'top' | 'bottom' | 'left' | 'right'\n\ntype EdgeValues = {\n full: Value\n x: Value\n y: Value\n top: Value\n left: Value\n right: Value\n bottom: Value\n}\n\ntype Definitions = Record<\n Property,\n { unit?: Units; edgeCss: (side: Side) => string }\n>\n\nconst definitions: Definitions = {\n inset: {\n unit: 'rem',\n edgeCss: (side) => side,\n },\n margin: {\n unit: 'rem',\n edgeCss: (side) => `margin-${side}`,\n },\n padding: {\n unit: 'rem',\n edgeCss: (side) => `padding-${side}`,\n },\n 'border-width': {\n unit: 'px',\n edgeCss: (side) => `border-${side}-width`,\n },\n 'border-style': {\n edgeCss: (side) => `border-${side}-style`,\n },\n 'border-color': {\n edgeCss: (side) => `border-${side}-color`,\n },\n}\n\nconst hasAnyValue = (vals: EdgeValues) =>\n isValidValue(vals.top) ||\n isValidValue(vals.bottom) ||\n isValidValue(vals.left) ||\n isValidValue(vals.right) ||\n isValidValue(vals.x) ||\n isValidValue(vals.y) ||\n isValidValue(vals.full)\n\n// top - right - bottom - left\nconst resolveSides = ({ full, x, y, top, left, right, bottom }: EdgeValues) => {\n const sides: Value[] = [full, full, full, full]\n\n if (isValidValue(x)) {\n sides[1] = x\n sides[3] = x\n }\n\n if (isValidValue(y)) {\n sides[0] = y\n sides[2] = y\n }\n\n if (isValidValue(top)) sides[0] = top\n if (isValidValue(right)) sides[1] = right\n if (isValidValue(bottom)) sides[2] = bottom\n if (isValidValue(left)) sides[3] = left\n\n return sides\n}\n\nconst formatShorthand = (\n property: Property,\n sides: Value[],\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n\n if (sides.every((val, _, arr) => val === arr[0]))\n return `${property}: ${calc(t)};`\n\n if (t === b && r === l) return `${property}: ${calc(t)} ${calc(r)};`\n\n if (t && r === l && b) return `${property}: ${calc(t)} ${calc(r)} ${calc(b)};`\n\n return `${property}: ${calc(t)} ${calc(r)} ${calc(b)} ${calc(l)};`\n}\n\nconst formatIndividual = (\n sides: Value[],\n edgeCss: (side: Side) => string,\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n let output = ''\n\n if (isValidValue(t)) output += `${edgeCss('top')}: ${calc(t)};`\n if (isValidValue(b)) output += `${edgeCss('bottom')}: ${calc(b)};`\n if (isValidValue(l)) output += `${edgeCss('left')}: ${calc(l)};`\n if (isValidValue(r)) output += `${edgeCss('right')}: ${calc(r)};`\n\n return output\n}\n\nexport type Edge = (\n rootSize?: number,\n) => (property: Property, values: EdgeValues) => string | null\n\n/**\n * Edge shorthand processor for margin, padding, inset, border-width/style/color.\n * Accepts full/x/y/top/right/bottom/left values and produces the most compact\n * CSS output — using shorthand syntax when all four sides are specified,\n * or individual side properties when only some are set.\n */\nconst edge: Edge =\n (rootSize = 16) =>\n (property, values) => {\n if (!hasAnyValue(values)) return null\n\n const { unit, edgeCss } = definitions[property]\n const calc = (param: Value) =>\n unit ? value(param as any, rootSize, unit) : param\n\n const sides = resolveSides(values)\n\n if (sides.every((val) => isValidValue(val)))\n return formatShorthand(property, sides, calc)\n\n return formatIndividual(sides, edgeCss, calc)\n }\n\nexport default edge\n","import type { BorderRadius } from '~/styles/shorthands/borderRadius'\nimport type { Edge } from '~/styles/shorthands/edge'\nimport type { Css } from '~/types'\nimport type { Values } from '~/units/values'\nimport type { PropertyDescriptor } from './propertyMap'\nimport type { InnerTheme } from './types'\n\ntype Calc = (...params: any[]) => ReturnType<Values>\n\nconst toCssDecl = (css: string, v: unknown) =>\n v == null ? '' : `${css}: ${v};`\n\n/**\n * Converts a single property descriptor + theme values into a CSS fragment.\n *\n * - `simple` — pass-through (no unit conversion)\n * - `convert` — number→rem via `calc()`\n * - `convert_fallback` — picks first non-null from multiple theme keys, then converts\n * - `edge` — delegates to the edge shorthand (margin, padding, inset, border-*)\n * - `border_radius` — delegates to the border-radius shorthand\n * - `special` — one-off logic (fullScreen, backgroundImage url wrapping, animation combo, etc.)\n */\nconst processSpecial = (\n d: Extract<PropertyDescriptor, { kind: 'special' }>,\n t: InnerTheme,\n css: Css,\n): string | ReturnType<typeof css> => {\n switch (d.id) {\n case 'fullScreen':\n if (!t.fullScreen) return ''\n return css`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n `\n\n case 'backgroundImage':\n if (!t.backgroundImage) return ''\n return css`\n background-image: url(${t.backgroundImage});\n `\n\n case 'animation': {\n const parts = [t.keyframe, t.animation].filter(Boolean).join(' ')\n return parts ? `animation: ${parts};` : ''\n }\n\n case 'hideEmpty':\n if (!(__WEB__ && t.hideEmpty)) return ''\n return css`\n &:empty {\n display: none;\n }\n `\n\n case 'clearFix':\n if (!(__WEB__ && t.clearFix)) return ''\n return css`\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n `\n\n case 'extendCss':\n return t.extendCss ?? ''\n\n default:\n return ''\n }\n}\n\nconst processDescriptor = (\n d: PropertyDescriptor,\n t: InnerTheme,\n css: Css,\n calc: Calc,\n shorthand: ReturnType<Edge>,\n borderRadiusFn: ReturnType<BorderRadius>,\n): string | ReturnType<typeof css> => {\n switch (d.kind) {\n case 'simple':\n return toCssDecl(d.css, t[d.key])\n\n case 'convert':\n return toCssDecl(d.css, calc(t[d.key]))\n\n case 'convert_fallback':\n return toCssDecl(d.css, calc(...d.keys.map((k) => t[k])))\n\n case 'edge':\n return (\n shorthand(d.property, {\n full: t[d.keys.full],\n x: t[d.keys.x],\n y: t[d.keys.y],\n top: t[d.keys.top],\n left: t[d.keys.left],\n bottom: t[d.keys.bottom],\n right: t[d.keys.right],\n }) ?? ''\n )\n\n case 'border_radius':\n return (\n borderRadiusFn({\n full: t[d.keys.full],\n top: t[d.keys.top],\n bottom: t[d.keys.bottom],\n left: t[d.keys.left],\n right: t[d.keys.right],\n topLeft: t[d.keys.topLeft],\n topRight: t[d.keys.topRight],\n bottomLeft: t[d.keys.bottomLeft],\n bottomRight: t[d.keys.bottomRight],\n }) ?? ''\n )\n\n case 'special':\n return processSpecial(d, t, css)\n }\n}\n\nexport default processDescriptor\n","import type { InnerTheme } from './types'\n\n/**\n * Descriptor types for the data-driven CSS property map.\n *\n * - `simple` — CSS pass-through (no unit conversion).\n * - `convert` — Number values are converted via `values()` (px→rem).\n * - `convert_fallback` — Picks first non-null from multiple theme keys, then converts.\n * - `edge` — Spacing shorthand (margin, padding, inset, border-*) via `edge()`.\n * - `border_radius` — Border radius shorthand via `borderRadius()`.\n * - `special` — One-off logic (fullScreen, backgroundImage, animation, etc.).\n */\ntype EdgeProperty =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\n\ntype EdgeKeys = {\n full: keyof InnerTheme\n x: keyof InnerTheme\n y: keyof InnerTheme\n top: keyof InnerTheme\n left: keyof InnerTheme\n bottom: keyof InnerTheme\n right: keyof InnerTheme\n}\n\ntype BorderRadiusKeys = {\n full: keyof InnerTheme\n top: keyof InnerTheme\n bottom: keyof InnerTheme\n left: keyof InnerTheme\n right: keyof InnerTheme\n topLeft: keyof InnerTheme\n topRight: keyof InnerTheme\n bottomLeft: keyof InnerTheme\n bottomRight: keyof InnerTheme\n}\n\nexport type PropertyDescriptor =\n | { kind: 'simple'; css: string; key: keyof InnerTheme }\n | { kind: 'convert'; css: string; key: keyof InnerTheme }\n | { kind: 'convert_fallback'; css: string; keys: (keyof InnerTheme)[] }\n | {\n kind: 'edge'\n property: EdgeProperty\n keys: EdgeKeys\n }\n | { kind: 'border_radius'; keys: BorderRadiusKeys }\n | { kind: 'special'; id: string }\n\nconst propertyMap: PropertyDescriptor[] = [\n // ─── SPECIAL: fullScreen ──────────────────────────────────────────\n { kind: 'special', id: 'fullScreen' },\n\n // ─── POSITION ─────────────────────────────────────────────────────\n { kind: 'simple', css: 'all', key: 'all' },\n { kind: 'simple', css: 'display', key: 'display' },\n { kind: 'simple', css: 'position', key: 'position' },\n { kind: 'simple', css: 'box-sizing', key: 'boxSizing' },\n { kind: 'simple', css: 'float', key: 'float' },\n\n // ─── INSET (edge shorthand) ───────────────────────────────────────\n {\n kind: 'edge',\n property: 'inset',\n keys: {\n full: 'inset',\n x: 'insetX',\n y: 'insetY',\n top: 'top',\n left: 'left',\n bottom: 'bottom',\n right: 'right',\n },\n },\n\n // ─── SIZING ───────────────────────────────────────────────────────\n { kind: 'convert_fallback', css: 'width', keys: ['width', 'size'] },\n { kind: 'convert_fallback', css: 'min-width', keys: ['minWidth', 'minSize'] },\n { kind: 'convert_fallback', css: 'max-width', keys: ['maxWidth', 'maxSize'] },\n { kind: 'convert_fallback', css: 'height', keys: ['height', 'size'] },\n {\n kind: 'convert_fallback',\n css: 'min-height',\n keys: ['minHeight', 'minSize'],\n },\n {\n kind: 'convert_fallback',\n css: 'max-height',\n keys: ['maxHeight', 'maxSize'],\n },\n { kind: 'convert', css: 'gap', key: 'gap' },\n { kind: 'simple', css: 'aspect-ratio', key: 'aspectRatio' },\n { kind: 'simple', css: 'contain', key: 'contain' },\n { kind: 'simple', css: 'container-type', key: 'containerType' },\n { kind: 'simple', css: 'container-name', key: 'containerName' },\n { kind: 'simple', css: 'container', key: 'container' },\n { kind: 'convert', css: 'inline-size', key: 'inlineSize' },\n { kind: 'convert', css: 'block-size', key: 'blockSize' },\n { kind: 'convert', css: 'min-inline-size', key: 'minInlineSize' },\n { kind: 'convert', css: 'min-block-size', key: 'minBlockSize' },\n { kind: 'convert', css: 'max-inline-size', key: 'maxInlineSize' },\n { kind: 'convert', css: 'max-block-size', key: 'maxBlockSize' },\n\n // ─── SPACING (edge shorthands) ────────────────────────────────────\n {\n kind: 'edge',\n property: 'margin',\n keys: {\n full: 'margin',\n x: 'marginX',\n y: 'marginY',\n top: 'marginTop',\n left: 'marginLeft',\n bottom: 'marginBottom',\n right: 'marginRight',\n },\n },\n {\n kind: 'edge',\n property: 'padding',\n keys: {\n full: 'padding',\n x: 'paddingX',\n y: 'paddingY',\n top: 'paddingTop',\n left: 'paddingLeft',\n bottom: 'paddingBottom',\n right: 'paddingRight',\n },\n },\n\n // Logical spacing\n { kind: 'convert', css: 'margin-inline', key: 'marginInline' },\n { kind: 'convert', css: 'margin-inline-start', key: 'marginInlineStart' },\n { kind: 'convert', css: 'margin-inline-end', key: 'marginInlineEnd' },\n { kind: 'convert', css: 'margin-block', key: 'marginBlock' },\n { kind: 'convert', css: 'margin-block-start', key: 'marginBlockStart' },\n { kind: 'convert', css: 'margin-block-end', key: 'marginBlockEnd' },\n { kind: 'convert', css: 'padding-inline', key: 'paddingInline' },\n { kind: 'convert', css: 'padding-inline-start', key: 'paddingInlineStart' },\n { kind: 'convert', css: 'padding-inline-end', key: 'paddingInlineEnd' },\n { kind: 'convert', css: 'padding-block', key: 'paddingBlock' },\n { kind: 'convert', css: 'padding-block-start', key: 'paddingBlockStart' },\n { kind: 'convert', css: 'padding-block-end', key: 'paddingBlockEnd' },\n\n // Logical inset\n { kind: 'convert', css: 'inset-inline', key: 'insetInline' },\n { kind: 'convert', css: 'inset-inline-start', key: 'insetInlineStart' },\n { kind: 'convert', css: 'inset-inline-end', key: 'insetInlineEnd' },\n { kind: 'convert', css: 'inset-block', key: 'insetBlock' },\n { kind: 'convert', css: 'inset-block-start', key: 'insetBlockStart' },\n { kind: 'convert', css: 'inset-block-end', key: 'insetBlockEnd' },\n\n // ─── FLEX ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'align-content', key: 'alignContent' },\n { kind: 'simple', css: 'align-items', key: 'alignItems' },\n { kind: 'simple', css: 'align-self', key: 'alignSelf' },\n { kind: 'simple', css: 'flex', key: 'flex' },\n { kind: 'simple', css: 'flex-basis', key: 'flexBasis' },\n { kind: 'simple', css: 'flex-direction', key: 'flexDirection' },\n { kind: 'simple', css: 'flex-flow', key: 'flexFlow' },\n { kind: 'simple', css: 'flex-grow', key: 'flexGrow' },\n { kind: 'simple', css: 'flex-shrink', key: 'flexShrink' },\n { kind: 'simple', css: 'flex-wrap', key: 'flexWrap' },\n { kind: 'simple', css: 'justify-content', key: 'justifyContent' },\n { kind: 'simple', css: 'justify-items', key: 'justifyItems' },\n { kind: 'simple', css: 'justify-self', key: 'justifySelf' },\n { kind: 'simple', css: 'place-items', key: 'placeItems' },\n { kind: 'simple', css: 'place-content', key: 'placeContent' },\n { kind: 'simple', css: 'place-self', key: 'placeSelf' },\n { kind: 'convert', css: 'row-gap', key: 'rowGap' },\n { kind: 'convert', css: 'column-gap', key: 'columnGap' },\n\n // ─── GRID ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'grid', key: 'grid' },\n { kind: 'simple', css: 'grid-area', key: 'gridArea' },\n { kind: 'convert', css: 'grid-auto-columns', key: 'gridAutoColumns' },\n { kind: 'simple', css: 'grid-auto-flow', key: 'gridAutoFlow' },\n { kind: 'convert', css: 'grid-auto-rows', key: 'gridAutoRows' },\n { kind: 'simple', css: 'grid-column', key: 'gridColumn' },\n { kind: 'simple', css: 'grid-column-end', key: 'gridColumnEnd' },\n { kind: 'convert', css: 'grid-column-gap', key: 'gridColumnGap' },\n { kind: 'convert', css: 'grid-column-start', key: 'gridColumnStart' },\n { kind: 'convert', css: 'grid-gap', key: 'gridGap' },\n { kind: 'simple', css: 'grid-row', key: 'gridRow' },\n { kind: 'simple', css: 'grid-row-start', key: 'gridRowStart' },\n { kind: 'simple', css: 'grid-row-end', key: 'gridRowEnd' },\n { kind: 'convert', css: 'grid-row-gap', key: 'gridRowGap' },\n { kind: 'simple', css: 'grid-template', key: 'gridTemplate' },\n { kind: 'simple', css: 'grid-template-areas', key: 'gridTemplateAreas' },\n { kind: 'simple', css: 'grid-template-columns', key: 'gridTemplateColumns' },\n { kind: 'simple', css: 'grid-template-rows', key: 'gridTemplateRows' },\n\n // ─── POSITIONING ──────────────────────────────────────────────────\n { kind: 'simple', css: 'object-fit', key: 'objectFit' },\n { kind: 'simple', css: 'object-position', key: 'objectPosition' },\n { kind: 'simple', css: 'order', key: 'order' },\n { kind: 'simple', css: 'opacity', key: 'opacity' },\n { kind: 'simple', css: 'resize', key: 'resize' },\n { kind: 'simple', css: 'vertical-align', key: 'verticalAlign' },\n\n // ─── FONT & TEXT ──────────────────────────────────────────────────\n { kind: 'simple', css: 'line-height', key: 'lineHeight' },\n { kind: 'simple', css: 'font', key: 'font' },\n { kind: 'simple', css: 'font-family', key: 'fontFamily' },\n { kind: 'convert', css: 'font-size', key: 'fontSize' },\n { kind: 'convert', css: 'font-size-adjust', key: 'fontSizeAdjust' },\n { kind: 'convert', css: 'font-stretch', key: 'fontStretch' },\n { kind: 'simple', css: 'font-style', key: 'fontStyle' },\n { kind: 'simple', css: 'font-variant', key: 'fontVariant' },\n { kind: 'simple', css: 'font-weight', key: 'fontWeight' },\n { kind: 'simple', css: 'font-kerning', key: 'fontKerning' },\n { kind: 'simple', css: 'font-feature-settings', key: 'fontFeatureSettings' },\n {\n kind: 'simple',\n css: 'font-variation-settings',\n key: 'fontVariationSettings',\n },\n { kind: 'simple', css: 'font-optical-sizing', key: 'fontOpticalSizing' },\n { kind: 'simple', css: 'text-align', key: 'textAlign' },\n { kind: 'simple', css: 'text-align-last', key: 'textAlignLast' },\n { kind: 'simple', css: 'text-transform', key: 'textTransform' },\n { kind: 'simple', css: 'text-decoration', key: 'textDecoration' },\n { kind: 'simple', css: 'text-decoration-color', key: 'textDecorationColor' },\n { kind: 'simple', css: 'text-decoration-line', key: 'textDecorationLine' },\n { kind: 'simple', css: 'text-decoration-style', key: 'textDecorationStyle' },\n {\n kind: 'simple',\n css: 'text-decoration-thickness',\n key: 'textDecorationThickness',\n },\n {\n kind: 'simple',\n css: 'text-underline-offset',\n key: 'textUnderlineOffset',\n },\n { kind: 'simple', css: 'text-emphasis', key: 'textEmphasis' },\n { kind: 'simple', css: 'text-emphasis-color', key: 'textEmphasisColor' },\n { kind: 'simple', css: 'text-emphasis-style', key: 'textEmphasisStyle' },\n { kind: 'simple', css: 'letter-spacing', key: 'letterSpacing' },\n { kind: 'simple', css: 'word-spacing', key: 'wordSpacing' },\n { kind: 'simple', css: 'text-indent', key: 'textIndent' },\n { kind: 'simple', css: 'text-justify', key: 'textJustify' },\n { kind: 'simple', css: 'text-overflow', key: 'textOverflow' },\n { kind: 'simple', css: 'text-shadow', key: 'textShadow' },\n { kind: 'simple', css: 'text-wrap', key: 'textWrap' },\n { kind: 'simple', css: 'text-rendering', key: 'textRendering' },\n { kind: 'simple', css: 'white-space', key: 'whiteSpace' },\n { kind: 'simple', css: 'word-break', key: 'wordBreak' },\n { kind: 'simple', css: 'word-wrap', key: 'wordWrap' },\n { kind: 'simple', css: 'writing-mode', key: 'writingMode' },\n { kind: 'simple', css: 'direction', key: 'direction' },\n { kind: 'simple', css: 'hyphens', key: 'hyphens' },\n\n // ─── LIST ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'list-style', key: 'listStyle' },\n { kind: 'simple', css: 'list-style-image', key: 'listStyleImage' },\n { kind: 'simple', css: 'list-style-position', key: 'listStylePosition' },\n { kind: 'simple', css: 'list-style-type', key: 'listStyleType' },\n\n // ─── BACKGROUND & COLORS ─────────────────────────────────────────\n { kind: 'simple', css: 'color', key: 'color' },\n { kind: 'simple', css: 'background', key: 'background' },\n { kind: 'simple', css: 'background-color', key: 'backgroundColor' },\n { kind: 'special', id: 'backgroundImage' },\n { kind: 'simple', css: 'background-attachment', key: 'backgroundAttachment' },\n { kind: 'simple', css: 'background-clip', key: 'backgroundClip' },\n { kind: 'simple', css: 'background-origin', key: 'backgroundOrigin' },\n { kind: 'simple', css: 'background-position', key: 'backgroundPosition' },\n { kind: 'simple', css: 'background-repeat', key: 'backgroundRepeat' },\n { kind: 'simple', css: 'background-size', key: 'backgroundSize' },\n\n // ─── BORDERS ──────────────────────────────────────────────────────\n {\n kind: 'border_radius',\n keys: {\n full: 'borderRadius',\n top: 'borderRadiusTop',\n bottom: 'borderRadiusBottom',\n left: 'borderRadiusLeft',\n right: 'borderRadiusRight',\n topLeft: 'borderRadiusTopLeft',\n topRight: 'borderRadiusTopRight',\n bottomLeft: 'borderRadiusBottomLeft',\n bottomRight: 'borderRadiusBottomRight',\n },\n },\n { kind: 'simple', css: 'border', key: 'border' },\n { kind: 'simple', css: 'border-top', key: 'borderTop' },\n { kind: 'simple', css: 'border-bottom', key: 'borderBottom' },\n { kind: 'simple', css: 'border-left', key: 'borderLeft' },\n { kind: 'simple', css: 'border-right', key: 'borderRight' },\n {\n kind: 'edge',\n property: 'border-width',\n keys: {\n full: 'borderWidth',\n x: 'borderWidthX',\n y: 'borderWidthY',\n top: 'borderWidthTop',\n left: 'borderWidthLeft',\n bottom: 'borderWidthBottom',\n right: 'borderWidthRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-style',\n keys: {\n full: 'borderStyle',\n x: 'borderStyleX',\n y: 'borderStyleY',\n top: 'borderStyleTop',\n left: 'borderStyleLeft',\n bottom: 'borderStyleBottom',\n right: 'borderStyleRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-color',\n keys: {\n full: 'borderColor',\n x: 'borderColorX',\n y: 'borderColorY',\n top: 'borderColorTop',\n left: 'borderColorLeft',\n bottom: 'borderColorBottom',\n right: 'borderColorRight',\n },\n },\n { kind: 'simple', css: 'border-image', key: 'borderImage' },\n { kind: 'simple', css: 'border-image-outset', key: 'borderImageOutset' },\n { kind: 'simple', css: 'border-image-repeat', key: 'borderImageRepeat' },\n { kind: 'simple', css: 'border-image-slice', key: 'borderImageSlice' },\n { kind: 'simple', css: 'border-image-source', key: 'borderImageSource' },\n { kind: 'simple', css: 'border-image-width', key: 'borderImageWidth' },\n { kind: 'simple', css: 'border-spacing', key: 'borderSpacing' },\n\n // Logical borders\n { kind: 'simple', css: 'border-inline', key: 'borderInline' },\n { kind: 'simple', css: 'border-block', key: 'borderBlock' },\n { kind: 'simple', css: 'border-inline-start', key: 'borderInlineStart' },\n { kind: 'simple', css: 'border-inline-end', key: 'borderInlineEnd' },\n { kind: 'simple', css: 'border-block-start', key: 'borderBlockStart' },\n { kind: 'simple', css: 'border-block-end', key: 'borderBlockEnd' },\n\n // ─── VISUAL EFFECTS ───────────────────────────────────────────────\n { kind: 'simple', css: 'backface-visibility', key: 'backfaceVisibility' },\n { kind: 'simple', css: 'box-shadow', key: 'boxShadow' },\n { kind: 'simple', css: 'filter', key: 'filter' },\n { kind: 'simple', css: 'backdrop-filter', key: 'backdropFilter' },\n { kind: 'simple', css: 'mix-blend-mode', key: 'mixBlendMode' },\n {\n kind: 'simple',\n css: 'background-blend-mode',\n key: 'backgroundBlendMode',\n },\n { kind: 'simple', css: 'isolation', key: 'isolation' },\n { kind: 'simple', css: 'outline', key: 'outline' },\n { kind: 'simple', css: 'outline-color', key: 'outlineColor' },\n { kind: 'simple', css: 'outline-offset', key: 'outlineOffset' },\n { kind: 'simple', css: 'outline-style', key: 'outlineStyle' },\n { kind: 'simple', css: 'outline-width', key: 'outlineWidth' },\n\n // ─── ANIMATIONS ───────────────────────────────────────────────────\n { kind: 'special', id: 'animation' },\n { kind: 'simple', css: 'animation-name', key: 'animationName' },\n { kind: 'simple', css: 'animation-duration', key: 'animationDuration' },\n {\n kind: 'simple',\n css: 'animation-timing-function',\n key: 'animationTimingFunction',\n },\n { kind: 'simple', css: 'animation-delay', key: 'animationDelay' },\n {\n kind: 'simple',\n css: 'animation-iteration-count',\n key: 'animationIterationCount',\n },\n { kind: 'simple', css: 'animation-direction', key: 'animationDirection' },\n { kind: 'simple', css: 'animation-fill-mode', key: 'animationFillMode' },\n { kind: 'simple', css: 'animation-play-state', key: 'animationPlayState' },\n { kind: 'simple', css: 'transition', key: 'transition' },\n { kind: 'simple', css: 'transition-delay', key: 'transitionDelay' },\n { kind: 'simple', css: 'transition-duration', key: 'transitionDuration' },\n { kind: 'simple', css: 'transition-property', key: 'transitionProperty' },\n {\n kind: 'simple',\n css: 'transition-timing-function',\n key: 'transitionTimingFunction',\n },\n\n // ─── TRANSFORM ────────────────────────────────────────────────────\n { kind: 'simple', css: 'transform', key: 'transform' },\n { kind: 'simple', css: 'transform-origin', key: 'transformOrigin' },\n { kind: 'simple', css: 'transform-style', key: 'transformStyle' },\n { kind: 'simple', css: 'translate', key: 'translate' },\n { kind: 'simple', css: 'rotate', key: 'rotate' },\n { kind: 'simple', css: 'scale', key: 'scale' },\n { kind: 'simple', css: 'will-change', key: 'willChange' },\n\n // ─── SCROLL ───────────────────────────────────────────────────────\n { kind: 'simple', css: 'scroll-behavior', key: 'scrollBehavior' },\n { kind: 'simple', css: 'scroll-snap-type', key: 'scrollSnapType' },\n { kind: 'simple', css: 'scroll-snap-align', key: 'scrollSnapAlign' },\n { kind: 'simple', css: 'scroll-snap-stop', key: 'scrollSnapStop' },\n { kind: 'simple', css: 'scroll-margin', key: 'scrollMargin' },\n { kind: 'simple', css: 'scroll-padding', key: 'scrollPadding' },\n { kind: 'simple', css: 'overscroll-behavior', key: 'overscrollBehavior' },\n {\n kind: 'simple',\n css: 'overscroll-behavior-x',\n key: 'overscrollBehaviorX',\n },\n {\n kind: 'simple',\n css: 'overscroll-behavior-y',\n key: 'overscrollBehaviorY',\n },\n\n // ─── INTERACTION ──────────────────────────────────────────────────\n { kind: 'simple', css: 'cursor', key: 'cursor' },\n { kind: 'simple', css: 'pointer-events', key: 'pointerEvents' },\n { kind: 'simple', css: 'user-select', key: 'userSelect' },\n { kind: 'simple', css: 'touch-action', key: 'touchAction' },\n { kind: 'simple', css: 'scrollbar-width', key: 'scrollbarWidth' },\n { kind: 'simple', css: 'scrollbar-color', key: 'scrollbarColor' },\n { kind: 'simple', css: 'scrollbar-gutter', key: 'scrollbarGutter' },\n { kind: 'simple', css: 'caret-color', key: 'caretColor' },\n { kind: 'simple', css: 'accent-color', key: 'accentColor' },\n { kind: 'simple', css: 'color-scheme', key: 'colorScheme' },\n\n // ─── OTHER ────────────────────────────────────────────────────────\n { kind: 'simple', css: 'caption-side', key: 'captionSide' },\n { kind: 'simple', css: 'clear', key: 'clear' },\n { kind: 'simple', css: 'clip', key: 'clip' },\n { kind: 'simple', css: 'clip-path', key: 'clipPath' },\n { kind: 'simple', css: 'content', key: 'content' },\n { kind: 'simple', css: 'content-visibility', key: 'contentVisibility' },\n { kind: 'simple', css: 'counter-increment', key: 'counterIncrement' },\n { kind: 'simple', css: 'counter-reset', key: 'counterReset' },\n { kind: 'simple', css: 'empty-cells', key: 'emptyCells' },\n { kind: 'simple', css: 'z-index', key: 'zIndex' },\n { kind: 'simple', css: 'overflow', key: 'overflow' },\n { kind: 'simple', css: 'overflow-wrap', key: 'overflowWrap' },\n { kind: 'simple', css: 'overflow-x', key: 'overflowX' },\n { kind: 'simple', css: 'overflow-y', key: 'overflowY' },\n { kind: 'simple', css: 'perspective', key: 'perspective' },\n { kind: 'simple', css: 'perspective-origin', key: 'perspectiveOrigin' },\n { kind: 'simple', css: 'quotes', key: 'quotes' },\n { kind: 'simple', css: 'tab-size', key: 'tabSize' },\n { kind: 'simple', css: 'table-layout', key: 'tableLayout' },\n { kind: 'simple', css: 'visibility', key: 'visibility' },\n { kind: 'simple', css: 'appearance', key: 'appearance' },\n { kind: 'simple', css: 'image-rendering', key: 'imageRendering' },\n\n // Masks\n { kind: 'simple', css: 'mask-image', key: 'maskImage' },\n { kind: 'simple', css: 'mask-size', key: 'maskSize' },\n { kind: 'simple', css: 'mask-position', key: 'maskPosition' },\n { kind: 'simple', css: 'mask-repeat', key: 'maskRepeat' },\n\n // Shapes\n { kind: 'simple', css: 'shape-outside', key: 'shapeOutside' },\n { kind: 'simple', css: 'shape-margin', key: 'shapeMargin' },\n {\n kind: 'simple',\n css: 'shape-image-threshold',\n key: 'shapeImageThreshold',\n },\n\n // Columns\n { kind: 'simple', css: 'column-count', key: 'columnCount' },\n { kind: 'simple', css: 'column-width', key: 'columnWidth' },\n { kind: 'simple', css: 'column-rule', key: 'columnRule' },\n { kind: 'simple', css: 'columns', key: 'columns' },\n\n // Fragmentation\n { kind: 'simple', css: 'break-before', key: 'breakBefore' },\n { kind: 'simple', css: 'break-after', key: 'breakAfter' },\n { kind: 'simple', css: 'break-inside', key: 'breakInside' },\n { kind: 'simple', css: 'orphans', key: 'orphans' },\n { kind: 'simple', css: 'widows', key: 'widows' },\n { kind: 'simple', css: 'print-color-adjust', key: 'printColorAdjust' },\n\n // ─── CUSTOM ATTRIBUTES ────────────────────────────────────────────\n { kind: 'special', id: 'hideEmpty' },\n { kind: 'special', id: 'clearFix' },\n { kind: 'special', id: 'extendCss' },\n]\n\nexport default propertyMap\n","import { borderRadius, edge } from '~/styles/shorthands'\nimport type { Css } from '~/types'\nimport { values } from '~/units'\nimport processDescriptor from './processDescriptor'\nimport propertyMap from './propertyMap'\nimport type { InnerTheme, Theme } from './types'\n\nexport type { Theme as StylesTheme }\n\nexport type Styles = ({\n theme,\n css,\n rootSize,\n}: {\n theme: InnerTheme\n css: Css\n rootSize?: number\n}) => ReturnType<typeof css>\n\n/**\n * Data-driven style processor. Iterates the `propertyMap` descriptors\n * and delegates each to `processDescriptor`, which maps theme values\n * to CSS strings. The result is a single `css` tagged-template literal\n * containing all non-null property outputs.\n */\nconst styles: Styles = ({ theme: t, css, rootSize }) => {\n const calc = (...params: any[]) => values(params, rootSize)\n const shorthand = edge(rootSize)\n const borderRadiusFn = borderRadius(rootSize)\n\n const fragments = propertyMap.map((d) =>\n processDescriptor(d, t, css, calc, shorthand, borderRadiusFn),\n )\n\n return css`\n ${fragments}\n `\n}\n\nexport default styles\n"],"mappings":";;;;;AAAA,MAAM,cAAc;CAClB,UAAU;CACV,aAAa;EACX,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,KAAK;EACN;CACF;;;;;;;;;;ACMD,MAAM,sBAA0C,EAC9C,aACA,UACA,UAEA,OAAO,KAAK,YAAY,CAAC,QAA6B,KAAK,QAAQ;CAGjE,MAAM,kBAAmB,YAAuC;AAEhE,KAAI,oBAAoB,EACtB,KAAI,QAAQ,GAAG,SAAgB,IAAI,GAAG,KAAK;UAClC,mBAAmB,MAAM;EAClC,MAAM,SAAS,kBAAkB;AAEjC,MAAI,QAAQ,GAAG,SAAgB,GAAG;+CACO,OAAO;cACxC,IAAI,GAAG,KAAK,CAAC;;;;AAKvB,QAAO;GACN,EAAE,CAAC;;;;;AC3BR,MAAM,yBACH,iBAAiB,UAAU;CAC1B,MAAM,SAAkC,EAAE;AAE1C,aAAY,SAAS,MAAM,MAAM;AAC/B,SAAO,QAAQ,MAAM,MAAM,GAAG,aAAa,OAAO;GAClD;AAEF,QAAO;;AAGX,MAAM,iBAAiB,SAA8B,GAAQ,MAAc;CACzE,MAAM,eAAe,IAAI;CACzB,MAAM,YAAY,IAAI,IAAI,SAAS;AAEnC,QAAO,gBAAgB;;AAYzB,MAAM,kBACH,SACA,IAAY,GAAW,KAAe,QAAiC;CACtE,MAAM,eAAe,IAAI;CACzB,MAAM,gBAAgB,IAAI,IAAI,IAAI;AAGlC,KAAI,gBAAgB,KAAM,QAAO;AACjC,QAAO;;AAGX,MAAM,iBAAiB,gBAAyB;AAEhD,MAAM,mBAAmB,UACvB,OAAO,OAAO,MAAM,CAAC,MAClB,SAAS,OAAO,SAAS,YAAY,MAAM,QAAQ,KAAK,CAC1D;;;;;;;AAgBH,MAAM,kBAAkC,EAAE,OAAO,kBAAkB;AACjE,KAAI,CAAC,gBAAgB,MAAM,CAAE,QAAO;CAEpC,MAAM,cAAc,sBAAsB,YAAY;CACtD,MAAM,SAAkC,EAAE;AAE1C,QAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW;AAC9C,MAAI,SAAS,KAAM;AAGnB,MAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,OAAO,YAAY,cAAc,MAAa,CAAC;WAG/C,OAAO,UAAU,SACxB,QAAO,OAAO,YAAY,eAAe,MAA6B,CAAC;MAIvE,QAAO,OAAO,YAAY,cAAc,MAAM,CAAC;GAEjD;AAEF,QAAO;;;;;ACtFT,MAAM,gBACJ,GACA,MACY;AACZ,KAAI,MAAM,EAAG,QAAO;AACpB,KAAI,CAAC,KAAK,CAAC,EAAG,QAAO;CAErB,MAAM,QAAQ,OAAO,KAAK,EAAE;CAC5B,MAAM,QAAQ,OAAO,KAAK,EAAE;AAE5B,KAAI,MAAM,WAAW,MAAM,OAAQ,QAAO;AAE1C,MAAK,MAAM,OAAO,MAChB,KAAI,EAAE,SAAS,EAAE,KAAM,QAAO;AAGhC,QAAO;;;;;;;AAQT,MAAM,iBAAgC,EAAE,OAAO,kBAAkB;CAC/D,MAAM,SAAkD,EAAE;AAE1D,MAAK,IAAI,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;EAC3C,MAAM,MAAM,YAAY;EACxB,MAAM,qBAAqB,YAAY,IAAI;EAE3C,MAAM,UAAU,MAAM;AACtB,MACE,YACC,MAAM,KAAK,CAAC,aAAa,MAAM,qBAAqB,QAAQ,EAE7D,QAAO,OAAO;;AAIlB,QAAO;;;;;;AC7CT,MAAM,wBAAwB,KAA8B,SAAmB;CAC7E,MAAM,SAAkC,EAAE;AAE1C,MAAK,SAAS,OAAO;EACnB,MAAM,QAAQ,IAAI;AAElB,MAAI,MACF,QAAO,MAAM;GAEf;AAEF,QAAO;;;;;;;;AAiBT,MAAM,kBAAkC,EAAE,OAAO,kBAAkB;CACjE,MAAM,SAAS,EAAE;AAEjB,KAAI,QAAQ,MAAM,IAAI,QAAQ,YAAY,CAAE,QAAO;AAMnD,QAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW;AAE9C,MAAI,MAAM,QAAQ,MAAM,IAAI,MAAM,SAAS,EACzC,OAAM,SAAS,OAAO,MAAM;GAC1B,MAAM,kBAAkB,YAAY;AACpC,OAAI,QAAQ,CAAC,iBAAiB,IAAI,EAAE,MAAM;IAC1C;WAGK,OAAO,UAAU,YAAY,UAAU,KAC9C,QAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,UAAU,gBAAgB;AACxD,OAAI,QAAQ,CAAC,UAAU,IAAI,EAAE,WAAW;IACxC;WAGK,SAAS,MAAM;GACtB,MAAM,kBAAkB,YAAY;AACpC,OAAI,QAAQ,CAAC,iBAAiB,IAAI,EAAE,MAAM;;GAE5C;AAEF,QAAO,qBAAqB,QAAQ,YAAY;;;;;;;;;;;;;;;ACDlD,MAAM,oBACH,EAAE,OAAO,aAAa,MAAM,IAAI,KAAK,QAAQ,YAAY,aACzD,EAAE,QAAQ,EAAE,EAAE,GAAG,YAAY;CAC5B,MAAM,gBAAgB,eAAe,MAAM;AAG3C,KAAI,QAAQ,cAAc,CAAE,QAAO;CAEnC,MAAM,EAAE,UAAU,aAAa,gBAAgB,GAAG,cAChD;CAEF,MAAM,gBACJ,UAEA,OAAO;EAAE;EAAO;EAAK;EAAU,aAAa;EAAW,CAAC;AAG1D,KAAI,QAAQ,YAAY,IAAI,QAAQ,eAAe,CACjD,QAAO,GAAG;UACN,aAAa,cAAc,CAAC;;CAKlC,MAAM,EAAE,OAAO,sBAAsB;CAErC,IAAI,cAAc;AAElB,KAAI,UACF,eAAc,eAAe;EAC3B,OAAO;EACP,aAAa;EACd,CAAC;CAQJ,MAAM,iBAAiB,cAAc;EACnC,OANuB,eAAe;GACtC,OAAO;GACP,aAAa;GACd,CAAC;EAIA,aAAa;EACd,CAAC;AAEF,QAAO,kBAAkB,KAAK,SAAiB;EAC7C,MAAM,kBAAkB,eAAe;AAEvC,MAAI,CAAC,mBAAmB,CAAC,MAAO,QAAO;EAEvC,MAAM,SAAS,aAAa,gBAAgB;AAE5C,SAAO,AAAC,MAA8B,KAAK;UACvC,OAAO;;GAEX;;;;;;AC9GN,MAAM,mBAAoC,gBAAgB;AAKxD,QAJe,OAAO,KAAK,YAAY,CAAC,MACrC,GAAG,MAAM,YAAY,KAAM,YAAY,GACzC;;;;;;;;;;ACuBH,MAAM,YAA2B,EAAE,OAAO,UAAU,GAAG,YAAY;CACjE,MAAM,EAAE,aAAa,aAAa;CAElC,MAAM,oBAAoB,cAAc;AACtC,MAAI,eAAe,CAAC,QAAQ,YAAY,CACtC,QAAO,gBAAgB,YAAY;IAIpC,CAAC,YAAY,CAAC;CAEjB,MAAM,QAAQ,cAAc;AAC1B,MAAI,eAAe,CAAC,QAAQ,YAAY,CACtC,QAAO,mBAAmB;GACxB;GACA,KAAK,OAAO;GACZ;GACD,CAAC;IAIH,CAAC,aAAa,SAAS,CAAC;AAU3B,QACE,oBAACA;EAAa,OATD;GACb,GAAG;GACH,gBAAgB;IACd;IACA;IACD;GACF;EAG8B,GAAI;EAC9B;GACY;;;;;AC3DnB,MAAM,2BAA2B;CAC/B,QAAQ;CACR,cAAc;CACd,aAAa;CACb,OAAO;CACR;AAED,MAAa,sBAAsB;CACjC,MAAM;CACN,OAAO;CACP,GAAG;CACJ;AAED,MAAa,sBAAsB;CACjC,KAAK;CACL,QAAQ;CACR,GAAG;CACJ;AAED,MAAa,0BAOT;CACE,QAAQ;CACR,eAAe;CACf,MAAM;CACN,aAAa;CACd;;;;;;AAiBL,MAAM,gBAA8B,UAAU;CAC5C,MAAM,EAAE,WAAW,QAAQ,WAAW;AAEtC,KAAI,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAC9C,QAAO;CAGT,MAAM,aAAa,CAAC,UAAU,gBAAgB,CAAC,SAAS,UAAU;CAClE,MAAM,MAAM,wBAAwB;CACpC,MAAM,IAAI,oBAAoB;CAC9B,MAAM,IAAI,oBAAoB;AAE9B,QAAO,OAAO,GAAG;sBACG,IAAI;mBACP,aAAa,IAAI,EAAE;uBACf,aAAa,IAAI,EAAE;;;;;;;;;;ACvD1C,MAAM,aAAwB,WAAW;AACvC,KAAI,CAAC,OAAQ,QAAO;AACpB,KAAI,OAAO,WAAW,WACpB,QAAO,OAAO,OAAO,IAAI;AAG3B,QAAO;;;;;;;;;;;ACNT,MAAM,aAAwB,OAAO,eAAe;CAClD,MAAM,WAAW;AAEjB,KAAI,OAAO,UAAU,SAAU,QAAO,aAAa,CAAC,OAAO,OAAU,GAAG;CAExE,MAAM,eAAe,MAAM,MAAM,SAAS;AAE1C,KAAI,YAAY;AACd,MAAI,aAAc,QAAO,CAAC,WAAW,MAAM,EAAE,aAAa,GAAG;AAC7D,SAAO,CAAC,OAAO,OAAU;;AAG3B,KAAI,aAAc,QAAO,WAAW,MAAM;AAE1C,QAAO;;;;;;ACRT,MAAM,cAAc,UAAmB,CAAC,SAAS,UAAU;;;;;;;AAc3D,MAAM,SACJ,OACA,WAAW,IACX,aAA+B,SAC5B;AAEH,KAAI,WAAW,MAAM,CAAE,QAAO;CAE9B,MAAM,CAAC,KAAK,QAAQ,UAAU,OAAiB,KAAK;AACpD,KAAI,WAAW,IAAI,CAAE,QAAO;AAC5B,KAAI,QAAQ,KAAK,OAAO,QAAQ,SAAU,QAAO;CAEjD,MAAM,aAAa,YAAY,CAAC,OAAO,MAAM,IAAI;AACjD,KAAI,cAAc,CAAC,QAAQ,eAAe,KAAM,QAAO,GAAG,MAAM;AAChE,KAAI,cAAc,CAAC,KAAM,QAAO,GAAG,MAAM,SAAS;AAClD,KAAI,cAAc,SAAS,QAAQ,eAAe,MAChD,QAAO,GAAG,MAAM,SAAS;AAC3B,KAAI,KAAM,QAAO;AAEjB,QAAO,GAAG,MAAM;;;;;AChDlB,MAAM,cAA0B,GAAG,WACjC,OAAO,MAAM,UAAU,OAAO,UAAU,eAAe,UAAU,KAAK;;;;;;AAaxE,MAAM,UAAkB,QAAQ,UAAU,eAAe;CACvD,MAAM,QAAQ,WAAW,GAAG,OAAO;AAEnC,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,KAAK,SAAS,MAAM,MAAM,UAAU,WAAW,CAAC,CAAC,KAAK,IAAI;AAGzE,QAAO,MAAM,OAAO,UAAU,WAAW;;;;;ACvB3C,MAAMC,kBAAgB,MAAe,CAAC,CAAC,KAAK,MAAM;AAgBlD,MAAMC,iBAAe,MACnBD,eAAa,EAAE,KAAK,IACpBA,eAAa,EAAE,IAAI,IACnBA,eAAa,EAAE,OAAO,IACtBA,eAAa,EAAE,KAAK,IACpBA,eAAa,EAAE,MAAM,IACrBA,eAAa,EAAE,QAAQ,IACvBA,eAAa,EAAE,SAAS,IACxBA,eAAa,EAAE,WAAW,IAC1BA,eAAa,EAAE,YAAY;AAG7B,MAAM,kBAAkB,MAAoB;CAC1C,MAAM,UAAgB;EAAC,EAAE;EAAM,EAAE;EAAM,EAAE;EAAM,EAAE;EAAK;AAEtD,KAAIA,eAAa,EAAE,IAAI,EAAE;AACvB,UAAQ,KAAK,EAAE;AACf,UAAQ,KAAK,EAAE;;AAEjB,KAAIA,eAAa,EAAE,OAAO,EAAE;AAC1B,UAAQ,KAAK,EAAE;AACf,UAAQ,KAAK,EAAE;;AAEjB,KAAIA,eAAa,EAAE,KAAK,EAAE;AACxB,UAAQ,KAAK,EAAE;AACf,UAAQ,KAAK,EAAE;;AAEjB,KAAIA,eAAa,EAAE,MAAM,EAAE;AACzB,UAAQ,KAAK,EAAE;AACf,UAAQ,KAAK,EAAE;;AAGjB,KAAIA,eAAa,EAAE,QAAQ,CAAE,SAAQ,KAAK,EAAE;AAC5C,KAAIA,eAAa,EAAE,SAAS,CAAE,SAAQ,KAAK,EAAE;AAC7C,KAAIA,eAAa,EAAE,YAAY,CAAE,SAAQ,KAAK,EAAE;AAChD,KAAIA,eAAa,EAAE,WAAW,CAAE,SAAQ,KAAK,EAAE;AAE/C,QAAO;;AAGT,MAAME,qBAAmB,SAAe,SAAyB;CAC/D,MAAM,CAAC,IAAI,IAAI,IAAI,MAAM;AAEzB,KAAI,QAAQ,OAAO,KAAK,GAAG,QAAQ,QAAQ,IAAI,GAAG,CAChD,QAAO,kBAAkB,KAAK,GAAG,CAAC;AAEpC,KAAI,OAAO,MAAM,OAAO,GAAI,QAAO,kBAAkB,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAE1E,KAAI,MAAM,OAAO,MAAM,GACrB,QAAO,kBAAkB,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAE5D,QAAO,kBAAkB,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;;AAGxE,MAAM,aAAa;CACjB;CACA;CACA;CACA;CACD;AAED,MAAMC,sBAAoB,SAAe,SAAyB;CAChE,IAAI,SAAS;AACb,MAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAClC,KAAIH,eAAa,QAAQ,GAAG,CAC1B,WAAU,GAAG,WAAW,GAAG,IAAI,KAAK,QAAQ,GAAG,CAAC;AAEpD,QAAO;;;;;;;;AAaT,MAAM,gBAA8B,cAAc,UAAU;AAC1D,KAAI,CAACC,cAAY,MAAM,CAAE,QAAO;CAEhC,MAAM,QAAQ,UAAc,MAAM,OAAc,SAAS;CACzD,MAAM,UAAU,eAAe,MAAM;AAErC,KAAI,QAAQ,OAAO,QAAQD,eAAa,IAAI,CAAC,CAC3C,QAAOE,kBAAgB,SAAS,KAAK;AAEvC,QAAOC,mBAAiB,SAAS,KAAK;;;;;ACzGxC,MAAM,gBAAgB,MAAe,CAAC,CAAC,KAAK,MAAM;AA2BlD,MAAM,cAA2B;CAC/B,OAAO;EACL,MAAM;EACN,UAAU,SAAS;EACpB;CACD,QAAQ;EACN,MAAM;EACN,UAAU,SAAS,UAAU;EAC9B;CACD,SAAS;EACP,MAAM;EACN,UAAU,SAAS,WAAW;EAC/B;CACD,gBAAgB;EACd,MAAM;EACN,UAAU,SAAS,UAAU,KAAK;EACnC;CACD,gBAAgB,EACd,UAAU,SAAS,UAAU,KAAK,SACnC;CACD,gBAAgB,EACd,UAAU,SAAS,UAAU,KAAK,SACnC;CACF;AAED,MAAM,eAAe,SACnB,aAAa,KAAK,IAAI,IACtB,aAAa,KAAK,OAAO,IACzB,aAAa,KAAK,KAAK,IACvB,aAAa,KAAK,MAAM,IACxB,aAAa,KAAK,EAAE,IACpB,aAAa,KAAK,EAAE,IACpB,aAAa,KAAK,KAAK;AAGzB,MAAM,gBAAgB,EAAE,MAAM,GAAG,GAAG,KAAK,MAAM,OAAO,aAAyB;CAC7E,MAAM,QAAiB;EAAC;EAAM;EAAM;EAAM;EAAK;AAE/C,KAAI,aAAa,EAAE,EAAE;AACnB,QAAM,KAAK;AACX,QAAM,KAAK;;AAGb,KAAI,aAAa,EAAE,EAAE;AACnB,QAAM,KAAK;AACX,QAAM,KAAK;;AAGb,KAAI,aAAa,IAAI,CAAE,OAAM,KAAK;AAClC,KAAI,aAAa,MAAM,CAAE,OAAM,KAAK;AACpC,KAAI,aAAa,OAAO,CAAE,OAAM,KAAK;AACrC,KAAI,aAAa,KAAK,CAAE,OAAM,KAAK;AAEnC,QAAO;;AAGT,MAAM,mBACJ,UACA,OACA,SACG;CACH,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK;AAErB,KAAI,MAAM,OAAO,KAAK,GAAG,QAAQ,QAAQ,IAAI,GAAG,CAC9C,QAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;AAEjC,KAAI,MAAM,KAAK,MAAM,EAAG,QAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;AAElE,KAAI,KAAK,MAAM,KAAK,EAAG,QAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;AAE5E,QAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;;AAGlE,MAAM,oBACJ,OACA,SACA,SACG;CACH,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK;CACrB,IAAI,SAAS;AAEb,KAAI,aAAa,EAAE,CAAE,WAAU,GAAG,QAAQ,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;AAC7D,KAAI,aAAa,EAAE,CAAE,WAAU,GAAG,QAAQ,SAAS,CAAC,IAAI,KAAK,EAAE,CAAC;AAChE,KAAI,aAAa,EAAE,CAAE,WAAU,GAAG,QAAQ,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;AAC9D,KAAI,aAAa,EAAE,CAAE,WAAU,GAAG,QAAQ,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;AAE/D,QAAO;;;;;;;;AAaT,MAAM,QACH,WAAW,QACX,UAAU,WAAW;AACpB,KAAI,CAAC,YAAY,OAAO,CAAE,QAAO;CAEjC,MAAM,EAAE,MAAM,YAAY,YAAY;CACtC,MAAM,QAAQ,UACZ,OAAO,MAAM,OAAc,UAAU,KAAK,GAAG;CAE/C,MAAM,QAAQ,aAAa,OAAO;AAElC,KAAI,MAAM,OAAO,QAAQ,aAAa,IAAI,CAAC,CACzC,QAAO,gBAAgB,UAAU,OAAO,KAAK;AAE/C,QAAO,iBAAiB,OAAO,SAAS,KAAK;;;;;ACtIjD,MAAM,aAAa,KAAa,MAC9B,KAAK,OAAO,KAAK,GAAG,IAAI,IAAI,EAAE;;;;;;;;;;;AAYhC,MAAM,kBACJ,GACA,GACA,QACoC;AACpC,SAAQ,EAAE,IAAV;EACE,KAAK;AACH,OAAI,CAAC,EAAE,WAAY,QAAO;AAC1B,UAAO,GAAG;;;;;;;EAQZ,KAAK;AACH,OAAI,CAAC,EAAE,gBAAiB,QAAO;AAC/B,UAAO,GAAG;gCACgB,EAAE,gBAAgB;;EAG9C,KAAK,aAAa;GAChB,MAAM,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;AACjE,UAAO,QAAQ,cAAc,MAAM,KAAK;;EAG1C,KAAK,YAC4B,QAAO;EAOxC,KAAK,WAC2B,QAAO;EASvC,KAAK,YACH,QAAO,EAAE,aAAa;EAExB,QACE,QAAO;;;AAIb,MAAM,qBACJ,GACA,GACA,KACA,MACA,WACA,mBACoC;AACpC,SAAQ,EAAE,MAAV;EACE,KAAK,SACH,QAAO,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK;EAEnC,KAAK,UACH,QAAO,UAAU,EAAE,KAAK,KAAK,EAAE,EAAE,KAAK,CAAC;EAEzC,KAAK,mBACH,QAAO,UAAU,EAAE,KAAK,KAAK,GAAG,EAAE,KAAK,KAAK,MAAM,EAAE,GAAG,CAAC,CAAC;EAE3D,KAAK,OACH,QACE,UAAU,EAAE,UAAU;GACpB,MAAM,EAAE,EAAE,KAAK;GACf,GAAG,EAAE,EAAE,KAAK;GACZ,GAAG,EAAE,EAAE,KAAK;GACZ,KAAK,EAAE,EAAE,KAAK;GACd,MAAM,EAAE,EAAE,KAAK;GACf,QAAQ,EAAE,EAAE,KAAK;GACjB,OAAO,EAAE,EAAE,KAAK;GACjB,CAAC,IAAI;EAGV,KAAK,gBACH,QACE,eAAe;GACb,MAAM,EAAE,EAAE,KAAK;GACf,KAAK,EAAE,EAAE,KAAK;GACd,QAAQ,EAAE,EAAE,KAAK;GACjB,MAAM,EAAE,EAAE,KAAK;GACf,OAAO,EAAE,EAAE,KAAK;GAChB,SAAS,EAAE,EAAE,KAAK;GAClB,UAAU,EAAE,EAAE,KAAK;GACnB,YAAY,EAAE,EAAE,KAAK;GACrB,aAAa,EAAE,EAAE,KAAK;GACvB,CAAC,IAAI;EAGV,KAAK,UACH,QAAO,eAAe,GAAG,GAAG,IAAI;;;;;;ACpEtC,MAAM,cAAoC;CAExC;EAAE,MAAM;EAAW,IAAI;EAAc;CAGrC;EAAE,MAAM;EAAU,KAAK;EAAO,KAAK;EAAO;CAC1C;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAY,KAAK;EAAY;CACpD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAS,KAAK;EAAS;CAG9C;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CAGD;EAAE,MAAM;EAAoB,KAAK;EAAS,MAAM,CAAC,SAAS,OAAO;EAAE;CACnE;EAAE,MAAM;EAAoB,KAAK;EAAa,MAAM,CAAC,YAAY,UAAU;EAAE;CAC7E;EAAE,MAAM;EAAoB,KAAK;EAAa,MAAM,CAAC,YAAY,UAAU;EAAE;CAC7E;EAAE,MAAM;EAAoB,KAAK;EAAU,MAAM,CAAC,UAAU,OAAO;EAAE;CACrE;EACE,MAAM;EACN,KAAK;EACL,MAAM,CAAC,aAAa,UAAU;EAC/B;CACD;EACE,MAAM;EACN,KAAK;EACL,MAAM,CAAC,aAAa,UAAU;EAC/B;CACD;EAAE,MAAM;EAAW,KAAK;EAAO,KAAK;EAAO;CAC3C;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAa;CACtD;EAAE,MAAM;EAAW,KAAK;EAAe,KAAK;EAAc;CAC1D;EAAE,MAAM;EAAW,KAAK;EAAc,KAAK;EAAa;CACxD;EAAE,MAAM;EAAW,KAAK;EAAmB,KAAK;EAAiB;CACjE;EAAE,MAAM;EAAW,KAAK;EAAkB,KAAK;EAAgB;CAC/D;EAAE,MAAM;EAAW,KAAK;EAAmB,KAAK;EAAiB;CACjE;EAAE,MAAM;EAAW,KAAK;EAAkB,KAAK;EAAgB;CAG/D;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CACD;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CAGD;EAAE,MAAM;EAAW,KAAK;EAAiB,KAAK;EAAgB;CAC9D;EAAE,MAAM;EAAW,KAAK;EAAuB,KAAK;EAAqB;CACzE;EAAE,MAAM;EAAW,KAAK;EAAqB,KAAK;EAAmB;CACrE;EAAE,MAAM;EAAW,KAAK;EAAgB,KAAK;EAAe;CAC5D;EAAE,MAAM;EAAW,KAAK;EAAsB,KAAK;EAAoB;CACvE;EAAE,MAAM;EAAW,KAAK;EAAoB,KAAK;EAAkB;CACnE;EAAE,MAAM;EAAW,KAAK;EAAkB,KAAK;EAAiB;CAChE;EAAE,MAAM;EAAW,KAAK;EAAwB,KAAK;EAAsB;CAC3E;EAAE,MAAM;EAAW,KAAK;EAAsB,KAAK;EAAoB;CACvE;EAAE,MAAM;EAAW,KAAK;EAAiB,KAAK;EAAgB;CAC9D;EAAE,MAAM;EAAW,KAAK;EAAuB,KAAK;EAAqB;CACzE;EAAE,MAAM;EAAW,KAAK;EAAqB,KAAK;EAAmB;CAGrE;EAAE,MAAM;EAAW,KAAK;EAAgB,KAAK;EAAe;CAC5D;EAAE,MAAM;EAAW,KAAK;EAAsB,KAAK;EAAoB;CACvE;EAAE,MAAM;EAAW,KAAK;EAAoB,KAAK;EAAkB;CACnE;EAAE,MAAM;EAAW,KAAK;EAAe,KAAK;EAAc;CAC1D;EAAE,MAAM;EAAW,KAAK;EAAqB,KAAK;EAAmB;CACrE;EAAE,MAAM;EAAW,KAAK;EAAmB,KAAK;EAAiB;CAGjE;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAQ,KAAK;EAAQ;CAC5C;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAW,KAAK;EAAW,KAAK;EAAU;CAClD;EAAE,MAAM;EAAW,KAAK;EAAc,KAAK;EAAa;CAGxD;EAAE,MAAM;EAAU,KAAK;EAAQ,KAAK;EAAQ;CAC5C;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAW,KAAK;EAAqB,KAAK;EAAmB;CACrE;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAgB;CAC9D;EAAE,MAAM;EAAW,KAAK;EAAkB,KAAK;EAAgB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAiB;CAChE;EAAE,MAAM;EAAW,KAAK;EAAmB,KAAK;EAAiB;CACjE;EAAE,MAAM;EAAW,KAAK;EAAqB,KAAK;EAAmB;CACrE;EAAE,MAAM;EAAW,KAAK;EAAY,KAAK;EAAW;CACpD;EAAE,MAAM;EAAU,KAAK;EAAY,KAAK;EAAW;CACnD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAgB;CAC9D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAc;CAC1D;EAAE,MAAM;EAAW,KAAK;EAAgB,KAAK;EAAc;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAyB,KAAK;EAAuB;CAC5E;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAoB;CAGtE;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAS,KAAK;EAAS;CAC9C;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAG/D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAQ,KAAK;EAAQ;CAC5C;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAW,KAAK;EAAa,KAAK;EAAY;CACtD;EAAE,MAAM;EAAW,KAAK;EAAoB,KAAK;EAAkB;CACnE;EAAE,MAAM;EAAW,KAAK;EAAgB,KAAK;EAAe;CAC5D;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAyB,KAAK;EAAuB;CAC5E;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAiB;CAChE;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAyB,KAAK;EAAuB;CAC5E;EAAE,MAAM;EAAU,KAAK;EAAwB,KAAK;EAAsB;CAC1E;EAAE,MAAM;EAAU,KAAK;EAAyB,KAAK;EAAuB;CAC5E;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAa;CACtD;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAGlD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAkB;CAClE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAiB;CAGhE;EAAE,MAAM;EAAU,KAAK;EAAS,KAAK;EAAS;CAC9C;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAc;CACxD;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAmB;CACnE;EAAE,MAAM;EAAW,IAAI;EAAmB;CAC1C;EAAE,MAAM;EAAU,KAAK;EAAyB,KAAK;EAAwB;CAC7E;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAqB,KAAK;EAAoB;CACrE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EAAE,MAAM;EAAU,KAAK;EAAqB,KAAK;EAAoB;CACrE;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CAGjE;EACE,MAAM;EACN,MAAM;GACJ,MAAM;GACN,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACP,SAAS;GACT,UAAU;GACV,YAAY;GACZ,aAAa;GACd;EACF;CACD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CACD;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CACD;EACE,MAAM;EACN,UAAU;EACV,MAAM;GACJ,MAAM;GACN,GAAG;GACH,GAAG;GACH,KAAK;GACL,MAAM;GACN,QAAQ;GACR,OAAO;GACR;EACF;CACD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAoB;CACtE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAoB;CACtE;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAG/D;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAqB,KAAK;EAAmB;CACpE;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAoB;CACtE;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAkB;CAGlE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAgB;CAC9D;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAa;CACtD;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAG7D;EAAE,MAAM;EAAW,IAAI;EAAa;CACpC;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAqB;CACvE;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAqB;CACxE;EAAE,MAAM;EAAU,KAAK;EAAwB,KAAK;EAAsB;CAC1E;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAc;CACxD;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAmB;CACnE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CAGD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAa;CACtD;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAmB;CACnE;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAa;CACtD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAS,KAAK;EAAS;CAC9C;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CAGzD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAkB;CAClE;EAAE,MAAM;EAAU,KAAK;EAAqB,KAAK;EAAmB;CACpE;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAkB;CAClE;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAuB,KAAK;EAAsB;CACzE;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CACD;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CAGD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAkB,KAAK;EAAiB;CAC/D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CACjE;EAAE,MAAM;EAAU,KAAK;EAAoB,KAAK;EAAmB;CACnE;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAG3D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAS,KAAK;EAAS;CAC9C;EAAE,MAAM;EAAU,KAAK;EAAQ,KAAK;EAAQ;CAC5C;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAqB;CACvE;EAAE,MAAM;EAAU,KAAK;EAAqB,KAAK;EAAoB;CACrE;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAU;CACjD;EAAE,MAAM;EAAU,KAAK;EAAY,KAAK;EAAY;CACpD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAe;CAC1D;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAqB;CACvE;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAY,KAAK;EAAW;CACnD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAc;CACxD;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAc;CACxD;EAAE,MAAM;EAAU,KAAK;EAAmB,KAAK;EAAkB;CAGjE;EAAE,MAAM;EAAU,KAAK;EAAc,KAAK;EAAa;CACvD;EAAE,MAAM;EAAU,KAAK;EAAa,KAAK;EAAY;CACrD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CAGzD;EAAE,MAAM;EAAU,KAAK;EAAiB,KAAK;EAAgB;CAC7D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EACE,MAAM;EACN,KAAK;EACL,KAAK;EACN;CAGD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAGlD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAe,KAAK;EAAc;CACzD;EAAE,MAAM;EAAU,KAAK;EAAgB,KAAK;EAAe;CAC3D;EAAE,MAAM;EAAU,KAAK;EAAW,KAAK;EAAW;CAClD;EAAE,MAAM;EAAU,KAAK;EAAU,KAAK;EAAU;CAChD;EAAE,MAAM;EAAU,KAAK;EAAsB,KAAK;EAAoB;CAGtE;EAAE,MAAM;EAAW,IAAI;EAAa;CACpC;EAAE,MAAM;EAAW,IAAI;EAAY;CACnC;EAAE,MAAM;EAAW,IAAI;EAAa;CACrC;;;;;;;;;;ACtdD,MAAM,UAAkB,EAAE,OAAO,GAAG,KAAK,eAAe;CACtD,MAAM,QAAQ,GAAG,WAAkB,OAAO,QAAQ,SAAS;CAC3D,MAAM,YAAY,KAAK,SAAS;CAChC,MAAM,iBAAiB,aAAa,SAAS;AAM7C,QAAO,GAAG;MAJQ,YAAY,KAAK,MACjC,kBAAkB,GAAG,GAAG,KAAK,MAAM,WAAW,eAAe,CAC9D,CAGa"}
|
|
1
|
+
{"version":3,"file":"vitus-labs-unistyle.native.js","names":["CoreProvider","isValidValue","hasAnyValue","formatShorthand","formatIndividual"],"sources":["../src/responsive/breakpoints.ts","../src/responsive/createMediaQueries.ts","../src/responsive/normalizeTheme.ts","../src/responsive/optimizeTheme.ts","../src/responsive/transformTheme.ts","../src/responsive/makeItResponsive.ts","../src/responsive/sortBreakpoints.ts","../src/context.tsx","../src/styles/alignContent.ts","../src/styles/extendCss.ts","../src/units/stripUnit.ts","../src/units/value.ts","../src/units/values.ts","../src/styles/shorthands/borderRadius.ts","../src/styles/shorthands/edge.ts","../src/styles/styles/processDescriptor.ts","../src/styles/styles/propertyMap.ts","../src/styles/styles/index.ts"],"sourcesContent":["const breakpoints = {\n rootSize: 16,\n breakpoints: {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1440,\n },\n} as const\n\nexport type Breakpoints = typeof breakpoints\n\nexport default breakpoints\n","export type CreateMediaQueries = <\n B extends Record<string, number>,\n R extends number,\n C extends (...args: any) => any,\n>(props: {\n breakpoints: B\n rootSize: R\n css: C\n}) => Record<keyof B, ReturnType<C>>\n\n/**\n * Builds a map of breakpoint-name → tagged-template function.\n * The smallest breakpoint (value 0) gets no media wrapper.\n * Others are wrapped in `@media (min-width: <em>)` — em units\n * ensure correct behaviour when users change browser font size.\n */\nconst createMediaQueries: CreateMediaQueries = ({\n breakpoints,\n rootSize,\n css,\n}) =>\n Object.keys(breakpoints).reduce<Record<string, any>>((acc, key) => {\n // use em in breakpoints to work properly cross-browser and support users\n // changing their browsers font-size: https://zellwk.com/blog/media-query-units/\n const breakpointValue = (breakpoints as Record<string, number>)[key]\n\n if (breakpointValue === 0) {\n acc[key] = (...args: any[]) => css(...args)\n } else if (breakpointValue != null) {\n const emSize = breakpointValue / rootSize\n\n acc[key] = (...args: any[]) => css`\n @media only screen and (min-width: ${emSize}em) {\n ${css(...args)};\n }\n `\n }\n\n return acc\n }, {}) as any\n\nexport default createMediaQueries\n","type AssignToBreakpointKey = (\n breakpoints: string[],\n) => (\n value: (\n breakpoint: string,\n i: number,\n breakpoints: string[],\n result: Record<string, unknown>,\n ) => void,\n) => Record<string, unknown>\n\n/** Iterates breakpoints and populates a result object using a callback per breakpoint. */\nconst assignToBreakpointKey: AssignToBreakpointKey =\n (breakpoints) => (value) => {\n const result: Record<string, unknown> = {}\n\n breakpoints.forEach((item, i) => {\n result[item] = value(item, i, breakpoints, result)\n })\n\n return result\n }\n\nconst handleArrayCb = (arr: (string | number)[]) => (_: any, i: number) => {\n const currentValue = arr[i]\n const lastValue = arr[arr.length - 1]\n\n return currentValue ?? lastValue\n}\n\n// type HandleObjectCb = (\n// obj: Record<string, unknown>\n// ) => (\n// bp: string,\n// i: number,\n// breakpoint: Array<string>,\n// result: Record<string, unknown>\n// ) => Record<string, unknown>\n\nconst handleObjectCb =\n (obj: Record<string, unknown>) =>\n (bp: string, i: number, bps: string[], res: Record<string, unknown>) => {\n const currentValue = obj[bp]\n const previousValue = res[bps[i - 1]!]\n\n // check for non-nullable values\n if (currentValue != null) return currentValue\n return previousValue\n }\n\nconst handleValueCb = (value: unknown) => () => value\n\nconst shouldNormalize = (props: Record<string, any>) =>\n Object.values(props).some(\n (item) => typeof item === 'object' || Array.isArray(item),\n )\n\nexport type NormalizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => Record<string, unknown>\n\n/**\n * Expands each theme property into a full breakpoint map so every\n * breakpoint has a value. Arrays fill by index (last value carries forward),\n * objects inherit from the previous breakpoint, scalars repeat for all.\n * Skipped entirely when no property is array/object (fast path).\n */\nconst normalizeTheme: NormalizeTheme = ({ theme, breakpoints }) => {\n if (!shouldNormalize(theme)) return theme\n\n const getBpValues = assignToBreakpointKey(breakpoints)\n const result: Record<string, unknown> = {}\n\n Object.entries(theme).forEach(([key, value]) => {\n if (value == null) return\n\n // if it's an array\n if (Array.isArray(value)) {\n result[key] = getBpValues(handleArrayCb(value as any))\n }\n // if it's an object\n else if (typeof value === 'object') {\n result[key] = getBpValues(handleObjectCb(value as Record<string, any>))\n }\n // if any other value\n else {\n result[key] = getBpValues(handleValueCb(value))\n }\n })\n\n return result\n}\n\nexport default normalizeTheme\n","export type OptimizeTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, Record<string, unknown>>\n breakpoints: string[]\n}) => Record<string, Record<string, unknown>>\n\nconst shallowEqual = (\n a: Record<string, unknown> | undefined,\n b: Record<string, unknown> | undefined,\n): boolean => {\n if (a === b) return true\n if (!a || !b) return false\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (const key of keysA) {\n if (a[key] !== b[key]) return false\n }\n\n return true\n}\n\n/**\n * Removes breakpoints whose styles are identical to the previous one.\n * This avoids generating duplicate `@media` blocks.\n * The smallest breakpoint is always kept.\n */\nconst optimizeTheme: OptimizeTheme = ({ theme, breakpoints }) => {\n const result: Record<string, Record<string, unknown>> = {}\n\n for (let i = 0; i < breakpoints.length; i++) {\n const key = breakpoints[i] as string\n const previousBreakpoint = breakpoints[i - 1] as string\n\n const current = theme[key]\n if (\n current &&\n (i === 0 || !shallowEqual(theme[previousBreakpoint], current))\n ) {\n result[key] = current\n }\n }\n\n return result\n}\n\nexport default optimizeTheme\n","import { isEmpty, set } from '@vitus-labs/core'\n\n/** Filter out breakpoint keys that don't exist in the sorted breakpoints list. */\nconst removeUnexpectedKeys = (obj: Record<string, unknown>, keys: string[]) => {\n const result: Record<string, unknown> = {}\n\n keys.forEach((bp) => {\n const value = obj[bp]\n\n if (value) {\n result[bp] = value\n }\n })\n\n return result\n}\n\nexport type TransformTheme = ({\n theme,\n breakpoints,\n}: {\n theme: Record<string, unknown>\n breakpoints: string[]\n}) => any\n\n/**\n * Pivots the theme from property-centric to breakpoint-centric layout.\n * Input: `{ fontSize: { xs: 12, md: 15 }, color: 'red' }`\n * Output: `{ xs: { fontSize: 12, color: 'red' }, md: { fontSize: 15 } }`\n * Supports three input shapes per property: scalar, array (positional), or object (keyed).\n */\nconst transformTheme: TransformTheme = ({ theme, breakpoints }) => {\n const result = {}\n\n if (isEmpty(theme) || isEmpty(breakpoints)) return result\n\n // can be one of following types\n // { fontSize: 12 }\n // { fontSize: { xs: 12, md: 15 }}\n // { fontSize: [12, 15] }\n Object.entries(theme).forEach(([key, value]) => {\n // array\n if (Array.isArray(value) && value.length > 0) {\n value.forEach((child, i) => {\n const indexBreakpoint = breakpoints[i]!\n set(result, [indexBreakpoint, key], child)\n })\n }\n // object\n else if (typeof value === 'object' && value !== null) {\n Object.entries(value).forEach(([childKey, childValue]) => {\n set(result, [childKey, key], childValue)\n })\n }\n // normal value\n else if (value != null) {\n const firstBreakpoint = breakpoints[0]!\n set(result, [firstBreakpoint, key], value)\n }\n })\n\n return removeUnexpectedKeys(result, breakpoints)\n}\n\nexport default transformTheme\n","import { isEmpty } from '@vitus-labs/core'\nimport type { Css } from '~/types'\nimport type createMediaQueries from './createMediaQueries'\nimport normalizeTheme from './normalizeTheme'\nimport optimizeTheme from './optimizeTheme'\nimport type sortBreakpoints from './sortBreakpoints'\nimport transformTheme from './transformTheme'\n\ntype CustomTheme = Record<\n string,\n Record<string, unknown> | number | string | boolean\n>\ntype Theme = Partial<{\n rootSize: number\n breakpoints: Record<string, number>\n __VITUS_LABS__: Partial<{\n media: ReturnType<typeof createMediaQueries>\n sortedBreakpoints: ReturnType<typeof sortBreakpoints>\n }>\n}> &\n CustomTheme\n\nexport type MakeItResponsiveStyles<\n T extends Partial<Record<string, any>> = any,\n> = ({\n theme,\n css,\n rootSize,\n globalTheme,\n}: {\n theme: T\n css: Css\n rootSize?: number\n globalTheme?: Record<string, any>\n}) => ReturnType<typeof css> | string | any\n\nexport type MakeItResponsive = ({\n theme,\n key,\n css,\n styles,\n normalize,\n}: {\n theme?: CustomTheme\n key?: string\n css: any\n styles: MakeItResponsiveStyles\n normalize?: boolean\n}) => (props: { theme?: Theme; [key: string]: any }) => any\n\n/**\n * Core responsive engine used by every styled component in the system.\n *\n * Returns a styled-components interpolation function that:\n * 1. Reads the component's theme prop (via `key` or direct `theme`)\n * 2. Without breakpoints → renders plain CSS\n * 3. With breakpoints → normalizes, transforms (property-per-breakpoint →\n * breakpoint-per-property), optimizes (deduplicates identical breakpoints),\n * and wraps each breakpoint's styles in the appropriate `@media` query.\n */\nconst makeItResponsive: MakeItResponsive =\n ({ theme: customTheme, key = '', css, styles, normalize = false }) =>\n ({ theme = {}, ...props }) => {\n const internalTheme = customTheme || props[key]\n\n // if no theme is defined, return empty objct\n if (isEmpty(internalTheme)) return ''\n\n const { rootSize, breakpoints, __VITUS_LABS__, ...restTheme } =\n theme as Theme\n\n const renderStyles = (\n theme: Record<string, unknown>,\n ): ReturnType<typeof styles> =>\n styles({ theme, css, rootSize, globalTheme: restTheme })\n\n // if there are no breakpoints, return just standard css\n if (isEmpty(breakpoints) || isEmpty(__VITUS_LABS__)) {\n return css`\n ${renderStyles(internalTheme)}\n `\n }\n\n const { media, sortedBreakpoints } = __VITUS_LABS__!\n\n let helperTheme = internalTheme\n\n if (normalize) {\n helperTheme = normalizeTheme({\n theme: internalTheme,\n breakpoints: sortedBreakpoints,\n })\n }\n\n const transformedTheme = transformTheme({\n theme: helperTheme,\n breakpoints: sortedBreakpoints,\n })\n\n const optimizedTheme = optimizeTheme({\n theme: transformedTheme,\n breakpoints: sortedBreakpoints,\n })\n\n return sortedBreakpoints.map((item: string) => {\n const breakpointTheme = optimizedTheme[item]\n\n if (!breakpointTheme || !media) return ''\n\n const result = renderStyles(breakpointTheme)\n\n return (media as Record<string, any>)[item]`\n ${result};\n `\n })\n }\n\nexport default makeItResponsive\n","export type SortBreakpoints = <T extends Record<string, number>>(\n breakpoints: T,\n) => (keyof T)[]\n\n/** Sorts breakpoint keys by their pixel value (ascending, mobile-first). */\nconst sortBreakpoints: SortBreakpoints = (breakpoints) => {\n const result = Object.keys(breakpoints).sort(\n (a, b) => breakpoints[a]! - breakpoints[b]!,\n )\n\n return result\n}\n\nexport default sortBreakpoints\n","import {\n Provider as CoreProvider,\n config,\n context,\n isEmpty,\n} from '@vitus-labs/core'\nimport type { FC, ReactNode } from 'react'\nimport { useMemo } from 'react'\nimport { createMediaQueries, sortBreakpoints } from '~/responsive'\n\n// type VitusLabsContext = {\n// sortedBreakpoints?: ReturnType<typeof sortBreakpoints>\n// media?: ReturnType<typeof createMediaQueries>\n// }\n\ntype Theme = {\n rootSize: number\n breakpoints?: Record<string, number>\n __VITUS_LABS__?: never\n} & Partial<Record<string, unknown>>\n\nexport type TProvider = {\n theme: Theme\n children: ReactNode\n} & Partial<Record<string, unknown>>\n\n/**\n * Unistyle Provider — wraps the core Provider and enriches the theme\n * with pre-computed sorted breakpoints and media-query tagged-template\n * helpers consumed by `makeItResponsive`.\n */\nconst Provider: FC<TProvider> = ({ theme, children, ...props }) => {\n const { breakpoints, rootSize } = theme\n\n const sortedBreakpoints = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return sortBreakpoints(breakpoints)\n }\n\n return undefined\n }, [breakpoints])\n\n const media = useMemo(() => {\n if (breakpoints && !isEmpty(breakpoints)) {\n return createMediaQueries({\n breakpoints,\n css: config.css,\n rootSize,\n })\n }\n\n return undefined\n }, [breakpoints, rootSize])\n\n const result = {\n ...theme,\n __VITUS_LABS__: {\n sortedBreakpoints,\n media,\n },\n }\n\n return (\n <CoreProvider theme={result} {...props}>\n {children}\n </CoreProvider>\n )\n}\n\nexport { context }\n\nexport default Provider\n","import { config, isEmpty } from '@vitus-labs/core'\n\nexport type AlignContentDirectionKeys = keyof typeof ALIGN_CONTENT_DIRECTION\nexport type AlignContentAlignXKeys = keyof typeof ALIGN_CONTENT_MAP_X\nexport type AlignContentAlignYKeys = keyof typeof ALIGN_CONTENT_MAP_Y\n\nconst ALIGN_CONTENT_MAP_SHARED = {\n center: 'center',\n spaceBetween: 'space-between',\n spaceAround: 'space-around',\n block: 'stretch',\n}\n\nexport const ALIGN_CONTENT_MAP_X = {\n left: 'flex-start',\n right: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_MAP_Y = {\n top: 'flex-start',\n bottom: 'flex-end',\n ...ALIGN_CONTENT_MAP_SHARED,\n} as const\n\nexport const ALIGN_CONTENT_DIRECTION = __WEB__\n ? {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n : {\n inline: 'row',\n reverseInline: 'row-reverse',\n rows: 'column',\n reverseRows: 'column-reverse',\n }\n\nexport type AlignContent = ({\n direction,\n alignX,\n alignY,\n}: {\n direction: AlignContentDirectionKeys\n alignX: AlignContentAlignXKeys\n alignY: AlignContentAlignYKeys\n}) => ReturnType<typeof config.css> | null\n\n/**\n * Converts semantic direction/alignX/alignY values into `flex-direction`,\n * `align-items`, and `justify-content`. For inline directions (row) the\n * X/Y axes are swapped so that `alignX` always controls the horizontal axis.\n */\nconst alignContent: AlignContent = (attrs) => {\n const { direction, alignX, alignY } = attrs\n\n if (isEmpty(attrs) || !direction || !alignX || !alignY) {\n return null\n }\n\n const isReverted = ['inline', 'reverseInline'].includes(direction)\n const dir = ALIGN_CONTENT_DIRECTION[direction]\n const x = ALIGN_CONTENT_MAP_X[alignX]\n const y = ALIGN_CONTENT_MAP_Y[alignY]\n\n return config.css`\n flex-direction: ${dir};\n align-items: ${isReverted ? y : x};\n justify-content: ${isReverted ? x : y};\n `\n}\n\nexport default alignContent\n","import { config } from '@vitus-labs/core'\n\nexport type ExtendCss = (\n styles:\n | ((css: typeof config.css) => ReturnType<typeof css>)\n | string\n | null\n | undefined,\n) => string | ReturnType<typeof config.css>\n\n/**\n * Evaluates an `extendCss` value — either a callback receiving `css`\n * or a raw CSS string. Returns empty string for null/undefined.\n */\nconst extendCss: ExtendCss = (styles) => {\n if (!styles) return ''\n if (typeof styles === 'function') {\n return styles(config.css)\n }\n\n return styles\n}\n\nexport default extendCss\n","type Value<V> = V extends string ? number : V\ntype Unit<V> = V extends string ? string : undefined\n\nexport type StripUnit = <V extends string | number, UR extends boolean = false>(\n value: V,\n unitReturn?: UR,\n) => UR extends true ? [Value<V>, Unit<V>] : Value<V>\n\n/**\n * Strips the CSS unit suffix from a value.\n * With `unitReturn=true`, returns a `[number, unit]` tuple.\n * Otherwise returns just the numeric part.\n * Non-string inputs are passed through unchanged.\n */\nconst stripUnit: StripUnit = (value, unitReturn) => {\n const cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/\n\n if (typeof value !== 'string') return unitReturn ? [value, undefined] : value\n\n const matchedValue = value.match(cssRegex)\n\n if (unitReturn) {\n if (matchedValue) return [parseFloat(value), matchedValue[2]]\n return [value, undefined]\n }\n\n if (matchedValue) return parseFloat(value)\n return value as any\n}\n\nexport default stripUnit\n","import stripUnit from './stripUnit'\n\ntype CssUnits =\n | 'px'\n | 'rem'\n | '%'\n | 'em'\n | 'ex'\n | 'cm'\n | 'mm'\n | 'in'\n | 'pt'\n | 'pc'\n | 'ch'\n | 'vh'\n | 'vw'\n | 'vmin'\n | 'vmax'\n\n/** Returns true for null/undefined/NaN but not for 0. */\nconst isNotValue = (value: unknown) => !value && value !== 0\n\nexport type Value = (\n param: string | number | null | undefined,\n rootSize?: number,\n outputUnit?: CssUnits,\n) => string | number | null\n\n/**\n * Converts a raw numeric value to a CSS string with appropriate units.\n * - Numbers without a unit are divided by `rootSize` and output as rem (web) or px (native).\n * - Values that already carry a unit are returned as-is, unless converting px→rem.\n * - Zero is always returned unitless.\n */\nconst value: Value = (\n param,\n rootSize = 16,\n outputUnit = __WEB__ ? 'rem' : 'px',\n) => {\n if (isNotValue(param)) return null as any\n\n const [val, unit] = stripUnit(param as string, true)\n if (isNotValue(val)) return null\n if (val === 0 || typeof val === 'string') return param // zero should be unitless\n\n const canConvert = rootSize && !Number.isNaN(val)\n if (canConvert && !unit && outputUnit === 'px') return `${val}${outputUnit}`\n if (canConvert && !unit) return `${val / rootSize}rem`\n if (canConvert && unit === 'px' && outputUnit === 'rem')\n return `${val / rootSize}rem`\n if (unit) return param\n\n return `${val}${outputUnit}`\n}\n\nexport default value\n","import type { Units } from '~/types'\nimport value from './value'\n\n/** Returns the first non-null/undefined value from the arguments. */\ntype GetValueOf = (...values: unknown[]) => number | string\nconst getValueOf: GetValueOf = (...values: any[]) =>\n values.find((value) => typeof value !== 'undefined' && value !== null)\n\nexport type Values = (\n values: unknown[],\n rootSize?: number,\n outputUnit?: Units,\n) => string | number | null\n\n/**\n * Picks the first non-null value from the array, converts it via `value()`,\n * and returns the result. If the picked value is itself an array, each item\n * is converted and joined with spaces (e.g. for shorthand properties).\n */\nconst values: Values = (values, rootSize, outputUnit) => {\n const param = getValueOf(...values)\n\n if (Array.isArray(param)) {\n return param.map((item) => value(item, rootSize, outputUnit)).join(' ')\n }\n\n return value(param, rootSize, outputUnit)\n}\n\nexport default values\n","import type { PropertyValue } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype PV = PropertyValue | null | undefined\n\ntype CornerValues = {\n full: PV\n top: PV\n bottom: PV\n left: PV\n right: PV\n topLeft: PV\n topRight: PV\n bottomLeft: PV\n bottomRight: PV\n}\n\nconst hasAnyValue = (v: CornerValues) =>\n isValidValue(v.full) ||\n isValidValue(v.top) ||\n isValidValue(v.bottom) ||\n isValidValue(v.left) ||\n isValidValue(v.right) ||\n isValidValue(v.topLeft) ||\n isValidValue(v.topRight) ||\n isValidValue(v.bottomLeft) ||\n isValidValue(v.bottomRight)\n\n// topLeft - topRight - bottomRight - bottomLeft\nconst resolveCorners = (v: CornerValues) => {\n const corners: PV[] = [v.full, v.full, v.full, v.full]\n\n if (isValidValue(v.top)) {\n corners[0] = v.top\n corners[1] = v.top\n }\n if (isValidValue(v.bottom)) {\n corners[2] = v.bottom\n corners[3] = v.bottom\n }\n if (isValidValue(v.left)) {\n corners[0] = v.left\n corners[3] = v.left\n }\n if (isValidValue(v.right)) {\n corners[1] = v.right\n corners[2] = v.right\n }\n\n if (isValidValue(v.topLeft)) corners[0] = v.topLeft\n if (isValidValue(v.topRight)) corners[1] = v.topRight\n if (isValidValue(v.bottomRight)) corners[2] = v.bottomRight\n if (isValidValue(v.bottomLeft)) corners[3] = v.bottomLeft\n\n return corners\n}\n\nconst formatShorthand = (corners: PV[], calc: (p: PV) => any) => {\n const [tl, tr, br, bl] = corners\n\n if (corners.every((val, _, arr) => val === arr[0]))\n return `border-radius: ${calc(tl)};`\n\n if (tl === br && tr === bl) return `border-radius: ${calc(tl)} ${calc(tr)};`\n\n if (tl && tr === bl && br)\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)};`\n\n return `border-radius: ${calc(tl)} ${calc(tr)} ${calc(br)} ${calc(bl)};`\n}\n\nconst CORNER_CSS = [\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius',\n] as const\n\nconst formatIndividual = (corners: PV[], calc: (p: PV) => any) => {\n let output = ''\n for (let i = 0; i < corners.length; i++) {\n if (isValidValue(corners[i]))\n output += `${CORNER_CSS[i]}: ${calc(corners[i])};`\n }\n return output\n}\n\nexport type BorderRadius = (\n rootSize?: number,\n) => (props: CornerValues) => string | null\n\n/**\n * Border radius shorthand processor. Accepts full/top/bottom/left/right\n * and individual corner values. Produces the most compact CSS output —\n * single-value, two-value, three-value, or four-value shorthand\n * when all corners are specified, or individual corner properties otherwise.\n */\nconst borderRadius: BorderRadius = (rootSize) => (props) => {\n if (!hasAnyValue(props)) return null\n\n const calc = (param: PV) => value(param as any, rootSize)\n const corners = resolveCorners(props)\n\n if (corners.every((val) => isValidValue(val)))\n return formatShorthand(corners, calc)\n\n return formatIndividual(corners, calc)\n}\n\nexport default borderRadius\n","import type { Units } from '~/types'\nimport { value } from '~/units'\n\nconst isValidValue = (v: unknown) => !!v || v === 0\n\ntype Property =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\ntype Value = string | number | null | undefined\ntype Side = 'top' | 'bottom' | 'left' | 'right'\n\ntype EdgeValues = {\n full: Value\n x: Value\n y: Value\n top: Value\n left: Value\n right: Value\n bottom: Value\n}\n\ntype Definitions = Record<\n Property,\n { unit?: Units; edgeCss: (side: Side) => string }\n>\n\nconst definitions: Definitions = {\n inset: {\n unit: 'rem',\n edgeCss: (side) => side,\n },\n margin: {\n unit: 'rem',\n edgeCss: (side) => `margin-${side}`,\n },\n padding: {\n unit: 'rem',\n edgeCss: (side) => `padding-${side}`,\n },\n 'border-width': {\n unit: 'px',\n edgeCss: (side) => `border-${side}-width`,\n },\n 'border-style': {\n edgeCss: (side) => `border-${side}-style`,\n },\n 'border-color': {\n edgeCss: (side) => `border-${side}-color`,\n },\n}\n\nconst hasAnyValue = (vals: EdgeValues) =>\n isValidValue(vals.top) ||\n isValidValue(vals.bottom) ||\n isValidValue(vals.left) ||\n isValidValue(vals.right) ||\n isValidValue(vals.x) ||\n isValidValue(vals.y) ||\n isValidValue(vals.full)\n\n// top - right - bottom - left\nconst resolveSides = ({ full, x, y, top, left, right, bottom }: EdgeValues) => {\n const sides: Value[] = [full, full, full, full]\n\n if (isValidValue(x)) {\n sides[1] = x\n sides[3] = x\n }\n\n if (isValidValue(y)) {\n sides[0] = y\n sides[2] = y\n }\n\n if (isValidValue(top)) sides[0] = top\n if (isValidValue(right)) sides[1] = right\n if (isValidValue(bottom)) sides[2] = bottom\n if (isValidValue(left)) sides[3] = left\n\n return sides\n}\n\nconst formatShorthand = (\n property: Property,\n sides: Value[],\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n\n if (sides.every((val, _, arr) => val === arr[0]))\n return `${property}: ${calc(t)};`\n\n if (t === b && r === l) return `${property}: ${calc(t)} ${calc(r)};`\n\n if (t && r === l && b) return `${property}: ${calc(t)} ${calc(r)} ${calc(b)};`\n\n return `${property}: ${calc(t)} ${calc(r)} ${calc(b)} ${calc(l)};`\n}\n\nconst formatIndividual = (\n sides: Value[],\n edgeCss: (side: Side) => string,\n calc: (v: Value) => Value,\n) => {\n const [t, r, b, l] = sides\n let output = ''\n\n if (isValidValue(t)) output += `${edgeCss('top')}: ${calc(t)};`\n if (isValidValue(b)) output += `${edgeCss('bottom')}: ${calc(b)};`\n if (isValidValue(l)) output += `${edgeCss('left')}: ${calc(l)};`\n if (isValidValue(r)) output += `${edgeCss('right')}: ${calc(r)};`\n\n return output\n}\n\nexport type Edge = (\n rootSize?: number,\n) => (property: Property, values: EdgeValues) => string | null\n\n/**\n * Edge shorthand processor for margin, padding, inset, border-width/style/color.\n * Accepts full/x/y/top/right/bottom/left values and produces the most compact\n * CSS output — using shorthand syntax when all four sides are specified,\n * or individual side properties when only some are set.\n */\nconst edge: Edge =\n (rootSize = 16) =>\n (property, values) => {\n if (!hasAnyValue(values)) return null\n\n const { unit, edgeCss } = definitions[property]\n const calc = (param: Value) =>\n unit ? value(param as any, rootSize, unit) : param\n\n const sides = resolveSides(values)\n\n if (sides.every((val) => isValidValue(val)))\n return formatShorthand(property, sides, calc)\n\n return formatIndividual(sides, edgeCss, calc)\n }\n\nexport default edge\n","import type { BorderRadius } from '~/styles/shorthands/borderRadius'\nimport type { Edge } from '~/styles/shorthands/edge'\nimport type { Css } from '~/types'\nimport type { Values } from '~/units/values'\nimport type { PropertyDescriptor } from './propertyMap'\nimport type { InnerTheme } from './types'\n\ntype Calc = (...params: any[]) => ReturnType<Values>\n\nconst toCssDecl = (css: string, v: unknown) =>\n v == null ? '' : `${css}: ${v};`\n\n/**\n * Converts a single property descriptor + theme values into a CSS fragment.\n *\n * - `simple` — pass-through (no unit conversion)\n * - `convert` — number→rem via `calc()`\n * - `convert_fallback` — picks first non-null from multiple theme keys, then converts\n * - `edge` — delegates to the edge shorthand (margin, padding, inset, border-*)\n * - `border_radius` — delegates to the border-radius shorthand\n * - `special` — one-off logic (fullScreen, backgroundImage url wrapping, animation combo, etc.)\n */\nconst processSpecial = (\n d: Extract<PropertyDescriptor, { kind: 'special' }>,\n t: InnerTheme,\n css: Css,\n): string | ReturnType<typeof css> => {\n switch (d.id) {\n case 'fullScreen':\n if (!t.fullScreen) return ''\n return css`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n `\n\n case 'backgroundImage':\n if (!t.backgroundImage) return ''\n return css`\n background-image: url(${t.backgroundImage});\n `\n\n case 'animation': {\n const parts = [t.keyframe, t.animation].filter(Boolean).join(' ')\n return parts ? `animation: ${parts};` : ''\n }\n\n case 'hideEmpty':\n if (!(__WEB__ && t.hideEmpty)) return ''\n return css`\n &:empty {\n display: none;\n }\n `\n\n case 'clearFix':\n if (!(__WEB__ && t.clearFix)) return ''\n return css`\n &::after {\n clear: both;\n content: '';\n display: table;\n }\n `\n\n case 'extendCss':\n return t.extendCss ?? ''\n\n default:\n return ''\n }\n}\n\nconst processDescriptor = (\n d: PropertyDescriptor,\n t: InnerTheme,\n css: Css,\n calc: Calc,\n shorthand: ReturnType<Edge>,\n borderRadiusFn: ReturnType<BorderRadius>,\n): string | ReturnType<typeof css> => {\n switch (d.kind) {\n case 'simple':\n return toCssDecl(d.css, t[d.key])\n\n case 'convert':\n return toCssDecl(d.css, calc(t[d.key]))\n\n case 'convert_fallback':\n return toCssDecl(d.css, calc(...d.keys.map((k) => t[k])))\n\n case 'edge':\n return (\n shorthand(d.property, {\n full: t[d.keys.full],\n x: t[d.keys.x],\n y: t[d.keys.y],\n top: t[d.keys.top],\n left: t[d.keys.left],\n bottom: t[d.keys.bottom],\n right: t[d.keys.right],\n }) ?? ''\n )\n\n case 'border_radius':\n return (\n borderRadiusFn({\n full: t[d.keys.full],\n top: t[d.keys.top],\n bottom: t[d.keys.bottom],\n left: t[d.keys.left],\n right: t[d.keys.right],\n topLeft: t[d.keys.topLeft],\n topRight: t[d.keys.topRight],\n bottomLeft: t[d.keys.bottomLeft],\n bottomRight: t[d.keys.bottomRight],\n }) ?? ''\n )\n\n case 'special':\n return processSpecial(d, t, css)\n }\n}\n\nexport default processDescriptor\n","import type { InnerTheme } from './types'\n\n/**\n * Descriptor types for the data-driven CSS property map.\n *\n * - `simple` — CSS pass-through (no unit conversion).\n * - `convert` — Number values are converted via `values()` (px→rem).\n * - `convert_fallback` — Picks first non-null from multiple theme keys, then converts.\n * - `edge` — Spacing shorthand (margin, padding, inset, border-*) via `edge()`.\n * - `border_radius` — Border radius shorthand via `borderRadius()`.\n * - `special` — One-off logic (fullScreen, backgroundImage, animation, etc.).\n */\ntype EdgeProperty =\n | 'inset'\n | 'margin'\n | 'padding'\n | 'border-width'\n | 'border-style'\n | 'border-color'\n\ntype EdgeKeys = {\n full: keyof InnerTheme\n x: keyof InnerTheme\n y: keyof InnerTheme\n top: keyof InnerTheme\n left: keyof InnerTheme\n bottom: keyof InnerTheme\n right: keyof InnerTheme\n}\n\ntype BorderRadiusKeys = {\n full: keyof InnerTheme\n top: keyof InnerTheme\n bottom: keyof InnerTheme\n left: keyof InnerTheme\n right: keyof InnerTheme\n topLeft: keyof InnerTheme\n topRight: keyof InnerTheme\n bottomLeft: keyof InnerTheme\n bottomRight: keyof InnerTheme\n}\n\nexport type PropertyDescriptor =\n | { kind: 'simple'; css: string; key: keyof InnerTheme }\n | { kind: 'convert'; css: string; key: keyof InnerTheme }\n | { kind: 'convert_fallback'; css: string; keys: (keyof InnerTheme)[] }\n | {\n kind: 'edge'\n property: EdgeProperty\n keys: EdgeKeys\n }\n | { kind: 'border_radius'; keys: BorderRadiusKeys }\n | { kind: 'special'; id: string }\n\nconst propertyMap: PropertyDescriptor[] = [\n // ─── SPECIAL: fullScreen ──────────────────────────────────────────\n { kind: 'special', id: 'fullScreen' },\n\n // ─── POSITION ─────────────────────────────────────────────────────\n { kind: 'simple', css: 'all', key: 'all' },\n { kind: 'simple', css: 'display', key: 'display' },\n { kind: 'simple', css: 'position', key: 'position' },\n { kind: 'simple', css: 'box-sizing', key: 'boxSizing' },\n { kind: 'simple', css: 'float', key: 'float' },\n\n // ─── INSET (edge shorthand) ───────────────────────────────────────\n {\n kind: 'edge',\n property: 'inset',\n keys: {\n full: 'inset',\n x: 'insetX',\n y: 'insetY',\n top: 'top',\n left: 'left',\n bottom: 'bottom',\n right: 'right',\n },\n },\n\n // ─── SIZING ───────────────────────────────────────────────────────\n { kind: 'convert_fallback', css: 'width', keys: ['width', 'size'] },\n { kind: 'convert_fallback', css: 'min-width', keys: ['minWidth', 'minSize'] },\n { kind: 'convert_fallback', css: 'max-width', keys: ['maxWidth', 'maxSize'] },\n { kind: 'convert_fallback', css: 'height', keys: ['height', 'size'] },\n {\n kind: 'convert_fallback',\n css: 'min-height',\n keys: ['minHeight', 'minSize'],\n },\n {\n kind: 'convert_fallback',\n css: 'max-height',\n keys: ['maxHeight', 'maxSize'],\n },\n { kind: 'convert', css: 'gap', key: 'gap' },\n { kind: 'simple', css: 'aspect-ratio', key: 'aspectRatio' },\n { kind: 'simple', css: 'contain', key: 'contain' },\n { kind: 'simple', css: 'container-type', key: 'containerType' },\n { kind: 'simple', css: 'container-name', key: 'containerName' },\n { kind: 'simple', css: 'container', key: 'container' },\n { kind: 'convert', css: 'inline-size', key: 'inlineSize' },\n { kind: 'convert', css: 'block-size', key: 'blockSize' },\n { kind: 'convert', css: 'min-inline-size', key: 'minInlineSize' },\n { kind: 'convert', css: 'min-block-size', key: 'minBlockSize' },\n { kind: 'convert', css: 'max-inline-size', key: 'maxInlineSize' },\n { kind: 'convert', css: 'max-block-size', key: 'maxBlockSize' },\n\n // ─── SPACING (edge shorthands) ────────────────────────────────────\n {\n kind: 'edge',\n property: 'margin',\n keys: {\n full: 'margin',\n x: 'marginX',\n y: 'marginY',\n top: 'marginTop',\n left: 'marginLeft',\n bottom: 'marginBottom',\n right: 'marginRight',\n },\n },\n {\n kind: 'edge',\n property: 'padding',\n keys: {\n full: 'padding',\n x: 'paddingX',\n y: 'paddingY',\n top: 'paddingTop',\n left: 'paddingLeft',\n bottom: 'paddingBottom',\n right: 'paddingRight',\n },\n },\n\n // Logical spacing\n { kind: 'convert', css: 'margin-inline', key: 'marginInline' },\n { kind: 'convert', css: 'margin-inline-start', key: 'marginInlineStart' },\n { kind: 'convert', css: 'margin-inline-end', key: 'marginInlineEnd' },\n { kind: 'convert', css: 'margin-block', key: 'marginBlock' },\n { kind: 'convert', css: 'margin-block-start', key: 'marginBlockStart' },\n { kind: 'convert', css: 'margin-block-end', key: 'marginBlockEnd' },\n { kind: 'convert', css: 'padding-inline', key: 'paddingInline' },\n { kind: 'convert', css: 'padding-inline-start', key: 'paddingInlineStart' },\n { kind: 'convert', css: 'padding-inline-end', key: 'paddingInlineEnd' },\n { kind: 'convert', css: 'padding-block', key: 'paddingBlock' },\n { kind: 'convert', css: 'padding-block-start', key: 'paddingBlockStart' },\n { kind: 'convert', css: 'padding-block-end', key: 'paddingBlockEnd' },\n\n // Logical inset\n { kind: 'convert', css: 'inset-inline', key: 'insetInline' },\n { kind: 'convert', css: 'inset-inline-start', key: 'insetInlineStart' },\n { kind: 'convert', css: 'inset-inline-end', key: 'insetInlineEnd' },\n { kind: 'convert', css: 'inset-block', key: 'insetBlock' },\n { kind: 'convert', css: 'inset-block-start', key: 'insetBlockStart' },\n { kind: 'convert', css: 'inset-block-end', key: 'insetBlockEnd' },\n\n // ─── FLEX ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'align-content', key: 'alignContent' },\n { kind: 'simple', css: 'align-items', key: 'alignItems' },\n { kind: 'simple', css: 'align-self', key: 'alignSelf' },\n { kind: 'simple', css: 'flex', key: 'flex' },\n { kind: 'simple', css: 'flex-basis', key: 'flexBasis' },\n { kind: 'simple', css: 'flex-direction', key: 'flexDirection' },\n { kind: 'simple', css: 'flex-flow', key: 'flexFlow' },\n { kind: 'simple', css: 'flex-grow', key: 'flexGrow' },\n { kind: 'simple', css: 'flex-shrink', key: 'flexShrink' },\n { kind: 'simple', css: 'flex-wrap', key: 'flexWrap' },\n { kind: 'simple', css: 'justify-content', key: 'justifyContent' },\n { kind: 'simple', css: 'justify-items', key: 'justifyItems' },\n { kind: 'simple', css: 'justify-self', key: 'justifySelf' },\n { kind: 'simple', css: 'place-items', key: 'placeItems' },\n { kind: 'simple', css: 'place-content', key: 'placeContent' },\n { kind: 'simple', css: 'place-self', key: 'placeSelf' },\n { kind: 'convert', css: 'row-gap', key: 'rowGap' },\n { kind: 'convert', css: 'column-gap', key: 'columnGap' },\n\n // ─── GRID ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'grid', key: 'grid' },\n { kind: 'simple', css: 'grid-area', key: 'gridArea' },\n { kind: 'convert', css: 'grid-auto-columns', key: 'gridAutoColumns' },\n { kind: 'simple', css: 'grid-auto-flow', key: 'gridAutoFlow' },\n { kind: 'convert', css: 'grid-auto-rows', key: 'gridAutoRows' },\n { kind: 'simple', css: 'grid-column', key: 'gridColumn' },\n { kind: 'simple', css: 'grid-column-end', key: 'gridColumnEnd' },\n { kind: 'convert', css: 'grid-column-gap', key: 'gridColumnGap' },\n { kind: 'convert', css: 'grid-column-start', key: 'gridColumnStart' },\n { kind: 'convert', css: 'grid-gap', key: 'gridGap' },\n { kind: 'simple', css: 'grid-row', key: 'gridRow' },\n { kind: 'simple', css: 'grid-row-start', key: 'gridRowStart' },\n { kind: 'simple', css: 'grid-row-end', key: 'gridRowEnd' },\n { kind: 'convert', css: 'grid-row-gap', key: 'gridRowGap' },\n { kind: 'simple', css: 'grid-template', key: 'gridTemplate' },\n { kind: 'simple', css: 'grid-template-areas', key: 'gridTemplateAreas' },\n { kind: 'simple', css: 'grid-template-columns', key: 'gridTemplateColumns' },\n { kind: 'simple', css: 'grid-template-rows', key: 'gridTemplateRows' },\n\n // ─── POSITIONING ──────────────────────────────────────────────────\n { kind: 'simple', css: 'object-fit', key: 'objectFit' },\n { kind: 'simple', css: 'object-position', key: 'objectPosition' },\n { kind: 'simple', css: 'order', key: 'order' },\n { kind: 'simple', css: 'opacity', key: 'opacity' },\n { kind: 'simple', css: 'resize', key: 'resize' },\n { kind: 'simple', css: 'vertical-align', key: 'verticalAlign' },\n\n // ─── FONT & TEXT ──────────────────────────────────────────────────\n { kind: 'simple', css: 'line-height', key: 'lineHeight' },\n { kind: 'simple', css: 'font', key: 'font' },\n { kind: 'simple', css: 'font-family', key: 'fontFamily' },\n { kind: 'convert', css: 'font-size', key: 'fontSize' },\n { kind: 'convert', css: 'font-size-adjust', key: 'fontSizeAdjust' },\n { kind: 'convert', css: 'font-stretch', key: 'fontStretch' },\n { kind: 'simple', css: 'font-style', key: 'fontStyle' },\n { kind: 'simple', css: 'font-variant', key: 'fontVariant' },\n { kind: 'simple', css: 'font-weight', key: 'fontWeight' },\n { kind: 'simple', css: 'font-kerning', key: 'fontKerning' },\n { kind: 'simple', css: 'font-feature-settings', key: 'fontFeatureSettings' },\n {\n kind: 'simple',\n css: 'font-variation-settings',\n key: 'fontVariationSettings',\n },\n { kind: 'simple', css: 'font-optical-sizing', key: 'fontOpticalSizing' },\n { kind: 'simple', css: 'text-align', key: 'textAlign' },\n { kind: 'simple', css: 'text-align-last', key: 'textAlignLast' },\n { kind: 'simple', css: 'text-transform', key: 'textTransform' },\n { kind: 'simple', css: 'text-decoration', key: 'textDecoration' },\n { kind: 'simple', css: 'text-decoration-color', key: 'textDecorationColor' },\n { kind: 'simple', css: 'text-decoration-line', key: 'textDecorationLine' },\n { kind: 'simple', css: 'text-decoration-style', key: 'textDecorationStyle' },\n {\n kind: 'simple',\n css: 'text-decoration-thickness',\n key: 'textDecorationThickness',\n },\n {\n kind: 'simple',\n css: 'text-underline-offset',\n key: 'textUnderlineOffset',\n },\n { kind: 'simple', css: 'text-emphasis', key: 'textEmphasis' },\n { kind: 'simple', css: 'text-emphasis-color', key: 'textEmphasisColor' },\n { kind: 'simple', css: 'text-emphasis-style', key: 'textEmphasisStyle' },\n { kind: 'simple', css: 'letter-spacing', key: 'letterSpacing' },\n { kind: 'simple', css: 'word-spacing', key: 'wordSpacing' },\n { kind: 'simple', css: 'text-indent', key: 'textIndent' },\n { kind: 'simple', css: 'text-justify', key: 'textJustify' },\n { kind: 'simple', css: 'text-overflow', key: 'textOverflow' },\n { kind: 'simple', css: 'text-shadow', key: 'textShadow' },\n { kind: 'simple', css: 'text-wrap', key: 'textWrap' },\n { kind: 'simple', css: 'text-rendering', key: 'textRendering' },\n { kind: 'simple', css: 'white-space', key: 'whiteSpace' },\n { kind: 'simple', css: 'word-break', key: 'wordBreak' },\n { kind: 'simple', css: 'word-wrap', key: 'wordWrap' },\n { kind: 'simple', css: 'writing-mode', key: 'writingMode' },\n { kind: 'simple', css: 'direction', key: 'direction' },\n { kind: 'simple', css: 'hyphens', key: 'hyphens' },\n\n // ─── LIST ─────────────────────────────────────────────────────────\n { kind: 'simple', css: 'list-style', key: 'listStyle' },\n { kind: 'simple', css: 'list-style-image', key: 'listStyleImage' },\n { kind: 'simple', css: 'list-style-position', key: 'listStylePosition' },\n { kind: 'simple', css: 'list-style-type', key: 'listStyleType' },\n\n // ─── BACKGROUND & COLORS ─────────────────────────────────────────\n { kind: 'simple', css: 'color', key: 'color' },\n { kind: 'simple', css: 'background', key: 'background' },\n { kind: 'simple', css: 'background-color', key: 'backgroundColor' },\n { kind: 'special', id: 'backgroundImage' },\n { kind: 'simple', css: 'background-attachment', key: 'backgroundAttachment' },\n { kind: 'simple', css: 'background-clip', key: 'backgroundClip' },\n { kind: 'simple', css: 'background-origin', key: 'backgroundOrigin' },\n { kind: 'simple', css: 'background-position', key: 'backgroundPosition' },\n { kind: 'simple', css: 'background-repeat', key: 'backgroundRepeat' },\n { kind: 'simple', css: 'background-size', key: 'backgroundSize' },\n\n // ─── BORDERS ──────────────────────────────────────────────────────\n {\n kind: 'border_radius',\n keys: {\n full: 'borderRadius',\n top: 'borderRadiusTop',\n bottom: 'borderRadiusBottom',\n left: 'borderRadiusLeft',\n right: 'borderRadiusRight',\n topLeft: 'borderRadiusTopLeft',\n topRight: 'borderRadiusTopRight',\n bottomLeft: 'borderRadiusBottomLeft',\n bottomRight: 'borderRadiusBottomRight',\n },\n },\n { kind: 'simple', css: 'border', key: 'border' },\n { kind: 'simple', css: 'border-top', key: 'borderTop' },\n { kind: 'simple', css: 'border-bottom', key: 'borderBottom' },\n { kind: 'simple', css: 'border-left', key: 'borderLeft' },\n { kind: 'simple', css: 'border-right', key: 'borderRight' },\n {\n kind: 'edge',\n property: 'border-width',\n keys: {\n full: 'borderWidth',\n x: 'borderWidthX',\n y: 'borderWidthY',\n top: 'borderWidthTop',\n left: 'borderWidthLeft',\n bottom: 'borderWidthBottom',\n right: 'borderWidthRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-style',\n keys: {\n full: 'borderStyle',\n x: 'borderStyleX',\n y: 'borderStyleY',\n top: 'borderStyleTop',\n left: 'borderStyleLeft',\n bottom: 'borderStyleBottom',\n right: 'borderStyleRight',\n },\n },\n {\n kind: 'edge',\n property: 'border-color',\n keys: {\n full: 'borderColor',\n x: 'borderColorX',\n y: 'borderColorY',\n top: 'borderColorTop',\n left: 'borderColorLeft',\n bottom: 'borderColorBottom',\n right: 'borderColorRight',\n },\n },\n { kind: 'simple', css: 'border-image', key: 'borderImage' },\n { kind: 'simple', css: 'border-image-outset', key: 'borderImageOutset' },\n { kind: 'simple', css: 'border-image-repeat', key: 'borderImageRepeat' },\n { kind: 'simple', css: 'border-image-slice', key: 'borderImageSlice' },\n { kind: 'simple', css: 'border-image-source', key: 'borderImageSource' },\n { kind: 'simple', css: 'border-image-width', key: 'borderImageWidth' },\n { kind: 'simple', css: 'border-spacing', key: 'borderSpacing' },\n\n // Logical borders\n { kind: 'simple', css: 'border-inline', key: 'borderInline' },\n { kind: 'simple', css: 'border-block', key: 'borderBlock' },\n { kind: 'simple', css: 'border-inline-start', key: 'borderInlineStart' },\n { kind: 'simple', css: 'border-inline-end', key: 'borderInlineEnd' },\n { kind: 'simple', css: 'border-block-start', key: 'borderBlockStart' },\n { kind: 'simple', css: 'border-block-end', key: 'borderBlockEnd' },\n\n // ─── VISUAL EFFECTS ───────────────────────────────────────────────\n { kind: 'simple', css: 'backface-visibility', key: 'backfaceVisibility' },\n { kind: 'simple', css: 'box-shadow', key: 'boxShadow' },\n { kind: 'simple', css: 'filter', key: 'filter' },\n { kind: 'simple', css: 'backdrop-filter', key: 'backdropFilter' },\n { kind: 'simple', css: 'mix-blend-mode', key: 'mixBlendMode' },\n {\n kind: 'simple',\n css: 'background-blend-mode',\n key: 'backgroundBlendMode',\n },\n { kind: 'simple', css: 'isolation', key: 'isolation' },\n { kind: 'simple', css: 'outline', key: 'outline' },\n { kind: 'simple', css: 'outline-color', key: 'outlineColor' },\n { kind: 'simple', css: 'outline-offset', key: 'outlineOffset' },\n { kind: 'simple', css: 'outline-style', key: 'outlineStyle' },\n { kind: 'simple', css: 'outline-width', key: 'outlineWidth' },\n\n // ─── ANIMATIONS ───────────────────────────────────────────────────\n { kind: 'special', id: 'animation' },\n { kind: 'simple', css: 'animation-name', key: 'animationName' },\n { kind: 'simple', css: 'animation-duration', key: 'animationDuration' },\n {\n kind: 'simple',\n css: 'animation-timing-function',\n key: 'animationTimingFunction',\n },\n { kind: 'simple', css: 'animation-delay', key: 'animationDelay' },\n {\n kind: 'simple',\n css: 'animation-iteration-count',\n key: 'animationIterationCount',\n },\n { kind: 'simple', css: 'animation-direction', key: 'animationDirection' },\n { kind: 'simple', css: 'animation-fill-mode', key: 'animationFillMode' },\n { kind: 'simple', css: 'animation-play-state', key: 'animationPlayState' },\n { kind: 'simple', css: 'transition', key: 'transition' },\n { kind: 'simple', css: 'transition-delay', key: 'transitionDelay' },\n { kind: 'simple', css: 'transition-duration', key: 'transitionDuration' },\n { kind: 'simple', css: 'transition-property', key: 'transitionProperty' },\n {\n kind: 'simple',\n css: 'transition-timing-function',\n key: 'transitionTimingFunction',\n },\n\n // ─── TRANSFORM ────────────────────────────────────────────────────\n { kind: 'simple', css: 'transform', key: 'transform' },\n { kind: 'simple', css: 'transform-origin', key: 'transformOrigin' },\n { kind: 'simple', css: 'transform-style', key: 'transformStyle' },\n { kind: 'simple', css: 'translate', key: 'translate' },\n { kind: 'simple', css: 'rotate', key: 'rotate' },\n { kind: 'simple', css: 'scale', key: 'scale' },\n { kind: 'simple', css: 'will-change', key: 'willChange' },\n\n // ─── SCROLL ───────────────────────────────────────────────────────\n { kind: 'simple', css: 'scroll-behavior', key: 'scrollBehavior' },\n { kind: 'simple', css: 'scroll-snap-type', key: 'scrollSnapType' },\n { kind: 'simple', css: 'scroll-snap-align', key: 'scrollSnapAlign' },\n { kind: 'simple', css: 'scroll-snap-stop', key: 'scrollSnapStop' },\n { kind: 'simple', css: 'scroll-margin', key: 'scrollMargin' },\n { kind: 'simple', css: 'scroll-padding', key: 'scrollPadding' },\n { kind: 'simple', css: 'overscroll-behavior', key: 'overscrollBehavior' },\n {\n kind: 'simple',\n css: 'overscroll-behavior-x',\n key: 'overscrollBehaviorX',\n },\n {\n kind: 'simple',\n css: 'overscroll-behavior-y',\n key: 'overscrollBehaviorY',\n },\n\n // ─── INTERACTION ──────────────────────────────────────────────────\n { kind: 'simple', css: 'cursor', key: 'cursor' },\n { kind: 'simple', css: 'pointer-events', key: 'pointerEvents' },\n { kind: 'simple', css: 'user-select', key: 'userSelect' },\n { kind: 'simple', css: 'touch-action', key: 'touchAction' },\n { kind: 'simple', css: 'scrollbar-width', key: 'scrollbarWidth' },\n { kind: 'simple', css: 'scrollbar-color', key: 'scrollbarColor' },\n { kind: 'simple', css: 'scrollbar-gutter', key: 'scrollbarGutter' },\n { kind: 'simple', css: 'caret-color', key: 'caretColor' },\n { kind: 'simple', css: 'accent-color', key: 'accentColor' },\n { kind: 'simple', css: 'color-scheme', key: 'colorScheme' },\n\n // ─── OTHER ────────────────────────────────────────────────────────\n { kind: 'simple', css: 'caption-side', key: 'captionSide' },\n { kind: 'simple', css: 'clear', key: 'clear' },\n { kind: 'simple', css: 'clip', key: 'clip' },\n { kind: 'simple', css: 'clip-path', key: 'clipPath' },\n { kind: 'simple', css: 'content', key: 'content' },\n { kind: 'simple', css: 'content-visibility', key: 'contentVisibility' },\n { kind: 'simple', css: 'counter-increment', key: 'counterIncrement' },\n { kind: 'simple', css: 'counter-reset', key: 'counterReset' },\n { kind: 'simple', css: 'empty-cells', key: 'emptyCells' },\n { kind: 'simple', css: 'z-index', key: 'zIndex' },\n { kind: 'simple', css: 'overflow', key: 'overflow' },\n { kind: 'simple', css: 'overflow-wrap', key: 'overflowWrap' },\n { kind: 'simple', css: 'overflow-x', key: 'overflowX' },\n { kind: 'simple', css: 'overflow-y', key: 'overflowY' },\n { kind: 'simple', css: 'perspective', key: 'perspective' },\n { kind: 'simple', css: 'perspective-origin', key: 'perspectiveOrigin' },\n { kind: 'simple', css: 'quotes', key: 'quotes' },\n { kind: 'simple', css: 'tab-size', key: 'tabSize' },\n { kind: 'simple', css: 'table-layout', key: 'tableLayout' },\n { kind: 'simple', css: 'visibility', key: 'visibility' },\n { kind: 'simple', css: 'appearance', key: 'appearance' },\n { kind: 'simple', css: 'image-rendering', key: 'imageRendering' },\n\n // Masks\n { kind: 'simple', css: 'mask-image', key: 'maskImage' },\n { kind: 'simple', css: 'mask-size', key: 'maskSize' },\n { kind: 'simple', css: 'mask-position', key: 'maskPosition' },\n { kind: 'simple', css: 'mask-repeat', key: 'maskRepeat' },\n\n // Shapes\n { kind: 'simple', css: 'shape-outside', key: 'shapeOutside' },\n { kind: 'simple', css: 'shape-margin', key: 'shapeMargin' },\n {\n kind: 'simple',\n css: 'shape-image-threshold',\n key: 'shapeImageThreshold',\n },\n\n // Columns\n { kind: 'simple', css: 'column-count', key: 'columnCount' },\n { kind: 'simple', css: 'column-width', key: 'columnWidth' },\n { kind: 'simple', css: 'column-rule', key: 'columnRule' },\n { kind: 'simple', css: 'columns', key: 'columns' },\n\n // Fragmentation\n { kind: 'simple', css: 'break-before', key: 'breakBefore' },\n { kind: 'simple', css: 'break-after', key: 'breakAfter' },\n { kind: 'simple', css: 'break-inside', key: 'breakInside' },\n { kind: 'simple', css: 'orphans', key: 'orphans' },\n { kind: 'simple', css: 'widows', key: 'widows' },\n { kind: 'simple', css: 'print-color-adjust', key: 'printColorAdjust' },\n\n // ─── CUSTOM ATTRIBUTES ────────────────────────────────────────────\n { kind: 'special', id: 'hideEmpty' },\n { kind: 'special', id: 'clearFix' },\n { kind: 'special', id: 'extendCss' },\n]\n\nexport default propertyMap\n","import { borderRadius, edge } from '~/styles/shorthands'\nimport type { Css } from '~/types'\nimport { values } from '~/units'\nimport processDescriptor from './processDescriptor'\nimport propertyMap from './propertyMap'\nimport type { InnerTheme, Theme } from './types'\n\nexport type { Theme as StylesTheme }\n\nexport type Styles = ({\n theme,\n css,\n rootSize,\n}: {\n theme: InnerTheme\n css: Css\n rootSize?: number\n}) => ReturnType<typeof css>\n\n/**\n * Data-driven style processor. Iterates the `propertyMap` descriptors\n * and delegates each to `processDescriptor`, which maps theme values\n * to CSS strings. The result is a single `css` tagged-template literal\n * containing all non-null property outputs.\n */\nconst styles: Styles = ({ theme: t, css, rootSize }) => {\n const calc = (...params: any[]) => values(params, rootSize)\n const shorthand = edge(rootSize)\n const borderRadiusFn = borderRadius(rootSize)\n\n const fragments = propertyMap.map((d) =>\n processDescriptor(d, t, css, calc, shorthand, borderRadiusFn),\n )\n\n return css`\n ${fragments}\n `\n}\n\nexport default styles\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitus-labs/unistyle",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2-alpha.2+5db1de0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Vit Bokisch <vit@bokisch.cz>",
|
|
6
6
|
"maintainers": [
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"react": ">= 19"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@vitus-labs/core": "1.3.
|
|
48
|
+
"@vitus-labs/core": "1.3.2-alpha.2+5db1de0",
|
|
49
49
|
"@vitus-labs/tools-rolldown": "^1.6.0",
|
|
50
50
|
"@vitus-labs/tools-typescript": "^1.6.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "5db1de07a7b0efa905c31b01c21b2576fc68e664"
|
|
53
53
|
}
|