@wavy/react-ui 0.0.66 → 0.0.67
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/dist/main.css +1 -1
- package/dist/main.d.ts +4 -1
- package/dist/main.js +9 -30
- package/package.json +8 -3
- package/scripts/public/buildTheme.js +45 -44
- package/scripts/public/bundleCss.js +46 -45
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavy/react-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.67",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Wavy",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"keywords": [
|
|
15
15
|
"wavy-ui",
|
|
16
16
|
"wavy",
|
|
17
|
-
"ui"
|
|
17
|
+
"ui",
|
|
18
|
+
"react"
|
|
18
19
|
],
|
|
19
20
|
"repository": {
|
|
20
21
|
"type": "git",
|
|
@@ -30,12 +31,16 @@
|
|
|
30
31
|
"build": "tsup && node scripts/build/cloneAssets.ts && npm run bundle-css && npm link",
|
|
31
32
|
"publisher": "npm run build && npm version patch && npm publish"
|
|
32
33
|
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"zod": "^4.2.1",
|
|
36
|
+
"@wavy/util": "^0.0.11"
|
|
37
|
+
},
|
|
33
38
|
"devDependencies": {
|
|
34
39
|
"@emotion/styled": "^11.14.1",
|
|
35
40
|
"@types/node": "^24.7.0",
|
|
36
41
|
"@types/react": "^19.2.2",
|
|
37
42
|
"@types/react-dom": "^19.2.3",
|
|
38
|
-
"@wavy/util": "^0.0.
|
|
43
|
+
"@wavy/util": "^0.0.11",
|
|
39
44
|
"react": "^19.2.0",
|
|
40
45
|
"react-dom": "^19.2.0",
|
|
41
46
|
"tsup": "^8.5.0",
|
|
@@ -1,45 +1,46 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {upperFirst}from'@wavy/fn';import $ from'path';import {fileURLToPath}from'url';var I=fileURLToPath(import.meta.url),A=$.dirname(I),p=A.split($.sep).filter((r,t,e)=>t<e.length-2).join($.sep);var y="__",j=1e3;function w(r,t=1){let e=r.startsWith("#")?r.slice(1):r;e.length===3&&(e=e.split("").map(n=>n+n).join(""));let o=parseInt(e.substring(0,2),16),a=parseInt(e.substring(2,4),16),s=parseInt(e.substring(4,6),16);return `rgba(${o}, ${a}, ${s}, ${t})`}function k(r){return [...Array.from(Array(9)).flatMap((t,e)=>{let o=e+1;return [`${o}00`,`${o}50`].map(a=>`${r}${y}${a}`)}),r]}function _(r,t){let o=`--${(a=>a.split("").map(s=>s===s.toUpperCase()&&s!==s.toLowerCase()?`-${s.toLowerCase()}`:s).join(""))(r)}`;return t?.wrap?`var(${o})`:o}function F(r,t,e){let o=Object.entries(t);return e?.excludeSeed||o.push(["seed",r]),o}function L(...r){let t=F(...r).map(([o])=>k(o).map(a=>{let{1:s}=a.split(y),n="";return s&&(n=`[${parseInt(s)/j}]`),`"${o}${n}": "${_(a,{wrap:true})}"`})).flat(),e="CssColors";return {filename:e+".ts",content:`
|
|
3
|
-
const ${e} = Object.freeze({
|
|
4
|
-
${t.join(`,
|
|
5
|
-
`)}
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
export default ${e}
|
|
9
|
-
`}}function R(r,t,e){let o=(s,n)=>{let g=t.light[s]||n,b=t.dark[s]||n;return k(s).map(i=>{let f=_(i),m=parseFloat(i.replace(/[^0\.0-9]/g,"")),d=m?m/j:1,h=w(g,d),l=w(b,d);return `${f}: light-dark(${h}, ${l})`})};return `
|
|
10
|
-
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
|
11
|
-
|
|
12
|
-
:root {
|
|
13
|
-
color-scheme: light dark;
|
|
14
|
-
|
|
15
|
-
${F(r,t.light).map(([s,n])=>o(s,n)).flat().join(";")}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
*,
|
|
19
|
-
*::before,
|
|
20
|
-
*::after {
|
|
21
|
-
padding: 0;
|
|
22
|
-
margin: 0;
|
|
23
|
-
box-sizing: border-box;
|
|
24
|
-
font-family: inherit;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
body {
|
|
28
|
-
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
|
29
|
-
height: 100vh;
|
|
30
|
-
width: 100vw;
|
|
31
|
-
overflow: hidden;
|
|
32
|
-
background-color: var(--surface);
|
|
33
|
-
color: var(--on-surface);
|
|
34
|
-
scrollbar-color: var(--on-surface__750) transparent;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {upperFirst}from'@wavy/fn';import $ from'path';import {fileURLToPath}from'url';var I=fileURLToPath(import.meta.url),A=$.dirname(I),p=A.split($.sep).filter((r,t,e)=>t<e.length-2).join($.sep);var y="__",j=1e3;function w(r,t=1){let e=r.startsWith("#")?r.slice(1):r;e.length===3&&(e=e.split("").map(n=>n+n).join(""));let o=parseInt(e.substring(0,2),16),a=parseInt(e.substring(2,4),16),s=parseInt(e.substring(4,6),16);return `rgba(${o}, ${a}, ${s}, ${t})`}function k(r){return [...Array.from(Array(9)).flatMap((t,e)=>{let o=e+1;return [`${o}00`,`${o}50`].map(a=>`${r}${y}${a}`)}),r]}function _(r,t){let o=`--${(a=>a.split("").map(s=>s===s.toUpperCase()&&s!==s.toLowerCase()?`-${s.toLowerCase()}`:s).join(""))(r)}`;return t?.wrap?`var(${o})`:o}function F(r,t,e){let o=Object.entries(t);return e?.excludeSeed||o.push(["seed",r]),o}function L(...r){let t=F(...r).map(([o])=>k(o).map(a=>{let{1:s}=a.split(y),n="";return s&&(n=`[${parseInt(s)/j}]`),`"${o}${n}": "${_(a,{wrap:true})}"`})).flat(),e="CssColors";return {filename:e+".ts",content:`
|
|
3
|
+
const ${e} = Object.freeze({
|
|
4
|
+
${t.join(`,
|
|
5
|
+
`)}
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
export default ${e}
|
|
9
|
+
`}}function R(r,t,e){let o=(s,n)=>{let g=t.light[s]||n,b=t.dark[s]||n;return k(s).map(i=>{let f=_(i),m=parseFloat(i.replace(/[^0\.0-9]/g,"")),d=m?m/j:1,h=w(g,d),l=w(b,d);return `${f}: light-dark(${h}, ${l})`})};return `
|
|
10
|
+
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
color-scheme: light dark;
|
|
14
|
+
|
|
15
|
+
${F(r,t.light).map(([s,n])=>o(s,n)).flat().join(";")}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
*,
|
|
19
|
+
*::before,
|
|
20
|
+
*::after {
|
|
21
|
+
padding: 0;
|
|
22
|
+
margin: 0;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
font-family: inherit;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
body {
|
|
28
|
+
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
|
29
|
+
height: 100vh;
|
|
30
|
+
width: 100vw;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
background-color: var(--surface);
|
|
33
|
+
color: var(--on-surface);
|
|
34
|
+
scrollbar-color: var(--on-surface__750) transparent;
|
|
35
|
+
scrollbar-gutter: stable;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#root {
|
|
39
|
+
--size: 100%;
|
|
40
|
+
height: var(--size);
|
|
41
|
+
width: var(--size);
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
${e?.()||""}
|
|
45
46
|
`.replace(/\s+/g," ").trim()}async function N(r){let t=await import('fs/promises'),e=await import('path'),{styles:o}=JSON.parse((await t.readFile(e.join(p,"package.json"))).toString("utf-8"));try{let a=e.join(p,"./external/themes"),s=e.join(p,"./src/css"),n=await t.readdir(a),g=n.map(c=>"--"+c.match(/.*?(?=\.)/)?.[0]),b=process.argv.splice(2),i=r?.flag||b.find(c=>g.includes(c));if(!i)return console.log(`Please select a theme using one of these flags: [${g.join(", ")}]`);let f=n.find(c=>c.includes(i.replace(/[^a-zA-Z]/g,"")));if(!f)return console.log(`Failed to map ${i} to a filename in [${n.join(", ")}].`);let m=await t.readFile(e.join(a,f)),{schemes:d,seed:h}=JSON.parse(m.toString("utf-8")),{dark:l,light:u}=d;u.themelessSurface="#FFF",u.themelessOnSurface="#000",l.themelessSurface="#000",l.themelessOnSurface="#FFF";let{filename:x,content:z}=L(h,u);r?.loadCssRefInLocalPackage&&await t.writeFile(e.join(s,"resources",x),z),await t.writeFile(e.join(p,o),R(h,{light:u,dark:l},r?.injectStyles));let C={green:"\u{1F7E9}",purple:"\u{1F7EA}"},v=i.toLowerCase().replace(/[^a-z]/g,"");console.log(`${C[v]||""} ${upperFirst(v)} theme loaded! \u2728`.trim());}catch(a){console.error(a);}}export{N as buildWavyTheme};
|
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import $ from'fs/promises';import b from'path';import {fileURLToPath}from'url';import {upperFirst}from'@wavy/fn';var O=fileURLToPath(import.meta.url),D=b.dirname(O),l=D.split(b.sep).filter((t,r,e)=>r<e.length-2).join(b.sep);var S="__",F=1e3;function j(t,r=1){let e=t.startsWith("#")?t.slice(1):t;e.length===3&&(e=e.split("").map(i=>i+i).join(""));let
|
|
3
|
-
const ${e} = Object.freeze({
|
|
4
|
-
${r.join(`,
|
|
5
|
-
`)}
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
export default ${e}
|
|
9
|
-
`}}function H(t,r,e){let
|
|
10
|
-
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
|
11
|
-
|
|
12
|
-
:root {
|
|
13
|
-
color-scheme: light dark;
|
|
14
|
-
|
|
15
|
-
${C(t,r.light).map(([
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
*,
|
|
19
|
-
*::before,
|
|
20
|
-
*::after {
|
|
21
|
-
padding: 0;
|
|
22
|
-
margin: 0;
|
|
23
|
-
box-sizing: border-box;
|
|
24
|
-
font-family: inherit;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
body {
|
|
28
|
-
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
|
29
|
-
height: 100vh;
|
|
30
|
-
width: 100vw;
|
|
31
|
-
overflow: hidden;
|
|
32
|
-
background-color: var(--surface);
|
|
33
|
-
color: var(--on-surface);
|
|
34
|
-
scrollbar-color: var(--on-surface__750) transparent;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
2
|
+
import $ from'fs/promises';import b from'path';import {fileURLToPath}from'url';import {upperFirst}from'@wavy/fn';var O=fileURLToPath(import.meta.url),D=b.dirname(O),l=D.split(b.sep).filter((t,r,e)=>r<e.length-2).join(b.sep);var S="__",F=1e3;function j(t,r=1){let e=t.startsWith("#")?t.slice(1):t;e.length===3&&(e=e.split("").map(i=>i+i).join(""));let o=parseInt(e.substring(0,2),16),n=parseInt(e.substring(2,4),16),s=parseInt(e.substring(4,6),16);return `rgba(${o}, ${n}, ${s}, ${r})`}function k(t){return [...Array.from(Array(9)).flatMap((r,e)=>{let o=e+1;return [`${o}00`,`${o}50`].map(n=>`${t}${S}${n}`)}),t]}function _(t,r){let o=`--${(n=>n.split("").map(s=>s===s.toUpperCase()&&s!==s.toLowerCase()?`-${s.toLowerCase()}`:s).join(""))(t)}`;return r?.wrap?`var(${o})`:o}function C(t,r,e){let o=Object.entries(r);return e?.excludeSeed||o.push(["seed",t]),o}function W(...t){let r=C(...t).map(([o])=>k(o).map(n=>{let{1:s}=n.split(S),i="";return s&&(i=`[${parseInt(s)/F}]`),`"${o}${i}": "${_(n,{wrap:true})}"`})).flat(),e="CssColors";return {filename:e+".ts",content:`
|
|
3
|
+
const ${e} = Object.freeze({
|
|
4
|
+
${r.join(`,
|
|
5
|
+
`)}
|
|
6
|
+
})
|
|
7
|
+
|
|
8
|
+
export default ${e}
|
|
9
|
+
`}}function H(t,r,e){let o=(s,i)=>{let f=r.light[s]||i,v=r.dark[s]||i;return k(s).map(a=>{let p=_(a),d=parseFloat(a.replace(/[^0\.0-9]/g,"")),m=d?d/F:1,u=j(f,m),c=j(v,m);return `${p}: light-dark(${u}, ${c})`})};return `
|
|
10
|
+
@import url("https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");
|
|
11
|
+
|
|
12
|
+
:root {
|
|
13
|
+
color-scheme: light dark;
|
|
14
|
+
|
|
15
|
+
${C(t,r.light).map(([s,i])=>o(s,i)).flat().join(";")}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
*,
|
|
19
|
+
*::before,
|
|
20
|
+
*::after {
|
|
21
|
+
padding: 0;
|
|
22
|
+
margin: 0;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
font-family: inherit;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
body {
|
|
28
|
+
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
|
|
29
|
+
height: 100vh;
|
|
30
|
+
width: 100vw;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
background-color: var(--surface);
|
|
33
|
+
color: var(--on-surface);
|
|
34
|
+
scrollbar-color: var(--on-surface__750) transparent;
|
|
35
|
+
scrollbar-gutter: stable;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#root {
|
|
39
|
+
--size: 100%;
|
|
40
|
+
height: var(--size);
|
|
41
|
+
width: var(--size);
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
${e?.()||""}
|
|
46
|
+
`.replace(/\s+/g," ").trim()}async function x(t){let r=await import('fs/promises'),e=await import('path'),{styles:o}=JSON.parse((await r.readFile(e.join(l,"package.json"))).toString("utf-8"));try{let n=e.join(l,"./external/themes"),s=e.join(l,"./src/css"),i=await r.readdir(n),f=i.map(g=>"--"+g.match(/.*?(?=\.)/)?.[0]),v=process.argv.splice(2),a=t?.flag||v.find(g=>f.includes(g));if(!a)return console.log(`Please select a theme using one of these flags: [${f.join(", ")}]`);let p=i.find(g=>g.includes(a.replace(/[^a-zA-Z]/g,"")));if(!p)return console.log(`Failed to map ${a} to a filename in [${i.join(", ")}].`);let d=await r.readFile(e.join(n,p)),{schemes:m,seed:u}=JSON.parse(d.toString("utf-8")),{dark:c,light:h}=m;h.themelessSurface="#FFF",h.themelessOnSurface="#000",c.themelessSurface="#000",c.themelessOnSurface="#FFF";let{filename:I,content:R}=W(u,h);t?.loadCssRefInLocalPackage&&await r.writeFile(e.join(s,"resources",I),R),await r.writeFile(e.join(l,o),H(u,{light:h,dark:c},t?.injectStyles));let T={green:"\u{1F7E9}",purple:"\u{1F7EA}"},y=a.toLowerCase().replace(/[^a-z]/g,"");console.log(`${T[y]||""} ${upperFirst(y)} theme loaded! \u2728`.trim());}catch(n){console.error(n);}}var A=(t,r)=>t.map(e=>b.join(r,e)),z=(t,r)=>{let e=t.filter(o=>!b.extname(o));return r?A(e,r):e},P=(t,r)=>{let e=t.filter(o=>o.includes(".css"));return r?A(e,r):e};async function J(t){console.log("\u{1F916} Preparing CSS file scan...");let e=await $.readdir(t),o=z(e,t),n=P(e,t);try{for(let s of o)e=await $.readdir(s),o.push(...z(e,s)),n.push(...P(e,s));}catch(s){throw console.log("Failed to resolve the items found: ",{folders:o,cssFiles:n,items:e}),s}console.log("\u26A1 CSS file scan complete!"),n.length===0?console.log("0 CSS files found...",`
|
|
47
|
+
Aborting bundler...`):(console.log("\u{1F916} Resolving file contents..."),n=await Promise.all(n.map(async s=>(await $.readFile(s)).toString("utf-8").trim())),console.log("\u26A1 File contents resolved!",`
|
|
47
48
|
\u{1F916} Preparing bundler...`),await x({injectStyles:()=>n.join(" ")}),console.log("\u2728 Successfully bundled css files! \u2728"));}J(b.join(l,"src"));
|