@roxyapi/ui 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +15 -10
- package/README.md +18 -13
- package/dist/cdn/components/compatibility-card.js.map +1 -1
- package/dist/cdn/components/dasha-timeline.js +8 -8
- package/dist/cdn/components/dasha-timeline.js.map +2 -2
- package/dist/cdn/components/divisional-chart.js +35 -23
- package/dist/cdn/components/divisional-chart.js.map +4 -4
- package/dist/cdn/components/guna-milan.js.map +1 -1
- package/dist/cdn/components/kp-chart.js +306 -0
- package/dist/cdn/components/kp-chart.js.map +7 -0
- package/dist/cdn/components/kp-planets-table.js.map +1 -1
- package/dist/cdn/components/kp-ruling-planets.js +269 -0
- package/dist/cdn/components/kp-ruling-planets.js.map +7 -0
- package/dist/cdn/components/location-search.js +7 -5
- package/dist/cdn/components/location-search.js.map +3 -3
- package/dist/cdn/components/moon-phase.js.map +1 -1
- package/dist/cdn/components/nakshatra-card.js +229 -0
- package/dist/cdn/components/nakshatra-card.js.map +7 -0
- package/dist/cdn/components/natal-chart.js +228 -115
- package/dist/cdn/components/natal-chart.js.map +4 -4
- package/dist/cdn/components/numerology-card.js +3 -3
- package/dist/cdn/components/numerology-card.js.map +2 -2
- package/dist/cdn/components/panchang-table.js.map +1 -1
- package/dist/cdn/components/shadbala-table.js.map +1 -1
- package/dist/cdn/components/synastry-chart.js +3 -3
- package/dist/cdn/components/synastry-chart.js.map +2 -2
- package/dist/cdn/components/transits-table.js.map +1 -1
- package/dist/cdn/components/vedic-kundli.js +34 -22
- package/dist/cdn/components/vedic-kundli.js.map +4 -4
- package/dist/cdn/components/vedic-planets-table.js +231 -0
- package/dist/cdn/components/vedic-planets-table.js.map +7 -0
- package/dist/cdn/components/western-planets-table.js +220 -0
- package/dist/cdn/components/western-planets-table.js.map +7 -0
- package/dist/cdn/roxy-ui.js +1078 -331
- package/dist/cdn/roxy-ui.js.map +4 -4
- package/dist/components/compatibility-card.js.map +1 -1
- package/dist/components/dasha-timeline.d.ts.map +1 -1
- package/dist/components/dasha-timeline.js.map +2 -2
- package/dist/components/divisional-chart.d.ts +5 -3
- package/dist/components/divisional-chart.d.ts.map +1 -1
- package/dist/components/divisional-chart.js +159 -38
- package/dist/components/divisional-chart.js.map +3 -3
- package/dist/components/guna-milan.js.map +1 -1
- package/dist/components/kp-chart.d.ts +26 -0
- package/dist/components/kp-chart.d.ts.map +1 -0
- package/dist/components/kp-chart.js +382 -0
- package/dist/components/kp-chart.js.map +7 -0
- package/dist/components/kp-planets-table.js.map +1 -1
- package/dist/components/kp-ruling-planets.d.ts +20 -0
- package/dist/components/kp-ruling-planets.d.ts.map +1 -0
- package/dist/components/kp-ruling-planets.js +275 -0
- package/dist/components/kp-ruling-planets.js.map +7 -0
- package/dist/components/location-search.d.ts.map +1 -1
- package/dist/components/location-search.js +9 -2
- package/dist/components/location-search.js.map +2 -2
- package/dist/components/moon-phase.js.map +1 -1
- package/dist/components/nakshatra-card.d.ts +18 -0
- package/dist/components/nakshatra-card.d.ts.map +1 -0
- package/dist/components/nakshatra-card.js +231 -0
- package/dist/components/nakshatra-card.js.map +7 -0
- package/dist/components/natal-chart.d.ts +28 -0
- package/dist/components/natal-chart.d.ts.map +1 -1
- package/dist/components/natal-chart.js +401 -104
- package/dist/components/natal-chart.js.map +2 -2
- package/dist/components/numerology-card.d.ts.map +1 -1
- package/dist/components/numerology-card.js.map +2 -2
- package/dist/components/panchang-table.js.map +1 -1
- package/dist/components/shadbala-table.js.map +1 -1
- package/dist/components/synastry-chart.js.map +2 -2
- package/dist/components/transits-table.js.map +1 -1
- package/dist/components/vedic-kundli.d.ts +7 -3
- package/dist/components/vedic-kundli.d.ts.map +1 -1
- package/dist/components/vedic-kundli.js +209 -87
- package/dist/components/vedic-kundli.js.map +3 -3
- package/dist/components/vedic-planets-table.d.ts +21 -0
- package/dist/components/vedic-planets-table.d.ts.map +1 -0
- package/dist/components/vedic-planets-table.js +355 -0
- package/dist/components/vedic-planets-table.js.map +7 -0
- package/dist/components/western-planets-table.d.ts +21 -0
- package/dist/components/western-planets-table.d.ts.map +1 -0
- package/dist/components/western-planets-table.js +350 -0
- package/dist/components/western-planets-table.js.map +7 -0
- package/dist/index.cjs +2042 -695
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2029 -682
- package/dist/index.js.map +4 -4
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.json +23 -18
- package/dist/styles/tokens.css +4 -0
- package/dist/types/types.gen.d.ts +343 -49
- package/dist/types/types.gen.d.ts.map +1 -1
- package/dist/utils/degree.d.ts +12 -0
- package/dist/utils/degree.d.ts.map +1 -1
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/kundli-render.d.ts +85 -12
- package/dist/utils/kundli-render.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/dasha-timeline.ts +1 -7
- package/src/components/divisional-chart.ts +27 -41
- package/src/components/kp-chart.ts +313 -0
- package/src/components/kp-ruling-planets.ts +196 -0
- package/src/components/location-search.ts +16 -2
- package/src/components/nakshatra-card.ts +149 -0
- package/src/components/natal-chart.ts +408 -119
- package/src/components/numerology-card.ts +1 -5
- package/src/components/vedic-kundli.ts +30 -40
- package/src/components/vedic-planets-table.ts +184 -0
- package/src/components/western-planets-table.ts +180 -0
- package/src/index.ts +5 -0
- package/src/manifest.ts +146 -84
- package/src/styles/tokens.css +4 -0
- package/src/types/types.gen.ts +343 -49
- package/src/utils/degree.ts +21 -0
- package/src/utils/format.ts +1 -1
- package/src/utils/kundli-render.ts +234 -29
- package/src/version.ts +1 -1
package/dist/cdn/roxy-ui.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var RoxyUI=(()=>{var
|
|
2
|
-
\f\r]`,
|
|
3
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g")
|
|
1
|
+
"use strict";var RoxyUI=(()=>{var De=Object.defineProperty;var kr=Object.getOwnPropertyDescriptor;var Qr=Object.getOwnPropertyNames;var et=Object.prototype.hasOwnProperty;var rt=(i,s)=>{for(var e in s)De(i,e,{get:s[e],enumerable:!0})},tt=(i,s,e,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let a of Qr(s))!et.call(i,a)&&a!==e&&De(i,a,{get:()=>s[a],enumerable:!(r=kr(s,a))||r.enumerable});return i};var at=i=>tt(De({},"__esModule",{value:!0}),i),p=(i,s,e,r)=>{for(var a=r>1?void 0:r?kr(s,e):s,o=i.length-1,l;o>=0;o--)(l=i[o])&&(a=(r?l(s,e,a):l(a))||a);return r&&a&&De(s,e,a),a};var Ut={};rt(Ut,{ROXY_COMPONENTS:()=>Qe,ROXY_UI_COMPONENTS:()=>Kt,ROXY_UI_VERSION:()=>Zr,RoxyAshtakavargaGrid:()=>O,RoxyBiorhythmChart:()=>H,RoxyChoghadiyaGrid:()=>ae,RoxyCompatibilityCard:()=>j,RoxyDashaTimeline:()=>I,RoxyData:()=>B,RoxyDivisionalChart:()=>q,RoxyDoshaCard:()=>K,RoxyEndpointForm:()=>z,RoxyGunaMilan:()=>oe,RoxyHexagram:()=>U,RoxyHoroscopeCard:()=>Y,RoxyKpChart:()=>F,RoxyKpPlanetsTable:()=>ie,RoxyKpRulingPlanets:()=>ne,RoxyLocationSearch:()=>R,RoxyMoonPhase:()=>V,RoxyNakshatraCard:()=>le,RoxyNatalChart:()=>M,RoxyNumerologyCard:()=>W,RoxyPanchangTable:()=>J,RoxyShadbalaTable:()=>de,RoxySynastryChart:()=>ce,RoxyTarotCard:()=>X,RoxyTarotSpread:()=>Z,RoxyTransitsTable:()=>pe,RoxyVedicKundli:()=>Q,RoxyVedicPlanetsTable:()=>me,RoxyWesternPlanetsTable:()=>he,RoxyYogaList:()=>ee});var Oe=globalThis,He=Oe.ShadowRoot&&(Oe.ShadyCSS===void 0||Oe.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,er=Symbol(),Sr=new WeakMap,ke=class{constructor(s,e,r){if(this._$cssResult$=!0,r!==er)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=s,this.t=e}get styleSheet(){let s=this.o,e=this.t;if(He&&s===void 0){let r=e!==void 0&&e.length===1;r&&(s=Sr.get(e)),s===void 0&&((this.o=s=new CSSStyleSheet).replaceSync(this.cssText),r&&Sr.set(e,s))}return s}toString(){return this.cssText}},Ar=i=>new ke(typeof i=="string"?i:i+"",void 0,er),x=(i,...s)=>{let e=i.length===1?i[0]:s.reduce((r,a,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.")})(a)+i[o+1],i[0]);return new ke(e,i,er)},Er=(i,s)=>{if(He)i.adoptedStyleSheets=s.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of s){let r=document.createElement("style"),a=Oe.litNonce;a!==void 0&&r.setAttribute("nonce",a),r.textContent=e.cssText,i.appendChild(r)}},rr=He?i=>i:i=>i instanceof CSSStyleSheet?(s=>{let e="";for(let r of s.cssRules)e+=r.cssText;return Ar(e)})(i):i;var{is:st,defineProperty:ot,getOwnPropertyDescriptor:it,getOwnPropertyNames:nt,getOwnPropertySymbols:lt,getPrototypeOf:dt}=Object,Ge=globalThis,Lr=Ge.trustedTypes,ct=Lr?Lr.emptyScript:"",pt=Ge.reactiveElementPolyfillSupport,Se=(i,s)=>i,Ae={toAttribute(i,s){switch(s){case Boolean:i=i?ct:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,s){let e=i;switch(s){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}},je=(i,s)=>!st(i,s),Pr={attribute:!0,type:String,converter:Ae,reflect:!1,useDefault:!1,hasChanged:je};Symbol.metadata??=Symbol("metadata"),Ge.litPropertyMetadata??=new WeakMap;var D=class extends HTMLElement{static addInitializer(s){this._$Ei(),(this.l??=[]).push(s)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(s,e=Pr){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(s)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(s,e),!e.noAccessor){let r=Symbol(),a=this.getPropertyDescriptor(s,r,e);a!==void 0&&ot(this.prototype,s,a)}}static getPropertyDescriptor(s,e,r){let{get:a,set:o}=it(this.prototype,s)??{get(){return this[e]},set(l){this[e]=l}};return{get:a,set(l){let d=a?.call(this);o?.call(this,l),this.requestUpdate(s,d,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(s){return this.elementProperties.get(s)??Pr}static _$Ei(){if(this.hasOwnProperty(Se("elementProperties")))return;let s=dt(this);s.finalize(),s.l!==void 0&&(this.l=[...s.l]),this.elementProperties=new Map(s.elementProperties)}static finalize(){if(this.hasOwnProperty(Se("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Se("properties"))){let e=this.properties,r=[...nt(e),...lt(e)];for(let a of r)this.createProperty(a,e[a])}let s=this[Symbol.metadata];if(s!==null){let e=litPropertyMetadata.get(s);if(e!==void 0)for(let[r,a]of e)this.elementProperties.set(r,a)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let a=this._$Eu(e,r);a!==void 0&&this._$Eh.set(a,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){let e=[];if(Array.isArray(s)){let r=new Set(s.flat(1/0).reverse());for(let a of r)e.unshift(rr(a))}else s!==void 0&&e.push(rr(s));return e}static _$Eu(s,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof s=="string"?s.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(s=>this.enableUpdating=s),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(s=>s(this))}addController(s){(this._$EO??=new Set).add(s),this.renderRoot!==void 0&&this.isConnected&&s.hostConnected?.()}removeController(s){this._$EO?.delete(s)}_$E_(){let s=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(s.set(r,this[r]),delete this[r]);s.size>0&&(this._$Ep=s)}createRenderRoot(){let s=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Er(s,this.constructor.elementStyles),s}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(s=>s.hostConnected?.())}enableUpdating(s){}disconnectedCallback(){this._$EO?.forEach(s=>s.hostDisconnected?.())}attributeChangedCallback(s,e,r){this._$AK(s,r)}_$ET(s,e){let r=this.constructor.elementProperties.get(s),a=this.constructor._$Eu(s,r);if(a!==void 0&&r.reflect===!0){let o=(r.converter?.toAttribute!==void 0?r.converter:Ae).toAttribute(e,r.type);this._$Em=s,o==null?this.removeAttribute(a):this.setAttribute(a,o),this._$Em=null}}_$AK(s,e){let r=this.constructor,a=r._$Eh.get(s);if(a!==void 0&&this._$Em!==a){let o=r.getPropertyOptions(a),l=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Ae;this._$Em=a;let d=l.fromAttribute(e,o.type);this[a]=d??this._$Ej?.get(a)??d,this._$Em=null}}requestUpdate(s,e,r,a=!1,o){if(s!==void 0){let l=this.constructor;if(a===!1&&(o=this[s]),r??=l.getPropertyOptions(s),!((r.hasChanged??je)(o,e)||r.useDefault&&r.reflect&&o===this._$Ej?.get(s)&&!this.hasAttribute(l._$Eu(s,r))))return;this.C(s,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(s,e,{useDefault:r,reflect:a,wrapped:o},l){r&&!(this._$Ej??=new Map).has(s)&&(this._$Ej.set(s,l??e??this[s]),o!==!0||l!==void 0)||(this._$AL.has(s)||(this.hasUpdated||r||(e=void 0),this._$AL.set(s,e)),a===!0&&this._$Em!==s&&(this._$Eq??=new Set).add(s))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let s=this.scheduleUpdate();return s!=null&&await s,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[a,o]of this._$Ep)this[a]=o;this._$Ep=void 0}let r=this.constructor.elementProperties;if(r.size>0)for(let[a,o]of r){let{wrapped:l}=o,d=this[a];l!==!0||this._$AL.has(a)||d===void 0||this.C(a,void 0,o,d)}}let s=!1,e=this._$AL;try{s=this.shouldUpdate(e),s?(this.willUpdate(e),this._$EO?.forEach(r=>r.hostUpdate?.()),this.update(e)):this._$EM()}catch(r){throw s=!1,this._$EM(),r}s&&this._$AE(e)}willUpdate(s){}_$AE(s){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(s)),this.updated(s)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(s){return!0}update(s){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(s){}firstUpdated(s){}};D.elementStyles=[],D.shadowRootOptions={mode:"open"},D[Se("elementProperties")]=new Map,D[Se("finalized")]=new Map,pt?.({ReactiveElement:D}),(Ge.reactiveElementVersions??=[]).push("2.1.2");var lr=globalThis,Cr=i=>i,Ie=lr.trustedTypes,Tr=Ie?Ie.createPolicy("lit-html",{createHTML:i=>i}):void 0,Dr="$lit$",re=`lit$${Math.random().toFixed(9).slice(2)}$`,Or="?"+re,mt=`<${Or}>`,ue=document,Le=()=>ue.createComment(""),Pe=i=>i===null||typeof i!="object"&&typeof i!="function",dr=Array.isArray,ht=i=>dr(i)||typeof i?.[Symbol.iterator]=="function",tr=`[
|
|
2
|
+
\f\r]`,Ee=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Rr=/-->/g,zr=/>/g,ge=RegExp(`>|${tr}(?:([^\\s"'>=/]+)(${tr}*=${tr}*(?:[^
|
|
3
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),Nr=/'/g,_r=/"/g,Hr=/^(?:script|style|textarea|title)$/i,cr=i=>(s,...e)=>({_$litType$:i,strings:s,values:e}),t=cr(1),S=cr(2),Xt=cr(3),xe=Symbol.for("lit-noChange"),n=Symbol.for("lit-nothing"),Mr=new WeakMap,ye=ue.createTreeWalker(ue,129);function Gr(i,s){if(!dr(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return Tr!==void 0?Tr.createHTML(s):s}var gt=(i,s)=>{let e=i.length-1,r=[],a,o=s===2?"<svg>":s===3?"<math>":"",l=Ee;for(let d=0;d<e;d++){let c=i[d],m,y,h=-1,b=0;for(;b<c.length&&(l.lastIndex=b,y=l.exec(c),y!==null);)b=l.lastIndex,l===Ee?y[1]==="!--"?l=Rr:y[1]!==void 0?l=zr:y[2]!==void 0?(Hr.test(y[2])&&(a=RegExp("</"+y[2],"g")),l=ge):y[3]!==void 0&&(l=ge):l===ge?y[0]===">"?(l=a??Ee,h=-1):y[1]===void 0?h=-2:(h=l.lastIndex-y[2].length,m=y[1],l=y[3]===void 0?ge:y[3]==='"'?_r:Nr):l===_r||l===Nr?l=ge:l===Rr||l===zr?l=Ee:(l=ge,a=void 0);let E=l===ge&&i[d+1].startsWith("/>")?" ":"";o+=l===Ee?c+mt:h>=0?(r.push(m),c.slice(0,h)+Dr+c.slice(h)+re+E):c+re+(h===-2?d:E)}return[Gr(i,o+(i[e]||"<?>")+(s===2?"</svg>":s===3?"</math>":"")),r]},Ce=class i{constructor({strings:s,_$litType$:e},r){let a;this.parts=[];let o=0,l=0,d=s.length-1,c=this.parts,[m,y]=gt(s,e);if(this.el=i.createElement(m,r),ye.currentNode=this.el.content,e===2||e===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(a=ye.nextNode())!==null&&c.length<d;){if(a.nodeType===1){if(a.hasAttributes())for(let h of a.getAttributeNames())if(h.endsWith(Dr)){let b=y[l++],E=a.getAttribute(h).split(re),$=/([.?@])?(.*)/.exec(b);c.push({type:1,index:o,name:$[2],strings:E,ctor:$[1]==="."?sr:$[1]==="?"?or:$[1]==="@"?ir:$e}),a.removeAttribute(h)}else h.startsWith(re)&&(c.push({type:6,index:o}),a.removeAttribute(h));if(Hr.test(a.tagName)){let h=a.textContent.split(re),b=h.length-1;if(b>0){a.textContent=Ie?Ie.emptyScript:"";for(let E=0;E<b;E++)a.append(h[E],Le()),ye.nextNode(),c.push({type:2,index:++o});a.append(h[b],Le())}}}else if(a.nodeType===8)if(a.data===Or)c.push({type:2,index:o});else{let h=-1;for(;(h=a.data.indexOf(re,h+1))!==-1;)c.push({type:7,index:o}),h+=re.length-1}o++}}static createElement(s,e){let r=ue.createElement("template");return r.innerHTML=s,r}};function be(i,s,e=i,r){if(s===xe)return s;let a=r!==void 0?e._$Co?.[r]:e._$Cl,o=Pe(s)?void 0:s._$litDirective$;return a?.constructor!==o&&(a?._$AO?.(!1),o===void 0?a=void 0:(a=new o(i),a._$AT(i,e,r)),r!==void 0?(e._$Co??=[])[r]=a:e._$Cl=a),a!==void 0&&(s=be(i,a._$AS(i,s.values),a,r)),s}var ar=class{constructor(s,e){this._$AV=[],this._$AN=void 0,this._$AD=s,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(s){let{el:{content:e},parts:r}=this._$AD,a=(s?.creationScope??ue).importNode(e,!0);ye.currentNode=a;let o=ye.nextNode(),l=0,d=0,c=r[0];for(;c!==void 0;){if(l===c.index){let m;c.type===2?m=new Te(o,o.nextSibling,this,s):c.type===1?m=new c.ctor(o,c.name,c.strings,this,s):c.type===6&&(m=new nr(o,this,s)),this._$AV.push(m),c=r[++d]}l!==c?.index&&(o=ye.nextNode(),l++)}return ye.currentNode=ue,a}p(s){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(s,r,e),e+=r.strings.length-2):r._$AI(s[e])),e++}},Te=class i{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(s,e,r,a){this.type=2,this._$AH=n,this._$AN=void 0,this._$AA=s,this._$AB=e,this._$AM=r,this.options=a,this._$Cv=a?.isConnected??!0}get parentNode(){let s=this._$AA.parentNode,e=this._$AM;return e!==void 0&&s?.nodeType===11&&(s=e.parentNode),s}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(s,e=this){s=be(this,s,e),Pe(s)?s===n||s==null||s===""?(this._$AH!==n&&this._$AR(),this._$AH=n):s!==this._$AH&&s!==xe&&this._(s):s._$litType$!==void 0?this.$(s):s.nodeType!==void 0?this.T(s):ht(s)?this.k(s):this._(s)}O(s){return this._$AA.parentNode.insertBefore(s,this._$AB)}T(s){this._$AH!==s&&(this._$AR(),this._$AH=this.O(s))}_(s){this._$AH!==n&&Pe(this._$AH)?this._$AA.nextSibling.data=s:this.T(ue.createTextNode(s)),this._$AH=s}$(s){let{values:e,_$litType$:r}=s,a=typeof r=="number"?this._$AC(s):(r.el===void 0&&(r.el=Ce.createElement(Gr(r.h,r.h[0]),this.options)),r);if(this._$AH?._$AD===a)this._$AH.p(e);else{let o=new ar(a,this),l=o.u(this.options);o.p(e),this.T(l),this._$AH=o}}_$AC(s){let e=Mr.get(s.strings);return e===void 0&&Mr.set(s.strings,e=new Ce(s)),e}k(s){dr(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,a=0;for(let o of s)a===e.length?e.push(r=new i(this.O(Le()),this.O(Le()),this,this.options)):r=e[a],r._$AI(o),a++;a<e.length&&(this._$AR(r&&r._$AB.nextSibling,a),e.length=a)}_$AR(s=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);s!==this._$AB;){let r=Cr(s).nextSibling;Cr(s).remove(),s=r}}setConnected(s){this._$AM===void 0&&(this._$Cv=s,this._$AP?.(s))}},$e=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(s,e,r,a,o){this.type=1,this._$AH=n,this._$AN=void 0,this.element=s,this.name=e,this._$AM=a,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(s,e=this,r,a){let o=this.strings,l=!1;if(o===void 0)s=be(this,s,e,0),l=!Pe(s)||s!==this._$AH&&s!==xe,l&&(this._$AH=s);else{let d=s,c,m;for(s=o[0],c=0;c<o.length-1;c++)m=be(this,d[r+c],e,c),m===xe&&(m=this._$AH[c]),l||=!Pe(m)||m!==this._$AH[c],m===n?s=n:s!==n&&(s+=(m??"")+o[c+1]),this._$AH[c]=m}l&&!a&&this.j(s)}j(s){s===n?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,s??"")}},sr=class extends $e{constructor(){super(...arguments),this.type=3}j(s){this.element[this.name]=s===n?void 0:s}},or=class extends $e{constructor(){super(...arguments),this.type=4}j(s){this.element.toggleAttribute(this.name,!!s&&s!==n)}},ir=class extends $e{constructor(s,e,r,a,o){super(s,e,r,a,o),this.type=5}_$AI(s,e=this){if((s=be(this,s,e,0)??n)===xe)return;let r=this._$AH,a=s===n&&r!==n||s.capture!==r.capture||s.once!==r.once||s.passive!==r.passive,o=s!==n&&(r===n||a);a&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,s),this._$AH=s}handleEvent(s){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,s):this._$AH.handleEvent(s)}},nr=class{constructor(s,e,r){this.element=s,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(s){be(this,s)}};var yt=lr.litHtmlPolyfillSupport;yt?.(Ce,Te),(lr.litHtmlVersions??=[]).push("3.3.2");var jr=(i,s,e)=>{let r=e?.renderBefore??s,a=r._$litPart$;if(a===void 0){let o=e?.renderBefore??null;r._$litPart$=a=new Te(s.insertBefore(Le(),o),o,void 0,e??{})}return a._$AI(i),a};var pr=globalThis,u=class extends D{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let s=super.createRenderRoot();return this.renderOptions.renderBefore??=s.firstChild,s}update(s){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(s),this._$Do=jr(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return xe}};u._$litElement$=!0,u.finalized=!0,pr.litElementHydrateSupport?.({LitElement:u});var ut=pr.litElementPolyfillSupport;ut?.({LitElement:u});(pr.litElementVersions??=[]).push("4.2.2");var f=i=>(s,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(i,s)}):customElements.define(i,s)};var xt={attribute:!0,type:String,converter:Ae,reflect:!1,hasChanged:je},ft=(i=xt,s,e)=>{let{kind:r,metadata:a}=e,o=globalThis.litPropertyMetadata.get(a);if(o===void 0&&globalThis.litPropertyMetadata.set(a,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=s.get.call(this);s.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];s.call(this,d),this.requestUpdate(l,c,i,!0,d)}}throw Error("Unsupported decorator location: "+r)};function g(i){return(s,e)=>typeof e=="object"?ft(i,s,e):((r,a,o)=>{let l=a.hasOwnProperty(o);return a.constructor.createProperty(o,r),l?Object.getOwnPropertyDescriptor(a,o):void 0})(i,s,e)}function C(i){return g({...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"},Ir={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"},N={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"},qe={Aries:"Ar",Taurus:"Ta",Gemini:"Ge",Cancer:"Cn",Leo:"Le",Virgo:"Vi",Libra:"Li",Scorpio:"Sc",Sagittarius:"Sg",Capricorn:"Cp",Aquarius:"Aq",Pisces:"Pi"},_=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],Oa=_.map(i=>i.toLowerCase()),mr={conjunction:"\u260C",opposition:"\u260D",trine:"\u25B3",square:"\u25A1",sextile:"\u2731",quincunx:"\u22BB",semisextile:"\u22BC"},hr={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"},Br={"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 v=x`
|
|
4
4
|
:host {
|
|
5
5
|
display: block;
|
|
6
6
|
container-type: inline-size;
|
|
@@ -82,7 +82,7 @@
|
|
|
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 vt={sarva:"Sarvashtakavarga",bhinna:"Bhinnashtakavarga",pinda:"Shodhya Pinda"},fe=["sarva","bhinna","pinda"],O=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
88
|
${e.length?t`<p class="subtitle">${e.length} signs</p>`:n}
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
aria-label="Ashtakavarga views"
|
|
95
95
|
@keydown=${this.onTabKeyDown}
|
|
96
96
|
>
|
|
97
|
-
${
|
|
97
|
+
${fe.map(r=>t`<button
|
|
98
98
|
class="tab"
|
|
99
99
|
role="tab"
|
|
100
100
|
id="tab-${r}"
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
tabindex=${this.activeTab===r?"0":"-1"}
|
|
104
104
|
@click=${()=>{this.activeTab=r}}
|
|
105
105
|
>
|
|
106
|
-
${
|
|
106
|
+
${vt[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 r=
|
|
117
|
+
</div>`}onTabKeyDown(e){let r=fe.indexOf(this.activeTab);e.key==="ArrowRight"?(e.preventDefault(),this.activeTab=fe[(r+1)%fe.length],this.focusActiveTab()):e.key==="ArrowLeft"&&(e.preventDefault(),this.activeTab=fe[(r-1+fe.length)%fe.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,11 +123,11 @@
|
|
|
123
123
|
</tr>
|
|
124
124
|
</thead>
|
|
125
125
|
<tbody>
|
|
126
|
-
${e.map((
|
|
126
|
+
${e.map((a,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">${
|
|
130
|
-
${
|
|
129
|
+
<span class="glyph" aria-hidden="true">${N[a]??""}</span>
|
|
130
|
+
${a}
|
|
131
131
|
</div>
|
|
132
132
|
</td>
|
|
133
133
|
<td class="${`heat-cell ${d}`}">${l}</td>
|
|
@@ -145,15 +145,15 @@
|
|
|
145
145
|
<thead>
|
|
146
146
|
<tr>
|
|
147
147
|
<th scope="col">Planet</th>
|
|
148
|
-
${e.map(
|
|
148
|
+
${e.map(a=>t`<th scope="col" title=${a}>${N[a]??a.slice(0,2)}</th>`)}
|
|
149
149
|
<th scope="col">Total</th>
|
|
150
150
|
</tr>
|
|
151
151
|
</thead>
|
|
152
152
|
<tbody>
|
|
153
|
-
${r.map(
|
|
154
|
-
<td>${
|
|
155
|
-
${
|
|
156
|
-
<td>${
|
|
153
|
+
${r.map(a=>t`<tr>
|
|
154
|
+
<td>${a.planet}</td>
|
|
155
|
+
${a.bindus.map(o=>{let l=this.heatClass(o);return t`<td class="${`heat-cell ${l}`}">${o}</td>`})}
|
|
156
|
+
<td>${a.total}</td>
|
|
157
157
|
</tr>`)}
|
|
158
158
|
</tbody>
|
|
159
159
|
</table>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
</tr>`)}
|
|
177
177
|
</tbody>
|
|
178
178
|
</table>
|
|
179
|
-
</div>`:t`<p class="roxy-empty">No shodhya pinda data</p>`}};
|
|
179
|
+
</div>`:t`<p class="roxy-empty">No shodhya pinda data</p>`}};O.styles=[v,x`
|
|
180
180
|
.wrap {
|
|
181
181
|
display: grid;
|
|
182
182
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -304,13 +304,13 @@
|
|
|
304
304
|
.bhinna-table td:first-child {
|
|
305
305
|
min-width: 5rem;
|
|
306
306
|
}
|
|
307
|
-
`],p([
|
|
307
|
+
`],p([g({attribute:!1})],O.prototype,"data",2),p([C()],O.prototype,"activeTab",2),O=p([f("roxy-ashtakavarga-grid")],O);var qr={physical:"#dc2626",emotional:"#0284c7",intellectual:"#16a34a",intuitive:"#a855f7",aesthetic:"#f59e0b",awareness:"#ec4899",spiritual:"#14b8a6",passion:"#ef4444",mastery:"#6366f1",wisdom:"#475569"},H=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??{},a=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
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
|
-
${
|
|
313
|
+
${a.map(([o,l])=>{let d=(l+1)/2*100,c=qr[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
|
|
@@ -323,13 +323,13 @@
|
|
|
323
323
|
</div>
|
|
324
324
|
${e.dailyMessage?t`<p class="advice">${e.dailyMessage}</p>`:n}
|
|
325
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
|
|
326
|
+
</section>`}renderForecast(e){let r=e.days??[];if(r.length===0)return t`<div class="roxy-empty" role="status">No forecast</div>`;let a=600,o=160,l=a/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>
|
|
330
330
|
</header>
|
|
331
331
|
<svg
|
|
332
|
-
viewBox="0 0 ${
|
|
332
|
+
viewBox="0 0 ${a} ${o}"
|
|
333
333
|
role="img"
|
|
334
334
|
aria-label="Biorhythm cycle lines across the forecast window"
|
|
335
335
|
>
|
|
@@ -337,12 +337,12 @@
|
|
|
337
337
|
<line
|
|
338
338
|
x1="0"
|
|
339
339
|
y1=${o/2}
|
|
340
|
-
x2=${
|
|
340
|
+
x2=${a}
|
|
341
341
|
y2=${o/2}
|
|
342
342
|
stroke="var(--roxy-border, #e4e4e7)"
|
|
343
343
|
stroke-width="1"
|
|
344
344
|
/>
|
|
345
|
-
${d.map(c=>{let m=r.map((
|
|
345
|
+
${d.map(c=>{let m=r.map((h,b)=>{let E=h[c]??0,$=b*l,wr=o/2-E/100*(o/2-8);return`${$.toFixed(2)},${wr.toFixed(2)}`}).join(" "),y=qr[c]??"#475569";return S`<polyline points=${m} fill="none" stroke=${y} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />`})}
|
|
346
346
|
</svg>
|
|
347
347
|
${e.summary?.periodAdvice?t`<p class="advice">${e.summary.periodAdvice}</p>`:n}
|
|
348
348
|
</section>`}renderCritical(e){return t`<section class="wrap" aria-label="Critical days">
|
|
@@ -355,7 +355,7 @@
|
|
|
355
355
|
>${r.date} · ${r.cycle} ${r.severity}</span
|
|
356
356
|
>`)}
|
|
357
357
|
</div>
|
|
358
|
-
</section>`}};
|
|
358
|
+
</section>`}};H.styles=[v,x`
|
|
359
359
|
.wrap {
|
|
360
360
|
display: grid;
|
|
361
361
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -431,14 +431,14 @@
|
|
|
431
431
|
display: inline-block;
|
|
432
432
|
margin: 2px;
|
|
433
433
|
}
|
|
434
|
-
`],p([
|
|
434
|
+
`],p([g({attribute:!1})],H.prototype,"data",2),p([g({type:String,reflect:!0})],H.prototype,"mode",2),H=p([f("roxy-biorhythm-chart")],H);function A(i){return i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():""}function te(i){return i.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^\w/,s=>s.toUpperCase())}function Kr(i){try{let s=new Date(i);return Number.isNaN(s.getTime())?i:s.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return i}}var ae=class extends u{constructor(){super(...arguments);this.data=null}renderTile(e){let r=e.effect==="Good"?"good":e.effect==="Bad"?"bad":"neutral",a=L[A(e.lord)]??"",o=`${Kr(e.start)} - ${Kr(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
|
-
${
|
|
438
|
+
${a?t`<span aria-hidden="true">${a}</span>`:n}
|
|
439
439
|
${e.lord}
|
|
440
440
|
</span>
|
|
441
|
-
</div>`}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No choghadiya data</div>`;let{date:e,dayChoghadiya:r,nightChoghadiya:
|
|
441
|
+
</div>`}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No choghadiya data</div>`;let{date:e,dayChoghadiya:r,nightChoghadiya:a}=this.data;return t`<div class="wrap">
|
|
442
442
|
<div class="header">
|
|
443
443
|
<h2 class="title">Choghadiya</h2>
|
|
444
444
|
${e?t`<p class="subtitle">${e}</p>`:n}
|
|
@@ -455,11 +455,11 @@
|
|
|
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
|
-
${
|
|
458
|
+
${a&&a.length>0?a.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>`}};ae.styles=[v,x`
|
|
463
463
|
.wrap {
|
|
464
464
|
display: grid;
|
|
465
465
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -543,7 +543,7 @@
|
|
|
543
543
|
align-items: center;
|
|
544
544
|
gap: 0.25em;
|
|
545
545
|
}
|
|
546
|
-
`],p([
|
|
546
|
+
`],p([g({attribute:!1})],ae.prototype,"data",2),ae=p([f("roxy-choghadiya-grid")],ae);function G(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 Ke(i){if(typeof i!="string"||i.length===0)return"";let s=new Date(/^\d{4}-\d{2}-\d{2}$/.test(i)?`${i}T00:00:00`:i);return Number.isNaN(s.getTime())?i:s.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function gr(i){if(!i)return"";let s=G(i.start),e=G(i.end);return s&&e?`${s} - ${e}`:s||e||""}function w(i,s=1){return typeof i!="number"||!Number.isFinite(i)?"":i.toFixed(s).replace(/\.?0+$/,"")}function Ur(i,s=1){let e=w(i,s);return e?`${e}%`:""}var Re={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function we(i){return(i.type??"").toLowerCase().replace(/_/g,"-")}var j=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[a,o]of Object.entries(e.categories))typeof o=="number"&&Number.isFinite(o)&&(r[a]=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,a=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,y="strengths"in e?e.strengths:void 0,h="challenges"in e?e.challenges:void 0,b="keyAspects"in e?e.keyAspects:void 0;return t`<article
|
|
547
547
|
class="card"
|
|
548
548
|
aria-label=${`Compatibility (${this.mode})`}
|
|
549
549
|
>
|
|
@@ -555,9 +555,9 @@
|
|
|
555
555
|
</div>
|
|
556
556
|
</div>
|
|
557
557
|
|
|
558
|
-
${Object.keys(
|
|
559
|
-
${Object.entries(
|
|
560
|
-
<span style="text-transform: capitalize">${
|
|
558
|
+
${Object.keys(a).length>0?t`<div role="list">
|
|
559
|
+
${Object.entries(a).map(([E,$])=>t`<div class="bar-row" role="listitem">
|
|
560
|
+
<span style="text-transform: capitalize">${E}</span>
|
|
561
561
|
<span class="bar"
|
|
562
562
|
><span style="width: ${Math.max(0,Math.min(100,$))}%"></span
|
|
563
563
|
></span>
|
|
@@ -571,27 +571,27 @@
|
|
|
571
571
|
${c?t`<p>${c}</p>`:n}
|
|
572
572
|
${m&&!c?t`<p>${m}</p>`:n}
|
|
573
573
|
${d?t`<p>${d}</p>`:n}
|
|
574
|
-
${(
|
|
575
|
-
${
|
|
574
|
+
${(y?.length??0)>0||(h?.length??0)>0?t`<div class="lists">
|
|
575
|
+
${y?.length?t`<div>
|
|
576
576
|
<h3>Strengths</h3>
|
|
577
577
|
<ul>
|
|
578
|
-
${
|
|
578
|
+
${y.map(E=>t`<li>${E}</li>`)}
|
|
579
579
|
</ul>
|
|
580
580
|
</div>`:n}
|
|
581
|
-
${
|
|
581
|
+
${h?.length?t`<div>
|
|
582
582
|
<h3>Challenges</h3>
|
|
583
583
|
<ul>
|
|
584
|
-
${
|
|
584
|
+
${h.map(E=>t`<li>${E}</li>`)}
|
|
585
585
|
</ul>
|
|
586
586
|
</div>`:n}
|
|
587
587
|
</div>`:n}
|
|
588
|
-
${
|
|
588
|
+
${b?.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
|
-
${
|
|
591
|
+
${b.slice(0,6).map(E=>t`<li>${bt(E)}</li>`)}
|
|
592
592
|
</ul>
|
|
593
593
|
</div>`:n}
|
|
594
|
-
</article>`}};
|
|
594
|
+
</article>`}};j.styles=[v,x`
|
|
595
595
|
.card {
|
|
596
596
|
background: var(--roxy-bg, #fff);
|
|
597
597
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -675,7 +675,7 @@
|
|
|
675
675
|
margin: 0;
|
|
676
676
|
padding-left: var(--roxy-space-md, 1rem);
|
|
677
677
|
}
|
|
678
|
-
`],p([
|
|
678
|
+
`],p([g({attribute:!1})],j.prototype,"data",2),p([g({type:String,reflect:!0})],j.prototype,"mode",2),j=p([f("roxy-compatibility-card")],j);function bt(i){let s=i.type.toLowerCase().replace(/_/g,"-"),e=typeof i.orb=="number"?` (orb ${w(i.orb,1)}\xB0)`:"",r=[i.planet1,s,i.planet2].filter(Boolean).join(" ");return i.description?`${r}${e} \xB7 ${i.description}`:`${r}${e}`}var I=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),a=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"}
|
|
@@ -688,7 +688,7 @@
|
|
|
688
688
|
|
|
689
689
|
${this.period==="current"?this.renderCurrent(e):n}
|
|
690
690
|
${r.length>0?t`<div class="timeline" role="list">
|
|
691
|
-
${r.map(o=>this.renderBar(o,
|
|
691
|
+
${r.map(o=>this.renderBar(o,a))}
|
|
692
692
|
</div>`:n}
|
|
693
693
|
</div>`}renderCurrent(e){return"mahadasha"in e?t`<div class="current">
|
|
694
694
|
${"mahadasha"in e&&e.mahadasha?t`<div>
|
|
@@ -706,14 +706,14 @@
|
|
|
706
706
|
<strong>${e.pratyantardasha.planet}</strong>
|
|
707
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,r){let
|
|
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 a=e.durationYears,o=r>0?a/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?t`- ${
|
|
713
|
+
${e.startDate?Yr(e.startDate):""}
|
|
714
|
+
${e.endDate?t`- ${Yr(e.endDate)}`:""}
|
|
715
715
|
</span>
|
|
716
|
-
</div>`}};
|
|
716
|
+
</div>`}};I.styles=[v,x`
|
|
717
717
|
.wrap {
|
|
718
718
|
display: grid;
|
|
719
719
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -788,7 +788,7 @@
|
|
|
788
788
|
font-variant-numeric: tabular-nums;
|
|
789
789
|
text-align: right;
|
|
790
790
|
}
|
|
791
|
-
`],p([
|
|
791
|
+
`],p([g({attribute:!1})],I.prototype,"data",2),p([g({type:String,reflect:!0})],I.prototype,"period",2),I=p([f("roxy-dasha-timeline")],I);function Yr(i){let s=i.match(/^(\d{4})/);return s?s[1]:i}var $t=["title","name","label","heading","overview","summary"],wt=["imageUrl","image","icon","symbol"],kt=["imageUrl","image"],St=6,B=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>=St?t`<div class="roxy-empty" role="status">…</div>`:t`<div
|
|
792
792
|
class="roxy-card"
|
|
793
793
|
aria-label="Generic data display"
|
|
794
794
|
>
|
|
@@ -800,18 +800,18 @@
|
|
|
800
800
|
</ol>`}renderTable(e){let r=this.collectKeys(e);return t`<table class="roxy-table" role="table">
|
|
801
801
|
<thead>
|
|
802
802
|
<tr>
|
|
803
|
-
${r.map(
|
|
803
|
+
${r.map(a=>t`<th>${te(a)}</th>`)}
|
|
804
804
|
</tr>
|
|
805
805
|
</thead>
|
|
806
806
|
<tbody>
|
|
807
|
-
${e.map(
|
|
808
|
-
${r.map(o=>t`<td>${this.formatPrimitive(
|
|
807
|
+
${e.map(a=>t`<tr>
|
|
808
|
+
${r.map(o=>t`<td>${this.formatPrimitive(a[o])}</td>`)}
|
|
809
809
|
</tr>`)}
|
|
810
810
|
</tbody>
|
|
811
|
-
</table>`}renderObject(e){let r
|
|
812
|
-
${
|
|
811
|
+
</table>`}renderObject(e){let r=$t.find(d=>typeof e[d]=="string"),a=wt.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&&!kt.includes(d)&&c!==null&&c!==void 0);return t`
|
|
812
|
+
${a?t`<img
|
|
813
813
|
class="roxy-image"
|
|
814
|
-
src=${String(e[
|
|
814
|
+
src=${String(e[a])}
|
|
815
815
|
alt=${r?String(e[r]):"illustration"}
|
|
816
816
|
loading="lazy"
|
|
817
817
|
/>`:n}
|
|
@@ -819,13 +819,13 @@
|
|
|
819
819
|
${o?t`<p class="roxy-summary">${e[o]}</p>`:n}
|
|
820
820
|
${l.length>0?t`<dl class="roxy-rows">
|
|
821
821
|
${l.map(([d,c])=>t`
|
|
822
|
-
<dt>${
|
|
822
|
+
<dt>${te(d)}</dt>
|
|
823
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(
|
|
827
|
-
${e.map(
|
|
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
|
|
826
|
+
`}renderField(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)&&e.every(a=>["string","number","boolean"].includes(typeof a))?t`<ul class="roxy-chips">
|
|
827
|
+
${e.map(a=>t`<li>${String(a)}</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 a of e)for(let o of Object.keys(a))r.add(o);return Array.from(r)}};B.styles=[v,x`
|
|
829
829
|
.roxy-card {
|
|
830
830
|
background: var(--roxy-bg, #fff);
|
|
831
831
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -919,18 +919,18 @@
|
|
|
919
919
|
margin: 0 0 var(--roxy-space-xs, 0.25rem) 0;
|
|
920
920
|
text-transform: capitalize;
|
|
921
921
|
}
|
|
922
|
-
`],p([
|
|
922
|
+
`],p([g({attribute:!1})],B.prototype,"data",2),p([g({attribute:!1})],B.prototype,"depth",2),B=p([f("roxy-data")],B);function se(i){let s=i%360;return s<0?s+360:s}function ve(i){let s=se(i),e=Math.floor(s/30)%12,r=s%30,a=Math.floor(r),o=(r-a)*60,l=Math.floor(o),d=Math.round((o-l)*60);return{sign:_[e]??"Aries",signIndex:e,degree:a,minute:l,second:d}}function Ue(i){let{sign:s,degree:e,minute:r}=ve(i);return`${e}\xB0 ${s} ${String(r).padStart(2,"0")}'`}function yr(i){return se(i+180)}function Fr(i,s){let e=se(i),r=se(s)-e;return r<0&&(r+=360),se(e+r/2)}function P(i,s,e,r){let a=r*Math.PI/180;return{x:i+e*Math.cos(a),y:s+e*Math.sin(a)}}var Rs=Object.fromEntries(_.map(i=>[i.toLowerCase(),i])),At="\u02B3";function Et(i){let s=Ir[A(i.graha)]??i.graha.slice(0,2),e=i.isRetrograde?At:"";if(typeof i.longitude!="number"||!Number.isFinite(i.longitude))return`${s}${e}`;let{degree:r}=ve(i.longitude);return`${s} ${r}\xB0${e}`}function Lt(i){let s=[A(i.graha)];if(typeof i.longitude=="number"&&Number.isFinite(i.longitude)){let e=ve(i.longitude);s.push(`${e.degree}\xB0${String(e.minute).padStart(2,"0")}' ${e.sign}`)}if(i.nakshatra?.name){let e=i.nakshatra.pada?` pada ${i.nakshatra.pada}`:"";s.push(`${i.nakshatra.name}${e}`)}return i.awastha&&s.push(i.awastha),i.isRetrograde&&s.push("retrograde"),s.join(" \xB7 ")}function ur(i,s,e,r){let a=e-(i.length-1)*r/2;return i.map((o,l)=>{let d=a+l*r;return S`<text class="planet-text" x=${s} y=${d} text-anchor="middle" dominant-baseline="central">${Et(o)}<title>${Lt(o)}</title></text>`})}var 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}},Ct={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}},Tt={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}},Rt={1:{x:150,y:80},2:{x:220,y:33},3:{x:267,y:80},4:{x:220,y:150},5:{x:267,y:220},6:{x:220,y:267},7:{x:150,y:220},8:{x:80,y:267},9:{x:33,y:220},10:{x:80,y:150},11:{x:33,y:80},12:{x:80,y:33}},zt={1:{x:150,y:55},2:{x:235,y:24},3:{x:276,y:62},4:{x:242,y:150},5:{x:276,y:238},6:{x:235,y:276},7:{x:150,y:245},8:{x:65,y:276},9:{x:24,y:238},10:{x:58,y:150},11:{x:24,y:62},12:{x:65,y:24}};function Ye(i){let s=Pt[i.number],e=Ct[i.number];if(!s||!e)return n;let r=qe[i.sign]??"",a=i.isLagna?s.y+8:s.y;return S`
|
|
923
923
|
<g>
|
|
924
924
|
${i.isLagna?S`<rect
|
|
925
925
|
class="lagna-bg"
|
|
926
|
-
x=${
|
|
926
|
+
x=${s.x-30} y=${s.y-28}
|
|
927
927
|
width="60" height="56" rx="6"
|
|
928
928
|
/>`:n}
|
|
929
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=${
|
|
931
|
-
${
|
|
930
|
+
${i.isLagna?S`<text class="lagna-marker" x=${s.x} y=${s.y-18} text-anchor="middle" dominant-baseline="central">LAGNA</text>`:n}
|
|
931
|
+
${ur(i.planets,s.x,a,13)}
|
|
932
932
|
</g>
|
|
933
|
-
`}function
|
|
933
|
+
`}function Fe(){return S`
|
|
934
934
|
<polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1.5" />
|
|
935
935
|
<line class="line" x1="150" y1="10" x2="150" y2="290" stroke-width="1" />
|
|
936
936
|
<line class="line" x1="10" y1="150" x2="290" y2="150" stroke-width="1" />
|
|
@@ -938,14 +938,14 @@
|
|
|
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
|
|
941
|
+
`}function Ve(i){let s=Tt[i.number];if(!s)return n;let e=qe[i.sign]??"";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=${s.x} cy=${s.y} r="22" />`:n}
|
|
944
|
+
${e?S`<text class="sign-text" x=${s.x} y=${s.y-10} text-anchor="middle" dominant-baseline="central">${e}</text>`:n}
|
|
945
|
+
<text class="house-num" x=${s.x} y=${s.y+2} text-anchor="middle" dominant-baseline="central">${i.number}</text>
|
|
946
|
+
${ur(i.planets,s.x,s.y+14,11)}
|
|
947
947
|
</g>
|
|
948
|
-
`}function
|
|
948
|
+
`}function We(){return S`
|
|
949
949
|
<polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1.5" />
|
|
950
950
|
<polygon class="line" points="220,80 220,220 80,220 80,80" stroke-width="1" fill="none" />
|
|
951
951
|
<line class="line" x1="150" y1="10" x2="80" y2="80" stroke-width="1" />
|
|
@@ -956,7 +956,19 @@
|
|
|
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
|
-
`}
|
|
959
|
+
`}function Je(){return S`
|
|
960
|
+
<rect class="line" x="10" y="10" width="280" height="280" stroke-width="1.5" fill="none" />
|
|
961
|
+
<line class="line" x1="10" y1="10" x2="290" y2="290" stroke-width="1" />
|
|
962
|
+
<line class="line" x1="290" y1="10" x2="10" y2="290" stroke-width="1" />
|
|
963
|
+
<polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1" fill="none" />
|
|
964
|
+
`}function Xe(i){let s=Rt[i.number],e=zt[i.number];if(!s||!e)return n;let r=qe[i.sign]??"";return S`
|
|
965
|
+
<g>
|
|
966
|
+
${i.isLagna?S`<circle class="lagna-bg" cx=${s.x} cy=${s.y} r="20" />`:n}
|
|
967
|
+
${r?S`<text class="sign-text" x=${e.x} y=${e.y} text-anchor="middle" dominant-baseline="central">${r}</text>`:n}
|
|
968
|
+
${i.isLagna?S`<text class="lagna-marker" x=${s.x} y=${s.y-14} text-anchor="middle" dominant-baseline="central">LAGNA</text>`:n}
|
|
969
|
+
${ur(i.planets,s.x,s.y+2,11)}
|
|
970
|
+
</g>
|
|
971
|
+
`}function Ze(i){let s=new Map,e="";for(let[r,a]of Object.entries(i)){let o=(a?.rashi??"").toLowerCase();if(r==="Lagna"||a?.graha==="Lagna"){e=o;continue}if(!o)continue;let l=s.get(o)??[];l.push({graha:a.graha??r,longitude:a.longitude,nakshatra:a.nakshatra,isRetrograde:a.isRetrograde,awastha:a.awastha}),s.set(o,l)}return _.map((r,a)=>{let o=r.toLowerCase();return{number:a+1,sign:r,planets:s.get(o)??[],isLagna:e===o}})}var q=class extends u{constructor(){super(...arguments);this.data=null;this.chartStyle="south"}buildHouses(){return this.data?.chart?.meta?Ze(this.data.chart.meta):[]}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No divisional chart data</div>`;let{division:e,vargottama:r}=this.data,a=this.buildHouses(),o=this.chartStyle,l=o==="north"?Fe():o==="east"?Je():We(),d=o==="north"?Ve:o==="east"?Xe:Ye;return t`<div class="wrap">
|
|
960
972
|
<div class="header">
|
|
961
973
|
<h2 class="title">
|
|
962
974
|
D${e.number} ${e.name}
|
|
@@ -971,17 +983,17 @@
|
|
|
971
983
|
aria-label="D${e.number} ${e.name} divisional chart with twelve sign houses"
|
|
972
984
|
>
|
|
973
985
|
<title>D${e.number} ${e.name}</title>
|
|
974
|
-
${
|
|
975
|
-
${
|
|
986
|
+
${l}
|
|
987
|
+
${a.map(c=>d(c))}
|
|
976
988
|
</svg>
|
|
977
989
|
|
|
978
990
|
${r&&r.length>0?t`<div class="vargottama-row" role="list" aria-label="Vargottama planets">
|
|
979
991
|
<span class="vargottama-label">Vargottama:</span>
|
|
980
|
-
${r.map(
|
|
981
|
-
${L[
|
|
992
|
+
${r.map(c=>t`<span class="vargottama-pill" role="listitem">
|
|
993
|
+
${L[c]??""} ${c}
|
|
982
994
|
</span>`)}
|
|
983
995
|
</div>`:n}
|
|
984
|
-
</div>`}};
|
|
996
|
+
</div>`}};q.styles=[v,x`
|
|
985
997
|
.wrap {
|
|
986
998
|
display: grid;
|
|
987
999
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -1071,12 +1083,12 @@
|
|
|
1071
1083
|
color: var(--roxy-fg, #0a0a0a);
|
|
1072
1084
|
border: 1px solid color-mix(in srgb, var(--roxy-accent, #f59e0b) 45%, transparent);
|
|
1073
1085
|
}
|
|
1074
|
-
`],p([
|
|
1086
|
+
`],p([g({attribute:!1})],q.prototype,"data",2),p([g({type:String,reflect:!0,attribute:"chart-style"})],q.prototype,"chartStyle",2),q=p([f("roxy-divisional-chart")],q);var Nt={manglik:"Mangal Dosha",kalsarpa:"Kaal Sarp Dosha",sadhesati:"Sade Sati"},K=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,a=Nt[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
1087
|
class="card"
|
|
1076
|
-
aria-label=${
|
|
1088
|
+
aria-label=${a}
|
|
1077
1089
|
>
|
|
1078
1090
|
<header class="head">
|
|
1079
|
-
<h2 class="title">${
|
|
1091
|
+
<h2 class="title">${a}</h2>
|
|
1080
1092
|
<span class=${`badge ${r?"present":"absent"}`}>
|
|
1081
1093
|
${r?"Present":"Absent"}
|
|
1082
1094
|
</span>
|
|
@@ -1105,12 +1117,12 @@
|
|
|
1105
1117
|
${e.exceptions.map(m=>t`<li>${m}</li>`)}
|
|
1106
1118
|
</ul>
|
|
1107
1119
|
</div>`:n}
|
|
1108
|
-
</article>`}renderEffects(e){if(!e.effects)return n;let r=Object.entries(e.effects).filter(([,
|
|
1109
|
-
${r.map(([
|
|
1110
|
-
<h3>${
|
|
1120
|
+
</article>`}renderEffects(e){if(!e.effects)return n;let r=Object.entries(e.effects).filter(([,a])=>typeof a=="string"&&a.length>0);return r.length===0?n:t`<div class="effects">
|
|
1121
|
+
${r.map(([a,o])=>t`<div>
|
|
1122
|
+
<h3>${a}</h3>
|
|
1111
1123
|
<p>${o}</p>
|
|
1112
1124
|
</div>`)}
|
|
1113
|
-
</div>`}};
|
|
1125
|
+
</div>`}};K.styles=[v,x`
|
|
1114
1126
|
.card {
|
|
1115
1127
|
background: var(--roxy-bg, #fff);
|
|
1116
1128
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1198,15 +1210,15 @@
|
|
|
1198
1210
|
margin: 0;
|
|
1199
1211
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1200
1212
|
}
|
|
1201
|
-
`],p([
|
|
1213
|
+
`],p([g({attribute:!1})],K.prototype,"data",2),p([g({type:String,reflect:!0})],K.prototype,"type",2),K=p([f("roxy-dosha-card")],K);var xr=new Map;async function _t(i){let s=xr.get(i);return s||(s=fetch(i).then(async e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{throw xr.delete(i),e}),xr.set(i,s)),s}var z=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(a=>a.required).filter(a=>this.values[a.name]===void 0||this.values[a.name]==="");if(r.length>0){this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{missing:r.map(a=>a.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 _t(this.specUrl),r=`/${this.endpoint.replace(/^\//,"")}`,a=e.paths?.[r]?.[this.method.toLowerCase()];if(!a)throw new Error(`Endpoint ${this.method} ${r} not found in OpenAPI spec`);let o=e.components?.schemas??{},l=[],d;if(a.requestBody){let m=a.requestBody.content?.["application/json"]?.schema;d=this.resolve(m,o)}if(d?.properties){let m=new Set(d.required??[]);for(let[y,h]of Object.entries(d.properties)){let b=this.resolve(h,o)??{};l.push({name:y,type:this.fieldType(b),required:m.has(y),description:b.description,enum:b.enum,min:b.minimum,max:b.maximum,default:b.default})}}for(let m of a.parameters??[])if(m.in==="path"||m.in==="query"){let y=this.resolve(m.schema,o)??{};l.push({name:m.name,type:this.fieldType(y),required:!!m.required,description:y.description,enum:y.enum,default:y.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 a=e.$ref.split("/").pop();return a?r[a]: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
1214
|
Schema load failed: ${this.specError}
|
|
1203
1215
|
<button type="button" class="submit" @click=${this.retryLoadSchema}>Retry</button>
|
|
1204
|
-
</div>`;let e=r=>{if(this.hasLocation&&(r.name==="latitude"||r.name==="longitude"||r.name==="timezone"))return n;let
|
|
1205
|
-
<label for=${
|
|
1206
|
-
${
|
|
1216
|
+
</div>`;let e=r=>{if(this.hasLocation&&(r.name==="latitude"||r.name==="longitude"||r.name==="timezone"))return n;let a=`roxy-form-${r.name}`;return t`<div class="field">
|
|
1217
|
+
<label for=${a}>
|
|
1218
|
+
${te(r.name)}${r.required?t`<span class="req" aria-hidden="true">*</span>`:n}
|
|
1207
1219
|
</label>
|
|
1208
1220
|
${r.enum?t`<select
|
|
1209
|
-
id=${
|
|
1221
|
+
id=${a}
|
|
1210
1222
|
?required=${r.required}
|
|
1211
1223
|
@change=${o=>this.setValue(r.name,o.target.value)}
|
|
1212
1224
|
>
|
|
@@ -1215,7 +1227,7 @@
|
|
|
1215
1227
|
${o}
|
|
1216
1228
|
</option>`)}
|
|
1217
1229
|
</select>`:t`<input
|
|
1218
|
-
id=${
|
|
1230
|
+
id=${a}
|
|
1219
1231
|
type=${this.htmlType(r.type)}
|
|
1220
1232
|
?required=${r.required}
|
|
1221
1233
|
min=${r.min??""}
|
|
@@ -1226,7 +1238,7 @@
|
|
|
1226
1238
|
/>`}
|
|
1227
1239
|
${r.description?t`<small class="help">${r.description}</small>`:n}
|
|
1228
1240
|
</div>`};return t`<form @submit=${this.onSubmit}>
|
|
1229
|
-
<h2 class="title">${
|
|
1241
|
+
<h2 class="title">${te(this.endpoint.split("/").pop()??"")}</h2>
|
|
1230
1242
|
${this.hasLocation?t`<div class="location-block">
|
|
1231
1243
|
<label>Birth location</label>
|
|
1232
1244
|
<roxy-location-search
|
|
@@ -1241,7 +1253,7 @@
|
|
|
1241
1253
|
${this.fields.map(r=>e(r))}
|
|
1242
1254
|
</div>
|
|
1243
1255
|
<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,r){if(r!==""){if(e==="number"){let
|
|
1256
|
+
</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 a=Number(r);return Number.isFinite(a)?a:void 0}return r}}};z.styles=[v,x`
|
|
1245
1257
|
form {
|
|
1246
1258
|
display: grid;
|
|
1247
1259
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -1343,7 +1355,7 @@
|
|
|
1343
1355
|
color: var(--roxy-danger-fg, #991b1b);
|
|
1344
1356
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1345
1357
|
}
|
|
1346
|
-
`],p([
|
|
1358
|
+
`],p([g({type:String,attribute:"data-endpoint"})],z.prototype,"endpoint",2),p([g({type:String})],z.prototype,"method",2),p([g({type:String,attribute:"spec-url"})],z.prototype,"specUrl",2),p([g({type:String,attribute:"submit-label"})],z.prototype,"submitLabel",2),p([C()],z.prototype,"fields",2),p([C()],z.prototype,"values",2),p([C()],z.prototype,"hasLocation",2),p([C()],z.prototype,"loaded",2),p([C()],z.prototype,"specError",2),z=p([f("roxy-endpoint-form")],z);var oe=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(h=>h?.category!==void 0),a=e.total??0,o=e.maxScore??36,l=a/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,y=(100-l)*2.827;return t`<article class="card" aria-label="Guna Milan score">
|
|
1347
1359
|
<div class="score-header">
|
|
1348
1360
|
<div class="score-info">
|
|
1349
1361
|
<div class="score-bar">
|
|
@@ -1351,19 +1363,19 @@
|
|
|
1351
1363
|
<span class="total">${w(e.total,1)}</span>
|
|
1352
1364
|
<span class="over"> / ${e.maxScore}</span>
|
|
1353
1365
|
${typeof e.percentage=="number"?t`<small style="margin-left: 0.5rem; color: var(--roxy-muted)">
|
|
1354
|
-
${
|
|
1366
|
+
${Ur(e.percentage,1)}
|
|
1355
1367
|
</small>`:n}
|
|
1356
1368
|
</div>
|
|
1357
1369
|
${e.recommendation?t`<span class="recommendation">${e.recommendation}</span>`:n}
|
|
1358
1370
|
</div>
|
|
1359
1371
|
</div>
|
|
1360
|
-
<div class="score-ring" role="meter" aria-label="Guna milan score" aria-valuemin="0" aria-valuemax="36" aria-valuenow="${
|
|
1372
|
+
<div class="score-ring" role="meter" aria-label="Guna milan score" aria-valuemin="0" aria-valuemax="36" aria-valuenow="${a}">
|
|
1361
1373
|
<svg viewBox="0 0 100 100" aria-hidden="true">
|
|
1362
1374
|
<circle class="ring-track" cx="50" cy="50" r="45" fill="none" stroke="${d}" stroke-width="8"/>
|
|
1363
1375
|
<circle class="ring-fill" cx="50" cy="50" r="45" fill="none" stroke="${c}" stroke-width="8"
|
|
1364
|
-
stroke-dasharray="${m},${
|
|
1376
|
+
stroke-dasharray="${m},${y}" stroke-linecap="round"
|
|
1365
1377
|
transform="rotate(-90 50 50)"/>
|
|
1366
|
-
<text x="50" y="50" text-anchor="middle" dominant-baseline="central" class="ring-text">${
|
|
1378
|
+
<text x="50" y="50" text-anchor="middle" dominant-baseline="central" class="ring-text">${a}</text>
|
|
1367
1379
|
<text x="50" y="64" text-anchor="middle" dominant-baseline="central" class="ring-max">/${o}</text>
|
|
1368
1380
|
</svg>
|
|
1369
1381
|
</div>
|
|
@@ -1378,22 +1390,22 @@
|
|
|
1378
1390
|
</tr>
|
|
1379
1391
|
</thead>
|
|
1380
1392
|
<tbody>
|
|
1381
|
-
${r.map(
|
|
1382
|
-
<td>${
|
|
1393
|
+
${r.map(h=>{let b=h.score??0,E=h.maxScore??Mt(h.category),$=E?b/E*100:0;return t`<tr>
|
|
1394
|
+
<td>${h.category}</td>
|
|
1383
1395
|
<td class="bar-cell">
|
|
1384
1396
|
<div class="mini-bar">
|
|
1385
1397
|
<span style="width: ${$}%"></span>
|
|
1386
1398
|
</div>
|
|
1387
1399
|
</td>
|
|
1388
|
-
<td class="score">${w(
|
|
1400
|
+
<td class="score">${w(b,1)} / ${E}</td>
|
|
1389
1401
|
</tr>`})}
|
|
1390
1402
|
</tbody>
|
|
1391
1403
|
</table>`:n}
|
|
1392
1404
|
${(e.doshas?.length??0)>0||(e.doshaCancellations?.length??0)>0?t`<div class="tags">
|
|
1393
|
-
${e.doshas?.map(
|
|
1394
|
-
${e.doshaCancellations?.map(
|
|
1405
|
+
${e.doshas?.map(h=>t`<span class="dosha">${h}</span>`)}
|
|
1406
|
+
${e.doshaCancellations?.map(h=>t`<span class="cancel" title=${h.reason}>${h.dosha} cancelled</span>`)}
|
|
1395
1407
|
</div>`:n}
|
|
1396
|
-
</article>`}};
|
|
1408
|
+
</article>`}};oe.styles=[v,x`
|
|
1397
1409
|
.card {
|
|
1398
1410
|
background: var(--roxy-bg, #fff);
|
|
1399
1411
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1514,11 +1526,11 @@
|
|
|
1514
1526
|
background: color-mix(in srgb, var(--roxy-success, #16a34a) 18%, transparent);
|
|
1515
1527
|
color: var(--roxy-success-fg, #166534);
|
|
1516
1528
|
}
|
|
1517
|
-
`],p([
|
|
1529
|
+
`],p([g({attribute:!1})],oe.prototype,"data",2),oe=p([f("roxy-guna-milan")],oe);function Mt(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 U=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 a=e;return{hex:a.hexagram,lines:a.lines,changingLinePositions:a.changingLinePositions,resultingHexagram:a.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:a,changingLinePositions:o,dailyMessage:l,resultingHexagram:d}=e,c=a??this.derivedLines(r),m=new Set(o??[]);return t`<article class="card" aria-label="I Ching hexagram">
|
|
1518
1530
|
<div class="glyphs">
|
|
1519
1531
|
${r.symbol?t`<div class="symbol">${r.symbol}</div>`:n}
|
|
1520
1532
|
<div class="lines" aria-hidden="true">
|
|
1521
|
-
${c.slice().reverse().map((h
|
|
1533
|
+
${c.slice().reverse().map((y,h)=>{let b=c.length-1-h+1,E=m.has(b),$=y===6||y===8;return t`<div class="line ${`${$?"broken":"solid"}${E?" changing":""}`}">
|
|
1522
1534
|
${$?S`<span class="seg"></span><span class="seg"></span>`:S`<span class="seg"></span>`}
|
|
1523
1535
|
</div>`})}
|
|
1524
1536
|
</div>
|
|
@@ -1535,13 +1547,13 @@
|
|
|
1535
1547
|
${r.upperTrigram?t`<div>
|
|
1536
1548
|
Upper
|
|
1537
1549
|
<span class="tri-glyph"
|
|
1538
|
-
>${
|
|
1550
|
+
>${hr[r.upperTrigram]??""}</span
|
|
1539
1551
|
>${r.upperTrigram}
|
|
1540
1552
|
</div>`:n}
|
|
1541
1553
|
${r.lowerTrigram?t`<div>
|
|
1542
1554
|
Lower
|
|
1543
1555
|
<span class="tri-glyph"
|
|
1544
|
-
>${
|
|
1556
|
+
>${hr[r.lowerTrigram]??""}</span
|
|
1545
1557
|
>${r.lowerTrigram}
|
|
1546
1558
|
</div>`:n}
|
|
1547
1559
|
</div>
|
|
@@ -1550,12 +1562,12 @@
|
|
|
1550
1562
|
${l?t`<p class="message">${l}</p>`:n}
|
|
1551
1563
|
${r.interpretation?.general?t`<p>${r.interpretation.general}</p>`:n}
|
|
1552
1564
|
${m.size>0?t`<div class="changing">
|
|
1553
|
-
Changing lines: ${Array.from(m).sort((h
|
|
1565
|
+
Changing lines: ${Array.from(m).sort((y,h)=>y-h).join(", ")}.
|
|
1554
1566
|
${d?.english?t` Becomes hexagram ${d.number}
|
|
1555
1567
|
${d.english}.`:n}
|
|
1556
1568
|
</div>`:n}
|
|
1557
1569
|
</div>
|
|
1558
|
-
</article>`}derivedLines(e){let r=e.symbol.codePointAt(0)??0;if(r>=19904&&r<=19967){let
|
|
1570
|
+
</article>`}derivedLines(e){let r=e.symbol.codePointAt(0)??0;if(r>=19904&&r<=19967){let a=r-19904,o=[];for(let l=0;l<6;l++){let d=a>>l&1;o.push(d?8:7)}return o}return Array.from({length:6},()=>7)}};U.styles=[v,x`
|
|
1559
1571
|
.card {
|
|
1560
1572
|
background: var(--roxy-bg, #fff);
|
|
1561
1573
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1662,12 +1674,12 @@
|
|
|
1662
1674
|
color: var(--roxy-accent-fg, #b45309);
|
|
1663
1675
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1664
1676
|
}
|
|
1665
|
-
`],p([
|
|
1677
|
+
`],p([g({attribute:!1})],U.prototype,"data",2),p([g({type:String,reflect:!0})],U.prototype,"mode",2),U=p([f("roxy-hexagram")],U);var Y=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??"",a=r?N[A(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
1678
|
class="card"
|
|
1667
1679
|
aria-label=${`${this.period} horoscope for ${r}`}
|
|
1668
1680
|
>
|
|
1669
1681
|
<header class="head">
|
|
1670
|
-
<span class="glyph" aria-hidden="true">${
|
|
1682
|
+
<span class="glyph" aria-hidden="true">${a}</span>
|
|
1671
1683
|
<div>
|
|
1672
1684
|
<h2 class="title">${r} ${this.period}</h2>
|
|
1673
1685
|
${l?t`<div class="date">${l}</div>`:n}
|
|
@@ -1705,24 +1717,24 @@
|
|
|
1705
1717
|
</div>`:n}
|
|
1706
1718
|
</div>
|
|
1707
1719
|
|
|
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:[],
|
|
1720
|
+
${(()=>{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:[],y="luckyDays"in e&&e.luckyDays?e.luckyDays:[],h=e.compatibleSigns??[];return d===void 0&&!c&&m.length===0&&y.length===0&&h.length===0?n:t`<div class="lucky">
|
|
1709
1721
|
${d!==void 0?t`<span>Lucky number <strong>${d}</strong></span>`:n}
|
|
1710
1722
|
${c?t`<span>Lucky color <strong>${c}</strong></span>`:n}
|
|
1711
1723
|
${m.length?t`<span
|
|
1712
1724
|
>Lucky numbers
|
|
1713
1725
|
<strong>${m.join(", ")}</strong></span
|
|
1714
1726
|
>`:n}
|
|
1715
|
-
${
|
|
1716
|
-
>Lucky days <strong>${
|
|
1727
|
+
${y.length?t`<span
|
|
1728
|
+
>Lucky days <strong>${y.join(", ")}</strong></span
|
|
1717
1729
|
>`:n}
|
|
1718
|
-
${
|
|
1730
|
+
${h.length?t`<span class="compat-wrap">
|
|
1719
1731
|
Best with
|
|
1720
1732
|
<span class="compat"
|
|
1721
|
-
>${
|
|
1733
|
+
>${h.map(b=>t`<span>${b}</span>`)}</span
|
|
1722
1734
|
>
|
|
1723
1735
|
</span>`:n}
|
|
1724
1736
|
</div>`})()}
|
|
1725
|
-
</article>`}};
|
|
1737
|
+
</article>`}};Y.styles=[v,x`
|
|
1726
1738
|
.card {
|
|
1727
1739
|
background: var(--roxy-bg, #fff);
|
|
1728
1740
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -1844,7 +1856,186 @@
|
|
|
1844
1856
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
1845
1857
|
text-transform: capitalize;
|
|
1846
1858
|
}
|
|
1847
|
-
`],p([
|
|
1859
|
+
`],p([g({attribute:!1})],Y.prototype,"data",2),p([g({type:String,reflect:!0})],Y.prototype,"period",2),Y=p([f("roxy-horoscope-card")],Y);var F=class extends u{constructor(){super(...arguments);this.data=null;this.activeTab="planets"}bodies(){let e=this.data;if(!e)return[];let r=(e.planets??[]).map(o=>({name:o.planet,sign:o.sign,house:o.house,nakshatra:o.nakshatra,starLord:o.starLord,subLord:o.subLord,subSubLord:o.subSubLord,kpNumber:o.kpNumber,retrograde:o.retrograde})),a=e.nodes;for(let[o,l]of[["Rahu",a?.rahu],["Ketu",a?.ketu]])l&&r.push({name:o,sign:l.sign,house:l.house,nakshatra:l.nakshatra,starLord:l.starLord,subLord:l.subLord,subSubLord:l.subSubLord,retrograde:!0});return r}onTabKeyDown(e){if(e.key!=="ArrowRight"&&e.key!=="ArrowLeft")return;e.preventDefault(),this.activeTab=this.activeTab==="planets"?"cusps":"planets";let r=this.activeTab;requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${r}`)?.focus()})}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No KP chart data</div>`;let e=this.data,r=e.ascendant;return t`<div class="wrap" aria-label="KP chart" tabindex="0">
|
|
1860
|
+
<header class="head">
|
|
1861
|
+
<h2 class="title">KP chart</h2>
|
|
1862
|
+
${r?t`<div class="asc">
|
|
1863
|
+
Ascendant: <strong>${r.sign??""}</strong>
|
|
1864
|
+
${r.nakshatra?t`· ${r.nakshatra}`:n}
|
|
1865
|
+
${r.subLord?t`· sub lord ${r.subLord}`:n}
|
|
1866
|
+
${typeof r.kpNumber=="number"?t`· KP ${r.kpNumber}`:n}
|
|
1867
|
+
</div>`:n}
|
|
1868
|
+
${typeof e.meta?.ayanamsa=="number"?t`<div class="ayan">
|
|
1869
|
+
${e.meta.ayanamsaType??"Ayanamsa"}: ${w(e.meta.ayanamsa,4)}°
|
|
1870
|
+
${e.meta.houseSystem?t`· ${e.meta.houseSystem} houses`:n}
|
|
1871
|
+
</div>`:n}
|
|
1872
|
+
</header>
|
|
1873
|
+
|
|
1874
|
+
<div
|
|
1875
|
+
class="tablist"
|
|
1876
|
+
role="tablist"
|
|
1877
|
+
aria-label="KP chart views"
|
|
1878
|
+
@keydown=${this.onTabKeyDown}
|
|
1879
|
+
>
|
|
1880
|
+
${["planets","cusps"].map(a=>t`<button
|
|
1881
|
+
class="tab"
|
|
1882
|
+
role="tab"
|
|
1883
|
+
id="tab-${a}"
|
|
1884
|
+
aria-selected=${this.activeTab===a?"true":"false"}
|
|
1885
|
+
aria-controls="panel-${a}"
|
|
1886
|
+
tabindex=${this.activeTab===a?"0":"-1"}
|
|
1887
|
+
@click=${()=>{this.activeTab=a}}
|
|
1888
|
+
>
|
|
1889
|
+
${a==="planets"?"Planets":"Cusps"}
|
|
1890
|
+
</button>`)}
|
|
1891
|
+
</div>
|
|
1892
|
+
|
|
1893
|
+
<div id="panel-${this.activeTab}" role="tabpanel" aria-labelledby="tab-${this.activeTab}">
|
|
1894
|
+
${this.activeTab==="planets"?this.renderPlanets():this.renderCusps()}
|
|
1895
|
+
</div>
|
|
1896
|
+
</div>`}renderPlanets(){let e=this.bodies();return e.length?t`<table role="table" aria-label="KP planets and nodes">
|
|
1897
|
+
<thead>
|
|
1898
|
+
<tr>
|
|
1899
|
+
<th scope="col">Body</th>
|
|
1900
|
+
<th scope="col">Sign</th>
|
|
1901
|
+
<th scope="col">House</th>
|
|
1902
|
+
<th scope="col">Nakshatra</th>
|
|
1903
|
+
<th scope="col">Star lord</th>
|
|
1904
|
+
<th scope="col">Sub lord</th>
|
|
1905
|
+
<th scope="col">Sub sub lord</th>
|
|
1906
|
+
<th scope="col">KP no.</th>
|
|
1907
|
+
</tr>
|
|
1908
|
+
</thead>
|
|
1909
|
+
<tbody>
|
|
1910
|
+
${e.map(r=>t`<tr>
|
|
1911
|
+
<td class="body">
|
|
1912
|
+
${r.name}${r.retrograde?t`<span class="retro">R</span>`:n}
|
|
1913
|
+
</td>
|
|
1914
|
+
<td>${r.sign??""}</td>
|
|
1915
|
+
<td class="num">${typeof r.house=="number"?r.house:""}</td>
|
|
1916
|
+
<td>${r.nakshatra??""}</td>
|
|
1917
|
+
<td>${r.starLord??""}</td>
|
|
1918
|
+
<td>${r.subLord??""}</td>
|
|
1919
|
+
<td>${r.subSubLord??""}</td>
|
|
1920
|
+
<td class="num">${typeof r.kpNumber=="number"?r.kpNumber:""}</td>
|
|
1921
|
+
</tr>`)}
|
|
1922
|
+
</tbody>
|
|
1923
|
+
</table>`:t`<p class="roxy-empty" role="status">No planets</p>`}renderCusps(){let e=this.data?.cusps??[];return e.length?t`<table role="table" aria-label="KP Placidus cusps">
|
|
1924
|
+
<thead>
|
|
1925
|
+
<tr>
|
|
1926
|
+
<th scope="col">House</th>
|
|
1927
|
+
<th scope="col">Sign</th>
|
|
1928
|
+
<th scope="col">Sign lord</th>
|
|
1929
|
+
<th scope="col">Nakshatra</th>
|
|
1930
|
+
<th scope="col">Star lord</th>
|
|
1931
|
+
<th scope="col">Sub lord</th>
|
|
1932
|
+
<th scope="col">Sub sub lord</th>
|
|
1933
|
+
<th scope="col">KP no.</th>
|
|
1934
|
+
</tr>
|
|
1935
|
+
</thead>
|
|
1936
|
+
<tbody>
|
|
1937
|
+
${e.map(r=>t`<tr>
|
|
1938
|
+
<td class="body num">${r.house}</td>
|
|
1939
|
+
<td>${r.sign??""}</td>
|
|
1940
|
+
<td>${r.signLord??""}</td>
|
|
1941
|
+
<td>${r.nakshatra??""}</td>
|
|
1942
|
+
<td>${r.starLord??""}</td>
|
|
1943
|
+
<td>${r.subLord??""}</td>
|
|
1944
|
+
<td>${r.subSubLord??""}</td>
|
|
1945
|
+
<td class="num">${typeof r.kpNumber=="number"?r.kpNumber:""}</td>
|
|
1946
|
+
</tr>`)}
|
|
1947
|
+
</tbody>
|
|
1948
|
+
</table>`:t`<p class="roxy-empty" role="status">No cusps</p>`}};F.styles=[v,x`
|
|
1949
|
+
.wrap {
|
|
1950
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
1951
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
1952
|
+
background: var(--roxy-bg, #fff);
|
|
1953
|
+
overflow: auto;
|
|
1954
|
+
box-shadow: var(--roxy-shadow-sm);
|
|
1955
|
+
}
|
|
1956
|
+
.head {
|
|
1957
|
+
padding: var(--roxy-space-md, 1rem);
|
|
1958
|
+
border-bottom: 1px solid var(--roxy-border, #e4e4e7);
|
|
1959
|
+
display: grid;
|
|
1960
|
+
gap: var(--roxy-space-xs, 0.25rem);
|
|
1961
|
+
}
|
|
1962
|
+
.title {
|
|
1963
|
+
margin: 0;
|
|
1964
|
+
font-size: var(--roxy-text-lg, 1.125rem);
|
|
1965
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
1966
|
+
}
|
|
1967
|
+
.asc,
|
|
1968
|
+
.ayan {
|
|
1969
|
+
color: var(--roxy-muted, #71717a);
|
|
1970
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1971
|
+
}
|
|
1972
|
+
.asc strong {
|
|
1973
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
1974
|
+
}
|
|
1975
|
+
.tablist {
|
|
1976
|
+
display: flex;
|
|
1977
|
+
gap: 2px;
|
|
1978
|
+
padding: 0 var(--roxy-space-md, 1rem);
|
|
1979
|
+
border-bottom: 2px solid var(--roxy-border, #e4e4e7);
|
|
1980
|
+
}
|
|
1981
|
+
.tab {
|
|
1982
|
+
padding: var(--roxy-space-xs, 0.25rem) var(--roxy-space-md, 1rem);
|
|
1983
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
1984
|
+
background: none;
|
|
1985
|
+
border: none;
|
|
1986
|
+
border-bottom: 2px solid transparent;
|
|
1987
|
+
margin-bottom: -2px;
|
|
1988
|
+
cursor: pointer;
|
|
1989
|
+
color: var(--roxy-muted, #71717a);
|
|
1990
|
+
font-family: inherit;
|
|
1991
|
+
}
|
|
1992
|
+
.tab[aria-selected='true'] {
|
|
1993
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
1994
|
+
border-bottom-color: var(--roxy-accent, #f59e0b);
|
|
1995
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
1996
|
+
}
|
|
1997
|
+
.tab:hover:not([aria-selected='true']) {
|
|
1998
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
1999
|
+
}
|
|
2000
|
+
table {
|
|
2001
|
+
width: 100%;
|
|
2002
|
+
border-collapse: collapse;
|
|
2003
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2004
|
+
min-width: 620px;
|
|
2005
|
+
}
|
|
2006
|
+
thead {
|
|
2007
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 20%, transparent);
|
|
2008
|
+
}
|
|
2009
|
+
th,
|
|
2010
|
+
td {
|
|
2011
|
+
padding: var(--roxy-space-sm, 0.5rem) var(--roxy-space-md, 1rem);
|
|
2012
|
+
text-align: left;
|
|
2013
|
+
white-space: nowrap;
|
|
2014
|
+
}
|
|
2015
|
+
th {
|
|
2016
|
+
color: var(--roxy-muted, #71717a);
|
|
2017
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2018
|
+
text-transform: uppercase;
|
|
2019
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2020
|
+
letter-spacing: 0.04em;
|
|
2021
|
+
}
|
|
2022
|
+
tbody tr {
|
|
2023
|
+
border-top: 1px solid var(--roxy-border, #e4e4e7);
|
|
2024
|
+
}
|
|
2025
|
+
td.body {
|
|
2026
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2027
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2028
|
+
}
|
|
2029
|
+
.retro {
|
|
2030
|
+
color: var(--roxy-warning-fg, #9a3412);
|
|
2031
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2032
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2033
|
+
margin-left: 4px;
|
|
2034
|
+
}
|
|
2035
|
+
.num {
|
|
2036
|
+
font-variant-numeric: tabular-nums;
|
|
2037
|
+
}
|
|
2038
|
+
`],p([g({attribute:!1})],F.prototype,"data",2),p([C()],F.prototype,"activeTab",2),F=p([f("roxy-kp-chart")],F);var ie=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
2039
|
class="wrap"
|
|
1849
2040
|
aria-label="KP planets table"
|
|
1850
2041
|
tabindex="0"
|
|
@@ -1882,7 +2073,7 @@
|
|
|
1882
2073
|
</tr>`)}
|
|
1883
2074
|
</tbody>
|
|
1884
2075
|
</table>
|
|
1885
|
-
</div>`}};
|
|
2076
|
+
</div>`}};ie.styles=[v,x`
|
|
1886
2077
|
.wrap {
|
|
1887
2078
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
1888
2079
|
border-radius: var(--roxy-radius-md, 8px);
|
|
@@ -1941,12 +2132,155 @@
|
|
|
1941
2132
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
1942
2133
|
margin-left: 4px;
|
|
1943
2134
|
}
|
|
1944
|
-
`],p([
|
|
2135
|
+
`],p([g({attribute:!1})],ie.prototype,"data",2),ie=p([f("roxy-kp-planets-table")],ie);var ne=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No ruling planets data</div>`;let e=this.data,r=e.significators??[];return t`<div class="wrap" aria-label="KP ruling planets">
|
|
2136
|
+
<header>
|
|
2137
|
+
<h2 class="title">KP ruling planets</h2>
|
|
2138
|
+
${e.dayLord?t`<div class="day-lord">Day lord: <strong>${e.dayLord}</strong></div>`:n}
|
|
2139
|
+
</header>
|
|
2140
|
+
|
|
2141
|
+
<div class="groups">
|
|
2142
|
+
<div class="group">
|
|
2143
|
+
<h3>Moon</h3>
|
|
2144
|
+
<dl>
|
|
2145
|
+
<dt>Sign lord</dt><dd>${e.moonSignLord??""}</dd>
|
|
2146
|
+
<dt>Star lord</dt><dd>${e.moonStarLord??""}</dd>
|
|
2147
|
+
<dt>Sub lord</dt><dd>${e.moonSublord??""}</dd>
|
|
2148
|
+
<dt>Sub-sub lord</dt><dd>${e.moonSubSublord??""}</dd>
|
|
2149
|
+
</dl>
|
|
2150
|
+
</div>
|
|
2151
|
+
<div class="group">
|
|
2152
|
+
<h3>Lagna</h3>
|
|
2153
|
+
<dl>
|
|
2154
|
+
<dt>Sign lord</dt><dd>${e.lagnaSignLord??""}</dd>
|
|
2155
|
+
<dt>Star lord</dt><dd>${e.lagnaStarLord??""}</dd>
|
|
2156
|
+
<dt>Sub lord</dt><dd>${e.lagnaSublord??""}</dd>
|
|
2157
|
+
<dt>Sub-sub lord</dt><dd>${e.lagnaSubSublord??""}</dd>
|
|
2158
|
+
</dl>
|
|
2159
|
+
</div>
|
|
2160
|
+
</div>
|
|
2161
|
+
|
|
2162
|
+
${e.rulingPlanets?.length?t`<div class="rp-list" role="list" aria-label="Ruling planets by strength">
|
|
2163
|
+
<span class="rp-label">Ruling planets</span>
|
|
2164
|
+
${e.rulingPlanets.map((a,o)=>t`<span class="rp" role="listitem"><span class="rank">${o+1}</span> ${a}</span>`)}
|
|
2165
|
+
</div>`:n}
|
|
2166
|
+
|
|
2167
|
+
${r.length?t`<table aria-label="House significators">
|
|
2168
|
+
<thead>
|
|
2169
|
+
<tr>
|
|
2170
|
+
<th scope="col">Planet</th>
|
|
2171
|
+
<th scope="col">Signifies houses</th>
|
|
2172
|
+
</tr>
|
|
2173
|
+
</thead>
|
|
2174
|
+
<tbody>
|
|
2175
|
+
${r.map(a=>t`<tr>
|
|
2176
|
+
<td>${a.planet}</td>
|
|
2177
|
+
<td>${(a.signifies??[]).join(", ")}</td>
|
|
2178
|
+
</tr>`)}
|
|
2179
|
+
</tbody>
|
|
2180
|
+
</table>`:n}
|
|
2181
|
+
</div>`}};ne.styles=[v,x`
|
|
2182
|
+
.wrap {
|
|
2183
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
2184
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
2185
|
+
background: var(--roxy-bg, #fff);
|
|
2186
|
+
padding: var(--roxy-space-md, 1rem);
|
|
2187
|
+
display: grid;
|
|
2188
|
+
gap: var(--roxy-space-md, 1rem);
|
|
2189
|
+
box-shadow: var(--roxy-shadow-sm);
|
|
2190
|
+
}
|
|
2191
|
+
.title {
|
|
2192
|
+
margin: 0;
|
|
2193
|
+
font-size: var(--roxy-text-lg, 1.125rem);
|
|
2194
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2195
|
+
}
|
|
2196
|
+
.day-lord {
|
|
2197
|
+
color: var(--roxy-muted, #71717a);
|
|
2198
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2199
|
+
}
|
|
2200
|
+
.day-lord strong {
|
|
2201
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2202
|
+
}
|
|
2203
|
+
.groups {
|
|
2204
|
+
display: grid;
|
|
2205
|
+
grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
|
|
2206
|
+
gap: var(--roxy-space-md, 1rem);
|
|
2207
|
+
}
|
|
2208
|
+
.group h3 {
|
|
2209
|
+
margin: 0 0 var(--roxy-space-xs, 0.25rem);
|
|
2210
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2211
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2212
|
+
color: var(--roxy-muted, #71717a);
|
|
2213
|
+
text-transform: uppercase;
|
|
2214
|
+
letter-spacing: 0.05em;
|
|
2215
|
+
}
|
|
2216
|
+
.group dl {
|
|
2217
|
+
margin: 0;
|
|
2218
|
+
display: grid;
|
|
2219
|
+
grid-template-columns: auto 1fr;
|
|
2220
|
+
gap: 2px var(--roxy-space-sm, 0.5rem);
|
|
2221
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2222
|
+
}
|
|
2223
|
+
.group dt {
|
|
2224
|
+
color: var(--roxy-muted, #71717a);
|
|
2225
|
+
}
|
|
2226
|
+
.group dd {
|
|
2227
|
+
margin: 0;
|
|
2228
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2229
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2230
|
+
}
|
|
2231
|
+
.rp-list {
|
|
2232
|
+
display: flex;
|
|
2233
|
+
flex-wrap: wrap;
|
|
2234
|
+
gap: var(--roxy-space-xs, 0.25rem);
|
|
2235
|
+
align-items: center;
|
|
2236
|
+
}
|
|
2237
|
+
.rp-label {
|
|
2238
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2239
|
+
color: var(--roxy-muted, #71717a);
|
|
2240
|
+
text-transform: uppercase;
|
|
2241
|
+
letter-spacing: 0.05em;
|
|
2242
|
+
margin-right: var(--roxy-space-xs, 0.25rem);
|
|
2243
|
+
}
|
|
2244
|
+
.rp {
|
|
2245
|
+
display: inline-flex;
|
|
2246
|
+
align-items: center;
|
|
2247
|
+
gap: 0.3em;
|
|
2248
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2249
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2250
|
+
padding: 0.15em 0.6em;
|
|
2251
|
+
border-radius: 999px;
|
|
2252
|
+
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 18%, transparent);
|
|
2253
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2254
|
+
}
|
|
2255
|
+
.rp .rank {
|
|
2256
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2257
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
2258
|
+
}
|
|
2259
|
+
table {
|
|
2260
|
+
width: 100%;
|
|
2261
|
+
border-collapse: collapse;
|
|
2262
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2263
|
+
}
|
|
2264
|
+
th,
|
|
2265
|
+
td {
|
|
2266
|
+
padding: var(--roxy-space-xs, 0.25rem) var(--roxy-space-sm, 0.5rem);
|
|
2267
|
+
text-align: left;
|
|
2268
|
+
border-bottom: 1px solid var(--roxy-border, #e4e4e7);
|
|
2269
|
+
}
|
|
2270
|
+
th {
|
|
2271
|
+
color: var(--roxy-muted, #71717a);
|
|
2272
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2273
|
+
text-transform: uppercase;
|
|
2274
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2275
|
+
letter-spacing: 0.04em;
|
|
2276
|
+
}
|
|
2277
|
+
`],p([g({attribute:!1})],ne.prototype,"data",2),ne=p([f("roxy-kp-ruling-planets")],ne);function Vr(i,s){let e,r=((...a)=>{e&&clearTimeout(e),e=setTimeout(()=>{e=void 0,i(...a)},s)});return r.cancel=()=>{e&&(clearTimeout(e),e=void 0)},r}var R=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=Vr(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 a=new URL(this.endpoint);a.searchParams.set("q",e),a.searchParams.set("limit","8");let o={Accept:"application/json"};this.apiKey&&this.publishableKey&&console.warn("[roxy-location-search] both api-key and publishable-key set; using publishable-key. Remove api-key from your widget markup.");let l=this.publishableKey??this.apiKey;l&&(o["X-API-Key"]=l);let d=await fetch(a,{headers:o,signal:r.signal});if(!d.ok)throw new Error(`HTTP ${d.status}`);let c=await d.json();if(r.signal.aborted)return;this.results=c.cities??[],this.isOpen=this.results.length>0,this.highlight=this.results.length>0?0:-1}catch(a){if(a?.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
2278
|
<input
|
|
1946
2279
|
type="text"
|
|
1947
2280
|
role="combobox"
|
|
1948
2281
|
aria-expanded=${this.isOpen?"true":"false"}
|
|
1949
2282
|
aria-controls="roxy-location-listbox"
|
|
2283
|
+
aria-activedescendant=${this.isOpen&&this.highlight>=0?`roxy-location-option-${this.highlight}`:""}
|
|
1950
2284
|
aria-autocomplete="list"
|
|
1951
2285
|
autocomplete="off"
|
|
1952
2286
|
placeholder=${this.placeholder}
|
|
@@ -1966,6 +2300,7 @@
|
|
|
1966
2300
|
type="button"
|
|
1967
2301
|
class="option"
|
|
1968
2302
|
role="option"
|
|
2303
|
+
id=${`roxy-location-option-${r}`}
|
|
1969
2304
|
aria-selected=${this.highlight===r?"true":"false"}
|
|
1970
2305
|
@click=${()=>this.select(e)}
|
|
1971
2306
|
@mouseenter=${()=>{this.highlight=r}}
|
|
@@ -1980,7 +2315,7 @@
|
|
|
1980
2315
|
</button>
|
|
1981
2316
|
</li>`)}
|
|
1982
2317
|
</ul>`:n}
|
|
1983
|
-
</div>`}};
|
|
2318
|
+
</div>`}};R.styles=[v,x`
|
|
1984
2319
|
:host {
|
|
1985
2320
|
display: block;
|
|
1986
2321
|
position: relative;
|
|
@@ -2081,15 +2416,15 @@
|
|
|
2081
2416
|
color: var(--roxy-muted, #71717a);
|
|
2082
2417
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2083
2418
|
}
|
|
2084
|
-
`],p([
|
|
2419
|
+
`],p([g({type:String,attribute:"api-key"})],R.prototype,"apiKey",2),p([g({type:String,attribute:"publishable-key"})],R.prototype,"publishableKey",2),p([g({type:String})],R.prototype,"endpoint",2),p([g({type:String})],R.prototype,"placeholder",2),p([g({type:String,attribute:"default-value"})],R.prototype,"defaultValue",2),p([C()],R.prototype,"query",2),p([C()],R.prototype,"results",2),p([C()],R.prototype,"isOpen",2),p([C()],R.prototype,"isLoading",2),p([C()],R.prototype,"highlight",2),R=p([f("roxy-location-search")],R);var V=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 a="month"in e?e.month:void 0,o="year"in e?e.year:void 0;return t`<article
|
|
2085
2420
|
class="card"
|
|
2086
2421
|
aria-label="Moon phase calendar"
|
|
2087
2422
|
>
|
|
2088
|
-
<h2 class="label">${
|
|
2423
|
+
<h2 class="label">${a??"Moon phases"} ${o??""}</h2>
|
|
2089
2424
|
<div class="list" role="list">
|
|
2090
2425
|
${r.map(l=>this.renderListItem(l))}
|
|
2091
2426
|
</div>
|
|
2092
|
-
</article>`}return"phase"in e?this.renderSingle(e):n}renderSingle(e){let r=
|
|
2427
|
+
</article>`}return"phase"in e?this.renderSingle(e):n}renderSingle(e){let r=Wr(e.phase);return t`<article class="card" aria-label="Current moon phase">
|
|
2093
2428
|
<div class="hero">
|
|
2094
2429
|
<span class="emoji" aria-hidden="true">${r}</span>
|
|
2095
2430
|
<div>
|
|
@@ -2100,7 +2435,7 @@
|
|
|
2100
2435
|
<div class="stats">
|
|
2101
2436
|
${typeof e.illumination=="number"?t`<div>
|
|
2102
2437
|
<span>Illumination</span>
|
|
2103
|
-
<strong>${
|
|
2438
|
+
<strong>${Dt(e.illumination)}</strong>
|
|
2104
2439
|
</div>`:n}
|
|
2105
2440
|
${typeof e.age=="number"?t`<div>
|
|
2106
2441
|
<span>Age</span>
|
|
@@ -2117,13 +2452,13 @@
|
|
|
2117
2452
|
</div>
|
|
2118
2453
|
${e.meaning?.description?t`<p class="meaning">${e.meaning.description}</p>`:n}
|
|
2119
2454
|
${e.meaning?.keywords?.length?t`<div class="keywords">
|
|
2120
|
-
${e.meaning.keywords.map(
|
|
2455
|
+
${e.meaning.keywords.map(a=>t`<span>${a}</span>`)}
|
|
2121
2456
|
</div>`:n}
|
|
2122
|
-
</article>`}renderListItem(e){let r=
|
|
2457
|
+
</article>`}renderListItem(e){let r=Wr(e.phase);return t`<div class="list-item" role="listitem">
|
|
2123
2458
|
<span aria-hidden="true">${r}</span>
|
|
2124
2459
|
<span>${e.phase}</span>
|
|
2125
2460
|
<span>${e.date??""}</span>
|
|
2126
|
-
</div>`}};
|
|
2461
|
+
</div>`}};V.styles=[v,x`
|
|
2127
2462
|
.card {
|
|
2128
2463
|
background: var(--roxy-bg, #fff);
|
|
2129
2464
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -2205,96 +2540,227 @@
|
|
|
2205
2540
|
.list-item:last-child {
|
|
2206
2541
|
border-bottom: none;
|
|
2207
2542
|
}
|
|
2208
|
-
`],p([
|
|
2209
|
-
<header>
|
|
2210
|
-
<h2 class="
|
|
2211
|
-
${
|
|
2212
|
-
|
|
2213
|
-
</div>`:n}
|
|
2543
|
+
`],p([g({attribute:!1})],V.prototype,"data",2),p([g({type:String,reflect:!0})],V.prototype,"mode",2),V=p([f("roxy-moon-phase")],V);function Wr(i){return i?Br[i.toLowerCase()]??"\u{1F319}":"\u{1F319}"}function Dt(i){let s=i<=1?i*100:i;return`${Math.round(s)}%`}var le=class extends u{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No nakshatra data</div>`;let e=this.data,r=e.remedies;return t`<article class="wrap" aria-label=${`Nakshatra ${e.name}`}>
|
|
2544
|
+
<header class="head">
|
|
2545
|
+
<h2 class="name">${e.name}</h2>
|
|
2546
|
+
${typeof e.number=="number"?t`<span class="number">Nakshatra ${e.number} of 27</span>`:n}
|
|
2547
|
+
${e.range?t`<span class="range">${e.range}</span>`:n}
|
|
2214
2548
|
</header>
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
<circle
|
|
2226
|
-
class="wheel-line"
|
|
2227
|
-
cx=${A}
|
|
2228
|
-
cy=${A}
|
|
2229
|
-
r=${or}
|
|
2230
|
-
stroke-width="1.5"
|
|
2231
|
-
/>
|
|
2232
|
-
<circle
|
|
2233
|
-
class="wheel-line"
|
|
2234
|
-
cx=${A}
|
|
2235
|
-
cy=${A}
|
|
2236
|
-
r=${ir}
|
|
2237
|
-
stroke-width="1"
|
|
2238
|
-
/>
|
|
2239
|
-
<circle
|
|
2240
|
-
class="wheel-line"
|
|
2241
|
-
cx=${A}
|
|
2242
|
-
cy=${A}
|
|
2243
|
-
r=${je-16}
|
|
2244
|
-
stroke-width="0.5"
|
|
2245
|
-
/>
|
|
2246
|
-
${this.renderSpokes()} ${this.renderSigns()} ${this.renderHouseNumbers()}
|
|
2247
|
-
${this.renderAspects(e,r)} ${this.renderPlanets(e)}
|
|
2248
|
-
${this.renderAngles()}
|
|
2249
|
-
</svg>
|
|
2250
|
-
<div class="legend">
|
|
2251
|
-
<span>${e.length} planets</span>
|
|
2252
|
-
<span>${r.length} aspects</span>
|
|
2253
|
-
<span><span class="legend-swatch" style="background: var(--roxy-success)"></span>harmonious</span>
|
|
2254
|
-
<span><span class="legend-swatch" style="background: var(--roxy-danger)"></span>challenging</span>
|
|
2255
|
-
</div>
|
|
2256
|
-
${this.renderDetails()}
|
|
2257
|
-
${this.renderInterpretations()}
|
|
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
|
-
<g>
|
|
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">${r}</text>
|
|
2262
|
-
</g>
|
|
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}
|
|
2549
|
+
|
|
2550
|
+
<dl class="facts">
|
|
2551
|
+
${e.lord?t`<div class="fact"><dt>Lord</dt><dd>${e.lord}</dd></div>`:n}
|
|
2552
|
+
${e.deity?t`<div class="fact"><dt>Deity</dt><dd>${e.deity}</dd></div>`:n}
|
|
2553
|
+
${e.symbol?t`<div class="fact"><dt>Symbol</dt><dd>${e.symbol}</dd></div>`:n}
|
|
2554
|
+
</dl>
|
|
2555
|
+
|
|
2556
|
+
${e.characteristics?t`<div class="section">
|
|
2557
|
+
<h3>Characteristics</h3>
|
|
2558
|
+
<p>${e.characteristics}</p>
|
|
2267
2559
|
</div>`:n}
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
<
|
|
2560
|
+
|
|
2561
|
+
${r?t`<div class="section">
|
|
2562
|
+
<h3>Remedies</h3>
|
|
2563
|
+
<div class="remedies">
|
|
2564
|
+
${r.mantras?t`<div class="remedy"><strong>Mantras:</strong> ${r.mantras}</div>`:n}
|
|
2565
|
+
${r.gemstones?t`<div class="remedy"><strong>Gemstones:</strong> ${r.gemstones}</div>`:n}
|
|
2566
|
+
${r.rituals?t`<div class="remedy"><strong>Rituals:</strong> ${r.rituals}</div>`:n}
|
|
2567
|
+
</div>
|
|
2568
|
+
</div>`:n}
|
|
2569
|
+
</article>`}};le.styles=[v,x`
|
|
2570
|
+
.wrap {
|
|
2571
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
2572
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
2573
|
+
background: var(--roxy-bg, #fff);
|
|
2574
|
+
padding: var(--roxy-space-md, 1rem);
|
|
2575
|
+
display: grid;
|
|
2576
|
+
gap: var(--roxy-space-md, 1rem);
|
|
2577
|
+
box-shadow: var(--roxy-shadow-sm);
|
|
2578
|
+
}
|
|
2579
|
+
.head {
|
|
2580
|
+
display: flex;
|
|
2581
|
+
align-items: baseline;
|
|
2582
|
+
gap: var(--roxy-space-sm, 0.5rem);
|
|
2583
|
+
flex-wrap: wrap;
|
|
2584
|
+
}
|
|
2585
|
+
.name {
|
|
2586
|
+
margin: 0;
|
|
2587
|
+
font-size: var(--roxy-text-lg, 1.125rem);
|
|
2588
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2589
|
+
}
|
|
2590
|
+
.number {
|
|
2591
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
2592
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2593
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2594
|
+
}
|
|
2595
|
+
.range {
|
|
2596
|
+
color: var(--roxy-muted, #71717a);
|
|
2597
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2598
|
+
}
|
|
2599
|
+
.facts {
|
|
2600
|
+
display: grid;
|
|
2601
|
+
grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
|
|
2602
|
+
gap: var(--roxy-space-sm, 0.5rem);
|
|
2603
|
+
}
|
|
2604
|
+
.fact {
|
|
2605
|
+
display: grid;
|
|
2606
|
+
gap: 2px;
|
|
2607
|
+
}
|
|
2608
|
+
.fact dt {
|
|
2609
|
+
color: var(--roxy-muted, #71717a);
|
|
2610
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2611
|
+
text-transform: uppercase;
|
|
2612
|
+
letter-spacing: 0.05em;
|
|
2613
|
+
}
|
|
2614
|
+
.fact dd {
|
|
2615
|
+
margin: 0;
|
|
2616
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2617
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2618
|
+
}
|
|
2619
|
+
.section h3 {
|
|
2620
|
+
margin: 0 0 var(--roxy-space-xs, 0.25rem);
|
|
2621
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2622
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2623
|
+
color: var(--roxy-muted, #71717a);
|
|
2624
|
+
text-transform: uppercase;
|
|
2625
|
+
letter-spacing: 0.05em;
|
|
2626
|
+
}
|
|
2627
|
+
.section p {
|
|
2628
|
+
margin: 0;
|
|
2629
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2630
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2631
|
+
line-height: 1.5;
|
|
2632
|
+
}
|
|
2633
|
+
.remedies {
|
|
2634
|
+
display: grid;
|
|
2635
|
+
gap: var(--roxy-space-xs, 0.25rem);
|
|
2636
|
+
}
|
|
2637
|
+
.remedy {
|
|
2638
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2639
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2640
|
+
}
|
|
2641
|
+
.remedy strong {
|
|
2642
|
+
color: var(--roxy-muted, #71717a);
|
|
2643
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2644
|
+
}
|
|
2645
|
+
`],p([g({attribute:!1})],le.prototype,"data",2),le=p([f("roxy-nakshatra-card")],le);var vr=420,k=vr/2,ze=164,fr=146,Ne=120,_e=96,Ot=178,Ht=196,M=class extends u{constructor(){super(...arguments);this.data=null;this.houseSystem="placidus";this.view="wheel"}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??[],a=this.view;return t`<div class="wrap">
|
|
2646
|
+
<header>
|
|
2647
|
+
<h2 class="title">Natal chart</h2>
|
|
2648
|
+
${this.data.birthDetails?t`<div class="meta">
|
|
2649
|
+
${[this.data.birthDetails.date,this.data.birthDetails.time].filter(Boolean).join(" \xB7 ")}
|
|
2650
|
+
</div>`:n}
|
|
2651
|
+
</header>
|
|
2652
|
+
<div
|
|
2653
|
+
class="tablist"
|
|
2654
|
+
role="tablist"
|
|
2655
|
+
aria-label="Natal chart views"
|
|
2656
|
+
@keydown=${this.onTabKeyDown}
|
|
2657
|
+
>
|
|
2658
|
+
${["wheel","grid"].map(o=>t`<button
|
|
2659
|
+
class="tab"
|
|
2660
|
+
role="tab"
|
|
2661
|
+
id="tab-${o}"
|
|
2662
|
+
aria-selected=${a===o?"true":"false"}
|
|
2663
|
+
aria-controls="panel-${o}"
|
|
2664
|
+
tabindex=${a===o?"0":"-1"}
|
|
2665
|
+
@click=${()=>{this.view=o}}
|
|
2666
|
+
>
|
|
2667
|
+
${o==="wheel"?"Wheel":"Aspect grid"}
|
|
2668
|
+
</button>`)}
|
|
2669
|
+
</div>
|
|
2670
|
+
<div id="panel-${a}" role="tabpanel" aria-labelledby="tab-${a}">
|
|
2671
|
+
${a==="wheel"?this.renderWheel(e,r):this.renderAspectGrid(e,r)}
|
|
2672
|
+
</div>
|
|
2673
|
+
<div class="legend">
|
|
2674
|
+
<span>${e.length} planets</span>
|
|
2675
|
+
<span>${r.length} aspects</span>
|
|
2676
|
+
${this.data.houseSystem?t`<span>${this.data.houseSystem} houses</span>`:n}
|
|
2677
|
+
<span><span class="legend-swatch" style="background: var(--roxy-success)"></span>harmonious</span>
|
|
2678
|
+
<span><span class="legend-swatch" style="background: var(--roxy-danger)"></span>challenging</span>
|
|
2679
|
+
</div>
|
|
2680
|
+
${this.renderDetails()}
|
|
2681
|
+
${this.renderInterpretations()}
|
|
2682
|
+
</div>`}onTabKeyDown(e){if(e.key!=="ArrowRight"&&e.key!=="ArrowLeft")return;e.preventDefault(),this.view=this.view==="wheel"?"grid":"wheel";let r=this.view;requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${r}`)?.focus()})}renderWheel(e,r){return t`<svg
|
|
2683
|
+
viewBox="0 0 ${vr} ${vr}"
|
|
2684
|
+
role="img"
|
|
2685
|
+
aria-label="Natal chart wheel with twelve houses, planets, and aspects"
|
|
2686
|
+
>
|
|
2687
|
+
<title>Natal chart wheel</title>
|
|
2688
|
+
<desc>
|
|
2689
|
+
Twelve zodiac sign segments around a circular wheel. Planet glyphs are
|
|
2690
|
+
placed at their ecliptic longitudes. Aspect lines connect related planets.
|
|
2691
|
+
</desc>
|
|
2692
|
+
<circle class="wheel-line" cx=${k} cy=${k} r=${ze} stroke-width="1.5" />
|
|
2693
|
+
<circle class="wheel-line" cx=${k} cy=${k} r=${fr-14} stroke-width="0.8" />
|
|
2694
|
+
<circle class="wheel-line" cx=${k} cy=${k} r=${Ne} stroke-width="1" />
|
|
2695
|
+
<circle class="wheel-line" cx=${k} cy=${k} r=${_e-16} stroke-width="0.5" />
|
|
2696
|
+
${this.renderTicks()} ${this.renderSpokes()} ${this.renderSigns()}
|
|
2697
|
+
${this.renderHouseNumbers()} ${this.renderCuspDegrees()}
|
|
2698
|
+
${this.renderAspects(e,r)} ${this.renderPlanets(e)}
|
|
2699
|
+
${this.renderAngles()}
|
|
2700
|
+
</svg>`}renderAspectGrid(e,r){let a=e.map(l=>A(l.name)),o=new Map;for(let l of r){let d=[A(l.planet1),A(l.planet2)].sort().join("|");o.set(d,l)}return a.length===0?t`<p class="roxy-empty" role="status">No planets to grid</p>`:t`<div class="grid-scroll">
|
|
2701
|
+
<table class="aspect-grid" aria-label="Planet by planet aspect grid">
|
|
2702
|
+
<thead>
|
|
2703
|
+
<tr>
|
|
2704
|
+
<th></th>
|
|
2705
|
+
${a.slice(0,-1).map(l=>{let d=L[l]??l.slice(0,2);return t`<th scope="col" title=${l}>${d}</th>`})}
|
|
2706
|
+
</tr>
|
|
2707
|
+
</thead>
|
|
2708
|
+
<tbody>
|
|
2709
|
+
${a.slice(1).map((l,d)=>{let c=L[l]??l.slice(0,2);return t`<tr>
|
|
2710
|
+
<th scope="row" title=${l}>${c}</th>
|
|
2711
|
+
${a.slice(0,d+1).map(m=>{let y=o.get([l,m].sort().join("|"));if(!y)return t`<td class="empty"></td>`;let h=we(y),b=mr[h]??mr[h.replace(/-/g,"")]??h.slice(0,3),E=Re[h]??"aspect-other",$=w(y.orb,1);return t`<td class=${`cell ${E}`} title=${`${l} ${h} ${m}${$?` (orb ${$}\xB0)`:""}`}>
|
|
2712
|
+
<span class="asp">${b}</span>
|
|
2713
|
+
</td>`})}
|
|
2714
|
+
${a.slice(d+1,-1).map(()=>t`<td class="empty"></td>`)}
|
|
2715
|
+
</tr>`})}
|
|
2716
|
+
</tbody>
|
|
2717
|
+
</table>
|
|
2718
|
+
</div>`}renderAngles(){let e=this.getAscendant(),r=this.getMidheaven(),a=[this.renderAngleMark(e,"ASC"),this.renderAngleMark(yr(e),"DSC")];r!==null&&(a.push(this.renderAngleMark(r,"MC")),a.push(this.renderAngleMark(yr(r),"IC")));let o=this.data?.partOfFortune?.longitude;typeof o=="number"&&a.push(this.renderAngleMark(se(o),"PoF"));let l=this.data?.vertex?.longitude;return typeof l=="number"&&a.push(this.renderAngleMark(se(l),"Vtx")),a}renderAngleMark(e,r){let a=this.toAngle(e),o=P(k,k,ze,a),l=P(k,k,Ot,a),d=P(k,k,Ht,a);return S`
|
|
2719
|
+
<g>
|
|
2720
|
+
<line class="angle-tick" x1=${o.x} y1=${o.y} x2=${l.x} y2=${l.y} />
|
|
2721
|
+
<text class="angle-marker" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${r}</text>
|
|
2722
|
+
</g>
|
|
2723
|
+
`}renderSpokes(){let e=this.data?.houses??[];return(e.length===12?e.map(a=>a.longitude):Array.from({length:12},(a,o)=>this.getAscendant()+o*30)).map(a=>{let o=this.toAngle(a),l=P(k,k,Ne,o),d=P(k,k,ze,o);return S`<line class="wheel-line" x1=${l.x} y1=${l.y} x2=${d.x} y2=${d.y} stroke-width="0.8" />`})}renderSigns(){return _.map((e,r)=>{let a=this.toAngle(r*30+15),o=P(k,k,fr,a);return S`<text class="sign-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${N[e]}</text>`})}renderHouseNumbers(){let e=this.data?.houses??[];if(e.length===12)return e.map((a,o)=>{let l=e[(o+1)%12],d=Fr(a.longitude,l?l.longitude:a.longitude+30),c=P(k,k,Ne-12,this.toAngle(d));return S`<text class="house-num" x=${c.x} y=${c.y} text-anchor="middle" dominant-baseline="central">${a.number}</text>`});let r=Math.floor(this.getAscendant()/30);return Array.from({length:12},(a,o)=>{let l=this.toAngle(o*30+15),d=P(k,k,Ne-12,l),c=(o-r+12)%12+1;return S`<text class="house-num" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${c}</text>`})}renderTicks(){let e=[];for(let r=0;r<360;r+=5){let a=this.toAngle(r),o=r%30===0,l=o?fr-14:ze-5,d=P(k,k,l,a),c=P(k,k,ze,a);e.push(S`<line class=${o?"tick tick-major":"tick"} x1=${d.x} y1=${d.y} x2=${c.x} y2=${c.y} stroke-width=${o?1:.5} />`)}return e}renderCuspDegrees(){let e=this.data?.houses??[];return e.length!==12?n:e.map(r=>{let a=this.toAngle(r.longitude),o=P(k,k,Ne+9,a),l=ve(r.longitude);return S`<text class="cusp-deg" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${l.degree}°${String(l.minute).padStart(2,"0")}'</text>`})}renderPlanets(e){return e.map(r=>{if(!Number.isFinite(r.longitude))return n;let a=this.toAngle(r.longitude),o=P(k,k,_e,a),l=P(k,k,_e-13,a),d=L[A(r.name)]??r.name.slice(0,2),c=ve(r.longitude),m=r.isRetrograde===!0,y=`${c.degree}\xB0${String(c.minute).padStart(2,"0")}'`;return S`<g>
|
|
2724
|
+
<text class="planet-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central"><title>${r.name}${m?" retrograde":""} - ${y} ${r.sign??""}</title>${d}</text>
|
|
2725
|
+
<text class="planet-deg" x=${l.x} y=${l.y} text-anchor="middle" dominant-baseline="central">${y}${m?S`<tspan class="retro"> ℞</tspan>`:n}</text>
|
|
2726
|
+
</g>`})}renderDetails(){let e=this.data?.summary,r=this.data?.aspectsInterpretation;if(!e&&!r)return n;let a=e?.retrogradePlanets??[];return t`<div class="details">
|
|
2727
|
+
${e?.dominantElement||e?.dominantModality?t`<div class="pill-row">
|
|
2728
|
+
${e.dominantElement?t`<span class="pill">Dominant element: ${e.dominantElement}</span>`:n}
|
|
2729
|
+
${e.dominantModality?t`<span class="pill">Dominant modality: ${e.dominantModality}</span>`:n}
|
|
2730
|
+
</div>`:n}
|
|
2731
|
+
${r?t`<div class="pill-row">
|
|
2732
|
+
<span class="pill pill--success">Harmonious ${r.harmonious}</span>
|
|
2733
|
+
<span class="pill pill--danger">Challenging ${r.challenging}</span>
|
|
2271
2734
|
<span class="pill pill--muted">Neutral ${r.neutral}</span>
|
|
2272
2735
|
</div>`:n}
|
|
2273
|
-
${
|
|
2274
|
-
${
|
|
2736
|
+
${a.length>0?t`<div class="pill-row">
|
|
2737
|
+
${a.map(o=>{let l=L[o]??o.slice(0,2);return t`<span class="pill pill--muted">${l} ${o} R</span>`})}
|
|
2275
2738
|
</div>`:n}
|
|
2276
2739
|
${r?.summary?t`<p class="summary">${r.summary}</p>`:n}
|
|
2277
|
-
${
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
</
|
|
2295
|
-
|
|
2740
|
+
${this.renderElementModalityGrid()}
|
|
2741
|
+
</div>`}renderElementModalityGrid(){let e=this.getPlanets();if(e.length===0)return n;let r=["Fire","Earth","Air","Water"],a=["Cardinal","Fixed","Mutable"],o=_,l={};for(let d of r)l[d]={Cardinal:[],Fixed:[],Mutable:[]};for(let d of e){let c=o.indexOf(A(d.sign??""));if(c<0)continue;let m=r[c%4],y=a[c%3],h=L[A(d.name)]??A(d.name).slice(0,2);l[m]?.[y]?.push(h)}return t`<table class="em-grid" aria-label="Element and modality distribution">
|
|
2742
|
+
<thead>
|
|
2743
|
+
<tr>
|
|
2744
|
+
<th></th>
|
|
2745
|
+
${a.map(d=>t`<th scope="col">${d.slice(0,3)}</th>`)}
|
|
2746
|
+
<th scope="col">Total</th>
|
|
2747
|
+
</tr>
|
|
2748
|
+
</thead>
|
|
2749
|
+
<tbody>
|
|
2750
|
+
${r.map(d=>{let c=a.reduce((m,y)=>m+(l[d]?.[y]?.length??0),0);return t`<tr>
|
|
2751
|
+
<th scope="row">${d}</th>
|
|
2752
|
+
${a.map(m=>t`<td>${(l[d]?.[m]??[]).join(" ")}</td>`)}
|
|
2753
|
+
<td class="em-total">${c}</td>
|
|
2754
|
+
</tr>`})}
|
|
2755
|
+
<tr>
|
|
2756
|
+
<th scope="row">Total</th>
|
|
2757
|
+
${a.map(d=>t`<td class="em-total">${r.reduce((c,m)=>c+(l[m]?.[d]?.length??0),0)}</td>`)}
|
|
2758
|
+
<td class="em-total">${e.length}</td>
|
|
2759
|
+
</tr>
|
|
2760
|
+
</tbody>
|
|
2761
|
+
</table>`}renderInterpretations(){let e=this.getPlanets().filter(r=>r.interpretation);return e.length===0?n:t`<section class="interpretations">
|
|
2296
2762
|
<h3>Planet readings</h3>
|
|
2297
|
-
${e.map((r,
|
|
2763
|
+
${e.map((r,a)=>{let o=r.interpretation,l=L[A(r.name)]??"",d=w(r.degree??0,1);return t`<details class="interp-card" name="natal-planet-readings" ?open=${a===0}>
|
|
2298
2764
|
<summary>${l} ${r.name} <small>${r.sign??""} ${d}</small></summary>
|
|
2299
2765
|
<div class="interp-body">
|
|
2300
2766
|
${o.summary?t`<p class="interp-summary">${o.summary}</p>`:n}
|
|
@@ -2302,7 +2768,7 @@
|
|
|
2302
2768
|
${o.keywords?.length?t`<div class="interp-keywords">${o.keywords.map(c=>t`<span class="kw">${c}</span>`)}</div>`:n}
|
|
2303
2769
|
</div>
|
|
2304
2770
|
</details>`})}
|
|
2305
|
-
</section>`}renderAspects(e,r){let
|
|
2771
|
+
</section>`}renderAspects(e,r){let a=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let l=A(o.name);l&&a.set(l,o.longitude)}return r.map(o=>{let l=a.get(A(o.planet1)),d=a.get(A(o.planet2));if(l===void 0||d===void 0)return n;let c=P(k,k,_e-18,this.toAngle(l)),m=P(k,k,_e-18,this.toAngle(d)),y=we(o),h=Re[y]??"aspect-other",b=w(o.orb,1);return S`<line class=${`aspect ${h}`} x1=${c.x} y1=${c.y} x2=${m.x} y2=${m.y}><title>${o.planet1} ${y||""} ${o.planet2}${b?` (orb ${b}\xB0)`:""}</title></line>`})}};M.styles=[v,x`
|
|
2306
2772
|
.wrap {
|
|
2307
2773
|
width: 100%;
|
|
2308
2774
|
display: grid;
|
|
@@ -2347,12 +2813,35 @@
|
|
|
2347
2813
|
font-family: var(--roxy-font-sans);
|
|
2348
2814
|
}
|
|
2349
2815
|
|
|
2816
|
+
.planet-deg {
|
|
2817
|
+
fill: var(--roxy-fg, #0a0a0a);
|
|
2818
|
+
font-size: 7px;
|
|
2819
|
+
font-family: var(--roxy-font-sans);
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
.planet-deg .retro {
|
|
2823
|
+
fill: var(--roxy-danger, #dc2626);
|
|
2824
|
+
}
|
|
2825
|
+
|
|
2350
2826
|
.house-num {
|
|
2351
2827
|
fill: var(--roxy-muted, #71717a);
|
|
2352
2828
|
font-size: 9px;
|
|
2353
2829
|
font-family: var(--roxy-font-sans);
|
|
2354
2830
|
}
|
|
2355
2831
|
|
|
2832
|
+
.cusp-deg {
|
|
2833
|
+
fill: var(--roxy-muted, #71717a);
|
|
2834
|
+
font-size: 6px;
|
|
2835
|
+
font-family: var(--roxy-font-sans);
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2838
|
+
.tick {
|
|
2839
|
+
stroke: var(--roxy-border, #e4e4e7);
|
|
2840
|
+
}
|
|
2841
|
+
.tick-major {
|
|
2842
|
+
stroke: var(--roxy-secondary, #475569);
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2356
2845
|
.aspect {
|
|
2357
2846
|
stroke-width: 0.8;
|
|
2358
2847
|
fill: none;
|
|
@@ -2402,6 +2891,78 @@
|
|
|
2402
2891
|
vertical-align: middle;
|
|
2403
2892
|
}
|
|
2404
2893
|
|
|
2894
|
+
.tablist {
|
|
2895
|
+
display: flex;
|
|
2896
|
+
gap: 2px;
|
|
2897
|
+
border-bottom: 2px solid var(--roxy-border, #e4e4e7);
|
|
2898
|
+
}
|
|
2899
|
+
.tab {
|
|
2900
|
+
padding: var(--roxy-space-xs, 0.25rem) var(--roxy-space-md, 1rem);
|
|
2901
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2902
|
+
background: none;
|
|
2903
|
+
border: none;
|
|
2904
|
+
border-bottom: 2px solid transparent;
|
|
2905
|
+
margin-bottom: -2px;
|
|
2906
|
+
cursor: pointer;
|
|
2907
|
+
color: var(--roxy-muted, #71717a);
|
|
2908
|
+
font-family: inherit;
|
|
2909
|
+
transition: color var(--roxy-motion-duration, 200ms) var(--roxy-motion-easing, ease);
|
|
2910
|
+
}
|
|
2911
|
+
.tab[aria-selected='true'] {
|
|
2912
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
2913
|
+
border-bottom-color: var(--roxy-accent, #f59e0b);
|
|
2914
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2915
|
+
}
|
|
2916
|
+
.tab:hover:not([aria-selected='true']) {
|
|
2917
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
2918
|
+
}
|
|
2919
|
+
|
|
2920
|
+
.grid-scroll {
|
|
2921
|
+
overflow-x: auto;
|
|
2922
|
+
-webkit-overflow-scrolling: touch;
|
|
2923
|
+
}
|
|
2924
|
+
table.aspect-grid {
|
|
2925
|
+
border-collapse: collapse;
|
|
2926
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2927
|
+
margin: 0 auto;
|
|
2928
|
+
}
|
|
2929
|
+
table.aspect-grid th,
|
|
2930
|
+
table.aspect-grid td {
|
|
2931
|
+
width: 1.6rem;
|
|
2932
|
+
height: 1.6rem;
|
|
2933
|
+
text-align: center;
|
|
2934
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
2935
|
+
padding: 0;
|
|
2936
|
+
}
|
|
2937
|
+
table.aspect-grid th {
|
|
2938
|
+
color: var(--roxy-secondary, #475569);
|
|
2939
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2940
|
+
}
|
|
2941
|
+
table.aspect-grid td.cell {
|
|
2942
|
+
cursor: default;
|
|
2943
|
+
}
|
|
2944
|
+
table.aspect-grid td.empty {
|
|
2945
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 18%, transparent);
|
|
2946
|
+
}
|
|
2947
|
+
table.aspect-grid td .asp {
|
|
2948
|
+
font-size: 0.95em;
|
|
2949
|
+
line-height: 1;
|
|
2950
|
+
}
|
|
2951
|
+
table.aspect-grid td.aspect-trine .asp,
|
|
2952
|
+
table.aspect-grid td.aspect-sextile .asp {
|
|
2953
|
+
color: var(--roxy-success, #16a34a);
|
|
2954
|
+
}
|
|
2955
|
+
table.aspect-grid td.aspect-square .asp,
|
|
2956
|
+
table.aspect-grid td.aspect-opposition .asp {
|
|
2957
|
+
color: var(--roxy-danger, #dc2626);
|
|
2958
|
+
}
|
|
2959
|
+
table.aspect-grid td.aspect-conjunction .asp {
|
|
2960
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
2961
|
+
}
|
|
2962
|
+
table.aspect-grid td.aspect-other .asp {
|
|
2963
|
+
color: var(--roxy-muted, #71717a);
|
|
2964
|
+
}
|
|
2965
|
+
|
|
2405
2966
|
.details {
|
|
2406
2967
|
margin-top: var(--roxy-space-md, 1rem);
|
|
2407
2968
|
}
|
|
@@ -2442,48 +3003,37 @@
|
|
|
2442
3003
|
margin: var(--roxy-space-md, 1rem) 0;
|
|
2443
3004
|
}
|
|
2444
3005
|
|
|
2445
|
-
.
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
3006
|
+
.em-grid {
|
|
3007
|
+
border-collapse: collapse;
|
|
3008
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
3009
|
+
width: 100%;
|
|
2449
3010
|
}
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
3011
|
+
.em-grid th,
|
|
3012
|
+
.em-grid td {
|
|
3013
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
3014
|
+
padding: 3px 5px;
|
|
3015
|
+
text-align: center;
|
|
3016
|
+
vertical-align: middle;
|
|
2455
3017
|
}
|
|
2456
|
-
|
|
2457
|
-
.dist-section h3 {
|
|
2458
|
-
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2459
|
-
font-weight: var(--roxy-weight-bold, 600);
|
|
3018
|
+
.em-grid th {
|
|
2460
3019
|
color: var(--roxy-muted, #71717a);
|
|
2461
|
-
|
|
3020
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
2462
3021
|
text-transform: uppercase;
|
|
2463
|
-
letter-spacing: 0.
|
|
3022
|
+
letter-spacing: 0.04em;
|
|
2464
3023
|
}
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
display: grid;
|
|
2468
|
-
grid-template-columns: 4rem 1fr 1.5rem;
|
|
2469
|
-
align-items: center;
|
|
2470
|
-
gap: var(--roxy-space-xs, 0.25rem);
|
|
2471
|
-
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2472
|
-
color: var(--roxy-fg, #0f172a);
|
|
2473
|
-
margin-bottom: 4px;
|
|
3024
|
+
.em-grid th[scope='row'] {
|
|
3025
|
+
text-align: left;
|
|
2474
3026
|
}
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
height:
|
|
2479
|
-
|
|
3027
|
+
.em-grid td {
|
|
3028
|
+
color: var(--roxy-accent, #f59e0b);
|
|
3029
|
+
font-size: 0.95em;
|
|
3030
|
+
line-height: 1.4;
|
|
3031
|
+
min-width: 1.4rem;
|
|
2480
3032
|
}
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
background: var(--roxy-accent, #f59e0b);
|
|
2486
|
-
border-radius: 3px;
|
|
3033
|
+
.em-grid .em-total {
|
|
3034
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
3035
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
3036
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 25%, transparent);
|
|
2487
3037
|
}
|
|
2488
3038
|
|
|
2489
3039
|
.interpretations {
|
|
@@ -2531,7 +3081,7 @@
|
|
|
2531
3081
|
color: var(--roxy-accent-fg, #b45309);
|
|
2532
3082
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
2533
3083
|
}
|
|
2534
|
-
`],p([
|
|
3084
|
+
`],p([g({attribute:!1})],M.prototype,"data",2),p([g({type:String,attribute:"house-system",reflect:!0})],M.prototype,"houseSystem",2),p([C()],M.prototype,"view",2),M=p([f("roxy-natal-chart")],M);var W=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=Gt[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 a=e.meaning?.keywords??[];return t`<article class="card" aria-label=${r}>
|
|
2535
3085
|
<div class="hero">
|
|
2536
3086
|
${typeof e.number=="number"?t`<div class="numeral">${e.number}</div>`:n}
|
|
2537
3087
|
<div>
|
|
@@ -2541,12 +3091,12 @@
|
|
|
2541
3091
|
</div>
|
|
2542
3092
|
${e.meaning?.description?t`<p class="meaning">${e.meaning.description}</p>`:n}
|
|
2543
3093
|
${e.calculation?t`<pre class="calc">${e.calculation}</pre>`:n}
|
|
2544
|
-
${
|
|
2545
|
-
${
|
|
3094
|
+
${a.length>0?t`<div class="chips">
|
|
3095
|
+
${a.map(o=>t`<span>${o}</span>`)}
|
|
2546
3096
|
</div>`:n}
|
|
2547
3097
|
${e.hasKarmicDebt&&e.karmicDebtNumber?t`<div class="karmic">
|
|
2548
3098
|
Karmic debt ${e.karmicDebtNumber}.
|
|
2549
|
-
${
|
|
3099
|
+
${jt(e.karmicDebtMeaning)}
|
|
2550
3100
|
</div>`:n}
|
|
2551
3101
|
</article>`}renderPersonalYear(e,r){return t`<article class="card" aria-label=${r}>
|
|
2552
3102
|
<div class="hero">
|
|
@@ -2558,18 +3108,18 @@
|
|
|
2558
3108
|
</div>
|
|
2559
3109
|
${e.forecast?t`<p class="meaning">${e.forecast}</p>`:n}
|
|
2560
3110
|
${e.advice?t`<p>${e.advice}</p>`:n}
|
|
2561
|
-
</article>`}renderChart(e,r){let
|
|
3111
|
+
</article>`}renderChart(e,r){let a=Object.entries(e.coreNumbers).filter(([,o])=>o!=null);return t`<article class="card" aria-label=${r}>
|
|
2562
3112
|
<div>
|
|
2563
3113
|
<p class="label">${r}</p>
|
|
2564
3114
|
${e.profile?.name?t`<h2 class="title">${e.profile.name}</h2>`:n}
|
|
2565
3115
|
</div>
|
|
2566
|
-
${
|
|
2567
|
-
${
|
|
2568
|
-
<span>${
|
|
3116
|
+
${a.length>0?t`<div class="cores">
|
|
3117
|
+
${a.map(([o,l])=>t`<div class="item">
|
|
3118
|
+
<span>${te(o)}</span>
|
|
2569
3119
|
<strong>${l.number??""}</strong>
|
|
2570
3120
|
</div>`)}
|
|
2571
3121
|
</div>`:n}
|
|
2572
|
-
</article>`}};
|
|
3122
|
+
</article>`}};W.styles=[v,x`
|
|
2573
3123
|
.card {
|
|
2574
3124
|
background: var(--roxy-bg, #fff);
|
|
2575
3125
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -2665,32 +3215,32 @@
|
|
|
2665
3215
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
2666
3216
|
color: var(--roxy-fg, #0a0a0a);
|
|
2667
3217
|
}
|
|
2668
|
-
`],p([
|
|
3218
|
+
`],p([g({attribute:!1})],W.prototype,"data",2),p([g({type:String,reflect:!0})],W.prototype,"type",2),W=p([f("roxy-numerology-card")],W);var Gt={"life-path":"Life Path",expression:"Expression","personal-year":"Personal Year",chart:"Numerology chart"};function jt(i){return i?[i.description,i.challenge,i.resolution].filter(Boolean).join(" "):""}var J=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,a=[["Tithi",this.formatPart(e.tithi)],["Nakshatra",this.formatPart(e.nakshatra)],["Yoga",this.formatPart(e.yoga)],["Karana",this.formatPart(e.karana)]];r&&a.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
3219
|
<header class="head">
|
|
2670
3220
|
<h2 class="title">Panchang</h2>
|
|
2671
|
-
<span class="date">${r?
|
|
3221
|
+
<span class="date">${r?Ke(r.date):""}</span>
|
|
2672
3222
|
</header>
|
|
2673
3223
|
<table>
|
|
2674
3224
|
<tbody>
|
|
2675
|
-
${
|
|
3225
|
+
${a.map(([d,c])=>t`<tr>
|
|
2676
3226
|
<th>${d}</th>
|
|
2677
3227
|
<td>${c}</td>
|
|
2678
3228
|
</tr>`)}
|
|
2679
3229
|
${r?.sunrise?t`<tr>
|
|
2680
3230
|
<th>Sunrise</th>
|
|
2681
|
-
<td>${
|
|
3231
|
+
<td>${G(r.sunrise)}</td>
|
|
2682
3232
|
</tr>`:n}
|
|
2683
3233
|
${r?.sunset?t`<tr>
|
|
2684
3234
|
<th>Sunset</th>
|
|
2685
|
-
<td>${
|
|
3235
|
+
<td>${G(r.sunset)}</td>
|
|
2686
3236
|
</tr>`:n}
|
|
2687
3237
|
${r?.moonrise?t`<tr>
|
|
2688
3238
|
<th>Moonrise</th>
|
|
2689
|
-
<td>${
|
|
3239
|
+
<td>${G(r.moonrise)}</td>
|
|
2690
3240
|
</tr>`:n}
|
|
2691
3241
|
${r?.moonset?t`<tr>
|
|
2692
3242
|
<th>Moonset</th>
|
|
2693
|
-
<td>${
|
|
3243
|
+
<td>${G(r.moonset)}</td>
|
|
2694
3244
|
</tr>`:n}
|
|
2695
3245
|
</tbody>
|
|
2696
3246
|
</table>
|
|
@@ -2700,7 +3250,7 @@
|
|
|
2700
3250
|
<tbody>
|
|
2701
3251
|
${o.filter(([,d])=>!!d).map(([d,c])=>t`<tr>
|
|
2702
3252
|
<th>${d}</th>
|
|
2703
|
-
<td>${
|
|
3253
|
+
<td>${gr(c)}</td>
|
|
2704
3254
|
</tr>`)}
|
|
2705
3255
|
</tbody>
|
|
2706
3256
|
</table>
|
|
@@ -2709,12 +3259,12 @@
|
|
|
2709
3259
|
<tbody>
|
|
2710
3260
|
${l.filter(([,d])=>!!d).map(([d,c])=>t`<tr>
|
|
2711
3261
|
<th>${d}</th>
|
|
2712
|
-
<td>${
|
|
3262
|
+
<td>${gr(c)}</td>
|
|
2713
3263
|
</tr>`)}
|
|
2714
3264
|
</tbody>
|
|
2715
3265
|
</table>
|
|
2716
3266
|
`:n}
|
|
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)}};
|
|
3267
|
+
</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)}};J.styles=[v,x`
|
|
2718
3268
|
.wrap {
|
|
2719
3269
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
2720
3270
|
border-radius: var(--roxy-radius-md, 8px);
|
|
@@ -2772,7 +3322,7 @@
|
|
|
2772
3322
|
text-transform: uppercase;
|
|
2773
3323
|
letter-spacing: 0.06em;
|
|
2774
3324
|
}
|
|
2775
|
-
`],p([
|
|
3325
|
+
`],p([g({attribute:!1})],J.prototype,"data",2),p([g({type:String,reflect:!0})],J.prototype,"detail",2),J=p([f("roxy-panchang-table")],J);var br=[{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)"}],de=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,a)=>r.relativeRank-a.relativeRank);return t`<div class="wrap" aria-label="Shadbala planetary strength">
|
|
2776
3326
|
<div class="head">
|
|
2777
3327
|
<h2 class="title">Shadbala</h2>
|
|
2778
3328
|
<p class="subtitle">${e.length} planets ranked by strength</p>
|
|
@@ -2783,7 +3333,7 @@
|
|
|
2783
3333
|
</div>
|
|
2784
3334
|
|
|
2785
3335
|
<div class="legend" aria-label="Strength component legend">
|
|
2786
|
-
${
|
|
3336
|
+
${br.map(r=>t`<div class="legend-row">
|
|
2787
3337
|
<span
|
|
2788
3338
|
class="legend-swatch"
|
|
2789
3339
|
style="background: ${r.color}"
|
|
@@ -2792,7 +3342,7 @@
|
|
|
2792
3342
|
${r.label}
|
|
2793
3343
|
</div>`)}
|
|
2794
3344
|
</div>
|
|
2795
|
-
</div>`}renderPlanetRow(e){let r=L[
|
|
3345
|
+
</div>`}renderPlanetRow(e){let r=L[A(e.planet)]??"",a=br.map(y=>Math.max(0,e[y.key])),o=a.reduce((y,h)=>y+h,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
3346
|
<div class="planet-label">
|
|
2797
3347
|
<span class="glyph" aria-hidden="true">${r}</span>
|
|
2798
3348
|
${e.planet}
|
|
@@ -2800,10 +3350,10 @@
|
|
|
2800
3350
|
</div>
|
|
2801
3351
|
<div class="bar-wrap">
|
|
2802
3352
|
<div class="bar" role="img" aria-label="Strength components for ${e.planet}">
|
|
2803
|
-
${o>0?
|
|
3353
|
+
${o>0?br.map((y,h)=>{let b=a[h];if(b<=0)return n;let E=b/o*100;return t`<div
|
|
2804
3354
|
class="bar-segment"
|
|
2805
|
-
style="flex-grow: ${
|
|
2806
|
-
title="${
|
|
3355
|
+
style="flex-grow: ${E}; background: ${y.color};"
|
|
3356
|
+
title="${y.label}: ${w(b,1)}"
|
|
2807
3357
|
></div>`}):n}
|
|
2808
3358
|
</div>
|
|
2809
3359
|
</div>
|
|
@@ -2811,7 +3361,7 @@
|
|
|
2811
3361
|
${m?t`<span class="rupas-label">${m}</span>`:n}
|
|
2812
3362
|
<span class="${`adequacy-badge ${d}`}">${c}</span>
|
|
2813
3363
|
</div>
|
|
2814
|
-
</div>`}};
|
|
3364
|
+
</div>`}};de.styles=[v,x`
|
|
2815
3365
|
.wrap {
|
|
2816
3366
|
display: grid;
|
|
2817
3367
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -2957,7 +3507,7 @@
|
|
|
2957
3507
|
justify-content: flex-start;
|
|
2958
3508
|
}
|
|
2959
3509
|
}
|
|
2960
|
-
`],p([
|
|
3510
|
+
`],p([g({attribute:!1})],de.prototype,"data",2),de=p([f("roxy-shadbala-table")],de);var $r=360,T=$r/2,Jr=170,It=154,Xr=124,Me=96,ce=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:a,analysis:o}=this.data,l=this.data.interAspects??[],d=e?.planets??[],c=r?.planets??[],m=typeof a=="number"?Math.round(a):void 0,y=o?.overall,h=o?.strengths??[],b=o?.challenges??[];return d.length>0&&c.length>0?t`<div
|
|
2961
3511
|
class="wrap"
|
|
2962
3512
|
aria-label="Synastry compatibility chart"
|
|
2963
3513
|
>
|
|
@@ -2968,35 +3518,35 @@
|
|
|
2968
3518
|
>`:n}
|
|
2969
3519
|
</div>
|
|
2970
3520
|
<svg
|
|
2971
|
-
viewBox="0 0 ${
|
|
3521
|
+
viewBox="0 0 ${$r} ${$r}"
|
|
2972
3522
|
role="img"
|
|
2973
3523
|
aria-label="Dual chart wheel comparing two natal charts"
|
|
2974
3524
|
>
|
|
2975
3525
|
<title>Synastry dual wheel</title>
|
|
2976
3526
|
<circle
|
|
2977
3527
|
class="wheel-line"
|
|
2978
|
-
cx=${
|
|
2979
|
-
cy=${
|
|
2980
|
-
r=${
|
|
3528
|
+
cx=${T}
|
|
3529
|
+
cy=${T}
|
|
3530
|
+
r=${Jr}
|
|
2981
3531
|
stroke-width="1.5"
|
|
2982
3532
|
/>
|
|
2983
3533
|
<circle
|
|
2984
3534
|
class="wheel-line"
|
|
2985
|
-
cx=${
|
|
2986
|
-
cy=${
|
|
2987
|
-
r=${
|
|
3535
|
+
cx=${T}
|
|
3536
|
+
cy=${T}
|
|
3537
|
+
r=${Me+14}
|
|
2988
3538
|
stroke-width="0.8"
|
|
2989
3539
|
/>
|
|
2990
3540
|
<circle
|
|
2991
3541
|
class="wheel-line"
|
|
2992
|
-
cx=${
|
|
2993
|
-
cy=${
|
|
2994
|
-
r=${
|
|
3542
|
+
cx=${T}
|
|
3543
|
+
cy=${T}
|
|
3544
|
+
r=${Me-14}
|
|
2995
3545
|
stroke-width="0.6"
|
|
2996
3546
|
/>
|
|
2997
3547
|
${this.renderSpokes()} ${this.renderSigns()}
|
|
2998
3548
|
${this.renderInterAspectLines(d,c,l)}
|
|
2999
|
-
${this.renderRing(d,
|
|
3549
|
+
${this.renderRing(d,Xr,"p1")} ${this.renderRing(c,Me,"p2")}
|
|
3000
3550
|
</svg>
|
|
3001
3551
|
<div class="legend-row">
|
|
3002
3552
|
<span><span class="swatch" style="background: var(--roxy-accent)"></span>Person 1</span>
|
|
@@ -3004,19 +3554,19 @@
|
|
|
3004
3554
|
<span><span class="swatch" style="background: var(--roxy-success)"></span>harmonious</span>
|
|
3005
3555
|
<span><span class="swatch" style="background: var(--roxy-danger)"></span>challenging</span>
|
|
3006
3556
|
</div>
|
|
3007
|
-
${
|
|
3557
|
+
${y?t`<p class="summary">${y}</p>`:n}
|
|
3008
3558
|
${l.length>0?this.renderAspects(l):n}
|
|
3009
|
-
${
|
|
3010
|
-
${
|
|
3559
|
+
${h.length>0||b.length>0?t`<div class="lists">
|
|
3560
|
+
${h.length?t`<div>
|
|
3011
3561
|
<h3>Strengths</h3>
|
|
3012
3562
|
<ul>
|
|
3013
|
-
${
|
|
3563
|
+
${h.map($=>t`<li>${$}</li>`)}
|
|
3014
3564
|
</ul>
|
|
3015
3565
|
</div>`:n}
|
|
3016
|
-
${
|
|
3566
|
+
${b.length?t`<div>
|
|
3017
3567
|
<h3>Challenges</h3>
|
|
3018
3568
|
<ul>
|
|
3019
|
-
${
|
|
3569
|
+
${b.map($=>t`<li>${$}</li>`)}
|
|
3020
3570
|
</ul>
|
|
3021
3571
|
</div>`:n}
|
|
3022
3572
|
</div>`:n}
|
|
@@ -3036,23 +3586,23 @@
|
|
|
3036
3586
|
<code>person2.planets</code> arrays from the natal-chart endpoint, or
|
|
3037
3587
|
use the <code><roxy-data></code> fallback.
|
|
3038
3588
|
</div>
|
|
3039
|
-
${
|
|
3589
|
+
${y?t`<p class="summary">${y}</p>`:n}
|
|
3040
3590
|
${l.length>0?this.renderAspects(l):n}
|
|
3041
|
-
${
|
|
3042
|
-
${
|
|
3591
|
+
${h.length>0||b.length>0?t`<div class="lists">
|
|
3592
|
+
${h.length?t`<div>
|
|
3043
3593
|
<h3>Strengths</h3>
|
|
3044
3594
|
<ul>
|
|
3045
|
-
${
|
|
3595
|
+
${h.map($=>t`<li>${$}</li>`)}
|
|
3046
3596
|
</ul>
|
|
3047
3597
|
</div>`:n}
|
|
3048
|
-
${
|
|
3598
|
+
${b.length?t`<div>
|
|
3049
3599
|
<h3>Challenges</h3>
|
|
3050
3600
|
<ul>
|
|
3051
|
-
${
|
|
3601
|
+
${b.map($=>t`<li>${$}</li>`)}
|
|
3052
3602
|
</ul>
|
|
3053
3603
|
</div>`:n}
|
|
3054
3604
|
</div>`:n}
|
|
3055
|
-
</div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,r)=>{let
|
|
3605
|
+
</div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,r)=>{let a=this.toAngle(r*30),o=P(T,T,Me-14,a),l=P(T,T,Jr,a);return S`<line class="wheel-line" x1=${o.x} y1=${o.y} x2=${l.x} y2=${l.y} stroke-width="0.6" />`})}renderSigns(){return _.map((e,r)=>{let a=this.toAngle(r*30+15),o=P(T,T,It,a);return S`<text class="sign" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${N[e]}</text>`})}renderRing(e,r,a){return e.map(o=>{if(!Number.isFinite(o.longitude))return n;let l=P(T,T,r,this.toAngle(o.longitude)),d=L[A(o.name)]??o.name.slice(0,2);return S`<text class=${a} x=${l.x} y=${l.y} text-anchor="middle" dominant-baseline="central"><title>${o.name}</title>${d}</text>`})}renderInterAspectLines(e,r,a){let o=(l,d)=>{let c=A(d);for(let m of l)if(A(m.name)===c&&typeof m.longitude=="number")return m.longitude};return a.map(l=>{let d=o(e,l.planet1),c=o(r,l.planet2);if(d===void 0||c===void 0)return n;let m=P(T,T,Xr-12,this.toAngle(d)),y=P(T,T,Me+8,this.toAngle(c)),h=we(l),b=Re[h]??"aspect-other",E=w(l.orb,1);return S`<line class=${`aspect ${b}`} x1=${m.x} y1=${m.y} x2=${y.x} y2=${y.y}><title>${l.planet1} ${h} ${l.planet2}${E?` (orb ${E}\xB0)`:""}</title></line>`})}renderAspects(e){return t`<table>
|
|
3056
3606
|
<thead>
|
|
3057
3607
|
<tr>
|
|
3058
3608
|
<th>Planet 1</th>
|
|
@@ -3066,12 +3616,12 @@
|
|
|
3066
3616
|
${e.slice(0,12).map(r=>t`<tr>
|
|
3067
3617
|
<td>${r.planet1}</td>
|
|
3068
3618
|
<td>${r.planet2}</td>
|
|
3069
|
-
<td>${
|
|
3619
|
+
<td>${we(r)||""}</td>
|
|
3070
3620
|
<td class="orb">${w(r.orb,1)}</td>
|
|
3071
|
-
<td>${
|
|
3621
|
+
<td>${Bt(r.strength)}</td>
|
|
3072
3622
|
</tr>`)}
|
|
3073
3623
|
</tbody>
|
|
3074
|
-
</table>`}};
|
|
3624
|
+
</table>`}};ce.styles=[v,x`
|
|
3075
3625
|
.wrap {
|
|
3076
3626
|
display: grid;
|
|
3077
3627
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -3223,17 +3773,17 @@
|
|
|
3223
3773
|
padding: 0 4px;
|
|
3224
3774
|
border-radius: 4px;
|
|
3225
3775
|
}
|
|
3226
|
-
`],p([
|
|
3776
|
+
`],p([g({attribute:!1})],ce.prototype,"data",2),ce=p([f("roxy-synastry-chart")],ce);function Bt(i){return typeof i=="number"?Math.round(i).toString():""}var X=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,a=this.flipped!==!!r.reversed,o=r.keywords??[];return t`<article class="card" aria-label=${r.name??"Tarot card"}>
|
|
3227
3777
|
<div class="image-wrap">
|
|
3228
3778
|
${r.imageUrl?t`<img
|
|
3229
|
-
class=${`image ${
|
|
3779
|
+
class=${`image ${a?"reversed":""}`}
|
|
3230
3780
|
src=${r.imageUrl}
|
|
3231
3781
|
alt=${r.name??"Tarot card"}
|
|
3232
3782
|
tabindex="0"
|
|
3233
3783
|
@click=${this.toggleFlip}
|
|
3234
3784
|
@keydown=${l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),this.toggleFlip())}}
|
|
3235
3785
|
/>`:t`<div
|
|
3236
|
-
class=${`image ${
|
|
3786
|
+
class=${`image ${a?"reversed":""}`}
|
|
3237
3787
|
style="aspect-ratio: 0.6; display: flex; align-items: center; justify-content: center; color: var(--roxy-muted)"
|
|
3238
3788
|
>
|
|
3239
3789
|
${r.name??"?"}
|
|
@@ -3242,7 +3792,7 @@
|
|
|
3242
3792
|
<div>
|
|
3243
3793
|
<div class="meta">
|
|
3244
3794
|
${r.arcana?t`${r.arcana} arcana`:n}
|
|
3245
|
-
${
|
|
3795
|
+
${a?t` · reversed`:n}
|
|
3246
3796
|
</div>
|
|
3247
3797
|
<h2 class="title">${r.name??"Tarot card"}</h2>
|
|
3248
3798
|
${e.dailyMessage?t`<p class="message">${e.dailyMessage}</p>`:n}
|
|
@@ -3259,7 +3809,7 @@
|
|
|
3259
3809
|
Flip card
|
|
3260
3810
|
</button>
|
|
3261
3811
|
</div>
|
|
3262
|
-
</article>`}renderFullCard(e){let r=this.flipped,
|
|
3812
|
+
</article>`}renderFullCard(e){let r=this.flipped,a=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
3813
|
<div class="image-wrap">
|
|
3264
3814
|
${e.imageUrl?t`<img
|
|
3265
3815
|
class=${`image ${r?"reversed":""}`}
|
|
@@ -3282,7 +3832,7 @@
|
|
|
3282
3832
|
${r?t` · reversed`:n}
|
|
3283
3833
|
</div>
|
|
3284
3834
|
<h2 class="title">${e.name??"Tarot card"}</h2>
|
|
3285
|
-
${
|
|
3835
|
+
${a?.description?t`<p>${a.description}</p>`:n}
|
|
3286
3836
|
${o.length>0?t`<div class="chips">
|
|
3287
3837
|
${o.map(l=>t`<span>${l}</span>`)}
|
|
3288
3838
|
</div>`:n}
|
|
@@ -3295,7 +3845,7 @@
|
|
|
3295
3845
|
Flip card
|
|
3296
3846
|
</button>
|
|
3297
3847
|
</div>
|
|
3298
|
-
</article>`}};
|
|
3848
|
+
</article>`}};X.styles=[v,x`
|
|
3299
3849
|
.card {
|
|
3300
3850
|
background: var(--roxy-bg, #fff);
|
|
3301
3851
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
@@ -3385,13 +3935,13 @@
|
|
|
3385
3935
|
.flip:hover {
|
|
3386
3936
|
transform: scale(1.02);
|
|
3387
3937
|
}
|
|
3388
|
-
`],p([
|
|
3938
|
+
`],p([g({attribute:!1})],X.prototype,"data",2),p([C()],X.prototype,"flipped",2),X=p([f("roxy-tarot-card")],X);var Z=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,a="cards"in e&&!("spread"in e),o=a?[]:"positions"in e?e.positions??[]:[],l=a&&"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," "),y="question"in e?e.question:void 0,h="summary"in e?e.summary:void 0,b=r?e.interpretation:void 0,E=d?d.toLowerCase().replace(/[^a-z]/g,""):"";return t`<article class="wrap" aria-label="Tarot spread">
|
|
3389
3939
|
<header class="head">
|
|
3390
3940
|
<h2 class="title">${m}</h2>
|
|
3391
|
-
${
|
|
3941
|
+
${y?t`<span class="question">"${y}"</span>`:n}
|
|
3392
3942
|
</header>
|
|
3393
3943
|
${r?t`<div>
|
|
3394
|
-
<span class=${`answer ${
|
|
3944
|
+
<span class=${`answer ${E}`}>${d}</span>
|
|
3395
3945
|
${c?t`<small> · ${c}</small>`:n}
|
|
3396
3946
|
</div>`:n}
|
|
3397
3947
|
${o.length>0?t`<div class="grid">
|
|
@@ -3427,9 +3977,9 @@
|
|
|
3427
3977
|
${$.meaning?t`<p class="interp">${$.meaning}</p>`:n}
|
|
3428
3978
|
</div>`)}
|
|
3429
3979
|
</div>`:n}
|
|
3430
|
-
${
|
|
3431
|
-
${
|
|
3432
|
-
</article>`}};
|
|
3980
|
+
${h?t`<p class="reading">${h}</p>`:n}
|
|
3981
|
+
${b?t`<p class="reading">${b}</p>`:n}
|
|
3982
|
+
</article>`}};Z.styles=[v,x`
|
|
3433
3983
|
.wrap {
|
|
3434
3984
|
display: grid;
|
|
3435
3985
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -3535,7 +4085,7 @@
|
|
|
3535
4085
|
margin: 0;
|
|
3536
4086
|
color: var(--roxy-fg, #0a0a0a);
|
|
3537
4087
|
}
|
|
3538
|
-
`],p([
|
|
4088
|
+
`],p([g({attribute:!1})],Z.prototype,"data",2),p([g({type:String,reflect:!0})],Z.prototype,"spread",2),Z=p([f("roxy-tarot-spread")],Z);var pe=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:a,transitAspects:o,summary:l}=this.data,d=[Ke(e),G(r)].filter(Boolean).join(" ");return t`<div class="wrap" aria-label="Transit positions table">
|
|
3539
4089
|
<div class="head">
|
|
3540
4090
|
<h2 class="title">Transits</h2>
|
|
3541
4091
|
${d?t`<p class="subtitle">${d}</p>`:n}
|
|
@@ -3546,7 +4096,7 @@
|
|
|
3546
4096
|
<div>
|
|
3547
4097
|
<p class="section-label">Planet positions</p>
|
|
3548
4098
|
<div class="overflow-scroll">
|
|
3549
|
-
${this.renderPlanetsTable(
|
|
4099
|
+
${this.renderPlanetsTable(a)}
|
|
3550
4100
|
</div>
|
|
3551
4101
|
</div>
|
|
3552
4102
|
|
|
@@ -3579,10 +4129,10 @@
|
|
|
3579
4129
|
</tr>
|
|
3580
4130
|
</thead>
|
|
3581
4131
|
<tbody>
|
|
3582
|
-
${e.map(r=>{let
|
|
4132
|
+
${e.map(r=>{let a=L[A(r.name)]??"",o=N[A(r.sign)]??"",l=r.speed>=0?"\u2191":"\u2193";return t`<tr>
|
|
3583
4133
|
<td>
|
|
3584
4134
|
<div class="planet-cell">
|
|
3585
|
-
<span class="glyph" aria-hidden="true">${
|
|
4135
|
+
<span class="glyph" aria-hidden="true">${a}</span>
|
|
3586
4136
|
${r.name}
|
|
3587
4137
|
${r.isRetrograde?t`<span class="retro-badge" aria-label="retrograde">R</span>`:n}
|
|
3588
4138
|
</div>
|
|
@@ -3601,7 +4151,7 @@
|
|
|
3601
4151
|
</tr>`})}
|
|
3602
4152
|
</tbody>
|
|
3603
4153
|
</table>`}renderAspectsList(e){return t`<div role="list" aria-label="Transit aspects">
|
|
3604
|
-
${e.map((r,
|
|
4154
|
+
${e.map((r,a)=>{let o=L[A(r.transitPlanet)]??"",l=L[A(r.natalPlanet)]??"",d=(r.nature??"neutral").toLowerCase(),c=r.interpretation,m=(r.type??"").toLowerCase(),y=r.isApplying?"Applying":"Separating";return t`<details class="aspect-card" role="listitem" name="transit-aspects" ?open=${a===0}>
|
|
3605
4155
|
<summary>
|
|
3606
4156
|
<span aria-hidden="true">${o}</span>
|
|
3607
4157
|
${r.transitPlanet}
|
|
@@ -3609,7 +4159,7 @@
|
|
|
3609
4159
|
<span aria-hidden="true">${l}</span>
|
|
3610
4160
|
${r.natalPlanet}
|
|
3611
4161
|
<span class="meta">
|
|
3612
|
-
${
|
|
4162
|
+
${y} · orb ${w(r.orb,2)}° · strength ${w(r.strength,1)}
|
|
3613
4163
|
</span>
|
|
3614
4164
|
</summary>
|
|
3615
4165
|
<div class="interp-body">
|
|
@@ -3618,11 +4168,11 @@
|
|
|
3618
4168
|
${c?.timing?t`<p><strong>Timing:</strong> ${c.timing}</p>`:n}
|
|
3619
4169
|
${c?.guidance?t`<p><strong>Guidance:</strong> ${c.guidance}</p>`:n}
|
|
3620
4170
|
${c?.keywords?.length?t`<div class="interp-keywords">
|
|
3621
|
-
${c.keywords.map(
|
|
4171
|
+
${c.keywords.map(h=>t`<span class="kw">${h}</span>`)}
|
|
3622
4172
|
</div>`:n}
|
|
3623
4173
|
</div>
|
|
3624
4174
|
</details>`})}
|
|
3625
|
-
</div>`}};
|
|
4175
|
+
</div>`}};pe.styles=[v,x`
|
|
3626
4176
|
.wrap {
|
|
3627
4177
|
display: grid;
|
|
3628
4178
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -3818,7 +4368,7 @@
|
|
|
3818
4368
|
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent);
|
|
3819
4369
|
color: var(--roxy-fg, #0a0a0a);
|
|
3820
4370
|
}
|
|
3821
|
-
`],p([
|
|
4371
|
+
`],p([g({attribute:!1})],pe.prototype,"data",2),pe=p([f("roxy-transits-table")],pe);var Q=class extends u{constructor(){super(...arguments);this.data=null;this.chartStyle="south"}buildHouses(){return this.data?.meta?Ze(this.data.meta):[]}render(){if(!this.data)return t`<div class="roxy-empty" role="status">No kundli data</div>`;let e=this.buildHouses(),r=this.chartStyle,a=r==="north"?Fe():r==="east"?Je():We(),o=r==="north"?Ve:r==="east"?Xe:Ye;return t`<div class="wrap">
|
|
3822
4372
|
<h2 class="title">Vedic kundli</h2>
|
|
3823
4373
|
<svg
|
|
3824
4374
|
viewBox="0 0 300 300"
|
|
@@ -3826,10 +4376,10 @@
|
|
|
3826
4376
|
aria-label="Vedic birth chart with twelve sign houses"
|
|
3827
4377
|
>
|
|
3828
4378
|
<title>Vedic kundli</title>
|
|
3829
|
-
${
|
|
3830
|
-
${
|
|
4379
|
+
${a}
|
|
4380
|
+
${e.map(l=>o(l))}
|
|
3831
4381
|
</svg>
|
|
3832
|
-
</div>`}};
|
|
4382
|
+
</div>`}};Q.styles=[v,x`
|
|
3833
4383
|
.wrap {
|
|
3834
4384
|
display: grid;
|
|
3835
4385
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -3857,7 +4407,7 @@
|
|
|
3857
4407
|
}
|
|
3858
4408
|
.planet-text {
|
|
3859
4409
|
fill: var(--roxy-fg, #0a0a0a);
|
|
3860
|
-
font-size:
|
|
4410
|
+
font-size: 10px;
|
|
3861
4411
|
font-weight: 600;
|
|
3862
4412
|
font-family: var(--roxy-font-sans);
|
|
3863
4413
|
}
|
|
@@ -3879,7 +4429,204 @@
|
|
|
3879
4429
|
stroke: color-mix(in srgb, var(--roxy-accent, #f59e0b) 45%, transparent);
|
|
3880
4430
|
stroke-width: 0.8;
|
|
3881
4431
|
}
|
|
3882
|
-
`],p([
|
|
4432
|
+
`],p([g({attribute:!1})],Q.prototype,"data",2),p([g({type:String,reflect:!0,attribute:"chart-style"})],Q.prototype,"chartStyle",2),Q=p([f("roxy-vedic-kundli")],Q);var qt=["Lagna","Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn","Rahu","Ketu"],me=class extends u{constructor(){super(...arguments);this.data=null}orderedRows(){let e=this.data?.meta??{},r=new Set,a=[];for(let o of qt){let l=e[o];l&&(a.push([o,l]),r.add(o))}for(let[o,l]of Object.entries(e))r.has(o)||a.push([o,l]);return a}render(){if(!this.data?.meta)return t`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.orderedRows();return t`<div class="wrap" aria-label="Vedic planetary positions" tabindex="0">
|
|
4433
|
+
<header class="head">
|
|
4434
|
+
<h2 class="title">Planetary positions</h2>
|
|
4435
|
+
</header>
|
|
4436
|
+
<table role="table">
|
|
4437
|
+
<thead>
|
|
4438
|
+
<tr>
|
|
4439
|
+
<th scope="col">Graha</th>
|
|
4440
|
+
<th scope="col">Rashi</th>
|
|
4441
|
+
<th scope="col">Degree</th>
|
|
4442
|
+
<th scope="col">Nakshatra</th>
|
|
4443
|
+
<th scope="col">Pada</th>
|
|
4444
|
+
<th scope="col">Nak. lord</th>
|
|
4445
|
+
<th scope="col">House</th>
|
|
4446
|
+
<th scope="col">Avastha</th>
|
|
4447
|
+
<th scope="col">Retro</th>
|
|
4448
|
+
</tr>
|
|
4449
|
+
</thead>
|
|
4450
|
+
<tbody>
|
|
4451
|
+
${e.map(([r,a])=>{let o=(a.graha??r)==="Lagna",l=L[A(a.graha??r)]??"",d=N[A(a.rashi??"")]??"";return t`<tr class=${o?"lagna":""}>
|
|
4452
|
+
<td class="graha">
|
|
4453
|
+
${l?t`<span class="glyph">${l}</span>`:n}${a.graha??r}
|
|
4454
|
+
</td>
|
|
4455
|
+
<td>
|
|
4456
|
+
${d?t`<span class="glyph">${d}</span>`:n}${a.rashi??""}
|
|
4457
|
+
</td>
|
|
4458
|
+
<td class="num">
|
|
4459
|
+
${typeof a.longitude=="number"?Ue(a.longitude):""}
|
|
4460
|
+
</td>
|
|
4461
|
+
<td>${a.nakshatra?.name??""}</td>
|
|
4462
|
+
<td class="num">${a.nakshatra?.pada??""}</td>
|
|
4463
|
+
<td>${a.nakshatra?.lord??""}</td>
|
|
4464
|
+
<td class="num">${typeof a.house=="number"?a.house:""}</td>
|
|
4465
|
+
<td>${a.awastha??""}</td>
|
|
4466
|
+
<td>${a.isRetrograde?t`<span class="retro">R</span>`:n}</td>
|
|
4467
|
+
</tr>`})}
|
|
4468
|
+
</tbody>
|
|
4469
|
+
</table>
|
|
4470
|
+
</div>`}};me.styles=[v,x`
|
|
4471
|
+
.wrap {
|
|
4472
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
4473
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
4474
|
+
background: var(--roxy-bg, #fff);
|
|
4475
|
+
overflow: auto;
|
|
4476
|
+
box-shadow: var(--roxy-shadow-sm);
|
|
4477
|
+
}
|
|
4478
|
+
.head {
|
|
4479
|
+
padding: var(--roxy-space-md, 1rem);
|
|
4480
|
+
border-bottom: 1px solid var(--roxy-border, #e4e4e7);
|
|
4481
|
+
}
|
|
4482
|
+
.title {
|
|
4483
|
+
margin: 0;
|
|
4484
|
+
font-size: var(--roxy-text-lg, 1.125rem);
|
|
4485
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4486
|
+
}
|
|
4487
|
+
table {
|
|
4488
|
+
width: 100%;
|
|
4489
|
+
border-collapse: collapse;
|
|
4490
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
4491
|
+
min-width: 620px;
|
|
4492
|
+
}
|
|
4493
|
+
thead {
|
|
4494
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 20%, transparent);
|
|
4495
|
+
}
|
|
4496
|
+
th,
|
|
4497
|
+
td {
|
|
4498
|
+
padding: var(--roxy-space-sm, 0.5rem) var(--roxy-space-md, 1rem);
|
|
4499
|
+
text-align: left;
|
|
4500
|
+
white-space: nowrap;
|
|
4501
|
+
}
|
|
4502
|
+
th {
|
|
4503
|
+
color: var(--roxy-muted, #71717a);
|
|
4504
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4505
|
+
text-transform: uppercase;
|
|
4506
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
4507
|
+
letter-spacing: 0.04em;
|
|
4508
|
+
}
|
|
4509
|
+
tbody tr {
|
|
4510
|
+
border-top: 1px solid var(--roxy-border, #e4e4e7);
|
|
4511
|
+
}
|
|
4512
|
+
tbody tr.lagna {
|
|
4513
|
+
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 10%, transparent);
|
|
4514
|
+
}
|
|
4515
|
+
td.graha {
|
|
4516
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4517
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
4518
|
+
}
|
|
4519
|
+
.glyph {
|
|
4520
|
+
margin-right: 0.4em;
|
|
4521
|
+
color: var(--roxy-muted, #71717a);
|
|
4522
|
+
}
|
|
4523
|
+
/* On the tinted Lagna row the muted glyph drops below the WCAG AA
|
|
4524
|
+
contrast floor, so use the accent foreground there instead. */
|
|
4525
|
+
tbody tr.lagna .glyph {
|
|
4526
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
4527
|
+
}
|
|
4528
|
+
.retro {
|
|
4529
|
+
color: var(--roxy-warning-fg, #9a3412);
|
|
4530
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
4531
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4532
|
+
}
|
|
4533
|
+
.num {
|
|
4534
|
+
font-variant-numeric: tabular-nums;
|
|
4535
|
+
}
|
|
4536
|
+
`],p([g({attribute:!1})],me.prototype,"data",2),me=p([f("roxy-vedic-planets-table")],me);var he=class extends u{constructor(){super(...arguments);this.data=null}rows(){let e=this.data;if(!e)return[];let r=(e.planets??[]).map(a=>({name:a.name,sign:a.sign,longitude:a.longitude,house:a.house,speed:a.speed,isRetrograde:a.isRetrograde}));for(let[a,o]of[["Ascendant",e.ascendant],["Midheaven",e.midheaven],["Part of Fortune",e.partOfFortune],["Vertex",e.vertex]])o&&r.push({name:a,sign:o.sign,longitude:o.longitude,isPoint:!0});return r}render(){if(!this.data?.planets)return t`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.rows();return t`<div class="wrap" aria-label="Western planetary positions" tabindex="0">
|
|
4537
|
+
<header class="head">
|
|
4538
|
+
<h2 class="title">Planetary positions</h2>
|
|
4539
|
+
</header>
|
|
4540
|
+
<table role="table">
|
|
4541
|
+
<thead>
|
|
4542
|
+
<tr>
|
|
4543
|
+
<th scope="col">Body</th>
|
|
4544
|
+
<th scope="col">Sign</th>
|
|
4545
|
+
<th scope="col">Degree</th>
|
|
4546
|
+
<th scope="col">House</th>
|
|
4547
|
+
<th scope="col">Motion</th>
|
|
4548
|
+
</tr>
|
|
4549
|
+
</thead>
|
|
4550
|
+
<tbody>
|
|
4551
|
+
${e.map(r=>{let a=L[A(r.name)]??"",o=N[A(r.sign??"")]??"",l=typeof r.speed=="number"?w(r.speed,3):"";return t`<tr class=${r.isPoint?"point":""}>
|
|
4552
|
+
<td class="body">
|
|
4553
|
+
${a?t`<span class="glyph">${a}</span>`:n}${r.name}
|
|
4554
|
+
</td>
|
|
4555
|
+
<td>
|
|
4556
|
+
${o?t`<span class="glyph">${o}</span>`:n}${r.sign??""}
|
|
4557
|
+
</td>
|
|
4558
|
+
<td class="num">
|
|
4559
|
+
${typeof r.longitude=="number"?Ue(r.longitude):""}
|
|
4560
|
+
</td>
|
|
4561
|
+
<td class="num">${typeof r.house=="number"?r.house:""}</td>
|
|
4562
|
+
<td class="num">
|
|
4563
|
+
${l?t`${l}°/day`:n}
|
|
4564
|
+
${r.isRetrograde?t`<span class="retro"> ℞</span>`:n}
|
|
4565
|
+
</td>
|
|
4566
|
+
</tr>`})}
|
|
4567
|
+
</tbody>
|
|
4568
|
+
</table>
|
|
4569
|
+
</div>`}};he.styles=[v,x`
|
|
4570
|
+
.wrap {
|
|
4571
|
+
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
4572
|
+
border-radius: var(--roxy-radius-md, 8px);
|
|
4573
|
+
background: var(--roxy-bg, #fff);
|
|
4574
|
+
overflow: auto;
|
|
4575
|
+
box-shadow: var(--roxy-shadow-sm);
|
|
4576
|
+
}
|
|
4577
|
+
.head {
|
|
4578
|
+
padding: var(--roxy-space-md, 1rem);
|
|
4579
|
+
border-bottom: 1px solid var(--roxy-border, #e4e4e7);
|
|
4580
|
+
}
|
|
4581
|
+
.title {
|
|
4582
|
+
margin: 0;
|
|
4583
|
+
font-size: var(--roxy-text-lg, 1.125rem);
|
|
4584
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4585
|
+
}
|
|
4586
|
+
table {
|
|
4587
|
+
width: 100%;
|
|
4588
|
+
border-collapse: collapse;
|
|
4589
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
4590
|
+
min-width: 460px;
|
|
4591
|
+
}
|
|
4592
|
+
thead {
|
|
4593
|
+
background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 20%, transparent);
|
|
4594
|
+
}
|
|
4595
|
+
th,
|
|
4596
|
+
td {
|
|
4597
|
+
padding: var(--roxy-space-sm, 0.5rem) var(--roxy-space-md, 1rem);
|
|
4598
|
+
text-align: left;
|
|
4599
|
+
white-space: nowrap;
|
|
4600
|
+
}
|
|
4601
|
+
th {
|
|
4602
|
+
color: var(--roxy-muted, #71717a);
|
|
4603
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4604
|
+
text-transform: uppercase;
|
|
4605
|
+
font-size: var(--roxy-text-xs, 0.75rem);
|
|
4606
|
+
letter-spacing: 0.04em;
|
|
4607
|
+
}
|
|
4608
|
+
tbody tr {
|
|
4609
|
+
border-top: 1px solid var(--roxy-border, #e4e4e7);
|
|
4610
|
+
}
|
|
4611
|
+
tbody tr.point {
|
|
4612
|
+
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 8%, transparent);
|
|
4613
|
+
}
|
|
4614
|
+
td.body {
|
|
4615
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4616
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
4617
|
+
}
|
|
4618
|
+
.glyph {
|
|
4619
|
+
margin-right: 0.4em;
|
|
4620
|
+
color: var(--roxy-muted, #71717a);
|
|
4621
|
+
}
|
|
4622
|
+
.retro {
|
|
4623
|
+
color: var(--roxy-danger, #dc2626);
|
|
4624
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
4625
|
+
}
|
|
4626
|
+
.num {
|
|
4627
|
+
font-variant-numeric: tabular-nums;
|
|
4628
|
+
}
|
|
4629
|
+
`],p([g({attribute:!1})],he.prototype,"data",2),he=p([f("roxy-western-planets-table")],he);var ee=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">
|
|
3883
4630
|
<p class="detail-name">
|
|
3884
4631
|
${e.name}
|
|
3885
4632
|
${e.quality?this.renderQualityChip(e.quality):n}
|
|
@@ -3889,10 +4636,10 @@
|
|
|
3889
4636
|
<summary>Effects</summary>
|
|
3890
4637
|
<div class="result-body">${e.result}</div>
|
|
3891
4638
|
</details>`:n}
|
|
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
|
|
4639
|
+
</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 a=e;return t`<div class="wrap">${this.renderDetailCard(a)}</div>`}if("yogas"in e&&Array.isArray(e.yogas)){let a=e.yogas;if(a.length>0&&"description"in a[0]){let m=a,y=r?m.filter(b=>b.name.toLowerCase().includes(r)):m,h=e.total;return t`<div class="wrap">
|
|
3893
4640
|
<div class="head">
|
|
3894
4641
|
<h2 class="title">Yoga catalog</h2>
|
|
3895
|
-
${
|
|
4642
|
+
${h!==void 0?t`<span class="count">${h} total</span>`:n}
|
|
3896
4643
|
</div>
|
|
3897
4644
|
<div class="search-wrap">
|
|
3898
4645
|
<input
|
|
@@ -3910,9 +4657,9 @@
|
|
|
3910
4657
|
aria-live="polite"
|
|
3911
4658
|
aria-label="Yoga results"
|
|
3912
4659
|
>
|
|
3913
|
-
${
|
|
4660
|
+
${y.length>0?y.map(b=>this.renderDetailCard(b)):t`<p class="no-results">No yogas match your search.</p>`}
|
|
3914
4661
|
</div>
|
|
3915
|
-
</div>`}let l=
|
|
4662
|
+
</div>`}let l=a,d=r?l.filter(m=>m.name.toLowerCase().includes(r)):l,c=e.total;return t`<div class="wrap">
|
|
3916
4663
|
<div class="head">
|
|
3917
4664
|
<h2 class="title">Yoga catalog</h2>
|
|
3918
4665
|
${c!==void 0?t`<span class="count">${c} total</span>`:n}
|
|
@@ -3938,7 +4685,7 @@
|
|
|
3938
4685
|
<span class="yoga-id">${m.id}</span>
|
|
3939
4686
|
</div>`):t`<p class="no-results">No yogas match your search.</p>`}
|
|
3940
4687
|
</div>
|
|
3941
|
-
</div>`}return t`<div class="roxy-empty" role="status">No yoga data</div>`}};
|
|
4688
|
+
</div>`}return t`<div class="roxy-empty" role="status">No yoga data</div>`}};ee.styles=[v,x`
|
|
3942
4689
|
.wrap {
|
|
3943
4690
|
display: grid;
|
|
3944
4691
|
gap: var(--roxy-space-md, 1rem);
|
|
@@ -4086,7 +4833,7 @@
|
|
|
4086
4833
|
display: grid;
|
|
4087
4834
|
gap: var(--roxy-space-sm, 0.5rem);
|
|
4088
4835
|
}
|
|
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);})();
|
|
4836
|
+
`],p([g({attribute:!1})],ee.prototype,"data",2),p([C()],ee.prototype,"filter",2),ee=p([f("roxy-yoga-list")],ee);var Qe=[{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:"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:"RoxyWesternPlanetsTable",tag:"roxy-western-planets-table",slug:"western-planets-table",heading:"Western planets",description:"Western planetary positions table with sign, degree, house, and motion plus the chart angles",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Sign, degree, house, motion columns plus ASC, MC, PoF, Vertex",topic:"Astrology"},{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:"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:"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:"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:"RoxyVedicKundli",tag:"roxy-vedic-kundli",slug:"vedic-kundli",heading:"Vedic kundli",description:"South, North, or East Indian Vedic kundli for /vedic-astrology/birth-chart with per-planet degree and nakshatra detail",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"South, North, or East Indian kundli with degree detail",topic:"Vedic"},{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:"RoxyKpChart",tag:"roxy-kp-chart",slug:"kp-chart",heading:"KP chart",description:"Full KP chart with Ascendant, Placidus cusps, and planets in tabbed stellar-hierarchy tables",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/chart",docsSummary:"Ascendant, cusps, and planets with KP stellar hierarchy",topic:"Vedic"},{pascal:"RoxyVedicPlanetsTable",tag:"roxy-vedic-planets-table",slug:"vedic-planets-table",heading:"Vedic planets",description:"Vedic planetary positions table with degree, nakshatra, pada, nakshatra lord, bhava, and avastha",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"Degree, nakshatra, pada, lord, bhava, avastha columns",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:"RoxyKpRulingPlanets",tag:"roxy-kp-ruling-planets",slug:"kp-ruling-planets",heading:"KP ruling planets",description:"KP ruling planets with day lord, Moon and Lagna stellar hierarchies, and house significators",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/ruling-planets",docsSummary:"Day lord, Moon/Lagna hierarchies, ruling planets, significators",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:"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:"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:"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:"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:"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:"RoxyNakshatraCard",tag:"roxy-nakshatra-card",slug:"nakshatra-card",heading:"Nakshatra",description:"Nakshatra reference card with lord, deity, symbol, characteristics, and remedies",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/nakshatras/{id}",docsSummary:"Lord, deity, symbol, characteristics, remedies",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:"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 Zr="0.3.0";var Kt=Qe.map(i=>i.slug);return at(Ut);})();
|
|
4090
4837
|
/*! Bundled license information:
|
|
4091
4838
|
|
|
4092
4839
|
@lit/reactive-element/css-tag.js:
|