@slimr/styled 1.0.41 → 2.0.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/README.md CHANGED
@@ -6,7 +6,7 @@ Demos: See `./packages/demo` or [CodeSandbox](https://codesandbox.io/s/64r9px?fi
6
6
 
7
7
  `@slimr` is a set of slim React (hence '@slimr') libs:
8
8
 
9
- - [@slimr/css](https://www.npmjs.com/package/@slimr/css)
9
+ - [@slimr/css](https://www.npmjs.com/package/@slimr/css) - an emotion-like css management lib bundled with this lib
10
10
  - [@slimr/mdi-paths](https://www.npmjs.com/package/@slimr/mdi-paths)
11
11
  - [@slimr/styled](https://www.npmjs.com/package/@slimr/styled)
12
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slimr/styled",
3
- "version": "1.0.41",
3
+ "version": "2.0.2",
4
4
  "author": "Brian Dombrowski",
5
5
  "license": "ISC",
6
6
  "private": false,
@@ -50,6 +50,6 @@
50
50
  "react-dom": "^18"
51
51
  },
52
52
  "dependencies": {
53
- "@slimr/css": "^1.0.36"
53
+ "@slimr/css": "^2.0.1"
54
54
  }
55
55
  }
package/src/core.cjs ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";var P=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var T=(s,e)=>{for(var t in e)P(s,t,{get:e[t],enumerable:!0})},A=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of b(e))!$.call(s,i)&&i!==t&&P(s,i,{get:()=>e[i],enumerable:!(r=S(e,i))||r.enumerable});return s};var j=s=>A(P({},"__esModule",{value:!0}),s);var z={};T(z,{styledBase:()=>w});module.exports=j(z);var p=require("react"),l=require("@slimr/css");function M(s){return s.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function N(s){return s.replace(/-./g,e=>e[1].toUpperCase())}function L(s){return Object.entries(s).reduce((e,[t,r])=>(t==="mx"?(e.marginLeft=r,e.marginRight=r):t==="my"?(e.marginTop=r,e.marginBottom=r):t==="px"?(e.paddingLeft=r,e.paddingRight=r):t==="py"?(e.paddingTop=r,e.paddingBottom=r):t in l.shorthandPropsMap?e[N(l.shorthandPropsMap[t])]=r:e[t]=r,e),{})}function o(s){return Object.entries(s).map(([e,t])=>t?(e=M(e),typeof t=="number"&&(t=t+"px"),Array.isArray(t)&&(t="["+t.map(r=>typeof r=="number"?r+"px":r).join(",")+"]"),e+":"+t+";"):"").join(`
2
+ `)}function w(s){return(...e)=>{let t=(0,l.css)(...e),r=(0,p.forwardRef)((i,h)=>{let{_active:Z,_css:u,_dark:d,_focus:m,_focusVisible:k,_focusWithin:c,_hover:y,_target:_,_visited:g,_zx:a={},...f}=i;Object.entries(i).forEach(([x,C])=>{x.startsWith("_")&&(a[x.slice(1)]=C,delete f[x])});let n="";return Z&&(n+=`
3
+ &:active {
4
+ ${o(Z)}
5
+ }
6
+ `),d&&(n+=`
7
+ @media (prefers-color-scheme: dark) {
8
+ ${o(d)}
9
+ }
10
+ `),m&&(n+=`
11
+ &:focus {
12
+ ${o(m)}
13
+ }
14
+ `),k&&(n+=`
15
+ &:focus-visible {
16
+ ${o(k)}
17
+ }
18
+ `),c&&(n+=`
19
+ &:focus-within {
20
+ ${o(c)}
21
+ }
22
+ `),y&&(n+=`
23
+ &:hover {
24
+ ${o(y)}
25
+ }
26
+ `),_&&(n+=`
27
+ &:target {
28
+ ${o(_)}
29
+ }
30
+ `),g&&(n+=`
31
+ &:visited {
32
+ ${o(g)}
33
+ }
34
+ `),Object.values(a).some(x=>Array.isArray(x))||n?n=o(a)+n:(a=L(a),f.style={...f.style,...a}),(0,p.createElement)(s,{ref:h,...f,className:(0,l.classJoin)(t,u?u.includes(":")?(0,l.css)(u):u:void 0,n?(0,l.css)(n):void 0,i.className)})});return r.toString=()=>"."+t,r}}0&&(module.exports={styledBase});
35
+ //# sourceMappingURL=core.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["core.ts"],"sourcesContent":["import { createElement, CSSProperties, FC, forwardRef, HTMLAttributes } from 'react'\nimport { classJoin, css, ShorthandProps, shorthandPropsMap, TemplateStringProps } from '@slimr/css'\n\n/** A type that represents all the css properties + shorthand props */\nexport interface ZxProps extends CSSProperties, ShorthandProps {}\ntype ZxP = ZxProps\n\ntype Zx = {\n [k in keyof ZxP]:\n | ZxP[k]\n | [ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n}\n\ntype _Props = {\n [k in keyof Zx as `_${k}`]?: Zx[k]\n}\n\nexport interface SCProps extends _Props {\n /** Like zx prop, but applies only on :active */\n _active?: Zx\n className?: string\n /** A string of css or classname to be added to the component */\n _css?: string\n /** Like zx prop, but applies only when user prefers dark theme */\n _dark?: Zx\n /** Like zx prop, but applies only on :focus */\n _focus?: Zx\n /** Like zx prop, but applies only on :focus-visible */\n _focusVisible?: Zx\n /** Like zx prop, but applies only on :focus-within */\n _focusWithin?: Zx\n /** Like zx prop, but applies only on :hover */\n _hover?: Zx\n style?: CSSProperties\n /** Like zx prop, but applies only on :target */\n _target?: Zx\n /** Like zx prop, but applies only on :visited */\n _visited?: Zx\n /**\n * Like style prop, but enhanced with features like chakra\n * - Array values are converted to media query breakpoints\n * - Numbers are converted to px\n * - Shorthand props are supported\n */\n _zx?: Zx\n}\n\n/** Styled Component: Like FunctionalComponent but adds SCProps */\nexport type SC<T extends { className?: HTMLAttributes<any>['className'] }> = FC<T & SCProps>\n\nfunction toKebabCase(str: string) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/-./g, (x) => x[1].toUpperCase())\n}\n\nfunction expandShorthandProps(zx: Zx) {\n return Object.entries(zx).reduce((acc, [k, v]) => {\n if (k === 'mx') {\n acc.marginLeft = v\n acc.marginRight = v\n } else if (k === 'my') {\n acc.marginTop = v\n acc.marginBottom = v\n } else if (k === 'px') {\n acc.paddingLeft = v\n acc.paddingRight = v\n } else if (k === 'py') {\n acc.paddingTop = v\n acc.paddingBottom = v\n } else if (k in shorthandPropsMap) {\n acc[toCamelCase(shorthandPropsMap[k as keyof typeof shorthandPropsMap])] = v\n } else {\n acc[k] = v\n }\n return acc\n }, {} as any)\n}\n\nfunction zxToCss(zx: Zx): string {\n return Object.entries(zx)\n .map(([k, v]) => {\n if (!v) return ''\n k = toKebabCase(k)\n if (typeof v === 'number') v = v + 'px'\n if (Array.isArray(v)) {\n // @ts-ignore\n v = '[' + v.map((v) => (typeof v === 'number' ? v + 'px' : v)).join(',') + ']'\n }\n return k + ':' + v + ';'\n })\n .join('\\n')\n}\n\n/**\n * A lightweight alternative to styled-components\n * @param function - a functional component to be styled; must accept a className prop\n * @returns a function that accepts a template string of css returns a decorated functional component\n */\nexport function styledBase<C extends FC<any>>(Component: C) {\n return (...cssProps: TemplateStringProps) => {\n const className = css(...cssProps)\n /**\n * A functional component that accepts Styled Props\n */\n const CStyled = forwardRef((props: SCProps, ref) => {\n let {\n _active,\n _css,\n _dark,\n _focus,\n _focusVisible,\n _focusWithin,\n _hover,\n _target,\n _visited,\n _zx = {},\n ...rest\n } = props\n\n // Pluck out $ prefixed props\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('_')) {\n // @ts-ignore\n _zx[k.slice(1)] = v\n // @ts-ignore\n delete rest[k]\n }\n })\n\n let cssStr = ''\n\n if (_active) {\n cssStr += `\n &:active {\n ${zxToCss(_active)}\n }\n `\n }\n if (_dark) {\n cssStr += `\n @media (prefers-color-scheme: dark) {\n ${zxToCss(_dark)}\n }\n `\n }\n if (_focus) {\n cssStr += `\n &:focus {\n ${zxToCss(_focus)}\n }\n `\n }\n if (_focusVisible) {\n cssStr += `\n &:focus-visible {\n ${zxToCss(_focusVisible)}\n }\n `\n }\n if (_focusWithin) {\n cssStr += `\n &:focus-within {\n ${zxToCss(_focusWithin)}\n }\n `\n }\n if (_hover) {\n cssStr += `\n &:hover {\n ${zxToCss(_hover)}\n }\n `\n }\n if (_target) {\n cssStr += `\n &:target {\n ${zxToCss(_target)}\n }\n `\n }\n if (_visited) {\n cssStr += `\n &:visited {\n ${zxToCss(_visited)}\n }\n `\n }\n\n const hasMediaQuery = Object.values(_zx).some((v) => Array.isArray(v))\n // If has media query styles, use css class. Otherwise favor inline styles\n if (hasMediaQuery || cssStr) {\n cssStr = zxToCss(_zx) + cssStr\n } else {\n _zx = expandShorthandProps(_zx)\n rest.style = { ...rest.style, ..._zx } as CSSProperties\n }\n\n return createElement(Component, {\n ref,\n ...rest,\n className: classJoin(\n className,\n _css ? (_css.includes(':') ? css(_css) : _css) : undefined,\n cssStr ? css(cssStr) : undefined,\n props.className\n ),\n })\n })\n CStyled.toString = () => '.' + className\n return CStyled as unknown as SC<Parameters<C>[0]>\n }\n}\n"],"mappings":"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","names":["core_exports","__export","styledBase","__toCommonJS","import_react","import_css","toKebabCase","str","toCamelCase","x","expandShorthandProps","zx","acc","k","v","zxToCss","Component","cssProps","className","CStyled","props","ref","_active","_css","_dark","_focus","_focusVisible","_focusWithin","_hover","_target","_visited","_zx","rest","cssStr"]}
package/src/core.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import { CSSProperties, HTMLAttributes, FC } from 'react';
2
+ import { ShorthandProps } from '@slimr/css';
3
+
4
+ /** A type that represents all the css properties + shorthand props */
5
+ interface ZxProps extends CSSProperties, ShorthandProps {
6
+ }
7
+ type ZxP = ZxProps;
8
+ type Zx = {
9
+ [k in keyof ZxP]: ZxP[k] | [ZxP[k] | null, ZxP[k]] | [ZxP[k] | null, ZxP[k] | null, ZxP[k]] | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]] | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]] | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]] | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]];
10
+ };
11
+ type _Props = {
12
+ [k in keyof Zx as `_${k}`]?: Zx[k];
13
+ };
14
+ interface SCProps extends _Props {
15
+ /** Like zx prop, but applies only on :active */
16
+ _active?: Zx;
17
+ className?: string;
18
+ /** A string of css or classname to be added to the component */
19
+ _css?: string;
20
+ /** Like zx prop, but applies only when user prefers dark theme */
21
+ _dark?: Zx;
22
+ /** Like zx prop, but applies only on :focus */
23
+ _focus?: Zx;
24
+ /** Like zx prop, but applies only on :focus-visible */
25
+ _focusVisible?: Zx;
26
+ /** Like zx prop, but applies only on :focus-within */
27
+ _focusWithin?: Zx;
28
+ /** Like zx prop, but applies only on :hover */
29
+ _hover?: Zx;
30
+ style?: CSSProperties;
31
+ /** Like zx prop, but applies only on :target */
32
+ _target?: Zx;
33
+ /** Like zx prop, but applies only on :visited */
34
+ _visited?: Zx;
35
+ /**
36
+ * Like style prop, but enhanced with features like chakra
37
+ * - Array values are converted to media query breakpoints
38
+ * - Numbers are converted to px
39
+ * - Shorthand props are supported
40
+ */
41
+ _zx?: Zx;
42
+ }
43
+ /** Styled Component: Like FunctionalComponent but adds SCProps */
44
+ type SC<T extends {
45
+ className?: HTMLAttributes<any>['className'];
46
+ }> = FC<T & SCProps>;
47
+ /**
48
+ * A lightweight alternative to styled-components
49
+ * @param function - a functional component to be styled; must accept a className prop
50
+ * @returns a function that accepts a template string of css returns a decorated functional component
51
+ */
52
+ declare function styledBase<C extends FC<any>>(Component: C): (strings: string | TemplateStringsArray, ...placeHolders: string[]) => SC<Parameters<C>[0]>;
53
+
54
+ export { SC, SCProps, ZxProps, styledBase };
package/src/core.js ADDED
@@ -0,0 +1,35 @@
1
+ import{createElement as C,forwardRef as S}from"react";import{classJoin as b,css as f,shorthandPropsMap as _}from"@slimr/css";function $(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function T(n){return n.replace(/-./g,e=>e[1].toUpperCase())}function A(n){return Object.entries(n).reduce((e,[t,r])=>(t==="mx"?(e.marginLeft=r,e.marginRight=r):t==="my"?(e.marginTop=r,e.marginBottom=r):t==="px"?(e.paddingLeft=r,e.paddingRight=r):t==="py"?(e.paddingTop=r,e.paddingBottom=r):t in _?e[T(_[t])]=r:e[t]=r,e),{})}function i(n){return Object.entries(n).map(([e,t])=>t?(e=$(e),typeof t=="number"&&(t=t+"px"),Array.isArray(t)&&(t="["+t.map(r=>typeof r=="number"?r+"px":r).join(",")+"]"),e+":"+t+";"):"").join(`
2
+ `)}function F(n){return(...e)=>{let t=f(...e),r=S((u,g)=>{let{_active:p,_css:a,_dark:P,_focus:Z,_focusVisible:d,_focusWithin:m,_hover:k,_target:c,_visited:y,_zx:o={},...x}=u;Object.entries(u).forEach(([l,h])=>{l.startsWith("_")&&(o[l.slice(1)]=h,delete x[l])});let s="";return p&&(s+=`
3
+ &:active {
4
+ ${i(p)}
5
+ }
6
+ `),P&&(s+=`
7
+ @media (prefers-color-scheme: dark) {
8
+ ${i(P)}
9
+ }
10
+ `),Z&&(s+=`
11
+ &:focus {
12
+ ${i(Z)}
13
+ }
14
+ `),d&&(s+=`
15
+ &:focus-visible {
16
+ ${i(d)}
17
+ }
18
+ `),m&&(s+=`
19
+ &:focus-within {
20
+ ${i(m)}
21
+ }
22
+ `),k&&(s+=`
23
+ &:hover {
24
+ ${i(k)}
25
+ }
26
+ `),c&&(s+=`
27
+ &:target {
28
+ ${i(c)}
29
+ }
30
+ `),y&&(s+=`
31
+ &:visited {
32
+ ${i(y)}
33
+ }
34
+ `),Object.values(o).some(l=>Array.isArray(l))||s?s=i(o)+s:(o=A(o),x.style={...x.style,...o}),C(n,{ref:g,...x,className:b(t,a?a.includes(":")?f(a):a:void 0,s?f(s):void 0,u.className)})});return r.toString=()=>"."+t,r}}export{F as styledBase};
35
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["core.ts"],"sourcesContent":["import { createElement, CSSProperties, FC, forwardRef, HTMLAttributes } from 'react'\nimport { classJoin, css, ShorthandProps, shorthandPropsMap, TemplateStringProps } from '@slimr/css'\n\n/** A type that represents all the css properties + shorthand props */\nexport interface ZxProps extends CSSProperties, ShorthandProps {}\ntype ZxP = ZxProps\n\ntype Zx = {\n [k in keyof ZxP]:\n | ZxP[k]\n | [ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n}\n\ntype _Props = {\n [k in keyof Zx as `_${k}`]?: Zx[k]\n}\n\nexport interface SCProps extends _Props {\n /** Like zx prop, but applies only on :active */\n _active?: Zx\n className?: string\n /** A string of css or classname to be added to the component */\n _css?: string\n /** Like zx prop, but applies only when user prefers dark theme */\n _dark?: Zx\n /** Like zx prop, but applies only on :focus */\n _focus?: Zx\n /** Like zx prop, but applies only on :focus-visible */\n _focusVisible?: Zx\n /** Like zx prop, but applies only on :focus-within */\n _focusWithin?: Zx\n /** Like zx prop, but applies only on :hover */\n _hover?: Zx\n style?: CSSProperties\n /** Like zx prop, but applies only on :target */\n _target?: Zx\n /** Like zx prop, but applies only on :visited */\n _visited?: Zx\n /**\n * Like style prop, but enhanced with features like chakra\n * - Array values are converted to media query breakpoints\n * - Numbers are converted to px\n * - Shorthand props are supported\n */\n _zx?: Zx\n}\n\n/** Styled Component: Like FunctionalComponent but adds SCProps */\nexport type SC<T extends { className?: HTMLAttributes<any>['className'] }> = FC<T & SCProps>\n\nfunction toKebabCase(str: string) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/-./g, (x) => x[1].toUpperCase())\n}\n\nfunction expandShorthandProps(zx: Zx) {\n return Object.entries(zx).reduce((acc, [k, v]) => {\n if (k === 'mx') {\n acc.marginLeft = v\n acc.marginRight = v\n } else if (k === 'my') {\n acc.marginTop = v\n acc.marginBottom = v\n } else if (k === 'px') {\n acc.paddingLeft = v\n acc.paddingRight = v\n } else if (k === 'py') {\n acc.paddingTop = v\n acc.paddingBottom = v\n } else if (k in shorthandPropsMap) {\n acc[toCamelCase(shorthandPropsMap[k as keyof typeof shorthandPropsMap])] = v\n } else {\n acc[k] = v\n }\n return acc\n }, {} as any)\n}\n\nfunction zxToCss(zx: Zx): string {\n return Object.entries(zx)\n .map(([k, v]) => {\n if (!v) return ''\n k = toKebabCase(k)\n if (typeof v === 'number') v = v + 'px'\n if (Array.isArray(v)) {\n // @ts-ignore\n v = '[' + v.map((v) => (typeof v === 'number' ? v + 'px' : v)).join(',') + ']'\n }\n return k + ':' + v + ';'\n })\n .join('\\n')\n}\n\n/**\n * A lightweight alternative to styled-components\n * @param function - a functional component to be styled; must accept a className prop\n * @returns a function that accepts a template string of css returns a decorated functional component\n */\nexport function styledBase<C extends FC<any>>(Component: C) {\n return (...cssProps: TemplateStringProps) => {\n const className = css(...cssProps)\n /**\n * A functional component that accepts Styled Props\n */\n const CStyled = forwardRef((props: SCProps, ref) => {\n let {\n _active,\n _css,\n _dark,\n _focus,\n _focusVisible,\n _focusWithin,\n _hover,\n _target,\n _visited,\n _zx = {},\n ...rest\n } = props\n\n // Pluck out $ prefixed props\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('_')) {\n // @ts-ignore\n _zx[k.slice(1)] = v\n // @ts-ignore\n delete rest[k]\n }\n })\n\n let cssStr = ''\n\n if (_active) {\n cssStr += `\n &:active {\n ${zxToCss(_active)}\n }\n `\n }\n if (_dark) {\n cssStr += `\n @media (prefers-color-scheme: dark) {\n ${zxToCss(_dark)}\n }\n `\n }\n if (_focus) {\n cssStr += `\n &:focus {\n ${zxToCss(_focus)}\n }\n `\n }\n if (_focusVisible) {\n cssStr += `\n &:focus-visible {\n ${zxToCss(_focusVisible)}\n }\n `\n }\n if (_focusWithin) {\n cssStr += `\n &:focus-within {\n ${zxToCss(_focusWithin)}\n }\n `\n }\n if (_hover) {\n cssStr += `\n &:hover {\n ${zxToCss(_hover)}\n }\n `\n }\n if (_target) {\n cssStr += `\n &:target {\n ${zxToCss(_target)}\n }\n `\n }\n if (_visited) {\n cssStr += `\n &:visited {\n ${zxToCss(_visited)}\n }\n `\n }\n\n const hasMediaQuery = Object.values(_zx).some((v) => Array.isArray(v))\n // If has media query styles, use css class. Otherwise favor inline styles\n if (hasMediaQuery || cssStr) {\n cssStr = zxToCss(_zx) + cssStr\n } else {\n _zx = expandShorthandProps(_zx)\n rest.style = { ...rest.style, ..._zx } as CSSProperties\n }\n\n return createElement(Component, {\n ref,\n ...rest,\n className: classJoin(\n className,\n _css ? (_css.includes(':') ? css(_css) : _css) : undefined,\n cssStr ? css(cssStr) : undefined,\n props.className\n ),\n })\n })\n CStyled.toString = () => '.' + className\n return CStyled as unknown as SC<Parameters<C>[0]>\n }\n}\n"],"mappings":"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","names":["createElement","forwardRef","classJoin","css","shorthandPropsMap","toKebabCase","str","toCamelCase","x","expandShorthandProps","zx","acc","k","v","zxToCss","styledBase","Component","cssProps","className","CStyled","props","ref","_active","_css","_dark","_focus","_focusVisible","_focusWithin","_hover","_target","_visited","_zx","rest","cssStr"]}
package/src/core.ts ADDED
@@ -0,0 +1,220 @@
1
+ import { createElement, CSSProperties, FC, forwardRef, HTMLAttributes } from 'react'
2
+ import { classJoin, css, ShorthandProps, shorthandPropsMap, TemplateStringProps } from '@slimr/css'
3
+
4
+ /** A type that represents all the css properties + shorthand props */
5
+ export interface ZxProps extends CSSProperties, ShorthandProps {}
6
+ type ZxP = ZxProps
7
+
8
+ type Zx = {
9
+ [k in keyof ZxP]:
10
+ | ZxP[k]
11
+ | [ZxP[k] | null, ZxP[k]]
12
+ | [ZxP[k] | null, ZxP[k] | null, ZxP[k]]
13
+ | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]
14
+ | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]
15
+ | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]
16
+ | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]
17
+ }
18
+
19
+ type _Props = {
20
+ [k in keyof Zx as `_${k}`]?: Zx[k]
21
+ }
22
+
23
+ export interface SCProps extends _Props {
24
+ /** Like zx prop, but applies only on :active */
25
+ _active?: Zx
26
+ className?: string
27
+ /** A string of css or classname to be added to the component */
28
+ _css?: string
29
+ /** Like zx prop, but applies only when user prefers dark theme */
30
+ _dark?: Zx
31
+ /** Like zx prop, but applies only on :focus */
32
+ _focus?: Zx
33
+ /** Like zx prop, but applies only on :focus-visible */
34
+ _focusVisible?: Zx
35
+ /** Like zx prop, but applies only on :focus-within */
36
+ _focusWithin?: Zx
37
+ /** Like zx prop, but applies only on :hover */
38
+ _hover?: Zx
39
+ style?: CSSProperties
40
+ /** Like zx prop, but applies only on :target */
41
+ _target?: Zx
42
+ /** Like zx prop, but applies only on :visited */
43
+ _visited?: Zx
44
+ /**
45
+ * Like style prop, but enhanced with features like chakra
46
+ * - Array values are converted to media query breakpoints
47
+ * - Numbers are converted to px
48
+ * - Shorthand props are supported
49
+ */
50
+ _zx?: Zx
51
+ }
52
+
53
+ /** Styled Component: Like FunctionalComponent but adds SCProps */
54
+ export type SC<T extends { className?: HTMLAttributes<any>['className'] }> = FC<T & SCProps>
55
+
56
+ function toKebabCase(str: string) {
57
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()
58
+ }
59
+
60
+ function toCamelCase(str: string) {
61
+ return str.replace(/-./g, (x) => x[1].toUpperCase())
62
+ }
63
+
64
+ function expandShorthandProps(zx: Zx) {
65
+ return Object.entries(zx).reduce((acc, [k, v]) => {
66
+ if (k === 'mx') {
67
+ acc.marginLeft = v
68
+ acc.marginRight = v
69
+ } else if (k === 'my') {
70
+ acc.marginTop = v
71
+ acc.marginBottom = v
72
+ } else if (k === 'px') {
73
+ acc.paddingLeft = v
74
+ acc.paddingRight = v
75
+ } else if (k === 'py') {
76
+ acc.paddingTop = v
77
+ acc.paddingBottom = v
78
+ } else if (k in shorthandPropsMap) {
79
+ acc[toCamelCase(shorthandPropsMap[k as keyof typeof shorthandPropsMap])] = v
80
+ } else {
81
+ acc[k] = v
82
+ }
83
+ return acc
84
+ }, {} as any)
85
+ }
86
+
87
+ function zxToCss(zx: Zx): string {
88
+ return Object.entries(zx)
89
+ .map(([k, v]) => {
90
+ if (!v) return ''
91
+ k = toKebabCase(k)
92
+ if (typeof v === 'number') v = v + 'px'
93
+ if (Array.isArray(v)) {
94
+ // @ts-ignore
95
+ v = '[' + v.map((v) => (typeof v === 'number' ? v + 'px' : v)).join(',') + ']'
96
+ }
97
+ return k + ':' + v + ';'
98
+ })
99
+ .join('\n')
100
+ }
101
+
102
+ /**
103
+ * A lightweight alternative to styled-components
104
+ * @param function - a functional component to be styled; must accept a className prop
105
+ * @returns a function that accepts a template string of css returns a decorated functional component
106
+ */
107
+ export function styledBase<C extends FC<any>>(Component: C) {
108
+ return (...cssProps: TemplateStringProps) => {
109
+ const className = css(...cssProps)
110
+ /**
111
+ * A functional component that accepts Styled Props
112
+ */
113
+ const CStyled = forwardRef((props: SCProps, ref) => {
114
+ let {
115
+ _active,
116
+ _css,
117
+ _dark,
118
+ _focus,
119
+ _focusVisible,
120
+ _focusWithin,
121
+ _hover,
122
+ _target,
123
+ _visited,
124
+ _zx = {},
125
+ ...rest
126
+ } = props
127
+
128
+ // Pluck out $ prefixed props
129
+ Object.entries(props).forEach(([k, v]) => {
130
+ if (k.startsWith('_')) {
131
+ // @ts-ignore
132
+ _zx[k.slice(1)] = v
133
+ // @ts-ignore
134
+ delete rest[k]
135
+ }
136
+ })
137
+
138
+ let cssStr = ''
139
+
140
+ if (_active) {
141
+ cssStr += `
142
+ &:active {
143
+ ${zxToCss(_active)}
144
+ }
145
+ `
146
+ }
147
+ if (_dark) {
148
+ cssStr += `
149
+ @media (prefers-color-scheme: dark) {
150
+ ${zxToCss(_dark)}
151
+ }
152
+ `
153
+ }
154
+ if (_focus) {
155
+ cssStr += `
156
+ &:focus {
157
+ ${zxToCss(_focus)}
158
+ }
159
+ `
160
+ }
161
+ if (_focusVisible) {
162
+ cssStr += `
163
+ &:focus-visible {
164
+ ${zxToCss(_focusVisible)}
165
+ }
166
+ `
167
+ }
168
+ if (_focusWithin) {
169
+ cssStr += `
170
+ &:focus-within {
171
+ ${zxToCss(_focusWithin)}
172
+ }
173
+ `
174
+ }
175
+ if (_hover) {
176
+ cssStr += `
177
+ &:hover {
178
+ ${zxToCss(_hover)}
179
+ }
180
+ `
181
+ }
182
+ if (_target) {
183
+ cssStr += `
184
+ &:target {
185
+ ${zxToCss(_target)}
186
+ }
187
+ `
188
+ }
189
+ if (_visited) {
190
+ cssStr += `
191
+ &:visited {
192
+ ${zxToCss(_visited)}
193
+ }
194
+ `
195
+ }
196
+
197
+ const hasMediaQuery = Object.values(_zx).some((v) => Array.isArray(v))
198
+ // If has media query styles, use css class. Otherwise favor inline styles
199
+ if (hasMediaQuery || cssStr) {
200
+ cssStr = zxToCss(_zx) + cssStr
201
+ } else {
202
+ _zx = expandShorthandProps(_zx)
203
+ rest.style = { ...rest.style, ..._zx } as CSSProperties
204
+ }
205
+
206
+ return createElement(Component, {
207
+ ref,
208
+ ...rest,
209
+ className: classJoin(
210
+ className,
211
+ _css ? (_css.includes(':') ? css(_css) : _css) : undefined,
212
+ cssStr ? css(cssStr) : undefined,
213
+ props.className
214
+ ),
215
+ })
216
+ })
217
+ CStyled.toString = () => '.' + className
218
+ return CStyled as unknown as SC<Parameters<C>[0]>
219
+ }
220
+ }
package/src/index.cjs CHANGED
@@ -1,35 +1,35 @@
1
- "use strict";var A=Object.create;var d=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var w=(r,e)=>{for(var t in e)d(r,t,{get:e[t],enumerable:!0})},Z=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of M(e))!L.call(r,a)&&a!==t&&d(r,a,{get:()=>e[a],enumerable:!(s=j(e,a))||s.enumerable});return r},o=(r,e,t)=>(Z(r,e,"default"),t&&Z(t,e,"default")),z=(r,e,t)=>(t=r!=null?A(N(r)):{},Z(e||!r||!r.__esModule?d(t,"default",{value:r,enumerable:!0}):t,r)),O=r=>Z(d({},"__esModule",{value:!0}),r);var i={};w(i,{css:()=>l.default,default:()=>b});module.exports=O(i);var m=require("react"),l=z(require("@slimr/css"),1);o(i,require("@slimr/css"),module.exports);function F(r){return r.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function R(r){return r.replace(/-./g,e=>e[1].toUpperCase())}function W(r){return Object.entries(r).reduce((e,[t,s])=>(t==="mx"?(e.marginLeft=s,e.marginRight=s):t==="my"?(e.marginTop=s,e.marginBottom=s):t==="px"?(e.paddingLeft=s,e.paddingRight=s):t==="py"?(e.paddingTop=s,e.paddingBottom=s):t in l.shorthandPropsMap?e[R(l.shorthandPropsMap[t])]=s:e[t]=s,e),{})}function x(r){return Object.entries(r).map(([e,t])=>t?(e=F(e),typeof t=="number"&&(t=t+"px"),Array.isArray(t)&&(t="["+t.map(s=>typeof s=="number"?s+"px":s).join(",")+"]"),e+":"+t+";"):"").join(`
2
- `)}function b(r){return(...e)=>{let t=(0,l.default)(...e),s=(0,m.forwardRef)((a,$)=>{let{_active:k,_css:p,_dark:c,_focus:y,_focusVisible:h,_focusWithin:_,_hover:g,_target:C,_visited:S,_zx:u={},...P}=a;Object.entries(a).forEach(([f,T])=>{f.startsWith("_")&&(u[f.slice(1)]=T,delete P[f])});let n="";return k&&(n+=`
1
+ "use strict";var F=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var A=(s,e)=>{for(var n in e)F(s,n,{get:e[n],enumerable:!0})},d=(s,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of $(e))!j.call(s,r)&&r!==n&&F(s,r,{get:()=>e[r],enumerable:!(t=_(e,r))||t.enumerable});return s},l=(s,e,n)=>(d(s,e,"default"),n&&d(n,e,"default"));var q=s=>d(F({},"__esModule",{value:!0}),s);var o={};A(o,{styled:()=>L,styledBase:()=>a});module.exports=q(o);var C=require("react"),T=require("@slimr/css");function M(s){return s.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function N(s){return s.replace(/-./g,e=>e[1].toUpperCase())}function w(s){return Object.entries(s).reduce((e,[n,t])=>(n==="mx"?(e.marginLeft=t,e.marginRight=t):n==="my"?(e.marginTop=t,e.marginBottom=t):n==="px"?(e.paddingLeft=t,e.paddingRight=t):n==="py"?(e.paddingTop=t,e.paddingBottom=t):n in T.shorthandPropsMap?e[N(T.shorthandPropsMap[n])]=t:e[n]=t,e),{})}function u(s){return Object.entries(s).map(([e,n])=>n?(e=M(e),typeof n=="number"&&(n=n+"px"),Array.isArray(n)&&(n="["+n.map(t=>typeof t=="number"?t+"px":t).join(",")+"]"),e+":"+n+";"):"").join(`
2
+ `)}function a(s){return(...e)=>{let n=(0,T.css)(...e),t=(0,C.forwardRef)((r,Z)=>{let{_active:H,_css:p,_dark:m,_focus:f,_focusVisible:x,_focusWithin:c,_hover:b,_target:g,_visited:h,_zx:i={},...S}=r;Object.entries(r).forEach(([k,y])=>{k.startsWith("_")&&(i[k.slice(1)]=y,delete S[k])});let P="";return H&&(P+=`
3
3
  &:active {
4
- ${x(k)}
4
+ ${u(H)}
5
5
  }
6
- `),c&&(n+=`
6
+ `),m&&(P+=`
7
7
  @media (prefers-color-scheme: dark) {
8
- ${x(c)}
8
+ ${u(m)}
9
9
  }
10
- `),y&&(n+=`
10
+ `),f&&(P+=`
11
11
  &:focus {
12
- ${x(y)}
12
+ ${u(f)}
13
13
  }
14
- `),h&&(n+=`
14
+ `),x&&(P+=`
15
15
  &:focus-visible {
16
- ${x(h)}
16
+ ${u(x)}
17
17
  }
18
- `),_&&(n+=`
18
+ `),c&&(P+=`
19
19
  &:focus-within {
20
- ${x(_)}
20
+ ${u(c)}
21
21
  }
22
- `),g&&(n+=`
22
+ `),b&&(P+=`
23
23
  &:hover {
24
- ${x(g)}
24
+ ${u(b)}
25
25
  }
26
- `),C&&(n+=`
26
+ `),g&&(P+=`
27
27
  &:target {
28
- ${x(C)}
28
+ ${u(g)}
29
29
  }
30
- `),S&&(n+=`
30
+ `),h&&(P+=`
31
31
  &:visited {
32
- ${x(S)}
32
+ ${u(h)}
33
33
  }
34
- `),Object.values(u).some(f=>Array.isArray(f))||n?n=x(u)+n:(u=W(u),P.style={...P.style,...u}),(0,m.createElement)(r,{ref:$,...P,className:(0,l.classJoin)(t,p?p.includes(":")?(0,l.default)(p):p:void 0,n?(0,l.default)(n):void 0,a.className)})});return s.toString=()=>"."+t,s}}0&&(module.exports={css});
34
+ `),Object.values(i).some(k=>Array.isArray(k))||P?P=u(i)+P:(i=w(i),S.style={...S.style,...i}),(0,C.createElement)(s,{ref:Z,...S,className:(0,T.classJoin)(n,p?p.includes(":")?(0,T.css)(p):p:void 0,P?(0,T.css)(P):void 0,r.className)})});return t.toString=()=>"."+n,t}}l(o,require("@slimr/css"),module.exports);var L=Object.assign(a,{a:(...s)=>a("a")(...s),abbr:(...s)=>a("abbr")(...s),address:(...s)=>a("address")(...s),area:(...s)=>a("area")(...s),article:(...s)=>a("article")(...s),aside:(...s)=>a("aside")(...s),audio:(...s)=>a("audio")(...s),b:(...s)=>a("b")(...s),blockquote:(...s)=>a("blockquote")(...s),br:(...s)=>a("br")(...s),button:(...s)=>a("button")(...s),caption:(...s)=>a("caption")(...s),cite:(...s)=>a("cite")(...s),code:(...s)=>a("code")(...s),col:(...s)=>a("col")(...s),colgroup:(...s)=>a("colgroup")(...s),dd:(...s)=>a("dd")(...s),del:(...s)=>a("del")(...s),details:(...s)=>a("details")(...s),dfn:(...s)=>a("dfn")(...s),dialog:(...s)=>a("dialog")(...s),div:(...s)=>a("div")(...s),dl:(...s)=>a("dl")(...s),dt:(...s)=>a("dt")(...s),em:(...s)=>a("em")(...s),embed:(...s)=>a("embed")(...s),fieldset:(...s)=>a("fieldset")(...s),figcaption:(...s)=>a("figcaption")(...s),figure:(...s)=>a("figure")(...s),footer:(...s)=>a("footer")(...s),form:(...s)=>a("form")(...s),h1:(...s)=>a("h1")(...s),h2:(...s)=>a("h2")(...s),h3:(...s)=>a("h3")(...s),h4:(...s)=>a("h4")(...s),h5:(...s)=>a("h5")(...s),h6:(...s)=>a("h6")(...s),header:(...s)=>a("header")(...s),hgroup:(...s)=>a("hgroup")(...s),hr:(...s)=>a("hr")(...s),i:(...s)=>a("i")(...s),iframe:(...s)=>a("iframe")(...s),img:(...s)=>a("img")(...s),input:(...s)=>a("input")(...s),ins:(...s)=>a("ins")(...s),kbd:(...s)=>a("kbd")(...s),label:(...s)=>a("label")(...s),legend:(...s)=>a("legend")(...s),li:(...s)=>a("li")(...s),main:(...s)=>a("main")(...s),map:(...s)=>a("map")(...s),mark:(...s)=>a("mark")(...s),meter:(...s)=>a("meter")(...s),nav:(...s)=>a("nav")(...s),object:(...s)=>a("object")(...s),ol:(...s)=>a("ol")(...s),optgroup:(...s)=>a("optgroup")(...s),option:(...s)=>a("option")(...s),output:(...s)=>a("output")(...s),p:(...s)=>a("p")(...s),picture:(...s)=>a("picture")(...s),pre:(...s)=>a("pre")(...s),progress:(...s)=>a("progress")(...s),q:(...s)=>a("q")(...s),rp:(...s)=>a("rp")(...s),rt:(...s)=>a("rt")(...s),ruby:(...s)=>a("ruby")(...s),s:(...s)=>a("s")(...s),samp:(...s)=>a("samp")(...s),section:(...s)=>a("section")(...s),select:(...s)=>a("select")(...s),small:(...s)=>a("small")(...s),span:(...s)=>a("span")(...s),strong:(...s)=>a("strong")(...s),sub:(...s)=>a("sub")(...s),summary:(...s)=>a("summary")(...s),sup:(...s)=>a("sup")(...s),table:(...s)=>a("table")(...s),tbody:(...s)=>a("tbody")(...s),td:(...s)=>a("td")(...s),textarea:(...s)=>a("textarea")(...s),tfoot:(...s)=>a("tfoot")(...s),th:(...s)=>a("th")(...s),thead:(...s)=>a("thead")(...s),time:(...s)=>a("time")(...s),tr:(...s)=>a("tr")(...s),u:(...s)=>a("u")(...s),ul:(...s)=>a("ul")(...s),video:(...s)=>a("video")(...s)});0&&(module.exports={styled,styledBase});
35
35
  //# sourceMappingURL=index.cjs.map
package/src/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["import { createElement, CSSProperties, FC, forwardRef, HTMLAttributes } from 'react'\nimport css, { classJoin, ShorthandProps, shorthandProps, shorthandPropsMap, TemplateStringProps } from '@slimr/css'\n\nexport { css }\nexport * from '@slimr/css'\n\n/** A type that represents all the css properties + shorthand props */\nexport interface ZxProps extends CSSProperties, ShorthandProps {}\ntype ZxP = ZxProps\n\ntype Zx = {\n [k in keyof ZxP]:\n | ZxP[k]\n | [ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n}\n\ntype _Props = {\n [k in keyof Zx as `_${k}`]?: Zx[k]\n}\n\nexport interface SCProps extends _Props {\n /** Like zx prop, but applies only on :active */\n _active?: Zx\n className?: string\n /** A string of css or classname to be added to the component */\n _css?: string\n /** Like zx prop, but applies only when user prefers dark theme */\n _dark?: Zx\n /** Like zx prop, but applies only on :focus */\n _focus?: Zx\n /** Like zx prop, but applies only on :focus-visible */\n _focusVisible?: Zx\n /** Like zx prop, but applies only on :focus-within */\n _focusWithin?: Zx\n /** Like zx prop, but applies only on :hover */\n _hover?: Zx\n style?: CSSProperties\n /** Like zx prop, but applies only on :target */\n _target?: Zx\n /** Like zx prop, but applies only on :visited */\n _visited?: Zx\n /**\n * Like style prop, but enhanced with features like chakra\n * - Array values are converted to media query breakpoints\n * - Numbers are converted to px\n * - Shorthand props are supported\n */\n _zx?: Zx\n}\n\n/** Styled Component: Like FunctionalComponent but adds SCProps */\nexport type SC<T extends { className?: HTMLAttributes<any>['className'] }> = FC<T & SCProps>\n\nfunction toKebabCase(str: string) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/-./g, (x) => x[1].toUpperCase())\n}\n\nfunction expandShorthandProps(zx: Zx) {\n return Object.entries(zx).reduce((acc, [k, v]) => {\n if (k === 'mx') {\n acc.marginLeft = v\n acc.marginRight = v\n } else if (k === 'my') {\n acc.marginTop = v\n acc.marginBottom = v\n } else if (k === 'px') {\n acc.paddingLeft = v\n acc.paddingRight = v\n } else if (k === 'py') {\n acc.paddingTop = v\n acc.paddingBottom = v\n } else if (k in shorthandPropsMap) {\n acc[toCamelCase(shorthandPropsMap[k as keyof typeof shorthandPropsMap])] = v\n } else {\n acc[k] = v\n }\n return acc\n }, {} as any)\n}\n\nfunction zxToCss(zx: Zx): string {\n return Object.entries(zx)\n .map(([k, v]) => {\n if (!v) return ''\n k = toKebabCase(k)\n if (typeof v === 'number') v = v + 'px'\n if (Array.isArray(v)) {\n // @ts-ignore\n v = '[' + v.map((v) => (typeof v === 'number' ? v + 'px' : v)).join(',') + ']'\n }\n return k + ':' + v + ';'\n })\n .join('\\n')\n}\n\n/**\n * A lightweight alternative to styled-components\n * @param function - a functional component to be styled; must accept a className prop\n * @returns a function that accepts a template string of css returns a decorated functional component\n */\nexport default function styled<C extends FC<any>>(Component: C) {\n return (...cssProps: TemplateStringProps) => {\n const className = css(...cssProps)\n /**\n * A functional component that accepts Styled Props\n */\n const CStyled = forwardRef((props: SCProps, ref) => {\n let {\n _active,\n _css,\n _dark,\n _focus,\n _focusVisible,\n _focusWithin,\n _hover,\n _target,\n _visited,\n _zx = {},\n ...rest\n } = props\n\n // Pluck out $ prefixed props\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('_')) {\n // @ts-ignore\n _zx[k.slice(1)] = v\n // @ts-ignore\n delete rest[k]\n }\n })\n\n let cssStr = ''\n\n if (_active) {\n cssStr += `\n &:active {\n ${zxToCss(_active)}\n }\n `\n }\n if (_dark) {\n cssStr += `\n @media (prefers-color-scheme: dark) {\n ${zxToCss(_dark)}\n }\n `\n }\n if (_focus) {\n cssStr += `\n &:focus {\n ${zxToCss(_focus)}\n }\n `\n }\n if (_focusVisible) {\n cssStr += `\n &:focus-visible {\n ${zxToCss(_focusVisible)}\n }\n `\n }\n if (_focusWithin) {\n cssStr += `\n &:focus-within {\n ${zxToCss(_focusWithin)}\n }\n `\n }\n if (_hover) {\n cssStr += `\n &:hover {\n ${zxToCss(_hover)}\n }\n `\n }\n if (_target) {\n cssStr += `\n &:target {\n ${zxToCss(_target)}\n }\n `\n }\n if (_visited) {\n cssStr += `\n &:visited {\n ${zxToCss(_visited)}\n }\n `\n }\n\n const hasMediaQuery = Object.values(_zx).some((v) => Array.isArray(v))\n // If has media query styles, use css class. Otherwise favor inline styles\n if (hasMediaQuery || cssStr) {\n cssStr = zxToCss(_zx) + cssStr\n } else {\n _zx = expandShorthandProps(_zx)\n rest.style = { ...rest.style, ..._zx } as CSSProperties\n }\n\n return createElement(Component, {\n ref,\n ...rest,\n className: classJoin(\n className,\n _css ? (_css.includes(':') ? css(_css) : _css) : undefined,\n cssStr ? css(cssStr) : undefined,\n props.className\n ),\n })\n })\n CStyled.toString = () => '.' + className\n return CStyled as unknown as SC<Parameters<C>[0]>\n }\n}\n"],"mappings":"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","names":["src_exports","__export","css","styled","__toCommonJS","import_react","import_css","__reExport","toKebabCase","str","toCamelCase","x","expandShorthandProps","zx","acc","k","v","zxToCss","styled","Component","cssProps","className","css","CStyled","props","ref","_active","_css","_dark","_focus","_focusVisible","_focusWithin","_hover","_target","_visited","_zx","rest","cssStr"]}
1
+ {"version":3,"sources":["index.ts","core.ts"],"sourcesContent":["import { FC } from 'react'\nimport { TemplateStringProps } from '@slimr/css'\nimport { styledBase as s } from './core.js'\n\nexport * from '@slimr/css'\nexport * from './core.js'\n\n/** Shorthand type */\ntype unk = unknown\n/** Shorthand type */\ntype TSP = TemplateStringProps\n/** Shorthand type */\ntype HTP = JSX.IntrinsicElements\n\nexport const styled = Object.assign(s, {\n /** creates a 'a' component with css applied */\n a: (...p: TSP) => s('a' as unk as FC<HTP['a']>)(...p),\n /** creates a 'abbr' component with css applied */\n abbr: (...p: TSP) => s('abbr' as unk as FC<HTP['abbr']>)(...p),\n /** creates a 'address' component with css applied */\n address: (...p: TSP) => s('address' as unk as FC<HTP['address']>)(...p),\n /** creates a 'area' component with css applied */\n area: (...p: TSP) => s('area' as unk as FC<HTP['area']>)(...p),\n /** creates a 'article' component with css applied */\n article: (...p: TSP) => s('article' as unk as FC<HTP['article']>)(...p),\n /** creates a 'aside' component with css applied */\n aside: (...p: TSP) => s('aside' as unk as FC<HTP['aside']>)(...p),\n /** creates a 'audio' component with css applied */\n audio: (...p: TSP) => s('audio' as unk as FC<HTP['audio']>)(...p),\n /** creates a 'b' component with css applied */\n b: (...p: TSP) => s('b' as unk as FC<HTP['b']>)(...p),\n /** creates a 'big' component with css applied; Deprecated so left out */\n // big: (...p: TSP) => styled('big' as unk as FC<HTP['big']>)(...p),\n /** creates a 'blockquote' component with css applied */\n blockquote: (...p: TSP) => s('blockquote' as unk as FC<HTP['blockquote']>)(...p),\n /** creates a 'body' component with css applied; omitted bc doesnt seem useful */\n // body: (...p: TSP) => styled('body' as unk as FC<HTP['body']>)(...p),\n /** creates a 'br' component with css applied; omitted bc doesnt seem useful */\n br: (...p: TSP) => s('br' as unk as FC<HTP['br']>)(...p),\n /** creates a 'button' component with css applied */\n button: (...p: TSP) => s('button' as unk as FC<HTP['button']>)(...p),\n /** creates a 'caption' component with css applied */\n caption: (...p: TSP) => s('caption' as unk as FC<HTP['caption']>)(...p),\n /** creates a 'cite' component with css applied */\n cite: (...p: TSP) => s('cite' as unk as FC<HTP['cite']>)(...p),\n /** creates a 'code' component with css applied */\n code: (...p: TSP) => s('code' as unk as FC<HTP['code']>)(...p),\n /** creates a 'col' component with css applied */\n col: (...p: TSP) => s('col' as unk as FC<HTP['col']>)(...p),\n /** creates a 'colgroup' component with css applied */\n colgroup: (...p: TSP) => s('colgroup' as unk as FC<HTP['colgroup']>)(...p),\n /** creates a 'dd' component with css applied */\n dd: (...p: TSP) => s('dd' as unk as FC<HTP['dd']>)(...p),\n /** creates a 'del' component with css applied */\n del: (...p: TSP) => s('del' as unk as FC<HTP['del']>)(...p),\n /** creates a 'details' component with css applied */\n details: (...p: TSP) => s('details' as unk as FC<HTP['details']>)(...p),\n /** creates a 'dfn' component with css applied */\n dfn: (...p: TSP) => s('dfn' as unk as FC<HTP['dfn']>)(...p),\n /** creates a 'dialog' component with css applied */\n dialog: (...p: TSP) => s('dialog' as unk as FC<HTP['dialog']>)(...p),\n /** creates a 'div' component with css applied */\n div: (...p: TSP) => s('div' as unk as FC<HTP['div']>)(...p),\n /** creates a 'dl' component with css applied */\n dl: (...p: TSP) => s('dl' as unk as FC<HTP['dl']>)(...p),\n /** creates a 'dt' component with css applied */\n dt: (...p: TSP) => s('dt' as unk as FC<HTP['dt']>)(...p),\n /** creates a 'em' component with css applied */\n em: (...p: TSP) => s('em' as unk as FC<HTP['em']>)(...p),\n /** creates a 'embed' component with css applied */\n embed: (...p: TSP) => s('embed' as unk as FC<HTP['embed']>)(...p),\n /** creates a 'fieldset' component with css applied */\n fieldset: (...p: TSP) => s('fieldset' as unk as FC<HTP['fieldset']>)(...p),\n /** creates a 'figcaption' component with css applied */\n figcaption: (...p: TSP) => s('figcaption' as unk as FC<HTP['figcaption']>)(...p),\n /** creates a 'figure' component with css applied */\n figure: (...p: TSP) => s('figure' as unk as FC<HTP['figure']>)(...p),\n /** creates a 'footer' component with css applied */\n footer: (...p: TSP) => s('footer' as unk as FC<HTP['footer']>)(...p),\n /** creates a 'form' component with css applied */\n form: (...p: TSP) => s('form' as unk as FC<HTP['form']>)(...p),\n /** creates a 'h1' component with css applied */\n h1: (...p: TSP) => s('h1' as unk as FC<HTP['h1']>)(...p),\n /** creates a 'h2' component with css applied */\n h2: (...p: TSP) => s('h2' as unk as FC<HTP['h2']>)(...p),\n /** creates a 'h3' component with css applied */\n h3: (...p: TSP) => s('h3' as unk as FC<HTP['h3']>)(...p),\n /** creates a 'h4' component with css applied */\n h4: (...p: TSP) => s('h4' as unk as FC<HTP['h4']>)(...p),\n /** creates a 'h5' component with css applied */\n h5: (...p: TSP) => s('h5' as unk as FC<HTP['h5']>)(...p),\n /** creates a 'h6' component with css applied */\n h6: (...p: TSP) => s('h6' as unk as FC<HTP['h6']>)(...p),\n /** creates a 'header' component with css applied */\n header: (...p: TSP) => s('header' as unk as FC<HTP['header']>)(...p),\n /** creates a 'hgroup' component with css applied */\n hgroup: (...p: TSP) => s('hgroup' as unk as FC<HTP['hgroup']>)(...p),\n /** creates a 'hr' component with css applied */\n hr: (...p: TSP) => s('hr' as unk as FC<HTP['hr']>)(...p),\n /** creates a 'i' component with css applied */\n i: (...p: TSP) => s('i' as unk as FC<HTP['i']>)(...p),\n /** creates a 'iframe' component with css applied */\n iframe: (...p: TSP) => s('iframe' as unk as FC<HTP['iframe']>)(...p),\n /** creates a 'img' component with css applied */\n img: (...p: TSP) => s('img' as unk as FC<HTP['img']>)(...p),\n /** creates a 'input' component with css applied */\n input: (...p: TSP) => s('input' as unk as FC<HTP['input']>)(...p),\n /** creates a 'ins' component with css applied */\n ins: (...p: TSP) => s('ins' as unk as FC<HTP['ins']>)(...p),\n /** creates a 'kbd' component with css applied */\n kbd: (...p: TSP) => s('kbd' as unk as FC<HTP['kbd']>)(...p),\n /** creates a 'label' component with css applied */\n label: (...p: TSP) => s('label' as unk as FC<HTP['label']>)(...p),\n /** creates a 'legend' component with css applied */\n legend: (...p: TSP) => s('legend' as unk as FC<HTP['legend']>)(...p),\n /** creates a 'li' component with css applied */\n li: (...p: TSP) => s('li' as unk as FC<HTP['li']>)(...p),\n /** creates a 'main' component with css applied */\n main: (...p: TSP) => s('main' as unk as FC<HTP['main']>)(...p),\n /** creates a 'map' component with css applied */\n map: (...p: TSP) => s('map' as unk as FC<HTP['map']>)(...p),\n /** creates a 'mark' component with css applied */\n mark: (...p: TSP) => s('mark' as unk as FC<HTP['mark']>)(...p),\n /** creates a 'meter' component with css applied */\n meter: (...p: TSP) => s('meter' as unk as FC<HTP['meter']>)(...p),\n /** creates a 'nav' component with css applied */\n nav: (...p: TSP) => s('nav' as unk as FC<HTP['nav']>)(...p),\n /** creates a 'object' component with css applied */\n object: (...p: TSP) => s('object' as unk as FC<HTP['object']>)(...p),\n /** creates a 'ol' component with css applied */\n ol: (...p: TSP) => s('ol' as unk as FC<HTP['ol']>)(...p),\n /** creates a 'optgroup' component with css applied */\n optgroup: (...p: TSP) => s('optgroup' as unk as FC<HTP['optgroup']>)(...p),\n /** creates a 'option' component with css applied */\n option: (...p: TSP) => s('option' as unk as FC<HTP['option']>)(...p),\n /** creates a 'output' component with css applied */\n output: (...p: TSP) => s('output' as unk as FC<HTP['output']>)(...p),\n /** creates a 'p' component with css applied */\n p: (...p: TSP) => s('p' as unk as FC<HTP['p']>)(...p),\n /** creates a 'picture' component with css applied */\n picture: (...p: TSP) => s('picture' as unk as FC<HTP['picture']>)(...p),\n /** creates a 'pre' component with css applied */\n pre: (...p: TSP) => s('pre' as unk as FC<HTP['pre']>)(...p),\n /** creates a 'progress' component with css applied */\n progress: (...p: TSP) => s('progress' as unk as FC<HTP['progress']>)(...p),\n /** creates a 'q' component with css applied */\n q: (...p: TSP) => s('q' as unk as FC<HTP['q']>)(...p),\n /** creates a 'rp' component with css applied */\n rp: (...p: TSP) => s('rp' as unk as FC<HTP['rp']>)(...p),\n /** creates a 'rt' component with css applied */\n rt: (...p: TSP) => s('rt' as unk as FC<HTP['rt']>)(...p),\n /** creates a 'ruby' component with css applied */\n ruby: (...p: TSP) => s('ruby' as unk as FC<HTP['ruby']>)(...p),\n /** creates a 's' component with css applied */\n s: (...p: TSP) => s('s' as unk as FC<HTP['s']>)(...p),\n /** creates a 'samp' component with css applied */\n samp: (...p: TSP) => s('samp' as unk as FC<HTP['samp']>)(...p),\n /** creates a 'section' component with css applied */\n section: (...p: TSP) => s('section' as unk as FC<HTP['section']>)(...p),\n /** creates a 'select' component with css applied */\n select: (...p: TSP) => s('select' as unk as FC<HTP['select']>)(...p),\n /** creates a 'small' component with css applied */\n small: (...p: TSP) => s('small' as unk as FC<HTP['small']>)(...p),\n /** creates a 'span' component with css applied */\n span: (...p: TSP) => s('span' as unk as FC<HTP['span']>)(...p),\n /** creates a 'strong' component with css applied */\n strong: (...p: TSP) => s('strong' as unk as FC<HTP['strong']>)(...p),\n /** creates a 'sub' component with css applied */\n sub: (...p: TSP) => s('sub' as unk as FC<HTP['sub']>)(...p),\n /** creates a 'summary' component with css applied */\n summary: (...p: TSP) => s('summary' as unk as FC<HTP['summary']>)(...p),\n /** creates a 'sup' component with css applied */\n sup: (...p: TSP) => s('sup' as unk as FC<HTP['sup']>)(...p),\n /** creates a 'table' component with css applied */\n table: (...p: TSP) => s('table' as unk as FC<HTP['table']>)(...p),\n /** creates a 'tbody' component with css applied */\n tbody: (...p: TSP) => s('tbody' as unk as FC<HTP['tbody']>)(...p),\n /** creates a 'td' component with css applied */\n td: (...p: TSP) => s('td' as unk as FC<HTP['td']>)(...p),\n /** creates a 'textarea' component with css applied */\n textarea: (...p: TSP) => s('textarea' as unk as FC<HTP['textarea']>)(...p),\n /** creates a 'tfoot' component with css applied */\n tfoot: (...p: TSP) => s('tfoot' as unk as FC<HTP['tfoot']>)(...p),\n /** creates a 'th' component with css applied */\n th: (...p: TSP) => s('th' as unk as FC<HTP['th']>)(...p),\n /** creates a 'thead' component with css applied */\n thead: (...p: TSP) => s('thead' as unk as FC<HTP['thead']>)(...p),\n /** creates a 'time' component with css applied */\n time: (...p: TSP) => s('time' as unk as FC<HTP['time']>)(...p),\n /** creates a 'tr' component with css applied */\n tr: (...p: TSP) => s('tr' as unk as FC<HTP['tr']>)(...p),\n /** creates a 'u' component with css applied */\n u: (...p: TSP) => s('u' as unk as FC<HTP['u']>)(...p),\n /** creates a 'ul' component with css applied */\n ul: (...p: TSP) => s('ul' as unk as FC<HTP['ul']>)(...p),\n /** creates a 'video' component with css applied */\n video: (...p: TSP) => s('video' as unk as FC<HTP['video']>)(...p),\n})\n","import { createElement, CSSProperties, FC, forwardRef, HTMLAttributes } from 'react'\nimport { classJoin, css, ShorthandProps, shorthandPropsMap, TemplateStringProps } from '@slimr/css'\n\n/** A type that represents all the css properties + shorthand props */\nexport interface ZxProps extends CSSProperties, ShorthandProps {}\ntype ZxP = ZxProps\n\ntype Zx = {\n [k in keyof ZxP]:\n | ZxP[k]\n | [ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n | [ZxP[k], ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k] | null, ZxP[k]]\n}\n\ntype _Props = {\n [k in keyof Zx as `_${k}`]?: Zx[k]\n}\n\nexport interface SCProps extends _Props {\n /** Like zx prop, but applies only on :active */\n _active?: Zx\n className?: string\n /** A string of css or classname to be added to the component */\n _css?: string\n /** Like zx prop, but applies only when user prefers dark theme */\n _dark?: Zx\n /** Like zx prop, but applies only on :focus */\n _focus?: Zx\n /** Like zx prop, but applies only on :focus-visible */\n _focusVisible?: Zx\n /** Like zx prop, but applies only on :focus-within */\n _focusWithin?: Zx\n /** Like zx prop, but applies only on :hover */\n _hover?: Zx\n style?: CSSProperties\n /** Like zx prop, but applies only on :target */\n _target?: Zx\n /** Like zx prop, but applies only on :visited */\n _visited?: Zx\n /**\n * Like style prop, but enhanced with features like chakra\n * - Array values are converted to media query breakpoints\n * - Numbers are converted to px\n * - Shorthand props are supported\n */\n _zx?: Zx\n}\n\n/** Styled Component: Like FunctionalComponent but adds SCProps */\nexport type SC<T extends { className?: HTMLAttributes<any>['className'] }> = FC<T & SCProps>\n\nfunction toKebabCase(str: string) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/-./g, (x) => x[1].toUpperCase())\n}\n\nfunction expandShorthandProps(zx: Zx) {\n return Object.entries(zx).reduce((acc, [k, v]) => {\n if (k === 'mx') {\n acc.marginLeft = v\n acc.marginRight = v\n } else if (k === 'my') {\n acc.marginTop = v\n acc.marginBottom = v\n } else if (k === 'px') {\n acc.paddingLeft = v\n acc.paddingRight = v\n } else if (k === 'py') {\n acc.paddingTop = v\n acc.paddingBottom = v\n } else if (k in shorthandPropsMap) {\n acc[toCamelCase(shorthandPropsMap[k as keyof typeof shorthandPropsMap])] = v\n } else {\n acc[k] = v\n }\n return acc\n }, {} as any)\n}\n\nfunction zxToCss(zx: Zx): string {\n return Object.entries(zx)\n .map(([k, v]) => {\n if (!v) return ''\n k = toKebabCase(k)\n if (typeof v === 'number') v = v + 'px'\n if (Array.isArray(v)) {\n // @ts-ignore\n v = '[' + v.map((v) => (typeof v === 'number' ? v + 'px' : v)).join(',') + ']'\n }\n return k + ':' + v + ';'\n })\n .join('\\n')\n}\n\n/**\n * A lightweight alternative to styled-components\n * @param function - a functional component to be styled; must accept a className prop\n * @returns a function that accepts a template string of css returns a decorated functional component\n */\nexport function styledBase<C extends FC<any>>(Component: C) {\n return (...cssProps: TemplateStringProps) => {\n const className = css(...cssProps)\n /**\n * A functional component that accepts Styled Props\n */\n const CStyled = forwardRef((props: SCProps, ref) => {\n let {\n _active,\n _css,\n _dark,\n _focus,\n _focusVisible,\n _focusWithin,\n _hover,\n _target,\n _visited,\n _zx = {},\n ...rest\n } = props\n\n // Pluck out $ prefixed props\n Object.entries(props).forEach(([k, v]) => {\n if (k.startsWith('_')) {\n // @ts-ignore\n _zx[k.slice(1)] = v\n // @ts-ignore\n delete rest[k]\n }\n })\n\n let cssStr = ''\n\n if (_active) {\n cssStr += `\n &:active {\n ${zxToCss(_active)}\n }\n `\n }\n if (_dark) {\n cssStr += `\n @media (prefers-color-scheme: dark) {\n ${zxToCss(_dark)}\n }\n `\n }\n if (_focus) {\n cssStr += `\n &:focus {\n ${zxToCss(_focus)}\n }\n `\n }\n if (_focusVisible) {\n cssStr += `\n &:focus-visible {\n ${zxToCss(_focusVisible)}\n }\n `\n }\n if (_focusWithin) {\n cssStr += `\n &:focus-within {\n ${zxToCss(_focusWithin)}\n }\n `\n }\n if (_hover) {\n cssStr += `\n &:hover {\n ${zxToCss(_hover)}\n }\n `\n }\n if (_target) {\n cssStr += `\n &:target {\n ${zxToCss(_target)}\n }\n `\n }\n if (_visited) {\n cssStr += `\n &:visited {\n ${zxToCss(_visited)}\n }\n `\n }\n\n const hasMediaQuery = Object.values(_zx).some((v) => Array.isArray(v))\n // If has media query styles, use css class. Otherwise favor inline styles\n if (hasMediaQuery || cssStr) {\n cssStr = zxToCss(_zx) + cssStr\n } else {\n _zx = expandShorthandProps(_zx)\n rest.style = { ...rest.style, ..._zx } as CSSProperties\n }\n\n return createElement(Component, {\n ref,\n ...rest,\n className: classJoin(\n className,\n _css ? (_css.includes(':') ? css(_css) : _css) : undefined,\n cssStr ? css(cssStr) : undefined,\n props.className\n ),\n })\n })\n CStyled.toString = () => '.' + className\n return CStyled as unknown as SC<Parameters<C>[0]>\n }\n}\n"],"mappings":"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","names":["src_exports","__export","styled","styledBase","__toCommonJS","import_react","import_css","toKebabCase","str","toCamelCase","x","expandShorthandProps","zx","acc","k","v","zxToCss","styledBase","Component","cssProps","className","CStyled","props","ref","_active","_css","_dark","_focus","_focusVisible","_focusWithin","_hover","_target","_visited","_zx","rest","cssStr","__reExport","src_exports","styled","styledBase","p"]}