@roxyapi/ui 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +13 -0
- package/README.md +1 -1
- package/THEMING.md +1 -1
- package/dist/cdn/components/ashtakavarga-grid.js +1 -1
- package/dist/cdn/components/ashtakavarga-grid.js.map +2 -2
- package/dist/cdn/components/biorhythm-chart.js +3 -3
- package/dist/cdn/components/biorhythm-chart.js.map +2 -2
- package/dist/cdn/components/choghadiya-grid.js +1 -1
- package/dist/cdn/components/choghadiya-grid.js.map +2 -2
- package/dist/cdn/components/compatibility-card.js +1 -1
- package/dist/cdn/components/compatibility-card.js.map +2 -2
- package/dist/cdn/components/dasha-timeline.js +3 -3
- package/dist/cdn/components/dasha-timeline.js.map +4 -4
- package/dist/cdn/components/divisional-chart.js +67 -1
- package/dist/cdn/components/divisional-chart.js.map +2 -2
- package/dist/cdn/components/endpoint-form.js +2 -2
- package/dist/cdn/components/endpoint-form.js.map +2 -2
- package/dist/cdn/components/guna-milan.js +1 -1
- package/dist/cdn/components/guna-milan.js.map +2 -2
- package/dist/cdn/components/hexagram.js +1 -1
- package/dist/cdn/components/hexagram.js.map +2 -2
- package/dist/cdn/components/horoscope-card.js +1 -1
- package/dist/cdn/components/horoscope-card.js.map +2 -2
- package/dist/cdn/components/kp-chart.js +1 -1
- package/dist/cdn/components/kp-chart.js.map +2 -2
- package/dist/cdn/components/kp-ruling-planets.js +1 -1
- package/dist/cdn/components/kp-ruling-planets.js.map +2 -2
- package/dist/cdn/components/location-search.js +1 -1
- package/dist/cdn/components/location-search.js.map +2 -2
- package/dist/cdn/components/nakshatra-card.js +1 -1
- package/dist/cdn/components/nakshatra-card.js.map +2 -2
- package/dist/cdn/components/natal-chart.js +12 -3
- package/dist/cdn/components/natal-chart.js.map +2 -2
- package/dist/cdn/components/numerology-card.js +2 -2
- package/dist/cdn/components/numerology-card.js.map +2 -2
- package/dist/cdn/components/panchang-table.js +3 -3
- package/dist/cdn/components/panchang-table.js.map +3 -3
- package/dist/cdn/components/shadbala-table.js +1 -1
- package/dist/cdn/components/shadbala-table.js.map +2 -2
- package/dist/cdn/components/synastry-chart.js +8 -2
- package/dist/cdn/components/synastry-chart.js.map +2 -2
- package/dist/cdn/components/transits-table.js +2 -2
- package/dist/cdn/components/transits-table.js.map +2 -2
- package/dist/cdn/components/vedic-kundli.js +67 -1
- package/dist/cdn/components/vedic-kundli.js.map +2 -2
- package/dist/cdn/components/vedic-planets-table.js +3 -3
- package/dist/cdn/components/vedic-planets-table.js.map +4 -4
- package/dist/cdn/components/yoga-list.js +2 -2
- package/dist/cdn/components/yoga-list.js.map +2 -2
- package/dist/cdn/roxy-ui.js +84 -3
- package/dist/cdn/roxy-ui.js.map +4 -4
- package/dist/components/ashtakavarga-grid.js +1 -1
- package/dist/components/ashtakavarga-grid.js.map +3 -3
- package/dist/components/biorhythm-chart.js +1 -1
- package/dist/components/biorhythm-chart.js.map +2 -2
- package/dist/components/choghadiya-grid.js +1 -1
- package/dist/components/choghadiya-grid.js.map +2 -2
- package/dist/components/compatibility-card.js +1 -1
- package/dist/components/compatibility-card.js.map +2 -2
- package/dist/components/dasha-timeline.d.ts.map +1 -1
- package/dist/components/dasha-timeline.js +1 -1
- package/dist/components/dasha-timeline.js.map +4 -4
- package/dist/components/divisional-chart.js +67 -1
- package/dist/components/divisional-chart.js.map +2 -2
- package/dist/components/endpoint-form.js +1 -1
- package/dist/components/endpoint-form.js.map +2 -2
- package/dist/components/guna-milan.js +1 -1
- package/dist/components/guna-milan.js.map +2 -2
- package/dist/components/hexagram.js +1 -1
- package/dist/components/hexagram.js.map +2 -2
- package/dist/components/horoscope-card.js +1 -1
- package/dist/components/horoscope-card.js.map +2 -2
- package/dist/components/kp-chart.js +1 -1
- package/dist/components/kp-chart.js.map +2 -2
- package/dist/components/kp-ruling-planets.js +1 -1
- package/dist/components/kp-ruling-planets.js.map +2 -2
- package/dist/components/location-search.js +1 -1
- package/dist/components/location-search.js.map +2 -2
- package/dist/components/nakshatra-card.js +1 -1
- package/dist/components/nakshatra-card.js.map +2 -2
- package/dist/components/natal-chart.js +10 -1
- package/dist/components/natal-chart.js.map +2 -2
- package/dist/components/numerology-card.js +1 -1
- package/dist/components/numerology-card.js.map +2 -2
- package/dist/components/panchang-table.d.ts +22 -1
- package/dist/components/panchang-table.d.ts.map +1 -1
- package/dist/components/panchang-table.js +1 -1
- package/dist/components/panchang-table.js.map +3 -3
- package/dist/components/shadbala-table.js +1 -1
- package/dist/components/shadbala-table.js.map +2 -2
- package/dist/components/synastry-chart.js +7 -1
- package/dist/components/synastry-chart.js.map +2 -2
- package/dist/components/transits-table.js +1 -1
- package/dist/components/transits-table.js.map +2 -2
- package/dist/components/vedic-kundli.js +67 -1
- package/dist/components/vedic-kundli.js.map +2 -2
- package/dist/components/vedic-planets-table.d.ts +14 -0
- package/dist/components/vedic-planets-table.d.ts.map +1 -1
- package/dist/components/vedic-planets-table.js +1 -1
- package/dist/components/vedic-planets-table.js.map +4 -4
- package/dist/components/yoga-list.js +1 -1
- package/dist/components/yoga-list.js.map +2 -2
- package/dist/index.cjs +82 -1
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +82 -1
- package/dist/index.js.map +4 -4
- package/dist/styles/tokens.css +4 -4
- package/dist/types/types.gen.d.ts +679 -40
- package/dist/types/types.gen.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/ashtakavarga-grid.ts +1 -1
- package/src/components/biorhythm-chart.ts +1 -1
- package/src/components/choghadiya-grid.ts +1 -1
- package/src/components/compatibility-card.ts +2 -2
- package/src/components/dasha-timeline.ts +10 -19
- package/src/components/endpoint-form.ts +2 -2
- package/src/components/guna-milan.ts +1 -1
- package/src/components/hexagram.ts +3 -3
- package/src/components/horoscope-card.ts +1 -1
- package/src/components/kp-chart.ts +1 -1
- package/src/components/kp-ruling-planets.ts +1 -1
- package/src/components/location-search.ts +1 -1
- package/src/components/nakshatra-card.ts +1 -1
- package/src/components/natal-chart.ts +5 -5
- package/src/components/numerology-card.ts +2 -2
- package/src/components/panchang-table.ts +112 -18
- package/src/components/shadbala-table.ts +1 -1
- package/src/components/synastry-chart.ts +4 -4
- package/src/components/transits-table.ts +1 -1
- package/src/components/vedic-planets-table.ts +221 -3
- package/src/components/yoga-list.ts +1 -1
- package/src/styles/tokens.css +4 -4
- package/src/types/types.gen.ts +680 -41
- package/src/utils/kundli-styles.ts +2 -2
- package/src/utils/tablist.ts +1 -1
- package/src/version.ts +1 -1
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const ROXY_UI_VERSION = "0.
|
|
1
|
+
export declare const ROXY_UI_VERSION = "0.7.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roxyapi/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Web components for the RoxyAPI catalog. Drop-in charts, tables, cards, forms for astrology, tarot, numerology, biorhythm, I Ching, crystals, dreams, angel numbers, and more. One key, beautiful in 30 minutes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -70,7 +70,7 @@ export class RoxyAshtakavargaGrid extends LitElement {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.tab[aria-selected='true'] {
|
|
73
|
-
color: var(--roxy-accent-
|
|
73
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
74
74
|
border-bottom-color: var(--roxy-accent, #f59e0b);
|
|
75
75
|
font-weight: var(--roxy-weight-bold, 600);
|
|
76
76
|
}
|
|
@@ -104,7 +104,7 @@ export class RoxyChoghadiyaGrid extends LitElement {
|
|
|
104
104
|
margin-left: 0.4em;
|
|
105
105
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
106
106
|
font-weight: var(--roxy-weight-bold, 600);
|
|
107
|
-
color: var(--roxy-accent-
|
|
107
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
108
108
|
text-transform: uppercase;
|
|
109
109
|
letter-spacing: 0.06em;
|
|
110
110
|
}
|
|
@@ -50,7 +50,7 @@ export class RoxyCompatibilityCard extends LitElement {
|
|
|
50
50
|
font-variant-numeric: tabular-nums;
|
|
51
51
|
font-size: 2rem;
|
|
52
52
|
font-weight: var(--roxy-weight-bold, 600);
|
|
53
|
-
color: var(--roxy-accent-
|
|
53
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
54
54
|
line-height: 1;
|
|
55
55
|
}
|
|
56
56
|
.rating {
|
|
@@ -86,7 +86,7 @@ export class RoxyCompatibilityCard extends LitElement {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
.archetype {
|
|
89
|
-
color: var(--roxy-accent-
|
|
89
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
90
90
|
font-weight: var(--roxy-weight-bold, 600);
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -6,7 +6,6 @@ import type {
|
|
|
6
6
|
GetSubDashasResponse,
|
|
7
7
|
} from '../types/index.js';
|
|
8
8
|
import { baseStyles } from '../utils/base-styles.js';
|
|
9
|
-
import { chevron, disclosureStyles } from '../utils/disclosure.js';
|
|
10
9
|
import { formatNumber } from '../utils/format.js';
|
|
11
10
|
import { MarkupDataController } from '../utils/markup-data.js';
|
|
12
11
|
|
|
@@ -26,7 +25,6 @@ type DashaPeriod = GetMajorDashasResponse['mahadashas'][number];
|
|
|
26
25
|
export class RoxyDashaTimeline extends LitElement {
|
|
27
26
|
static styles = [
|
|
28
27
|
baseStyles,
|
|
29
|
-
disclosureStyles,
|
|
30
28
|
css`
|
|
31
29
|
.wrap {
|
|
32
30
|
display: grid;
|
|
@@ -90,14 +88,14 @@ export class RoxyDashaTimeline extends LitElement {
|
|
|
90
88
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
91
89
|
}
|
|
92
90
|
.bar.now strong {
|
|
93
|
-
color: var(--roxy-accent-
|
|
91
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
94
92
|
}
|
|
95
93
|
.now-badge {
|
|
96
94
|
display: inline-block;
|
|
97
95
|
margin-left: 0.4em;
|
|
98
96
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
99
97
|
font-weight: var(--roxy-weight-bold, 600);
|
|
100
|
-
color: var(--roxy-accent-
|
|
98
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
101
99
|
text-transform: uppercase;
|
|
102
100
|
letter-spacing: 0.06em;
|
|
103
101
|
}
|
|
@@ -125,7 +123,7 @@ export class RoxyDashaTimeline extends LitElement {
|
|
|
125
123
|
top: -2px;
|
|
126
124
|
bottom: -2px;
|
|
127
125
|
width: 2px;
|
|
128
|
-
background: var(--roxy-accent-
|
|
126
|
+
background: var(--roxy-accent-ink, #b45309);
|
|
129
127
|
border-radius: 2px;
|
|
130
128
|
box-shadow: 0 0 0 2px
|
|
131
129
|
color-mix(in srgb, var(--roxy-accent, #f59e0b) 35%, transparent);
|
|
@@ -136,22 +134,18 @@ export class RoxyDashaTimeline extends LitElement {
|
|
|
136
134
|
font-variant-numeric: tabular-nums;
|
|
137
135
|
text-align: right;
|
|
138
136
|
}
|
|
139
|
-
|
|
137
|
+
.interp {
|
|
140
138
|
border: 1px solid var(--roxy-border, #e4e4e7);
|
|
141
139
|
border-radius: var(--roxy-radius-md, 8px);
|
|
142
140
|
padding: var(--roxy-space-sm, 0.5rem) var(--roxy-space-md, 1rem);
|
|
143
141
|
background: var(--roxy-bg, #fff);
|
|
144
142
|
}
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
.interp h3 {
|
|
144
|
+
margin: 0;
|
|
147
145
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
148
146
|
font-weight: var(--roxy-weight-bold, 600);
|
|
149
|
-
display: flex;
|
|
150
|
-
align-items: center;
|
|
151
|
-
justify-content: space-between;
|
|
152
|
-
gap: var(--roxy-space-md, 1rem);
|
|
153
147
|
}
|
|
154
|
-
|
|
148
|
+
.interp p {
|
|
155
149
|
margin: var(--roxy-space-sm, 0.5rem) 0 0;
|
|
156
150
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
157
151
|
color: var(--roxy-muted, #71717a);
|
|
@@ -238,13 +232,10 @@ export class RoxyDashaTimeline extends LitElement {
|
|
|
238
232
|
private renderActiveInterpretation(periods: DashaPeriod[]) {
|
|
239
233
|
const active = periods.find((p) => this.isCurrent(p));
|
|
240
234
|
if (!active?.interpretation) return nothing;
|
|
241
|
-
return html`<
|
|
242
|
-
<
|
|
243
|
-
<span>${active.planet} mahadasha interpretation</span>
|
|
244
|
-
${chevron()}
|
|
245
|
-
</summary>
|
|
235
|
+
return html`<div class="interp">
|
|
236
|
+
<h3>${active.planet} mahadasha</h3>
|
|
246
237
|
<p>${active.interpretation}</p>
|
|
247
|
-
</
|
|
238
|
+
</div>`;
|
|
248
239
|
}
|
|
249
240
|
|
|
250
241
|
private renderCurrent(d: DashaData) {
|
|
@@ -125,7 +125,7 @@ export class RoxyEndpointForm extends LitElement {
|
|
|
125
125
|
select:focus {
|
|
126
126
|
outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
|
|
127
127
|
outline-offset: 2px;
|
|
128
|
-
border-color: var(--roxy-accent-
|
|
128
|
+
border-color: var(--roxy-accent-ink, #b45309);
|
|
129
129
|
}
|
|
130
130
|
.help {
|
|
131
131
|
color: var(--roxy-muted, #71717a);
|
|
@@ -146,7 +146,7 @@ export class RoxyEndpointForm extends LitElement {
|
|
|
146
146
|
}
|
|
147
147
|
button.submit {
|
|
148
148
|
justify-self: start;
|
|
149
|
-
background: var(--roxy-accent-
|
|
149
|
+
background: var(--roxy-accent-ink, #b45309);
|
|
150
150
|
color: var(--roxy-bg, #fff);
|
|
151
151
|
border: 0;
|
|
152
152
|
border-radius: var(--roxy-radius-md, 8px);
|
|
@@ -51,7 +51,7 @@ export class RoxyGunaMilan extends LitElement {
|
|
|
51
51
|
.total {
|
|
52
52
|
font-size: 2.25rem;
|
|
53
53
|
font-weight: var(--roxy-weight-bold, 600);
|
|
54
|
-
color: var(--roxy-accent-
|
|
54
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
55
55
|
font-variant-numeric: tabular-nums;
|
|
56
56
|
line-height: 1;
|
|
57
57
|
}
|
|
@@ -53,7 +53,7 @@ export class RoxyHexagram extends LitElement {
|
|
|
53
53
|
.symbol {
|
|
54
54
|
font-size: 3rem;
|
|
55
55
|
line-height: 1;
|
|
56
|
-
color: var(--roxy-accent-
|
|
56
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
57
57
|
}
|
|
58
58
|
.lines {
|
|
59
59
|
display: grid;
|
|
@@ -105,7 +105,7 @@ export class RoxyHexagram extends LitElement {
|
|
|
105
105
|
}
|
|
106
106
|
.tri-glyph {
|
|
107
107
|
font-size: var(--roxy-text-xl, 1.5rem);
|
|
108
|
-
color: var(--roxy-accent-
|
|
108
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
109
109
|
margin-right: 4px;
|
|
110
110
|
vertical-align: middle;
|
|
111
111
|
}
|
|
@@ -131,7 +131,7 @@ export class RoxyHexagram extends LitElement {
|
|
|
131
131
|
margin-top: var(--roxy-space-md, 1rem);
|
|
132
132
|
padding-top: var(--roxy-space-md, 1rem);
|
|
133
133
|
border-top: 1px solid var(--roxy-border, #e4e4e7);
|
|
134
|
-
color: var(--roxy-accent-
|
|
134
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
135
135
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
136
136
|
}
|
|
137
137
|
`,
|
|
@@ -76,7 +76,7 @@ export class RoxyKpChart extends LitElement {
|
|
|
76
76
|
font-family: inherit;
|
|
77
77
|
}
|
|
78
78
|
.tab[aria-selected='true'] {
|
|
79
|
-
color: var(--roxy-accent-
|
|
79
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
80
80
|
border-bottom-color: var(--roxy-accent, #f59e0b);
|
|
81
81
|
font-weight: var(--roxy-weight-bold, 600);
|
|
82
82
|
}
|
|
@@ -50,7 +50,7 @@ export class RoxyLocationSearch extends LitElement {
|
|
|
50
50
|
input:focus {
|
|
51
51
|
outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
|
|
52
52
|
outline-offset: 2px;
|
|
53
|
-
border-color: var(--roxy-accent-
|
|
53
|
+
border-color: var(--roxy-accent-ink, #b45309);
|
|
54
54
|
}
|
|
55
55
|
.spinner {
|
|
56
56
|
position: absolute;
|
|
@@ -35,7 +35,7 @@ export class RoxyNakshatraCard extends LitElement {
|
|
|
35
35
|
font-weight: var(--roxy-weight-bold, 600);
|
|
36
36
|
}
|
|
37
37
|
.number {
|
|
38
|
-
color: var(--roxy-accent-
|
|
38
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
39
39
|
font-size: var(--roxy-text-sm, 0.875rem);
|
|
40
40
|
font-weight: var(--roxy-weight-bold, 600);
|
|
41
41
|
}
|
|
@@ -159,7 +159,7 @@ export class RoxyNatalChart extends LitElement {
|
|
|
159
159
|
stroke: var(--roxy-danger, #dc2626);
|
|
160
160
|
}
|
|
161
161
|
.aspect-conjunction {
|
|
162
|
-
stroke: var(--roxy-accent-
|
|
162
|
+
stroke: var(--roxy-accent-ink, #b45309);
|
|
163
163
|
}
|
|
164
164
|
.aspect-other {
|
|
165
165
|
stroke: var(--roxy-muted, #71717a);
|
|
@@ -167,14 +167,14 @@ export class RoxyNatalChart extends LitElement {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
.angle-marker {
|
|
170
|
-
fill: var(--roxy-accent-
|
|
170
|
+
fill: var(--roxy-accent-ink, #b45309);
|
|
171
171
|
font-size: 10px;
|
|
172
172
|
font-weight: 700;
|
|
173
173
|
font-family: var(--roxy-font-sans);
|
|
174
174
|
letter-spacing: 0.04em;
|
|
175
175
|
}
|
|
176
176
|
.angle-tick {
|
|
177
|
-
stroke: var(--roxy-accent-
|
|
177
|
+
stroke: var(--roxy-accent-ink, #b45309);
|
|
178
178
|
stroke-width: 1.5;
|
|
179
179
|
}
|
|
180
180
|
|
|
@@ -234,7 +234,7 @@ export class RoxyNatalChart extends LitElement {
|
|
|
234
234
|
color: var(--roxy-danger, #dc2626);
|
|
235
235
|
}
|
|
236
236
|
table.aspect-grid td.aspect-conjunction .asp {
|
|
237
|
-
color: var(--roxy-accent-
|
|
237
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
238
238
|
}
|
|
239
239
|
table.aspect-grid td.aspect-other .asp {
|
|
240
240
|
color: var(--roxy-muted, #71717a);
|
|
@@ -363,7 +363,7 @@ export class RoxyNatalChart extends LitElement {
|
|
|
363
363
|
padding: 1px 8px;
|
|
364
364
|
border-radius: 9999px;
|
|
365
365
|
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 14%, transparent);
|
|
366
|
-
color: var(--roxy-accent-
|
|
366
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
367
367
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
368
368
|
}
|
|
369
369
|
`,
|
|
@@ -44,7 +44,7 @@ export class RoxyNumerologyCard extends LitElement {
|
|
|
44
44
|
font-size: 4rem;
|
|
45
45
|
line-height: 1;
|
|
46
46
|
font-weight: var(--roxy-weight-bold, 600);
|
|
47
|
-
color: var(--roxy-accent-
|
|
47
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
48
48
|
font-variant-numeric: tabular-nums;
|
|
49
49
|
}
|
|
50
50
|
.label {
|
|
@@ -106,7 +106,7 @@ export class RoxyNumerologyCard extends LitElement {
|
|
|
106
106
|
text-transform: capitalize;
|
|
107
107
|
}
|
|
108
108
|
.cores .item strong {
|
|
109
|
-
color: var(--roxy-accent-
|
|
109
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
110
110
|
font-variant-numeric: tabular-nums;
|
|
111
111
|
font-size: var(--roxy-text-base, 1rem);
|
|
112
112
|
font-weight: var(--roxy-weight-bold, 600);
|
|
@@ -11,7 +11,18 @@ import { MarkupDataController } from '../utils/markup-data.js';
|
|
|
11
11
|
type PanchangData = GetBasicPanchangResponse | GetDetailedPanchangResponse;
|
|
12
12
|
type PanchangTime = GetDetailedPanchangResponse['rahuKaal'];
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Panchang table for /vedic-astrology/panchang/{basic,detailed}.
|
|
16
|
+
*
|
|
17
|
+
* @remarks
|
|
18
|
+
* The main grid lists the five limbs (tithi, nakshatra, yoga, karana, vara),
|
|
19
|
+
* sun and moon timings, and, in detailed mode, the sunrise placements a reader
|
|
20
|
+
* scans first: Moon rashi, Sun rashi, Sun nakshatra, and the current hora. The
|
|
21
|
+
* detailed mode then groups every timed window into two sections, auspicious
|
|
22
|
+
* (the fixed muhurtas plus each Amrit Kalam) and inauspicious (Rahu Kaal,
|
|
23
|
+
* Yamaganda, Gulika, plus each Dur Muhurta and Varjyam), so a consumer can act
|
|
24
|
+
* on timing without parsing the raw response.
|
|
25
|
+
*/
|
|
15
26
|
@customElement('roxy-panchang-table')
|
|
16
27
|
export class RoxyPanchangTable extends LitElement {
|
|
17
28
|
static styles = [
|
|
@@ -105,6 +116,15 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
105
116
|
];
|
|
106
117
|
if (detailed) fivefold.push(['Vara', this.formatPart(detailed.vara)]);
|
|
107
118
|
|
|
119
|
+
const placements: Array<[string, string]> = detailed
|
|
120
|
+
? [
|
|
121
|
+
['Moon sign', this.formatRashi(detailed.moonSign)],
|
|
122
|
+
['Sun sign', this.formatRashi(detailed.sunSign)],
|
|
123
|
+
['Sun nakshatra', this.formatSunNakshatra(detailed.sunNakshatra)],
|
|
124
|
+
['Hora', this.formatHora(detailed.hora)],
|
|
125
|
+
].filter((row): row is [string, string] => Boolean(row[1]))
|
|
126
|
+
: [];
|
|
127
|
+
|
|
108
128
|
const muhurtas: Array<[string, PanchangTime | undefined]> = detailed
|
|
109
129
|
? [
|
|
110
130
|
['Brahma Muhurta', detailed.brahmaMuhurta],
|
|
@@ -117,6 +137,10 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
117
137
|
]
|
|
118
138
|
: [];
|
|
119
139
|
|
|
140
|
+
const auspiciousWindows: Array<[string, PanchangTime]> = detailed
|
|
141
|
+
? this.expandWindows('Amrit Kalam', detailed.amritKalam)
|
|
142
|
+
: [];
|
|
143
|
+
|
|
120
144
|
const inauspicious: Array<[string, PanchangTime | undefined]> = detailed
|
|
121
145
|
? [
|
|
122
146
|
['Rahu Kaal', detailed.rahuKaal],
|
|
@@ -125,6 +149,13 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
125
149
|
]
|
|
126
150
|
: [];
|
|
127
151
|
|
|
152
|
+
const inauspiciousWindows: Array<[string, PanchangTime]> = detailed
|
|
153
|
+
? [
|
|
154
|
+
...this.expandWindows('Dur Muhurta', detailed.durMuhurta),
|
|
155
|
+
...this.expandWindows('Varjyam', detailed.varjyam),
|
|
156
|
+
]
|
|
157
|
+
: [];
|
|
158
|
+
|
|
128
159
|
const transitions =
|
|
129
160
|
detailed && 'transitions' in detailed ? detailed.transitions : undefined;
|
|
130
161
|
|
|
@@ -173,6 +204,12 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
173
204
|
</tr>`
|
|
174
205
|
: nothing
|
|
175
206
|
}
|
|
207
|
+
${placements.map(
|
|
208
|
+
([k, v]) => html`<tr>
|
|
209
|
+
<th>${k}</th>
|
|
210
|
+
<td>${v}</td>
|
|
211
|
+
</tr>`,
|
|
212
|
+
)}
|
|
176
213
|
</tbody>
|
|
177
214
|
</table>
|
|
178
215
|
${
|
|
@@ -192,32 +229,33 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
192
229
|
}
|
|
193
230
|
${
|
|
194
231
|
this.detail === 'detailed' &&
|
|
195
|
-
(
|
|
232
|
+
(
|
|
233
|
+
muhurtas.some((m) => !!m[1]) ||
|
|
234
|
+
auspiciousWindows.length > 0 ||
|
|
235
|
+
inauspicious.some((m) => !!m[1]) ||
|
|
236
|
+
inauspiciousWindows.length > 0
|
|
237
|
+
)
|
|
196
238
|
? html`
|
|
197
239
|
<div class="section">Auspicious muhurtas</div>
|
|
198
240
|
<table>
|
|
199
241
|
<tbody>
|
|
200
|
-
${
|
|
201
|
-
.filter(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
</tr>`,
|
|
207
|
-
)}
|
|
242
|
+
${this.renderPeriodRows([
|
|
243
|
+
...muhurtas.filter(
|
|
244
|
+
(m): m is [string, PanchangTime] => !!m[1],
|
|
245
|
+
),
|
|
246
|
+
...auspiciousWindows,
|
|
247
|
+
])}
|
|
208
248
|
</tbody>
|
|
209
249
|
</table>
|
|
210
250
|
<div class="section">Inauspicious periods</div>
|
|
211
251
|
<table>
|
|
212
252
|
<tbody>
|
|
213
|
-
${
|
|
214
|
-
.filter(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
</tr>`,
|
|
220
|
-
)}
|
|
253
|
+
${this.renderPeriodRows([
|
|
254
|
+
...inauspicious.filter(
|
|
255
|
+
(m): m is [string, PanchangTime] => !!m[1],
|
|
256
|
+
),
|
|
257
|
+
...inauspiciousWindows,
|
|
258
|
+
])}
|
|
221
259
|
</tbody>
|
|
222
260
|
</table>
|
|
223
261
|
`
|
|
@@ -226,6 +264,31 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
226
264
|
</div>`;
|
|
227
265
|
}
|
|
228
266
|
|
|
267
|
+
/** Renders one row per [label, period] pair, dropping any with no range. */
|
|
268
|
+
private renderPeriodRows(rows: Array<[string, PanchangTime]>) {
|
|
269
|
+
return rows.map(([k, v]) => {
|
|
270
|
+
const range = formatTimeRange(v);
|
|
271
|
+
return range
|
|
272
|
+
? html`<tr>
|
|
273
|
+
<th>${k}</th>
|
|
274
|
+
<td>${range}</td>
|
|
275
|
+
</tr>`
|
|
276
|
+
: nothing;
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/** Expands an array of periods into labeled rows, numbering when more than one. */
|
|
281
|
+
private expandWindows(
|
|
282
|
+
label: string,
|
|
283
|
+
windows: PanchangTime[] | undefined,
|
|
284
|
+
): Array<[string, PanchangTime]> {
|
|
285
|
+
if (!windows || windows.length === 0) return [];
|
|
286
|
+
return windows.map((w, i) => [
|
|
287
|
+
windows.length > 1 ? `${label} ${i + 1}` : label,
|
|
288
|
+
w,
|
|
289
|
+
]);
|
|
290
|
+
}
|
|
291
|
+
|
|
229
292
|
private renderTransitionRow(
|
|
230
293
|
label: string,
|
|
231
294
|
t: { endsAt?: string; next?: string } | undefined,
|
|
@@ -260,8 +323,39 @@ export class RoxyPanchangTable extends LitElement {
|
|
|
260
323
|
}
|
|
261
324
|
return String(v);
|
|
262
325
|
}
|
|
326
|
+
|
|
327
|
+
/** "English (Sanskrit)" label for the Moon or Sun rashi at sunrise. */
|
|
328
|
+
private formatRashi(r: RashiPlacement | undefined): string {
|
|
329
|
+
if (!r?.name) return '';
|
|
330
|
+
return r.sanskritName && r.sanskritName !== r.name
|
|
331
|
+
? `${r.name} (${r.sanskritName})`
|
|
332
|
+
: r.name;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/** Sun nakshatra with pada and lord, the form a panchang reader expects. */
|
|
336
|
+
private formatSunNakshatra(n: SunNakshatra | undefined): string {
|
|
337
|
+
if (!n?.name) return '';
|
|
338
|
+
const parts = [
|
|
339
|
+
n.name,
|
|
340
|
+
typeof n.pada === 'number' ? `pada ${n.pada}` : '',
|
|
341
|
+
n.lord ? `· ${n.lord}` : '',
|
|
342
|
+
].filter(Boolean);
|
|
343
|
+
return parts.join(' ');
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/** Current planetary hora with its active window. */
|
|
347
|
+
private formatHora(h: Hora | undefined): string {
|
|
348
|
+
if (!h?.current) return '';
|
|
349
|
+
const range = formatTimeRange(h);
|
|
350
|
+
return range ? `${h.current} (${range})` : h.current;
|
|
351
|
+
}
|
|
263
352
|
}
|
|
264
353
|
|
|
354
|
+
type PanchangPlacements = GetDetailedPanchangResponse;
|
|
355
|
+
type RashiPlacement = PanchangPlacements['moonSign'];
|
|
356
|
+
type SunNakshatra = PanchangPlacements['sunNakshatra'];
|
|
357
|
+
type Hora = PanchangPlacements['hora'];
|
|
358
|
+
|
|
265
359
|
declare global {
|
|
266
360
|
interface HTMLElementTagNameMap {
|
|
267
361
|
'roxy-panchang-table': RoxyPanchangTable;
|
|
@@ -149,7 +149,7 @@ export class RoxyShadbalaTable extends LitElement {
|
|
|
149
149
|
|
|
150
150
|
.rank-badge {
|
|
151
151
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
152
|
-
color: var(--roxy-accent-
|
|
152
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
153
153
|
font-weight: var(--roxy-weight-bold, 600);
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -66,7 +66,7 @@ export class RoxySynastryChart extends LitElement {
|
|
|
66
66
|
.score {
|
|
67
67
|
font-variant-numeric: tabular-nums;
|
|
68
68
|
font-weight: var(--roxy-weight-bold, 600);
|
|
69
|
-
color: var(--roxy-accent-
|
|
69
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
70
70
|
font-size: var(--roxy-text-xl, 1.5rem);
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -111,12 +111,12 @@ export class RoxySynastryChart extends LitElement {
|
|
|
111
111
|
fill: var(--roxy-danger, #dc2626);
|
|
112
112
|
}
|
|
113
113
|
.asc-tick {
|
|
114
|
-
stroke: var(--roxy-accent-
|
|
114
|
+
stroke: var(--roxy-accent-ink, #b45309);
|
|
115
115
|
stroke-width: 1;
|
|
116
116
|
opacity: 0.75;
|
|
117
117
|
}
|
|
118
118
|
.asc-label {
|
|
119
|
-
fill: var(--roxy-accent-
|
|
119
|
+
fill: var(--roxy-accent-ink, #b45309);
|
|
120
120
|
font-size: 9px;
|
|
121
121
|
font-weight: 700;
|
|
122
122
|
font-family: var(--roxy-font-sans);
|
|
@@ -136,7 +136,7 @@ export class RoxySynastryChart extends LitElement {
|
|
|
136
136
|
stroke: var(--roxy-danger, #dc2626);
|
|
137
137
|
}
|
|
138
138
|
.aspect-conjunction {
|
|
139
|
-
stroke: var(--roxy-accent-
|
|
139
|
+
stroke: var(--roxy-accent-ink, #b45309);
|
|
140
140
|
}
|
|
141
141
|
.aspect-other {
|
|
142
142
|
stroke: var(--roxy-muted, #71717a);
|
|
@@ -194,7 +194,7 @@ export class RoxyTransitsTable extends LitElement {
|
|
|
194
194
|
padding: 1px 8px;
|
|
195
195
|
border-radius: 9999px;
|
|
196
196
|
background: color-mix(in srgb, var(--roxy-accent, #f59e0b) 14%, transparent);
|
|
197
|
-
color: var(--roxy-accent-
|
|
197
|
+
color: var(--roxy-accent-ink, #b45309);
|
|
198
198
|
font-size: var(--roxy-text-xs, 0.75rem);
|
|
199
199
|
}
|
|
200
200
|
.nature-badge {
|