@roxyapi/ui 0.3.0 → 0.3.1

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 CHANGED
@@ -1,6 +1,10 @@
1
1
  # AGENTS.md
2
2
 
3
- This file teaches AI coding agents (Claude Code, Cursor, Copilot, Codex, Gemini CLI) how to use Roxy UI when integrating RoxyAPI into a project.
3
+ This file teaches AI coding agents (Claude Code, Cursor, Copilot, Codex, Gemini CLI, and any MCP-compatible client) how to use Roxy UI when integrating RoxyAPI into a project.
4
+
5
+ This file ships inside both `@roxyapi/ui` and `@roxyapi/ui-react` on npm. After install, read it at `node_modules/@roxyapi/ui/AGENTS.md`.
6
+
7
+ Live preview: <https://roxyapi.github.io/ui/>. Source of truth for component types: the OpenAPI spec at `roxyapi.com/openapi.json`, regenerated into `packages/ui/src/types/types.gen.ts`.
4
8
 
5
9
  ## Identity
6
10
 
@@ -8,7 +12,36 @@ Roxy UI is the official web component library for the RoxyAPI catalog. Component
8
12
 
9
13
  ## Decision tree for picking a component
10
14
 
11
- Use the table below. Match the user request against the endpoint, render the matching component.
15
+ ### Pick by user phrase
16
+
17
+ Map the natural-language request to a component first; fall back to the table below if the request names a specific endpoint.
18
+
19
+ | If the user says... | Render |
20
+ |---|---|
21
+ | "daily horoscope for `{sign}`", "weekly horoscope", "monthly horoscope" | `<roxy-horoscope-card>` |
22
+ | "birth chart", "natal chart", "Western chart", "show me my planets" | `<roxy-natal-chart>` |
23
+ | "match two birth charts", "compare us in Western astrology", "synastry" | `<roxy-synastry-chart>` |
24
+ | "kundli", "Vedic chart", "rashi chart", "South/North Indian chart" | `<roxy-vedic-kundli>` |
25
+ | "kundli matching", "Guna Milan", "match for marriage", "36-point compatibility" | `<roxy-guna-milan>` |
26
+ | "are we compatible", "compatibility score", "love score" (cross-domain) | `<roxy-compatibility-card>` |
27
+ | "panchang for today", "tithi", "nakshatra", "muhurta", "auspicious times" | `<roxy-panchang-table>` |
28
+ | "dasha", "mahadasha", "current planetary period", "Vimshottari" | `<roxy-dasha-timeline>` |
29
+ | "manglik", "kalsarpa", "sadhesati", "any doshas in my chart" | `<roxy-dosha-card>` |
30
+ | "KP planets", "sub-lord", "Krishnamurti" | `<roxy-kp-planets-table>` |
31
+ | "life path number", "expression number", "personal year", "numerology chart" | `<roxy-numerology-card>` |
32
+ | "draw a tarot card", "card of the day", "card meaning" | `<roxy-tarot-card>` |
33
+ | "tarot reading", "three-card spread", "Celtic Cross", "yes or no tarot" | `<roxy-tarot-spread>` |
34
+ | "biorhythm", "physical/emotional/intellectual cycle", "critical days" | `<roxy-biorhythm-chart>` |
35
+ | "I Ching", "hexagram", "cast the coins", "Book of Changes" | `<roxy-hexagram>` |
36
+ | "moon phase", "moon calendar", "next full moon", "current moon" | `<roxy-moon-phase>` |
37
+ | "search a city", "geocode", "lat/long for a place" | `<roxy-location-search>` |
38
+ | "build a form for endpoint X" | `<roxy-endpoint-form>` |
39
+
40
+ **Fallback rule.** If the response shape does not match any component above, render with `<roxy-data>`. It accepts any RoxyAPI response and produces a structured layout from the JSON.
41
+
42
+ ### Endpoint reference
43
+
44
+ Use the table below for the formal endpoint to component mapping.
12
45
 
13
46
  <!-- BEGIN:COMPONENTS -->
14
47
  | Element | Domain | Endpoint(s) | What it renders |
@@ -45,6 +78,100 @@ Use the table below. Match the user request against the endpoint, render the mat
45
78
  | `<roxy-data>` | Helper | Any response shape | Generic fallback renderer for unknown shapes |
46
79
  <!-- END:COMPONENTS -->
47
80
 
