@tempots/beatui 0.76.0 → 0.77.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/dist/auth/index.cjs.js +1 -1
- package/dist/auth/index.es.js +3 -3
- package/dist/beatui.css +11 -2
- package/dist/beatui.tailwind.css +11 -2
- package/dist/deep-merge-DBUbjJYt.cjs +1 -0
- package/dist/{deep-merge-CQQCMLwG.js → deep-merge-E6b9KE6l.js} +221 -223
- package/dist/{duration-input-D-SIoDoo.cjs → duration-input-CsygvJJ_.cjs} +1 -1
- package/dist/{duration-input-DKxZ6OCa.js → duration-input-j7bVks-S.js} +2 -2
- package/dist/index.cjs.js +2 -2
- package/dist/index.es.js +238 -237
- package/dist/json-schema/index.cjs.js +1 -1
- package/dist/json-schema/index.es.js +5 -5
- package/dist/json-structure/index.cjs.js +1 -1
- package/dist/json-structure/index.es.js +3 -3
- package/dist/{modal-MofsfmAe.js → modal--5-j6x0s.js} +1 -1
- package/dist/{modal-5P9mU_a4.cjs → modal-rLbLQYhb.cjs} +1 -1
- package/dist/{notice-DP209Ed8.cjs → notice-BGaJ4k0O.cjs} +1 -1
- package/dist/{notice-Cqq8g17n.js → notice-BvS1_9Va.js} +1 -1
- package/dist/types/components/form/controller/controller-validation.d.ts +41 -0
- package/dist/types/components/json-schema/widgets/widget-customization.d.ts +7 -7
- package/dist/use-form-B4D58mxd.cjs +2 -0
- package/dist/{use-form-B7A865EM.js → use-form-DzA1RSrN.js} +115 -88
- package/dist/{widget-customization-GaZB6sLP.cjs → widget-customization-DKlfR6Qb.cjs} +1 -1
- package/dist/{widget-customization-CobH7Rj_.js → widget-customization-DfBf7gGp.js} +3 -3
- package/package.json +1 -1
- package/dist/deep-merge-DZxfgKqX.cjs +0 -1
- package/dist/use-form-DVJXMMoN.cjs +0 -2
package/dist/auth/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@tempots/dom"),p=require("../use-form-DVJXMMoN.cjs"),g=require("../modal-5P9mU_a4.cjs"),y=require("../translations-C7HVMcOQ.cjs"),P=require("../notice-DP209Ed8.cjs"),q=require("../translations-hMQlZmD4.cjs"),J=require("@tempots/ui"),T={google:{name:"Google",icon:"logos:google-icon",color:"#4285f4"},github:{name:"GitHub",icon:"logos:github-icon",color:"#333"},apple:{name:"Apple",icon:"logos:apple",color:"#000"},facebook:{name:"Facebook",icon:"logos:facebook",color:"#1877f2"},twitter:{name:"Twitter",icon:"logos:twitter",color:"#1da1f2"},microsoft:{name:"Microsoft",icon:"logos:microsoft-icon",color:"#00a4ef"},discord:{name:"Discord",icon:"logos:discord-icon",color:"#5865f2"},linkedin:{name:"LinkedIn",icon:"logos:linkedin-icon",color:"#0077b5"},instagram:{name:"Instagram",icon:"logos:instagram-icon",color:"#e4405f"},tiktok:{name:"TikTok",icon:"logos:tiktok-icon",color:"#000"},snapchat:{name:"Snapchat",icon:"logos:snapchat-icon",color:"#fffc00"},reddit:{name:"Reddit",icon:"logos:reddit-icon",color:"#ff4500"},pinterest:{name:"Pinterest",icon:"logos:pinterest-icon",color:"#bd081c"},twitch:{name:"Twitch",icon:"logos:twitch",color:"#9146ff"},steam:{name:"Steam",icon:"logos:steam-icon",color:"#000"},epic:{name:"Epic Games",icon:"simple-icons:epicgames",color:"#313131"},playstation:{name:"PlayStation",icon:"logos:playstation-icon",color:"#003791"},xbox:{name:"Xbox",icon:"logos:xbox-icon",color:"#107c10"},whatsapp:{name:"WhatsApp",icon:"logos:whatsapp-icon",color:"#25d366"},wechat:{name:"WeChat",icon:"logos:wechat-icon",color:"#1aad19"},amazon:{name:"Amazon",icon:"logos:amazon-icon",color:"#ff9900"},yahoo:{name:"Yahoo",icon:"logos:yahoo-icon",color:"#720e9e"},paypal:{name:"PayPal",icon:"logos:paypal",color:"#0070ba"},x:{name:"X",icon:"simple-icons:x",color:"#000"}};function N(o){return T[o]?.name||o}function K(o){return T[o]?.icon||"mdi:account"}function Q(o){return T[o]?.color||"#666"}function tt(o,e="Continue with {provider}"){return e.replace("{provider}",N(o))}const B={minLength:8,requireUppercase:!0,requireLowercase:!0,requireNumbers:!0,requireSymbols:!1};function ot(o){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o)}function D(o=32){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let i="";for(let l=0;l<o;l++)i+=e.charAt(Math.floor(Math.random()*e.length));return i}function et(o,e,i,l=[],c={}){const n={google:"https://accounts.google.com/oauth/authorize",github:"https://github.com/login/oauth/authorize",apple:"https://appleid.apple.com/auth/authorize",facebook:"https://www.facebook.com/v18.0/dialog/oauth",twitter:"https://twitter.com/i/oauth2/authorize",microsoft:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",discord:"https://discord.com/api/oauth2/authorize",linkedin:"https://www.linkedin.com/oauth/v2/authorization",instagram:"https://api.instagram.com/oauth/authorize",tiktok:"https://www.tiktok.com/v2/auth/authorize",snapchat:"https://accounts.snapchat.com/accounts/oauth2/authorize",reddit:"https://www.reddit.com/api/v1/authorize",pinterest:"https://api.pinterest.com/oauth/",twitch:"https://id.twitch.tv/oauth2/authorize",steam:"https://steamcommunity.com/oauth/authorize",epic:"https://auth.epicgames.com/authorize",playstation:"https://auth.api.sonyentertainmentnetwork.com/oauth/authorize",xbox:"https://login.live.com/oauth20_authorize.srf",whatsapp:"https://web.whatsapp.com/oauth/authorize",wechat:"https://open.weixin.qq.com/connect/qrconnect",amazon:"https://www.amazon.com/ap/oa",yahoo:"https://api.login.yahoo.com/oauth2/request_auth",paypal:"https://www.paypal.com/signin/authorize",x:"https://api.twitter.com/oauth2/authorize"},m={google:["openid","email","profile"],github:["user:email"],apple:["email","name"],facebook:["email"],twitter:["users.read"],microsoft:["openid","email","profile"],discord:["identify","email"],linkedin:["r_liteprofile","r_emailaddress"],instagram:["user_profile","user_media"],tiktok:["user.info.basic","user.external.id"],snapchat:["user.info.basic","user.external.id"],reddit:["identity","email"],pinterest:["read_public","read_relationships"],twitch:["openid","email","profile"],steam:["openid","email","profile"],epic:["openid","email","profile"],playstation:["openid","email","profile"],xbox:["openid","email","profile"],whatsapp:["openid","email","profile"],wechat:["openid","email","profile"],amazon:["openid","email","profile"],yahoo:["openid","email","profile"],paypal:["openid","email","profile"],x:["openid","email","profile"]},a=n[o];if(!a)throw new Error(`Unsupported provider: ${o}`);const r=l.length>0?l:m[o],s=D(),h=new URLSearchParams({client_id:e,redirect_uri:i,scope:r.join(" "),state:s,response_type:"code",...c});return`${a}?${h.toString()}`}function at(o,e,i,l){const c=window.open(o,`${e}_login`,"width=500,height=600,scrollbars=yes,resizable=yes");if(!c){l?.(new Error("Failed to open popup window"));return}const n=setInterval(()=>{c.closed&&(clearInterval(n),l?.(new Error("Login cancelled")))},1e3),m=a=>{a.origin===window.location.origin&&(a.data.type==="SOCIAL_LOGIN_SUCCESS"?(clearInterval(n),c.close(),window.removeEventListener("message",m),i?.(a.data.result)):a.data.type==="SOCIAL_LOGIN_ERROR"&&(clearInterval(n),c.close(),window.removeEventListener("message",m),l?.(new Error(a.data.error))))};window.addEventListener("message",m)}function nt(o){return o instanceof Error?o.message:typeof o=="string"?o:o&&typeof o=="object"&&"message"in o?String(o.message):"An unexpected error occurred"}function rt(){return typeof window<"u"&&typeof document<"u"}function $({task:o,message:e,onStart:i,onEnd:l}){return async c=>{i?.();const n=await p.taskToValidation({task:o!=null?()=>o(c):async()=>null,errorMessage:e,errorPath:["root"],validation:m=>m!=null?p.a.invalid({message:m}):p.a.valid});return l?.(),n}}function z(o=B){let e=g.string();return o.minLength&&(e=e.min(o.minLength,`Password must be at least ${o.minLength} characters`)),o.requireUppercase&&(e=e.regex(/[A-Z]/,"Password must contain at least one uppercase letter")),o.requireLowercase&&(e=e.regex(/[a-z]/,"Password must contain at least one lowercase letter")),o.requireNumbers&&(e=e.regex(/[0-9]/,"Password must contain at least one number")),o.requireSymbols&&(e=e.regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,"Password must contain at least one special character")),o.customValidation&&(e=e.refine(i=>o.customValidation(i))),e}const x=g.string().min(1,"Email is required").email("Please enter a valid email address");function E(o){const e=o?z(o):g.string().refine(i=>i.length>0?null:"Password is required");return g.object({email:x,password:e,rememberMe:g.boolean().default(!1)}).schema()}function O(o=B,e){const i=z(o),l=e?.showNameField!==!1,c=e?.showConfirmPassword!==!1,n=e?.showAcceptTermsAndConditions!==!1,m={name:l?g.string().min(1,"Name is required").optional():g.string().optional(),email:x,password:i,confirmPassword:c?g.string().min(1,"Please confirm your password"):g.string(),acceptTerms:n?g.boolean().refine(r=>r===!0,"You must accept the terms and conditions"):g.boolean().default(!0)},a=g.object(m);return c?a.refine(r=>r.password===r.confirmPassword?null:"Passwords don't match",{path:["confirmPassword"]}).schema():a.schema()}const R=g.object({email:x}).schema(),st=E(),it=O(),ct={signIn:E,signUp:O,resetPassword:()=>R};function lt(o){const e=x.validate(o);return e.success?null:e.errors[0]?.message||"Invalid email"}function mt(o,e=B){const l=z(e).validate(o);return l.success?null:l.errors[0]?.message||"Invalid password"}function U(o,e=B){const i={length:o.length>=(e.minLength||8),uppercase:/[A-Z]/.test(o),lowercase:/[a-z]/.test(o),numbers:/[0-9]/.test(o),symbols:/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/.test(o),custom:e.customValidation?e.customValidation(o)===null:o.length>0},l=[!0,e.requireUppercase,e.requireLowercase,e.requireNumbers,e.requireSymbols,!!e.customValidation].filter(Boolean).length,c=[i.length,e.requireUppercase?i.uppercase:null,e.requireLowercase?i.lowercase:null,e.requireNumbers?i.numbers:null,e.requireSymbols?i.symbols:null,e.customValidation?i.custom:null].filter(a=>a===!0).length,n=l>0?Math.round(c/l*100):0;let m;return n<40?m="weak":n<60?m="fair":n<80?m="good":m="strong",{strength:m,score:n,checks:i}}const M=()=>t.localStorageProp({key:"bui_auth_email",defaultValue:null});function G({onSignIn:o,passwordRules:e,labels:i,showRememberMe:l}){const c=t.prop(!1),n=M(),m=E(e),a=p.useForm({schema:m,onSubmit:$({task:o,message:"Reset password failed",onStart:()=>{c.set(!0),a.controller.disable()},onEnd:()=>{c.set(!1),a.controller.enable()}}),initialValue:{email:"",password:""}}),{controller:r,submit:s}=a;c.on(r.setDisabled);const h=r.field("email"),f=r.field("password");return n.on(b=>{b!=null&&h.change(b)}),h.signal.on(b=>{n.value!=null&&(n.value=b)}),t.Use(y.AuthI18n,b=>t.html.form(t.attr.class("bc-auth-form__form"),t.on.submit(s),p.Stack(t.attr.class("bc-auth-form__fields"),t.Ensure(r.error,L=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(L))),p.Control(P.EmailInput,{controller:h,label:t.coalesce(i?.emailLabel,b.$.emailLabel)}),p.Control(P.PasswordInput,{controller:f,label:t.coalesce(i?.passwordLabel,b.$.passwordLabel)}),t.When(l??!0,()=>t.html.div(t.attr.class("bc-auth-form__remember-me"),t.html.label(t.attr.class("bc-auth-form__checkbox-label"),p.CheckboxInput({value:n.map(L=>L!=null),after:t.html.span(t.coalesce(i?.rememberMeLabel,b.$.rememberMeLabel)),onChange:L=>{L?n.value=h.signal.value??"":n.value=null}}))))),q.Button({type:"submit",variant:"filled",color:"primary",loading:c,disabled:r.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(i?.signInButton,b.$.signInButton))))}function j({password:o,rules:e=B,showLabel:i=!0,className:l}){const c=t.computedOf(o)(s=>!s||s.length===0?{strength:"weak",score:0,checks:{length:!1,uppercase:!1,lowercase:!1,numbers:!1,symbols:!1,custom:!1}}:U(s,e)),n=c.map(s=>s.strength),m=c.map(s=>s.score),a=c.map(s=>s.checks),r=t.computedOf(n,l)((s,h)=>["bc-password-strength",`bc-password-strength--${s}`,h].filter(Boolean).join(" "));return t.html.div(t.attr.class(r),t.html.div(t.attr.class("bc-password-strength__bar"),t.html.div(t.attr.class("bc-password-strength__fill"),t.attr.style(m.map(s=>`width: ${s}%`)))),t.When(i,()=>t.Use(y.AuthI18n,s=>t.html.div(t.attr.class("bc-password-strength__label"),t.computedOf(n,s)((h,f)=>{switch(h){case"weak":return f.passwordStrengthWeak;case"fair":return f.passwordStrengthFair;case"good":return f.passwordStrengthGood;case"strong":return f.passwordStrengthStrong;default:return f.passwordStrengthWeak}})))),t.html.div(t.attr.class("bc-password-strength__requirements"),t.When(e.minLength!==void 0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.length?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.length?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),`At least ${e.minLength} characters`))),t.When(e.requireUppercase===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.uppercase?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.uppercase?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One uppercase letter"))),t.When(e.requireLowercase===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.lowercase?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.lowercase?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One lowercase letter"))),t.When(e.requireNumbers===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.numbers?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.numbers?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One number"))),t.When(e.requireSymbols===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.symbols?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.symbols?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One special character")))))}function ut({password:o,rules:e=B,className:i}){const l=t.computedOf(o)(a=>!a||a.length===0?{strength:"weak",score:0}:U(a,e)),c=l.map(a=>a.strength),n=l.map(a=>a.score),m=t.computedOf(c,i)((a,r)=>["bc-password-strength-bar",`bc-password-strength-bar--${a}`,r].filter(Boolean).join(" "));return t.html.div(t.attr.class(m),t.html.div(t.attr.class("bc-password-strength-bar__fill"),t.attr.style(n.map(a=>`width: ${a}%`))))}function dt({password:o,rules:e=B,className:i}){const l=t.computedOf(o)(n=>!n||n.length===0?"weak":U(n,e).strength),c=t.computedOf(l,i)((n,m)=>["bc-password-strength-text",`bc-password-strength-text--${n}`,m].filter(Boolean).join(" "));return t.Fragment(t.Use(y.AuthI18n,n=>t.html.span(t.attr.class(c),t.computedOf(l,n)((m,a)=>{switch(m){case"weak":return a.passwordStrengthWeak;case"fair":return a.passwordStrengthFair;case"good":return a.passwordStrengthGood;case"strong":return a.passwordStrengthStrong;default:return a.passwordStrengthWeak}}))))}function H({passwordRules:o,labels:e,initialEmail:i,initialName:l,showPasswordStrength:c,onSignUp:n,showNameField:m,showConfirmPassword:a,showAcceptTermsAndConditions:r,termsAndConditions:s}){const h=t.prop(!1),f=o||B,b=O(f,{showNameField:m!==!1,showConfirmPassword:a!==!1,showAcceptTermsAndConditions:r!==!1}),L=p.useForm({schema:b,onSubmit:$({task:n!=null?_=>n({email:_.email,password:_.password,name:_.name,acceptTerms:_.acceptTerms}):void 0,message:"Reset password failed",onStart:()=>{h.set(!0),L.controller.disable()},onEnd:()=>{h.set(!1),L.controller.enable()}}),initialValue:{name:l??"",email:i??"",password:"",confirmPassword:"",acceptTerms:!1}}),{controller:k,submit:I}=L;h.on(k.setDisabled);const v=k.field("name"),A=k.field("email"),C=k.field("password"),W=k.field("confirmPassword"),S=k.field("acceptTerms");return t.Use(y.AuthI18n,_=>t.html.form(t.attr.class("bc-auth-form__form"),t.on.submit(I),p.Stack(t.attr.class("bc-auth-form__fields"),t.Ensure(k.error,w=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(w))),t.When(m!==!1,()=>p.Control(q.TextInput,{controller:v.transform(w=>w??"",w=>w===""?void 0:w),label:t.coalesce(e?.nameLabel,_.$.nameLabel)})),p.Control(P.EmailInput,{controller:A,label:t.coalesce(e?.emailLabel,_.$.emailLabel)}),p.Control(P.PasswordInput,{controller:C,label:t.coalesce(e?.passwordLabel,_.$.passwordLabel)}),t.When(c??!1,()=>j({password:C.signal,rules:f,showLabel:!0})),t.When(a??!1,()=>p.Control(P.PasswordInput,{controller:W,label:t.coalesce(e?.confirmPasswordLabel,_.$.confirmPasswordLabel)})),t.When(r??!1,()=>t.html.div(t.attr.class("bc-auth-form__terms"),t.html.label(t.attr.class("bc-auth-form__checkbox-label"),p.CheckboxInput({value:S.signal.map(w=>w??!1),onChange:w=>S.change(w)}),t.html.span(s||t.coalesce(e?.acceptTermsLabel,_.$.acceptTermsLabel))),t.When(S.errorVisible,()=>t.html.div(t.attr.class("bc-auth-form__field-error"),S.error.map(w=>w||"")))))),q.Button({type:"submit",variant:"filled",color:"primary",loading:h,disabled:k.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(e?.signUpButton,_.$.signUpButton))))}function X({onResetPassword:o,labels:e={}}){const i=M(),l=t.prop(!1),c=p.useForm({schema:R,onSubmit:$({task:o,message:"Reset password failed",onStart:()=>{l.set(!0),c.controller.disable()},onEnd:()=>{l.set(!1),c.controller.enable()}}),initialValue:{email:""}}),{controller:n,submit:m}=c;l.on(n.setDisabled);const a=n.field("email");return i.on(r=>{r!=null&&a.change(r)}),t.Use(y.AuthI18n,r=>t.html.form(t.attr.class("bc-auth-form__form"),t.Ensure(n.error,s=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(s))),t.html.p(t.attr.class("bc-auth-form__description"),t.coalesce(e?.resetPasswordDescription,r.$.resetPasswordDescription)),t.on.submit(m),p.Stack(t.attr.class("bc-auth-form__fields"),p.Control(P.EmailInput,{controller:a,label:t.coalesce(e?.emailLabel,r.$.emailLabel)})),q.Button({loading:l,type:"submit",variant:"filled",color:"primary",disabled:n.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(e?.resetPasswordButton,r.$.resetPasswordButton))))}function d({provider:o,onClick:e,size:i="md",name:l,icon:c,color:n,flow:m,labels:a}){const r=async()=>{if(e)try{m==="popup"?await e():await e()}catch(s){console.error(`Social login error for ${o} (${m||"redirect"} flow):`,s)}};return q.Button({type:"button",variant:"filled",size:i,color:n,onClick:r,roundedness:"full"},t.attr.class("bc-social-login-button"),t.attr.class(t.computedOf(o)(s=>`bc-social-login-button--${s}`)),t.html.span(t.attr.class("bc-social-login-button__inner"),t.html.span(t.attr.class("bc-social-login-button__icon"),q.Icon({icon:c,size:i},t.attr.class("bc-social-login-button__icon-inner"))),t.Use(y.AuthI18n,s=>t.html.span(t.attr.class("bc-social-login-button__label"),t.bind(t.coalesce(a?.continueWithProvider,s.$.continueWithProvider))(l)))))}function Y({providers:o,onProviderClick:e,size:i="md",className:l}){return p.Stack(t.attr.class("bc-social-login-buttons"),t.attr.class(l),t.ForEach(o,c=>d({provider:c.$.provider,flow:c.$.flow,color:c.map(({provider:n})=>u[n].color),name:c.map(({provider:n})=>u[n].name),icon:c.map(({provider:n})=>u[n].icon),onClick:async()=>{e&&await e(c.$.provider.value)},size:i})))}const u={google:{name:"Google",icon:"logos:google-icon",color:"red"},github:{name:"GitHub",icon:"logos:github-icon",color:"black"},apple:{name:"Apple",icon:"logos:apple",color:"stone"},facebook:{name:"Facebook",icon:"logos:facebook",color:"blue"},twitter:{name:"Twitter",icon:"logos:twitter",color:"sky"},x:{name:"X",icon:"logos:x",color:"zinc"},microsoft:{name:"Microsoft",icon:"logos:microsoft-icon",color:"amber"},discord:{name:"Discord",icon:"logos:discord-icon",color:"indigo"},linkedin:{name:"LinkedIn",icon:"logos:linkedin-icon",color:"cyan"},instagram:{name:"Instagram",icon:"logos:instagram-icon",color:"fuchsia"},tiktok:{name:"TikTok",icon:"logos:tiktok-icon",color:"teal"},snapchat:{name:"Snapchat",icon:"streamline-logos:snapchat-logo-solid",color:"yellow"},reddit:{name:"Reddit",icon:"logos:reddit-icon",color:"orange"},pinterest:{name:"Pinterest",icon:"logos:pinterest",color:"rose"},twitch:{name:"Twitch",icon:"logos:twitch",color:"purple"},steam:{name:"Steam",icon:"logos:steam",color:"slate"},epic:{name:"Epic Games",icon:"streamline-logos:epic-games-logo-solid",color:"neutral"},playstation:{name:"PlayStation",icon:"streamline-logos:playstation-logo-solid",color:"violet"},xbox:{name:"Xbox",icon:"streamline-logos:xbox-live-logo-solid",color:"green"},whatsapp:{name:"WhatsApp",icon:"logos:whatsapp-icon",color:"emerald"},wechat:{name:"WeChat",icon:"streamline-logos:wechat-logo",color:"lime"},amazon:{name:"Amazon",icon:"streamline-logos:amazon-logo-solid",color:"red"},yahoo:{name:"Yahoo",icon:"logos:yahoo",color:"rose"},paypal:{name:"PayPal",icon:"logos:paypal",color:"blue"}},pt=o=>d({...o,...u.google,provider:"google"}),ht=o=>d({...o,...u.github,provider:"github"}),gt=o=>d({...o,...u.apple,provider:"apple"}),ft=o=>d({...o,...u.facebook,provider:"facebook"}),bt=o=>d({...o,...u.x,provider:"x"}),wt=o=>d({...o,...u.twitter,provider:"twitter"}),Lt=o=>d({...o,...u.microsoft,provider:"microsoft"}),_t=o=>d({...o,...u.discord,provider:"discord"}),kt=o=>d({...o,...u.linkedin,provider:"linkedin"}),vt=o=>d({...o,...u.instagram,provider:"instagram"}),St=o=>d({...o,...u.tiktok,provider:"tiktok"}),Pt=o=>d({...o,...u.snapchat,provider:"snapchat"}),yt=o=>d({...o,...u.reddit,provider:"reddit"}),Bt=o=>d({...o,...u.pinterest,provider:"pinterest"}),It=o=>d({...o,...u.twitch,provider:"twitch"}),qt=o=>d({...o,...u.steam,provider:"steam"}),xt=o=>d({...o,...u.epic,provider:"epic"}),At=o=>d({...o,...u.playstation,provider:"playstation"}),Ct=o=>d({...o,...u.xbox,provider:"xbox"}),Tt=o=>d({...o,...u.whatsapp,provider:"whatsapp"}),$t=o=>d({...o,...u.wechat,provider:"wechat"}),zt=o=>d({...o,...u.amazon,provider:"amazon"}),Et=o=>d({...o,...u.yahoo,provider:"yahoo"}),Ot=o=>d({...o,...u.paypal,provider:"paypal"});function F({providers:o}){return p.Stack(Y({providers:o}))}function Z({mode:o,socialProviders:e,initialName:i,initialEmail:l,passwordRules:c,showRememberMe:n,showSocialDivider:m,showPasswordStrength:a,labels:r,onSignIn:s,onSignUp:h,onResetPassword:f,onModeChange:b,showContainer:L},...k){const I=o!=null?t.Value.deriveProp(o):t.prop("signin");return I.on(v=>b?.(v)),t.Use(y.AuthI18n,v=>{function A(){const S=t.coalesce(r?.hasAccountLink,v.$.hasAccountLink);return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("signin")),S)}function C(){return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("signup")),t.coalesce(r?.noAccountLink,v.$.noAccountLink))}function W(){return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("reset-password")),t.coalesce(r?.forgotPasswordLink,v.$.forgotPasswordLink))}return t.html.div(J.classes({"bc-auth-container":!0,"bc-auth-container--styled":t.Value.map(L??!0,S=>S)}),t.attr.class(I.map(S=>`bc-auth-container--${S}`)),t.attr.class("bc-auth-form"),t.OneOfValue(I,{signin:()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.signInTitle,v.$.signInTitle)),e!=null?t.Fragment(F({providers:e}),t.When(m??!1,V)):null,G({onSignIn:s,showRememberMe:n,passwordRules:c,labels:{emailLabel:r?.emailLabel,passwordLabel:r?.passwordLabel,rememberMeLabel:r?.rememberMeLabel,signInButton:r?.signInButton,forgotPasswordLink:r?.forgotPasswordLink,noAccountLink:r?.noAccountLink}}),p.Stack(t.attr.class("bc-auth-form__footer"),C(),W())),signup:()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.signUpTitle,v.$.signUpTitle)),e!=null?t.Fragment(F({providers:e}),t.When(m??!1,V)):null,H({labels:{nameLabel:r?.nameLabel,emailLabel:r?.emailLabel,passwordLabel:r?.passwordLabel,confirmPasswordLabel:r?.confirmPasswordLabel,acceptTermsLabel:r?.acceptTermsLabel,signUpButton:r?.signUpButton,hasAccountLink:r?.hasAccountLink},initialEmail:l,initialName:i,onSignUp:h,passwordRules:c,showPasswordStrength:a}),p.Stack(t.attr.class("bc-auth-form__footer"),A())),"reset-password":()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.resetPasswordTitle,v.$.resetPasswordTitle)),X({labels:{backToSignInLink:r?.backToSignInLink,emailLabel:r?.emailLabel,resetPasswordButton:r?.resetPasswordButton,resetPasswordDescription:r?.resetPasswordDescription},onResetPassword:f}),p.Stack(t.attr.class("bc-auth-form__footer"),A()))}),...k)})}function Ut(o){return g.Modal({size:"sm",dismissable:!0,showCloseButton:!0},(e,i)=>o(l=>e({body:Z({showContainer:!1,...l}),header:t.Use(y.AuthI18n,c=>t.coalesce(l.modalTitle,c.$.authenticationTitle))})))}function V({labels:o,className:e}={}){return t.html.div(t.attr.class("bc-auth-divider"),t.attr.class(e),t.html.div(t.attr.class("bc-auth-divider__line")),t.Use(y.AuthI18n,i=>t.html.span(t.attr.class("bc-auth-divider__text"),t.coalesce(o?.text,i.$.orDivider))),t.html.div(t.attr.class("bc-auth-divider__line")))}exports.AmazonLoginButton=zt;exports.AppleLoginButton=gt;exports.AuthContainer=Z;exports.AuthDivider=V;exports.AuthModal=Ut;exports.DiscordLoginButton=_t;exports.EpicLoginButton=xt;exports.FacebookLoginButton=ft;exports.GitHubLoginButton=ht;exports.GoogleLoginButton=pt;exports.InstagramLoginButton=vt;exports.LinkedInLoginButton=kt;exports.MicrosoftLoginButton=Lt;exports.PasswordStrengthBar=ut;exports.PasswordStrengthIndicator=j;exports.PasswordStrengthText=dt;exports.PayPalLoginButton=Ot;exports.PinterestLoginButton=Bt;exports.PlayStationLoginButton=At;exports.RedditLoginButton=yt;exports.ResetPasswordForm=X;exports.SignInForm=G;exports.SignUpForm=H;exports.SnapchatLoginButton=Pt;exports.SocialLoginButton=d;exports.SocialLoginButtons=Y;exports.SocialProviders=F;exports.SteamLoginButton=qt;exports.TiktokLoginButton=St;exports.TwitchLoginButton=It;exports.TwitterLoginButton=wt;exports.WeChatLoginButton=$t;exports.WhatsAppLoginButton=Tt;exports.XLoginButtin=bt;exports.XboxLoginButton=Ct;exports.YahooLoginButton=Et;exports.authSchemas=ct;exports.calculatePasswordStrength=U;exports.createPasswordSchema=z;exports.createSignInSchema=E;exports.createSignUpSchema=O;exports.createSocialLoginUrl=et;exports.defaultPasswordRules=B;exports.defaultSignInSchema=st;exports.defaultSignUpSchema=it;exports.emailSchema=x;exports.formatAuthError=nt;exports.formatProviderName=N;exports.formatSocialLoginText=tt;exports.generateRandomString=D;exports.getProviderColor=Q;exports.getProviderIcon=K;exports.isBrowser=rt;exports.isValidEmail=ot;exports.openSocialLoginPopup=at;exports.providerInfo=T;exports.requestToControllerValidation=$;exports.resetPasswordSchema=R;exports.socialProviderInfo=u;exports.useAuthEmailProp=M;exports.validateEmail=lt;exports.validatePassword=mt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@tempots/dom"),p=require("../use-form-B4D58mxd.cjs"),g=require("../modal-rLbLQYhb.cjs"),y=require("../translations-C7HVMcOQ.cjs"),P=require("../notice-BGaJ4k0O.cjs"),q=require("../translations-hMQlZmD4.cjs"),J=require("@tempots/ui"),T={google:{name:"Google",icon:"logos:google-icon",color:"#4285f4"},github:{name:"GitHub",icon:"logos:github-icon",color:"#333"},apple:{name:"Apple",icon:"logos:apple",color:"#000"},facebook:{name:"Facebook",icon:"logos:facebook",color:"#1877f2"},twitter:{name:"Twitter",icon:"logos:twitter",color:"#1da1f2"},microsoft:{name:"Microsoft",icon:"logos:microsoft-icon",color:"#00a4ef"},discord:{name:"Discord",icon:"logos:discord-icon",color:"#5865f2"},linkedin:{name:"LinkedIn",icon:"logos:linkedin-icon",color:"#0077b5"},instagram:{name:"Instagram",icon:"logos:instagram-icon",color:"#e4405f"},tiktok:{name:"TikTok",icon:"logos:tiktok-icon",color:"#000"},snapchat:{name:"Snapchat",icon:"logos:snapchat-icon",color:"#fffc00"},reddit:{name:"Reddit",icon:"logos:reddit-icon",color:"#ff4500"},pinterest:{name:"Pinterest",icon:"logos:pinterest-icon",color:"#bd081c"},twitch:{name:"Twitch",icon:"logos:twitch",color:"#9146ff"},steam:{name:"Steam",icon:"logos:steam-icon",color:"#000"},epic:{name:"Epic Games",icon:"simple-icons:epicgames",color:"#313131"},playstation:{name:"PlayStation",icon:"logos:playstation-icon",color:"#003791"},xbox:{name:"Xbox",icon:"logos:xbox-icon",color:"#107c10"},whatsapp:{name:"WhatsApp",icon:"logos:whatsapp-icon",color:"#25d366"},wechat:{name:"WeChat",icon:"logos:wechat-icon",color:"#1aad19"},amazon:{name:"Amazon",icon:"logos:amazon-icon",color:"#ff9900"},yahoo:{name:"Yahoo",icon:"logos:yahoo-icon",color:"#720e9e"},paypal:{name:"PayPal",icon:"logos:paypal",color:"#0070ba"},x:{name:"X",icon:"simple-icons:x",color:"#000"}};function N(o){return T[o]?.name||o}function K(o){return T[o]?.icon||"mdi:account"}function Q(o){return T[o]?.color||"#666"}function tt(o,e="Continue with {provider}"){return e.replace("{provider}",N(o))}const B={minLength:8,requireUppercase:!0,requireLowercase:!0,requireNumbers:!0,requireSymbols:!1};function ot(o){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o)}function D(o=32){const e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let i="";for(let l=0;l<o;l++)i+=e.charAt(Math.floor(Math.random()*e.length));return i}function et(o,e,i,l=[],c={}){const n={google:"https://accounts.google.com/oauth/authorize",github:"https://github.com/login/oauth/authorize",apple:"https://appleid.apple.com/auth/authorize",facebook:"https://www.facebook.com/v18.0/dialog/oauth",twitter:"https://twitter.com/i/oauth2/authorize",microsoft:"https://login.microsoftonline.com/common/oauth2/v2.0/authorize",discord:"https://discord.com/api/oauth2/authorize",linkedin:"https://www.linkedin.com/oauth/v2/authorization",instagram:"https://api.instagram.com/oauth/authorize",tiktok:"https://www.tiktok.com/v2/auth/authorize",snapchat:"https://accounts.snapchat.com/accounts/oauth2/authorize",reddit:"https://www.reddit.com/api/v1/authorize",pinterest:"https://api.pinterest.com/oauth/",twitch:"https://id.twitch.tv/oauth2/authorize",steam:"https://steamcommunity.com/oauth/authorize",epic:"https://auth.epicgames.com/authorize",playstation:"https://auth.api.sonyentertainmentnetwork.com/oauth/authorize",xbox:"https://login.live.com/oauth20_authorize.srf",whatsapp:"https://web.whatsapp.com/oauth/authorize",wechat:"https://open.weixin.qq.com/connect/qrconnect",amazon:"https://www.amazon.com/ap/oa",yahoo:"https://api.login.yahoo.com/oauth2/request_auth",paypal:"https://www.paypal.com/signin/authorize",x:"https://api.twitter.com/oauth2/authorize"},m={google:["openid","email","profile"],github:["user:email"],apple:["email","name"],facebook:["email"],twitter:["users.read"],microsoft:["openid","email","profile"],discord:["identify","email"],linkedin:["r_liteprofile","r_emailaddress"],instagram:["user_profile","user_media"],tiktok:["user.info.basic","user.external.id"],snapchat:["user.info.basic","user.external.id"],reddit:["identity","email"],pinterest:["read_public","read_relationships"],twitch:["openid","email","profile"],steam:["openid","email","profile"],epic:["openid","email","profile"],playstation:["openid","email","profile"],xbox:["openid","email","profile"],whatsapp:["openid","email","profile"],wechat:["openid","email","profile"],amazon:["openid","email","profile"],yahoo:["openid","email","profile"],paypal:["openid","email","profile"],x:["openid","email","profile"]},a=n[o];if(!a)throw new Error(`Unsupported provider: ${o}`);const r=l.length>0?l:m[o],s=D(),h=new URLSearchParams({client_id:e,redirect_uri:i,scope:r.join(" "),state:s,response_type:"code",...c});return`${a}?${h.toString()}`}function at(o,e,i,l){const c=window.open(o,`${e}_login`,"width=500,height=600,scrollbars=yes,resizable=yes");if(!c){l?.(new Error("Failed to open popup window"));return}const n=setInterval(()=>{c.closed&&(clearInterval(n),l?.(new Error("Login cancelled")))},1e3),m=a=>{a.origin===window.location.origin&&(a.data.type==="SOCIAL_LOGIN_SUCCESS"?(clearInterval(n),c.close(),window.removeEventListener("message",m),i?.(a.data.result)):a.data.type==="SOCIAL_LOGIN_ERROR"&&(clearInterval(n),c.close(),window.removeEventListener("message",m),l?.(new Error(a.data.error))))};window.addEventListener("message",m)}function nt(o){return o instanceof Error?o.message:typeof o=="string"?o:o&&typeof o=="object"&&"message"in o?String(o.message):"An unexpected error occurred"}function rt(){return typeof window<"u"&&typeof document<"u"}function $({task:o,message:e,onStart:i,onEnd:l}){return async c=>{i?.();const n=await p.taskToValidation({task:o!=null?()=>o(c):async()=>null,errorMessage:e,errorPath:["root"],validation:m=>m!=null?p.a.invalid({message:m}):p.a.valid});return l?.(),n}}function z(o=B){let e=g.string();return o.minLength&&(e=e.min(o.minLength,`Password must be at least ${o.minLength} characters`)),o.requireUppercase&&(e=e.regex(/[A-Z]/,"Password must contain at least one uppercase letter")),o.requireLowercase&&(e=e.regex(/[a-z]/,"Password must contain at least one lowercase letter")),o.requireNumbers&&(e=e.regex(/[0-9]/,"Password must contain at least one number")),o.requireSymbols&&(e=e.regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,"Password must contain at least one special character")),o.customValidation&&(e=e.refine(i=>o.customValidation(i))),e}const x=g.string().min(1,"Email is required").email("Please enter a valid email address");function E(o){const e=o?z(o):g.string().refine(i=>i.length>0?null:"Password is required");return g.object({email:x,password:e,rememberMe:g.boolean().default(!1)}).schema()}function O(o=B,e){const i=z(o),l=e?.showNameField!==!1,c=e?.showConfirmPassword!==!1,n=e?.showAcceptTermsAndConditions!==!1,m={name:l?g.string().min(1,"Name is required").optional():g.string().optional(),email:x,password:i,confirmPassword:c?g.string().min(1,"Please confirm your password"):g.string(),acceptTerms:n?g.boolean().refine(r=>r===!0,"You must accept the terms and conditions"):g.boolean().default(!0)},a=g.object(m);return c?a.refine(r=>r.password===r.confirmPassword?null:"Passwords don't match",{path:["confirmPassword"]}).schema():a.schema()}const R=g.object({email:x}).schema(),st=E(),it=O(),ct={signIn:E,signUp:O,resetPassword:()=>R};function lt(o){const e=x.validate(o);return e.success?null:e.errors[0]?.message||"Invalid email"}function mt(o,e=B){const l=z(e).validate(o);return l.success?null:l.errors[0]?.message||"Invalid password"}function U(o,e=B){const i={length:o.length>=(e.minLength||8),uppercase:/[A-Z]/.test(o),lowercase:/[a-z]/.test(o),numbers:/[0-9]/.test(o),symbols:/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/.test(o),custom:e.customValidation?e.customValidation(o)===null:o.length>0},l=[!0,e.requireUppercase,e.requireLowercase,e.requireNumbers,e.requireSymbols,!!e.customValidation].filter(Boolean).length,c=[i.length,e.requireUppercase?i.uppercase:null,e.requireLowercase?i.lowercase:null,e.requireNumbers?i.numbers:null,e.requireSymbols?i.symbols:null,e.customValidation?i.custom:null].filter(a=>a===!0).length,n=l>0?Math.round(c/l*100):0;let m;return n<40?m="weak":n<60?m="fair":n<80?m="good":m="strong",{strength:m,score:n,checks:i}}const M=()=>t.localStorageProp({key:"bui_auth_email",defaultValue:null});function G({onSignIn:o,passwordRules:e,labels:i,showRememberMe:l}){const c=t.prop(!1),n=M(),m=E(e),a=p.useForm({schema:m,onSubmit:$({task:o,message:"Reset password failed",onStart:()=>{c.set(!0),a.controller.disable()},onEnd:()=>{c.set(!1),a.controller.enable()}}),initialValue:{email:"",password:""}}),{controller:r,submit:s}=a;c.on(r.setDisabled);const h=r.field("email"),f=r.field("password");return n.on(b=>{b!=null&&h.change(b)}),h.signal.on(b=>{n.value!=null&&(n.value=b)}),t.Use(y.AuthI18n,b=>t.html.form(t.attr.class("bc-auth-form__form"),t.on.submit(s),p.Stack(t.attr.class("bc-auth-form__fields"),t.Ensure(r.error,L=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(L))),p.Control(P.EmailInput,{controller:h,label:t.coalesce(i?.emailLabel,b.$.emailLabel)}),p.Control(P.PasswordInput,{controller:f,label:t.coalesce(i?.passwordLabel,b.$.passwordLabel)}),t.When(l??!0,()=>t.html.div(t.attr.class("bc-auth-form__remember-me"),t.html.label(t.attr.class("bc-auth-form__checkbox-label"),p.CheckboxInput({value:n.map(L=>L!=null),after:t.html.span(t.coalesce(i?.rememberMeLabel,b.$.rememberMeLabel)),onChange:L=>{L?n.value=h.signal.value??"":n.value=null}}))))),q.Button({type:"submit",variant:"filled",color:"primary",loading:c,disabled:r.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(i?.signInButton,b.$.signInButton))))}function j({password:o,rules:e=B,showLabel:i=!0,className:l}){const c=t.computedOf(o)(s=>!s||s.length===0?{strength:"weak",score:0,checks:{length:!1,uppercase:!1,lowercase:!1,numbers:!1,symbols:!1,custom:!1}}:U(s,e)),n=c.map(s=>s.strength),m=c.map(s=>s.score),a=c.map(s=>s.checks),r=t.computedOf(n,l)((s,h)=>["bc-password-strength",`bc-password-strength--${s}`,h].filter(Boolean).join(" "));return t.html.div(t.attr.class(r),t.html.div(t.attr.class("bc-password-strength__bar"),t.html.div(t.attr.class("bc-password-strength__fill"),t.attr.style(m.map(s=>`width: ${s}%`)))),t.When(i,()=>t.Use(y.AuthI18n,s=>t.html.div(t.attr.class("bc-password-strength__label"),t.computedOf(n,s)((h,f)=>{switch(h){case"weak":return f.passwordStrengthWeak;case"fair":return f.passwordStrengthFair;case"good":return f.passwordStrengthGood;case"strong":return f.passwordStrengthStrong;default:return f.passwordStrengthWeak}})))),t.html.div(t.attr.class("bc-password-strength__requirements"),t.When(e.minLength!==void 0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.length?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.length?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),`At least ${e.minLength} characters`))),t.When(e.requireUppercase===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.uppercase?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.uppercase?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One uppercase letter"))),t.When(e.requireLowercase===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.lowercase?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.lowercase?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One lowercase letter"))),t.When(e.requireNumbers===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.numbers?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.numbers?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One number"))),t.When(e.requireSymbols===!0,()=>t.html.div(t.attr.class("bc-password-strength__requirement"),t.attr.class(t.computedOf(a)(s=>s.symbols?"bc-password-strength__requirement--met":"")),t.html.span(t.attr.class("bc-password-strength__requirement-icon"),t.computedOf(a)(s=>s.symbols?"✓":"○")),t.html.span(t.attr.class("bc-password-strength__requirement-text"),"One special character")))))}function ut({password:o,rules:e=B,className:i}){const l=t.computedOf(o)(a=>!a||a.length===0?{strength:"weak",score:0}:U(a,e)),c=l.map(a=>a.strength),n=l.map(a=>a.score),m=t.computedOf(c,i)((a,r)=>["bc-password-strength-bar",`bc-password-strength-bar--${a}`,r].filter(Boolean).join(" "));return t.html.div(t.attr.class(m),t.html.div(t.attr.class("bc-password-strength-bar__fill"),t.attr.style(n.map(a=>`width: ${a}%`))))}function dt({password:o,rules:e=B,className:i}){const l=t.computedOf(o)(n=>!n||n.length===0?"weak":U(n,e).strength),c=t.computedOf(l,i)((n,m)=>["bc-password-strength-text",`bc-password-strength-text--${n}`,m].filter(Boolean).join(" "));return t.Fragment(t.Use(y.AuthI18n,n=>t.html.span(t.attr.class(c),t.computedOf(l,n)((m,a)=>{switch(m){case"weak":return a.passwordStrengthWeak;case"fair":return a.passwordStrengthFair;case"good":return a.passwordStrengthGood;case"strong":return a.passwordStrengthStrong;default:return a.passwordStrengthWeak}}))))}function H({passwordRules:o,labels:e,initialEmail:i,initialName:l,showPasswordStrength:c,onSignUp:n,showNameField:m,showConfirmPassword:a,showAcceptTermsAndConditions:r,termsAndConditions:s}){const h=t.prop(!1),f=o||B,b=O(f,{showNameField:m!==!1,showConfirmPassword:a!==!1,showAcceptTermsAndConditions:r!==!1}),L=p.useForm({schema:b,onSubmit:$({task:n!=null?_=>n({email:_.email,password:_.password,name:_.name,acceptTerms:_.acceptTerms}):void 0,message:"Reset password failed",onStart:()=>{h.set(!0),L.controller.disable()},onEnd:()=>{h.set(!1),L.controller.enable()}}),initialValue:{name:l??"",email:i??"",password:"",confirmPassword:"",acceptTerms:!1}}),{controller:k,submit:I}=L;h.on(k.setDisabled);const v=k.field("name"),A=k.field("email"),C=k.field("password"),W=k.field("confirmPassword"),S=k.field("acceptTerms");return t.Use(y.AuthI18n,_=>t.html.form(t.attr.class("bc-auth-form__form"),t.on.submit(I),p.Stack(t.attr.class("bc-auth-form__fields"),t.Ensure(k.error,w=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(w))),t.When(m!==!1,()=>p.Control(q.TextInput,{controller:v.transform(w=>w??"",w=>w===""?void 0:w),label:t.coalesce(e?.nameLabel,_.$.nameLabel)})),p.Control(P.EmailInput,{controller:A,label:t.coalesce(e?.emailLabel,_.$.emailLabel)}),p.Control(P.PasswordInput,{controller:C,label:t.coalesce(e?.passwordLabel,_.$.passwordLabel)}),t.When(c??!1,()=>j({password:C.signal,rules:f,showLabel:!0})),t.When(a??!1,()=>p.Control(P.PasswordInput,{controller:W,label:t.coalesce(e?.confirmPasswordLabel,_.$.confirmPasswordLabel)})),t.When(r??!1,()=>t.html.div(t.attr.class("bc-auth-form__terms"),t.html.label(t.attr.class("bc-auth-form__checkbox-label"),p.CheckboxInput({value:S.signal.map(w=>w??!1),onChange:w=>S.change(w)}),t.html.span(s||t.coalesce(e?.acceptTermsLabel,_.$.acceptTermsLabel))),t.When(S.errorVisible,()=>t.html.div(t.attr.class("bc-auth-form__field-error"),S.error.map(w=>w||"")))))),q.Button({type:"submit",variant:"filled",color:"primary",loading:h,disabled:k.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(e?.signUpButton,_.$.signUpButton))))}function X({onResetPassword:o,labels:e={}}){const i=M(),l=t.prop(!1),c=p.useForm({schema:R,onSubmit:$({task:o,message:"Reset password failed",onStart:()=>{l.set(!0),c.controller.disable()},onEnd:()=>{l.set(!1),c.controller.enable()}}),initialValue:{email:""}}),{controller:n,submit:m}=c;l.on(n.setDisabled);const a=n.field("email");return i.on(r=>{r!=null&&a.change(r)}),t.Use(y.AuthI18n,r=>t.html.form(t.attr.class("bc-auth-form__form"),t.Ensure(n.error,s=>P.Notice({variant:"danger",tone:"prominent",role:"alert"},t.html.div(s))),t.html.p(t.attr.class("bc-auth-form__description"),t.coalesce(e?.resetPasswordDescription,r.$.resetPasswordDescription)),t.on.submit(m),p.Stack(t.attr.class("bc-auth-form__fields"),p.Control(P.EmailInput,{controller:a,label:t.coalesce(e?.emailLabel,r.$.emailLabel)})),q.Button({loading:l,type:"submit",variant:"filled",color:"primary",disabled:n.disabledOrHasErrors},t.attr.class("bc-auth-form__submit"),t.coalesce(e?.resetPasswordButton,r.$.resetPasswordButton))))}function d({provider:o,onClick:e,size:i="md",name:l,icon:c,color:n,flow:m,labels:a}){const r=async()=>{if(e)try{m==="popup"?await e():await e()}catch(s){console.error(`Social login error for ${o} (${m||"redirect"} flow):`,s)}};return q.Button({type:"button",variant:"filled",size:i,color:n,onClick:r,roundedness:"full"},t.attr.class("bc-social-login-button"),t.attr.class(t.computedOf(o)(s=>`bc-social-login-button--${s}`)),t.html.span(t.attr.class("bc-social-login-button__inner"),t.html.span(t.attr.class("bc-social-login-button__icon"),q.Icon({icon:c,size:i},t.attr.class("bc-social-login-button__icon-inner"))),t.Use(y.AuthI18n,s=>t.html.span(t.attr.class("bc-social-login-button__label"),t.bind(t.coalesce(a?.continueWithProvider,s.$.continueWithProvider))(l)))))}function Y({providers:o,onProviderClick:e,size:i="md",className:l}){return p.Stack(t.attr.class("bc-social-login-buttons"),t.attr.class(l),t.ForEach(o,c=>d({provider:c.$.provider,flow:c.$.flow,color:c.map(({provider:n})=>u[n].color),name:c.map(({provider:n})=>u[n].name),icon:c.map(({provider:n})=>u[n].icon),onClick:async()=>{e&&await e(c.$.provider.value)},size:i})))}const u={google:{name:"Google",icon:"logos:google-icon",color:"red"},github:{name:"GitHub",icon:"logos:github-icon",color:"black"},apple:{name:"Apple",icon:"logos:apple",color:"stone"},facebook:{name:"Facebook",icon:"logos:facebook",color:"blue"},twitter:{name:"Twitter",icon:"logos:twitter",color:"sky"},x:{name:"X",icon:"logos:x",color:"zinc"},microsoft:{name:"Microsoft",icon:"logos:microsoft-icon",color:"amber"},discord:{name:"Discord",icon:"logos:discord-icon",color:"indigo"},linkedin:{name:"LinkedIn",icon:"logos:linkedin-icon",color:"cyan"},instagram:{name:"Instagram",icon:"logos:instagram-icon",color:"fuchsia"},tiktok:{name:"TikTok",icon:"logos:tiktok-icon",color:"teal"},snapchat:{name:"Snapchat",icon:"streamline-logos:snapchat-logo-solid",color:"yellow"},reddit:{name:"Reddit",icon:"logos:reddit-icon",color:"orange"},pinterest:{name:"Pinterest",icon:"logos:pinterest",color:"rose"},twitch:{name:"Twitch",icon:"logos:twitch",color:"purple"},steam:{name:"Steam",icon:"logos:steam",color:"slate"},epic:{name:"Epic Games",icon:"streamline-logos:epic-games-logo-solid",color:"neutral"},playstation:{name:"PlayStation",icon:"streamline-logos:playstation-logo-solid",color:"violet"},xbox:{name:"Xbox",icon:"streamline-logos:xbox-live-logo-solid",color:"green"},whatsapp:{name:"WhatsApp",icon:"logos:whatsapp-icon",color:"emerald"},wechat:{name:"WeChat",icon:"streamline-logos:wechat-logo",color:"lime"},amazon:{name:"Amazon",icon:"streamline-logos:amazon-logo-solid",color:"red"},yahoo:{name:"Yahoo",icon:"logos:yahoo",color:"rose"},paypal:{name:"PayPal",icon:"logos:paypal",color:"blue"}},pt=o=>d({...o,...u.google,provider:"google"}),ht=o=>d({...o,...u.github,provider:"github"}),gt=o=>d({...o,...u.apple,provider:"apple"}),ft=o=>d({...o,...u.facebook,provider:"facebook"}),bt=o=>d({...o,...u.x,provider:"x"}),wt=o=>d({...o,...u.twitter,provider:"twitter"}),Lt=o=>d({...o,...u.microsoft,provider:"microsoft"}),_t=o=>d({...o,...u.discord,provider:"discord"}),kt=o=>d({...o,...u.linkedin,provider:"linkedin"}),vt=o=>d({...o,...u.instagram,provider:"instagram"}),St=o=>d({...o,...u.tiktok,provider:"tiktok"}),Pt=o=>d({...o,...u.snapchat,provider:"snapchat"}),yt=o=>d({...o,...u.reddit,provider:"reddit"}),Bt=o=>d({...o,...u.pinterest,provider:"pinterest"}),It=o=>d({...o,...u.twitch,provider:"twitch"}),qt=o=>d({...o,...u.steam,provider:"steam"}),xt=o=>d({...o,...u.epic,provider:"epic"}),At=o=>d({...o,...u.playstation,provider:"playstation"}),Ct=o=>d({...o,...u.xbox,provider:"xbox"}),Tt=o=>d({...o,...u.whatsapp,provider:"whatsapp"}),$t=o=>d({...o,...u.wechat,provider:"wechat"}),zt=o=>d({...o,...u.amazon,provider:"amazon"}),Et=o=>d({...o,...u.yahoo,provider:"yahoo"}),Ot=o=>d({...o,...u.paypal,provider:"paypal"});function F({providers:o}){return p.Stack(Y({providers:o}))}function Z({mode:o,socialProviders:e,initialName:i,initialEmail:l,passwordRules:c,showRememberMe:n,showSocialDivider:m,showPasswordStrength:a,labels:r,onSignIn:s,onSignUp:h,onResetPassword:f,onModeChange:b,showContainer:L},...k){const I=o!=null?t.Value.deriveProp(o):t.prop("signin");return I.on(v=>b?.(v)),t.Use(y.AuthI18n,v=>{function A(){const S=t.coalesce(r?.hasAccountLink,v.$.hasAccountLink);return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("signin")),S)}function C(){return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("signup")),t.coalesce(r?.noAccountLink,v.$.noAccountLink))}function W(){return t.html.button(t.attr.type("button"),t.attr.class("bc-auth-form__link"),t.on.click(()=>I.set("reset-password")),t.coalesce(r?.forgotPasswordLink,v.$.forgotPasswordLink))}return t.html.div(J.classes({"bc-auth-container":!0,"bc-auth-container--styled":t.Value.map(L??!0,S=>S)}),t.attr.class(I.map(S=>`bc-auth-container--${S}`)),t.attr.class("bc-auth-form"),t.OneOfValue(I,{signin:()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.signInTitle,v.$.signInTitle)),e!=null?t.Fragment(F({providers:e}),t.When(m??!1,V)):null,G({onSignIn:s,showRememberMe:n,passwordRules:c,labels:{emailLabel:r?.emailLabel,passwordLabel:r?.passwordLabel,rememberMeLabel:r?.rememberMeLabel,signInButton:r?.signInButton,forgotPasswordLink:r?.forgotPasswordLink,noAccountLink:r?.noAccountLink}}),p.Stack(t.attr.class("bc-auth-form__footer"),C(),W())),signup:()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.signUpTitle,v.$.signUpTitle)),e!=null?t.Fragment(F({providers:e}),t.When(m??!1,V)):null,H({labels:{nameLabel:r?.nameLabel,emailLabel:r?.emailLabel,passwordLabel:r?.passwordLabel,confirmPasswordLabel:r?.confirmPasswordLabel,acceptTermsLabel:r?.acceptTermsLabel,signUpButton:r?.signUpButton,hasAccountLink:r?.hasAccountLink},initialEmail:l,initialName:i,onSignUp:h,passwordRules:c,showPasswordStrength:a}),p.Stack(t.attr.class("bc-auth-form__footer"),A())),"reset-password":()=>t.Fragment(t.html.h2(t.attr.class("bc-auth-form__title"),t.coalesce(r?.resetPasswordTitle,v.$.resetPasswordTitle)),X({labels:{backToSignInLink:r?.backToSignInLink,emailLabel:r?.emailLabel,resetPasswordButton:r?.resetPasswordButton,resetPasswordDescription:r?.resetPasswordDescription},onResetPassword:f}),p.Stack(t.attr.class("bc-auth-form__footer"),A()))}),...k)})}function Ut(o){return g.Modal({size:"sm",dismissable:!0,showCloseButton:!0},(e,i)=>o(l=>e({body:Z({showContainer:!1,...l}),header:t.Use(y.AuthI18n,c=>t.coalesce(l.modalTitle,c.$.authenticationTitle))})))}function V({labels:o,className:e}={}){return t.html.div(t.attr.class("bc-auth-divider"),t.attr.class(e),t.html.div(t.attr.class("bc-auth-divider__line")),t.Use(y.AuthI18n,i=>t.html.span(t.attr.class("bc-auth-divider__text"),t.coalesce(o?.text,i.$.orDivider))),t.html.div(t.attr.class("bc-auth-divider__line")))}exports.AmazonLoginButton=zt;exports.AppleLoginButton=gt;exports.AuthContainer=Z;exports.AuthDivider=V;exports.AuthModal=Ut;exports.DiscordLoginButton=_t;exports.EpicLoginButton=xt;exports.FacebookLoginButton=ft;exports.GitHubLoginButton=ht;exports.GoogleLoginButton=pt;exports.InstagramLoginButton=vt;exports.LinkedInLoginButton=kt;exports.MicrosoftLoginButton=Lt;exports.PasswordStrengthBar=ut;exports.PasswordStrengthIndicator=j;exports.PasswordStrengthText=dt;exports.PayPalLoginButton=Ot;exports.PinterestLoginButton=Bt;exports.PlayStationLoginButton=At;exports.RedditLoginButton=yt;exports.ResetPasswordForm=X;exports.SignInForm=G;exports.SignUpForm=H;exports.SnapchatLoginButton=Pt;exports.SocialLoginButton=d;exports.SocialLoginButtons=Y;exports.SocialProviders=F;exports.SteamLoginButton=qt;exports.TiktokLoginButton=St;exports.TwitchLoginButton=It;exports.TwitterLoginButton=wt;exports.WeChatLoginButton=$t;exports.WhatsAppLoginButton=Tt;exports.XLoginButtin=bt;exports.XboxLoginButton=Ct;exports.YahooLoginButton=Et;exports.authSchemas=ct;exports.calculatePasswordStrength=U;exports.createPasswordSchema=z;exports.createSignInSchema=E;exports.createSignUpSchema=O;exports.createSocialLoginUrl=et;exports.defaultPasswordRules=B;exports.defaultSignInSchema=st;exports.defaultSignUpSchema=it;exports.emailSchema=x;exports.formatAuthError=nt;exports.formatProviderName=N;exports.formatSocialLoginText=tt;exports.generateRandomString=D;exports.getProviderColor=Q;exports.getProviderIcon=K;exports.isBrowser=rt;exports.isValidEmail=ot;exports.openSocialLoginPopup=at;exports.providerInfo=T;exports.requestToControllerValidation=$;exports.resetPasswordSchema=R;exports.socialProviderInfo=u;exports.useAuthEmailProp=M;exports.validateEmail=lt;exports.validatePassword=mt;
|
package/dist/auth/index.es.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { localStorageProp as ie, prop as V, Use as x, html as i, attr as t, on as z, When as b, coalesce as h, Ensure as D, computedOf as g, Fragment as C, bind as ce, ForEach as le, Value as ee, OneOfValue as me } from "@tempots/dom";
|
|
2
|
-
import { t as ue, a as oe, u as W, S as $, b as se, c as I } from "../use-form-
|
|
3
|
-
import { s as A, o as G, b as N, M as de } from "../modal-
|
|
2
|
+
import { t as ue, a as oe, u as W, S as $, b as se, c as I } from "../use-form-DzA1RSrN.js";
|
|
3
|
+
import { s as A, o as G, b as N, M as de } from "../modal--5-j6x0s.js";
|
|
4
4
|
import { AuthI18n as q } from "../translations-BmsRhth7.js";
|
|
5
|
-
import { P as R, E as H, N as j } from "../notice-
|
|
5
|
+
import { P as R, E as H, N as j } from "../notice-BvS1_9Va.js";
|
|
6
6
|
import { B as F, T as pe, c as he } from "../translations-DQxouiBG.js";
|
|
7
7
|
import { classes as ge } from "@tempots/ui";
|
|
8
8
|
const X = {
|
package/dist/beatui.css
CHANGED
|
@@ -4227,10 +4227,15 @@ a:focus-visible {
|
|
|
4227
4227
|
height: 1.8rem;
|
|
4228
4228
|
}
|
|
4229
4229
|
|
|
4230
|
-
.bc-input-container__reset:hover {
|
|
4230
|
+
.bc-input-container__reset:hover:not(:disabled) {
|
|
4231
4231
|
background-color: var(--color-neutral-100);
|
|
4232
4232
|
}
|
|
4233
4233
|
|
|
4234
|
+
.bc-input-container__reset:disabled {
|
|
4235
|
+
opacity: 0.3;
|
|
4236
|
+
cursor: default;
|
|
4237
|
+
}
|
|
4238
|
+
|
|
4234
4239
|
/* Tags input wrapper */
|
|
4235
4240
|
.bc-input-container__tags {
|
|
4236
4241
|
display: flex;
|
|
@@ -4304,11 +4309,15 @@ a:focus-visible {
|
|
|
4304
4309
|
fill: var(--text-muted-dark);
|
|
4305
4310
|
}
|
|
4306
4311
|
|
|
4307
|
-
.b-dark .bc-input-container__reset:hover {
|
|
4312
|
+
.b-dark .bc-input-container__reset:hover:not(:disabled) {
|
|
4308
4313
|
background-color: var(--interactive-hover-dark);
|
|
4309
4314
|
fill: var(--text-normal-dark);
|
|
4310
4315
|
}
|
|
4311
4316
|
|
|
4317
|
+
.b-dark .bc-input-container__reset:disabled {
|
|
4318
|
+
opacity: 0.3;
|
|
4319
|
+
}
|
|
4320
|
+
|
|
4312
4321
|
/* Responsive styles */
|
|
4313
4322
|
@media (width >=var(--breakpoint-sm)) {
|
|
4314
4323
|
.bc-input-container {
|
package/dist/beatui.tailwind.css
CHANGED
|
@@ -3902,10 +3902,15 @@ a:focus-visible {
|
|
|
3902
3902
|
height: 1.8rem;
|
|
3903
3903
|
}
|
|
3904
3904
|
|
|
3905
|
-
.bc-input-container__reset:hover {
|
|
3905
|
+
.bc-input-container__reset:hover:not(:disabled) {
|
|
3906
3906
|
background-color: var(--color-neutral-100);
|
|
3907
3907
|
}
|
|
3908
3908
|
|
|
3909
|
+
.bc-input-container__reset:disabled {
|
|
3910
|
+
opacity: 0.3;
|
|
3911
|
+
cursor: default;
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3909
3914
|
/* Tags input wrapper */
|
|
3910
3915
|
.bc-input-container__tags {
|
|
3911
3916
|
display: flex;
|
|
@@ -3979,11 +3984,15 @@ a:focus-visible {
|
|
|
3979
3984
|
fill: var(--text-muted-dark);
|
|
3980
3985
|
}
|
|
3981
3986
|
|
|
3982
|
-
.b-dark .bc-input-container__reset:hover {
|
|
3987
|
+
.b-dark .bc-input-container__reset:hover:not(:disabled) {
|
|
3983
3988
|
background-color: var(--interactive-hover-dark);
|
|
3984
3989
|
fill: var(--text-normal-dark);
|
|
3985
3990
|
}
|
|
3986
3991
|
|
|
3992
|
+
.b-dark .bc-input-container__reset:disabled {
|
|
3993
|
+
opacity: 0.3;
|
|
3994
|
+
}
|
|
3995
|
+
|
|
3987
3996
|
/* Responsive styles */
|
|
3988
3997
|
@media (width >=var(--breakpoint-sm)) {
|
|
3989
3998
|
.bc-input-container {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const t=require("@tempots/dom"),gt=require("./colors-B9fcMxa_.cjs"),bt=require("./timer-DK_yKNwE.cjs"),vt=require("@tempots/ui"),v=require("./translations-hMQlZmD4.cjs"),$=require("./use-form-B4D58mxd.cjs");class xt extends Error{constructor(e="Missing implementation"){super(e),this.name="MissingImplementationError"}}const yt=n=>It(n).split("_").join(" "),It=n=>(n=n.replace(/::/g,"/"),n=n.replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2"),n=n.replace(/([a-z\d])([A-Z])/g,"$1_$2"),n=n.replace(/-/g,"_"),n.toLowerCase()),Vt=n=>n.substring(0,1).toUpperCase()+n.substring(1),wt=n=>{if(typeof Buffer<"u")return Buffer.from(n,"base64").toString("utf8");if(typeof atob<"u")return atob(n);throw new xt("No implementation found for base64 decoding")};function P({onChange:n,value:e,accept:l="*/*",enableClick:r=!0,content:a,disabled:h=!1,allowMultiple:o}){return t.Use(v.BeatUII18n,d=>{const p=t.Value.deriveProp(e??[]),m=t.prop(!1),u=i=>{i.preventDefault(),i.stopPropagation(),m.value=!0},g=i=>{i.preventDefault(),i.stopPropagation(),(!i.currentTarget||!i.currentTarget.contains(i.relatedTarget))&&(m.value=!1)},I=i=>{i.preventDefault(),i.stopPropagation(),m.value=!1;const f=Array.from(i.dataTransfer?.files||[]);f.length>0&&(p.value=f,n(f,"dragdrop"))},c=i=>{t.Value.get(r)&&i.currentTarget.querySelector('input[type="file"]')?.click()};let b=null;const x=()=>{if(b==null)return;const i=Array.from(b.files??[]);i.length>0&&(p.value=i,n(i,"click")),b.value=""},C=i=>{t.Value.get(r)&&(i.key==="Enter"||i.key===" ")&&(i.preventDefault(),c(i))};return t.html.div(t.attr.role("button"),t.attr.tabindex(t.Value.map(r,i=>i?0:-1)),t.attr.style("position: relative;"),t.on.dragover(u),t.on.dragleave(g),t.on.drop(I),t.on.click(c),t.on.keydown(C),t.html.input(t.attr.type("file"),t.attr.disabled(h),t.attr.accept(l),t.attr.multiple(o),t.attr.style("position: absolute; left: -9999px; opacity: 0; pointer-events: none;"),t.on.change(x),t.WithElement(i=>(b=i,p.on(f=>{const _=globalThis.DataTransfer;if(_!=null){const k=new _;f.forEach(O=>k.items.add(O)),i.files=k.files}}),t.Empty))),t.aria.label(t.bind(d.$.dropZoneInstructions)(r)),a({files:p,clear:()=>p.value=[],change:p.set}))})}function Ct(n,e){return n.length===e.length&&n.every((l,r)=>l===e[r])}function _t(n,e){const l=["bc-segmented-input",`bc-segmented-input--size-${n}`];return e&&l.push("bc-segmented-input--disabled"),l.join(" ")}function kt({options:n,value:e,onChange:l,size:r="md",disabled:a=!1},...h){const o=gt.f(n).map(([d,p])=>({key:d,label:p}));return t.WithElement(()=>{const d=Object.fromEntries(o.map((m,u)=>[m.key,u])),p=t.prop(o.map(()=>({left:0,width:0})),Ct);return t.html.div(t.attr.class(t.computedOf(r,a)((m,u)=>_t(m??"md",u??!1))),t.html.div(t.attr.class("bc-segmented-input__container"),t.html.div(t.attr.class("bc-segmented-input__indicator"),t.style.width(t.computedOf(e,p)((m,u)=>{const{width:g}=u[d[m]??0];return`${g}px`})),t.style.left(t.computedOf(e,p)((m,u)=>{const{left:g}=u[d[m]??0];return`${g}px`}))),o.map(({label:m,key:u},g)=>t.html.button(t.attr.type("button"),t.on.click(I=>{I.preventDefault(),t.Value.get(a)||l?.(u)}),t.attr.disabled(a),t.attr.class("bc-segmented-input__segment"),t.attr.class(t.Value.map(e,I=>I===u?"bc-segmented-input__segment--active":"bc-segmented-input__segment--inactive")),vt.ElementRect(I=>{function c(){p.update(x=>{const C=[...x];return C[g]={width:I.value.width,left:I.value.localLeft},C})}const b=bt.g(c);return t.OnDispose(b,I.on(c))}),m))),...h)})}function Et(n){const e=n.type.toLowerCase();return e.startsWith("image/")&&(e.includes("jpeg")||e.includes("jpg")||e.includes("png")||e.includes("gif")||e.includes("webp")||e.includes("svg"))}function Dt(n){const e=n.type.toLowerCase();return e.startsWith("image/")?"vscode-icons:file-type-image":e.startsWith("video/")?"vscode-icons:file-type-video":e.startsWith("audio/")?"vscode-icons:file-type-audio":e.includes("pdf")?"vscode-icons:file-type-pdf2":e.includes("word")||e.includes("document")?"vscode-icons:file-type-word":e.includes("excel")||e.includes("spreadsheet")?"vscode-icons:file-type-excel":e.includes("powerpoint")||e.includes("presentation")?"vscode-icons:file-type-powerpoint":e.includes("zip")||e.includes("archive")?"vscode-icons:file-type-zip":e.includes("text")?"vscode-icons:file-type-text":e.includes("json")?"vscode-icons:file-type-json-official":e.includes("csv")?"vscode-icons:file-type-csv":e.includes("xml")?"vscode-icons:file-type-xml":e.includes("yaml")?"vscode-icons:file-type-yaml-official":"vscode-icons:file-type-binary"}function q(n){return t.When(n.map(Et),()=>{const e=t.prop(null);return n.on(l=>{e.value&&URL.revokeObjectURL(e.value);const r=URL.createObjectURL(l);e.value=r}),t.html.div(t.OnDispose(()=>{e.value&&URL.revokeObjectURL(e.value)}),t.attr.class("bc-file-input__thumbnail-container"),t.html.img(t.attr.src(e),t.attr.alt(n.map(l=>l.name)),t.attr.class("bc-file-input__thumbnail")))},()=>v.Icon({icon:n.map(Dt)}))}const Ut=(n,...e)=>{const{value:l=t.prop([]),accept:r="*/*",maxFiles:a,maxFileSize:h,onChange:o,onBlur:d,disabled:p,hasError:m,mode:u="default",showFileList:g=!0,...I}=n,c=l,b=t.Value.map(u,w=>w==="input"),x=t.Value.map(u,w=>w==="compact"),C=w=>{let s=w;if(a!=null){const y=t.Value.get(a);s=s.slice(0,y)}if(h){const y=t.Value.get(h);s=s.filter(E=>E.size<=y)}o?.(s)},i=w=>{const y=c.value.filter((E,D)=>D!==w);o?.(y)},f=()=>{o?.([])},_=({files:w,clear:s,change:y})=>t.Use(v.BeatUII18n,E=>t.html.div(t.attr.class("bc-file-input__drop-zone"),t.html.div(t.attr.class("bc-file-input__drop-zone-content bc-file-input__drop-zone-content--empty"),v.Icon({icon:"mdi:cloud-upload-outline",size:"xl"}),t.html.div(t.attr.class("bc-file-input__drop-zone-text"),t.bind(E.$.filesInputInstructions)(a,h,E.$.fileSizeUnits.value))))),k=({files:w})=>t.Use(v.BeatUII18n,s=>t.html.div(t.attr.class("bc-file-input__compact-drop-zone"),t.When(w.map(y=>y.length>0),()=>t.html.div(t.attr.class("bc-file-input__compact-file-list"),t.ForEach(w,(y,E)=>{const D=E.index;return t.html.div(t.attr.class("bc-file-input__compact-file-item"),t.html.div(t.attr.class("bc-file-input__compact-file-icon"),q(y)),t.html.div(t.attr.class("bc-file-input__compact-file-info"),t.html.div(t.attr.class("bc-file-input__compact-file-name"),t.attr.title(y.$.name),y.$.name),t.html.div(t.attr.class("bc-file-input__compact-file-meta"),t.computedOf(y.$.size,s.$.fileSizeUnits)((V,U)=>v.formatFileSize(V,{units:U}))," • ",t.computedOf(y.$.type,s.$.unknownType)((V,U)=>V||U))),$.CloseButton({size:"sm",label:s.$.removeFile,disabled:p,onClick:()=>i(D)},t.attr.class("bc-file-input__compact-remove-button")))})),()=>t.html.div(t.attr.class("bc-file-input__compact-placeholder"),v.Icon({icon:"mdi:cloud-upload-outline",size:"lg"}),t.html.div(t.attr.class("bc-file-input__compact-placeholder-text"),t.bind(s.$.filesInputInstructions)(a,h,s.$.fileSizeUnits.value)))))),O=({files:w})=>t.Use(v.BeatUII18n,s=>t.html.div(t.attr.class("bc-file-input__compact-input"),t.When(w.map(y=>y.length>0),()=>t.html.span(t.attr.class("bc-file-input__compact-value"),t.ForEach(w,y=>t.html.span(t.attr.class("bc-file-input__compact-value-item"),q(y),t.html.span(t.attr.class("bc-file-input__compact-value-item-name"),y.$.name)))),()=>t.html.span(t.attr.class("bc-file-input__compact-placeholder"),v.Icon({icon:"mdi:cloud-upload-outline",size:"md"})," ",t.bind(s.$.filesInputInstructions)(a,h,s.$.fileSizeUnits.value)))));return t.Use(v.BeatUII18n,w=>v.InputContainer({baseContainer:t.Value.map(b,s=>!s),disabled:p,hasError:m,after:t.When(b,()=>t.When(c.map(({length:s})=>s>0),()=>$.CloseButton({size:"sm",label:w.$.clearAllFiles,disabled:p,onClick:f},t.attr.class("bc-file-input__compact-clear")))),...I,input:t.When(b,()=>t.html.div(t.attr.class("bc-file-input bc-file-input--input"),P({value:c,accept:r,enableClick:!0,allowMultiple:t.Value.map(a??1/0,s=>s>1),disabled:p,onChange:C,content:O})),()=>t.When(x,()=>t.html.div(t.attr.class("bc-file-input bc-file-input--compact"),P({value:c,accept:r,enableClick:!0,allowMultiple:t.Value.map(a??1/0,s=>s>1),disabled:p,onChange:C,content:k})),()=>t.html.div(t.attr.class("bc-file-input"),P({value:c,accept:r,enableClick:!0,allowMultiple:t.Value.map(a??1/0,s=>s>1),disabled:p,onChange:C,content:_}),t.When(g,()=>t.NotEmpty(c,()=>t.Fragment(t.html.div(t.attr.class("bc-file-input__file-list"),t.ForEach(c,(s,y)=>{const E=y.index;return t.html.div(t.attr.class("bc-file-input__file-item"),t.html.div(t.attr.class("bc-file-input__file-icon"),q(s)),t.html.div(t.attr.class("bc-file-input__file-info"),t.html.div(t.attr.class("bc-file-input__file-name"),t.attr.title(s.$.name),s.$.name),t.html.div(t.attr.class("bc-file-input__file-meta"),t.computedOf(s.$.size,w.$.fileSizeUnits)((D,V)=>v.formatFileSize(D,{units:V}))," • ",t.computedOf(s.$.type,w.$.unknownType)((D,V)=>D||V))),$.CloseButton({size:"sm",label:w.$.removeFile,disabled:p,onClick:()=>i(E)},t.attr.class("bc-file-input__remove-button")))})),t.When(c.map(({length:s})=>s>1),()=>t.html.div(t.attr.class("bc-file-input__clear-all-button-container"),t.html.button(t.attr.type("button"),t.attr.class("bc-file-input__clear-all-button"),t.attr.disabled(p),w.$.clearAllFiles,t.on.click(s=>{s.preventDefault(),s.stopPropagation(),f()}))))))))))},...e))},Y="$$tts-exp-",rt=(n,e)=>t.WithElement(l=>{const r=`${Y}${n}`;return t.OnDispose(t.Value.on(e,a=>Reflect.set(l,r,a)))}),$t=(n,e)=>{const l=`${Y}${n}`;return r=>{e(Reflect.get(r.target,l))}},at=(n,e)=>{const l=`${Y}${n}`;return r=>{const a=r.target,h=a.selectedIndex,o=a.options[h];e(Reflect.get(o,l))}};function N(...n){return t.html.div(t.attr.class("bc-group"),...n)}const ot=(n,e,l)=>t.Ensure(n,r=>t.OneOfType(r,{value:a=>{const h=t.computedOf(a,l)((o,d)=>e(o.value,d));return t.html.option(t.attr.selected(h),rt("value",a.$.value),a.$.label)},group:a=>t.html.optgroup(t.attr.label(a.$.group),t.ForEach(a.$.options,h=>ot(h,e,l))),break:()=>t.html.hr()})),st=n=>{const{value:e,onBlur:l,onChange:r,options:a,unselectedLabel:h,equality:o=(m,u)=>m===u,after:d}=n;let p;return v.InputContainer({...n,after:t.Fragment(v.InputIcon({icon:"ph:caret-down-bold",color:"neutral",size:"sm"}),d),input:t.html.select(t.WithElement(m=>{p=m;const u=new MutationObserver(g=>{const{removedNodes:I}=g[0];I.length>0&&(p.selectedIndex=0)});return u.observe(m,{childList:!0}),t.OnDispose(()=>u.disconnect())}),v.CommonInputAttributes(n),t.attr.class("bc-native-select bc-input"),t.Use(v.BeatUII18n,m=>t.html.option(t.attr.hidden("hidden"),t.coalesce(h,m.$.selectOne))),t.ForEach(a,m=>ot(m,o,e)),l!=null?t.on.blur(l):t.Empty,r!=null?t.on.change(at("value",m=>r(m))):t.Empty)},t.on.click(()=>{if(p?.focus(),typeof p?.showPicker=="function")try{p.showPicker()}catch{}}))};function it(n){const{controller:e,onChange:l,onBlur:r,...a}=n;return st({...a,value:e.signal,onChange:$.makeOnChangeHandler(e,l),onBlur:$.makeOnBlurHandler(e,r)})}function Ot(n){return $.InputWrapper({...n,content:it(n)})}function ut(n,e,l){const r=n.length.map(a=>a);return t.Fragment(t.Repeat(r,a=>{const h=n.item(a.index),o=[];return t.Fragment(t.OnDispose(()=>{o.forEach(d=>d())}),e({list:n,item:h,position:a,remove:()=>n.removeAt(a.index),move:d=>{switch(d){case"up":if(a.index===0)return;n.move(a.index,a.index-1);break;case"down":if(a.index===n.length.value-1)return;n.move(a.index,a.index+1);break;case"first":n.move(a.index,0);break;case"last":n.move(a.index,n.length.value-1)}},canMove:d=>{const p=(()=>{switch(d){case"up":return t.signal(a.index>0);case"down":return n.length.map(m=>a.index<m-1)}})();return o.push(()=>p.dispose()),p},cannotMove:d=>{const p=(()=>{switch(d){case"up":return t.signal(a.index===0);case"down":return n.length.map(m=>a.index===m-1)}})();return o.push(()=>p.dispose()),p}}))},l))}const K={9:{pattern:/^[0-9]$/},A:{pattern:/^[A-Za-z]$/,transform:n=>n.toUpperCase()},"*":{pattern:/^.$/}},Bt=n=>n instanceof RegExp;function ct(n,e,l){if(n==null)return[];const r=l?{...K,...e}:e??K,a=(o,d)=>{const p=r[d];p?o.push({type:"pattern",name:d,...p}):o.push({type:"literal",char:d})},h=[];if(typeof n=="string"){for(const o of n)a(h,o);return h}for(const o of n)if(typeof o=="string")if(o.length<=1)a(h,o);else for(const d of o)a(h,d);else Bt(o)?h.push({type:"pattern",pattern:o}):typeof o=="object"&&o&&h.push(o);return h}function St(n,e){return l=>{switch(n){case"digits":return/[0-9]/.test(l);case"letters":return/[A-Za-z]/.test(l);case"alphanumeric":return/[A-Za-z0-9]/.test(l);case"custom":return e?.(l)??!0;default:return!0}}}function tt(n,e,l,r,a,h){const o={raw:n,previousConformed:e,cursor:a??n.length,completed:!1},d=r.definitions??{},p=typeof l=="function"?l(n,o):l,m=ct(p,d,r.useDefaultDefinitions??!0),u=St(r.allowMode,r.allow),g=new Set;for(const V of m)V.type==="literal"&&g.add(V.char);if(r.prefix)for(const V of r.prefix)g.add(V);if(r.suffix)for(const V of r.suffix)g.add(V);const I=Array.from(n).filter(V=>u(V)&&!g.has(V));if(I.length===0)return{value:"",cursor:0,completed:!1};const c=[],b=[];let x=0,C=0,i=0,f=-1;for(const V of m){if(V.type==="literal"){c.push(V.char),b.push({kind:"literal",filled:!0});continue}C+=V.optional?0:1;const U=I[x];if(U==null)break;if(V.type==="any"){i++,c.push(V.transform?V.transform(U):U),b.push({kind:"slot",filled:!0}),f=b.length-1,x++;continue}if(V.type==="pattern")if(V.pattern.test(U)){i++;const S=V.transform?V.transform(U):U;c.push(S),b.push({kind:"slot",filled:!0}),f=b.length-1,x++}else{x++;continue}}const _=c.join(""),k=(r.prefix??"")+_+(r.suffix??"");let w=(r.prefix??"").length;if(f>=0){let V=f+1;if((h?.policy??"smart")!=="sticky")for(;V<b.length&&b[V].kind==="literal";)V++;w+=V}const s=r.completion?.mode==="min"?(r.completion.minChars??0)<=i:r.completion?.mode==="custom"?!!r.completion.isComplete?.(k):C>0&&i>=C,y=r.pipe?.(k,{...o,completed:s});let E,D=w;return y===!1?(E=e,D=e.length):typeof y=="string"?(E=y,D=y.length):typeof y=="object"&&y?(E=y.value,D=y.cursor??y.value.length):E=k,{value:E,cursor:D,completed:s}}function Tt(n,e){const l=e?.strategy??"none";return l==="custom"&&e?.unmask?e.unmask(n):l==="strip"?n.replace(/[^A-Za-z0-9]/g,""):n}const G=n=>{const{value:e,onBlur:l,onChange:r,onInput:a,onAccept:h,onComplete:o,mask:d,definitions:p,useDefaultDefinitions:m,extraLiterals:u,prefix:g,suffix:I,autofix:c,pipe:b,completion:x,unmask:C,allowMode:i,allow:f,placeholder:_,placeholderOptions:k}=n,O=t.computedOf(e,d,p,m,u,g,I,c,x,C,i,_,k)((s,y,E,D,V,U,S,M,L,z,A,W,T)=>y?tt(s??"","",y,{definitions:E??{},useDefaultDefinitions:D??!0,extraLiterals:V??[],autofix:M??"none",completion:L??{mode:"mask"},pipe:b??(B=>B),unmask:z??{strategy:"none"},allowMode:A??"all",allow:f,prefix:U,suffix:S}).value:s??""),w=(s,y)=>{const E=s.value??"",D=t.Value.get(e)??"",V=d!=null?t.Value.get(d):null,U=p!=null?t.Value.get(p):void 0,S=m!=null?t.Value.get(m):void 0,M=u!=null?t.Value.get(u):void 0,L=c!=null?t.Value.get(c):void 0,z=x!=null?t.Value.get(x):void 0,A=C!=null?t.Value.get(C):void 0,W=i!=null?t.Value.get(i):void 0,T=g!=null?t.Value.get(g):void 0,B=I!=null?t.Value.get(I):void 0,{value:F,cursor:Z,completed:X}=V?tt(E,D,V,{definitions:U??{},useDefaultDefinitions:S??!0,extraLiterals:M??[],autofix:L??"none",completion:z??{mode:"mask"},pipe:b??(ht=>ht),unmask:A??{strategy:"none"},allowMode:W??"all",allow:f,prefix:T,suffix:B},s.selectionStart??E.length,n.cursor?t.Value.get(n.cursor):void 0):{value:E,cursor:E.length,completed:!0};if(F!==E){s.value=F;try{s.setSelectionRange(Z,Z)}catch{}}const Q=Tt(F,A);h?.({raw:Q,conformed:F,completed:X,cursor:Z}),y==="input"?a?.(F):(r?.(F),X&&o?.({raw:Q,conformed:F}))};return t.Fragment(v.InputContainer({...n,input:t.input.text(v.CommonInputAttributes(n),t.attr.value(O),t.attr.class("bc-input"),l!=null?t.on.blur(l):t.Empty,t.WithElement(s=>s instanceof HTMLInputElement?t.Fragment(t.on.input(()=>w(s,"input")),t.on.change(()=>w(s,"change")),t.on.keydown(y=>{if(y.key!=="Backspace"||!(n.cursor?t.Value.get(n.cursor)?.backspaceRubberBand??!0:!0))return;const D=s.selectionStart??0,V=s.selectionEnd??D;if(D!==V||D<=0)return;const U=s.value??"",S=d!=null?t.Value.get(d):null;if(!S)return;const M=p!=null?t.Value.get(p):void 0,L=m!=null?t.Value.get(m):!0,z=g!=null?t.Value.get(g):void 0,A=I!=null?t.Value.get(I):void 0,W=ct(typeof S=="function"?S(U,{raw:U,previousConformed:U,cursor:D,completed:!1}):S,M??{},L??!0),T=new Set;for(const B of W)B.type==="literal"&&T.add(B.char);if(z)for(const B of z)T.add(B);if(A)for(const B of A)T.add(B);if(T.has(U[D-1])){let B=D-1;for(;B>=0&&T.has(U[B]);)B--;B>=0&&(y.preventDefault(),y.stopPropagation(),s.value=U.slice(0,B)+U.slice(B+1),w(s,"input"))}})):t.Empty))}))};function J(n,e,l){const r=t.Value.map(n,o=>o!=null),a=t.computedOf(r,e??!1)((o,d)=>!o||d),h=v.defaultMessages.clearValue;return t.html.button(t.attr.type("button"),t.attr.class("bc-input-container__reset"),t.aria.label(h),t.attr.title(h),t.attr.disabled(a),v.Icon({icon:"mdi:close",size:"sm"}),t.on.click(o=>{o.stopPropagation(),l?.(null)}))}const At=n=>{const{value:e,onBlur:l,onChange:r,onInput:a,rows:h}=n;return v.InputContainer({baseContainer:!0,...n,input:t.html.textarea(t.attr.class(t.computedOf(n.size??"md")(o=>v.generateInputContainerInputClasses(!1,o??"md"))),v.CommonInputAttributes(n),t.attr.rows(h??3),t.attr.value(e),t.attr.class("bc-input"),l!=null?t.on.blur(t.emitValue(l)):t.Empty,r!=null?t.on.change(t.emitValue(r)):t.Empty,a!=null?t.on.input(t.emitValue(a)):t.Empty)})},Ft=n=>{const{value:e,step:l,min:r,max:a,onBlur:h,onChange:o,onInput:d,after:p}=n,m=I=>{const c=r!=null?t.Value.get(r):void 0,b=a!=null?t.Value.get(a):void 0;return c!=null&&I<c?c:b!=null&&I>b?b:I},u=l!=null?t.Use(v.BeatUII18n,I=>{const c=t.computedOf(e,r)((i,f)=>f==null?!0:(i??0)>f),b=t.computedOf(e,a)((i,f)=>f==null?!0:(i??0)<f),x=i=>{const f=t.Value.get(e)??0,_=t.Value.get(l),k=i?.shiftKey?10:1,O=f-_*k,w=r!=null?t.Value.get(r):void 0;if(w!=null&&O<w)return;const s=m(O);s!==f&&o&&o(s)},C=i=>{const f=t.Value.get(e)??0,_=t.Value.get(l),k=i?.shiftKey?10:1,O=f+_*k,w=a!=null?t.Value.get(a):void 0;if(w!=null&&O>w)return;const s=m(O);s!==f&&o&&o(s)};return $.Stack(t.attr.class("bc-number-input-steppers"),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--increment"),t.attr.disabled(t.computedOf(b,n.disabled??!1)((i,f)=>!i||f)),t.on.click(i=>C(i)),t.aria.label(I.$.incrementValue),v.Icon({icon:"line-md:plus",size:"xs"})),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--decrement"),t.attr.disabled(t.computedOf(c,n.disabled??!1)((i,f)=>!i||f)),t.on.click(i=>x(i)),t.aria.label(I.$.decrementValue),v.Icon({icon:"line-md:minus",size:"xs"})))}):null,g=p!=null&&u!=null?t.Fragment(u,p):p??u;return v.InputContainer({...n,input:t.input.number(r!=null?t.attr.min(r):t.Empty,a!=null?t.attr.max(a):t.Empty,v.CommonInputAttributes(n),t.attr.valueAsNumber(e),t.attr.step(l),t.attr.class("bc-input bc-number-input"),h!=null?t.on.blur(t.emitValue(h)):t.Empty,o!=null?t.on.change(t.emitValueAsNumber(o)):t.Empty,d!=null?t.on.input(t.emitValueAsNumber(d)):t.Empty,l!=null?t.on.wheel(I=>{I.preventDefault();const c=t.Value.get(e)??0,b=t.Value.get(l),x=I.shiftKey?10:1,C=I.deltaY<0?b*x:-b*x,i=m(c+C);i!==c&&o&&o(i)}):t.Empty),after:g})},et=n=>{if(n==null||n==="")return null;const e=Number(n);return Number.isNaN(e)?null:e},zt=n=>{const{value:e,step:l,min:r,max:a,onBlur:h,onChange:o,onInput:d,after:p}=n,m=c=>{const b=r!=null?t.Value.get(r):void 0,x=a!=null?t.Value.get(a):void 0;return b!=null&&c<b?b:x!=null&&c>x?x:c},u=(()=>{if(l==null)return null;const c=t.computedOf(e,r)((f,_)=>{const k=f??0;return _==null?!0:k>_}),b=t.computedOf(e,a)((f,_)=>{const k=f??0;return _==null?!0:k<_}),x=f=>{const _=t.Value.get(e)??0,k=t.Value.get(l),O=f?.shiftKey?10:1,w=_-k*O,s=r!=null?t.Value.get(r):void 0;if(s!=null&&w<s)return;const y=m(w);y!==_&&o&&o(y)},C=f=>{const _=t.Value.get(e)??0,k=t.Value.get(l),O=f?.shiftKey?10:1,w=_+k*O,s=a!=null?t.Value.get(a):void 0;if(s!=null&&w>s)return;const y=m(w);y!==_&&o&&o(y)};return((f,_)=>$.Stack(t.attr.class("bc-number-input-steppers"),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--increment"),t.attr.disabled(t.computedOf(b,n.disabled??!1)((k,O)=>!k||O)),t.on.click(k=>C(k)),t.aria.label(f),v.Icon({icon:"line-md:plus",size:"xs"})),t.html.button(t.attr.type("button"),t.attr.class("bc-button bc-number-input-steppers-button bc-number-input-steppers-button--decrement"),t.attr.disabled(t.computedOf(c,n.disabled??!1)((k,O)=>!k||O)),t.on.click(k=>x(k)),t.aria.label(_),v.Icon({icon:"line-md:minus",size:"xs"}))))(v.defaultMessages.incrementValue,v.defaultMessages.decrementValue)})(),g=J(e,n.disabled,o??d),I=p!=null&&u!=null?t.Fragment(u,g,p):p!=null?t.Fragment(g,p):u!=null?t.Fragment(u,g):g;return v.InputContainer({...n,input:t.input.number(r!=null?t.attr.min(r):t.Empty,a!=null?t.attr.max(a):t.Empty,v.CommonInputAttributes(n),t.attr.value(t.Value.map(e,c=>c==null?"":String(c))),t.attr.step(l),t.attr.class("bc-input bc-number-input"),h!=null?t.on.blur(t.emitValue(h)):t.Empty,o!=null?t.on.change(t.emitValue(c=>{const b=et(c);o(b)})):t.Empty,d!=null?t.on.input(t.emitValue(c=>{const b=et(c);d(b)})):t.Empty,l!=null?t.on.wheel(c=>{c.preventDefault();const b=t.Value.get(e)??0,x=t.Value.get(l),C=c.shiftKey?10:1,i=c.deltaY<0?x*C:-x*C,f=m(b+i);f!==b&&o&&o(f)}):t.Empty),after:I})},Mt=n=>{const e={type:"pattern",pattern:/[0-9A-Fa-f]/,transform:r=>r.toLowerCase()};return G({...n,mask:[e,e,e,e,e,e,e,e,"-",e,e,e,e,"-",e,e,e,e,"-",e,e,e,e,"-",e,e,e,e,e,e,e,e,e,e,e,e],placeholder:n.placeholder??"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"})};let H=null;async function j(){const n=globalThis;return n.Temporal?n.Temporal:(H||(H=Promise.resolve().then(()=>require("./index.esm-DJRz9AE-.cjs")).then(e=>{const l=e.Temporal;return n.Temporal||(n.Temporal=l),l})),H)}const pt=(n,e)=>e?t.Task(j,{then:n,pending:e.pending,error:e.error}):t.Task(j,n),Lt=/^P(\d+([YMWD]|$)){0,4}(T(\d+([HMS]|$)){0,3})?$/i,Nt=/^P(?:(\d+Y)?(\d+M)?(\d+W)?(\d+D)?)(T(\d+H)?(\d+M)?(\d+S)?)?$/i;function ft(n){return{mask:null,allowMode:"custom",allow:e=>/[0-9ptwdhms]/i.test(e),pipe:e=>{const l=e.toUpperCase();return l.length===0?l:!l.startsWith("P")||!Lt.test(l)?!1:l},completion:{mode:"custom",isComplete:e=>{const l=e.toUpperCase();if(!Nt.test(l))return!1;try{return n(l),!0}catch{return!1}}}}}const nt=(n,e)=>{if(n==null)return null;try{return n.Duration.from(e)}catch{return null}},Wt=n=>{const{value:e,onChange:l,onInput:r,after:a,disabled:h,onBlur:o}=n,d=()=>{const u=J(e,h,l??r);return a!=null?t.Fragment(u,a):u},p=n.placeholder!=null?t.Empty:t.attr.placeholder("P0DT0H0M0S");return pt(u=>G({...n,value:t.Value.map(e,g=>g?.toString()??""),onChange:l?g=>l(g===""?null:u.Duration.from(g)):void 0,onInput:void 0,...ft(u.Duration.from),placeholder:"P0DT0H0M0S",after:d()}),{pending:()=>{const u=g=>I=>{const b=I.currentTarget?.value??"";if(b===""){g(null);return}const x=globalThis.Temporal,C=nt(x,b);if(C!=null){g(C);return}j().then(i=>{const f=nt(i,b);f!=null&&g(f)}).catch(()=>{})};return v.InputContainer({...n,input:t.input.text(v.CommonInputAttributes(n),t.attr.value(t.Value.map(e,g=>g?.toString()??"")),t.attr.class("bc-input"),p,o!=null?t.on.blur(()=>o()):t.Empty,l!=null?t.on.change(u(l)):t.Empty,r!=null?t.on.input(u(r)):t.Empty),after:d()})}})},Rt=n=>{const{value:e,onBlur:l,onChange:r,onInput:a}=n;return v.InputContainer({...n,input:t.input.url(v.CommonInputAttributes(n),t.attr.value(e),t.attr.class("bc-input"),l!=null?t.on.blur(t.emitValue(l)):t.Empty,r!=null?t.on.change(t.emitValue(r)):t.Empty,a!=null?t.on.input(t.emitValue(a)):t.Empty)})},dt=n=>{const{controller:e,element:l,separator:r,showMove:a=!0,showRemove:h=!0,showAdd:o=!0,createItem:d,addLabel:p,controlsLayout:m="aside",removeDisabled:u,addDisabled:g}=n,I=t.Value.toSignal(m).map(x=>x==="aside"),c=x=>{const C=t.When(a??!1,()=>t.html.div(t.attr.class("bc-group--align-center"),t.attr.class(I.map(f=>f?"bc-group--direction-column bc-group--gap-1":"bc-group--direction-row bc-group--gap-1")),v.Button({size:"xs",roundedness:"full",variant:"text",onClick:()=>x.move("up"),disabled:x.cannotMove("up")},t.Use(v.BeatUII18n,f=>v.Icon({size:"xs",icon:"line-md:arrow-up",title:f.$.incrementValue}))),v.Button({size:"xs",roundedness:"full",variant:"text",onClick:()=>x.move("down"),disabled:x.cannotMove("down")},t.Use(v.BeatUII18n,f=>v.Icon({size:"xs",icon:"line-md:arrow-down",title:f.$.decrementValue}))))),i=t.When(h,()=>t.Use(v.BeatUII18n,f=>$.CloseButton({size:"xs",label:t.Value.map(f.$.removeItem,_=>_.toLowerCase()),color:"danger",disabled:u,onClick:x.remove})));return f=>t.When(I,()=>N(t.attr.class("bc-group--gap-1 bc-group--align-center"),$.Stack(t.attr.class("bc-stack--grow"),f),$.Stack(t.attr.class("bc-stack--align-center"),t.When(e.signal.map(_=>_.length>1),()=>C),i)),()=>$.Stack(t.attr.class("bc-stack--gap-2"),f,N(t.attr.class("bc-group--gap-2 bc-group--justify-between"),t.When(e.signal.map(_=>_.length>1),()=>C,()=>t.html.div()),i)))},b=t.When(t.computedOf(o,d)((x,C)=>x&&C!=null),()=>N(t.attr.class("bc-group--gap-2 bc-group--align-center bc-group--justify-center"),v.Button({size:"sm",variant:"filled",onClick:()=>e.push(d()),disabled:t.computedOf(e.disabled,g??!1)((x,C)=>x||C)},t.Use(v.BeatUII18n,x=>N(t.attr.class("bc-group--gap-2"),v.Icon({icon:"line-md:plus"}),p??x.$.addLabel)))));return t.Fragment(ut(e,x=>c(x)(l(x)),r),b)},Pt=(n,...e)=>{const{controller:l,element:r,separator:a,showMove:h,showRemove:o,showAdd:d,createItem:p,addLabel:m,controlsLayout:u,removeDisabled:g,addDisabled:I,...c}=n;return $.InputWrapper({...c,content:dt({controller:l,element:r,separator:a,showMove:h,showRemove:o,showAdd:d,createItem:p,addLabel:m,controlsLayout:u,removeDisabled:g,addDisabled:I})},...e)};class jt extends $.Controller{branches;activeBranch;#e;#t=new Map;constructor(e,l,r,a,h,o,d=$.O){super(e,l,r,a,h,d),this.branches=o;const p=u=>{for(const g of o)if(g.detect(u))return g.key;return o[0]?.key??"unknown"};this.activeBranch=r.map(p,$.O);const m=u=>{if(this.#t.has(u))return this.#t.get(u);const g=o.find(c=>c.key===u);if(!g)throw new Error(`Unknown branch: ${u}`);const I=new $.Controller([...e,u],c=>{this.change(c)},this.signal.map(c=>g.detect(c)?c:g.defaultValue(),d),a.map($.makeMapValidation([u])),{disabled:this.disabled,validationMode:this.parent.validationMode},d);return this.#t.set(u,I),I};this.#e=this.activeBranch.map(u=>m(u),$.O),this.onDispose(()=>{for(const u of this.#t.values())u.dispose();this.#t.clear(),this.activeBranch.dispose(),this.#e.dispose()})}get activeController(){return t.Value.get(this.#e)}getBranchController(e){const l=this.branches.find(a=>a.key===e);if(!l)throw new Error(`Unknown branch: ${e}`);if(this.#t.has(e))return this.#t.get(e);const r=new $.Controller([...this.path,e],a=>{this.change(a)},this.signal.map(a=>l.detect(a)?a:l.defaultValue(),$.O),this.status.map($.makeMapValidation([e])),{disabled:this.disabled,validationMode:this.parent.validationMode},$.O);return this.#t.set(e,r),r}switchToBranch(e,l=!1){const r=this.branches.find(o=>o.key===e);if(!r)throw new Error(`Unknown branch: ${e}`);const a=t.Value.get(this.signal);if(r.detect(a))return!0;if(r.convert){const o=r.convert(a);if(o.ok)return this.change(o.value),!0}if(l&&typeof window=="object"&&typeof window.confirm=="function"&&!window.confirm("Changing type will clear the current value. Continue?"))return!1;const h=r.defaultValue();return this.change(h),!0}get activeBranchDefinition(){const e=t.Value.get(this.activeBranch);return this.branches.find(l=>l.key===e)}}function Zt(n){return n.transform(e=>e??null,e=>e??void 0)}function qt(n){return n.transform(e=>e??"",e=>e===""?void 0:e)}function Ht(n){return n.transform(e=>e??void 0,e=>e??null)}function R(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)&&Object.prototype.toString.call(n)==="[object Object]"}function mt(n,e){if(e==null)return lt(n);if(n==null)return e;if(R(n)&&R(e)){const l={...e};for(const r of Object.keys(n))l[r]===void 0?l[r]=lt(n[r]):R(n[r])&&R(l[r])&&(l[r]=mt(n[r],l[r]));return l}return e}function lt(n){return typeof structuredClone=="function"?structuredClone(n):JSON.parse(JSON.stringify(n))}exports.$t=wt;exports.BaseListControl=dt;exports.BaseNativeSelectControl=it;exports.Expando=rt;exports.FilesInput=Ut;exports.Group=N;exports.ListControl=Pt;exports.ListInput=ut;exports.MaskInput=G;exports.NativeSelect=st;exports.NativeSelectControl=Ot;exports.NullableDurationInput=Wt;exports.NullableNumberInput=zt;exports.NullableResetAfter=J;exports.NumberInput=Ft;exports.SegmentedInput=kt;exports.TextArea=At;exports.UUIDInput=Mt;exports.UnionController=jt;exports.UnstyledDropZone=P;exports.UrlInput=Rt;exports.WithTemporal=pt;exports._t=Vt;exports.deepMergeDefaults=mt;exports.durationMaskConfig=ft;exports.emitExpando=$t;exports.emitOptionExpando=at;exports.ensureTemporal=j;exports.gt=yt;exports.transformEmptyStringToUndefined=qt;exports.transformNullToUndefined=Zt;exports.transformUndefinedToNull=Ht;
|