@roxyapi/ui 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/components/natal-chart.js +5 -5
- package/dist/cdn/components/natal-chart.js.map +3 -3
- package/dist/cdn/components/transits-table.js +92 -78
- package/dist/cdn/components/transits-table.js.map +3 -3
- package/dist/cdn/components/yoga-list.js +13 -13
- package/dist/cdn/components/yoga-list.js.map +4 -4
- package/dist/cdn/roxy-ui.js +486 -472
- package/dist/cdn/roxy-ui.js.map +3 -3
- package/dist/components/natal-chart.js +2 -2
- package/dist/components/natal-chart.js.map +2 -2
- package/dist/components/transits-table.d.ts +1 -1
- package/dist/components/transits-table.d.ts.map +1 -1
- package/dist/components/transits-table.js +87 -72
- package/dist/components/transits-table.js.map +2 -2
- package/dist/components/yoga-list.d.ts.map +1 -1
- package/dist/components/yoga-list.js +2 -21
- package/dist/components/yoga-list.js.map +3 -3
- package/dist/index.cjs +92 -77
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +92 -77
- package/dist/index.js.map +2 -2
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/natal-chart.ts +2 -2
- package/src/components/transits-table.ts +92 -77
- package/src/components/yoga-list.ts +2 -3
- package/src/version.ts +1 -1
package/dist/cdn/roxy-ui.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var RoxyUI=(()=>{var Ae=Object.defineProperty;var
|
|
2
|
-
\f\r]`,fe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g")
|
|
1
|
+
"use strict";var RoxyUI=(()=>{var Ae=Object.defineProperty;var pr=Object.getOwnPropertyDescriptor;var Gr=Object.getOwnPropertyNames;var jr=Object.prototype.hasOwnProperty;var Ir=(i,a)=>{for(var e in a)Ae(i,e,{get:a[e],enumerable:!0})},Br=(i,a,e,r)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Gr(a))!jr.call(i,s)&&s!==e&&Ae(i,s,{get:()=>a[s],enumerable:!(r=pr(a,s))||r.enumerable});return i};var qr=i=>Br(Ae({},"__esModule",{value:!0}),i),p=(i,a,e,r)=>{for(var s=r>1?void 0:r?pr(a,e):a,o=i.length-1,l;o>=0;o--)(l=i[o])&&(s=(r?l(a,e,s):l(s))||s);return r&&s&&Ae(a,e,s),s};var Ct={};Ir(Ct,{ROXY_COMPONENTS:()=>Ie,ROXY_UI_COMPONENTS:()=>At,ROXY_UI_VERSION:()=>Hr,RoxyAshtakavargaGrid:()=>M,RoxyBiorhythmChart:()=>D,RoxyChoghadiyaGrid:()=>re,RoxyCompatibilityCard:()=>H,RoxyDashaTimeline:()=>G,RoxyData:()=>j,RoxyDivisionalChart:()=>I,RoxyDoshaCard:()=>B,RoxyEndpointForm:()=>_,RoxyGunaMilan:()=>te,RoxyHexagram:()=>q,RoxyHoroscopeCard:()=>U,RoxyKpPlanetsTable:()=>ae,RoxyLocationSearch:()=>T,RoxyMoonPhase:()=>Y,RoxyNatalChart:()=>K,RoxyNumerologyCard:()=>V,RoxyPanchangTable:()=>F,RoxyShadbalaTable:()=>se,RoxySynastryChart:()=>oe,RoxyTarotCard:()=>W,RoxyTarotSpread:()=>J,RoxyTransitsTable:()=>ie,RoxyVedicKundli:()=>X,RoxyYogaList:()=>Z});var Ce=globalThis,Ee=Ce.ShadowRoot&&(Ce.ShadyCSS===void 0||Ce.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Be=Symbol(),mr=new WeakMap,ye=class{constructor(a,e,r){if(this._$cssResult$=!0,r!==Be)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=a,this.t=e}get styleSheet(){let a=this.o,e=this.t;if(Ee&&a===void 0){let r=e!==void 0&&e.length===1;r&&(a=mr.get(e)),a===void 0&&((this.o=a=new CSSStyleSheet).replaceSync(this.cssText),r&&mr.set(e,a))}return a}toString(){return this.cssText}},hr=i=>new ye(typeof i=="string"?i:i+"",void 0,Be),x=(i,...a)=>{let e=i.length===1?i[0]:a.reduce((r,s,o)=>r+(l=>{if(l._$cssResult$===!0)return l.cssText;if(typeof l=="number")return l;throw Error("Value passed to 'css' function must be a 'css' function result: "+l+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+i[o+1],i[0]);return new ye(e,i,Be)},gr=(i,a)=>{if(Ee)i.adoptedStyleSheets=a.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of a){let r=document.createElement("style"),s=Ce.litNonce;s!==void 0&&r.setAttribute("nonce",s),r.textContent=e.cssText,i.appendChild(r)}},qe=Ee?i=>i:i=>i instanceof CSSStyleSheet?(a=>{let e="";for(let r of a.cssRules)e+=r.cssText;return hr(e)})(i):i;var{is:Ur,defineProperty:Yr,getOwnPropertyDescriptor:Kr,getOwnPropertyNames:Vr,getOwnPropertySymbols:Fr,getPrototypeOf:Wr}=Object,Re=globalThis,yr=Re.trustedTypes,Jr=yr?yr.emptyScript:"",Xr=Re.reactiveElementPolyfillSupport,ue=(i,a)=>i,xe={toAttribute(i,a){switch(a){case Boolean:i=i?Jr:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,a){let e=i;switch(a){case Boolean:e=i!==null;break;case Number:e=i===null?null:Number(i);break;case Object:case Array:try{e=JSON.parse(i)}catch{e=null}}return e}},Pe=(i,a)=>!Ur(i,a),ur={attribute:!0,type:String,converter:xe,reflect:!1,useDefault:!1,hasChanged:Pe};Symbol.metadata??=Symbol("metadata"),Re.litPropertyMetadata??=new WeakMap;var N=class extends HTMLElement{static addInitializer(a){this._$Ei(),(this.l??=[]).push(a)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(a,e=ur){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(a)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(a,e),!e.noAccessor){let r=Symbol(),s=this.getPropertyDescriptor(a,r,e);s!==void 0&&Yr(this.prototype,a,s)}}static getPropertyDescriptor(a,e,r){let{get:s,set:o}=Kr(this.prototype,a)??{get(){return this[e]},set(l){this[e]=l}};return{get:s,set(l){let d=s?.call(this);o?.call(this,l),this.requestUpdate(a,d,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(a){return this.elementProperties.get(a)??ur}static _$Ei(){if(this.hasOwnProperty(ue("elementProperties")))return;let a=Wr(this);a.finalize(),a.l!==void 0&&(this.l=[...a.l]),this.elementProperties=new Map(a.elementProperties)}static finalize(){if(this.hasOwnProperty(ue("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ue("properties"))){let e=this.properties,r=[...Vr(e),...Fr(e)];for(let s of r)this.createProperty(s,e[s])}let a=this[Symbol.metadata];if(a!==null){let e=litPropertyMetadata.get(a);if(e!==void 0)for(let[r,s]of e)this.elementProperties.set(r,s)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let s=this._$Eu(e,r);s!==void 0&&this._$Eh.set(s,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(a){let e=[];if(Array.isArray(a)){let r=new Set(a.flat(1/0).reverse());for(let s of r)e.unshift(qe(s))}else a!==void 0&&e.push(qe(a));return e}static _$Eu(a,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof a=="string"?a.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(a=>this.enableUpdating=a),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(a=>a(this))}addController(a){(this._$EO??=new Set).add(a),this.renderRoot!==void 0&&this.isConnected&&a.hostConnected?.()}removeController(a){this._$EO?.delete(a)}_$E_(){let a=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(a.set(r,this[r]),delete this[r]);a.size>0&&(this._$Ep=a)}createRenderRoot(){let a=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return gr(a,this.constructor.elementStyles),a}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(a=>a.hostConnected?.())}enableUpdating(a){}disconnectedCallback(){this._$EO?.forEach(a=>a.hostDisconnected?.())}attributeChangedCallback(a,e,r){this._$AK(a,r)}_$ET(a,e){let r=this.constructor.elementProperties.get(a),s=this.constructor._$Eu(a,r);if(s!==void 0&&r.reflect===!0){let o=(r.converter?.toAttribute!==void 0?r.converter:xe).toAttribute(e,r.type);this._$Em=a,o==null?this.removeAttribute(s):this.setAttribute(s,o),this._$Em=null}}_$AK(a,e){let r=this.constructor,s=r._$Eh.get(a);if(s!==void 0&&this._$Em!==s){let o=r.getPropertyOptions(s),l=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:xe;this._$Em=s;let d=l.fromAttribute(e,o.type);this[s]=d??this._$Ej?.get(s)??d,this._$Em=null}}requestUpdate(a,e,r,s=!1,o){if(a!==void 0){let l=this.constructor;if(s===!1&&(o=this[a]),r??=l.getPropertyOptions(a),!((r.hasChanged??Pe)(o,e)||r.useDefault&&r.reflect&&o===this._$Ej?.get(a)&&!this.hasAttribute(l._$Eu(a,r))))return;this.C(a,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(a,e,{useDefault:r,reflect:s,wrapped:o},l){r&&!(this._$Ej??=new Map).has(a)&&(this._$Ej.set(a,l??e??this[a]),o!==!0||l!==void 0)||(this._$AL.has(a)||(this.hasUpdated||r||(e=void 0),this._$AL.set(a,e)),s===!0&&this._$Em!==a&&(this._$Eq??=new Set).add(a))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let a=this.scheduleUpdate();return a!=null&&await a,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[s,o]of r){let{wrapped:l}=o,d=this[s];l!==!0||this._$AL.has(s)||d===void 0||this.C(s,void 0,o,d)}}let a=!1,e=this._$AL;try{a=this.shouldUpdate(e),a?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EM()}catch(r){throw a=!1,this._$EM(),r}a&&this._$AE(e)}willUpdate(a){}_$AE(a){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(a)),this.updated(a)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(a){return!0}update(a){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(a){}firstUpdated(a){}};N.elementStyles=[],N.shadowRootOptions={mode:"open"},N[ue("elementProperties")]=new Map,N[ue("finalized")]=new Map,Xr?.({ReactiveElement:N}),(Re.reactiveElementVersions??=[]).push("2.1.2");var Je=globalThis,xr=i=>i,Te=Je.trustedTypes,fr=Te?Te.createPolicy("lit-html",{createHTML:i=>i}):void 0,Sr="$lit$",Q=`lit$${Math.random().toFixed(9).slice(2)}$`,Ar="?"+Q,Zr=`<${Ar}>`,de=document,ve=()=>de.createComment(""),be=i=>i===null||typeof i!="object"&&typeof i!="function",Xe=Array.isArray,Qr=i=>Xe(i)||typeof i?.[Symbol.iterator]=="function",Ue=`[
|
|
2
|
+
\f\r]`,fe=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,vr=/-->/g,br=/>/g,ne=RegExp(`>|${Ue}(?:([^\\s"'>=/]+)(${Ue}*=${Ue}*(?:[^
|
|
3
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),$r=/'/g,wr=/"/g,Cr=/^(?:script|style|textarea|title)$/i,Ze=i=>(a,...e)=>({_$litType$:i,strings:a,values:e}),t=Ze(1),S=Ze(2),_t=Ze(3),ce=Symbol.for("lit-noChange"),n=Symbol.for("lit-nothing"),kr=new WeakMap,le=de.createTreeWalker(de,129);function Er(i,a){if(!Xe(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return fr!==void 0?fr.createHTML(a):a}var et=(i,a)=>{let e=i.length-1,r=[],s,o=a===2?"<svg>":a===3?"<math>":"",l=fe;for(let d=0;d<e;d++){let c=i[d],m,h,g=-1,f=0;for(;f<c.length&&(l.lastIndex=f,h=l.exec(c),h!==null);)f=l.lastIndex,l===fe?h[1]==="!--"?l=vr:h[1]!==void 0?l=br:h[2]!==void 0?(Cr.test(h[2])&&(s=RegExp("</"+h[2],"g")),l=ne):h[3]!==void 0&&(l=ne):l===ne?h[0]===">"?(l=s??fe,g=-1):h[1]===void 0?g=-2:(g=l.lastIndex-h[2].length,m=h[1],l=h[3]===void 0?ne:h[3]==='"'?wr:$r):l===wr||l===$r?l=ne:l===vr||l===br?l=fe:(l=ne,s=void 0);let k=l===ne&&i[d+1].startsWith("/>")?" ":"";o+=l===fe?c+Zr:g>=0?(r.push(m),c.slice(0,g)+Sr+c.slice(g)+Q+k):c+Q+(g===-2?d:k)}return[Er(i,o+(i[e]||"<?>")+(a===2?"</svg>":a===3?"</math>":"")),r]},$e=class i{constructor({strings:a,_$litType$:e},r){let s;this.parts=[];let o=0,l=0,d=a.length-1,c=this.parts,[m,h]=et(a,e);if(this.el=i.createElement(m,r),le.currentNode=this.el.content,e===2||e===3){let g=this.el.content.firstChild;g.replaceWith(...g.childNodes)}for(;(s=le.nextNode())!==null&&c.length<d;){if(s.nodeType===1){if(s.hasAttributes())for(let g of s.getAttributeNames())if(g.endsWith(Sr)){let f=h[l++],k=s.getAttribute(g).split(Q),$=/([.?@])?(.*)/.exec(f);c.push({type:1,index:o,name:$[2],strings:k,ctor:$[1]==="."?Ke:$[1]==="?"?Ve:$[1]==="@"?Fe:ge}),s.removeAttribute(g)}else g.startsWith(Q)&&(c.push({type:6,index:o}),s.removeAttribute(g));if(Cr.test(s.tagName)){let g=s.textContent.split(Q),f=g.length-1;if(f>0){s.textContent=Te?Te.emptyScript:"";for(let k=0;k<f;k++)s.append(g[k],ve()),le.nextNode(),c.push({type:2,index:++o});s.append(g[f],ve())}}}else if(s.nodeType===8)if(s.data===Ar)c.push({type:2,index:o});else{let g=-1;for(;(g=s.data.indexOf(Q,g+1))!==-1;)c.push({type:7,index:o}),g+=Q.length-1}o++}}static createElement(a,e){let r=de.createElement("template");return r.innerHTML=a,r}};function he(i,a,e=i,r){if(a===ce)return a;let s=r!==void 0?e._$Co?.[r]:e._$Cl,o=be(a)?void 0:a._$litDirective$;return s?.constructor!==o&&(s?._$AO?.(!1),o===void 0?s=void 0:(s=new o(i),s._$AT(i,e,r)),r!==void 0?(e._$Co??=[])[r]=s:e._$Cl=s),s!==void 0&&(a=he(i,s._$AS(i,a.values),s,r)),a}var Ye=class{constructor(a,e){this._$AV=[],this._$AN=void 0,this._$AD=a,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(a){let{el:{content:e},parts:r}=this._$AD,s=(a?.creationScope??de).importNode(e,!0);le.currentNode=s;let o=le.nextNode(),l=0,d=0,c=r[0];for(;c!==void 0;){if(l===c.index){let m;c.type===2?m=new we(o,o.nextSibling,this,a):c.type===1?m=new c.ctor(o,c.name,c.strings,this,a):c.type===6&&(m=new We(o,this,a)),this._$AV.push(m),c=r[++d]}l!==c?.index&&(o=le.nextNode(),l++)}return le.currentNode=de,s}p(a){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(a,r,e),e+=r.strings.length-2):r._$AI(a[e])),e++}},we=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(a,e,r,s){this.type=2,this._$AH=n,this._$AN=void 0,this._$AA=a,this._$AB=e,this._$AM=r,this.options=s,this._$Cv=s?.isConnected??!0}get parentNode(){let a=this._$AA.parentNode,e=this._$AM;return e!==void 0&&a?.nodeType===11&&(a=e.parentNode),a}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(a,e=this){a=he(this,a,e),be(a)?a===n||a==null||a===""?(this._$AH!==n&&this._$AR(),this._$AH=n):a!==this._$AH&&a!==ce&&this._(a):a._$litType$!==void 0?this.$(a):a.nodeType!==void 0?this.T(a):Qr(a)?this.k(a):this._(a)}O(a){return this._$AA.parentNode.insertBefore(a,this._$AB)}T(a){this._$AH!==a&&(this._$AR(),this._$AH=this.O(a))}_(a){this._$AH!==n&&be(this._$AH)?this._$AA.nextSibling.data=a:this.T(de.createTextNode(a)),this._$AH=a}$(a){let{values:e,_$litType$:r}=a,s=typeof r=="number"?this._$AC(a):(r.el===void 0&&(r.el=$e.createElement(Er(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===s)this._$AH.p(e);else{let o=new Ye(s,this),l=o.u(this.options);o.p(e),this.T(l),this._$AH=o}}_$AC(a){let e=kr.get(a.strings);return e===void 0&&kr.set(a.strings,e=new $e(a)),e}k(a){Xe(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,s=0;for(let o of a)s===e.length?e.push(r=new i(this.O(ve()),this.O(ve()),this,this.options)):r=e[s],r._$AI(o),s++;s<e.length&&(this._$AR(r&&r._$AB.nextSibling,s),e.length=s)}_$AR(a=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);a!==this._$AB;){let r=xr(a).nextSibling;xr(a).remove(),a=r}}setConnected(a){this._$AM===void 0&&(this._$Cv=a,this._$AP?.(a))}},ge=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(a,e,r,s,o){this.type=1,this._$AH=n,this._$AN=void 0,this.element=a,this.name=e,this._$AM=s,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=n}_$AI(a,e=this,r,s){let o=this.strings,l=!1;if(o===void 0)a=he(this,a,e,0),l=!be(a)||a!==this._$AH&&a!==ce,l&&(this._$AH=a);else{let d=a,c,m;for(a=o[0],c=0;c<o.length-1;c++)m=he(this,d[r+c],e,c),m===ce&&(m=this._$AH[c]),l||=!be(m)||m!==this._$AH[c],m===n?a=n:a!==n&&(a+=(m??"")+o[c+1]),this._$AH[c]=m}l&&!s&&this.j(a)}j(a){a===n?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,a??"")}},Ke=class extends ge{constructor(){super(...arguments),this.type=3}j(a){this.element[this.name]=a===n?void 0:a}},Ve=class extends ge{constructor(){super(...arguments),this.type=4}j(a){this.element.toggleAttribute(this.name,!!a&&a!==n)}},Fe=class extends ge{constructor(a,e,r,s,o){super(a,e,r,s,o),this.type=5}_$AI(a,e=this){if((a=he(this,a,e,0)??n)===ce)return;let r=this._$AH,s=a===n&&r!==n||a.capture!==r.capture||a.once!==r.once||a.passive!==r.passive,o=a!==n&&(r===n||s);s&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,a),this._$AH=a}handleEvent(a){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,a):this._$AH.handleEvent(a)}},We=class{constructor(a,e,r){this.element=a,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(a){he(this,a)}};var rt=Je.litHtmlPolyfillSupport;rt?.($e,we),(Je.litHtmlVersions??=[]).push("3.3.2");var Rr=(i,a,e)=>{let r=e?.renderBefore??a,s=r._$litPart$;if(s===void 0){let o=e?.renderBefore??null;r._$litPart$=s=new we(a.insertBefore(ve(),o),o,void 0,e??{})}return s._$AI(i),s};var Qe=globalThis,u=class extends N{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let a=super.createRenderRoot();return this.renderOptions.renderBefore??=a.firstChild,a}update(a){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(a),this._$Do=Rr(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return ce}};u._$litElement$=!0,u.finalized=!0,Qe.litElementHydrateSupport?.({LitElement:u});var tt=Qe.litElementPolyfillSupport;tt?.({LitElement:u});(Qe.litElementVersions??=[]).push("4.2.2");var v=i=>(a,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,a)}):customElements.define(i,a)};var at={attribute:!0,type:String,converter:xe,reflect:!1,hasChanged:Pe},st=(i=at,a,e)=>{let{kind:r,metadata:s}=e,o=globalThis.litPropertyMetadata.get(s);if(o===void 0&&globalThis.litPropertyMetadata.set(s,o=new Map),r==="setter"&&((i=Object.create(i)).wrapped=!0),o.set(e.name,i),r==="accessor"){let{name:l}=e;return{set(d){let c=a.get.call(this);a.set.call(this,d),this.requestUpdate(l,c,i,!0,d)},init(d){return d!==void 0&&this.C(l,void 0,i,d),d}}}if(r==="setter"){let{name:l}=e;return function(d){let c=this[l];a.call(this,d),this.requestUpdate(l,c,i,!0,d)}}throw Error("Unsupported decorator location: "+r)};function y(i){return(a,e)=>typeof e=="object"?st(i,a,e):((r,s,o)=>{let l=s.hasOwnProperty(o);return s.constructor.createProperty(o,r),l?Object.getOwnPropertyDescriptor(s,o):void 0})(i,a,e)}function E(i){return y({...i,state:!0,attribute:!1})}var L={Sun:"\u2609",Moon:"\u263D",Mercury:"\u263F",Venus:"\u2640",Earth:"\u2641",Mars:"\u2642",Jupiter:"\u2643",Saturn:"\u2644",Uranus:"\u2645",Neptune:"\u2646",Pluto:"\u2647",Rahu:"\u260A",Ketu:"\u260B",Ascendant:"Asc",Lagna:"La",NorthNode:"\u260A",SouthNode:"\u260B","North node":"\u260A","South node":"\u260B",Chiron:"\u26B7",Lilith:"\u26B8","Black moon lilith":"\u26B8"},er={Sun:"Su",Moon:"Mo",Mercury:"Me",Venus:"Ve",Mars:"Ma",Jupiter:"Ju",Saturn:"Sa",Uranus:"Ur",Neptune:"Ne",Pluto:"Pl",Rahu:"Ra",Ketu:"Ke",Ascendant:"Asc",Lagna:"La"},z={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"},rr={Aries:"Ar",Taurus:"Ta",Gemini:"Ge",Cancer:"Cn",Leo:"Le",Virgo:"Vi",Libra:"Li",Scorpio:"Sc",Sagittarius:"Sg",Capricorn:"Cp",Aquarius:"Aq",Pisces:"Pi"},pe=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],_e=pe.map(i=>i.toLowerCase());var tr={heaven:"\u2630",lake:"\u2631",fire:"\u2632",thunder:"\u2633",wind:"\u2634",water:"\u2635",mountain:"\u2636",earth:"\u2637",Heaven:"\u2630",Lake:"\u2631",Fire:"\u2632",Thunder:"\u2633",Wind:"\u2634",Water:"\u2635",Mountain:"\u2636",Earth:"\u2637"},Pr={"new moon":"\u{1F311}","waxing crescent":"\u{1F312}","first quarter":"\u{1F313}","waxing gibbous":"\u{1F314}","full moon":"\u{1F315}","waning gibbous":"\u{1F316}","last quarter":"\u{1F317}","waning crescent":"\u{1F318}"};var b=x`
|
|
4
4
|
:host {
|
|
5
5
|
display: block;
|
|
6
6
|
container-type: inline-size;
|
|
@@ -82,10 +82,10 @@
|
|
|
82
82
|
outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
|
|
83
83
|
outline-offset: 2px;
|
|
84
84
|
}
|
|
85
|
-
`;var
|
|
85
|
+
`;var ot={sarva:"Sarvashtakavarga",bhinna:"Bhinnashtakavarga",pinda:"Shodhya Pinda"},me=["sarva","bhinna","pinda"],M=class extends u{constructor(){super(...arguments);this.data=null;this.activeTab="sarva"}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No ashtakavarga data</div>`;let e=this.data.signs??[];return t`<div class="wrap" aria-label="Ashtakavarga grid">
|
|
86
86
|
<div class="head">
|
|
87
87
|
<h2 class="title">Ashtakavarga</h2>
|
|
88
|
-
${e.length?
|
|
88
|
+
${e.length?t`<p class="subtitle">${e.length} signs</p>`:n}
|
|
89
89
|
</div>
|
|
90
90
|
|
|
91
91
|
<div
|
|
@@ -94,16 +94,16 @@
|
|
|
94
94
|
aria-label="Ashtakavarga views"
|
|
95
95
|
@keydown=${this.onTabKeyDown}
|
|
96
96
|
>
|
|
97
|
-
${me.map(t
|
|
97
|
+
${me.map(r=>t`<button
|
|
98
98
|
class="tab"
|
|
99
99
|
role="tab"
|
|
100
|
-
id="tab-${
|
|
101
|
-
aria-selected=${this.activeTab===
|
|
102
|
-
aria-controls="panel-${
|
|
103
|
-
tabindex=${this.activeTab===
|
|
104
|
-
@click=${()=>{this.activeTab=
|
|
100
|
+
id="tab-${r}"
|
|
101
|
+
aria-selected=${this.activeTab===r?"true":"false"}
|
|
102
|
+
aria-controls="panel-${r}"
|
|
103
|
+
tabindex=${this.activeTab===r?"0":"-1"}
|
|
104
|
+
@click=${()=>{this.activeTab=r}}
|
|
105
105
|
>
|
|
106
|
-
${
|
|
106
|
+
${ot[r]}
|
|
107
107
|
</button>`)}
|
|
108
108
|
</div>
|
|
109
109
|
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
>
|
|
115
115
|
${this.activeTab==="sarva"?this.renderSarva(e):this.activeTab==="bhinna"?this.renderBhinna(e):this.renderPinda()}
|
|
116
116
|
</div>
|
|
117
|
-
</div>`}onTabKeyDown(e){let
|
|
117
|
+
</div>`}onTabKeyDown(e){let r=me.indexOf(this.activeTab);e.key==="ArrowRight"?(e.preventDefault(),this.activeTab=me[(r+1)%me.length],this.focusActiveTab()):e.key==="ArrowLeft"&&(e.preventDefault(),this.activeTab=me[(r-1+me.length)%me.length],this.focusActiveTab())}focusActiveTab(){requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${this.activeTab}`)?.focus()})}heatClass(e){return e<=1?"heat-1":e<=2?"heat-2":e<=3?"heat-3":e<=4?"heat-4":e<=5?"heat-5":e<=6?"heat-6":"heat-7"}renderSarva(e){let r=this.data.sarvashtakavarga;return r?t`<div class="overflow-scroll">
|
|
118
118
|
<table aria-label="Sarvashtakavarga bindu counts per sign">
|
|
119
119
|
<thead>
|
|
120
120
|
<tr>
|
|
@@ -123,10 +123,10 @@
|
|
|
123
123
|
</tr>
|
|
124
124
|
</thead>
|
|
125
125
|
<tbody>
|
|
126
|
-
${e.map((s,o)=>{let l=
|
|
126
|
+
${e.map((s,o)=>{let l=r.bindus[o]??0,d=this.heatClass(l);return t`<tr>
|
|
127
127
|
<td>
|
|
128
128
|
<div class="planet-cell">
|
|
129
|
-
<span class="glyph" aria-hidden="true">${
|
|
129
|
+
<span class="glyph" aria-hidden="true">${z[s]??""}</span>
|
|
130
130
|
${s}
|
|
131
131
|
</div>
|
|
132
132
|
</td>
|
|
@@ -136,28 +136,28 @@
|
|
|
136
136
|
<tfoot>
|
|
137
137
|
<tr class="total-row">
|
|
138
138
|
<td>Total</td>
|
|
139
|
-
<td>${
|
|
139
|
+
<td>${r.total}</td>
|
|
140
140
|
</tr>
|
|
141
141
|
</tfoot>
|
|
142
142
|
</table>
|
|
143
|
-
</div>`:
|
|
143
|
+
</div>`:t`<p class="roxy-empty">No sarvashtakavarga data</p>`}renderBhinna(e){let r=this.data.bhinnashtakavarga;return r?.length?t`<div class="overflow-scroll">
|
|
144
144
|
<table class="bhinna-table" aria-label="Bhinnashtakavarga planet-by-sign grid">
|
|
145
145
|
<thead>
|
|
146
146
|
<tr>
|
|
147
147
|
<th scope="col">Planet</th>
|
|
148
|
-
${e.map(s=>
|
|
148
|
+
${e.map(s=>t`<th scope="col" title=${s}>${z[s]??s.slice(0,2)}</th>`)}
|
|
149
149
|
<th scope="col">Total</th>
|
|
150
150
|
</tr>
|
|
151
151
|
</thead>
|
|
152
152
|
<tbody>
|
|
153
|
-
${
|
|
153
|
+
${r.map(s=>t`<tr>
|
|
154
154
|
<td>${s.planet}</td>
|
|
155
|
-
${s.bindus.map(o=>{let l=this.heatClass(o);return
|
|
155
|
+
${s.bindus.map(o=>{let l=this.heatClass(o);return t`<td class="${`heat-cell ${l}`}">${o}</td>`})}
|
|
156
156
|
<td>${s.total}</td>
|
|
157
157
|
</tr>`)}
|
|
158
158
|
</tbody>
|
|
159
159
|
</table>
|
|
160
|
-
</div>`:
|
|
160
|
+
</div>`:t`<p class="roxy-empty">No bhinnashtakavarga data</p>`}renderPinda(){let e=this.data.shodhyaPinda;return e?.length?t`<div class="overflow-scroll">
|
|
161
161
|
<table aria-label="Shodhya Pinda planet strength scores">
|
|
162
162
|
<thead>
|
|
163
163
|
<tr>
|
|
@@ -168,15 +168,15 @@
|
|
|
168
168
|
</tr>
|
|
169
169
|
</thead>
|
|
170
170
|
<tbody>
|
|
171
|
-
${e.map(t
|
|
172
|
-
<td>${
|
|
173
|
-
<td>${
|
|
174
|
-
<td>${
|
|
175
|
-
<td>${
|
|
171
|
+
${e.map(r=>t`<tr>
|
|
172
|
+
<td>${r.planet}</td>
|
|
173
|
+
<td>${r.rashiPinda}</td>
|
|
174
|
+
<td>${r.grahaPinda}</td>
|
|
175
|
+
<td>${r.shodhyaPinda}</td>
|
|
176
176
|
</tr>`)}
|
|
177
177
|
</tbody>
|
|
178
178
|
</table>
|
|
179
|
-
</div>`:
|
|
179
|
+
</div>`:t`<p class="roxy-empty">No shodhya pinda data</p>`}};M.styles=[b,x`
|
|
180
180
|
.wrap {
|
|
181
181
|
display: grid;
|
|
182
182
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -304,26 +304,26 @@
|
|
|
304
304
|
.bhinna-table td:first-child {
|
|
305
305
|
min-width: 5rem;
|
|
306
306
|
}
|
|
307
|
-
`],
|
|
307
|
+
`],p([y({attribute:!1})],M.prototype,"data",2),p([E()],M.prototype,"activeTab",2),M=p([v("roxy-ashtakavarga-grid")],M);var Tr={physical:"#dc2626",emotional:"#0284c7",intellectual:"#16a34a",intuitive:"#a855f7",aesthetic:"#f59e0b",awareness:"#ec4899",spiritual:"#14b8a6",passion:"#ef4444",mastery:"#6366f1",wisdom:"#475569"},D=class extends u{constructor(){super(...arguments);this.data=null;this.mode="daily"}render(){let e=this.data;return e?this.mode==="critical-days"&&"criticalDays"in e?this.renderCritical(e):this.mode==="forecast"&&"days"in e?this.renderForecast(e):this.renderDaily(e):t`<div class="roxy-empty" role="status">No biorhythm data</div>`}renderDaily(e){let r=e.quickRead??{},s=Object.entries(r).map(([o,l])=>{let d=typeof l=="number"?l:0,c=Math.abs(d)>1?d/100:d;return[o,c]});return t`<section class="wrap" aria-label="Daily biorhythm">
|
|
308
308
|
<header class="head">
|
|
309
309
|
<h2 class="title">Biorhythm</h2>
|
|
310
|
-
${typeof e.energyRating=="number"?
|
|
310
|
+
${typeof e.energyRating=="number"?t`<span class="energy">Energy ${e.energyRating}/10</span>`:n}
|
|
311
311
|
</header>
|
|
312
312
|
<div class="bars" role="list">
|
|
313
|
-
${s.map(([o,l])=>{let d=(l+1)/2*100,
|
|
313
|
+
${s.map(([o,l])=>{let d=(l+1)/2*100,c=Tr[o]??"var(--roxy-accent, #f59e0b)";return t`<div class="bar" role="listitem">
|
|
314
314
|
<span style="text-transform: capitalize">${o}</span>
|
|
315
315
|
<span class="track">
|
|
316
316
|
<span
|
|
317
317
|
class="fill"
|
|
318
|
-
style="width: ${d}%; background: ${
|
|
318
|
+
style="width: ${d}%; background: ${c}"
|
|
319
319
|
></span>
|
|
320
320
|
</span>
|
|
321
321
|
<span class="value">${Math.round(l*100)}%</span>
|
|
322
322
|
</div>`})}
|
|
323
323
|
</div>
|
|
324
|
-
${e.dailyMessage?
|
|
325
|
-
${e.advice?
|
|
326
|
-
</section>`}renderForecast(e){let
|
|
324
|
+
${e.dailyMessage?t`<p class="advice">${e.dailyMessage}</p>`:n}
|
|
325
|
+
${e.advice?t`<p class="advice">${e.advice}</p>`:n}
|
|
326
|
+
</section>`}renderForecast(e){let r=e.days??[];if(r.length===0)return t`<div class="roxy-empty" role="status">No forecast</div>`;let s=600,o=160,l=s/Math.max(r.length-1,1),d=["physical","emotional","intellectual","intuitive"];return t`<section class="wrap" aria-label="Biorhythm forecast">
|
|
327
327
|
<header class="head">
|
|
328
328
|
<h2 class="title">Forecast</h2>
|
|
329
329
|
<span class="energy">${e.startDate} - ${e.endDate}</span>
|
|
@@ -342,17 +342,17 @@
|
|
|
342
342
|
stroke="var(--roxy-border, #e4e4e7)"
|
|
343
343
|
stroke-width="1"
|
|
344
344
|
/>
|
|
345
|
-
${d.map(
|
|
345
|
+
${d.map(c=>{let m=r.map((g,f)=>{let k=g[c]??0,$=f*l,cr=o/2-k/100*(o/2-8);return`${$.toFixed(2)},${cr.toFixed(2)}`}).join(" "),h=Tr[c]??"#475569";return S`<polyline points=${m} fill="none" stroke=${h} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />`})}
|
|
346
346
|
</svg>
|
|
347
|
-
${e.summary?.periodAdvice?
|
|
348
|
-
</section>`}renderCritical(e){return
|
|
347
|
+
${e.summary?.periodAdvice?t`<p class="advice">${e.summary.periodAdvice}</p>`:n}
|
|
348
|
+
</section>`}renderCritical(e){return t`<section class="wrap" aria-label="Critical days">
|
|
349
349
|
<header class="head">
|
|
350
350
|
<h2 class="title">Critical days</h2>
|
|
351
351
|
<span class="energy">${e.totalCriticalDays} total</span>
|
|
352
352
|
</header>
|
|
353
353
|
<div>
|
|
354
|
-
${e.criticalDays.map(t
|
|
355
|
-
>${
|
|
354
|
+
${e.criticalDays.map(r=>t`<span class="crit"
|
|
355
|
+
>${r.date} · ${r.cycle} ${r.severity}</span
|
|
356
356
|
>`)}
|
|
357
357
|
</div>
|
|
358
358
|
</section>`}};D.styles=[b,x`
|
|
@@ -431,35 +431,35 @@
|
|
|
431
431
|
display: inline-block;
|
|
432
432
|
margin: 2px;
|
|
433
433
|
}
|
|
434
|
-
`],
|
|
434
|
+
`],p([y({attribute:!1})],D.prototype,"data",2),p([y({type:String,reflect:!0})],D.prototype,"mode",2),D=p([v("roxy-biorhythm-chart")],D);function C(i){return i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():""}function ee(i){return i.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^\w/,a=>a.toUpperCase())}function Lr(i){try{let a=new Date(i);return Number.isNaN(a.getTime())?i:a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return i}}var re=class extends u{constructor(){super(...arguments);this.data=null}renderTile(e){let r=e.effect==="Good"?"good":e.effect==="Bad"?"bad":"neutral",s=L[C(e.lord)]??"",o=`${Lr(e.start)} - ${Lr(e.end)}`;return t`<div class="cho-tile ${r}" role="listitem">
|
|
435
435
|
<span class="tile-name">${e.name}</span>
|
|
436
436
|
<span class="tile-time" aria-label="Time range">${o}</span>
|
|
437
437
|
<span class="tile-lord">
|
|
438
|
-
${s?
|
|
438
|
+
${s?t`<span aria-hidden="true">${s}</span>`:n}
|
|
439
439
|
${e.lord}
|
|
440
440
|
</span>
|
|
441
|
-
</div>`}render(){if(!this.data)return
|
|
441
|
+
</div>`}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No choghadiya data</div>`;let{date:e,dayChoghadiya:r,nightChoghadiya:s}=this.data;return t`<div class="wrap">
|
|
442
442
|
<div class="header">
|
|
443
443
|
<h2 class="title">Choghadiya</h2>
|
|
444
|
-
${e?
|
|
444
|
+
${e?t`<p class="subtitle">${e}</p>`:n}
|
|
445
445
|
</div>
|
|
446
446
|
|
|
447
447
|
<div class="cho-grid">
|
|
448
448
|
<section class="period-col" aria-label="Day muhurta periods">
|
|
449
449
|
<h3 class="period-heading">Day</h3>
|
|
450
450
|
<div role="list" aria-label="Daytime choghadiya">
|
|
451
|
-
${
|
|
451
|
+
${r&&r.length>0?r.map(o=>this.renderTile(o)):t`<p class="roxy-empty" role="status">No daytime periods</p>`}
|
|
452
452
|
</div>
|
|
453
453
|
</section>
|
|
454
454
|
|
|
455
455
|
<section class="period-col" aria-label="Night muhurta periods">
|
|
456
456
|
<h3 class="period-heading">Night</h3>
|
|
457
457
|
<div role="list" aria-label="Nighttime choghadiya">
|
|
458
|
-
${s&&s.length>0?s.map(o=>this.renderTile(o)):
|
|
458
|
+
${s&&s.length>0?s.map(o=>this.renderTile(o)):t`<p class="roxy-empty" role="status">No nighttime periods</p>`}
|
|
459
459
|
</div>
|
|
460
460
|
</section>
|
|
461
461
|
</div>
|
|
462
|
-
</div>`}};
|
|
462
|
+
</div>`}};re.styles=[b,x`
|
|
463
463
|
.wrap {
|
|
464
464
|
display: grid;
|
|
465
465
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -543,20 +543,20 @@
|
|
|
543
543
|
align-items: center;
|
|
544
544
|
gap: 0.25em;
|
|
545
545
|
}
|
|
546
|
-
`],
|
|
546
|
+
`],p([y({attribute:!1})],re.prototype,"data",2),re=p([v("roxy-choghadiya-grid")],re);function O(i){if(typeof i!="string"||i.length===0||/^\d{4}-\d{2}-\d{2}$/.test(i))return"";let e=/^\d{2}:\d{2}(:\d{2})?$/.test(i)?`1970-01-01T${i}`:i,r=new Date(e);return Number.isNaN(r.getTime())?i:r.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit",hour12:!0})}function ze(i){if(typeof i!="string"||i.length===0)return"";let a=new Date(/^\d{4}-\d{2}-\d{2}$/.test(i)?`${i}T00:00:00`:i);return Number.isNaN(a.getTime())?i:a.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function ar(i){if(!i)return"";let a=O(i.start),e=O(i.end);return a&&e?`${a} - ${e}`:a||e||""}function w(i,a=1){return typeof i!="number"||!Number.isFinite(i)?"":i.toFixed(a).replace(/\.?0+$/,"")}function _r(i,a=1){let e=w(i,a);return e?`${e}%`:""}var Ne={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function ke(i){return(i.type??"").toLowerCase().replace(/_/g,"-")}var H=class extends u{constructor(){super(...arguments);this.data=null;this.mode="astrology"}getBreakdown(){let e=this.data;if(!e)return{};if("categories"in e&&e.categories){let r={};for(let[s,o]of Object.entries(e.categories))typeof o=="number"&&Number.isFinite(o)&&(r[s]=o);return r}return{}}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No compatibility data</div>`;let r=e.overallScore,s=this.getBreakdown(),o="rating"in e?e.rating:void 0,l="archetype"in e?e.archetype:void 0,d="advice"in e?e.advice:void 0,c="summary"in e?e.summary:void 0,m="interpretation"in e?e.interpretation:void 0,h="strengths"in e?e.strengths:void 0,g="challenges"in e?e.challenges:void 0,f="keyAspects"in e?e.keyAspects:void 0;return t`<article
|
|
547
547
|
class="card"
|
|
548
548
|
aria-label=${`Compatibility (${this.mode})`}
|
|
549
549
|
>
|
|
550
550
|
<div class="head">
|
|
551
551
|
<h2>${this.mode} compatibility</h2>
|
|
552
552
|
<div>
|
|
553
|
-
${typeof
|
|
554
|
-
${o?
|
|
553
|
+
${typeof r=="number"?t`<div class="score">${w(r,0)}</div>`:n}
|
|
554
|
+
${o?t`<div class="rating">${o}</div>`:n}
|
|
555
555
|
</div>
|
|
556
556
|
</div>
|
|
557
557
|
|
|
558
|
-
${Object.keys(s).length>0?
|
|
559
|
-
${Object.entries(s).map(([k,$])=>
|
|
558
|
+
${Object.keys(s).length>0?t`<div role="list">
|
|
559
|
+
${Object.entries(s).map(([k,$])=>t`<div class="bar-row" role="listitem">
|
|
560
560
|
<span style="text-transform: capitalize">${k}</span>
|
|
561
561
|
<span class="bar"
|
|
562
562
|
><span style="width: ${Math.max(0,Math.min(100,$))}%"></span
|
|
@@ -564,31 +564,31 @@
|
|
|
564
564
|
<span>${w($,0)}</span>
|
|
565
565
|
</div>`)}
|
|
566
566
|
</div>`:n}
|
|
567
|
-
${l?
|
|
567
|
+
${l?t`<p>
|
|
568
568
|
<span class="archetype">${l.label}</span>
|
|
569
|
-
${l.description?
|
|
569
|
+
${l.description?t` · ${l.description}`:n}
|
|
570
570
|
</p>`:n}
|
|
571
|
-
${
|
|
572
|
-
${m&&!
|
|
573
|
-
${d?
|
|
574
|
-
${(h?.length??0)>0||(g?.length??0)>0?
|
|
575
|
-
${h?.length?
|
|
571
|
+
${c?t`<p>${c}</p>`:n}
|
|
572
|
+
${m&&!c?t`<p>${m}</p>`:n}
|
|
573
|
+
${d?t`<p>${d}</p>`:n}
|
|
574
|
+
${(h?.length??0)>0||(g?.length??0)>0?t`<div class="lists">
|
|
575
|
+
${h?.length?t`<div>
|
|
576
576
|
<h3>Strengths</h3>
|
|
577
577
|
<ul>
|
|
578
|
-
${h.map(k=>
|
|
578
|
+
${h.map(k=>t`<li>${k}</li>`)}
|
|
579
579
|
</ul>
|
|
580
580
|
</div>`:n}
|
|
581
|
-
${g?.length?
|
|
581
|
+
${g?.length?t`<div>
|
|
582
582
|
<h3>Challenges</h3>
|
|
583
583
|
<ul>
|
|
584
|
-
${g.map(k=>
|
|
584
|
+
${g.map(k=>t`<li>${k}</li>`)}
|
|
585
585
|
</ul>
|
|
586
586
|
</div>`:n}
|
|
587
587
|
</div>`:n}
|
|
588
|
-
${f?.length?
|
|
588
|
+
${f?.length?t`<div>
|
|
589
589
|
<h3 style="margin: 0 0 0.25rem; font-size: var(--roxy-text-xs); color: var(--roxy-muted); text-transform: uppercase; letter-spacing: 0.06em;">Key aspects</h3>
|
|
590
590
|
<ul style="margin: 0; padding-left: 1rem; font-size: var(--roxy-text-sm);">
|
|
591
|
-
${f.slice(0,6).map(k=>
|
|
591
|
+
${f.slice(0,6).map(k=>t`<li>${it(k)}</li>`)}
|
|
592
592
|
</ul>
|
|
593
593
|
</div>`:n}
|
|
594
594
|
</article>`}};H.styles=[b,x`
|
|
@@ -675,43 +675,43 @@
|
|
|
675
675
|
margin: 0;
|
|
676
676
|
padding-left: var(--roxy-space-md, 1rem);
|
|
677
677
|
}
|
|
678
|
-
`],
|
|
678
|
+
`],p([y({attribute:!1})],H.prototype,"data",2),p([y({type:String,reflect:!0})],H.prototype,"mode",2),H=p([v("roxy-compatibility-card")],H);function it(i){let a=i.type.toLowerCase().replace(/_/g,"-"),e=typeof i.orb=="number"?` (orb ${w(i.orb,1)}\xB0)`:"",r=[i.planet1,a,i.planet2].filter(Boolean).join(" ");return i.description?`${r}${e} \xB7 ${i.description}`:`${r}${e}`}var G=class extends u{constructor(){super(...arguments);this.data=null;this.period="current"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No dasha data</div>`;let r=this.collectPeriods(e),s=r.length?Math.max(...r.map(o=>o.durationYears)):0;return t`<div class="wrap" aria-label="Dasha timeline">
|
|
679
679
|
<header class="head">
|
|
680
680
|
<h2 class="title">
|
|
681
681
|
${this.period==="major"?"Vimshottari Mahadasha":this.period==="sub"?"Antardasha":"Active dashas"}
|
|
682
682
|
</h2>
|
|
683
|
-
${"nakshatraName"in e&&e.nakshatraName?
|
|
683
|
+
${"nakshatraName"in e&&e.nakshatraName?t`<div class="nakshatra">
|
|
684
684
|
Moon nakshatra: ${e.nakshatraName}
|
|
685
|
-
${"nakshatraLord"in e&&e.nakshatraLord?
|
|
685
|
+
${"nakshatraLord"in e&&e.nakshatraLord?t`(lord ${e.nakshatraLord})`:n}
|
|
686
686
|
</div>`:n}
|
|
687
687
|
</header>
|
|
688
688
|
|
|
689
689
|
${this.period==="current"?this.renderCurrent(e):n}
|
|
690
|
-
${
|
|
691
|
-
${
|
|
690
|
+
${r.length>0?t`<div class="timeline" role="list">
|
|
691
|
+
${r.map(o=>this.renderBar(o,s))}
|
|
692
692
|
</div>`:n}
|
|
693
|
-
</div>`}renderCurrent(e){return"mahadasha"in e?
|
|
694
|
-
${"mahadasha"in e&&e.mahadasha?
|
|
693
|
+
</div>`}renderCurrent(e){return"mahadasha"in e?t`<div class="current">
|
|
694
|
+
${"mahadasha"in e&&e.mahadasha?t`<div>
|
|
695
695
|
<span>Mahadasha</span>
|
|
696
696
|
<strong>${e.mahadasha.planet}</strong>
|
|
697
|
-
${"remainingInMahadasha"in e&&e.remainingInMahadasha?
|
|
697
|
+
${"remainingInMahadasha"in e&&e.remainingInMahadasha?t`<small>${w(e.remainingInMahadasha.years+e.remainingInMahadasha.months/12,1)} years left</small>`:n}
|
|
698
698
|
</div>`:n}
|
|
699
|
-
${"antardasha"in e&&e.antardasha?
|
|
699
|
+
${"antardasha"in e&&e.antardasha?t`<div>
|
|
700
700
|
<span>Antardasha</span>
|
|
701
701
|
<strong>${e.antardasha.planet}</strong>
|
|
702
|
-
${"remainingInAntardasha"in e&&e.remainingInAntardasha?
|
|
702
|
+
${"remainingInAntardasha"in e&&e.remainingInAntardasha?t`<small>${w(e.remainingInAntardasha.years+e.remainingInAntardasha.months/12,1)} years left</small>`:n}
|
|
703
703
|
</div>`:n}
|
|
704
|
-
${"pratyantardasha"in e&&e.pratyantardasha?
|
|
704
|
+
${"pratyantardasha"in e&&e.pratyantardasha?t`<div>
|
|
705
705
|
<span>Pratyantardasha</span>
|
|
706
706
|
<strong>${e.pratyantardasha.planet}</strong>
|
|
707
|
-
${"remainingInPratyantardasha"in e&&e.remainingInPratyantardasha?
|
|
707
|
+
${"remainingInPratyantardasha"in e&&e.remainingInPratyantardasha?t`<small>${w(e.remainingInPratyantardasha.years+e.remainingInPratyantardasha.months/12,1)} years left</small>`:n}
|
|
708
708
|
</div>`:n}
|
|
709
|
-
</div>`:n}collectPeriods(e){return"mahadashas"in e&&e.mahadashas?.length?e.mahadashas:"antardashas"in e&&e.antardashas?.length?e.antardashas:[]}renderBar(e,
|
|
709
|
+
</div>`:n}collectPeriods(e){return"mahadashas"in e&&e.mahadashas?.length?e.mahadashas:"antardashas"in e&&e.antardashas?.length?e.antardashas:[]}renderBar(e,r){let s=e.durationYears,o=r>0?s/r*100:0;return t`<div class="bar" role="listitem">
|
|
710
710
|
<span>${e.planet}</span>
|
|
711
711
|
<span class="bar-track"><span style="width: ${o}%"></span></span>
|
|
712
712
|
<span class="dates">
|
|
713
|
-
${e.startDate?
|
|
714
|
-
${e.endDate?
|
|
713
|
+
${e.startDate?zr(e.startDate):""}
|
|
714
|
+
${e.endDate?t`- ${zr(e.endDate)}`:""}
|
|
715
715
|
</span>
|
|
716
716
|
</div>`}};G.styles=[b,x`
|
|
717
717
|
.wrap {
|
|
@@ -788,44 +788,44 @@
|
|
|
788
788
|
font-variant-numeric: tabular-nums;
|
|
789
789
|
text-align: right;
|
|
790
790
|
}
|
|
791
|
-
`],
|
|
791
|
+
`],p([y({attribute:!1})],G.prototype,"data",2),p([y({type:String,reflect:!0})],G.prototype,"period",2),G=p([v("roxy-dasha-timeline")],G);function zr(i){let a=i.match(/^(\d{4})/);return a?a[1]:i}var nt=["title","name","label","heading","overview","summary"],lt=["imageUrl","image","icon","symbol"],dt=["imageUrl","image"],ct=6,j=class extends u{constructor(){super(...arguments);this.data=null;this.depth=0}render(){return this.data==null?t`<div class="roxy-empty" role="status">No data</div>`:this.depth>=ct?t`<div class="roxy-empty" role="status">…</div>`:t`<div
|
|
792
792
|
class="roxy-card"
|
|
793
793
|
aria-label="Generic data display"
|
|
794
794
|
>
|
|
795
795
|
${this.renderValue(this.data)}
|
|
796
|
-
</div>`}renderValue(e){return e==null?n:typeof e=="string"?
|
|
797
|
-
${e.map(o=>
|
|
798
|
-
</ul>`:e.every(o=>o!==null&&typeof o=="object"&&!Array.isArray(o))?this.renderTable(e):
|
|
799
|
-
${e.map(o=>
|
|
800
|
-
</ol>`}renderTable(e){let
|
|
796
|
+
</div>`}renderValue(e){return e==null?n:typeof e=="string"?t`<p>${e}</p>`:typeof e=="number"||typeof e=="boolean"?t`<p>${String(e)}</p>`:Array.isArray(e)?this.renderArray(e):this.renderObject(e)}renderArray(e){return e.length===0?t`<div class="roxy-empty" role="status">Empty list</div>`:e.every(o=>o===null||["string","number","boolean"].includes(typeof o))?t`<ul class="roxy-chips">
|
|
797
|
+
${e.map(o=>t`<li>${String(o)}</li>`)}
|
|
798
|
+
</ul>`:e.every(o=>o!==null&&typeof o=="object"&&!Array.isArray(o))?this.renderTable(e):t`<ol>
|
|
799
|
+
${e.map(o=>t`<li>${this.renderValue(o)}</li>`)}
|
|
800
|
+
</ol>`}renderTable(e){let r=this.collectKeys(e);return t`<table class="roxy-table" role="table">
|
|
801
801
|
<thead>
|
|
802
802
|
<tr>
|
|
803
|
-
${
|
|
803
|
+
${r.map(s=>t`<th>${ee(s)}</th>`)}
|
|
804
804
|
</tr>
|
|
805
805
|
</thead>
|
|
806
806
|
<tbody>
|
|
807
|
-
${e.map(s=>
|
|
808
|
-
${
|
|
807
|
+
${e.map(s=>t`<tr>
|
|
808
|
+
${r.map(o=>t`<td>${this.formatPrimitive(s[o])}</td>`)}
|
|
809
809
|
</tr>`)}
|
|
810
810
|
</tbody>
|
|
811
|
-
</table>`}renderObject(e){let
|
|
812
|
-
${s?
|
|
811
|
+
</table>`}renderObject(e){let r=nt.find(d=>typeof e[d]=="string"),s=lt.find(d=>typeof e[d]=="string"&&e[d].startsWith("http")),o=r!=="summary"&&typeof e.summary=="string"?"summary":null,l=Object.entries(e).filter(([d,c])=>d!==r&&d!==o&&!dt.includes(d)&&c!==null&&c!==void 0);return t`
|
|
812
|
+
${s?t`<img
|
|
813
813
|
class="roxy-image"
|
|
814
814
|
src=${String(e[s])}
|
|
815
|
-
alt=${
|
|
815
|
+
alt=${r?String(e[r]):"illustration"}
|
|
816
816
|
loading="lazy"
|
|
817
817
|
/>`:n}
|
|
818
|
-
${t
|
|
819
|
-
${o?
|
|
820
|
-
${l.length>0?
|
|
821
|
-
${l.map(([d,
|
|
818
|
+
${r?t`<h3 class="roxy-title">${e[r]}</h3>`:n}
|
|
819
|
+
${o?t`<p class="roxy-summary">${e[o]}</p>`:n}
|
|
820
|
+
${l.length>0?t`<dl class="roxy-rows">
|
|
821
|
+
${l.map(([d,c])=>t`
|
|
822
822
|
<dt>${ee(d)}</dt>
|
|
823
|
-
<dd>${this.renderField(
|
|
823
|
+
<dd>${this.renderField(c)}</dd>
|
|
824
824
|
`)}
|
|
825
825
|
</dl>`:n}
|
|
826
|
-
`}renderField(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)&&e.every(s=>["string","number","boolean"].includes(typeof s))?
|
|
827
|
-
${e.map(s=>
|
|
828
|
-
</ul>`:
|
|
826
|
+
`}renderField(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)&&e.every(s=>["string","number","boolean"].includes(typeof s))?t`<ul class="roxy-chips">
|
|
827
|
+
${e.map(s=>t`<li>${String(s)}</li>`)}
|
|
828
|
+
</ul>`:t`<roxy-data .data=${e} .depth=${this.depth+1}></roxy-data>`}formatPrimitive(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?e.map(String).join(", "):JSON.stringify(e)}collectKeys(e){let r=new Set;for(let s of e)for(let o of Object.keys(s))r.add(o);return Array.from(r)}};j.styles=[b,x`
|
|
829
829
|
.roxy-card {
|
|
830
830
|
background: var(--roxy-bg, #fff);
|
|
831
831
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -919,16 +919,16 @@
|
|
|
919
919
|
margin: 0 0 var(--roxy-space-xs, 0.25rem) 0;
|
|
920
920
|
text-transform: capitalize;
|
|
921
921
|
}
|
|
922
|
-
`],
|
|
922
|
+
`],p([y({attribute:!1})],j.prototype,"data",2),p([y({attribute:!1})],j.prototype,"depth",2),j=p([v("roxy-data")],j);var Me=Object.fromEntries(pe.map(i=>[i.toLowerCase(),i])),pt={1:{x:150,y:58},2:{x:205,y:52},3:{x:253,y:112},4:{x:243,y:150},5:{x:253,y:188},6:{x:205,y:248},7:{x:150,y:242},8:{x:95,y:248},9:{x:47,y:188},10:{x:57,y:150},11:{x:47,y:112},12:{x:95,y:52}},mt={1:{x:150,y:35},2:{x:222,y:40},3:{x:265,y:100},4:{x:265,y:150},5:{x:265,y:200},6:{x:222,y:260},7:{x:150,y:265},8:{x:78,y:260},9:{x:35,y:200},10:{x:35,y:150},11:{x:35,y:100},12:{x:78,y:40}},ht={1:{x:150,y:60},2:{x:225,y:100},3:{x:255,y:150},4:{x:225,y:200},5:{x:150,y:240},6:{x:75,y:200},7:{x:45,y:150},8:{x:75,y:100},9:{x:100,y:80},10:{x:150,y:108},11:{x:200,y:80},12:{x:200,y:220}};function De(i){let a=pt[i.number],e=mt[i.number];if(!a||!e)return n;let r=rr[i.sign]??"",s=i.planets;return S`
|
|
923
923
|
<g>
|
|
924
924
|
${i.isLagna?S`<rect
|
|
925
925
|
class="lagna-bg"
|
|
926
|
-
x=${
|
|
926
|
+
x=${a.x-30} y=${a.y-28}
|
|
927
927
|
width="60" height="56" rx="6"
|
|
928
928
|
/>`:n}
|
|
929
|
-
${
|
|
930
|
-
${i.isLagna?S`<text class="lagna-marker" x=${
|
|
931
|
-
${s.map((o,l)=>{let d=
|
|
929
|
+
${r?S`<text class="sign-text" x=${e.x} y=${e.y} text-anchor="middle" dominant-baseline="central">${r}</text>`:n}
|
|
930
|
+
${i.isLagna?S`<text class="lagna-marker" x=${a.x} y=${a.y-18} text-anchor="middle" dominant-baseline="central">LAGNA</text>`:n}
|
|
931
|
+
${s.map((o,l)=>{let d=er[C(o)]??o.slice(0,2),c=13,g=(i.isLagna?a.y+8:a.y)-(s.length-1)*c/2+l*c;return S`<text class="planet-text" x=${a.x} y=${g} text-anchor="middle" dominant-baseline="central">${d}</text>`})}
|
|
932
932
|
</g>
|
|
933
933
|
`}function Oe(){return S`
|
|
934
934
|
<polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1.5" />
|
|
@@ -938,12 +938,12 @@
|
|
|
938
938
|
<line class="line" x1="150" y1="10" x2="290" y2="150" stroke-width="0.6" stroke-dasharray="3,3" />
|
|
939
939
|
<line class="line" x1="150" y1="290" x2="10" y2="150" stroke-width="0.6" stroke-dasharray="3,3" />
|
|
940
940
|
<line class="line" x1="150" y1="290" x2="290" y2="150" stroke-width="0.6" stroke-dasharray="3,3" />
|
|
941
|
-
`}function He(i){let
|
|
941
|
+
`}function He(i){let a=ht[i.number];if(!a)return n;let e=rr[i.sign]??"",r=i.planets;return S`
|
|
942
942
|
<g>
|
|
943
|
-
${i.isLagna?S`<circle class="lagna-bg" cx=${
|
|
944
|
-
${e?S`<text class="sign-text" x=${
|
|
945
|
-
<text class="house-num" x=${
|
|
946
|
-
${
|
|
943
|
+
${i.isLagna?S`<circle class="lagna-bg" cx=${a.x} cy=${a.y} r="22" />`:n}
|
|
944
|
+
${e?S`<text class="sign-text" x=${a.x} y=${a.y-10} text-anchor="middle" dominant-baseline="central">${e}</text>`:n}
|
|
945
|
+
<text class="house-num" x=${a.x} y=${a.y+2} text-anchor="middle" dominant-baseline="central">${i.number}</text>
|
|
946
|
+
${r.map((s,o)=>{let l=er[C(s)]??s.slice(0,2),d=11,m=a.y+14-(r.length-1)*d/2+o*d;return S`<text class="planet-text" x=${a.x} y=${m} text-anchor="middle" dominant-baseline="central">${l}</text>`})}
|
|
947
947
|
</g>
|
|
948
948
|
`}function Ge(){return S`
|
|
949
949
|
<polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1.5" />
|
|
@@ -956,13 +956,13 @@
|
|
|
956
956
|
<line class="line" x1="150" y1="290" x2="80" y2="220" stroke-width="1" />
|
|
957
957
|
<line class="line" x1="10" y1="150" x2="80" y2="220" stroke-width="1" />
|
|
958
958
|
<line class="line" x1="10" y1="150" x2="80" y2="80" stroke-width="1" />
|
|
959
|
-
`}var I=class extends u{constructor(){super(...arguments);this.data=null;this.chartStyle="south"}buildHouses(){if(!this.data)return[];let e=this.data.chart,s=(this.data.chart.meta??{}).Lagna?.rashi??"",o=[];for(let l=0;l<12;l++){let d=_e[l],m=(e[d]?.signs??[]).map(g=>g.graha).filter(Boolean),h=Me[d]??"";o.push({number:l+1,sign:h,planets:m,isLagna:s?s.toLowerCase()===h.toLowerCase():!1})}return o}render(){if(!this.data)return
|
|
959
|
+
`}var I=class extends u{constructor(){super(...arguments);this.data=null;this.chartStyle="south"}buildHouses(){if(!this.data)return[];let e=this.data.chart,s=(this.data.chart.meta??{}).Lagna?.rashi??"",o=[];for(let l=0;l<12;l++){let d=_e[l],m=(e[d]?.signs??[]).map(g=>g.graha).filter(Boolean),h=Me[d]??"";o.push({number:l+1,sign:h,planets:m,isLagna:s?s.toLowerCase()===h.toLowerCase():!1})}return o}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No divisional chart data</div>`;let{division:e,vargottama:r}=this.data,s=this.buildHouses(),o=this.chartStyle==="north";return t`<div class="wrap">
|
|
960
960
|
<div class="header">
|
|
961
961
|
<h2 class="title">
|
|
962
962
|
D${e.number} ${e.name}
|
|
963
|
-
${e.sanskritName&&e.sanskritName!==e.name?
|
|
963
|
+
${e.sanskritName&&e.sanskritName!==e.name?t`<span class="division-meta"> · ${e.sanskritName}</span>`:n}
|
|
964
964
|
</h2>
|
|
965
|
-
${e.significance?
|
|
965
|
+
${e.significance?t`<p class="significance">${e.significance}</p>`:n}
|
|
966
966
|
</div>
|
|
967
967
|
|
|
968
968
|
<svg
|
|
@@ -975,9 +975,9 @@
|
|
|
975
975
|
${o?s.map(l=>He(l)):s.map(l=>De(l))}
|
|
976
976
|
</svg>
|
|
977
977
|
|
|
978
|
-
${
|
|
978
|
+
${r&&r.length>0?t`<div class="vargottama-row" role="list" aria-label="Vargottama planets">
|
|
979
979
|
<span class="vargottama-label">Vargottama:</span>
|
|
980
|
-
${
|
|
980
|
+
${r.map(l=>t`<span class="vargottama-pill" role="listitem">
|
|
981
981
|
${L[l]??""} ${l}
|
|
982
982
|
</span>`)}
|
|
983
983
|
</div>`:n}
|
|
@@ -1071,17 +1071,17 @@
|
|
|
1071
1071
|
color: var(--roxy-fg, #0a0a0a);
|
|
1072
1072
|
border: 1px solid color-mix(in srgb, var(--roxy-accent, #f59e0b) 45%, transparent);
|
|
1073
1073
|
}
|
|
1074
|
-
`],
|
|
1074
|
+
`],p([y({attribute:!1})],I.prototype,"data",2),p([y({type:String,reflect:!0,attribute:"chart-style"})],I.prototype,"chartStyle",2),I=p([v("roxy-divisional-chart")],I);var gt={manglik:"Mangal Dosha",kalsarpa:"Kaal Sarp Dosha",sadhesati:"Sade Sati"},B=class extends u{constructor(){super(...arguments);this.data=null;this.type="manglik"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No dosha data</div>`;let r=!!e.present,s=gt[this.type]??this.type,o=(e.severity??"").toLowerCase(),l=o==="severe"?3:o==="moderate"?2:o==="mild"?1:0,d=l*33,c=l===3?"var(--roxy-danger)":l===2?"var(--roxy-warning)":l===1?"var(--roxy-success)":"transparent";return t`<article
|
|
1075
1075
|
class="card"
|
|
1076
1076
|
aria-label=${s}
|
|
1077
1077
|
>
|
|
1078
1078
|
<header class="head">
|
|
1079
1079
|
<h2 class="title">${s}</h2>
|
|
1080
|
-
<span class=${`badge ${
|
|
1081
|
-
${
|
|
1080
|
+
<span class=${`badge ${r?"present":"absent"}`}>
|
|
1081
|
+
${r?"Present":"Absent"}
|
|
1082
1082
|
</span>
|
|
1083
1083
|
</header>
|
|
1084
|
-
${e.severity?
|
|
1084
|
+
${e.severity?t`<div
|
|
1085
1085
|
class="severity-bar"
|
|
1086
1086
|
role="meter"
|
|
1087
1087
|
aria-valuemin="0"
|
|
@@ -1089,24 +1089,24 @@
|
|
|
1089
1089
|
aria-valuenow="${l}"
|
|
1090
1090
|
aria-label="Severity ${e.severity}"
|
|
1091
1091
|
>
|
|
1092
|
-
<span class="severity-fill" style="width: ${d}%; background: ${
|
|
1092
|
+
<span class="severity-fill" style="width: ${d}%; background: ${c};"></span>
|
|
1093
1093
|
</div>`:n}
|
|
1094
|
-
${e.description?
|
|
1094
|
+
${e.description?t`<p class="description">${e.description}</p>`:n}
|
|
1095
1095
|
${this.renderEffects(e)}
|
|
1096
|
-
${e.remedies&&e.remedies.length>0?
|
|
1096
|
+
${e.remedies&&e.remedies.length>0?t`<div>
|
|
1097
1097
|
<h3>Remedies</h3>
|
|
1098
1098
|
<ul>
|
|
1099
|
-
${e.remedies.map(m=>
|
|
1099
|
+
${e.remedies.map(m=>t`<li>${m}</li>`)}
|
|
1100
1100
|
</ul>
|
|
1101
1101
|
</div>`:n}
|
|
1102
|
-
${"exceptions"in e&&e.exceptions&&e.exceptions.length>0?
|
|
1102
|
+
${"exceptions"in e&&e.exceptions&&e.exceptions.length>0?t`<div>
|
|
1103
1103
|
<h3>Exceptions</h3>
|
|
1104
1104
|
<ul>
|
|
1105
|
-
${e.exceptions.map(m=>
|
|
1105
|
+
${e.exceptions.map(m=>t`<li>${m}</li>`)}
|
|
1106
1106
|
</ul>
|
|
1107
1107
|
</div>`:n}
|
|
1108
|
-
</article>`}renderEffects(e){if(!e.effects)return n;let
|
|
1109
|
-
${
|
|
1108
|
+
</article>`}renderEffects(e){if(!e.effects)return n;let r=Object.entries(e.effects).filter(([,s])=>typeof s=="string"&&s.length>0);return r.length===0?n:t`<div class="effects">
|
|
1109
|
+
${r.map(([s,o])=>t`<div>
|
|
1110
1110
|
<h3>${s}</h3>
|
|
1111
1111
|
<p>${o}</p>
|
|
1112
1112
|
</div>`)}
|
|
@@ -1198,36 +1198,36 @@
|
|
|
1198
1198
|
margin: 0;
|
|
1199
1199
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1200
1200
|
}
|
|
1201
|
-
`],
|
|
1201
|
+
`],p([y({attribute:!1})],B.prototype,"data",2),p([y({type:String,reflect:!0})],B.prototype,"type",2),B=p([v("roxy-dosha-card")],B);var sr=new Map;async function yt(i){let a=sr.get(i);return a||(a=fetch(i).then(async e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{throw sr.delete(i),e}),sr.set(i,a)),a}var _=class extends u{constructor(){super(...arguments);this.endpoint="vedic-astrology/birth-chart";this.method="POST";this.specUrl="https://roxyapi.com/api/v2/openapi.json";this.submitLabel="Submit";this.fields=[];this.values={};this.hasLocation=!1;this.loaded=!1;this.specError=null;this.retryLoadSchema=()=>{this.loaded=!1,this.specError=null,this.loadSchema()};this.onLocation=e=>{let r=e.detail;r&&(this.values={...this.values,latitude:r.latitude,longitude:r.longitude,timezone:r.timezone??r.utcOffset})};this.onSubmit=e=>{e.preventDefault();let r=this.fields.filter(s=>s.required).filter(s=>this.values[s.name]===void 0||this.values[s.name]==="");if(r.length>0){this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{missing:r.map(s=>s.name)},bubbles:!0,composed:!0}));return}this.dispatchEvent(new CustomEvent("roxy-submit",{detail:{endpoint:this.endpoint,values:this.values},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.loadSchema()}async loadSchema(){this.specError=null;try{let e=await yt(this.specUrl),r=`/${this.endpoint.replace(/^\//,"")}`,s=e.paths?.[r]?.[this.method.toLowerCase()];if(!s)throw new Error(`Endpoint ${this.method} ${r} not found in OpenAPI spec`);let o=e.components?.schemas??{},l=[],d;if(s.requestBody){let m=s.requestBody.content?.["application/json"]?.schema;d=this.resolve(m,o)}if(d?.properties){let m=new Set(d.required??[]);for(let[h,g]of Object.entries(d.properties)){let f=this.resolve(g,o)??{};l.push({name:h,type:this.fieldType(f),required:m.has(h),description:f.description,enum:f.enum,min:f.minimum,max:f.maximum,default:f.default})}}for(let m of s.parameters??[])if(m.in==="path"||m.in==="query"){let h=this.resolve(m.schema,o)??{};l.push({name:m.name,type:this.fieldType(h),required:!!m.required,description:h.description,enum:h.enum,default:h.default})}this.fields=l,this.hasLocation=l.some(m=>m.name==="latitude")&&l.some(m=>m.name==="longitude")&&l.some(m=>m.name==="timezone");let c={};for(let m of l)m.default!==void 0&&(c[m.name]=m.default);this.values=c,this.loaded=!0}catch(e){let r=e instanceof Error?e.message:String(e);this.specError=r,this.loaded=!0,this.dispatchEvent(new CustomEvent("roxy-spec-error",{detail:{url:this.specUrl,message:r},bubbles:!0,composed:!0}))}}resolve(e,r){if(e){if("$ref"in e&&e.$ref){let s=e.$ref.split("/").pop();return s?r[s]:void 0}return e}}fieldType(e){return e.enum?"enum":e.format==="date"?"date":e.format==="time"?"time":e.format==="date-time"?"datetime":e.type==="integer"||e.type==="number"?"number":"text"}setValue(e,r){this.values={...this.values,[e]:r}}render(){if(!this.loaded)return t`<form><div class="roxy-skeleton" style="height: 8rem"></div></form>`;if(this.specError)return t`<div class="spec-error" role="alert">
|
|
1202
1202
|
Schema load failed: ${this.specError}
|
|
1203
1203
|
<button type="button" class="submit" @click=${this.retryLoadSchema}>Retry</button>
|
|
1204
|
-
</div>`;let e=
|
|
1204
|
+
</div>`;let e=r=>{if(this.hasLocation&&(r.name==="latitude"||r.name==="longitude"||r.name==="timezone"))return n;let s=`roxy-form-${r.name}`;return t`<div class="field">
|
|
1205
1205
|
<label for=${s}>
|
|
1206
|
-
${ee(
|
|
1206
|
+
${ee(r.name)}${r.required?t`<span class="req" aria-hidden="true">*</span>`:n}
|
|
1207
1207
|
</label>
|
|
1208
|
-
${
|
|
1208
|
+
${r.enum?t`<select
|
|
1209
1209
|
id=${s}
|
|
1210
|
-
?required=${
|
|
1211
|
-
@change=${o=>this.setValue(
|
|
1210
|
+
?required=${r.required}
|
|
1211
|
+
@change=${o=>this.setValue(r.name,o.target.value)}
|
|
1212
1212
|
>
|
|
1213
1213
|
<option value="">Choose</option>
|
|
1214
|
-
${
|
|
1214
|
+
${r.enum.map(o=>t`<option value=${o} ?selected=${this.values[r.name]===o}>
|
|
1215
1215
|
${o}
|
|
1216
1216
|
</option>`)}
|
|
1217
|
-
</select>`:
|
|
1217
|
+
</select>`:t`<input
|
|
1218
1218
|
id=${s}
|
|
1219
|
-
type=${this.htmlType(
|
|
1220
|
-
?required=${
|
|
1221
|
-
min=${
|
|
1222
|
-
max=${
|
|
1223
|
-
step=${
|
|
1224
|
-
.value=${this.values[
|
|
1225
|
-
@input=${o=>this.setValue(
|
|
1219
|
+
type=${this.htmlType(r.type)}
|
|
1220
|
+
?required=${r.required}
|
|
1221
|
+
min=${r.min??""}
|
|
1222
|
+
max=${r.max??""}
|
|
1223
|
+
step=${r.type==="number"?"any":""}
|
|
1224
|
+
.value=${this.values[r.name]??""}
|
|
1225
|
+
@input=${o=>this.setValue(r.name,this.coerce(r.type,o.target.value))}
|
|
1226
1226
|
/>`}
|
|
1227
|
-
${
|
|
1228
|
-
</div>`};return
|
|
1227
|
+
${r.description?t`<small class="help">${r.description}</small>`:n}
|
|
1228
|
+
</div>`};return t`<form @submit=${this.onSubmit}>
|
|
1229
1229
|
<h2 class="title">${ee(this.endpoint.split("/").pop()??"")}</h2>
|
|
1230
|
-
${this.hasLocation?
|
|
1230
|
+
${this.hasLocation?t`<div class="location-block">
|
|
1231
1231
|
<label>Birth location</label>
|
|
1232
1232
|
<roxy-location-search
|
|
1233
1233
|
@roxy-location-select=${this.onLocation}
|
|
@@ -1238,10 +1238,10 @@
|
|
|
1238
1238
|
</small>
|
|
1239
1239
|
</div>`:n}
|
|
1240
1240
|
<div class="fields">
|
|
1241
|
-
${this.fields.map(
|
|
1241
|
+
${this.fields.map(r=>e(r))}
|
|
1242
1242
|
</div>
|
|
1243
1243
|
<button class="submit" type="submit">${this.submitLabel}</button>
|
|
1244
|
-
</form>`}htmlType(e){switch(e){case"date":return"date";case"time":return"time";case"datetime":return"datetime-local";case"number":return"number";default:return"text"}}coerce(e,
|
|
1244
|
+
</form>`}htmlType(e){switch(e){case"date":return"date";case"time":return"time";case"datetime":return"datetime-local";case"number":return"number";default:return"text"}}coerce(e,r){if(r!==""){if(e==="number"){let s=Number(r);return Number.isFinite(s)?s:void 0}return r}}};_.styles=[b,x`
|
|
1245
1245
|
form {
|
|
1246
1246
|
display: grid;
|
|
1247
1247
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -1343,24 +1343,24 @@
|
|
|
1343
1343
|
color: var(--roxy-danger-fg, #991b1b);
|
|
1344
1344
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1345
1345
|
}
|
|
1346
|
-
`],
|
|
1346
|
+
`],p([y({type:String,attribute:"data-endpoint"})],_.prototype,"endpoint",2),p([y({type:String})],_.prototype,"method",2),p([y({type:String,attribute:"spec-url"})],_.prototype,"specUrl",2),p([y({type:String,attribute:"submit-label"})],_.prototype,"submitLabel",2),p([E()],_.prototype,"fields",2),p([E()],_.prototype,"values",2),p([E()],_.prototype,"hasLocation",2),p([E()],_.prototype,"loaded",2),p([E()],_.prototype,"specError",2),_=p([v("roxy-endpoint-form")],_);var te=class extends u{constructor(){super(...arguments);this.data=null}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No Guna Milan data</div>`;let r=(e.breakdown??[]).filter(g=>g?.category!==void 0),s=e.total??0,o=e.maxScore??36,l=s/o*100,d="color-mix(in srgb, var(--roxy-border) 50%, transparent)",c=l>=70?"var(--roxy-success)":l>=50?"var(--roxy-warning)":"var(--roxy-danger)",m=l*2.827,h=(100-l)*2.827;return t`<article class="card" aria-label="Guna Milan score">
|
|
1347
1347
|
<div class="score-header">
|
|
1348
1348
|
<div class="score-info">
|
|
1349
1349
|
<div class="score-bar">
|
|
1350
1350
|
<div>
|
|
1351
1351
|
<span class="total">${w(e.total,1)}</span>
|
|
1352
1352
|
<span class="over"> / ${e.maxScore}</span>
|
|
1353
|
-
${typeof e.percentage=="number"?
|
|
1354
|
-
${
|
|
1353
|
+
${typeof e.percentage=="number"?t`<small style="margin-left: 0.5rem; color: var(--roxy-muted)">
|
|
1354
|
+
${_r(e.percentage,1)}
|
|
1355
1355
|
</small>`:n}
|
|
1356
1356
|
</div>
|
|
1357
|
-
${e.recommendation?
|
|
1357
|
+
${e.recommendation?t`<span class="recommendation">${e.recommendation}</span>`:n}
|
|
1358
1358
|
</div>
|
|
1359
1359
|
</div>
|
|
1360
1360
|
<div class="score-ring" role="meter" aria-label="Guna milan score" aria-valuemin="0" aria-valuemax="36" aria-valuenow="${s}">
|
|
1361
1361
|
<svg viewBox="0 0 100 100" aria-hidden="true">
|
|
1362
1362
|
<circle class="ring-track" cx="50" cy="50" r="45" fill="none" stroke="${d}" stroke-width="8"/>
|
|
1363
|
-
<circle class="ring-fill" cx="50" cy="50" r="45" fill="none" stroke="${
|
|
1363
|
+
<circle class="ring-fill" cx="50" cy="50" r="45" fill="none" stroke="${c}" stroke-width="8"
|
|
1364
1364
|
stroke-dasharray="${m},${h}" stroke-linecap="round"
|
|
1365
1365
|
transform="rotate(-90 50 50)"/>
|
|
1366
1366
|
<text x="50" y="50" text-anchor="middle" dominant-baseline="central" class="ring-text">${s}</text>
|
|
@@ -1369,7 +1369,7 @@
|
|
|
1369
1369
|
</div>
|
|
1370
1370
|
</div>
|
|
1371
1371
|
|
|
1372
|
-
${
|
|
1372
|
+
${r.length>0?t`<table>
|
|
1373
1373
|
<thead>
|
|
1374
1374
|
<tr>
|
|
1375
1375
|
<th>Category</th>
|
|
@@ -1378,7 +1378,7 @@
|
|
|
1378
1378
|
</tr>
|
|
1379
1379
|
</thead>
|
|
1380
1380
|
<tbody>
|
|
1381
|
-
${
|
|
1381
|
+
${r.map(g=>{let f=g.score??0,k=g.maxScore??ut(g.category),$=k?f/k*100:0;return t`<tr>
|
|
1382
1382
|
<td>${g.category}</td>
|
|
1383
1383
|
<td class="bar-cell">
|
|
1384
1384
|
<div class="mini-bar">
|
|
@@ -1389,11 +1389,11 @@
|
|
|
1389
1389
|
</tr>`})}
|
|
1390
1390
|
</tbody>
|
|
1391
1391
|
</table>`:n}
|
|
1392
|
-
${(e.doshas?.length??0)>0||(e.doshaCancellations?.length??0)>0?
|
|
1393
|
-
${e.doshas?.map(g=>
|
|
1394
|
-
${e.doshaCancellations?.map(g=>
|
|
1392
|
+
${(e.doshas?.length??0)>0||(e.doshaCancellations?.length??0)>0?t`<div class="tags">
|
|
1393
|
+
${e.doshas?.map(g=>t`<span class="dosha">${g}</span>`)}
|
|
1394
|
+
${e.doshaCancellations?.map(g=>t`<span class="cancel" title=${g.reason}>${g.dosha} cancelled</span>`)}
|
|
1395
1395
|
</div>`:n}
|
|
1396
|
-
</article>`}};
|
|
1396
|
+
</article>`}};te.styles=[b,x`
|
|
1397
1397
|
.card {
|
|
1398
1398
|
background: var(--roxy-bg, #fff);
|
|
1399
1399
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1514,48 +1514,48 @@
|
|
|
1514
1514
|
background: color-mix(in srgb, var(--roxy-success, #16a34a) 18%, transparent);
|
|
1515
1515
|
color: var(--roxy-success-fg, #166534);
|
|
1516
1516
|
}
|
|
1517
|
-
`],
|
|
1517
|
+
`],p([y({attribute:!1})],te.prototype,"data",2),te=p([v("roxy-guna-milan")],te);function ut(i){if(!i)return 1;switch(i.toLowerCase()){case"varna":return 1;case"vasya":return 2;case"tara":return 3;case"yoni":return 4;case"maitri":return 5;case"gana":return 6;case"bhakoot":return 7;case"nadi":return 8;default:return 1}}var q=class extends u{constructor(){super(...arguments);this.data=null;this.mode="lookup"}resolveHexagram(){let e=this.data;if(!e)return null;if("hexagram"in e&&e.hexagram){if("lines"in e){let s=e;return{hex:s.hexagram,lines:s.lines,changingLinePositions:s.changingLinePositions,resultingHexagram:s.resultingHexagram}}let r=e;return{hex:r.hexagram,dailyMessage:r.dailyMessage}}return{hex:e}}render(){let e=this.resolveHexagram();if(!e)return t`<div class="roxy-empty" role="status">No hexagram data</div>`;let{hex:r,lines:s,changingLinePositions:o,dailyMessage:l,resultingHexagram:d}=e,c=s??this.derivedLines(r),m=new Set(o??[]);return t`<article class="card" aria-label="I Ching hexagram">
|
|
1518
1518
|
<div class="glyphs">
|
|
1519
|
-
${
|
|
1519
|
+
${r.symbol?t`<div class="symbol">${r.symbol}</div>`:n}
|
|
1520
1520
|
<div class="lines" aria-hidden="true">
|
|
1521
|
-
${
|
|
1521
|
+
${c.slice().reverse().map((h,g)=>{let f=c.length-1-g+1,k=m.has(f),$=h===6||h===8;return t`<div class="line ${`${$?"broken":"solid"}${k?" changing":""}`}">
|
|
1522
1522
|
${$?S`<span class="seg"></span><span class="seg"></span>`:S`<span class="seg"></span>`}
|
|
1523
1523
|
</div>`})}
|
|
1524
1524
|
</div>
|
|
1525
1525
|
</div>
|
|
1526
1526
|
<div>
|
|
1527
1527
|
<h2 class="title">
|
|
1528
|
-
${
|
|
1528
|
+
${r.number?t`${r.number}. `:n}${r.english??r.chinese??"Hexagram"}
|
|
1529
1529
|
</h2>
|
|
1530
1530
|
<p class="subtitle">
|
|
1531
|
-
${
|
|
1532
|
-
${
|
|
1531
|
+
${r.chinese?t`${r.chinese}`:n}
|
|
1532
|
+
${r.pinyin?t` · ${r.pinyin}`:n}
|
|
1533
1533
|
</p>
|
|
1534
1534
|
<div class="trigrams">
|
|
1535
|
-
${
|
|
1535
|
+
${r.upperTrigram?t`<div>
|
|
1536
1536
|
Upper
|
|
1537
1537
|
<span class="tri-glyph"
|
|
1538
|
-
>${
|
|
1539
|
-
>${
|
|
1538
|
+
>${tr[r.upperTrigram]??""}</span
|
|
1539
|
+
>${r.upperTrigram}
|
|
1540
1540
|
</div>`:n}
|
|
1541
|
-
${
|
|
1541
|
+
${r.lowerTrigram?t`<div>
|
|
1542
1542
|
Lower
|
|
1543
1543
|
<span class="tri-glyph"
|
|
1544
|
-
>${
|
|
1545
|
-
>${
|
|
1544
|
+
>${tr[r.lowerTrigram]??""}</span
|
|
1545
|
+
>${r.lowerTrigram}
|
|
1546
1546
|
</div>`:n}
|
|
1547
1547
|
</div>
|
|
1548
|
-
${
|
|
1549
|
-
${
|
|
1550
|
-
${l?
|
|
1551
|
-
${
|
|
1552
|
-
${m.size>0?
|
|
1548
|
+
${r.judgment?t`<p class="judgment">${r.judgment}</p>`:n}
|
|
1549
|
+
${r.image?t`<p class="image">${r.image}</p>`:n}
|
|
1550
|
+
${l?t`<p class="message">${l}</p>`:n}
|
|
1551
|
+
${r.interpretation?.general?t`<p>${r.interpretation.general}</p>`:n}
|
|
1552
|
+
${m.size>0?t`<div class="changing">
|
|
1553
1553
|
Changing lines: ${Array.from(m).sort((h,g)=>h-g).join(", ")}.
|
|
1554
|
-
${d?.english?
|
|
1554
|
+
${d?.english?t` Becomes hexagram ${d.number}
|
|
1555
1555
|
${d.english}.`:n}
|
|
1556
1556
|
</div>`:n}
|
|
1557
1557
|
</div>
|
|
1558
|
-
</article>`}derivedLines(e){let
|
|
1558
|
+
</article>`}derivedLines(e){let r=e.symbol.codePointAt(0)??0;if(r>=19904&&r<=19967){let s=r-19904,o=[];for(let l=0;l<6;l++){let d=s>>l&1;o.push(d?8:7)}return o}return Array.from({length:6},()=>7)}};q.styles=[b,x`
|
|
1559
1559
|
.card {
|
|
1560
1560
|
background: var(--roxy-bg, #fff);
|
|
1561
1561
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1662,17 +1662,17 @@
|
|
|
1662
1662
|
color: var(--roxy-accent-fg, #b45309);
|
|
1663
1663
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1664
1664
|
}
|
|
1665
|
-
`],
|
|
1665
|
+
`],p([y({attribute:!1})],q.prototype,"data",2),p([y({type:String,reflect:!0})],q.prototype,"mode",2),q=p([v("roxy-hexagram")],q);var U=class extends u{constructor(){super(...arguments);this.data=null;this.period="daily"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No horoscope data</div>`;let r=e.sign??"",s=r?z[C(r)]??"":"",o="energyRating"in e&&typeof e.energyRating=="number"?e.energyRating:null,l="date"in e&&e.date||"week"in e&&e.week||"month"in e&&e.month||"";return t`<article
|
|
1666
1666
|
class="card"
|
|
1667
|
-
aria-label=${`${this.period} horoscope for ${
|
|
1667
|
+
aria-label=${`${this.period} horoscope for ${r}`}
|
|
1668
1668
|
>
|
|
1669
1669
|
<header class="head">
|
|
1670
1670
|
<span class="glyph" aria-hidden="true">${s}</span>
|
|
1671
1671
|
<div>
|
|
1672
|
-
<h2 class="title">${
|
|
1673
|
-
${l?
|
|
1672
|
+
<h2 class="title">${r} ${this.period}</h2>
|
|
1673
|
+
${l?t`<div class="date">${l}</div>`:n}
|
|
1674
1674
|
</div>
|
|
1675
|
-
${o!==null?
|
|
1675
|
+
${o!==null?t`<span class="energy" aria-label=${`Energy ${o} of 10`}>
|
|
1676
1676
|
Energy ${o}/10
|
|
1677
1677
|
<span class="energy-bar"
|
|
1678
1678
|
><span style="width: ${o/10*100}%"></span
|
|
@@ -1680,45 +1680,45 @@
|
|
|
1680
1680
|
</span>`:n}
|
|
1681
1681
|
</header>
|
|
1682
1682
|
|
|
1683
|
-
${e.overview?
|
|
1683
|
+
${e.overview?t`<p class="overview">${e.overview}</p>`:n}
|
|
1684
1684
|
|
|
1685
1685
|
<div class="sections">
|
|
1686
|
-
${e.love?
|
|
1686
|
+
${e.love?t`<div class="section">
|
|
1687
1687
|
<h3>Love</h3>
|
|
1688
1688
|
<p>${e.love}</p>
|
|
1689
1689
|
</div>`:n}
|
|
1690
|
-
${e.career?
|
|
1690
|
+
${e.career?t`<div class="section">
|
|
1691
1691
|
<h3>Career</h3>
|
|
1692
1692
|
<p>${e.career}</p>
|
|
1693
1693
|
</div>`:n}
|
|
1694
|
-
${e.health?
|
|
1694
|
+
${e.health?t`<div class="section">
|
|
1695
1695
|
<h3>Health</h3>
|
|
1696
1696
|
<p>${e.health}</p>
|
|
1697
1697
|
</div>`:n}
|
|
1698
|
-
${e.finance?
|
|
1698
|
+
${e.finance?t`<div class="section">
|
|
1699
1699
|
<h3>Finance</h3>
|
|
1700
1700
|
<p>${e.finance}</p>
|
|
1701
1701
|
</div>`:n}
|
|
1702
|
-
${"advice"in e&&e.advice?
|
|
1702
|
+
${"advice"in e&&e.advice?t`<div class="section">
|
|
1703
1703
|
<h3>Advice</h3>
|
|
1704
1704
|
<p>${e.advice}</p>
|
|
1705
1705
|
</div>`:n}
|
|
1706
1706
|
</div>
|
|
1707
1707
|
|
|
1708
|
-
${(()=>{let d="luckyNumber"in e&&e.luckyNumber!==void 0?e.luckyNumber:void 0,
|
|
1709
|
-
${d!==void 0?
|
|
1710
|
-
${
|
|
1711
|
-
${m.length?
|
|
1708
|
+
${(()=>{let d="luckyNumber"in e&&e.luckyNumber!==void 0?e.luckyNumber:void 0,c="luckyColor"in e&&e.luckyColor?e.luckyColor:"",m="luckyNumbers"in e&&e.luckyNumbers?e.luckyNumbers:[],h="luckyDays"in e&&e.luckyDays?e.luckyDays:[],g=e.compatibleSigns??[];return d===void 0&&!c&&m.length===0&&h.length===0&&g.length===0?n:t`<div class="lucky">
|
|
1709
|
+
${d!==void 0?t`<span>Lucky number <strong>${d}</strong></span>`:n}
|
|
1710
|
+
${c?t`<span>Lucky color <strong>${c}</strong></span>`:n}
|
|
1711
|
+
${m.length?t`<span
|
|
1712
1712
|
>Lucky numbers
|
|
1713
1713
|
<strong>${m.join(", ")}</strong></span
|
|
1714
1714
|
>`:n}
|
|
1715
|
-
${h.length?
|
|
1715
|
+
${h.length?t`<span
|
|
1716
1716
|
>Lucky days <strong>${h.join(", ")}</strong></span
|
|
1717
1717
|
>`:n}
|
|
1718
|
-
${g.length?
|
|
1718
|
+
${g.length?t`<span class="compat-wrap">
|
|
1719
1719
|
Best with
|
|
1720
1720
|
<span class="compat"
|
|
1721
|
-
>${g.map(f=>
|
|
1721
|
+
>${g.map(f=>t`<span>${f}</span>`)}</span
|
|
1722
1722
|
>
|
|
1723
1723
|
</span>`:n}
|
|
1724
1724
|
</div>`})()}
|
|
@@ -1844,14 +1844,14 @@
|
|
|
1844
1844
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
1845
1845
|
text-transform: capitalize;
|
|
1846
1846
|
}
|
|
1847
|
-
`],
|
|
1847
|
+
`],p([y({attribute:!1})],U.prototype,"data",2),p([y({type:String,reflect:!0})],U.prototype,"period",2),U=p([v("roxy-horoscope-card")],U);var ae=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No KP data</div>`;let e=this.data.planets??[];return t`<div
|
|
1848
1848
|
class="wrap"
|
|
1849
1849
|
aria-label="KP planets table"
|
|
1850
1850
|
tabindex="0"
|
|
1851
1851
|
>
|
|
1852
1852
|
<header class="head">
|
|
1853
1853
|
<h2 class="title">KP planets</h2>
|
|
1854
|
-
${typeof this.data.ayanamsa=="number"?
|
|
1854
|
+
${typeof this.data.ayanamsa=="number"?t`<span class="ayanamsa">Ayanamsa: ${w(this.data.ayanamsa,2)}°</span>`:n}
|
|
1855
1855
|
</header>
|
|
1856
1856
|
<table role="table">
|
|
1857
1857
|
<thead>
|
|
@@ -1867,18 +1867,18 @@
|
|
|
1867
1867
|
</tr>
|
|
1868
1868
|
</thead>
|
|
1869
1869
|
<tbody>
|
|
1870
|
-
${e.map(t
|
|
1870
|
+
${e.map(r=>t`<tr>
|
|
1871
1871
|
<td class="planet">
|
|
1872
|
-
${
|
|
1873
|
-
${
|
|
1872
|
+
${r.planet}
|
|
1873
|
+
${r.retrograde?t`<span class="retro">R</span>`:n}
|
|
1874
1874
|
</td>
|
|
1875
|
-
<td>${
|
|
1876
|
-
<td>${
|
|
1877
|
-
<td>${
|
|
1878
|
-
<td>${
|
|
1879
|
-
<td>${
|
|
1880
|
-
<td>${
|
|
1881
|
-
<td>${
|
|
1875
|
+
<td>${r.sign??""}</td>
|
|
1876
|
+
<td>${r.signLord??""}</td>
|
|
1877
|
+
<td>${r.nakshatra??""}</td>
|
|
1878
|
+
<td>${r.nakshatraLord??""}</td>
|
|
1879
|
+
<td>${r.subLord??""}</td>
|
|
1880
|
+
<td>${r.subSubLord??""}</td>
|
|
1881
|
+
<td>${r.kpNumber??""}</td>
|
|
1882
1882
|
</tr>`)}
|
|
1883
1883
|
</tbody>
|
|
1884
1884
|
</table>
|
|
@@ -1941,7 +1941,7 @@
|
|
|
1941
1941
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
1942
1942
|
margin-left: 4px;
|
|
1943
1943
|
}
|
|
1944
|
-
`],
|
|
1944
|
+
`],p([y({attribute:!1})],ae.prototype,"data",2),ae=p([v("roxy-kp-planets-table")],ae);function Nr(i,a){let e,r=((...s)=>{e&&clearTimeout(e),e=setTimeout(()=>{e=void 0,i(...s)},a)});return r.cancel=()=>{e&&(clearTimeout(e),e=void 0)},r}var T=class extends u{constructor(){super(...arguments);this.endpoint="https://roxyapi.com/api/v2/location/search";this.placeholder="Search city";this.defaultValue="";this.query="";this.results=[];this.isOpen=!1;this.isLoading=!1;this.highlight=-1;this.secretKeyWarned=!1;this.debouncedFetch=Nr(e=>{this.fetchResults(e)},300);this.onInput=e=>{let r=e.target.value;if(this.query=r,r.length<2){this.results=[],this.isOpen=!1,this.highlight=-1;return}this.debouncedFetch(r)};this.onKeyDown=e=>{if(!this.isOpen||this.results.length===0){e.key==="ArrowDown"&&this.query.length>=2&&(this.fetchResults(this.query),e.preventDefault());return}if(e.key==="ArrowDown")e.preventDefault(),this.highlight=(this.highlight+1)%this.results.length;else if(e.key==="ArrowUp")e.preventDefault(),this.highlight=(this.highlight-1+this.results.length)%this.results.length;else if(e.key==="Enter"){e.preventDefault();let r=this.results[this.highlight]??this.results[0];r&&this.select(r)}else e.key==="Escape"&&(this.isOpen=!1)}}connectedCallback(){super.connectedCallback(),this.query=this.defaultValue,this.clickOutsideHandler=e=>{e.composedPath().includes(this)||(this.isOpen=!1)},document.addEventListener("mousedown",this.clickOutsideHandler)}disconnectedCallback(){super.disconnectedCallback(),this.clickOutsideHandler&&document.removeEventListener("mousedown",this.clickOutsideHandler),this.debouncedFetch.cancel(),this.abortController&&(this.abortController.abort(),this.abortController=void 0)}warnIfSecretKey(){if(this.secretKeyWarned||!this.apiKey||this.apiKey.startsWith("pk_"))return;this.secretKeyWarned=!0;let e="Possible secret key in client-side <roxy-location-search>; use a `pk_` publishable key with origin allowlist instead.";console.warn(e),this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{reason:"possible-secret-key",message:e},bubbles:!0,composed:!0}))}async fetchResults(e){this.warnIfSecretKey(),this.abortController&&this.abortController.abort();let r=new AbortController;this.abortController=r,this.isLoading=!0;try{let s=new URL(this.endpoint);s.searchParams.set("q",e),s.searchParams.set("limit","8");let o={Accept:"application/json"};this.apiKey&&(o["X-API-Key"]=this.apiKey),this.publishableKey&&(o["X-API-Key"]=this.publishableKey);let l=await fetch(s,{headers:o,signal:r.signal});if(!l.ok)throw new Error(`HTTP ${l.status}`);let d=await l.json();if(r.signal.aborted)return;this.results=d.cities??[],this.isOpen=this.results.length>0,this.highlight=this.results.length>0?0:-1}catch(s){if(s?.name==="AbortError")return;this.results=[],this.isOpen=!1}finally{this.abortController===r&&(this.abortController=void 0),r.signal.aborted||(this.isLoading=!1)}}select(e){this.query=`${e.city}${e.province?`, ${e.province}`:""}, ${e.country}`,this.isOpen=!1,this.results=[],this.dispatchEvent(new CustomEvent("roxy-location-select",{detail:e,bubbles:!0,composed:!0}))}render(){return t`<div class="field">
|
|
1945
1945
|
<input
|
|
1946
1946
|
type="text"
|
|
1947
1947
|
role="combobox"
|
|
@@ -1955,24 +1955,24 @@
|
|
|
1955
1955
|
@keydown=${this.onKeyDown}
|
|
1956
1956
|
@focus=${()=>{this.results.length>0&&(this.isOpen=!0)}}
|
|
1957
1957
|
/>
|
|
1958
|
-
${this.isLoading?
|
|
1959
|
-
${this.isOpen?
|
|
1958
|
+
${this.isLoading?t`<span class="spinner" role="status" aria-label="Loading"></span>`:n}
|
|
1959
|
+
${this.isOpen?t`<ul
|
|
1960
1960
|
id="roxy-location-listbox"
|
|
1961
1961
|
class="results"
|
|
1962
1962
|
role="listbox"
|
|
1963
1963
|
>
|
|
1964
|
-
${this.results.length===0?
|
|
1964
|
+
${this.results.length===0?t`<li class="empty" role="status">No cities found</li>`:this.results.map((e,r)=>t`<li role="presentation">
|
|
1965
1965
|
<button
|
|
1966
1966
|
type="button"
|
|
1967
1967
|
class="option"
|
|
1968
1968
|
role="option"
|
|
1969
|
-
aria-selected=${this.highlight===
|
|
1969
|
+
aria-selected=${this.highlight===r?"true":"false"}
|
|
1970
1970
|
@click=${()=>this.select(e)}
|
|
1971
|
-
@mouseenter=${()=>{this.highlight=
|
|
1971
|
+
@mouseenter=${()=>{this.highlight=r}}
|
|
1972
1972
|
>
|
|
1973
1973
|
<span class="city">${e.city}</span>
|
|
1974
1974
|
<span class="where"
|
|
1975
|
-
>${e.province?
|
|
1975
|
+
>${e.province?t`${e.province}, `:""}${e.country}</span
|
|
1976
1976
|
>
|
|
1977
1977
|
<span class="tz"
|
|
1978
1978
|
>UTC${e.utcOffset>=0?"+":""}${e.utcOffset}</span
|
|
@@ -2081,46 +2081,46 @@
|
|
|
2081
2081
|
color: var(--roxy-muted, #71717a);
|
|
2082
2082
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2083
2083
|
}
|
|
2084
|
-
`],
|
|
2084
|
+
`],p([y({type:String,attribute:"api-key"})],T.prototype,"apiKey",2),p([y({type:String,attribute:"publishable-key"})],T.prototype,"publishableKey",2),p([y({type:String})],T.prototype,"endpoint",2),p([y({type:String})],T.prototype,"placeholder",2),p([y({type:String,attribute:"default-value"})],T.prototype,"defaultValue",2),p([E()],T.prototype,"query",2),p([E()],T.prototype,"results",2),p([E()],T.prototype,"isOpen",2),p([E()],T.prototype,"isLoading",2),p([E()],T.prototype,"highlight",2),T=p([v("roxy-location-search")],T);var Y=class extends u{constructor(){super(...arguments);this.data=null;this.mode="current"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No moon phase data</div>`;let r="phases"in e?e.phases:"calendar"in e?e.calendar:[];if(this.mode!=="current"&&r.length>0){let s="month"in e?e.month:void 0,o="year"in e?e.year:void 0;return t`<article
|
|
2085
2085
|
class="card"
|
|
2086
2086
|
aria-label="Moon phase calendar"
|
|
2087
2087
|
>
|
|
2088
2088
|
<h2 class="label">${s??"Moon phases"} ${o??""}</h2>
|
|
2089
2089
|
<div class="list" role="list">
|
|
2090
|
-
${
|
|
2090
|
+
${r.map(l=>this.renderListItem(l))}
|
|
2091
2091
|
</div>
|
|
2092
|
-
</article>`}return"phase"in e?this.renderSingle(e):n}renderSingle(e){let
|
|
2092
|
+
</article>`}return"phase"in e?this.renderSingle(e):n}renderSingle(e){let r=Mr(e.phase);return t`<article class="card" aria-label="Current moon phase">
|
|
2093
2093
|
<div class="hero">
|
|
2094
|
-
<span class="emoji" aria-hidden="true">${
|
|
2094
|
+
<span class="emoji" aria-hidden="true">${r}</span>
|
|
2095
2095
|
<div>
|
|
2096
2096
|
<h2 class="label">${e.phase??"Moon"}</h2>
|
|
2097
|
-
${e.date?
|
|
2097
|
+
${e.date?t`<div class="date">${e.date}</div>`:n}
|
|
2098
2098
|
</div>
|
|
2099
2099
|
</div>
|
|
2100
2100
|
<div class="stats">
|
|
2101
|
-
${typeof e.illumination=="number"?
|
|
2101
|
+
${typeof e.illumination=="number"?t`<div>
|
|
2102
2102
|
<span>Illumination</span>
|
|
2103
|
-
<strong>${
|
|
2103
|
+
<strong>${xt(e.illumination)}</strong>
|
|
2104
2104
|
</div>`:n}
|
|
2105
|
-
${typeof e.age=="number"?
|
|
2105
|
+
${typeof e.age=="number"?t`<div>
|
|
2106
2106
|
<span>Age</span>
|
|
2107
2107
|
<strong>${w(e.age,1)} days</strong>
|
|
2108
2108
|
</div>`:n}
|
|
2109
|
-
${e.sign?
|
|
2109
|
+
${e.sign?t`<div>
|
|
2110
2110
|
<span>Sign</span>
|
|
2111
2111
|
<strong>${e.sign}</strong>
|
|
2112
2112
|
</div>`:n}
|
|
2113
|
-
${typeof e.distance=="number"?
|
|
2113
|
+
${typeof e.distance=="number"?t`<div>
|
|
2114
2114
|
<span>Distance</span>
|
|
2115
2115
|
<strong>${(e.distance/1e3).toFixed(0)}k km</strong>
|
|
2116
2116
|
</div>`:n}
|
|
2117
2117
|
</div>
|
|
2118
|
-
${e.meaning?.description?
|
|
2119
|
-
${e.meaning?.keywords?.length?
|
|
2120
|
-
${e.meaning.keywords.map(s=>
|
|
2118
|
+
${e.meaning?.description?t`<p class="meaning">${e.meaning.description}</p>`:n}
|
|
2119
|
+
${e.meaning?.keywords?.length?t`<div class="keywords">
|
|
2120
|
+
${e.meaning.keywords.map(s=>t`<span>${s}</span>`)}
|
|
2121
2121
|
</div>`:n}
|
|
2122
|
-
</article>`}renderListItem(e){let
|
|
2123
|
-
<span aria-hidden="true">${
|
|
2122
|
+
</article>`}renderListItem(e){let r=Mr(e.phase);return t`<div class="list-item" role="listitem">
|
|
2123
|
+
<span aria-hidden="true">${r}</span>
|
|
2124
2124
|
<span>${e.phase}</span>
|
|
2125
2125
|
<span>${e.date??""}</span>
|
|
2126
2126
|
</div>`}};Y.styles=[b,x`
|
|
@@ -2205,15 +2205,15 @@
|
|
|
2205
2205
|
.list-item:last-child {
|
|
2206
2206
|
border-bottom: none;
|
|
2207
2207
|
}
|
|
2208
|
-
`],
|
|
2208
|
+
`],p([y({attribute:!1})],Y.prototype,"data",2),p([y({type:String,reflect:!0})],Y.prototype,"mode",2),Y=p([v("roxy-moon-phase")],Y);function Mr(i){return i?Pr[i.toLowerCase()]??"\u{1F319}":"\u{1F319}"}function xt(i){let a=i<=1?i*100:i;return`${Math.round(a)}%`}function R(i,a,e,r){let s=r*Math.PI/180;return{x:i+e*Math.cos(s),y:a+e*Math.sin(s)}}var nr=420,A=nr/2,or=164,ft=146,ir=120,je=96,vt=178,bt=196,K=class extends u{constructor(){super(...arguments);this.data=null;this.houseSystem="placidus"}getPlanets(){return this.data?.planets??[]}getAscendant(){return this.data?.ascendant?.longitude??0}getMidheaven(){let e=this.data?.midheaven?.longitude;return typeof e=="number"?e:null}toAngle(e){return 180+this.getAscendant()-e}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.getPlanets(),r=this.data.aspects??[];return t`<div class="wrap">
|
|
2209
2209
|
<header>
|
|
2210
2210
|
<h2 class="title">Natal chart</h2>
|
|
2211
|
-
${this.data.birthDetails?
|
|
2211
|
+
${this.data.birthDetails?t`<div class="meta">
|
|
2212
2212
|
${[this.data.birthDetails.date,this.data.birthDetails.time].filter(Boolean).join(" \xB7 ")}
|
|
2213
2213
|
</div>`:n}
|
|
2214
2214
|
</header>
|
|
2215
2215
|
<svg
|
|
2216
|
-
viewBox="0 0 ${
|
|
2216
|
+
viewBox="0 0 ${nr} ${nr}"
|
|
2217
2217
|
role="img"
|
|
2218
2218
|
aria-label="Natal chart wheel with twelve houses, planets, and aspects"
|
|
2219
2219
|
>
|
|
@@ -2226,83 +2226,83 @@
|
|
|
2226
2226
|
class="wheel-line"
|
|
2227
2227
|
cx=${A}
|
|
2228
2228
|
cy=${A}
|
|
2229
|
-
r=${
|
|
2229
|
+
r=${or}
|
|
2230
2230
|
stroke-width="1.5"
|
|
2231
2231
|
/>
|
|
2232
2232
|
<circle
|
|
2233
2233
|
class="wheel-line"
|
|
2234
2234
|
cx=${A}
|
|
2235
2235
|
cy=${A}
|
|
2236
|
-
r=${
|
|
2236
|
+
r=${ir}
|
|
2237
2237
|
stroke-width="1"
|
|
2238
2238
|
/>
|
|
2239
2239
|
<circle
|
|
2240
2240
|
class="wheel-line"
|
|
2241
2241
|
cx=${A}
|
|
2242
2242
|
cy=${A}
|
|
2243
|
-
r=${
|
|
2243
|
+
r=${je-16}
|
|
2244
2244
|
stroke-width="0.5"
|
|
2245
2245
|
/>
|
|
2246
2246
|
${this.renderSpokes()} ${this.renderSigns()} ${this.renderHouseNumbers()}
|
|
2247
|
-
${this.renderAspects(e,
|
|
2247
|
+
${this.renderAspects(e,r)} ${this.renderPlanets(e)}
|
|
2248
2248
|
${this.renderAngles()}
|
|
2249
2249
|
</svg>
|
|
2250
2250
|
<div class="legend">
|
|
2251
2251
|
<span>${e.length} planets</span>
|
|
2252
|
-
<span>${
|
|
2252
|
+
<span>${r.length} aspects</span>
|
|
2253
2253
|
<span><span class="legend-swatch" style="background: var(--roxy-success)"></span>harmonious</span>
|
|
2254
2254
|
<span><span class="legend-swatch" style="background: var(--roxy-danger)"></span>challenging</span>
|
|
2255
2255
|
</div>
|
|
2256
2256
|
${this.renderDetails()}
|
|
2257
2257
|
${this.renderInterpretations()}
|
|
2258
|
-
</div>`}renderAngles(){let e=this.getAscendant(),
|
|
2258
|
+
</div>`}renderAngles(){let e=this.getAscendant(),r=this.getMidheaven(),s=[this.renderAngleMark(e,"ASC")];return r!==null&&s.push(this.renderAngleMark(r,"MC")),s}renderAngleMark(e,r){let s=this.toAngle(e),o=R(A,A,or,s),l=R(A,A,vt,s),d=R(A,A,bt,s);return S`
|
|
2259
2259
|
<g>
|
|
2260
2260
|
<line class="angle-tick" x1=${o.x} y1=${o.y} x2=${l.x} y2=${l.y} />
|
|
2261
|
-
<text class="angle-marker" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${
|
|
2261
|
+
<text class="angle-marker" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${r}</text>
|
|
2262
2262
|
</g>
|
|
2263
|
-
`}renderSpokes(){return Array.from({length:12},(e,
|
|
2264
|
-
${e?.dominantElement||e?.dominantModality?
|
|
2265
|
-
${e.dominantElement?
|
|
2266
|
-
${e.dominantModality?
|
|
2263
|
+
`}renderSpokes(){return Array.from({length:12},(e,r)=>{let s=this.toAngle(r*30),o=R(A,A,ir,s),l=R(A,A,or,s);return S`<line class="wheel-line" x1=${o.x} y1=${o.y} x2=${l.x} y2=${l.y} stroke-width="0.8" />`})}renderSigns(){return pe.map((e,r)=>{let s=this.toAngle(r*30+15),o=R(A,A,ft,s);return S`<text class="sign-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${z[e]}</text>`})}renderHouseNumbers(){let e=Math.floor(this.getAscendant()/30);return Array.from({length:12},(r,s)=>{let o=this.toAngle(s*30+15),l=R(A,A,ir-12,o),d=(s-e+12)%12+1;return S`<text class="house-num" x=${l.x} y=${l.y} text-anchor="middle" dominant-baseline="central">${d}</text>`})}renderPlanets(e){return e.map(r=>{if(!Number.isFinite(r.longitude))return n;let s=this.toAngle(r.longitude),o=R(A,A,je,s),l=L[C(r.name)]??r.name.slice(0,2),d=r.isRetrograde?" R":"",c=d?`${l}\u1D3F`:l;return S`<text class="planet-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central"><title>${r.name}${d}</title>${c}</text>`})}renderDetails(){let e=this.data?.summary,r=this.data?.aspectsInterpretation;if(!e&&!r)return n;let s=e?.retrogradePlanets??[],o=e?.elementDistribution??{},l=e?.modalityDistribution??{},d=Math.max(1,...Object.values(o)),c=Math.max(1,...Object.values(l));return t`<div class="details">
|
|
2264
|
+
${e?.dominantElement||e?.dominantModality?t`<div class="pill-row">
|
|
2265
|
+
${e.dominantElement?t`<span class="pill">Dominant element: ${e.dominantElement}</span>`:n}
|
|
2266
|
+
${e.dominantModality?t`<span class="pill">Dominant modality: ${e.dominantModality}</span>`:n}
|
|
2267
2267
|
</div>`:n}
|
|
2268
|
-
${t
|
|
2269
|
-
<span class="pill pill--success">Harmonious ${
|
|
2270
|
-
<span class="pill pill--danger">Challenging ${
|
|
2271
|
-
<span class="pill pill--muted">Neutral ${
|
|
2268
|
+
${r?t`<div class="pill-row">
|
|
2269
|
+
<span class="pill pill--success">Harmonious ${r.harmonious}</span>
|
|
2270
|
+
<span class="pill pill--danger">Challenging ${r.challenging}</span>
|
|
2271
|
+
<span class="pill pill--muted">Neutral ${r.neutral}</span>
|
|
2272
2272
|
</div>`:n}
|
|
2273
|
-
${s.length>0?
|
|
2274
|
-
${s.map(m=>{let h=L[m]??m.slice(0,2);return
|
|
2273
|
+
${s.length>0?t`<div class="pill-row">
|
|
2274
|
+
${s.map(m=>{let h=L[m]??m.slice(0,2);return t`<span class="pill pill--muted">${h} ${m} R</span>`})}
|
|
2275
2275
|
</div>`:n}
|
|
2276
|
-
${
|
|
2277
|
-
${Object.keys(o).length>0||Object.keys(l).length>0?
|
|
2278
|
-
${Object.keys(o).length>0?
|
|
2276
|
+
${r?.summary?t`<p class="summary">${r.summary}</p>`:n}
|
|
2277
|
+
${Object.keys(o).length>0||Object.keys(l).length>0?t`<div class="dist-grid">
|
|
2278
|
+
${Object.keys(o).length>0?t`<div class="dist-section">
|
|
2279
2279
|
<h3>Elements</h3>
|
|
2280
|
-
${Object.entries(o).map(([m,h])=>
|
|
2280
|
+
${Object.entries(o).map(([m,h])=>t`<div class="dist-row">
|
|
2281
2281
|
<span>${m}</span>
|
|
2282
2282
|
<div class="dist-bar"><span style="width: ${Math.round(h/d*100)}%"></span></div>
|
|
2283
2283
|
<span>${h}</span>
|
|
2284
2284
|
</div>`)}
|
|
2285
2285
|
</div>`:n}
|
|
2286
|
-
${Object.keys(l).length>0?
|
|
2286
|
+
${Object.keys(l).length>0?t`<div class="dist-section">
|
|
2287
2287
|
<h3>Modalities</h3>
|
|
2288
|
-
${Object.entries(l).map(([m,h])=>
|
|
2288
|
+
${Object.entries(l).map(([m,h])=>t`<div class="dist-row">
|
|
2289
2289
|
<span>${m}</span>
|
|
2290
|
-
<div class="dist-bar"><span style="width: ${Math.round(h/
|
|
2290
|
+
<div class="dist-bar"><span style="width: ${Math.round(h/c*100)}%"></span></div>
|
|
2291
2291
|
<span>${h}</span>
|
|
2292
2292
|
</div>`)}
|
|
2293
2293
|
</div>`:n}
|
|
2294
2294
|
</div>`:n}
|
|
2295
|
-
</div>`}renderInterpretations(){let e=this.getPlanets().filter(
|
|
2295
|
+
</div>`}renderInterpretations(){let e=this.getPlanets().filter(r=>r.interpretation);return e.length===0?n:t`<section class="interpretations">
|
|
2296
2296
|
<h3>Planet readings</h3>
|
|
2297
|
-
${e.map(
|
|
2298
|
-
<summary>${
|
|
2297
|
+
${e.map((r,s)=>{let o=r.interpretation,l=L[C(r.name)]??"",d=w(r.degree??0,1);return t`<details class="interp-card" name="natal-planet-readings" ?open=${s===0}>
|
|
2298
|
+
<summary>${l} ${r.name} <small>${r.sign??""} ${d}</small></summary>
|
|
2299
2299
|
<div class="interp-body">
|
|
2300
|
-
${
|
|
2301
|
-
${
|
|
2302
|
-
${
|
|
2300
|
+
${o.summary?t`<p class="interp-summary">${o.summary}</p>`:n}
|
|
2301
|
+
${o.detailed?t`<p class="interp-detail">${o.detailed}</p>`:n}
|
|
2302
|
+
${o.keywords?.length?t`<div class="interp-keywords">${o.keywords.map(c=>t`<span class="kw">${c}</span>`)}</div>`:n}
|
|
2303
2303
|
</div>
|
|
2304
2304
|
</details>`})}
|
|
2305
|
-
</section>`}renderAspects(e,
|
|
2305
|
+
</section>`}renderAspects(e,r){let s=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let l=C(o.name);l&&s.set(l,o.longitude)}return r.map(o=>{let l=s.get(C(o.planet1)),d=s.get(C(o.planet2));if(l===void 0||d===void 0)return n;let c=R(A,A,je-18,this.toAngle(l)),m=R(A,A,je-18,this.toAngle(d)),h=ke(o),g=Ne[h]??"aspect-other",f=w(o.orb,1);return S`<line class=${`aspect ${g}`} x1=${c.x} y1=${c.y} x2=${m.x} y2=${m.y}><title>${o.planet1} ${h||""} ${o.planet2}${f?` (orb ${f}\xB0)`:""}</title></line>`})}};K.styles=[b,x`
|
|
2306
2306
|
.wrap {
|
|
2307
2307
|
width: 100%;
|
|
2308
2308
|
display: grid;
|
|
@@ -2531,40 +2531,40 @@
|
|
|
2531
2531
|
color: var(--roxy-accent-fg, #b45309);
|
|
2532
2532
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2533
2533
|
}
|
|
2534
|
-
`],
|
|
2534
|
+
`],p([y({attribute:!1})],K.prototype,"data",2),p([y({type:String,attribute:"house-system",reflect:!0})],K.prototype,"houseSystem",2),K=p([v("roxy-natal-chart")],K);var V=class extends u{constructor(){super(...arguments);this.data=null;this.type="life-path"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No numerology data</div>`;let r=$t[this.type]??this.type;return"coreNumbers"in e?this.renderChart(e,r):"personalYear"in e?this.renderPersonalYear(e,r):this.renderNumberCard(e,r)}renderNumberCard(e,r){let s=e.meaning?.keywords??[];return t`<article class="card" aria-label=${r}>
|
|
2535
2535
|
<div class="hero">
|
|
2536
|
-
${typeof e.number=="number"?
|
|
2536
|
+
${typeof e.number=="number"?t`<div class="numeral">${e.number}</div>`:n}
|
|
2537
2537
|
<div>
|
|
2538
|
-
<p class="label">${
|
|
2539
|
-
${e.meaning?.title?
|
|
2538
|
+
<p class="label">${r}</p>
|
|
2539
|
+
${e.meaning?.title?t`<h2 class="title">${e.meaning.title}</h2>`:n}
|
|
2540
2540
|
</div>
|
|
2541
2541
|
</div>
|
|
2542
|
-
${e.meaning?.description?
|
|
2543
|
-
${e.calculation?
|
|
2544
|
-
${s.length>0?
|
|
2545
|
-
${s.map(o=>
|
|
2542
|
+
${e.meaning?.description?t`<p class="meaning">${e.meaning.description}</p>`:n}
|
|
2543
|
+
${e.calculation?t`<pre class="calc">${e.calculation}</pre>`:n}
|
|
2544
|
+
${s.length>0?t`<div class="chips">
|
|
2545
|
+
${s.map(o=>t`<span>${o}</span>`)}
|
|
2546
2546
|
</div>`:n}
|
|
2547
|
-
${e.hasKarmicDebt&&e.karmicDebtNumber?
|
|
2547
|
+
${e.hasKarmicDebt&&e.karmicDebtNumber?t`<div class="karmic">
|
|
2548
2548
|
Karmic debt ${e.karmicDebtNumber}.
|
|
2549
|
-
${
|
|
2549
|
+
${wt(e.karmicDebtMeaning)}
|
|
2550
2550
|
</div>`:n}
|
|
2551
|
-
</article>`}renderPersonalYear(e,
|
|
2551
|
+
</article>`}renderPersonalYear(e,r){return t`<article class="card" aria-label=${r}>
|
|
2552
2552
|
<div class="hero">
|
|
2553
|
-
${typeof e.personalYear=="number"?
|
|
2553
|
+
${typeof e.personalYear=="number"?t`<div class="numeral">${e.personalYear}</div>`:n}
|
|
2554
2554
|
<div>
|
|
2555
|
-
<p class="label">${
|
|
2556
|
-
${e.theme?
|
|
2555
|
+
<p class="label">${r}</p>
|
|
2556
|
+
${e.theme?t`<h2 class="title">${e.theme}</h2>`:n}
|
|
2557
2557
|
</div>
|
|
2558
2558
|
</div>
|
|
2559
|
-
${e.forecast?
|
|
2560
|
-
${e.advice?
|
|
2561
|
-
</article>`}renderChart(e,
|
|
2559
|
+
${e.forecast?t`<p class="meaning">${e.forecast}</p>`:n}
|
|
2560
|
+
${e.advice?t`<p>${e.advice}</p>`:n}
|
|
2561
|
+
</article>`}renderChart(e,r){let s=Object.entries(e.coreNumbers).filter(([,o])=>o!=null);return t`<article class="card" aria-label=${r}>
|
|
2562
2562
|
<div>
|
|
2563
|
-
<p class="label">${
|
|
2564
|
-
${e.profile?.name?
|
|
2563
|
+
<p class="label">${r}</p>
|
|
2564
|
+
${e.profile?.name?t`<h2 class="title">${e.profile.name}</h2>`:n}
|
|
2565
2565
|
</div>
|
|
2566
|
-
${s.length>0?
|
|
2567
|
-
${s.map(([o,l])=>
|
|
2566
|
+
${s.length>0?t`<div class="cores">
|
|
2567
|
+
${s.map(([o,l])=>t`<div class="item">
|
|
2568
2568
|
<span>${ee(o)}</span>
|
|
2569
2569
|
<strong>${l.number??""}</strong>
|
|
2570
2570
|
</div>`)}
|
|
@@ -2665,56 +2665,56 @@
|
|
|
2665
2665
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2666
2666
|
color: var(--roxy-fg, #0a0a0a);
|
|
2667
2667
|
}
|
|
2668
|
-
`],
|
|
2668
|
+
`],p([y({attribute:!1})],V.prototype,"data",2),p([y({type:String,reflect:!0})],V.prototype,"type",2),V=p([v("roxy-numerology-card")],V);var $t={"life-path":"Life Path",expression:"Expression","personal-year":"Personal Year",chart:"Numerology chart"};function wt(i){return i?[i.description,i.challenge,i.resolution].filter(Boolean).join(" "):""}var F=class extends u{constructor(){super(...arguments);this.data=null;this.detail="detailed"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No panchang data</div>`;let r="sunrise"in e?e:null,s=[["Tithi",this.formatPart(e.tithi)],["Nakshatra",this.formatPart(e.nakshatra)],["Yoga",this.formatPart(e.yoga)],["Karana",this.formatPart(e.karana)]];r&&s.push(["Vara",this.formatPart(r.vara)]);let o=r?[["Brahma Muhurta",r.brahmaMuhurta],["Abhijit Muhurta",r.abhijitMuhurta],["Vijaya Muhurta",r.vijayaMuhurta],["Godhuli Muhurta",r.godhuliMuhurta],["Nishita Muhurta",r.nishitaMuhurta],["Pratah Sandhya",r.pratahSandhya],["Sayahna Sandhya",r.sayahnaSandhya]]:[],l=r?[["Rahu Kaal",r.rahuKaal],["Yamaganda",r.yamaganda],["Gulika",r.gulika]]:[];return t`<div class="wrap" aria-label="Panchang">
|
|
2669
2669
|
<header class="head">
|
|
2670
2670
|
<h2 class="title">Panchang</h2>
|
|
2671
|
-
<span class="date">${
|
|
2671
|
+
<span class="date">${r?ze(r.date):""}</span>
|
|
2672
2672
|
</header>
|
|
2673
2673
|
<table>
|
|
2674
2674
|
<tbody>
|
|
2675
|
-
${s.map(([d,
|
|
2675
|
+
${s.map(([d,c])=>t`<tr>
|
|
2676
2676
|
<th>${d}</th>
|
|
2677
|
-
<td>${
|
|
2677
|
+
<td>${c}</td>
|
|
2678
2678
|
</tr>`)}
|
|
2679
|
-
${
|
|
2679
|
+
${r?.sunrise?t`<tr>
|
|
2680
2680
|
<th>Sunrise</th>
|
|
2681
|
-
<td>${O(
|
|
2681
|
+
<td>${O(r.sunrise)}</td>
|
|
2682
2682
|
</tr>`:n}
|
|
2683
|
-
${
|
|
2683
|
+
${r?.sunset?t`<tr>
|
|
2684
2684
|
<th>Sunset</th>
|
|
2685
|
-
<td>${O(
|
|
2685
|
+
<td>${O(r.sunset)}</td>
|
|
2686
2686
|
</tr>`:n}
|
|
2687
|
-
${
|
|
2687
|
+
${r?.moonrise?t`<tr>
|
|
2688
2688
|
<th>Moonrise</th>
|
|
2689
|
-
<td>${O(
|
|
2689
|
+
<td>${O(r.moonrise)}</td>
|
|
2690
2690
|
</tr>`:n}
|
|
2691
|
-
${
|
|
2691
|
+
${r?.moonset?t`<tr>
|
|
2692
2692
|
<th>Moonset</th>
|
|
2693
|
-
<td>${O(
|
|
2693
|
+
<td>${O(r.moonset)}</td>
|
|
2694
2694
|
</tr>`:n}
|
|
2695
2695
|
</tbody>
|
|
2696
2696
|
</table>
|
|
2697
|
-
${this.detail==="detailed"&&(o.some(d=>!!d[1])||l.some(d=>!!d[1]))?
|
|
2697
|
+
${this.detail==="detailed"&&(o.some(d=>!!d[1])||l.some(d=>!!d[1]))?t`
|
|
2698
2698
|
<div class="section">Auspicious muhurtas</div>
|
|
2699
2699
|
<table>
|
|
2700
2700
|
<tbody>
|
|
2701
|
-
${o.filter(([,d])=>!!d).map(([d,
|
|
2701
|
+
${o.filter(([,d])=>!!d).map(([d,c])=>t`<tr>
|
|
2702
2702
|
<th>${d}</th>
|
|
2703
|
-
<td>${
|
|
2703
|
+
<td>${ar(c)}</td>
|
|
2704
2704
|
</tr>`)}
|
|
2705
2705
|
</tbody>
|
|
2706
2706
|
</table>
|
|
2707
2707
|
<div class="section">Inauspicious periods</div>
|
|
2708
2708
|
<table>
|
|
2709
2709
|
<tbody>
|
|
2710
|
-
${l.filter(([,d])=>!!d).map(([d,
|
|
2710
|
+
${l.filter(([,d])=>!!d).map(([d,c])=>t`<tr>
|
|
2711
2711
|
<th>${d}</th>
|
|
2712
|
-
<td>${
|
|
2712
|
+
<td>${ar(c)}</td>
|
|
2713
2713
|
</tr>`)}
|
|
2714
2714
|
</tbody>
|
|
2715
2715
|
</table>
|
|
2716
2716
|
`:n}
|
|
2717
|
-
</div>`}formatPart(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e=="object"){let
|
|
2717
|
+
</div>`}formatPart(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e=="object"){let r=e;return[r.name,r.lord?`(${r.lord})`:"",r.phase].filter(Boolean).join(" ")}return String(e)}};F.styles=[b,x`
|
|
2718
2718
|
.wrap {
|
|
2719
2719
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
2720
2720
|
border-radius: var(--roxy-radius-md, 8px);
|
|
@@ -2772,35 +2772,35 @@
|
|
|
2772
2772
|
text-transform: uppercase;
|
|
2773
2773
|
letter-spacing: 0.06em;
|
|
2774
2774
|
}
|
|
2775
|
-
`],
|
|
2775
|
+
`],p([y({attribute:!1})],F.prototype,"data",2),p([y({type:String,reflect:!0})],F.prototype,"detail",2),F=p([v("roxy-panchang-table")],F);var lr=[{key:"sthanaBala",label:"Sthana",color:"var(--roxy-info, #0284c7)"},{key:"digBala",label:"Dig",color:"var(--roxy-success, #16a34a)"},{key:"kalaBala",label:"Kala",color:"var(--roxy-warning, #ea580c)"},{key:"chestaBala",label:"Chesta",color:"var(--roxy-accent, #f59e0b)"},{key:"naisargikaBala",label:"Naisargika",color:"var(--roxy-secondary, #475569)"},{key:"drikBala",label:"Drik",color:"var(--roxy-danger, #dc2626)"}],se=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data?.planets?.length)return t`<div class="roxy-empty" role="status">No shadbala data</div>`;let e=[...this.data.planets].sort((r,s)=>r.relativeRank-s.relativeRank);return t`<div class="wrap" aria-label="Shadbala planetary strength">
|
|
2776
2776
|
<div class="head">
|
|
2777
2777
|
<h2 class="title">Shadbala</h2>
|
|
2778
2778
|
<p class="subtitle">${e.length} planets ranked by strength</p>
|
|
2779
2779
|
</div>
|
|
2780
2780
|
|
|
2781
2781
|
<div role="list" aria-label="Planet strength bars">
|
|
2782
|
-
${e.map(
|
|
2782
|
+
${e.map(r=>this.renderPlanetRow(r))}
|
|
2783
2783
|
</div>
|
|
2784
2784
|
|
|
2785
2785
|
<div class="legend" aria-label="Strength component legend">
|
|
2786
|
-
${
|
|
2786
|
+
${lr.map(r=>t`<div class="legend-row">
|
|
2787
2787
|
<span
|
|
2788
2788
|
class="legend-swatch"
|
|
2789
|
-
style="background: ${
|
|
2789
|
+
style="background: ${r.color}"
|
|
2790
2790
|
aria-hidden="true"
|
|
2791
2791
|
></span>
|
|
2792
|
-
${
|
|
2792
|
+
${r.label}
|
|
2793
2793
|
</div>`)}
|
|
2794
2794
|
</div>
|
|
2795
|
-
</div>`}renderPlanetRow(e){let
|
|
2795
|
+
</div>`}renderPlanetRow(e){let r=L[C(e.planet)]??"",s=lr.map(h=>Math.max(0,e[h.key])),o=s.reduce((h,g)=>h+g,0),l=typeof e.strengthRatio=="number"&&e.strengthRatio>=1,d=l?"adequacy-badge--adequate":"adequacy-badge--weak",c=l?"adequate":"weak",m=w(e.totalRupas,2)&&w(e.minRequired,2)?`${w(e.totalRupas,2)} / ${w(e.minRequired,2)} R`:"";return t`<div class="planet-row" role="listitem" aria-label="${e.planet} shadbala">
|
|
2796
2796
|
<div class="planet-label">
|
|
2797
|
-
<span class="glyph" aria-hidden="true">${
|
|
2797
|
+
<span class="glyph" aria-hidden="true">${r}</span>
|
|
2798
2798
|
${e.planet}
|
|
2799
2799
|
<span class="rank-badge" aria-label="rank ${e.relativeRank}">#${e.relativeRank}</span>
|
|
2800
2800
|
</div>
|
|
2801
2801
|
<div class="bar-wrap">
|
|
2802
2802
|
<div class="bar" role="img" aria-label="Strength components for ${e.planet}">
|
|
2803
|
-
${o>0?
|
|
2803
|
+
${o>0?lr.map((h,g)=>{let f=s[g];if(f<=0)return n;let k=f/o*100;return t`<div
|
|
2804
2804
|
class="bar-segment"
|
|
2805
2805
|
style="flex-grow: ${k}; background: ${h.color};"
|
|
2806
2806
|
title="${h.label}: ${w(f,1)}"
|
|
@@ -2808,8 +2808,8 @@
|
|
|
2808
2808
|
</div>
|
|
2809
2809
|
</div>
|
|
2810
2810
|
<div class="pills">
|
|
2811
|
-
${m?
|
|
2812
|
-
<span class="${`adequacy-badge ${d}`}">${
|
|
2811
|
+
${m?t`<span class="rupas-label">${m}</span>`:n}
|
|
2812
|
+
<span class="${`adequacy-badge ${d}`}">${c}</span>
|
|
2813
2813
|
</div>
|
|
2814
2814
|
</div>`}};se.styles=[b,x`
|
|
2815
2815
|
.wrap {
|
|
@@ -2957,18 +2957,18 @@
|
|
|
2957
2957
|
justify-content: flex-start;
|
|
2958
2958
|
}
|
|
2959
2959
|
}
|
|
2960
|
-
`],
|
|
2960
|
+
`],p([y({attribute:!1})],se.prototype,"data",2),se=p([v("roxy-shadbala-table")],se);var dr=360,P=dr/2,Dr=170,kt=154,Or=124,Se=96,oe=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No synastry data</div>`;let{person1:e,person2:r,compatibilityScore:s,analysis:o}=this.data,l=this.data.interAspects??[],d=e?.planets??[],c=r?.planets??[],m=typeof s=="number"?Math.round(s):void 0,h=o?.overall,g=o?.strengths??[],f=o?.challenges??[];return d.length>0&&c.length>0?t`<div
|
|
2961
2961
|
class="wrap"
|
|
2962
2962
|
aria-label="Synastry compatibility chart"
|
|
2963
2963
|
>
|
|
2964
2964
|
<div class="head">
|
|
2965
2965
|
<h2 class="title">Synastry</h2>
|
|
2966
|
-
${typeof m=="number"?
|
|
2966
|
+
${typeof m=="number"?t`<span class="score" aria-label=${`Score ${m} of 100`}
|
|
2967
2967
|
>${m} / 100</span
|
|
2968
2968
|
>`:n}
|
|
2969
2969
|
</div>
|
|
2970
2970
|
<svg
|
|
2971
|
-
viewBox="0 0 ${
|
|
2971
|
+
viewBox="0 0 ${dr} ${dr}"
|
|
2972
2972
|
role="img"
|
|
2973
2973
|
aria-label="Dual chart wheel comparing two natal charts"
|
|
2974
2974
|
>
|
|
@@ -2977,7 +2977,7 @@
|
|
|
2977
2977
|
class="wheel-line"
|
|
2978
2978
|
cx=${P}
|
|
2979
2979
|
cy=${P}
|
|
2980
|
-
r=${
|
|
2980
|
+
r=${Dr}
|
|
2981
2981
|
stroke-width="1.5"
|
|
2982
2982
|
/>
|
|
2983
2983
|
<circle
|
|
@@ -2995,8 +2995,8 @@
|
|
|
2995
2995
|
stroke-width="0.6"
|
|
2996
2996
|
/>
|
|
2997
2997
|
${this.renderSpokes()} ${this.renderSigns()}
|
|
2998
|
-
${this.renderInterAspectLines(d,
|
|
2999
|
-
${this.renderRing(d,
|
|
2998
|
+
${this.renderInterAspectLines(d,c,l)}
|
|
2999
|
+
${this.renderRing(d,Or,"p1")} ${this.renderRing(c,Se,"p2")}
|
|
3000
3000
|
</svg>
|
|
3001
3001
|
<div class="legend-row">
|
|
3002
3002
|
<span><span class="swatch" style="background: var(--roxy-accent)"></span>Person 1</span>
|
|
@@ -3004,29 +3004,29 @@
|
|
|
3004
3004
|
<span><span class="swatch" style="background: var(--roxy-success)"></span>harmonious</span>
|
|
3005
3005
|
<span><span class="swatch" style="background: var(--roxy-danger)"></span>challenging</span>
|
|
3006
3006
|
</div>
|
|
3007
|
-
${h?
|
|
3007
|
+
${h?t`<p class="summary">${h}</p>`:n}
|
|
3008
3008
|
${l.length>0?this.renderAspects(l):n}
|
|
3009
|
-
${g.length>0||f.length>0?
|
|
3010
|
-
${g.length?
|
|
3009
|
+
${g.length>0||f.length>0?t`<div class="lists">
|
|
3010
|
+
${g.length?t`<div>
|
|
3011
3011
|
<h3>Strengths</h3>
|
|
3012
3012
|
<ul>
|
|
3013
|
-
${g.map($=>
|
|
3013
|
+
${g.map($=>t`<li>${$}</li>`)}
|
|
3014
3014
|
</ul>
|
|
3015
3015
|
</div>`:n}
|
|
3016
|
-
${f.length?
|
|
3016
|
+
${f.length?t`<div>
|
|
3017
3017
|
<h3>Challenges</h3>
|
|
3018
3018
|
<ul>
|
|
3019
|
-
${f.map($=>
|
|
3019
|
+
${f.map($=>t`<li>${$}</li>`)}
|
|
3020
3020
|
</ul>
|
|
3021
3021
|
</div>`:n}
|
|
3022
3022
|
</div>`:n}
|
|
3023
|
-
</div>`:
|
|
3023
|
+
</div>`:t`<div
|
|
3024
3024
|
class="wrap"
|
|
3025
3025
|
aria-label="Synastry compatibility chart"
|
|
3026
3026
|
>
|
|
3027
3027
|
<div class="head">
|
|
3028
3028
|
<h2 class="title">Synastry</h2>
|
|
3029
|
-
${typeof m=="number"?
|
|
3029
|
+
${typeof m=="number"?t`<span class="score" aria-label=${`Score ${m} of 100`}
|
|
3030
3030
|
>${m} / 100</span
|
|
3031
3031
|
>`:n}
|
|
3032
3032
|
</div>
|
|
@@ -3036,23 +3036,23 @@
|
|
|
3036
3036
|
<code>person2.planets</code> arrays from the natal-chart endpoint, or
|
|
3037
3037
|
use the <code><roxy-data></code> fallback.
|
|
3038
3038
|
</div>
|
|
3039
|
-
${h?
|
|
3039
|
+
${h?t`<p class="summary">${h}</p>`:n}
|
|
3040
3040
|
${l.length>0?this.renderAspects(l):n}
|
|
3041
|
-
${g.length>0||f.length>0?
|
|
3042
|
-
${g.length?
|
|
3041
|
+
${g.length>0||f.length>0?t`<div class="lists">
|
|
3042
|
+
${g.length?t`<div>
|
|
3043
3043
|
<h3>Strengths</h3>
|
|
3044
3044
|
<ul>
|
|
3045
|
-
${g.map($=>
|
|
3045
|
+
${g.map($=>t`<li>${$}</li>`)}
|
|
3046
3046
|
</ul>
|
|
3047
3047
|
</div>`:n}
|
|
3048
|
-
${f.length?
|
|
3048
|
+
${f.length?t`<div>
|
|
3049
3049
|
<h3>Challenges</h3>
|
|
3050
3050
|
<ul>
|
|
3051
|
-
${f.map($=>
|
|
3051
|
+
${f.map($=>t`<li>${$}</li>`)}
|
|
3052
3052
|
</ul>
|
|
3053
3053
|
</div>`:n}
|
|
3054
3054
|
</div>`:n}
|
|
3055
|
-
</div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,
|
|
3055
|
+
</div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,r)=>{let s=this.toAngle(r*30),o=R(P,P,Se-14,s),l=R(P,P,Dr,s);return S`<line class="wheel-line" x1=${o.x} y1=${o.y} x2=${l.x} y2=${l.y} stroke-width="0.6" />`})}renderSigns(){return pe.map((e,r)=>{let s=this.toAngle(r*30+15),o=R(P,P,kt,s);return S`<text class="sign" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${z[e]}</text>`})}renderRing(e,r,s){return e.map(o=>{if(!Number.isFinite(o.longitude))return n;let l=R(P,P,r,this.toAngle(o.longitude)),d=L[C(o.name)]??o.name.slice(0,2);return S`<text class=${s} x=${l.x} y=${l.y} text-anchor="middle" dominant-baseline="central"><title>${o.name}</title>${d}</text>`})}renderInterAspectLines(e,r,s){let o=(l,d)=>{let c=C(d);for(let m of l)if(C(m.name)===c&&typeof m.longitude=="number")return m.longitude};return s.map(l=>{let d=o(e,l.planet1),c=o(r,l.planet2);if(d===void 0||c===void 0)return n;let m=R(P,P,Or-12,this.toAngle(d)),h=R(P,P,Se+8,this.toAngle(c)),g=ke(l),f=Ne[g]??"aspect-other",k=w(l.orb,1);return S`<line class=${`aspect ${f}`} x1=${m.x} y1=${m.y} x2=${h.x} y2=${h.y}><title>${l.planet1} ${g} ${l.planet2}${k?` (orb ${k}\xB0)`:""}</title></line>`})}renderAspects(e){return t`<table>
|
|
3056
3056
|
<thead>
|
|
3057
3057
|
<tr>
|
|
3058
3058
|
<th>Planet 1</th>
|
|
@@ -3063,12 +3063,12 @@
|
|
|
3063
3063
|
</tr>
|
|
3064
3064
|
</thead>
|
|
3065
3065
|
<tbody>
|
|
3066
|
-
${e.slice(0,12).map(t
|
|
3067
|
-
<td>${
|
|
3068
|
-
<td>${
|
|
3069
|
-
<td>${ke(
|
|
3070
|
-
<td class="orb">${w(
|
|
3071
|
-
<td>${
|
|
3066
|
+
${e.slice(0,12).map(r=>t`<tr>
|
|
3067
|
+
<td>${r.planet1}</td>
|
|
3068
|
+
<td>${r.planet2}</td>
|
|
3069
|
+
<td>${ke(r)||""}</td>
|
|
3070
|
+
<td class="orb">${w(r.orb,1)}</td>
|
|
3071
|
+
<td>${St(r.strength)}</td>
|
|
3072
3072
|
</tr>`)}
|
|
3073
3073
|
</tbody>
|
|
3074
3074
|
</table>`}};oe.styles=[b,x`
|
|
@@ -3223,32 +3223,32 @@
|
|
|
3223
3223
|
padding: 0 4px;
|
|
3224
3224
|
border-radius: 4px;
|
|
3225
3225
|
}
|
|
3226
|
-
`],
|
|
3226
|
+
`],p([y({attribute:!1})],oe.prototype,"data",2),oe=p([v("roxy-synastry-chart")],oe);function St(i){return typeof i=="number"?Math.round(i).toString():""}var W=class extends u{constructor(){super(...arguments);this.data=null;this.flipped=!1;this.toggleFlip=()=>{this.flipped=!this.flipped}}render(){let e=this.data;return e?"card"in e?this.renderDailyCard(e):this.renderFullCard(e):t`<div class="roxy-empty" role="status">No tarot data</div>`}renderDailyCard(e){let r=e.card,s=this.flipped!==!!r.reversed,o=r.keywords??[];return t`<article class="card" aria-label=${r.name??"Tarot card"}>
|
|
3227
3227
|
<div class="image-wrap">
|
|
3228
|
-
${
|
|
3228
|
+
${r.imageUrl?t`<img
|
|
3229
3229
|
class=${`image ${s?"reversed":""}`}
|
|
3230
|
-
src=${
|
|
3231
|
-
alt=${
|
|
3230
|
+
src=${r.imageUrl}
|
|
3231
|
+
alt=${r.name??"Tarot card"}
|
|
3232
3232
|
tabindex="0"
|
|
3233
3233
|
@click=${this.toggleFlip}
|
|
3234
3234
|
@keydown=${l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),this.toggleFlip())}}
|
|
3235
|
-
/>`:
|
|
3235
|
+
/>`:t`<div
|
|
3236
3236
|
class=${`image ${s?"reversed":""}`}
|
|
3237
3237
|
style="aspect-ratio: 0.6; display: flex; align-items: center; justify-content: center; color: var(--roxy-muted)"
|
|
3238
3238
|
>
|
|
3239
|
-
${
|
|
3239
|
+
${r.name??"?"}
|
|
3240
3240
|
</div>`}
|
|
3241
3241
|
</div>
|
|
3242
3242
|
<div>
|
|
3243
3243
|
<div class="meta">
|
|
3244
|
-
${
|
|
3245
|
-
${s?
|
|
3244
|
+
${r.arcana?t`${r.arcana} arcana`:n}
|
|
3245
|
+
${s?t` · reversed`:n}
|
|
3246
3246
|
</div>
|
|
3247
|
-
<h2 class="title">${
|
|
3248
|
-
${e.dailyMessage?
|
|
3249
|
-
${
|
|
3250
|
-
${o.length>0?
|
|
3251
|
-
${o.map(l=>
|
|
3247
|
+
<h2 class="title">${r.name??"Tarot card"}</h2>
|
|
3248
|
+
${e.dailyMessage?t`<p class="message">${e.dailyMessage}</p>`:n}
|
|
3249
|
+
${r.meaning?t`<p>${r.meaning}</p>`:n}
|
|
3250
|
+
${o.length>0?t`<div class="chips">
|
|
3251
|
+
${o.map(l=>t`<span>${l}</span>`)}
|
|
3252
3252
|
</div>`:n}
|
|
3253
3253
|
<button
|
|
3254
3254
|
class="flip"
|
|
@@ -3259,17 +3259,17 @@
|
|
|
3259
3259
|
Flip card
|
|
3260
3260
|
</button>
|
|
3261
3261
|
</div>
|
|
3262
|
-
</article>`}renderFullCard(e){let
|
|
3262
|
+
</article>`}renderFullCard(e){let r=this.flipped,s=r?e.reversed:e.upright,o=r?e.keywords?.reversed??[]:e.keywords?.upright??[];return t`<article class="card" aria-label=${e.name??"Tarot card"}>
|
|
3263
3263
|
<div class="image-wrap">
|
|
3264
|
-
${e.imageUrl?
|
|
3265
|
-
class=${`image ${
|
|
3264
|
+
${e.imageUrl?t`<img
|
|
3265
|
+
class=${`image ${r?"reversed":""}`}
|
|
3266
3266
|
src=${e.imageUrl}
|
|
3267
3267
|
alt=${e.name??"Tarot card"}
|
|
3268
3268
|
tabindex="0"
|
|
3269
3269
|
@click=${this.toggleFlip}
|
|
3270
3270
|
@keydown=${l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),this.toggleFlip())}}
|
|
3271
|
-
/>`:
|
|
3272
|
-
class=${`image ${
|
|
3271
|
+
/>`:t`<div
|
|
3272
|
+
class=${`image ${r?"reversed":""}`}
|
|
3273
3273
|
style="aspect-ratio: 0.6; display: flex; align-items: center; justify-content: center; color: var(--roxy-muted)"
|
|
3274
3274
|
>
|
|
3275
3275
|
${e.name??"?"}
|
|
@@ -3277,14 +3277,14 @@
|
|
|
3277
3277
|
</div>
|
|
3278
3278
|
<div>
|
|
3279
3279
|
<div class="meta">
|
|
3280
|
-
${e.arcana?
|
|
3281
|
-
${e.number!==void 0&&e.number!==null?
|
|
3282
|
-
${t
|
|
3280
|
+
${e.arcana?t`${e.arcana} arcana`:n}
|
|
3281
|
+
${e.number!==void 0&&e.number!==null?t` · ${e.number}`:n}
|
|
3282
|
+
${r?t` · reversed`:n}
|
|
3283
3283
|
</div>
|
|
3284
3284
|
<h2 class="title">${e.name??"Tarot card"}</h2>
|
|
3285
|
-
${s?.description?
|
|
3286
|
-
${o.length>0?
|
|
3287
|
-
${o.map(l=>
|
|
3285
|
+
${s?.description?t`<p>${s.description}</p>`:n}
|
|
3286
|
+
${o.length>0?t`<div class="chips">
|
|
3287
|
+
${o.map(l=>t`<span>${l}</span>`)}
|
|
3288
3288
|
</div>`:n}
|
|
3289
3289
|
<button
|
|
3290
3290
|
class="flip"
|
|
@@ -3385,50 +3385,50 @@
|
|
|
3385
3385
|
.flip:hover {
|
|
3386
3386
|
transform: scale(1.02);
|
|
3387
3387
|
}
|
|
3388
|
-
`],
|
|
3388
|
+
`],p([y({attribute:!1})],W.prototype,"data",2),p([E()],W.prototype,"flipped",2),W=p([v("roxy-tarot-card")],W);var J=class extends u{constructor(){super(...arguments);this.data=null;this.spread="three-card"}render(){let e=this.data;if(!e)return t`<div class="roxy-empty" role="status">No tarot spread</div>`;let r="answer"in e,s="cards"in e&&!("spread"in e),o=s?[]:"positions"in e?e.positions??[]:[],l=s&&"cards"in e?e.cards:[],d=r?e.answer:void 0,c=r?e.strength:void 0,m="spread"in e?e.spread:this.spread.replace(/-/g," "),h="question"in e?e.question:void 0,g="summary"in e?e.summary:void 0,f=r?e.interpretation:void 0,k=d?d.toLowerCase().replace(/[^a-z]/g,""):"";return t`<article class="wrap" aria-label="Tarot spread">
|
|
3389
3389
|
<header class="head">
|
|
3390
3390
|
<h2 class="title">${m}</h2>
|
|
3391
|
-
${h?
|
|
3391
|
+
${h?t`<span class="question">"${h}"</span>`:n}
|
|
3392
3392
|
</header>
|
|
3393
|
-
${t
|
|
3393
|
+
${r?t`<div>
|
|
3394
3394
|
<span class=${`answer ${k}`}>${d}</span>
|
|
3395
|
-
${
|
|
3395
|
+
${c?t`<small> · ${c}</small>`:n}
|
|
3396
3396
|
</div>`:n}
|
|
3397
|
-
${o.length>0?
|
|
3398
|
-
${o.map($=>
|
|
3397
|
+
${o.length>0?t`<div class="grid">
|
|
3398
|
+
${o.map($=>t`<div class="card">
|
|
3399
3399
|
<p class="label">${$.name??""}</p>
|
|
3400
3400
|
<div class="image">
|
|
3401
|
-
${$.card?.imageUrl?
|
|
3401
|
+
${$.card?.imageUrl?t`<img
|
|
3402
3402
|
src=${$.card.imageUrl}
|
|
3403
3403
|
alt=${$.card.name??"tarot card"}
|
|
3404
3404
|
class=${$.card.reversed?"reversed":""}
|
|
3405
|
-
/>`:
|
|
3405
|
+
/>`:t`${$.card?.name??"?"}`}
|
|
3406
3406
|
</div>
|
|
3407
3407
|
<p class="name">
|
|
3408
3408
|
${$.card?.name??""}
|
|
3409
|
-
${$.card?.reversed?
|
|
3409
|
+
${$.card?.reversed?t`<small>(reversed)</small>`:n}
|
|
3410
3410
|
</p>
|
|
3411
|
-
${$.interpretation?
|
|
3411
|
+
${$.interpretation?t`<p class="interp">${$.interpretation}</p>`:n}
|
|
3412
3412
|
</div>`)}
|
|
3413
3413
|
</div>`:n}
|
|
3414
|
-
${l.length>0?
|
|
3415
|
-
${l.map($=>
|
|
3414
|
+
${l.length>0?t`<div class="grid">
|
|
3415
|
+
${l.map($=>t`<div class="card">
|
|
3416
3416
|
<div class="image">
|
|
3417
|
-
${$.imageUrl?
|
|
3417
|
+
${$.imageUrl?t`<img
|
|
3418
3418
|
src=${$.imageUrl}
|
|
3419
3419
|
alt=${$.name??"tarot card"}
|
|
3420
3420
|
class=${$.reversed?"reversed":""}
|
|
3421
|
-
/>`:
|
|
3421
|
+
/>`:t`${$.name??"?"}`}
|
|
3422
3422
|
</div>
|
|
3423
3423
|
<p class="name">
|
|
3424
3424
|
${$.name??""}
|
|
3425
|
-
${$.reversed?
|
|
3425
|
+
${$.reversed?t`<small>(reversed)</small>`:n}
|
|
3426
3426
|
</p>
|
|
3427
|
-
${$.meaning?
|
|
3427
|
+
${$.meaning?t`<p class="interp">${$.meaning}</p>`:n}
|
|
3428
3428
|
</div>`)}
|
|
3429
3429
|
</div>`:n}
|
|
3430
|
-
${g?
|
|
3431
|
-
${f?
|
|
3430
|
+
${g?t`<p class="reading">${g}</p>`:n}
|
|
3431
|
+
${f?t`<p class="reading">${f}</p>`:n}
|
|
3432
3432
|
</article>`}};J.styles=[b,x`
|
|
3433
3433
|
.wrap {
|
|
3434
3434
|
display: grid;
|
|
@@ -3535,10 +3535,10 @@
|
|
|
3535
3535
|
margin: 0;
|
|
3536
3536
|
color: var(--roxy-fg, #0a0a0a);
|
|
3537
3537
|
}
|
|
3538
|
-
`],
|
|
3538
|
+
`],p([y({attribute:!1})],J.prototype,"data",2),p([y({type:String,reflect:!0})],J.prototype,"spread",2),J=p([v("roxy-tarot-spread")],J);var ie=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data?.transitPlanets?.length)return t`<div class="roxy-empty" role="status">No transits data</div>`;let{transitDate:e,transitTime:r,transitPlanets:s,transitAspects:o,summary:l}=this.data,d=[ze(e),O(r)].filter(Boolean).join(" ");return t`<div class="wrap" aria-label="Transit positions table">
|
|
3539
3539
|
<div class="head">
|
|
3540
3540
|
<h2 class="title">Transits</h2>
|
|
3541
|
-
${d?
|
|
3541
|
+
${d?t`<p class="subtitle">${d}</p>`:n}
|
|
3542
3542
|
</div>
|
|
3543
3543
|
|
|
3544
3544
|
${l?this.renderSummaryPills(l):n}
|
|
@@ -3550,13 +3550,13 @@
|
|
|
3550
3550
|
</div>
|
|
3551
3551
|
</div>
|
|
3552
3552
|
|
|
3553
|
-
${o?.length?
|
|
3553
|
+
${o?.length?t`<div>
|
|
3554
3554
|
<p class="section-label">Transit aspects</p>
|
|
3555
3555
|
<div class="overflow-scroll">
|
|
3556
|
-
${this.
|
|
3556
|
+
${this.renderAspectsList(o)}
|
|
3557
3557
|
</div>
|
|
3558
3558
|
</div>`:n}
|
|
3559
|
-
</div>`}renderSummaryPills(e){return
|
|
3559
|
+
</div>`}renderSummaryPills(e){return t`<div class="summary-pills" role="region" aria-label="Aspect summary">
|
|
3560
3560
|
<span class="pill pill--muted">
|
|
3561
3561
|
Total: ${e.totalAspects}
|
|
3562
3562
|
</span>
|
|
@@ -3569,7 +3569,7 @@
|
|
|
3569
3569
|
<span class="pill pill--muted">
|
|
3570
3570
|
Neutral: ${e.neutral}
|
|
3571
3571
|
</span>
|
|
3572
|
-
</div>`}renderPlanetsTable(e){return
|
|
3572
|
+
</div>`}renderPlanetsTable(e){return t`<table class="planets-table">
|
|
3573
3573
|
<thead>
|
|
3574
3574
|
<tr>
|
|
3575
3575
|
<th scope="col">Planet</th>
|
|
@@ -3579,62 +3579,50 @@
|
|
|
3579
3579
|
</tr>
|
|
3580
3580
|
</thead>
|
|
3581
3581
|
<tbody>
|
|
3582
|
-
${e.map(
|
|
3582
|
+
${e.map(r=>{let s=L[C(r.name)]??"",o=z[C(r.sign)]??"",l=r.speed>=0?"\u2191":"\u2193";return t`<tr>
|
|
3583
3583
|
<td>
|
|
3584
3584
|
<div class="planet-cell">
|
|
3585
3585
|
<span class="glyph" aria-hidden="true">${s}</span>
|
|
3586
|
-
${
|
|
3587
|
-
${
|
|
3586
|
+
${r.name}
|
|
3587
|
+
${r.isRetrograde?t`<span class="retro-badge" aria-label="retrograde">R</span>`:n}
|
|
3588
3588
|
</div>
|
|
3589
3589
|
</td>
|
|
3590
3590
|
<td>
|
|
3591
3591
|
<div class="planet-cell">
|
|
3592
3592
|
<span class="glyph" aria-hidden="true">${o}</span>
|
|
3593
|
-
${
|
|
3593
|
+
${r.sign}
|
|
3594
3594
|
</div>
|
|
3595
3595
|
</td>
|
|
3596
|
-
<td class="num">${w(
|
|
3596
|
+
<td class="num">${w(r.degree,2)}</td>
|
|
3597
3597
|
<td class="speed">
|
|
3598
3598
|
<span class="speed-arrow" aria-hidden="true">${l}</span>
|
|
3599
|
-
${w(Math.abs(
|
|
3599
|
+
${w(Math.abs(r.speed),4)}
|
|
3600
3600
|
</td>
|
|
3601
3601
|
</tr>`})}
|
|
3602
3602
|
</tbody>
|
|
3603
|
-
</table>`}
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
</div>
|
|
3627
|
-
</td>
|
|
3628
|
-
<td class=${l}>${(t.type??"").toLowerCase()}</td>
|
|
3629
|
-
<td class="num">${w(t.orb,2)}</td>
|
|
3630
|
-
<td>${t.isApplying?"Applying":"Separating"}</td>
|
|
3631
|
-
<td class="num">${w(t.strength,1)}</td>
|
|
3632
|
-
</tr>
|
|
3633
|
-
${d?a`<tr class="interp-row">
|
|
3634
|
-
<td colspan="6">${d}</td>
|
|
3635
|
-
</tr>`:n}`})}
|
|
3636
|
-
</tbody>
|
|
3637
|
-
</table>`}};ie.styles=[b,x`
|
|
3603
|
+
</table>`}renderAspectsList(e){return t`<div role="list" aria-label="Transit aspects">
|
|
3604
|
+
${e.map((r,s)=>{let o=L[C(r.transitPlanet)]??"",l=L[C(r.natalPlanet)]??"",d=(r.nature??"neutral").toLowerCase(),c=r.interpretation,m=(r.type??"").toLowerCase(),h=r.isApplying?"Applying":"Separating";return t`<details class="aspect-card" role="listitem" name="transit-aspects" ?open=${s===0}>
|
|
3605
|
+
<summary>
|
|
3606
|
+
<span aria-hidden="true">${o}</span>
|
|
3607
|
+
${r.transitPlanet}
|
|
3608
|
+
<span class="nature-badge ${d}">${m}</span>
|
|
3609
|
+
<span aria-hidden="true">${l}</span>
|
|
3610
|
+
${r.natalPlanet}
|
|
3611
|
+
<span class="meta">
|
|
3612
|
+
${h} · orb ${w(r.orb,2)}° · strength ${w(r.strength,1)}
|
|
3613
|
+
</span>
|
|
3614
|
+
</summary>
|
|
3615
|
+
<div class="interp-body">
|
|
3616
|
+
${c?.summary?t`<p>${c.summary}</p>`:n}
|
|
3617
|
+
${c?.impact?t`<p><strong>Impact:</strong> ${c.impact}</p>`:n}
|
|
3618
|
+
${c?.timing?t`<p><strong>Timing:</strong> ${c.timing}</p>`:n}
|
|
3619
|
+
${c?.guidance?t`<p><strong>Guidance:</strong> ${c.guidance}</p>`:n}
|
|
3620
|
+
${c?.keywords?.length?t`<div class="interp-keywords">
|
|
3621
|
+
${c.keywords.map(g=>t`<span class="kw">${g}</span>`)}
|
|
3622
|
+
</div>`:n}
|
|
3623
|
+
</div>
|
|
3624
|
+
</details>`})}
|
|
3625
|
+
</div>`}};ie.styles=[b,x`
|
|
3638
3626
|
.wrap {
|
|
3639
3627
|
display: grid;
|
|
3640
3628
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -3762,49 +3750,75 @@
|
|
|
3762
3750
|
color: var(--roxy-muted, #71717a);
|
|
3763
3751
|
}
|
|
3764
3752
|
|
|
3765
|
-
.
|
|
3766
|
-
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
.nature-challenging {
|
|
3770
|
-
color: var(--roxy-danger-fg, #991b1b);
|
|
3753
|
+
.overflow-scroll {
|
|
3754
|
+
overflow-x: auto;
|
|
3755
|
+
-webkit-overflow-scrolling: touch;
|
|
3771
3756
|
}
|
|
3772
3757
|
|
|
3773
|
-
.
|
|
3774
|
-
|
|
3758
|
+
.aspect-card {
|
|
3759
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
3760
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
3761
|
+
padding: var(--roxy-space-sm, 0.5rem) var(--roxy-space-md, 1rem);
|
|
3762
|
+
margin-bottom: var(--roxy-space-xs, 0.25rem);
|
|
3775
3763
|
}
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3764
|
+
.aspect-card summary {
|
|
3765
|
+
cursor: pointer;
|
|
3766
|
+
font-weight: 500;
|
|
3767
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
3768
|
+
display: flex;
|
|
3769
|
+
flex-wrap: wrap;
|
|
3779
3770
|
align-items: center;
|
|
3780
|
-
gap:
|
|
3781
|
-
white-space: nowrap;
|
|
3771
|
+
gap: 0.5em;
|
|
3782
3772
|
}
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
padding-bottom: var(--roxy-space-sm, 0.5rem);
|
|
3787
|
-
border-bottom: 1px solid var(--roxy-border, #e4e4e7);
|
|
3788
|
-
color: var(--roxy-secondary, #475569);
|
|
3773
|
+
.aspect-card summary .meta {
|
|
3774
|
+
color: var(--roxy-muted, #71717a);
|
|
3775
|
+
font-weight: 400;
|
|
3789
3776
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
3777
|
+
margin-left: auto;
|
|
3778
|
+
font-variant-numeric: tabular-nums;
|
|
3779
|
+
}
|
|
3780
|
+
.aspect-card .interp-body {
|
|
3781
|
+
margin-top: var(--roxy-space-xs, 0.25rem);
|
|
3782
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
3783
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
3790
3784
|
line-height: 1.45;
|
|
3791
3785
|
}
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
border-bottom: none;
|
|
3795
|
-
padding-bottom: 4px;
|
|
3786
|
+
.aspect-card .interp-body p {
|
|
3787
|
+
margin: 0 0 var(--roxy-space-xs, 0.25rem);
|
|
3796
3788
|
}
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3789
|
+
.interp-keywords {
|
|
3790
|
+
display: flex;
|
|
3791
|
+
flex-wrap: wrap;
|
|
3792
|
+
gap: 0.25rem;
|
|
3793
|
+
margin-top: 0.5rem;
|
|
3801
3794
|
}
|
|
3802
|
-
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
-
|
|
3795
|
+
.interp-keywords .kw {
|
|
3796
|
+
padding: 1px 8px;
|
|
3797
|
+
border-radius: 9999px;
|
|
3798
|
+
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 14%, transparent);
|
|
3799
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
3800
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
3801
|
+
}
|
|
3802
|
+
.nature-badge {
|
|
3803
|
+
display: inline-block;
|
|
3804
|
+
padding: 1px 8px;
|
|
3805
|
+
border-radius: 9999px;
|
|
3806
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
3807
|
+
font-weight: 600;
|
|
3808
|
+
}
|
|
3809
|
+
.nature-badge.harmonious {
|
|
3810
|
+
background: color-mix(in srgb, var(--roxy-success, #16a34a) 12%, transparent);
|
|
3811
|
+
color: var(--roxy-success-fg, #166534);
|
|
3812
|
+
}
|
|
3813
|
+
.nature-badge.challenging {
|
|
3814
|
+
background: color-mix(in srgb, var(--roxy-danger, #dc2626) 12%, transparent);
|
|
3815
|
+
color: var(--roxy-danger-fg, #991b1b);
|
|
3816
|
+
}
|
|
3817
|
+
.nature-badge.neutral {
|
|
3818
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent);
|
|
3819
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
3806
3820
|
}
|
|
3807
|
-
`],
|
|
3821
|
+
`],p([y({attribute:!1})],ie.prototype,"data",2),ie=p([v("roxy-transits-table")],ie);var X=class extends u{constructor(){super(...arguments);this.data=null;this.chartStyle="south"}buildHouses(){if(!this.data)return[];let e=this.data,r=this.data?.meta?.Lagna?.rashi??"",s=[];for(let o=0;o<12;o++){let l=_e[o],c=(e[l]?.signs??[]).map(h=>h.graha).filter(Boolean),m=Me[l]??"";s.push({number:o+1,sign:m,planets:c,isLagna:r?r.toLowerCase()===m.toLowerCase():!1})}return s}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No kundli data</div>`;let e=this.buildHouses(),r=this.chartStyle==="north";return t`<div class="wrap">
|
|
3808
3822
|
<h2 class="title">Vedic kundli</h2>
|
|
3809
3823
|
<svg
|
|
3810
3824
|
viewBox="0 0 300 300"
|
|
@@ -3812,8 +3826,8 @@
|
|
|
3812
3826
|
aria-label="Vedic birth chart with twelve sign houses"
|
|
3813
3827
|
>
|
|
3814
3828
|
<title>Vedic kundli</title>
|
|
3815
|
-
${
|
|
3816
|
-
${
|
|
3829
|
+
${r?Oe():Ge()}
|
|
3830
|
+
${r?e.map(s=>He(s)):e.map(s=>De(s))}
|
|
3817
3831
|
</svg>
|
|
3818
3832
|
</div>`}};X.styles=[b,x`
|
|
3819
3833
|
.wrap {
|
|
@@ -3865,20 +3879,20 @@
|
|
|
3865
3879
|
stroke: color-mix(in srgb, var(--roxy-accent, #f59e0b) 45%, transparent);
|
|
3866
3880
|
stroke-width: 0.8;
|
|
3867
3881
|
}
|
|
3868
|
-
`],
|
|
3882
|
+
`],p([y({attribute:!1})],X.prototype,"data",2),p([y({type:String,reflect:!0,attribute:"chart-style"})],X.prototype,"chartStyle",2),X=p([v("roxy-vedic-kundli")],X);var Z=class extends u{constructor(){super(...arguments);this.data=null;this.filter="";this.handleInput=e=>{this.filter=e.target.value}}renderQualityChip(e){let r=`quality-chip quality-${e}`;return t`<span class=${r}>${e}</span>`}renderDetailCard(e){return t`<div class="detail-card">
|
|
3869
3883
|
<p class="detail-name">
|
|
3870
3884
|
${e.name}
|
|
3871
3885
|
${e.quality?this.renderQualityChip(e.quality):n}
|
|
3872
3886
|
</p>
|
|
3873
|
-
${e.description?
|
|
3874
|
-
${e.result?
|
|
3887
|
+
${e.description?t`<p class="description">${e.description}</p>`:n}
|
|
3888
|
+
${e.result?t`<details>
|
|
3875
3889
|
<summary>Effects</summary>
|
|
3876
3890
|
<div class="result-body">${e.result}</div>
|
|
3877
3891
|
</details>`:n}
|
|
3878
|
-
</div>`}render(){if(!this.data)return
|
|
3892
|
+
</div>`}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No yoga data</div>`;let e=this.data,r=this.filter.toLowerCase();if("description"in e&&typeof e.description=="string"){let s=e;return t`<div class="wrap">${this.renderDetailCard(s)}</div>`}if("yogas"in e&&Array.isArray(e.yogas)){let s=e.yogas;if(s.length>0&&"description"in s[0]){let m=s,h=r?m.filter(f=>f.name.toLowerCase().includes(r)):m,g=e.total;return t`<div class="wrap">
|
|
3879
3893
|
<div class="head">
|
|
3880
3894
|
<h2 class="title">Yoga catalog</h2>
|
|
3881
|
-
${g!==void 0?
|
|
3895
|
+
${g!==void 0?t`<span class="count">${g} total</span>`:n}
|
|
3882
3896
|
</div>
|
|
3883
3897
|
<div class="search-wrap">
|
|
3884
3898
|
<input
|
|
@@ -3896,12 +3910,12 @@
|
|
|
3896
3910
|
aria-live="polite"
|
|
3897
3911
|
aria-label="Yoga results"
|
|
3898
3912
|
>
|
|
3899
|
-
${h.length>0?h.map(f=>this.renderDetailCard(f)):
|
|
3913
|
+
${h.length>0?h.map(f=>this.renderDetailCard(f)):t`<p class="no-results">No yogas match your search.</p>`}
|
|
3900
3914
|
</div>
|
|
3901
|
-
</div>`}let l=s,d=
|
|
3915
|
+
</div>`}let l=s,d=r?l.filter(m=>m.name.toLowerCase().includes(r)):l,c=e.total;return t`<div class="wrap">
|
|
3902
3916
|
<div class="head">
|
|
3903
3917
|
<h2 class="title">Yoga catalog</h2>
|
|
3904
|
-
${
|
|
3918
|
+
${c!==void 0?t`<span class="count">${c} total</span>`:n}
|
|
3905
3919
|
</div>
|
|
3906
3920
|
<div class="search-wrap">
|
|
3907
3921
|
<input
|
|
@@ -3919,12 +3933,12 @@
|
|
|
3919
3933
|
aria-live="polite"
|
|
3920
3934
|
aria-label="Yoga results"
|
|
3921
3935
|
>
|
|
3922
|
-
${d.length>0?d.map(m=>
|
|
3936
|
+
${d.length>0?d.map(m=>t`<div class="yoga-chip">
|
|
3923
3937
|
${m.name}
|
|
3924
3938
|
<span class="yoga-id">${m.id}</span>
|
|
3925
|
-
</div>`):
|
|
3939
|
+
</div>`):t`<p class="no-results">No yogas match your search.</p>`}
|
|
3926
3940
|
</div>
|
|
3927
|
-
</div>`}return
|
|
3941
|
+
</div>`}return t`<div class="roxy-empty" role="status">No yoga data</div>`}};Z.styles=[b,x`
|
|
3928
3942
|
.wrap {
|
|
3929
3943
|
display: grid;
|
|
3930
3944
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -4072,7 +4086,7 @@
|
|
|
4072
4086
|
display: grid;
|
|
4073
4087
|
gap: var(--roxy-space-sm, 0.5rem);
|
|
4074
4088
|
}
|
|
4075
|
-
`],
|
|
4089
|
+
`],p([y({attribute:!1})],Z.prototype,"data",2),p([E()],Z.prototype,"filter",2),Z=p([v("roxy-yoga-list")],Z);var Ie=[{pascal:"RoxyNatalChart",tag:"roxy-natal-chart",slug:"natal-chart",heading:"Natal chart",description:"Western natal chart wheel for /astrology/natal-chart responses",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Natal chart wheel with planet glyphs and aspect lines",topic:"Astrology"},{pascal:"RoxyHoroscopeCard",tag:"roxy-horoscope-card",slug:"horoscope-card",heading:"Daily horoscope",description:"Daily, weekly, or monthly horoscope card for /astrology/horoscope/...",docsLabel:"Western",endpointLabel:"GET /astrology/horoscope/{sign}/{daily,weekly,monthly}",docsSummary:"Daily, weekly, or monthly horoscope card",topic:"Astrology"},{pascal:"RoxySynastryChart",tag:"roxy-synastry-chart",slug:"synastry-chart",heading:"Synastry",description:"Dual-wheel synastry chart with inter-aspects table",docsLabel:"Western",endpointLabel:"POST /astrology/synastry",docsSummary:"Dual-wheel synastry with inter-aspects table",topic:"Astrology"},{pascal:"RoxyCompatibilityCard",tag:"roxy-compatibility-card",slug:"compatibility-card",heading:"Compatibility score",description:"Cross-domain compatibility score card",docsLabel:"Cross",endpointLabel:"POST /astrology/compatibility-score, /numerology/compatibility, /biorhythm/compatibility",docsSummary:"Score card with category breakdown",topic:"Astrology"},{pascal:"RoxyMoonPhase",tag:"roxy-moon-phase",slug:"moon-phase",heading:"Moon phase",description:"Moon phase card and calendar",docsLabel:"Western",endpointLabel:"GET /astrology/moon-phase/{current,upcoming,calendar/...}",docsSummary:"Moon phase card and calendar",topic:"Astrology"},{pascal:"RoxyVedicKundli",tag:"roxy-vedic-kundli",slug:"vedic-kundli",heading:"Vedic kundli",description:"South or North Indian Vedic kundli for /vedic-astrology/birth-chart",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"South or North Indian kundli",topic:"Vedic"},{pascal:"RoxyPanchangTable",tag:"roxy-panchang-table",slug:"panchang-table",heading:"Panchang",description:"Panchang muhurta table with auspicious and inauspicious periods",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/{basic,detailed}",docsSummary:"15+ muhurtas in detailed mode",topic:"Vedic"},{pascal:"RoxyDashaTimeline",tag:"roxy-dasha-timeline",slug:"dasha-timeline",heading:"Vimshottari dasha",description:"Vimshottari dasha timeline with active mahadasha highlighted",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dasha/{current,major,sub/...}",docsSummary:"Vimshottari mahadasha + antardasha + pratyantardasha",topic:"Vedic"},{pascal:"RoxyDoshaCard",tag:"roxy-dosha-card",slug:"dosha-card",heading:"Manglik dosha",description:"Manglik, Kaal Sarp, or Sade Sati presence card",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dosha/{manglik,kalsarpa,sadhesati}",docsSummary:"Presence, severity, remedies, scoped effects",topic:"Vedic"},{pascal:"RoxyGunaMilan",tag:"roxy-guna-milan",slug:"guna-milan",heading:"Guna milan",description:"36-point Ashtakoota matrimonial compatibility breakdown",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/compatibility",docsSummary:"36-point Ashtakoota with eight sub-scores",topic:"Vedic"},{pascal:"RoxyKpPlanetsTable",tag:"roxy-kp-planets-table",slug:"kp-planets-table",heading:"KP planets",description:"KP planets table with sub-lord and sub-sub-lord columns",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/planets",docsSummary:"Sub-lord and sub-sub-lord columns",topic:"Vedic"},{pascal:"RoxyTransitsTable",tag:"roxy-transits-table",slug:"transits-table",heading:"Transits",description:"Live planet positions plus aspects to a natal chart",docsLabel:"Western",endpointLabel:"POST /astrology/transits",docsSummary:"Transit planet positions plus optional aspects to a natal chart",topic:"Astrology"},{pascal:"RoxyDivisionalChart",tag:"roxy-divisional-chart",slug:"divisional-chart",heading:"Divisional chart",description:"D2 to D60 varga chart wheel with Vargottama markers",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/divisional-chart",docsSummary:"Generic divisional varga wheel from D2 Hora to D60 Shashtiamsa",topic:"Vedic"},{pascal:"RoxyAshtakavargaGrid",tag:"roxy-ashtakavarga-grid",slug:"ashtakavarga-grid",heading:"Ashtakavarga",description:"Sarva and Bhinna ashtakavarga heatmap with bindu scores",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/ashtakavarga",docsSummary:"Sarva, Bhinna, and Shodhya Pinda views in a tabbed heatmap",topic:"Vedic"},{pascal:"RoxyShadbalaTable",tag:"roxy-shadbala-table",slug:"shadbala-table",heading:"Shadbala",description:"Six-fold planetary strength with adequacy badge per planet",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/shadbala",docsSummary:"Six-fold planetary strength bar plus rupas and adequacy badge",topic:"Vedic"},{pascal:"RoxyYogaList",tag:"roxy-yoga-list",slug:"yoga-list",heading:"Yoga catalog",description:"Yoga reference cards from the catalog with optional detail mode",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/yoga, /yoga/{id}",docsSummary:"Filterable yoga cards from the 300 plus yoga catalog",topic:"Vedic"},{pascal:"RoxyChoghadiyaGrid",tag:"roxy-choghadiya-grid",slug:"choghadiya-grid",heading:"Choghadiya",description:"Day and night Choghadiya muhurta tiles for activity timing",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/choghadiya",docsSummary:"Day and night Choghadiya muhurta tiles colored by effect",topic:"Vedic"},{pascal:"RoxyNumerologyCard",tag:"roxy-numerology-card",slug:"numerology-card",heading:"Life path number",description:"Numerology card for life path, expression, personal year, or full chart",docsLabel:"Numerology",endpointLabel:"POST /numerology/{life-path,expression,personal-year,chart}",docsSummary:"Life path, expression, personal year, full chart",topic:"Numerology"},{pascal:"RoxyTarotCard",tag:"roxy-tarot-card",slug:"tarot-card",heading:"Daily tarot card",description:"Single tarot card with upright/reversed flip animation",docsLabel:"Tarot",endpointLabel:"GET /tarot/cards/{id}, POST /tarot/daily",docsSummary:"Single card with upright and reversed flip",topic:"Tarot"},{pascal:"RoxyTarotSpread",tag:"roxy-tarot-spread",slug:"tarot-spread",heading:"Three-card spread",description:"Tarot spread renderer for three-card, Celtic Cross, love, or yes/no",docsLabel:"Tarot",endpointLabel:"POST /tarot/spreads/{three-card,celtic-cross,love}, /tarot/yes-no, /tarot/draw",docsSummary:"Spreads with positions and reading",topic:"Tarot"},{pascal:"RoxyBiorhythmChart",tag:"roxy-biorhythm-chart",slug:"biorhythm-chart",heading:"Daily biorhythm",description:"Daily biorhythm bars or multi-day forecast cycle lines",docsLabel:"Biorhythm",endpointLabel:"POST /biorhythm/{daily,forecast,critical-days}",docsSummary:"Daily bars, forecast cycle lines, critical days",topic:"Biorhythm"},{pascal:"RoxyHexagram",tag:"roxy-hexagram",slug:"hexagram",heading:"I Ching hexagram",description:"I Ching hexagram with trigram glyphs, judgment, image, and changing lines",docsLabel:"I Ching",endpointLabel:"GET /iching/hexagrams/{number}, /iching/cast, POST /iching/daily, /iching/daily/cast",docsSummary:"Hexagram with trigrams, judgment, image, changing lines",topic:"I Ching"},{pascal:"RoxyEndpointForm",tag:"roxy-endpoint-form",slug:"endpoint-form",heading:"Schema-driven form",description:"Schema-driven form that emits roxy-submit with a validated payload",docsLabel:"Helper",endpointLabel:"Any endpoint via x-roxy-ui hints",docsSummary:"Schema-driven form, emits roxy-submit",topic:"Helpers",selfFetching:!0},{pascal:"RoxyLocationSearch",tag:"roxy-location-search",slug:"location-search",heading:"City search",description:"City search input with debounced /location/search calls",docsLabel:"Helper",endpointLabel:"GET /location/search",docsSummary:"Debounced city search input, emits roxy-location-select",topic:"Helpers",selfFetching:!0},{pascal:"RoxyData",tag:"roxy-data",slug:"data",heading:"Generic renderer",description:"Generic fallback renderer for any OpenAPI response shape",docsLabel:"Helper",endpointLabel:"Any response shape",docsSummary:"Generic fallback renderer for unknown shapes",topic:"Helpers",selfFetching:!0}];var Hr="0.2.2";var At=Ie.map(i=>i.slug);return qr(Ct);})();
|
|
4076
4090
|
/*! Bundled license information:
|
|
4077
4091
|
|
|
4078
4092
|
@lit/reactive-element/css-tag.js:
|