81
+ ## Common integration bugs (read this first)
82
+
83
+ These are the bugs that come up over and over. Read this section before writing the first line of integration code.
84
+
85
+ ### 1. Envelope not unwrapped
86
+
87
+ The `@roxyapi/sdk` returns `{ data, error, request, response }`. **Always destructure `data` before passing to a component.** Passing the full envelope renders `[object Object]`. This is the single most common integration bug.
88
+
89
+ ```ts
90
+ // Wrong: passes the envelope
91
+ const response = await roxy.astrology.generateNatalChart({ body });
92
+ element.data = response; // → renders [object Object]
93
+
94
+ // Right: unwrap data
95
+ const { data } = await roxy.astrology.generateNatalChart({ body });
96
+ element.data = data;
97
+ ```
98
+
99
+ Every snippet below follows this rule.
100
+
101
+ ### 2. Hardcoded coordinates
102
+
103
+ Every chart endpoint (Western, Vedic, KP, synastry, transits, dasha, dosha, panchang) needs `latitude`, `longitude`, and `timezone`. Never ask the user to type coordinates. Call `/location/search` first, then feed the result into the chart endpoint.
104
+
105
+ ```ts
106
+ // Right
107
+ const { data: cities } = await roxy.location.searchCities({ query: { q: 'Mumbai' } });
108
+ const { latitude, longitude, timezone } = cities.cities[0];
109
+ const { data: chart } = await roxy.astrology.generateNatalChart({
110
+ body: { date, time, latitude, longitude, timezone },
111
+ });
112
+ ```
113
+
114
+ ### 3. Timezone format inconsistency
115
+
116
+ Every chart endpoint accepts `timezone` as either a decimal-hour offset (`5.5` for IST, `-5` for EST) or an IANA name (`'Asia/Kolkata'`, `'America/New_York'`). The decimal form is what `/location/search` returns; the IANA form is correct over DST boundaries. Pick one and stay consistent in a single integration. Mixing them does not break the API but makes the bug surface area larger.
117
+
118
+ ### 4. Secret key in the browser
119
+
120
+ There are two key classes. **Secret keys are unprefixed** and grant full access; they belong server-side only (Node, Bun, Hono, Next.js route handlers, Workers, Edge functions). **Publishable keys** are prefixed `pk_live_*` or `pk_test_*` and are safe in the browser; they are locked to an origin allowlist at the API gateway. For widgets, embeds, vanilla HTML, and `data-publishable-key` use the publishable key. For the typed SDK on a server, use the secret key.
121
+
122
+ ```ts
123
+ // Server (Next.js route handler, Workers, Bun): secret key
124
+ const roxy = createRoxy(process.env.ROXY_API_KEY!);
125
+
126
+ // Browser (widgets auto-mount): publishable key
127
+ <div data-roxy-widget="natal-chart" data-publishable-key="pk_live_xxx" ...></div>
128
+ ```
129
+
130
+ ### 5. Missing `'use client'` in Next.js App Router
131
+
132
+ The React components in `@roxyapi/ui-react` mount Custom Elements, which need the DOM. In the App Router, files that import them must declare `'use client'` at the top. Server Components can fetch with the SDK; the client component renders.
133
+
134
+ ```tsx
135
+ // app/chart-view.tsx
136
+ 'use client';
137
+ import { RoxyNatalChart } from '@roxyapi/ui-react';
138
+
139
+ export default function ChartView({ data }) {
140
+ return <RoxyNatalChart data={data} />;
141
+ }
142
+ ```
143
+
144
+ ### 6. React 17 or 18 swallowing custom events
145
+
146
+ React 19 routes hyphenated DOM events through camelCase props correctly. React 17 and 18 do not. On 17/18, attach the listener with a ref:
147
+
148
+ ```tsx
149
+ const ref = useRef<HTMLElement>(null);
150
+ useEffect(() => {
151
+ const el = ref.current;
152
+ if (!el) return;
153
+ const handler = (e: Event) => setData((e as CustomEvent).detail);
154
+ el.addEventListener('roxy-location-select', handler);
155
+ return () => el.removeEventListener('roxy-location-select', handler);
156
+ }, []);
157
+
158
+ return <roxy-location-search ref={ref} />;
159
+ ```
160
+
161
+ The React 19 path is `<RoxyLocationSearch onRoxyLocationSelect={handler} />`.
162
+
163
+ ### 7. Local response interface drift
164
+
165
+ Do not declare `interface XyzData { ... }` for a RoxyAPI response. Import the spec-derived type from `@roxyapi/sdk` (or let the SDK return type flow through inference). Local interfaces drift the moment the spec changes; the component will keep compiling while rendering nothing.
166
+
167
+ ```ts
168
+ // Wrong
169
+ interface NatalChart { planets: ...; houses: ...; }
170
+
171
+ // Right
172
+ import type { NatalChartResponse } from '@roxyapi/sdk';
173
+ ```
174
+
48
175
  ## Integration patterns
