@youversion/platform-react-ui 0.5.8 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/dist/components/SignInButton.d.ts +5 -15
- package/dist/components/SignInButton.d.ts.map +1 -1
- package/dist/components/SignInButton.stories.d.ts +2 -12
- package/dist/components/SignInButton.stories.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/verse-of-the-day.stories.d.ts.map +1 -1
- package/dist/index.cjs +611 -644
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +603 -633
- package/dist/lib/inject-styles.d.ts +2 -0
- package/dist/lib/inject-styles.d.ts.map +1 -0
- package/dist/tailwind.css +1 -1
- package/package.json +4 -5
- package/dist/hooks/index.d.ts +0 -2
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useAuthentication.d.ts +0 -8
- package/dist/hooks/useAuthentication.d.ts.map +0 -1
- package/dist/providers/YVPErrorBoundary.d.ts +0 -17
- package/dist/providers/YVPErrorBoundary.d.ts.map +0 -1
- package/dist/providers/YVPErrorBoundary.test.d.ts +0 -2
- package/dist/providers/YVPErrorBoundary.test.d.ts.map +0 -1
- package/dist/providers/YVPProvider.d.ts +0 -20
- package/dist/providers/YVPProvider.d.ts.map +0 -1
- package/dist/providers/index.d.ts +0 -3
- package/dist/providers/index.d.ts.map +0 -1
package/dist/index.js
CHANGED
|
@@ -6,6 +6,17 @@ var __export = (target, all) => {
|
|
|
6
6
|
};
|
|
7
7
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
8
|
|
|
9
|
+
// src/lib/inject-styles.ts
|
|
10
|
+
function injectStyles() {
|
|
11
|
+
if (typeof document === "undefined") return;
|
|
12
|
+
const id = "__yv-sdk-styles";
|
|
13
|
+
if (document.getElementById(id)) return;
|
|
14
|
+
const style = document.createElement("style");
|
|
15
|
+
style.id = id;
|
|
16
|
+
style.textContent = '/*! tailwindcss v4.1.15 | MIT License | https://tailwindcss.com */\n@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Source+Serif+Pro:wght@400;700&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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-outline-style:solid;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--yv-font-sans:"Inter",sans-serif;--yv-font-serif:"Source Serif Pro",serif;--yv-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--yv-color-white:#fff;--yv-spacing:.25rem;--yv-breakpoint-sm:40rem;--yv-container-sm:24rem;--yv-container-md:28rem;--yv-container-lg:32rem;--yv-text-xs:.75rem;--yv-text-xs--line-height:calc(1/.75);--yv-text-sm:.875rem;--yv-text-sm--line-height:calc(1.25/.875);--yv-text-base:1rem;--yv-text-base--line-height:calc(1.5/1);--yv-text-xl:1.25rem;--yv-text-xl--line-height:calc(1.75/1.25);--yv-text-2xl:1.5rem;--yv-text-2xl--line-height:calc(2/1.5);--yv-font-weight-normal:400;--yv-font-weight-medium:500;--yv-font-weight-bold:700;--yv-tracking-widest:.1em;--yv-leading-snug:1.375;--yv-leading-normal:1.5;--yv-radius-2xl:1rem;--yv-radius-3xl:1.5rem;--yv-animate-spin:spin 1s linear infinite;--yv-blur-sm:8px;--yv-default-transition-duration:.15s;--yv-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--yv-default-font-family:"Inter",sans-serif;--yv-default-mono-font-family:var(--yv-font-mono)}}@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(--yv-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(--yv-default-font-feature-settings,normal);font-variation-settings:var(--yv-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(--yv-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--yv-default-mono-font-feature-settings,normal);font-variation-settings:var(--yv-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}[data-yv-sdk] *{outline-color:var(--yv-ring)}@supports (color:color-mix(in lab, red, red)){[data-yv-sdk] *{outline-color:color-mix(in oklab,var(--yv-ring)50%,transparent)}}[data-yv-sdk]{background-color:var(--yv-background);color:var(--yv-foreground);font-family:Inter,sans-serif}}@layer components;@layer utilities{.yv\\:pointer-events-auto{pointer-events:auto}.yv\\:pointer-events-none{pointer-events:none}.yv\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.yv\\:absolute{position:absolute}.yv\\:relative{position:relative}.yv\\:inset-0{inset:calc(var(--yv-spacing)*0)}.yv\\:top-1\\/2{top:50%}.yv\\:left-1\\/2{left:50%}.yv\\:left-3{left:calc(var(--yv-spacing)*3)}.yv\\:z-20{z-index:20}.yv\\:z-50{z-index:50}.yv\\:order-first{order:-9999}.yv\\:order-last{order:9999}.yv\\:col-start-1{grid-column-start:1}.yv\\:col-start-2{grid-column-start:2}.yv\\:row-span-2{grid-row:span 2/span 2}.yv\\:row-start-1{grid-row-start:1}.yv\\:\\!m-0{margin:calc(var(--yv-spacing)*0)!important}.yv\\:mx-6{margin-inline:calc(var(--yv-spacing)*6)}.yv\\:my-0{margin-block:calc(var(--yv-spacing)*0)}.yv\\:mt-4{margin-top:calc(var(--yv-spacing)*4)}.yv\\:ml-2{margin-left:calc(var(--yv-spacing)*2)}.yv\\:line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.yv\\:line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.yv\\:block{display:block}.yv\\:flex{display:flex}.yv\\:grid{display:grid}.yv\\:inline-flex{display:inline-flex}.yv\\:field-sizing-content{field-sizing:content}.yv\\:aspect-square{aspect-ratio:1}.yv\\:size-4{width:calc(var(--yv-spacing)*4);height:calc(var(--yv-spacing)*4)}.yv\\:size-6{width:calc(var(--yv-spacing)*6);height:calc(var(--yv-spacing)*6)}.yv\\:size-8{width:calc(var(--yv-spacing)*8);height:calc(var(--yv-spacing)*8)}.yv\\:size-9{width:calc(var(--yv-spacing)*9);height:calc(var(--yv-spacing)*9)}.yv\\:size-10{width:calc(var(--yv-spacing)*10);height:calc(var(--yv-spacing)*10)}.yv\\:size-12{width:calc(var(--yv-spacing)*12);height:calc(var(--yv-spacing)*12)}.yv\\:h-4{height:calc(var(--yv-spacing)*4)}.yv\\:h-5{height:calc(var(--yv-spacing)*5)}.yv\\:h-6{height:calc(var(--yv-spacing)*6)}.yv\\:h-6\\!{height:calc(var(--yv-spacing)*6)!important}.yv\\:h-8{height:calc(var(--yv-spacing)*8)}.yv\\:h-9{height:calc(var(--yv-spacing)*9)}.yv\\:h-10{height:calc(var(--yv-spacing)*10)}.yv\\:h-\\[66vh\\]{height:66vh}.yv\\:h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 1px)}.yv\\:h-auto{height:auto}.yv\\:h-full{height:100%}.yv\\:h-screen{height:100vh}.yv\\:max-h-\\[66vh\\]{max-height:66vh}.yv\\:min-h-16{min-height:calc(var(--yv-spacing)*16)}.yv\\:w-4{width:calc(var(--yv-spacing)*4)}.yv\\:w-6{width:calc(var(--yv-spacing)*6)}.yv\\:w-6\\!{width:calc(var(--yv-spacing)*6)!important}.yv\\:w-8{width:calc(var(--yv-spacing)*8)}.yv\\:w-10{width:calc(var(--yv-spacing)*10)}.yv\\:w-72{width:calc(var(--yv-spacing)*72)}.yv\\:w-96{width:calc(var(--yv-spacing)*96)}.yv\\:w-fit{width:fit-content}.yv\\:w-full{width:100%}.yv\\:max-w-lg{max-width:var(--yv-container-lg)}.yv\\:max-w-md{max-width:var(--yv-container-md)}.yv\\:max-w-screen-sm{max-width:var(--yv-breakpoint-sm)}.yv\\:min-w-0{min-width:calc(var(--yv-spacing)*0)}.yv\\:min-w-5{min-width:calc(var(--yv-spacing)*5)}.yv\\:flex-1{flex:1}.yv\\:shrink-0{flex-shrink:0}.yv\\:grow{flex-grow:1}.yv\\:basis-full{flex-basis:100%}.yv\\:origin-\\(--radix-popover-content-transform-origin\\){transform-origin:var(--radix-popover-content-transform-origin)}.yv\\:origin-center{transform-origin:50%}.yv\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:translate-x-2{--tw-translate-x:calc(var(--yv-spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:translate-x-3{--tw-translate-x:calc(var(--yv-spacing)*3);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:translate-y-0\\.5{--tw-translate-y:calc(var(--yv-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.yv\\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.yv\\:animate-spin{animation:var(--yv-animate-spin)}.yv\\:cursor-pointer{cursor:pointer}.yv\\:cursor-text{cursor:text}.yv\\:resize-none{resize:none}.yv\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.yv\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.yv\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.yv\\:grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.yv\\:grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.yv\\:grid-rows-\\[auto_1fr_auto\\]{grid-template-rows:auto 1fr auto}.yv\\:flex-col{flex-direction:column}.yv\\:flex-row{flex-direction:row}.yv\\:flex-wrap{flex-wrap:wrap}.yv\\:items-center{align-items:center}.yv\\:items-end{align-items:flex-end}.yv\\:items-start{align-items:flex-start}.yv\\:items-stretch{align-items:stretch}.yv\\:justify-between{justify-content:space-between}.yv\\:justify-center{justify-content:center}.yv\\:justify-start{justify-content:flex-start}.yv\\:gap-1{gap:calc(var(--yv-spacing)*1)}.yv\\:gap-1\\.5{gap:calc(var(--yv-spacing)*1.5)}.yv\\:gap-2{gap:calc(var(--yv-spacing)*2)}.yv\\:gap-2\\.5{gap:calc(var(--yv-spacing)*2.5)}.yv\\:gap-3{gap:calc(var(--yv-spacing)*3)}.yv\\:gap-4{gap:calc(var(--yv-spacing)*4)}.yv\\:gap-6{gap:calc(var(--yv-spacing)*6)}.yv\\:self-start{align-self:flex-start}.yv\\:self-stretch{align-self:stretch}.yv\\:justify-self-end{justify-self:flex-end}.yv\\:justify-self-start{justify-self:flex-start}.yv\\:overflow-hidden{overflow:hidden}.yv\\:overflow-y-auto{overflow-y:auto}.yv\\:rounded-2xl{border-radius:var(--yv-radius-2xl)}.yv\\:rounded-3xl{border-radius:var(--yv-radius-3xl)}.yv\\:rounded-\\[4px\\]{border-radius:4px}.yv\\:rounded-\\[8px\\]{border-radius:8px}.yv\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]{border-radius:calc(var(--radius) - 5px)}.yv\\:rounded-full{border-radius:3.40282e38px}.yv\\:rounded-lg{border-radius:var(--yv-radius)}.yv\\:rounded-md{border-radius:calc(var(--yv-radius) - 2px)}.yv\\:rounded-none{border-radius:0}.yv\\:rounded-sm{border-radius:calc(var(--yv-radius) - 4px)}.yv\\:rounded-t-2xl{border-top-left-radius:var(--yv-radius-2xl);border-top-right-radius:var(--yv-radius-2xl)}.yv\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.yv\\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.yv\\:rounded-b-2xl{border-bottom-right-radius:var(--yv-radius-2xl);border-bottom-left-radius:var(--yv-radius-2xl)}.yv\\:border{border-style:var(--tw-border-style);border-width:1px}.yv\\:border-0{border-style:var(--tw-border-style);border-width:0}.yv\\:border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.yv\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.yv\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.yv\\:border-none{--tw-border-style:none;border-style:none}.yv\\:border-border{border-color:var(--yv-border)}.yv\\:border-input{border-color:var(--yv-input)}.yv\\:border-muted{border-color:var(--yv-muted)}.yv\\:border-transparent{border-color:#0000}.yv\\:bg-background{background-color:var(--yv-background)}.yv\\:bg-border{background-color:var(--yv-border)}.yv\\:bg-card{background-color:var(--yv-card)}.yv\\:bg-destructive{background-color:var(--yv-destructive)}.yv\\:bg-input{background-color:var(--yv-input)}.yv\\:bg-muted,.yv\\:bg-muted\\/50{background-color:var(--yv-muted)}@supports (color:color-mix(in lab, red, red)){.yv\\:bg-muted\\/50{background-color:color-mix(in oklab,var(--yv-muted)50%,transparent)}}.yv\\:bg-popover{background-color:var(--yv-popover)}.yv\\:bg-primary{background-color:var(--yv-primary)}.yv\\:bg-transparent{background-color:#0000}.yv\\:fill-primary-foreground{fill:var(--yv-primary-foreground)}.yv\\:p-0{padding:calc(var(--yv-spacing)*0)}.yv\\:p-0\\.5{padding:calc(var(--yv-spacing)*.5)}.yv\\:p-3{padding:calc(var(--yv-spacing)*3)}.yv\\:p-4{padding:calc(var(--yv-spacing)*4)}.yv\\:p-6{padding:calc(var(--yv-spacing)*6)}.yv\\:p-12{padding:calc(var(--yv-spacing)*12)}.yv\\:px-1{padding-inline:calc(var(--yv-spacing)*1)}.yv\\:px-2{padding-inline:calc(var(--yv-spacing)*2)}.yv\\:px-2\\.5{padding-inline:calc(var(--yv-spacing)*2.5)}.yv\\:px-3{padding-inline:calc(var(--yv-spacing)*3)}.yv\\:px-4{padding-inline:calc(var(--yv-spacing)*4)}.yv\\:px-6{padding-inline:calc(var(--yv-spacing)*6)}.yv\\:py-0\\.5{padding-block:calc(var(--yv-spacing)*.5)}.yv\\:py-1{padding-block:calc(var(--yv-spacing)*1)}.yv\\:py-1\\.5{padding-block:calc(var(--yv-spacing)*1.5)}.yv\\:py-2{padding-block:calc(var(--yv-spacing)*2)}.yv\\:py-3{padding-block:calc(var(--yv-spacing)*3)}.yv\\:py-4{padding-block:calc(var(--yv-spacing)*4)}.yv\\:py-8{padding-block:calc(var(--yv-spacing)*8)}.yv\\:py-12{padding-block:calc(var(--yv-spacing)*12)}.yv\\:pt-0{padding-top:calc(var(--yv-spacing)*0)}.yv\\:pt-3{padding-top:calc(var(--yv-spacing)*3)}.yv\\:pr-3{padding-right:calc(var(--yv-spacing)*3)}.yv\\:pb-3{padding-bottom:calc(var(--yv-spacing)*3)}.yv\\:pb-4{padding-bottom:calc(var(--yv-spacing)*4)}.yv\\:pl-3{padding-left:calc(var(--yv-spacing)*3)}.yv\\:pl-9{padding-left:calc(var(--yv-spacing)*9)}.yv\\:text-center{text-align:center}.yv\\:text-left{text-align:left}.yv\\:align-super{vertical-align:super}.yv\\:font-mono{font-family:var(--yv-font-mono)}.yv\\:font-sans{font-family:Inter,sans-serif}.yv\\:font-serif{font-family:Source Serif Pro,serif}.yv\\:font-serif\\!{font-family:Source Serif Pro,serif!important}.yv\\:text-2xl{font-size:var(--yv-text-2xl);line-height:var(--tw-leading,var(--yv-text-2xl--line-height))}.yv\\:text-base{font-size:var(--yv-text-base);line-height:var(--tw-leading,var(--yv-text-base--line-height))}.yv\\:text-sm{font-size:var(--yv-text-sm);line-height:var(--tw-leading,var(--yv-text-sm--line-height))}.yv\\:text-xl{font-size:var(--yv-text-xl);line-height:var(--tw-leading,var(--yv-text-xl--line-height))}.yv\\:text-xs{font-size:var(--yv-text-xs);line-height:var(--tw-leading,var(--yv-text-xs--line-height))}.yv\\:text-\\[0\\.5rem\\]{font-size:.5rem}.yv\\:text-\\[0\\.6em\\]{font-size:.6em}.yv\\:text-\\[0\\.75em\\]{font-size:.75em}.yv\\:text-\\[2\\.5rem\\]{font-size:2.5rem}.yv\\:leading-none{--tw-leading:1;line-height:1}.yv\\:leading-normal{--tw-leading:var(--yv-leading-normal);line-height:var(--yv-leading-normal)}.yv\\:leading-snug{--tw-leading:var(--yv-leading-snug);line-height:var(--yv-leading-snug)}.yv\\:font-bold{--tw-font-weight:var(--yv-font-weight-bold);font-weight:var(--yv-font-weight-bold)}.yv\\:font-medium{--tw-font-weight:var(--yv-font-weight-medium);font-weight:var(--yv-font-weight-medium)}.yv\\:font-normal{--tw-font-weight:var(--yv-font-weight-normal);font-weight:var(--yv-font-weight-normal)}.yv\\:tracking-widest{--tw-tracking:var(--yv-tracking-widest);letter-spacing:var(--yv-tracking-widest)}.yv\\:text-balance{text-wrap:balance}.yv\\:whitespace-nowrap{white-space:nowrap}.yv\\:text-\\(--yv-gray-30\\){color:var(--yv-gray-30)}.yv\\:text-foreground{color:var(--yv-foreground)}.yv\\:text-muted-foreground{color:var(--yv-muted-foreground)}.yv\\:text-popover-foreground{color:var(--yv-popover-foreground)}.yv\\:text-primary{color:var(--yv-primary)}.yv\\:text-primary-foreground{color:var(--yv-primary-foreground)}.yv\\:text-white{color:var(--yv-color-white)}.yv\\:uppercase{text-transform:uppercase}.yv\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.yv\\:underline-offset-4{text-underline-offset:4px}.yv\\:opacity-0{opacity:0}.yv\\:opacity-100{opacity:1}.yv\\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px 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)}.yv\\: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)}.yv\\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -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)}.yv\\:shadow-none{--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)}.yv\\:shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.yv\\:outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.yv\\:outline-hidden{outline-offset:2px;outline:2px solid #0000}}.yv\\:blur-none{--tw-blur: ;filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.yv\\:blur-sm{--tw-blur:blur(var(--yv-blur-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.yv\\:transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}.yv\\:transition-\\[filter\\]{transition-property:filter;transition-timing-function:var(--tw-ease,var(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}.yv\\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}.yv\\: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(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}.yv\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}.yv\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.yv\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.yv\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.yv\\:outline-none{--tw-outline-style:none;outline-style:none}.yv\\:select-none{-webkit-user-select:none;user-select:none}:is(.yv\\:\\*\\:max-w-lg>*){max-width:var(--yv-container-lg)}:is(.yv\\:\\*\\:shrink-0>*){flex-shrink:0}.yv\\:group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:translate-y-0\\.5:is(:where(.yv\\:group\\/item):has([data-slot=item-description]) *){--tw-translate-y:calc(var(--yv-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.yv\\:group-has-\\[\\[data-slot\\=item-description\\]\\]\\/item\\:self-start:is(:where(.yv\\:group\\/item):has([data-slot=item-description]) *){align-self:flex-start}.yv\\:group-has-\\[\\>input\\]\\/input-group\\:pt-2\\.5:is(:where(.yv\\:group\\/input-group):has(>input) *){padding-top:calc(var(--yv-spacing)*2.5)}.yv\\:group-has-\\[\\>input\\]\\/input-group\\:pb-2\\.5:is(:where(.yv\\:group\\/input-group):has(>input) *){padding-bottom:calc(var(--yv-spacing)*2.5)}.yv\\:group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.yv\\:group\\/input-group)[data-disabled=true] *){opacity:.5}.yv\\:selection\\:bg-primary ::selection{background-color:var(--yv-primary)}.yv\\:selection\\:bg-primary::selection{background-color:var(--yv-primary)}.yv\\:selection\\:text-primary-foreground ::selection{color:var(--yv-primary-foreground)}.yv\\:selection\\:text-primary-foreground::selection{color:var(--yv-primary-foreground)}.yv\\:file\\:inline-flex::file-selector-button{display:inline-flex}.yv\\:file\\:h-7::file-selector-button{height:calc(var(--yv-spacing)*7)}.yv\\:file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.yv\\:file\\:bg-transparent::file-selector-button{background-color:#0000}.yv\\:file\\:text-sm::file-selector-button{font-size:var(--yv-text-sm);line-height:var(--tw-leading,var(--yv-text-sm--line-height))}.yv\\:file\\:font-medium::file-selector-button{--tw-font-weight:var(--yv-font-weight-medium);font-weight:var(--yv-font-weight-medium)}.yv\\:file\\:text-foreground::file-selector-button{color:var(--yv-foreground)}.yv\\:placeholder\\:text-muted-foreground::placeholder{color:var(--yv-muted-foreground)}.yv\\:last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.yv\\:hover\\:border-border:hover{border-color:var(--yv-border)}.yv\\:hover\\:bg-accent:hover{background-color:var(--yv-accent)}.yv\\:hover\\:bg-card:hover{background-color:var(--yv-card)}.yv\\:hover\\:bg-destructive\\/90:hover{background-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--yv-destructive)90%,transparent)}}.yv\\:hover\\:bg-muted:hover,.yv\\:hover\\:bg-muted\\/80:hover{background-color:var(--yv-muted)}@supports (color:color-mix(in lab, red, red)){.yv\\:hover\\:bg-muted\\/80:hover{background-color:color-mix(in oklab,var(--yv-muted)80%,transparent)}}.yv\\:hover\\:bg-primary\\/90:hover{background-color:var(--yv-primary)}@supports (color:color-mix(in lab, red, red)){.yv\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--yv-primary)90%,transparent)}}.yv\\:hover\\:text-accent-foreground:hover{color:var(--yv-accent-foreground)}.yv\\:hover\\:underline:hover{text-decoration-line:underline}}.yv\\:focus-visible\\:border-ring:focus-visible{border-color:var(--yv-ring)}.yv\\:focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + 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)}.yv\\:focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + 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)}.yv\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--yv-destructive)20%,transparent)}}.yv\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--yv-ring)}@supports (color:color-mix(in lab, red, red)){.yv\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--yv-ring)50%,transparent)}}.yv\\:focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.yv\\:focus-visible\\:outline-ring:focus-visible{outline-color:var(--yv-ring)}.yv\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.yv\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.yv\\:disabled\\:opacity-50:disabled{opacity:.5}.yv\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--yv-ring)}.yv\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-\\[3px\\]:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + 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)}.yv\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--yv-ring)}@supports (color:color-mix(in lab, red, red)){.yv\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab,var(--yv-ring)50%,transparent)}}.yv\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--yv-destructive)}.yv\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--yv-destructive)20%,transparent)}}.yv\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.yv\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.yv\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.yv\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.yv\\:has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--yv-spacing)*2)}.yv\\:has-\\[\\>button\\]\\:mr-\\[-0\\.45rem\\]:has(>button){margin-right:-.45rem}.yv\\:has-\\[\\>button\\]\\:ml-\\[-0\\.45rem\\]:has(>button){margin-left:-.45rem}.yv\\:has-\\[\\>kbd\\]\\:mr-\\[-0\\.35rem\\]:has(>kbd){margin-right:-.35rem}.yv\\:has-\\[\\>kbd\\]\\:ml-\\[-0\\.35rem\\]:has(>kbd){margin-left:-.35rem}.yv\\:has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(var(--yv-spacing)*0)}.yv\\:has-\\[\\>svg\\]\\:px-2:has(>svg){padding-inline:calc(var(--yv-spacing)*2)}.yv\\:has-\\[\\>svg\\]\\:px-2\\.5:has(>svg){padding-inline:calc(var(--yv-spacing)*2.5)}.yv\\:has-\\[\\>svg\\]\\:px-3:has(>svg){padding-inline:calc(var(--yv-spacing)*3)}.yv\\:has-\\[\\>svg\\]\\:px-4:has(>svg){padding-inline:calc(var(--yv-spacing)*4)}.yv\\:has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.yv\\:aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--yv-destructive)}.yv\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--yv-destructive)20%,transparent)}}.yv\\:data-\\[orientation\\=horizontal\\]\\:h-px[data-orientation=horizontal]{height:1px}.yv\\:data-\\[orientation\\=horizontal\\]\\:w-full[data-orientation=horizontal]{width:100%}.yv\\:data-\\[orientation\\=vertical\\]\\:h-auto[data-orientation=vertical]{height:auto}.yv\\:data-\\[orientation\\=vertical\\]\\:h-full[data-orientation=vertical]{height:100%}.yv\\:data-\\[orientation\\=vertical\\]\\:w-px[data-orientation=vertical]{width:1px}.yv\\:data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.yv\\:data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.yv\\:data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.yv\\:data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.yv\\:data-\\[size\\=default\\]\\:p-4[data-size=default]{padding:calc(var(--yv-spacing)*4)}.yv\\:data-\\[size\\=lg\\]\\:p-8[data-size=lg]{padding:calc(var(--yv-spacing)*8)}.yv\\:data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--yv-background)}.yv\\:data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px 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)}.yv\\:data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.yv\\:data-\\[state\\=closed\\]\\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.yv\\:data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.yv\\:data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.yv\\:data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.yv\\:data-\\[state\\=open\\]\\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.yv\\:data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.yv\\:data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media not all and (min-width:40rem){.yv\\:max-sm\\:px-4{padding-inline:calc(var(--yv-spacing)*4)}}@media (min-width:40rem){.yv\\:sm\\:w-sm{width:var(--yv-container-sm)}}@media (min-width:48rem){.yv\\:md\\:text-sm{font-size:var(--yv-text-sm);line-height:var(--tw-leading,var(--yv-text-sm--line-height))}}.yv\\:dark\\:border-input:is([data-yv-sdk][data-yv-theme=dark] *){border-color:var(--yv-input)}.yv\\:dark\\:bg-destructive\\/60:is([data-yv-sdk][data-yv-theme=dark] *){background-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:bg-destructive\\/60:is([data-yv-sdk][data-yv-theme=dark] *){background-color:color-mix(in oklab,var(--yv-destructive)60%,transparent)}}.yv\\:dark\\:bg-input\\/30:is([data-yv-sdk][data-yv-theme=dark] *){background-color:var(--yv-input)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:bg-input\\/30:is([data-yv-sdk][data-yv-theme=dark] *){background-color:color-mix(in oklab,var(--yv-input)30%,transparent)}}.yv\\:dark\\:bg-transparent:is([data-yv-sdk][data-yv-theme=dark] *){background-color:#0000}.yv\\:dark\\:text-muted-foreground:is([data-yv-sdk][data-yv-theme=dark] *){color:var(--yv-muted-foreground)}@media (hover:hover){.yv\\:dark\\:hover\\:bg-accent\\/50:is([data-yv-sdk][data-yv-theme=dark] *):hover{background-color:var(--yv-accent)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:hover\\:bg-accent\\/50:is([data-yv-sdk][data-yv-theme=dark] *):hover{background-color:color-mix(in oklab,var(--yv-accent)50%,transparent)}}.yv\\:dark\\:hover\\:bg-input\\/50:is([data-yv-sdk][data-yv-theme=dark] *):hover{background-color:var(--yv-input)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:hover\\:bg-input\\/50:is([data-yv-sdk][data-yv-theme=dark] *):hover{background-color:color-mix(in oklab,var(--yv-input)50%,transparent)}}}.yv\\:dark\\:focus-visible\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *):focus-visible{--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:focus-visible\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--yv-destructive)40%,transparent)}}.yv\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab,var(--yv-destructive)40%,transparent)}}.yv\\:dark\\:aria-invalid\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *)[aria-invalid=true]{--tw-ring-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:aria-invalid\\:ring-destructive\\/40:is([data-yv-sdk][data-yv-theme=dark] *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--yv-destructive)40%,transparent)}}.yv\\:dark\\:data-\\[state\\=active\\]\\:border-input:is([data-yv-sdk][data-yv-theme=dark] *)[data-state=active]{border-color:var(--yv-input)}.yv\\:dark\\:data-\\[state\\=active\\]\\:bg-input\\/30:is([data-yv-sdk][data-yv-theme=dark] *)[data-state=active]{background-color:var(--yv-input)}@supports (color:color-mix(in lab, red, red)){.yv\\:dark\\:data-\\[state\\=active\\]\\:bg-input\\/30:is([data-yv-sdk][data-yv-theme=dark] *)[data-state=active]{background-color:color-mix(in oklab,var(--yv-input)30%,transparent)}}.yv\\:dark\\:data-\\[state\\=active\\]\\:text-foreground:is([data-yv-sdk][data-yv-theme=dark] *)[data-state=active]{color:var(--yv-foreground)}.yv\\:\\[\\&_img\\]\\:size-full img{width:100%;height:100%}.yv\\:\\[\\&_img\\]\\:object-cover img{object-fit:cover}.yv\\:\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.yv\\:\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.yv\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(var(--yv-spacing)*4);height:calc(var(--yv-spacing)*4)}.yv\\:\\[\\&\\+\\[data-slot\\=item-content\\]\\]\\:flex-none+[data-slot=item-content]{flex:none}.yv\\:\\[\\.border-b\\]\\:pb-3.border-b{padding-bottom:calc(var(--yv-spacing)*3)}.yv\\:\\[\\.border-t\\]\\:pt-3.border-t{padding-top:calc(var(--yv-spacing)*3)}.yv\\:\\[a\\]\\:transition-colors:is(a){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(--yv-default-transition-timing-function));transition-duration:var(--tw-duration,var(--yv-default-transition-duration))}@media (hover:hover){.yv\\:\\[a\\]\\:hover\\:bg-accent\\/50:is(a):hover{background-color:var(--yv-accent)}@supports (color:color-mix(in lab, red, red)){.yv\\:\\[a\\]\\:hover\\:bg-accent\\/50:is(a):hover{background-color:color-mix(in oklab,var(--yv-accent)50%,transparent)}}}.yv\\:\\[\\&\\>\\*\\]\\:focus-visible\\:relative>:focus-visible{position:relative}.yv\\:\\[\\&\\>\\*\\]\\:focus-visible\\:z-10>:focus-visible{z-index:10}.yv\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.yv\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-l-none>:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.yv\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.yv\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-l-0>:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}.yv\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-r-none>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.yv\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.yv\\:has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-r-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-top-right-radius:calc(var(--yv-radius) - 2px);border-bottom-right-radius:calc(var(--yv-radius) - 2px)}.yv\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=w-\\]\\)\\]\\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.yv\\:\\[\\&\\>a\\]\\:underline>a{text-decoration-line:underline}.yv\\:\\[\\&\\>a\\]\\:underline-offset-4>a{text-underline-offset:4px}.yv\\:\\[\\&\\>a\\:hover\\]\\:text-primary>a:hover{color:var(--yv-primary)}.yv\\:\\[\\&\\>input\\]\\:flex-1>input{flex:1}.yv\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--yv-spacing)*3)}.yv\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--yv-spacing)*3)}.yv\\:has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--yv-spacing)*2)}.yv\\:has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--yv-spacing)*2)}.yv\\:\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]>kbd{border-radius:calc(var(--radius) - 5px)}.yv\\:\\[\\&\\>p\\]\\:inline-block>p{display:inline-block}.yv\\:\\[\\&\\>svg\\]\\:pointer-events-none>svg{pointer-events:none}.yv\\:\\[\\&\\>svg\\]\\:size-3>svg{width:calc(var(--yv-spacing)*3);height:calc(var(--yv-spacing)*3)}.yv\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3\\.5>svg:not([class*=size-]){width:calc(var(--yv-spacing)*3.5);height:calc(var(--yv-spacing)*3.5)}.yv\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>svg:not([class*=size-]){width:calc(var(--yv-spacing)*4);height:calc(var(--yv-spacing)*4)}.yv\\:\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg{rotate:180deg}@media (hover:hover){a.yv\\:\\[a\\&\\]\\:hover\\:bg-accent:hover{background-color:var(--yv-accent)}a.yv\\:\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:var(--yv-destructive)}@supports (color:color-mix(in lab, red, red)){a.yv\\:\\[a\\&\\]\\:hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab,var(--yv-destructive)90%,transparent)}}a.yv\\:\\[a\\&\\]\\:hover\\:bg-muted\\/90:hover{background-color:var(--yv-muted)}@supports (color:color-mix(in lab, red, red)){a.yv\\:\\[a\\&\\]\\:hover\\:bg-muted\\/90:hover{background-color:color-mix(in oklab,var(--yv-muted)90%,transparent)}}a.yv\\:\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:var(--yv-primary)}@supports (color:color-mix(in lab, red, red)){a.yv\\:\\[a\\&\\]\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab,var(--yv-primary)90%,transparent)}}a.yv\\:\\[a\\&\\]\\:hover\\:text-accent-foreground:hover{color:var(--yv-accent-foreground)}}.trim-both{text-box-trim:trim-both}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}[data-slot=yv-bible-renderer]{all:unset;--yv-reader-font-family:var(--font-sans),var(--font-serif);--yv-reader-font-size:20px;--yv-reader-line-height:1.625;-webkit-tap-highlight-color:#0000;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}[data-slot=yv-bible-renderer] *{line-height:var(--yv-reader-line-height);font-family:var(--yv-reader-font-family);font-size:var(--yv-reader-font-size);-webkit-tap-highlight-color:#0000;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;margin:0;padding:0}[data-slot=yv-bible-renderer]{color:var(--yv-foreground)}:is([data-slot=yv-bible-renderer]>*){width:100%;max-width:var(--yv-container-lg)}[data-slot=yv-bible-renderer] .id,[data-slot=yv-bible-renderer] .ide,[data-slot=yv-bible-renderer] .sts,[data-slot=yv-bible-renderer] .rem,[data-slot=yv-bible-renderer] .toc1,[data-slot=yv-bible-renderer] .toc2,[data-slot=yv-bible-renderer] .toc3,[data-slot=yv-bible-renderer] .imte,[data-slot=yv-bible-renderer] .ie,[data-slot=yv-bible-renderer] .mte,[data-slot=yv-bible-renderer] .cl{display:none}[data-slot=yv-bible-renderer] .version{margin-top:1.6em;padding:1.2em}[data-slot=yv-bible-renderer] .chapter>.label{display:none}[data-slot=yv-bible-renderer] .verse>.label,[data-slot=yv-bible-renderer] .fv,[data-slot=yv-bible-renderer] .yv-vlbl{color:var(--yv-muted-foreground);vertical-align:baseline;white-space:nowrap;padding-right:.3em;font-size:.5em;line-height:1em;display:inline;position:relative;top:-.6em}[data-slot=yv-bible-renderer][data-show-verse-numbers=false] .yv-vlbl,[data-slot=yv-bible-renderer] .yv-n{display:none}[data-slot=yv-bible-renderer] .vp{color:var(--yv-gray-20);vertical-align:baseline;font-size:.5em;line-height:1em;display:inline;position:relative;top:-.6em}[data-slot=yv-bible-renderer] .verse>.label+.content,[data-slot=yv-bible-renderer] .yv-vlbl+.content,[data-slot=yv-bible-renderer] .fv+.content{white-space:normal}[data-slot=yv-bible-renderer] .yv-v,[data-slot=yv-bible-renderer] .verse{white-space:nowrap;display:inline}[data-slot=yv-bible-renderer] .imt,[data-slot=yv-bible-renderer] .imt1,[data-slot=yv-bible-renderer] .mt,[data-slot=yv-bible-renderer] .mt1,[data-slot=yv-bible-renderer] .ms,[data-slot=yv-bible-renderer] .ms1{margin:1em 0 0;font-size:1.3em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .iot{margin:.5em 0;font-size:1.3em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .io,[data-slot=yv-bible-renderer] .io1{margin-left:1em;list-style-type:disc;display:list-item}[data-slot=yv-bible-renderer] .io2,[data-slot=yv-bible-renderer] .io3{margin-left:2em;list-style-type:disc;display:list-item}[data-slot=yv-bible-renderer] .ipi{text-indent:1.5em}[data-slot=yv-bible-renderer] .imt2,[data-slot=yv-bible-renderer] .imt3,[data-slot=yv-bible-renderer] .imt4,[data-slot=yv-bible-renderer] .mt2,[data-slot=yv-bible-renderer] .mt3,[data-slot=yv-bible-renderer] .mt4{margin:.5em 0;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .is,[data-slot=yv-bible-renderer] .s,[data-slot=yv-bible-renderer] .s1,[data-slot=yv-bible-renderer] .ms1,[data-slot=yv-bible-renderer] .is1,[data-slot=yv-bible-renderer] .is2{margin:0 0 .5em;font-size:1.1em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .heading{margin:0 0 .5em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .s1 .note .heading,[data-slot=yv-bible-renderer] .s .note .heading{font-size:.67em;font-style:normal;font-weight:400}[data-slot=yv-bible-renderer] .s1 .note_close,[data-slot=yv-bible-renderer] .s .note_close{font-size:.67em}[data-slot=yv-bible-renderer] .s .note,[data-slot=yv-bible-renderer] .is .note,[data-slot=yv-bible-renderer] .s1 .note,[data-slot=yv-bible-renderer] .ms1 .note,[data-slot=yv-bible-renderer] .is1 .note,[data-slot=yv-bible-renderer] .is2 .note,[data-slot=yv-bible-renderer] .mr .note{font-size:.9em}[data-slot=yv-bible-renderer] .note .fr{padding-right:.25em}[data-slot=yv-bible-renderer] .note .fq,[data-slot=yv-bible-renderer] .note .fqa{font-style:italic}[data-slot=yv-bible-renderer] .note .fv{vertical-align:super;font-size:.75em}[data-slot=yv-bible-renderer] .note .fk{font-style:italic;font-weight:700}[data-slot=yv-bible-renderer] .p,[data-slot=yv-bible-renderer] .ip{text-indent:1em;margin-bottom:0}[data-slot=yv-bible-renderer] .pi+.p,[data-slot=yv-bible-renderer] .pi1+.p,[data-slot=yv-bible-renderer] .s+.pi,[data-slot=yv-bible-renderer] .s+.pi1,[data-slot=yv-bible-renderer] .s1+.pi,[data-slot=yv-bible-renderer] .s1+.pi1,[data-slot=yv-bible-renderer] .ms+.p,[data-slot=yv-bible-renderer] .ms1+.p,[data-slot=yv-bible-renderer] .ms2+.p,[data-slot=yv-bible-renderer] .q+.m,[data-slot=yv-bible-renderer] .q1+.m,[data-slot=yv-bible-renderer] .q2+.m,[data-slot=yv-bible-renderer] .q3+.m{text-indent:0;margin-top:.5em}[data-slot=yv-bible-renderer] .label+.p{text-indent:0}[data-slot=yv-bible-renderer] .chapter div:first-child{margin-top:0}[data-slot=yv-bible-renderer] .d+.d{margin-top:-1.25em}[data-slot=yv-bible-renderer] .p+.s,[data-slot=yv-bible-renderer] .p+.s1,[data-slot=yv-bible-renderer] .p+.s2,[data-slot=yv-bible-renderer] .p+.ms,[data-slot=yv-bible-renderer] .p+.ms1,[data-slot=yv-bible-renderer] .p+.ms2,[data-slot=yv-bible-renderer] .p+.q,[data-slot=yv-bible-renderer] .p+.q1,[data-slot=yv-bible-renderer] .p+.li,[data-slot=yv-bible-renderer] .p+.li1,[data-slot=yv-bible-renderer] .li+.li2,[data-slot=yv-bible-renderer] .li1+.li2,[data-slot=yv-bible-renderer] .li2+.li,[data-slot=yv-bible-renderer] .li2+.li1,[data-slot=yv-bible-renderer] .m+.s,[data-slot=yv-bible-renderer] .m+.s1,[data-slot=yv-bible-renderer] .m+.s2,[data-slot=yv-bible-renderer] .q+p,[data-slot=yv-bible-renderer] .q1+.p,[data-slot=yv-bible-renderer] .q2+.p,[data-slot=yv-bible-renderer] .q+.s,[data-slot=yv-bible-renderer] .q+.s1,[data-slot=yv-bible-renderer] .q+.s2,[data-slot=yv-bible-renderer] .q+.ms,[data-slot=yv-bible-renderer] .q+.ms1,[data-slot=yv-bible-renderer] .q+.ms2,[data-slot=yv-bible-renderer] .q1+.s,[data-slot=yv-bible-renderer] .q1+.s1,[data-slot=yv-bible-renderer] .q1+.s2,[data-slot=yv-bible-renderer] .q1+.ms,[data-slot=yv-bible-renderer] .q1+.ms1,[data-slot=yv-bible-renderer] .q1+.ms2,[data-slot=yv-bible-renderer] .q2+.s,[data-slot=yv-bible-renderer] .q2+.s1,[data-slot=yv-bible-renderer] .q2+.s2,[data-slot=yv-bible-renderer] .q2+.ms,[data-slot=yv-bible-renderer] .q2+.m1,[data-slot=yv-bible-renderer] .q2+.m2,[data-slot=yv-bible-renderer] .q3+.s,[data-slot=yv-bible-renderer] .q3+.s1,[data-slot=yv-bible-renderer] .q3+.s2,[data-slot=yv-bible-renderer] .q3+.ms,[data-slot=yv-bible-renderer] .q3+.m1,[data-slot=yv-bible-renderer] .q3+.m2,[data-slot=yv-bible-renderer] .imt+.is,[data-slot=yv-bible-renderer] .imt+.is1,[data-slot=yv-bible-renderer] .imt1+.is,[data-slot=yv-bible-renderer] .imt1+.is1,[data-slot=yv-bible-renderer] .ip+.is,[data-slot=yv-bible-renderer] .ip+.is1,[data-slot=yv-bible-renderer] .io+.is,[data-slot=yv-bible-renderer] .io+.is1,[data-slot=yv-bible-renderer] .io1+.is,[data-slot=yv-bible-renderer] .io1+.is1,[data-slot=yv-bible-renderer] .io2+.is,[data-slot=yv-bible-renderer] .io2+.is1,[data-slot=yv-bible-renderer] .io3+.is,[data-slot=yv-bible-renderer] .io3+.is1,[data-slot=yv-bible-renderer] .ip+.io,[data-slot=yv-bible-renderer] .ip+.io1,[data-slot=yv-bible-renderer] .ip+.io2,[data-slot=yv-bible-renderer] .ip+.io3,[data-slot=yv-bible-renderer] .table+.p,[data-slot=yv-bible-renderer] .p+.table,[data-slot=yv-bible-renderer] .pi1+.s,[data-slot=yv-bible-renderer] .pi+.s{margin-top:1em}[data-slot=yv-bible-renderer] .p+.pm,[data-slot=yv-bible-renderer] .p+.pmo,[data-slot=yv-bible-renderer] .p+.pmc,[data-slot=yv-bible-renderer] .p+.q1,[data-slot=yv-bible-renderer] .p+.q2,[data-slot=yv-bible-renderer] .p+.q3,[data-slot=yv-bible-renderer] .p+.q4,[data-slot=yv-bible-renderer] .p+.qr,[data-slot=yv-bible-renderer] .p+.qm1,[data-slot=yv-bible-renderer] .p+.qm2,[data-slot=yv-bible-renderer] .p+.pmr,[data-slot=yv-bible-renderer] .m+.pm,[data-slot=yv-bible-renderer] .m+.pmo,[data-slot=yv-bible-renderer] .m+.pmc,[data-slot=yv-bible-renderer] .m+.q1,[data-slot=yv-bible-renderer] .m+.q2,[data-slot=yv-bible-renderer] .m+.q3,[data-slot=yv-bible-renderer] .m+.q4,[data-slot=yv-bible-renderer] .m+.qr,[data-slot=yv-bible-renderer] .m+.qm1,[data-slot=yv-bible-renderer] .m+.qm2,[data-slot=yv-bible-renderer] .m+.pmr,[data-slot=yv-bible-renderer] .mi+.pm,[data-slot=yv-bible-renderer] .mi+.pmo,[data-slot=yv-bible-renderer] .mi+.pmc,[data-slot=yv-bible-renderer] .mi+.q1,[data-slot=yv-bible-renderer] .mi+.q2,[data-slot=yv-bible-renderer] .mi+.q3,[data-slot=yv-bible-renderer] .mi+.q4,[data-slot=yv-bible-renderer] .mi+.qr,[data-slot=yv-bible-renderer] .mi+.qm1,[data-slot=yv-bible-renderer] .mi+.qm2,[data-slot=yv-bible-renderer] .mi+.pmr,[data-slot=yv-bible-renderer] .pi1+.pm,[data-slot=yv-bible-renderer] .pi1+.pmo,[data-slot=yv-bible-renderer] .pi1+.pmc,[data-slot=yv-bible-renderer] .pi1+.q1,[data-slot=yv-bible-renderer] .pi1+.q2,[data-slot=yv-bible-renderer] .pi1+.q3,[data-slot=yv-bible-renderer] .pi1+.q4,[data-slot=yv-bible-renderer] .pi1+.qr,[data-slot=yv-bible-renderer] .pi1+.qm1,[data-slot=yv-bible-renderer] .pi1+.qm2,[data-slot=yv-bible-renderer] .pi1+.pmr,[data-slot=yv-bible-renderer] .pi2+.pm,[data-slot=yv-bible-renderer] .pi2+.pmo,[data-slot=yv-bible-renderer] .pi2+.pmc,[data-slot=yv-bible-renderer] .pi2+.q1,[data-slot=yv-bible-renderer] .pi2+.q2,[data-slot=yv-bible-renderer] .pi2+.q3,[data-slot=yv-bible-renderer] .pi2+.q4,[data-slot=yv-bible-renderer] .pi2+.qr,[data-slot=yv-bible-renderer] .pi2+.qm1,[data-slot=yv-bible-renderer] .pi2+.qm2,[data-slot=yv-bible-renderer] .pi2+.pmr,[data-slot=yv-bible-renderer] .pi3+.pm,[data-slot=yv-bible-renderer] .pi3+.pmo,[data-slot=yv-bible-renderer] .pi3+.pmc,[data-slot=yv-bible-renderer] .pi3+.q1,[data-slot=yv-bible-renderer] .pi3+.q2,[data-slot=yv-bible-renderer] .pi3+.q3,[data-slot=yv-bible-renderer] .pi3+.q4,[data-slot=yv-bible-renderer] .pi3+.qr,[data-slot=yv-bible-renderer] .pi3+.qm1,[data-slot=yv-bible-renderer] .pi3+.qm2,[data-slot=yv-bible-renderer] .pi3+.pmr,[data-slot=yv-bible-renderer] .li+.pm,[data-slot=yv-bible-renderer] .li+.pmo,[data-slot=yv-bible-renderer] .li+.pmc,[data-slot=yv-bible-renderer] .li+.q1,[data-slot=yv-bible-renderer] .li+.q2,[data-slot=yv-bible-renderer] .li+.q3,[data-slot=yv-bible-renderer] .li+.q4,[data-slot=yv-bible-renderer] .li+.qr,[data-slot=yv-bible-renderer] .li+.qm1,[data-slot=yv-bible-renderer] .li+.qm2,[data-slot=yv-bible-renderer] .li+.pmr,[data-slot=yv-bible-renderer] .li1+.pm,[data-slot=yv-bible-renderer] .li1+.pmo,[data-slot=yv-bible-renderer] .li1+.pmc,[data-slot=yv-bible-renderer] .li1+.q1,[data-slot=yv-bible-renderer] .li1+.q2,[data-slot=yv-bible-renderer] .li1+.q3,[data-slot=yv-bible-renderer] .li1+.q4,[data-slot=yv-bible-renderer] .li1+.qr,[data-slot=yv-bible-renderer] .li1+.qm1,[data-slot=yv-bible-renderer] .li1+.qm2,[data-slot=yv-bible-renderer] .li1+.pmr,[data-slot=yv-bible-renderer] .li2+.pm,[data-slot=yv-bible-renderer] .li2+.pmo,[data-slot=yv-bible-renderer] .li2+.pmc,[data-slot=yv-bible-renderer] .li2+.q1,[data-slot=yv-bible-renderer] .li2+.q2,[data-slot=yv-bible-renderer] .li2+.q3,[data-slot=yv-bible-renderer] .li2+.q4,[data-slot=yv-bible-renderer] .li2+.qr,[data-slot=yv-bible-renderer] .li2+.qm1,[data-slot=yv-bible-renderer] .li2+.qm2,[data-slot=yv-bible-renderer] .li2+.pmr,[data-slot=yv-bible-renderer] .li3+.pm,[data-slot=yv-bible-renderer] .li3+.pmo,[data-slot=yv-bible-renderer] .li3+.pmc,[data-slot=yv-bible-renderer] .li3+.q1,[data-slot=yv-bible-renderer] .li3+.q2,[data-slot=yv-bible-renderer] .li3+.q3,[data-slot=yv-bible-renderer] .li3+.q4,[data-slot=yv-bible-renderer] .li3+.qr,[data-slot=yv-bible-renderer] .li3+.qm1,[data-slot=yv-bible-renderer] .li3+.qm2,[data-slot=yv-bible-renderer] .li3+.pmr,[data-slot=yv-bible-renderer] .li4+.pm,[data-slot=yv-bible-renderer] .li4+.pmo,[data-slot=yv-bible-renderer] .li4+.pmc,[data-slot=yv-bible-renderer] .li4+.q1,[data-slot=yv-bible-renderer] .li4+.q2,[data-slot=yv-bible-renderer] .li4+.q3,[data-slot=yv-bible-renderer] .li4+.q4,[data-slot=yv-bible-renderer] .li4+.qr,[data-slot=yv-bible-renderer] .li4+.qm1,[data-slot=yv-bible-renderer] .li4+.qm2,[data-slot=yv-bible-renderer] .li4+.pmr,[data-slot=yv-bible-renderer] .lpi+.pm,[data-slot=yv-bible-renderer] .lpi+.pmo,[data-slot=yv-bible-renderer] .lpi+.pmc,[data-slot=yv-bible-renderer] .lpi+.q1,[data-slot=yv-bible-renderer] .lpi+.q2,[data-slot=yv-bible-renderer] .lpi+.q3,[data-slot=yv-bible-renderer] .lpi+.q4,[data-slot=yv-bible-renderer] .lpi+.qr,[data-slot=yv-bible-renderer] .lpi+.qm1,[data-slot=yv-bible-renderer] .lpi+.qm2,[data-slot=yv-bible-renderer] .lpi+.pmr{margin-top:0}[data-slot=yv-bible-renderer] .wj{color:var(--yv-red)}[data-slot=yv-bible-renderer] .nd,[data-slot=yv-bible-renderer] .sc{font-variant:small-caps}[data-slot=yv-bible-renderer] .b{height:1em;line-height:2em;display:block}[data-slot=yv-bible-renderer] .m,[data-slot=yv-bible-renderer] .nb{margin-bottom:calc(var(--yv-reader-font-size)*.5);text-indent:0;display:block}[data-slot=yv-bible-renderer] .q,[data-slot=yv-bible-renderer] .q1{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .q2{text-indent:-1em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .q3{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:3em;display:block}[data-slot=yv-bible-renderer] .q4{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:4em;display:block}[data-slot=yv-bible-renderer] .pi,[data-slot=yv-bible-renderer] .pi1{text-indent:1em;margin-bottom:calc(var(--yv-reader-font-size)*.5);padding-left:0;display:block}[data-slot=yv-bible-renderer] .pi2{text-indent:2em;margin-bottom:calc(var(--yv-reader-font-size)*.5);padding-left:1em;display:block}[data-slot=yv-bible-renderer] .pi3{text-indent:4em;margin-bottom:calc(var(--yv-reader-font-size)*.5);padding-left:3em;display:block}[data-slot=yv-bible-renderer] .mi,[data-slot=yv-bible-renderer] .pm,[data-slot=yv-bible-renderer] .pmo,[data-slot=yv-bible-renderer] .pmc,[data-slot=yv-bible-renderer] .pmr{text-indent:0;margin-bottom:calc(var(--yv-reader-font-size)*.5);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .pr,[data-slot=yv-bible-renderer] .qr{text-align:right;margin-bottom:calc(var(--yv-reader-font-size)*.5);display:block}[data-slot=yv-bible-renderer] .pc,[data-slot=yv-bible-renderer] .qc{font-variant:small-caps;text-align:center;margin-bottom:calc(var(--yv-reader-font-size)*.5);font-weight:700;display:block}[data-slot=yv-bible-renderer] .iq,[data-slot=yv-bible-renderer] .iq1{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .iq2{text-indent:-1em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .iq3{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:3em;display:block}[data-slot=yv-bible-renderer] .iq4{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:4em;display:block}[data-slot=yv-bible-renderer] .qm,[data-slot=yv-bible-renderer] .qm1{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .qm2{text-indent:-1em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:2em;display:block}[data-slot=yv-bible-renderer] .qm3{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:3em;display:block}[data-slot=yv-bible-renderer] .qm4{text-indent:-2em;margin-bottom:calc(var(--yv-reader-font-size)*.3);padding-left:4em;display:block}[data-slot=yv-bible-renderer] .add,[data-slot=yv-bible-renderer] .it,[data-slot=yv-bible-renderer] .tl,[data-slot=yv-bible-renderer] .qt{font-style:italic}[data-slot=yv-bible-renderer] .qs{text-align:right;margin-top:calc(var(--yv-reader-font-size)*.5);margin-bottom:calc(var(--yv-reader-font-size)*.5);font-style:italic;display:block}[data-slot=yv-bible-renderer] .s2{margin:0 0 .5em;font-size:1em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .s3,[data-slot=yv-bible-renderer] .s4{margin:0 0 .5em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .ms2{margin:.5em 0;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .r,[data-slot=yv-bible-renderer] .sp,[data-slot=yv-bible-renderer] .sr{margin:0 0 .5em;font-style:italic;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .qa{margin:0 0 .5em;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .d{margin:.5em 0;font-style:italic;font-weight:700;line-height:1.8em;display:block}[data-slot=yv-bible-renderer] .li,[data-slot=yv-bible-renderer] .li1{margin-left:1em;list-style-type:disc;display:list-item}[data-slot=yv-bible-renderer] .li2{margin-left:2em;list-style-type:disc;display:list-item}[data-slot=yv-bible-renderer] .li3,[data-slot=yv-bible-renderer] .li4{list-style-type:disc;display:list-item}[data-slot=yv-bible-renderer] br{line-height:inherit}[data-slot=yv-bible-renderer] .content{display:inline}[data-slot=yv-bible-renderer] .footnote,[data-slot=yv-bible-renderer] .crossref{vertical-align:super;white-space:nowrap;font-size:.6em;line-height:0}[data-slot=yv-bible-renderer] .sub,[data-slot=yv-bible-renderer] .sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}[data-slot=yv-bible-renderer] .sup{top:-.25em}[data-slot=yv-bible-renderer] .sub{bottom:-.1em}[data-slot=yv-bible-renderer] table{background:var(--yv-background);border:1px solid var(--yv-border);width:100%;margin-bottom:calc(var(--yv-reader-font-size)*1);margin-top:calc(var(--yv-reader-font-size)*.75);table-layout:auto;font-size:inherit;border-collapse:separate;border-spacing:0;border-radius:.5rem;line-height:normal;overflow:hidden}[data-slot=yv-bible-renderer] table tr:nth-child(odd){background-color:var(--yv-card)}[data-slot=yv-bible-renderer] table td,[data-slot=yv-bible-renderer] .tc{text-align:inherit;vertical-align:top;padding:.25em}[data-slot=yv-bible-renderer] table td:not(:last-child),[data-slot=yv-bible-renderer] table th:not(:last-child){border-right:1px solid var(--yv-border)}[data-slot=yv-bible-renderer] table tr:not(:last-child) td,[data-slot=yv-bible-renderer] table tr:not(:last-child) th{border-bottom:1px solid var(--yv-border)}[data-slot=yv-bible-renderer] table td[colspan],[data-slot=yv-bible-renderer] table th[colspan]{border-right:none}[data-slot=yv-bible-renderer] table th,[data-slot=yv-bible-renderer] .th,[data-slot=yv-bible-renderer] .th1{background:var(--yv-foreground);color:var(--yv-primary-foreground);vertical-align:top;padding:.25em;font-weight:700}[data-slot=yv-bible-renderer] .tcr,[data-slot=yv-bible-renderer] .tcr1{text-align:right;vertical-align:top;padding:.25em}[data-slot=yv-bible-renderer] .thr,[data-slot=yv-bible-renderer] .thr1{background:var(--yv-foreground);color:var(--yv-primary-foreground);text-align:right;vertical-align:top;padding:.25em;font-weight:700}[data-slot=yv-bible-renderer][dir=rtl]{text-align:right;direction:rtl}[data-slot=yv-bible-renderer][dir=rtl] .p,[data-slot=yv-bible-renderer][dir=rtl] .m{text-align:right}[data-yv-sdk]{--yv-red:oklch(64% .22 15);--yv-red-dark-mode:oklch(68% .19 15);--yv-warm-neutral:oklch(96% .005 20);--yv-warm-neutral-dm:oklch(25% .005 20);--yv-teal-10:oklch(95% .01 195);--yv-teal-20:oklch(78% .01 180);--yv-teal-30-dm:oklch(58% .08 195);--yv-teal-30:oklch(52% .06 195);--yv-teal-40:oklch(35% .04 195);--yv-teal-50:oklch(18% .02 195);--yv-blue-10:oklch(96% .02 240);--yv-blue-20:oklch(78% .04 240);--yv-blue-30-dm:oklch(62% .12 240);--yv-blue-30:oklch(58% .08 240);--yv-blue-40:oklch(38% .06 240);--yv-blue-50:oklch(22% .04 240);--yv-purple-10:oklch(94% .02 320);--yv-purple-20:oklch(76% .04 320);--yv-purple-30-dm:oklch(52% .08 320);--yv-purple-30:oklch(48% .06 320);--yv-purple-40:oklch(32% .04 320);--yv-purple-50:oklch(18% .02 320);--yv-magenta-10:oklch(94% .04 15);--yv-magenta-20:oklch(76% .06 15);--yv-magenta-30-dm:oklch(52% .12 15);--yv-magenta-30:oklch(48% .08 15);--yv-magenta-40:oklch(28% .06 15);--yv-magenta-50:oklch(14% .04 15);--yv-orange-10:oklch(93% .04 45);--yv-orange-20:oklch(76% .06 45);--yv-orange-30-dm:oklch(62% .12 45);--yv-orange-30:oklch(58% .08 45);--yv-orange-40:oklch(38% .06 45);--yv-orange-50:oklch(22% .04 45);--yv-yellow-10:oklch(96% .04 90);--yv-yellow-20:oklch(84% .06 90);--yv-yellow-30-dm:oklch(68% .12 90);--yv-yellow-30:oklch(68% .08 90);--yv-yellow-40:oklch(52% .08 90);--yv-yellow-50:oklch(32% .06 90);--yv-green-10:oklch(93% .02 150);--yv-green-20:oklch(78% .04 150);--yv-green-30-dm:oklch(58% .08 150);--yv-green-30:oklch(54% .06 150);--yv-green-40:oklch(36% .04 150);--yv-green-50:oklch(18% .02 150);--yv-white:oklch(100% 0 0);--yv-gray-2:oklch(98.8% .001 17.2);--yv-gray-5:oklch(96.5% .001 17.2);--yv-gray-10:oklch(92.5% .001 17.2);--yv-gray-15:oklch(89.3% .0022 17.2);--yv-gray-20:oklch(78.8% .001 17.2);--yv-gray-25:oklch(58.8% .001 17.2);--yv-gray-30:oklch(47.8% .001 17.2);--yv-gray-35:oklch(37.8% .001 17.2);--yv-gray-40:oklch(29.8% .001 17.2);--yv-gray-45:oklch(21.8% .001 17.2);--yv-gray-48:oklch(17.8% .001 17.2);--yv-gray-50:oklch(13.8% .001 17.2);--yv-background:var(--yv-white);--yv-foreground:var(--yv-gray-50);--yv-card:var(--yv-gray-2);--yv-card-foreground:var(--yv-gray-50);--yv-popover:var(--yv-white);--yv-popover-foreground:var(--yv-gray-50);--yv-primary:var(--yv-gray-50);--yv-primary-foreground:var(--yv-white);--yv-secondary:var(--yv-warm-neutral);--yv-secondary-foreground:var(--yv-gray-50);--yv-muted:var(--yv-gray-5);--yv-muted-foreground:var(--yv-gray-30);--yv-accent:var(--yv-gray-5);--yv-accent-foreground:var(--yv-gray-50);--yv-destructive:var(--yv-red);--yv-destructive-foreground:var(--yv-white);--yv-border:var(--yv-gray-15);--yv-input:var(--yv-gray-5);--yv-ring:var(--yv-blue-30);--yv-chart-1:var(--yv-blue-30);--yv-chart-2:var(--yv-green-30);--yv-chart-3:var(--yv-purple-30);--yv-chart-4:var(--yv-orange-30);--yv-chart-5:var(--yv-magenta-30);--yv-radius:2rem;--yv-sidebar:var(--yv-gray-2);--yv-sidebar-foreground:var(--yv-gray-50);--yv-sidebar-primary:var(--yv-teal-30);--yv-sidebar-primary-foreground:var(--yv-white);--yv-sidebar-accent:var(--yv-gray-5);--yv-sidebar-accent-foreground:var(--yv-gray-50);--yv-sidebar-border:var(--yv-gray-15);--yv-sidebar-ring:var(--yv-blue-30)}[data-yv-sdk][data-yv-theme=dark]{--yv-red:oklch(68% .19 15);--yv-red-dark-mode:oklch(64% .22 15);--yv-warm-neutral:oklch(25% .005 20);--yv-warm-neutral-dm:oklch(96% .005 20);--yv-background:var(--yv-gray-50);--yv-foreground:var(--yv-white);--yv-card:var(--yv-gray-45);--yv-card-foreground:var(--yv-white);--yv-popover:var(--yv-gray-48);--yv-popover-foreground:var(--yv-white);--yv-primary:var(--yv-red-dark-mode);--yv-primary-foreground:var(--yv-white);--yv-secondary:var(--yv-warm-neutral-dm);--yv-secondary-foreground:var(--yv-white);--yv-muted:var(--yv-gray-40);--yv-muted-foreground:var(--yv-gray-10);--yv-accent:var(--yv-gray-30);--yv-accent-foreground:var(--yv-gray-2);--yv-destructive:var(--yv-red);--yv-destructive-foreground:var(--yv-white);--yv-border:var(--yv-gray-35);--yv-input:var(--yv-gray-40);--yv-ring:var(--yv-blue-30-dm);--yv-chart-1:var(--yv-blue-30-dm);--yv-chart-2:var(--yv-green-30-dm);--yv-chart-3:var(--yv-purple-30-dm);--yv-chart-4:var(--yv-orange-30-dm);--yv-chart-5:var(--yv-magenta-30-dm);--yv-sidebar:var(--yv-gray-48);--yv-sidebar-foreground:var(--yv-white);--yv-sidebar-primary:var(--yv-teal-30-dm);--yv-sidebar-primary-foreground:var(--yv-white);--yv-sidebar-accent:var(--yv-gray-40);--yv-sidebar-accent-foreground:var(--yv-white);--yv-sidebar-border:var(--yv-gray-35);--yv-sidebar-ring:var(--yv-blue-30-dm)}@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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@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-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}to{height:0}}';
|
|
17
|
+
document.head.appendChild(style);
|
|
18
|
+
}
|
|
19
|
+
|
|
9
20
|
// src/components/bible-chapter-picker.tsx
|
|
10
21
|
import {
|
|
11
22
|
createContext,
|
|
@@ -519,12 +530,12 @@ var NEVER = Object.freeze({
|
|
|
519
530
|
// @__NO_SIDE_EFFECTS__
|
|
520
531
|
function $constructor(name, initializer3, params) {
|
|
521
532
|
function init(inst, def) {
|
|
522
|
-
var
|
|
533
|
+
var _a2;
|
|
523
534
|
Object.defineProperty(inst, "_zod", {
|
|
524
535
|
value: inst._zod ?? {},
|
|
525
536
|
enumerable: false
|
|
526
537
|
});
|
|
527
|
-
(
|
|
538
|
+
(_a2 = inst._zod).traits ?? (_a2.traits = /* @__PURE__ */ new Set());
|
|
528
539
|
inst._zod.traits.add(name);
|
|
529
540
|
initializer3(inst, def);
|
|
530
541
|
for (const k in _.prototype) {
|
|
@@ -539,10 +550,10 @@ function $constructor(name, initializer3, params) {
|
|
|
539
550
|
}
|
|
540
551
|
Object.defineProperty(Definition, "name", { value: name });
|
|
541
552
|
function _(def) {
|
|
542
|
-
var
|
|
553
|
+
var _a2;
|
|
543
554
|
const inst = params?.Parent ? new Definition() : this;
|
|
544
555
|
init(inst, def);
|
|
545
|
-
(
|
|
556
|
+
(_a2 = inst._zod).deferred ?? (_a2.deferred = []);
|
|
546
557
|
for (const fn of inst._zod.deferred) {
|
|
547
558
|
fn();
|
|
548
559
|
}
|
|
@@ -1115,8 +1126,8 @@ function aborted(x, startIndex = 0) {
|
|
|
1115
1126
|
}
|
|
1116
1127
|
function prefixIssues(path, issues) {
|
|
1117
1128
|
return issues.map((iss) => {
|
|
1118
|
-
var
|
|
1119
|
-
(
|
|
1129
|
+
var _a2;
|
|
1130
|
+
(_a2 = iss).path ?? (_a2.path = []);
|
|
1120
1131
|
iss.path.unshift(path);
|
|
1121
1132
|
return iss;
|
|
1122
1133
|
});
|
|
@@ -1280,7 +1291,7 @@ function formatError(error46, mapper = (issue2) => issue2.message) {
|
|
|
1280
1291
|
function treeifyError(error46, mapper = (issue2) => issue2.message) {
|
|
1281
1292
|
const result = { errors: [] };
|
|
1282
1293
|
const processError = (error47, path = []) => {
|
|
1283
|
-
var
|
|
1294
|
+
var _a2, _b;
|
|
1284
1295
|
for (const issue2 of error47.issues) {
|
|
1285
1296
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
1286
1297
|
issue2.errors.map((issues) => processError({ issues }, issue2.path));
|
|
@@ -1301,7 +1312,7 @@ function treeifyError(error46, mapper = (issue2) => issue2.message) {
|
|
|
1301
1312
|
const terminal = i === fullpath.length - 1;
|
|
1302
1313
|
if (typeof el === "string") {
|
|
1303
1314
|
curr.properties ?? (curr.properties = {});
|
|
1304
|
-
(
|
|
1315
|
+
(_a2 = curr.properties)[el] ?? (_a2[el] = { errors: [] });
|
|
1305
1316
|
curr = curr.properties[el];
|
|
1306
1317
|
} else {
|
|
1307
1318
|
curr.items ?? (curr.items = []);
|
|
@@ -1590,10 +1601,10 @@ var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
|
|
|
1590
1601
|
|
|
1591
1602
|
// ../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/checks.js
|
|
1592
1603
|
var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
|
|
1593
|
-
var
|
|
1604
|
+
var _a2;
|
|
1594
1605
|
inst._zod ?? (inst._zod = {});
|
|
1595
1606
|
inst._zod.def = def;
|
|
1596
|
-
(
|
|
1607
|
+
(_a2 = inst._zod).onattach ?? (_a2.onattach = []);
|
|
1597
1608
|
});
|
|
1598
1609
|
var numericOriginMap = {
|
|
1599
1610
|
number: "number",
|
|
@@ -1659,8 +1670,8 @@ var $ZodCheckGreaterThan = /* @__PURE__ */ $constructor("$ZodCheckGreaterThan",
|
|
|
1659
1670
|
var $ZodCheckMultipleOf = /* @__PURE__ */ $constructor("$ZodCheckMultipleOf", (inst, def) => {
|
|
1660
1671
|
$ZodCheck.init(inst, def);
|
|
1661
1672
|
inst._zod.onattach.push((inst2) => {
|
|
1662
|
-
var
|
|
1663
|
-
(
|
|
1673
|
+
var _a2;
|
|
1674
|
+
(_a2 = inst2._zod.bag).multipleOf ?? (_a2.multipleOf = def.value);
|
|
1664
1675
|
});
|
|
1665
1676
|
inst._zod.check = (payload) => {
|
|
1666
1677
|
if (typeof payload.value !== typeof def.value)
|
|
@@ -1787,9 +1798,9 @@ var $ZodCheckBigIntFormat = /* @__PURE__ */ $constructor("$ZodCheckBigIntFormat"
|
|
|
1787
1798
|
};
|
|
1788
1799
|
});
|
|
1789
1800
|
var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, def) => {
|
|
1790
|
-
var
|
|
1801
|
+
var _a2;
|
|
1791
1802
|
$ZodCheck.init(inst, def);
|
|
1792
|
-
(
|
|
1803
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1793
1804
|
const val = payload.value;
|
|
1794
1805
|
return !nullish(val) && val.size !== void 0;
|
|
1795
1806
|
});
|
|
@@ -1815,9 +1826,9 @@ var $ZodCheckMaxSize = /* @__PURE__ */ $constructor("$ZodCheckMaxSize", (inst, d
|
|
|
1815
1826
|
};
|
|
1816
1827
|
});
|
|
1817
1828
|
var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, def) => {
|
|
1818
|
-
var
|
|
1829
|
+
var _a2;
|
|
1819
1830
|
$ZodCheck.init(inst, def);
|
|
1820
|
-
(
|
|
1831
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1821
1832
|
const val = payload.value;
|
|
1822
1833
|
return !nullish(val) && val.size !== void 0;
|
|
1823
1834
|
});
|
|
@@ -1843,9 +1854,9 @@ var $ZodCheckMinSize = /* @__PURE__ */ $constructor("$ZodCheckMinSize", (inst, d
|
|
|
1843
1854
|
};
|
|
1844
1855
|
});
|
|
1845
1856
|
var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (inst, def) => {
|
|
1846
|
-
var
|
|
1857
|
+
var _a2;
|
|
1847
1858
|
$ZodCheck.init(inst, def);
|
|
1848
|
-
(
|
|
1859
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1849
1860
|
const val = payload.value;
|
|
1850
1861
|
return !nullish(val) && val.size !== void 0;
|
|
1851
1862
|
});
|
|
@@ -1873,9 +1884,9 @@ var $ZodCheckSizeEquals = /* @__PURE__ */ $constructor("$ZodCheckSizeEquals", (i
|
|
|
1873
1884
|
};
|
|
1874
1885
|
});
|
|
1875
1886
|
var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (inst, def) => {
|
|
1876
|
-
var
|
|
1887
|
+
var _a2;
|
|
1877
1888
|
$ZodCheck.init(inst, def);
|
|
1878
|
-
(
|
|
1889
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1879
1890
|
const val = payload.value;
|
|
1880
1891
|
return !nullish(val) && val.length !== void 0;
|
|
1881
1892
|
});
|
|
@@ -1902,9 +1913,9 @@ var $ZodCheckMaxLength = /* @__PURE__ */ $constructor("$ZodCheckMaxLength", (ins
|
|
|
1902
1913
|
};
|
|
1903
1914
|
});
|
|
1904
1915
|
var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (inst, def) => {
|
|
1905
|
-
var
|
|
1916
|
+
var _a2;
|
|
1906
1917
|
$ZodCheck.init(inst, def);
|
|
1907
|
-
(
|
|
1918
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1908
1919
|
const val = payload.value;
|
|
1909
1920
|
return !nullish(val) && val.length !== void 0;
|
|
1910
1921
|
});
|
|
@@ -1931,9 +1942,9 @@ var $ZodCheckMinLength = /* @__PURE__ */ $constructor("$ZodCheckMinLength", (ins
|
|
|
1931
1942
|
};
|
|
1932
1943
|
});
|
|
1933
1944
|
var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals", (inst, def) => {
|
|
1934
|
-
var
|
|
1945
|
+
var _a2;
|
|
1935
1946
|
$ZodCheck.init(inst, def);
|
|
1936
|
-
(
|
|
1947
|
+
(_a2 = inst._zod.def).when ?? (_a2.when = (payload) => {
|
|
1937
1948
|
const val = payload.value;
|
|
1938
1949
|
return !nullish(val) && val.length !== void 0;
|
|
1939
1950
|
});
|
|
@@ -1962,7 +1973,7 @@ var $ZodCheckLengthEquals = /* @__PURE__ */ $constructor("$ZodCheckLengthEquals"
|
|
|
1962
1973
|
};
|
|
1963
1974
|
});
|
|
1964
1975
|
var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat", (inst, def) => {
|
|
1965
|
-
var
|
|
1976
|
+
var _a2, _b;
|
|
1966
1977
|
$ZodCheck.init(inst, def);
|
|
1967
1978
|
inst._zod.onattach.push((inst2) => {
|
|
1968
1979
|
const bag = inst2._zod.bag;
|
|
@@ -1973,7 +1984,7 @@ var $ZodCheckStringFormat = /* @__PURE__ */ $constructor("$ZodCheckStringFormat"
|
|
|
1973
1984
|
}
|
|
1974
1985
|
});
|
|
1975
1986
|
if (def.pattern)
|
|
1976
|
-
(
|
|
1987
|
+
(_a2 = inst._zod).check ?? (_a2.check = (payload) => {
|
|
1977
1988
|
def.pattern.lastIndex = 0;
|
|
1978
1989
|
if (def.pattern.test(payload.value))
|
|
1979
1990
|
return;
|
|
@@ -2175,7 +2186,7 @@ var version = {
|
|
|
2175
2186
|
|
|
2176
2187
|
// ../../node_modules/.pnpm/zod@4.1.12/node_modules/zod/v4/core/schemas.js
|
|
2177
2188
|
var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
2178
|
-
var
|
|
2189
|
+
var _a2;
|
|
2179
2190
|
inst ?? (inst = {});
|
|
2180
2191
|
inst._zod.def = def;
|
|
2181
2192
|
inst._zod.bag = inst._zod.bag || {};
|
|
@@ -2190,7 +2201,7 @@ var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
|
2190
2201
|
}
|
|
2191
2202
|
}
|
|
2192
2203
|
if (checks.length === 0) {
|
|
2193
|
-
(
|
|
2204
|
+
(_a2 = inst._zod).deferred ?? (_a2.deferred = []);
|
|
2194
2205
|
inst._zod.deferred?.push(() => {
|
|
2195
2206
|
inst._zod.run = inst._zod.parse;
|
|
2196
2207
|
});
|
|
@@ -10631,7 +10642,7 @@ var JSONSchemaGenerator = class {
|
|
|
10631
10642
|
this.seen = /* @__PURE__ */ new Map();
|
|
10632
10643
|
}
|
|
10633
10644
|
process(schema, _params = { path: [], schemaPath: [] }) {
|
|
10634
|
-
var
|
|
10645
|
+
var _a2;
|
|
10635
10646
|
const def = schema._zod.def;
|
|
10636
10647
|
const formatMap = {
|
|
10637
10648
|
guid: "uuid",
|
|
@@ -11140,7 +11151,7 @@ var JSONSchemaGenerator = class {
|
|
|
11140
11151
|
delete result.schema.default;
|
|
11141
11152
|
}
|
|
11142
11153
|
if (this.io === "input" && result.schema._prefault)
|
|
11143
|
-
(
|
|
11154
|
+
(_a2 = result.schema).default ?? (_a2.default = result.schema._prefault);
|
|
11144
11155
|
delete result.schema._prefault;
|
|
11145
11156
|
const _result = this.seen.get(schema);
|
|
11146
11157
|
return _result.schema;
|
|
@@ -12963,6 +12974,44 @@ var YouVersionPlatformConfiguration = (_a = class {
|
|
|
12963
12974
|
localStorage.setItem("x-yvp-installation-id", newId);
|
|
12964
12975
|
return newId;
|
|
12965
12976
|
}
|
|
12977
|
+
static saveAuthData(accessToken, refreshToken, idToken, expiryDate) {
|
|
12978
|
+
if (accessToken !== null) {
|
|
12979
|
+
localStorage.setItem("accessToken", accessToken);
|
|
12980
|
+
} else {
|
|
12981
|
+
localStorage.removeItem("accessToken");
|
|
12982
|
+
}
|
|
12983
|
+
if (refreshToken !== null) {
|
|
12984
|
+
localStorage.setItem("refreshToken", refreshToken);
|
|
12985
|
+
} else {
|
|
12986
|
+
localStorage.removeItem("refreshToken");
|
|
12987
|
+
}
|
|
12988
|
+
if (idToken !== null) {
|
|
12989
|
+
localStorage.setItem("idToken", idToken);
|
|
12990
|
+
} else {
|
|
12991
|
+
localStorage.removeItem("idToken");
|
|
12992
|
+
}
|
|
12993
|
+
if (expiryDate !== null) {
|
|
12994
|
+
localStorage.setItem("expiryDate", expiryDate.toISOString());
|
|
12995
|
+
} else {
|
|
12996
|
+
localStorage.removeItem("expiryDate");
|
|
12997
|
+
}
|
|
12998
|
+
}
|
|
12999
|
+
static clearAuthTokens() {
|
|
13000
|
+
this.saveAuthData(null, null, null, null);
|
|
13001
|
+
}
|
|
13002
|
+
static get accessToken() {
|
|
13003
|
+
return localStorage.getItem("accessToken");
|
|
13004
|
+
}
|
|
13005
|
+
static get refreshToken() {
|
|
13006
|
+
return localStorage.getItem("refreshToken");
|
|
13007
|
+
}
|
|
13008
|
+
static get idToken() {
|
|
13009
|
+
return localStorage.getItem("idToken");
|
|
13010
|
+
}
|
|
13011
|
+
static get tokenExpiryDate() {
|
|
13012
|
+
const dateString = localStorage.getItem("expiryDate");
|
|
13013
|
+
return dateString ? new Date(dateString) : null;
|
|
13014
|
+
}
|
|
12966
13015
|
static get appKey() {
|
|
12967
13016
|
return this._appKey;
|
|
12968
13017
|
}
|
|
@@ -12978,34 +13027,25 @@ var YouVersionPlatformConfiguration = (_a = class {
|
|
|
12978
13027
|
static set installationId(value) {
|
|
12979
13028
|
this._installationId = value || this.getOrSetInstallationId();
|
|
12980
13029
|
}
|
|
12981
|
-
static setAccessToken(token) {
|
|
12982
|
-
if (token !== null && (typeof token !== "string" || token.trim().length === 0)) {
|
|
12983
|
-
throw new Error("Access token must be a non-empty string or null");
|
|
12984
|
-
}
|
|
12985
|
-
this._accessToken = token;
|
|
12986
|
-
}
|
|
12987
|
-
static get accessToken() {
|
|
12988
|
-
return this._accessToken;
|
|
12989
|
-
}
|
|
12990
13030
|
static get apiHost() {
|
|
12991
13031
|
return this._apiHost;
|
|
12992
13032
|
}
|
|
12993
13033
|
static set apiHost(value) {
|
|
12994
13034
|
this._apiHost = value;
|
|
12995
13035
|
}
|
|
12996
|
-
static get
|
|
12997
|
-
return this.
|
|
13036
|
+
static get refreshTokenKey() {
|
|
13037
|
+
return this._refreshTokenKey;
|
|
12998
13038
|
}
|
|
12999
|
-
static set
|
|
13000
|
-
this.
|
|
13039
|
+
static set refreshTokenKey(value) {
|
|
13040
|
+
this._refreshTokenKey = value;
|
|
13001
13041
|
}
|
|
13002
|
-
static get
|
|
13003
|
-
return this.
|
|
13042
|
+
static get expiryDateKey() {
|
|
13043
|
+
return this._expiryDateKey;
|
|
13004
13044
|
}
|
|
13005
|
-
static set
|
|
13006
|
-
this.
|
|
13045
|
+
static set expiryDateKey(value) {
|
|
13046
|
+
this._expiryDateKey = value;
|
|
13007
13047
|
}
|
|
13008
|
-
}, __publicField(_a, "_appKey", null), __publicField(_a, "_installationId", null), __publicField(_a, "
|
|
13048
|
+
}, __publicField(_a, "_appKey", null), __publicField(_a, "_installationId", null), __publicField(_a, "_apiHost", "api.youversion.com"), __publicField(_a, "_refreshTokenKey", null), __publicField(_a, "_expiryDateKey", null), _a);
|
|
13009
13049
|
var HighlightsClient = class {
|
|
13010
13050
|
/**
|
|
13011
13051
|
* Creates a new HighlightsClient instance.
|
|
@@ -13125,74 +13165,6 @@ var HighlightsClient = class {
|
|
|
13125
13165
|
await this.client.delete(`/v1/highlights/${passageId}`, params);
|
|
13126
13166
|
}
|
|
13127
13167
|
};
|
|
13128
|
-
var AuthClient = class {
|
|
13129
|
-
/**
|
|
13130
|
-
* Creates an instance of AuthClient.
|
|
13131
|
-
* @param client - The ApiClient instance to use for requests.
|
|
13132
|
-
*/
|
|
13133
|
-
constructor(client) {
|
|
13134
|
-
__publicField(this, "client");
|
|
13135
|
-
this.client = client;
|
|
13136
|
-
}
|
|
13137
|
-
/**
|
|
13138
|
-
* Retrieves the current authenticated user.
|
|
13139
|
-
*
|
|
13140
|
-
* @param lat - The long access token (LAT) used for authentication.
|
|
13141
|
-
* @returns A promise that resolves to the authenticated User.
|
|
13142
|
-
*/
|
|
13143
|
-
async getUser(lat) {
|
|
13144
|
-
return this.client.get(`/auth/me`, { lat });
|
|
13145
|
-
}
|
|
13146
|
-
};
|
|
13147
|
-
var _a2;
|
|
13148
|
-
var AuthenticationStrategyRegistry = (_a2 = class {
|
|
13149
|
-
/**
|
|
13150
|
-
* Registers a platform-specific authentication strategy
|
|
13151
|
-
*
|
|
13152
|
-
* @param strategy - The authentication strategy to register
|
|
13153
|
-
* @throws Error if strategy is null, undefined, or missing required methods
|
|
13154
|
-
*/
|
|
13155
|
-
static register(strategy) {
|
|
13156
|
-
if (!strategy) {
|
|
13157
|
-
throw new Error("Authentication strategy cannot be null or undefined");
|
|
13158
|
-
}
|
|
13159
|
-
if (typeof strategy.authenticate !== "function") {
|
|
13160
|
-
throw new Error("Authentication strategy must implement authenticate method");
|
|
13161
|
-
}
|
|
13162
|
-
this.strategy = strategy;
|
|
13163
|
-
}
|
|
13164
|
-
/**
|
|
13165
|
-
* Gets the currently registered authentication strategy
|
|
13166
|
-
*
|
|
13167
|
-
* @returns The registered authentication strategy
|
|
13168
|
-
* @throws Error if no strategy has been registered
|
|
13169
|
-
*/
|
|
13170
|
-
static get() {
|
|
13171
|
-
if (!this.strategy) {
|
|
13172
|
-
throw new Error(
|
|
13173
|
-
"No authentication strategy registered. Please register a platform-specific strategy using AuthenticationStrategyRegistry.register()"
|
|
13174
|
-
);
|
|
13175
|
-
}
|
|
13176
|
-
return this.strategy;
|
|
13177
|
-
}
|
|
13178
|
-
/**
|
|
13179
|
-
* Checks if a strategy is currently registered
|
|
13180
|
-
*
|
|
13181
|
-
* @returns true if a strategy is registered, false otherwise
|
|
13182
|
-
*/
|
|
13183
|
-
static isRegistered() {
|
|
13184
|
-
return this.strategy !== null;
|
|
13185
|
-
}
|
|
13186
|
-
/**
|
|
13187
|
-
* Resets the registry by removing the current strategy
|
|
13188
|
-
*
|
|
13189
|
-
* This method is primarily intended for testing scenarios
|
|
13190
|
-
* where you need to clean up between test cases.
|
|
13191
|
-
*/
|
|
13192
|
-
static reset() {
|
|
13193
|
-
this.strategy = null;
|
|
13194
|
-
}
|
|
13195
|
-
}, __publicField(_a2, "strategy", null), _a2);
|
|
13196
13168
|
var SessionStorageStrategy = class {
|
|
13197
13169
|
setItem(key, value) {
|
|
13198
13170
|
if (typeof sessionStorage === "undefined") {
|
|
@@ -13237,94 +13209,120 @@ var MemoryStorageStrategy = class {
|
|
|
13237
13209
|
this.store.clear();
|
|
13238
13210
|
}
|
|
13239
13211
|
};
|
|
13240
|
-
var
|
|
13241
|
-
|
|
13242
|
-
|
|
13243
|
-
__publicField(this, "
|
|
13244
|
-
__publicField(this, "
|
|
13245
|
-
__publicField(this, "
|
|
13246
|
-
|
|
13247
|
-
|
|
13248
|
-
|
|
13249
|
-
this.
|
|
13250
|
-
this.
|
|
13251
|
-
|
|
13252
|
-
|
|
13253
|
-
authUrl.searchParams.set("redirect_uri", this.redirectUri);
|
|
13254
|
-
return this.authenticateWithRedirect(authUrl);
|
|
13212
|
+
var YouVersionUserInfo = class {
|
|
13213
|
+
constructor(data) {
|
|
13214
|
+
__publicField(this, "name");
|
|
13215
|
+
__publicField(this, "userId");
|
|
13216
|
+
__publicField(this, "email");
|
|
13217
|
+
__publicField(this, "avatarUrlFormat");
|
|
13218
|
+
if (!data || typeof data !== "object") {
|
|
13219
|
+
throw new Error("Invalid user data provided");
|
|
13220
|
+
}
|
|
13221
|
+
this.name = data.name;
|
|
13222
|
+
this.userId = data.id;
|
|
13223
|
+
this.email = data.email;
|
|
13224
|
+
this.avatarUrlFormat = data.avatar_url;
|
|
13255
13225
|
}
|
|
13256
|
-
|
|
13257
|
-
|
|
13258
|
-
|
|
13259
|
-
|
|
13260
|
-
|
|
13261
|
-
if (
|
|
13262
|
-
|
|
13263
|
-
|
|
13264
|
-
|
|
13265
|
-
|
|
13266
|
-
|
|
13267
|
-
|
|
13268
|
-
|
|
13269
|
-
|
|
13270
|
-
const storageStrategy = new SessionStorageStrategy();
|
|
13271
|
-
const returnUrl = storageStrategy.getItem("youversion-auth-return") ?? "/";
|
|
13272
|
-
storageStrategy.removeItem("youversion-auth-return");
|
|
13273
|
-
window.history.replaceState({}, "", returnUrl);
|
|
13274
|
-
return true;
|
|
13226
|
+
getAvatarUrl(width = 200, height = 200) {
|
|
13227
|
+
if (!this.avatarUrlFormat) {
|
|
13228
|
+
return null;
|
|
13229
|
+
}
|
|
13230
|
+
let urlString = this.avatarUrlFormat;
|
|
13231
|
+
if (urlString.startsWith("//")) {
|
|
13232
|
+
urlString = "https:" + urlString;
|
|
13233
|
+
}
|
|
13234
|
+
urlString = urlString.replace("{width}", width.toString());
|
|
13235
|
+
urlString = urlString.replace("{height}", height.toString());
|
|
13236
|
+
try {
|
|
13237
|
+
return new URL(urlString);
|
|
13238
|
+
} catch {
|
|
13239
|
+
return null;
|
|
13275
13240
|
}
|
|
13276
|
-
return false;
|
|
13277
13241
|
}
|
|
13278
|
-
|
|
13279
|
-
|
|
13280
|
-
|
|
13281
|
-
|
|
13282
|
-
|
|
13283
|
-
|
|
13284
|
-
|
|
13242
|
+
get avatarUrl() {
|
|
13243
|
+
return this.getAvatarUrl();
|
|
13244
|
+
}
|
|
13245
|
+
};
|
|
13246
|
+
var SignInWithYouVersionPKCEAuthorizationRequestBuilder = class {
|
|
13247
|
+
static async make(appKey, permissions, redirectURL) {
|
|
13248
|
+
const codeVerifier = this.randomURLSafeString(32);
|
|
13249
|
+
const codeChallenge = await this.codeChallenge(codeVerifier);
|
|
13250
|
+
const state = this.randomURLSafeString(24);
|
|
13251
|
+
const nonce = this.randomURLSafeString(24);
|
|
13252
|
+
const parameters = {
|
|
13253
|
+
codeVerifier,
|
|
13254
|
+
codeChallenge,
|
|
13255
|
+
state,
|
|
13256
|
+
nonce
|
|
13257
|
+
};
|
|
13258
|
+
const url2 = this.authorizeURL(appKey, permissions, redirectURL, parameters);
|
|
13259
|
+
return { url: url2, parameters };
|
|
13260
|
+
}
|
|
13261
|
+
static authorizeURL(appKey, permissions, redirectURL, parameters) {
|
|
13262
|
+
const components = new URL(`https://${YouVersionPlatformConfiguration.apiHost}/auth/authorize`);
|
|
13263
|
+
const redirectUrlString = redirectURL.toString().endsWith("/") ? redirectURL.toString().slice(0, -1) : redirectURL.toString();
|
|
13264
|
+
const queryParams = new URLSearchParams({
|
|
13265
|
+
response_type: "code",
|
|
13266
|
+
client_id: appKey,
|
|
13267
|
+
redirect_uri: redirectUrlString,
|
|
13268
|
+
nonce: parameters.nonce,
|
|
13269
|
+
state: parameters.state,
|
|
13270
|
+
code_challenge: parameters.codeChallenge,
|
|
13271
|
+
code_challenge_method: "S256"
|
|
13272
|
+
});
|
|
13273
|
+
const installId = YouVersionPlatformConfiguration.installationId;
|
|
13274
|
+
if (installId) {
|
|
13275
|
+
queryParams.set("x-yvp-installation-id", installId);
|
|
13276
|
+
}
|
|
13277
|
+
const scopeValue = this.scopeValue(permissions);
|
|
13278
|
+
if (scopeValue) {
|
|
13279
|
+
queryParams.set("scope", scopeValue);
|
|
13285
13280
|
}
|
|
13286
|
-
|
|
13287
|
-
|
|
13281
|
+
components.search = queryParams.toString();
|
|
13282
|
+
return components;
|
|
13288
13283
|
}
|
|
13289
|
-
|
|
13290
|
-
|
|
13291
|
-
|
|
13292
|
-
|
|
13293
|
-
const
|
|
13294
|
-
|
|
13295
|
-
|
|
13296
|
-
|
|
13297
|
-
|
|
13298
|
-
|
|
13299
|
-
|
|
13300
|
-
|
|
13301
|
-
|
|
13302
|
-
|
|
13303
|
-
|
|
13304
|
-
|
|
13305
|
-
authenticateWithRedirect(authUrl) {
|
|
13306
|
-
_a3.cleanup();
|
|
13307
|
-
this.storage.setItem("youversion-auth-return", window.location.href);
|
|
13308
|
-
return new Promise((resolve, reject) => {
|
|
13309
|
-
_a3.pendingAuthResolve = resolve;
|
|
13310
|
-
_a3.pendingAuthReject = reject;
|
|
13311
|
-
_a3.timeoutId = setTimeout(() => {
|
|
13312
|
-
_a3.cleanup();
|
|
13313
|
-
reject(new Error("Authentication timeout"));
|
|
13314
|
-
}, this.timeout);
|
|
13315
|
-
try {
|
|
13316
|
-
window.location.href = authUrl.toString();
|
|
13317
|
-
} catch (error46) {
|
|
13318
|
-
_a3.cleanup();
|
|
13319
|
-
reject(
|
|
13320
|
-
new Error(
|
|
13321
|
-
`Failed to navigate to auth URL: ${error46 instanceof Error ? error46.message : "Unknown error"}`
|
|
13322
|
-
)
|
|
13323
|
-
);
|
|
13284
|
+
static tokenURLRequest(code, codeVerifier, redirectUri) {
|
|
13285
|
+
const apiHost = YouVersionPlatformConfiguration.apiHost;
|
|
13286
|
+
const appKey = YouVersionPlatformConfiguration.appKey;
|
|
13287
|
+
const url2 = new URL(`https://${apiHost}/auth/token`);
|
|
13288
|
+
const parameters = new URLSearchParams({
|
|
13289
|
+
grant_type: "authorization_code",
|
|
13290
|
+
code,
|
|
13291
|
+
redirect_uri: redirectUri,
|
|
13292
|
+
client_id: appKey ?? "",
|
|
13293
|
+
code_verifier: codeVerifier
|
|
13294
|
+
});
|
|
13295
|
+
return new Request(url2, {
|
|
13296
|
+
method: "POST",
|
|
13297
|
+
body: parameters,
|
|
13298
|
+
headers: {
|
|
13299
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
13324
13300
|
}
|
|
13325
13301
|
});
|
|
13326
13302
|
}
|
|
13327
|
-
|
|
13303
|
+
static randomURLSafeString(byteCount) {
|
|
13304
|
+
const bytes = new Uint8Array(byteCount);
|
|
13305
|
+
crypto.getRandomValues(bytes);
|
|
13306
|
+
return this.base64URLEncodedString(bytes);
|
|
13307
|
+
}
|
|
13308
|
+
static async codeChallenge(verifier) {
|
|
13309
|
+
const data = new TextEncoder().encode(verifier);
|
|
13310
|
+
const digest = await crypto.subtle.digest("SHA-256", data);
|
|
13311
|
+
return this.base64URLEncodedString(new Uint8Array(digest));
|
|
13312
|
+
}
|
|
13313
|
+
static base64URLEncodedString(data) {
|
|
13314
|
+
const base643 = btoa(String.fromCharCode.apply(null, Array.from(data)));
|
|
13315
|
+
return base643.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
13316
|
+
}
|
|
13317
|
+
static scopeValue(permissions) {
|
|
13318
|
+
const scopeArray = Array.from(permissions).sort();
|
|
13319
|
+
let scopeWithOpenID = scopeArray.join(" ");
|
|
13320
|
+
if (!scopeWithOpenID.split(" ").includes("openid")) {
|
|
13321
|
+
scopeWithOpenID += (scopeWithOpenID === "" ? "" : " ") + "openid";
|
|
13322
|
+
}
|
|
13323
|
+
return scopeWithOpenID || null;
|
|
13324
|
+
}
|
|
13325
|
+
};
|
|
13328
13326
|
var SignInWithYouVersionPermission = {
|
|
13329
13327
|
bibles: "bibles",
|
|
13330
13328
|
highlights: "highlights",
|
|
@@ -13333,71 +13331,335 @@ var SignInWithYouVersionPermission = {
|
|
|
13333
13331
|
bibleActivity: "bible_activity"
|
|
13334
13332
|
};
|
|
13335
13333
|
var SignInWithYouVersionResult = class {
|
|
13336
|
-
constructor(
|
|
13334
|
+
constructor({
|
|
13335
|
+
accessToken,
|
|
13336
|
+
expiresIn,
|
|
13337
|
+
refreshToken,
|
|
13338
|
+
idToken,
|
|
13339
|
+
permissions,
|
|
13340
|
+
yvpUserId,
|
|
13341
|
+
name,
|
|
13342
|
+
profilePicture,
|
|
13343
|
+
email: email3
|
|
13344
|
+
}) {
|
|
13337
13345
|
__publicField(this, "accessToken");
|
|
13346
|
+
__publicField(this, "expiryDate");
|
|
13347
|
+
__publicField(this, "refreshToken");
|
|
13348
|
+
__publicField(this, "idToken");
|
|
13338
13349
|
__publicField(this, "permissions");
|
|
13339
|
-
__publicField(this, "errorMsg");
|
|
13340
13350
|
__publicField(this, "yvpUserId");
|
|
13341
|
-
|
|
13342
|
-
|
|
13343
|
-
|
|
13344
|
-
|
|
13345
|
-
|
|
13346
|
-
|
|
13347
|
-
|
|
13348
|
-
|
|
13349
|
-
|
|
13350
|
-
|
|
13351
|
-
|
|
13352
|
-
|
|
13353
|
-
this.permissions = perms;
|
|
13354
|
-
this.errorMsg = null;
|
|
13355
|
-
this.yvpUserId = userId;
|
|
13356
|
-
} else if (status === "canceled") {
|
|
13357
|
-
this.accessToken = null;
|
|
13358
|
-
this.permissions = [];
|
|
13359
|
-
this.errorMsg = null;
|
|
13360
|
-
this.yvpUserId = null;
|
|
13361
|
-
} else {
|
|
13362
|
-
this.accessToken = null;
|
|
13363
|
-
this.permissions = [];
|
|
13364
|
-
this.errorMsg = "Authentication failed";
|
|
13365
|
-
this.yvpUserId = null;
|
|
13366
|
-
}
|
|
13351
|
+
__publicField(this, "name");
|
|
13352
|
+
__publicField(this, "profilePicture");
|
|
13353
|
+
__publicField(this, "email");
|
|
13354
|
+
this.accessToken = accessToken;
|
|
13355
|
+
this.expiryDate = expiresIn ? new Date(Date.now() + expiresIn * 1e3) : /* @__PURE__ */ new Date();
|
|
13356
|
+
this.refreshToken = refreshToken;
|
|
13357
|
+
this.idToken = idToken;
|
|
13358
|
+
this.permissions = permissions;
|
|
13359
|
+
this.yvpUserId = yvpUserId;
|
|
13360
|
+
this.name = name;
|
|
13361
|
+
this.profilePicture = profilePicture;
|
|
13362
|
+
this.email = email3;
|
|
13367
13363
|
}
|
|
13368
13364
|
};
|
|
13369
|
-
var
|
|
13370
|
-
|
|
13371
|
-
|
|
13372
|
-
|
|
13373
|
-
|
|
13374
|
-
|
|
13375
|
-
|
|
13376
|
-
|
|
13365
|
+
var YouVersionAPIUsers = class {
|
|
13366
|
+
/**
|
|
13367
|
+
* Presents the YouVersion login flow to the user and returns the login result upon completion.
|
|
13368
|
+
*
|
|
13369
|
+
* This function authenticates the user with YouVersion, requesting the specified required and optional permissions.
|
|
13370
|
+
* The function redirects to the YouVersion authorization URL and expects the callback to be handled separately.
|
|
13371
|
+
*
|
|
13372
|
+
* @param permissions - The set of permissions that must be granted by the user for successful login.
|
|
13373
|
+
* @param redirectURL - The URL to redirect back to after authentication.
|
|
13374
|
+
* @throws An error if authentication fails or configuration is invalid.
|
|
13375
|
+
*/
|
|
13376
|
+
static async signIn(permissions, redirectURL) {
|
|
13377
|
+
const appKey = YouVersionPlatformConfiguration.appKey;
|
|
13378
|
+
if (!appKey) {
|
|
13379
|
+
throw new Error("YouVersionPlatformConfiguration.appKey must be set before calling signIn");
|
|
13377
13380
|
}
|
|
13378
|
-
|
|
13379
|
-
|
|
13380
|
-
|
|
13381
|
-
|
|
13381
|
+
const authorizationRequest = await SignInWithYouVersionPKCEAuthorizationRequestBuilder.make(
|
|
13382
|
+
appKey,
|
|
13383
|
+
permissions,
|
|
13384
|
+
new URL(redirectURL)
|
|
13385
|
+
);
|
|
13386
|
+
localStorage.setItem(
|
|
13387
|
+
"youversion-auth-code-verifier",
|
|
13388
|
+
authorizationRequest.parameters.codeVerifier
|
|
13389
|
+
);
|
|
13390
|
+
const redirectUrlString = redirectURL.toString().endsWith("/") ? redirectURL.toString().slice(0, -1) : redirectURL.toString();
|
|
13391
|
+
localStorage.setItem("youversion-auth-redirect-uri", redirectUrlString);
|
|
13392
|
+
localStorage.setItem("youversion-auth-state", authorizationRequest.parameters.state);
|
|
13393
|
+
window.location.href = authorizationRequest.url.toString();
|
|
13382
13394
|
}
|
|
13383
|
-
|
|
13384
|
-
|
|
13395
|
+
/**
|
|
13396
|
+
* Handles the OAuth callback after user authentication.
|
|
13397
|
+
*
|
|
13398
|
+
* Call this method when your app loads to check if the current URL contains
|
|
13399
|
+
* an OAuth callback with authorization code. If found, it exchanges the code
|
|
13400
|
+
* for tokens and stores them.
|
|
13401
|
+
*
|
|
13402
|
+
* @returns Promise<SignInWithYouVersionResult | null> - SignInWithYouVersionResult if callback was handled, null otherwise
|
|
13403
|
+
* @throws An error if token exchange fails
|
|
13404
|
+
*/
|
|
13405
|
+
static async handleAuthCallback() {
|
|
13406
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
13407
|
+
const code = urlParams.get("code");
|
|
13408
|
+
const state = urlParams.get("state");
|
|
13409
|
+
const error46 = urlParams.get("error");
|
|
13410
|
+
if (!state && !error46) {
|
|
13385
13411
|
return null;
|
|
13386
13412
|
}
|
|
13387
|
-
|
|
13388
|
-
|
|
13389
|
-
|
|
13413
|
+
if (error46) {
|
|
13414
|
+
const errorDescription = urlParams.get("error_description") || error46;
|
|
13415
|
+
throw new Error(`OAuth authentication failed: ${errorDescription}`);
|
|
13416
|
+
}
|
|
13417
|
+
const storedState = localStorage.getItem("youversion-auth-state");
|
|
13418
|
+
if (state !== storedState) {
|
|
13419
|
+
throw new Error("Invalid state parameter - possible CSRF attack");
|
|
13420
|
+
}
|
|
13421
|
+
if (!code && state) {
|
|
13422
|
+
this.obtainLocation(window.location.href, state);
|
|
13423
|
+
}
|
|
13424
|
+
const codeVerifier = localStorage.getItem("youversion-auth-code-verifier");
|
|
13425
|
+
const redirectUri = localStorage.getItem("youversion-auth-redirect-uri");
|
|
13426
|
+
if (!code || !codeVerifier || !redirectUri) {
|
|
13427
|
+
throw new Error("Missing required authentication parameters");
|
|
13390
13428
|
}
|
|
13391
|
-
urlString = urlString.replace("{width}", width.toString());
|
|
13392
|
-
urlString = urlString.replace("{height}", height.toString());
|
|
13393
13429
|
try {
|
|
13394
|
-
|
|
13395
|
-
|
|
13396
|
-
|
|
13430
|
+
const tokenRequest = SignInWithYouVersionPKCEAuthorizationRequestBuilder.tokenURLRequest(
|
|
13431
|
+
code,
|
|
13432
|
+
codeVerifier,
|
|
13433
|
+
redirectUri
|
|
13434
|
+
);
|
|
13435
|
+
const response = await fetch(tokenRequest);
|
|
13436
|
+
if (!response.ok) {
|
|
13437
|
+
throw new Error(`Token exchange failed: ${response.status} ${response.statusText}`);
|
|
13438
|
+
}
|
|
13439
|
+
const responseText = await response.text();
|
|
13440
|
+
const tokens = JSON.parse(responseText);
|
|
13441
|
+
const result = this.extractSignInResult(tokens);
|
|
13442
|
+
YouVersionPlatformConfiguration.saveAuthData(
|
|
13443
|
+
result.accessToken || null,
|
|
13444
|
+
result.refreshToken || null,
|
|
13445
|
+
result.idToken || null,
|
|
13446
|
+
result.expiryDate || null
|
|
13447
|
+
);
|
|
13448
|
+
localStorage.removeItem("youversion-auth-code-verifier");
|
|
13449
|
+
localStorage.removeItem("youversion-auth-redirect-uri");
|
|
13450
|
+
localStorage.removeItem("youversion-auth-state");
|
|
13451
|
+
const cleanUrl = new URL(window.location.href);
|
|
13452
|
+
cleanUrl.search = "";
|
|
13453
|
+
window.history.replaceState({}, "", cleanUrl.toString());
|
|
13454
|
+
return result;
|
|
13455
|
+
} catch (error210) {
|
|
13456
|
+
localStorage.removeItem("youversion-auth-code-verifier");
|
|
13457
|
+
localStorage.removeItem("youversion-auth-redirect-uri");
|
|
13458
|
+
localStorage.removeItem("youversion-auth-state");
|
|
13459
|
+
throw error210;
|
|
13397
13460
|
}
|
|
13398
13461
|
}
|
|
13399
|
-
|
|
13400
|
-
|
|
13462
|
+
/**
|
|
13463
|
+
* Redirects to the server callback endpoint to obtain authorization code
|
|
13464
|
+
*/
|
|
13465
|
+
static obtainLocation(callbackURL, state) {
|
|
13466
|
+
const url2 = new URL(callbackURL);
|
|
13467
|
+
const params = new URLSearchParams(url2.search);
|
|
13468
|
+
if (params.get("state") !== state) {
|
|
13469
|
+
throw new Error("Invalid state parameter");
|
|
13470
|
+
}
|
|
13471
|
+
const serverCallbackUrl = new URL(
|
|
13472
|
+
`https://${YouVersionPlatformConfiguration.apiHost}/auth/callback`
|
|
13473
|
+
);
|
|
13474
|
+
params.forEach((value, key) => {
|
|
13475
|
+
serverCallbackUrl.searchParams.set(key, value);
|
|
13476
|
+
});
|
|
13477
|
+
window.location.href = serverCallbackUrl.toString();
|
|
13478
|
+
}
|
|
13479
|
+
/**
|
|
13480
|
+
* Extracts sign-in result from token response
|
|
13481
|
+
*/
|
|
13482
|
+
static extractSignInResult(tokens) {
|
|
13483
|
+
const idClaims = this.decodeJWT(tokens.id_token);
|
|
13484
|
+
const permissions = tokens.scope.split(" ").map((p) => p.trim()).filter((p) => p.length > 0).filter(
|
|
13485
|
+
(p) => Object.values(SignInWithYouVersionPermission).includes(
|
|
13486
|
+
p
|
|
13487
|
+
)
|
|
13488
|
+
);
|
|
13489
|
+
const resultData = {
|
|
13490
|
+
accessToken: tokens.access_token,
|
|
13491
|
+
expiresIn: tokens.expires_in,
|
|
13492
|
+
refreshToken: tokens.refresh_token,
|
|
13493
|
+
idToken: tokens.id_token,
|
|
13494
|
+
permissions,
|
|
13495
|
+
yvpUserId: idClaims.sub,
|
|
13496
|
+
name: idClaims.name,
|
|
13497
|
+
profilePicture: idClaims.profile_picture,
|
|
13498
|
+
email: idClaims.email
|
|
13499
|
+
};
|
|
13500
|
+
return new SignInWithYouVersionResult(resultData);
|
|
13501
|
+
}
|
|
13502
|
+
/**
|
|
13503
|
+
* Decodes JWT payload for UI display purposes.
|
|
13504
|
+
*
|
|
13505
|
+
* Note: We intentionally do not verify the JWT signature here because:
|
|
13506
|
+
*
|
|
13507
|
+
* 1. YouVersion's backend verifies all tokens on API requests
|
|
13508
|
+
* 2. This decoded data is only used for UI display
|
|
13509
|
+
* 3. No security decisions are made based on these claims
|
|
13510
|
+
*
|
|
13511
|
+
* @private
|
|
13512
|
+
*/
|
|
13513
|
+
static decodeJWT(token) {
|
|
13514
|
+
const segments = token.split(".");
|
|
13515
|
+
if (segments.length !== 3) {
|
|
13516
|
+
return {};
|
|
13517
|
+
}
|
|
13518
|
+
let base643 = segments[1]?.replace(/-/g, "+").replace(/_/g, "/");
|
|
13519
|
+
while (base643 && base643.length % 4 !== 0) {
|
|
13520
|
+
base643 += "=";
|
|
13521
|
+
}
|
|
13522
|
+
try {
|
|
13523
|
+
if (base643) {
|
|
13524
|
+
const data = atob(base643);
|
|
13525
|
+
return JSON.parse(data);
|
|
13526
|
+
} else {
|
|
13527
|
+
return {};
|
|
13528
|
+
}
|
|
13529
|
+
} catch (error46) {
|
|
13530
|
+
if (process.env.NODE_ENV === "development") {
|
|
13531
|
+
console.error("JWT decode failed:", error46);
|
|
13532
|
+
}
|
|
13533
|
+
return {};
|
|
13534
|
+
}
|
|
13535
|
+
}
|
|
13536
|
+
static signOut() {
|
|
13537
|
+
YouVersionPlatformConfiguration.clearAuthTokens();
|
|
13538
|
+
}
|
|
13539
|
+
/**
|
|
13540
|
+
* Retrieves user information for the authenticated user by decoding the provided JWT access token.
|
|
13541
|
+
*
|
|
13542
|
+
* This function extracts the user's profile information directly from the JWT token payload.
|
|
13543
|
+
*
|
|
13544
|
+
* @param accessToken - The JWT access token obtained from the login process.
|
|
13545
|
+
* @returns A Promise resolving to a YouVersionUserInfo object containing the user's profile information.
|
|
13546
|
+
* @throws An error if the access token is invalid or cannot be decoded.
|
|
13547
|
+
*/
|
|
13548
|
+
static userInfo(idToken) {
|
|
13549
|
+
if (!idToken || typeof idToken !== "string") {
|
|
13550
|
+
throw new Error("Invalid access token: must be a non-empty string");
|
|
13551
|
+
}
|
|
13552
|
+
try {
|
|
13553
|
+
const claims = this.decodeJWT(idToken);
|
|
13554
|
+
if (!claims || Object.keys(claims).length === 0) {
|
|
13555
|
+
throw new Error("Invalid JWT token: Unable to decode token payload");
|
|
13556
|
+
}
|
|
13557
|
+
const userInfoData = {
|
|
13558
|
+
id: claims.sub,
|
|
13559
|
+
name: claims.name,
|
|
13560
|
+
avatar_url: claims.profile_picture,
|
|
13561
|
+
email: claims.email
|
|
13562
|
+
};
|
|
13563
|
+
return new YouVersionUserInfo(userInfoData);
|
|
13564
|
+
} catch (error46) {
|
|
13565
|
+
if (error46 instanceof Error) {
|
|
13566
|
+
throw new Error(`Failed to decode user information from JWT: ${error46.message}`);
|
|
13567
|
+
} else {
|
|
13568
|
+
throw new Error("Failed to decode user information from JWT: Unknown error");
|
|
13569
|
+
}
|
|
13570
|
+
}
|
|
13571
|
+
}
|
|
13572
|
+
/**
|
|
13573
|
+
* Refreshes the access token using the stored refresh token.
|
|
13574
|
+
*
|
|
13575
|
+
* @returns Promise<SignInWithYouVersionResult | null> - New tokens if refresh succeeds, null otherwise
|
|
13576
|
+
* @throws An error if refresh fails or no refresh token is available
|
|
13577
|
+
*/
|
|
13578
|
+
static async refreshTokens() {
|
|
13579
|
+
const refreshToken = YouVersionPlatformConfiguration.refreshToken;
|
|
13580
|
+
const appKey = YouVersionPlatformConfiguration.appKey;
|
|
13581
|
+
const existingIdToken = YouVersionPlatformConfiguration.idToken;
|
|
13582
|
+
if (!refreshToken || !existingIdToken) {
|
|
13583
|
+
throw new Error("No refresh token or id token available");
|
|
13584
|
+
}
|
|
13585
|
+
if (!appKey) {
|
|
13586
|
+
throw new Error(
|
|
13587
|
+
"YouVersionPlatformConfiguration.appKey must be set before refreshing tokens"
|
|
13588
|
+
);
|
|
13589
|
+
}
|
|
13590
|
+
try {
|
|
13591
|
+
const url2 = new URL(`https://${YouVersionPlatformConfiguration.apiHost}/auth/token`);
|
|
13592
|
+
const parameters = new URLSearchParams({
|
|
13593
|
+
grant_type: "refresh_token",
|
|
13594
|
+
refresh_token: refreshToken,
|
|
13595
|
+
client_id: appKey
|
|
13596
|
+
});
|
|
13597
|
+
const request = new Request(url2, {
|
|
13598
|
+
method: "POST",
|
|
13599
|
+
body: parameters,
|
|
13600
|
+
headers: {
|
|
13601
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
13602
|
+
}
|
|
13603
|
+
});
|
|
13604
|
+
const response = await fetch(request);
|
|
13605
|
+
if (!response.ok) {
|
|
13606
|
+
throw new Error(`Token refresh failed: ${response.status} ${response.statusText}`);
|
|
13607
|
+
}
|
|
13608
|
+
const tokens = await response.json();
|
|
13609
|
+
const result = new SignInWithYouVersionResult({
|
|
13610
|
+
accessToken: tokens.access_token,
|
|
13611
|
+
expiresIn: tokens.expires_in,
|
|
13612
|
+
refreshToken: tokens.refresh_token,
|
|
13613
|
+
idToken: existingIdToken,
|
|
13614
|
+
permissions: tokens.scope.split(" ").map((p) => p.trim()).filter((p) => p.length > 0).filter(
|
|
13615
|
+
(p) => Object.values(SignInWithYouVersionPermission).includes(
|
|
13616
|
+
p
|
|
13617
|
+
)
|
|
13618
|
+
)
|
|
13619
|
+
});
|
|
13620
|
+
YouVersionPlatformConfiguration.saveAuthData(
|
|
13621
|
+
result.accessToken || null,
|
|
13622
|
+
result.refreshToken || null,
|
|
13623
|
+
result.idToken || null,
|
|
13624
|
+
result.expiryDate || null
|
|
13625
|
+
);
|
|
13626
|
+
return result;
|
|
13627
|
+
} catch (error46) {
|
|
13628
|
+
if (error46 instanceof Error) {
|
|
13629
|
+
throw new Error(`Token refresh failed: ${error46.message}`);
|
|
13630
|
+
} else {
|
|
13631
|
+
throw new Error("Token refresh failed: Unknown error");
|
|
13632
|
+
}
|
|
13633
|
+
}
|
|
13634
|
+
}
|
|
13635
|
+
/**
|
|
13636
|
+
* Checks if the current access token is expired or about to expire.
|
|
13637
|
+
*
|
|
13638
|
+
* @returns true if token is expired or about to expire
|
|
13639
|
+
*/
|
|
13640
|
+
static isTokenExpired() {
|
|
13641
|
+
const expiryDate = YouVersionPlatformConfiguration.tokenExpiryDate;
|
|
13642
|
+
if (!expiryDate) {
|
|
13643
|
+
return true;
|
|
13644
|
+
}
|
|
13645
|
+
return (/* @__PURE__ */ new Date()).getTime() >= expiryDate.getTime();
|
|
13646
|
+
}
|
|
13647
|
+
/**
|
|
13648
|
+
* Refreshes the access token if it's expired or about to expire.
|
|
13649
|
+
*
|
|
13650
|
+
* @returns Promise<boolean> - true if refresh was successful or not needed, false if failed
|
|
13651
|
+
*/
|
|
13652
|
+
static async refreshTokenIfNeeded() {
|
|
13653
|
+
if (!this.isTokenExpired()) {
|
|
13654
|
+
return true;
|
|
13655
|
+
}
|
|
13656
|
+
try {
|
|
13657
|
+
const result = await this.refreshTokens();
|
|
13658
|
+
return !!result;
|
|
13659
|
+
} catch {
|
|
13660
|
+
YouVersionPlatformConfiguration.clearAuthTokens();
|
|
13661
|
+
return false;
|
|
13662
|
+
}
|
|
13401
13663
|
}
|
|
13402
13664
|
};
|
|
13403
13665
|
var YouVersionAPI = class {
|
|
@@ -13454,117 +13716,6 @@ var URLBuilder = class {
|
|
|
13454
13716
|
);
|
|
13455
13717
|
}
|
|
13456
13718
|
}
|
|
13457
|
-
static userURL(accessToken) {
|
|
13458
|
-
if (typeof accessToken !== "string" || accessToken.trim().length === 0) {
|
|
13459
|
-
throw new Error("accessToken must be a non-empty string");
|
|
13460
|
-
}
|
|
13461
|
-
try {
|
|
13462
|
-
const url2 = new URL(this.baseURL);
|
|
13463
|
-
url2.pathname = "/auth/me";
|
|
13464
|
-
const searchParams = new URLSearchParams();
|
|
13465
|
-
searchParams.append("lat", accessToken);
|
|
13466
|
-
url2.search = searchParams.toString();
|
|
13467
|
-
return url2;
|
|
13468
|
-
} catch (error46) {
|
|
13469
|
-
throw new Error(
|
|
13470
|
-
`Failed to construct user URL: ${error46 instanceof Error ? error46.message : "Unknown error"}`
|
|
13471
|
-
);
|
|
13472
|
-
}
|
|
13473
|
-
}
|
|
13474
|
-
};
|
|
13475
|
-
var MAX_RETRY_ATTEMPTS = 3;
|
|
13476
|
-
var RETRY_DELAY_MS = 1e3;
|
|
13477
|
-
var YouVersionAPIUsers = class {
|
|
13478
|
-
/**
|
|
13479
|
-
* Presents the YouVersion login flow to the user and returns the login result upon completion.
|
|
13480
|
-
*
|
|
13481
|
-
* This function authenticates the user with YouVersion, requesting the specified required and optional permissions.
|
|
13482
|
-
* The function returns a promise that resolves when the user completes or cancels the login flow,
|
|
13483
|
-
* returning the login result containing the authorization code and granted permissions.
|
|
13484
|
-
*
|
|
13485
|
-
* @param requiredPermissions - The set of permissions that must be granted by the user for successful login.
|
|
13486
|
-
* @param optionalPermissions - The set of permissions that will be requested from the user but are not required for successful login.
|
|
13487
|
-
* @returns A Promise resolving to a SignInWithYouVersionResult containing the authorization code and granted permissions upon successful login.
|
|
13488
|
-
* @throws An error if authentication fails or is cancelled by the user.
|
|
13489
|
-
*/
|
|
13490
|
-
static async signIn(requiredPermissions, optionalPermissions) {
|
|
13491
|
-
if (!requiredPermissions || !(requiredPermissions instanceof Set)) {
|
|
13492
|
-
throw new Error("Invalid requiredPermissions: must be a Set");
|
|
13493
|
-
}
|
|
13494
|
-
if (!optionalPermissions || !(optionalPermissions instanceof Set)) {
|
|
13495
|
-
throw new Error("Invalid optionalPermissions: must be a Set");
|
|
13496
|
-
}
|
|
13497
|
-
const appKey = YouVersionPlatformConfiguration.appKey;
|
|
13498
|
-
if (!appKey) {
|
|
13499
|
-
throw new Error("YouVersionPlatformConfiguration.appKey must be set before calling signIn");
|
|
13500
|
-
}
|
|
13501
|
-
const url2 = URLBuilder.authURL(appKey, requiredPermissions, optionalPermissions);
|
|
13502
|
-
const strategy = AuthenticationStrategyRegistry.get();
|
|
13503
|
-
const callbackUrl = await strategy.authenticate(url2);
|
|
13504
|
-
const result = new SignInWithYouVersionResult(callbackUrl);
|
|
13505
|
-
if (result.accessToken) {
|
|
13506
|
-
YouVersionPlatformConfiguration.setAccessToken(result.accessToken);
|
|
13507
|
-
}
|
|
13508
|
-
return result;
|
|
13509
|
-
}
|
|
13510
|
-
static signOut() {
|
|
13511
|
-
YouVersionPlatformConfiguration.setAccessToken(null);
|
|
13512
|
-
}
|
|
13513
|
-
/**
|
|
13514
|
-
* Retrieves user information for the authenticated user using the provided access token.
|
|
13515
|
-
*
|
|
13516
|
-
* This function fetches the user's profile information from the YouVersion API, decoding it into a YouVersionUserInfo model.
|
|
13517
|
-
*
|
|
13518
|
-
* @param accessToken - The access token obtained from the login process.
|
|
13519
|
-
* @returns A Promise resolving to a YouVersionUserInfo object containing the user's profile information.
|
|
13520
|
-
* @throws An error if the URL is invalid, the network request fails, or the response cannot be decoded.
|
|
13521
|
-
*/
|
|
13522
|
-
static async userInfo(accessToken) {
|
|
13523
|
-
if (!accessToken || typeof accessToken !== "string") {
|
|
13524
|
-
throw new Error("Invalid access token: must be a non-empty string");
|
|
13525
|
-
}
|
|
13526
|
-
if (YouVersionPlatformConfiguration.isPreviewMode && accessToken === "preview") {
|
|
13527
|
-
return YouVersionPlatformConfiguration.previewUserInfo || new YouVersionUserInfo({
|
|
13528
|
-
first_name: "Preview",
|
|
13529
|
-
last_name: "User",
|
|
13530
|
-
id: "preview-user",
|
|
13531
|
-
avatar_url: void 0
|
|
13532
|
-
});
|
|
13533
|
-
}
|
|
13534
|
-
const url2 = URLBuilder.userURL(accessToken);
|
|
13535
|
-
const request = YouVersionAPI.addStandardHeaders(url2);
|
|
13536
|
-
let lastError = null;
|
|
13537
|
-
for (let attempt = 1; attempt <= MAX_RETRY_ATTEMPTS; attempt++) {
|
|
13538
|
-
try {
|
|
13539
|
-
const response = await fetch(request);
|
|
13540
|
-
if (response.status === 401) {
|
|
13541
|
-
throw new Error(
|
|
13542
|
-
"Authentication failed: Invalid or expired access token. Please sign in again."
|
|
13543
|
-
);
|
|
13544
|
-
}
|
|
13545
|
-
if (response.status === 403) {
|
|
13546
|
-
throw new Error("Access denied: Insufficient permissions to retrieve user information");
|
|
13547
|
-
}
|
|
13548
|
-
if (response.status !== 200) {
|
|
13549
|
-
throw new Error(
|
|
13550
|
-
`Failed to retrieve user information: Server responded with status ${response.status}`
|
|
13551
|
-
);
|
|
13552
|
-
}
|
|
13553
|
-
const data = await response.json();
|
|
13554
|
-
return data;
|
|
13555
|
-
} catch (error46) {
|
|
13556
|
-
lastError = error46 instanceof Error ? error46 : new Error("Failed to parse server response");
|
|
13557
|
-
if (error46 instanceof Error && (error46.message.includes("401") || error46.message.includes("403"))) {
|
|
13558
|
-
throw error46;
|
|
13559
|
-
}
|
|
13560
|
-
if (attempt < MAX_RETRY_ATTEMPTS) {
|
|
13561
|
-
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS * attempt));
|
|
13562
|
-
continue;
|
|
13563
|
-
}
|
|
13564
|
-
}
|
|
13565
|
-
}
|
|
13566
|
-
throw lastError || new Error("Failed to retrieve user information after multiple attempts");
|
|
13567
|
-
}
|
|
13568
13719
|
};
|
|
13569
13720
|
var BOOK_IDS = [
|
|
13570
13721
|
"GEN",
|
|
@@ -14953,191 +15104,15 @@ function Toolbar({ border = "top" }) {
|
|
|
14953
15104
|
var BibleReader = Object.assign({}, { Root: Root5, Content: Content4, Toolbar });
|
|
14954
15105
|
|
|
14955
15106
|
// src/components/SignInButton.tsx
|
|
14956
|
-
import
|
|
15107
|
+
import React9 from "react";
|
|
14957
15108
|
import { Loader2 } from "lucide-react";
|
|
14958
|
-
|
|
14959
|
-
// src/providers/YVPProvider.tsx
|
|
14960
|
-
import {
|
|
14961
|
-
createContext as createContext4,
|
|
14962
|
-
useContext as useContext4,
|
|
14963
|
-
useEffect as useEffect3,
|
|
14964
|
-
useState as useState4,
|
|
14965
|
-
useCallback
|
|
14966
|
-
} from "react";
|
|
14967
|
-
|
|
14968
|
-
// src/providers/YVPErrorBoundary.tsx
|
|
14969
|
-
import { Component } from "react";
|
|
14970
|
-
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
14971
|
-
var YVPErrorBoundary = class extends Component {
|
|
14972
|
-
constructor(props) {
|
|
14973
|
-
super(props);
|
|
14974
|
-
this.state = { hasError: false, error: null };
|
|
14975
|
-
}
|
|
14976
|
-
static getDerivedStateFromError(error46) {
|
|
14977
|
-
return { hasError: true, error: error46 };
|
|
14978
|
-
}
|
|
14979
|
-
componentDidCatch(error46, errorInfo) {
|
|
14980
|
-
const { onError } = this.props;
|
|
14981
|
-
if (onError) {
|
|
14982
|
-
onError(error46, errorInfo);
|
|
14983
|
-
}
|
|
14984
|
-
if (process.env.NODE_ENV === "development") {
|
|
14985
|
-
console.error("YVP Error Boundary caught error:", error46, errorInfo);
|
|
14986
|
-
}
|
|
14987
|
-
}
|
|
14988
|
-
render() {
|
|
14989
|
-
const { hasError, error: error46 } = this.state;
|
|
14990
|
-
const { children, fallback } = this.props;
|
|
14991
|
-
const isDevelopment = process.env.NODE_ENV === "development";
|
|
14992
|
-
if (hasError) {
|
|
14993
|
-
if (fallback) {
|
|
14994
|
-
return fallback;
|
|
14995
|
-
}
|
|
14996
|
-
return /* @__PURE__ */ jsxs6("div", { style: { padding: "20px", textAlign: "center" }, children: [
|
|
14997
|
-
/* @__PURE__ */ jsx12("h2", { children: "Something went wrong" }),
|
|
14998
|
-
/* @__PURE__ */ jsx12("p", { children: "We encountered an error while loading YouVersion Platform components." }),
|
|
14999
|
-
isDevelopment && error46 && /* @__PURE__ */ jsxs6("details", { style: { marginTop: "10px" }, children: [
|
|
15000
|
-
/* @__PURE__ */ jsx12("summary", { children: "Error details (development only)" }),
|
|
15001
|
-
/* @__PURE__ */ jsx12("pre", { style: { textAlign: "left", overflow: "auto" }, children: error46.toString() })
|
|
15002
|
-
] })
|
|
15003
|
-
] });
|
|
15004
|
-
}
|
|
15005
|
-
return children;
|
|
15006
|
-
}
|
|
15007
|
-
};
|
|
15008
|
-
|
|
15009
|
-
// src/providers/YVPProvider.tsx
|
|
15010
|
-
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
15011
|
-
var YVPContext = createContext4(null);
|
|
15012
|
-
function YVPProvider({
|
|
15013
|
-
config: config2,
|
|
15014
|
-
children,
|
|
15015
|
-
errorFallback,
|
|
15016
|
-
onError,
|
|
15017
|
-
theme = "light"
|
|
15018
|
-
}) {
|
|
15019
|
-
const [authState, setAuthState] = useState4({
|
|
15020
|
-
isAuthenticated: false,
|
|
15021
|
-
isLoading: false,
|
|
15022
|
-
accessToken: null,
|
|
15023
|
-
result: null,
|
|
15024
|
-
error: null
|
|
15025
|
-
});
|
|
15026
|
-
useEffect3(() => {
|
|
15027
|
-
const initializeAuth = () => {
|
|
15028
|
-
YouVersionPlatformConfiguration.appKey = config2.appKey;
|
|
15029
|
-
YouVersionPlatformConfiguration.installationId = config2.installationId ?? null;
|
|
15030
|
-
const strategy = new WebAuthenticationStrategy({
|
|
15031
|
-
redirectUri: config2.redirectUri || ""
|
|
15032
|
-
});
|
|
15033
|
-
AuthenticationStrategyRegistry.register(strategy);
|
|
15034
|
-
const existingToken = YouVersionPlatformConfiguration.accessToken;
|
|
15035
|
-
if (existingToken) {
|
|
15036
|
-
setAuthState({
|
|
15037
|
-
isAuthenticated: true,
|
|
15038
|
-
isLoading: false,
|
|
15039
|
-
accessToken: existingToken,
|
|
15040
|
-
result: null,
|
|
15041
|
-
error: null
|
|
15042
|
-
});
|
|
15043
|
-
return;
|
|
15044
|
-
}
|
|
15045
|
-
WebAuthenticationStrategy.handleCallback();
|
|
15046
|
-
const storedCallback = WebAuthenticationStrategy.getStoredCallback();
|
|
15047
|
-
if (storedCallback) {
|
|
15048
|
-
try {
|
|
15049
|
-
const result = new SignInWithYouVersionResult(storedCallback);
|
|
15050
|
-
const { accessToken, errorMsg } = result;
|
|
15051
|
-
if (accessToken) {
|
|
15052
|
-
YouVersionPlatformConfiguration.setAccessToken(accessToken);
|
|
15053
|
-
}
|
|
15054
|
-
setAuthState({
|
|
15055
|
-
isAuthenticated: !!accessToken,
|
|
15056
|
-
isLoading: false,
|
|
15057
|
-
accessToken: accessToken ?? null,
|
|
15058
|
-
result,
|
|
15059
|
-
error: errorMsg ? new Error(errorMsg) : null
|
|
15060
|
-
});
|
|
15061
|
-
} catch (error46) {
|
|
15062
|
-
setAuthState({
|
|
15063
|
-
isAuthenticated: false,
|
|
15064
|
-
isLoading: false,
|
|
15065
|
-
accessToken: null,
|
|
15066
|
-
result: null,
|
|
15067
|
-
error: error46
|
|
15068
|
-
});
|
|
15069
|
-
}
|
|
15070
|
-
} else {
|
|
15071
|
-
setAuthState({
|
|
15072
|
-
isAuthenticated: false,
|
|
15073
|
-
isLoading: false,
|
|
15074
|
-
accessToken: null,
|
|
15075
|
-
result: null,
|
|
15076
|
-
error: null
|
|
15077
|
-
});
|
|
15078
|
-
}
|
|
15079
|
-
};
|
|
15080
|
-
initializeAuth();
|
|
15081
|
-
}, [config2.appKey, config2.installationId, config2.redirectUri]);
|
|
15082
|
-
const signOut = useCallback(() => {
|
|
15083
|
-
YouVersionPlatformConfiguration.setAccessToken(null);
|
|
15084
|
-
setAuthState({
|
|
15085
|
-
isAuthenticated: false,
|
|
15086
|
-
isLoading: false,
|
|
15087
|
-
accessToken: null,
|
|
15088
|
-
result: null,
|
|
15089
|
-
error: null
|
|
15090
|
-
});
|
|
15091
|
-
}, []);
|
|
15092
|
-
const fetchUserInfo = useCallback(async () => {
|
|
15093
|
-
if (!authState.isAuthenticated || !authState.accessToken) {
|
|
15094
|
-
throw new Error("User is not authenticated");
|
|
15095
|
-
}
|
|
15096
|
-
return YouVersionAPIUsers.userInfo(authState.accessToken);
|
|
15097
|
-
}, [authState.isAuthenticated, authState.accessToken]);
|
|
15098
|
-
const value = {
|
|
15099
|
-
config: config2,
|
|
15100
|
-
client: ApiClient,
|
|
15101
|
-
auth: authState,
|
|
15102
|
-
signOut,
|
|
15103
|
-
fetchUserInfo
|
|
15104
|
-
};
|
|
15105
|
-
return /* @__PURE__ */ jsx13(YVPErrorBoundary, { fallback: errorFallback, onError, children: /* @__PURE__ */ jsx13(YVPContext.Provider, { value, children: /* @__PURE__ */ jsx13("div", { className: "yv:contents", "data-yv-sdk": true, "data-yv-theme": theme, children }) }) });
|
|
15106
|
-
}
|
|
15107
|
-
function useYVP() {
|
|
15108
|
-
const context = useContext4(YVPContext);
|
|
15109
|
-
if (!context) {
|
|
15110
|
-
throw new Error("useYVP must be used within a YVPProvider");
|
|
15111
|
-
}
|
|
15112
|
-
return context;
|
|
15113
|
-
}
|
|
15114
|
-
|
|
15115
|
-
// src/hooks/useAuthentication.ts
|
|
15116
|
-
import { useCallback as useCallback2 } from "react";
|
|
15117
|
-
function useAuthentication() {
|
|
15118
|
-
const { auth, signOut, fetchUserInfo, client: _client } = useYVP();
|
|
15119
|
-
const signIn = useCallback2(
|
|
15120
|
-
async (requiredPermissions = [], optionalPermissions = []) => {
|
|
15121
|
-
return await YouVersionAPIUsers.signIn(
|
|
15122
|
-
new Set(requiredPermissions),
|
|
15123
|
-
new Set(optionalPermissions)
|
|
15124
|
-
);
|
|
15125
|
-
},
|
|
15126
|
-
[]
|
|
15127
|
-
);
|
|
15128
|
-
return {
|
|
15129
|
-
auth,
|
|
15130
|
-
signIn,
|
|
15131
|
-
signOut,
|
|
15132
|
-
fetchUserInfo
|
|
15133
|
-
};
|
|
15134
|
-
}
|
|
15109
|
+
import { useYVAuth } from "@youversion/platform-react-hooks";
|
|
15135
15110
|
|
|
15136
15111
|
// src/components/youversion-logo.tsx
|
|
15137
15112
|
import "react";
|
|
15138
|
-
import { jsx as
|
|
15113
|
+
import { jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
15139
15114
|
function YouVersionLogo(props) {
|
|
15140
|
-
return /* @__PURE__ */
|
|
15115
|
+
return /* @__PURE__ */ jsxs6(
|
|
15141
15116
|
"svg",
|
|
15142
15117
|
{
|
|
15143
15118
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -15147,7 +15122,7 @@ function YouVersionLogo(props) {
|
|
|
15147
15122
|
"aria-label": "YouVersion",
|
|
15148
15123
|
...props,
|
|
15149
15124
|
children: [
|
|
15150
|
-
/* @__PURE__ */
|
|
15125
|
+
/* @__PURE__ */ jsx12(
|
|
15151
15126
|
"mask",
|
|
15152
15127
|
{
|
|
15153
15128
|
id: "youversion-logo-mask",
|
|
@@ -15159,7 +15134,7 @@ function YouVersionLogo(props) {
|
|
|
15159
15134
|
style: {
|
|
15160
15135
|
maskType: "alpha"
|
|
15161
15136
|
},
|
|
15162
|
-
children: /* @__PURE__ */
|
|
15137
|
+
children: /* @__PURE__ */ jsx12(
|
|
15163
15138
|
"path",
|
|
15164
15139
|
{
|
|
15165
15140
|
fill: "url(#youversion-logo-gradient-a)",
|
|
@@ -15170,9 +15145,9 @@ function YouVersionLogo(props) {
|
|
|
15170
15145
|
)
|
|
15171
15146
|
}
|
|
15172
15147
|
),
|
|
15173
|
-
/* @__PURE__ */
|
|
15174
|
-
/* @__PURE__ */
|
|
15175
|
-
/* @__PURE__ */
|
|
15148
|
+
/* @__PURE__ */ jsxs6("g", { mask: "url(#youversion-logo-mask)", children: [
|
|
15149
|
+
/* @__PURE__ */ jsx12("path", { fill: "url(#youversion-logo-gradient-c)", d: "M0 0h26v26H0z" }),
|
|
15150
|
+
/* @__PURE__ */ jsx12(
|
|
15176
15151
|
"path",
|
|
15177
15152
|
{
|
|
15178
15153
|
fill: "#FEF5EB",
|
|
@@ -15181,8 +15156,8 @@ function YouVersionLogo(props) {
|
|
|
15181
15156
|
clipRule: "evenodd"
|
|
15182
15157
|
}
|
|
15183
15158
|
),
|
|
15184
|
-
/* @__PURE__ */
|
|
15185
|
-
/* @__PURE__ */
|
|
15159
|
+
/* @__PURE__ */ jsx12("path", { fill: "#FF3D4D", d: "M4.774 20.468h4.073v3.055l-2.036-1.019-2.037 1.019v-3.055Z" }),
|
|
15160
|
+
/* @__PURE__ */ jsx12(
|
|
15186
15161
|
"path",
|
|
15187
15162
|
{
|
|
15188
15163
|
fill: "#FEF5EB",
|
|
@@ -15190,8 +15165,8 @@ function YouVersionLogo(props) {
|
|
|
15190
15165
|
}
|
|
15191
15166
|
)
|
|
15192
15167
|
] }),
|
|
15193
|
-
/* @__PURE__ */
|
|
15194
|
-
/* @__PURE__ */
|
|
15168
|
+
/* @__PURE__ */ jsxs6("defs", { children: [
|
|
15169
|
+
/* @__PURE__ */ jsxs6(
|
|
15195
15170
|
"linearGradient",
|
|
15196
15171
|
{
|
|
15197
15172
|
id: "youversion-logo-gradient-a",
|
|
@@ -15201,12 +15176,12 @@ function YouVersionLogo(props) {
|
|
|
15201
15176
|
y2: 26,
|
|
15202
15177
|
gradientUnits: "userSpaceOnUse",
|
|
15203
15178
|
children: [
|
|
15204
|
-
/* @__PURE__ */
|
|
15205
|
-
/* @__PURE__ */
|
|
15179
|
+
/* @__PURE__ */ jsx12("stop", { stopColor: "#C93D34" }),
|
|
15180
|
+
/* @__PURE__ */ jsx12("stop", { offset: 1, stopColor: "#7A2629" })
|
|
15206
15181
|
]
|
|
15207
15182
|
}
|
|
15208
15183
|
),
|
|
15209
|
-
/* @__PURE__ */
|
|
15184
|
+
/* @__PURE__ */ jsxs6(
|
|
15210
15185
|
"linearGradient",
|
|
15211
15186
|
{
|
|
15212
15187
|
id: "youversion-logo-gradient-c",
|
|
@@ -15216,8 +15191,8 @@ function YouVersionLogo(props) {
|
|
|
15216
15191
|
y2: 26,
|
|
15217
15192
|
gradientUnits: "userSpaceOnUse",
|
|
15218
15193
|
children: [
|
|
15219
|
-
/* @__PURE__ */
|
|
15220
|
-
/* @__PURE__ */
|
|
15194
|
+
/* @__PURE__ */ jsx12("stop", { stopColor: "#C93D34" }),
|
|
15195
|
+
/* @__PURE__ */ jsx12("stop", { offset: 1, stopColor: "#7A2629" })
|
|
15221
15196
|
]
|
|
15222
15197
|
}
|
|
15223
15198
|
)
|
|
@@ -15228,51 +15203,46 @@ function YouVersionLogo(props) {
|
|
|
15228
15203
|
}
|
|
15229
15204
|
|
|
15230
15205
|
// src/components/SignInButton.tsx
|
|
15231
|
-
import { jsx as
|
|
15232
|
-
var SignInButton =
|
|
15206
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
15207
|
+
var SignInButton = React9.forwardRef(
|
|
15233
15208
|
({
|
|
15234
15209
|
background = "light",
|
|
15235
15210
|
className,
|
|
15236
15211
|
disabled,
|
|
15237
15212
|
onAuthError,
|
|
15238
15213
|
onClick,
|
|
15239
|
-
|
|
15240
|
-
optionalPermissions = [],
|
|
15214
|
+
permissions = [],
|
|
15241
15215
|
radius = "rounded",
|
|
15242
|
-
|
|
15216
|
+
redirectUrl,
|
|
15243
15217
|
size = "default",
|
|
15244
15218
|
variant = "default",
|
|
15245
15219
|
...props
|
|
15246
15220
|
}, ref) => {
|
|
15247
|
-
const { signIn, auth } =
|
|
15248
|
-
const [localLoading, setLocalLoading] = React11.useState(false);
|
|
15221
|
+
const { signIn, auth } = useYVAuth();
|
|
15249
15222
|
const handleClick = async (e) => {
|
|
15250
15223
|
e.preventDefault();
|
|
15251
15224
|
if (onClick) {
|
|
15252
15225
|
onClick(e);
|
|
15253
15226
|
}
|
|
15254
|
-
setLocalLoading(true);
|
|
15255
15227
|
try {
|
|
15256
|
-
|
|
15257
|
-
|
|
15258
|
-
|
|
15259
|
-
}
|
|
15228
|
+
await signIn({
|
|
15229
|
+
redirectUrl,
|
|
15230
|
+
permissions
|
|
15231
|
+
});
|
|
15260
15232
|
} catch (error46) {
|
|
15261
15233
|
if (onAuthError) {
|
|
15262
15234
|
onAuthError(error46);
|
|
15263
15235
|
}
|
|
15264
|
-
} finally {
|
|
15265
|
-
setLocalLoading(false);
|
|
15266
15236
|
}
|
|
15267
15237
|
};
|
|
15268
|
-
const buttonLoading =
|
|
15238
|
+
const buttonLoading = auth.isLoading;
|
|
15269
15239
|
let buttonCopy = "Sign in with YouVersion";
|
|
15270
15240
|
if (size === "short") {
|
|
15271
15241
|
buttonCopy = "Sign in";
|
|
15272
15242
|
}
|
|
15273
|
-
const loadingSpinner = /* @__PURE__ */
|
|
15243
|
+
const loadingSpinner = /* @__PURE__ */ jsx13(Loader2, { className: "yv:z-20 yv:absolute yv:left-1/2 yv:top-1/2 yv:animate-spin yv:-translate-x-1/2 yv:-translate-y-1/2 yv:fill-primary-foreground yv:text-primary" });
|
|
15274
15244
|
if (size === "icon") {
|
|
15275
|
-
return /* @__PURE__ */
|
|
15245
|
+
return /* @__PURE__ */ jsxs7(
|
|
15276
15246
|
Button,
|
|
15277
15247
|
{
|
|
15278
15248
|
...props,
|
|
@@ -15281,6 +15251,7 @@ var SignInButton = React11.forwardRef(
|
|
|
15281
15251
|
variant === "outline" ? "yv:border" : "yv:border-none",
|
|
15282
15252
|
className
|
|
15283
15253
|
),
|
|
15254
|
+
"data-yv-sdk": true,
|
|
15284
15255
|
disabled: buttonLoading ? true : disabled ?? false,
|
|
15285
15256
|
ref,
|
|
15286
15257
|
onClick: (e) => void handleClick(e),
|
|
@@ -15295,13 +15266,13 @@ var SignInButton = React11.forwardRef(
|
|
|
15295
15266
|
variant: background === "light" ? "outline" : "default",
|
|
15296
15267
|
children: [
|
|
15297
15268
|
buttonLoading ? loadingSpinner : null,
|
|
15298
|
-
/* @__PURE__ */
|
|
15299
|
-
/* @__PURE__ */
|
|
15269
|
+
/* @__PURE__ */ jsx13(YouVersionLogo, {}),
|
|
15270
|
+
/* @__PURE__ */ jsx13("span", { className: "yv:sr-only", children: buttonCopy })
|
|
15300
15271
|
]
|
|
15301
15272
|
}
|
|
15302
15273
|
);
|
|
15303
15274
|
}
|
|
15304
|
-
return /* @__PURE__ */
|
|
15275
|
+
return /* @__PURE__ */ jsxs7(
|
|
15305
15276
|
Button,
|
|
15306
15277
|
{
|
|
15307
15278
|
...props,
|
|
@@ -15310,6 +15281,7 @@ var SignInButton = React11.forwardRef(
|
|
|
15310
15281
|
variant === "outline" ? "yv:border" : "yv:border-none",
|
|
15311
15282
|
className
|
|
15312
15283
|
),
|
|
15284
|
+
"data-yv-sdk": true,
|
|
15313
15285
|
disabled: buttonLoading ? true : disabled ?? false,
|
|
15314
15286
|
ref,
|
|
15315
15287
|
onClick: (e) => void handleClick(e),
|
|
@@ -15324,7 +15296,7 @@ var SignInButton = React11.forwardRef(
|
|
|
15324
15296
|
variant: background === "light" ? "outline" : "default",
|
|
15325
15297
|
children: [
|
|
15326
15298
|
buttonLoading ? loadingSpinner : null,
|
|
15327
|
-
/* @__PURE__ */
|
|
15299
|
+
/* @__PURE__ */ jsx13(YouVersionLogo, {}),
|
|
15328
15300
|
buttonCopy
|
|
15329
15301
|
]
|
|
15330
15302
|
}
|
|
@@ -15334,12 +15306,12 @@ var SignInButton = React11.forwardRef(
|
|
|
15334
15306
|
SignInButton.displayName = "SignInButton";
|
|
15335
15307
|
|
|
15336
15308
|
// src/components/verse-of-the-day.tsx
|
|
15337
|
-
import
|
|
15309
|
+
import React10 from "react";
|
|
15338
15310
|
|
|
15339
15311
|
// src/components/icons/votd.tsx
|
|
15340
15312
|
import "react";
|
|
15341
|
-
import { jsx as
|
|
15342
|
-
var SvgComponent = (props) => /* @__PURE__ */
|
|
15313
|
+
import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
15314
|
+
var SvgComponent = (props) => /* @__PURE__ */ jsxs8(
|
|
15343
15315
|
"svg",
|
|
15344
15316
|
{
|
|
15345
15317
|
width: "44",
|
|
@@ -15349,8 +15321,8 @@ var SvgComponent = (props) => /* @__PURE__ */ jsxs9(
|
|
|
15349
15321
|
fill: "none",
|
|
15350
15322
|
xmlns: "http://www.w3.org/2000/svg",
|
|
15351
15323
|
children: [
|
|
15352
|
-
/* @__PURE__ */
|
|
15353
|
-
/* @__PURE__ */
|
|
15324
|
+
/* @__PURE__ */ jsx14("title", { children: "Sun" }),
|
|
15325
|
+
/* @__PURE__ */ jsx14(
|
|
15354
15326
|
"path",
|
|
15355
15327
|
{
|
|
15356
15328
|
fillRule: "evenodd",
|
|
@@ -15364,8 +15336,8 @@ var SvgComponent = (props) => /* @__PURE__ */ jsxs9(
|
|
|
15364
15336
|
);
|
|
15365
15337
|
|
|
15366
15338
|
// src/components/icons/share.tsx
|
|
15367
|
-
import { jsx as
|
|
15368
|
-
var SvgComponent2 = (props) => /* @__PURE__ */
|
|
15339
|
+
import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
15340
|
+
var SvgComponent2 = (props) => /* @__PURE__ */ jsxs9(
|
|
15369
15341
|
"svg",
|
|
15370
15342
|
{
|
|
15371
15343
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -15375,14 +15347,14 @@ var SvgComponent2 = (props) => /* @__PURE__ */ jsxs10(
|
|
|
15375
15347
|
fill: "none",
|
|
15376
15348
|
...props,
|
|
15377
15349
|
children: [
|
|
15378
|
-
/* @__PURE__ */
|
|
15350
|
+
/* @__PURE__ */ jsx15(
|
|
15379
15351
|
"path",
|
|
15380
15352
|
{
|
|
15381
15353
|
fill: "currentColor",
|
|
15382
15354
|
d: "M16.121 9.187a1 1 0 0 1-1.414 0L13 7.48V15a1 1 0 1 1-2 0V7.348L9.121 9.227a1 1 0 1 1-1.414-1.414l3.52-3.52a1 1 0 0 1 1.414 0l3.48 3.48a1 1 0 0 1 0 1.414Z"
|
|
15383
15355
|
}
|
|
15384
15356
|
),
|
|
15385
|
-
/* @__PURE__ */
|
|
15357
|
+
/* @__PURE__ */ jsx15(
|
|
15386
15358
|
"path",
|
|
15387
15359
|
{
|
|
15388
15360
|
fill: "currentColor",
|
|
@@ -15394,8 +15366,8 @@ var SvgComponent2 = (props) => /* @__PURE__ */ jsxs10(
|
|
|
15394
15366
|
);
|
|
15395
15367
|
|
|
15396
15368
|
// src/components/bible-app-logo-lockup.tsx
|
|
15397
|
-
import { jsx as
|
|
15398
|
-
var SvgComponent3 = (props) => /* @__PURE__ */
|
|
15369
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
15370
|
+
var SvgComponent3 = (props) => /* @__PURE__ */ jsxs10(
|
|
15399
15371
|
"svg",
|
|
15400
15372
|
{
|
|
15401
15373
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -15405,8 +15377,8 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15405
15377
|
fill: "none",
|
|
15406
15378
|
...props,
|
|
15407
15379
|
children: [
|
|
15408
|
-
/* @__PURE__ */
|
|
15409
|
-
/* @__PURE__ */
|
|
15380
|
+
/* @__PURE__ */ jsx16("title", { children: "Bible App" }),
|
|
15381
|
+
/* @__PURE__ */ jsx16(
|
|
15410
15382
|
"mask",
|
|
15411
15383
|
{
|
|
15412
15384
|
id: "bible-app-logo-lockup-mask",
|
|
@@ -15418,7 +15390,7 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15418
15390
|
style: {
|
|
15419
15391
|
maskType: "alpha"
|
|
15420
15392
|
},
|
|
15421
|
-
children: /* @__PURE__ */
|
|
15393
|
+
children: /* @__PURE__ */ jsx16(
|
|
15422
15394
|
"path",
|
|
15423
15395
|
{
|
|
15424
15396
|
fill: "url(#bible-app-logo-lockup-gradient-a)",
|
|
@@ -15429,9 +15401,9 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15429
15401
|
)
|
|
15430
15402
|
}
|
|
15431
15403
|
),
|
|
15432
|
-
/* @__PURE__ */
|
|
15433
|
-
/* @__PURE__ */
|
|
15434
|
-
/* @__PURE__ */
|
|
15404
|
+
/* @__PURE__ */ jsxs10("g", { mask: "url(#bible-app-logo-lockup-mask)", children: [
|
|
15405
|
+
/* @__PURE__ */ jsx16("path", { fill: "url(#bible-app-logo-lockup-gradient-c)", d: "M63.562 0H80v16.438H63.562z" }),
|
|
15406
|
+
/* @__PURE__ */ jsx16(
|
|
15435
15407
|
"path",
|
|
15436
15408
|
{
|
|
15437
15409
|
fill: "#FEF5EB",
|
|
@@ -15440,18 +15412,18 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15440
15412
|
clipRule: "evenodd"
|
|
15441
15413
|
}
|
|
15442
15414
|
),
|
|
15443
|
-
/* @__PURE__ */
|
|
15444
|
-
/* @__PURE__ */
|
|
15415
|
+
/* @__PURE__ */ jsx16("path", { fill: "#FF3D4D", d: "M66.58 12.94h2.575v1.932l-1.287-.644-1.288.644v-1.931Z" }),
|
|
15416
|
+
/* @__PURE__ */ jsx16("g", { fill: "#FEF5EB", clipPath: "url(#bible-app-logo-lockup-clip)", children: /* @__PURE__ */ jsx16("path", { d: "M70.602 5.614c.173.105.374.156.603.156.219 0 .42-.055.593-.17.178-.113.31-.273.407-.474.1-.206.146-.439.146-.694a1.57 1.57 0 0 0-.142-.694 1.05 1.05 0 0 0-.402-.452 1.135 1.135 0 0 0-.598-.156c-.219 0-.42.055-.598.17a1.15 1.15 0 0 0-.406.474 1.626 1.626 0 0 0-.142.694c0 .265.046.498.142.694.091.197.223.347.397.452Zm-.096-1.16c0-.232.027-.438.087-.616a.906.906 0 0 1 .246-.406.512.512 0 0 1 .356-.142c.133 0 .247.046.357.137.11.091.196.224.26.402.069.174.1.379.1.616 0 .233-.032.439-.09.617a.951.951 0 0 1-.248.41.516.516 0 0 1-.356.142.537.537 0 0 1-.356-.137.95.95 0 0 1-.265-.401 1.995 1.995 0 0 1-.091-.621ZM76.675 9.14a3.91 3.91 0 0 1-.014-.68l.005-.056h-.178l-.005.046a1.256 1.256 0 0 1-.073.36.324.324 0 0 1-.141.16.704.704 0 0 1-.302.05h-.25a.696.696 0 0 1-.17-.013.073.073 0 0 1-.046-.05.654.654 0 0 1-.018-.174v-.78h.178c.082 0 .142.022.183.059.041.036.069.1.082.187.014.096.019.15.023.169l.005.041H76.122l-.004-.05a8.485 8.485 0 0 1-.023-.489v-.164c0-.119.005-.228.01-.324l.004-.05H75.936l-.005.04-.01.07c-.009.077-.022.14-.036.186a.188.188 0 0 1-.073.11c-.032.027-.082.046-.155.046h-.178v-.768c0-.086.009-.141.018-.173.01-.028.023-.041.046-.046a.637.637 0 0 1 .169-.018h.287c.119 0 .201.018.251.046a.241.241 0 0 1 .105.132c.023.064.046.174.06.32l.004.045h.178l-.009-.054a2.264 2.264 0 0 1-.009-.21c0-.12.01-.252.023-.402l.005-.055h-1.832v.164l.046.005a.719.719 0 0 1 .165.023.07.07 0 0 1 .05.05c.009.032.018.087.018.173v1.708c0 .087-.01.142-.018.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.165.023l-.046.004v.165h1.9v-.05ZM74.543 5.724l-.005-.055a3.91 3.91 0 0 1-.014-.717l.005-.055h-.178l-.005.046a1.678 1.678 0 0 1-.073.38.31.31 0 0 1-.146.173.693.693 0 0 1-.301.054h-.251a.695.695 0 0 1-.17-.013.072.072 0 0 1-.045-.05.653.653 0 0 1-.018-.174V3.587c0-.087.009-.142.018-.174a.072.072 0 0 1 .046-.05.82.82 0 0 1 .168-.023l.046-.004v-.164h-.982V3.34l.046.005a.72.72 0 0 1 .165.023.07.07 0 0 1 .05.05c.009.032.018.087.018.173v1.713c0 .087-.01.141-.018.173a.07.07 0 0 1-.05.05.72.72 0 0 1-.165.023l-.046.005v.164l1.904.005ZM68.762 8.034c-.091-.095-.233-.164-.411-.205a.685.685 0 0 0 .27-.2.61.61 0 0 0 .136-.389.522.522 0 0 0-.21-.434c-.137-.11-.329-.16-.57-.16l-.996-.009V6.806l.046.005a.72.72 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.019.087.019.173v1.717c0 .087-.01.142-.019.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.164.023l-.046.004v.169l1.073-.004c.178 0 .329-.028.461-.087a.705.705 0 0 0 .306-.256.666.666 0 0 0 .11-.374.555.555 0 0 0-.17-.439Zm-1.078-.977a.71.71 0 0 1 .018-.173c.01-.032.028-.046.046-.06a.349.349 0 0 1 .142-.018c.164 0 .269.041.333.11.064.073.1.187.1.356a.637.637 0 0 1-.105.383c-.059.083-.173.133-.356.133h-.182v-.73h.004Zm.662 1.818c-.096.091-.242.137-.452.137a.375.375 0 0 1-.146-.019c-.023-.009-.036-.027-.046-.054a.639.639 0 0 1-.018-.17v-.826h.242c.21 0 .352.046.434.128.087.082.132.205.132.379 0 .2-.05.338-.146.425ZM72.232 8.034s-.004 0 0 0c-.004 0-.004 0 0 0a.812.812 0 0 0-.41-.205.686.686 0 0 0 .269-.2.61.61 0 0 0 .137-.389.522.522 0 0 0-.21-.434c-.138-.11-.33-.16-.571-.16l-.996-.009V6.806l.046.005a.72.72 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.019.087.019.173v1.717c0 .087-.01.142-.018.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.165.023l-.046.004v.169l1.073-.004c.178 0 .33-.028.462-.087a.706.706 0 0 0 .305-.256.667.667 0 0 0 .11-.374.588.588 0 0 0-.169-.439Zm-.242-1.191c-.004 0-.004 0 0 0Zm-.835.214c0-.082.009-.137.018-.173.009-.032.027-.046.045-.06a.35.35 0 0 1 .142-.018c.164 0 .27.041.333.11.064.073.1.187.1.356a.637.637 0 0 1-.104.383c-.06.083-.174.133-.356.133h-.183v-.73h.004Zm.662 1.818c-.096.091-.242.137-.452.137a.36.36 0 0 1-.147-.019c-.022-.009-.036-.027-.045-.054a.634.634 0 0 1-.019-.17v-.826h.243c.21 0 .351.046.433.128.087.082.133.205.133.379 0 .2-.05.338-.146.425ZM69.2 6.637V6.806l.046.005a.72.72 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.019.087.019.173v1.717c0 .087-.01.142-.019.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.164.023l-.046.004v.169h.982V9.03l-.046-.005a.824.824 0 0 1-.169-.023.073.073 0 0 1-.046-.05.654.654 0 0 1-.018-.173V7.062c0-.087.01-.142.018-.174a.073.073 0 0 1 .046-.05.824.824 0 0 1 .17-.023l.045-.004v-.164l-.982-.01ZM68.328 5.724v-.165l-.046-.004a.823.823 0 0 1-.169-.023.072.072 0 0 1-.045-.05.648.648 0 0 1-.019-.174v-.785h1.028v.78c0 .087-.01.142-.019.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.164.023l-.046.005v.164h.982V5.55l-.046-.004a.821.821 0 0 1-.169-.023.072.072 0 0 1-.045-.05.653.653 0 0 1-.019-.174V3.587c0-.087.01-.142.019-.174a.072.072 0 0 1 .045-.05.821.821 0 0 1 .17-.023l.045-.004v-.169h-.982v.164l.046.005a.719.719 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.019.087.019.173v.767h-1.028v-.762c0-.087.01-.142.019-.174a.072.072 0 0 1 .045-.05.824.824 0 0 1 .17-.023l.045-.004v-.164h-.982V3.34l.046.005a.72.72 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.019.087.019.173v1.713c0 .086-.01.141-.019.173a.07.07 0 0 1-.05.05.72.72 0 0 1-.164.023l-.046.005v.169h.982ZM74.465 3.372c.027.023.06.064.1.142l.699 1.287v.503c0 .086-.01.141-.018.173a.07.07 0 0 1-.05.05.72.72 0 0 1-.165.023l-.046.005v.169l.927-.005.05.005v-.165l-.045-.004a.82.82 0 0 1-.169-.023.072.072 0 0 1-.046-.05.652.652 0 0 1-.018-.174v-.616l.539-1.069a1.07 1.07 0 0 1 .132-.205.244.244 0 0 1 .11-.078l.036-.009v-.16h-.703l-.05-.004v.164h.046c.1 0 .164.018.205.041.032.018.05.046.05.096a.673.673 0 0 1-.086.274l-.402.795-.53-1.014a.195.195 0 0 1-.027-.1c0-.014.004-.023.009-.033a.047.047 0 0 1 .027-.022c.028-.019.082-.028.16-.028h.05v-.173h-.885v.178h.05c.004 0 .023.004.05.027ZM74.538 8.701c0-.119.005-.21.01-.278l.004-.055h-.178l-.005.045a1.678 1.678 0 0 1-.073.38.32.32 0 0 1-.142.173.693.693 0 0 1-.3.055h-.252a.696.696 0 0 1-.169-.014.072.072 0 0 1-.046-.05.648.648 0 0 1-.018-.174V7.066c0-.086.01-.141.018-.173a.072.072 0 0 1 .046-.05.824.824 0 0 1 .169-.023l.046-.005v-.164h-.982V6.82l.046.004a.719.719 0 0 1 .164.023.07.07 0 0 1 .05.05c.01.032.018.087.018.174v1.703c0 .087-.009.142-.018.174a.07.07 0 0 1-.05.05.72.72 0 0 1-.164.023l-.046.004v.164h1.9l-.005-.054a5.229 5.229 0 0 1-.023-.434Z" }) })
|
|
15445
15417
|
] }),
|
|
15446
|
-
/* @__PURE__ */
|
|
15418
|
+
/* @__PURE__ */ jsx16(
|
|
15447
15419
|
"path",
|
|
15448
15420
|
{
|
|
15449
15421
|
fill: "currentColor",
|
|
15450
15422
|
d: "M1 2.706h3.248c.684 0 1.245.066 1.683.198.438.122.785.298 1.039.526.263.219.443.482.539.789a3.1 3.1 0 0 1 .145.96c0 .394-.088.762-.263 1.104-.176.333-.496.61-.96.829.298.131.543.28.736.447.193.167.346.346.46.54.114.183.193.38.237.59a3.206 3.206 0 0 1-.118 1.71c-.114.342-.307.64-.579.895-.272.245-.627.442-1.065.591-.438.14-.978.21-1.618.21H1V2.707ZM4.431 6.56c.622 0 1.056-.114 1.302-.342.245-.228.368-.557.368-.987 0-.447-.145-.767-.434-.96-.28-.201-.772-.302-1.473-.302H2.538v2.59h1.894Zm0 4.26c.377 0 .688-.035.933-.105.255-.07.452-.17.592-.302.15-.132.255-.29.316-.474s.092-.39.092-.618c0-.473-.136-.833-.408-1.078-.263-.254-.723-.382-1.38-.382H2.537v2.96h1.894Zm6.373-8.114v1.486H9.253V2.706h1.552Zm-.026 2.552v6.838h-1.5V5.258h1.5ZM13.976 8.9c.009.439.061.798.158 1.079.105.28.236.504.394.67.167.167.355.28.566.342.21.062.43.092.657.092.246 0 .474-.043.684-.131.21-.088.395-.224.552-.408.158-.193.28-.443.369-.75.087-.306.131-.683.131-1.13 0-.43-.048-.794-.145-1.092a2.062 2.062 0 0 0-.355-.736 1.314 1.314 0 0 0-.539-.421 1.566 1.566 0 0 0-.631-.132 2.06 2.06 0 0 0-.842.158 1.493 1.493 0 0 0-.565.447 1.9 1.9 0 0 0-.329.697c-.07.263-.105.557-.105.881V8.9Zm.013-6.194v3.446c.272-.36.583-.631.934-.816.36-.192.775-.289 1.249-.289.49 0 .916.088 1.276.263.359.176.657.421.894.737a3.2 3.2 0 0 1 .526 1.144c.123.438.184.925.184 1.46 0 .56-.07 1.07-.21 1.525-.14.447-.342.828-.605 1.144a2.768 2.768 0 0 1-.947.736c-.368.167-.78.25-1.236.25-.412 0-.794-.079-1.144-.236-.351-.158-.671-.421-.96-.79v.816h-1.447v-9.39h1.486Zm8.053 0v9.39h-1.5v-9.39h1.5Zm7.8 7.365c-.123.71-.426 1.262-.908 1.657-.482.386-1.175.578-2.078.578-1.087 0-1.916-.31-2.485-.933-.561-.632-.842-1.517-.842-2.657 0-.587.079-1.109.237-1.565.166-.456.394-.837.684-1.144a2.868 2.868 0 0 1 1.052-.71c.412-.167.863-.25 1.354-.25.526 0 .982.083 1.368.25.386.158.706.386.96.684.254.29.443.64.565 1.052.123.403.184.855.184 1.354v.658h-4.905c.018.622.176 1.127.474 1.512.298.386.75.579 1.354.579.474 0 .829-.092 1.065-.276.237-.184.395-.447.474-.79h1.446Zm-1.368-2.065c0-.561-.132-1.004-.395-1.328-.263-.325-.684-.487-1.262-.487-.553 0-.973.167-1.263.5-.29.324-.456.763-.5 1.315h3.42Zm8.715-5.3h1.578l3.577 9.39h-1.696l-.881-2.393h-3.643l-.868 2.393h-1.644l3.577-9.39Zm2.144 5.668-1.394-3.866-1.381 3.866h2.775Zm3.992-3.116h1.46v.946c.28-.377.6-.661.96-.854.367-.202.788-.303 1.262-.303.482 0 .903.088 1.262.263.36.167.658.408.894.723.246.316.426.697.54 1.145.122.438.184.929.184 1.472 0 .553-.07 1.057-.21 1.513a3.46 3.46 0 0 1-.606 1.157 2.642 2.642 0 0 1-.933.736c-.368.167-.785.25-1.25.25-.368 0-.727-.07-1.078-.21-.35-.14-.68-.399-.986-.776v3.327h-1.5v-9.39Zm1.485 3.537c0 .447.049.82.145 1.118.097.29.224.522.382.697.166.175.355.298.565.368.22.07.447.105.684.105.245 0 .473-.043.684-.131.21-.088.394-.228.552-.421.158-.193.28-.443.368-.75.088-.306.132-.679.132-1.117 0-.447-.048-.82-.145-1.118a1.933 1.933 0 0 0-.368-.737 1.229 1.229 0 0 0-.526-.407 1.718 1.718 0 0 0-.631-.119c-.535 0-.978.176-1.329.526-.342.351-.513.903-.513 1.657v.33Zm6.541-3.537h1.46v.946c.28-.377.6-.661.96-.854a2.585 2.585 0 0 1 1.262-.303c.482 0 .903.088 1.263.263.36.167.657.408.894.723.245.316.425.697.54 1.145.122.438.183.929.183 1.472 0 .553-.07 1.057-.21 1.513a3.46 3.46 0 0 1-.605 1.157 2.642 2.642 0 0 1-.934.736c-.368.167-.784.25-1.25.25a2.88 2.88 0 0 1-1.078-.21c-.35-.14-.679-.399-.986-.776v3.327h-1.499v-9.39Zm1.486 3.537c0 .447.048.82.145 1.118.096.29.223.522.381.697.167.175.355.298.566.368.219.07.447.105.683.105.246 0 .474-.043.684-.131a1.41 1.41 0 0 0 .553-.421c.157-.193.28-.443.368-.75.087-.306.131-.679.131-1.117 0-.447-.048-.82-.144-1.118a1.933 1.933 0 0 0-.369-.737 1.228 1.228 0 0 0-.526-.407 1.717 1.717 0 0 0-.63-.119c-.536 0-.978.176-1.329.526-.342.351-.513.903-.513 1.657v.33Z"
|
|
15451
15423
|
}
|
|
15452
15424
|
),
|
|
15453
|
-
/* @__PURE__ */
|
|
15454
|
-
/* @__PURE__ */
|
|
15425
|
+
/* @__PURE__ */ jsxs10("defs", { children: [
|
|
15426
|
+
/* @__PURE__ */ jsxs10(
|
|
15455
15427
|
"linearGradient",
|
|
15456
15428
|
{
|
|
15457
15429
|
id: "bible-app-logo-lockup-gradient-a",
|
|
@@ -15461,12 +15433,12 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15461
15433
|
y2: 16.438,
|
|
15462
15434
|
gradientUnits: "userSpaceOnUse",
|
|
15463
15435
|
children: [
|
|
15464
|
-
/* @__PURE__ */
|
|
15465
|
-
/* @__PURE__ */
|
|
15436
|
+
/* @__PURE__ */ jsx16("stop", { stopColor: "#C93D34" }),
|
|
15437
|
+
/* @__PURE__ */ jsx16("stop", { offset: 1, stopColor: "#7A2629" })
|
|
15466
15438
|
]
|
|
15467
15439
|
}
|
|
15468
15440
|
),
|
|
15469
|
-
/* @__PURE__ */
|
|
15441
|
+
/* @__PURE__ */ jsxs10(
|
|
15470
15442
|
"linearGradient",
|
|
15471
15443
|
{
|
|
15472
15444
|
id: "bible-app-logo-lockup-gradient-c",
|
|
@@ -15476,12 +15448,12 @@ var SvgComponent3 = (props) => /* @__PURE__ */ jsxs11(
|
|
|
15476
15448
|
y2: 16.438,
|
|
15477
15449
|
gradientUnits: "userSpaceOnUse",
|
|
15478
15450
|
children: [
|
|
15479
|
-
/* @__PURE__ */
|
|
15480
|
-
/* @__PURE__ */
|
|
15451
|
+
/* @__PURE__ */ jsx16("stop", { stopColor: "#C93D34" }),
|
|
15452
|
+
/* @__PURE__ */ jsx16("stop", { offset: 1, stopColor: "#7A2629" })
|
|
15481
15453
|
]
|
|
15482
15454
|
}
|
|
15483
15455
|
),
|
|
15484
|
-
/* @__PURE__ */
|
|
15456
|
+
/* @__PURE__ */ jsx16("clipPath", { id: "bible-app-logo-lockup-clip", children: /* @__PURE__ */ jsx16("path", { fill: "#fff", d: "M65.52 2.472h12.521V9.68h-12.52z" }) })
|
|
15485
15457
|
] })
|
|
15486
15458
|
]
|
|
15487
15459
|
}
|
|
@@ -15494,7 +15466,7 @@ import {
|
|
|
15494
15466
|
getDayOfYear,
|
|
15495
15467
|
useVersion as useVersion3
|
|
15496
15468
|
} from "@youversion/platform-react-hooks";
|
|
15497
|
-
import { jsx as
|
|
15469
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
15498
15470
|
async function share({ title, text, url: url2 }) {
|
|
15499
15471
|
if (navigator.share) {
|
|
15500
15472
|
try {
|
|
@@ -15520,8 +15492,8 @@ function VerseOfTheDay({
|
|
|
15520
15492
|
showBibleAppAttribution = true,
|
|
15521
15493
|
size = "default"
|
|
15522
15494
|
}) {
|
|
15523
|
-
const day =
|
|
15524
|
-
const verseRef =
|
|
15495
|
+
const day = React10.useMemo(() => dayOfYear || getDayOfYear(/* @__PURE__ */ new Date()), [dayOfYear]);
|
|
15496
|
+
const verseRef = React10.useRef(null);
|
|
15525
15497
|
const { data, loading: loadingVerseOfTheDay, error: errorVerseOfTheDay } = useVerseOfTheDay(day);
|
|
15526
15498
|
const {
|
|
15527
15499
|
passage,
|
|
@@ -15553,34 +15525,34 @@ function VerseOfTheDay({
|
|
|
15553
15525
|
await share({ text });
|
|
15554
15526
|
}
|
|
15555
15527
|
};
|
|
15556
|
-
return /* @__PURE__ */
|
|
15528
|
+
return /* @__PURE__ */ jsxs11(
|
|
15557
15529
|
"section",
|
|
15558
15530
|
{
|
|
15559
15531
|
"data-size": size,
|
|
15560
15532
|
className: "yv:data-[size=lg]:p-8 yv:data-[size=default]:p-4 yv:*:shrink-0 yv:font-sans yv:flex yv:flex-col yv:gap-3 yv:max-w-screen-sm yv:p-4 yv:shadow yv:rounded-2xl",
|
|
15561
15533
|
children: [
|
|
15562
|
-
/* @__PURE__ */
|
|
15563
|
-
showSunIcon ? /* @__PURE__ */
|
|
15534
|
+
/* @__PURE__ */ jsxs11("div", { className: "yv:flex yv:items-center yv:gap-2", children: [
|
|
15535
|
+
showSunIcon ? /* @__PURE__ */ jsx17(
|
|
15564
15536
|
"div",
|
|
15565
15537
|
{
|
|
15566
15538
|
"data-slot": "card-icon",
|
|
15567
15539
|
className: "yv:col-start-1 yv:row-start-1 yv:self-start yv:justify-self-start",
|
|
15568
|
-
children: /* @__PURE__ */
|
|
15540
|
+
children: /* @__PURE__ */ jsx17(SvgComponent, { className: "yv:shrink-0 yv:h-10 yv:w-10" })
|
|
15569
15541
|
}
|
|
15570
15542
|
) : null,
|
|
15571
|
-
/* @__PURE__ */
|
|
15543
|
+
/* @__PURE__ */ jsx17("div", { className: "yv:grow yv:grid", children: /* @__PURE__ */ jsx17(
|
|
15572
15544
|
"p",
|
|
15573
15545
|
{
|
|
15574
15546
|
className: "trim-both yv:line-clamp-1 yv:text-muted-foreground yv:uppercase yv:text-xs yv:font-medium yv:select-none",
|
|
15575
15547
|
children: "Verse of The Day"
|
|
15576
15548
|
}
|
|
15577
15549
|
) }),
|
|
15578
|
-
showShareButton ? /* @__PURE__ */
|
|
15550
|
+
showShareButton ? /* @__PURE__ */ jsx17(
|
|
15579
15551
|
"div",
|
|
15580
15552
|
{
|
|
15581
15553
|
"data-slot": "card-action",
|
|
15582
15554
|
className: "yv:col-start-2 yv:row-span-2 yv:row-start-1 yv:self-start yv:justify-self-end",
|
|
15583
|
-
children: /* @__PURE__ */
|
|
15555
|
+
children: /* @__PURE__ */ jsx17(
|
|
15584
15556
|
Button,
|
|
15585
15557
|
{
|
|
15586
15558
|
"aria-label": "Share",
|
|
@@ -15588,13 +15560,13 @@ function VerseOfTheDay({
|
|
|
15588
15560
|
onClick: () => void handleShareVerse(),
|
|
15589
15561
|
size: "icon",
|
|
15590
15562
|
variant: "ghost",
|
|
15591
|
-
children: /* @__PURE__ */
|
|
15563
|
+
children: /* @__PURE__ */ jsx17(SvgComponent2, { className: "yv:h-6! yv:w-6!" })
|
|
15592
15564
|
}
|
|
15593
15565
|
)
|
|
15594
15566
|
}
|
|
15595
15567
|
) : null
|
|
15596
15568
|
] }),
|
|
15597
|
-
/* @__PURE__ */
|
|
15569
|
+
/* @__PURE__ */ jsx17("div", { children: passage ? /* @__PURE__ */ jsx17(
|
|
15598
15570
|
Verse.Html,
|
|
15599
15571
|
{
|
|
15600
15572
|
ref: verseRef,
|
|
@@ -15603,12 +15575,12 @@ function VerseOfTheDay({
|
|
|
15603
15575
|
html: passage?.content || ""
|
|
15604
15576
|
}
|
|
15605
15577
|
) : null }),
|
|
15606
|
-
/* @__PURE__ */
|
|
15607
|
-
showBibleAppAttribution ? /* @__PURE__ */
|
|
15578
|
+
/* @__PURE__ */ jsx17("p", { className: "yv:text-(--yv-gray-30) yv:font-medium yv:text-sm", children: referenceText }),
|
|
15579
|
+
showBibleAppAttribution ? /* @__PURE__ */ jsx17(
|
|
15608
15580
|
"div",
|
|
15609
15581
|
{
|
|
15610
15582
|
className: "yv:grid yv:grid-cols-1 yv:mt-4 yv:justify-between yv:items-center yv:gap-2 yv:w-full",
|
|
15611
|
-
children: /* @__PURE__ */
|
|
15583
|
+
children: /* @__PURE__ */ jsx17(SvgComponent3, { "data-slot": "attribution", className: "yv:justify-self-end" })
|
|
15612
15584
|
}
|
|
15613
15585
|
) : null
|
|
15614
15586
|
]
|
|
@@ -15618,7 +15590,7 @@ function VerseOfTheDay({
|
|
|
15618
15590
|
|
|
15619
15591
|
// src/components/bible-widget-view.tsx
|
|
15620
15592
|
import { usePassage as usePassage3, useVersion as useVersion4 } from "@youversion/platform-react-hooks";
|
|
15621
|
-
import { jsx as
|
|
15593
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
15622
15594
|
function BibleWidgetView({
|
|
15623
15595
|
reference,
|
|
15624
15596
|
versionId,
|
|
@@ -15631,19 +15603,19 @@ function BibleWidgetView({
|
|
|
15631
15603
|
include_headings: true,
|
|
15632
15604
|
include_notes: true
|
|
15633
15605
|
});
|
|
15634
|
-
return /* @__PURE__ */
|
|
15606
|
+
return /* @__PURE__ */ jsxs12(
|
|
15635
15607
|
"section",
|
|
15636
15608
|
{
|
|
15637
15609
|
"data-yv-sdk": true,
|
|
15638
15610
|
"data-yv-theme": background === "dark" ? "dark" : "light",
|
|
15639
15611
|
className: "yv:flex yv:flex-col yv:bg-card yv:p-6 yv:max-w-md yv:rounded-2xl",
|
|
15640
15612
|
children: [
|
|
15641
|
-
passage?.human_reference ? /* @__PURE__ */
|
|
15613
|
+
passage?.human_reference ? /* @__PURE__ */ jsxs12("h2", { className: "yv:font-bold yv:tracking-widest yv:text-xs yv:uppercase", children: [
|
|
15642
15614
|
passage.human_reference,
|
|
15643
15615
|
" ",
|
|
15644
15616
|
version2?.local_abbreviation
|
|
15645
15617
|
] }) : null,
|
|
15646
|
-
/* @__PURE__ */
|
|
15618
|
+
/* @__PURE__ */ jsx18(
|
|
15647
15619
|
BibleTextView,
|
|
15648
15620
|
{
|
|
15649
15621
|
fontSize: 16,
|
|
@@ -15652,9 +15624,9 @@ function BibleWidgetView({
|
|
|
15652
15624
|
versionId
|
|
15653
15625
|
}
|
|
15654
15626
|
),
|
|
15655
|
-
/* @__PURE__ */
|
|
15656
|
-
/* @__PURE__ */
|
|
15657
|
-
/* @__PURE__ */
|
|
15627
|
+
/* @__PURE__ */ jsxs12("div", { className: "yv:grid yv:grid-cols-[1fr_auto] yv:gap-4 yv:items-center yv:mt-4", children: [
|
|
15628
|
+
/* @__PURE__ */ jsx18("div", { className: "yv:text-balance yv:text-muted-foreground yv:justify-self-start yv:font-bold yv:text-[0.5rem]", children: version2?.copyright_short }),
|
|
15629
|
+
/* @__PURE__ */ jsx18("div", { className: "yv:justify-self-end", children: /* @__PURE__ */ jsx18(SvgComponent3, { fontSize: 12 }) })
|
|
15658
15630
|
] })
|
|
15659
15631
|
]
|
|
15660
15632
|
}
|
|
@@ -15662,17 +15634,18 @@ function BibleWidgetView({
|
|
|
15662
15634
|
}
|
|
15663
15635
|
|
|
15664
15636
|
// src/index.ts
|
|
15665
|
-
import {
|
|
15637
|
+
import {
|
|
15638
|
+
YouVersionProvider,
|
|
15639
|
+
useYVAuth as useYVAuth2
|
|
15640
|
+
} from "@youversion/platform-react-hooks";
|
|
15641
|
+
injectStyles();
|
|
15666
15642
|
export {
|
|
15667
15643
|
ApiClient,
|
|
15668
|
-
AuthClient,
|
|
15669
|
-
AuthenticationStrategyRegistry,
|
|
15670
15644
|
BOOK_CANON,
|
|
15671
15645
|
BOOK_IDS,
|
|
15672
15646
|
BibleChapterPicker,
|
|
15673
15647
|
BibleClient,
|
|
15674
15648
|
BibleReader,
|
|
15675
|
-
BibleSDKProvider,
|
|
15676
15649
|
BibleTextView,
|
|
15677
15650
|
BibleVersionPicker,
|
|
15678
15651
|
BibleWidgetView,
|
|
@@ -15685,13 +15658,10 @@ export {
|
|
|
15685
15658
|
SignInWithYouVersionResult,
|
|
15686
15659
|
URLBuilder,
|
|
15687
15660
|
VerseOfTheDay,
|
|
15688
|
-
WebAuthenticationStrategy,
|
|
15689
|
-
YVPErrorBoundary,
|
|
15690
|
-
YVPProvider,
|
|
15691
15661
|
YouVersionAPI,
|
|
15692
15662
|
YouVersionAPIUsers,
|
|
15693
15663
|
YouVersionPlatformConfiguration,
|
|
15664
|
+
YouVersionProvider,
|
|
15694
15665
|
YouVersionUserInfo,
|
|
15695
|
-
|
|
15696
|
-
useYVP
|
|
15666
|
+
useYVAuth2 as useYVAuth
|
|
15697
15667
|
};
|