@roxyapi/ui-vue 0.33.0 → 0.35.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 +60 -14
- package/README.md +195 -62
- package/dist/components/almanac-day.d.ts +138 -0
- package/dist/components/almanac-day.d.ts.map +1 -0
- package/dist/components/almanac-day.js +2 -0
- package/dist/components/almanac-day.js.map +7 -0
- package/dist/components/angel-number-card.js +1 -1
- package/dist/components/angel-number-card.js.map +1 -1
- package/dist/components/angel-number-lookup.js +1 -1
- package/dist/components/angel-number-lookup.js.map +1 -1
- package/dist/components/arudha-padas.js +1 -1
- package/dist/components/arudha-padas.js.map +1 -1
- package/dist/components/ashtakavarga-grid.js +1 -1
- package/dist/components/ashtakavarga-grid.js.map +1 -1
- package/dist/components/aspects-table.js +1 -1
- package/dist/components/aspects-table.js.map +1 -1
- package/dist/components/astrocartography-map.js +1 -1
- package/dist/components/astrocartography-map.js.map +1 -1
- package/dist/components/bazi-chart.d.ts +130 -0
- package/dist/components/bazi-chart.d.ts.map +1 -0
- package/dist/components/bazi-chart.js +2 -0
- package/dist/components/bazi-chart.js.map +7 -0
- package/dist/components/bhav-chalit-table.js +1 -1
- package/dist/components/bhav-chalit-table.js.map +1 -1
- package/dist/components/bhava-bala-table.js +1 -1
- package/dist/components/bhava-bala-table.js.map +1 -1
- package/dist/components/biorhythm-chart.js +1 -1
- package/dist/components/biorhythm-chart.js.map +1 -1
- package/dist/components/bodygraph.js +1 -1
- package/dist/components/bodygraph.js.map +1 -1
- package/dist/components/chara-karakas.js +1 -1
- package/dist/components/chara-karakas.js.map +1 -1
- package/dist/components/choghadiya-grid.js +1 -1
- package/dist/components/choghadiya-grid.js.map +1 -1
- package/dist/components/compatibility-card.js +1 -1
- package/dist/components/compatibility-card.js.map +1 -1
- package/dist/components/crystal-card.js +1 -1
- package/dist/components/crystal-card.js.map +1 -1
- package/dist/components/crystal-grid.js +1 -1
- package/dist/components/crystal-grid.js.map +1 -1
- package/dist/components/dasha-timeline.js +1 -1
- package/dist/components/dasha-timeline.js.map +1 -1
- package/dist/components/data.js +1 -1
- package/dist/components/data.js.map +1 -1
- package/dist/components/divisional-chart.js +1 -1
- package/dist/components/divisional-chart.js.map +1 -1
- package/dist/components/dosha-card.js +1 -1
- package/dist/components/dosha-card.js.map +1 -1
- package/dist/components/dream-card.js +1 -1
- package/dist/components/dream-card.js.map +1 -1
- package/dist/components/dream-search.js +1 -1
- package/dist/components/dream-search.js.map +1 -1
- package/dist/components/endpoint-form.js +1 -1
- package/dist/components/endpoint-form.js.map +1 -1
- package/dist/components/ephemeris-table.js +1 -1
- package/dist/components/ephemeris-table.js.map +1 -1
- package/dist/components/fixed-stars.js +1 -1
- package/dist/components/fixed-stars.js.map +1 -1
- package/dist/components/flying-star-chart.d.ts +138 -0
- package/dist/components/flying-star-chart.d.ts.map +1 -0
- package/dist/components/flying-star-chart.js +2 -0
- package/dist/components/flying-star-chart.js.map +7 -0
- package/dist/components/forecast-digest.js +1 -1
- package/dist/components/forecast-digest.js.map +1 -1
- package/dist/components/forecast-timeline.js +1 -1
- package/dist/components/forecast-timeline.js.map +1 -1
- package/dist/components/gochara-table.js +1 -1
- package/dist/components/gochara-table.js.map +1 -1
- package/dist/components/guna-milan.js +1 -1
- package/dist/components/guna-milan.js.map +1 -1
- package/dist/components/hd-connection.js +1 -1
- package/dist/components/hd-connection.js.map +1 -1
- package/dist/components/hd-penta.js +1 -1
- package/dist/components/hd-penta.js.map +1 -1
- package/dist/components/hd-type-card.js +1 -1
- package/dist/components/hd-type-card.js.map +1 -1
- package/dist/components/hd-variables.js +1 -1
- package/dist/components/hd-variables.js.map +1 -1
- package/dist/components/heliacal-table.js +1 -1
- package/dist/components/heliacal-table.js.map +1 -1
- package/dist/components/hexagram.js +1 -1
- package/dist/components/hexagram.js.map +1 -1
- package/dist/components/hora-table.js +1 -1
- package/dist/components/hora-table.js.map +1 -1
- package/dist/components/horoscope-card.d.ts +11 -3
- package/dist/components/horoscope-card.d.ts.map +1 -1
- 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 +1 -1
- package/dist/components/kp-planets-table.js +1 -1
- package/dist/components/kp-planets-table.js.map +1 -1
- package/dist/components/kp-ruling-planets.js +1 -1
- package/dist/components/kp-ruling-planets.js.map +1 -1
- package/dist/components/kua-card.d.ts +138 -0
- package/dist/components/kua-card.d.ts.map +1 -0
- package/dist/components/kua-card.js +2 -0
- package/dist/components/kua-card.js.map +7 -0
- package/dist/components/local-space-compass.js +1 -1
- package/dist/components/local-space-compass.js.map +1 -1
- package/dist/components/location-search.js +1 -1
- package/dist/components/location-search.js.map +1 -1
- package/dist/components/luck-pillars.d.ts +130 -0
- package/dist/components/luck-pillars.d.ts.map +1 -0
- package/dist/components/luck-pillars.js +2 -0
- package/dist/components/luck-pillars.js.map +7 -0
- package/dist/components/moon-phase.js +1 -1
- package/dist/components/moon-phase.js.map +1 -1
- package/dist/components/nakshatra-card.js +1 -1
- package/dist/components/nakshatra-card.js.map +1 -1
- package/dist/components/natal-chart.js +1 -1
- package/dist/components/natal-chart.js.map +1 -1
- package/dist/components/numerology-card.js +1 -1
- package/dist/components/numerology-card.js.map +1 -1
- package/dist/components/panchang-table.js +1 -1
- package/dist/components/panchang-table.js.map +1 -1
- package/dist/components/positions-table.js +1 -1
- package/dist/components/positions-table.js.map +1 -1
- package/dist/components/profection-card.js +1 -1
- package/dist/components/profection-card.js.map +1 -1
- package/dist/components/reference-card.js +1 -1
- package/dist/components/reference-card.js.map +1 -1
- package/dist/components/relocation-wheel.js +1 -1
- package/dist/components/relocation-wheel.js.map +1 -1
- package/dist/components/shadbala-table.js +1 -1
- package/dist/components/shadbala-table.js.map +1 -1
- package/dist/components/synastry-chart.js +1 -1
- package/dist/components/synastry-chart.js.map +1 -1
- package/dist/components/tarot-card.js +1 -1
- package/dist/components/tarot-card.js.map +1 -1
- package/dist/components/tarot-catalog.js +1 -1
- package/dist/components/tarot-catalog.js.map +1 -1
- package/dist/components/tarot-spread.js +1 -1
- package/dist/components/tarot-spread.js.map +1 -1
- package/dist/components/transit-wheel.js +1 -1
- package/dist/components/transit-wheel.js.map +1 -1
- package/dist/components/transits-table.js +1 -1
- package/dist/components/transits-table.js.map +1 -1
- package/dist/components/upagraha-table.js +1 -1
- package/dist/components/upagraha-table.js.map +1 -1
- package/dist/components/vedic-aspects.js +1 -1
- package/dist/components/vedic-aspects.js.map +1 -1
- package/dist/components/vedic-daily.js +1 -1
- package/dist/components/vedic-daily.js.map +1 -1
- package/dist/components/vedic-kundli.js +1 -1
- package/dist/components/vedic-kundli.js.map +1 -1
- package/dist/components/vedic-planets-table.js +1 -1
- package/dist/components/vedic-planets-table.js.map +1 -1
- package/dist/components/western-planets-table.js +1 -1
- package/dist/components/western-planets-table.js.map +1 -1
- package/dist/components/yoga-list.js +1 -1
- package/dist/components/yoga-list.js.map +1 -1
- package/dist/components/zodiac-card.d.ts +138 -0
- package/dist/components/zodiac-card.d.ts.map +1 -0
- package/dist/components/zodiac-card.js +2 -0
- package/dist/components/zodiac-card.js.map +7 -0
- package/dist/generated/tool-components.d.ts +14 -0
- package/dist/generated/tool-components.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/load-ui.d.ts +2 -2
- package/dist/load-ui.d.ts.map +1 -1
- package/dist/load-ui.js +1 -1
- package/dist/load-ui.js.map +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.gen.d.ts +9734 -992
- package/dist/types/types.gen.d.ts.map +1 -1
- package/dist/utils/compact.d.ts +18 -0
- package/dist/utils/compact.d.ts.map +1 -0
- package/dist/utils/tool-component.d.ts +28 -0
- package/dist/utils/tool-component.d.ts.map +1 -0
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -8,7 +8,7 @@ Live preview: <https://roxyapi.github.io/ui/>. Source of truth for component typ
|
|
|
8
8
|
|
|
9
9
|
## Identity
|
|
10
10
|
|
|
11
|
-
Roxy UI is the official web component library for the RoxyAPI catalog. Components and helpers cover Western astrology, Vedic astrology,
|
|
11
|
+
Roxy UI is the official web component library for the RoxyAPI catalog. Components and helpers cover Western astrology, Vedic astrology, forecast, Human Design, Chinese astrology, feng shui, numerology, tarot, biorhythm, I Ching, crystals, dreams, angel numbers, with the location helper for geocoding. New endpoints regenerate component types automatically.
|
|
12
12
|
|
|
13
13
|
## Decision tree for picking a component
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ Map the natural-language request to a component first; fall back to the table be
|
|
|
18
18
|
|
|
19
19
|
| If the user says... | Render |
|
|
20
20
|
|---|---|
|
|
21
|
-
| "daily horoscope for `{sign}`", "weekly horoscope", "monthly horoscope" | `<roxy-horoscope-card>` |
|
|
21
|
+
| "daily horoscope for `{sign}`", "weekly horoscope", "monthly horoscope", "year ahead", "yearly horoscope" | `<roxy-horoscope-card>` with `period="daily"`, `"weekly"`, `"monthly"` or `"yearly"`. Every period carries the reading twice, whole as one column and split into six topic sections, and `layout` picks which one renders. Yearly also carries the themes, key periods, eclipses, retrogrades and best months of the year |
|
|
22
22
|
| "birth chart", "natal chart", "Western chart", "show me my planets" | `<roxy-natal-chart>` |
|
|
23
23
|
| "match two birth charts", "compare us in Western astrology", "synastry" | `<roxy-synastry-chart>` |
|
|
24
24
|
| "kundli", "Vedic chart", "rashi chart", "South/North Indian chart" | `<roxy-vedic-kundli>` |
|
|
@@ -37,6 +37,12 @@ Map the natural-language request to a component first; fall back to the table be
|
|
|
37
37
|
| "forecast", "what is coming up", "upcoming transits and events", "timeline of my year" | `<roxy-forecast-timeline>` |
|
|
38
38
|
| "biorhythm", "physical/emotional/intellectual cycle", "critical days" | `<roxy-biorhythm-chart>` |
|
|
39
39
|
| "I Ching", "hexagram", "cast the coins", "Book of Changes" | `<roxy-hexagram>` |
|
|
40
|
+
| "BaZi", "four pillars", "my Chinese birth chart", "what is my Day Master", "eight characters" | `<roxy-bazi-chart>` |
|
|
41
|
+
| "luck pillars", "Da Yun", "my ten year cycles", "when does my luck change" | `<roxy-luck-pillars>` |
|
|
42
|
+
| "Chinese zodiac", "what animal am I", "year of the {animal}", "my Chinese sign today", "are {animal} and {animal} compatible" | `<roxy-zodiac-card>` (`mode="sign"` for a birth date, `"animal"` for one animal in full, `"daily"` for today, `"compatibility"` for a pair) |
|
|
43
|
+
| "Chinese almanac", "Tong Shu", "is {date} a good day", "pick a wedding date", "auspicious days for {activity}" | `<roxy-almanac-day>` (`mode="day"`, `"month"`, or `"auspicious"` for a date search) |
|
|
44
|
+
| "Kua number", "eight mansions", "Ba Zhai", "my best direction", "which way should my desk face" | `<roxy-kua-card>` (`mode="kua"` for the number, `"mansions"` for the full map) |
|
|
45
|
+
| "flying stars", "Xuan Kong", "the stars in my house", "annual stars for {year}", "period 9 chart" | `<roxy-flying-star-chart>` (`mode="natal"` for a building, `mode="annual"` for one year over it) |
|
|
40
46
|
| "moon phase", "moon calendar", "next full moon", "current moon" | `<roxy-moon-phase>` |
|
|
41
47
|
| "what does my dream mean", "dream symbol", "dream dictionary", "I dreamt of {symbol}" | `<roxy-dream-card>` |
|
|
42
48
|
| "angel number {n}", "meaning of 111 / 222 / 1111", "I keep seeing this number" | `<roxy-angel-number-card>` |
|
|
@@ -61,7 +67,7 @@ Use the table below for the formal endpoint to component mapping.
|
|
|
61
67
|
| `<roxy-transit-wheel>` | Western | POST /astrology/transit-aspects | Natal chart on the inner ring, transiting bodies on the outer ring, aspect lines between them |
|
|
62
68
|
| `<roxy-aspects-table>` | Western | POST /astrology/aspects, /astrology/transit-aspects, /astrology/aspect-patterns | Aspect rows coloured by nature with orb and strength, plus detected chart patterns |
|
|
63
69
|
| `<roxy-moon-phase>` | Western | GET /astrology/moon-phase/{current,upcoming,calendar/...} | Moon phase card and calendar |
|
|
64
|
-
| `<roxy-horoscope-card>` | Western | GET /astrology/horoscope/{sign}/{daily,weekly,monthly} | Daily, weekly, or
|
|
70
|
+
| `<roxy-horoscope-card>` | Western | GET /astrology/horoscope/{sign}/{daily,weekly,monthly,yearly} | Daily, weekly, monthly, or yearly horoscope card |
|
|
65
71
|
| `<roxy-astrocartography-map>` | Western | POST /astrology/astrocartography | World map of planetary MC, IC, Ascendant, and Descendant lines with per-line interpretations |
|
|
66
72
|
| `<roxy-local-space-compass>` | Western | POST /astrology/local-space | Compass dial of planetary azimuth lines from the birthplace, dimmed below the horizon |
|
|
67
73
|
| `<roxy-relocation-wheel>` | Western | POST /astrology/relocation-chart | Relocated chart wheel plus the move geometry, angular planets, and planets that change house |
|
|
@@ -106,6 +112,12 @@ Use the table below for the formal endpoint to component mapping.
|
|
|
106
112
|
| `<roxy-hd-variables>` | Human Design | POST /human-design/variables | The four transformation arrows with direction, color, tone, and base, plus a reading per arrow grouped by layer and the cognition |
|
|
107
113
|
| `<roxy-forecast-timeline>` | Forecast | POST /forecast/{timeline,significant-dates,transits} | Date-grouped events across Western, Vedic, and biorhythm domains, weighted by significance |
|
|
108
114
|
| `<roxy-forecast-digest>` | Forecast | POST /forecast/digest | Per-window event counts, domain breakdown, and the highest-significance events |
|
|
115
|
+
| `<roxy-bazi-chart>` | Chinese | POST /chinese-astrology/bazi/chart | Year, month, day and hour pillars in hanzi with hidden stems, Ten Gods, Na Yin, element balance and interactions |
|
|
116
|
+
| `<roxy-luck-pillars>` | Chinese | POST /chinese-astrology/bazi/luck-pillars | Ten-year luck pillars as a strip with ages and years, the annual pillars, and the direction and start age behind them |
|
|
117
|
+
| `<roxy-zodiac-card>` | Chinese | POST /chinese-astrology/zodiac/sign, GET /chinese-astrology/zodiac/{animals/{id},{id}/daily,compatibility/{sign1}/{sign2}} | The animal for a date, one animal in full, a daily reading, or a pair scored |
|
|
118
|
+
| `<roxy-almanac-day>` | Chinese | GET /chinese-astrology/calendar/{day/{date},monthly}, POST /chinese-astrology/calendar/auspicious-days | Day officer, favours and avoids, clash animal and pillars, as one day, a month, or a date search |
|
|
119
|
+
| `<roxy-flying-star-chart>` | Feng Shui | POST /feng-shui/flying-stars/natal, GET /feng-shui/flying-stars/annual/{year} | Nine-palace flying star plate with the mountain, period and water star per palace, the facing and sitting mountains and the structure |
|
|
120
|
+
| `<roxy-kua-card>` | Feng Shui | POST /feng-shui/kua, POST /feng-shui/eight-mansions | Kua number and trigram over the eight-sector direction map, favourable and unfavourable sectors ranked |
|
|
109
121
|
| `<roxy-biorhythm-chart>` | Biorhythm | POST /biorhythm/{daily,forecast,critical-days} | Daily bars, forecast cycle lines, critical days |
|
|
110
122
|
| `<roxy-hexagram>` | I Ching | GET /iching/hexagrams/{number}, /iching/cast, POST /iching/daily, /iching/daily/cast | Hexagram figure with trigrams, judgment, image, and a reading per line (statement plus meaning); a cast highlights the moving lines and the resulting hexagram |
|
|
111
123
|
| `<roxy-crystal-card>` | Crystals | GET /crystals/{id} | Photo, meaning sections, chakra, zodiac, element, hardness, keywords, and pairings |
|
|
@@ -214,7 +226,7 @@ Several components select a view, mode, or chart layout in addition to `data`. T
|
|
|
214
226
|
<RoxyPanchangTable data={panchang} detail="detailed" />
|
|
215
227
|
```
|
|
216
228
|
|
|
217
|
-
The full set: `RoxyNatalChart` `houseSystem`, `RoxyHoroscopeCard` `period`, `RoxyMoonPhase` `mode`, `RoxyCompatibilityCard` `mode`, `RoxyVedicKundli` and `RoxyDivisionalChart` `chartStyle`, `RoxyPanchangTable` `detail`, `RoxyDashaTimeline` `period`, `RoxyDoshaCard` `type`, `RoxyNumerologyCard` `type`, `RoxyTarotSpread` `spread`, `RoxyBiorhythmChart` `mode`, `RoxyHexagram` `mode`. Outside React and Vue, set the same value as a kebab-case attribute or a JS property on the element (for example `chart-style="south"` or `el.chartStyle = 'south'`).
|
|
229
|
+
The full set: `RoxyNatalChart` `houseSystem`, `RoxyHoroscopeCard` `period` and `layout`, `RoxyMoonPhase` `mode`, `RoxyZodiacCard` `mode`, `RoxyKuaCard` `mode`, `RoxyAlmanacDay` `mode`, `RoxyFlyingStarChart` `mode`, `RoxyCompatibilityCard` `mode`, `RoxyVedicKundli` and `RoxyDivisionalChart` `chartStyle`, `RoxyPanchangTable` `detail`, `RoxyDashaTimeline` `period`, `RoxyDoshaCard` `type`, `RoxyNumerologyCard` `type`, `RoxyTarotSpread` `spread`, `RoxyBiorhythmChart` `mode`, `RoxyHexagram` `mode`. Outside React and Vue, set the same value as a kebab-case attribute or a JS property on the element (for example `chart-style="south"` or `el.chartStyle = 'south'`).
|
|
218
230
|
|
|
219
231
|
### 6c. Vue and Nuxt
|
|
220
232
|
|
|
@@ -421,7 +433,7 @@ That single element renders a schema-driven form (a zodiac/enum tile picker, a b
|
|
|
421
433
|
|
|
422
434
|
In React, the same props are typed: `<RoxyNatalChart endpoint="astrology/natal-chart" publishableKey={process.env.NEXT_PUBLIC_ROXY_PK} />`.
|
|
423
435
|
|
|
424
|
-
**Three optional attributes on the self-fetch element.** `lang` sets the response language (`en`, `tr`, `de`, `es`, `hi`, `pt`, `fr`, `ru`): put it on the element (`<roxy-horoscope-card lang="de" ...>`) and the form routes it to the `?lang=` query on submit, so visitors never see a language field. `submit-label` overrides the derived button label. `attribution` renders a small "Spiritual data by RoxyAPI" credit under the result: off by default, and the one-tag script below turns it on unless you set `data-attribution="off"`. None of these apply in controlled mode.
|
|
436
|
+
**Three optional attributes on the self-fetch element.** `lang` sets the response language (`en`, `tr`, `de`, `es`, `hi`, `pt`, `fr`, `ru`, `zh-Hans`, `zh-Hant`): put it on the element (`<roxy-horoscope-card lang="de" ...>`) and the form routes it to the `?lang=` query on submit, so visitors never see a language field. `submit-label` overrides the derived button label. `attribution` renders a small "Spiritual data by RoxyAPI" credit under the result: off by default, and the one-tag script below turns it on unless you set `data-attribution="off"`. None of these apply in controlled mode.
|
|
425
437
|
|
|
426
438
|
**One tag, no element wiring.** For the simplest embed, load `dist/cdn/widgets.js` and drop a `<div data-roxy-widget="{slug}" data-publishable-key="pk_live_...">`. The script mounts the matching component from a generated slug map: with every path parameter supplied as a `data-*` attribute (`data-sign`, `data-id`) it fetches on mount, otherwise it renders the same input form. A second `data-*` attribute picks a variant (`data-period`, `data-mode`, `data-type`, `data-spread`). To keep every key on your own server instead, drop the publishable key and give the tag `data-submit-url` and `data-location-url`: the widget renders the form and routes both its requests there. `data-submit-context` rides along with the submitted one.
|
|
427
439
|
|
|
@@ -429,17 +441,49 @@ In React, the same props are typed: `<RoxyNatalChart endpoint="astrology/natal-c
|
|
|
429
441
|
|
|
430
442
|
### Pattern 5: MCP tool-call response
|
|
431
443
|
|
|
432
|
-
A
|
|
444
|
+
A Remote MCP server at `roxyapi.com/mcp/{domain}` exposes each RoxyAPI endpoint as a tool, named for its method and path: `post_astrology_natal_chart`, `post_tarot_spreads_three_card`, `get_tarot_cards_id`. When your model calls one, the result is a single text content block holding the JSON string, and that JSON is the same shape the SDK returns. So the whole render is: parse it, look up the component, set `data`.
|
|
445
|
+
|
|
446
|
+
`componentForTool(name)` is the lookup, exported from `@roxyapi/ui`, `@roxyapi/ui-react` and `@roxyapi/ui-vue`. It returns `{ tag, pascal, attrs?, operationId, toolName }` for a tool the library draws, and `undefined` for one it does not. `operationId` names the OpenAPI operation the tool calls, for your logs or for finding the endpoint in the API reference. `attrs` values are always strings: set them as attributes in the DOM, spread them as props in React and Vue.
|
|
433
447
|
|
|
434
448
|
```ts
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
449
|
+
import { componentForTool } from '@roxyapi/ui';
|
|
450
|
+
|
|
451
|
+
// `toolName` and `result` are what your model handed back for one tool call.
|
|
452
|
+
const found = componentForTool(toolName);
|
|
453
|
+
if (found) {
|
|
454
|
+
const el = document.createElement(found.tag);
|
|
455
|
+
for (const [name, value] of Object.entries(found.attrs ?? {})) el.setAttribute(name, value);
|
|
456
|
+
el.data = JSON.parse(result.content[0].text);
|
|
457
|
+
container.append(el);
|
|
458
|
+
}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
In React, `pascal` is the export name, so a namespace import renders it directly:
|
|
462
|
+
|
|
463
|
+
```tsx
|
|
464
|
+
import * as RoxyUI from '@roxyapi/ui-react';
|
|
465
|
+
import { componentForTool } from '@roxyapi/ui-react';
|
|
466
|
+
|
|
467
|
+
export function ToolWidget({ toolName, output }: { toolName: string; output: string }) {
|
|
468
|
+
const found = componentForTool(toolName);
|
|
469
|
+
if (!found) return null;
|
|
470
|
+
const Component = RoxyUI[found.pascal as keyof typeof RoxyUI] as React.ComponentType<{ data: unknown }>;
|
|
471
|
+
return <Component data={JSON.parse(output)} {...found.attrs} />;
|
|
472
|
+
}
|
|
440
473
|
```
|
|
441
474
|
|
|
442
|
-
|
|
475
|
+
Three things the lookup already handles, so you do not have to:
|
|
476
|
+
|
|
477
|
+
- **A compact result.** Ask a tool for the compact shape and its same-shaped arrays arrive columnar, as `{ "__cols": [names], "__rows": [[values]] }`. Every component decodes that on the way in and renders the same card either way. `expandCompact(value)` is exported too, for the paths that read the JSON before an element does.
|
|
478
|
+
- **A server-prefixed name.** Some hosts prefix the tool name with the server it came from and a colon (`roxy_tarot:post_tarot_daily`). The lookup strips the prefix.
|
|
479
|
+
- **Which component leads.** Three responses are rendered by two components each, and the lookup returns the one that leads with the drawing:
|
|
480
|
+
- the natal chart response is drawn by both `<roxy-natal-chart>` and `<roxy-western-planets-table>`, the lookup returns `<roxy-natal-chart>`
|
|
481
|
+
- the transit aspects response is drawn by both `<roxy-transit-wheel>` and `<roxy-aspects-table>`, the lookup returns `<roxy-transit-wheel>`
|
|
482
|
+
- the Vedic birth chart response is drawn by both `<roxy-vedic-kundli>` and `<roxy-vedic-planets-table>`, the lookup returns `<roxy-vedic-kundli>`
|
|
483
|
+
|
|
484
|
+
Full recipe, including the vendor connectors and the Vercel AI SDK: <https://roxyapi.com/docs/tutorials/ai-chat-widgets>.
|
|
485
|
+
|
|
486
|
+
No field renames. No glue code. Use the decision tree above to pick the component for any tool the lookup does not cover.
|
|
443
487
|
|
|
444
488
|
### Pattern 6: Next.js RSC streaming
|
|
445
489
|
|
|
@@ -503,7 +547,9 @@ This is how the WordPress plugin renders: PHP fetches the response server-side,
|
|
|
503
547
|
|
|
504
548
|
## Localized responses
|
|
505
549
|
|
|
506
|
-
Most RoxyAPI endpoints return their interpretation text in
|
|
550
|
+
Most RoxyAPI endpoints return their interpretation text in the language you ask for, selected with the `lang` query parameter (`en`, `tr`, `de`, `es`, `hi`, `pt`, `fr`, `ru`, `zh-Hans`, `zh-Hant`). Human Design, for example, returns the type, strategy, authority, profile, channel, center, gate, and line readings in the requested language. Coverage varies by domain, and a field with no translation in the language you asked for comes back in English.
|
|
551
|
+
|
|
552
|
+
Chinese is named by script rather than by language, so `zh-Hant` and `zh-Hans` are the two values to send. A component resolves a regional tag for you: `zh-TW` and `zh-HK` read as traditional, `zh-CN` and `zh-SG` as simplified.
|
|
507
553
|
|
|
508
554
|
The components hold no copy of their own; they print the prose the response carries. So the language of the response is the language of the render.
|
|
509
555
|
|
|
@@ -627,7 +673,7 @@ That table is the shared vocabulary, not the whole list. **`components-catalog.j
|
|
|
627
673
|
|
|
628
674
|
## Domain ordering
|
|
629
675
|
|
|
630
|
-
When listing domains in user-visible copy, use the canonical order: Western astrology, Vedic astrology, forecast, human design, numerology, tarot, biorhythm, I Ching, crystals, dreams, angel numbers. Location is utility, not a selling domain. The `domain` field in `components-catalog.json` carries the same names, so sort by this list rather than by whatever order you discovered components in.
|
|
676
|
+
When listing domains in user-visible copy, use the canonical order: Western astrology, Vedic astrology, forecast, human design, Chinese astrology, feng shui, numerology, tarot, biorhythm, I Ching, crystals, dreams, angel numbers. Sort by this list and skip any domain the catalog does not carry a component for. Location is utility, not a selling domain. The `domain` field in `components-catalog.json` carries the same names, so sort by this list rather than by whatever order you discovered components in.
|
|
631
677
|
|
|
632
678
|
## What not to ship
|
|
633
679
|
|
package/README.md
CHANGED
|
@@ -177,6 +177,53 @@ Every chart, table, and card adapts to light and dark automatically. Hover any i
|
|
|
177
177
|
</tr>
|
|
178
178
|
</table>
|
|
179
179
|
|
|
180
|
+
### Chinese astrology and feng shui
|
|
181
|
+
|
|
182
|
+
<table>
|
|
183
|
+
<tr>
|
|
184
|
+
<td width="50%"><strong>Four pillars</strong> · <code><roxy-bazi-chart></code><br><sub>POST /chinese-astrology/bazi/chart</sub><br>
|
|
185
|
+
<picture>
|
|
186
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/bazi-chart-dark.png">
|
|
187
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/bazi-chart-light.png" alt="BaZi four pillars chart, each pillar drawn as a Heavenly Stem over its Earthly Branch in hanzi with the Ten God relation, the stems the branch stores, and the Na Yin, over the five-element balance and the interactions the pillars form">
|
|
188
|
+
</picture>
|
|
189
|
+
</td>
|
|
190
|
+
<td width="50%"><strong>Flying star chart</strong> · <code><roxy-flying-star-chart></code><br><sub>POST /feng-shui/flying-stars/natal</sub><br>
|
|
191
|
+
<picture>
|
|
192
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/flying-star-chart-dark.png">
|
|
193
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/flying-star-chart-light.png" alt="Xuan Kong flying star plate, nine palaces on the Chinese compass with south at the top, each carrying its mountain star, period star and water star, over the facing and sitting mountains and the structure they produce">
|
|
194
|
+
</picture>
|
|
195
|
+
</td>
|
|
196
|
+
</tr>
|
|
197
|
+
<tr>
|
|
198
|
+
<td width="50%"><strong>Chinese zodiac</strong> · <code><roxy-zodiac-card></code><br><sub>GET /chinese-astrology/zodiac/animals/{id}</sub><br>
|
|
199
|
+
<picture>
|
|
200
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/zodiac-card-dark.png">
|
|
201
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/zodiac-card-light.png" alt="Chinese zodiac animal card with the animal in hanzi, its element and polarity, the double hours it governs, its trine, and its secret friend, clash and harm partners">
|
|
202
|
+
</picture>
|
|
203
|
+
</td>
|
|
204
|
+
<td width="50%"><strong>Kua and eight mansions</strong> · <code><roxy-kua-card></code><br><sub>POST /feng-shui/eight-mansions</sub><br>
|
|
205
|
+
<picture>
|
|
206
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/kua-card-dark.png">
|
|
207
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/kua-card-light.png" alt="Eight Mansions map on the nine-palace grid, four favourable and four unfavourable compass sectors each with its star, rank and life domain, and the Kua number and trigram in the centre">
|
|
208
|
+
</picture>
|
|
209
|
+
</td>
|
|
210
|
+
</tr>
|
|
211
|
+
<tr>
|
|
212
|
+
<td width="50%"><strong>Luck pillars</strong> · <code><roxy-luck-pillars></code><br><sub>POST /chinese-astrology/bazi/luck-pillars</sub><br>
|
|
213
|
+
<picture>
|
|
214
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/luck-pillars-dark.png">
|
|
215
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/luck-pillars-light.png" alt="BaZi luck pillars as a strip of ten-year stretches, each with its stem and branch in hanzi, the Ten God relation, and the ages and years it spans">
|
|
216
|
+
</picture>
|
|
217
|
+
</td>
|
|
218
|
+
<td width="50%"><strong>Chinese almanac</strong> · <code><roxy-almanac-day></code><br><sub>GET /chinese-astrology/calendar/day/{date}</sub><br>
|
|
219
|
+
<picture>
|
|
220
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/almanac-day-dark.png">
|
|
221
|
+
<img src="https://raw.githubusercontent.com/RoxyAPI/ui/main/assets/screenshots/almanac-day-light.png" alt="Chinese almanac day with the day officer, what the day favours and what it avoids, the animal it clashes with, and its three pillars and lunar mansion">
|
|
222
|
+
</picture>
|
|
223
|
+
</td>
|
|
224
|
+
</tr>
|
|
225
|
+
</table>
|
|
226
|
+
|
|
180
227
|
### Other domains
|
|
181
228
|
|
|
182
229
|
<table>
|
|
@@ -290,6 +337,40 @@ Always call `/location/search` first. Every chart endpoint expects latitude, lon
|
|
|
290
337
|
|
|
291
338
|
> **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.
|
|
292
339
|
|
|
340
|
+
## Render an AI tool result
|
|
341
|
+
|
|
342
|
+
It ships inside `@roxyapi/ui`, `@roxyapi/ui-react` and `@roxyapi/ui-vue`, so whichever one you already installed has it and there is nothing else to add.
|
|
343
|
+
|
|
344
|
+
Your model calls a Remote MCP tool at `roxyapi.com/mcp/{domain}` and hands you back a tool name and a JSON string. `componentForTool(name)` turns that name into the component that draws it, so a chat answer shows a real tarot spread or a real chart instead of a wall of fields. It works in any chat UI that lets you render your own markup for a tool result.
|
|
345
|
+
|
|
346
|
+
```ts
|
|
347
|
+
import { componentForTool } from '@roxyapi/ui';
|
|
348
|
+
|
|
349
|
+
const found = componentForTool(toolName);
|
|
350
|
+
if (found) {
|
|
351
|
+
const el = document.createElement(found.tag);
|
|
352
|
+
for (const [name, value] of Object.entries(found.attrs ?? {})) el.setAttribute(name, value);
|
|
353
|
+
el.data = JSON.parse(result.content[0].text);
|
|
354
|
+
container.append(el);
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
In React, `pascal` is the export name, so a namespace import renders it directly:
|
|
359
|
+
|
|
360
|
+
```tsx
|
|
361
|
+
import * as RoxyUI from '@roxyapi/ui-react';
|
|
362
|
+
import { componentForTool } from '@roxyapi/ui-react';
|
|
363
|
+
|
|
364
|
+
export function ToolWidget({ toolName, output }: { toolName: string; output: string }) {
|
|
365
|
+
const found = componentForTool(toolName);
|
|
366
|
+
if (!found) return null;
|
|
367
|
+
const Component = RoxyUI[found.pascal as keyof typeof RoxyUI] as React.ComponentType<{ data: unknown }>;
|
|
368
|
+
return <Component data={JSON.parse(output)} {...found.attrs} />;
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
A compact tool result is decoded for you, and a name a host prefixed with its server (`roxy_tarot:post_tarot_daily`) resolves the same as a bare one. Full recipe, with the vendor connectors and the Vercel AI SDK: <https://roxyapi.com/docs/tutorials/ai-chat-widgets>. Runnable page: [examples/vanilla/tool-result.html](examples/vanilla/tool-result.html).
|
|
373
|
+
|
|
293
374
|
## Server-rendered, no JavaScript wiring
|
|
294
375
|
|
|
295
376
|
Server-rendered and cached pages (WordPress, JSX SSR, static HTML) cannot always run JavaScript to set the `data` property per element. Render the response into a child `<script type="application/json" class="roxy-data">` on the server instead. The component reads it on load. No per-element script, no API key in the browser.
|
|
@@ -428,7 +509,103 @@ const { data: d9 } = await roxy.vedicAstrology.generateDivisionalChart({
|
|
|
428
509
|
<RoxyDivisionalChart data={d9} />
|
|
429
510
|
```
|
|
430
511
|
|
|
431
|
-
### 3.
|
|
512
|
+
### 3. Forecast (transits, cross-domain timeline)
|
|
513
|
+
|
|
514
|
+
One stateless call merges Western transits, Vedic Vimshottari dasha boundaries, and biorhythm critical days into a single significance-scored, time-ordered timeline. Built for forecast feeds, transit alerts, and timing tools. No coordinates needed.
|
|
515
|
+
|
|
516
|
+
```tsx
|
|
517
|
+
import { RoxyForecastTimeline } from '@roxyapi/ui-react';
|
|
518
|
+
|
|
519
|
+
// Transit forecast. The demand leader. Western transit-to-natal aspects, sign
|
|
520
|
+
// ingresses, and retrograde stations over the window.
|
|
521
|
+
const { data: transits } = await roxy.forecast.forecastTransits({
|
|
522
|
+
body: { birthData: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 } },
|
|
523
|
+
});
|
|
524
|
+
<RoxyForecastTimeline data={transits} />
|
|
525
|
+
|
|
526
|
+
// Cross-domain timeline. The same window merged with Vedic dasha boundaries and
|
|
527
|
+
// biorhythm critical days into one significance-scored timeline.
|
|
528
|
+
const { data: timeline } = await roxy.forecast.generateTimeline({
|
|
529
|
+
body: {
|
|
530
|
+
birthData: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
531
|
+
domains: ['western', 'vedic', 'biorhythm'],
|
|
532
|
+
},
|
|
533
|
+
});
|
|
534
|
+
<RoxyForecastTimeline data={timeline} />
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
### 4. Human Design (bodygraph)
|
|
538
|
+
|
|
539
|
+
A self-knowledge system computed from the same ephemeris as Western astrology, laid over the I Ching gate wheel and nine chakra-style centers. Self-discovery apps, dating and compatibility products, and AI coaching bots render the full bodygraph. No coordinates needed; Human Design uses the birth instant, not the observer location.
|
|
540
|
+
|
|
541
|
+
The response is a reading, not a set of labels: the type, strategy, authority, profile, and definition each arrive with the text that explains them, every defined channel and every center carry their own interpretation, and each of the activations carries a gate meaning and the meaning of its line. `<RoxyBodygraph>` lays that out for you. The chart and the identity read at a glance, and every body of prose sits behind a disclosure, so one component renders a complete reading without becoming a wall of text.
|
|
542
|
+
|
|
543
|
+
```tsx
|
|
544
|
+
import { RoxyBodygraph } from '@roxyapi/ui-react';
|
|
545
|
+
|
|
546
|
+
// Full bodygraph. The head term every Human Design app leads with ("human design chart").
|
|
547
|
+
// Type, strategy, authority, profile, the nine centers, channels, and every gate
|
|
548
|
+
// activation in one call. Pass the birth instant only, no latitude or longitude.
|
|
549
|
+
const { data: bodygraph } = await roxy.humanDesign.generateBodygraph({
|
|
550
|
+
body: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
551
|
+
});
|
|
552
|
+
<RoxyBodygraph data={bodygraph} />
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
Every interpretation is localized. Ask for the language on the request and the component renders it, because the component prints the prose the API returned and holds no copy of its own.
|
|
556
|
+
|
|
557
|
+
```tsx
|
|
558
|
+
const { data: bodygraph } = await roxy.humanDesign.generateBodygraph({
|
|
559
|
+
body: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
560
|
+
query: { lang: 'de' },
|
|
561
|
+
});
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### 5. Chinese astrology (four pillars, luck pillars, zodiac, almanac)
|
|
565
|
+
|
|
566
|
+
The BaZi chart a reading is built on, the ten-year luck pillars that time it, the twelve-animal zodiac, and the almanac people actually consult to pick a date. Fits date-selection tools, Chinese-new-year features and East Asian wellness apps.
|
|
567
|
+
|
|
568
|
+
```tsx
|
|
569
|
+
import { RoxyBaziChart, RoxyZodiacCard, RoxyAlmanacDay } from '@roxyapi/ui-react';
|
|
570
|
+
|
|
571
|
+
// Four pillars. Stem over branch per pillar, hidden stems, Ten Gods, element balance.
|
|
572
|
+
const { data: bazi } = await roxy.chineseAstrology.generateBaziChart({
|
|
573
|
+
body: { date: '1990-01-15', time: '14:30:00', timezone: 'America/New_York' },
|
|
574
|
+
});
|
|
575
|
+
<RoxyBaziChart data={bazi} />
|
|
576
|
+
|
|
577
|
+
// The animal a birth date falls in, on the classical year boundary.
|
|
578
|
+
const { data: sign } = await roxy.chineseAstrology.calculateZodiacAnimal({
|
|
579
|
+
body: { date: '1990-01-15' },
|
|
580
|
+
});
|
|
581
|
+
<RoxyZodiacCard data={sign} mode="sign" />
|
|
582
|
+
|
|
583
|
+
// Almanac day. What the day favours, what it avoids, and the animal it clashes with.
|
|
584
|
+
const { data: day } = await roxy.chineseAstrology.getAlmanacDay({ path: { date: '2026-09-08' } });
|
|
585
|
+
<RoxyAlmanacDay data={day} mode="day" />
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
### 6. Feng shui (kua number, eight mansions, flying stars)
|
|
589
|
+
|
|
590
|
+
A person's Kua number and the eight directions it ranks for them, plus the Xuan Kong flying-star plate for a building. Fits home and office consultation tools, property apps and annual-forecast features.
|
|
591
|
+
|
|
592
|
+
```tsx
|
|
593
|
+
import { RoxyKuaCard, RoxyFlyingStarChart } from '@roxyapi/ui-react';
|
|
594
|
+
|
|
595
|
+
// Kua number and the full Eight Mansions map, four favourable sectors and four not.
|
|
596
|
+
const { data: mansions } = await roxy.fengShui.generateEightMansions({
|
|
597
|
+
body: { date: '1990-01-15', gender: 'female' },
|
|
598
|
+
});
|
|
599
|
+
<RoxyKuaCard data={mansions} mode="mansions" />
|
|
600
|
+
|
|
601
|
+
// Flying star plate for a building, from its facing degrees and construction period.
|
|
602
|
+
const { data: plate } = await roxy.fengShui.generateFlyingStarChart({
|
|
603
|
+
body: { facingDegrees: 175, period: 9 },
|
|
604
|
+
});
|
|
605
|
+
<RoxyFlyingStarChart data={plate} mode="natal" />
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
### 7. Numerology (life path, full chart, personal year)
|
|
432
609
|
|
|
433
610
|
Life path, the full chart, and the personal year. The easiest domain to integrate: a name and a birth date are enough, with no birth time and no coordinates.
|
|
434
611
|
|
|
@@ -454,7 +631,7 @@ const { data: pyear } = await roxy.numerology.calculatePersonalYear({
|
|
|
454
631
|
<RoxyNumerologyCard data={pyear} type="personal-year" />
|
|
455
632
|
```
|
|
456
633
|
|
|
457
|
-
###
|
|
634
|
+
### 8. Tarot (daily card, three-card, Celtic Cross)
|
|
458
635
|
|
|
459
636
|
Draw a single daily card, a three-card spread, or a full Celtic Cross. The card database is stable reference data, so fetch it once and cache it rather than calling per render.
|
|
460
637
|
|
|
@@ -478,59 +655,7 @@ const { data: cc } = await roxy.tarot.castCelticCross({
|
|
|
478
655
|
<RoxyTarotSpread data={cc} />
|
|
479
656
|
```
|
|
480
657
|
|
|
481
|
-
###
|
|
482
|
-
|
|
483
|
-
A self-knowledge system computed from the same ephemeris as Western astrology, laid over the I Ching gate wheel and nine chakra-style centers. Self-discovery apps, dating and compatibility products, and AI coaching bots render the full bodygraph. No coordinates needed; Human Design uses the birth instant, not the observer location.
|
|
484
|
-
|
|
485
|
-
The response is a reading, not a set of labels: the type, strategy, authority, profile, and definition each arrive with the text that explains them, every defined channel and every center carry their own interpretation, and each of the activations carries a gate meaning and the meaning of its line. `<RoxyBodygraph>` lays that out for you. The chart and the identity read at a glance, and every body of prose sits behind a disclosure, so one component renders a complete reading without becoming a wall of text.
|
|
486
|
-
|
|
487
|
-
```tsx
|
|
488
|
-
import { RoxyBodygraph } from '@roxyapi/ui-react';
|
|
489
|
-
|
|
490
|
-
// Full bodygraph. The head term every Human Design app leads with ("human design chart").
|
|
491
|
-
// Type, strategy, authority, profile, the nine centers, channels, and every gate
|
|
492
|
-
// activation in one call. Pass the birth instant only, no latitude or longitude.
|
|
493
|
-
const { data: bodygraph } = await roxy.humanDesign.generateBodygraph({
|
|
494
|
-
body: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
495
|
-
});
|
|
496
|
-
<RoxyBodygraph data={bodygraph} />
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
Every interpretation is localized. Ask for the language on the request and the component renders it, because the component prints the prose the API returned and holds no copy of its own.
|
|
500
|
-
|
|
501
|
-
```tsx
|
|
502
|
-
const { data: bodygraph } = await roxy.humanDesign.generateBodygraph({
|
|
503
|
-
body: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
504
|
-
query: { lang: 'de' },
|
|
505
|
-
});
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
### 6. Forecast (transits, cross-domain timeline)
|
|
509
|
-
|
|
510
|
-
One stateless call merges Western transits, Vedic Vimshottari dasha boundaries, and biorhythm critical days into a single significance-scored, time-ordered timeline. Built for forecast feeds, transit alerts, and timing tools. No coordinates needed.
|
|
511
|
-
|
|
512
|
-
```tsx
|
|
513
|
-
import { RoxyForecastTimeline } from '@roxyapi/ui-react';
|
|
514
|
-
|
|
515
|
-
// Transit forecast. The demand leader. Western transit-to-natal aspects, sign
|
|
516
|
-
// ingresses, and retrograde stations over the window.
|
|
517
|
-
const { data: transits } = await roxy.forecast.forecastTransits({
|
|
518
|
-
body: { birthData: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 } },
|
|
519
|
-
});
|
|
520
|
-
<RoxyForecastTimeline data={transits} />
|
|
521
|
-
|
|
522
|
-
// Cross-domain timeline. The same window merged with Vedic dasha boundaries and
|
|
523
|
-
// biorhythm critical days into one significance-scored timeline.
|
|
524
|
-
const { data: timeline } = await roxy.forecast.generateTimeline({
|
|
525
|
-
body: {
|
|
526
|
-
birthData: { date: '1990-01-15', time: '14:30:00', timezone: 5.5 },
|
|
527
|
-
domains: ['western', 'vedic', 'biorhythm'],
|
|
528
|
-
},
|
|
529
|
-
});
|
|
530
|
-
<RoxyForecastTimeline data={timeline} />
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
### 7. Biorhythm (daily, forecast)
|
|
658
|
+
### 9. Biorhythm (daily, forecast)
|
|
534
659
|
|
|
535
660
|
Physical, emotional and intellectual cycles from a birth date alone, as a daily reading or a forward forecast with the critical days marked. Fits wellness, productivity, sports and couples apps.
|
|
536
661
|
|
|
@@ -551,7 +676,7 @@ const { data: forecast } = await roxy.biorhythm.getForecast({
|
|
|
551
676
|
<RoxyBiorhythmChart data={forecast} mode="forecast" />
|
|
552
677
|
```
|
|
553
678
|
|
|
554
|
-
###
|
|
679
|
+
### 10. I Ching (cast a reading, hexagram lookup)
|
|
555
680
|
|
|
556
681
|
Cast a reading with its changing lines and the hexagram it transforms into, or look up any of the 64 figures directly. Fits meditation apps, decision-making tools and wisdom chatbots.
|
|
557
682
|
|
|
@@ -610,7 +735,7 @@ The self-fetch form renders spec-driven inputs (a zodiac tile picker, a boolean
|
|
|
610
735
|
| `<roxy-transit-wheel>` | Western | POST /astrology/transit-aspects | Natal chart on the inner ring, transiting bodies on the outer ring, aspect lines between them |
|
|
611
736
|
| `<roxy-aspects-table>` | Western | POST /astrology/aspects, /astrology/transit-aspects, /astrology/aspect-patterns | Aspect rows coloured by nature with orb and strength, plus detected chart patterns |
|
|
612
737
|
| `<roxy-moon-phase>` | Western | GET /astrology/moon-phase/{current,upcoming,calendar/...} | Moon phase card and calendar |
|
|
613
|
-
| `<roxy-horoscope-card>` | Western | GET /astrology/horoscope/{sign}/{daily,weekly,monthly} | Daily, weekly, or
|
|
738
|
+
| `<roxy-horoscope-card>` | Western | GET /astrology/horoscope/{sign}/{daily,weekly,monthly,yearly} | Daily, weekly, monthly, or yearly horoscope card |
|
|
614
739
|
| `<roxy-astrocartography-map>` | Western | POST /astrology/astrocartography | World map of planetary MC, IC, Ascendant, and Descendant lines with per-line interpretations |
|
|
615
740
|
| `<roxy-local-space-compass>` | Western | POST /astrology/local-space | Compass dial of planetary azimuth lines from the birthplace, dimmed below the horizon |
|
|
616
741
|
| `<roxy-relocation-wheel>` | Western | POST /astrology/relocation-chart | Relocated chart wheel plus the move geometry, angular planets, and planets that change house |
|
|
@@ -655,6 +780,12 @@ The self-fetch form renders spec-driven inputs (a zodiac tile picker, a boolean
|
|
|
655
780
|
| `<roxy-hd-variables>` | Human Design | POST /human-design/variables | The four transformation arrows with direction, color, tone, and base, plus a reading per arrow grouped by layer and the cognition |
|
|
656
781
|
| `<roxy-forecast-timeline>` | Forecast | POST /forecast/{timeline,significant-dates,transits} | Date-grouped events across Western, Vedic, and biorhythm domains, weighted by significance |
|
|
657
782
|
| `<roxy-forecast-digest>` | Forecast | POST /forecast/digest | Per-window event counts, domain breakdown, and the highest-significance events |
|
|
783
|
+
| `<roxy-bazi-chart>` | Chinese | POST /chinese-astrology/bazi/chart | Year, month, day and hour pillars in hanzi with hidden stems, Ten Gods, Na Yin, element balance and interactions |
|
|
784
|
+
| `<roxy-luck-pillars>` | Chinese | POST /chinese-astrology/bazi/luck-pillars | Ten-year luck pillars as a strip with ages and years, the annual pillars, and the direction and start age behind them |
|
|
785
|
+
| `<roxy-zodiac-card>` | Chinese | POST /chinese-astrology/zodiac/sign, GET /chinese-astrology/zodiac/{animals/{id},{id}/daily,compatibility/{sign1}/{sign2}} | The animal for a date, one animal in full, a daily reading, or a pair scored |
|
|
786
|
+
| `<roxy-almanac-day>` | Chinese | GET /chinese-astrology/calendar/{day/{date},monthly}, POST /chinese-astrology/calendar/auspicious-days | Day officer, favours and avoids, clash animal and pillars, as one day, a month, or a date search |
|
|
787
|
+
| `<roxy-flying-star-chart>` | Feng Shui | POST /feng-shui/flying-stars/natal, GET /feng-shui/flying-stars/annual/{year} | Nine-palace flying star plate with the mountain, period and water star per palace, the facing and sitting mountains and the structure |
|
|
788
|
+
| `<roxy-kua-card>` | Feng Shui | POST /feng-shui/kua, POST /feng-shui/eight-mansions | Kua number and trigram over the eight-sector direction map, favourable and unfavourable sectors ranked |
|
|
658
789
|
| `<roxy-biorhythm-chart>` | Biorhythm | POST /biorhythm/{daily,forecast,critical-days} | Daily bars, forecast cycle lines, critical days |
|
|
659
790
|
| `<roxy-hexagram>` | I Ching | GET /iching/hexagrams/{number}, /iching/cast, POST /iching/daily, /iching/daily/cast | Hexagram figure with trigrams, judgment, image, and a reading per line (statement plus meaning); a cast highlights the moving lines and the resulting hexagram |
|
|
660
791
|
| `<roxy-crystal-card>` | Crystals | GET /crystals/{id} | Photo, meaning sections, chakra, zodiac, element, hardness, keywords, and pairings |
|
|
@@ -753,7 +884,7 @@ What each family keeps when you set it:
|
|
|
753
884
|
|
|
754
885
|
- Charts and wheels keep the drawing, the legend, the glyphs, every degree and house, and the tab strip.
|
|
755
886
|
- Tables keep every row and column, including the calculated ones (kaksha bindus, koota scores, significance bars, orbs and strengths).
|
|
756
|
-
- Cards keep the header, the badges, the meters and the fact grids: a dosha keeps its present or absent verdict, its phase and its severity; a crystal keeps its Mohs hardness and its attribute grid; a horoscope keeps its energy meter, its Moon placement, the transits behind the reading and its
|
|
887
|
+
- Cards keep the header, the badges, the meters and the fact grids: a dosha keeps its present or absent verdict, its phase and its severity; a crystal keeps its Mohs hardness and its attribute grid; a horoscope keeps its energy meter, its Moon placement, the transits behind the reading, its key dates, and the dated sky events the reading was built on, each with its exact instant and the house it falls in.
|
|
757
888
|
- Vedic responses keep the sidereal frame caption, so a chart is still reconcilable against another calculator.
|
|
758
889
|
|
|
759
890
|
What goes: interpretation paragraphs, the reading accordions, keyword chips attached to a reading, remedies and action steps and strengths lists (sentences laid out as bullets), and any section whose only content was one of those, heading included.
|
|
@@ -801,7 +932,9 @@ Two things are separate on purpose. The catalogue is the wording this library wr
|
|
|
801
932
|
|
|
802
933
|
Dates, times and numbers follow the page as well, in the conventions that language actually uses: a Spanish page reads `15 ene 1990`, an Argentine one `15 de ene de 1990`, a German one `15. Jan. 1990, 14:30`. The hour cycle comes from the language, not from us, so nobody gets a 12-hour clock on a page that writes 24. This needs no catalogue and no attribute: it follows the same `lang` your page already declares.
|
|
803
934
|
|
|
804
|
-
A catalogue ships for
|
|
935
|
+
A catalogue ships for `de`, `es`, `fr`, `hi`, `pt`, `ru` and `tr`. Coverage grows card by card, and a card is either translated or it is not, so a component reads its own labels in your language or renders them in English, never a mixture. Every term in every catalogue is sourced from named astrology references in that language rather than translated word for word, because the words a practitioner reads are the product.
|
|
936
|
+
|
|
937
|
+
Chinese is keyed by script rather than by language, so a page declaring `zh-Hant` or `zh-Hans` gets the response in that script from the endpoints that serve it. A regional tag resolves on its own: `zh-TW` and `zh-HK` read as traditional, `zh-CN` and `zh-SG` as simplified. Component labels stay English on those pages, and the response carries the vocabulary.
|
|
805
938
|
|
|
806
939
|
## Reliability
|
|
807
940
|
|
|
@@ -810,7 +943,7 @@ A catalogue ships for every language the API serves: `de`, `es`, `fr`, `hi`, `pt
|
|
|
810
943
|
- Consistent response formats across every domain in the catalog.
|
|
811
944
|
- A11y zero violations enforced in CI.
|
|
812
945
|
- Tight per-component bundle budget enforced in CI.
|
|
813
|
-
- Coverage of the highest-demand endpoints across Western astrology, Vedic astrology,
|
|
946
|
+
- Coverage of the highest-demand endpoints across Western astrology, Vedic astrology, forecast, Human Design, Chinese astrology, feng shui, numerology, tarot, biorhythm, I Ching, plus helpers for location search and schema-driven forms.
|
|
814
947
|
|
|
815
948
|
## Built for AI agents
|
|
816
949
|
|
|
@@ -837,7 +970,7 @@ Local preview serves `apps/docs/` on port 3001. Same directory and same paths th
|
|
|
837
970
|
|
|
838
971
|
## Stack and integrations
|
|
839
972
|
|
|
840
|
-
Roxy UI runs in any framework that supports the DOM: **React, Next.js, Vue, Svelte, Angular, Solid, Astro, Qwik, Hono, Remix, Nuxt, SvelteKit, Lit, plain HTML, WordPress, Shopify themes that allow custom code, and any MCP-compatible AI agent**. Distribution paths: npm, jsDelivr CDN, shadcn registry. Use cases: astrology widgets, kundli matching, daily horoscope, tarot reader, numerology calculator, biorhythm dashboard, I Ching cast, panchang almanac, dasha timeline, moon phase tracker, synastry compatibility, dosha checker.
|
|
973
|
+
Roxy UI runs in any framework that supports the DOM: **React, Next.js, Vue, Svelte, Angular, Solid, Astro, Qwik, Hono, Remix, Nuxt, SvelteKit, Lit, plain HTML, WordPress, Shopify themes that allow custom code, and any MCP-compatible AI agent**. Distribution paths: npm, jsDelivr CDN, shadcn registry. Use cases: astrology widgets, kundli matching, daily horoscope, BaZi four pillars chart, Chinese zodiac readings, feng shui Kua and flying star plates, almanac day picker, tarot reader, numerology calculator, biorhythm dashboard, I Ching cast, panchang almanac, dasha timeline, moon phase tracker, synastry compatibility, dosha checker.
|
|
841
974
|
|
|
842
975
|
## FAQ
|
|
843
976
|
|
|
@@ -873,7 +1006,7 @@ Persist the choice in `localStorage` from your own code; the components do not o
|
|
|
873
1006
|
<details>
|
|
874
1007
|
<summary><strong>How big is each component? What is the bundle cost?</strong></summary>
|
|
875
1008
|
|
|
876
|
-
|
|
1009
|
+
Every component bundle is under 30 KB gzipped and the full bundle (every component, helpers, base styles, and the inlined design tokens) is under 150 KB gzipped. Both ceilings are enforced in CI on every build, measured on the compressed bytes a browser actually downloads, so a release cannot quietly grow past them. A route that renders one chart pays for one component, not the whole catalog. Pin a concrete version in production for byte-stable cache hits.
|
|
877
1010
|
</details>
|
|
878
1011
|
|
|
879
1012
|
<details>
|