UNPKG

@dash-ui/layout

Version:

A framework-agnostic layout library written in Dash

1 lines 59.4 kB
{"version":3,"file":"index.dev.mjs","sources":["../../src/index.ts"],"sourcesContent":["import compound from \"@dash-ui/compound\";\nimport type { ResponsiveStyles } from \"@dash-ui/responsive\";\nimport responsive from \"@dash-ui/responsive\";\nimport type {\n DashThemes,\n DashTokens,\n StyleObject,\n Styles,\n} from \"@dash-ui/styles\";\n\n/**\n * Creates new layout style utilities using an existing Dash `styles` instance.\n *\n * @param styles - An `styles` instance from `@dash-ui/styles`\n * @param mediaQueries - The media queries to use for responsive styles\n */\nfunction layout<\n Tokens extends\n | DashTokens\n | {\n gap: any;\n pad: any;\n borderWidth: any;\n shadow: any;\n radius: any;\n color: any;\n zIndex: any;\n },\n Themes extends DashThemes,\n MQ extends Record<string, string>\n>(styles: Styles<Tokens, Themes>, mediaQueries?: MQ) {\n const compoundStyles = compound(styles);\n const responsiveStyles: ResponsiveStyles<Tokens, Themes, MQ> = responsive(\n styles,\n mediaQueries || {}\n );\n\n const box = compoundStyles(\n {\n /**\n * Sets a `display` CSS property on your component\n */\n display: responsiveStyles.variants({\n flex: { display: \"flex\" },\n inlineFlex: { display: \"inline-flex\" },\n grid: { display: \"grid\" },\n inlineGrid: { display: \"inlineGrid\" },\n block: { display: \"block\" },\n inlineBlock: { display: \"inline-block\" },\n inline: { display: \"inline\" },\n table: { display: \"table\" },\n tableCell: { display: \"table-cell\" },\n tableRowGroup: { display: \"table-row-group\" },\n tableRow: { display: \"table-row\" },\n tableColumn: { display: \"table-column\" },\n tableColumnGroup: { display: \"table-column-group\" },\n tableHeader: { display: \"table-header\" },\n tableHeaderGroup: { display: \"table-header-group\" },\n tableFooterGroup: { display: \"table-footer-group\" },\n listItem: { display: \"list-item\" },\n contents: { display: \"contents\" },\n runIn: { display: \"run-in\" },\n none: { display: \"none\" },\n inherit: { display: \"inherit\" },\n initial: { display: \"initial\" },\n unset: { display: \"unset\" },\n revert: { display: \"revert\" },\n }),\n /**\n * Sets a `position` CSS property on your component\n */\n position: responsiveStyles.variants({\n absolute: { position: \"absolute\" },\n relative: { position: \"relative\" },\n fixed: { position: \"fixed\" },\n sticky: { position: \"sticky\" },\n static: { position: \"static\" },\n inherit: { position: \"inherit\" },\n initial: { position: \"initial\" },\n unset: { position: \"unset\" },\n revert: { position: \"revert\" },\n }),\n /**\n * Sets a `width` CSS property on your component\n */\n width: responsiveStyles.lazy((width: number | string) => ({ width })),\n /**\n * Sets a `height` CSS property on your component\n */\n height: responsiveStyles.lazy((height: number | string) => ({ height })),\n /**\n * Sets a `max-width` CSS property on your component\n */\n maxWidth: responsiveStyles.lazy((maxWidth: number | string) => ({\n maxWidth,\n })),\n /**\n * Sets a `max-height` CSS property on your component\n */\n maxHeight: responsiveStyles.lazy((maxHeight: number | string) => ({\n maxHeight,\n })),\n /**\n * Sets a `max-width` CSS property on your component\n */\n minWidth: responsiveStyles.lazy((minWidth: number | string) => ({\n minWidth,\n })),\n /**\n * Sets a `max-height` CSS property on your component\n */\n minHeight: responsiveStyles.lazy((minHeight: number | string) => ({\n minHeight,\n })),\n /**\n * Sets a `width` and `height` CSS property on your component\n */\n size: responsiveStyles.lazy((size: number | string) => ({\n width: size,\n height: size,\n })),\n /**\n * Sets a `padding` CSS property on your component using the \"pad\"\n * token in your theme\n */\n pad: responsiveStyles.lazy(\n (\n value:\n | Extract<keyof Tokens[\"pad\"], string | number>\n | Extract<keyof Tokens[\"pad\"], string | number>[]\n ) =>\n ({ pad }): StyleObject => ({\n padding: Array.isArray(value)\n ? value.map((k) => pad[k]).join(\" \")\n : pad[value],\n })\n ),\n /**\n * Sets a `background-color` CSS property on your component using the \"color\"\n * token in your theme\n */\n bg: responsiveStyles.variants(\n reduce(\n styles.tokens.color as Record<\n Extract<keyof Tokens[\"color\"], string | number>,\n string | number\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"color\"], string | number> | \"default\",\n StyleObject\n >,\n key\n ) => {\n acc[key] = {\n backgroundColor: styles.tokens.color[key],\n };\n\n return acc;\n },\n {}\n )\n ),\n /**\n * Sets a `border-color` CSS property on your component using the \"color\"\n * token in your theme and a `border-width` property using the \"borderWidth\"\n * token.\n */\n border: responsiveStyles.lazy(\n ([width, borderColor]: [\n (\n | Extract<keyof Tokens[\"borderWidth\"], string | number>\n | Extract<keyof Tokens[\"borderWidth\"], string | number>[]\n ),\n Extract<keyof Tokens[\"color\"], string | number>\n ]) =>\n ({ borderWidth, color }): StyleObject => ({\n borderWidth: Array.isArray(width)\n ? width.map((w) => borderWidth[w]).join(\" \")\n : borderWidth[width],\n borderStyle: \"solid\",\n borderColor: color[borderColor],\n })\n ),\n /**\n * Sets a `box-shadow` CSS property on your component using the \"shadow\"\n * token in your theme\n */\n shadow: responsiveStyles.variants(\n reduce(\n styles.tokens.shadow as Record<\n Extract<keyof Tokens[\"shadow\"], string | number>,\n string\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"shadow\"], string | number> | \"default\",\n StyleObject\n >,\n key\n ) => {\n acc[key] = {\n boxShadow: styles.tokens.shadow[key],\n };\n\n return acc;\n },\n {}\n )\n ),\n /**\n * Sets a `border-radius` CSS property on your component using the \"radius\"\n * token in your theme\n */\n radius: responsiveStyles.lazy(\n (\n value:\n | Extract<keyof Tokens[\"radius\"], string | number>\n | Extract<keyof Tokens[\"radius\"], string | number>[]\n ) =>\n ({ radius }): StyleObject => ({\n borderRadius: Array.isArray(value)\n ? value.map((k) => radius[k]).join(\" \")\n : radius[value],\n })\n ),\n /**\n * Sets the top, right, bottom, left position of the element\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/inset\n */\n inset: responsiveStyles.lazy(\n (value: string | number | (string | number)[]) => {\n if (Array.isArray(value)) {\n return {\n \"@supports (inset: 10px)\": {\n inset: value.map(unit).join(\" \"),\n },\n \"@supports not (inset: 10px)\": {\n top: value[0],\n right: value[1] ?? value[0],\n bottom: value[2] ?? value[0],\n left: value[3] ?? value[1] ?? value[0],\n },\n };\n }\n\n return {\n \"@supports (inset: 10px)\": {\n inset: value,\n },\n \"@supports not (inset: 10px)\": {\n top: value,\n right: value,\n bottom: value,\n left: value,\n },\n };\n }\n ),\n /**\n * Sets a `z-index` CSS property on your component\n */\n z: responsiveStyles.variants(\n reduce(\n styles.tokens.zIndex as Record<\n Extract<keyof Tokens[\"zIndex\"], string | number>,\n string | number\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"zIndex\"], string | number> | \"default\",\n StyleObject\n >,\n key\n ) => {\n acc[key] = {\n zIndex: styles.tokens.zIndex[key],\n };\n\n return acc;\n },\n {}\n )\n ),\n } as const,\n { atomic: true }\n );\n\n const alignItems = responsiveStyles.variants({\n start: {\n \"@supports (align-items: start)\": {\n alignItems: \"start\",\n },\n \"@supports not (align-items: start)\": {\n alignItems: \"flex-start\",\n },\n },\n end: {\n \"@supports (align-items: end)\": {\n alignItems: \"end\",\n },\n \"@supports not (align-items: end)\": {\n alignItems: \"flex-end\",\n },\n },\n center: { alignItems: \"center\" },\n baseline: { alignItems: \"baseline\" },\n stretch: { alignItems: \"stretch\" },\n normal: { alignItems: \"normal\" },\n inherit: { alignItems: \"inherit\" },\n initial: { alignItems: \"initial\" },\n unset: { alignItems: \"unset\" },\n revert: { alignItems: \"revert\" },\n } as const);\n\n const justifyItems = responsiveStyles.variants({\n start: {\n \"@supports (justify-items: start)\": {\n justifyItems: \"start\",\n },\n \"@supports not (justify-items: start)\": {\n justifyItems: \"flex-start\",\n },\n },\n end: {\n \"@supports (justify-items: end)\": {\n justifyItems: \"end\",\n },\n \"@supports not (justify-items: end)\": {\n justifyItems: \"flex-end\",\n },\n },\n center: { justifyItems: \"center\" },\n baseline: { justifyItems: \"baseline\" },\n stretch: { justifyItems: \"stretch\" },\n normal: { justifyItems: \"normal\" },\n inherit: { justifyItems: \"inherit\" },\n initial: { justifyItems: \"initial\" },\n unset: { justifyItems: \"unset\" },\n revert: { justifyItems: \"revert\" },\n } as const);\n\n const justifyContent = responsiveStyles.variants({\n start: {\n \"@supports (justify-content: start)\": {\n justifyContent: \"start\",\n },\n \"@supports not (justify-content: start)\": {\n justifyContent: \"flex-start\",\n },\n },\n end: {\n \"@supports (justify-content: end)\": {\n justifyContent: \"end\",\n },\n \"@supports not (justify-content: end)\": {\n justifyContent: \"flex-end\",\n },\n },\n center: { justifyContent: \"center\" },\n around: { justifyContent: \"space-around\" },\n between: { justifyContent: \"space-between\" },\n evenly: { justifyContent: \"space-evenly\" },\n baseline: { justifyContent: \"baseline\" },\n stretch: { justifyContent: \"stretch\" },\n normal: { justifyContent: \"normal\" },\n inherit: { justifyContent: \"inherit\" },\n initial: { justifyContent: \"initial\" },\n unset: { justifyContent: \"unset\" },\n revert: { justifyContent: \"revert\" },\n } as const);\n\n const alignContent = responsiveStyles.variants({\n start: {\n \"@supports (align-content: start)\": {\n alignContent: \"start\",\n },\n \"@supports not (align-content: start)\": {\n alignContent: \"flex-start\",\n },\n },\n end: {\n \"@supports (align-content: end)\": {\n alignContent: \"end\",\n },\n \"@supports not (align-content: end)\": {\n alignContent: \"flex-end\",\n },\n },\n center: { alignContent: \"center\" },\n around: { alignContent: \"space-around\" },\n between: { alignContent: \"space-between\" },\n evenly: { alignContent: \"space-evenly\" },\n baseline: { alignContent: \"baseline\" },\n stretch: { alignContent: \"stretch\" },\n normal: { alignContent: \"normal\" },\n inherit: { alignContent: \"inherit\" },\n initial: { alignContent: \"initial\" },\n unset: { alignContent: \"unset\" },\n revert: { alignContent: \"revert\" },\n } as const);\n\n const alignSelf = responsiveStyles.variants({\n start: {\n \"@supports (align-self: start)\": {\n alignSelf: \"start\",\n },\n \"@supports not (align-self: start)\": {\n alignSelf: \"flex-start\",\n },\n },\n end: {\n \"@supports (align-self: end)\": {\n alignSelf: \"end\",\n },\n \"@supports not (align-self: end)\": {\n alignSelf: \"flex-end\",\n },\n },\n center: { alignSelf: \"center\" },\n baseline: { alignSelf: \"baseline\" },\n stretch: { alignSelf: \"stretch\" },\n auto: { alignSelf: \"auto\" },\n normal: { alignSelf: \"normal\" },\n inherit: { alignSelf: \"inherit\" },\n initial: { alignSelf: \"initial\" },\n unset: { alignSelf: \"unset\" },\n revert: { alignSelf: \"revert\" },\n } as const);\n\n const justifySelf = responsiveStyles.variants({\n start: {\n \"@supports (justify-self: start)\": {\n justifySelf: \"start\",\n },\n \"@supports not (justify-self: start)\": {\n justifySelf: \"flex-start\",\n },\n },\n end: {\n \"@supports (justify-self: end)\": {\n justifySelf: \"end\",\n },\n \"@supports not (justify-self: end)\": {\n justifySelf: \"flex-end\",\n },\n },\n center: { justifySelf: \"center\" },\n around: { justifySelf: \"space-around\" },\n between: { justifySelf: \"space-between\" },\n evenly: { justifySelf: \"space-evenly\" },\n baseline: { justifySelf: \"baseline\" },\n stretch: { justifySelf: \"stretch\" },\n auto: { justifySelf: \"auto\" },\n normal: { justifySelf: \"normal\" },\n inherit: { justifySelf: \"inherit\" },\n initial: { justifySelf: \"initial\" },\n unset: { justifySelf: \"unset\" },\n revert: { justifySelf: \"revert\" },\n } as const);\n\n const flexItem = compoundStyles(\n {\n /**\n * Sets a `align-self` CSS property on your component\n */\n align: alignSelf,\n /**\n * Sets a `justify-self` CSS property on your component\n */\n basis: responsiveStyles.lazy((value: string | number) => ({\n flexBasis: value,\n })),\n /**\n * Sets a `justify-self` CSS property on your component\n */\n distribute: justifySelf,\n /**\n * Sets a `flex-grow` CSS property on your component\n */\n grow: responsiveStyles.lazy((value: number | boolean) => ({\n flexGrow: Number(value),\n })),\n /**\n * Sets a `order` CSS property on your component\n */\n order: responsiveStyles.lazy((value: number) => ({ order: value })),\n /**\n * Sets a `flex-shrink` CSS property on your component\n */\n shrink: responsiveStyles.lazy((value: number | boolean) => ({\n flexShrink: Number(value),\n })),\n ...box.styles,\n },\n { atomic: true }\n );\n\n const inline = compoundStyles(\n {\n default: responsiveStyles.one({\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n \"& > *\": {\n flexShrink: 0,\n },\n }),\n /**\n * Sets a vertical and horizontal gap between the child elements in the\n * inline using the \"gap\" token in your theme\n */\n gap: responsiveStyles.variants(\n reduce(\n styles.tokens.gap as Record<\n Extract<keyof Tokens[\"gap\"], string | number>,\n string | number\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"gap\"], string | number> | \"default\",\n StyleObject\n >,\n value\n ) => {\n const gap = styles.tokens.gap;\n\n acc[value] = {\n \"@supports (display: flex) and (gap: 1em)\": {\n gap: gap[value],\n },\n \"@supports not (display: flex) and (gap: 1em)\": {\n marginTop: `calc(-1 * ${gap[value]})!important`,\n marginLeft: `calc(-1 * ${gap[value]})!important`,\n \"& > *\": {\n marginTop: `${gap[value]}!important`,\n marginLeft: `${gap[value]}!important`,\n },\n },\n };\n\n return acc;\n },\n {}\n )\n ),\n /**\n * Distributed alignment properties on the x-axis using `justify-content`\n */\n distribute: justifyContent,\n /**\n * Positional alignment for its child items on the y-axis using `align-items`\n */\n align: alignItems,\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const sharedGrid = compoundStyles(\n {\n default: responsiveStyles.one({ display: \"grid\" }),\n /**\n * Makes the component display as an `inline-grid` rather than `grid`\n */\n inline: responsiveStyles.one({ display: \"inline-grid\" }),\n /**\n * Sets a `justify-items` CSS property on your component\n */\n alignX: justifyItems,\n /**\n * Sets an `align-items` CSS property on your component\n */\n alignY: alignItems,\n /**\n * Sets a `justify-content` CSS property on your component\n */\n distributeX: justifyContent,\n /**\n * Sets an `align-content` CSS property on your component\n */\n distributeY: alignContent,\n /**\n * Sets a horizontal and vertical gap between the child elements in the row\n * using the \"gap\" token in your theme\n */\n gap: responsiveStyles.lazy(\n (\n value:\n | Extract<keyof Tokens[\"gap\"], number | string>\n | [\n Extract<keyof Tokens[\"gap\"], number | string>,\n Extract<keyof Tokens[\"gap\"], number | string>\n ]\n ) =>\n ({ gap }): StyleObject => ({\n gridGap: Array.isArray(value)\n ? value.map((p) => gap[p]).join(\" \")\n : gap[value] + \" \" + gap[value],\n gap: Array.isArray(value)\n ? value.map((p) => gap[p]).join(\" \")\n : gap[value] + \" \" + gap[value],\n })\n ),\n /**\n * Sets a `grid-template-rows` CSS property on your component\n */\n rows: responsiveStyles.lazy(\n (value: number | (number | string)[]): StyleObject => {\n let rows: (number | string)[];\n if (Array.isArray(value)) rows = value;\n // ie doesn't have repeat\n else rows = [`repeat(${value},minmax(0,1fr))`];\n return { gridTemplateRows: rows.map((row) => unit(row)).join(\" \") };\n }\n ),\n },\n { atomic: true }\n );\n\n const grid = compoundStyles(\n {\n /**\n * Sets a `grid-template-columns` CSS property on your component\n */\n cols: responsiveStyles.lazy((value: number | (number | string)[]) => {\n let columns: (number | string)[];\n if (Array.isArray(value)) columns = value;\n // ie doesn't have repeat\n else columns = [`repeat(${value},minmax(0,1fr))`];\n return {\n gridTemplateColumns: columns.map((col) => unit(col)).join(\" \"),\n };\n }),\n ...sharedGrid.styles,\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const gridItem = compoundStyles(\n {\n /**\n * Sets a `justify-self` CSS property on your component\n */\n distribute: justifySelf,\n /**\n * Sets an `align-self` CSS property on your component\n */\n align: alignSelf,\n /**\n * Sets a `grid-column-start` CSS property on your component\n */\n colStart: responsiveStyles.lazy((gridColumnStart: number | string) => ({\n gridColumnStart,\n })),\n /**\n * Sets a `grid-column-end` CSS property on your component\n */\n colEnd: responsiveStyles.lazy((gridColumnEnd: number | string) => ({\n gridColumnEnd,\n })),\n /**\n * Sets a `grid-row-start` CSS property on your component\n */\n rowStart: responsiveStyles.lazy((gridRowStart: number | string) => ({\n gridRowStart,\n })),\n /**\n * Sets a `grid-row-end` CSS property on your component\n */\n rowEnd: responsiveStyles.lazy((gridRowEnd: number | string) => ({\n gridRowEnd,\n })),\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const autoGrid = compoundStyles(\n {\n /**\n * The minimum width of a grid item\n */\n itemWidth: responsiveStyles.lazy((itemWidth: number | string) => ({\n gridTemplateColumns: `repeat(auto-fit, minmax(${unit(\n itemWidth\n )}, 1fr))`,\n })),\n ...sharedGrid.styles,\n } as const,\n { atomic: true }\n );\n\n const hstack = compoundStyles(\n {\n default: responsiveStyles.one({\n display: \"flex\",\n flexDirection: \"row\",\n \"& > *\": {\n flexShrink: 0,\n },\n }),\n /**\n * Reverses the order of the child elements\n */\n reversed: responsiveStyles.one({\n flexDirection: \"row-reverse\",\n }),\n /**\n * Sets a horizontal gap between the child elements in the hstack using the \"gap\"\n * token in your theme\n */\n gap: responsiveStyles.variants(\n reduce(\n styles.tokens.gap as Record<\n Extract<keyof Tokens[\"gap\"], string | number>,\n string | number\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"gap\"], string | number> | \"default\",\n StyleObject\n >,\n value\n ) => {\n const gap = styles.tokens.gap;\n const margin = {\n \"& > * + *\": {\n marginLeft: `${gap[value]}!important`,\n },\n };\n acc[value] = (\"\" + value).startsWith(\"-\")\n ? margin\n : {\n \"@supports (display: flex) and (gap: 1em)\": {\n gap: gap[value],\n },\n \"@supports not (display: flex) and (gap: 1em)\": margin,\n };\n\n return acc;\n },\n {}\n )\n ),\n /**\n * Distributed alignment properties on the y-axis using `justify-content`\n */\n distribute: justifyContent,\n /**\n * Positional alignment for its child items on the x-axis using `align-items`\n */\n align: alignItems,\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const vstack = compoundStyles(\n {\n default: responsiveStyles.one({\n display: \"flex\",\n flexDirection: \"column\",\n \"& > *\": {\n flexShrink: 0,\n },\n }),\n /**\n * Reverses the order of the child elements\n */\n reversed: responsiveStyles.one({\n flexDirection: \"column-reverse\",\n }),\n /**\n * Sets a vertical gap between the child elements in the vstack using the \"gap\"\n * token in your theme\n */\n gap: responsiveStyles.variants(\n reduce(\n styles.tokens.gap as Record<\n Extract<keyof Tokens[\"gap\"], string | number>,\n string | number\n >,\n (\n acc: Record<\n Extract<keyof Tokens[\"gap\"], string | number> | \"default\",\n StyleObject\n >,\n value\n ) => {\n const gap = styles.tokens.gap;\n const margin = {\n \"& > * + *\": {\n marginTop: `${gap[value]}!important`,\n },\n };\n\n acc[value] = (value + \"\").startsWith(\"-\")\n ? margin\n : {\n \"@supports (display: flex) and (gap: 1em)\": {\n gap: gap[value],\n },\n \"@supports not (display: flex) and (gap: 1em)\": margin,\n };\n\n return acc;\n },\n {}\n )\n ),\n /**\n * Distributed alignment properties on the y-axis using `justify-content`\n */\n distribute: justifyContent,\n /**\n * Positional alignment for its child items on the y-axis using `align-items`\n */\n align: alignItems,\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const zstack = compoundStyles(\n {\n default: responsiveStyles.one({\n display: \"grid\",\n \"> *\": {\n gridArea: \"1/1/1/1\",\n },\n }),\n inline: grid.styles.inline,\n alignX: justifyItems,\n alignY: alignItems,\n distributeX: justifyContent,\n distributeY: alignContent,\n center: responsiveStyles.one({\n alignItems: \"center\",\n justifyItems: \"center\",\n }),\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const overlay = compoundStyles(\n {\n default: responsiveStyles.one({ position: \"absolute\" }),\n /**\n * Sets a `margin` between the edges of the overlay item's container\n */\n offset: responsiveStyles.lazy((margin: number | string) => ({ margin })),\n /**\n * Sets the placement of your overlay item relative to its container\n */\n placement: responsiveStyles.variants({\n top: { top: 0, left: \"50%\", transform: \"translateX(-50%)\" },\n right: { right: 0, top: \"50%\", transform: \"translateY(-50%)\" },\n bottom: { bottom: 0, left: \"50%\", transform: \"translateX(-50%)\" },\n left: { left: 0, top: \"50%\", transform: \"translateY(-50%)\" },\n center: {\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n },\n topRight: { top: 0, right: 0 },\n topLeft: { top: 0, left: 0 },\n bottomRight: { bottom: 0, right: 0 },\n bottomLeft: { bottom: 0, left: 0 },\n }),\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n const bleed = compoundStyles(\n {\n /**\n * Sets a negative margin on itself using the \"pad\" token in your theme\n */\n amount: responsiveStyles.lazy(\n (\n value:\n | Extract<keyof Tokens[\"pad\"], string | number>\n | Extract<keyof Tokens[\"pad\"], string | number>[]\n ) =>\n ({ pad }): StyleObject => ({\n margin: Array.isArray(value)\n ? value\n .map((k) =>\n String(k).startsWith(\"-\")\n ? `${pad[k]}`\n : `calc(-1 * ${pad[k]})`\n )\n .join(\" \") + \"!important\"\n : String(value).startsWith(\"-\")\n ? `${pad[value]}!important`\n : `calc(-1 * ${pad[value]})!important`,\n })\n ),\n ...box.styles,\n } as const,\n { atomic: true }\n );\n\n return {\n /**\n * Sets a `align-items` CSS property on your component\n */\n alignItems,\n /**\n * Sets a `justify-items` CSS property on your component\n */\n justifyItems,\n /**\n * Sets a `justify-content` CSS property on your component\n */\n justifyContent,\n /**\n * Sets a `align-content` CSS property on your component\n */\n alignContent,\n /**\n * Sets a `align-self` CSS property on your component\n */\n alignSelf,\n /**\n * Sets a `justify-self` CSS property on your component\n */\n justifySelf,\n\n /**\n * A layout style for adding size, padding, position, color, and more\n * using tokens from your CSS variable theme.\n *\n * @example\n * <div className={box({size: 300, bg: {sm: 'red', md: 'blue'}})} />\n */\n box,\n /**\n * Arranges child nodes horizontally, wrapping to multiple lines if needed,\n * with equal spacing between items.\n *\n * If there is only a single child node, no space will be rendered.\n *\n * ```\n * ☐☐☐☐☐\n * ☐☐☐☐☐☐\n * ☐☐☐☐☐\n * ☐☐☐\n * ```\n *\n * Some use cases include input chips and tags.\n *\n * @example\n * <div className={inline({gap: 'sm})}>\n * <Item/>\n * <Item/>\n * </div>\n */\n inline,\n /**\n * A layout style that can add positioning properties to itself inside\n * of a flex container.\n *\n * @example\n * <div className={flexItem({alignSelf: 'center', order: 2})}/>\n */\n flexItem,\n /**\n * A layout style that distributes its children in a grid like so:\n *\n * ```\n * ☐ ☐ ☐\n * ☐ ☐ ☐\n * ☐ ☐ ☐\n * ```\n *\n * @example\n * <div className={grid({rows: 2, cols: 2})}>\n * <GridItem/>\n * <GridItem/>\n * <GridItem/>\n * <GridItem/>\n * </div>\n */\n grid,\n /**\n * A layout style that can add positioning properties to itself inside\n * of a `<Grid>` component.\n *\n * @example\n * <div className={grid({cols: 2, rows: 2})}>\n * // Occupies 2 columns\n * <div className={gridItem({colStart: 1, colEnd: 2})} />\n * <div/>\n * <div/>\n * </div>\n */\n gridItem,\n /**\n * A grid that automatically chooses a number of columns based on a preferred\n * minimum grid item width. The items will grow to fit snugly within the grid\n * container, like with flex wrapping, but no item will grow larger than the\n * column size, unlike flex wrapping.\n *\n * ☐ ☐ ☐\n * ☐ ☐ ☐\n * ☐ ☐\n */\n autoGrid,\n /**\n * A layout style that distributes its items in a row without wrapping\n * like so:\n *\n * ```\n * ☐ ☐ ☐ ☐ ☐ ☐ ☐\n * ```\n *\n * @example\n * <div className={hstack({gap: 'sm'})}>\n * <Item/>\n * <Item/>\n * </div>\n */\n hstack,\n /**\n * A layout style that distributes its items in a column without wrapping\n * like so:\n *\n * ```\n * ☐\n * ☐\n * ☐\n * ☐\n * ```\n *\n * @example\n * <div className={vstack({gap: 'sm'})}>\n * <Item/>\n * <Item/>\n * </div>\n */\n vstack,\n /**\n * A layout style that stacks its items on top of one another, like so:\n *\n * ```\n * _____\n * | ☐ |\n * _____\n * ```\n *\n * @example\n * <div className={zstack({center: true})} />\n */\n zstack,\n /**\n * A layout style than positions itself absolutely inside of its\n * container in whichever placement you decide.\n *\n * @example\n * <div className={overlay({placement: 'bottomRight', offset: 24})} />\n */\n overlay,\n /**\n * A layout style that sets a negative left/top margin on itself using\n * the \"pad\" token in your theme. This is useful for increasing the\n * tap area of a component while maintaining the desired visual padding.\n *\n * @example\n * <div className={bleed({amount: 'sm', pad: 'lg'})}>\n * <Item/>\n * <Item/>\n * </div>\n */\n bleed,\n } as const;\n}\n\nexport default layout;\n\nconst keys: <T>(obj: T) => (keyof T)[] = Object.keys;\nfunction reduce<T, U>(\n obj: T,\n fn: (acc: U, key: keyof T, currentIndex: number, arr: (keyof T)[]) => U,\n init: Partial<U>\n): U {\n return keys(obj).reduce(fn, init as U);\n}\n\n/**\n * Adds a `px` unit to numeric values and returns non-numeric values as\n * they are.\n *\n * @param value - The value you want to maybe add a unit to\n */\nfunction unit<T extends number | string>(value: T): T | string {\n return !isNaN(value as any) && value !== 0 ? `${value}px` : value;\n}\n"],"names":["width","height","maxWidth","maxHeight","minWidth","minHeight","size","value","pad","padding","Array","isArray","map","k","join","borderColor","borderWidth","color","w","borderStyle","radius","borderRadius","inset","unit","top","right","bottom","left","flexBasis","flexGrow","Number","order","flexShrink","gap","gridGap","p","row","rows","gridTemplateRows","col","columns","gridTemplateColumns","gridColumnStart","gridColumnEnd","gridRowStart","gridRowEnd","itemWidth","margin","String","startsWith","layout","styles","mediaQueries","compoundStyles","compound","responsiveStyles","responsive","box","display","variants","flex","inlineFlex","grid","inlineGrid","block","inlineBlock","inline","table","tableCell","tableRowGroup","tableRow","tableColumn","tableColumnGroup","tableHeader","tableHeaderGroup","tableFooterGroup","listItem","contents","runIn","none","inherit","initial","unset","revert","position","absolute","relative","fixed","sticky","static","lazy","bg","reduce","tokens","acc","key","backgroundColor","border","shadow","boxShadow","z","zIndex","atomic","alignItems","start","end","center","baseline","stretch","normal","justifyItems","justifyContent","around","between","evenly","alignContent","alignSelf","auto","justifySelf","flexItem","align","basis","distribute","grow","shrink","default","one","flexWrap","marginTop","marginLeft","sharedGrid","alignX","alignY","distributeX","distributeY","cols","gridItem","colStart","colEnd","rowStart","rowEnd","autoGrid","hstack","flexDirection","reversed","vstack","zstack","gridArea","overlay","offset","placement","transform","topRight","topLeft","bottomRight","bottomLeft","bleed","amount","keys","Object","obj","fn","init","isNaN"],"mappings":"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