@bedrock-layout/solid 0.9.0 → 0.10.0

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.
@@ -0,0 +1,31 @@
1
+ import { Component, JSX } from "solid-js";
2
+ import { SpacingOptions } from "./spacing-constants";
3
+ import { StackProps } from "./stack";
4
+ interface ColumnsBaseProps {
5
+ gutter?: SpacingOptions;
6
+ columns?: number;
7
+ dense?: boolean;
8
+ }
9
+ export interface ColumnsProps extends StackProps, ColumnsBaseProps {
10
+ switchAt?: number | string;
11
+ as?: Component | keyof JSX.IntrinsicElements;
12
+ ref?: (ref: HTMLElement) => void;
13
+ }
14
+ export declare const Columns: Component<ColumnsProps>;
15
+ export interface ColumnProps {
16
+ colSpan?: number;
17
+ offsetStart?: number;
18
+ offsetEnd?: number;
19
+ }
20
+ /**
21
+ * ColumnsProps passed twice to make propTypes work.
22
+ *
23
+ * span is remaped to colSpan due to span being an attribute that gets
24
+ * passed to the underlying element. This can cause issues with Grid layout.
25
+ *
26
+ * In a future breaking change, colSpan should be the public API.
27
+ * */
28
+ export declare const Column: ((props: ColumnProps & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element) & {
29
+ className: (props: ColumnProps & JSX.HTMLAttributes<HTMLDivElement>) => string;
30
+ };
31
+ export {};
package/lib/index.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var L=Object.defineProperty,V=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var k=(e,t,n)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,f=(e,t)=>{for(var n in t||(t={}))C.call(t,n)&&k(e,n,t[n]);if(y)for(var n of y(t))z.call(t,n)&&k(e,n,t[n]);return e},m=(e,t)=>V(e,D(t));var A=(e,t)=>{var n={};for(var r in e)C.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&y)for(var r of y(e))t.indexOf(r)<0&&z.call(e,r)&&(n[r]=e[r]);return n};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var s=require("solid-styled-components"),R=require("@bedrock-layout/register-resize-callback"),g=require("solid-js");function b(e){return typeof e!="string"?!1:[/^[0-9]{0,10000}\.?[0-9]{1,10000}(vmin|vmax|vh|vw|%|ch|ex|em|rem|in|cm|mm|pt|pc|px)$/,/^var\(--\D{1,100}\)$/].some(t=>t.test(e))}const v={none:"0px",xxs:"0.0625rem",xs:"0.125rem",sm:"0.25rem",md:"0.5rem",mdLg:"0.75rem",lg:"1rem",lgXl:"1.5rem",xl:"2rem",xlXXl:"3rem",xxl:"4rem"};function W(e){return e.reduce((t,[n,r])=>m(f({},t),{[n]:r}),{})}const u=(e,t)=>{var i,c;const n=(c=(i=t==null?void 0:t.space)!=null?i:t==null?void 0:t.spacing)!=null?c:v,a=W(Object.entries(n).map(([l,d])=>[l,typeof d=="number"?`${d}px`:d]))[e];return b(a)?a:void 0};function X(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const F=s.styled.div`
1
+ "use strict";var L=Object.defineProperty,V=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var A=(e,t,n)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,f=(e,t)=>{for(var n in t||(t={}))E.call(t,n)&&A(e,n,t[n]);if(y)for(var n of y(t))z.call(t,n)&&A(e,n,t[n]);return e},b=(e,t)=>V(e,D(t));var j=(e,t)=>{var n={};for(var r in e)E.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&y)for(var r of y(e))t.indexOf(r)<0&&z.call(e,r)&&(n[r]=e[r]);return n};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var c=require("solid-styled-components"),I=require("@bedrock-layout/register-resize-callback"),l=require("solid-js");function S(e){return typeof e!="string"?!1:[/^[0-9]{0,10000}\.?[0-9]{1,10000}(vmin|vmax|vh|vw|%|ch|ex|em|rem|in|cm|mm|pt|pc|px)$/,/^var\(--\D{1,100}\)$/].some(t=>t.test(e))}const $={none:"0px",xxs:"0.0625rem",xs:"0.125rem",sm:"0.25rem",md:"0.5rem",mdLg:"0.75rem",lg:"1rem",lgXl:"1.5rem",xl:"2rem",xlXXl:"3rem",xxl:"4rem"};function W(e){return e.reduce((t,[n,r])=>b(f({},t),{[n]:r}),{})}const u=(e,t)=>{var i,o;const n=(o=(i=t==null?void 0:t.space)!=null?i:t==null?void 0:t.spacing)!=null?o:$,a=W(Object.entries(n).map(([g,d])=>[g,typeof d=="number"?`${d}px`:d]))[e];return S(a)?a:void 0};function X(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const F=c.styled.div`
2
2
  @property --maxWidth {
3
3
  syntax: "<length-percentage>";
4
4
  inherits: false;
@@ -17,16 +17,16 @@
17
17
 
18
18
  max-inline-size: var(--maxWidth, 100%);
19
19
 
20
- ${e=>e.centerChildren?s.css`
20
+ ${e=>e.centerChildren?c.css`
21
21
  display: flex;
22
22
  flex-direction: column;
23
23
  align-items: center;
24
24
  `:""}
25
25
 
26
- ${e=>e.centerText?s.css`
26
+ ${e=>e.centerText?c.css`
27
27
  text-align: center;
28
28
  `:""}
29
- `;function N(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const _=s.styled("div")`
29
+ `;function N(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const _=c.styled("div")`
30
30
  @property --basis {
31
31
  syntax: "<length-percentage>";
32
32
  inherits: true;
@@ -53,14 +53,14 @@
53
53
  display: flex;
54
54
  flex-wrap: wrap;
55
55
  gap: var(--gutter, 0px);
56
- `;function P(e=1,t){if(t!==void 0&&t<=e)throw new Error(`The second width value, ${t}, is not larger than ${e}. Please provide a value greater than first width value`);const[n,r]=g.createSignal(!1),[a,o]=g.createSignal();return g.onMount(()=>{R.init()}),g.createEffect(()=>{const i=a();if(i==null)return;const c=R.registerCallback(i,l=>{var $,w;const d=(w=($=l.borderBoxSize)==null?void 0:$.inlineSize)!=null?w:l.contentRect.width;if(d>0){const T=t===void 0?d<=e:d>=e&&d<=t;r(T)}});g.onCleanup(c)}),[n,o]}function q(e){return Array.isArray(e)&&e.length===2&&e.every(Number.isFinite)||typeof e=="string"&&/^\d{1,1000} {0,1}\/ {0,1}\d{1,1000}$/.test(e)}function G(e){return Array.isArray(e)?e.join("/"):e}function H(e){return q(e)?G(e):void 0}const Q=s.styled.div`
56
+ `;function w(e=1,t){if(t!==void 0&&t<=e)throw new Error(`The second width value, ${t}, is not larger than ${e}. Please provide a value greater than first width value`);const[n,r]=l.createSignal(!1),[a,s]=l.createSignal();return l.onMount(()=>{I.init()}),l.createEffect(()=>{const i=a();if(i==null)return;const o=I.registerCallback(i,g=>{var k,R;const d=(R=(k=g.borderBoxSize)==null?void 0:k.inlineSize)!=null?R:g.contentRect.width;if(d>0){const T=t===void 0?d<=e:d>=e&&d<=t;r(T)}});l.onCleanup(o)}),[n,s]}function q(e){return Array.isArray(e)&&e.length===2&&e.every(Number.isFinite)||typeof e=="string"&&/^\d{1,1000} {0,1}\/ {0,1}\d{1,1000}$/.test(e)}function G(e){return Array.isArray(e)?e.join("/"):e}function H(e){return q(e)?G(e):void 0}const Q=c.styled.div`
57
57
  box-sizing: border-box;
58
58
  display: block;
59
59
  inline-size: 100%;
60
60
  position: relative;
61
61
  overflow: hidden;
62
62
 
63
- ${e=>{const t=H(e.ratio);return t?s.css`
63
+ ${e=>{const t=H(e.ratio);return t?c.css`
64
64
  aspect-ratio: ${t};
65
65
  `:""}};
66
66
 
@@ -88,7 +88,7 @@
88
88
  object-fit: cover;
89
89
  object-position: ${e=>typeof e.position=="string"?e.position:"50%"};
90
90
  }
91
- `,U=s.styled("div")`
91
+ `,U=c.styled("div")`
92
92
  @property --gutter {
93
93
  syntax: "<length-percentage>";
94
94
  inherits: false;
@@ -116,7 +116,7 @@
116
116
  auto-fit,
117
117
  minmax(min(var(--minItemWidth, 639px), 100%), 1fr)
118
118
  );
119
- `,x={start:"flex-start",end:"flex-end",center:"center"},h=m(f({},x),{stretch:"stretch"}),M=s.styled.div`
119
+ `,x={start:"flex-start",end:"flex-end",center:"center"},v=b(f({},x),{stretch:"stretch"}),O=c.styled.div`
120
120
  --gutter: ${e=>{var t;return e.gutter&&(t=u(e.gutter,e.theme))!=null?t:"0px"}};
121
121
 
122
122
  box-sizing: border-box;
@@ -130,8 +130,8 @@
130
130
 
131
131
  justify-content: ${e=>typeof e.justify!="undefined"&&x[e.justify]?x[e.justify]:x.start};
132
132
 
133
- align-items: ${e=>typeof e.align!="undefined"&&h[e.align]?h[e.align]:h.start};
134
- `;function J(e){return typeof e=="number"&&e>-1?!0:typeof e=="string"&&typeof CSS!==void 0?CSS.supports(`height: ${e}`):!1}const K=s.styled(M)`
133
+ align-items: ${e=>typeof e.align!="undefined"&&v[e.align]?v[e.align]:v.start};
134
+ `;function J(e){return typeof e=="number"&&e>-1?!0:typeof e=="string"&&typeof CSS!==void 0?CSS.supports(`height: ${e}`):!1}const K=c.styled(O)`
135
135
  @property --switchAt {
136
136
  syntax: "<length-percentage>";
137
137
  inherits: true;
@@ -150,10 +150,10 @@
150
150
  );
151
151
  }
152
152
  `:""}
153
- `,j=new Set(["left","right","top","bottom","inlineStart","inlineEnd","blockStart","blockEnd"]),Y=(e,t)=>({left:`padding-inline-start:${t};`,right:`padding-inline-end:${t};`,top:`padding-block-start:${t};`,bottom:`padding-block-end:${t};`,inlineStart:`padding-inline-start:${t};`,inlineEnd:`padding-inline-end:${t};`,blockStart:`padding-block-start:${t};`,blockEnd:`padding-block-end:${t};`})[e];function Z(e){return t=>{const n=u(t,e);return n!=null?n:"0px"}}function ee(e,t){var o;if(Array.isArray(t)&&t.length>4)throw new Error("padding arrays can only be 4 or less in length");const n=new Set(Object.keys((o=e==null?void 0:e.spacing)!=null?o:v));(()=>typeof t=="string"?!0:Array.isArray(t)?t.every(i=>n.has(i)):t&&Object.keys(t).every(i=>j.has(i))&&Object.values(t).every(i=>n.has(i)))()||console.error("Invalid padding Type");const a=Z(e);return typeof t=="object"&&!Array.isArray(t)?Object.entries(t).reduce((i,[c,l])=>j.has(c)?i+Y(c,a(l)):i,""):t!==void 0?`padding: ${Array.from(Array.isArray(t)?t:[t]).map(i=>a(i)).join(" ")};`:""}const te=s.styled.div`
153
+ `,M=new Set(["left","right","top","bottom","inlineStart","inlineEnd","blockStart","blockEnd"]),Y=(e,t)=>({left:`padding-inline-start:${t};`,right:`padding-inline-end:${t};`,top:`padding-block-start:${t};`,bottom:`padding-block-end:${t};`,inlineStart:`padding-inline-start:${t};`,inlineEnd:`padding-inline-end:${t};`,blockStart:`padding-block-start:${t};`,blockEnd:`padding-block-end:${t};`})[e];function Z(e){return t=>{const n=u(t,e);return n!=null?n:"0px"}}function ee(e,t){var s;if(Array.isArray(t)&&t.length>4)throw new Error("padding arrays can only be 4 or less in length");const n=new Set(Object.keys((s=e==null?void 0:e.spacing)!=null?s:$));(()=>typeof t=="string"?!0:Array.isArray(t)?t.every(i=>n.has(i)):t&&Object.keys(t).every(i=>M.has(i))&&Object.values(t).every(i=>n.has(i)))()||console.error("Invalid padding Type");const a=Z(e);return typeof t=="object"&&!Array.isArray(t)?Object.entries(t).reduce((i,[o,g])=>M.has(o)?i+Y(o,a(g)):i,""):t!==void 0?`padding: ${Array.from(Array.isArray(t)?t:[t]).map(i=>a(i)).join(" ")};`:""}const te=c.styled.div`
154
154
  box-sizing: border-box;
155
155
  ${e=>ee(e.theme,e.padding)}
156
- `,ne=s.styled.div`
156
+ `,ne=c.styled.div`
157
157
  box-sizing: border-box;
158
158
  > * {
159
159
  margin: 0;
@@ -168,7 +168,7 @@
168
168
  overflow-x: scroll;
169
169
 
170
170
  scroll-snap-type: ${({snapType:e="none"})=>{switch(e){case"none":return"none";case"proximity":return"x proximity";case"mandatory":return"x mandatory";default:return"none"}}};
171
- `,B=s.styled("div")`
171
+ `,C=c.styled("div")`
172
172
  @property --gutter {
173
173
  syntax: "<length-percentage>";
174
174
  inherits: false;
@@ -189,7 +189,7 @@
189
189
  & > [data-bedrock-column] {
190
190
  grid-column: span 1 / auto;
191
191
  }
192
- `,E={"1/4":"1fr 3fr","1/3":"1fr 2fr","1/2":"1fr 1fr","2/3":"2fr 1fr","3/4":"3fr 1fr","auto-start":"auto 1fr","auto-end":"1fr auto"},re=s.styled.div`
192
+ `,m=96;function B(e){var r;e=String(e);const t=parseFloat(e),[,n]=(r=e.match(/[\d.\-+]*\s*(.*)/))!=null?r:["",""];return[t,n]}function h(e,t){if(!e)return null;const n=t!=null?t:document.body,r=(e!=null?e:"px").trim().toLowerCase();switch(r){case"vmin":case"vmax":case"vh":case"vw":case"%":return null;case"ch":case"ex":return re(r,n);case"em":return p(n,"font-size");case"rem":return p(document.body,"font-size");case"in":return m;case"cm":return m/2.54;case"mm":return m/25.4;case"pt":return m/72;case"pc":return m/6;case"px":return 1;default:{const[a,s]=B(r);if(isNaN(a))return null;if(!s)return a;const i=h(s,t);return typeof i=="number"?a*i:null}}}function p(e,t){var a;const[n,r]=B(getComputedStyle(e).getPropertyValue(t));return n*((a=h(r,e))!=null?a:1)}function re(e,t){const n=document.createElement("div");n.style.height="128"+e,t.appendChild(n);const r=p(n,"height")/128;return t.removeChild(n),r}const P={"1/4":"1fr 3fr","1/3":"1fr 2fr","1/2":"1fr 1fr","2/3":"2fr 1fr","3/4":"3fr 1fr","auto-start":"auto 1fr","auto-end":"1fr auto"},ie=c.styled.div`
193
193
  box-sizing: border-box;
194
194
  > * {
195
195
  margin: 0;
@@ -199,8 +199,8 @@
199
199
 
200
200
  display: grid;
201
201
  gap: var(--gutter, 0px);
202
- grid-template-columns: ${({fraction:e="1/2"})=>{var t;return(t=E[e])!=null?t:E["1/2"]}}};
203
- `,ie=e=>{const t=typeof e.switchAt=="string"?S(e.switchAt):e.switchAt,n=t&&t>-1?t:0;console.log(n);const[r,a]=P(n),o=i=>{var c;a(i),(c=e.ref)==null||c.call(e,i)};return React.createElement(g.Switch,null,React.createElement(g.Match,{when:r()===!1},React.createElement(re,f({as:e.as,ref:o,fraction:e.fraction},e))),React.createElement(g.Match,{when:r()===!0},React.createElement(B,f({as:e.as,ref:o},e))))};function O(e){var r;e=String(e);const t=parseFloat(e),[,n]=(r=e.match(/[\d.\-+]*\s*(.*)/))!=null?r:["",""];return[t,n]}function p(e,t){var a;const[n,r]=O(getComputedStyle(e).getPropertyValue(t));return n*((a=S(r,e))!=null?a:1)}function I(e,t){const n=document.createElement("div");n.style.height="128"+e,t.appendChild(n);const r=p(n,"height")/128;return t.removeChild(n),r}function S(e,t){if(!e)return null;const r=typeof window=="object"&&typeof document=="object"&&document.nodeType===9?I("in",document.body):96,a=t!=null?t:document.body,o=(e!=null?e:"px").trim().toLowerCase();switch(o){case"vmin":case"vmax":case"vh":case"vw":case"%":return null;case"ch":case"ex":return I(o,a);case"em":return p(a,"font-size");case"rem":return p(document.body,"font-size");case"in":return r;case"cm":return r/2.54;case"mm":return r/25.4;case"pt":return r/72;case"pc":return r/6;case"px":return 1;default:{const[i,c]=O(o);if(isNaN(i))return null;if(!c)return i;const l=S(c,t);return typeof l=="number"?i*l:null}}}function ae(e){return typeof e=="number"?`${e}px`:e&&b(e)?e:"100vh"}const oe=s.styled.div`
202
+ grid-template-columns: ${({fraction:e="1/2"})=>{var t;return(t=P[e])!=null?t:P["1/2"]}}};
203
+ `,ae=e=>{const t=typeof e.switchAt=="string"?h(e.switchAt):e.switchAt,n=t&&t>-1?t:0;console.log(n);const[r,a]=w(n),s=i=>{var o;a(i),(o=e.ref)==null||o.call(e,i)};return React.createElement(l.Switch,null,React.createElement(l.Match,{when:r()===!1},React.createElement(ie,f({as:e.as,ref:s,fraction:e.fraction},e))),React.createElement(l.Match,{when:r()===!0},React.createElement(C,f({as:e.as,ref:s},e))))};function se(e){return typeof e=="number"?`${e}px`:e&&S(e)?e:"100vh"}const ce=c.styled.div`
204
204
  @property --gutter {
205
205
  syntax: "<length-percentage>";
206
206
  inherits: false;
@@ -215,7 +215,7 @@
215
215
 
216
216
  --gutter: ${e=>{var t;return e.gutter&&(t=u(e.gutter,e.theme))!=null?t:"0px"}};
217
217
 
218
- --minHeight: ${e=>ae(e.minHeight)};
218
+ --minHeight: ${e=>se(e.minHeight)};
219
219
 
220
220
  > * {
221
221
  margin: 0;
@@ -240,4 +240,60 @@
240
240
  }
241
241
  `:""};
242
242
  }
243
- `,se=e=>{const o=e,{top:t,bottom:n,children:r}=o,a=A(o,["top","bottom","children"]);return React.createElement(oe,f({},a),e.top,React.createElement("div",{"data-bedrock-cover-centered":!0},e.children),e.bottom)};exports.Center=F;exports.ColumnDrop=_;exports.Cover=se;exports.Frame=Q;exports.Grid=U;exports.Inline=K;exports.InlineCluster=M;exports.PadBox=te;exports.Reel=ne;exports.Split=ie;exports.Stack=B;exports.checkIsCSSLength=b;exports.createContainerQuery=P;exports.getSpacingValue=u;exports.spacing=v;
243
+ `,oe=e=>{const s=e,{top:t,bottom:n,children:r}=s,a=j(s,["top","bottom","children"]);return React.createElement(ce,f({},a),e.top,React.createElement("div",{"data-bedrock-cover-centered":!0},e.children),e.bottom)},le=c.styled.div`
244
+ @property --gutter {
245
+ syntax: "<length-percentage>";
246
+ inherits: false;
247
+ initial-value: 0;
248
+ }
249
+
250
+ @property --columns {
251
+ syntax: "<number>";
252
+ inherits: true;
253
+ initial-value: 1;
254
+ }
255
+ --gutter: ${e=>{var t;return e.gutter&&(t=u(e.gutter,e.theme))!=null?t:"0px"}};
256
+
257
+ --columns: ${e=>e.columns&&e.columns>0?e.columns:1};
258
+
259
+ box-sizing: border-box;
260
+ > * {
261
+ margin: 0;
262
+ }
263
+
264
+ display: grid;
265
+ grid-template-columns: repeat(var(--columns, 1), 1fr);
266
+ gap: var(--gutter, 0px);
267
+ grid-auto-flow: row ${({dense:e=!1})=>e===!0?"dense":""};
268
+ `,ue=e=>{const t=typeof e.switchAt=="string"?h(e.switchAt):e.switchAt;console.log(t);const n=t&&t>-1?t:0;console.log(n);const[r,a]=w(n),s=i=>{var o;a(i),(o=e.ref)==null||o.call(e,i)};return React.createElement(l.Switch,null,React.createElement(l.Match,{when:r()===!1},React.createElement(le,f({as:e.as,ref:s,columns:e.columns},e))),React.createElement(l.Match,{when:r()===!0},React.createElement(C,f({as:e.as,ref:s},e))))},de=e=>typeof e=="number"?e:1,fe=c.styled.div`
269
+ @property --span {
270
+ syntax: "<number>";
271
+ inherits: true;
272
+ initial-value: 1;
273
+ }
274
+
275
+ --span: ${e=>de(e.colSpan)};
276
+
277
+ grid-column: span min(var(--span, 1), var(--columns, 1));
278
+
279
+ ${e=>e.offsetStart||e.offsetEnd?`
280
+ display: contents;
281
+ > * {
282
+ grid-column: span min(var(--span, 1), var(--columns, 1));
283
+ }
284
+ `:""}
285
+
286
+ ${e=>e.offsetStart&&e.offsetStart>0?`
287
+ &::before {
288
+ content: "";
289
+ grid-column: span min(${e.offsetStart}, var(--columns, 1));
290
+ }
291
+ `:""}
292
+
293
+ ${e=>e.offsetEnd&&e.offsetEnd>0?`
294
+ &::after {
295
+ content: "";
296
+ grid-column: span min(${e.offsetEnd}, var(--columns, 1));
297
+ }
298
+ `:""}
299
+ `;exports.Center=F;exports.Column=fe;exports.ColumnDrop=_;exports.Columns=ue;exports.Cover=oe;exports.Frame=Q;exports.Grid=U;exports.Inline=K;exports.InlineCluster=O;exports.PadBox=te;exports.Reel=ne;exports.Split=ae;exports.Stack=C;exports.checkIsCSSLength=S;exports.createContainerQuery=w;exports.getSpacingValue=u;exports.spacing=$;
package/lib/index.d.ts CHANGED
@@ -11,3 +11,4 @@ export * from "./reel";
11
11
  export * from "./split";
12
12
  export * from "./stack";
13
13
  export * from "./cover";
14
+ export * from "./columns";
package/lib/index.m.js CHANGED
@@ -424,6 +424,69 @@ const Stack = styled("div")`
424
424
  grid-column: span 1 / auto;
425
425
  }
426
426
  `;
427
+ const PIXELS_PER_INCH = 96;
428
+ function parseUnit(str) {
429
+ var _a;
430
+ str = String(str);
431
+ const num = parseFloat(str);
432
+ const [, unit] = (_a = str.match(/[\d.\-+]*\s*(.*)/)) != null ? _a : ["", ""];
433
+ return [num, unit];
434
+ }
435
+ function toPX(str, element) {
436
+ if (!str)
437
+ return null;
438
+ const elementOrBody = element != null ? element : document.body;
439
+ const safeStr = (str != null ? str : "px").trim().toLowerCase();
440
+ switch (safeStr) {
441
+ case "vmin":
442
+ case "vmax":
443
+ case "vh":
444
+ case "vw":
445
+ case "%":
446
+ return null;
447
+ case "ch":
448
+ case "ex":
449
+ return getSizeBrutal(safeStr, elementOrBody);
450
+ case "em":
451
+ return getPropertyInPX(elementOrBody, "font-size");
452
+ case "rem":
453
+ return getPropertyInPX(document.body, "font-size");
454
+ case "in":
455
+ return PIXELS_PER_INCH;
456
+ case "cm":
457
+ return PIXELS_PER_INCH / 2.54;
458
+ case "mm":
459
+ return PIXELS_PER_INCH / 25.4;
460
+ case "pt":
461
+ return PIXELS_PER_INCH / 72;
462
+ case "pc":
463
+ return PIXELS_PER_INCH / 6;
464
+ case "px":
465
+ return 1;
466
+ default: {
467
+ const [value, units] = parseUnit(safeStr);
468
+ if (isNaN(value))
469
+ return null;
470
+ if (!units)
471
+ return value;
472
+ const px = toPX(units, element);
473
+ return typeof px === "number" ? value * px : null;
474
+ }
475
+ }
476
+ }
477
+ function getPropertyInPX(element, prop) {
478
+ var _a;
479
+ const [value, units] = parseUnit(getComputedStyle(element).getPropertyValue(prop));
480
+ return value * ((_a = toPX(units, element)) != null ? _a : 1);
481
+ }
482
+ function getSizeBrutal(unit, element) {
483
+ const testDIV = document.createElement("div");
484
+ testDIV.style["height"] = "128" + unit;
485
+ element.appendChild(testDIV);
486
+ const size = getPropertyInPX(testDIV, "height") / 128;
487
+ element.removeChild(testDIV);
488
+ return size;
489
+ }
427
490
  const fractions = {
428
491
  "1/4": "1fr 3fr",
429
492
  "1/3": "1fr 2fr",
@@ -474,70 +537,6 @@ const Split = (props) => {
474
537
  ref: combineRef
475
538
  }, props))));
476
539
  };
477
- function parseUnit(str) {
478
- var _a;
479
- str = String(str);
480
- const num = parseFloat(str);
481
- const [, unit] = (_a = str.match(/[\d.\-+]*\s*(.*)/)) != null ? _a : ["", ""];
482
- return [num, unit];
483
- }
484
- function getPropertyInPX(element, prop) {
485
- var _a;
486
- const [value, units] = parseUnit(getComputedStyle(element).getPropertyValue(prop));
487
- return value * ((_a = toPX(units, element)) != null ? _a : 1);
488
- }
489
- function getSizeBrutal(unit, element) {
490
- const testDIV = document.createElement("div");
491
- testDIV.style["height"] = "128" + unit;
492
- element.appendChild(testDIV);
493
- const size = getPropertyInPX(testDIV, "height") / 128;
494
- element.removeChild(testDIV);
495
- return size;
496
- }
497
- function toPX(str, element) {
498
- if (!str)
499
- return null;
500
- const isBrowser = typeof window === "object" && typeof document === "object" && document.nodeType === 9;
501
- const PIXELS_PER_INCH = isBrowser ? getSizeBrutal("in", document.body) : 96;
502
- const elementOrBody = element != null ? element : document.body;
503
- const safeStr = (str != null ? str : "px").trim().toLowerCase();
504
- switch (safeStr) {
505
- case "vmin":
506
- case "vmax":
507
- case "vh":
508
- case "vw":
509
- case "%":
510
- return null;
511
- case "ch":
512
- case "ex":
513
- return getSizeBrutal(safeStr, elementOrBody);
514
- case "em":
515
- return getPropertyInPX(elementOrBody, "font-size");
516
- case "rem":
517
- return getPropertyInPX(document.body, "font-size");
518
- case "in":
519
- return PIXELS_PER_INCH;
520
- case "cm":
521
- return PIXELS_PER_INCH / 2.54;
522
- case "mm":
523
- return PIXELS_PER_INCH / 25.4;
524
- case "pt":
525
- return PIXELS_PER_INCH / 72;
526
- case "pc":
527
- return PIXELS_PER_INCH / 6;
528
- case "px":
529
- return 1;
530
- default: {
531
- const [value, units] = parseUnit(safeStr);
532
- if (isNaN(value))
533
- return null;
534
- if (!units)
535
- return value;
536
- const px = toPX(units, element);
537
- return typeof px === "number" ? value * px : null;
538
- }
539
- }
540
- }
541
540
  function getSafeMinHeight(minHeight) {
542
541
  if (typeof minHeight === "number")
543
542
  return `${minHeight}px`;
@@ -593,4 +592,92 @@ const Cover = (props) => {
593
592
  "data-bedrock-cover-centered": true
594
593
  }, props.children), props.bottom);
595
594
  };
596
- export { Center, ColumnDrop, Cover, Frame, Grid, Inline, InlineCluster, PadBox, Reel, Split, Stack, checkIsCSSLength, createContainerQuery, getSpacingValue, spacing };
595
+ const ColumnsBase = styled.div`
596
+ @property --gutter {
597
+ syntax: "<length-percentage>";
598
+ inherits: false;
599
+ initial-value: 0;
600
+ }
601
+
602
+ @property --columns {
603
+ syntax: "<number>";
604
+ inherits: true;
605
+ initial-value: 1;
606
+ }
607
+ --gutter: ${(props) => {
608
+ var _a;
609
+ return props.gutter ? (_a = getSpacingValue(props.gutter, props.theme)) != null ? _a : "0px" : "0px";
610
+ }};
611
+
612
+ --columns: ${(props) => props.columns && props.columns > 0 ? props.columns : 1};
613
+
614
+ box-sizing: border-box;
615
+ > * {
616
+ margin: 0;
617
+ }
618
+
619
+ display: grid;
620
+ grid-template-columns: repeat(var(--columns, 1), 1fr);
621
+ gap: var(--gutter, 0px);
622
+ grid-auto-flow: row ${({ dense = false }) => dense === true ? "dense" : ""};
623
+ `;
624
+ const Columns = (props) => {
625
+ const maybePx = typeof props.switchAt === "string" ? toPX(props.switchAt) : props.switchAt;
626
+ console.log(maybePx);
627
+ const widthToSwitchAt = maybePx && maybePx > -1 ? maybePx : 0;
628
+ console.log(widthToSwitchAt);
629
+ const [shouldSwitch, nodeRef] = createContainerQuery(widthToSwitchAt);
630
+ const combineRef = (ref) => {
631
+ var _a;
632
+ nodeRef(ref);
633
+ (_a = props.ref) == null ? void 0 : _a.call(props, ref);
634
+ };
635
+ return /* @__PURE__ */ React.createElement(Switch, null, /* @__PURE__ */ React.createElement(Match, {
636
+ when: shouldSwitch() === false
637
+ }, /* @__PURE__ */ React.createElement(ColumnsBase, __spreadValues({
638
+ as: props.as,
639
+ ref: combineRef,
640
+ columns: props.columns
641
+ }, props))), /* @__PURE__ */ React.createElement(Match, {
642
+ when: shouldSwitch() === true
643
+ }, /* @__PURE__ */ React.createElement(Stack, __spreadValues({
644
+ as: props.as,
645
+ ref: combineRef
646
+ }, props))));
647
+ };
648
+ const safeSpan = (span) => {
649
+ return typeof span === "number" ? span : 1;
650
+ };
651
+ const Column = styled.div`
652
+ @property --span {
653
+ syntax: "<number>";
654
+ inherits: true;
655
+ initial-value: 1;
656
+ }
657
+
658
+ --span: ${(props) => safeSpan(props.colSpan)};
659
+
660
+ grid-column: span min(var(--span, 1), var(--columns, 1));
661
+
662
+ ${(props) => props.offsetStart || props.offsetEnd ? `
663
+ display: contents;
664
+ > * {
665
+ grid-column: span min(var(--span, 1), var(--columns, 1));
666
+ }
667
+ ` : ""}
668
+
669
+ ${(props) => props.offsetStart && props.offsetStart > 0 ? `
670
+ &::before {
671
+ content: "";
672
+ grid-column: span min(${props.offsetStart}, var(--columns, 1));
673
+ }
674
+ ` : ""}
675
+
676
+ ${(props) => props.offsetEnd && props.offsetEnd > 0 ? `
677
+ &::after {
678
+ content: "";
679
+ grid-column: span min(${props.offsetEnd}, var(--columns, 1));
680
+ }
681
+ ` : ""}
682
+ `;
683
+ export { Center, Column, ColumnDrop, Columns, Cover, Frame, Grid, Inline, InlineCluster, PadBox, Reel, Split, Stack, checkIsCSSLength, createContainerQuery, getSpacingValue, spacing };
package/lib/index.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnPropertyDescriptors;var h=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var M=(n,r,s)=>r in n?ce(n,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[r]=s,x=(n,r)=>{for(var s in r||(r={}))T.call(r,s)&&M(n,s,r[s]);if(h)for(var s of h(r))B.call(r,s)&&M(n,s,r[s]);return n},S=(n,r)=>oe(n,se(r));var O=(n,r)=>{var s={};for(var o in n)T.call(n,o)&&r.indexOf(o)<0&&(s[o]=n[o]);if(n!=null&&h)for(var o of h(n))r.indexOf(o)<0&&B.call(n,o)&&(s[o]=n[o]);return s};(function(n,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("solid-styled-components"),require("@bedrock-layout/register-resize-callback"),require("solid-js")):typeof define=="function"&&define.amd?define(["exports","solid-styled-components","@bedrock-layout/register-resize-callback","solid-js"],r):(n=typeof globalThis!="undefined"?globalThis:n||self,r(n.solid={},n.solidStyledComponents,n.registerResizeCallback,n.solidJs))})(this,function(n,r,s,o){"use strict";function b(e){return typeof e!="string"?!1:[/^[0-9]{0,10000}\.?[0-9]{1,10000}(vmin|vmax|vh|vw|%|ch|ex|em|rem|in|cm|mm|pt|pc|px)$/,/^var\(--\D{1,100}\)$/].some(t=>t.test(e))}const v={none:"0px",xxs:"0.0625rem",xs:"0.125rem",sm:"0.25rem",md:"0.5rem",mdLg:"0.75rem",lg:"1rem",lgXl:"1.5rem",xl:"2rem",xlXXl:"3rem",xxl:"4rem"};function L(e){return e.reduce((t,[i,c])=>S(x({},t),{[i]:c}),{})}const g=(e,t)=>{var a,f;const i=(f=(a=t==null?void 0:t.space)!=null?a:t==null?void 0:t.spacing)!=null?f:v,l=L(Object.entries(i).map(([d,y])=>[d,typeof y=="number"?`${y}px`:y]))[e];return b(l)?l:void 0};function V(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const D=r.styled.div`
1
+ var fe=Object.defineProperty,ge=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var v=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var P=(n,r,o)=>r in n?fe(n,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[r]=o,m=(n,r)=>{for(var o in r||(r={}))T.call(r,o)&&P(n,o,r[o]);if(v)for(var o of v(r))O.call(r,o)&&P(n,o,r[o]);return n},E=(n,r)=>ge(n,de(r));var B=(n,r)=>{var o={};for(var s in n)T.call(n,s)&&r.indexOf(s)<0&&(o[s]=n[s]);if(n!=null&&v)for(var s of v(n))r.indexOf(s)<0&&O.call(n,s)&&(o[s]=n[s]);return o};(function(n,r){typeof exports=="object"&&typeof module!="undefined"?r(exports,require("solid-styled-components"),require("@bedrock-layout/register-resize-callback"),require("solid-js")):typeof define=="function"&&define.amd?define(["exports","solid-styled-components","@bedrock-layout/register-resize-callback","solid-js"],r):(n=typeof globalThis!="undefined"?globalThis:n||self,r(n.solid={},n.solidStyledComponents,n.registerResizeCallback,n.solidJs))})(this,function(n,r,o,s){"use strict";function $(e){return typeof e!="string"?!1:[/^[0-9]{0,10000}\.?[0-9]{1,10000}(vmin|vmax|vh|vw|%|ch|ex|em|rem|in|cm|mm|pt|pc|px)$/,/^var\(--\D{1,100}\)$/].some(t=>t.test(e))}const w={none:"0px",xxs:"0.0625rem",xs:"0.125rem",sm:"0.25rem",md:"0.5rem",mdLg:"0.75rem",lg:"1rem",lgXl:"1.5rem",xl:"2rem",xlXXl:"3rem",xxl:"4rem"};function L(e){return e.reduce((t,[i,c])=>E(m({},t),{[i]:c}),{})}const g=(e,t)=>{var a,f;const i=(f=(a=t==null?void 0:t.space)!=null?a:t==null?void 0:t.spacing)!=null?f:w,l=L(Object.entries(i).map(([h,d])=>[h,typeof d=="number"?`${d}px`:d]))[e];return $(l)?l:void 0};function V(e){return e===void 0?"100%":typeof e=="number"?`${e}px`:e}const D=r.styled.div`
2
2
  @property --maxWidth {
3
3
  syntax: "<length-percentage>";
4
4
  inherits: false;
@@ -53,7 +53,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
53
53
  display: flex;
54
54
  flex-wrap: wrap;
55
55
  gap: var(--gutter, 0px);
56
- `;function k(e=1,t){if(t!==void 0&&t<=e)throw new Error(`The second width value, ${t}, is not larger than ${e}. Please provide a value greater than first width value`);const[i,c]=o.createSignal(!1),[l,u]=o.createSignal();return o.onMount(()=>{s.init()}),o.createEffect(()=>{const a=l();if(a==null)return;const f=s.registerCallback(a,d=>{var C,P;const y=(P=(C=d.borderBoxSize)==null?void 0:C.inlineSize)!=null?P:d.contentRect.width;if(y>0){const ae=t===void 0?y<=e:y>=e&&y<=t;c(ae)}});o.onCleanup(f)}),[i,u]}function F(e){return Array.isArray(e)&&e.length===2&&e.every(Number.isFinite)||typeof e=="string"&&/^\d{1,1000} {0,1}\/ {0,1}\d{1,1000}$/.test(e)}function N(e){return Array.isArray(e)?e.join("/"):e}function _(e){return F(e)?N(e):void 0}const q=r.styled.div`
56
+ `;function S(e=1,t){if(t!==void 0&&t<=e)throw new Error(`The second width value, ${t}, is not larger than ${e}. Please provide a value greater than first width value`);const[i,c]=s.createSignal(!1),[l,u]=s.createSignal();return s.onMount(()=>{o.init()}),s.createEffect(()=>{const a=l();if(a==null)return;const f=o.registerCallback(a,h=>{var I,M;const d=(M=(I=h.borderBoxSize)==null?void 0:I.inlineSize)!=null?M:h.contentRect.width;if(d>0){const ue=t===void 0?d<=e:d>=e&&d<=t;c(ue)}});s.onCleanup(f)}),[i,u]}function F(e){return Array.isArray(e)&&e.length===2&&e.every(Number.isFinite)||typeof e=="string"&&/^\d{1,1000} {0,1}\/ {0,1}\d{1,1000}$/.test(e)}function N(e){return Array.isArray(e)?e.join("/"):e}function _(e){return F(e)?N(e):void 0}const q=r.styled.div`
57
57
  box-sizing: border-box;
58
58
  display: block;
59
59
  inline-size: 100%;
@@ -116,7 +116,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
116
116
  auto-fit,
117
117
  minmax(min(var(--minItemWidth, 639px), 100%), 1fr)
118
118
  );
119
- `,m={start:"flex-start",end:"flex-end",center:"center"},p=S(x({},m),{stretch:"stretch"}),z=r.styled.div`
119
+ `,x={start:"flex-start",end:"flex-end",center:"center"},p=E(m({},x),{stretch:"stretch"}),R=r.styled.div`
120
120
  --gutter: ${e=>{var t;return e.gutter&&(t=g(e.gutter,e.theme))!=null?t:"0px"}};
121
121
 
122
122
  box-sizing: border-box;
@@ -128,10 +128,10 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
128
128
  flex-wrap: wrap;
129
129
  gap: var(--gutter, 0px);
130
130
 
131
- justify-content: ${e=>typeof e.justify!="undefined"&&m[e.justify]?m[e.justify]:m.start};
131
+ justify-content: ${e=>typeof e.justify!="undefined"&&x[e.justify]?x[e.justify]:x.start};
132
132
 
133
133
  align-items: ${e=>typeof e.align!="undefined"&&p[e.align]?p[e.align]:p.start};
134
- `;function H(e){return typeof e=="number"&&e>-1?!0:typeof e=="string"&&typeof CSS!==void 0?CSS.supports(`height: ${e}`):!1}const Q=r.styled(z)`
134
+ `;function H(e){return typeof e=="number"&&e>-1?!0:typeof e=="string"&&typeof CSS!==void 0?CSS.supports(`height: ${e}`):!1}const Q=r.styled(R)`
135
135
  @property --switchAt {
136
136
  syntax: "<length-percentage>";
137
137
  inherits: true;
@@ -150,7 +150,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
150
150
  );
151
151
  }
152
152
  `:""}
153
- `,A=new Set(["left","right","top","bottom","inlineStart","inlineEnd","blockStart","blockEnd"]),U=(e,t)=>({left:`padding-inline-start:${t};`,right:`padding-inline-end:${t};`,top:`padding-block-start:${t};`,bottom:`padding-block-end:${t};`,inlineStart:`padding-inline-start:${t};`,inlineEnd:`padding-inline-end:${t};`,blockStart:`padding-block-start:${t};`,blockEnd:`padding-block-end:${t};`})[e];function K(e){return t=>{const i=g(t,e);return i!=null?i:"0px"}}function Y(e,t){var u;if(Array.isArray(t)&&t.length>4)throw new Error("padding arrays can only be 4 or less in length");const i=new Set(Object.keys((u=e==null?void 0:e.spacing)!=null?u:v));(()=>typeof t=="string"?!0:Array.isArray(t)?t.every(a=>i.has(a)):t&&Object.keys(t).every(a=>A.has(a))&&Object.values(t).every(a=>i.has(a)))()||console.error("Invalid padding Type");const l=K(e);return typeof t=="object"&&!Array.isArray(t)?Object.entries(t).reduce((a,[f,d])=>A.has(f)?a+U(f,l(d)):a,""):t!==void 0?`padding: ${Array.from(Array.isArray(t)?t:[t]).map(a=>l(a)).join(" ")};`:""}const Z=r.styled.div`
153
+ `,z=new Set(["left","right","top","bottom","inlineStart","inlineEnd","blockStart","blockEnd"]),U=(e,t)=>({left:`padding-inline-start:${t};`,right:`padding-inline-end:${t};`,top:`padding-block-start:${t};`,bottom:`padding-block-end:${t};`,inlineStart:`padding-inline-start:${t};`,inlineEnd:`padding-inline-end:${t};`,blockStart:`padding-block-start:${t};`,blockEnd:`padding-block-end:${t};`})[e];function K(e){return t=>{const i=g(t,e);return i!=null?i:"0px"}}function Y(e,t){var u;if(Array.isArray(t)&&t.length>4)throw new Error("padding arrays can only be 4 or less in length");const i=new Set(Object.keys((u=e==null?void 0:e.spacing)!=null?u:w));(()=>typeof t=="string"?!0:Array.isArray(t)?t.every(a=>i.has(a)):t&&Object.keys(t).every(a=>z.has(a))&&Object.values(t).every(a=>i.has(a)))()||console.error("Invalid padding Type");const l=K(e);return typeof t=="object"&&!Array.isArray(t)?Object.entries(t).reduce((a,[f,h])=>z.has(f)?a+U(f,l(h)):a,""):t!==void 0?`padding: ${Array.from(Array.isArray(t)?t:[t]).map(a=>l(a)).join(" ")};`:""}const Z=r.styled.div`
154
154
  box-sizing: border-box;
155
155
  ${e=>Y(e.theme,e.padding)}
156
156
  `,J=r.styled.div`
@@ -168,7 +168,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
168
168
  overflow-x: scroll;
169
169
 
170
170
  scroll-snap-type: ${({snapType:e="none"})=>{switch(e){case"none":return"none";case"proximity":return"x proximity";case"mandatory":return"x mandatory";default:return"none"}}};
171
- `,j=r.styled("div")`
171
+ `,k=r.styled("div")`
172
172
  @property --gutter {
173
173
  syntax: "<length-percentage>";
174
174
  inherits: false;
@@ -189,7 +189,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
189
189
  & > [data-bedrock-column] {
190
190
  grid-column: span 1 / auto;
191
191
  }
192
- `,R={"1/4":"1fr 3fr","1/3":"1fr 2fr","1/2":"1fr 1fr","2/3":"2fr 1fr","3/4":"3fr 1fr","auto-start":"auto 1fr","auto-end":"1fr auto"},ee=r.styled.div`
192
+ `,y=96;function j(e){var c;e=String(e);const t=parseFloat(e),[,i]=(c=e.match(/[\d.\-+]*\s*(.*)/))!=null?c:["",""];return[t,i]}function b(e,t){if(!e)return null;const i=t!=null?t:document.body,c=(e!=null?e:"px").trim().toLowerCase();switch(c){case"vmin":case"vmax":case"vh":case"vw":case"%":return null;case"ch":case"ex":return ee(c,i);case"em":return A(i,"font-size");case"rem":return A(document.body,"font-size");case"in":return y;case"cm":return y/2.54;case"mm":return y/25.4;case"pt":return y/72;case"pc":return y/6;case"px":return 1;default:{const[l,u]=j(c);if(isNaN(l))return null;if(!u)return l;const a=b(u,t);return typeof a=="number"?l*a:null}}}function A(e,t){var l;const[i,c]=j(getComputedStyle(e).getPropertyValue(t));return i*((l=b(c,e))!=null?l:1)}function ee(e,t){const i=document.createElement("div");i.style.height="128"+e,t.appendChild(i);const c=A(i,"height")/128;return t.removeChild(i),c}const C={"1/4":"1fr 3fr","1/3":"1fr 2fr","1/2":"1fr 1fr","2/3":"2fr 1fr","3/4":"3fr 1fr","auto-start":"auto 1fr","auto-end":"1fr auto"},te=r.styled.div`
193
193
  box-sizing: border-box;
194
194
  > * {
195
195
  margin: 0;
@@ -199,8 +199,8 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
199
199
 
200
200
  display: grid;
201
201
  gap: var(--gutter, 0px);
202
- grid-template-columns: ${({fraction:e="1/2"})=>{var t;return(t=R[e])!=null?t:R["1/2"]}}};
203
- `,te=e=>{const t=typeof e.switchAt=="string"?w(e.switchAt):e.switchAt,i=t&&t>-1?t:0;console.log(i);const[c,l]=k(i),u=a=>{var f;l(a),(f=e.ref)==null||f.call(e,a)};return React.createElement(o.Switch,null,React.createElement(o.Match,{when:c()===!1},React.createElement(ee,x({as:e.as,ref:u,fraction:e.fraction},e))),React.createElement(o.Match,{when:c()===!0},React.createElement(j,x({as:e.as,ref:u},e))))};function E(e){var c;e=String(e);const t=parseFloat(e),[,i]=(c=e.match(/[\d.\-+]*\s*(.*)/))!=null?c:["",""];return[t,i]}function $(e,t){var l;const[i,c]=E(getComputedStyle(e).getPropertyValue(t));return i*((l=w(c,e))!=null?l:1)}function I(e,t){const i=document.createElement("div");i.style.height="128"+e,t.appendChild(i);const c=$(i,"height")/128;return t.removeChild(i),c}function w(e,t){if(!e)return null;const c=typeof window=="object"&&typeof document=="object"&&document.nodeType===9?I("in",document.body):96,l=t!=null?t:document.body,u=(e!=null?e:"px").trim().toLowerCase();switch(u){case"vmin":case"vmax":case"vh":case"vw":case"%":return null;case"ch":case"ex":return I(u,l);case"em":return $(l,"font-size");case"rem":return $(document.body,"font-size");case"in":return c;case"cm":return c/2.54;case"mm":return c/25.4;case"pt":return c/72;case"pc":return c/6;case"px":return 1;default:{const[a,f]=E(u);if(isNaN(a))return null;if(!f)return a;const d=w(f,t);return typeof d=="number"?a*d:null}}}function ne(e){return typeof e=="number"?`${e}px`:e&&b(e)?e:"100vh"}const re=r.styled.div`
202
+ grid-template-columns: ${({fraction:e="1/2"})=>{var t;return(t=C[e])!=null?t:C["1/2"]}}};
203
+ `,ne=e=>{const t=typeof e.switchAt=="string"?b(e.switchAt):e.switchAt,i=t&&t>-1?t:0;console.log(i);const[c,l]=S(i),u=a=>{var f;l(a),(f=e.ref)==null||f.call(e,a)};return React.createElement(s.Switch,null,React.createElement(s.Match,{when:c()===!1},React.createElement(te,m({as:e.as,ref:u,fraction:e.fraction},e))),React.createElement(s.Match,{when:c()===!0},React.createElement(k,m({as:e.as,ref:u},e))))};function re(e){return typeof e=="number"?`${e}px`:e&&$(e)?e:"100vh"}const ie=r.styled.div`
204
204
  @property --gutter {
205
205
  syntax: "<length-percentage>";
206
206
  inherits: false;
@@ -215,7 +215,7 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
215
215
 
216
216
  --gutter: ${e=>{var t;return e.gutter&&(t=g(e.gutter,e.theme))!=null?t:"0px"}};
217
217
 
218
- --minHeight: ${e=>ne(e.minHeight)};
218
+ --minHeight: ${e=>re(e.minHeight)};
219
219
 
220
220
  > * {
221
221
  margin: 0;
@@ -240,4 +240,60 @@ var ce=Object.defineProperty,oe=Object.defineProperties;var se=Object.getOwnProp
240
240
  }
241
241
  `:""};
242
242
  }
243
- `,ie=e=>{const u=e,{top:t,bottom:i,children:c}=u,l=O(u,["top","bottom","children"]);return React.createElement(re,x({},l),e.top,React.createElement("div",{"data-bedrock-cover-centered":!0},e.children),e.bottom)};n.Center=D,n.ColumnDrop=X,n.Cover=ie,n.Frame=q,n.Grid=G,n.Inline=Q,n.InlineCluster=z,n.PadBox=Z,n.Reel=J,n.Split=te,n.Stack=j,n.checkIsCSSLength=b,n.createContainerQuery=k,n.getSpacingValue=g,n.spacing=v,Object.defineProperty(n,"__esModule",{value:!0}),n[Symbol.toStringTag]="Module"});
243
+ `,ae=e=>{const u=e,{top:t,bottom:i,children:c}=u,l=B(u,["top","bottom","children"]);return React.createElement(ie,m({},l),e.top,React.createElement("div",{"data-bedrock-cover-centered":!0},e.children),e.bottom)},ce=r.styled.div`
244
+ @property --gutter {
245
+ syntax: "<length-percentage>";
246
+ inherits: false;
247
+ initial-value: 0;
248
+ }
249
+
250
+ @property --columns {
251
+ syntax: "<number>";
252
+ inherits: true;
253
+ initial-value: 1;
254
+ }
255
+ --gutter: ${e=>{var t;return e.gutter&&(t=g(e.gutter,e.theme))!=null?t:"0px"}};
256
+
257
+ --columns: ${e=>e.columns&&e.columns>0?e.columns:1};
258
+
259
+ box-sizing: border-box;
260
+ > * {
261
+ margin: 0;
262
+ }
263
+
264
+ display: grid;
265
+ grid-template-columns: repeat(var(--columns, 1), 1fr);
266
+ gap: var(--gutter, 0px);
267
+ grid-auto-flow: row ${({dense:e=!1})=>e===!0?"dense":""};
268
+ `,se=e=>{const t=typeof e.switchAt=="string"?b(e.switchAt):e.switchAt;console.log(t);const i=t&&t>-1?t:0;console.log(i);const[c,l]=S(i),u=a=>{var f;l(a),(f=e.ref)==null||f.call(e,a)};return React.createElement(s.Switch,null,React.createElement(s.Match,{when:c()===!1},React.createElement(ce,m({as:e.as,ref:u,columns:e.columns},e))),React.createElement(s.Match,{when:c()===!0},React.createElement(k,m({as:e.as,ref:u},e))))},le=e=>typeof e=="number"?e:1,oe=r.styled.div`
269
+ @property --span {
270
+ syntax: "<number>";
271
+ inherits: true;
272
+ initial-value: 1;
273
+ }
274
+
275
+ --span: ${e=>le(e.colSpan)};
276
+
277
+ grid-column: span min(var(--span, 1), var(--columns, 1));
278
+
279
+ ${e=>e.offsetStart||e.offsetEnd?`
280
+ display: contents;
281
+ > * {
282
+ grid-column: span min(var(--span, 1), var(--columns, 1));
283
+ }
284
+ `:""}
285
+
286
+ ${e=>e.offsetStart&&e.offsetStart>0?`
287
+ &::before {
288
+ content: "";
289
+ grid-column: span min(${e.offsetStart}, var(--columns, 1));
290
+ }
291
+ `:""}
292
+
293
+ ${e=>e.offsetEnd&&e.offsetEnd>0?`
294
+ &::after {
295
+ content: "";
296
+ grid-column: span min(${e.offsetEnd}, var(--columns, 1));
297
+ }
298
+ `:""}
299
+ `;n.Center=D,n.Column=oe,n.ColumnDrop=X,n.Columns=se,n.Cover=ae,n.Frame=q,n.Grid=G,n.Inline=Q,n.InlineCluster=R,n.PadBox=Z,n.Reel=J,n.Split=ne,n.Stack=k,n.checkIsCSSLength=$,n.createContainerQuery=S,n.getSpacingValue=g,n.spacing=w,Object.defineProperty(n,"__esModule",{value:!0}),n[Symbol.toStringTag]="Module"});
package/lib/toPx.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /**
2
+ * This module is adapted from https://github.com/mikolalysenko/to-px/blob/master/browser.js
3
+ */
4
+ export declare function toPX(str: string, element?: Element): number | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bedrock-layout/solid",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "solid.js port of bedrock-layout primitives",
5
5
  "sideEffects": false,
6
6
  "private": false,
@@ -62,5 +62,5 @@
62
62
  "bugs": {
63
63
  "url": "https://github.com/Bedrock-Layouts/Solid-Bedrock/issues"
64
64
  },
65
- "gitHead": "cbca187f5e2b28548d68ff4c2936f0e65a147f93"
65
+ "gitHead": "af80ca54feda5c1b9f0173c867802bc3a87ee259"
66
66
  }