@swan-admin/swan-web-component 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -1,3 +1,3 @@
1
- @layer properties;.visible{visibility:visible}.mx-auto{margin-inline:auto}.my-\[1\.5rem\]{margin-block:1.5rem}.mt-\[\.5rem\]{margin-top:.5rem}.mt-\[0\.2rem\]{margin-top:.2rem}.mt-\[3\.5rem\]{margin-top:3.5rem}.mb-\[\.75rem\]{margin-bottom:.75rem}.flex{display:flex}.h-\[3px\]{height:3px}.h-\[38px\]{height:38px}.h-\[40px\]{height:40px}.h-full{height:100%}.w-\[30px\]{width:30px}.w-\[50px\]{width:50px}.w-full{width:100%}.max-w-\[28rem\]{max-width:28rem}.max-w-\[210px\]{max-width:210px}.max-w-\[276px\]{max-width:276px}.min-w-\[120px\]{min-width:120px}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-\[4px\]{gap:4px}.gap-\[5px\]{gap:5px}.rounded-\[4px\]{border-radius:4px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:calc(infinity * 1px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-none{--tw-border-style: none;border-style:none}.border-transparent{border-color:transparent}.p-\[15px\]{padding:15px}.px-\[\.75rem\]{padding-inline:.75rem}.py-\[6px\]{padding-block:6px}.pt-\[1\.5rem\]{padding-top:1.5rem}.pr-\[2\.5rem\]{padding-right:2.5rem}.pl-\[1rem\]{padding-left:1rem}.text-center{text-align:center}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.leading-none{--tw-leading: 1;line-height:1}.\!shadow-none{--tw-shadow: 0 0 #0000 !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-\[0_1px_1px_rgba\(0\,0\,0\,0\.251\)\]{--tw-shadow: 0 1px 1px var(--tw-shadow-color, rgba(0,0,0,.251));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.\!outline-none{--tw-outline-style: none !important;outline-style:none!important}.file\:border-0{&::file-selector-button{border-style:var(--tw-border-style);border-width:0px}}.file\:bg-transparent{&::file-selector-button{background-color:transparent}}.focus\:ring-1{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:ring-offset-2{&:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.focus-visible\:outline-none{&:focus-visible{--tw-outline-style: none;outline-style:none}}.disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\:shadow-none{&:disabled{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.\[\&_svg\]\:shrink-0{& svg{flex-shrink:0}}html,body,#root{height:100%;width:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}*{box-sizing:border-box}@import url(https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap);@import url(https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap);@font-face{font-family:SeriouslyNostalgic Fn;src:url("./SeriouslyNostalgicFn-SemiCond-AJHVASLK.eot");src:url("./SeriouslyNostalgicFn-SemiCond-AJHVASLK.eot?#iefix") format("embedded-opentype"),url("./SeriouslyNostalgicFn-SemiCond-IFFRICVL.woff2") format("woff2"),url("./SeriouslyNostalgicFn-SemiCond-Z3GGXSY5.woff") format("woff"),url("./SeriouslyNostalgicFn-SemiCond-SHCMZABI.ttf") format("truetype"),url("./SeriouslyNostalgicFn-SemiCond-XYHOCG7O.svg#SeriouslyNostalgicFn-SemiCond") format("svg");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:SeriouslyNostalgic Fn;src:url("./SeriouslyNostalgicFnIt-SmCn-SL36MC4T.eot");src:url("./SeriouslyNostalgicFnIt-SmCn-SL36MC4T.eot?#iefix") format("embedded-opentype"),url("./SeriouslyNostalgicFnIt-SmCn-7R3OSECA.woff2") format("woff2"),url("./SeriouslyNostalgicFnIt-SmCn-XCIR2AMB.woff") format("woff"),url("./SeriouslyNostalgicFnIt-SmCn-5X45YSDH.ttf") format("truetype"),url("./SeriouslyNostalgicFnIt-SmCn-IHWOZCJM.svg#SeriouslyNostalgicFnIt-SmCn") format("svg");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Switzer;src:url("./Switzer-Regular-Y4FID5TH.eot");src:url("./Switzer-Regular-Y4FID5TH.eot?#iefix") format("embedded-opentype"),url("./Switzer-Regular-HQV7EZCN.woff2") format("woff2"),url("./Switzer-Regular-PMUXPWI5.woff") format("woff"),url("./Switzer-Regular-ZQ4EHIY6.ttf") format("truetype"),url("./Switzer-Regular-FYQK3A2R.svg#Switzer-Regular") format("svg");font-weight:400;font-style:normal;font-display:swap}h1,h2,h3,h4,p{margin:0;padding:0;line-height:1.5}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-duration{syntax: "*"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-duration: initial}}}
1
+ @layer properties;.visible{visibility:visible}.mx-auto{margin-inline:auto}.my-\[1\.5rem\]{margin-block:1.5rem}.mt-\[\.5rem\]{margin-top:.5rem}.mt-\[0\.2rem\]{margin-top:.2rem}.mt-\[3\.5rem\]{margin-top:3.5rem}.mb-\[\.75rem\]{margin-bottom:.75rem}.flex{display:flex}.h-\[3px\]{height:3px}.h-\[38px\]{height:38px}.h-\[40px\]{height:40px}.h-full{height:100%}.min-h-\[1\.25rem\]{min-height:1.25rem}.w-\[30px\]{width:30px}.w-\[50px\]{width:50px}.w-full{width:100%}.max-w-\[28rem\]{max-width:28rem}.max-w-\[276px\]{max-width:276px}.min-w-\[120px\]{min-width:120px}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-\[1rem\]{gap:1rem}.gap-\[4px\]{gap:4px}.gap-\[5px\]{gap:5px}.rounded-\[\.375rem\]{border-radius:.375rem}.rounded-\[4px\]{border-radius:4px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:calc(infinity * 1px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-none{--tw-border-style: none;border-style:none}.p-\[1rem\]{padding:1rem}.p-\[15px\]{padding:15px}.px-\[\.75rem\]{padding-inline:.75rem}.py-\[6px\]{padding-block:6px}.pt-\[1\.5rem\]{padding-top:1.5rem}.pr-\[2\.5rem\]{padding-right:2.5rem}.pl-\[1rem\]{padding-left:1rem}.text-center{text-align:center}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.leading-none{--tw-leading: 1;line-height:1}.\!shadow-none{--tw-shadow: 0 0 #0000 !important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-\[0_1px_1px_rgba\(0\,0\,0\,0\.251\)\]{--tw-shadow: 0 1px 1px var(--tw-shadow-color, rgba(0,0,0,.251));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.\!outline-none{--tw-outline-style: none !important;outline-style:none!important}.file\:border-0{&::file-selector-button{border-style:var(--tw-border-style);border-width:0px}}.file\:bg-transparent{&::file-selector-button{background-color:transparent}}.focus\:ring-1{&:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:outline-none{&:focus{--tw-outline-style: none;outline-style:none}}.focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:ring-offset-2{&:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}}.focus-visible\:outline-none{&:focus-visible{--tw-outline-style: none;outline-style:none}}.disabled\:cursor-not-allowed{&:disabled{cursor:not-allowed}}.disabled\:shadow-none{&:disabled{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.\[\&_svg\]\:shrink-0{& svg{flex-shrink:0}}html,body,#root{height:100%;width:100%;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}*{box-sizing:border-box}@import url(https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap);@import url(https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap);@font-face{font-family:SeriouslyNostalgic Fn;src:url("./SeriouslyNostalgicFn-SemiCond-AJHVASLK.eot");src:url("./SeriouslyNostalgicFn-SemiCond-AJHVASLK.eot?#iefix") format("embedded-opentype"),url("./SeriouslyNostalgicFn-SemiCond-IFFRICVL.woff2") format("woff2"),url("./SeriouslyNostalgicFn-SemiCond-Z3GGXSY5.woff") format("woff"),url("./SeriouslyNostalgicFn-SemiCond-SHCMZABI.ttf") format("truetype"),url("./SeriouslyNostalgicFn-SemiCond-XYHOCG7O.svg#SeriouslyNostalgicFn-SemiCond") format("svg");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:SeriouslyNostalgic Fn;src:url("./SeriouslyNostalgicFnIt-SmCn-SL36MC4T.eot");src:url("./SeriouslyNostalgicFnIt-SmCn-SL36MC4T.eot?#iefix") format("embedded-opentype"),url("./SeriouslyNostalgicFnIt-SmCn-7R3OSECA.woff2") format("woff2"),url("./SeriouslyNostalgicFnIt-SmCn-XCIR2AMB.woff") format("woff"),url("./SeriouslyNostalgicFnIt-SmCn-5X45YSDH.ttf") format("truetype"),url("./SeriouslyNostalgicFnIt-SmCn-IHWOZCJM.svg#SeriouslyNostalgicFnIt-SmCn") format("svg");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Switzer;src:url("./Switzer-Regular-Y4FID5TH.eot");src:url("./Switzer-Regular-Y4FID5TH.eot?#iefix") format("embedded-opentype"),url("./Switzer-Regular-HQV7EZCN.woff2") format("woff2"),url("./Switzer-Regular-PMUXPWI5.woff") format("woff"),url("./Switzer-Regular-ZQ4EHIY6.ttf") format("truetype"),url("./Switzer-Regular-FYQK3A2R.svg#Switzer-Regular") format("svg");font-weight:400;font-style:normal;font-display:swap}h1,h2,h3,h4,p{margin:0;padding:0;line-height:1.5}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-duration{syntax: "*"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-duration: initial}}}
2
2
  /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
3
3
  /*# sourceMappingURL=index.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles/tailwind.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n.visible {\n visibility: visible;\n}\n.mx-auto {\n margin-inline: auto;\n}\n.my-\\[1\\.5rem\\] {\n margin-block: 1.5rem;\n}\n.mt-\\[\\.5rem\\] {\n margin-top: .5rem;\n}\n.mt-\\[0\\.2rem\\] {\n margin-top: 0.2rem;\n}\n.mt-\\[3\\.5rem\\] {\n margin-top: 3.5rem;\n}\n.mb-\\[\\.75rem\\] {\n margin-bottom: .75rem;\n}\n.flex {\n display: flex;\n}\n.h-\\[3px\\] {\n height: 3px;\n}\n.h-\\[38px\\] {\n height: 38px;\n}\n.h-\\[40px\\] {\n height: 40px;\n}\n.h-full {\n height: 100%;\n}\n.w-\\[30px\\] {\n width: 30px;\n}\n.w-\\[50px\\] {\n width: 50px;\n}\n.w-full {\n width: 100%;\n}\n.max-w-\\[28rem\\] {\n max-width: 28rem;\n}\n.max-w-\\[210px\\] {\n max-width: 210px;\n}\n.max-w-\\[276px\\] {\n max-width: 276px;\n}\n.min-w-\\[120px\\] {\n min-width: 120px;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.flex-col {\n flex-direction: column;\n}\n.items-center {\n align-items: center;\n}\n.items-start {\n align-items: flex-start;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.gap-\\[4px\\] {\n gap: 4px;\n}\n.gap-\\[5px\\] {\n gap: 5px;\n}\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n.rounded-full {\n border-radius: calc(infinity * 1px);\n}\n.border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n}\n.border-none {\n --tw-border-style: none;\n border-style: none;\n}\n.border-transparent {\n border-color: transparent;\n}\n.p-\\[15px\\] {\n padding: 15px;\n}\n.px-\\[\\.75rem\\] {\n padding-inline: .75rem;\n}\n.py-\\[6px\\] {\n padding-block: 6px;\n}\n.pt-\\[1\\.5rem\\] {\n padding-top: 1.5rem;\n}\n.pr-\\[2\\.5rem\\] {\n padding-right: 2.5rem;\n}\n.pl-\\[1rem\\] {\n padding-left: 1rem;\n}\n.text-center {\n text-align: center;\n}\n.text-\\[14px\\] {\n font-size: 14px;\n}\n.text-\\[16px\\] {\n font-size: 16px;\n}\n.text-\\[18px\\] {\n font-size: 18px;\n}\n.leading-none {\n --tw-leading: 1;\n line-height: 1;\n}\n.\\!shadow-none {\n --tw-shadow: 0 0 #0000 !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n}\n.shadow-\\[0_1px_1px_rgba\\(0\\,0\\,0\\,0\\.251\\)\\] {\n --tw-shadow: 0 1px 1px var(--tw-shadow-color, rgba(0,0,0,0.251));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n.ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, ease);\n transition-duration: var(--tw-duration, 0s);\n}\n.duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n}\n.duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n}\n.\\!outline-none {\n --tw-outline-style: none !important;\n outline-style: none !important;\n}\n.file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n}\n.file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n}\n.focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n}\n.focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.focus-visible\\:ring-offset-2 {\n &:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n}\n.focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n}\n.disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n}\n.disabled\\:shadow-none {\n &:disabled {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n}\nhtml, body, #root {\n height: 100%;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\n* {\n box-sizing: border-box;\n}\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');\n@font-face {\n font-family: 'SeriouslyNostalgic Fn';\n src: url('fonts/SeriouslyNostalgicFn-SemiCond.eot');\n src: url('fonts/SeriouslyNostalgicFn-SemiCond.eot?#iefix') format('embedded-opentype'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.woff2') format('woff2'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.woff') format('woff'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.ttf') format('truetype'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.svg#SeriouslyNostalgicFn-SemiCond') format('svg');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: 'SeriouslyNostalgic Fn';\n src: url('fonts/SeriouslyNostalgicFnIt-SmCn.eot');\n src: url('fonts/SeriouslyNostalgicFnIt-SmCn.eot?#iefix') format('embedded-opentype'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.woff2') format('woff2'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.woff') format('woff'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.ttf') format('truetype'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.svg#SeriouslyNostalgicFnIt-SmCn') format('svg');\n font-weight: normal;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: 'Switzer';\n src: url('fonts/Switzer-Regular.eot');\n src: url('fonts/Switzer-Regular.eot?#iefix') format('embedded-opentype'),\n url('fonts/Switzer-Regular.woff2') format('woff2'),\n url('fonts/Switzer-Regular.woff') format('woff'),\n url('fonts/Switzer-Regular.ttf') format('truetype'),\n url('fonts/Switzer-Regular.svg#Switzer-Regular') format('svg');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n}\nh1,h2,h3,h4,p {\n margin: 0;\n padding: 0;\n line-height: 1.5;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-duration: initial;\n }\n }\n}\n"],"mappings":"AACA,kBACA,CAAC,QACC,WAAY,OACd,CACA,CAAC,QACC,cAAe,IACjB,CACA,CAAC,eACC,aAAc,MAChB,CACA,CAAC,cACC,WAAY,KACd,CACA,CAAC,eACC,WAAY,KACd,CACA,CAAC,eACC,WAAY,MACd,CACA,CAAC,eACC,cAAe,MACjB,CACA,CAAC,KACC,QAAS,IACX,CACA,CAAC,UACC,OAAQ,GACV,CACA,CAAC,WACC,OAAQ,IACV,CACA,CAAC,WACC,OAAQ,IACV,CACA,CAAC,OACC,OAAQ,IACV,CACA,CAAC,WACC,MAAO,IACT,CACA,CAAC,WACC,MAAO,IACT,CACA,CAAC,OACC,MAAO,IACT,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,eACC,OAAQ,OACV,CACA,CAAC,SACC,eAAgB,MAClB,CACA,CAAC,aACC,YAAa,MACf,CACA,CAAC,YACC,YAAa,UACf,CACA,CAAC,eACC,gBAAiB,MACnB,CACA,CAAC,YACC,gBAAiB,QACnB,CACA,CAAC,YACC,IAAK,GACP,CACA,CAAC,YACC,IAAK,GACP,CACA,CAAC,gBAnFD,cAoFiB,GACjB,CACA,CAAC,gBAtFD,cAuFiB,GACjB,CACA,CAAC,aACC,cAAe,KAAK,SAAS,EAAE,IACjC,CACA,CAAC,OACC,aAAc,IAAI,mBAClB,aAAc,GAChB,CACA,CAAC,YACC,mBAAmB,KACnB,aAAc,IAChB,CACA,CAAC,mBACC,aAAc,WAChB,CACA,CAAC,WAvGD,QAwGW,IACX,CACA,CAAC,eACC,eAAgB,MAClB,CACA,CAAC,WACC,cAAe,GACjB,CACA,CAAC,eACC,YAAa,MACf,CACA,CAAC,eACC,cAAe,MACjB,CACA,CAAC,YACC,aAAc,IAChB,CACA,CAAC,YACC,WAAY,MACd,CACA,CAAC,cACC,UAAW,IACb,CACA,CAAC,cACC,UAAW,IACb,CACA,CAAC,cACC,UAAW,IACb,CACA,CAAC,aACC,cAAc,EACd,YAAa,CACf,CA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","names":[]}
1
+ {"version":3,"sources":["../src/styles/tailwind.css"],"sourcesContent":["/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n.visible {\n visibility: visible;\n}\n.mx-auto {\n margin-inline: auto;\n}\n.my-\\[1\\.5rem\\] {\n margin-block: 1.5rem;\n}\n.mt-\\[\\.5rem\\] {\n margin-top: .5rem;\n}\n.mt-\\[0\\.2rem\\] {\n margin-top: 0.2rem;\n}\n.mt-\\[3\\.5rem\\] {\n margin-top: 3.5rem;\n}\n.mb-\\[\\.75rem\\] {\n margin-bottom: .75rem;\n}\n.flex {\n display: flex;\n}\n.h-\\[3px\\] {\n height: 3px;\n}\n.h-\\[38px\\] {\n height: 38px;\n}\n.h-\\[40px\\] {\n height: 40px;\n}\n.h-full {\n height: 100%;\n}\n.min-h-\\[1\\.25rem\\] {\n min-height: 1.25rem;\n}\n.w-\\[30px\\] {\n width: 30px;\n}\n.w-\\[50px\\] {\n width: 50px;\n}\n.w-full {\n width: 100%;\n}\n.max-w-\\[28rem\\] {\n max-width: 28rem;\n}\n.max-w-\\[276px\\] {\n max-width: 276px;\n}\n.min-w-\\[120px\\] {\n min-width: 120px;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.flex-col {\n flex-direction: column;\n}\n.items-center {\n align-items: center;\n}\n.items-start {\n align-items: flex-start;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.gap-\\[1rem\\] {\n gap: 1rem;\n}\n.gap-\\[4px\\] {\n gap: 4px;\n}\n.gap-\\[5px\\] {\n gap: 5px;\n}\n.rounded-\\[\\.375rem\\] {\n border-radius: .375rem;\n}\n.rounded-\\[4px\\] {\n border-radius: 4px;\n}\n.rounded-\\[8px\\] {\n border-radius: 8px;\n}\n.rounded-full {\n border-radius: calc(infinity * 1px);\n}\n.border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n}\n.border-none {\n --tw-border-style: none;\n border-style: none;\n}\n.p-\\[1rem\\] {\n padding: 1rem;\n}\n.p-\\[15px\\] {\n padding: 15px;\n}\n.px-\\[\\.75rem\\] {\n padding-inline: .75rem;\n}\n.py-\\[6px\\] {\n padding-block: 6px;\n}\n.pt-\\[1\\.5rem\\] {\n padding-top: 1.5rem;\n}\n.pr-\\[2\\.5rem\\] {\n padding-right: 2.5rem;\n}\n.pl-\\[1rem\\] {\n padding-left: 1rem;\n}\n.text-center {\n text-align: center;\n}\n.text-\\[14px\\] {\n font-size: 14px;\n}\n.text-\\[16px\\] {\n font-size: 16px;\n}\n.text-\\[18px\\] {\n font-size: 18px;\n}\n.leading-none {\n --tw-leading: 1;\n line-height: 1;\n}\n.\\!shadow-none {\n --tw-shadow: 0 0 #0000 !important;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;\n}\n.shadow-\\[0_1px_1px_rgba\\(0\\,0\\,0\\,0\\.251\\)\\] {\n --tw-shadow: 0 1px 1px var(--tw-shadow-color, rgba(0,0,0,0.251));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n.ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, ease);\n transition-duration: var(--tw-duration, 0s);\n}\n.duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n}\n.duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n}\n.\\!outline-none {\n --tw-outline-style: none !important;\n outline-style: none !important;\n}\n.file\\:border-0 {\n &::file-selector-button {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n}\n.file\\:bg-transparent {\n &::file-selector-button {\n background-color: transparent;\n }\n}\n.focus\\:ring-1 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.focus\\:outline-none {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n}\n.focus-visible\\:ring-2 {\n &:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.focus-visible\\:ring-offset-2 {\n &:focus-visible {\n --tw-ring-offset-width: 2px;\n --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n}\n.focus-visible\\:outline-none {\n &:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n}\n.disabled\\:cursor-not-allowed {\n &:disabled {\n cursor: not-allowed;\n }\n}\n.disabled\\:shadow-none {\n &:disabled {\n --tw-shadow: 0 0 #0000;\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n}\n.\\[\\&_svg\\]\\:shrink-0 {\n & svg {\n flex-shrink: 0;\n }\n}\nhtml, body, #root {\n height: 100%;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\n* {\n box-sizing: border-box;\n}\n@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap');\n@font-face {\n font-family: 'SeriouslyNostalgic Fn';\n src: url('fonts/SeriouslyNostalgicFn-SemiCond.eot');\n src: url('fonts/SeriouslyNostalgicFn-SemiCond.eot?#iefix') format('embedded-opentype'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.woff2') format('woff2'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.woff') format('woff'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.ttf') format('truetype'),\n url('fonts/SeriouslyNostalgicFn-SemiCond.svg#SeriouslyNostalgicFn-SemiCond') format('svg');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n}\n@font-face {\n font-family: 'SeriouslyNostalgic Fn';\n src: url('fonts/SeriouslyNostalgicFnIt-SmCn.eot');\n src: url('fonts/SeriouslyNostalgicFnIt-SmCn.eot?#iefix') format('embedded-opentype'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.woff2') format('woff2'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.woff') format('woff'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.ttf') format('truetype'),\n url('fonts/SeriouslyNostalgicFnIt-SmCn.svg#SeriouslyNostalgicFnIt-SmCn') format('svg');\n font-weight: normal;\n font-style: italic;\n font-display: swap;\n}\n@font-face {\n font-family: 'Switzer';\n src: url('fonts/Switzer-Regular.eot');\n src: url('fonts/Switzer-Regular.eot?#iefix') format('embedded-opentype'),\n url('fonts/Switzer-Regular.woff2') format('woff2'),\n url('fonts/Switzer-Regular.woff') format('woff'),\n url('fonts/Switzer-Regular.ttf') format('truetype'),\n url('fonts/Switzer-Regular.svg#Switzer-Regular') format('svg');\n font-weight: normal;\n font-style: normal;\n font-display: swap;\n}\nh1,h2,h3,h4,p {\n margin: 0;\n padding: 0;\n line-height: 1.5;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-duration: initial;\n }\n }\n}\n"],"mappings":"AACA,kBACA,CAAC,QACC,WAAY,OACd,CACA,CAAC,QACC,cAAe,IACjB,CACA,CAAC,eACC,aAAc,MAChB,CACA,CAAC,cACC,WAAY,KACd,CACA,CAAC,eACC,WAAY,KACd,CACA,CAAC,eACC,WAAY,MACd,CACA,CAAC,eACC,cAAe,MACjB,CACA,CAAC,KACC,QAAS,IACX,CACA,CAAC,UACC,OAAQ,GACV,CACA,CAAC,WACC,OAAQ,IACV,CACA,CAAC,WACC,OAAQ,IACV,CACA,CAAC,OACC,OAAQ,IACV,CACA,CAAC,mBACC,WAAY,OACd,CACA,CAAC,WACC,MAAO,IACT,CACA,CAAC,WACC,MAAO,IACT,CACA,CAAC,OACC,MAAO,IACT,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,gBACC,UAAW,KACb,CACA,CAAC,eACC,OAAQ,OACV,CACA,CAAC,SACC,eAAgB,MAClB,CACA,CAAC,aACC,YAAa,MACf,CACA,CAAC,YACC,YAAa,UACf,CACA,CAAC,eACC,gBAAiB,MACnB,CACA,CAAC,YACC,gBAAiB,QACnB,CACA,CAAC,aACC,IAAK,IACP,CACA,CAAC,YACC,IAAK,GACP,CACA,CAAC,YACC,IAAK,GACP,CACA,CAAC,qBAtFD,cAuFiB,OACjB,CACA,CAAC,gBAzFD,cA0FiB,GACjB,CACA,CAAC,gBA5FD,cA6FiB,GACjB,CACA,CAAC,aACC,cAAe,KAAK,SAAS,EAAE,IACjC,CACA,CAAC,OACC,aAAc,IAAI,mBAClB,aAAc,GAChB,CACA,CAAC,YACC,mBAAmB,KACnB,aAAc,IAChB,CACA,CAAC,WA1GD,QA2GW,IACX,CACA,CAAC,WA7GD,QA8GW,IACX,CACA,CAAC,eACC,eAAgB,MAClB,CACA,CAAC,WACC,cAAe,GACjB,CACA,CAAC,eACC,YAAa,MACf,CACA,CAAC,eACC,cAAe,MACjB,CACA,CAAC,YACC,aAAc,IAChB,CACA,CAAC,YACC,WAAY,MACd,CACA,CAAC,cACC,UAAW,IACb,CACA,CAAC,cACC,UAAW,IACb,CACA,CA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","names":[]}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- 'use strict';var T=require('react'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');require('tailwind-merge'),require('clsx');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var T__namespace=/*#__PURE__*/_interopNamespace(T);var N=n=>{let e={logo:"../swan-logo-black-icon.svg",loader:"../loader-black.gif",style:{base:{brandColor:"#5932F3",backgroundColor:"#FFFFFF",primaryColor:"#000000",secondaryColor:"#D9D9D9",baseTextColor:"#1E1E1E",baseFontSize:"16px",baseFontFamily:"'Inter', sans-serif"},logo:{logoWidth:"30px",logoHeight:"30px"},heading:{headingColor:"#000000",headingFontSize:"32px",headingFontWeight:"normal",headingFontFamily:"'SeriouslyNostalgic Fn', serif"},button:{buttonBackground:"#220B12",buttonFontSize:"14px",buttonFontFamily:"'Inter', sans-serif",buttonDisabledBackground:"#D9D9D9",buttonDisabledTextColor:"#000000",buttonTextColor:"#FFFFFF"},input:{inputBackgroundColor:"#F9FAFC",inputTextColor:"#000000",inputPlaceholderColor:"#000000",inputBorderColor:"#F9FAFC",inputFontSize:"14px",inputFontWeight:"500"}}};return T.useMemo(()=>({logo:n?.logo??e.logo,loader:n?.loader??e.loader,style:{...e.style,...n?.style||{}}}),[n])};var J=(...n)=>n.filter(Boolean).join(" "),E=T__namespace.forwardRef(({className:n,resolvedConfig:e,type:o,...t},i)=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{type:o,className:`${n||""} customInput `+J("flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200"),autoCapitalize:"off",autoCorrect:"off",ref:i,...t,style:{background:e?.style?.input?.inputBackgroundColor||"#F9FAFC",color:e?.style?.input?.inputTextColor||"#000",fontSize:e?.style?.input?.inputFontSize||"16px",fontWeight:e?.style?.input?.inputFontWeight||"400",border:`1px solid ${e?.style?.input?.inputBorderColor||"#D9D9D9"}`,fontFamily:e?.style?.base?.baseFontFamily||"Inter, sans-serif"}}),jsxRuntime.jsx("style",{children:`
1
+ 'use strict';var T=require('react'),lucideReact=require('lucide-react'),jsxRuntime=require('react/jsx-runtime');require('tailwind-merge'),require('clsx');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var T__namespace=/*#__PURE__*/_interopNamespace(T);var k=n=>{let o={logo:"../swan-logo-black-icon.svg",loader:"../loader-black.gif",style:{base:{brandColor:"#5932F3",backgroundColor:"#FFFFFF",primaryColor:"#000000",secondaryColor:"#D9D9D9",baseTextColor:"#1E1E1E",baseFontSize:"16px",baseFontFamily:"'Inter', sans-serif"},logo:{logoWidth:"30px",logoHeight:"30px"},heading:{headingColor:"#000000",headingFontSize:"32px",headingFontWeight:"normal",headingFontFamily:"'SeriouslyNostalgic Fn', serif"},button:{buttonBackground:"#220B12",buttonFontSize:"14px",buttonFontFamily:"'Inter', sans-serif",buttonDisabledBackground:"#D9D9D9",buttonDisabledTextColor:"#000000",buttonTextColor:"#FFFFFF"},input:{inputBackgroundColor:"#F9FAFC",inputTextColor:"#000000",inputPlaceholderColor:"#000000",inputBorderColor:"#F9FAFC",inputFontSize:"14px",inputFontWeight:"500"}}};return T.useMemo(()=>({logo:n?.logo??o.logo,loader:n?.loader??o.loader,style:{...o.style,...n?.style||{}}}),[n])};var J=(...n)=>n.filter(Boolean).join(" "),E=T__namespace.forwardRef(({className:n,resolvedConfig:o,type:t,...e},i)=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{type:t,className:`${n||""} customInput `+J("flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200"),autoCapitalize:"off",autoCorrect:"off",ref:i,...e,style:{background:o?.style?.input?.inputBackgroundColor||"#F9FAFC",color:o?.style?.input?.inputTextColor||"#000",fontSize:o?.style?.input?.inputFontSize||"16px",fontWeight:o?.style?.input?.inputFontWeight||"400",border:`1px solid ${o?.style?.input?.inputBorderColor||"#D9D9D9"}`,fontFamily:o?.style?.base?.baseFontFamily||"Inter, sans-serif"}}),jsxRuntime.jsx("style",{children:`
2
2
  .customInput::placeholder {
3
- color: ${e?.style?.input?.inputPlaceholderColor||"#A0A0A0"};
4
- font-weight: ${e?.style?.input?.inputPlaceholderFontWeight||"400"};
3
+ color: ${o?.style?.input?.inputPlaceholderColor||"#A0A0A0"};
4
+ font-weight: ${o?.style?.input?.inputPlaceholderFontWeight||"400"};
5
5
  opacity: 1;
6
6
  }
7
- `})]}));E.displayName="CustomInput";var c=E;var X=({buttonFunc:n,prefix:e,postfixIcon:o,className:t="",buttonText:i,btnSecondary:s,loading:r=false,disabled:a=false,type:p="button",id:d="button",resolvedConfig:l,...x})=>jsxRuntime.jsxs("button",{...x,id:d,type:p,disabled:a,onClick:n,className:`${t} flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]`,style:{fontFamily:l?.style?.button?.buttonFontFamily||"Inter, sans-serif",fontSize:l?.style?.button?.buttonFontSize||"22px",background:a?l?.style?.button?.buttonDisabledBackground:l?.style?.button?.buttonBackground||"#000",color:a?l?.style?.button?.buttonDisabledTextColor:l?.style?.button?.buttonTextColor||"#fff",fontWeight:l?.style?.button?.headingFontWeight||"normal",pointerEvents:a?"none":"auto"},children:[e&&jsxRuntime.jsx("img",{src:e,alt:"icon"}),i,o&&o]}),g=X;var ot=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=T__namespace.default.useState(e||""),[s,r]=T__namespace.default.useState(void 0);return jsxRuntime.jsx("div",{className:"w-full max-w-md",children:jsxRuntime.jsxs("form",{onSubmit:()=>{if(t.trim())n?.(t);else {r("Name is required.");return}},className:"mt-[3.5rem] mb-[.75rem]",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your name",resolvedConfig:o,onChange:p=>{i(p.target.value);}}),s&&jsxRuntime.jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{resolvedConfig:o,buttonText:"Next",btnSecondary:true,type:"submit",postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14})})})]})})},M=ot;var H=n=>{if(!n.length)throw new Error("\u274C Onboarding requires at least one step.");let o=["name","email","height","gender","focalLength"].filter(r=>!n.some(a=>a.type===r));if(o.length>0)throw new Error(`\u274C Missing required steps: ${o.join(", ")}`);let t=n.filter(r=>r.isVisible!==false),i=t.filter(r=>typeof r.order=="number"),s=t.filter(r=>typeof r.order!="number");return [...i.sort((r,a)=>r.order-a.order),...s]},B=n=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n);function k(n,e){let o=(n&&+n*30.48)??0,t=(e&&+e*2.54)??0;return o+t}var rt=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=T__namespace.default.useState(e||""),[s,r]=T__namespace.default.useState(void 0);return jsxRuntime.jsx("div",{className:"w-full max-w-md",children:jsxRuntime.jsxs("form",{className:"mt-[3.5rem] mb-[.75rem]",onSubmit:()=>{if(t.trim())B(t.trim())?n?.(t):r("Please enter a valid email address.");else {r("Email is required.");return}},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your email",resolvedConfig:o,value:t,onChange:p=>{r(void 0),i(p.target.value);}}),s&&jsxRuntime.jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{type:"submit",resolvedConfig:o,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14})})})]})})},V=rt;var lt=({onComplete:n,initialValue:e})=>{let[o,t]=T.useState({cm:e||"",ft:"",inch:""}),[i,s]=T.useState(false),[r,a]=T.useState("cm"),p=T.useCallback(u=>{i&&s(false),r==="cm"?t(h=>({...h,cm:u.target.value,ft:"",inch:""})):u.target.id==="ft"?t(h=>({...h,ft:u.target.value,cm:""})):t(h=>({...h,inch:u.target.value,cm:""}));},[i,r]),d=T.useCallback(u=>{let h=u.target.value;a(h),t({cm:"",ft:"",inch:""}),s(false);},[]),l=T.useCallback(u=>r==="cm"?!(+u.cm<152.4||+u.cm>213.36):!(k(+u.ft,+u.inch)<152.4||k(+u.ft,+u.inch)>213.36),[r]),x=T.useCallback(()=>{if(!l(o)){s(true);return}},[o,l]),C=T.useMemo(()=>!o.cm&&!o.ft&&!o.inch||i,[o,i]);T.useEffect(()=>{o.cm===""&&o.ft!==""&&a("ft");},[o]);let F=T.useCallback(()=>r==="cm"?jsxRuntime.jsx("div",{className:"w-full",children:jsxRuntime.jsx(c,{required:true,type:"number",id:"cm",placeholder:"Height in cm",inputMode:"numeric",value:o.cm,onChange:p})}):jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx("div",{children:jsxRuntime.jsx(c,{required:true,type:"number",id:"ft",className:"!pr-2",placeholder:"Height in ft",value:o.ft,onChange:p})}),jsxRuntime.jsx("div",{children:jsxRuntime.jsx(c,{required:true,type:"number",id:"inch",className:"!pr-2",placeholder:"Height in inch",value:o.inch,onChange:p})})]}),[]);return jsxRuntime.jsxs("div",{className:"h-full pt-4 px-4 w-full flex justify-center items-start text-center",children:[jsxRuntime.jsxs("div",{className:"mt-14 mb-3",children:[jsxRuntime.jsxs("div",{className:"w-full flex gap-2",children:[F(),jsxRuntime.jsxs("select",{className:"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base",value:r,onChange:d,children:[jsxRuntime.jsx("option",{value:"cm",children:"cm"}),jsxRuntime.jsx("option",{value:"ft",children:"ft"})]})]}),jsxRuntime.jsx("div",{className:"mt-2",children:i&&"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do"})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(g,{disabled:C,buttonFunc:x,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{})})})]})},A=lt;var dt=({onComplete:n,initialValue:e})=>jsxRuntime.jsx("div",{children:"FocalLengthStep"}),_=dt;var ft=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=T.useState(e);return jsxRuntime.jsxs("div",{className:"h-full w-full flex justify-center items-start text-center pt-4 px-4",children:[jsxRuntime.jsxs("div",{className:" w-full max-w-md",children:[jsxRuntime.jsx("button",{className:` text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${t==="male"?"!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]":"border-black"}`,onClick:()=>{i("male");},children:"Men's"}),jsxRuntime.jsx("button",{className:`text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${t==="female"?"!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]":"border-black"}`,onClick:()=>{i("female");},children:"Female's"})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{type:"submit",resolvedConfig:o,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14}),disabled:!t,buttonFunc:()=>n?.(t)})})]})},q=ft;var gt=({totalSteps:n,currentStepIndex:e,resolvedConfig:o})=>{let t=o?.style?.brandColor||"#000",i=o?.style?.secondaryColor||"#D9D9D9",s=T.useMemo(()=>Array.from({length:n},(r,a)=>({index:a,isActive:a===e,isCompleted:a<e})),[n,e]);return jsxRuntime.jsx("div",{className:"flex justify-center items-center gap-[4px] my-[1.5rem]",children:s.map(({index:r,isActive:a,isCompleted:p})=>jsxRuntime.jsx("div",{className:`h-[3px] rounded-full transition-all duration-300 ${a?"w-[50px]":"w-[30px]"}`,style:{backgroundColor:p||a?t:i}},r))})},O=gt;var j={email:"What is your email?",name:"Enter your name",height:"Hpw tall are you?",gender:"Whom do you shop?",focalLength:"Adjust focal length"};var wt=({steps:n,config:e,onComplete:o})=>{let t=N(e),i=T.useMemo(()=>H(n),[n]),[s,r]=T.useState(0),[a,p]=T.useState({}),d=i[s],l=C=>{let F={...a,[d.type]:C};p(F),d.onStepComplete?.(C),s+1<i.length?r(s+1):o?.(F);},x=()=>{switch(d?.type){case "name":return jsxRuntime.jsx(M,{resolvedConfig:t,onComplete:l,initialValue:d.value});case "email":return jsxRuntime.jsx(V,{resolvedConfig:t,onComplete:l,initialValue:d.value});case "height":return jsxRuntime.jsx(A,{onComplete:l,initialValue:d.value});case "gender":return jsxRuntime.jsx(q,{onComplete:l,initialValue:d.value});case "focalLength":return jsxRuntime.jsx(_,{onComplete:l,initialValue:d.value});default:return jsxRuntime.jsxs("div",{children:["Unsupported step type: ",d?.type]})}};return jsxRuntime.jsx("div",{className:"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col",style:{background:t?.style?.base?.backgroundColor},children:jsxRuntime.jsxs("div",{className:"max-w-[28rem] mx-auto w-full",children:[t?.logo&&jsxRuntime.jsx("div",{className:"text-center mb-4 flex justify-center",children:jsxRuntime.jsx("img",{src:t.logo,alt:"logo",style:{height:t?.style?.logo?.logoHeight,width:t?.style?.logo?.logoWidth},className:"h-10 mx-auto mb-3"})}),jsxRuntime.jsx(O,{resolvedConfig:t,totalSteps:i.length,currentStepIndex:s}),jsxRuntime.jsx("h1",{style:{fontFamily:t?.style?.heading?.headingFontFamily||"SeriouslyNostalgic Fn",fontSize:t?.style?.heading?.headingFontSize||"32px",color:t?.style?.heading?.headingColor||"#000",fontWeight:t?.style?.heading?.headingFontWeight||"normal"},className:"text-center pt-[1.5rem]",children:d?.type&&j[d?.type]||"Onboarding"}),x()]})})};exports.Onboarding=wt;exports.useLocalConfig=N;//# sourceMappingURL=index.js.map
7
+ `})]}));E.displayName="CustomInput";var c=E;var X=({buttonFunc:n,prefix:o,postfixIcon:t,className:e="",buttonText:i,btnSecondary:s,loading:r=false,disabled:a=false,type:u="button",id:p="button",resolvedConfig:l,...x})=>jsxRuntime.jsxs("button",{...x,id:p,type:u,disabled:a,onClick:n,className:`${e} flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]`,style:{fontFamily:l?.style?.button?.buttonFontFamily||"Inter, sans-serif",fontSize:l?.style?.button?.buttonFontSize||"22px",background:a?l?.style?.button?.buttonDisabledBackground:l?.style?.button?.buttonBackground||"#000",color:a?l?.style?.button?.buttonDisabledTextColor:l?.style?.button?.buttonTextColor||"#fff",fontWeight:l?.style?.button?.headingFontWeight||"normal",pointerEvents:a?"none":"auto"},children:[o&&jsxRuntime.jsx("img",{src:o,alt:"icon"}),i,t&&t]}),g=X;var ot=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=T__namespace.default.useState(o||""),[s,r]=T__namespace.default.useState(void 0);return jsxRuntime.jsx("div",{className:"w-full max-w-md",children:jsxRuntime.jsxs("form",{onSubmit:()=>{if(e.trim())n?.(e);else {r("Name is required.");return}},className:"mt-[3.5rem] mb-[.75rem]",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your name",resolvedConfig:t,onChange:u=>{i(u.target.value);}}),s&&jsxRuntime.jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{resolvedConfig:t,buttonText:"Next",btnSecondary:true,type:"submit",postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14})})})]})})},M=ot;var B=n=>{if(!n.length)throw new Error("\u274C Onboarding requires at least one step.");let t=["name","email","height","gender","focalLength"].filter(r=>!n.some(a=>a.type===r));if(t.length>0)throw new Error(`\u274C Missing required steps: ${t.join(", ")}`);let e=n.filter(r=>r.isVisible!==false),i=e.filter(r=>typeof r.order=="number"),s=e.filter(r=>typeof r.order!="number");return [...i.sort((r,a)=>r.order-a.order),...s]},H=n=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n);function N(n,o){let t=(n&&+n*30.48)??0,e=(o&&+o*2.54)??0;return t+e}var rt=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=T__namespace.default.useState(o||""),[s,r]=T__namespace.default.useState(void 0);return jsxRuntime.jsx("div",{className:"w-full max-w-md",children:jsxRuntime.jsxs("form",{className:"mt-[3.5rem] mb-[.75rem]",onSubmit:()=>{if(e.trim())H(e.trim())?n?.(e):r("Please enter a valid email address.");else {r("Email is required.");return}},children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your email",resolvedConfig:t,value:e,onChange:u=>{r(void 0),i(u.target.value);}}),s&&jsxRuntime.jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{type:"submit",resolvedConfig:t,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14})})})]})})},A=rt;var lt=({onComplete:n,initialValue:o})=>{let[t,e]=T.useState({cm:o?String(o):"",ft:"",inch:""}),[i,s]=T.useState(false),[r,a]=T.useState("cm"),u=T.useCallback(d=>{i&&s(false),r==="cm"?e(h=>({...h,cm:d.target.value,ft:"",inch:""})):d.target.id==="ft"?e(h=>({...h,ft:d.target.value,cm:""})):e(h=>({...h,inch:d.target.value,cm:""}));},[i,r]),p=T.useCallback(d=>{let h=d.target.value;a(h),e({cm:"",ft:"",inch:""}),s(false);},[]),l=T.useCallback(d=>r==="cm"?!(+d.cm<152.4||+d.cm>213.36):!(N(+d.ft,+d.inch)<152.4||N(+d.ft,+d.inch)>213.36),[r]),x=T.useCallback(()=>{if(!l(t)){s(true);return}let d=r==="cm"?Number(t?.cm):N(+t?.ft,+t?.inch);n?.(d);},[t,l]),F=T.useMemo(()=>!t.cm&&!t.ft&&!t.inch||i,[t,i]);T.useEffect(()=>{t.cm===""&&t.ft!==""&&a("ft");},[t]);let C=T.useCallback(()=>r==="cm"?jsxRuntime.jsx("div",{className:"w-full",children:jsxRuntime.jsx(c,{required:true,type:"number",id:"cm",placeholder:"Height in cm",inputMode:"numeric",value:t.cm,onChange:u})}):jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx("div",{children:jsxRuntime.jsx(c,{required:true,type:"number",id:"ft",className:"!pr-2",placeholder:"Height in ft",value:t.ft,onChange:u})}),jsxRuntime.jsx("div",{children:jsxRuntime.jsx(c,{required:true,type:"number",id:"inch",className:"!pr-2",placeholder:"Height in inch",value:t.inch,onChange:u})})]}),[t]);return jsxRuntime.jsxs("div",{className:"h-full pt-4 px-4 w-full flex justify-center items-start text-center",children:[jsxRuntime.jsxs("div",{className:"mt-14 mb-3",children:[jsxRuntime.jsxs("div",{className:"w-full flex gap-2",children:[C(),jsxRuntime.jsxs("select",{className:"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base",value:r,onChange:p,children:[jsxRuntime.jsx("option",{value:"cm",children:"cm"}),jsxRuntime.jsx("option",{value:"ft",children:"ft"})]})]}),jsxRuntime.jsx("div",{className:"mt-2",children:i&&"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do"})]}),jsxRuntime.jsx("div",{className:"flex justify-end",children:jsxRuntime.jsx(g,{disabled:F,buttonFunc:x,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{})})})]})},W=lt;var pt=({onComplete:n,initialValue:o})=>jsxRuntime.jsx("div",{children:"FocalLengthStep"}),V=pt;var ft=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=T.useState(o);return console.log(t),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:" w-full flex flex-col max-w-md mt-[3.5rem] gap-[1rem]",children:[jsxRuntime.jsx("button",{className:` text-btnSize bg-btn text-base cursor-pointer text-sm border leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${e==="male"?" shadow-[0_1px_1px_rgba(0,0,0,0.251)]":""}`,onClick:()=>{i("male");},style:{background:t?.style?.input?.inputBackgroundColor||"#F9FAFC",color:t?.style?.input?.inputTextColor||"#000",fontSize:t?.style?.input?.inputFontSize||"16px",fontWeight:t?.style?.input?.inputFontWeight||"400",border:`1px solid ${e==="male"?t?.style?.base?.primaryColor:"transparent"}`,fontFamily:t?.style?.base?.baseFontFamily||"Inter, sans-serif"},children:"Men's"}),jsxRuntime.jsx("button",{className:`text-btnSize font-btnFont cursor-pointer leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${e==="female"?" shadow-[0_1px_1px_rgba(0,0,0,0.251)]":""}`,onClick:()=>{i("female");},style:{background:t?.style?.input?.inputBackgroundColor||"#F9FAFC",color:t?.style?.input?.inputTextColor||"#000",fontSize:t?.style?.input?.inputFontSize||"16px",fontWeight:t?.style?.input?.inputFontWeight||"400",border:`1px solid ${e==="female"?t?.style?.base?.primaryColor:"transparent"}`,fontFamily:t?.style?.base?.baseFontFamily||"Inter, sans-serif"},children:"Female's"})]}),jsxRuntime.jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsxRuntime.jsx(g,{type:"submit",resolvedConfig:t,buttonText:"Next",btnSecondary:true,postfixIcon:jsxRuntime.jsx(lucideReact.ArrowRight,{size:14}),disabled:!e,buttonFunc:()=>n?.(e)})})]})},$=ft;var ht=({totalSteps:n,currentStepIndex:o,resolvedConfig:t})=>{let e=t?.style?.brandColor||"#000",i=t?.style?.secondaryColor||"#D9D9D9",s=T.useMemo(()=>Array.from({length:n},(r,a)=>({index:a,isActive:a===o,isCompleted:a<o})),[n,o]);return jsxRuntime.jsx("div",{className:"flex justify-center items-center gap-[4px] my-[1.5rem]",children:s.map(({index:r,isActive:a,isCompleted:u})=>jsxRuntime.jsx("div",{className:`h-[3px] rounded-full transition-all duration-300 ${a?"w-[50px]":"w-[30px]"}`,style:{backgroundColor:u||a?e:i}},r))})},O=ht;var j={email:"What is your email?",name:"Enter your name",height:"Hpw tall are you?",gender:"Whom do you shop?",focalLength:"Adjust focal length"};var yt=({steps:n,config:o,onComplete:t})=>{let e=k(o),i=T.useMemo(()=>B(n),[n]),[s,r]=T.useState(0),[a,u]=T.useState({}),p=i[s],l=F=>{let C={...a,[p.type]:F};u(C),p.onStepComplete?.(F),s+1<i.length?r(s+1):t?.(C);},x=()=>{switch(p?.type){case "name":return jsxRuntime.jsx(M,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "email":return jsxRuntime.jsx(A,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "height":return jsxRuntime.jsx(W,{onComplete:l,initialValue:p.value});case "gender":return jsxRuntime.jsx($,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "focalLength":return jsxRuntime.jsx(V,{onComplete:l,initialValue:p.value});default:return jsxRuntime.jsxs("div",{children:["Unsupported step type: ",p?.type]})}};return jsxRuntime.jsx("div",{className:"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col",style:{background:e?.style?.base?.backgroundColor},children:jsxRuntime.jsxs("div",{className:"max-w-[28rem] mx-auto w-full",children:[e?.logo&&jsxRuntime.jsx("div",{className:"text-center mb-4 flex justify-center",children:jsxRuntime.jsx("img",{src:e.logo,alt:"logo",style:{height:e?.style?.logo?.logoHeight,width:e?.style?.logo?.logoWidth},className:"h-10 mx-auto mb-3"})}),jsxRuntime.jsx(O,{resolvedConfig:e,totalSteps:i.length,currentStepIndex:s}),jsxRuntime.jsx("h1",{style:{fontFamily:e?.style?.heading?.headingFontFamily||"SeriouslyNostalgic Fn",fontSize:e?.style?.heading?.headingFontSize||"32px",color:e?.style?.heading?.headingColor||"#000",fontWeight:e?.style?.heading?.headingFontWeight||"normal"},className:"text-center pt-[1.5rem]",children:p?.type&&j[p?.type]||"Onboarding"}),x()]})})};exports.Onboarding=yt;exports.useLocalConfig=k;//# sourceMappingURL=index.js.map
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config/useLocalConfig.ts","../src/atoms/customInput/CustomInput.tsx","../src/atoms/specificButton/SpecificButton.tsx","../src/components/onboarding/NameStep.tsx","../src/utils/utils.ts","../src/components/onboarding/EmailStep.tsx","../src/components/onboarding/HeightStep.tsx","../src/components/onboarding/FocalLengthStep.tsx","../src/components/onboarding/GenderStep.tsx","../src/atoms/progressDots/ProgressDots.tsx","../src/utils/constants.ts","../src/components/onboarding/Onboarding.tsx"],"names":["useLocalConfig","config","defaultConfig","useMemo","cn","classes","CustomInput","z","className","resolvedConfig","type","props","ref","jsxs","Fragment","jsx","CustomInput_default","SpecificButton","buttonFunc","prefix","postfixIcon","buttonText","btnSecondary","loading","disabled","id","SpecificButton_default","NameStep","onComplete","initialValue","value","setValue","React","message","setMessage","e","ArrowRight","NameStep_default","resolveSteps","steps","missing","s","visible","withOrder","withoutOrder","a","b","isValidEmail","email","convertToCentimeters","feet","inches","feetToCentimeters","inchesToCentimeters","EmailStep","EmailStep_default","HeightStep","localHeight","setLocalHeight","useState","error","setError","measurementUnit","setMeasurementUnit","handleSetHeight","useCallback","event","prev","handleMeasurementUnit","val","validateHeight","height","checkMeasurement","isButtonDisabled","useEffect","renderHeightInput","HeightStep_default","FocalLengthStep","FocalLengthStep_default","GenderStep","genderType","setGenderType","GenderStep_default","ProgressDots","totalSteps","currentStepIndex","activeColor","inactiveColor","dots","_","i","index","isActive","isCompleted","ProgressDots_default","STEPS","Onboarding","visibleSteps","stepIndex","setStepIndex","values","setValues","currentStep","handleStepComplete","updated","renderStep"],"mappings":"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","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport { Config } from \"../types/interfaces\";\n\n\n/**\n * Ensures default style values are available even when config or nested properties are missing.\n * Merges deeply and memoizes the result for consistent performance.\n */\nexport const useLocalConfig = (config?: Config): Required<Config> => {\n const defaultConfig: Required<Config> = {\n logo: \"../swan-logo-black-icon.svg\",\n loader: \"../loader-black.gif\",\n style: {\n base:{\n brandColor: \"#5932F3\",\n backgroundColor: \"#FFFFFF\",\n primaryColor: \"#000000\",\n secondaryColor: \"#D9D9D9\",\n baseTextColor: \"#1E1E1E\",\n baseFontSize: \"16px\",\n baseFontFamily: \"'Inter', sans-serif\",\n },\n logo:{\n logoWidth: \"30px\",\n logoHeight: \"30px\",\n },\n heading:{\n headingColor: \"#000000\",\n headingFontSize: \"32px\",\n headingFontWeight: \"normal\",\n headingFontFamily: \"'SeriouslyNostalgic Fn', serif\",\n },\n button:{\n buttonBackground: \"#220B12\",\n buttonFontSize: \"14px\",\n buttonFontFamily: \"'Inter', sans-serif\",\n buttonDisabledBackground: \"#D9D9D9\",\n buttonDisabledTextColor: \"#000000\",\n buttonTextColor: \"#FFFFFF\",\n },\n input:{\n inputBackgroundColor: \"#F9FAFC\",\n inputTextColor: \"#000000\",\n inputPlaceholderColor: \"#000000\",\n inputBorderColor: \"#F9FAFC\",\n inputFontSize: \"14px\",\n inputFontWeight: \"500\",\n },\n },\n };\n\n return useMemo(() => ({\n logo: config?.logo ?? defaultConfig.logo,\n loader: config?.loader ?? defaultConfig.loader,\n style: {\n ...defaultConfig.style,\n ...(config?.style || {}),\n },\n }), [config]);\n};\n","import * as React from \"react\";\n\n/** Lightweight classnames helper to avoid depending on ../../utils/utils */\nconst cn = (...classes: Array<string | false | null | undefined>) =>\n classes.filter(Boolean).join(\" \");\n\nexport interface CustomInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n type?: string;\n resolvedConfig?: any;\n}\n\nconst CustomInput = React.forwardRef<HTMLInputElement, CustomInputProps>(\n ({ className, resolvedConfig, type, ...props }, ref) => (\n <>\n <input\n type={type}\n className={`${className ? className : ''} customInput ` + cn(\n \"flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200\",\n \n )}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n ref={ref}\n {...props}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${resolvedConfig?.style?.input?.inputBorderColor || '#D9D9D9'}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n />\n <style>\n {`\n .customInput::placeholder {\n color: ${resolvedConfig?.style?.input?.inputPlaceholderColor || '#A0A0A0'};\n font-weight: ${resolvedConfig?.style?.input?.inputPlaceholderFontWeight || '400'};\n opacity: 1;\n }\n `}\n </style>\n </>\n )\n );\n\n CustomInput.displayName = \"CustomInput\";\n\n export default CustomInput;\n","/* eslint-disable react/button-has-type */\n// import { CircularProgress } from \"@mui/material\";\nimport React from \"react\";\n\ninterface SpecificButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n buttonFunc?: React.MouseEventHandler<HTMLButtonElement>;\n prefix?: string;\n postfixIcon?: React.ReactNode;\n className?: string;\n buttonText?: string;\n btnSecondary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n id?: string;\n resolvedConfig?: any;\n}\n\nconst SpecificButton: React.FC<SpecificButtonProps> = ({\n buttonFunc,\n prefix,\n postfixIcon,\n className = \"\",\n buttonText,\n btnSecondary,\n loading = false,\n disabled = false,\n type = \"button\",\n id = \"button\",\n resolvedConfig,\n ...props\n}) => {\n return (\n <button\n {...props}\n id={id}\n type={type}\n disabled={disabled}\n onClick={buttonFunc}\n className={`${className} ${\"flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]\"\n }`}\n style={{\n fontFamily: resolvedConfig?.style?.button?.buttonFontFamily || 'Inter, sans-serif',\n fontSize: resolvedConfig?.style?.button?.buttonFontSize || '22px',\n background:disabled?resolvedConfig?.style?.button?.buttonDisabledBackground :resolvedConfig?.style?.button?.buttonBackground || '#000',\n color:disabled?resolvedConfig?.style?.button?.buttonDisabledTextColor : resolvedConfig?.style?.button?.buttonTextColor || '#fff',\n fontWeight: resolvedConfig?.style?.button?.headingFontWeight || 'normal',\n pointerEvents: disabled ? 'none' : 'auto',\n }}\n >\n {prefix && <img src={prefix} alt=\"icon\" />}\n {buttonText}\n {postfixIcon && postfixIcon}\n {/* {loading && disabled && <CircularProgress size={15} />} */}\n </button>\n );\n};\n\nexport default SpecificButton;\n","import { ArrowRight } from 'lucide-react';\nimport React from 'react'\nimport CustomInput from 'swan-web-components/src/atoms/customInput/CustomInput';\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\n\ninterface NameStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\nconst NameStep = ({ onComplete, initialValue, resolvedConfig }: NameStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Name is required.\");\n return; \n }else{\n onComplete?.(value);\n }\n }\n return (\n <div className=\"w-full max-w-md\">\n \n\n <form onSubmit={handleNext} className=\"mt-[3.5rem] mb-[.75rem]\">\n <div>\n <CustomInput\n required\n type=\"text\"\n id=\"name\"\n placeholder=\"Enter your name\"\n resolvedConfig={resolvedConfig}\n // className={` w-full mx-auto rounded-full font-btnFont bg-white text-black text-[18px] py-0 h-[38px] placeholder:text-black/50`}\n //value={whatEmail}\n onChange={(e)=>{\n setValue(e.target.value)\n }}\n />\n {message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n type='submit'\n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n </form>\n \n </div>\n )\n}\n\nexport default NameStep","\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\nimport { Step } from \"../types/interfaces\";\n\nexport const resolveSteps = (steps: Step[]): Step[] => {\n if (!steps.length) throw new Error(\"❌ Onboarding requires at least one step.\");\n\n // Validate all required types are present\n const required = [\"name\", \"email\", \"height\", \"gender\", \"focalLength\"];\n const missing = required.filter(r => !steps.some(s => s.type === r));\n if (missing.length > 0) {\n throw new Error(`❌ Missing required steps: ${missing.join(\", \")}`);\n }\n\n const visible = steps.filter(s => s.isVisible !== false);\n\n const withOrder = visible.filter(s => typeof s.order === \"number\");\n const withoutOrder = visible.filter(s => typeof s.order !== \"number\");\n\n return [\n ...withOrder.sort((a, b) => (a.order! - b.order!)),\n ...withoutOrder\n ];\n};\nexport const isValidEmail = (email:string) => {\n\tconst checkEmailValidation = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\treturn checkEmailValidation.test(email);\n};\nexport function cn(...inputs:string[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function convertToCentimeters(feet: number, inches: number ) {\n\tconst feetToCentimeters = (feet && +feet * 30.48) ?? 0;\n\tconst inchesToCentimeters = (inches && +inches * 2.54) ?? 0;\n\tconst totalCentimeters = feetToCentimeters + inchesToCentimeters;\n\treturn totalCentimeters;\n}","import { ArrowRight } from \"lucide-react\";\nimport React from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { isValidEmail } from \"swan-web-components/src/utils/utils\";\n\ninterface EmailStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n\tresolvedConfig?: any;\n}\n\nconst EmailStep = ({ onComplete, initialValue, resolvedConfig }: EmailStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Email is required.\");\n return; \n }else if (!isValidEmail(value.trim())){\n setMessage(\"Please enter a valid email address.\")\n }else{\n onComplete?.(value);\n }\n }\n\treturn (\n\t\t<div className=\"w-full max-w-md\">\n\t\t\t<form className=\"mt-[3.5rem] mb-[.75rem]\" onSubmit={handleNext}>\n\t\t\t\t<div>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid=\"name\"\n\t\t\t\t\t\tplaceholder=\"Enter your email\"\n\t\t\t\t\t\tresolvedConfig={resolvedConfig}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(e) => {\n setMessage(undefined);\n setValue(e.target.value);\n }}\n\t\t\t\t\t/>\n\t\t\t\t\t{message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n\t\t\t\t</div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n\t\t\t</form>\n\t\t</div>\n\t);\n};\n\nexport default EmailStep;\n","import { ArrowRight } from \"lucide-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { convertToCentimeters } from \"swan-web-components/src/utils/utils\";\n\ninterface HeightStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n}\n\nconst HeightStep = ({ onComplete, initialValue }: HeightStepProps) => {\n\tconst [localHeight, setLocalHeight] = useState({ cm: initialValue ? initialValue : \"\", ft: \"\", inch: \"\" });\n\tconst [error, setError] = useState(false);\n\tconst [measurementUnit, setMeasurementUnit] = useState(\"cm\");\n\n\tconst handleSetHeight = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (error) {\n\t\t\t\tsetError(false);\n\t\t\t}\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, cm: event.target.value, ft: \"\", inch: \"\" }));\n\t\t\t} else if (event.target.id === \"ft\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, ft: event.target.value, cm: \"\" }));\n\t\t\t} else {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, inch: event.target.value, cm: \"\" }));\n\t\t\t}\n\t\t},\n\t\t[error, measurementUnit],\n\t);\n\tconst handleMeasurementUnit = useCallback((event: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst val = event.target.value;\n\t\tsetMeasurementUnit(val);\n\t\tsetLocalHeight({ cm: \"\", ft: \"\", inch: \"\" });\n\t\tsetError(false);\n\t}, []);\n\tconst validateHeight = useCallback(\n\t\t(height: { cm: string; ft: string; inch: string }) => {\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\treturn !(+height.cm < 152.4 || +height.cm > 213.36);\n\t\t\t}\n\t\t\treturn !(convertToCentimeters(+height.ft, +height.inch) < 152.4 || convertToCentimeters(+height.ft, +height.inch) > 213.36);\n\t\t},\n\t\t[measurementUnit],\n\t);\n\n\tconst checkMeasurement = useCallback(() => {\n\t\tif (!validateHeight(localHeight)) {\n\t\t\tsetError(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// setSessionStorage(SESSION_STORAGE_KEY.HEIGHT, localHeight?.cm || convertToCentimeters(localHeight?.ft, localHeight?.inch));\n\t\t// setUserInfo(prev => ({ ...prev, height: localHeight }));\n\t}, [localHeight, validateHeight]);\n\tconst isButtonDisabled = useMemo(() => (!localHeight.cm && !localHeight.ft && !localHeight.inch) || error, [localHeight, error]);\n\tuseEffect(() => {\n\t\tif (localHeight.cm === \"\" && localHeight.ft !== \"\") {\n\t\t\tsetMeasurementUnit(\"ft\");\n\t\t}\n\t}, [localHeight]);\n\tconst renderHeightInput = useCallback(() => {\n\t\tif (measurementUnit === \"cm\") {\n\t\t\treturn (\n\t\t\t\t<div className={`w-full`}>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"cm\"\n\t\t\t\t\t\tplaceholder={\"Height in cm\"}\n\t\t\t\t\t\t// className={`${isIdntfy && `max-w-[276px] mx-auto rounded-[8px] font-btnFont text-[18px] py-0 h-[38px]`}`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tvalue={localHeight.cm}\n\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"ft\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in ft\"}\n\t\t\t\t\t\t\tvalue={localHeight.ft}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"inch\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in inch\"}\n\t\t\t\t\t\t\tvalue={localHeight.inch}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}, []);\n\treturn (\n\t\t<div className=\"h-full pt-4 px-4 w-full flex justify-center items-start text-center\">\n\t\t\t<div className=\"mt-14 mb-3\">\n\t\t\t\t<div className=\"w-full flex gap-2\">\n\t\t\t\t\t{renderHeightInput()}\n\t\t\t\t\t<select className=\"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base\" value={measurementUnit} onChange={handleMeasurementUnit}>\n\t\t\t\t\t\t<option value=\"cm\">cm</option>\n\t\t\t\t\t\t<option value=\"ft\">ft</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2\">{error && \"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do\"}</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t<SpecificButton disabled={isButtonDisabled} buttonFunc={checkMeasurement} buttonText={\"Next\"} btnSecondary postfixIcon={<ArrowRight />} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default HeightStep;\n","import React from 'react'\n\ninterface FocalLengthStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n}\n\nconst FocalLengthStep = ({onComplete,initialValue}: FocalLengthStepProps) => {\n return (\n <div>FocalLengthStep</div>\n )\n}\n\nexport default FocalLengthStep","import { ArrowRight } from 'lucide-react';\nimport React, { useState } from 'react'\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\nimport { GenderType } from 'swan-web-components/src/utils/enums';\n\ninterface GenderStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\n\nconst GenderStep = ({ onComplete, initialValue, resolvedConfig }: GenderStepProps) => {\n const [genderType, setGenderType] = useState<GenderType>(initialValue);\n return (\n <div className=\"h-full w-full flex justify-center items-start text-center pt-4 px-4\">\n <div className=\" w-full max-w-md\">\n <button\n\t\t\t\t\t\t\tclassName={` text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${genderType === GenderType.Male ? `!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"border-black\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Male);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tMen's\n\t\t\t\t\t\t</button>\n <button\n\t\t\t\t\t\t\tclassName={`text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${genderType === GenderType.Female ? `!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"border-black\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Female);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFemale's\n\t\t\t\t\t\t</button>\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n disabled={!genderType}\n buttonFunc={() => onComplete?.(genderType)}\n />\n </div>\n </div>\n )\n}\n\nexport default GenderStep","import React, { useMemo } from \"react\";\n\ninterface ProgressDotsProps {\n totalSteps: number;\n currentStepIndex: number;\n resolvedConfig?: any;\n}\n\nconst ProgressDots: React.FC<ProgressDotsProps> = ({\n totalSteps,\n currentStepIndex,\n resolvedConfig\n}) => {\n const activeColor = resolvedConfig?.style?.brandColor || \"#000\";\n const inactiveColor = resolvedConfig?.style?.secondaryColor || \"#D9D9D9\";\n\n const dots = useMemo(\n () =>\n Array.from({ length: totalSteps }, (_, i) => ({\n index: i,\n isActive: i === currentStepIndex,\n isCompleted: i < currentStepIndex\n })),\n [totalSteps, currentStepIndex]\n );\n\n return (\n <div className=\"flex justify-center items-center gap-[4px] my-[1.5rem]\">\n {dots.map(({ index, isActive, isCompleted }) => (\n <div\n key={index}\n className={`h-[3px] rounded-full transition-all duration-300 ${\n isActive ? \"w-[50px]\" : \"w-[30px]\"\n }`}\n style={{\n backgroundColor: isCompleted || isActive ? activeColor : inactiveColor\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default ProgressDots;\n","import { StepType } from \"../types/interfaces\";\n\nexport const STEPS: Record<StepType, string> = {\n email: \"What is your email?\",\n name: \"Enter your name\",\n height: \"Hpw tall are you?\",\n gender: \"Whom do you shop?\",\n focalLength: \"Adjust focal length\",\n}\n\n","import React, { useState, useMemo } from \"react\";\nimport { useLocalConfig } from \"../../config/useLocalConfig\";\nimport { OnboardingProps, Step } from \"../../types/interfaces\";\nimport NameStep from \"./NameStep\";\nimport EmailStep from \"./EmailStep\";\nimport HeightStep from \"./HeightStep\";\nimport FocalLengthStep from \"./FocalLengthStep\";\nimport GenderStep from \"./GenderStep\";\nimport ProgressDots from \"swan-web-components/src/atoms/progressDots/ProgressDots\";\nimport { resolveSteps } from \"swan-web-components/src/utils/utils\";\nimport { STEPS } from \"swan-web-components/src/utils/constants\";\n\nexport const Onboarding: React.FC<OnboardingProps> = ({ steps, config, onComplete }) => {\n\tconst resolvedConfig = useLocalConfig(config);\n\tconst visibleSteps = useMemo(() => resolveSteps(steps), [steps]);\n\tconst [stepIndex, setStepIndex] = useState(0);\n\tconst [values, setValues] = useState<Record<string, any>>({});\n\tconst currentStep: Step = visibleSteps[stepIndex];\n\n\tconst handleStepComplete = (value?: any) => {\n\t\tconst updated = { ...values, [currentStep.type]: value };\n\t\tsetValues(updated);\n\t\tcurrentStep.onStepComplete?.(value);\n\n\t\tif (stepIndex + 1 < visibleSteps.length) setStepIndex(stepIndex + 1);\n\t\telse onComplete?.(updated);\n\t};\n\n\tconst renderStep = () => {\n\t\tswitch (currentStep?.type) {\n\t\t\tcase \"name\":\n\t\t\t\treturn <NameStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"email\":\n\t\t\t\treturn <EmailStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"height\":\n\t\t\t\treturn <HeightStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"gender\":\n\t\t\t\treturn <GenderStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"focalLength\":\n\t\t\t\treturn <FocalLengthStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tdefault:\n\t\t\t\treturn <div>Unsupported step type: {currentStep?.type}</div>;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"max-w-[28rem] mx-auto w-full\">\n\t\t\t\t{resolvedConfig?.logo && (\n\t\t\t\t\t<div className=\"text-center mb-4 flex justify-center\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={resolvedConfig.logo}\n\t\t\t\t\t\t\talt=\"logo\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: resolvedConfig?.style?.logo?.logoHeight,\n\t\t\t\t\t\t\t\twidth: resolvedConfig?.style?.logo?.logoWidth,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"h-10 mx-auto mb-3\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ProgressDots resolvedConfig={resolvedConfig} totalSteps={visibleSteps.length} currentStepIndex={stepIndex} />\n\n\t\t\t\t<h1\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"text-center pt-[1.5rem]\"\n\t\t\t\t>\n\t\t\t\t\t{(currentStep?.type && STEPS[currentStep?.type]) || \"Onboarding\"}\n\t\t\t\t</h1>\n\t\t\t\t{renderStep()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n"]}
1
+ {"version":3,"sources":["../src/config/useLocalConfig.ts","../src/atoms/customInput/CustomInput.tsx","../src/atoms/specificButton/SpecificButton.tsx","../src/components/onboarding/NameStep.tsx","../src/utils/utils.ts","../src/components/onboarding/EmailStep.tsx","../src/components/onboarding/HeightStep.tsx","../src/components/onboarding/FocalLengthStep.tsx","../src/components/onboarding/GenderStep.tsx","../src/atoms/progressDots/ProgressDots.tsx","../src/utils/constants.ts","../src/components/onboarding/Onboarding.tsx"],"names":["useLocalConfig","config","defaultConfig","useMemo","cn","classes","CustomInput","R","className","resolvedConfig","type","props","ref","jsxs","Fragment","jsx","CustomInput_default","SpecificButton","buttonFunc","prefix","postfixIcon","buttonText","btnSecondary","loading","disabled","id","SpecificButton_default","NameStep","onComplete","initialValue","value","setValue","React","message","setMessage","e","ArrowRight","NameStep_default","resolveSteps","steps","missing","s","visible","withOrder","withoutOrder","a","b","isValidEmail","email","convertToCentimeters","feet","inches","feetToCentimeters","inchesToCentimeters","EmailStep","EmailStep_default","HeightStep","localHeight","setLocalHeight","useState","error","setError","measurementUnit","setMeasurementUnit","handleSetHeight","useCallback","event","prev","handleMeasurementUnit","val","validateHeight","height","checkMeasurement","isButtonDisabled","useEffect","renderHeightInput","HeightStep_default","FocalLengthStep","FocalLengthStep_default","GenderStep","genderType","setGenderType","GenderStep_default","ProgressDots","totalSteps","currentStepIndex","activeColor","inactiveColor","dots","_","i","index","isActive","isCompleted","ProgressDots_default","STEPS","Onboarding","visibleSteps","stepIndex","setStepIndex","values","setValues","currentStep","handleStepComplete","updated","renderStep"],"mappings":"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","file":"index.js","sourcesContent":["import { useMemo } from \"react\";\nimport { Config } from \"../types/interfaces\";\n\n\n/**\n * Ensures default style values are available even when config or nested properties are missing.\n * Merges deeply and memoizes the result for consistent performance.\n */\nexport const useLocalConfig = (config?: Config): Required<Config> => {\n const defaultConfig: Required<Config> = {\n logo: \"../swan-logo-black-icon.svg\",\n loader: \"../loader-black.gif\",\n style: {\n base:{\n brandColor: \"#5932F3\",\n backgroundColor: \"#FFFFFF\",\n primaryColor: \"#000000\",\n secondaryColor: \"#D9D9D9\",\n baseTextColor: \"#1E1E1E\",\n baseFontSize: \"16px\",\n baseFontFamily: \"'Inter', sans-serif\",\n },\n logo:{\n logoWidth: \"30px\",\n logoHeight: \"30px\",\n },\n heading:{\n headingColor: \"#000000\",\n headingFontSize: \"32px\",\n headingFontWeight: \"normal\",\n headingFontFamily: \"'SeriouslyNostalgic Fn', serif\",\n },\n button:{\n buttonBackground: \"#220B12\",\n buttonFontSize: \"14px\",\n buttonFontFamily: \"'Inter', sans-serif\",\n buttonDisabledBackground: \"#D9D9D9\",\n buttonDisabledTextColor: \"#000000\",\n buttonTextColor: \"#FFFFFF\",\n },\n input:{\n inputBackgroundColor: \"#F9FAFC\",\n inputTextColor: \"#000000\",\n inputPlaceholderColor: \"#000000\",\n inputBorderColor: \"#F9FAFC\",\n inputFontSize: \"14px\",\n inputFontWeight: \"500\",\n },\n },\n };\n\n return useMemo(() => ({\n logo: config?.logo ?? defaultConfig.logo,\n loader: config?.loader ?? defaultConfig.loader,\n style: {\n ...defaultConfig.style,\n ...(config?.style || {}),\n },\n }), [config]);\n};\n","import * as React from \"react\";\n\n/** Lightweight classnames helper to avoid depending on ../../utils/utils */\nconst cn = (...classes: Array<string | false | null | undefined>) =>\n classes.filter(Boolean).join(\" \");\n\nexport interface CustomInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n type?: string;\n resolvedConfig?: any;\n}\n\nconst CustomInput = React.forwardRef<HTMLInputElement, CustomInputProps>(\n ({ className, resolvedConfig, type, ...props }, ref) => (\n <>\n <input\n type={type}\n className={`${className ? className : ''} customInput ` + cn(\n \"flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200\",\n \n )}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n ref={ref}\n {...props}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${resolvedConfig?.style?.input?.inputBorderColor || '#D9D9D9'}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n />\n <style>\n {`\n .customInput::placeholder {\n color: ${resolvedConfig?.style?.input?.inputPlaceholderColor || '#A0A0A0'};\n font-weight: ${resolvedConfig?.style?.input?.inputPlaceholderFontWeight || '400'};\n opacity: 1;\n }\n `}\n </style>\n </>\n )\n );\n\n CustomInput.displayName = \"CustomInput\";\n\n export default CustomInput;\n","/* eslint-disable react/button-has-type */\n// import { CircularProgress } from \"@mui/material\";\nimport React from \"react\";\n\ninterface SpecificButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n buttonFunc?: React.MouseEventHandler<HTMLButtonElement>;\n prefix?: string;\n postfixIcon?: React.ReactNode;\n className?: string;\n buttonText?: string;\n btnSecondary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n id?: string;\n resolvedConfig?: any;\n}\n\nconst SpecificButton: React.FC<SpecificButtonProps> = ({\n buttonFunc,\n prefix,\n postfixIcon,\n className = \"\",\n buttonText,\n btnSecondary,\n loading = false,\n disabled = false,\n type = \"button\",\n id = \"button\",\n resolvedConfig,\n ...props\n}) => {\n return (\n <button\n {...props}\n id={id}\n type={type}\n disabled={disabled}\n onClick={buttonFunc}\n className={`${className} ${\"flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]\"\n }`}\n style={{\n fontFamily: resolvedConfig?.style?.button?.buttonFontFamily || 'Inter, sans-serif',\n fontSize: resolvedConfig?.style?.button?.buttonFontSize || '22px',\n background:disabled?resolvedConfig?.style?.button?.buttonDisabledBackground :resolvedConfig?.style?.button?.buttonBackground || '#000',\n color:disabled?resolvedConfig?.style?.button?.buttonDisabledTextColor : resolvedConfig?.style?.button?.buttonTextColor || '#fff',\n fontWeight: resolvedConfig?.style?.button?.headingFontWeight || 'normal',\n pointerEvents: disabled ? 'none' : 'auto',\n }}\n >\n {prefix && <img src={prefix} alt=\"icon\" />}\n {buttonText}\n {postfixIcon && postfixIcon}\n {/* {loading && disabled && <CircularProgress size={15} />} */}\n </button>\n );\n};\n\nexport default SpecificButton;\n","import { ArrowRight } from 'lucide-react';\nimport React from 'react'\nimport CustomInput from 'swan-web-components/src/atoms/customInput/CustomInput';\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\n\ninterface NameStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\nconst NameStep = ({ onComplete, initialValue, resolvedConfig }: NameStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Name is required.\");\n return; \n }else{\n onComplete?.(value);\n }\n }\n return (\n <div className=\"w-full max-w-md\">\n \n\n <form onSubmit={handleNext} className=\"mt-[3.5rem] mb-[.75rem]\">\n <div>\n <CustomInput\n required\n type=\"text\"\n id=\"name\"\n placeholder=\"Enter your name\"\n resolvedConfig={resolvedConfig}\n // className={` w-full mx-auto rounded-full font-btnFont bg-white text-black text-[18px] py-0 h-[38px] placeholder:text-black/50`}\n //value={whatEmail}\n onChange={(e)=>{\n setValue(e.target.value)\n }}\n />\n {message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n type='submit'\n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n </form>\n \n </div>\n )\n}\n\nexport default NameStep","\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\nimport { Step } from \"../types/interfaces\";\n\nexport const resolveSteps = (steps: Step[]): Step[] => {\n if (!steps.length) throw new Error(\"❌ Onboarding requires at least one step.\");\n\n // Validate all required types are present\n const required = [\"name\", \"email\", \"height\", \"gender\", \"focalLength\"];\n const missing = required.filter(r => !steps.some(s => s.type === r));\n if (missing.length > 0) {\n throw new Error(`❌ Missing required steps: ${missing.join(\", \")}`);\n }\n\n const visible = steps.filter(s => s.isVisible !== false);\n\n const withOrder = visible.filter(s => typeof s.order === \"number\");\n const withoutOrder = visible.filter(s => typeof s.order !== \"number\");\n\n return [\n ...withOrder.sort((a, b) => (a.order! - b.order!)),\n ...withoutOrder\n ];\n};\nexport const isValidEmail = (email:string) => {\n\tconst checkEmailValidation = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\treturn checkEmailValidation.test(email);\n};\nexport function cn(...inputs:string[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function convertToCentimeters(feet: number, inches: number ) {\n\tconst feetToCentimeters = (feet && +feet * 30.48) ?? 0;\n\tconst inchesToCentimeters = (inches && +inches * 2.54) ?? 0;\n\tconst totalCentimeters = feetToCentimeters + inchesToCentimeters;\n\treturn totalCentimeters;\n}","import { ArrowRight } from \"lucide-react\";\nimport React from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { isValidEmail } from \"swan-web-components/src/utils/utils\";\n\ninterface EmailStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n\tresolvedConfig?: any;\n}\n\nconst EmailStep = ({ onComplete, initialValue, resolvedConfig }: EmailStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Email is required.\");\n return; \n }else if (!isValidEmail(value.trim())){\n setMessage(\"Please enter a valid email address.\")\n }else{\n onComplete?.(value);\n }\n }\n\treturn (\n\t\t<div className=\"w-full max-w-md\">\n\t\t\t<form className=\"mt-[3.5rem] mb-[.75rem]\" onSubmit={handleNext}>\n\t\t\t\t<div>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid=\"name\"\n\t\t\t\t\t\tplaceholder=\"Enter your email\"\n\t\t\t\t\t\tresolvedConfig={resolvedConfig}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(e) => {\n setMessage(undefined);\n setValue(e.target.value);\n }}\n\t\t\t\t\t/>\n\t\t\t\t\t{message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n\t\t\t\t</div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n\t\t\t</form>\n\t\t</div>\n\t);\n};\n\nexport default EmailStep;\n","import { ArrowRight } from \"lucide-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { convertToCentimeters } from \"swan-web-components/src/utils/utils\";\n\ninterface HeightStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n}\n\nconst HeightStep = ({ onComplete, initialValue }: HeightStepProps) => {\n\tconst [localHeight, setLocalHeight] = useState({ cm: initialValue ? String(initialValue) : \"\", ft: \"\", inch: \"\" });\n\tconst [error, setError] = useState(false);\n\tconst [measurementUnit, setMeasurementUnit] = useState(\"cm\");\n\n\tconst handleSetHeight = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (error) {\n\t\t\t\tsetError(false);\n\t\t\t}\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, cm: event.target.value, ft: \"\", inch: \"\" }));\n\t\t\t} else if (event.target.id === \"ft\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, ft: event.target.value, cm: \"\" }));\n\t\t\t} else {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, inch: event.target.value, cm: \"\" }));\n\t\t\t}\n\t\t},\n\t\t[error, measurementUnit],\n\t);\n\n\tconst handleMeasurementUnit = useCallback((event: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst val = event.target.value;\n\t\tsetMeasurementUnit(val);\n\t\tsetLocalHeight({ cm: \"\", ft: \"\", inch: \"\" });\n\t\tsetError(false);\n\t}, []);\n\tconst validateHeight = useCallback(\n\t\t(height: { cm: string; ft: string; inch: string }) => {\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\treturn !(+height.cm < 152.4 || +height.cm > 213.36);\n\t\t\t}\n\t\t\treturn !(convertToCentimeters(+height.ft, +height.inch) < 152.4 || convertToCentimeters(+height.ft, +height.inch) > 213.36);\n\t\t},\n\t\t[measurementUnit],\n\t);\n\n\tconst checkMeasurement = useCallback(() => {\n\t\tif (!validateHeight(localHeight)) {\n\t\t\tsetError(true);\n\t\t\treturn;\n\t\t}\n\t\tconst height = measurementUnit === \"cm\" ? Number(localHeight?.cm) : convertToCentimeters(+localHeight?.ft, +localHeight?.inch);\n\t\tonComplete?.(height);\n\t\t// setSessionStorage(SESSION_STORAGE_KEY.HEIGHT, localHeight?.cm || convertToCentimeters(localHeight?.ft, localHeight?.inch));\n\t\t// setUserInfo(prev => ({ ...prev, height: localHeight }));\n\t}, [localHeight, validateHeight]);\n\tconst isButtonDisabled = useMemo(() => (!localHeight.cm && !localHeight.ft && !localHeight.inch) || error, [localHeight, error]);\n\tuseEffect(() => {\n\t\tif (localHeight.cm === \"\" && localHeight.ft !== \"\") {\n\t\t\tsetMeasurementUnit(\"ft\");\n\t\t}\n\t}, [localHeight]);\n\tconst renderHeightInput = useCallback(() => {\n\t\tif (measurementUnit === \"cm\") {\n\t\t\treturn (\n\t\t\t\t<div className={`w-full`}>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"cm\"\n\t\t\t\t\t\tplaceholder={\"Height in cm\"}\n\t\t\t\t\t\t// className={`${isIdntfy && `max-w-[276px] mx-auto rounded-[8px] font-btnFont text-[18px] py-0 h-[38px]`}`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tvalue={localHeight.cm}\n\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"ft\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in ft\"}\n\t\t\t\t\t\t\tvalue={localHeight.ft}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"inch\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in inch\"}\n\t\t\t\t\t\t\tvalue={localHeight.inch}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}, [localHeight]);\n\treturn (\n\t\t<div className=\"h-full pt-4 px-4 w-full flex justify-center items-start text-center\">\n\t\t\t<div className=\"mt-14 mb-3\">\n\t\t\t\t<div className=\"w-full flex gap-2\">\n\t\t\t\t\t{renderHeightInput()}\n\t\t\t\t\t<select className=\"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base\" value={measurementUnit} onChange={handleMeasurementUnit}>\n\t\t\t\t\t\t<option value=\"cm\">cm</option>\n\t\t\t\t\t\t<option value=\"ft\">ft</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2\">{error && \"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do\"}</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t<SpecificButton disabled={isButtonDisabled} buttonFunc={checkMeasurement} buttonText={\"Next\"} btnSecondary postfixIcon={<ArrowRight />} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default HeightStep;\n","import React from 'react'\n\ninterface FocalLengthStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n}\n\nconst FocalLengthStep = ({onComplete,initialValue}: FocalLengthStepProps) => {\n return (\n <div>FocalLengthStep</div>\n )\n}\n\nexport default FocalLengthStep","import { ArrowRight } from 'lucide-react';\nimport React, { useState } from 'react'\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\nimport { GenderType } from 'swan-web-components/src/utils/enums';\n\ninterface GenderStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\n\nconst GenderStep = ({ onComplete, initialValue, resolvedConfig }: GenderStepProps) => {\n const [genderType, setGenderType] = useState<GenderType>(initialValue);\n console.log(resolvedConfig);\n return (\n <>\n <div className=\" w-full flex flex-col max-w-md mt-[3.5rem] gap-[1rem]\">\n <button\n\t\t\t\t\t\t\tclassName={` text-btnSize bg-btn text-base cursor-pointer text-sm border leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${genderType === GenderType.Male ? ` shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Male);\n\t\t\t\t\t\t\t}}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${genderType === GenderType.Male ? resolvedConfig?.style?.base?.primaryColor : `transparent`}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tMen's\n\t\t\t\t\t\t</button>\n <button\n\t\t\t\t\t\t\tclassName={`text-btnSize font-btnFont cursor-pointer leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${genderType === GenderType.Female ? ` shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Female);\n\t\t\t\t\t\t\t}}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${genderType === GenderType.Female ? resolvedConfig?.style?.base?.primaryColor : `transparent`}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFemale's \n\t\t\t\t\t\t</button>\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n disabled={!genderType}\n buttonFunc={() => onComplete?.(genderType)}\n />\n </div>\n </>\n )\n}\n\nexport default GenderStep","import React, { useMemo } from \"react\";\n\ninterface ProgressDotsProps {\n totalSteps: number;\n currentStepIndex: number;\n resolvedConfig?: any;\n}\n\nconst ProgressDots: React.FC<ProgressDotsProps> = ({\n totalSteps,\n currentStepIndex,\n resolvedConfig\n}) => {\n const activeColor = resolvedConfig?.style?.brandColor || \"#000\";\n const inactiveColor = resolvedConfig?.style?.secondaryColor || \"#D9D9D9\";\n\n const dots = useMemo(\n () =>\n Array.from({ length: totalSteps }, (_, i) => ({\n index: i,\n isActive: i === currentStepIndex,\n isCompleted: i < currentStepIndex\n })),\n [totalSteps, currentStepIndex]\n );\n\n return (\n <div className=\"flex justify-center items-center gap-[4px] my-[1.5rem]\">\n {dots.map(({ index, isActive, isCompleted }) => (\n <div\n key={index}\n className={`h-[3px] rounded-full transition-all duration-300 ${\n isActive ? \"w-[50px]\" : \"w-[30px]\"\n }`}\n style={{\n backgroundColor: isCompleted || isActive ? activeColor : inactiveColor\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default ProgressDots;\n","import { StepType } from \"../types/interfaces\";\n\nexport const STEPS: Record<StepType, string> = {\n email: \"What is your email?\",\n name: \"Enter your name\",\n height: \"Hpw tall are you?\",\n gender: \"Whom do you shop?\",\n focalLength: \"Adjust focal length\",\n}\n\n","import React, { useState, useMemo } from \"react\";\nimport { useLocalConfig } from \"../../config/useLocalConfig\";\nimport { OnboardingProps, Step } from \"../../types/interfaces\";\nimport NameStep from \"./NameStep\";\nimport EmailStep from \"./EmailStep\";\nimport HeightStep from \"./HeightStep\";\nimport FocalLengthStep from \"./FocalLengthStep\";\nimport GenderStep from \"./GenderStep\";\nimport ProgressDots from \"swan-web-components/src/atoms/progressDots/ProgressDots\";\nimport { resolveSteps } from \"swan-web-components/src/utils/utils\";\nimport { STEPS } from \"swan-web-components/src/utils/constants\";\n\nexport const Onboarding: React.FC<OnboardingProps> = ({ steps, config, onComplete }) => {\n\tconst resolvedConfig = useLocalConfig(config);\n\tconst visibleSteps = useMemo(() => resolveSteps(steps), [steps]);\n\tconst [stepIndex, setStepIndex] = useState(0);\n\tconst [values, setValues] = useState<Record<string, any>>({});\n\tconst currentStep: Step = visibleSteps[stepIndex];\n\n\tconst handleStepComplete = (value?: any) => {\n\t\tconst updated = { ...values, [currentStep.type]: value };\n\t\tsetValues(updated);\n\t\tcurrentStep.onStepComplete?.(value);\n\n\t\tif (stepIndex + 1 < visibleSteps.length) setStepIndex(stepIndex + 1);\n\t\telse onComplete?.(updated);\n\t};\n\n\tconst renderStep = () => {\n\t\tswitch (currentStep?.type) {\n\t\t\tcase \"name\":\n\t\t\t\treturn <NameStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"email\":\n\t\t\t\treturn <EmailStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"height\":\n\t\t\t\treturn <HeightStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"gender\":\n\t\t\t\treturn <GenderStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"focalLength\":\n\t\t\t\treturn <FocalLengthStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tdefault:\n\t\t\t\treturn <div>Unsupported step type: {currentStep?.type}</div>;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"max-w-[28rem] mx-auto w-full\">\n\t\t\t\t{resolvedConfig?.logo && (\n\t\t\t\t\t<div className=\"text-center mb-4 flex justify-center\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={resolvedConfig.logo}\n\t\t\t\t\t\t\talt=\"logo\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: resolvedConfig?.style?.logo?.logoHeight,\n\t\t\t\t\t\t\t\twidth: resolvedConfig?.style?.logo?.logoWidth,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"h-10 mx-auto mb-3\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ProgressDots resolvedConfig={resolvedConfig} totalSteps={visibleSteps.length} currentStepIndex={stepIndex} />\n\n\t\t\t\t<h1\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"text-center pt-[1.5rem]\"\n\t\t\t\t>\n\t\t\t\t\t{(currentStep?.type && STEPS[currentStep?.type]) || \"Onboarding\"}\n\t\t\t\t</h1>\n\t\t\t\t{renderStep()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n"]}
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import*as T from'react';import T__default,{useMemo,useState,useCallback,useEffect}from'react';import {ArrowRight}from'lucide-react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import'tailwind-merge';import'clsx';var N=n=>{let e={logo:"../swan-logo-black-icon.svg",loader:"../loader-black.gif",style:{base:{brandColor:"#5932F3",backgroundColor:"#FFFFFF",primaryColor:"#000000",secondaryColor:"#D9D9D9",baseTextColor:"#1E1E1E",baseFontSize:"16px",baseFontFamily:"'Inter', sans-serif"},logo:{logoWidth:"30px",logoHeight:"30px"},heading:{headingColor:"#000000",headingFontSize:"32px",headingFontWeight:"normal",headingFontFamily:"'SeriouslyNostalgic Fn', serif"},button:{buttonBackground:"#220B12",buttonFontSize:"14px",buttonFontFamily:"'Inter', sans-serif",buttonDisabledBackground:"#D9D9D9",buttonDisabledTextColor:"#000000",buttonTextColor:"#FFFFFF"},input:{inputBackgroundColor:"#F9FAFC",inputTextColor:"#000000",inputPlaceholderColor:"#000000",inputBorderColor:"#F9FAFC",inputFontSize:"14px",inputFontWeight:"500"}}};return useMemo(()=>({logo:n?.logo??e.logo,loader:n?.loader??e.loader,style:{...e.style,...n?.style||{}}}),[n])};var J=(...n)=>n.filter(Boolean).join(" "),E=T.forwardRef(({className:n,resolvedConfig:e,type:o,...t},i)=>jsxs(Fragment,{children:[jsx("input",{type:o,className:`${n||""} customInput `+J("flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200"),autoCapitalize:"off",autoCorrect:"off",ref:i,...t,style:{background:e?.style?.input?.inputBackgroundColor||"#F9FAFC",color:e?.style?.input?.inputTextColor||"#000",fontSize:e?.style?.input?.inputFontSize||"16px",fontWeight:e?.style?.input?.inputFontWeight||"400",border:`1px solid ${e?.style?.input?.inputBorderColor||"#D9D9D9"}`,fontFamily:e?.style?.base?.baseFontFamily||"Inter, sans-serif"}}),jsx("style",{children:`
1
+ import*as T from'react';import T__default,{useMemo,useState,useCallback,useEffect}from'react';import {ArrowRight}from'lucide-react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';import'tailwind-merge';import'clsx';var k=n=>{let o={logo:"../swan-logo-black-icon.svg",loader:"../loader-black.gif",style:{base:{brandColor:"#5932F3",backgroundColor:"#FFFFFF",primaryColor:"#000000",secondaryColor:"#D9D9D9",baseTextColor:"#1E1E1E",baseFontSize:"16px",baseFontFamily:"'Inter', sans-serif"},logo:{logoWidth:"30px",logoHeight:"30px"},heading:{headingColor:"#000000",headingFontSize:"32px",headingFontWeight:"normal",headingFontFamily:"'SeriouslyNostalgic Fn', serif"},button:{buttonBackground:"#220B12",buttonFontSize:"14px",buttonFontFamily:"'Inter', sans-serif",buttonDisabledBackground:"#D9D9D9",buttonDisabledTextColor:"#000000",buttonTextColor:"#FFFFFF"},input:{inputBackgroundColor:"#F9FAFC",inputTextColor:"#000000",inputPlaceholderColor:"#000000",inputBorderColor:"#F9FAFC",inputFontSize:"14px",inputFontWeight:"500"}}};return useMemo(()=>({logo:n?.logo??o.logo,loader:n?.loader??o.loader,style:{...o.style,...n?.style||{}}}),[n])};var J=(...n)=>n.filter(Boolean).join(" "),E=T.forwardRef(({className:n,resolvedConfig:o,type:t,...e},i)=>jsxs(Fragment,{children:[jsx("input",{type:t,className:`${n||""} customInput `+J("flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200"),autoCapitalize:"off",autoCorrect:"off",ref:i,...e,style:{background:o?.style?.input?.inputBackgroundColor||"#F9FAFC",color:o?.style?.input?.inputTextColor||"#000",fontSize:o?.style?.input?.inputFontSize||"16px",fontWeight:o?.style?.input?.inputFontWeight||"400",border:`1px solid ${o?.style?.input?.inputBorderColor||"#D9D9D9"}`,fontFamily:o?.style?.base?.baseFontFamily||"Inter, sans-serif"}}),jsx("style",{children:`
2
2
  .customInput::placeholder {
3
- color: ${e?.style?.input?.inputPlaceholderColor||"#A0A0A0"};
4
- font-weight: ${e?.style?.input?.inputPlaceholderFontWeight||"400"};
3
+ color: ${o?.style?.input?.inputPlaceholderColor||"#A0A0A0"};
4
+ font-weight: ${o?.style?.input?.inputPlaceholderFontWeight||"400"};
5
5
  opacity: 1;
6
6
  }
7
- `})]}));E.displayName="CustomInput";var c=E;var X=({buttonFunc:n,prefix:e,postfixIcon:o,className:t="",buttonText:i,btnSecondary:s,loading:r=false,disabled:a=false,type:p="button",id:d="button",resolvedConfig:l,...x})=>jsxs("button",{...x,id:d,type:p,disabled:a,onClick:n,className:`${t} flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]`,style:{fontFamily:l?.style?.button?.buttonFontFamily||"Inter, sans-serif",fontSize:l?.style?.button?.buttonFontSize||"22px",background:a?l?.style?.button?.buttonDisabledBackground:l?.style?.button?.buttonBackground||"#000",color:a?l?.style?.button?.buttonDisabledTextColor:l?.style?.button?.buttonTextColor||"#fff",fontWeight:l?.style?.button?.headingFontWeight||"normal",pointerEvents:a?"none":"auto"},children:[e&&jsx("img",{src:e,alt:"icon"}),i,o&&o]}),g=X;var ot=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=T__default.useState(e||""),[s,r]=T__default.useState(void 0);return jsx("div",{className:"w-full max-w-md",children:jsxs("form",{onSubmit:()=>{if(t.trim())n?.(t);else {r("Name is required.");return}},className:"mt-[3.5rem] mb-[.75rem]",children:[jsxs("div",{children:[jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your name",resolvedConfig:o,onChange:p=>{i(p.target.value);}}),s&&jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{resolvedConfig:o,buttonText:"Next",btnSecondary:true,type:"submit",postfixIcon:jsx(ArrowRight,{size:14})})})]})})},M=ot;var H=n=>{if(!n.length)throw new Error("\u274C Onboarding requires at least one step.");let o=["name","email","height","gender","focalLength"].filter(r=>!n.some(a=>a.type===r));if(o.length>0)throw new Error(`\u274C Missing required steps: ${o.join(", ")}`);let t=n.filter(r=>r.isVisible!==false),i=t.filter(r=>typeof r.order=="number"),s=t.filter(r=>typeof r.order!="number");return [...i.sort((r,a)=>r.order-a.order),...s]},B=n=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n);function k(n,e){let o=(n&&+n*30.48)??0,t=(e&&+e*2.54)??0;return o+t}var rt=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=T__default.useState(e||""),[s,r]=T__default.useState(void 0);return jsx("div",{className:"w-full max-w-md",children:jsxs("form",{className:"mt-[3.5rem] mb-[.75rem]",onSubmit:()=>{if(t.trim())B(t.trim())?n?.(t):r("Please enter a valid email address.");else {r("Email is required.");return}},children:[jsxs("div",{children:[jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your email",resolvedConfig:o,value:t,onChange:p=>{r(void 0),i(p.target.value);}}),s&&jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{type:"submit",resolvedConfig:o,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{size:14})})})]})})},V=rt;var lt=({onComplete:n,initialValue:e})=>{let[o,t]=useState({cm:e||"",ft:"",inch:""}),[i,s]=useState(false),[r,a]=useState("cm"),p=useCallback(u=>{i&&s(false),r==="cm"?t(h=>({...h,cm:u.target.value,ft:"",inch:""})):u.target.id==="ft"?t(h=>({...h,ft:u.target.value,cm:""})):t(h=>({...h,inch:u.target.value,cm:""}));},[i,r]),d=useCallback(u=>{let h=u.target.value;a(h),t({cm:"",ft:"",inch:""}),s(false);},[]),l=useCallback(u=>r==="cm"?!(+u.cm<152.4||+u.cm>213.36):!(k(+u.ft,+u.inch)<152.4||k(+u.ft,+u.inch)>213.36),[r]),x=useCallback(()=>{if(!l(o)){s(true);return}},[o,l]),C=useMemo(()=>!o.cm&&!o.ft&&!o.inch||i,[o,i]);useEffect(()=>{o.cm===""&&o.ft!==""&&a("ft");},[o]);let F=useCallback(()=>r==="cm"?jsx("div",{className:"w-full",children:jsx(c,{required:true,type:"number",id:"cm",placeholder:"Height in cm",inputMode:"numeric",value:o.cm,onChange:p})}):jsxs("div",{className:"flex gap-2",children:[jsx("div",{children:jsx(c,{required:true,type:"number",id:"ft",className:"!pr-2",placeholder:"Height in ft",value:o.ft,onChange:p})}),jsx("div",{children:jsx(c,{required:true,type:"number",id:"inch",className:"!pr-2",placeholder:"Height in inch",value:o.inch,onChange:p})})]}),[]);return jsxs("div",{className:"h-full pt-4 px-4 w-full flex justify-center items-start text-center",children:[jsxs("div",{className:"mt-14 mb-3",children:[jsxs("div",{className:"w-full flex gap-2",children:[F(),jsxs("select",{className:"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base",value:r,onChange:d,children:[jsx("option",{value:"cm",children:"cm"}),jsx("option",{value:"ft",children:"ft"})]})]}),jsx("div",{className:"mt-2",children:i&&"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do"})]}),jsx("div",{className:"flex justify-end",children:jsx(g,{disabled:C,buttonFunc:x,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{})})})]})},A=lt;var dt=({onComplete:n,initialValue:e})=>jsx("div",{children:"FocalLengthStep"}),_=dt;var ft=({onComplete:n,initialValue:e,resolvedConfig:o})=>{let[t,i]=useState(e);return jsxs("div",{className:"h-full w-full flex justify-center items-start text-center pt-4 px-4",children:[jsxs("div",{className:" w-full max-w-md",children:[jsx("button",{className:` text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${t==="male"?"!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]":"border-black"}`,onClick:()=>{i("male");},children:"Men's"}),jsx("button",{className:`text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${t==="female"?"!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]":"border-black"}`,onClick:()=>{i("female");},children:"Female's"})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{type:"submit",resolvedConfig:o,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{size:14}),disabled:!t,buttonFunc:()=>n?.(t)})})]})},q=ft;var gt=({totalSteps:n,currentStepIndex:e,resolvedConfig:o})=>{let t=o?.style?.brandColor||"#000",i=o?.style?.secondaryColor||"#D9D9D9",s=useMemo(()=>Array.from({length:n},(r,a)=>({index:a,isActive:a===e,isCompleted:a<e})),[n,e]);return jsx("div",{className:"flex justify-center items-center gap-[4px] my-[1.5rem]",children:s.map(({index:r,isActive:a,isCompleted:p})=>jsx("div",{className:`h-[3px] rounded-full transition-all duration-300 ${a?"w-[50px]":"w-[30px]"}`,style:{backgroundColor:p||a?t:i}},r))})},O=gt;var j={email:"What is your email?",name:"Enter your name",height:"Hpw tall are you?",gender:"Whom do you shop?",focalLength:"Adjust focal length"};var wt=({steps:n,config:e,onComplete:o})=>{let t=N(e),i=useMemo(()=>H(n),[n]),[s,r]=useState(0),[a,p]=useState({}),d=i[s],l=C=>{let F={...a,[d.type]:C};p(F),d.onStepComplete?.(C),s+1<i.length?r(s+1):o?.(F);},x=()=>{switch(d?.type){case "name":return jsx(M,{resolvedConfig:t,onComplete:l,initialValue:d.value});case "email":return jsx(V,{resolvedConfig:t,onComplete:l,initialValue:d.value});case "height":return jsx(A,{onComplete:l,initialValue:d.value});case "gender":return jsx(q,{onComplete:l,initialValue:d.value});case "focalLength":return jsx(_,{onComplete:l,initialValue:d.value});default:return jsxs("div",{children:["Unsupported step type: ",d?.type]})}};return jsx("div",{className:"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col",style:{background:t?.style?.base?.backgroundColor},children:jsxs("div",{className:"max-w-[28rem] mx-auto w-full",children:[t?.logo&&jsx("div",{className:"text-center mb-4 flex justify-center",children:jsx("img",{src:t.logo,alt:"logo",style:{height:t?.style?.logo?.logoHeight,width:t?.style?.logo?.logoWidth},className:"h-10 mx-auto mb-3"})}),jsx(O,{resolvedConfig:t,totalSteps:i.length,currentStepIndex:s}),jsx("h1",{style:{fontFamily:t?.style?.heading?.headingFontFamily||"SeriouslyNostalgic Fn",fontSize:t?.style?.heading?.headingFontSize||"32px",color:t?.style?.heading?.headingColor||"#000",fontWeight:t?.style?.heading?.headingFontWeight||"normal"},className:"text-center pt-[1.5rem]",children:d?.type&&j[d?.type]||"Onboarding"}),x()]})})};export{wt as Onboarding,N as useLocalConfig};//# sourceMappingURL=index.mjs.map
7
+ `})]}));E.displayName="CustomInput";var c=E;var X=({buttonFunc:n,prefix:o,postfixIcon:t,className:e="",buttonText:i,btnSecondary:s,loading:r=false,disabled:a=false,type:u="button",id:p="button",resolvedConfig:l,...x})=>jsxs("button",{...x,id:p,type:u,disabled:a,onClick:n,className:`${e} flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]`,style:{fontFamily:l?.style?.button?.buttonFontFamily||"Inter, sans-serif",fontSize:l?.style?.button?.buttonFontSize||"22px",background:a?l?.style?.button?.buttonDisabledBackground:l?.style?.button?.buttonBackground||"#000",color:a?l?.style?.button?.buttonDisabledTextColor:l?.style?.button?.buttonTextColor||"#fff",fontWeight:l?.style?.button?.headingFontWeight||"normal",pointerEvents:a?"none":"auto"},children:[o&&jsx("img",{src:o,alt:"icon"}),i,t&&t]}),g=X;var ot=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=T__default.useState(o||""),[s,r]=T__default.useState(void 0);return jsx("div",{className:"w-full max-w-md",children:jsxs("form",{onSubmit:()=>{if(e.trim())n?.(e);else {r("Name is required.");return}},className:"mt-[3.5rem] mb-[.75rem]",children:[jsxs("div",{children:[jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your name",resolvedConfig:t,onChange:u=>{i(u.target.value);}}),s&&jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{resolvedConfig:t,buttonText:"Next",btnSecondary:true,type:"submit",postfixIcon:jsx(ArrowRight,{size:14})})})]})})},M=ot;var B=n=>{if(!n.length)throw new Error("\u274C Onboarding requires at least one step.");let t=["name","email","height","gender","focalLength"].filter(r=>!n.some(a=>a.type===r));if(t.length>0)throw new Error(`\u274C Missing required steps: ${t.join(", ")}`);let e=n.filter(r=>r.isVisible!==false),i=e.filter(r=>typeof r.order=="number"),s=e.filter(r=>typeof r.order!="number");return [...i.sort((r,a)=>r.order-a.order),...s]},H=n=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(n);function N(n,o){let t=(n&&+n*30.48)??0,e=(o&&+o*2.54)??0;return t+e}var rt=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=T__default.useState(o||""),[s,r]=T__default.useState(void 0);return jsx("div",{className:"w-full max-w-md",children:jsxs("form",{className:"mt-[3.5rem] mb-[.75rem]",onSubmit:()=>{if(e.trim())H(e.trim())?n?.(e):r("Please enter a valid email address.");else {r("Email is required.");return}},children:[jsxs("div",{children:[jsx(c,{required:true,type:"text",id:"name",placeholder:"Enter your email",resolvedConfig:t,value:e,onChange:u=>{r(void 0),i(u.target.value);}}),s&&jsx("p",{className:"mt-[0.2rem] text-[16px]",children:s})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{type:"submit",resolvedConfig:t,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{size:14})})})]})})},A=rt;var lt=({onComplete:n,initialValue:o})=>{let[t,e]=useState({cm:o?String(o):"",ft:"",inch:""}),[i,s]=useState(false),[r,a]=useState("cm"),u=useCallback(d=>{i&&s(false),r==="cm"?e(h=>({...h,cm:d.target.value,ft:"",inch:""})):d.target.id==="ft"?e(h=>({...h,ft:d.target.value,cm:""})):e(h=>({...h,inch:d.target.value,cm:""}));},[i,r]),p=useCallback(d=>{let h=d.target.value;a(h),e({cm:"",ft:"",inch:""}),s(false);},[]),l=useCallback(d=>r==="cm"?!(+d.cm<152.4||+d.cm>213.36):!(N(+d.ft,+d.inch)<152.4||N(+d.ft,+d.inch)>213.36),[r]),x=useCallback(()=>{if(!l(t)){s(true);return}let d=r==="cm"?Number(t?.cm):N(+t?.ft,+t?.inch);n?.(d);},[t,l]),F=useMemo(()=>!t.cm&&!t.ft&&!t.inch||i,[t,i]);useEffect(()=>{t.cm===""&&t.ft!==""&&a("ft");},[t]);let C=useCallback(()=>r==="cm"?jsx("div",{className:"w-full",children:jsx(c,{required:true,type:"number",id:"cm",placeholder:"Height in cm",inputMode:"numeric",value:t.cm,onChange:u})}):jsxs("div",{className:"flex gap-2",children:[jsx("div",{children:jsx(c,{required:true,type:"number",id:"ft",className:"!pr-2",placeholder:"Height in ft",value:t.ft,onChange:u})}),jsx("div",{children:jsx(c,{required:true,type:"number",id:"inch",className:"!pr-2",placeholder:"Height in inch",value:t.inch,onChange:u})})]}),[t]);return jsxs("div",{className:"h-full pt-4 px-4 w-full flex justify-center items-start text-center",children:[jsxs("div",{className:"mt-14 mb-3",children:[jsxs("div",{className:"w-full flex gap-2",children:[C(),jsxs("select",{className:"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base",value:r,onChange:p,children:[jsx("option",{value:"cm",children:"cm"}),jsx("option",{value:"ft",children:"ft"})]})]}),jsx("div",{className:"mt-2",children:i&&"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do"})]}),jsx("div",{className:"flex justify-end",children:jsx(g,{disabled:F,buttonFunc:x,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{})})})]})},W=lt;var pt=({onComplete:n,initialValue:o})=>jsx("div",{children:"FocalLengthStep"}),V=pt;var ft=({onComplete:n,initialValue:o,resolvedConfig:t})=>{let[e,i]=useState(o);return console.log(t),jsxs(Fragment,{children:[jsxs("div",{className:" w-full flex flex-col max-w-md mt-[3.5rem] gap-[1rem]",children:[jsx("button",{className:` text-btnSize bg-btn text-base cursor-pointer text-sm border leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${e==="male"?" shadow-[0_1px_1px_rgba(0,0,0,0.251)]":""}`,onClick:()=>{i("male");},style:{background:t?.style?.input?.inputBackgroundColor||"#F9FAFC",color:t?.style?.input?.inputTextColor||"#000",fontSize:t?.style?.input?.inputFontSize||"16px",fontWeight:t?.style?.input?.inputFontWeight||"400",border:`1px solid ${e==="male"?t?.style?.base?.primaryColor:"transparent"}`,fontFamily:t?.style?.base?.baseFontFamily||"Inter, sans-serif"},children:"Men's"}),jsx("button",{className:`text-btnSize font-btnFont cursor-pointer leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${e==="female"?" shadow-[0_1px_1px_rgba(0,0,0,0.251)]":""}`,onClick:()=>{i("female");},style:{background:t?.style?.input?.inputBackgroundColor||"#F9FAFC",color:t?.style?.input?.inputTextColor||"#000",fontSize:t?.style?.input?.inputFontSize||"16px",fontWeight:t?.style?.input?.inputFontWeight||"400",border:`1px solid ${e==="female"?t?.style?.base?.primaryColor:"transparent"}`,fontFamily:t?.style?.base?.baseFontFamily||"Inter, sans-serif"},children:"Female's"})]}),jsx("div",{className:"flex justify-end mt-[.5rem]",children:jsx(g,{type:"submit",resolvedConfig:t,buttonText:"Next",btnSecondary:true,postfixIcon:jsx(ArrowRight,{size:14}),disabled:!e,buttonFunc:()=>n?.(e)})})]})},$=ft;var ht=({totalSteps:n,currentStepIndex:o,resolvedConfig:t})=>{let e=t?.style?.brandColor||"#000",i=t?.style?.secondaryColor||"#D9D9D9",s=useMemo(()=>Array.from({length:n},(r,a)=>({index:a,isActive:a===o,isCompleted:a<o})),[n,o]);return jsx("div",{className:"flex justify-center items-center gap-[4px] my-[1.5rem]",children:s.map(({index:r,isActive:a,isCompleted:u})=>jsx("div",{className:`h-[3px] rounded-full transition-all duration-300 ${a?"w-[50px]":"w-[30px]"}`,style:{backgroundColor:u||a?e:i}},r))})},O=ht;var j={email:"What is your email?",name:"Enter your name",height:"Hpw tall are you?",gender:"Whom do you shop?",focalLength:"Adjust focal length"};var yt=({steps:n,config:o,onComplete:t})=>{let e=k(o),i=useMemo(()=>B(n),[n]),[s,r]=useState(0),[a,u]=useState({}),p=i[s],l=F=>{let C={...a,[p.type]:F};u(C),p.onStepComplete?.(F),s+1<i.length?r(s+1):t?.(C);},x=()=>{switch(p?.type){case "name":return jsx(M,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "email":return jsx(A,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "height":return jsx(W,{onComplete:l,initialValue:p.value});case "gender":return jsx($,{resolvedConfig:e,onComplete:l,initialValue:p.value});case "focalLength":return jsx(V,{onComplete:l,initialValue:p.value});default:return jsxs("div",{children:["Unsupported step type: ",p?.type]})}};return jsx("div",{className:"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col",style:{background:e?.style?.base?.backgroundColor},children:jsxs("div",{className:"max-w-[28rem] mx-auto w-full",children:[e?.logo&&jsx("div",{className:"text-center mb-4 flex justify-center",children:jsx("img",{src:e.logo,alt:"logo",style:{height:e?.style?.logo?.logoHeight,width:e?.style?.logo?.logoWidth},className:"h-10 mx-auto mb-3"})}),jsx(O,{resolvedConfig:e,totalSteps:i.length,currentStepIndex:s}),jsx("h1",{style:{fontFamily:e?.style?.heading?.headingFontFamily||"SeriouslyNostalgic Fn",fontSize:e?.style?.heading?.headingFontSize||"32px",color:e?.style?.heading?.headingColor||"#000",fontWeight:e?.style?.heading?.headingFontWeight||"normal"},className:"text-center pt-[1.5rem]",children:p?.type&&j[p?.type]||"Onboarding"}),x()]})})};export{yt as Onboarding,k as useLocalConfig};//# sourceMappingURL=index.mjs.map
8
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config/useLocalConfig.ts","../src/atoms/customInput/CustomInput.tsx","../src/atoms/specificButton/SpecificButton.tsx","../src/components/onboarding/NameStep.tsx","../src/utils/utils.ts","../src/components/onboarding/EmailStep.tsx","../src/components/onboarding/HeightStep.tsx","../src/components/onboarding/FocalLengthStep.tsx","../src/components/onboarding/GenderStep.tsx","../src/atoms/progressDots/ProgressDots.tsx","../src/utils/constants.ts","../src/components/onboarding/Onboarding.tsx"],"names":["useLocalConfig","config","defaultConfig","useMemo","cn","classes","CustomInput","z","className","resolvedConfig","type","props","ref","jsxs","Fragment","jsx","CustomInput_default","SpecificButton","buttonFunc","prefix","postfixIcon","buttonText","btnSecondary","loading","disabled","id","SpecificButton_default","NameStep","onComplete","initialValue","value","setValue","React","message","setMessage","e","ArrowRight","NameStep_default","resolveSteps","steps","missing","s","visible","withOrder","withoutOrder","a","b","isValidEmail","email","convertToCentimeters","feet","inches","feetToCentimeters","inchesToCentimeters","EmailStep","EmailStep_default","HeightStep","localHeight","setLocalHeight","useState","error","setError","measurementUnit","setMeasurementUnit","handleSetHeight","useCallback","event","prev","handleMeasurementUnit","val","validateHeight","height","checkMeasurement","isButtonDisabled","useEffect","renderHeightInput","HeightStep_default","FocalLengthStep","FocalLengthStep_default","GenderStep","genderType","setGenderType","GenderStep_default","ProgressDots","totalSteps","currentStepIndex","activeColor","inactiveColor","dots","_","i","index","isActive","isCompleted","ProgressDots_default","STEPS","Onboarding","visibleSteps","stepIndex","setStepIndex","values","setValues","currentStep","handleStepComplete","updated","renderStep"],"mappings":"0NAQO,IAAMA,CAAAA,CAAkBC,CAAAA,EAAsC,CACnE,IAAMC,CAAAA,CAAkC,CACtC,IAAA,CAAM,6BAAA,CACN,MAAA,CAAQ,qBAAA,CACR,KAAA,CAAO,CACH,IAAA,CAAK,CACD,UAAA,CAAY,SAAA,CACZ,eAAA,CAAiB,UACjB,YAAA,CAAc,SAAA,CACd,cAAA,CAAgB,SAAA,CAChB,aAAA,CAAe,SAAA,CACf,aAAc,MAAA,CACd,cAAA,CAAgB,qBACpB,CAAA,CACC,IAAA,CAAK,CACF,UAAW,MAAA,CACX,UAAA,CAAY,MAChB,CAAA,CACA,OAAA,CAAQ,CACJ,YAAA,CAAc,SAAA,CACd,eAAA,CAAiB,MAAA,CACjB,iBAAA,CAAmB,QAAA,CACnB,iBAAA,CAAmB,gCACvB,EACA,MAAA,CAAO,CACH,gBAAA,CAAkB,SAAA,CAClB,cAAA,CAAgB,MAAA,CAChB,iBAAkB,qBAAA,CAClB,wBAAA,CAA0B,SAAA,CAC1B,uBAAA,CAAyB,SAAA,CACzB,eAAA,CAAiB,SACrB,CAAA,CACA,KAAA,CAAM,CACF,oBAAA,CAAsB,SAAA,CACtB,cAAA,CAAgB,SAAA,CAChB,qBAAA,CAAuB,SAAA,CACvB,gBAAA,CAAkB,SAAA,CAClB,aAAA,CAAe,MAAA,CACf,eAAA,CAAiB,KACrB,CACJ,CACF,CAAA,CAEA,OAAOC,OAAAA,CAAQ,KAAO,CACpB,IAAA,CAAMF,CAAAA,EAAQ,IAAA,EAAQC,CAAAA,CAAc,IAAA,CACpC,MAAA,CAAQD,GAAQ,MAAA,EAAUC,CAAAA,CAAc,MAAA,CACxC,KAAA,CAAO,CACL,GAAGA,CAAAA,CAAc,KAAA,CACjB,GAAID,CAAAA,EAAQ,KAAA,EAAS,EACvB,CACF,GAAI,CAACA,CAAM,CAAC,CACd,ECxDA,IAAMG,CAAAA,CAAK,CAAA,GAAIC,CAAAA,GACXA,CAAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAS9BC,CAAAA,CAAoBC,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,cAAA,CAAAC,CAAAA,CAAgB,IAAA,CAAAC,EAAM,GAAGC,CAAM,CAAA,CAAGC,CAAAA,GAC5CC,IAAAA,CAAAC,QAAAA,CAAA,CACI,QAAA,CAAA,CAAAC,GAAAA,CAAC,OAAA,CAAA,CACG,IAAA,CAAML,CAAAA,CACN,SAAA,CAAW,CAAA,EAAGF,GAAwB,EAAE,CAAA,aAAA,CAAA,CAAkBJ,CAAAA,CACtD,0aAEJ,CAAA,CACA,cAAA,CAAe,MACf,WAAA,CAAY,KAAA,CACZ,GAAA,CAAKQ,CAAAA,CACJ,GAAGD,CAAAA,CACJ,MAAO,CACH,UAAA,CAAYF,CAAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,oBAAA,EAAwB,SAAA,CAClE,KAAA,CAAOA,CAAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,cAAA,EAAkB,MAAA,CACvD,QAAA,CAAUA,GAAgB,KAAA,EAAO,KAAA,EAAO,aAAA,EAAiB,MAAA,CACzD,UAAA,CAAYA,CAAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,eAAA,EAAmB,KAAA,CAC7D,MAAA,CAAQ,CAAA,UAAA,EAAaA,CAAAA,EAAgB,KAAA,EAAO,OAAO,gBAAA,EAAoB,SAAS,CAAA,CAAA,CAChF,UAAA,CAAYA,CAAAA,EAAgB,KAAA,EAAO,IAAA,EAAM,cAAA,EAAkB,mBAC/D,CAAA,CACJ,CAAA,CACCM,GAAAA,CAAC,OAAA,CAAA,CACG,QAAA,CAAA;AAAA;AAAA,qBAAA,EAEEN,CAAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,qBAAA,EAAyB,SAAS,CAAA;AAAA,2BAAA,EAC1DA,CAAAA,EAAgB,KAAA,EAAO,KAAA,EAAO,0BAAA,EAA8B,KAAK,CAAA;AAAA;AAAA;AAAA,UAAA,CAAA,CAI9E,GACJ,CAER,CAAA,CAEQH,EAAY,WAAA,CAAc,aAAA,CAE1B,IAAOU,CAAAA,CAAQV,CAAAA,CChC3B,IAAMW,CAAAA,CAAgD,CAAC,CACnD,UAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CACA,UAAAZ,CAAAA,CAAY,EAAA,CACZ,WAAAa,CAAAA,CACA,YAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CAAU,MACV,QAAA,CAAAC,CAAAA,CAAW,MACX,IAAA,CAAAd,CAAAA,CAAO,SACP,EAAA,CAAAe,CAAAA,CAAK,QAAA,CACL,cAAA,CAAAhB,EACA,GAAGE,CACP,IAEQE,IAAAA,CAAC,QAAA,CAAA,CACI,GAAGF,CAAAA,CACJ,EAAA,CAAIc,EACJ,IAAA,CAAMf,CAAAA,CACN,SAAUc,CAAAA,CACV,OAAA,CAASN,EACT,SAAA,CAAW,CAAA,EAAGV,CAAS,CAAA,wNAAA,CAAA,CAEvB,KAAA,CAAO,CACH,UAAA,CAAYC,GAAgB,KAAA,EAAO,MAAA,EAAQ,kBAAoB,mBAAA,CAC/D,QAAA,CAAUA,GAAgB,KAAA,EAAO,MAAA,EAAQ,gBAAkB,MAAA,CAC3D,UAAA,CAAWe,EAASf,CAAAA,EAAgB,KAAA,EAAO,QAAQ,wBAAA,CAA0BA,CAAAA,EAAgB,OAAO,MAAA,EAAQ,gBAAA,EAAoB,MAAA,CAChI,KAAA,CAAMe,EAASf,CAAAA,EAAgB,KAAA,EAAO,QAAQ,uBAAA,CAA0BA,CAAAA,EAAgB,OAAO,MAAA,EAAQ,eAAA,EAAmB,MAAA,CAC1H,UAAA,CAAYA,GAAgB,KAAA,EAAO,MAAA,EAAQ,mBAAqB,QAAA,CAChE,aAAA,CAAee,EAAW,MAAA,CAAS,MACvC,CAAA,CAEC,QAAA,CAAA,CAAAL,GAAUJ,GAAAA,CAAC,KAAA,CAAA,CAAI,IAAKI,CAAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,CACvCE,CAAAA,CACAD,GAAeA,CAAAA,CAAAA,CAEpB,CAAA,CAIDM,EAAQT,CAAAA,CChDf,IAAMU,EAAAA,CAAW,CAAC,CAAE,UAAA,CAAAC,CAAAA,CAAY,aAAAC,CAAAA,CAAc,cAAA,CAAApB,CAAe,CAAA,GAAqB,CAC9E,GAAM,CAACqB,CAAAA,CAAOC,CAAQ,CAAA,CAAIC,UAAAA,CAAM,SAASH,CAAAA,EAAgB,EAAE,EACjD,CAACI,CAAAA,CAASC,CAAU,CAAA,CAAIF,WAAM,QAAA,CAA6B,MAAS,EAShF,OACGjB,GAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CAGJ,SAAAF,IAAAA,CAAC,MAAA,CAAA,CAAK,SAZK,IAAM,CACrB,GAAKiB,CAAAA,CAAM,IAAA,GAIPF,CAAAA,GAAaE,CAAK,CAAA,CAAA,KAJH,CAChBI,EAAW,mBAAmB,CAAA,CAC9B,MACH,CAGJ,CAAA,CAKoC,UAAU,yBAAA,CAClC,QAAA,CAAA,CAAArB,IAAAA,CAAC,KAAA,CAAA,CACG,UAAAE,GAAAA,CAACC,CAAAA,CAAA,CACG,QAAA,CAAQ,IAAA,CACR,KAAK,MAAA,CACL,EAAA,CAAG,MAAA,CACH,WAAA,CAAY,kBACZ,cAAA,CAAgBP,CAAAA,CAGjB,SAAW0B,CAAAA,EAAI,CACdJ,EAASI,CAAAA,CAAE,MAAA,CAAO,KAAK,EACxB,CAAA,CACH,EACCF,CAAAA,EAAWlB,GAAAA,CAAC,KAAE,SAAA,CAAU,yBAAA,CAA2B,SAAAkB,CAAAA,CAAQ,CAAA,CAAA,CAChE,CAAA,CACHlB,GAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACZ,SAAAA,GAAAA,CAACW,CAAAA,CAAA,CAAe,cAAA,CAAgBjB,CAAAA,CAAgB,WAAY,MAAA,CAAQ,YAAA,CAAY,KAChF,IAAA,CAAK,QAAA,CACL,YAAaM,GAAAA,CAACqB,UAAAA,CAAA,CAAW,IAAA,CAAM,EAAA,CAAI,CAAA,CACnC,CAAA,CACJ,GACA,CAAA,CAEJ,CAEZ,EAEOC,CAAAA,CAAQV,EAAAA,CChDR,IAAMW,CAAAA,CAAgBC,CAAAA,EAA0B,CACrD,GAAI,CAACA,EAAM,MAAA,CAAQ,MAAM,IAAI,KAAA,CAAM,+CAA0C,CAAA,CAI7E,IAAMC,EADW,CAAC,MAAA,CAAQ,QAAS,QAAA,CAAU,QAAA,CAAU,aAAa,CAAA,CAC3C,MAAA,CAAO,CAAA,EAAK,CAACD,EAAM,IAAA,CAAKE,CAAAA,EAAKA,EAAE,IAAA,GAAS,CAAC,CAAC,CAAA,CACnE,GAAID,EAAQ,MAAA,CAAS,CAAA,CACnB,MAAM,IAAI,KAAA,CAAM,kCAA6BA,CAAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA,CAGnE,IAAME,EAAUH,CAAAA,CAAM,MAAA,CAAOE,GAAKA,CAAAA,CAAE,SAAA,GAAc,KAAK,CAAA,CAEjDE,CAAAA,CAAYD,EAAQ,MAAA,CAAOD,CAAAA,EAAK,OAAOA,CAAAA,CAAE,KAAA,EAAU,QAAQ,CAAA,CAC3DG,CAAAA,CAAeF,EAAQ,MAAA,CAAOD,CAAAA,EAAK,OAAOA,CAAAA,CAAE,OAAU,QAAQ,CAAA,CAEpE,OAAO,CACL,GAAGE,EAAU,IAAA,CAAK,CAACE,EAAGC,CAAAA,GAAOD,CAAAA,CAAE,MAASC,CAAAA,CAAE,KAAO,EACjD,GAAGF,CACL,CACF,CAAA,CACaG,CAAAA,CAAgBC,CAAAA,EACC,uJAAA,CACD,KAAKA,CAAK,CAAA,CAMhC,SAASC,CAAAA,CAAqBC,CAAAA,CAAcC,EAAiB,CACnE,IAAMC,CAAAA,CAAAA,CAAqBF,CAAAA,EAAQ,CAACA,CAAAA,CAAO,KAAA,GAAU,EAC/CG,CAAAA,CAAAA,CAAuBF,CAAAA,EAAU,CAACA,CAAAA,CAAS,IAAA,GAAS,CAAA,CAE1D,OADyBC,EAAoBC,CAE9C,CC1BA,IAAMC,EAAAA,CAAY,CAAC,CAAE,UAAA,CAAA1B,CAAAA,CAAY,aAAAC,CAAAA,CAAc,cAAA,CAAApB,CAAe,CAAA,GAAsB,CAChF,GAAM,CAACqB,EAAOC,CAAQ,CAAA,CAAIC,WAAM,QAAA,CAASH,CAAAA,EAAgB,EAAE,CAAA,CACrD,CAACI,EAASC,CAAU,CAAA,CAAIF,WAAM,QAAA,CAA6B,MAAS,EAW7E,OACCjB,GAAAA,CAAC,OAAI,SAAA,CAAU,iBAAA,CACd,QAAA,CAAAF,IAAAA,CAAC,QAAK,SAAA,CAAU,yBAAA,CAA0B,SAZtB,IAAM,CACrB,GAAKiB,CAAAA,CAAM,IAAA,GAGAiB,CAAAA,CAAajB,CAAAA,CAAM,MAAM,CAAA,CAGhCF,IAAaE,CAAK,CAAA,CAFlBI,EAAW,qCAAqC,CAAA,CAAA,KAJjC,CAChBA,CAAAA,CAAW,oBAAoB,CAAA,CAC/B,MACH,CAKJ,CAAA,CAIA,QAAA,CAAA,CAAArB,KAAC,KAAA,CAAA,CACA,QAAA,CAAA,CAAAE,GAAAA,CAACC,CAAAA,CAAA,CACA,QAAA,CAAQ,IAAA,CACR,KAAK,MAAA,CACL,EAAA,CAAG,OACH,WAAA,CAAY,kBAAA,CACZ,cAAA,CAAgBP,CAAAA,CAChB,MAAOqB,CAAAA,CACP,QAAA,CAAWK,GAAM,CACKD,CAAAA,CAAW,MAAS,CAAA,CACpBH,CAAAA,CAASI,EAAE,MAAA,CAAO,KAAK,EAC3B,CAAA,CACnB,CAAA,CACCF,GAAWlB,GAAAA,CAAC,GAAA,CAAA,CAAE,UAAU,yBAAA,CAA2B,QAAA,CAAAkB,CAAAA,CAAQ,CAAA,CAAA,CAC7D,EACalB,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CACZ,QAAA,CAAAA,IAACW,CAAAA,CAAA,CAAgB,KAAK,QAAA,CAAS,cAAA,CAAgBjB,EAAgB,UAAA,CAAY,MAAA,CAAQ,aAAY,IAAA,CAC/F,WAAA,CAAaM,IAACqB,UAAAA,CAAA,CAAW,IAAA,CAAM,EAAA,CAAI,EACvC,CAAA,CACA,CAAA,CAAA,CACb,EACD,CAEF,CAAA,CAEOmB,EAAQD,EAAAA,CC1Cf,IAAME,EAAAA,CAAa,CAAC,CAAE,UAAA,CAAA5B,CAAAA,CAAY,YAAA,CAAAC,CAAa,CAAA,GAAuB,CACrE,GAAM,CAAC4B,CAAAA,CAAaC,CAAc,CAAA,CAAIC,QAAAA,CAAS,CAAE,EAAA,CAAI9B,GAA8B,EAAA,CAAI,EAAA,CAAI,GAAI,IAAA,CAAM,EAAG,CAAC,CAAA,CACnG,CAAC+B,EAAOC,CAAQ,CAAA,CAAIF,SAAS,KAAK,CAAA,CAClC,CAACG,CAAAA,CAAiBC,CAAkB,EAAIJ,QAAAA,CAAS,IAAI,CAAA,CAErDK,CAAAA,CAAkBC,YACtBC,CAAAA,EAA+C,CAC3CN,GACHC,CAAAA,CAAS,KAAK,EAEXC,CAAAA,GAAoB,IAAA,CACvBJ,EAAgBS,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,EAAA,CAAID,EAAM,MAAA,CAAO,KAAA,CAAO,GAAI,EAAA,CAAI,IAAA,CAAM,EAAG,CAAA,CAAE,EACtEA,CAAAA,CAAM,MAAA,CAAO,KAAO,IAAA,CAC9BR,CAAAA,CAAgBS,IAAU,CAAE,GAAGA,EAAM,EAAA,CAAID,CAAAA,CAAM,OAAO,KAAA,CAAO,EAAA,CAAI,EAAG,CAAA,CAAE,CAAA,CAEtER,EAAgBS,CAAAA,GAAU,CAAE,GAAGA,CAAAA,CAAM,KAAMD,CAAAA,CAAM,MAAA,CAAO,MAAO,EAAA,CAAI,EAAG,EAAE,EAE1E,CAAA,CACA,CAACN,CAAAA,CAAOE,CAAe,CACxB,CAAA,CACMM,EAAwBH,WAAAA,CAAaC,CAAAA,EAAgD,CAC1F,IAAMG,CAAAA,CAAMH,CAAAA,CAAM,MAAA,CAAO,MACzBH,CAAAA,CAAmBM,CAAG,EACtBX,CAAAA,CAAe,CAAE,GAAI,EAAA,CAAI,EAAA,CAAI,GAAI,IAAA,CAAM,EAAG,CAAC,CAAA,CAC3CG,CAAAA,CAAS,KAAK,EACf,CAAA,CAAG,EAAE,CAAA,CACCS,CAAAA,CAAiBL,WAAAA,CACrBM,GACIT,CAAAA,GAAoB,IAAA,CAChB,EAAE,CAACS,CAAAA,CAAO,GAAK,KAAA,EAAS,CAACA,EAAO,EAAA,CAAK,MAAA,CAAA,CAEtC,EAAEtB,CAAAA,CAAqB,CAACsB,EAAO,EAAA,CAAI,CAACA,EAAO,IAAI,CAAA,CAAI,KAAA,EAAStB,CAAAA,CAAqB,CAACsB,CAAAA,CAAO,EAAA,CAAI,CAACA,CAAAA,CAAO,IAAI,EAAI,MAAA,CAAA,CAErH,CAACT,CAAe,CACjB,CAAA,CAEMU,EAAmBP,WAAAA,CAAY,IAAM,CAC1C,GAAI,CAACK,EAAeb,CAAW,CAAA,CAAG,CACjCI,CAAAA,CAAS,IAAI,CAAA,CACb,MACD,CAID,CAAA,CAAG,CAACJ,EAAaa,CAAc,CAAC,CAAA,CAC1BG,CAAAA,CAAmBtE,QAAQ,IAAO,CAACsD,EAAY,EAAA,EAAM,CAACA,EAAY,EAAA,EAAM,CAACA,CAAAA,CAAY,IAAA,EAASG,EAAO,CAACH,CAAAA,CAAaG,CAAK,CAAC,CAAA,CAC/Hc,UAAU,IAAM,CACXjB,EAAY,EAAA,GAAO,EAAA,EAAMA,EAAY,EAAA,GAAO,EAAA,EAC/CM,EAAmB,IAAI,EAEzB,EAAG,CAACN,CAAW,CAAC,CAAA,CAChB,IAAMkB,CAAAA,CAAoBV,WAAAA,CAAY,IACjCH,CAAAA,GAAoB,IAAA,CAEtB/C,IAAC,KAAA,CAAA,CAAI,SAAA,CAAW,SACf,QAAA,CAAAA,GAAAA,CAACC,EAAA,CACA,QAAA,CAAQ,KAER,IAAA,CAAK,QAAA,CACL,GAAG,IAAA,CACH,WAAA,CAAa,cAAA,CAEb,SAAA,CAAU,UACV,KAAA,CAAOyC,CAAAA,CAAY,GACnB,QAAA,CAAUO,CAAAA,CACX,EACD,CAAA,CAIAnD,IAAAA,CAAC,OAAI,SAAA,CAAU,YAAA,CACd,UAAAE,GAAAA,CAAC,KAAA,CAAA,CACA,SAAAA,GAAAA,CAACC,CAAAA,CAAA,CACA,QAAA,CAAQ,IAAA,CAER,IAAA,CAAK,QAAA,CACL,GAAG,IAAA,CAEH,SAAA,CAAW,QACX,WAAA,CAAa,cAAA,CACb,MAAOyC,CAAAA,CAAY,EAAA,CACnB,QAAA,CAAUO,CAAAA,CACX,EACD,CAAA,CACAjD,GAAAA,CAAC,OACA,QAAA,CAAAA,GAAAA,CAACC,EAAA,CACA,QAAA,CAAQ,IAAA,CAER,IAAA,CAAK,SACL,EAAA,CAAG,MAAA,CAEH,UAAW,OAAA,CACX,WAAA,CAAa,iBACb,KAAA,CAAOyC,CAAAA,CAAY,KACnB,QAAA,CAAUO,CAAAA,CACX,EACD,CAAA,CAAA,CACD,CAAA,CAGA,EAAE,CAAA,CACL,OACCnD,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qEAAA,CACd,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,YAAA,CACd,QAAA,CAAA,CAAAA,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBACb,QAAA,CAAA,CAAA8D,CAAAA,GACD9D,IAAAA,CAAC,QAAA,CAAA,CAAO,UAAU,yEAAA,CAA0E,KAAA,CAAOiD,EAAiB,QAAA,CAAUM,CAAAA,CAC7H,QAAA,CAAA,CAAArD,GAAAA,CAAC,UAAO,KAAA,CAAM,IAAA,CAAK,cAAE,CAAA,CACrBA,GAAAA,CAAC,UAAO,KAAA,CAAM,IAAA,CAAK,cAAE,CAAA,CAAA,CACtB,CAAA,CAAA,CACD,EACAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,MAAA,CAAQ,QAAA,CAAA6C,GAAS,kHAAA,CAAmH,CAAA,CAAA,CACpJ,CAAA,CACA7C,GAAAA,CAAC,OAAI,SAAA,CAAU,kBAAA,CACd,SAAAA,GAAAA,CAACW,CAAAA,CAAA,CAAe,QAAA,CAAU+C,CAAAA,CAAkB,UAAA,CAAYD,CAAAA,CAAkB,WAAY,MAAA,CAAQ,YAAA,CAAY,KAAC,WAAA,CAAazD,GAAAA,CAACqB,WAAA,EAAW,CAAA,CAAI,CAAA,CACzI,CAAA,CAAA,CACD,CAEF,CAAA,CAEOwC,CAAAA,CAAQpB,GC5Hf,IAAMqB,EAAAA,CAAkB,CAAC,CAAC,UAAA,CAAAjD,EAAW,YAAA,CAAAC,CAAY,IAE7Cd,GAAAA,CAAC,KAAA,CAAA,CAAI,2BAAe,CAAA,CAIjB+D,CAAAA,CAAQD,EAAAA,CCFf,IAAME,EAAAA,CAAa,CAAC,CAAE,UAAA,CAAAnD,EAAY,YAAA,CAAAC,CAAAA,CAAc,cAAA,CAAApB,CAAe,IAAuB,CACpF,GAAM,CAACuE,CAAAA,CAAYC,CAAa,EAAItB,QAAAA,CAAqB9B,CAAY,EACrE,OACEhB,IAAAA,CAAC,OAAI,SAAA,CAAU,qEAAA,CACb,UAAAA,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kBAAA,CACb,QAAA,CAAA,CAAAE,GAAAA,CAAC,QAAA,CAAA,CACF,UAAW,CAAA,yKAAA,EAA4KiE,CAAAA,GAAe,OAAkB,oDAAA,CAAuD,cAAc,GAC7R,OAAA,CAAS,IAAM,CACdC,CAAAA,CAAAA,MAA6B,EAC9B,CAAA,CACA,QAAA,CAAA,OAAA,CAED,EACMlE,GAAAA,CAAC,QAAA,CAAA,CACN,UAAW,CAAA,yKAAA,EAA4KiE,CAAAA,GAAe,QAAA,CAAoB,oDAAA,CAAuD,cAAc,CAAA,CAAA,CAC/R,OAAA,CAAS,IAAM,CACdC,CAAAA,CAAAA,QAA+B,EAChC,CAAA,CACA,QAAA,CAAA,UAAA,CAED,GACA,CAAA,CACClE,GAAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CACF,SAAAA,GAAAA,CAACW,CAAAA,CAAA,CAAgB,IAAA,CAAK,QAAA,CAAS,cAAA,CAAgBjB,CAAAA,CAAgB,WAAY,MAAA,CAAQ,YAAA,CAAY,KAC/F,WAAA,CAAaM,GAAAA,CAACqB,WAAA,CAAW,IAAA,CAAM,GAAI,CAAA,CACnC,QAAA,CAAU,CAAC4C,CAAAA,CACX,UAAA,CAAY,IAAMpD,CAAAA,GAAaoD,CAAU,EAC7C,CAAA,CACA,CAAA,CAAA,CACZ,CAEJ,CAAA,CAEOE,EAAQH,EAAAA,CCpCf,IAAMI,EAAAA,CAA4C,CAAC,CACjD,UAAA,CAAAC,CAAAA,CACA,iBAAAC,CAAAA,CACA,cAAA,CAAA5E,CACF,CAAA,GAAM,CACJ,IAAM6E,CAAAA,CAAc7E,GAAgB,KAAA,EAAO,UAAA,EAAc,OACnD8E,CAAAA,CAAgB9E,CAAAA,EAAgB,OAAO,cAAA,EAAkB,SAAA,CAEzD+E,CAAAA,CAAOrF,OAAAA,CACX,IACE,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQiF,CAAW,EAAG,CAACK,CAAAA,CAAGC,CAAAA,IAAO,CAC5C,MAAOA,CAAAA,CACP,QAAA,CAAUA,IAAML,CAAAA,CAChB,WAAA,CAAaK,EAAIL,CACnB,CAAA,CAAE,EACJ,CAACD,CAAAA,CAAYC,CAAgB,CAC/B,CAAA,CAEA,OACEtE,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wDAAA,CACZ,QAAA,CAAAyE,CAAAA,CAAK,GAAA,CAAI,CAAC,CAAE,KAAA,CAAAG,EAAO,QAAA,CAAAC,CAAAA,CAAU,YAAAC,CAAY,CAAA,GACxC9E,IAAC,KAAA,CAAA,CAEC,SAAA,CAAW,oDACT6E,CAAAA,CAAW,UAAA,CAAa,UAC1B,CAAA,CAAA,CACA,KAAA,CAAO,CACL,eAAA,CAAiBC,CAAAA,EAAeD,CAAAA,CAAWN,CAAAA,CAAcC,CAC3D,CAAA,CAAA,CANKI,CAOP,CACD,CAAA,CACH,CAEJ,EAEOG,CAAAA,CAAQX,EAAAA,CCzCR,IAAMY,CAAAA,CAAkC,CAC7C,MAAO,qBAAA,CACP,IAAA,CAAM,kBACN,MAAA,CAAQ,mBAAA,CACR,OAAQ,mBAAA,CACR,WAAA,CAAa,qBACf,CAAA,CCIO,IAAMC,GAAwC,CAAC,CAAE,KAAA,CAAAzD,CAAAA,CAAO,OAAAtC,CAAAA,CAAQ,UAAA,CAAA2B,CAAW,CAAA,GAAM,CACvF,IAAMnB,CAAAA,CAAiBT,CAAAA,CAAeC,CAAM,CAAA,CACtCgG,EAAe9F,OAAAA,CAAQ,IAAMmC,EAAaC,CAAK,CAAA,CAAG,CAACA,CAAK,CAAC,EACzD,CAAC2D,CAAAA,CAAWC,CAAY,CAAA,CAAIxC,QAAAA,CAAS,CAAC,CAAA,CACtC,CAACyC,EAAQC,CAAS,CAAA,CAAI1C,QAAAA,CAA8B,EAAE,CAAA,CACtD2C,CAAAA,CAAoBL,EAAaC,CAAS,CAAA,CAE1CK,EAAsBzE,CAAAA,EAAgB,CAC3C,IAAM0E,CAAAA,CAAU,CAAE,GAAGJ,CAAAA,CAAQ,CAACE,EAAY,IAAI,EAAGxE,CAAM,CAAA,CACvDuE,CAAAA,CAAUG,CAAO,CAAA,CACjBF,EAAY,cAAA,GAAiBxE,CAAK,EAE9BoE,CAAAA,CAAY,CAAA,CAAID,EAAa,MAAA,CAAQE,CAAAA,CAAaD,EAAY,CAAC,CAAA,CAC9DtE,IAAa4E,CAAO,EAC1B,EAEMC,CAAAA,CAAa,IAAM,CACxB,OAAQH,CAAAA,EAAa,IAAA,EACpB,KAAK,MAAA,CACJ,OAAOvF,IAACsB,CAAAA,CAAA,CAAS,eAAgB5B,CAAAA,CAAgB,UAAA,CAAY8F,CAAAA,CAAoB,YAAA,CAAcD,EAAY,KAAA,CAAO,CAAA,CACnH,KAAK,OAAA,CACJ,OAAOvF,IAACwC,CAAAA,CAAA,CAAU,cAAA,CAAgB9C,CAAAA,CAAgB,WAAY8F,CAAAA,CAAoB,YAAA,CAAcD,EAAY,KAAA,CAAO,CAAA,CACpH,KAAK,QAAA,CACJ,OAAOvF,IAAC6D,CAAAA,CAAA,CAAW,WAAY2B,CAAAA,CAAoB,YAAA,CAAcD,EAAY,KAAA,CAAO,CAAA,CACrF,KAAK,QAAA,CACJ,OAAOvF,GAAAA,CAACmE,CAAAA,CAAA,CAAW,UAAA,CAAYqB,CAAAA,CAAoB,aAAcD,CAAAA,CAAY,KAAA,CAAO,EACrF,KAAK,aAAA,CACJ,OAAOvF,GAAAA,CAAC+D,CAAAA,CAAA,CAAgB,UAAA,CAAYyB,CAAAA,CAAoB,aAAcD,CAAAA,CAAY,KAAA,CAAO,EAC1F,QACC,OAAOzF,IAAAA,CAAC,KAAA,CAAA,CAAI,oCAAwByF,CAAAA,EAAa,IAAA,CAAA,CAAK,CACxD,CACD,CAAA,CAEA,OACCvF,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6DAAA,CAA8D,KAAA,CAAO,CAAE,UAAA,CAAYN,CAAAA,EAAgB,OAAO,IAAA,EAAM,eAAgB,EAC9I,QAAA,CAAAI,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,+BACb,QAAA,CAAA,CAAAJ,CAAAA,EAAgB,MAChBM,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,sCAAA,CACd,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CACA,IAAKN,CAAAA,CAAe,IAAA,CACpB,IAAI,MAAA,CACJ,KAAA,CAAO,CACN,MAAA,CAAQA,CAAAA,EAAgB,KAAA,EAAO,IAAA,EAAM,WACrC,KAAA,CAAOA,CAAAA,EAAgB,OAAO,IAAA,EAAM,SACrC,EACA,SAAA,CAAU,mBAAA,CACX,EACD,CAAA,CAEDM,GAAAA,CAAC+E,EAAA,CAAa,cAAA,CAAgBrF,EAAgB,UAAA,CAAYwF,CAAAA,CAAa,OAAQ,gBAAA,CAAkBC,CAAAA,CAAW,CAAA,CAE5GnF,GAAAA,CAAC,MACA,KAAA,CAAO,CACN,WAAYN,CAAAA,EAAgB,KAAA,EAAO,SAAS,iBAAA,EAAqB,uBAAA,CACjE,SAAUA,CAAAA,EAAgB,KAAA,EAAO,SAAS,eAAA,EAAmB,MAAA,CAC7D,MAAOA,CAAAA,EAAgB,KAAA,EAAO,SAAS,YAAA,EAAgB,MAAA,CACvD,UAAA,CAAYA,CAAAA,EAAgB,OAAO,OAAA,EAAS,iBAAA,EAAuB,QACpE,CAAA,CACA,SAAA,CAAU,0BAER,QAAA,CAAA6F,CAAAA,EAAa,MAAQP,CAAAA,CAAMO,CAAAA,EAAa,IAAI,CAAA,EAAM,YAAA,CACrD,EACCG,CAAAA,EAAW,CAAA,CACb,EACD,CAEF","file":"index.mjs","sourcesContent":["import { useMemo } from \"react\";\nimport { Config } from \"../types/interfaces\";\n\n\n/**\n * Ensures default style values are available even when config or nested properties are missing.\n * Merges deeply and memoizes the result for consistent performance.\n */\nexport const useLocalConfig = (config?: Config): Required<Config> => {\n const defaultConfig: Required<Config> = {\n logo: \"../swan-logo-black-icon.svg\",\n loader: \"../loader-black.gif\",\n style: {\n base:{\n brandColor: \"#5932F3\",\n backgroundColor: \"#FFFFFF\",\n primaryColor: \"#000000\",\n secondaryColor: \"#D9D9D9\",\n baseTextColor: \"#1E1E1E\",\n baseFontSize: \"16px\",\n baseFontFamily: \"'Inter', sans-serif\",\n },\n logo:{\n logoWidth: \"30px\",\n logoHeight: \"30px\",\n },\n heading:{\n headingColor: \"#000000\",\n headingFontSize: \"32px\",\n headingFontWeight: \"normal\",\n headingFontFamily: \"'SeriouslyNostalgic Fn', serif\",\n },\n button:{\n buttonBackground: \"#220B12\",\n buttonFontSize: \"14px\",\n buttonFontFamily: \"'Inter', sans-serif\",\n buttonDisabledBackground: \"#D9D9D9\",\n buttonDisabledTextColor: \"#000000\",\n buttonTextColor: \"#FFFFFF\",\n },\n input:{\n inputBackgroundColor: \"#F9FAFC\",\n inputTextColor: \"#000000\",\n inputPlaceholderColor: \"#000000\",\n inputBorderColor: \"#F9FAFC\",\n inputFontSize: \"14px\",\n inputFontWeight: \"500\",\n },\n },\n };\n\n return useMemo(() => ({\n logo: config?.logo ?? defaultConfig.logo,\n loader: config?.loader ?? defaultConfig.loader,\n style: {\n ...defaultConfig.style,\n ...(config?.style || {}),\n },\n }), [config]);\n};\n","import * as React from \"react\";\n\n/** Lightweight classnames helper to avoid depending on ../../utils/utils */\nconst cn = (...classes: Array<string | false | null | undefined>) =>\n classes.filter(Boolean).join(\" \");\n\nexport interface CustomInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n type?: string;\n resolvedConfig?: any;\n}\n\nconst CustomInput = React.forwardRef<HTMLInputElement, CustomInputProps>(\n ({ className, resolvedConfig, type, ...props }, ref) => (\n <>\n <input\n type={type}\n className={`${className ? className : ''} customInput ` + cn(\n \"flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200\",\n \n )}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n ref={ref}\n {...props}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${resolvedConfig?.style?.input?.inputBorderColor || '#D9D9D9'}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n />\n <style>\n {`\n .customInput::placeholder {\n color: ${resolvedConfig?.style?.input?.inputPlaceholderColor || '#A0A0A0'};\n font-weight: ${resolvedConfig?.style?.input?.inputPlaceholderFontWeight || '400'};\n opacity: 1;\n }\n `}\n </style>\n </>\n )\n );\n\n CustomInput.displayName = \"CustomInput\";\n\n export default CustomInput;\n","/* eslint-disable react/button-has-type */\n// import { CircularProgress } from \"@mui/material\";\nimport React from \"react\";\n\ninterface SpecificButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n buttonFunc?: React.MouseEventHandler<HTMLButtonElement>;\n prefix?: string;\n postfixIcon?: React.ReactNode;\n className?: string;\n buttonText?: string;\n btnSecondary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n id?: string;\n resolvedConfig?: any;\n}\n\nconst SpecificButton: React.FC<SpecificButtonProps> = ({\n buttonFunc,\n prefix,\n postfixIcon,\n className = \"\",\n buttonText,\n btnSecondary,\n loading = false,\n disabled = false,\n type = \"button\",\n id = \"button\",\n resolvedConfig,\n ...props\n}) => {\n return (\n <button\n {...props}\n id={id}\n type={type}\n disabled={disabled}\n onClick={buttonFunc}\n className={`${className} ${\"flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]\"\n }`}\n style={{\n fontFamily: resolvedConfig?.style?.button?.buttonFontFamily || 'Inter, sans-serif',\n fontSize: resolvedConfig?.style?.button?.buttonFontSize || '22px',\n background:disabled?resolvedConfig?.style?.button?.buttonDisabledBackground :resolvedConfig?.style?.button?.buttonBackground || '#000',\n color:disabled?resolvedConfig?.style?.button?.buttonDisabledTextColor : resolvedConfig?.style?.button?.buttonTextColor || '#fff',\n fontWeight: resolvedConfig?.style?.button?.headingFontWeight || 'normal',\n pointerEvents: disabled ? 'none' : 'auto',\n }}\n >\n {prefix && <img src={prefix} alt=\"icon\" />}\n {buttonText}\n {postfixIcon && postfixIcon}\n {/* {loading && disabled && <CircularProgress size={15} />} */}\n </button>\n );\n};\n\nexport default SpecificButton;\n","import { ArrowRight } from 'lucide-react';\nimport React from 'react'\nimport CustomInput from 'swan-web-components/src/atoms/customInput/CustomInput';\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\n\ninterface NameStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\nconst NameStep = ({ onComplete, initialValue, resolvedConfig }: NameStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Name is required.\");\n return; \n }else{\n onComplete?.(value);\n }\n }\n return (\n <div className=\"w-full max-w-md\">\n \n\n <form onSubmit={handleNext} className=\"mt-[3.5rem] mb-[.75rem]\">\n <div>\n <CustomInput\n required\n type=\"text\"\n id=\"name\"\n placeholder=\"Enter your name\"\n resolvedConfig={resolvedConfig}\n // className={` w-full mx-auto rounded-full font-btnFont bg-white text-black text-[18px] py-0 h-[38px] placeholder:text-black/50`}\n //value={whatEmail}\n onChange={(e)=>{\n setValue(e.target.value)\n }}\n />\n {message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n type='submit'\n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n </form>\n \n </div>\n )\n}\n\nexport default NameStep","\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\nimport { Step } from \"../types/interfaces\";\n\nexport const resolveSteps = (steps: Step[]): Step[] => {\n if (!steps.length) throw new Error(\"❌ Onboarding requires at least one step.\");\n\n // Validate all required types are present\n const required = [\"name\", \"email\", \"height\", \"gender\", \"focalLength\"];\n const missing = required.filter(r => !steps.some(s => s.type === r));\n if (missing.length > 0) {\n throw new Error(`❌ Missing required steps: ${missing.join(\", \")}`);\n }\n\n const visible = steps.filter(s => s.isVisible !== false);\n\n const withOrder = visible.filter(s => typeof s.order === \"number\");\n const withoutOrder = visible.filter(s => typeof s.order !== \"number\");\n\n return [\n ...withOrder.sort((a, b) => (a.order! - b.order!)),\n ...withoutOrder\n ];\n};\nexport const isValidEmail = (email:string) => {\n\tconst checkEmailValidation = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\treturn checkEmailValidation.test(email);\n};\nexport function cn(...inputs:string[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function convertToCentimeters(feet: number, inches: number ) {\n\tconst feetToCentimeters = (feet && +feet * 30.48) ?? 0;\n\tconst inchesToCentimeters = (inches && +inches * 2.54) ?? 0;\n\tconst totalCentimeters = feetToCentimeters + inchesToCentimeters;\n\treturn totalCentimeters;\n}","import { ArrowRight } from \"lucide-react\";\nimport React from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { isValidEmail } from \"swan-web-components/src/utils/utils\";\n\ninterface EmailStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n\tresolvedConfig?: any;\n}\n\nconst EmailStep = ({ onComplete, initialValue, resolvedConfig }: EmailStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Email is required.\");\n return; \n }else if (!isValidEmail(value.trim())){\n setMessage(\"Please enter a valid email address.\")\n }else{\n onComplete?.(value);\n }\n }\n\treturn (\n\t\t<div className=\"w-full max-w-md\">\n\t\t\t<form className=\"mt-[3.5rem] mb-[.75rem]\" onSubmit={handleNext}>\n\t\t\t\t<div>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid=\"name\"\n\t\t\t\t\t\tplaceholder=\"Enter your email\"\n\t\t\t\t\t\tresolvedConfig={resolvedConfig}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(e) => {\n setMessage(undefined);\n setValue(e.target.value);\n }}\n\t\t\t\t\t/>\n\t\t\t\t\t{message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n\t\t\t\t</div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n\t\t\t</form>\n\t\t</div>\n\t);\n};\n\nexport default EmailStep;\n","import { ArrowRight } from \"lucide-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { convertToCentimeters } from \"swan-web-components/src/utils/utils\";\n\ninterface HeightStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n}\n\nconst HeightStep = ({ onComplete, initialValue }: HeightStepProps) => {\n\tconst [localHeight, setLocalHeight] = useState({ cm: initialValue ? initialValue : \"\", ft: \"\", inch: \"\" });\n\tconst [error, setError] = useState(false);\n\tconst [measurementUnit, setMeasurementUnit] = useState(\"cm\");\n\n\tconst handleSetHeight = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (error) {\n\t\t\t\tsetError(false);\n\t\t\t}\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, cm: event.target.value, ft: \"\", inch: \"\" }));\n\t\t\t} else if (event.target.id === \"ft\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, ft: event.target.value, cm: \"\" }));\n\t\t\t} else {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, inch: event.target.value, cm: \"\" }));\n\t\t\t}\n\t\t},\n\t\t[error, measurementUnit],\n\t);\n\tconst handleMeasurementUnit = useCallback((event: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst val = event.target.value;\n\t\tsetMeasurementUnit(val);\n\t\tsetLocalHeight({ cm: \"\", ft: \"\", inch: \"\" });\n\t\tsetError(false);\n\t}, []);\n\tconst validateHeight = useCallback(\n\t\t(height: { cm: string; ft: string; inch: string }) => {\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\treturn !(+height.cm < 152.4 || +height.cm > 213.36);\n\t\t\t}\n\t\t\treturn !(convertToCentimeters(+height.ft, +height.inch) < 152.4 || convertToCentimeters(+height.ft, +height.inch) > 213.36);\n\t\t},\n\t\t[measurementUnit],\n\t);\n\n\tconst checkMeasurement = useCallback(() => {\n\t\tif (!validateHeight(localHeight)) {\n\t\t\tsetError(true);\n\t\t\treturn;\n\t\t}\n\n\t\t// setSessionStorage(SESSION_STORAGE_KEY.HEIGHT, localHeight?.cm || convertToCentimeters(localHeight?.ft, localHeight?.inch));\n\t\t// setUserInfo(prev => ({ ...prev, height: localHeight }));\n\t}, [localHeight, validateHeight]);\n\tconst isButtonDisabled = useMemo(() => (!localHeight.cm && !localHeight.ft && !localHeight.inch) || error, [localHeight, error]);\n\tuseEffect(() => {\n\t\tif (localHeight.cm === \"\" && localHeight.ft !== \"\") {\n\t\t\tsetMeasurementUnit(\"ft\");\n\t\t}\n\t}, [localHeight]);\n\tconst renderHeightInput = useCallback(() => {\n\t\tif (measurementUnit === \"cm\") {\n\t\t\treturn (\n\t\t\t\t<div className={`w-full`}>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"cm\"\n\t\t\t\t\t\tplaceholder={\"Height in cm\"}\n\t\t\t\t\t\t// className={`${isIdntfy && `max-w-[276px] mx-auto rounded-[8px] font-btnFont text-[18px] py-0 h-[38px]`}`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tvalue={localHeight.cm}\n\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"ft\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in ft\"}\n\t\t\t\t\t\t\tvalue={localHeight.ft}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"inch\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in inch\"}\n\t\t\t\t\t\t\tvalue={localHeight.inch}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}, []);\n\treturn (\n\t\t<div className=\"h-full pt-4 px-4 w-full flex justify-center items-start text-center\">\n\t\t\t<div className=\"mt-14 mb-3\">\n\t\t\t\t<div className=\"w-full flex gap-2\">\n\t\t\t\t\t{renderHeightInput()}\n\t\t\t\t\t<select className=\"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base\" value={measurementUnit} onChange={handleMeasurementUnit}>\n\t\t\t\t\t\t<option value=\"cm\">cm</option>\n\t\t\t\t\t\t<option value=\"ft\">ft</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2\">{error && \"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do\"}</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t<SpecificButton disabled={isButtonDisabled} buttonFunc={checkMeasurement} buttonText={\"Next\"} btnSecondary postfixIcon={<ArrowRight />} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default HeightStep;\n","import React from 'react'\n\ninterface FocalLengthStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n}\n\nconst FocalLengthStep = ({onComplete,initialValue}: FocalLengthStepProps) => {\n return (\n <div>FocalLengthStep</div>\n )\n}\n\nexport default FocalLengthStep","import { ArrowRight } from 'lucide-react';\nimport React, { useState } from 'react'\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\nimport { GenderType } from 'swan-web-components/src/utils/enums';\n\ninterface GenderStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\n\nconst GenderStep = ({ onComplete, initialValue, resolvedConfig }: GenderStepProps) => {\n const [genderType, setGenderType] = useState<GenderType>(initialValue);\n return (\n <div className=\"h-full w-full flex justify-center items-start text-center pt-4 px-4\">\n <div className=\" w-full max-w-md\">\n <button\n\t\t\t\t\t\t\tclassName={` text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${genderType === GenderType.Male ? `!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"border-black\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Male);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tMen's\n\t\t\t\t\t\t</button>\n <button\n\t\t\t\t\t\t\tclassName={`text-btnSize font-btnFont bg-btn text-base text-sm border font-medium leading-none rounded-md border-transparent !outline-secondary focus-visible:ring-secondary p-4 ${genderType === GenderType.Female ? `!border-black shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"border-black\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Female);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFemale's\n\t\t\t\t\t\t</button>\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n disabled={!genderType}\n buttonFunc={() => onComplete?.(genderType)}\n />\n </div>\n </div>\n )\n}\n\nexport default GenderStep","import React, { useMemo } from \"react\";\n\ninterface ProgressDotsProps {\n totalSteps: number;\n currentStepIndex: number;\n resolvedConfig?: any;\n}\n\nconst ProgressDots: React.FC<ProgressDotsProps> = ({\n totalSteps,\n currentStepIndex,\n resolvedConfig\n}) => {\n const activeColor = resolvedConfig?.style?.brandColor || \"#000\";\n const inactiveColor = resolvedConfig?.style?.secondaryColor || \"#D9D9D9\";\n\n const dots = useMemo(\n () =>\n Array.from({ length: totalSteps }, (_, i) => ({\n index: i,\n isActive: i === currentStepIndex,\n isCompleted: i < currentStepIndex\n })),\n [totalSteps, currentStepIndex]\n );\n\n return (\n <div className=\"flex justify-center items-center gap-[4px] my-[1.5rem]\">\n {dots.map(({ index, isActive, isCompleted }) => (\n <div\n key={index}\n className={`h-[3px] rounded-full transition-all duration-300 ${\n isActive ? \"w-[50px]\" : \"w-[30px]\"\n }`}\n style={{\n backgroundColor: isCompleted || isActive ? activeColor : inactiveColor\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default ProgressDots;\n","import { StepType } from \"../types/interfaces\";\n\nexport const STEPS: Record<StepType, string> = {\n email: \"What is your email?\",\n name: \"Enter your name\",\n height: \"Hpw tall are you?\",\n gender: \"Whom do you shop?\",\n focalLength: \"Adjust focal length\",\n}\n\n","import React, { useState, useMemo } from \"react\";\nimport { useLocalConfig } from \"../../config/useLocalConfig\";\nimport { OnboardingProps, Step } from \"../../types/interfaces\";\nimport NameStep from \"./NameStep\";\nimport EmailStep from \"./EmailStep\";\nimport HeightStep from \"./HeightStep\";\nimport FocalLengthStep from \"./FocalLengthStep\";\nimport GenderStep from \"./GenderStep\";\nimport ProgressDots from \"swan-web-components/src/atoms/progressDots/ProgressDots\";\nimport { resolveSteps } from \"swan-web-components/src/utils/utils\";\nimport { STEPS } from \"swan-web-components/src/utils/constants\";\n\nexport const Onboarding: React.FC<OnboardingProps> = ({ steps, config, onComplete }) => {\n\tconst resolvedConfig = useLocalConfig(config);\n\tconst visibleSteps = useMemo(() => resolveSteps(steps), [steps]);\n\tconst [stepIndex, setStepIndex] = useState(0);\n\tconst [values, setValues] = useState<Record<string, any>>({});\n\tconst currentStep: Step = visibleSteps[stepIndex];\n\n\tconst handleStepComplete = (value?: any) => {\n\t\tconst updated = { ...values, [currentStep.type]: value };\n\t\tsetValues(updated);\n\t\tcurrentStep.onStepComplete?.(value);\n\n\t\tif (stepIndex + 1 < visibleSteps.length) setStepIndex(stepIndex + 1);\n\t\telse onComplete?.(updated);\n\t};\n\n\tconst renderStep = () => {\n\t\tswitch (currentStep?.type) {\n\t\t\tcase \"name\":\n\t\t\t\treturn <NameStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"email\":\n\t\t\t\treturn <EmailStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"height\":\n\t\t\t\treturn <HeightStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"gender\":\n\t\t\t\treturn <GenderStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"focalLength\":\n\t\t\t\treturn <FocalLengthStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tdefault:\n\t\t\t\treturn <div>Unsupported step type: {currentStep?.type}</div>;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"max-w-[28rem] mx-auto w-full\">\n\t\t\t\t{resolvedConfig?.logo && (\n\t\t\t\t\t<div className=\"text-center mb-4 flex justify-center\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={resolvedConfig.logo}\n\t\t\t\t\t\t\talt=\"logo\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: resolvedConfig?.style?.logo?.logoHeight,\n\t\t\t\t\t\t\t\twidth: resolvedConfig?.style?.logo?.logoWidth,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"h-10 mx-auto mb-3\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ProgressDots resolvedConfig={resolvedConfig} totalSteps={visibleSteps.length} currentStepIndex={stepIndex} />\n\n\t\t\t\t<h1\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"text-center pt-[1.5rem]\"\n\t\t\t\t>\n\t\t\t\t\t{(currentStep?.type && STEPS[currentStep?.type]) || \"Onboarding\"}\n\t\t\t\t</h1>\n\t\t\t\t{renderStep()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n"]}
1
+ {"version":3,"sources":["../src/config/useLocalConfig.ts","../src/atoms/customInput/CustomInput.tsx","../src/atoms/specificButton/SpecificButton.tsx","../src/components/onboarding/NameStep.tsx","../src/utils/utils.ts","../src/components/onboarding/EmailStep.tsx","../src/components/onboarding/HeightStep.tsx","../src/components/onboarding/FocalLengthStep.tsx","../src/components/onboarding/GenderStep.tsx","../src/atoms/progressDots/ProgressDots.tsx","../src/utils/constants.ts","../src/components/onboarding/Onboarding.tsx"],"names":["useLocalConfig","config","defaultConfig","useMemo","cn","classes","CustomInput","R","className","resolvedConfig","type","props","ref","jsxs","Fragment","jsx","CustomInput_default","SpecificButton","buttonFunc","prefix","postfixIcon","buttonText","btnSecondary","loading","disabled","id","SpecificButton_default","NameStep","onComplete","initialValue","value","setValue","React","message","setMessage","e","ArrowRight","NameStep_default","resolveSteps","steps","missing","s","visible","withOrder","withoutOrder","a","b","isValidEmail","email","convertToCentimeters","feet","inches","feetToCentimeters","inchesToCentimeters","EmailStep","EmailStep_default","HeightStep","localHeight","setLocalHeight","useState","error","setError","measurementUnit","setMeasurementUnit","handleSetHeight","useCallback","event","prev","handleMeasurementUnit","val","validateHeight","height","checkMeasurement","isButtonDisabled","useEffect","renderHeightInput","HeightStep_default","FocalLengthStep","FocalLengthStep_default","GenderStep","genderType","setGenderType","GenderStep_default","ProgressDots","totalSteps","currentStepIndex","activeColor","inactiveColor","dots","_","i","index","isActive","isCompleted","ProgressDots_default","STEPS","Onboarding","visibleSteps","stepIndex","setStepIndex","values","setValues","currentStep","handleStepComplete","updated","renderStep"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useMemo } from \"react\";\nimport { Config } from \"../types/interfaces\";\n\n\n/**\n * Ensures default style values are available even when config or nested properties are missing.\n * Merges deeply and memoizes the result for consistent performance.\n */\nexport const useLocalConfig = (config?: Config): Required<Config> => {\n const defaultConfig: Required<Config> = {\n logo: \"../swan-logo-black-icon.svg\",\n loader: \"../loader-black.gif\",\n style: {\n base:{\n brandColor: \"#5932F3\",\n backgroundColor: \"#FFFFFF\",\n primaryColor: \"#000000\",\n secondaryColor: \"#D9D9D9\",\n baseTextColor: \"#1E1E1E\",\n baseFontSize: \"16px\",\n baseFontFamily: \"'Inter', sans-serif\",\n },\n logo:{\n logoWidth: \"30px\",\n logoHeight: \"30px\",\n },\n heading:{\n headingColor: \"#000000\",\n headingFontSize: \"32px\",\n headingFontWeight: \"normal\",\n headingFontFamily: \"'SeriouslyNostalgic Fn', serif\",\n },\n button:{\n buttonBackground: \"#220B12\",\n buttonFontSize: \"14px\",\n buttonFontFamily: \"'Inter', sans-serif\",\n buttonDisabledBackground: \"#D9D9D9\",\n buttonDisabledTextColor: \"#000000\",\n buttonTextColor: \"#FFFFFF\",\n },\n input:{\n inputBackgroundColor: \"#F9FAFC\",\n inputTextColor: \"#000000\",\n inputPlaceholderColor: \"#000000\",\n inputBorderColor: \"#F9FAFC\",\n inputFontSize: \"14px\",\n inputFontWeight: \"500\",\n },\n },\n };\n\n return useMemo(() => ({\n logo: config?.logo ?? defaultConfig.logo,\n loader: config?.loader ?? defaultConfig.loader,\n style: {\n ...defaultConfig.style,\n ...(config?.style || {}),\n },\n }), [config]);\n};\n","import * as React from \"react\";\n\n/** Lightweight classnames helper to avoid depending on ../../utils/utils */\nconst cn = (...classes: Array<string | false | null | undefined>) =>\n classes.filter(Boolean).join(\" \");\n\nexport interface CustomInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n className?: string;\n type?: string;\n resolvedConfig?: any;\n}\n\nconst CustomInput = React.forwardRef<HTMLInputElement, CustomInputProps>(\n ({ className, resolvedConfig, type, ...props }, ref) => (\n <>\n <input\n type={type}\n className={`${className ? className : ''} customInput ` + cn(\n \"flex w-full border-none px-[.75rem] h-[40px] text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed backdrop-blur-sm bg-btn font-medium rounded-[4px] pl-[1rem] pr-[2.5rem] focus:ring-1 focus:outline-none transition-all duration-200\",\n \n )}\n autoCapitalize=\"off\"\n autoCorrect=\"off\"\n ref={ref}\n {...props}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${resolvedConfig?.style?.input?.inputBorderColor || '#D9D9D9'}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n />\n <style>\n {`\n .customInput::placeholder {\n color: ${resolvedConfig?.style?.input?.inputPlaceholderColor || '#A0A0A0'};\n font-weight: ${resolvedConfig?.style?.input?.inputPlaceholderFontWeight || '400'};\n opacity: 1;\n }\n `}\n </style>\n </>\n )\n );\n\n CustomInput.displayName = \"CustomInput\";\n\n export default CustomInput;\n","/* eslint-disable react/button-has-type */\n// import { CircularProgress } from \"@mui/material\";\nimport React from \"react\";\n\ninterface SpecificButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n buttonFunc?: React.MouseEventHandler<HTMLButtonElement>;\n prefix?: string;\n postfixIcon?: React.ReactNode;\n className?: string;\n buttonText?: string;\n btnSecondary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n id?: string;\n resolvedConfig?: any;\n}\n\nconst SpecificButton: React.FC<SpecificButtonProps> = ({\n buttonFunc,\n prefix,\n postfixIcon,\n className = \"\",\n buttonText,\n btnSecondary,\n loading = false,\n disabled = false,\n type = \"button\",\n id = \"button\",\n resolvedConfig,\n ...props\n}) => {\n return (\n <button\n {...props}\n id={id}\n type={type}\n disabled={disabled}\n onClick={buttonFunc}\n className={`${className} ${\"flex gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-4 [&_svg]:shrink-0 rounded-full min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]\"\n }`}\n style={{\n fontFamily: resolvedConfig?.style?.button?.buttonFontFamily || 'Inter, sans-serif',\n fontSize: resolvedConfig?.style?.button?.buttonFontSize || '22px',\n background:disabled?resolvedConfig?.style?.button?.buttonDisabledBackground :resolvedConfig?.style?.button?.buttonBackground || '#000',\n color:disabled?resolvedConfig?.style?.button?.buttonDisabledTextColor : resolvedConfig?.style?.button?.buttonTextColor || '#fff',\n fontWeight: resolvedConfig?.style?.button?.headingFontWeight || 'normal',\n pointerEvents: disabled ? 'none' : 'auto',\n }}\n >\n {prefix && <img src={prefix} alt=\"icon\" />}\n {buttonText}\n {postfixIcon && postfixIcon}\n {/* {loading && disabled && <CircularProgress size={15} />} */}\n </button>\n );\n};\n\nexport default SpecificButton;\n","import { ArrowRight } from 'lucide-react';\nimport React from 'react'\nimport CustomInput from 'swan-web-components/src/atoms/customInput/CustomInput';\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\n\ninterface NameStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\nconst NameStep = ({ onComplete, initialValue, resolvedConfig }: NameStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Name is required.\");\n return; \n }else{\n onComplete?.(value);\n }\n }\n return (\n <div className=\"w-full max-w-md\">\n \n\n <form onSubmit={handleNext} className=\"mt-[3.5rem] mb-[.75rem]\">\n <div>\n <CustomInput\n required\n type=\"text\"\n id=\"name\"\n placeholder=\"Enter your name\"\n resolvedConfig={resolvedConfig}\n // className={` w-full mx-auto rounded-full font-btnFont bg-white text-black text-[18px] py-0 h-[38px] placeholder:text-black/50`}\n //value={whatEmail}\n onChange={(e)=>{\n setValue(e.target.value)\n }}\n />\n {message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n type='submit'\n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n </form>\n \n </div>\n )\n}\n\nexport default NameStep","\nimport { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\nimport { Step } from \"../types/interfaces\";\n\nexport const resolveSteps = (steps: Step[]): Step[] => {\n if (!steps.length) throw new Error(\"❌ Onboarding requires at least one step.\");\n\n // Validate all required types are present\n const required = [\"name\", \"email\", \"height\", \"gender\", \"focalLength\"];\n const missing = required.filter(r => !steps.some(s => s.type === r));\n if (missing.length > 0) {\n throw new Error(`❌ Missing required steps: ${missing.join(\", \")}`);\n }\n\n const visible = steps.filter(s => s.isVisible !== false);\n\n const withOrder = visible.filter(s => typeof s.order === \"number\");\n const withoutOrder = visible.filter(s => typeof s.order !== \"number\");\n\n return [\n ...withOrder.sort((a, b) => (a.order! - b.order!)),\n ...withoutOrder\n ];\n};\nexport const isValidEmail = (email:string) => {\n\tconst checkEmailValidation = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\treturn checkEmailValidation.test(email);\n};\nexport function cn(...inputs:string[]) {\n\treturn twMerge(clsx(inputs));\n}\n\nexport function convertToCentimeters(feet: number, inches: number ) {\n\tconst feetToCentimeters = (feet && +feet * 30.48) ?? 0;\n\tconst inchesToCentimeters = (inches && +inches * 2.54) ?? 0;\n\tconst totalCentimeters = feetToCentimeters + inchesToCentimeters;\n\treturn totalCentimeters;\n}","import { ArrowRight } from \"lucide-react\";\nimport React from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { isValidEmail } from \"swan-web-components/src/utils/utils\";\n\ninterface EmailStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n\tresolvedConfig?: any;\n}\n\nconst EmailStep = ({ onComplete, initialValue, resolvedConfig }: EmailStepProps) => {\n const [value, setValue] = React.useState(initialValue || \"\");\n const [message, setMessage] = React.useState<string | undefined>(undefined);\n const handleNext = () => {\n if (!value.trim()) {\n setMessage(\"Email is required.\");\n return; \n }else if (!isValidEmail(value.trim())){\n setMessage(\"Please enter a valid email address.\")\n }else{\n onComplete?.(value);\n }\n }\n\treturn (\n\t\t<div className=\"w-full max-w-md\">\n\t\t\t<form className=\"mt-[3.5rem] mb-[.75rem]\" onSubmit={handleNext}>\n\t\t\t\t<div>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid=\"name\"\n\t\t\t\t\t\tplaceholder=\"Enter your email\"\n\t\t\t\t\t\tresolvedConfig={resolvedConfig}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={(e) => {\n setMessage(undefined);\n setValue(e.target.value);\n }}\n\t\t\t\t\t/>\n\t\t\t\t\t{message && <p className=\"mt-[0.2rem] text-[16px]\">{message}</p>}\n\t\t\t\t</div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n />\n </div>\n\t\t\t</form>\n\t\t</div>\n\t);\n};\n\nexport default EmailStep;\n","import { ArrowRight } from \"lucide-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport CustomInput from \"swan-web-components/src/atoms/customInput/CustomInput\";\nimport SpecificButton from \"swan-web-components/src/atoms/specificButton/SpecificButton\";\nimport { convertToCentimeters } from \"swan-web-components/src/utils/utils\";\n\ninterface HeightStepProps {\n\tonComplete: (value: any) => void;\n\tinitialValue?: any;\n}\n\nconst HeightStep = ({ onComplete, initialValue }: HeightStepProps) => {\n\tconst [localHeight, setLocalHeight] = useState({ cm: initialValue ? String(initialValue) : \"\", ft: \"\", inch: \"\" });\n\tconst [error, setError] = useState(false);\n\tconst [measurementUnit, setMeasurementUnit] = useState(\"cm\");\n\n\tconst handleSetHeight = useCallback(\n\t\t(event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (error) {\n\t\t\t\tsetError(false);\n\t\t\t}\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, cm: event.target.value, ft: \"\", inch: \"\" }));\n\t\t\t} else if (event.target.id === \"ft\") {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, ft: event.target.value, cm: \"\" }));\n\t\t\t} else {\n\t\t\t\tsetLocalHeight((prev) => ({ ...prev, inch: event.target.value, cm: \"\" }));\n\t\t\t}\n\t\t},\n\t\t[error, measurementUnit],\n\t);\n\n\tconst handleMeasurementUnit = useCallback((event: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst val = event.target.value;\n\t\tsetMeasurementUnit(val);\n\t\tsetLocalHeight({ cm: \"\", ft: \"\", inch: \"\" });\n\t\tsetError(false);\n\t}, []);\n\tconst validateHeight = useCallback(\n\t\t(height: { cm: string; ft: string; inch: string }) => {\n\t\t\tif (measurementUnit === \"cm\") {\n\t\t\t\treturn !(+height.cm < 152.4 || +height.cm > 213.36);\n\t\t\t}\n\t\t\treturn !(convertToCentimeters(+height.ft, +height.inch) < 152.4 || convertToCentimeters(+height.ft, +height.inch) > 213.36);\n\t\t},\n\t\t[measurementUnit],\n\t);\n\n\tconst checkMeasurement = useCallback(() => {\n\t\tif (!validateHeight(localHeight)) {\n\t\t\tsetError(true);\n\t\t\treturn;\n\t\t}\n\t\tconst height = measurementUnit === \"cm\" ? Number(localHeight?.cm) : convertToCentimeters(+localHeight?.ft, +localHeight?.inch);\n\t\tonComplete?.(height);\n\t\t// setSessionStorage(SESSION_STORAGE_KEY.HEIGHT, localHeight?.cm || convertToCentimeters(localHeight?.ft, localHeight?.inch));\n\t\t// setUserInfo(prev => ({ ...prev, height: localHeight }));\n\t}, [localHeight, validateHeight]);\n\tconst isButtonDisabled = useMemo(() => (!localHeight.cm && !localHeight.ft && !localHeight.inch) || error, [localHeight, error]);\n\tuseEffect(() => {\n\t\tif (localHeight.cm === \"\" && localHeight.ft !== \"\") {\n\t\t\tsetMeasurementUnit(\"ft\");\n\t\t}\n\t}, [localHeight]);\n\tconst renderHeightInput = useCallback(() => {\n\t\tif (measurementUnit === \"cm\") {\n\t\t\treturn (\n\t\t\t\t<div className={`w-full`}>\n\t\t\t\t\t<CustomInput\n\t\t\t\t\t\trequired\n\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tid=\"cm\"\n\t\t\t\t\t\tplaceholder={\"Height in cm\"}\n\t\t\t\t\t\t// className={`${isIdntfy && `max-w-[276px] mx-auto rounded-[8px] font-btnFont text-[18px] py-0 h-[38px]`}`}\n\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\tvalue={localHeight.cm}\n\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"ft\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in ft\"}\n\t\t\t\t\t\t\tvalue={localHeight.ft}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<CustomInput\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t// variant=\"filled\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tid=\"inch\"\n\t\t\t\t\t\t\t// error={error}\n\t\t\t\t\t\t\tclassName={`!pr-2`}\n\t\t\t\t\t\t\tplaceholder={\"Height in inch\"}\n\t\t\t\t\t\t\tvalue={localHeight.inch}\n\t\t\t\t\t\t\tonChange={handleSetHeight}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}, [localHeight]);\n\treturn (\n\t\t<div className=\"h-full pt-4 px-4 w-full flex justify-center items-start text-center\">\n\t\t\t<div className=\"mt-14 mb-3\">\n\t\t\t\t<div className=\"w-full flex gap-2\">\n\t\t\t\t\t{renderHeightInput()}\n\t\t\t\t\t<select className=\"bg-btn h-[40px] [&_svg]:text-base !shadow-none !outline-none !text-base\" value={measurementUnit} onChange={handleMeasurementUnit}>\n\t\t\t\t\t\t<option value=\"cm\">cm</option>\n\t\t\t\t\t\t<option value=\"ft\">ft</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-2\">{error && \"We're sorry, we currently don't support this heights outside of 5 ft & 7 ft. We're working on new models that do\"}</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t<SpecificButton disabled={isButtonDisabled} buttonFunc={checkMeasurement} buttonText={\"Next\"} btnSecondary postfixIcon={<ArrowRight />} />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default HeightStep;\n","import React from 'react'\n\ninterface FocalLengthStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n}\n\nconst FocalLengthStep = ({onComplete,initialValue}: FocalLengthStepProps) => {\n return (\n <div>FocalLengthStep</div>\n )\n}\n\nexport default FocalLengthStep","import { ArrowRight } from 'lucide-react';\nimport React, { useState } from 'react'\nimport SpecificButton from 'swan-web-components/src/atoms/specificButton/SpecificButton';\nimport { GenderType } from 'swan-web-components/src/utils/enums';\n\ninterface GenderStepProps {\n onComplete: (value: any) => void;\n initialValue?: any;\n resolvedConfig?: any;\n}\n\nconst GenderStep = ({ onComplete, initialValue, resolvedConfig }: GenderStepProps) => {\n const [genderType, setGenderType] = useState<GenderType>(initialValue);\n console.log(resolvedConfig);\n return (\n <>\n <div className=\" w-full flex flex-col max-w-md mt-[3.5rem] gap-[1rem]\">\n <button\n\t\t\t\t\t\t\tclassName={` text-btnSize bg-btn text-base cursor-pointer text-sm border leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${genderType === GenderType.Male ? ` shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Male);\n\t\t\t\t\t\t\t}}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${genderType === GenderType.Male ? resolvedConfig?.style?.base?.primaryColor : `transparent`}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tMen's\n\t\t\t\t\t\t</button>\n <button\n\t\t\t\t\t\t\tclassName={`text-btnSize font-btnFont cursor-pointer leading-none rounded-[.375rem] focus-visible:ring-secondary p-[1rem] ${genderType === GenderType.Female ? ` shadow-[0_1px_1px_rgba(0,0,0,0.251)]` : \"\"}`}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetGenderType(GenderType.Female);\n\t\t\t\t\t\t\t}}\n style={{\n background: resolvedConfig?.style?.input?.inputBackgroundColor || '#F9FAFC',\n color: resolvedConfig?.style?.input?.inputTextColor || '#000',\n fontSize: resolvedConfig?.style?.input?.inputFontSize || '16px',\n fontWeight: resolvedConfig?.style?.input?.inputFontWeight || '400',\n border: `1px solid ${genderType === GenderType.Female ? resolvedConfig?.style?.base?.primaryColor : `transparent`}`,\n fontFamily: resolvedConfig?.style?.base?.baseFontFamily || 'Inter, sans-serif',\n }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFemale's \n\t\t\t\t\t\t</button>\n </div>\n <div className=\"flex justify-end mt-[.5rem]\">\n <SpecificButton type=\"submit\" resolvedConfig={resolvedConfig} buttonText={\"Next\"} btnSecondary \n postfixIcon={<ArrowRight size={14} />}\n disabled={!genderType}\n buttonFunc={() => onComplete?.(genderType)}\n />\n </div>\n </>\n )\n}\n\nexport default GenderStep","import React, { useMemo } from \"react\";\n\ninterface ProgressDotsProps {\n totalSteps: number;\n currentStepIndex: number;\n resolvedConfig?: any;\n}\n\nconst ProgressDots: React.FC<ProgressDotsProps> = ({\n totalSteps,\n currentStepIndex,\n resolvedConfig\n}) => {\n const activeColor = resolvedConfig?.style?.brandColor || \"#000\";\n const inactiveColor = resolvedConfig?.style?.secondaryColor || \"#D9D9D9\";\n\n const dots = useMemo(\n () =>\n Array.from({ length: totalSteps }, (_, i) => ({\n index: i,\n isActive: i === currentStepIndex,\n isCompleted: i < currentStepIndex\n })),\n [totalSteps, currentStepIndex]\n );\n\n return (\n <div className=\"flex justify-center items-center gap-[4px] my-[1.5rem]\">\n {dots.map(({ index, isActive, isCompleted }) => (\n <div\n key={index}\n className={`h-[3px] rounded-full transition-all duration-300 ${\n isActive ? \"w-[50px]\" : \"w-[30px]\"\n }`}\n style={{\n backgroundColor: isCompleted || isActive ? activeColor : inactiveColor\n }}\n />\n ))}\n </div>\n );\n};\n\nexport default ProgressDots;\n","import { StepType } from \"../types/interfaces\";\n\nexport const STEPS: Record<StepType, string> = {\n email: \"What is your email?\",\n name: \"Enter your name\",\n height: \"Hpw tall are you?\",\n gender: \"Whom do you shop?\",\n focalLength: \"Adjust focal length\",\n}\n\n","import React, { useState, useMemo } from \"react\";\nimport { useLocalConfig } from \"../../config/useLocalConfig\";\nimport { OnboardingProps, Step } from \"../../types/interfaces\";\nimport NameStep from \"./NameStep\";\nimport EmailStep from \"./EmailStep\";\nimport HeightStep from \"./HeightStep\";\nimport FocalLengthStep from \"./FocalLengthStep\";\nimport GenderStep from \"./GenderStep\";\nimport ProgressDots from \"swan-web-components/src/atoms/progressDots/ProgressDots\";\nimport { resolveSteps } from \"swan-web-components/src/utils/utils\";\nimport { STEPS } from \"swan-web-components/src/utils/constants\";\n\nexport const Onboarding: React.FC<OnboardingProps> = ({ steps, config, onComplete }) => {\n\tconst resolvedConfig = useLocalConfig(config);\n\tconst visibleSteps = useMemo(() => resolveSteps(steps), [steps]);\n\tconst [stepIndex, setStepIndex] = useState(0);\n\tconst [values, setValues] = useState<Record<string, any>>({});\n\tconst currentStep: Step = visibleSteps[stepIndex];\n\n\tconst handleStepComplete = (value?: any) => {\n\t\tconst updated = { ...values, [currentStep.type]: value };\n\t\tsetValues(updated);\n\t\tcurrentStep.onStepComplete?.(value);\n\n\t\tif (stepIndex + 1 < visibleSteps.length) setStepIndex(stepIndex + 1);\n\t\telse onComplete?.(updated);\n\t};\n\n\tconst renderStep = () => {\n\t\tswitch (currentStep?.type) {\n\t\t\tcase \"name\":\n\t\t\t\treturn <NameStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"email\":\n\t\t\t\treturn <EmailStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"height\":\n\t\t\t\treturn <HeightStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"gender\":\n\t\t\t\treturn <GenderStep resolvedConfig={resolvedConfig} onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tcase \"focalLength\":\n\t\t\t\treturn <FocalLengthStep onComplete={handleStepComplete} initialValue={currentStep.value} />;\n\t\t\tdefault:\n\t\t\t\treturn <div>Unsupported step type: {currentStep?.type}</div>;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"h-full p-[15px] pt-4 px-4 w-full flex items-center flex-col\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"max-w-[28rem] mx-auto w-full\">\n\t\t\t\t{resolvedConfig?.logo && (\n\t\t\t\t\t<div className=\"text-center mb-4 flex justify-center\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={resolvedConfig.logo}\n\t\t\t\t\t\t\talt=\"logo\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\theight: resolvedConfig?.style?.logo?.logoHeight,\n\t\t\t\t\t\t\t\twidth: resolvedConfig?.style?.logo?.logoWidth,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName=\"h-10 mx-auto mb-3\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<ProgressDots resolvedConfig={resolvedConfig} totalSteps={visibleSteps.length} currentStepIndex={stepIndex} />\n\n\t\t\t\t<h1\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"text-center pt-[1.5rem]\"\n\t\t\t\t>\n\t\t\t\t\t{(currentStep?.type && STEPS[currentStep?.type]) || \"Onboarding\"}\n\t\t\t\t</h1>\n\t\t\t\t{renderStep()}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swan-admin/swan-web-component",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Cross-framework Onboarding component (React + Angular compatible)",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",