49
176
 
50
177
  ### Pattern 1: vanilla HTML, no build step
@@ -58,18 +185,11 @@ Use the table below. Match the user request against the endpoint, render the mat
58
185
  <roxy-natal-chart id="chart"></roxy-natal-chart>
59
186
 
60
187
  <script type="module">
61
- const res = await fetch('https://roxyapi.com/api/v2/astrology/natal-chart', {
62
- method: 'POST',
63
- headers: { 'Content-Type': 'application/json', 'X-API-Key': 'roxy_xxx' },
64
- body: JSON.stringify({
65
- date: '1990-01-15',
66
- time: '14:30:00',
67
- latitude: 28.6139,
68
- longitude: 77.209,
69
- timezone: 5.5,
70
- }),
188
+ import { createRoxy } from 'https://cdn.jsdelivr.net/npm/@roxyapi/sdk@latest/dist/factory.js';
189
+ const roxy = createRoxy('pk_live_xxx');
190
+ const { data } = await roxy.astrology.generateNatalChart({
191
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
71
192
  });
72
- const data = await res.json();
73
193
  document.getElementById('chart').data = data;
74
194
  </script>
75
195
  ```
@@ -77,25 +197,33 @@ Use the table below. Match the user request against the endpoint, render the mat
77
197
  ### Pattern 2: React, with the typed SDK
78
198
 
79
199
  ```tsx
200
+ 'use client';
201
+
80
202
  import { createRoxy } from '@roxyapi/sdk';
81
- import { RoxyNatalChart, RoxyLocationSearch } from '@roxyapi/ui-react';
203
+ import {
204
+ RoxyNatalChart,
205
+ RoxyLocationSearch,
206
+ type RoxyNatalChartProps,
207
+ } from '@roxyapi/ui-react';
82
208
  import { useState } from 'react';
83
209
 
84
210
  const roxy = createRoxy(process.env.NEXT_PUBLIC_ROXY_API_KEY!);
85
211
 
86
212
  export function BirthChartView() {
87
- const [chart, setChart] = useState(null);
213
+ const [chart, setChart] = useState<RoxyNatalChartProps['data']>(undefined);
88
214
 
89
- const onLocationSelect = async (e: CustomEvent<{ latitude: number; longitude: number; timezone: string }>) => {
215
+ const onLocationSelect = async (e: CustomEvent<{ latitude?: number; longitude?: number; timezone?: number | string }>) => {
216
+ const { latitude, longitude, timezone } = e.detail;
217
+ if (latitude == null || longitude == null) return;
90
218
  const { data } = await roxy.astrology.generateNatalChart({
91
- body: { date: '1990-01-15', time: '14:30:00', ...e.detail },
219
+ body: { date: '1990-01-15', time: '14:30:00', latitude, longitude, timezone },
92
220
  });
93
221
  setChart(data);
94
222
  };
95
223
 
96
224
  return (
97
225
  <div>
98
- <RoxyLocationSearch onroxy-location-select={onLocationSelect} />
226
+ <RoxyLocationSearch onRoxyLocationSelect={onLocationSelect} />
99
227
  {chart && <RoxyNatalChart data={chart} />}
100
228
  </div>
101
229
  );
@@ -114,15 +242,12 @@ export function BirthChartView() {
114
242
  ></roxy-endpoint-form>
115
243
 
116
244
  <script type="module">
245
+ import { createRoxy } from 'https://cdn.jsdelivr.net/npm/@roxyapi/sdk@latest/dist/factory.js';
246
+ const roxy = createRoxy('pk_live_xxx');
117
247
  const form = document.querySelector('roxy-endpoint-form');
118
248
  form.addEventListener('roxy-submit', async (e) => {
119
- const { endpoint, values } = e.detail;
120
- const res = await fetch(`https://roxyapi.com/api/v2/${endpoint}`, {
121
- method: 'POST',
122
- headers: { 'Content-Type': 'application/json', 'X-API-Key': 'roxy_xxx' },
123
- body: JSON.stringify(values),
124
- });
125
- const kundli = await res.json();
249
+ const { values } = e.detail;
250
+ const { data: kundli } = await roxy.vedicAstrology.generateBirthChart({ body: values });
126
251
  document.querySelector('roxy-vedic-kundli').data = kundli;
127
252
  });
128
253
  </script>
@@ -130,7 +255,7 @@ export function BirthChartView() {
130
255
 
131
256
  ### Pattern 4: widgets auto-mount (no JavaScript wiring)
132
257
 
133
- Use the publishable key flow for vibecoder embeds.
258
+ Use a publishable key (`pk_live_*` or `pk_test_*`) for client-side embeds. Get one at <https://roxyapi.com/account>. Publishable keys are origin-restricted at the API gateway. Register the customer domain (e.g. `https://customer.com`) when creating the key, and the gateway will reject requests from any other origin. Never use a secret key in client-side code (secret keys are unprefixed and live server-side only).
134
259
 
135
260
  ```html
136
261
  <script
@@ -151,6 +276,49 @@ Use the publishable key flow for vibecoder embeds.
151
276
 
152
277
  The auto-mount script reads `data-*` attributes, calls the matching endpoint, and renders the matching component.
153
278
 
279
+ ### Pattern 5: MCP tool-call response
280
+
281
+ A remote MCP server at `roxyapi.com/mcp/{domain}` exposes each RoxyAPI endpoint as an MCP tool. The JSON returned by the tool call has the same shape as the SDK response. Pass it straight into the matching component.
282
+
283
+ ```ts
284
+ // Pseudocode for any MCP-aware agent
285
+ const result = await mcp.call('roxyapi.astrology.generate_natal_chart', {
286
+ date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5,
287
+ });
288
+ document.querySelector('roxy-natal-chart').data = result;
289
+ ```
290
+
291
+ No field renames. No glue code. Use the decision tree above to pick the component for any tool.
292
+
293
+ ### Pattern 6: Next.js RSC streaming
294
+
295
+ Server fetches with the secret key, client renders with the React component. The API key never crosses the network.
296
+
297
+ ```tsx
298
+ // app/page.tsx (Server Component)
299
+ import { createRoxy } from '@roxyapi/sdk';
300
+ import BirthChartView from './birth-chart-view';
301
+
302
+ const roxy = createRoxy(process.env.ROXY_API_KEY!);
303
+
304
+ export default async function Page() {
305
+ const { data } = await roxy.vedicAstrology.generateBirthChart({
306
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
307
+ });
308
+ return <BirthChartView data={data} />;
309
+ }
310
+ ```
311
+
312
+ ```tsx
313
+ // app/birth-chart-view.tsx (Client Component)
314
+ 'use client';
315
+ import { RoxyVedicKundli } from '@roxyapi/ui-react';
316
+
317
+ export default function BirthChartView({ data }: { data: unknown }) {
318
+ return <RoxyVedicKundli data={data} />;
319
+ }
320
+ ```
321
+
154
322
  ## Rules every agent must follow
155
323
 
156
324
  - Always call `/location/search` first before any chart endpoint that takes latitude, longitude, or timezone. Use `<roxy-location-search>` for the input UI.
@@ -159,6 +327,7 @@ The auto-mount script reads `data-*` attributes, calls the matching endpoint, an
159
327
  - Theming is CSS custom properties on `:root` or per element. Do not write Tailwind classes inside the components; the shadow DOM ignores them.
160
328
  - Honor reduced motion. The library already respects `prefers-reduced-motion: reduce` and the `--roxy-motion-duration` variable.
161
329
  - A11y violations are CI failures. Do not paste over `role` or `aria-*` attributes; the components emit them correctly already.
330
+ - Component types come from the OpenAPI spec via `@hey-api/openapi-ts`. Do not redefine response shapes locally; if a field is missing, fix the spec, regenerate, propagate.
162
331
 
163
332
  ## Domain ordering
164
333
 
@@ -166,10 +335,14 @@ When listing domains in user-visible copy, use the canonical order: Western astr
166
335
 
167
336
  ## What not to ship
168
337
 
169
- - Do not bundle `@roxyapi/ui` and `@roxyapi/ui-react` together; they are decoupled by design.
338
+ - Do not bundle `@roxyapi/ui` and `@roxyapi/ui-react` together; they ship independently.
170
339
  - Use `@roxyapi/ui-react` for React projects. Use `@roxyapi/ui` directly elsewhere.
171
340
  - Do not write your own kundli component. The lifted layout in `<roxy-vedic-kundli>` is the canonical RoxyAPI render path.
172
341
  - Do not call astrology endpoints with hardcoded coordinates. Always geocode first via `<roxy-location-search>` or `roxy.location.searchCities()`.
342
+ - Do not declare a local `interface XyzData` to describe a RoxyAPI response. Import the type from the spec-derived bundle: `import type { XyzResponse } from '@roxyapi/sdk'`. Local interfaces drift the moment the spec changes.
343
+ - Do not write Tailwind utility classes inside a component. The Shadow DOM boundary stops them at the door. Theme through `--roxy-*` CSS custom properties on `:root` or per element instead.
344
+ - Do not fetch inside chart, table, or card components. They are stateless: pass `data` as a prop. Documented exceptions are `<roxy-location-search>`, `<roxy-endpoint-form>`, and the widgets auto-mount script.
345
+ - Do not redefine theme tokens or invent your own naming. Override the existing `--roxy-*` custom properties; the full list is in `THEMING.md`.
173
346
 
174
347
  ## Where to look next
175
348
 
@@ -177,4 +350,4 @@ When listing domains in user-visible copy, use the canonical order: Western astr
177
350
  - Sample data for every component: `apps/docs/sample-data.js`
178
351
  - Token reference: `packages/ui/THEMING.md`
179
352
  - Live preview: `bun run preview` then open `http://localhost:3001`
180
- - Money endpoints reference: see the RoxyAPI methodology page at `roxyapi.com/methodology`
353
+ - Endpoint reference: <https://roxyapi.com/api-reference>
package/README.md CHANGED
@@ -88,32 +88,32 @@ Pick a tone, set the vars, every chart and card follows. Full token reference at
88
88
  <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/synastry-chart-light.png" alt="Synastry dual-wheel with inter-aspects">
89
89
  </picture>
90
90
  </td>
91
- <td width="50%"><strong>Moon phase</strong> · <code>&lt;roxy-moon-phase&gt;</code><br><sub>GET /astrology/moon-phase/&lbrace;current,upcoming,calendar&rbrace;</sub><br>
91
+ <td width="50%"><strong>KP chart</strong> · <code>&lt;roxy-kp-chart&gt;</code><br><sub>POST /vedic-astrology/kp/chart</sub><br>
92
92
  <picture>
93
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/moon-phase-dark.png">
94
- <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/moon-phase-light.png" alt="Moon phase card with illumination and age">
93
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/kp-chart-dark.png">
94
+ <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/kp-chart-light.png" alt="KP chart with cusps and sub-lord stellar hierarchy">
95
95
  </picture>
96
96
  </td>
97
97
  </tr>
98
98
  <tr>
99
- <td width="50%"><strong>Biorhythm</strong> · <code>&lt;roxy-biorhythm-chart&gt;</code><br><sub>POST /biorhythm/&lbrace;daily,forecast,critical-days&rbrace;</sub><br>
99
+ <td width="50%"><strong>Divisional chart</strong> · <code>&lt;roxy-divisional-chart&gt;</code><br><sub>POST /vedic-astrology/divisional-chart</sub><br>
100
100
  <picture>
101
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/biorhythm-chart-dark.png">
102
- <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/biorhythm-chart-light.png" alt="Biorhythm physical, emotional, intellectual cycle bars">
101
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/divisional-chart-dark.png">
102
+ <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/divisional-chart-light.png" alt="Vedic divisional chart D9 navamsa wheel">
103
103
  </picture>
104
104
  </td>
105
- <td width="50%"><strong>I Ching hexagram</strong> · <code>&lt;roxy-hexagram&gt;</code><br><sub>GET /iching/hexagrams/&lbrace;number&rbrace;, /iching/cast</sub><br>
105
+ <td width="50%"><strong>Dasha timeline</strong> · <code>&lt;roxy-dasha-timeline&gt;</code><br><sub>POST /vedic-astrology/dasha/&lbrace;current,major,sub&rbrace;</sub><br>
106
106
  <picture>
107
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/hexagram-dark.png">
108
- <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/hexagram-light.png" alt="I Ching hexagram with trigrams and judgment">
107
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/dasha-timeline-dark.png">
108
+ <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/dasha-timeline-light.png" alt="Vimshottari dasha mahadasha and antardasha timeline">
109
109
  </picture>
110
110
  </td>
111
111
  </tr>
112
112
  <tr>
113
- <td width="50%"><strong>Dasha timeline</strong> · <code>&lt;roxy-dasha-timeline&gt;</code><br><sub>POST /vedic-astrology/dasha/&lbrace;current,major,sub&rbrace;</sub><br>
113
+ <td width="50%"><strong>Ashtakavarga grid</strong> · <code>&lt;roxy-ashtakavarga-grid&gt;</code><br><sub>POST /vedic-astrology/ashtakavarga</sub><br>
114
114
  <picture>
115
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/dasha-timeline-dark.png">
116
- <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/dasha-timeline-light.png" alt="Vimshottari dasha mahadasha and antardasha timeline">
115
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/ashtakavarga-grid-dark.png">
116
+ <img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/ashtakavarga-grid-light.png" alt="Ashtakavarga sarva and bhinna bindu heatmap">
117
117
  </picture>
118
118
  </td>
119
119
  <td width="50%"><strong>Tarot spread</strong> · <code>&lt;roxy-tarot-spread&gt;</code><br><sub>POST /tarot/spreads/&lbrace;three-card,celtic-cross,love&rbrace;</sub><br>
@@ -209,14 +209,185 @@ Always call `/location/search` first. Every chart endpoint expects latitude, lon
209
209
 
210
210
  > **Timezone format.** RoxyAPI accepts both forms: a decimal-hour offset (`5.5` for IST, `-5` for EST) or an IANA name (`'Asia/Kolkata'`, `'America/New_York'`). Pick one and stay consistent. The decimal form is shorter and what `/location/search` returns; examples on this page use it. The IANA form is correct over DST boundaries when historical accuracy matters.
211
211
 
212
+ ## Most-used components per domain
213
+
214
+ The highest-demand components by domain, in the order you are most likely to ship them. Each pairing shows the SDK call that returns the response shape the component renders. Spec change in the API translates to typed change at the component boundary; the pairing below is derived from the live OpenAPI spec, not invented. Full catalog in the [Components](#components) table.
215
+
216
+ ### 1. Western astrology (natal chart, daily horoscope, synastry)
217
+
218
+ The global astrology app market is $6.27B and almost entirely Western. Zodiac dating apps, Co-Star-style natal chart products, daily horoscope features, and lunar-cycle wellness apps all ship these first.
219
+
220
+ ```tsx
221
+ import { createRoxy } from '@roxyapi/sdk';
222
+ import { RoxyNatalChart, RoxyHoroscopeCard, RoxySynastryChart } from '@roxyapi/ui-react';
223
+
224
+ const roxy = createRoxy(process.env.ROXY_API_KEY!);
225
+
226
+ // 1. Natal chart. The #1 Western query, called on every onboarding.
227
+ const { data: natal } = await roxy.astrology.generateNatalChart({
228
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
229
+ });
230
+ <RoxyNatalChart data={natal} />
231
+
232
+ // 2. Daily horoscope. Highest per-user call frequency in the catalog, drives DAUs and push.
233
+ const { data: horoscope } = await roxy.astrology.getDailyHoroscope({ path: { sign: 'aries' } });
234
+ <RoxyHoroscopeCard data={horoscope} />
235
+
236
+ // 3. Synastry. The dating-app pro-tier feature, full inter-aspect analysis between two charts.
237
+ const { data: synastry } = await roxy.astrology.calculateSynastry({
238
+ body: {
239
+ person1: { date: '1990-01-15', time: '14:30:00', latitude: 28.61, longitude: 77.20, timezone: 5.5 },
240
+ person2: { date: '1992-07-22', time: '09:00:00', latitude: 19.07, longitude: 72.87, timezone: 5.5 },
241
+ },
242
+ });
243
+ <RoxySynastryChart data={synastry} />
244
+ ```
245
+
246
+ ### 2. Vedic astrology (kundli, panchang, dasha, dosha, KP, ashtakavarga)
247
+
248
+ The depth moat. India astrology market: $163M in 2024, projected $1.8B by 2030 (49% CAGR). Kundli, panchang, dasha, dosha, and KP horary are the five Google-dominant queries for every matrimonial platform, kundli generator, and muhurat app.
249
+
250
+ ```tsx
251
+ import {
252
+ RoxyVedicKundli, RoxyVedicPlanetsTable, RoxyPanchangTable,
253
+ RoxyDashaTimeline, RoxyDoshaCard, RoxyKpChart, RoxyAshtakavargaGrid,
254
+ } from '@roxyapi/ui-react';
255
+
256
+ // Kundli + positions table share a single API call (the same response renders both).
257
+ const { data: kundli } = await roxy.vedicAstrology.generateBirthChart({
258
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
259
+ });
260
+ <RoxyVedicKundli data={kundli} chart-style="south" />
261
+ <RoxyVedicPlanetsTable data={kundli} />
262
+
263
+ // Panchang. Tithi, nakshatra, yoga, karana, rahu kaal, abhijit muhurta in one call.
264
+ const { data: panchang } = await roxy.vedicAstrology.getDetailedPanchang({
265
+ body: { date: '2026-04-22', latitude: 28.6139, longitude: 77.209 },
266
+ });
267
+ <RoxyPanchangTable data={panchang} />
268
+
269
+ // Vimshottari dasha. The 120-year planetary period timeline.
270
+ const { data: dasha } = await roxy.vedicAstrology.getMajorDashas({
271
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
272
+ });
273
+ <RoxyDashaTimeline data={dasha} period="major" />
274
+
275
+ // Mangal Dosha. Most-asked matrimonial question in India.
276
+ const { data: dosha } = await roxy.vedicAstrology.checkManglikDosha({
277
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
278
+ });
279
+ <RoxyDoshaCard data={dosha} />
280
+
281
+ // KP chart. The horary timing tool, sub-lord stellar hierarchy on every cusp.
282
+ const { data: kp } = await roxy.vedicAstrology.generateKpChart({
283
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
284
+ });
285
+ <RoxyKpChart data={kp} />
286
+
287
+ // Ashtakavarga. Bindu strength heatmap with Sarva, Bhinna, Shodhya Pinda views.
288
+ const { data: ashtaka } = await roxy.vedicAstrology.calculateAshtakavarga({
289
+ body: { date: '1990-01-15', time: '14:30:00', latitude: 28.6139, longitude: 77.209, timezone: 5.5 },
290
+ });
291
+ <RoxyAshtakavargaGrid data={ashtaka} />
292
+ ```
293
+
294
+ ### 3. Numerology (life path, full chart, personal year)
295
+
296
+ Commodity content with durable demand. `life path number calculator` is among the highest-volume spiritual searches globally. Works without birth time. Easiest domain to integrate.
297
+
298
+ ```tsx
299
+ import { RoxyNumerologyCard } from '@roxyapi/ui-react';
300
+
301
+ // Life Path. The #1 numerology keyword, every calculator page starts here.
302
+ const { data: lp } = await roxy.numerology.calculateLifePath({
303
+ body: { year: 1990, month: 1, day: 15 },
304
+ });
305
+ <RoxyNumerologyCard data={lp} type="life-path" />
306
+
307
+ // Full numerology chart. Premium one-shot: all six core numbers plus karmic, personal year.
308
+ const { data: chart } = await roxy.numerology.generateNumerologyChart({
309
+ body: { fullName: 'Jane Smith', year: 1990, month: 1, day: 15 },
310
+ });
311
+ <RoxyNumerologyCard data={chart} type="chart" />
312
+
313
+ // Personal Year. Annual forecast, drives January traffic spikes.
314
+ const { data: pyear } = await roxy.numerology.calculatePersonalYear({
315
+ body: { month: 1, day: 15, year: 2026 },
316
+ });
317
+ <RoxyNumerologyCard data={pyear} type="personal-year" />
318
+ ```
319
+
320
+ ### 4. Tarot (daily card, three-card, Celtic Cross)
321
+
322
+ High search volume, evergreen. The tarot card database is the highest per-endpoint call count in the catalog because apps fetch once and cache.
323
+
324
+ ```tsx
325
+ import { RoxyTarotCard, RoxyTarotSpread } from '@roxyapi/ui-react';
326
+
327
+ // Daily card. Stickiest tarot feature. Seed per user for deterministic once-per-day behavior.
328
+ const { data: daily } = await roxy.tarot.getDailyCard({ body: { seed: 'user-42' } });
329
+ <RoxyTarotCard data={daily} />
330
+
331
+ // Three-card past-present-future. Most-drawn spread on every tarot platform.
332
+ const { data: three } = await roxy.tarot.castThreeCard({
333
+ body: { question: 'My next quarter', seed: 'user-42' },
334
+ });
335
+ <RoxyTarotSpread data={three} />
336
+
337
+ // Celtic Cross. Professional-reader spread. Premium-tier, ten positions.
338
+ const { data: cc } = await roxy.tarot.castCelticCross({
339
+ body: { question: 'What should I focus on?', seed: 'user-42' },
340
+ });
341
+ <RoxyTarotSpread data={cc} />
342
+ ```
343
+
344
+ ### 5. Biorhythm (daily, forecast)
345
+
346
+ Zero competition domain. Steady search volume with the top Google result being a static calculator page. Pure land-grab for wellness, productivity, sports, and couples apps.
347
+
348
+ ```tsx
349
+ import { RoxyBiorhythmChart } from '@roxyapi/ui-react';
350
+
351
+ // Daily biorhythm. Physical, emotional, intellectual, intuitive, plus seven extended cycles.
352
+ // Seeded for stable "biorhythm of the day" features; pass a userId for per-user determinism.
353
+ const { data: bio } = await roxy.biorhythm.getDailyBiorhythm({
354
+ body: { seed: 'user-42', date: '2026-04-23' },
355
+ });
356
+ <RoxyBiorhythmChart data={bio} />
357
+
358
+ // Multi-day forecast. Best-day / worst-day planner for calendar and coaching products.
359
+ const { data: forecast } = await roxy.biorhythm.getForecast({
360
+ body: { birthDate: '1990-01-15', startDate: '2026-04-01', endDate: '2026-04-30' },
361
+ });
362
+ <RoxyBiorhythmChart data={forecast} mode="forecast" />
363
+ ```
364
+
365
+ ### 6. I Ching (cast a reading, hexagram lookup)
366
+
367
+ Meditation apps, decision-making tools, and wisdom chatbots. `i ching API` and `hexagram API` are the keywords.
368
+
369
+ ```tsx
370
+ import { RoxyHexagram } from '@roxyapi/ui-react';
371
+
372
+ // Cast a reading. Active divination, primary hexagram plus changing lines and transformed hexagram.
373
+ const { data: reading } = await roxy.iching.castReading({ query: { seed: 'user-42' } });
374
+ <RoxyHexagram data={reading} />
375
+
376
+ // Random hexagram. One-shot daily-hexagram surface for ambient apps.
377
+ const { data: random } = await roxy.iching.getRandomHexagram();
378
+ <RoxyHexagram data={random} />
379
+ ```
380
+
381
+ > **Pairing rule.** The SDK return value already matches the `data` prop on every component. No field renames, no glue code. When a new endpoint ships in the spec, the SDK and the component types regenerate together; the same pattern keeps working.
382
+
212
383
  ## API keys
213
384
 
214
385
  Get keys at <https://roxyapi.com/account>.
215
386
 
216
387
  - **Secret key** (server-side only). Use in Node, Bun, Hono, Next.js route handlers, Workers. Never commit, never ship in client bundles.
217
- - **Publishable key** (`pk_live_*` / `pk_test_*`). Safe in browsers, locked to the origins you register on the key. Use with the widgets auto-mount script for WordPress, Shopify, static HTML, embed scenarios. The API gateway rejects requests from any origin not on the key's allowlist.
388
+ - **Publishable key** (`pk_live_*` / `pk_test_*`). Safe in browsers, locked to the origins you register on the key. Use with the widgets auto-mount script for WordPress, Shopify, static HTML, embed scenarios. The API gateway rejects requests from any origin not on the allowlist.
218
389
 
219
- For the SDK examples on this page, set `ROXY_API_KEY` to a secret key in your server env. For the widgets auto-mount path (`data-publishable-key="pk_live_xxx"`), use a publishable key with your site's domain registered.
390
+ For the SDK examples on this page, set `ROXY_API_KEY` to a secret key in your server env. For the widgets auto-mount path (`data-publishable-key="pk_live_xxx"`), use a publishable key with your domain registered on it.
220
391
 
221
392
  ## Distribution
222
393
 
@@ -4833,7 +4833,7 @@
4833
4833
  display: grid;
4834
4834
  gap: var(--roxy-space-sm, 0.5rem);
4835
4835
  }
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);})();
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.1";var Kt=Qe.map(i=>i.slug);return at(Ut);})();
4837
4837
  /*! Bundled license information:
4838
4838
 
4839
4839
  @lit/reactive-element/css-tag.js: