@roxyapi/ui 0.0.1 → 0.1.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.
Files changed (166) hide show
  1. package/AGENTS.md +169 -0
  2. package/THEMING.md +129 -0
  3. package/dist/cdn/components/biorhythm-chart.js +261 -0
  4. package/dist/cdn/components/biorhythm-chart.js.map +7 -0
  5. package/dist/cdn/components/compatibility-card.js +257 -0
  6. package/dist/cdn/components/compatibility-card.js.map +7 -0
  7. package/dist/cdn/components/dasha-timeline.js +244 -0
  8. package/dist/cdn/components/dasha-timeline.js.map +7 -0
  9. package/dist/cdn/components/data.js +258 -0
  10. package/dist/cdn/components/data.js.map +7 -0
  11. package/dist/cdn/components/dosha-card.js +254 -0
  12. package/dist/cdn/components/dosha-card.js.map +7 -0
  13. package/dist/cdn/components/endpoint-form.js +253 -0
  14. package/dist/cdn/components/endpoint-form.js.map +7 -0
  15. package/dist/cdn/components/guna-milan.js +256 -0
  16. package/dist/cdn/components/guna-milan.js.map +7 -0
  17. package/dist/cdn/components/hexagram.js +275 -0
  18. package/dist/cdn/components/hexagram.js.map +7 -0
  19. package/dist/cdn/components/horoscope-card.js +302 -0
  20. package/dist/cdn/components/horoscope-card.js.map +7 -0
  21. package/dist/cdn/components/kp-planets-table.js +224 -0
  22. package/dist/cdn/components/kp-planets-table.js.map +7 -0
  23. package/dist/cdn/components/location-search.js +267 -0
  24. package/dist/cdn/components/location-search.js.map +7 -0
  25. package/dist/cdn/components/moon-phase.js +251 -0
  26. package/dist/cdn/components/moon-phase.js.map +7 -0
  27. package/dist/cdn/components/natal-chart.js +237 -0
  28. package/dist/cdn/components/natal-chart.js.map +7 -0
  29. package/dist/cdn/components/numerology-card.js +252 -0
  30. package/dist/cdn/components/numerology-card.js.map +7 -0
  31. package/dist/cdn/components/panchang-table.js +234 -0
  32. package/dist/cdn/components/panchang-table.js.map +7 -0
  33. package/dist/cdn/components/synastry-chart.js +303 -0
  34. package/dist/cdn/components/synastry-chart.js.map +7 -0
  35. package/dist/cdn/components/tarot-card.js +260 -0
  36. package/dist/cdn/components/tarot-card.js.map +7 -0
  37. package/dist/cdn/components/tarot-spread.js +261 -0
  38. package/dist/cdn/components/tarot-spread.js.map +7 -0
  39. package/dist/cdn/components/vedic-kundli.js +189 -0
  40. package/dist/cdn/components/vedic-kundli.js.map +7 -0
  41. package/dist/cdn/roxy-ui.js +2552 -0
  42. package/dist/cdn/roxy-ui.js.map +7 -0
  43. package/dist/cdn/widgets.js +114 -0
  44. package/dist/components/biorhythm-chart.d.ts +66 -0
  45. package/dist/components/biorhythm-chart.d.ts.map +1 -0
  46. package/dist/components/biorhythm-chart.js +318 -0
  47. package/dist/components/biorhythm-chart.js.map +7 -0
  48. package/dist/components/compatibility-card.d.ts +46 -0
  49. package/dist/components/compatibility-card.d.ts.map +1 -0
  50. package/dist/components/compatibility-card.js +279 -0
  51. package/dist/components/compatibility-card.js.map +7 -0
  52. package/dist/components/dasha-timeline.d.ts +53 -0
  53. package/dist/components/dasha-timeline.d.ts.map +1 -0
  54. package/dist/components/dasha-timeline.js +269 -0
  55. package/dist/components/dasha-timeline.js.map +7 -0
  56. package/dist/components/data.d.ts +40 -0
  57. package/dist/components/data.d.ts.map +1 -0
  58. package/dist/components/data.js +339 -0
  59. package/dist/components/data.js.map +7 -0
  60. package/dist/components/dosha-card.d.ts +35 -0
  61. package/dist/components/dosha-card.d.ts.map +1 -0
  62. package/dist/components/dosha-card.js +278 -0
  63. package/dist/components/dosha-card.js.map +7 -0
  64. package/dist/components/endpoint-form.d.ts +39 -0
  65. package/dist/components/endpoint-form.d.ts.map +1 -0
  66. package/dist/components/endpoint-form.js +432 -0
  67. package/dist/components/endpoint-form.js.map +7 -0
  68. package/dist/components/guna-milan.d.ts +35 -0
  69. package/dist/components/guna-milan.d.ts.map +1 -0
  70. package/dist/components/guna-milan.js +302 -0
  71. package/dist/components/guna-milan.js.map +7 -0
  72. package/dist/components/hexagram.d.ts +47 -0
  73. package/dist/components/hexagram.d.ts.map +1 -0
  74. package/dist/components/hexagram.js +334 -0
  75. package/dist/components/hexagram.js.map +7 -0
  76. package/dist/components/horoscope-card.d.ts +38 -0
  77. package/dist/components/horoscope-card.d.ts.map +1 -0
  78. package/dist/components/horoscope-card.js +332 -0
  79. package/dist/components/horoscope-card.js.map +7 -0
  80. package/dist/components/kp-planets-table.d.ts +36 -0
  81. package/dist/components/kp-planets-table.d.ts.map +1 -0
  82. package/dist/components/kp-planets-table.js +227 -0
  83. package/dist/components/kp-planets-table.js.map +7 -0
  84. package/dist/components/location-search.d.ts +56 -0
  85. package/dist/components/location-search.d.ts.map +1 -0
  86. package/dist/components/location-search.js +401 -0
  87. package/dist/components/location-search.js.map +7 -0
  88. package/dist/components/moon-phase.d.ts +38 -0
  89. package/dist/components/moon-phase.d.ts.map +1 -0
  90. package/dist/components/moon-phase.js +284 -0
  91. package/dist/components/moon-phase.js.map +7 -0
  92. package/dist/components/natal-chart.d.ts +65 -0
  93. package/dist/components/natal-chart.d.ts.map +1 -0
  94. package/dist/components/natal-chart.js +407 -0
  95. package/dist/components/natal-chart.js.map +7 -0
  96. package/dist/components/numerology-card.d.ts +55 -0
  97. package/dist/components/numerology-card.d.ts.map +1 -0
  98. package/dist/components/numerology-card.js +274 -0
  99. package/dist/components/numerology-card.js.map +7 -0
  100. package/dist/components/panchang-table.d.ts +77 -0
  101. package/dist/components/panchang-table.d.ts.map +1 -0
  102. package/dist/components/panchang-table.js +285 -0
  103. package/dist/components/panchang-table.js.map +7 -0
  104. package/dist/components/synastry-chart.d.ts +52 -0
  105. package/dist/components/synastry-chart.d.ts.map +1 -0
  106. package/dist/components/synastry-chart.js +415 -0
  107. package/dist/components/synastry-chart.js.map +7 -0
  108. package/dist/components/tarot-card.d.ts +47 -0
  109. package/dist/components/tarot-card.d.ts.map +1 -0
  110. package/dist/components/tarot-card.js +281 -0
  111. package/dist/components/tarot-card.js.map +7 -0
  112. package/dist/components/tarot-spread.d.ts +42 -0
  113. package/dist/components/tarot-spread.d.ts.map +1 -0
  114. package/dist/components/tarot-spread.js +271 -0
  115. package/dist/components/tarot-spread.js.map +7 -0
  116. package/dist/components/vedic-kundli.d.ts +45 -0
  117. package/dist/components/vedic-kundli.d.ts.map +1 -0
  118. package/dist/components/vedic-kundli.js +325 -0
  119. package/dist/components/vedic-kundli.js.map +7 -0
  120. package/dist/index.cjs +4174 -0
  121. package/dist/index.cjs.map +7 -0
  122. package/dist/index.d.ts +30 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +4154 -0
  125. package/dist/index.js.map +7 -0
  126. package/dist/manifest.json +24 -0
  127. package/dist/styles/tokens.css +147 -0
  128. package/dist/tokens/index.d.ts +17 -0
  129. package/dist/tokens/index.d.ts.map +1 -0
  130. package/dist/utils/base-styles.d.ts +6 -0
  131. package/dist/utils/base-styles.d.ts.map +1 -0
  132. package/dist/utils/debounce.d.ts +5 -0
  133. package/dist/utils/debounce.d.ts.map +1 -0
  134. package/dist/utils/degree.d.ts +29 -0
  135. package/dist/utils/degree.d.ts.map +1 -0
  136. package/dist/utils/motion.d.ts +13 -0
  137. package/dist/utils/motion.d.ts.map +1 -0
  138. package/package.json +69 -3
  139. package/src/components/biorhythm-chart.ts +290 -0
  140. package/src/components/compatibility-card.ts +231 -0
  141. package/src/components/dasha-timeline.ts +251 -0
  142. package/src/components/data.ts +287 -0
  143. package/src/components/dosha-card.ts +215 -0
  144. package/src/components/endpoint-form.ts +433 -0
  145. package/src/components/guna-milan.ts +245 -0
  146. package/src/components/hexagram.ts +279 -0
  147. package/src/components/horoscope-card.ts +291 -0
  148. package/src/components/kp-planets-table.ts +156 -0
  149. package/src/components/location-search.ts +335 -0
  150. package/src/components/moon-phase.ts +221 -0
  151. package/src/components/natal-chart.ts +298 -0
  152. package/src/components/numerology-card.ts +243 -0
  153. package/src/components/panchang-table.ts +265 -0
  154. package/src/components/synastry-chart.ts +341 -0
  155. package/src/components/tarot-card.ts +235 -0
  156. package/src/components/tarot-spread.ts +224 -0
  157. package/src/components/vedic-kundli.ts +257 -0
  158. package/src/index.ts +61 -0
  159. package/src/styles/tokens.css +147 -0
  160. package/src/tokens/index.ts +130 -0
  161. package/src/types/index.ts +3 -0
  162. package/src/types/types.gen.ts +28526 -0
  163. package/src/utils/base-styles.ts +89 -0
  164. package/src/utils/debounce.ts +13 -0
  165. package/src/utils/degree.ts +64 -0
  166. package/src/utils/motion.ts +18 -0
