@tapuz/tpz 0.1.0 → 0.1.1

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/index.cjs.js CHANGED
@@ -1,15 +1,97 @@
1
- var a=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var d=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0})},m=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of f(e))!s.call(t,n)&&n!==r&&a(t,n,{get:()=>e[n],enumerable:!(o=z(e,n))||o.enumerable});return t};var c=t=>m(a({},"__esModule",{value:!0}),t);var v={};d(v,{DesignSystemProvider:()=>u});module.exports=c(v);var i=require("react"),l="https://tapuz.io/api/tokens",b=`
2
- .tpz-hd-fam { font-family: var(--tpz-heading-family, inherit); }
3
- .tpz-h, .tpz-h1 { font-size: var(--tpz-h1-size, 2rem); font-weight: var(--tpz-h1-weight, 700); font-family: var(--tpz-heading-family, inherit); }
4
- .tpz-h2 { font-size: var(--tpz-h2-size, 1.5rem); font-weight: var(--tpz-h2-weight, 700); font-family: var(--tpz-heading-family, inherit); }
5
- .tpz-h3 { font-size: var(--tpz-h3-size, 1.25rem); font-weight: var(--tpz-h3-weight, 600); font-family: var(--tpz-heading-family, inherit); }
6
- .tpz-h4 { font-size: var(--tpz-h4-size, 1.1rem); font-weight: var(--tpz-h4-weight, 600); font-family: var(--tpz-heading-family, inherit); }
7
- .tpz-h5 { font-size: var(--tpz-h5-size, 1rem); font-weight: var(--tpz-h5-weight, 600); font-family: var(--tpz-heading-family, inherit); }
8
- .tpz-bd, .tpz-bdy-fnt { font-family: var(--tpz-body-family, inherit); font-weight: var(--tpz-body-weight, 400); font-size: var(--tpz-body-size, 1rem); }
9
- .tpz-btn-sty, .tpz-btn-styl { border-radius: var(--tpz-button-border-radius, 4px); font-size: var(--tpz-button-font-size-base, 1rem); font-weight: var(--tpz-button-font-weight, 500); cursor: pointer; }
10
- .tpz-btn-shd { box-shadow: 0 var(--tpz-button-shadow-distance, 4px) var(--tpz-button-shadow-blur, 8px) var(--tpz-button-shadow-color, rgba(0,0,0,0.2)); }
11
- .tpz-frm-inp { background-color: var(--tpz-form-input-background, transparent); border-color: var(--tpz-form-input-border-color, currentColor); border-width: var(--tpz-form-input-border-width, 1px); border-style: var(--tpz-form-input-border-style, solid); border-radius: var(--tpz-form-input-border-radius, 4px); }
12
- `;function h(t,e){let r=document.getElementById(t);r||(r=document.createElement("style"),r.id=t,document.head.appendChild(r)),r.textContent=e}function p(t){let e=Object.entries(t).map(([r,o])=>` --tpz-${r}: ${o};`).join(`
13
- `);h("__tpz_tokens",`:root {
14
- ${e}
15
- }`)}function u({apiKey:t,children:e,apiUrl:r}){return(0,i.useEffect)(()=>{h("__tpz_base",b)},[]),(0,i.useEffect)(()=>{if(!t)return;let o=`__tpz_${t}`;try{let n=localStorage.getItem(o);n&&p(JSON.parse(n))}catch{}fetch(`${r||l}?key=${encodeURIComponent(t)}`).then(n=>n.json()).then(({tokens:n})=>{if(!(!n||typeof n!="object")){p(n);try{localStorage.setItem(o,JSON.stringify(n))}catch{}}}).catch(()=>{})},[t,r]),(0,i.createElement)(i.Fragment,null,e)}
1
+ var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var g=(t,o)=>{for(var r in o)s(t,r,{get:o[r],enumerable:!0})},h=(t,o,r,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of f(o))!b.call(t,a)&&a!==r&&s(t,a,{get:()=>o[a],enumerable:!(n=l(o,a))||n.enumerable});return t};var u=t=>h(s({},"__esModule",{value:!0}),t);var y={};g(y,{DesignSystemProvider:()=>w});module.exports=u(y);var i=require("react"),p="https://tapuz.io",m=`
2
+ /* Active palette: backgrounds */
3
+ .tpz-bg-clr { background-color: var(--tpz-background-color); }
4
+ .tpz-srf-clr { background-color: var(--tpz-surface-color); }
5
+
6
+ /* Active palette: colors */
7
+ .tpz-prm-clr { color: var(--tpz-primary-color); }
8
+ .tpz-sec-clr { color: var(--tpz-secondary-color); }
9
+ .tpz-acc-clr { color: var(--tpz-accent-color); }
10
+ .tpz-txt-clr { color: var(--tpz-text-color); }
11
+ .tpz-txt-sec-clr { color: var(--tpz-text-secondary-color); }
12
+ .tpz-brdr-clr { border-color: var(--tpz-border-color); }
13
+
14
+ /* Typography: compound */
15
+ .tpz-h-fmly { font-family: var(--tpz-heading-family); }
16
+ .tpz-h1 { font-size: var(--tpz-h1-size); font-weight: var(--tpz-h1-weight); font-family: var(--tpz-heading-family); }
17
+ .tpz-h2 { font-size: var(--tpz-h2-size); font-weight: var(--tpz-h2-weight); font-family: var(--tpz-heading-family); }
18
+ .tpz-h3 { font-size: var(--tpz-h3-size); font-weight: var(--tpz-h3-weight); font-family: var(--tpz-heading-family); }
19
+ .tpz-h4 { font-size: var(--tpz-h4-size); font-weight: var(--tpz-h4-weight); font-family: var(--tpz-heading-family); }
20
+ .tpz-h5 { font-size: var(--tpz-h5-size); font-weight: var(--tpz-h5-weight); font-family: var(--tpz-heading-family); }
21
+ .tpz-bdy-fnt { font-family: var(--tpz-body-font-family); font-weight: var(--tpz-body-font-weight); font-size: var(--tpz-body-font-size); }
22
+
23
+ /* Typography: individual */
24
+ .tpz-h1-sz { font-size: var(--tpz-h1-size); }
25
+ .tpz-h1-wgt { font-weight: var(--tpz-h1-weight); }
26
+ .tpz-h2-sz { font-size: var(--tpz-h2-size); }
27
+ .tpz-h2-wgt { font-weight: var(--tpz-h2-weight); }
28
+ .tpz-h3-sz { font-size: var(--tpz-h3-size); }
29
+ .tpz-h3-wgt { font-weight: var(--tpz-h3-weight); }
30
+ .tpz-h4-sz { font-size: var(--tpz-h4-size); }
31
+ .tpz-h4-wgt { font-weight: var(--tpz-h4-weight); }
32
+ .tpz-h5-sz { font-size: var(--tpz-h5-size); }
33
+ .tpz-h5-wgt { font-weight: var(--tpz-h5-weight); }
34
+ .tpz-bdy-fmly { font-family: var(--tpz-body-font-family); }
35
+ .tpz-bdy-wgt { font-weight: var(--tpz-body-font-weight); }
36
+ .tpz-bdy-sz { font-size: var(--tpz-body-font-size); }
37
+
38
+ /* Buttons: compound */
39
+ .tpz-btn-styl { border-radius: var(--tpz-button-border-radius); font-size: var(--tpz-button-font-size-base); font-weight: var(--tpz-button-font-weight); cursor: pointer; }
40
+ .tpz-btn-shd { box-shadow: 0 var(--tpz-button-shadow-distance) var(--tpz-button-shadow-blur) var(--tpz-button-shadow-color); }
41
+
42
+ /* Buttons: individual */
43
+ .tpz-btn-bdr-r { border-radius: var(--tpz-button-border-radius); }
44
+ .tpz-btn-fnt-sz-main { font-size: var(--tpz-button-font-size-main); }
45
+ .tpz-btn-fnt-sz-base { font-size: var(--tpz-button-font-size-base); }
46
+ .tpz-btn-fnt-sz-sub { font-size: var(--tpz-button-font-size-sub); }
47
+ .tpz-btn-fnt-wgt { font-weight: var(--tpz-button-font-weight); }
48
+ .tpz-btn-shd-dst { }
49
+ .tpz-btn-shd-blur { }
50
+ .tpz-btn-shd-clr { }
51
+ .tpz-btn-shd-opc { }
52
+
53
+ /* Forms: compound */
54
+ .tpz-frm-inpt { background-color: var(--tpz-form-input-background); border-color: var(--tpz-form-input-border-color); border-width: var(--tpz-form-input-border-width); border-style: var(--tpz-form-input-border-style); border-radius: var(--tpz-form-input-border-radius); }
55
+ .tpz-frm-inpt:hover { background-color: var(--tpz-form-input-background-hover); border-color: var(--tpz-form-input-border-color-hover); }
56
+ .tpz-frm-inpt:focus { background-color: var(--tpz-form-input-background-focus); border-color: var(--tpz-form-input-border-color-focus); outline: none; }
57
+ .tpz-frm-inpt:active { background-color: var(--tpz-form-input-background-active); border-color: var(--tpz-form-input-border-color-active); }
58
+
59
+ /* Forms: individual */
60
+ .tpz-inpt-bg { background-color: var(--tpz-form-input-background); }
61
+ .tpz-inpt-bg-opc { }
62
+ .tpz-inpt-brdr-clr { border-color: var(--tpz-form-input-border-color); }
63
+ .tpz-inpt-brdr-opc { }
64
+ .tpz-inpt-brdr-w { border-width: var(--tpz-form-input-border-width); }
65
+ .tpz-inpt-brdr-sty { border-style: var(--tpz-form-input-border-style); }
66
+ .tpz-inpt-bdr-r { border-radius: var(--tpz-form-input-border-radius); }
67
+ .tpz-inpt-slct-bg { background-color: var(--tpz-form-selection-background); }
68
+ .tpz-inpt-slct-clr { color: var(--tpz-form-selection-color); accent-color: var(--tpz-form-selection-color); }
69
+ .tpz-inpt-err { color: var(--tpz-form-validation-error); }
70
+ .tpz-inpt-ok { color: var(--tpz-form-validation-success); }
71
+ .tpz-frm-msg-info { color: var(--tpz-form-message-info); }
72
+ .tpz-frm-msg-warn { color: var(--tpz-form-message-warning); }
73
+
74
+ /* Selection: checkbox */
75
+ .tpz-ckbx { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border-radius: 3px; border: 2px solid var(--tpz-form-selection-color, #111827); cursor: pointer; flex-shrink: 0; position: relative; background-color: transparent; transition: background-color 150ms ease, border-color 150ms ease; vertical-align: middle; }
76
+ .tpz-ckbx:checked { background-color: var(--tpz-form-selection-color, #111827); border-color: var(--tpz-form-selection-color, #111827); }
77
+ .tpz-ckbx:checked::after { content: ""; position: absolute; top: 1px; left: 4px; width: 5px; height: 9px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg); }
78
+
79
+ /* Selection: toggle */
80
+ .tpz-tgl { position: relative; display: inline-block; width: 44px; height: 24px; border-radius: 999px; background-color: #d1d5db; cursor: pointer; transition: background-color 200ms ease; border: none; outline: none; flex-shrink: 0; vertical-align: middle; }
81
+ .tpz-tgl[aria-checked="true"], .tpz-tgl.tpz-tgl--on { background-color: var(--tpz-form-selection-color, #111827); }
82
+ .tpz-tgl::after { content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background-color: #fff; transition: transform 200ms ease; }
83
+ .tpz-tgl[aria-checked="true"]::after, .tpz-tgl.tpz-tgl--on::after { transform: translateX(20px); }
84
+
85
+ /* Selection: dropdown */
86
+ .tpz-slct { appearance: none; -webkit-appearance: none; background-color: var(--tpz-form-input-background, #fff); border-radius: var(--tpz-form-input-border-radius, 8px); border: var(--tpz-form-input-border-width, 2px) solid var(--tpz-form-input-border-color, #e5e7eb); padding: 0.5rem 2.25rem 0.5rem 0.75rem; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.6rem center; }
87
+ .tpz-slct:focus { outline: none; }
88
+
89
+ /* Messages: error */
90
+ .tpz-frm-msg-err { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 13px; background-color: #fef2f2; color: var(--tpz-form-validation-error, #ef4444); border-left: 4px solid var(--tpz-form-validation-error, #ef4444); border-radius: 8px; box-sizing: border-box; }
91
+
92
+ /* Messages: success */
93
+ .tpz-frm-msg-ok { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 13px; background-color: #f0fdf4; color: var(--tpz-form-validation-success, rgb(28, 156, 75)); border-left: 4px solid var(--tpz-form-validation-success, rgb(28, 156, 75)); border-radius: 8px; box-sizing: border-box; }
94
+ `;function z(t,o){let r=document.getElementById(t);r||(r=document.createElement("style"),r.id=t,document.head.appendChild(r)),r.textContent=o}function d(t){let o=Object.entries(t).map(([r,n])=>` --tpz-${r}: ${n};`).join(`
95
+ `);z("__tpz_tokens",`:root {
96
+ ${o}
97
+ }`)}function v(t,o){if(document.getElementById("__tpz_editor_script"))return;window.__tpz_api_key=o,window.__tpz_api_url=t||p,window.__tpz_config={...window.__tpz_config,apiKey:o,apiUrl:t||p};let r=document.createElement("script");r.id="__tpz_editor_script",r.src=`${t||p}/editor.js`,r.async=!0,document.head.appendChild(r)}function w({apiKey:t,children:o,apiUrl:r}){return(0,i.useEffect)(()=>{z("__tpz_base",m),typeof window<"u"&&new URLSearchParams(window.location.search).has("tapuz-edit")&&v(r,t)},[]),(0,i.useEffect)(()=>{if(!t)return;let n=`__tpz_${t}`;try{let e=localStorage.getItem(n);e&&d(JSON.parse(e))}catch{}fetch(`${r||p}/api/tokens?key=${encodeURIComponent(t)}`).then(e=>e.json()).then(({tokens:e})=>{if(!(!e||typeof e!="object")){d(e);try{localStorage.setItem(n,JSON.stringify(e))}catch{}}}).catch(()=>{});let a=new EventSource(`${r||p}/api/token-stream?key=${encodeURIComponent(t)}`);return a.onmessage=e=>{try{let{tokens:c}=JSON.parse(e.data);if(!c||typeof c!="object")return;d(c);try{localStorage.setItem(n,JSON.stringify(c))}catch{}}catch{}},()=>a.close()},[t,r]),(0,i.createElement)(i.Fragment,null,o)}
package/dist/index.esm.js CHANGED
@@ -1,15 +1,97 @@
1
- import{useEffect as i,Fragment as h,createElement as z}from"react";var f="https://tapuz.io/api/tokens",s=`
2
- .tpz-hd-fam { font-family: var(--tpz-heading-family, inherit); }
3
- .tpz-h, .tpz-h1 { font-size: var(--tpz-h1-size, 2rem); font-weight: var(--tpz-h1-weight, 700); font-family: var(--tpz-heading-family, inherit); }
4
- .tpz-h2 { font-size: var(--tpz-h2-size, 1.5rem); font-weight: var(--tpz-h2-weight, 700); font-family: var(--tpz-heading-family, inherit); }
5
- .tpz-h3 { font-size: var(--tpz-h3-size, 1.25rem); font-weight: var(--tpz-h3-weight, 600); font-family: var(--tpz-heading-family, inherit); }
6
- .tpz-h4 { font-size: var(--tpz-h4-size, 1.1rem); font-weight: var(--tpz-h4-weight, 600); font-family: var(--tpz-heading-family, inherit); }
7
- .tpz-h5 { font-size: var(--tpz-h5-size, 1rem); font-weight: var(--tpz-h5-weight, 600); font-family: var(--tpz-heading-family, inherit); }
8
- .tpz-bd, .tpz-bdy-fnt { font-family: var(--tpz-body-family, inherit); font-weight: var(--tpz-body-weight, 400); font-size: var(--tpz-body-size, 1rem); }
9
- .tpz-btn-sty, .tpz-btn-styl { border-radius: var(--tpz-button-border-radius, 4px); font-size: var(--tpz-button-font-size-base, 1rem); font-weight: var(--tpz-button-font-weight, 500); cursor: pointer; }
10
- .tpz-btn-shd { box-shadow: 0 var(--tpz-button-shadow-distance, 4px) var(--tpz-button-shadow-blur, 8px) var(--tpz-button-shadow-color, rgba(0,0,0,0.2)); }
11
- .tpz-frm-inp { background-color: var(--tpz-form-input-background, transparent); border-color: var(--tpz-form-input-border-color, currentColor); border-width: var(--tpz-form-input-border-width, 1px); border-style: var(--tpz-form-input-border-style, solid); border-radius: var(--tpz-form-input-border-radius, 4px); }
12
- `;function p(e,n){let t=document.getElementById(e);t||(t=document.createElement("style"),t.id=e,document.head.appendChild(t)),t.textContent=n}function a(e){let n=Object.entries(e).map(([t,o])=>` --tpz-${t}: ${o};`).join(`
13
- `);p("__tpz_tokens",`:root {
14
- ${n}
15
- }`)}function m({apiKey:e,children:n,apiUrl:t}){return i(()=>{p("__tpz_base",s)},[]),i(()=>{if(!e)return;let o=`__tpz_${e}`;try{let r=localStorage.getItem(o);r&&a(JSON.parse(r))}catch{}fetch(`${t||f}?key=${encodeURIComponent(e)}`).then(r=>r.json()).then(({tokens:r})=>{if(!(!r||typeof r!="object")){a(r);try{localStorage.setItem(o,JSON.stringify(r))}catch{}}}).catch(()=>{})},[e,t]),z(h,null,n)}export{m as DesignSystemProvider};
1
+ import{useEffect as s,Fragment as z,createElement as l}from"react";var a="https://tapuz.io",f=`
2
+ /* Active palette: backgrounds */
3
+ .tpz-bg-clr { background-color: var(--tpz-background-color); }
4
+ .tpz-srf-clr { background-color: var(--tpz-surface-color); }
5
+
6
+ /* Active palette: colors */
7
+ .tpz-prm-clr { color: var(--tpz-primary-color); }
8
+ .tpz-sec-clr { color: var(--tpz-secondary-color); }
9
+ .tpz-acc-clr { color: var(--tpz-accent-color); }
10
+ .tpz-txt-clr { color: var(--tpz-text-color); }
11
+ .tpz-txt-sec-clr { color: var(--tpz-text-secondary-color); }
12
+ .tpz-brdr-clr { border-color: var(--tpz-border-color); }
13
+
14
+ /* Typography: compound */
15
+ .tpz-h-fmly { font-family: var(--tpz-heading-family); }
16
+ .tpz-h1 { font-size: var(--tpz-h1-size); font-weight: var(--tpz-h1-weight); font-family: var(--tpz-heading-family); }
17
+ .tpz-h2 { font-size: var(--tpz-h2-size); font-weight: var(--tpz-h2-weight); font-family: var(--tpz-heading-family); }
18
+ .tpz-h3 { font-size: var(--tpz-h3-size); font-weight: var(--tpz-h3-weight); font-family: var(--tpz-heading-family); }
19
+ .tpz-h4 { font-size: var(--tpz-h4-size); font-weight: var(--tpz-h4-weight); font-family: var(--tpz-heading-family); }
20
+ .tpz-h5 { font-size: var(--tpz-h5-size); font-weight: var(--tpz-h5-weight); font-family: var(--tpz-heading-family); }
21
+ .tpz-bdy-fnt { font-family: var(--tpz-body-font-family); font-weight: var(--tpz-body-font-weight); font-size: var(--tpz-body-font-size); }
22
+
23
+ /* Typography: individual */
24
+ .tpz-h1-sz { font-size: var(--tpz-h1-size); }
25
+ .tpz-h1-wgt { font-weight: var(--tpz-h1-weight); }
26
+ .tpz-h2-sz { font-size: var(--tpz-h2-size); }
27
+ .tpz-h2-wgt { font-weight: var(--tpz-h2-weight); }
28
+ .tpz-h3-sz { font-size: var(--tpz-h3-size); }
29
+ .tpz-h3-wgt { font-weight: var(--tpz-h3-weight); }
30
+ .tpz-h4-sz { font-size: var(--tpz-h4-size); }
31
+ .tpz-h4-wgt { font-weight: var(--tpz-h4-weight); }
32
+ .tpz-h5-sz { font-size: var(--tpz-h5-size); }
33
+ .tpz-h5-wgt { font-weight: var(--tpz-h5-weight); }
34
+ .tpz-bdy-fmly { font-family: var(--tpz-body-font-family); }
35
+ .tpz-bdy-wgt { font-weight: var(--tpz-body-font-weight); }
36
+ .tpz-bdy-sz { font-size: var(--tpz-body-font-size); }
37
+
38
+ /* Buttons: compound */
39
+ .tpz-btn-styl { border-radius: var(--tpz-button-border-radius); font-size: var(--tpz-button-font-size-base); font-weight: var(--tpz-button-font-weight); cursor: pointer; }
40
+ .tpz-btn-shd { box-shadow: 0 var(--tpz-button-shadow-distance) var(--tpz-button-shadow-blur) var(--tpz-button-shadow-color); }
41
+
42
+ /* Buttons: individual */
43
+ .tpz-btn-bdr-r { border-radius: var(--tpz-button-border-radius); }
44
+ .tpz-btn-fnt-sz-main { font-size: var(--tpz-button-font-size-main); }
45
+ .tpz-btn-fnt-sz-base { font-size: var(--tpz-button-font-size-base); }
46
+ .tpz-btn-fnt-sz-sub { font-size: var(--tpz-button-font-size-sub); }
47
+ .tpz-btn-fnt-wgt { font-weight: var(--tpz-button-font-weight); }
48
+ .tpz-btn-shd-dst { }
49
+ .tpz-btn-shd-blur { }
50
+ .tpz-btn-shd-clr { }
51
+ .tpz-btn-shd-opc { }
52
+
53
+ /* Forms: compound */
54
+ .tpz-frm-inpt { background-color: var(--tpz-form-input-background); border-color: var(--tpz-form-input-border-color); border-width: var(--tpz-form-input-border-width); border-style: var(--tpz-form-input-border-style); border-radius: var(--tpz-form-input-border-radius); }
55
+ .tpz-frm-inpt:hover { background-color: var(--tpz-form-input-background-hover); border-color: var(--tpz-form-input-border-color-hover); }
56
+ .tpz-frm-inpt:focus { background-color: var(--tpz-form-input-background-focus); border-color: var(--tpz-form-input-border-color-focus); outline: none; }
57
+ .tpz-frm-inpt:active { background-color: var(--tpz-form-input-background-active); border-color: var(--tpz-form-input-border-color-active); }
58
+
59
+ /* Forms: individual */
60
+ .tpz-inpt-bg { background-color: var(--tpz-form-input-background); }
61
+ .tpz-inpt-bg-opc { }
62
+ .tpz-inpt-brdr-clr { border-color: var(--tpz-form-input-border-color); }
63
+ .tpz-inpt-brdr-opc { }
64
+ .tpz-inpt-brdr-w { border-width: var(--tpz-form-input-border-width); }
65
+ .tpz-inpt-brdr-sty { border-style: var(--tpz-form-input-border-style); }
66
+ .tpz-inpt-bdr-r { border-radius: var(--tpz-form-input-border-radius); }
67
+ .tpz-inpt-slct-bg { background-color: var(--tpz-form-selection-background); }
68
+ .tpz-inpt-slct-clr { color: var(--tpz-form-selection-color); accent-color: var(--tpz-form-selection-color); }
69
+ .tpz-inpt-err { color: var(--tpz-form-validation-error); }
70
+ .tpz-inpt-ok { color: var(--tpz-form-validation-success); }
71
+ .tpz-frm-msg-info { color: var(--tpz-form-message-info); }
72
+ .tpz-frm-msg-warn { color: var(--tpz-form-message-warning); }
73
+
74
+ /* Selection: checkbox */
75
+ .tpz-ckbx { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border-radius: 3px; border: 2px solid var(--tpz-form-selection-color, #111827); cursor: pointer; flex-shrink: 0; position: relative; background-color: transparent; transition: background-color 150ms ease, border-color 150ms ease; vertical-align: middle; }
76
+ .tpz-ckbx:checked { background-color: var(--tpz-form-selection-color, #111827); border-color: var(--tpz-form-selection-color, #111827); }
77
+ .tpz-ckbx:checked::after { content: ""; position: absolute; top: 1px; left: 4px; width: 5px; height: 9px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg); }
78
+
79
+ /* Selection: toggle */
80
+ .tpz-tgl { position: relative; display: inline-block; width: 44px; height: 24px; border-radius: 999px; background-color: #d1d5db; cursor: pointer; transition: background-color 200ms ease; border: none; outline: none; flex-shrink: 0; vertical-align: middle; }
81
+ .tpz-tgl[aria-checked="true"], .tpz-tgl.tpz-tgl--on { background-color: var(--tpz-form-selection-color, #111827); }
82
+ .tpz-tgl::after { content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background-color: #fff; transition: transform 200ms ease; }
83
+ .tpz-tgl[aria-checked="true"]::after, .tpz-tgl.tpz-tgl--on::after { transform: translateX(20px); }
84
+
85
+ /* Selection: dropdown */
86
+ .tpz-slct { appearance: none; -webkit-appearance: none; background-color: var(--tpz-form-input-background, #fff); border-radius: var(--tpz-form-input-border-radius, 8px); border: var(--tpz-form-input-border-width, 2px) solid var(--tpz-form-input-border-color, #e5e7eb); padding: 0.5rem 2.25rem 0.5rem 0.75rem; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.6rem center; }
87
+ .tpz-slct:focus { outline: none; }
88
+
89
+ /* Messages: error */
90
+ .tpz-frm-msg-err { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 13px; background-color: #fef2f2; color: var(--tpz-form-validation-error, #ef4444); border-left: 4px solid var(--tpz-form-validation-error, #ef4444); border-radius: 8px; box-sizing: border-box; }
91
+
92
+ /* Messages: success */
93
+ .tpz-frm-msg-ok { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 13px; background-color: #f0fdf4; color: var(--tpz-form-validation-success, rgb(28, 156, 75)); border-left: 4px solid var(--tpz-form-validation-success, rgb(28, 156, 75)); border-radius: 8px; box-sizing: border-box; }
94
+ `;function d(r,e){let t=document.getElementById(r);t||(t=document.createElement("style"),t.id=r,document.head.appendChild(t)),t.textContent=e}function p(r){let e=Object.entries(r).map(([t,n])=>` --tpz-${t}: ${n};`).join(`
95
+ `);d("__tpz_tokens",`:root {
96
+ ${e}
97
+ }`)}function b(r,e){if(document.getElementById("__tpz_editor_script"))return;window.__tpz_api_key=e,window.__tpz_api_url=r||a,window.__tpz_config={...window.__tpz_config,apiKey:e,apiUrl:r||a};let t=document.createElement("script");t.id="__tpz_editor_script",t.src=`${r||a}/editor.js`,t.async=!0,document.head.appendChild(t)}function h({apiKey:r,children:e,apiUrl:t}){return s(()=>{d("__tpz_base",f),typeof window<"u"&&new URLSearchParams(window.location.search).has("tapuz-edit")&&b(t,r)},[]),s(()=>{if(!r)return;let n=`__tpz_${r}`;try{let o=localStorage.getItem(n);o&&p(JSON.parse(o))}catch{}fetch(`${t||a}/api/tokens?key=${encodeURIComponent(r)}`).then(o=>o.json()).then(({tokens:o})=>{if(!(!o||typeof o!="object")){p(o);try{localStorage.setItem(n,JSON.stringify(o))}catch{}}}).catch(()=>{});let c=new EventSource(`${t||a}/api/token-stream?key=${encodeURIComponent(r)}`);return c.onmessage=o=>{try{let{tokens:i}=JSON.parse(o.data);if(!i||typeof i!="object")return;p(i);try{localStorage.setItem(n,JSON.stringify(i))}catch{}}catch{}},()=>c.close()},[r,t]),l(z,null,e)}export{h as DesignSystemProvider};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapuz/tpz",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Token-powered design system provider for React",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
@@ -16,7 +16,8 @@
16
16
  ],
17
17
  "scripts": {
18
18
  "build": "node build.js",
19
- "dev": "node build.js --watch"
19
+ "dev": "node build.js --watch",
20
+ "postinstall": "node build.js"
20
21
  },
21
22
  "peerDependencies": {
22
23
  "react": ">=17"