@roxyapi/ui 0.5.0 → 0.6.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/README.md +1 -1
- package/dist/cdn/components/ashtakavarga-grid.js +3 -362
- package/dist/cdn/components/ashtakavarga-grid.js.map +2 -2
- package/dist/cdn/components/biorhythm-chart.js +2 -225
- package/dist/cdn/components/biorhythm-chart.js.map +2 -2
- package/dist/cdn/components/choghadiya-grid.js +2 -231
- package/dist/cdn/components/choghadiya-grid.js.map +2 -2
- package/dist/cdn/components/compatibility-card.js +2 -230
- package/dist/cdn/components/compatibility-card.js.map +2 -2
- package/dist/cdn/components/dasha-timeline.js +3 -283
- package/dist/cdn/components/dasha-timeline.js.map +4 -4
- package/dist/cdn/components/data.js +3 -230
- package/dist/cdn/components/data.js.map +2 -2
- package/dist/cdn/components/divisional-chart.js +3 -356
- package/dist/cdn/components/divisional-chart.js.map +4 -4
- package/dist/cdn/components/dosha-card.js +2 -225
- package/dist/cdn/components/dosha-card.js.map +2 -2
- package/dist/cdn/components/endpoint-form.js +2 -243
- package/dist/cdn/components/endpoint-form.js.map +2 -2
- package/dist/cdn/components/guna-milan.js +2 -269
- package/dist/cdn/components/guna-milan.js.map +2 -2
- package/dist/cdn/components/hexagram.js +3 -247
- package/dist/cdn/components/hexagram.js.map +2 -2
- package/dist/cdn/components/horoscope-card.js +3 -281
- package/dist/cdn/components/horoscope-card.js.map +2 -2
- package/dist/cdn/components/kp-chart.js +2 -277
- package/dist/cdn/components/kp-chart.js.map +2 -2
- package/dist/cdn/components/kp-planets-table.js +2 -195
- package/dist/cdn/components/kp-planets-table.js.map +2 -2
- package/dist/cdn/components/kp-ruling-planets.js +2 -240
- package/dist/cdn/components/kp-ruling-planets.js.map +2 -2
- package/dist/cdn/components/location-search.js +2 -240
- package/dist/cdn/components/location-search.js.map +2 -2
- package/dist/cdn/components/moon-phase.js +3 -223
- package/dist/cdn/components/moon-phase.js.map +2 -2
- package/dist/cdn/components/nakshatra-card.js +2 -200
- package/dist/cdn/components/nakshatra-card.js.map +2 -2
- package/dist/cdn/components/natal-chart.js +3 -563
- package/dist/cdn/components/natal-chart.js.map +4 -4
- package/dist/cdn/components/numerology-card.js +2 -232
- package/dist/cdn/components/numerology-card.js.map +2 -2
- package/dist/cdn/components/panchang-table.js +3 -220
- package/dist/cdn/components/panchang-table.js.map +2 -2
- package/dist/cdn/components/shadbala-table.js +3 -284
- package/dist/cdn/components/shadbala-table.js.map +2 -2
- package/dist/cdn/components/synastry-chart.js +2 -398
- package/dist/cdn/components/synastry-chart.js.map +2 -2
- package/dist/cdn/components/tarot-card.js +3 -261
- package/dist/cdn/components/tarot-card.js.map +2 -2
- package/dist/cdn/components/tarot-spread.js +2 -248
- package/dist/cdn/components/tarot-spread.js.map +2 -2
- package/dist/cdn/components/transits-table.js +3 -382
- package/dist/cdn/components/transits-table.js.map +4 -4
- package/dist/cdn/components/vedic-kundli.js +3 -305
- package/dist/cdn/components/vedic-kundli.js.map +4 -4
- package/dist/cdn/components/vedic-planets-table.js +2 -202
- package/dist/cdn/components/vedic-planets-table.js.map +2 -2
- package/dist/cdn/components/western-planets-table.js +3 -192
- package/dist/cdn/components/western-planets-table.js.map +2 -2
- package/dist/cdn/components/yoga-list.js +2 -305
- package/dist/cdn/components/yoga-list.js.map +2 -2
- package/dist/cdn/roxy-ui.js +3 -5102
- package/dist/cdn/roxy-ui.js.map +4 -4
- package/dist/cdn/widgets.js +1 -114
- package/dist/components/ashtakavarga-grid.js +1 -577
- package/dist/components/ashtakavarga-grid.js.map +3 -3
- package/dist/components/biorhythm-chart.js +1 -378
- package/dist/components/biorhythm-chart.js.map +3 -3
- package/dist/components/choghadiya-grid.js +1 -397
- package/dist/components/choghadiya-grid.js.map +3 -3
- package/dist/components/compatibility-card.js +1 -359
- package/dist/components/compatibility-card.js.map +3 -3
- package/dist/components/dasha-timeline.d.ts.map +1 -1
- package/dist/components/dasha-timeline.js +1 -447
- package/dist/components/dasha-timeline.js.map +4 -4
- package/dist/components/data.js +1 -408
- package/dist/components/data.js.map +3 -3
- package/dist/components/divisional-chart.d.ts.map +1 -1
- package/dist/components/divisional-chart.js +1 -932
- package/dist/components/divisional-chart.js.map +4 -4
- package/dist/components/dosha-card.js +1 -339
- package/dist/components/dosha-card.js.map +3 -3
- package/dist/components/endpoint-form.js +1 -505
- package/dist/components/endpoint-form.js.map +3 -3
- package/dist/components/guna-milan.js +1 -420
- package/dist/components/guna-milan.js.map +3 -3
- package/dist/components/hexagram.js +1 -426
- package/dist/components/hexagram.js.map +3 -3
- package/dist/components/horoscope-card.js +1 -427
- package/dist/components/horoscope-card.js.map +3 -3
- package/dist/components/kp-chart.js +1 -441
- package/dist/components/kp-chart.js.map +3 -3
- package/dist/components/kp-planets-table.js +1 -292
- package/dist/components/kp-planets-table.js.map +3 -3
- package/dist/components/kp-ruling-planets.js +1 -334
- package/dist/components/kp-ruling-planets.js.map +3 -3
- package/dist/components/location-search.js +1 -461
- package/dist/components/location-search.js.map +3 -3
- package/dist/components/moon-phase.js +1 -373
- package/dist/components/moon-phase.js.map +3 -3
- package/dist/components/nakshatra-card.js +1 -290
- package/dist/components/nakshatra-card.js.map +3 -3
- package/dist/components/natal-chart.d.ts +0 -1
- package/dist/components/natal-chart.d.ts.map +1 -1
- package/dist/components/natal-chart.js +1 -1086
- package/dist/components/natal-chart.js.map +4 -4
- package/dist/components/numerology-card.js +1 -361
- package/dist/components/numerology-card.js.map +3 -3
- package/dist/components/panchang-table.js +1 -396
- package/dist/components/panchang-table.js.map +3 -3
- package/dist/components/shadbala-table.js +1 -459
- package/dist/components/shadbala-table.js.map +3 -3
- package/dist/components/synastry-chart.js +1 -704
- package/dist/components/synastry-chart.js.map +3 -3
- package/dist/components/tarot-card.js +1 -379
- package/dist/components/tarot-card.js.map +3 -3
- package/dist/components/tarot-spread.js +1 -356
- package/dist/components/tarot-spread.js.map +3 -3
- package/dist/components/transits-table.d.ts +2 -0
- package/dist/components/transits-table.d.ts.map +1 -1
- package/dist/components/transits-table.js +1 -594
- package/dist/components/transits-table.js.map +4 -4
- package/dist/components/vedic-kundli.d.ts.map +1 -1
- package/dist/components/vedic-kundli.js +1 -848
- package/dist/components/vedic-kundli.js.map +4 -4
- package/dist/components/vedic-planets-table.js +1 -414
- package/dist/components/vedic-planets-table.js.map +3 -3
- package/dist/components/western-planets-table.js +1 -409
- package/dist/components/western-planets-table.js.map +3 -3
- package/dist/components/yoga-list.js +1 -429
- package/dist/components/yoga-list.js.map +3 -3
- package/dist/index.cjs +1 -8726
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +1 -8706
- package/dist/index.js.map +4 -4
- package/dist/utils/disclosure.d.ts +16 -0
- package/dist/utils/disclosure.d.ts.map +1 -0
- package/dist/utils/kundli-render.d.ts.map +1 -1
- package/dist/utils/kundli-styles.d.ts.map +1 -1
- package/dist/utils/tablist.d.ts +44 -0
- package/dist/utils/tablist.d.ts.map +1 -0
- package/dist/version.d.ts +1 -1
- package/package.json +3 -1
- package/src/components/dasha-timeline.ts +10 -1
- package/src/components/divisional-chart.ts +2 -0
- package/src/components/natal-chart.ts +37 -62
- package/src/components/transits-table.ts +45 -18
- package/src/components/vedic-kundli.ts +2 -1
- package/src/utils/disclosure.ts +62 -0
- package/src/utils/kundli-render.ts +21 -35
- package/src/utils/kundli-styles.ts +0 -31
- package/src/utils/tablist.ts +124 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit';
|
|
2
|
+
import { css, html, nothing } from 'lit';
|
|
3
|
+
|
|
4
|
+
/** A single tab in a {@link renderTablist} strip. */
|
|
5
|
+
export interface TablistItem<T extends string = string> {
|
|
6
|
+
id: T;
|
|
7
|
+
label: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Shared styling for every horizontal tab strip in the library (natal chart
|
|
12
|
+
* views, transits, kundli styles). Keeping one rule set means the tabs look
|
|
13
|
+
* identical everywhere and theme through the same --roxy-* tokens.
|
|
14
|
+
*/
|
|
15
|
+
export const tablistStyles = css`
|
|
16
|
+
.roxy-tablist {
|
|
17
|
+
display: flex;
|
|
18
|
+
gap: 2px;
|
|
19
|
+
border-bottom: 2px solid var(--roxy-border, #e4e4e7);
|
|
20
|
+
}
|
|
21
|
+
.roxy-tab {
|
|
22
|
+
padding: var(--roxy-space-xs, 0.25rem) var(--roxy-space-md, 1rem);
|
|
23
|
+
font-size: var(--roxy-text-sm, 0.875rem);
|
|
24
|
+
background: none;
|
|
25
|
+
border: none;
|
|
26
|
+
border-bottom: 2px solid transparent;
|
|
27
|
+
margin-bottom: -2px;
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
color: var(--roxy-muted, #71717a);
|
|
30
|
+
font-family: inherit;
|
|
31
|
+
transition: color var(--roxy-motion-duration, 200ms)
|
|
32
|
+
var(--roxy-motion-easing, ease);
|
|
33
|
+
}
|
|
34
|
+
.roxy-tab[aria-selected='true'] {
|
|
35
|
+
color: var(--roxy-accent-fg, #b45309);
|
|
36
|
+
border-bottom-color: var(--roxy-accent, #f59e0b);
|
|
37
|
+
font-weight: var(--roxy-weight-bold, 600);
|
|
38
|
+
}
|
|
39
|
+
.roxy-tab:hover:not([aria-selected='true']) {
|
|
40
|
+
color: var(--roxy-fg, #0a0a0a);
|
|
41
|
+
}
|
|
42
|
+
.roxy-tab:focus-visible {
|
|
43
|
+
outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
|
|
44
|
+
outline-offset: 2px;
|
|
45
|
+
border-radius: 4px;
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Render a WAI-ARIA tablist. The host component owns the active-tab state; this
|
|
51
|
+
* helper draws the buttons, wires click plus Left/Right arrow navigation with a
|
|
52
|
+
* roving tabindex, and moves focus to the newly selected tab. Pair with
|
|
53
|
+
* {@link tablistStyles}.
|
|
54
|
+
*
|
|
55
|
+
* Pass `controls: true` when each tab governs a sibling
|
|
56
|
+
* `<div role="tabpanel" id="${idPrefix}-panel-${id}">` so the buttons advertise
|
|
57
|
+
* `aria-controls`. Omit it for tablists that swap a single rendered view in
|
|
58
|
+
* place with no separate panel element (the kundli style switch).
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* renderTablist({
|
|
63
|
+
* items: [{ id: 'wheel', label: 'Wheel' }, { id: 'grid', label: 'Aspect grid' }],
|
|
64
|
+
* active: this.view,
|
|
65
|
+
* onSelect: (v) => { this.view = v; },
|
|
66
|
+
* label: 'Natal chart views',
|
|
67
|
+
* idPrefix: 'natal',
|
|
68
|
+
* controls: true,
|
|
69
|
+
* })
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export function renderTablist<T extends string>(opts: {
|
|
73
|
+
items: ReadonlyArray<TablistItem<T>>;
|
|
74
|
+
active: T;
|
|
75
|
+
onSelect: (id: T) => void;
|
|
76
|
+
label: string;
|
|
77
|
+
idPrefix: string;
|
|
78
|
+
controls?: boolean;
|
|
79
|
+
}): TemplateResult {
|
|
80
|
+
const { items, active, onSelect, label, idPrefix, controls = false } = opts;
|
|
81
|
+
const onKeyDown = (e: KeyboardEvent) => {
|
|
82
|
+
if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return;
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
const idx = items.findIndex((it) => it.id === active);
|
|
85
|
+
if (idx === -1) return;
|
|
86
|
+
const delta = e.key === 'ArrowRight' ? 1 : -1;
|
|
87
|
+
const next = items[(idx + delta + items.length) % items.length];
|
|
88
|
+
if (!next) return;
|
|
89
|
+
onSelect(next.id);
|
|
90
|
+
const root = (e.currentTarget as HTMLElement).getRootNode() as
|
|
91
|
+
| ShadowRoot
|
|
92
|
+
| Document;
|
|
93
|
+
requestAnimationFrame(() => {
|
|
94
|
+
root
|
|
95
|
+
.querySelector<HTMLButtonElement>(`#${idPrefix}-tab-${next.id}`)
|
|
96
|
+
?.focus();
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
return html`<div
|
|
100
|
+
class="roxy-tablist"
|
|
101
|
+
role="tablist"
|
|
102
|
+
aria-label=${label}
|
|
103
|
+
@keydown=${onKeyDown}
|
|
104
|
+
>
|
|
105
|
+
${items.map(
|
|
106
|
+
(it) => html`<button
|
|
107
|
+
type="button"
|
|
108
|
+
class="roxy-tab"
|
|
109
|
+
role="tab"
|
|
110
|
+
id="${idPrefix}-tab-${it.id}"
|
|
111
|
+
aria-selected=${active === it.id ? 'true' : 'false'}
|
|
112
|
+
aria-controls=${
|
|
113
|
+
// Only the active panel is rendered, so only the active tab points
|
|
114
|
+
// at a live element; otherwise aria-controls would dangle.
|
|
115
|
+
controls && active === it.id ? `${idPrefix}-panel-${it.id}` : nothing
|
|
116
|
+
}
|
|
117
|
+
tabindex=${active === it.id ? '0' : '-1'}
|
|
118
|
+
@click=${() => onSelect(it.id)}
|
|
119
|
+
>
|
|
120
|
+
${it.label}
|
|
121
|
+
</button>`,
|
|
122
|
+
)}
|
|
123
|
+
</div>`;
|
|
124
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by scripts/sync-version.ts. Do not edit.
|
|
2
|
-
export const ROXY_UI_VERSION = '0.
|
|
2
|
+
export const ROXY_UI_VERSION = '0.6.0';
|