@@ -0,0 +1,45 @@
1
+ import { LitElement } from 'lit';
2
+ interface KundliMeta {
3
+ [planet: string]: {
4
+ graha?: string;
5
+ rashi?: string;
6
+ longitude?: number;
7
+ nakshatra?: string;
8
+ isRetrograde?: boolean;
9
+ };
10
+ }
11
+ interface KundliData {
12
+ meta?: KundliMeta;
13
+ houses?: Array<{
14
+ house?: number;
15
+ number?: number;
16
+ sign?: string;
17
+ planets?: string[];
18
+ }>;
19
+ combustion?: unknown[];
20
+ planetaryWar?: unknown[];
21
+ [rashi: string]: unknown;
22
+ }
23
+ /**
24
+ * Vedic kundli (D1 Rashi chart). South Indian style by default. Pass `data`
25
+ * from /vedic-astrology/birth-chart. North Indian style via style="north".
26
+ *
27
+ * Lifted from jyotish-vedic-astrology-app/src/components/birth-chart.tsx,
28
+ * keeping HOUSE_CENTERS + SIGN_POSITIONS + abbreviations, dropping the React
29
+ * DOM color-probing hook in favor of CSS custom properties on :host.
30
+ */
31
+ export declare class RoxyVedicKundli extends LitElement {
32
+ static styles: import("lit").CSSResult[];
33
+ data: KundliData | null;
34
+ chartStyle: 'south' | 'north';
35
+ private buildHouses;
36
+ render(): import("lit").TemplateResult<1>;
37
+ private renderHouseGroup;
38
+ }
39
+ declare global {
40
+ interface HTMLElementTagNameMap {
41
+ 'roxy-vedic-kundli': RoxyVedicKundli;
42
+ }
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=vedic-kundli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vedic-kundli.d.ts","sourceRoot":"","sources":["../../src/components/vedic-kundli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAgB,MAAM,KAAK,CAAC;AAK1D,UAAU,UAAU;IACnB,CAAC,MAAM,EAAE,MAAM,GAAG;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACF;AAiBD,UAAU,UAAU;IACnB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AA8DD;;;;;;;GAOG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC9C,MAAM,CAAC,MAAM,4BAmCX;IAGF,IAAI,EAAE,UAAU,GAAG,IAAI,CAAQ;IAG/B,UAAU,EAAE,OAAO,GAAG,OAAO,CAAW;IAExC,OAAO,CAAC,WAAW;IAiCnB,MAAM;IAiCN,OAAO,CAAC,gBAAgB;CAuBxB;AAOD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,eAAe,CAAC;KACrC;CACD"}
@@ -0,0 +1,325 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+
12
+ // packages/ui/src/components/vedic-kundli.ts
13
+ import { css as css2, html, LitElement, nothing, svg } from "lit";
14
+ import { customElement, property } from "lit/decorators.js";
15
+
16
+ // packages/ui/src/tokens/index.ts
17
+ var PLANET_ABBR = {
18
+ Sun: "Su",
19
+ Moon: "Mo",
20
+ Mercury: "Me",
21
+ Venus: "Ve",
22
+ Mars: "Ma",
23
+ Jupiter: "Ju",
24
+ Saturn: "Sa",
25
+ Uranus: "Ur",
26
+ Neptune: "Ne",
27
+ Pluto: "Pl",
28
+ Rahu: "Ra",
29
+ Ketu: "Ke",
30
+ Ascendant: "Asc",
31
+ Lagna: "La"
32
+ };
33
+ var SIGN_ABBR = {
34
+ Aries: "Ar",
35
+ Taurus: "Ta",
36
+ Gemini: "Ge",
37
+ Cancer: "Cn",
38
+ Leo: "Le",
39
+ Virgo: "Vi",
40
+ Libra: "Li",
41
+ Scorpio: "Sc",
42
+ Sagittarius: "Sg",
43
+ Capricorn: "Cp",
44
+ Aquarius: "Aq",
45
+ Pisces: "Pi"
46
+ };
47
+
48
+ // packages/ui/src/utils/base-styles.ts
49
+ import { css } from "lit";
50
+ var baseStyles = css`
51
+ :host {
52
+ display: block;
53
+ container-type: inline-size;
54
+ font-family: var(
55
+ --roxy-font-sans,
56
+ system-ui,
57
+ -apple-system,
58
+ BlinkMacSystemFont,
59
+ 'Segoe UI',
60
+ Roboto,
61
+ sans-serif
62
+ );
63
+ color: var(--roxy-fg, #0a0a0a);
64
+ background: transparent;
65
+ font-size: var(--roxy-text-base, 1rem);
66
+ line-height: var(--roxy-leading-normal, 1.5);
67
+ animation: roxy-fade-in var(--roxy-motion-duration, 200ms)
68
+ var(--roxy-motion-easing, cubic-bezier(0.4, 0, 0.2, 1)) both;
69
+ }
70
+
71
+ *,
72
+ *::before,
73
+ *::after {
74
+ box-sizing: border-box;
75
+ }
76
+
77
+ @keyframes roxy-fade-in {
78
+ from {
79
+ opacity: 0;
80
+ transform: translateY(2px);
81
+ }
82
+ to {
83
+ opacity: 1;
84
+ transform: translateY(0);
85
+ }
86
+ }
87
+
88
+ @media (prefers-reduced-motion: reduce) {
89
+ :host {
90
+ animation: none;
91
+ }
92
+ }
93
+
94
+ .roxy-skeleton {
95
+ background: linear-gradient(
96
+ 90deg,
97
+ var(--roxy-border, #e4e4e7) 0%,
98
+ color-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent) 50%,
99
+ var(--roxy-border, #e4e4e7) 100%
100
+ );
101
+ background-size: 200% 100%;
102
+ animation: roxy-shimmer 1.4s ease-in-out infinite;
103
+ border-radius: var(--roxy-radius-md, 8px);
104
+ }
105
+
106
+ @keyframes roxy-shimmer {
107
+ 0% {
108
+ background-position: 200% 0;
109
+ }
110
+ 100% {
111
+ background-position: -200% 0;
112
+ }
113
+ }
114
+
115
+ @media (prefers-reduced-motion: reduce) {
116
+ .roxy-skeleton {
117
+ animation: none;
118
+ }
119
+ }
120
+
121
+ .roxy-empty {
122
+ padding: var(--roxy-space-lg, 1.5rem);
123
+ color: var(--roxy-muted, #71717a);
124
+ text-align: center;
125
+ font-size: var(--roxy-text-sm, 0.875rem);
126
+ }
127
+
128
+ :host(:focus-within) .roxy-card {
129
+ outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
130
+ outline-offset: 2px;
131
+ }
132
+ `;
133
+
134
+ // packages/ui/src/components/vedic-kundli.ts
135
+ var SOUTH_HOUSE_CENTERS = {
136
+ 1: { x: 150, y: 58 },
137
+ 2: { x: 205, y: 52 },
138
+ 3: { x: 253, y: 112 },
139
+ 4: { x: 243, y: 150 },
140
+ 5: { x: 253, y: 188 },
141
+ 6: { x: 205, y: 248 },
142
+ 7: { x: 150, y: 242 },
143
+ 8: { x: 95, y: 248 },
144
+ 9: { x: 47, y: 188 },
145
+ 10: { x: 57, y: 150 },
146
+ 11: { x: 47, y: 112 },
147
+ 12: { x: 95, y: 52 }
148
+ };
149
+ var SOUTH_SIGN_POSITIONS = {
150
+ 1: { x: 150, y: 35 },
151
+ 2: { x: 222, y: 40 },
152
+ 3: { x: 265, y: 100 },
153
+ 4: { x: 265, y: 150 },
154
+ 5: { x: 265, y: 200 },
155
+ 6: { x: 222, y: 260 },
156
+ 7: { x: 150, y: 265 },
157
+ 8: { x: 78, y: 260 },
158
+ 9: { x: 35, y: 200 },
159
+ 10: { x: 35, y: 150 },
160
+ 11: { x: 35, y: 100 },
161
+ 12: { x: 78, y: 40 }
162
+ };
163
+ var RASHI_KEYS = [
164
+ "aries",
165
+ "taurus",
166
+ "gemini",
167
+ "cancer",
168
+ "leo",
169
+ "virgo",
170
+ "libra",
171
+ "scorpio",
172
+ "sagittarius",
173
+ "capricorn",
174
+ "aquarius",
175
+ "pisces"
176
+ ];
177
+ var RASHI_TO_SIGN = {
178
+ aries: "Aries",
179
+ taurus: "Taurus",
180
+ gemini: "Gemini",
181
+ cancer: "Cancer",
182
+ leo: "Leo",
183
+ virgo: "Virgo",
184
+ libra: "Libra",
185
+ scorpio: "Scorpio",
186
+ sagittarius: "Sagittarius",
187
+ capricorn: "Capricorn",
188
+ aquarius: "Aquarius",
189
+ pisces: "Pisces"
190
+ };
191
+ var RoxyVedicKundli = class extends LitElement {
192
+ constructor() {
193
+ super(...arguments);
194
+ this.data = null;
195
+ this.chartStyle = "south";
196
+ }
197
+ buildHouses() {
198
+ if (!this.data) return [];
199
+ const houses = [];
200
+ if (Array.isArray(this.data.houses)) {
201
+ for (const h of this.data.houses) {
202
+ houses.push({
203
+ house: h.house ?? h.number ?? houses.length + 1,
204
+ sign: h.sign ?? "",
205
+ planets: h.planets ?? []
206
+ });
207
+ }
208
+ if (houses.length > 0) return houses;
209
+ }
210
+ for (let i = 0; i < 12; i++) {
211
+ const key = RASHI_KEYS[i];
212
+ const bucket = this.data[key];
213
+ const planets = (bucket?.signs ?? []).map((p) => p.planet ?? "").filter(Boolean);
214
+ houses.push({
215
+ house: i + 1,
216
+ sign: RASHI_TO_SIGN[key] ?? "",
217
+ planets
218
+ });
219
+ }
220
+ return houses;
221
+ }
222
+ render() {
223
+ if (!this.data)
224
+ return html`<div class="roxy-empty" role="status">No kundli data</div>`;
225
+ const houses = this.buildHouses();
226
+ return html`<div class="wrap">
227
+ <h2 class="title">Vedic kundli</h2>
228
+ <svg
229
+ viewBox="0 0 300 300"
230
+ role="img"
231
+ aria-label="Vedic birth chart with twelve sign houses"
232
+ >
233
+ <title>Vedic kundli</title>
234
+ <polygon class="line" points="150,10 290,150 150,290 10,150" stroke-width="1.5" />
235
+ <polygon
236
+ class="line"
237
+ points="220,80 220,220 80,220 80,80"
238
+ stroke-width="1"
239
+ fill="none"
240
+ />
241
+ <line class="line" x1="150" y1="10" x2="80" y2="80" stroke-width="1" />
242
+ <line class="line" x1="150" y1="10" x2="220" y2="80" stroke-width="1" />
243
+ <line class="line" x1="290" y1="150" x2="220" y2="80" stroke-width="1" />
244
+ <line class="line" x1="290" y1="150" x2="220" y2="220" stroke-width="1" />
245
+ <line class="line" x1="150" y1="290" x2="220" y2="220" stroke-width="1" />
246
+ <line class="line" x1="150" y1="290" x2="80" y2="220" stroke-width="1" />
247
+ <line class="line" x1="10" y1="150" x2="80" y2="220" stroke-width="1" />
248
+ <line class="line" x1="10" y1="150" x2="80" y2="80" stroke-width="1" />
249
+ ${houses.map((h) => this.renderHouseGroup(h))}
250
+ </svg>
251
+ </div>`;
252
+ }
253
+ renderHouseGroup(h) {
254
+ const center = SOUTH_HOUSE_CENTERS[h.house];
255
+ const signPos = SOUTH_SIGN_POSITIONS[h.house];
256
+ if (!center || !signPos) return nothing;
257
+ const signAbbr = SIGN_ABBR[h.sign] ?? "";
258
+ const planets = h.planets ?? [];
259
+ return svg`
260
+ <g>
261
+ ${signAbbr ? svg`<text class="sign-text" x=${signPos.x} y=${signPos.y} text-anchor="middle" dominant-baseline="central">${signAbbr}</text>` : nothing}
262
+ ${planets.map((planet, j) => {
263
+ const abbr = PLANET_ABBR[capitalize(planet)] ?? planet.slice(0, 2);
264
+ const lineHeight = 13;
265
+ const startY = center.y - (planets.length - 1) * lineHeight / 2;
266
+ const yPos = startY + j * lineHeight;
267
+ return svg`<text class="planet-text" x=${center.x} y=${yPos} text-anchor="middle" dominant-baseline="central">${abbr}</text>`;
268
+ })}
269
+ </g>
270
+ `;
271
+ }
272
+ };
273
+ RoxyVedicKundli.styles = [
274
+ baseStyles,
275
+ css2`
276
+ .wrap {
277
+ display: grid;
278
+ gap: var(--roxy-space-md, 1rem);
279
+ }
280
+ .title {
281
+ font-size: var(--roxy-text-lg, 1.125rem);
282
+ font-weight: var(--roxy-weight-bold, 600);
283
+ margin: 0;
284
+ }
285
+ svg {
286
+ display: block;
287
+ width: 100%;
288
+ max-width: 360px;
289
+ margin: 0 auto;
290
+ }
291
+ .line {
292
+ fill: transparent;
293
+ stroke: var(--roxy-border, #e4e4e7);
294
+ }
295
+ .sign-text {
296
+ fill: var(--roxy-muted, #71717a);
297
+ font-size: 9px;
298
+ font-weight: 500;
299
+ font-family: var(--roxy-font-sans);
300
+ }
301
+ .planet-text {
302
+ fill: var(--roxy-fg, #0a0a0a);
303
+ font-size: 11px;
304
+ font-weight: 600;
305
+ font-family: var(--roxy-font-sans);
306
+ }
307
+ `
308
+ ];
309
+ __decorateClass([
310
+ property({ attribute: false })
311
+ ], RoxyVedicKundli.prototype, "data", 2);
312
+ __decorateClass([
313
+ property({ type: String, reflect: true, attribute: "chart-style" })
314
+ ], RoxyVedicKundli.prototype, "chartStyle", 2);
315
+ RoxyVedicKundli = __decorateClass([
316
+ customElement("roxy-vedic-kundli")
317
+ ], RoxyVedicKundli);
318
+ function capitalize(s) {
319
+ if (!s) return "";
320
+ return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
321
+ }
322
+ export {
323
+ RoxyVedicKundli
324
+ };
325
+ //# sourceMappingURL=vedic-kundli.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/vedic-kundli.ts", "../../src/tokens/index.ts", "../../src/utils/base-styles.ts"],
4
+ "sourcesContent": ["import { css, html, LitElement, nothing, svg } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { PLANET_ABBR, SIGN_ABBR } from '../tokens/index.js';\nimport { baseStyles } from '../utils/base-styles.js';\n\ninterface KundliMeta {\n\t[planet: string]: {\n\t\tgraha?: string;\n\t\trashi?: string;\n\t\tlongitude?: number;\n\t\tnakshatra?: string;\n\t\tisRetrograde?: boolean;\n\t};\n}\n\ninterface RashiBucket {\n\trashi?: string;\n\tsigns?: Array<{\n\t\tplanet?: string;\n\t\tlongitude?: number;\n\t\tisRetrograde?: boolean;\n\t}>;\n}\n\ninterface KundliHouse {\n\thouse: number;\n\tsign: string;\n\tplanets: string[];\n}\n\ninterface KundliData {\n\tmeta?: KundliMeta;\n\thouses?: Array<{\n\t\thouse?: number;\n\t\tnumber?: number;\n\t\tsign?: string;\n\t\tplanets?: string[];\n\t}>;\n\tcombustion?: unknown[];\n\tplanetaryWar?: unknown[];\n\t[rashi: string]: unknown;\n}\n\nconst SOUTH_HOUSE_CENTERS: Record<number, { x: number; y: number }> = {\n\t1: { x: 150, y: 58 },\n\t2: { x: 205, y: 52 },\n\t3: { x: 253, y: 112 },\n\t4: { x: 243, y: 150 },\n\t5: { x: 253, y: 188 },\n\t6: { x: 205, y: 248 },\n\t7: { x: 150, y: 242 },\n\t8: { x: 95, y: 248 },\n\t9: { x: 47, y: 188 },\n\t10: { x: 57, y: 150 },\n\t11: { x: 47, y: 112 },\n\t12: { x: 95, y: 52 },\n};\n\nconst SOUTH_SIGN_POSITIONS: Record<number, { x: number; y: number }> = {\n\t1: { x: 150, y: 35 },\n\t2: { x: 222, y: 40 },\n\t3: { x: 265, y: 100 },\n\t4: { x: 265, y: 150 },\n\t5: { x: 265, y: 200 },\n\t6: { x: 222, y: 260 },\n\t7: { x: 150, y: 265 },\n\t8: { x: 78, y: 260 },\n\t9: { x: 35, y: 200 },\n\t10: { x: 35, y: 150 },\n\t11: { x: 35, y: 100 },\n\t12: { x: 78, y: 40 },\n};\n\nconst RASHI_KEYS = [\n\t'aries',\n\t'taurus',\n\t'gemini',\n\t'cancer',\n\t'leo',\n\t'virgo',\n\t'libra',\n\t'scorpio',\n\t'sagittarius',\n\t'capricorn',\n\t'aquarius',\n\t'pisces',\n] as const;\n\nconst RASHI_TO_SIGN: Record<string, string> = {\n\taries: 'Aries',\n\ttaurus: 'Taurus',\n\tgemini: 'Gemini',\n\tcancer: 'Cancer',\n\tleo: 'Leo',\n\tvirgo: 'Virgo',\n\tlibra: 'Libra',\n\tscorpio: 'Scorpio',\n\tsagittarius: 'Sagittarius',\n\tcapricorn: 'Capricorn',\n\taquarius: 'Aquarius',\n\tpisces: 'Pisces',\n};\n\n/**\n * Vedic kundli (D1 Rashi chart). South Indian style by default. Pass `data`\n * from /vedic-astrology/birth-chart. North Indian style via style=\"north\".\n *\n * Lifted from jyotish-vedic-astrology-app/src/components/birth-chart.tsx,\n * keeping HOUSE_CENTERS + SIGN_POSITIONS + abbreviations, dropping the React\n * DOM color-probing hook in favor of CSS custom properties on :host.\n */\n@customElement('roxy-vedic-kundli')\nexport class RoxyVedicKundli extends LitElement {\n\tstatic styles = [\n\t\tbaseStyles,\n\t\tcss`\n\t\t\t.wrap {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgap: var(--roxy-space-md, 1rem);\n\t\t\t}\n\t\t\t.title {\n\t\t\t\tfont-size: var(--roxy-text-lg, 1.125rem);\n\t\t\t\tfont-weight: var(--roxy-weight-bold, 600);\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\tsvg {\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 360px;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\t\t\t.line {\n\t\t\t\tfill: transparent;\n\t\t\t\tstroke: var(--roxy-border, #e4e4e7);\n\t\t\t}\n\t\t\t.sign-text {\n\t\t\t\tfill: var(--roxy-muted, #71717a);\n\t\t\t\tfont-size: 9px;\n\t\t\t\tfont-weight: 500;\n\t\t\t\tfont-family: var(--roxy-font-sans);\n\t\t\t}\n\t\t\t.planet-text {\n\t\t\t\tfill: var(--roxy-fg, #0a0a0a);\n\t\t\t\tfont-size: 11px;\n\t\t\t\tfont-weight: 600;\n\t\t\t\tfont-family: var(--roxy-font-sans);\n\t\t\t}\n\t\t`,\n\t];\n\n\t@property({ attribute: false })\n\tdata: KundliData | null = null;\n\n\t@property({ type: String, reflect: true, attribute: 'chart-style' })\n\tchartStyle: 'south' | 'north' = 'south';\n\n\tprivate buildHouses(): KundliHouse[] {\n\t\tif (!this.data) return [];\n\t\tconst houses: KundliHouse[] = [];\n\t\t// Prefer normalized .houses array if present\n\t\tif (Array.isArray(this.data.houses)) {\n\t\t\tfor (const h of this.data.houses) {\n\t\t\t\thouses.push({\n\t\t\t\t\thouse: (h.house ?? h.number ?? houses.length + 1) as number,\n\t\t\t\t\tsign: h.sign ?? '',\n\t\t\t\t\tplanets: h.planets ?? [],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (houses.length > 0) return houses;\n\t\t}\n\t\t// Otherwise read the rashi buckets and project them as houses 1..12\n\t\t// keyed by sign order. Lagna-anchored ordering would require knowing\n\t\t// the ascendant rashi; we render rashi buckets directly which is the\n\t\t// canonical South Indian layout.\n\t\tfor (let i = 0; i < 12; i++) {\n\t\t\tconst key = RASHI_KEYS[i];\n\t\t\tconst bucket = this.data[key] as RashiBucket | undefined;\n\t\t\tconst planets = (bucket?.signs ?? [])\n\t\t\t\t.map((p) => p.planet ?? '')\n\t\t\t\t.filter(Boolean);\n\t\t\thouses.push({\n\t\t\t\thouse: i + 1,\n\t\t\t\tsign: RASHI_TO_SIGN[key] ?? '',\n\t\t\t\tplanets,\n\t\t\t});\n\t\t}\n\t\treturn houses;\n\t}\n\n\trender() {\n\t\tif (!this.data)\n\t\t\treturn html`<div class=\"roxy-empty\" role=\"status\">No kundli data</div>`;\n\t\tconst houses = this.buildHouses();\n\n\t\treturn html`<div class=\"wrap\">\n\t\t\t<h2 class=\"title\">Vedic kundli</h2>\n\t\t\t<svg\n\t\t\t\tviewBox=\"0 0 300 300\"\n\t\t\t\trole=\"img\"\n\t\t\t\taria-label=\"Vedic birth chart with twelve sign houses\"\n\t\t\t>\n\t\t\t\t<title>Vedic kundli</title>\n\t\t\t\t<polygon class=\"line\" points=\"150,10 290,150 150,290 10,150\" stroke-width=\"1.5\" />\n\t\t\t\t<polygon\n\t\t\t\t\tclass=\"line\"\n\t\t\t\t\tpoints=\"220,80 220,220 80,220 80,80\"\n\t\t\t\t\tstroke-width=\"1\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t\t<line class=\"line\" x1=\"150\" y1=\"10\" x2=\"80\" y2=\"80\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"150\" y1=\"10\" x2=\"220\" y2=\"80\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"290\" y1=\"150\" x2=\"220\" y2=\"80\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"290\" y1=\"150\" x2=\"220\" y2=\"220\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"150\" y1=\"290\" x2=\"220\" y2=\"220\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"150\" y1=\"290\" x2=\"80\" y2=\"220\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"10\" y1=\"150\" x2=\"80\" y2=\"220\" stroke-width=\"1\" />\n\t\t\t\t<line class=\"line\" x1=\"10\" y1=\"150\" x2=\"80\" y2=\"80\" stroke-width=\"1\" />\n\t\t\t\t${houses.map((h) => this.renderHouseGroup(h))}\n\t\t\t</svg>\n\t\t</div>`;\n\t}\n\n\tprivate renderHouseGroup(h: KundliHouse) {\n\t\tconst center = SOUTH_HOUSE_CENTERS[h.house];\n\t\tconst signPos = SOUTH_SIGN_POSITIONS[h.house];\n\t\tif (!center || !signPos) return nothing;\n\t\tconst signAbbr = SIGN_ABBR[h.sign] ?? '';\n\t\tconst planets = h.planets ?? [];\n\t\treturn svg`\n\t\t\t<g>\n\t\t\t\t${\n\t\t\t\t\tsignAbbr\n\t\t\t\t\t\t? svg`<text class=\"sign-text\" x=${signPos.x} y=${signPos.y} text-anchor=\"middle\" dominant-baseline=\"central\">${signAbbr}</text>`\n\t\t\t\t\t\t: nothing\n\t\t\t\t}\n\t\t\t\t${planets.map((planet, j) => {\n\t\t\t\t\tconst abbr = PLANET_ABBR[capitalize(planet)] ?? planet.slice(0, 2);\n\t\t\t\t\tconst lineHeight = 13;\n\t\t\t\t\tconst startY = center.y - ((planets.length - 1) * lineHeight) / 2;\n\t\t\t\t\tconst yPos = startY + j * lineHeight;\n\t\t\t\t\treturn svg`<text class=\"planet-text\" x=${center.x} y=${yPos} text-anchor=\"middle\" dominant-baseline=\"central\">${abbr}</text>`;\n\t\t\t\t})}\n\t\t\t</g>\n\t\t`;\n\t}\n}\n\nfunction capitalize(s: string): string {\n\tif (!s) return '';\n\treturn s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'roxy-vedic-kundli': RoxyVedicKundli;\n\t}\n}\n", "/**\n * Symbol constants used across components. Single source of truth so chart\n * wheels, card headers, hexagram displays, and panchang tables stay visually\n * consistent.\n */\n\nexport const PLANET_GLYPH: Record<string, string> = {\n\tSun: '\u2609',\n\tMoon: '\u263D',\n\tMercury: '\u263F',\n\tVenus: '\u2640',\n\tEarth: '\u2641',\n\tMars: '\u2642',\n\tJupiter: '\u2643',\n\tSaturn: '\u2644',\n\tUranus: '\u2645',\n\tNeptune: '\u2646',\n\tPluto: '\u2647',\n\tRahu: '\u260A',\n\tKetu: '\u260B',\n\tAscendant: 'Asc',\n\tLagna: 'La',\n\tNorthNode: '\u260A',\n\tSouthNode: '\u260B',\n};\n\nexport const PLANET_ABBR: Record<string, string> = {\n\tSun: 'Su',\n\tMoon: 'Mo',\n\tMercury: 'Me',\n\tVenus: 'Ve',\n\tMars: 'Ma',\n\tJupiter: 'Ju',\n\tSaturn: 'Sa',\n\tUranus: 'Ur',\n\tNeptune: 'Ne',\n\tPluto: 'Pl',\n\tRahu: 'Ra',\n\tKetu: 'Ke',\n\tAscendant: 'Asc',\n\tLagna: 'La',\n};\n\nexport const SIGN_GLYPH: Record<string, string> = {\n\tAries: '\u2648',\n\tTaurus: '\u2649',\n\tGemini: '\u264A',\n\tCancer: '\u264B',\n\tLeo: '\u264C',\n\tVirgo: '\u264D',\n\tLibra: '\u264E',\n\tScorpio: '\u264F',\n\tSagittarius: '\u2650',\n\tCapricorn: '\u2651',\n\tAquarius: '\u2652',\n\tPisces: '\u2653',\n};\n\nexport const SIGN_ABBR: Record<string, string> = {\n\tAries: 'Ar',\n\tTaurus: 'Ta',\n\tGemini: 'Ge',\n\tCancer: 'Cn',\n\tLeo: 'Le',\n\tVirgo: 'Vi',\n\tLibra: 'Li',\n\tScorpio: 'Sc',\n\tSagittarius: 'Sg',\n\tCapricorn: 'Cp',\n\tAquarius: 'Aq',\n\tPisces: 'Pi',\n};\n\nexport const SIGNS_ORDER = [\n\t'Aries',\n\t'Taurus',\n\t'Gemini',\n\t'Cancer',\n\t'Leo',\n\t'Virgo',\n\t'Libra',\n\t'Scorpio',\n\t'Sagittarius',\n\t'Capricorn',\n\t'Aquarius',\n\t'Pisces',\n] as const;\n\n/** Aspect symbols. Used by synastry and natal chart aspect tables. */\nexport const ASPECT_SYMBOL: Record<string, string> = {\n\tconjunction: '\u260C',\n\topposition: '\u260D',\n\ttrine: '\u25B3',\n\tsquare: '\u25A1',\n\tsextile: '\u2731',\n\tquincunx: '\u22BB',\n\tsemisextile: '\u22BC',\n};\n\n/** Trigrams used by I Ching hexagrams. Eight trigrams compose 64 hexagrams. */\nexport const TRIGRAM_GLYPH: Record<string, string> = {\n\theaven: '\u2630',\n\tlake: '\u2631',\n\tfire: '\u2632',\n\tthunder: '\u2633',\n\twind: '\u2634',\n\twater: '\u2635',\n\tmountain: '\u2636',\n\tearth: '\u2637',\n\tHeaven: '\u2630',\n\tLake: '\u2631',\n\tFire: '\u2632',\n\tThunder: '\u2633',\n\tWind: '\u2634',\n\tWater: '\u2635',\n\tMountain: '\u2636',\n\tEarth: '\u2637',\n};\n\n/** Moon phase emoji set. Used by moon phase card. */\nexport const MOON_PHASE_EMOJI: Record<string, string> = {\n\t'new moon': '\uD83C\uDF11',\n\t'waxing crescent': '\uD83C\uDF12',\n\t'first quarter': '\uD83C\uDF13',\n\t'waxing gibbous': '\uD83C\uDF14',\n\t'full moon': '\uD83C\uDF15',\n\t'waning gibbous': '\uD83C\uDF16',\n\t'last quarter': '\uD83C\uDF17',\n\t'waning crescent': '\uD83C\uDF18',\n};\n", "import { css } from 'lit';\n\n/**\n * Shared host styles every component pulls in. Sets default font, color,\n * container query support, and the entry fade-in.\n */\nexport const baseStyles = css`\n\t:host {\n\t\tdisplay: block;\n\t\tcontainer-type: inline-size;\n\t\tfont-family: var(\n\t\t\t--roxy-font-sans,\n\t\t\tsystem-ui,\n\t\t\t-apple-system,\n\t\t\tBlinkMacSystemFont,\n\t\t\t'Segoe UI',\n\t\t\tRoboto,\n\t\t\tsans-serif\n\t\t);\n\t\tcolor: var(--roxy-fg, #0a0a0a);\n\t\tbackground: transparent;\n\t\tfont-size: var(--roxy-text-base, 1rem);\n\t\tline-height: var(--roxy-leading-normal, 1.5);\n\t\tanimation: roxy-fade-in var(--roxy-motion-duration, 200ms)\n\t\t\tvar(--roxy-motion-easing, cubic-bezier(0.4, 0, 0.2, 1)) both;\n\t}\n\n\t*,\n\t*::before,\n\t*::after {\n\t\tbox-sizing: border-box;\n\t}\n\n\t@keyframes roxy-fade-in {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t\ttransform: translateY(2px);\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t\ttransform: translateY(0);\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t:host {\n\t\t\tanimation: none;\n\t\t}\n\t}\n\n\t.roxy-skeleton {\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\tvar(--roxy-border, #e4e4e7) 0%,\n\t\t\tcolor-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent) 50%,\n\t\t\tvar(--roxy-border, #e4e4e7) 100%\n\t\t);\n\t\tbackground-size: 200% 100%;\n\t\tanimation: roxy-shimmer 1.4s ease-in-out infinite;\n\t\tborder-radius: var(--roxy-radius-md, 8px);\n\t}\n\n\t@keyframes roxy-shimmer {\n\t\t0% {\n\t\t\tbackground-position: 200% 0;\n\t\t}\n\t\t100% {\n\t\t\tbackground-position: -200% 0;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.roxy-skeleton {\n\t\t\tanimation: none;\n\t\t}\n\t}\n\n\t.roxy-empty {\n\t\tpadding: var(--roxy-space-lg, 1.5rem);\n\t\tcolor: var(--roxy-muted, #71717a);\n\t\ttext-align: center;\n\t\tfont-size: var(--roxy-text-sm, 0.875rem);\n\t}\n\n\t:host(:focus-within) .roxy-card {\n\t\toutline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));\n\t\toutline-offset: 2px;\n\t}\n`;\n"],
5
+ "mappings": ";;;;;;;;;;;;AAAA,SAAS,OAAAA,MAAK,MAAM,YAAY,SAAS,WAAW;AACpD,SAAS,eAAe,gBAAgB;;;ACyBjC,IAAM,cAAsC;AAAA,EAClD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AACR;AAiBO,IAAM,YAAoC;AAAA,EAChD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AACT;;;ACvEA,SAAS,WAAW;AAMb,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AFqC1B,IAAM,sBAAgE;AAAA,EACrE,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,EACnB,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,EACnB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACnB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACnB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACpB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACpB,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG;AACpB;AAEA,IAAM,uBAAiE;AAAA,EACtE,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,EACnB,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,EACnB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI;AAAA,EACpB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACnB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACnB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACpB,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAAA,EACpB,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG;AACpB;AAEA,IAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAM,gBAAwC;AAAA,EAC7C,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,QAAQ;AACT;AAWO,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAAzC;AAAA;AAuCN,gBAA0B;AAG1B,sBAAgC;AAAA;AAAA,EAExB,cAA6B;AACpC,QAAI,CAAC,KAAK,KAAM,QAAO,CAAC;AACxB,UAAM,SAAwB,CAAC;AAE/B,QAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,GAAG;AACpC,iBAAW,KAAK,KAAK,KAAK,QAAQ;AACjC,eAAO,KAAK;AAAA,UACX,OAAQ,EAAE,SAAS,EAAE,UAAU,OAAO,SAAS;AAAA,UAC/C,MAAM,EAAE,QAAQ;AAAA,UAChB,SAAS,EAAE,WAAW,CAAC;AAAA,QACxB,CAAC;AAAA,MACF;AACA,UAAI,OAAO,SAAS,EAAG,QAAO;AAAA,IAC/B;AAKA,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC5B,YAAM,MAAM,WAAW,CAAC;AACxB,YAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,YAAM,WAAW,QAAQ,SAAS,CAAC,GACjC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EACzB,OAAO,OAAO;AAChB,aAAO,KAAK;AAAA,QACX,OAAO,IAAI;AAAA,QACX,MAAM,cAAc,GAAG,KAAK;AAAA,QAC5B;AAAA,MACD,CAAC;AAAA,IACF;AACA,WAAO;AAAA,EACR;AAAA,EAEA,SAAS;AACR,QAAI,CAAC,KAAK;AACT,aAAO;AACR,UAAM,SAAS,KAAK,YAAY;AAEhC,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuBH,OAAO,IAAI,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC;AAAA;AAAA;AAAA,EAGhD;AAAA,EAEQ,iBAAiB,GAAgB;AACxC,UAAM,SAAS,oBAAoB,EAAE,KAAK;AAC1C,UAAM,UAAU,qBAAqB,EAAE,KAAK;AAC5C,QAAI,CAAC,UAAU,CAAC,QAAS,QAAO;AAChC,UAAM,WAAW,UAAU,EAAE,IAAI,KAAK;AACtC,UAAM,UAAU,EAAE,WAAW,CAAC;AAC9B,WAAO;AAAA;AAAA,MAGJ,WACG,gCAAgC,QAAQ,CAAC,MAAM,QAAQ,CAAC,qDAAqD,QAAQ,YACrH,OACJ;AAAA,MACE,QAAQ,IAAI,CAAC,QAAQ,MAAM;AAC5B,YAAM,OAAO,YAAY,WAAW,MAAM,CAAC,KAAK,OAAO,MAAM,GAAG,CAAC;AACjE,YAAM,aAAa;AACnB,YAAM,SAAS,OAAO,KAAM,QAAQ,SAAS,KAAK,aAAc;AAChE,YAAM,OAAO,SAAS,IAAI;AAC1B,aAAO,kCAAkC,OAAO,CAAC,MAAM,IAAI,qDAAqD,IAAI;AAAA,IACrH,CAAC,CAAC;AAAA;AAAA;AAAA,EAGL;AACD;AArIa,gBACL,SAAS;AAAA,EACf;AAAA,EACAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCD;AAGA;AAAA,EADC,SAAS,EAAE,WAAW,MAAM,CAAC;AAAA,GAtClB,gBAuCZ;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM,WAAW,cAAc,CAAC;AAAA,GAzCvD,gBA0CZ;AA1CY,kBAAN;AAAA,EADN,cAAc,mBAAmB;AAAA,GACrB;AAuIb,SAAS,WAAW,GAAmB;AACtC,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY;AAC3D;",
6
+ "names": ["css", "css"]
7
+ }