@insforge/nextjs 0.7.5 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +394 -202
- package/dist/index.d.mts +69 -59
- package/dist/index.d.ts +69 -59
- package/dist/index.js +165 -155
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +164 -154
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ if (typeof document !== 'undefined' && typeof window !== 'undefined') {
|
|
|
6
6
|
if (!document.getElementById(styleId)) {
|
|
7
7
|
const style = document.createElement('style');
|
|
8
8
|
style.id = styleId;
|
|
9
|
-
style.textContent = "/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n@import \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\";@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight: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;--tw-content:\"\"}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-green-500:oklch(72.3% .219 149.579);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-neutral-400:oklch(70.8% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-normal:1.5;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-manrope:\"Manrope\",sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.top-1\\/2{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\\[18px\\]{height:18px}.min-h-screen{min-height:100vh}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-\\[18px\\]{width:18px}.w-full{width:100%}.max-w-\\[400px\\]{max-width:400px}.min-w-40{min-width:calc(var(--spacing)*40)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-6{gap:calc(var(--spacing)*6)}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-none{--tw-border-style:none;border-style:none}.border-\\[\\#D4D4D4\\]{border-color:#d4d4d4}.border-\\[\\#E0E0E0\\]{border-color:#e0e0e0}.border-\\[\\#E4E4E7\\]{border-color:#e4e4e7}.border-blue-600{border-color:var(--color-blue-600)}.border-gray-200{border-color:var(--color-gray-200)}.border-neutral-400{border-color:var(--color-neutral-400)}.border-red-600{border-color:var(--color-red-600)}.border-transparent{border-color:#0000}.bg-\\[\\#FAFAFA\\]{background-color:#fafafa}.bg-black{background-color:var(--color-black)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-green-500{background-color:var(--color-green-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.stroke-\\[3\\]{stroke-width:3px}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pl-3{padding-left:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-manrope{font-family:var(--font-manrope)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-8{--tw-leading:calc(var(--spacing)*8);line-height:calc(var(--spacing)*8)}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-\\[\\#09090B\\]{color:#09090b}.text-\\[\\#525252\\]{color:#525252}.text-\\[\\#737373\\]{color:#737373}.text-\\[\\#828282\\]{color:#828282}.text-\\[\\#A3A3A3\\]{color:#a3a3a3}.text-\\[\\#A6A6A6\\]{color:#a6a6a6}.text-black{color:var(--color-black)}.text-gray-500{color:var(--color-gray-500)}.text-gray-900{color:var(--color-gray-900)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.shadow-\\[0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.10\\)\\]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);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,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\\:font-normal::placeholder{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.placeholder\\:text-\\[\\#A3A3A3\\]::placeholder{color:#a3a3a3}.before\\:h-px:before{content:var(--tw-content);height:1px}.before\\:flex-1:before{content:var(--tw-content);flex:1}.before\\:bg-\\[\\#E5E5E5\\]:before{content:var(--tw-content);background-color:#e5e5e5}.before\\:content-\\[\\'\\'\\]:before{--tw-content:\"\";content:var(--tw-content)}.after\\:h-px:after{content:var(--tw-content);height:1px}.after\\:flex-1:after{content:var(--tw-content);flex:1}.after\\:bg-\\[\\#E5E5E5\\]:after{content:var(--tw-content);background-color:#e5e5e5}.after\\:content-\\[\\'\\'\\]:after{--tw-content:\"\";content:var(--tw-content)}@media (hover:hover){.hover\\:border-\\[\\#9ca3af\\]:hover{border-color:#9ca3af}.hover\\:bg-\\[\\#f9fafb\\]:hover{background-color:#f9fafb}.hover\\:bg-black\\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-black\\/5:hover{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}.focus\\:border-black:focus{border-color:var(--color-black)}.focus\\:shadow-\\[0_0_0_2px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#0000001a);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}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-\\[\\#F5F5F5\\]:disabled{background-color:#f5f5f5}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{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:0}@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}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}@keyframes spin{to{transform:rotate(360deg)}}";
|
|
9
|
+
style.textContent = "/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n@import \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap\";@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight: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;--tw-content:\"\"}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-blue-50:oklch(97% .014 254.604);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-neutral-400:oklch(70.8% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-normal:1.5;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-manrope:\"Manrope\",sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.top-1\\/2{top:50%}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\\[18px\\]{height:18px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-\\[18px\\]{width:18px}.w-full{width:100%}.max-w-\\[400px\\]{max-width:400px}.max-w-md{max-width:var(--container-md)}.min-w-40{min-width:calc(var(--spacing)*40)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-none{--tw-border-style:none;border-style:none}.border-\\[\\#D4D4D4\\]{border-color:#d4d4d4}.border-\\[\\#E0E0E0\\]{border-color:#e0e0e0}.border-\\[\\#E4E4E7\\]{border-color:#e4e4e7}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-700{border-color:var(--color-gray-700)}.border-neutral-400{border-color:var(--color-neutral-400)}.border-red-600{border-color:var(--color-red-600)}.border-transparent{border-color:#0000}.bg-\\[\\#059669\\]{background-color:#059669}.bg-\\[\\#FAFAFA\\]{background-color:#fafafa}.bg-black{background-color:var(--color-black)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-50{background-color:var(--color-red-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pl-3{padding-left:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-manrope{font-family:var(--font-manrope)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-8{--tw-leading:calc(var(--spacing)*8);line-height:calc(var(--spacing)*8)}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-\\[\\#09090B\\]{color:#09090b}.text-\\[\\#525252\\]{color:#525252}.text-\\[\\#737373\\]{color:#737373}.text-\\[\\#828282\\]{color:#828282}.text-\\[\\#A3A3A3\\]{color:#a3a3a3}.text-\\[\\#A6A6A6\\]{color:#a6a6a6}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-blue-900{color:var(--color-blue-900)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-900{color:var(--color-gray-900)}.text-purple-700{color:var(--color-purple-700)}.text-purple-900{color:var(--color-purple-900)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.10\\)\\]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);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,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\\:font-normal::placeholder{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.placeholder\\:text-\\[\\#A3A3A3\\]::placeholder{color:#a3a3a3}.before\\:h-px:before{content:var(--tw-content);height:1px}.before\\:flex-1:before{content:var(--tw-content);flex:1}.before\\:bg-\\[\\#E5E5E5\\]:before{content:var(--tw-content);background-color:#e5e5e5}.before\\:content-\\[\\'\\'\\]:before{--tw-content:\"\";content:var(--tw-content)}.after\\:h-px:after{content:var(--tw-content);height:1px}.after\\:flex-1:after{content:var(--tw-content);flex:1}.after\\:bg-\\[\\#E5E5E5\\]:after{content:var(--tw-content);background-color:#e5e5e5}.after\\:content-\\[\\'\\'\\]:after{--tw-content:\"\";content:var(--tw-content)}@media (hover:hover){.hover\\:border-\\[\\#9ca3af\\]:hover{border-color:#9ca3af}.hover\\:bg-\\[\\#f9fafb\\]:hover{background-color:#f9fafb}.hover\\:bg-black\\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-black\\/5:hover{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.hover\\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\\:bg-purple-700:hover{background-color:var(--color-purple-700)}.hover\\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\\:bg-white\\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-white\\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}.focus\\:border-black:focus{border-color:var(--color-black)}.focus\\:shadow-\\[0_0_0_2px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]:focus{--tw-shadow:0 0 0 2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-\\[\\#F5F5F5\\]:disabled{background-color:#f5f5f5}.disabled\\:opacity-50:disabled{opacity:.5}.disabled\\:opacity-60:disabled{opacity:.6}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{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:0}@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}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}@keyframes spin{to{transform:rotate(360deg)}}";
|
|
10
10
|
if (document.head) {
|
|
11
11
|
document.head.appendChild(style);
|
|
12
12
|
}
|
|
@@ -59,6 +59,7 @@ __export(src_exports, {
|
|
|
59
59
|
AuthPasswordStrengthIndicator: () => AuthPasswordStrengthIndicator,
|
|
60
60
|
AuthSubmitButton: () => AuthSubmitButton,
|
|
61
61
|
AuthVerificationCodeInput: () => AuthVerificationCodeInput,
|
|
62
|
+
InsforgeCallback: () => InsforgeCallback,
|
|
62
63
|
InsforgeProvider: () => InsforgeProvider,
|
|
63
64
|
OAUTH_PROVIDER_CONFIG: () => OAUTH_PROVIDER_CONFIG,
|
|
64
65
|
Protect: () => Protect,
|
|
@@ -73,7 +74,6 @@ __export(src_exports, {
|
|
|
73
74
|
isProviderSupported: () => isProviderSupported,
|
|
74
75
|
useAuth: () => useAuth,
|
|
75
76
|
useInsforge: () => useInsforge,
|
|
76
|
-
useSession: () => useSession,
|
|
77
77
|
useUser: () => useUser,
|
|
78
78
|
validatePasswordStrength: () => validatePasswordStrength
|
|
79
79
|
});
|
|
@@ -107,55 +107,24 @@ async function syncTokenToCookie(token) {
|
|
|
107
107
|
function InsforgeProvider({
|
|
108
108
|
children,
|
|
109
109
|
baseUrl,
|
|
110
|
-
|
|
111
|
-
onAuthChange,
|
|
112
|
-
useBuiltInAuth = true
|
|
110
|
+
onAuthChange
|
|
113
111
|
}) {
|
|
114
112
|
const [user, setUser] = (0, import_react.useState)(null);
|
|
115
|
-
const [session, setSession] = (0, import_react.useState)(null);
|
|
116
113
|
const [isLoaded, setIsLoaded] = (0, import_react.useState)(false);
|
|
117
114
|
const refreshIntervalRef = (0, import_react.useRef)(null);
|
|
118
115
|
const [insforge] = (0, import_react.useState)(() => (0, import_sdk.createClient)({ baseUrl }));
|
|
119
116
|
const loadAuthState = (0, import_react.useCallback)(async () => {
|
|
120
117
|
try {
|
|
121
118
|
const sessionResult = insforge.auth.getCurrentSession();
|
|
122
|
-
const
|
|
123
|
-
const token =
|
|
119
|
+
const session = sessionResult.data?.session;
|
|
120
|
+
const token = session?.accessToken || null;
|
|
124
121
|
if (!token) {
|
|
125
122
|
setUser(null);
|
|
126
|
-
setSession(null);
|
|
127
123
|
if (onAuthChange) {
|
|
128
124
|
onAuthChange(null);
|
|
129
125
|
}
|
|
130
126
|
setIsLoaded(true);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const cachedUserStr = localStorage.getItem("insforge-user-profile");
|
|
134
|
-
if (cachedUserStr) {
|
|
135
|
-
try {
|
|
136
|
-
const cachedData = JSON.parse(cachedUserStr);
|
|
137
|
-
if (cachedData.user) {
|
|
138
|
-
const userData = {
|
|
139
|
-
id: cachedData.user.id,
|
|
140
|
-
email: cachedData.user.email,
|
|
141
|
-
name: cachedData.profile?.nickname || "",
|
|
142
|
-
avatarUrl: cachedData.profile?.avatar_url || ""
|
|
143
|
-
};
|
|
144
|
-
setUser(userData);
|
|
145
|
-
setSession({
|
|
146
|
-
userId: cachedData.user.id,
|
|
147
|
-
token,
|
|
148
|
-
expiresAt: "",
|
|
149
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
150
|
-
});
|
|
151
|
-
if (onAuthChange) {
|
|
152
|
-
onAuthChange(userData);
|
|
153
|
-
}
|
|
154
|
-
setIsLoaded(true);
|
|
155
|
-
}
|
|
156
|
-
} catch (e) {
|
|
157
|
-
console.warn("[InsforgeProvider] Failed to parse cached user data:", e);
|
|
158
|
-
}
|
|
127
|
+
return { success: false, error: "no_session" };
|
|
159
128
|
}
|
|
160
129
|
try {
|
|
161
130
|
await syncTokenToCookie(token);
|
|
@@ -170,44 +139,40 @@ function InsforgeProvider({
|
|
|
170
139
|
avatarUrl: userResult.data.profile?.avatarUrl || ""
|
|
171
140
|
};
|
|
172
141
|
setUser(userData);
|
|
173
|
-
setSession({
|
|
174
|
-
userId: userResult.data.user.id,
|
|
175
|
-
token,
|
|
176
|
-
expiresAt: "",
|
|
177
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
178
|
-
});
|
|
179
|
-
localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
|
|
180
142
|
if (onAuthChange) {
|
|
181
143
|
onAuthChange(userData);
|
|
182
144
|
}
|
|
145
|
+
setIsLoaded(true);
|
|
146
|
+
return { success: true };
|
|
183
147
|
} else {
|
|
184
|
-
|
|
185
|
-
localStorage.removeItem("insforge-user-profile");
|
|
148
|
+
await insforge.auth.signOut();
|
|
186
149
|
try {
|
|
187
150
|
await fetch("/api/auth", { method: "DELETE" });
|
|
188
151
|
} catch (error) {
|
|
189
152
|
}
|
|
190
153
|
setUser(null);
|
|
191
|
-
setSession(null);
|
|
192
154
|
if (onAuthChange) {
|
|
193
155
|
onAuthChange(null);
|
|
194
156
|
}
|
|
157
|
+
setIsLoaded(true);
|
|
158
|
+
return { success: false, error: "invalid_token" };
|
|
195
159
|
}
|
|
196
160
|
} catch (error) {
|
|
197
161
|
console.error("[InsforgeProvider] Token validation failed:", error);
|
|
198
|
-
|
|
199
|
-
localStorage.removeItem("insforge-user-profile");
|
|
162
|
+
await insforge.auth.signOut();
|
|
200
163
|
try {
|
|
201
164
|
await fetch("/api/auth", { method: "DELETE" });
|
|
202
165
|
} catch (error2) {
|
|
203
166
|
}
|
|
204
167
|
setUser(null);
|
|
205
|
-
setSession(null);
|
|
206
168
|
if (onAuthChange) {
|
|
207
169
|
onAuthChange(null);
|
|
208
170
|
}
|
|
209
|
-
} finally {
|
|
210
171
|
setIsLoaded(true);
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
error: error instanceof Error ? error.message : "authentication_failed"
|
|
175
|
+
};
|
|
211
176
|
}
|
|
212
177
|
}, [insforge, onAuthChange]);
|
|
213
178
|
(0, import_react.useEffect)(() => {
|
|
@@ -228,15 +193,7 @@ function InsforgeProvider({
|
|
|
228
193
|
name: userResult.data.profile?.nickname || "",
|
|
229
194
|
avatarUrl: userResult.data.profile?.avatarUrl || ""
|
|
230
195
|
};
|
|
231
|
-
const sessionData = {
|
|
232
|
-
userId: userResult.data.user.id,
|
|
233
|
-
token: authToken,
|
|
234
|
-
expiresAt: "",
|
|
235
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
236
|
-
};
|
|
237
196
|
setUser(userData);
|
|
238
|
-
setSession(sessionData);
|
|
239
|
-
localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
|
|
240
197
|
if (onAuthChange) {
|
|
241
198
|
onAuthChange(userData);
|
|
242
199
|
}
|
|
@@ -252,12 +209,6 @@ function InsforgeProvider({
|
|
|
252
209
|
avatarUrl: ""
|
|
253
210
|
};
|
|
254
211
|
setUser(userData);
|
|
255
|
-
setSession({
|
|
256
|
-
userId: fallbackUser.id || "",
|
|
257
|
-
token: authToken,
|
|
258
|
-
expiresAt: "",
|
|
259
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
260
|
-
});
|
|
261
212
|
if (onAuthChange) {
|
|
262
213
|
onAuthChange(userData);
|
|
263
214
|
}
|
|
@@ -305,14 +256,12 @@ function InsforgeProvider({
|
|
|
305
256
|
);
|
|
306
257
|
const signOut = (0, import_react.useCallback)(async () => {
|
|
307
258
|
await insforge.auth.signOut();
|
|
308
|
-
localStorage.removeItem("insforge-user-profile");
|
|
309
259
|
await fetch("/api/auth", { method: "DELETE" }).catch(() => {
|
|
310
260
|
});
|
|
311
261
|
if (refreshIntervalRef.current) {
|
|
312
262
|
clearInterval(refreshIntervalRef.current);
|
|
313
263
|
}
|
|
314
264
|
setUser(null);
|
|
315
|
-
setSession(null);
|
|
316
265
|
if (onAuthChange) {
|
|
317
266
|
onAuthChange(null);
|
|
318
267
|
}
|
|
@@ -340,7 +289,6 @@ function InsforgeProvider({
|
|
|
340
289
|
value: {
|
|
341
290
|
// Auth
|
|
342
291
|
user,
|
|
343
|
-
session,
|
|
344
292
|
isLoaded,
|
|
345
293
|
isSignedIn: !!user,
|
|
346
294
|
setUser,
|
|
@@ -348,6 +296,7 @@ function InsforgeProvider({
|
|
|
348
296
|
signUp,
|
|
349
297
|
signOut,
|
|
350
298
|
updateUser,
|
|
299
|
+
reloadAuth: loadAuthState,
|
|
351
300
|
// Email verification (commented out - verification disabled for now)
|
|
352
301
|
// sendVerificationCode,
|
|
353
302
|
// verifySignUpCode,
|
|
@@ -379,12 +328,6 @@ function useUser() {
|
|
|
379
328
|
return { user, isLoaded, updateUser, setUser };
|
|
380
329
|
}
|
|
381
330
|
|
|
382
|
-
// src/hooks/useSession.ts
|
|
383
|
-
function useSession() {
|
|
384
|
-
const { session, isLoaded } = useInsforge();
|
|
385
|
-
return { session, isLoaded };
|
|
386
|
-
}
|
|
387
|
-
|
|
388
331
|
// src/components/SignIn.tsx
|
|
389
332
|
var import_react6 = require("react");
|
|
390
333
|
var import_sdk4 = require("@insforge/sdk");
|
|
@@ -476,13 +419,10 @@ function cn(...inputs) {
|
|
|
476
419
|
// src/components/auth/AuthBranding.tsx
|
|
477
420
|
var import_link = __toESM(require("next/link"));
|
|
478
421
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
479
|
-
function AuthBranding(
|
|
480
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className:
|
|
481
|
-
"
|
|
482
|
-
|
|
483
|
-
), children: [
|
|
484
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "text-xs font-medium text-black font-manrope", children: text }),
|
|
485
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "83", height: "20", viewBox: "0 0 83 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
422
|
+
function AuthBranding() {
|
|
423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "bg-[#FAFAFA] px-2 py-4 flex flex-row justify-center items-center gap-1", children: [
|
|
424
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "text-xs font-medium text-black font-manrope", children: "Secured by" }),
|
|
425
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href: "https://insforge.dev", target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { width: "83", height: "20", viewBox: "0 0 83 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
486
426
|
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
487
427
|
"path",
|
|
488
428
|
{
|
|
@@ -542,15 +482,23 @@ function AuthBranding({ text = "Secured by", href = "https://insforge.dev", clas
|
|
|
542
482
|
|
|
543
483
|
// src/components/auth/AuthContainer.tsx
|
|
544
484
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
545
|
-
function AuthContainer({
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
485
|
+
function AuthContainer({ children, appearance = {} }) {
|
|
486
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
487
|
+
"div",
|
|
488
|
+
{
|
|
489
|
+
className: cn(
|
|
490
|
+
"w-full max-w-[400px] rounded-xl overflow-hidden shadow-lg",
|
|
491
|
+
appearance.containerClassName
|
|
492
|
+
),
|
|
493
|
+
children: [
|
|
494
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn(
|
|
495
|
+
"bg-white p-6 flex flex-col justify-center items-stretch gap-6",
|
|
496
|
+
appearance.cardClassName
|
|
497
|
+
), children }),
|
|
498
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AuthBranding, {})
|
|
499
|
+
]
|
|
500
|
+
}
|
|
501
|
+
);
|
|
554
502
|
}
|
|
555
503
|
|
|
556
504
|
// src/components/auth/AuthHeader.tsx
|
|
@@ -558,21 +506,19 @@ var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
|
558
506
|
function AuthHeader({
|
|
559
507
|
title,
|
|
560
508
|
subtitle,
|
|
561
|
-
|
|
562
|
-
titleClassName,
|
|
563
|
-
subtitleClassName
|
|
509
|
+
appearance = {}
|
|
564
510
|
}) {
|
|
565
511
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: cn(
|
|
566
512
|
"flex flex-col justify-start items-start gap-2",
|
|
567
|
-
|
|
513
|
+
appearance.containerClassName
|
|
568
514
|
), children: [
|
|
569
515
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h1", { className: cn(
|
|
570
516
|
"text-2xl font-semibold text-black leading-8",
|
|
571
|
-
titleClassName
|
|
517
|
+
appearance.titleClassName
|
|
572
518
|
), children: title }),
|
|
573
519
|
subtitle && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: cn(
|
|
574
520
|
"text-sm font-normal text-[#828282] leading-6",
|
|
575
|
-
subtitleClassName
|
|
521
|
+
appearance.subtitleClassName
|
|
576
522
|
), children: subtitle })
|
|
577
523
|
] });
|
|
578
524
|
}
|
|
@@ -602,14 +548,12 @@ var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
|
602
548
|
function AuthFormField({
|
|
603
549
|
label,
|
|
604
550
|
id,
|
|
605
|
-
|
|
606
|
-
labelClassName,
|
|
607
|
-
inputClassName,
|
|
551
|
+
appearance = {},
|
|
608
552
|
...props
|
|
609
553
|
}) {
|
|
610
554
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: cn(
|
|
611
555
|
"flex flex-col justify-center items-stretch gap-1",
|
|
612
|
-
|
|
556
|
+
appearance.containerClassName
|
|
613
557
|
), children: [
|
|
614
558
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
615
559
|
"label",
|
|
@@ -617,7 +561,7 @@ function AuthFormField({
|
|
|
617
561
|
htmlFor: id,
|
|
618
562
|
className: cn(
|
|
619
563
|
"text-sm font-normal text-black leading-6",
|
|
620
|
-
labelClassName
|
|
564
|
+
appearance.labelClassName
|
|
621
565
|
),
|
|
622
566
|
children: label
|
|
623
567
|
}
|
|
@@ -632,7 +576,7 @@ function AuthFormField({
|
|
|
632
576
|
"text-sm font-normal leading-5",
|
|
633
577
|
"placeholder:text-[#A3A3A3] placeholder:font-sm placeholder:font-normal",
|
|
634
578
|
"focus:outline-none focus:border-black",
|
|
635
|
-
inputClassName
|
|
579
|
+
appearance.inputClassName
|
|
636
580
|
),
|
|
637
581
|
...props
|
|
638
582
|
}
|
|
@@ -647,6 +591,41 @@ var import_lucide_react3 = require("lucide-react");
|
|
|
647
591
|
// src/components/auth/AuthPasswordStrengthIndicator.tsx
|
|
648
592
|
var import_lucide_react2 = require("lucide-react");
|
|
649
593
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
594
|
+
function AuthPasswordStrengthIndicator({
|
|
595
|
+
password,
|
|
596
|
+
config,
|
|
597
|
+
appearance = {}
|
|
598
|
+
}) {
|
|
599
|
+
const requirements = createRequirements(config);
|
|
600
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
601
|
+
"div",
|
|
602
|
+
{
|
|
603
|
+
className: cn("mt-3 flex flex-col gap-3", appearance.containerClassName),
|
|
604
|
+
children: requirements.map((req) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
605
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
606
|
+
"div",
|
|
607
|
+
{
|
|
608
|
+
className: cn(
|
|
609
|
+
"flex items-center justify-center w-4 h-4 rounded-full border-2 transition-colors",
|
|
610
|
+
req.test(password) ? "bg-[#059669] border-transparent" : "border-neutral-400 bg-white"
|
|
611
|
+
),
|
|
612
|
+
children: req.test(password) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.Check, { className: "w-3 h-3 text-white" })
|
|
613
|
+
}
|
|
614
|
+
),
|
|
615
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
616
|
+
"span",
|
|
617
|
+
{
|
|
618
|
+
className: cn(
|
|
619
|
+
"text-sm font-normal leading-5 text-[#525252]",
|
|
620
|
+
appearance.requirementClassName
|
|
621
|
+
),
|
|
622
|
+
children: req.label
|
|
623
|
+
}
|
|
624
|
+
)
|
|
625
|
+
] }, req.label))
|
|
626
|
+
}
|
|
627
|
+
);
|
|
628
|
+
}
|
|
650
629
|
function createRequirements(config) {
|
|
651
630
|
const requirements = [];
|
|
652
631
|
const minLength = config.passwordMinLength;
|
|
@@ -689,30 +668,6 @@ function validatePasswordStrength(password, config) {
|
|
|
689
668
|
const requirements = createRequirements(config);
|
|
690
669
|
return requirements.every((req) => req.test(password));
|
|
691
670
|
}
|
|
692
|
-
function AuthPasswordStrengthIndicator({
|
|
693
|
-
password,
|
|
694
|
-
config,
|
|
695
|
-
className
|
|
696
|
-
}) {
|
|
697
|
-
const requirements = createRequirements(config);
|
|
698
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: cn("flex flex-col gap-1 mt-2", className), children: requirements.map((requirement, index) => {
|
|
699
|
-
const isValid = requirement.test(password);
|
|
700
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "h-6 flex items-center gap-1", children: [
|
|
701
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
702
|
-
"div",
|
|
703
|
-
{
|
|
704
|
-
className: cn(
|
|
705
|
-
"w-5 h-5 rounded-full flex items-center justify-center transition-all duration-200",
|
|
706
|
-
"border-2 flex-shrink-0",
|
|
707
|
-
isValid ? "bg-green-500 border-transparent" : "bg-transparent border-neutral-400"
|
|
708
|
-
),
|
|
709
|
-
children: isValid && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react2.Check, { className: "text-white stroke-[3]", size: 12 })
|
|
710
|
-
}
|
|
711
|
-
),
|
|
712
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-sm font-normal text-black leading-6", children: requirement.label })
|
|
713
|
-
] }, index);
|
|
714
|
-
}) });
|
|
715
|
-
}
|
|
716
671
|
|
|
717
672
|
// src/components/auth/AuthPasswordField.tsx
|
|
718
673
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
@@ -723,9 +678,7 @@ function AuthPasswordField({
|
|
|
723
678
|
emailAuthConfig,
|
|
724
679
|
forgotPasswordLink,
|
|
725
680
|
value,
|
|
726
|
-
|
|
727
|
-
labelClassName,
|
|
728
|
-
inputClassName,
|
|
681
|
+
appearance = {},
|
|
729
682
|
onFocus,
|
|
730
683
|
...props
|
|
731
684
|
}) {
|
|
@@ -742,7 +695,7 @@ function AuthPasswordField({
|
|
|
742
695
|
{
|
|
743
696
|
className: cn(
|
|
744
697
|
"flex flex-col justify-center items-stretch gap-1",
|
|
745
|
-
|
|
698
|
+
appearance.containerClassName
|
|
746
699
|
),
|
|
747
700
|
children: [
|
|
748
701
|
(label || forgotPasswordLink) && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex justify-between items-center", children: [
|
|
@@ -752,7 +705,7 @@ function AuthPasswordField({
|
|
|
752
705
|
htmlFor: id,
|
|
753
706
|
className: cn(
|
|
754
707
|
"text-sm font-normal text-black leading-6",
|
|
755
|
-
labelClassName
|
|
708
|
+
appearance.labelClassName
|
|
756
709
|
),
|
|
757
710
|
children: label
|
|
758
711
|
}
|
|
@@ -778,7 +731,7 @@ function AuthPasswordField({
|
|
|
778
731
|
"text-sm font-normal leading-5",
|
|
779
732
|
"placeholder:text-[#A3A3A3] placeholder:font-sm placeholder:font-normal",
|
|
780
733
|
"focus:outline-none focus:border-black",
|
|
781
|
-
inputClassName
|
|
734
|
+
appearance.inputClassName
|
|
782
735
|
),
|
|
783
736
|
value,
|
|
784
737
|
onFocus: handleFocus,
|
|
@@ -816,7 +769,6 @@ function AuthSubmitButton({
|
|
|
816
769
|
isLoading = false,
|
|
817
770
|
confirmed = false,
|
|
818
771
|
disabled = false,
|
|
819
|
-
style,
|
|
820
772
|
className
|
|
821
773
|
}) {
|
|
822
774
|
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
@@ -832,7 +784,6 @@ function AuthSubmitButton({
|
|
|
832
784
|
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
833
785
|
className
|
|
834
786
|
),
|
|
835
|
-
style,
|
|
836
787
|
disabled: disabled || isLoading || confirmed,
|
|
837
788
|
children: [
|
|
838
789
|
isLoading && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react4.Loader2, { className: "w-5 h-5 animate-spin", size: 20 }),
|
|
@@ -856,10 +807,10 @@ function AuthDivider({ text = "or", className }) {
|
|
|
856
807
|
|
|
857
808
|
// src/components/auth/AuthLink.tsx
|
|
858
809
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
859
|
-
function AuthLink({ text, linkText, href,
|
|
810
|
+
function AuthLink({ text, linkText, href, appearance = {} }) {
|
|
860
811
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { className: cn(
|
|
861
812
|
"text-center text-sm font-normal text-[#828282] leading-6",
|
|
862
|
-
|
|
813
|
+
appearance.containerClassName
|
|
863
814
|
), children: [
|
|
864
815
|
text,
|
|
865
816
|
" ",
|
|
@@ -869,7 +820,7 @@ function AuthLink({ text, linkText, href, className, linkClassName }) {
|
|
|
869
820
|
href,
|
|
870
821
|
className: cn(
|
|
871
822
|
"text-sm font-medium text-black leading-6",
|
|
872
|
-
linkClassName
|
|
823
|
+
appearance.linkClassName
|
|
873
824
|
),
|
|
874
825
|
children: linkText
|
|
875
826
|
}
|
|
@@ -1083,7 +1034,7 @@ function AuthOAuthProviders({
|
|
|
1083
1034
|
onClick,
|
|
1084
1035
|
disabled,
|
|
1085
1036
|
loading,
|
|
1086
|
-
|
|
1037
|
+
appearance = {}
|
|
1087
1038
|
}) {
|
|
1088
1039
|
if (!providers || providers.length === 0) {
|
|
1089
1040
|
return null;
|
|
@@ -1128,7 +1079,7 @@ function AuthOAuthProviders({
|
|
|
1128
1079
|
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn(
|
|
1129
1080
|
"grid gap-3 w-full",
|
|
1130
1081
|
getGridClass(),
|
|
1131
|
-
|
|
1082
|
+
appearance.containerClassName
|
|
1132
1083
|
), children: providers.map((provider, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1133
1084
|
AuthOAuthButton,
|
|
1134
1085
|
{
|
|
@@ -1137,7 +1088,8 @@ function AuthOAuthProviders({
|
|
|
1137
1088
|
disabled,
|
|
1138
1089
|
loading: loading === provider,
|
|
1139
1090
|
displayMode: getDisplayMode(),
|
|
1140
|
-
style: getGridColumnStyle(index)
|
|
1091
|
+
style: getGridColumnStyle(index),
|
|
1092
|
+
className: appearance.buttonClassName
|
|
1141
1093
|
},
|
|
1142
1094
|
provider
|
|
1143
1095
|
)) });
|
|
@@ -1152,8 +1104,7 @@ function AuthVerificationCodeInput({
|
|
|
1152
1104
|
email,
|
|
1153
1105
|
onChange,
|
|
1154
1106
|
disabled = false,
|
|
1155
|
-
|
|
1156
|
-
inputClassName
|
|
1107
|
+
appearance = {}
|
|
1157
1108
|
}) {
|
|
1158
1109
|
const inputRefs = (0, import_react5.useRef)([]);
|
|
1159
1110
|
const handleChange = (index, digit) => {
|
|
@@ -1190,7 +1141,7 @@ function AuthVerificationCodeInput({
|
|
|
1190
1141
|
};
|
|
1191
1142
|
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn(
|
|
1192
1143
|
"flex flex-col justify-center items-center gap-6",
|
|
1193
|
-
|
|
1144
|
+
appearance.containerClassName
|
|
1194
1145
|
), children: [
|
|
1195
1146
|
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { className: "text-sm font-normal text-[#525252] leading-5", children: [
|
|
1196
1147
|
"We've sent a verification code to your inbox at",
|
|
@@ -1218,7 +1169,7 @@ function AuthVerificationCodeInput({
|
|
|
1218
1169
|
"transition-all duration-200 outline-none",
|
|
1219
1170
|
"focus:border-black focus:shadow-[0_0_0_2px_rgba(0,0,0,0.1)]",
|
|
1220
1171
|
"disabled:bg-[#F5F5F5] disabled:cursor-not-allowed disabled:opacity-60",
|
|
1221
|
-
inputClassName
|
|
1172
|
+
appearance.inputClassName
|
|
1222
1173
|
),
|
|
1223
1174
|
autoComplete: "one-time-code"
|
|
1224
1175
|
},
|
|
@@ -1238,7 +1189,6 @@ function SignIn({
|
|
|
1238
1189
|
emailPlaceholder = "example@email.com",
|
|
1239
1190
|
passwordLabel = "Password",
|
|
1240
1191
|
passwordPlaceholder = "\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
1241
|
-
forgotPasswordText = "Forget Password?",
|
|
1242
1192
|
submitButtonText = "Sign In",
|
|
1243
1193
|
loadingButtonText = "Signing in...",
|
|
1244
1194
|
signUpText = "Don't have an account?",
|
|
@@ -1294,7 +1244,7 @@ function SignIn({
|
|
|
1294
1244
|
setOauthLoading(null);
|
|
1295
1245
|
}
|
|
1296
1246
|
}
|
|
1297
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(AuthContainer, {
|
|
1247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(AuthContainer, { appearance: { containerClassName: appearance.containerClassName }, children: [
|
|
1298
1248
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(AuthHeader, { title, subtitle }),
|
|
1299
1249
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(AuthErrorBanner, { error }),
|
|
1300
1250
|
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
@@ -1342,7 +1292,7 @@ function SignIn({
|
|
|
1342
1292
|
{
|
|
1343
1293
|
isLoading: loading,
|
|
1344
1294
|
disabled: loading || oauthLoading !== null,
|
|
1345
|
-
|
|
1295
|
+
className: appearance.buttonClassName,
|
|
1346
1296
|
children: loading ? loadingButtonText : submitButtonText
|
|
1347
1297
|
}
|
|
1348
1298
|
)
|
|
@@ -1444,7 +1394,7 @@ function SignUp({
|
|
|
1444
1394
|
setOauthLoading(null);
|
|
1445
1395
|
}
|
|
1446
1396
|
}
|
|
1447
|
-
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(AuthContainer, {
|
|
1397
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(AuthContainer, { appearance: { containerClassName: appearance.containerClassName }, children: [
|
|
1448
1398
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AuthHeader, { title, subtitle }),
|
|
1449
1399
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(AuthErrorBanner, { error }),
|
|
1450
1400
|
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
@@ -1494,7 +1444,7 @@ function SignUp({
|
|
|
1494
1444
|
{
|
|
1495
1445
|
isLoading: loading,
|
|
1496
1446
|
disabled: loading || oauthLoading !== null,
|
|
1497
|
-
|
|
1447
|
+
className: appearance.buttonClassName,
|
|
1498
1448
|
children: loading ? loadingButtonText : submitButtonText
|
|
1499
1449
|
}
|
|
1500
1450
|
)
|
|
@@ -1524,8 +1474,7 @@ var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
|
1524
1474
|
function UserButton({
|
|
1525
1475
|
afterSignOutUrl = "/",
|
|
1526
1476
|
mode = "detailed",
|
|
1527
|
-
appearance = {}
|
|
1528
|
-
className
|
|
1477
|
+
appearance = {}
|
|
1529
1478
|
}) {
|
|
1530
1479
|
const { user, signOut } = useInsforge();
|
|
1531
1480
|
const [isOpen, setIsOpen] = (0, import_react8.useState)(false);
|
|
@@ -1550,7 +1499,7 @@ function UserButton({
|
|
|
1550
1499
|
}
|
|
1551
1500
|
if (!user) return null;
|
|
1552
1501
|
const initials = user.nickname ? user.nickname.charAt(0).toUpperCase() : user.email.split("@")[0].slice(0, 2).toUpperCase();
|
|
1553
|
-
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: cn("relative inline-block",
|
|
1502
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: cn("relative inline-block", appearance.containerClassName), ref: dropdownRef, children: [
|
|
1554
1503
|
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1555
1504
|
"button",
|
|
1556
1505
|
{
|
|
@@ -1565,7 +1514,6 @@ function UserButton({
|
|
|
1565
1514
|
appearance.buttonClassName
|
|
1566
1515
|
),
|
|
1567
1516
|
onClick: () => setIsOpen(!isOpen),
|
|
1568
|
-
style: appearance.button,
|
|
1569
1517
|
"aria-expanded": isOpen,
|
|
1570
1518
|
"aria-haspopup": "true",
|
|
1571
1519
|
children: [
|
|
@@ -1599,7 +1547,6 @@ function UserButton({
|
|
|
1599
1547
|
"shadow-lg z-50 overflow-hidden p-1",
|
|
1600
1548
|
appearance.dropdownClassName
|
|
1601
1549
|
),
|
|
1602
|
-
style: appearance.dropdown,
|
|
1603
1550
|
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1604
1551
|
"button",
|
|
1605
1552
|
{
|
|
@@ -1666,6 +1613,69 @@ function Protect({
|
|
|
1666
1613
|
}
|
|
1667
1614
|
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children });
|
|
1668
1615
|
}
|
|
1616
|
+
|
|
1617
|
+
// src/components/InsforgeCallback.tsx
|
|
1618
|
+
var import_react10 = require("react");
|
|
1619
|
+
var import_navigation2 = require("next/navigation");
|
|
1620
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1621
|
+
function CallbackContent({
|
|
1622
|
+
redirectTo,
|
|
1623
|
+
onSuccess,
|
|
1624
|
+
onError
|
|
1625
|
+
}) {
|
|
1626
|
+
const router = (0, import_navigation2.useRouter)();
|
|
1627
|
+
const searchParams = (0, import_navigation2.useSearchParams)();
|
|
1628
|
+
const isProcessingRef = (0, import_react10.useRef)(false);
|
|
1629
|
+
const { reloadAuth } = useInsforge();
|
|
1630
|
+
(0, import_react10.useEffect)(() => {
|
|
1631
|
+
const processCallback = async () => {
|
|
1632
|
+
if (isProcessingRef.current) return;
|
|
1633
|
+
isProcessingRef.current = true;
|
|
1634
|
+
const error = searchParams.get("error");
|
|
1635
|
+
if (error) {
|
|
1636
|
+
if (onError) {
|
|
1637
|
+
onError(error);
|
|
1638
|
+
} else {
|
|
1639
|
+
router.push("/?error=" + encodeURIComponent(error));
|
|
1640
|
+
}
|
|
1641
|
+
return;
|
|
1642
|
+
}
|
|
1643
|
+
const result = await reloadAuth();
|
|
1644
|
+
if (!result.success) {
|
|
1645
|
+
const errorMsg = result.error || "authentication_failed";
|
|
1646
|
+
if (onError) {
|
|
1647
|
+
onError(errorMsg);
|
|
1648
|
+
} else {
|
|
1649
|
+
router.push("/?error=" + encodeURIComponent(errorMsg));
|
|
1650
|
+
}
|
|
1651
|
+
return;
|
|
1652
|
+
}
|
|
1653
|
+
window.history.replaceState({}, "", window.location.pathname);
|
|
1654
|
+
if (onSuccess) {
|
|
1655
|
+
onSuccess();
|
|
1656
|
+
}
|
|
1657
|
+
const destination = redirectTo || sessionStorage.getItem("auth_destination") || sessionStorage.getItem("oauth_final_destination") || "/";
|
|
1658
|
+
sessionStorage.removeItem("auth_destination");
|
|
1659
|
+
sessionStorage.removeItem("oauth_final_destination");
|
|
1660
|
+
router.push(destination);
|
|
1661
|
+
};
|
|
1662
|
+
processCallback();
|
|
1663
|
+
}, [searchParams, router, redirectTo, onSuccess, onError, reloadAuth]);
|
|
1664
|
+
return null;
|
|
1665
|
+
}
|
|
1666
|
+
function InsforgeCallback({
|
|
1667
|
+
loadingComponent,
|
|
1668
|
+
...props
|
|
1669
|
+
}) {
|
|
1670
|
+
const defaultLoading = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "flex items-center justify-center min-h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "text-center", children: [
|
|
1671
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h2", { className: "text-2xl font-semibold mb-4", children: "Completing authentication..." }),
|
|
1672
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto" })
|
|
1673
|
+
] }) });
|
|
1674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react10.Suspense, { fallback: loadingComponent || defaultLoading, children: [
|
|
1675
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CallbackContent, { ...props }),
|
|
1676
|
+
loadingComponent || defaultLoading
|
|
1677
|
+
] });
|
|
1678
|
+
}
|
|
1669
1679
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1670
1680
|
0 && (module.exports = {
|
|
1671
1681
|
AuthBranding,
|
|
@@ -1681,6 +1691,7 @@ function Protect({
|
|
|
1681
1691
|
AuthPasswordStrengthIndicator,
|
|
1682
1692
|
AuthSubmitButton,
|
|
1683
1693
|
AuthVerificationCodeInput,
|
|
1694
|
+
InsforgeCallback,
|
|
1684
1695
|
InsforgeProvider,
|
|
1685
1696
|
OAUTH_PROVIDER_CONFIG,
|
|
1686
1697
|
Protect,
|
|
@@ -1695,7 +1706,6 @@ function Protect({
|
|
|
1695
1706
|
isProviderSupported,
|
|
1696
1707
|
useAuth,
|
|
1697
1708
|
useInsforge,
|
|
1698
|
-
useSession,
|
|
1699
1709
|
useUser,
|
|
1700
1710
|
validatePasswordStrength
|
|
1701
1711
|
});
|