syntra-ui 0.1.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.
- package/README.md +73 -0
- package/dist/components/button/Button.d.ts +19 -0
- package/dist/components/button/button.styles.d.ts +9 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/input/Input.d.ts +18 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/input.styles.d.ts +8 -0
- package/dist/components/spinner/Spinner.d.ts +13 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/defaults/borders.d.ts +2 -0
- package/dist/defaults/colors.d.ts +3 -0
- package/dist/defaults/shadows.d.ts +3 -0
- package/dist/defaults/spacing.d.ts +2 -0
- package/dist/defaults/theme.d.ts +3 -0
- package/dist/defaults/transitions.d.ts +2 -0
- package/dist/defaults/typography.d.ts +2 -0
- package/dist/hooks/useSyntra.d.ts +2 -0
- package/dist/hooks/useSyntraMode.d.ts +2 -0
- package/dist/index.d.ts +15 -0
- package/dist/primitives/Box.d.ts +10 -0
- package/dist/primitives/Divider.d.ts +14 -0
- package/dist/primitives/Flex.d.ts +18 -0
- package/dist/primitives/Grid.d.ts +19 -0
- package/dist/primitives/Heading.d.ts +15 -0
- package/dist/primitives/Stack.d.ts +15 -0
- package/dist/primitives/Text.d.ts +19 -0
- package/dist/primitives/VisuallyHidden.d.ts +9 -0
- package/dist/primitives/index.d.ts +19 -0
- package/dist/primitives/polymorphic.d.ts +13 -0
- package/dist/primitives/style-props.d.ts +75 -0
- package/dist/provider/SyntraContext.d.ts +2 -0
- package/dist/provider/SyntraProvider.d.ts +10 -0
- package/dist/provider/cssVars.d.ts +6 -0
- package/dist/syntra-ui.cjs +135 -0
- package/dist/syntra-ui.mjs +1541 -0
- package/dist/types.d.ts +176 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/colorScale.d.ts +10 -0
- package/dist/utils/createSyntraTheme.d.ts +2 -0
- package/dist/utils/deepMerge.d.ts +1 -0
- package/dist/utils/use-styles.d.ts +1 -0
- package/dist/utils/use-syntra-context.d.ts +1 -0
- package/dist/vite.svg +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("react/jsx-runtime"),p=require("react"),P=p.createContext(null),L={primary:{50:"#f0f5ff",100:"#dce8ff",200:"#b4cdff",300:"#84adff",400:"#4d8bff",500:"#007AFF",600:"#0064d6",700:"#004fad",800:"#003c85",900:"#002a5e",950:"#001d42"},gray:{25:"#fcfcfd",50:"#f8f8fa",100:"#f2f2f7",200:"#e5e5ea",300:"#d1d1d6",400:"#aeaeb2",500:"#8e8e93",600:"#636366",700:"#48484a",800:"#3a3a3c",900:"#2c2c2e",950:"#1c1c1e"},red:{50:"#fff5f5",100:"#ffe3e3",200:"#ffc9c9",300:"#ffa8a8",400:"#ff7e7e",500:"#FF3B30",600:"#d63028",700:"#ad2620",800:"#851d19",900:"#5e1412",950:"#420e0d"},orange:{50:"#fff8f0",100:"#ffecdb",200:"#ffd5b0",300:"#ffba7d",400:"#ff9d4d",500:"#FF9500",600:"#d67d00",700:"#ad6500",800:"#854d00",900:"#5e3700",950:"#422700"},yellow:{50:"#fffcf0",100:"#fff7db",200:"#ffecb0",300:"#ffe07d",400:"#ffd44d",500:"#FFCC00",600:"#d6ab00",700:"#ad8a00",800:"#856a00",900:"#5e4b00",950:"#423500"},green:{50:"#f0faf2",100:"#dbf5e0",200:"#b0e8bc",300:"#7dd995",400:"#4dca6f",500:"#34C759",600:"#2ba74a",700:"#23873c",800:"#1b682e",900:"#134a21",950:"#0d3417"},teal:{50:"#f0fcfa",100:"#dbf8f3",200:"#b0f0e4",300:"#7de6d2",400:"#4ddbbf",500:"#5AC8FA",600:"#4ba8d2",700:"#3c88aa",800:"#2e6983",900:"#204b5d",950:"#163542"},blue:{50:"#f0f5ff",100:"#dce8ff",200:"#b4cdff",300:"#84adff",400:"#4d8bff",500:"#007AFF",600:"#0064d6",700:"#004fad",800:"#003c85",900:"#002a5e",950:"#001d42"},indigo:{50:"#f2f0ff",100:"#e3dbff",200:"#c4b0ff",300:"#a27dff",400:"#814dff",500:"#5856D6",600:"#4944b3",700:"#3b3791",800:"#2d2a70",900:"#201e50",950:"#161538"},purple:{50:"#f8f0ff",100:"#efdbff",200:"#dcb0ff",300:"#c67dff",400:"#b04dff",500:"#AF52DE",600:"#9244b9",700:"#763796",800:"#5b2a73",900:"#401e52",950:"#2d1539"},pink:{50:"#fff0f5",100:"#ffdbea",200:"#ffb0d1",300:"#ff7db4",400:"#ff4d98",500:"#FF2D55",600:"#d62647",700:"#ad1f39",800:"#85182c",900:"#5e1120",950:"#420c16"},background:{default:"#ffffff",emphasis:"#f2f2f7",muted:"#f8f8fa",subtle:"#fcfcfd"},foreground:{default:"#1c1c1e",emphasis:"#000000",muted:"#636366",subtle:"#8e8e93"},border:{default:"#d1d1d6",emphasis:"#aeaeb2",muted:"#e5e5ea",subtle:"#f2f2f7"}},I={primary:{50:"#001a3d",100:"#002455",200:"#003580",300:"#0050b3",400:"#0068de",500:"#0A84FF",600:"#3d9eff",700:"#6db5ff",800:"#9dccff",900:"#cce3ff",950:"#e8f2ff"},gray:{25:"#1c1c1e",50:"#2c2c2e",100:"#3a3a3c",200:"#48484a",300:"#636366",400:"#8e8e93",500:"#aeaeb2",600:"#d1d1d6",700:"#e5e5ea",800:"#f2f2f7",900:"#f8f8fa",950:"#fcfcfd"},red:{50:"#3d0a08",100:"#551210",200:"#801f1b",300:"#b33228",400:"#de4a3d",500:"#FF453A",600:"#ff6b63",700:"#ff918b",800:"#ffb8b4",900:"#ffdedd",950:"#fff0ef"},orange:{50:"#3d2400",100:"#553300",200:"#804d00",300:"#b36d00",400:"#de8d00",500:"#FF9F0A",600:"#ffb43d",700:"#ffc96d",800:"#ffdd9d",900:"#fff0cc",950:"#fff8e8"},yellow:{50:"#3d3200",100:"#554500",200:"#806800",300:"#b39200",400:"#deb800",500:"#FFD60A",600:"#ffdf3d",700:"#ffe86d",800:"#fff09d",900:"#fff7cc",950:"#fffbe8"},green:{50:"#0a3015",100:"#10431e",200:"#1a6630",300:"#258f44",400:"#2fb85a",500:"#30D158",600:"#5ddc7c",700:"#89e6a0",800:"#b5f0c3",900:"#e0f9e6",950:"#f0fcf3"},indigo:{50:"#141238",100:"#1d1a50",200:"#2c2980",300:"#3f3cb3",400:"#5351de",500:"#5E5CE6",600:"#807feb",700:"#a1a0f0",800:"#c2c1f5",900:"#e2e2fa",950:"#f2f2fd"},purple:{50:"#2a1239",100:"#3b1a50",200:"#582880",300:"#7b39b3",400:"#9d4bde",500:"#BF5AF2",600:"#cf7ef5",700:"#dda1f7",800:"#ecc4fa",900:"#f7e5fd",950:"#fbf2fe"},pink:{50:"#3d0a1c",100:"#551028",200:"#801a3e",300:"#b32857",400:"#de3672",500:"#FF375F",600:"#ff6282",700:"#ff8da5",800:"#ffb8c7",900:"#ffe3ea",950:"#fff2f5"},teal:{50:"#0a2e3d",100:"#104055",200:"#1a6180",300:"#2588b3",400:"#2fb0de",500:"#64D2FF",600:"#85dcff",700:"#a5e5ff",800:"#c5eeff",900:"#e5f7ff",950:"#f2fbff"},blue:{50:"#001a3d",100:"#002455",200:"#003580",300:"#0050b3",400:"#0068de",500:"#0A84FF",600:"#3d9eff",700:"#6db5ff",800:"#9dccff",900:"#cce3ff",950:"#e8f2ff"},background:{default:"#000000",emphasis:"#1c1c1e",muted:"#2c2c2e",subtle:"#3a3a3c"},foreground:{default:"#f2f2f7",emphasis:"#ffffff",muted:"#aeaeb2",subtle:"#8e8e93"},border:{default:"#48484a",emphasis:"#636366",muted:"#3a3a3c",subtle:"#2c2c2e"}},D={fontFamily:{sans:'-apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", Helvetica, Arial, sans-serif',mono:'"SF Mono", SFMono-Regular, ui-monospace, Menlo, Monaco, "Cascadia Code", "Courier New", monospace'},fontSize:{"2xs":"11px",xs:"12px",sm:"13px",base:"15px",md:"17px",lg:"20px",xl:"24px","2xl":"28px","3xl":"34px","4xl":"48px"},fontWeight:{regular:400,medium:500,semibold:600,bold:700},lineHeight:{tight:"1.2",normal:"1.47",relaxed:"1.6"},letterSpacing:{tight:"-0.02em",normal:"0em",wide:"0.02em"}},G={px:"1px",0:"0px",.5:"2px",1:"4px",1.5:"6px",2:"8px",2.5:"10px",3:"12px",4:"16px",5:"20px",6:"24px",8:"32px",10:"40px",12:"48px",16:"64px",20:"80px",24:"96px"},V={none:"0px",xs:"4px",sm:"6px",md:"8px",lg:"12px",xl:"16px","2xl":"20px",full:"9999px"},ft={none:"none",xs:"0 1px 2px rgba(0, 0, 0, 0.04)",sm:"0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04)",md:"0 4px 6px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.04)",lg:"0 10px 15px rgba(0, 0, 0, 0.08), 0 4px 6px rgba(0, 0, 0, 0.04)",xl:"0 20px 25px rgba(0, 0, 0, 0.10), 0 8px 10px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px rgba(0, 0, 0, 0.15)"},ct={none:"none",xs:"0 1px 2px rgba(0, 0, 0, 0.20)",sm:"0 1px 3px rgba(0, 0, 0, 0.30), 0 1px 2px rgba(0, 0, 0, 0.20)",md:"0 4px 6px rgba(0, 0, 0, 0.28), 0 2px 4px rgba(0, 0, 0, 0.20)",lg:"0 10px 15px rgba(0, 0, 0, 0.30), 0 4px 6px rgba(0, 0, 0, 0.20)",xl:"0 20px 25px rgba(0, 0, 0, 0.35), 0 8px 10px rgba(0, 0, 0, 0.20)","2xl":"0 25px 50px rgba(0, 0, 0, 0.45)"},K={duration:{fast:"100ms",normal:"200ms",slow:"350ms",slower:"500ms"},easing:{default:"cubic-bezier(0.25, 0.1, 0.25, 1)",in:"cubic-bezier(0.42, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.58, 1)",inOut:"cubic-bezier(0.42, 0, 0.58, 1)",spring:"cubic-bezier(0.175, 0.885, 0.32, 1.275)"}},Y={colors:L,typography:D,spacing:G,borderRadius:V,shadows:ft,transitions:K},U={colors:I,typography:D,spacing:G,borderRadius:V,shadows:ct,transitions:K};function ut(t){const e=t.replace("#","");if(/^[0-9a-fA-F]{3}$/.test(e))return e[0]+e[0]+e[1]+e[1]+e[2]+e[2];if(/^[0-9a-fA-F]{6}$/.test(e))return e;throw new Error(`[syntra] Invalid hex color: "${t}"`)}function bt(t){const e=ut(t),n=parseInt(e.slice(0,2),16)/255,r=parseInt(e.slice(2,4),16)/255,a=parseInt(e.slice(4,6),16)/255,o=Math.max(n,r,a),i=Math.min(n,r,a),l=(o+i)/2;if(o===i)return{h:0,s:0,l};const s=o-i,d=l>.5?s/(2-o-i):s/(o+i);let c=0;return o===n?c=((r-a)/s+(r<a?6:0))/6:o===r?c=((a-n)/s+2)/6:c=((n-r)/s+4)/6,{h:c*360,s:d,l}}function gt(t){const{h:e,s:n,l:r}=t;if(n===0)return`#${Math.round(r*255).toString(16).padStart(2,"0").repeat(3)}`;const a=(u,f,y)=>{const m=y<0?y+1:y>1?y-1:y;return m<1/6?u+(f-u)*6*m:m<1/2?f:m<2/3?u+(f-u)*(2/3-m)*6:u},o=r<.5?r*(1+n):r+n-r*n,i=2*r-o,l=e/360,s=Math.round(a(i,o,l+1/3)*255),d=Math.round(a(i,o,l)*255),c=Math.round(a(i,o,l-1/3)*255);return`#${s.toString(16).padStart(2,"0")}${d.toString(16).padStart(2,"0")}${c.toString(16).padStart(2,"0")}`}const yt={50:.97,100:.94,200:.86,300:.76,400:.64,500:.5,600:.42,700:.35,800:.27,900:.2,950:.14};function q(t){const e=bt(t),n={};for(const[r,a]of Object.entries(yt)){const o={...e};o.l=a,a>.9?o.s=e.s*.6:(a>.8||a<.2)&&(o.s=e.s*.8),n[r]=gt(o)}return n}function A(t){return!!(t&&typeof t=="object"&&!Array.isArray(t))}function H(t,...e){const n={...t};for(const r of e)if(A(r))for(const a of Object.keys(r)){const o=r[a];o!==void 0&&(A(o)&&A(n[a])?n[a]=H(n[a],o):n[a]=o)}return n}const pt=[50,100,200,300,400,500,600,700,800,900,950];function W(t,e){if(typeof t=="string")return q(t);const n={...e};for(const r of pt)t[r]!==void 0&&(n[r]=t[r]);return n}const mt=["primary","gray","red","orange","yellow","green","teal","blue","indigo","purple","pink"];function xt(t,e){if(!t)return e.colors;const n={...e.colors};for(const r of mt){const a=t[r];if(a!==void 0)if(r==="gray"){const o=W(a,e.colors.gray);n.gray={...o,25:e.colors.gray[25]}}else n[r]=W(a,e.colors[r])}return t.background&&(n.background={...n.background,...t.background}),t.foreground&&(n.foreground={...n.foreground,...t.foreground}),t.border&&(n.border={...n.border,...t.border}),n}function M(t,e="light"){const n=e==="light"?Y:U;if(!t)return n;const r=xt(t.colors,n),{colors:a,...o}=t,i=H(n,o);return i.colors=r,i}function $(t,e,n){for(const[r,a]of Object.entries(t)){const o=`${e}-${r}`;typeof a=="string"?n[o]=a:typeof a=="number"?n[o]=String(a):a&&typeof a=="object"&&!Array.isArray(a)&&$(a,o,n)}}function ht(t,e="syntra"){const n={};return $(t.colors,`--${e}-color`,n),$(t.typography,`--${e}-font`,n),$(t.spacing,`--${e}-space`,n),$(t.borderRadius,`--${e}-radius`,n),$(t.shadows,`--${e}-shadow`,n),$(t.transitions,`--${e}-transition`,n),n}function vt(t,e="syntra",n=document.documentElement){const r=ht(t,e);for(const[a,o]of Object.entries(r))n.style.setProperty(a,o)}function _t(t="syntra",e=document.documentElement){const n=e.style,r=[];for(let a=0;a<n.length;a++){const o=n[a];o.startsWith(`--${t}-`)&&r.push(o)}for(const a of r)n.removeProperty(a)}function St(){const[t,e]=p.useState(()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light");return p.useEffect(()=>{const n=window.matchMedia("(prefers-color-scheme: dark)"),r=a=>{e(a.matches?"dark":"light")};return n.addEventListener("change",r),()=>n.removeEventListener("change",r)},[]),t}function wt({theme:t,darkTheme:e,mode:n="system",cssVarPrefix:r="syntra",children:a}){const[o,i]=p.useState(n),l=St(),s=p.useRef(null),d=o==="system"?l:o,c=p.useMemo(()=>M(t,"light"),[t]),u=p.useMemo(()=>M(e??t,"dark"),[e,t]),f=d==="dark"?u:c;p.useLayoutEffect(()=>{const b=s.current;b&&vt(f,r,b)},[f,r]),p.useEffect(()=>{const b=s.current;return()=>{b&&_t(r,b)}},[r]);const y=p.useCallback(b=>{i(b)},[]),m=p.useMemo(()=>({theme:f,mode:o,resolvedMode:d,setMode:y,cssVarPrefix:r}),[f,o,d,y,r]);return x.jsx(P.Provider,{value:m,children:x.jsx("div",{ref:s,"data-syntra-root":"","data-syntra-mode":d,style:{display:"contents"},children:a})})}function X(){const t=p.useContext(P);if(!t)throw new Error("useSyntra must be used within a <SyntraProvider>");return t}function kt(){const{resolvedMode:t,setMode:e}=X();return[t,e]}const Nt=new Set(["px","0","0.5","1","1.5","2","2.5","3","4","5","6","8","10","12","16","20","24"]),Ct=new Set(["none","xs","sm","md","lg","xl","2xl","full"]),zt=new Set(["none","xs","sm","md","lg","xl","2xl"]),Ft=new Set(["2xs","xs","sm","base","md","lg","xl","2xl","3xl","4xl"]),$t=new Set(["regular","medium","semibold","bold"]),jt=new Set(["tight","normal","relaxed"]),Tt=new Set(["tight","normal","wide"]);function h(t,e){const n=String(t);return Nt.has(n)?`var(--${e}-space-${n})`:typeof t=="number"?`${t}px`:t}function Et(t,e){return Ct.has(t)?`var(--${e}-radius-${t})`:t}function At(t,e){return zt.has(t)?`var(--${e}-shadow-${t})`:t}function w(t){return typeof t=="number"?`${t}px`:t}function Z(t,e){return Ft.has(t)?`var(--${e}-font-fontSize-${t})`:t}function J(t,e){return $t.has(t)?`var(--${e}-font-fontWeight-${t})`:t}function Mt(t,e){return jt.has(t)?`var(--${e}-font-lineHeight-${t})`:t}function Q(t,e){return Tt.has(t)?`var(--${e}-font-letterSpacing-${t})`:t}function N(t,e="syntra"){const n={};return t.p!=null&&(n.padding=h(t.p,e)),t.px!=null&&(n.paddingLeft=h(t.px,e),n.paddingRight=h(t.px,e)),t.py!=null&&(n.paddingTop=h(t.py,e),n.paddingBottom=h(t.py,e)),t.pt!=null&&(n.paddingTop=h(t.pt,e)),t.pr!=null&&(n.paddingRight=h(t.pr,e)),t.pb!=null&&(n.paddingBottom=h(t.pb,e)),t.pl!=null&&(n.paddingLeft=h(t.pl,e)),t.m!=null&&(n.margin=h(t.m,e)),t.mx!=null&&(n.marginLeft=h(t.mx,e),n.marginRight=h(t.mx,e)),t.my!=null&&(n.marginTop=h(t.my,e),n.marginBottom=h(t.my,e)),t.mt!=null&&(n.marginTop=h(t.mt,e)),t.mr!=null&&(n.marginRight=h(t.mr,e)),t.mb!=null&&(n.marginBottom=h(t.mb,e)),t.ml!=null&&(n.marginLeft=h(t.ml,e)),t.gap!=null&&(n.gap=h(t.gap,e)),t.gapX!=null&&(n.columnGap=h(t.gapX,e)),t.gapY!=null&&(n.rowGap=h(t.gapY,e)),t.w!=null&&(n.width=w(t.w)),t.h!=null&&(n.height=w(t.h)),t.minW!=null&&(n.minWidth=w(t.minW)),t.minH!=null&&(n.minHeight=w(t.minH)),t.maxW!=null&&(n.maxWidth=w(t.maxW)),t.maxH!=null&&(n.maxHeight=w(t.maxH)),t.display!=null&&(n.display=t.display),t.position!=null&&(n.position=t.position),t.overflow!=null&&(n.overflow=t.overflow),t.inset!=null&&(n.inset=w(t.inset)),t.top!=null&&(n.top=w(t.top)),t.right!=null&&(n.right=w(t.right)),t.bottom!=null&&(n.bottom=w(t.bottom)),t.left!=null&&(n.left=w(t.left)),t.bg!=null&&(n.background=t.bg),t.color!=null&&(n.color=t.color),t.opacity!=null&&(n.opacity=t.opacity),t.radius!=null&&(n.borderRadius=Et(t.radius,e)),t.shadow!=null&&(n.boxShadow=At(t.shadow,e)),t.border!=null&&(n.border=t.border),t.borderColor!=null&&(n.borderColor=t.borderColor),t.borderWidth!=null&&(n.borderWidth=w(t.borderWidth)),t.flex!=null&&(n.flex=t.flex),t.flexGrow!=null&&(n.flexGrow=t.flexGrow),t.flexShrink!=null&&(n.flexShrink=t.flexShrink),t.flexBasis!=null&&(n.flexBasis=typeof t.flexBasis=="number"?`${t.flexBasis}px`:t.flexBasis),t.alignSelf!=null&&(n.alignSelf=t.alignSelf),t.justifySelf!=null&&(n.justifySelf=t.justifySelf),n}const Pt=new Set(["p","px","py","pt","pr","pb","pl","m","mx","my","mt","mr","mb","ml","gap","gapX","gapY","w","h","minW","minH","maxW","maxH","display","position","overflow","inset","top","right","bottom","left","bg","color","opacity","radius","shadow","border","borderColor","borderWidth","flex","flexGrow","flexShrink","flexBasis","alignSelf","justifySelf"]);function C(t){const e={},n={};for(const r of Object.keys(t))Pt.has(r)?e[r]=t[r]:n[r]=t[r];return{styleProps:e,rest:n}}function F(){return p.useContext(P)?.cssVarPrefix??"syntra"}function k(...t){const e=[];for(const n of t)if(!(!n&&n!==0)){if(typeof n=="string")e.push(n);else if(typeof n=="number")e.push(String(n));else if(Array.isArray(n)){const r=k(...n);r&&e.push(r)}}return e.join(" ")}const tt=p.forwardRef((t,e)=>{const{as:n="div",className:r,style:a,children:o,...i}=t,l=F(),{styleProps:s,rest:d}=C(i),c=N(s,l);return x.jsx(n,{...d,ref:e,className:k("syntra-box",r),style:{...c,...a},children:o})});tt.displayName="Box";const nt=p.forwardRef((t,e)=>{const{as:n="span",className:r,style:a,children:o,size:i,weight:l,lineHeight:s,tracking:d,align:c,truncate:u,lineClamp:f,mono:y,italic:m,...b}=t,g=F(),{styleProps:S,rest:z}=C(b),j=N(S,g),v={};i!=null&&(v.fontSize=Z(String(i),g)),l!=null&&(v.fontWeight=J(String(l),g)),s!=null&&(v.lineHeight=Mt(String(s),g)),d!=null&&(v.letterSpacing=Q(String(d),g)),c!=null&&(v.textAlign=c),y&&(v.fontFamily=`var(--${g}-font-fontFamily-mono)`),m&&(v.fontStyle="italic"),u&&(v.overflow="hidden",v.textOverflow="ellipsis",v.whiteSpace="nowrap"),f!=null&&(v.display="-webkit-box",v.WebkitLineClamp=f,v.WebkitBoxOrient="vertical",v.overflow="hidden");const T={};return u&&(T["data-truncate"]=""),f!=null&&(T["data-line-clamp"]=String(f)),x.jsx(n,{...z,...T,ref:e,className:k("syntra-text",r),style:{...v,...j,...a},children:o})});nt.displayName="Text";const Ht={h1:{size:"4xl",weight:"bold",tracking:"tight"},h2:{size:"3xl",weight:"bold",tracking:"tight"},h3:{size:"2xl",weight:"semibold",tracking:"tight"},h4:{size:"xl",weight:"semibold",tracking:void 0},h5:{size:"lg",weight:"semibold",tracking:void 0},h6:{size:"md",weight:"medium",tracking:void 0}},et=p.forwardRef((t,e)=>{const{as:n,className:r,style:a,children:o,level:i="h2",size:l,weight:s,tracking:d,...c}=t,u=n||i,f=F(),{styleProps:y,rest:m}=C(c),b=N(y,f),g=Ht[i],S=l??g.size,z=s??g.weight,j=d??g.tracking,v={fontSize:Z(String(S),f),fontWeight:J(String(z),f)};return j!=null&&(v.letterSpacing=Q(String(j),f)),x.jsx(u,{...m,ref:e,className:k("syntra-heading",r),style:{...v,...b,...a},children:o})});et.displayName="Heading";const rt=p.forwardRef((t,e)=>{const{as:n="div",className:r,style:a,children:o,direction:i,align:l,justify:s,wrap:d,inline:c,...u}=t,f=F(),{styleProps:y,rest:m}=C(u),b=N(y,f),g={display:c?"inline-flex":"flex"};return i!=null&&(g.flexDirection=i),l!=null&&(g.alignItems=l),s!=null&&(g.justifyContent=s),d!=null&&(g.flexWrap=d),x.jsx(n,{...m,ref:e,className:k("syntra-flex",r),style:{...g,...b,...a},children:o})});rt.displayName="Flex";const at=p.forwardRef((t,e)=>{const{as:n="div",className:r,style:a,children:o,direction:i="vertical",align:l,justify:s,wrap:d,...c}=t,u=F(),{styleProps:f,rest:y}=C(c),m=N(f,u),b={display:"flex",flexDirection:i==="horizontal"?"row":"column"};l!=null&&(b.alignItems=l),s!=null&&(b.justifyContent=s),d!=null&&(b.flexWrap=d);const g=i==="horizontal"?"horizontal":"vertical";return x.jsx(n,{...y,ref:e,className:k("syntra-stack",r),style:{...b,...m,...a},"data-orientation":g,children:o})});at.displayName="Stack";function B(t){return typeof t=="number"?`repeat(${t}, 1fr)`:t}const ot=p.forwardRef((t,e)=>{const{as:n="div",className:r,style:a,children:o,columns:i,rows:l,areas:s,align:d,justify:c,inline:u,...f}=t,y=F(),{styleProps:m,rest:b}=C(f),g=N(m,y),S={display:u?"inline-grid":"grid"};return i!=null&&(S.gridTemplateColumns=B(i)),l!=null&&(S.gridTemplateRows=B(l)),s!=null&&(S.gridTemplateAreas=s),d!=null&&(S.alignItems=d),c!=null&&(S.justifyContent=c),x.jsx(n,{...b,ref:e,className:k("syntra-grid",r),style:{...S,...g,...a},children:o})});ot.displayName="Grid";const it=p.forwardRef((t,e)=>{const{as:n="div",className:r,style:a,children:o,orientation:i="horizontal",color:l,thickness:s=1,decorative:d=!0,...c}=t,u=F(),{styleProps:f,rest:y}=C(c),m=N(f,u),b=l??`var(--${u}-color-border-default)`,g=typeof s=="number"?`${s}px`:s,S=i==="horizontal"?{width:"100%",height:0,borderTop:`${g} solid ${b}`}:{height:"100%",width:0,borderLeft:`${g} solid ${b}`},z=d?{"aria-hidden":!0}:{role:"separator","aria-orientation":i};return x.jsx(n,{...y,...z,ref:e,className:k("syntra-divider",r),style:{...S,...m,...a},"data-orientation":i,children:o})});it.displayName="Divider";const Rt={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:0},st=p.forwardRef((t,e)=>{const{as:n="span",className:r,style:a,children:o,...i}=t;return x.jsx(n,{...i,ref:e,className:r,style:{...Rt,...a},children:o})});st.displayName="VisuallyHidden";const E=new Map;function R(t,e){p.useInsertionEffect(()=>{if((E.get(t)??0)===0){const r=document.createElement("style");r.setAttribute("data-syntra",t),r.textContent=e,document.head.appendChild(r)}return E.set(t,(E.get(t)??0)+1),()=>{const r=(E.get(t)??1)-1;r<=0?(E.delete(t),document.head.querySelector(`style[data-syntra="${t}"]`)?.remove()):E.set(t,r)}},[t,e])}const Ot=`
|
|
2
|
+
@keyframes syntra-spin {
|
|
3
|
+
to { transform: rotate(360deg); }
|
|
4
|
+
}
|
|
5
|
+
.syntra-spinner {
|
|
6
|
+
animation: syntra-spin 0.6s linear infinite;
|
|
7
|
+
}
|
|
8
|
+
`;function O({size:t="1em",color:e="currentColor",className:n,style:r}){R("spinner",Ot);const a=typeof t=="number"?`${t}px`:t;return x.jsx("svg",{className:`syntra-spinner${n?` ${n}`:""}`,width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:e,strokeWidth:"2.5",strokeLinecap:"round",style:r,"aria-hidden":"true",children:x.jsx("path",{d:"M12 2a10 10 0 0 1 10 10"})})}O.displayName="Spinner";const Wt=`
|
|
9
|
+
.syntra-button {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
position: relative;
|
|
14
|
+
white-space: nowrap;
|
|
15
|
+
user-select: none;
|
|
16
|
+
vertical-align: middle;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
font-family: inherit;
|
|
19
|
+
font-weight: var(--_btn-fw);
|
|
20
|
+
font-size: var(--_btn-fz);
|
|
21
|
+
height: var(--_btn-h);
|
|
22
|
+
padding-left: var(--_btn-px);
|
|
23
|
+
padding-right: var(--_btn-px);
|
|
24
|
+
gap: var(--_btn-gap);
|
|
25
|
+
border-radius: var(--_btn-radius);
|
|
26
|
+
background: var(--_btn-bg);
|
|
27
|
+
color: var(--_btn-color);
|
|
28
|
+
border: 1px solid var(--_btn-border, transparent);
|
|
29
|
+
transition: background 150ms ease, border-color 150ms ease, color 150ms ease, opacity 150ms ease;
|
|
30
|
+
text-decoration: none;
|
|
31
|
+
outline: none;
|
|
32
|
+
}
|
|
33
|
+
.syntra-button:hover:not(:disabled):not([data-loading]) {
|
|
34
|
+
background: var(--_btn-bg-hover);
|
|
35
|
+
border-color: var(--_btn-border-hover, transparent);
|
|
36
|
+
color: var(--_btn-color-hover, var(--_btn-color));
|
|
37
|
+
}
|
|
38
|
+
.syntra-button:active:not(:disabled):not([data-loading]) {
|
|
39
|
+
background: var(--_btn-bg-active);
|
|
40
|
+
}
|
|
41
|
+
.syntra-button:focus-visible {
|
|
42
|
+
outline: 2px solid var(--_btn-ring);
|
|
43
|
+
outline-offset: 2px;
|
|
44
|
+
}
|
|
45
|
+
.syntra-button:disabled,
|
|
46
|
+
.syntra-button[data-loading] {
|
|
47
|
+
opacity: 0.5;
|
|
48
|
+
cursor: not-allowed;
|
|
49
|
+
}
|
|
50
|
+
.syntra-button[data-loading] {
|
|
51
|
+
cursor: wait;
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
}
|
|
54
|
+
.syntra-button[data-full-width] {
|
|
55
|
+
width: 100%;
|
|
56
|
+
}
|
|
57
|
+
.syntra-button[data-variant="link"] {
|
|
58
|
+
height: auto;
|
|
59
|
+
padding-left: 0;
|
|
60
|
+
padding-right: 0;
|
|
61
|
+
background: transparent;
|
|
62
|
+
border-color: transparent;
|
|
63
|
+
}
|
|
64
|
+
.syntra-button[data-variant="link"]:hover:not(:disabled) {
|
|
65
|
+
text-decoration: underline;
|
|
66
|
+
background: transparent;
|
|
67
|
+
}
|
|
68
|
+
.syntra-button-label[data-loading] {
|
|
69
|
+
opacity: 0;
|
|
70
|
+
}
|
|
71
|
+
.syntra-button-spinner {
|
|
72
|
+
position: absolute;
|
|
73
|
+
inset: 0;
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
justify-content: center;
|
|
77
|
+
}
|
|
78
|
+
`,Bt={xs:{"--_btn-h":"28px","--_btn-px":"10px","--_btn-fz":"var(--syntra-font-fontSize-2xs)","--_btn-fw":"500","--_btn-radius":"var(--syntra-radius-sm)","--_btn-gap":"4px"},sm:{"--_btn-h":"32px","--_btn-px":"12px","--_btn-fz":"var(--syntra-font-fontSize-xs)","--_btn-fw":"500","--_btn-radius":"var(--syntra-radius-sm)","--_btn-gap":"6px"},md:{"--_btn-h":"36px","--_btn-px":"16px","--_btn-fz":"var(--syntra-font-fontSize-sm)","--_btn-fw":"500","--_btn-radius":"var(--syntra-radius-md)","--_btn-gap":"8px"},lg:{"--_btn-h":"44px","--_btn-px":"20px","--_btn-fz":"var(--syntra-font-fontSize-md)","--_btn-fw":"500","--_btn-radius":"var(--syntra-radius-md)","--_btn-gap":"8px"}};function Lt(t){return Bt[t]}function _(t,e){return t==="danger"?`var(--syntra-color-red-${e})`:`var(--syntra-color-${t}-${e})`}function It(t,e){const n=e==="neutral"?"var(--syntra-color-foreground-subtle)":e==="danger"?"var(--syntra-color-red-500)":`var(--syntra-color-${e}-500)`;return(()=>{switch(t){case"solid":return e==="neutral"?{"--_btn-bg":"var(--syntra-color-foreground-default)","--_btn-bg-hover":"var(--syntra-color-foreground-muted)","--_btn-bg-active":"var(--syntra-color-foreground-subtle)","--_btn-color":"var(--syntra-color-background-default)","--_btn-border":"transparent","--_btn-ring":n}:{"--_btn-bg":_(e,500),"--_btn-bg-hover":_(e,600),"--_btn-bg-active":_(e,700),"--_btn-color":"#fff","--_btn-border":"transparent","--_btn-ring":n};case"outline":return e==="neutral"?{"--_btn-bg":"transparent","--_btn-bg-hover":"var(--syntra-color-background-emphasis)","--_btn-bg-active":"var(--syntra-color-background-subtle)","--_btn-color":"var(--syntra-color-foreground-default)","--_btn-border":"var(--syntra-color-border-default)","--_btn-border-hover":"var(--syntra-color-border-emphasis)","--_btn-ring":n}:{"--_btn-bg":"transparent","--_btn-bg-hover":_(e,50),"--_btn-bg-active":_(e,100),"--_btn-color":_(e,500),"--_btn-border":_(e,500),"--_btn-border-hover":_(e,600),"--_btn-ring":n};case"ghost":return e==="neutral"?{"--_btn-bg":"transparent","--_btn-bg-hover":"var(--syntra-color-background-emphasis)","--_btn-bg-active":"var(--syntra-color-background-subtle)","--_btn-color":"var(--syntra-color-foreground-default)","--_btn-border":"transparent","--_btn-ring":n}:{"--_btn-bg":"transparent","--_btn-bg-hover":_(e,50),"--_btn-bg-active":_(e,100),"--_btn-color":_(e,500),"--_btn-border":"transparent","--_btn-ring":n};case"soft":return e==="neutral"?{"--_btn-bg":"var(--syntra-color-background-emphasis)","--_btn-bg-hover":"var(--syntra-color-background-subtle)","--_btn-bg-active":"var(--syntra-color-border-default)","--_btn-color":"var(--syntra-color-foreground-default)","--_btn-border":"transparent","--_btn-ring":n}:{"--_btn-bg":_(e,50),"--_btn-bg-hover":_(e,100),"--_btn-bg-active":_(e,200),"--_btn-color":_(e,700),"--_btn-border":"transparent","--_btn-ring":n};case"link":return e==="neutral"?{"--_btn-bg":"transparent","--_btn-bg-hover":"transparent","--_btn-bg-active":"transparent","--_btn-color":"var(--syntra-color-foreground-default)","--_btn-color-hover":"var(--syntra-color-foreground-muted)","--_btn-border":"transparent","--_btn-ring":n}:{"--_btn-bg":"transparent","--_btn-bg-hover":"transparent","--_btn-bg-active":"transparent","--_btn-color":_(e,500),"--_btn-color-hover":_(e,600),"--_btn-border":"transparent","--_btn-ring":n}}})()}const lt=p.forwardRef((t,e)=>{const{as:n="button",variant:r="solid",colorScheme:a="primary",size:o="md",loading:i=!1,disabled:l=!1,fullWidth:s=!1,leftSection:d,rightSection:c,className:u,style:f,children:y,...m}=t;R("button",Wt);const b=F(),{styleProps:g,rest:S}=C(m),z=N(g,b),j=It(r,a),v=Lt(o),T=l||i;return x.jsxs(n,{...S,ref:e,className:k("syntra-button",u),disabled:n==="button"?T:void 0,"aria-disabled":n!=="button"&&T?!0:void 0,"data-variant":r,"data-loading":i||void 0,"data-full-width":s||void 0,style:{...j,...v,...z,...f},children:[i&&x.jsx("span",{className:"syntra-button-spinner",children:x.jsx(O,{})}),d&&x.jsx("span",{className:"syntra-button-section","data-position":"left","aria-hidden":"true",children:d}),x.jsx("span",{className:"syntra-button-label","data-loading":i||void 0,children:y}),c&&x.jsx("span",{className:"syntra-button-section","data-position":"right","aria-hidden":"true",children:c})]})});lt.displayName="Button";const Dt=`
|
|
79
|
+
.syntra-input-wrapper {
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
position: relative;
|
|
83
|
+
width: var(--_input-w, auto);
|
|
84
|
+
height: var(--_input-h);
|
|
85
|
+
padding-left: var(--_input-px);
|
|
86
|
+
padding-right: var(--_input-px);
|
|
87
|
+
gap: var(--_input-gap);
|
|
88
|
+
border-radius: var(--_input-radius);
|
|
89
|
+
background: var(--_input-bg);
|
|
90
|
+
border: 1px solid var(--_input-border, transparent);
|
|
91
|
+
font-family: inherit;
|
|
92
|
+
font-size: var(--_input-fz);
|
|
93
|
+
transition: border-color 150ms ease, box-shadow 150ms ease;
|
|
94
|
+
}
|
|
95
|
+
.syntra-input-wrapper:focus-within:not([data-disabled]):not([data-variant="unstyled"]) {
|
|
96
|
+
border-color: var(--_input-focus-border);
|
|
97
|
+
box-shadow: 0 0 0 1px var(--_input-focus-border);
|
|
98
|
+
}
|
|
99
|
+
.syntra-input-wrapper[data-invalid]:not([data-disabled]) {
|
|
100
|
+
border-color: var(--_input-invalid-border);
|
|
101
|
+
}
|
|
102
|
+
.syntra-input-wrapper[data-invalid]:focus-within:not([data-disabled]) {
|
|
103
|
+
border-color: var(--_input-invalid-border);
|
|
104
|
+
box-shadow: 0 0 0 1px var(--_input-invalid-border);
|
|
105
|
+
}
|
|
106
|
+
.syntra-input-wrapper[data-disabled] {
|
|
107
|
+
opacity: 0.5;
|
|
108
|
+
cursor: not-allowed;
|
|
109
|
+
}
|
|
110
|
+
.syntra-input {
|
|
111
|
+
flex: 1;
|
|
112
|
+
min-width: 0;
|
|
113
|
+
height: 100%;
|
|
114
|
+
border: none;
|
|
115
|
+
outline: none;
|
|
116
|
+
background: transparent;
|
|
117
|
+
color: inherit;
|
|
118
|
+
font-family: inherit;
|
|
119
|
+
font-size: inherit;
|
|
120
|
+
padding: 0;
|
|
121
|
+
}
|
|
122
|
+
.syntra-input::placeholder {
|
|
123
|
+
color: var(--syntra-color-foreground-muted);
|
|
124
|
+
}
|
|
125
|
+
.syntra-input:disabled {
|
|
126
|
+
cursor: not-allowed;
|
|
127
|
+
}
|
|
128
|
+
.syntra-input-section {
|
|
129
|
+
display: flex;
|
|
130
|
+
align-items: center;
|
|
131
|
+
justify-content: center;
|
|
132
|
+
flex-shrink: 0;
|
|
133
|
+
color: var(--syntra-color-foreground-muted);
|
|
134
|
+
}
|
|
135
|
+
`,Gt={xs:{"--_input-h":"28px","--_input-px":"8px","--_input-fz":"var(--syntra-font-fontSize-2xs)","--_input-radius":"var(--syntra-radius-sm)","--_input-gap":"4px"},sm:{"--_input-h":"32px","--_input-px":"10px","--_input-fz":"var(--syntra-font-fontSize-xs)","--_input-radius":"var(--syntra-radius-sm)","--_input-gap":"6px"},md:{"--_input-h":"36px","--_input-px":"12px","--_input-fz":"var(--syntra-font-fontSize-sm)","--_input-radius":"var(--syntra-radius-md)","--_input-gap":"8px"},lg:{"--_input-h":"44px","--_input-px":"16px","--_input-fz":"var(--syntra-font-fontSize-md)","--_input-radius":"var(--syntra-radius-md)","--_input-gap":"8px"}};function Vt(t){return Gt[t]}const Kt={outline:{"--_input-bg":"var(--syntra-color-background-default)","--_input-border":"var(--syntra-color-border-default)","--_input-focus-border":"var(--syntra-color-primary-500)","--_input-invalid-border":"var(--syntra-color-red-500)"},filled:{"--_input-bg":"var(--syntra-color-background-emphasis)","--_input-border":"transparent","--_input-focus-border":"var(--syntra-color-primary-500)","--_input-invalid-border":"var(--syntra-color-red-500)"},unstyled:{"--_input-bg":"transparent","--_input-border":"transparent","--_input-focus-border":"transparent","--_input-invalid-border":"transparent"}};function Yt(t){return Kt[t]}const dt=p.forwardRef((t,e)=>{const{variant:n="outline",size:r="md",invalid:a=!1,leftSection:o,rightSection:i,wrapperClassName:l,wrapperStyle:s,className:d,style:c,disabled:u,...f}=t;R("input",Dt);const y=F(),{styleProps:m,rest:b}=C(f),g=N(m,y),S=Yt(n),z=Vt(r);return x.jsxs("div",{className:k("syntra-input-wrapper",l),"data-variant":n,"data-size":r,"data-invalid":a||void 0,"data-disabled":u||void 0,style:{...S,...z,...g,...s},children:[o&&x.jsx("span",{className:"syntra-input-section","data-position":"left",children:o}),x.jsx("input",{...b,ref:e,className:k("syntra-input",d),disabled:u,"aria-invalid":a||void 0,style:c}),i&&x.jsx("span",{className:"syntra-input-section","data-position":"right",children:i})]})});dt.displayName="Input";exports.Box=tt;exports.Button=lt;exports.Divider=it;exports.Flex=rt;exports.Grid=ot;exports.Heading=et;exports.Input=dt;exports.Spinner=O;exports.Stack=at;exports.SyntraProvider=wt;exports.Text=nt;exports.VisuallyHidden=st;exports.cn=k;exports.createSyntraTheme=M;exports.darkColors=I;exports.deepMerge=H;exports.defaultDarkTheme=U;exports.defaultLightTheme=Y;exports.extractStyleProps=C;exports.generateColorScale=q;exports.lightColors=L;exports.resolveStyleProps=N;exports.useSyntra=X;exports.useSyntraMode=kt;
|