@roxyapi/ui 0.4.1 → 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.
Files changed (235) hide show
  1. package/AGENTS.md +21 -0
  2. package/README.md +17 -1
  3. package/dist/cdn/components/ashtakavarga-grid.js +3 -362
  4. package/dist/cdn/components/ashtakavarga-grid.js.map +4 -4
  5. package/dist/cdn/components/biorhythm-chart.js +3 -226
  6. package/dist/cdn/components/biorhythm-chart.js.map +4 -4
  7. package/dist/cdn/components/choghadiya-grid.js +3 -232
  8. package/dist/cdn/components/choghadiya-grid.js.map +4 -4
  9. package/dist/cdn/components/compatibility-card.js +3 -231
  10. package/dist/cdn/components/compatibility-card.js.map +4 -4
  11. package/dist/cdn/components/dasha-timeline.js +3 -283
  12. package/dist/cdn/components/dasha-timeline.js.map +4 -4
  13. package/dist/cdn/components/data.js +3 -230
  14. package/dist/cdn/components/data.js.map +4 -4
  15. package/dist/cdn/components/divisional-chart.js +3 -356
  16. package/dist/cdn/components/divisional-chart.js.map +4 -4
  17. package/dist/cdn/components/dosha-card.js +3 -226
  18. package/dist/cdn/components/dosha-card.js.map +4 -4
  19. package/dist/cdn/components/endpoint-form.js +2 -243
  20. package/dist/cdn/components/endpoint-form.js.map +2 -2
  21. package/dist/cdn/components/guna-milan.js +3 -270
  22. package/dist/cdn/components/guna-milan.js.map +4 -4
  23. package/dist/cdn/components/hexagram.js +3 -247
  24. package/dist/cdn/components/hexagram.js.map +4 -4
  25. package/dist/cdn/components/horoscope-card.js +3 -281
  26. package/dist/cdn/components/horoscope-card.js.map +4 -4
  27. package/dist/cdn/components/kp-chart.js +3 -278
  28. package/dist/cdn/components/kp-chart.js.map +4 -4
  29. package/dist/cdn/components/kp-planets-table.js +3 -196
  30. package/dist/cdn/components/kp-planets-table.js.map +4 -4
  31. package/dist/cdn/components/kp-ruling-planets.js +3 -241
  32. package/dist/cdn/components/kp-ruling-planets.js.map +4 -4
  33. package/dist/cdn/components/location-search.js +2 -240
  34. package/dist/cdn/components/location-search.js.map +2 -2
  35. package/dist/cdn/components/moon-phase.js +3 -223
  36. package/dist/cdn/components/moon-phase.js.map +4 -4
  37. package/dist/cdn/components/nakshatra-card.js +3 -201
  38. package/dist/cdn/components/nakshatra-card.js.map +4 -4
  39. package/dist/cdn/components/natal-chart.js +3 -563
  40. package/dist/cdn/components/natal-chart.js.map +4 -4
  41. package/dist/cdn/components/numerology-card.js +3 -233
  42. package/dist/cdn/components/numerology-card.js.map +4 -4
  43. package/dist/cdn/components/panchang-table.js +3 -220
  44. package/dist/cdn/components/panchang-table.js.map +4 -4
  45. package/dist/cdn/components/shadbala-table.js +3 -284
  46. package/dist/cdn/components/shadbala-table.js.map +4 -4
  47. package/dist/cdn/components/synastry-chart.js +3 -399
  48. package/dist/cdn/components/synastry-chart.js.map +4 -4
  49. package/dist/cdn/components/tarot-card.js +3 -261
  50. package/dist/cdn/components/tarot-card.js.map +4 -4
  51. package/dist/cdn/components/tarot-spread.js +3 -249
  52. package/dist/cdn/components/tarot-spread.js.map +4 -4
  53. package/dist/cdn/components/transits-table.js +3 -382
  54. package/dist/cdn/components/transits-table.js.map +4 -4
  55. package/dist/cdn/components/vedic-kundli.js +3 -305
  56. package/dist/cdn/components/vedic-kundli.js.map +4 -4
  57. package/dist/cdn/components/vedic-planets-table.js +3 -203
  58. package/dist/cdn/components/vedic-planets-table.js.map +4 -4
  59. package/dist/cdn/components/western-planets-table.js +3 -192
  60. package/dist/cdn/components/western-planets-table.js.map +4 -4
  61. package/dist/cdn/components/yoga-list.js +3 -306
  62. package/dist/cdn/components/yoga-list.js.map +4 -4
  63. package/dist/cdn/roxy-ui.js +3 -5102
  64. package/dist/cdn/roxy-ui.js.map +4 -4
  65. package/dist/cdn/widgets.js +1 -114
  66. package/dist/components/ashtakavarga-grid.d.ts +1 -0
  67. package/dist/components/ashtakavarga-grid.d.ts.map +1 -1
  68. package/dist/components/ashtakavarga-grid.js +1 -531
  69. package/dist/components/ashtakavarga-grid.js.map +4 -4
  70. package/dist/components/biorhythm-chart.d.ts +1 -0
  71. package/dist/components/biorhythm-chart.d.ts.map +1 -1
  72. package/dist/components/biorhythm-chart.js +1 -332
  73. package/dist/components/biorhythm-chart.js.map +4 -4
  74. package/dist/components/choghadiya-grid.d.ts +1 -0
  75. package/dist/components/choghadiya-grid.d.ts.map +1 -1
  76. package/dist/components/choghadiya-grid.js +1 -351
  77. package/dist/components/choghadiya-grid.js.map +4 -4
  78. package/dist/components/compatibility-card.d.ts +1 -0
  79. package/dist/components/compatibility-card.d.ts.map +1 -1
  80. package/dist/components/compatibility-card.js +1 -313
  81. package/dist/components/compatibility-card.js.map +4 -4
  82. package/dist/components/dasha-timeline.d.ts +1 -0
  83. package/dist/components/dasha-timeline.d.ts.map +1 -1
  84. package/dist/components/dasha-timeline.js +1 -401
  85. package/dist/components/dasha-timeline.js.map +4 -4
  86. package/dist/components/data.d.ts +1 -0
  87. package/dist/components/data.d.ts.map +1 -1
  88. package/dist/components/data.js +1 -362
  89. package/dist/components/data.js.map +4 -4
  90. package/dist/components/divisional-chart.d.ts +1 -0
  91. package/dist/components/divisional-chart.d.ts.map +1 -1
  92. package/dist/components/divisional-chart.js +1 -886
  93. package/dist/components/divisional-chart.js.map +4 -4
  94. package/dist/components/dosha-card.d.ts +1 -0
  95. package/dist/components/dosha-card.d.ts.map +1 -1
  96. package/dist/components/dosha-card.js +1 -293
  97. package/dist/components/dosha-card.js.map +4 -4
  98. package/dist/components/endpoint-form.js +1 -505
  99. package/dist/components/endpoint-form.js.map +3 -3
  100. package/dist/components/guna-milan.d.ts +1 -0
  101. package/dist/components/guna-milan.d.ts.map +1 -1
  102. package/dist/components/guna-milan.js +1 -374
  103. package/dist/components/guna-milan.js.map +4 -4
  104. package/dist/components/hexagram.d.ts +1 -0
  105. package/dist/components/hexagram.d.ts.map +1 -1
  106. package/dist/components/hexagram.js +1 -380
  107. package/dist/components/hexagram.js.map +4 -4
  108. package/dist/components/horoscope-card.d.ts +1 -0
  109. package/dist/components/horoscope-card.d.ts.map +1 -1
  110. package/dist/components/horoscope-card.js +1 -381
  111. package/dist/components/horoscope-card.js.map +4 -4
  112. package/dist/components/kp-chart.d.ts +1 -0
  113. package/dist/components/kp-chart.d.ts.map +1 -1
  114. package/dist/components/kp-chart.js +1 -395
  115. package/dist/components/kp-chart.js.map +4 -4
  116. package/dist/components/kp-planets-table.d.ts +1 -0
  117. package/dist/components/kp-planets-table.d.ts.map +1 -1
  118. package/dist/components/kp-planets-table.js +1 -246
  119. package/dist/components/kp-planets-table.js.map +4 -4
  120. package/dist/components/kp-ruling-planets.d.ts +1 -0
  121. package/dist/components/kp-ruling-planets.d.ts.map +1 -1
  122. package/dist/components/kp-ruling-planets.js +1 -288
  123. package/dist/components/kp-ruling-planets.js.map +4 -4
  124. package/dist/components/location-search.js +1 -461
  125. package/dist/components/location-search.js.map +3 -3
  126. package/dist/components/moon-phase.d.ts +1 -0
  127. package/dist/components/moon-phase.d.ts.map +1 -1
  128. package/dist/components/moon-phase.js +1 -327
  129. package/dist/components/moon-phase.js.map +4 -4
  130. package/dist/components/nakshatra-card.d.ts +1 -0
  131. package/dist/components/nakshatra-card.d.ts.map +1 -1
  132. package/dist/components/nakshatra-card.js +1 -244
  133. package/dist/components/nakshatra-card.js.map +4 -4
  134. package/dist/components/natal-chart.d.ts +1 -1
  135. package/dist/components/natal-chart.d.ts.map +1 -1
  136. package/dist/components/natal-chart.js +1 -1040
  137. package/dist/components/natal-chart.js.map +4 -4
  138. package/dist/components/numerology-card.d.ts +1 -0
  139. package/dist/components/numerology-card.d.ts.map +1 -1
  140. package/dist/components/numerology-card.js +1 -315
  141. package/dist/components/numerology-card.js.map +4 -4
  142. package/dist/components/panchang-table.d.ts +1 -0
  143. package/dist/components/panchang-table.d.ts.map +1 -1
  144. package/dist/components/panchang-table.js +1 -350
  145. package/dist/components/panchang-table.js.map +4 -4
  146. package/dist/components/shadbala-table.d.ts +1 -0
  147. package/dist/components/shadbala-table.d.ts.map +1 -1
  148. package/dist/components/shadbala-table.js +1 -413
  149. package/dist/components/shadbala-table.js.map +4 -4
  150. package/dist/components/synastry-chart.d.ts +1 -0
  151. package/dist/components/synastry-chart.d.ts.map +1 -1
  152. package/dist/components/synastry-chart.js +1 -658
  153. package/dist/components/synastry-chart.js.map +4 -4
  154. package/dist/components/tarot-card.d.ts +1 -0
  155. package/dist/components/tarot-card.d.ts.map +1 -1
  156. package/dist/components/tarot-card.js +1 -333
  157. package/dist/components/tarot-card.js.map +4 -4
  158. package/dist/components/tarot-spread.d.ts +1 -0
  159. package/dist/components/tarot-spread.d.ts.map +1 -1
  160. package/dist/components/tarot-spread.js +1 -310
  161. package/dist/components/tarot-spread.js.map +4 -4
  162. package/dist/components/transits-table.d.ts +3 -0
  163. package/dist/components/transits-table.d.ts.map +1 -1
  164. package/dist/components/transits-table.js +1 -548
  165. package/dist/components/transits-table.js.map +4 -4
  166. package/dist/components/vedic-kundli.d.ts +1 -0
  167. package/dist/components/vedic-kundli.d.ts.map +1 -1
  168. package/dist/components/vedic-kundli.js +1 -802
  169. package/dist/components/vedic-kundli.js.map +4 -4
  170. package/dist/components/vedic-planets-table.d.ts +1 -0
  171. package/dist/components/vedic-planets-table.d.ts.map +1 -1
  172. package/dist/components/vedic-planets-table.js +1 -368
  173. package/dist/components/vedic-planets-table.js.map +4 -4
  174. package/dist/components/western-planets-table.d.ts +1 -0
  175. package/dist/components/western-planets-table.d.ts.map +1 -1
  176. package/dist/components/western-planets-table.js +1 -363
  177. package/dist/components/western-planets-table.js.map +4 -4
  178. package/dist/components/yoga-list.d.ts +1 -0
  179. package/dist/components/yoga-list.d.ts.map +1 -1
  180. package/dist/components/yoga-list.js +1 -383
  181. package/dist/components/yoga-list.js.map +4 -4
  182. package/dist/index.cjs +1 -8653
  183. package/dist/index.cjs.map +4 -4
  184. package/dist/index.js +1 -8633
  185. package/dist/index.js.map +4 -4
  186. package/dist/types/index.d.ts +1 -1
  187. package/dist/types/index.d.ts.map +1 -1
  188. package/dist/types/types.gen.d.ts +590 -202
  189. package/dist/types/types.gen.d.ts.map +1 -1
  190. package/dist/utils/disclosure.d.ts +16 -0
  191. package/dist/utils/disclosure.d.ts.map +1 -0
  192. package/dist/utils/kundli-render.d.ts.map +1 -1
  193. package/dist/utils/kundli-styles.d.ts.map +1 -1
  194. package/dist/utils/markup-data.d.ts +57 -0
  195. package/dist/utils/markup-data.d.ts.map +1 -0
  196. package/dist/utils/tablist.d.ts +44 -0
  197. package/dist/utils/tablist.d.ts.map +1 -0
  198. package/dist/version.d.ts +1 -1
  199. package/package.json +3 -1
  200. package/src/components/ashtakavarga-grid.ts +9 -0
  201. package/src/components/biorhythm-chart.ts +9 -0
  202. package/src/components/choghadiya-grid.ts +9 -0
  203. package/src/components/compatibility-card.ts +9 -0
  204. package/src/components/dasha-timeline.ts +19 -1
  205. package/src/components/data.ts +9 -0
  206. package/src/components/divisional-chart.ts +11 -0
  207. package/src/components/dosha-card.ts +9 -0
  208. package/src/components/guna-milan.ts +9 -0
  209. package/src/components/hexagram.ts +9 -0
  210. package/src/components/horoscope-card.ts +9 -0
  211. package/src/components/kp-chart.ts +9 -0
  212. package/src/components/kp-planets-table.ts +9 -0
  213. package/src/components/kp-ruling-planets.ts +9 -0
  214. package/src/components/moon-phase.ts +9 -0
  215. package/src/components/nakshatra-card.ts +9 -0
  216. package/src/components/natal-chart.ts +46 -62
  217. package/src/components/numerology-card.ts +9 -0
  218. package/src/components/panchang-table.ts +9 -0
  219. package/src/components/shadbala-table.ts +9 -0
  220. package/src/components/synastry-chart.ts +9 -0
  221. package/src/components/tarot-card.ts +9 -0
  222. package/src/components/tarot-spread.ts +9 -0
  223. package/src/components/transits-table.ts +54 -18
  224. package/src/components/vedic-kundli.ts +11 -1
  225. package/src/components/vedic-planets-table.ts +9 -0
  226. package/src/components/western-planets-table.ts +9 -0
  227. package/src/components/yoga-list.ts +9 -0
  228. package/src/types/index.ts +1 -1
  229. package/src/types/types.gen.ts +602 -200
  230. package/src/utils/disclosure.ts +62 -0
  231. package/src/utils/kundli-render.ts +21 -35
  232. package/src/utils/kundli-styles.ts +0 -31
  233. package/src/utils/markup-data.ts +115 -0
  234. package/src/utils/tablist.ts +124 -0
  235. package/src/version.ts +1 -1
@@ -1,114 +1 @@
1
- (function () {
2
- 'use strict';
3
- if (window.__ROXY_WIDGETS_LOADED__) return;
4
- window.__ROXY_WIDGETS_LOADED__ = true;
5
-
6
- var CDN = 'https://cdn.jsdelivr.net/npm/@roxyapi/ui@0/dist/cdn/roxy-ui.js';
7
- var API = 'https://roxyapi.com/api/v2';
8
-
9
- var WIDGET_ENDPOINTS = {
10
- 'natal-chart': { path: '/astrology/natal-chart', method: 'POST' },
11
- 'horoscope-card': { path: '/astrology/horoscope/{sign}/daily', method: 'GET' },
12
- 'synastry-chart': { path: '/astrology/synastry', method: 'POST' },
13
- 'compatibility-card': { path: '/astrology/compatibility-score', method: 'POST' },
14
- 'moon-phase': { path: '/astrology/moon-phase/current', method: 'GET' },
15
- 'vedic-kundli': { path: '/vedic-astrology/birth-chart', method: 'POST' },
16
- 'panchang-table': { path: '/vedic-astrology/panchang/detailed', method: 'POST' },
17
- 'dasha-timeline': { path: '/vedic-astrology/dasha/current', method: 'POST' },
18
- 'dosha-card': { path: '/vedic-astrology/dosha/manglik', method: 'POST' },
19
- 'guna-milan': { path: '/vedic-astrology/compatibility', method: 'POST' },
20
- 'kp-planets-table': { path: '/vedic-astrology/kp/planets', method: 'POST' },
21
- 'numerology-card': { path: '/numerology/life-path', method: 'POST' },
22
- 'tarot-card': { path: '/tarot/daily', method: 'POST' },
23
- 'tarot-spread': { path: '/tarot/spreads/three-card', method: 'POST' },
24
- 'biorhythm-chart': { path: '/biorhythm/daily', method: 'POST' },
25
- hexagram: { path: '/iching/cast', method: 'GET' },
26
- };
27
-
28
- function ensureLoaded() {
29
- if (document.getElementById('roxy-ui-loader')) return Promise.resolve();
30
- return new Promise(function (resolve, reject) {
31
- var s = document.createElement('script');
32
- s.id = 'roxy-ui-loader';
33
- s.src = CDN;
34
- s.async = true;
35
- s.crossOrigin = 'anonymous';
36
- s.onload = function () { resolve(); };
37
- s.onerror = function () { reject(new Error('roxy-ui load failed')); };
38
- document.head.appendChild(s);
39
- });
40
- }
41
-
42
- function fillTemplate(path, attrs) {
43
- return path.replace(/\{([^}]+)\}/g, function (_, key) {
44
- return encodeURIComponent(attrs[key] || '');
45
- });
46
- }
47
-
48
- function collectAttrs(el) {
49
- var out = {};
50
- for (var i = 0; i < el.attributes.length; i++) {
51
- var a = el.attributes[i];
52
- if (a.name.indexOf('data-') === 0 && a.name !== 'data-roxy-widget' && a.name !== 'data-publishable-key') {
53
- out[a.name.slice('data-'.length).replace(/-([a-z])/g, function (_, c) { return c.toUpperCase(); })] = a.value;
54
- }
55
- }
56
- return out;
57
- }
58
-
59
- function mount(host) {
60
- var name = host.getAttribute('data-roxy-widget');
61
- var pk = host.getAttribute('data-publishable-key');
62
- if (!name || !WIDGET_ENDPOINTS[name]) return;
63
-
64
- var endpoint = WIDGET_ENDPOINTS[name];
65
- var attrs = collectAttrs(host);
66
- var url = API + fillTemplate(endpoint.path, attrs);
67
-
68
- ensureLoaded().then(function () {
69
- var element = document.createElement('roxy-' + name);
70
- Object.keys(attrs).forEach(function (k) {
71
- if (k === 'sign' || k === 'period' || k === 'mode' || k === 'type' || k === 'spread') {
72
- element.setAttribute(k, attrs[k]);
73
- }
74
- });
75
- host.innerHTML = '';
76
- host.appendChild(element);
77
-
78
- if (!pk) {
79
- console.warn('roxy-widget', name, 'is missing data-publishable-key, skipping fetch');
80
- return;
81
- }
82
-
83
- var headers = { Accept: 'application/json' };
84
- headers['X-API-Key'] = pk;
85
- var init = { headers: headers, method: endpoint.method };
86
- if (endpoint.method === 'POST') {
87
- init.headers['Content-Type'] = 'application/json';
88
- init.body = JSON.stringify(attrs);
89
- }
90
-
91
- fetch(url, init)
92
- .then(function (res) { return res.json(); })
93
- .then(function (json) { element.data = json; })
94
- .catch(function (err) {
95
- element.setAttribute('aria-invalid', 'true');
96
- console.error('roxy-widget', name, err);
97
- });
98
- });
99
- }
100
-
101
- function scan() {
102
- var nodes = document.querySelectorAll('[data-roxy-widget]:not([data-roxy-mounted])');
103
- for (var i = 0; i < nodes.length; i++) {
104
- nodes[i].setAttribute('data-roxy-mounted', 'true');
105
- mount(nodes[i]);
106
- }
107
- }
108
-
109
- if (document.readyState === 'loading') {
110
- document.addEventListener('DOMContentLoaded', scan);
111
- } else {
112
- scan();
113
- }
114
- })();
1
+ (function(){"use strict";if(window.__ROXY_WIDGETS_LOADED__)return;window.__ROXY_WIDGETS_LOADED__=!0;var u="https://cdn.jsdelivr.net/npm/@roxyapi/ui@0/dist/cdn/roxy-ui.js",p="https://roxyapi.com/api/v2",h={"natal-chart":{path:"/astrology/natal-chart",method:"POST"},"horoscope-card":{path:"/astrology/horoscope/{sign}/daily",method:"GET"},"synastry-chart":{path:"/astrology/synastry",method:"POST"},"compatibility-card":{path:"/astrology/compatibility-score",method:"POST"},"moon-phase":{path:"/astrology/moon-phase/current",method:"GET"},"vedic-kundli":{path:"/vedic-astrology/birth-chart",method:"POST"},"panchang-table":{path:"/vedic-astrology/panchang/detailed",method:"POST"},"dasha-timeline":{path:"/vedic-astrology/dasha/current",method:"POST"},"dosha-card":{path:"/vedic-astrology/dosha/manglik",method:"POST"},"guna-milan":{path:"/vedic-astrology/compatibility",method:"POST"},"kp-planets-table":{path:"/vedic-astrology/kp/planets",method:"POST"},"numerology-card":{path:"/numerology/life-path",method:"POST"},"tarot-card":{path:"/tarot/daily",method:"POST"},"tarot-spread":{path:"/tarot/spreads/three-card",method:"POST"},"biorhythm-chart":{path:"/biorhythm/daily",method:"POST"},hexagram:{path:"/iching/cast",method:"GET"}};function m(){return document.getElementById("roxy-ui-loader")?Promise.resolve():new Promise(function(e,t){var a=document.createElement("script");a.id="roxy-ui-loader",a.src=u,a.async=!0,a.crossOrigin="anonymous",a.onload=function(){e()},a.onerror=function(){t(new Error("roxy-ui load failed"))},document.head.appendChild(a)})}function y(e,t){return e.replace(/\{([^}]+)\}/g,function(a,r){return encodeURIComponent(t[r]||"")})}function g(e){for(var t={},a=0;a<e.attributes.length;a++){var r=e.attributes[a];r.name.indexOf("data-")===0&&r.name!=="data-roxy-widget"&&r.name!=="data-publishable-key"&&(t[r.name.slice(5).replace(/-([a-z])/g,function(n,d){return d.toUpperCase()})]=r.value)}return t}function f(e){var t=e.getAttribute("data-roxy-widget"),a=e.getAttribute("data-publishable-key");if(!(!t||!h[t])){var r=h[t],n=g(e),d=p+y(r.path,n);m().then(function(){var i=document.createElement("roxy-"+t);if(Object.keys(n).forEach(function(o){(o==="sign"||o==="period"||o==="mode"||o==="type"||o==="spread")&&i.setAttribute(o,n[o])}),e.innerHTML="",e.appendChild(i),!a){console.warn("roxy-widget",t,"is missing data-publishable-key, skipping fetch");return}var l={Accept:"application/json"};l["X-API-Key"]=a;var c={headers:l,method:r.method};r.method==="POST"&&(c.headers["Content-Type"]="application/json",c.body=JSON.stringify(n)),fetch(d,c).then(function(o){return o.json()}).then(function(o){i.data=o}).catch(function(o){i.setAttribute("aria-invalid","true"),console.error("roxy-widget",t,o)})})}}function s(){for(var e=document.querySelectorAll("[data-roxy-widget]:not([data-roxy-mounted])"),t=0;t<e.length;t++)e[t].setAttribute("data-roxy-mounted","true"),f(e[t])}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",s):s()})();
@@ -7,6 +7,7 @@ type Tab = 'sarva' | 'bhinna' | 'pinda';
7
7
  */
8
8
  export declare class RoxyAshtakavargaGrid extends LitElement {
9
9
  static styles: import("lit").CSSResult[];
10
+ constructor();
10
11
  data: AshtakavargaResponse | null;
11
12
  activeTab: Tab;
12
13
  render(): import("lit").TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"ashtakavarga-grid.d.ts","sourceRoot":"","sources":["../../src/components/ashtakavarga-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAGrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,KAAK,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAUxC;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACnD,MAAM,CAAC,MAAM,4BA4KX;IAGF,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAGzC,SAAS,EAAE,GAAG,CAAW;IAEzB,MAAM;IAwDN,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAStB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,WAAW;CA4BnB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,wBAAwB,EAAE,oBAAoB,CAAC;KAC/C;CACD"}
1
+ {"version":3,"file":"ashtakavarga-grid.d.ts","sourceRoot":"","sources":["../../src/components/ashtakavarga-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAW,MAAM,KAAK,CAAC;AAGrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,KAAK,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAUxC;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IACnD,MAAM,CAAC,MAAM,4BA4KX;;IAWF,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAGzC,SAAS,EAAE,GAAG,CAAW;IAEzB,MAAM;IAwDN,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAStB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,WAAW;CA4BnB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,wBAAwB,EAAE,oBAAoB,CAAC;KAC/C;CACD"}
@@ -1,532 +1,2 @@
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/ashtakavarga-grid.ts
13
- import { css as css2, html, LitElement, nothing } from "lit";
14
- import { customElement, property, state } from "lit/decorators.js";
15
-
16
- // packages/ui/src/tokens/index.ts
17
- var SIGN_GLYPH = {
18
- Aries: "\u2648",
19
- Taurus: "\u2649",
20
- Gemini: "\u264A",
21
- Cancer: "\u264B",
22
- Leo: "\u264C",
23
- Virgo: "\u264D",
24
- Libra: "\u264E",
25
- Scorpio: "\u264F",
26
- Sagittarius: "\u2650",
27
- Capricorn: "\u2651",
28
- Aquarius: "\u2652",
29
- Pisces: "\u2653"
30
- };
31
- var SIGNS_ORDER = [
32
- "Aries",
33
- "Taurus",
34
- "Gemini",
35
- "Cancer",
36
- "Leo",
37
- "Virgo",
38
- "Libra",
39
- "Scorpio",
40
- "Sagittarius",
41
- "Capricorn",
42
- "Aquarius",
43
- "Pisces"
44
- ];
45
- var RASHI_KEYS = SIGNS_ORDER.map(
46
- (s) => s.toLowerCase()
47
- );
48
-
49
- // packages/ui/src/utils/base-styles.ts
50
- import { css } from "lit";
51
- var baseStyles = css`
52
- :host {
53
- display: block;
54
- container-type: inline-size;
55
- font-family: var(
56
- --roxy-font-sans,
57
- system-ui,
58
- -apple-system,
59
- BlinkMacSystemFont,
60
- 'Segoe UI',
61
- Roboto,
62
- sans-serif
63
- );
64
- color: var(--roxy-fg, #0a0a0a);
65
- background: transparent;
66
- font-size: var(--roxy-text-base, 1rem);
67
- line-height: var(--roxy-leading-normal, 1.5);
68
- animation: roxy-fade-in var(--roxy-motion-duration, 200ms)
69
- var(--roxy-motion-easing, cubic-bezier(0.4, 0, 0.2, 1)) both;
70
- }
71
-
72
- *,
73
- *::before,
74
- *::after {
75
- box-sizing: border-box;
76
- }
77
-
78
- @keyframes roxy-fade-in {
79
- from {
80
- opacity: 0;
81
- transform: translateY(2px);
82
- }
83
- to {
84
- opacity: 1;
85
- transform: translateY(0);
86
- }
87
- }
88
-
89
- @media (prefers-reduced-motion: reduce) {
90
- :host {
91
- animation: none;
92
- }
93
- }
94
-
95
- .roxy-skeleton {
96
- background: linear-gradient(
97
- 90deg,
98
- var(--roxy-border, #e4e4e7) 0%,
99
- color-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent) 50%,
100
- var(--roxy-border, #e4e4e7) 100%
101
- );
102
- background-size: 200% 100%;
103
- animation: roxy-shimmer 1.4s ease-in-out infinite;
104
- border-radius: var(--roxy-radius-md, 8px);
105
- }
106
-
107
- @keyframes roxy-shimmer {
108
- 0% {
109
- background-position: 200% 0;
110
- }
111
- 100% {
112
- background-position: -200% 0;
113
- }
114
- }
115
-
116
- @media (prefers-reduced-motion: reduce) {
117
- .roxy-skeleton {
118
- animation: none;
119
- }
120
- }
121
-
122
- .roxy-empty {
123
- padding: var(--roxy-space-lg, 1.5rem);
124
- color: var(--roxy-muted, #71717a);
125
- text-align: center;
126
- font-size: var(--roxy-text-sm, 0.875rem);
127
- }
128
-
129
- :host(:focus-within) .roxy-card {
130
- outline: 2px solid var(--roxy-ring, rgba(245, 158, 11, 0.4));
131
- outline-offset: 2px;
132
- }
133
-
134
- /* Force the text-style variant on every Unicode glyph in the component.
135
- * macOS and iOS substitute coloured emoji glyphs for the planetary and
136
- * gender Unicode code points (Mars, Venus, Mercury, etc.) when the
137
- * system colour-emoji font wins font selection. The text-style variant
138
- * keeps glyphs monochrome so they inherit the surrounding fill colour
139
- * and match the brand palette consistently across platforms.
140
- *
141
- * font-variant-emoji is part of CSS Fonts 4 (Safari 17+, Chrome 134+,
142
- * Firefox 139+). On older browsers the rule is silently ignored.
143
- */
144
- :host {
145
- font-variant-emoji: text;
146
- }
147
- `;
148
-
149
- // packages/ui/src/components/ashtakavarga-grid.ts
150
- var TAB_LABELS = {
151
- sarva: "Sarvashtakavarga",
152
- bhinna: "Bhinnashtakavarga",
153
- pinda: "Shodhya Pinda"
154
- };
155
- var TABS = ["sarva", "bhinna", "pinda"];
156
- var RoxyAshtakavargaGrid = class extends LitElement {
157
- constructor() {
158
- super(...arguments);
159
- this.data = null;
160
- this.activeTab = "sarva";
161
- }
162
- render() {
163
- if (!this.data) {
164
- return html`<div class="roxy-empty" role="status">No ashtakavarga data</div>`;
165
- }
166
- const signs = this.data.signs ?? [];
167
- return html`<div class="wrap" aria-label="Ashtakavarga grid">
168
- <div class="head">
169
- <h2 class="title">Ashtakavarga</h2>
170
- ${signs.length ? html`<p class="subtitle">${signs.length} signs</p>` : nothing}
171
- </div>
172
-
173
- <div
174
- class="tablist"
175
- role="tablist"
176
- aria-label="Ashtakavarga views"
177
- @keydown=${this.onTabKeyDown}
178
- >
179
- ${TABS.map(
180
- (tab) => html`<button
181
- class="tab"
182
- role="tab"
183
- id="tab-${tab}"
184
- aria-selected=${this.activeTab === tab ? "true" : "false"}
185
- aria-controls="panel-${tab}"
186
- tabindex=${this.activeTab === tab ? "0" : "-1"}
187
- @click=${() => {
188
- this.activeTab = tab;
189
- }}
190
- >
191
- ${TAB_LABELS[tab]}
192
- </button>`
193
- )}
194
- </div>
195
-
196
- <div
197
- id="panel-${this.activeTab}"
198
- role="tabpanel"
199
- aria-labelledby="tab-${this.activeTab}"
200
- >
201
- ${this.activeTab === "sarva" ? this.renderSarva(signs) : this.activeTab === "bhinna" ? this.renderBhinna(signs) : this.renderPinda()}
202
- </div>
203
- </div>`;
204
- }
205
- onTabKeyDown(e) {
206
- const idx = TABS.indexOf(this.activeTab);
207
- if (e.key === "ArrowRight") {
208
- e.preventDefault();
209
- this.activeTab = TABS[(idx + 1) % TABS.length];
210
- this.focusActiveTab();
211
- } else if (e.key === "ArrowLeft") {
212
- e.preventDefault();
213
- this.activeTab = TABS[(idx - 1 + TABS.length) % TABS.length];
214
- this.focusActiveTab();
215
- }
216
- }
217
- focusActiveTab() {
218
- requestAnimationFrame(() => {
219
- const btn = this.shadowRoot?.querySelector(
220
- `#tab-${this.activeTab}`
221
- );
222
- btn?.focus();
223
- });
224
- }
225
- /**
226
- * Bhinna bindus per planet per sign run 0..8 (sum of 0/1 contributions
227
- * from each of the 8 reference points). Bucket directly by raw count.
228
- */
229
- bhinnaHeat(count) {
230
- if (count <= 1) return "heat-1";
231
- if (count <= 2) return "heat-2";
232
- if (count <= 3) return "heat-3";
233
- if (count <= 4) return "heat-4";
234
- if (count <= 5) return "heat-5";
235
- if (count <= 6) return "heat-6";
236
- return "heat-7";
237
- }
238
- /**
239
- * Sarva bindus per sign are the column total across all 7 planets, range
240
- * roughly 0..56 with typical values 20..40. Bucketed per classical
241
- * interpretation: 25 below par, 25..30 average, 30..40 strong, 40+ very
242
- * strong. Bucket spans intentionally widen at the extremes so a single
243
- * outlier sign reads as exceptional.
244
- */
245
- sarvaHeat(count) {
246
- if (count <= 18) return "heat-1";
247
- if (count <= 23) return "heat-2";
248
- if (count <= 28) return "heat-3";
249
- if (count <= 32) return "heat-4";
250
- if (count <= 37) return "heat-5";
251
- if (count <= 42) return "heat-6";
252
- return "heat-7";
253
- }
254
- renderSarva(signs) {
255
- const sav = this.data.sarvashtakavarga;
256
- if (!sav) return html`<p class="roxy-empty">No sarvashtakavarga data</p>`;
257
- return html`<div class="overflow-scroll">
258
- <table aria-label="Sarvashtakavarga bindu counts per sign">
259
- <thead>
260
- <tr>
261
- <th scope="col">Sign</th>
262
- <th scope="col">Bindus</th>
263
- </tr>
264
- </thead>
265
- <tbody>
266
- ${signs.map((sign, i) => {
267
- const count = sav.bindus[i] ?? 0;
268
- const hc = this.sarvaHeat(count);
269
- return html`<tr>
270
- <td>
271
- <div class="planet-cell">
272
- <span class="glyph" aria-hidden="true">${SIGN_GLYPH[sign] ?? ""}</span>
273
- ${sign}
274
- </div>
275
- </td>
276
- <td class="${`heat-cell ${hc}`}">${count}</td>
277
- </tr>`;
278
- })}
279
- </tbody>
280
- <tfoot>
281
- <tr class="total-row">
282
- <td>Total</td>
283
- <td>${sav.total}</td>
284
- </tr>
285
- </tfoot>
286
- </table>
287
- </div>`;
288
- }
289
- renderBhinna(signs) {
290
- const bhinna = this.data.bhinnashtakavarga;
291
- if (!bhinna?.length)
292
- return html`<p class="roxy-empty">No bhinnashtakavarga data</p>`;
293
- return html`<div class="overflow-scroll">
294
- <table class="bhinna-table" aria-label="Bhinnashtakavarga planet-by-sign grid">
295
- <thead>
296
- <tr>
297
- <th scope="col">Planet</th>
298
- ${signs.map(
299
- (s) => html`<th scope="col" title=${s}>${SIGN_GLYPH[s] ?? s.slice(0, 2)}</th>`
300
- )}
301
- <th scope="col">Total</th>
302
- </tr>
303
- </thead>
304
- <tbody>
305
- ${bhinna.map(
306
- (row) => html`<tr>
307
- <td>${row.planet}</td>
308
- ${row.bindus.map((count) => {
309
- const hc = this.bhinnaHeat(count);
310
- return html`<td class="${`heat-cell ${hc}`}">${count}</td>`;
311
- })}
312
- <td>${row.total}</td>
313
- </tr>`
314
- )}
315
- </tbody>
316
- </table>
317
- </div>`;
318
- }
319
- renderPinda() {
320
- const pinda = this.data.shodhyaPinda;
321
- if (!pinda?.length)
322
- return html`<p class="roxy-empty">No shodhya pinda data</p>`;
323
- return html`<div class="overflow-scroll">
324
- <table aria-label="Shodhya Pinda planet strength scores">
325
- <thead>
326
- <tr>
327
- <th scope="col">Planet</th>
328
- <th scope="col">Rashi Pinda</th>
329
- <th scope="col">Graha Pinda</th>
330
- <th scope="col">Shodhya Pinda</th>
331
- </tr>
332
- </thead>
333
- <tbody>
334
- ${pinda.map(
335
- (row) => html`<tr>
336
- <td>${row.planet}</td>
337
- <td>${row.rashiPinda}</td>
338
- <td>${row.grahaPinda}</td>
339
- <td>${row.shodhyaPinda}</td>
340
- </tr>`
341
- )}
342
- </tbody>
343
- </table>
344
- </div>`;
345
- }
346
- };
347
- RoxyAshtakavargaGrid.styles = [
348
- baseStyles,
349
- css2`
350
- .wrap {
351
- display: grid;
352
- gap: var(--roxy-space-md, 1rem);
353
- }
354
-
355
- .head {
356
- display: flex;
357
- justify-content: space-between;
358
- align-items: baseline;
359
- gap: var(--roxy-space-md, 1rem);
360
- flex-wrap: wrap;
361
- }
362
-
363
- .title {
364
- font-size: var(--roxy-text-lg, 1.125rem);
365
- font-weight: var(--roxy-weight-bold, 600);
366
- margin: 0;
367
- }
368
-
369
- .subtitle {
370
- color: var(--roxy-muted, #71717a);
371
- font-size: var(--roxy-text-sm, 0.875rem);
372
- margin: 0;
373
- }
374
-
375
- /* Tabs */
376
- .tablist {
377
- display: flex;
378
- gap: 2px;
379
- border-bottom: 2px solid var(--roxy-border, #e4e4e7);
380
- }
381
-
382
- .tab {
383
- padding: var(--roxy-space-xs, 0.25rem) var(--roxy-space-md, 1rem);
384
- font-size: var(--roxy-text-sm, 0.875rem);
385
- background: none;
386
- border: none;
387
- border-bottom: 2px solid transparent;
388
- margin-bottom: -2px;
389
- cursor: pointer;
390
- color: var(--roxy-muted, #71717a);
391
- font-family: inherit;
392
- transition: color var(--roxy-motion-duration, 200ms) var(--roxy-motion-easing, ease);
393
- }
394
-
395
- .tab[aria-selected='true'] {
396
- color: var(--roxy-accent-fg, #b45309);
397
- border-bottom-color: var(--roxy-accent, #f59e0b);
398
- font-weight: var(--roxy-weight-bold, 600);
399
- }
400
-
401
- .tab:hover:not([aria-selected='true']) {
402
- color: var(--roxy-fg, #0a0a0a);
403
- }
404
-
405
- /* Tables */
406
- .overflow-scroll {
407
- overflow-x: auto;
408
- -webkit-overflow-scrolling: touch;
409
- }
410
-
411
- table {
412
- width: 100%;
413
- border-collapse: collapse;
414
- font-size: var(--roxy-text-sm, 0.875rem);
415
- }
416
-
417
- th,
418
- td {
419
- padding: var(--roxy-space-sm, 0.5rem);
420
- border-bottom: 1px solid var(--roxy-border, #e4e4e7);
421
- text-align: center;
422
- }
423
-
424
- th {
425
- color: var(--roxy-muted, #71717a);
426
- font-weight: var(--roxy-weight-bold, 600);
427
- text-transform: uppercase;
428
- font-size: var(--roxy-text-xs, 0.75rem);
429
- letter-spacing: 0.06em;
430
- }
431
-
432
- td:first-child,
433
- th:first-child {
434
- text-align: left;
435
- }
436
-
437
- .glyph {
438
- font-size: 1.1em;
439
- margin-right: 3px;
440
- line-height: 1;
441
- }
442
-
443
- .planet-cell {
444
- display: flex;
445
- align-items: center;
446
- gap: 4px;
447
- white-space: nowrap;
448
- }
449
-
450
- .total-row td {
451
- font-weight: var(--roxy-weight-bold, 600);
452
- border-top: 2px solid var(--roxy-border, #e4e4e7);
453
- border-bottom: none;
454
- }
455
-
456
- /* Heat cells. Single base hue (var --roxy-heat) mixed with
457
- * transparent at increasing percentages produces seven readable
458
- * tiers in both light and dark themes. Text colour stays
459
- * var(--roxy-fg) so it inverts with the host theme without
460
- * per-tier overrides. */
461
- .heat-cell {
462
- border-radius: var(--roxy-radius-sm, 4px);
463
- font-weight: var(--roxy-weight-bold, 600);
464
- min-width: 2rem;
465
- font-variant-numeric: tabular-nums;
466
- color: var(--roxy-fg, currentColor);
467
- }
468
-
469
- .heat-1 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 6%, transparent); }
470
- .heat-2 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 14%, transparent); }
471
- .heat-3 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 26%, transparent); }
472
- .heat-4 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 40%, transparent); }
473
- .heat-5 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 55%, transparent); }
474
- .heat-6 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 72%, transparent); }
475
- .heat-7 { background: color-mix(in srgb, var(--roxy-heat, #ef4444) 90%, transparent); }
476
-
477
- /* Bhinna grid: planet header column narrower */
478
- .bhinna-table th:first-child,
479
- .bhinna-table td:first-child {
480
- min-width: 5rem;
481
- }
482
-
483
- /* Tight cells below 480px so the 14-column bhinna grid stops
484
- * overflowing the viewport. The wrapper keeps overflow-x:auto as
485
- * a fallback for very long content. */
486
- @container (max-width: 480px) {
487
- .bhinna-table th,
488
- .bhinna-table td {
489
- padding: 0.3rem 0.35rem;
490
- font-size: var(--roxy-text-xs, 0.75rem);
491
- }
492
- .bhinna-table th:first-child,
493
- .bhinna-table td:first-child {
494
- min-width: 3.5rem;
495
- }
496
- .heat-cell {
497
- min-width: 1.5rem;
498
- }
499
- }
500
- /* Visual cue that the bhinna table is scrollable below the breakpoint:
501
- * a soft gradient at the right edge so users see there is more to scroll. */
502
- .overflow-scroll {
503
- mask-image: linear-gradient(
504
- to right,
505
- transparent 0,
506
- black 0.5rem,
507
- black calc(100% - 1rem),
508
- transparent 100%
509
- );
510
- -webkit-mask-image: linear-gradient(
511
- to right,
512
- transparent 0,
513
- black 0.5rem,
514
- black calc(100% - 1rem),
515
- transparent 100%
516
- );
517
- }
518
- `
519
- ];
520
- __decorateClass([
521
- property({ attribute: false })
522
- ], RoxyAshtakavargaGrid.prototype, "data", 2);
523
- __decorateClass([
524
- state()
525
- ], RoxyAshtakavargaGrid.prototype, "activeTab", 2);
526
- RoxyAshtakavargaGrid = __decorateClass([
527
- customElement("roxy-ashtakavarga-grid")
528
- ], RoxyAshtakavargaGrid);
529
- export {
530
- RoxyAshtakavargaGrid
531
- };
1
+ var m=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var c=(o,a,t,e)=>{for(var r=e>1?void 0:e?g(a,t):a,i=o.length-1,s;i>=0;i--)(s=o[i])&&(r=(e?s(a,t,r):s(r))||r);return e&&r&&m(a,t,r),r};import{css as S,html as n,LitElement as w,nothing as k}from"lit";import{customElement as T,property as A,state as $}from"lit/decorators.js";var p={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"};var v=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],R=v.map(o=>o.toLowerCase());import{css as f}from"lit";var b=f`:host{font-family:var(--roxy-font-sans,system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);color:var(--roxy-fg,#0a0a0a);font-size:var(--roxy-text-base,1rem);line-height:var(--roxy-leading-normal,1.5);animation:roxy-fade-in var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,cubic-bezier(.4, 0, .2, 1)) both;background:0 0;display:block;container-type:inline-size}*,:before,:after{box-sizing:border-box}@keyframes roxy-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){:host{animation:none}}.roxy-skeleton{background:linear-gradient(90deg, var(--roxy-border,#e4e4e7) 0%, color-mix(in srgb, var(--roxy-border,#e4e4e7) 60%, transparent) 50%, var(--roxy-border,#e4e4e7) 100%);border-radius:var(--roxy-radius-md,8px);background-size:200% 100%;animation:1.4s ease-in-out infinite roxy-shimmer}@keyframes roxy-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.roxy-skeleton{animation:none}}.roxy-empty{padding:var(--roxy-space-lg,1.5rem);color:var(--roxy-muted,#71717a);text-align:center;font-size:var(--roxy-text-sm,.875rem)}:host(:focus-within) .roxy-card{outline:2px solid var(--roxy-ring,#f59e0b66);outline-offset:2px}:host{font-variant-emoji:text}`;var x="roxy-data";function y(o){return o.nodeName==="SCRIPT"&&o.getAttribute("type")==="application/json"}var h=class{constructor(a){this.host=a,a.addController(this)}hostConnected(){if(this.host.data!=null)return;let a=this.read();a!==void 0&&(this.host.data=a,this.host.requestUpdate())}read(){let a=this.findInlineScript();return a?this.parse(a.textContent):void 0}findInlineScript(){for(let a of Array.from(this.host.children))if(y(a)&&a.classList.contains(x))return a;return null}parse(a){if(a?.trim())try{return JSON.parse(a)}catch{return}}};var L={sarva:"Sarvashtakavarga",bhinna:"Bhinnashtakavarga",pinda:"Shodhya Pinda"},l=["sarva","bhinna","pinda"],d=class extends w{constructor(){super();this.data=null;this.activeTab="sarva";new h(this)}render(){if(!this.data)return n`<div class="roxy-empty" role="status">No ashtakavarga data</div>`;let t=this.data.signs??[];return n`<div class="wrap" aria-label="Ashtakavarga grid"><div class="head"><h2 class="title">Ashtakavarga</h2>${t.length?n`<p class="subtitle">${t.length} signs</p>`:k}</div><div class="tablist" role="tablist" aria-label="Ashtakavarga views" @keydown="${this.onTabKeyDown}">${l.map(e=>n`<button class="tab" role="tab" id="tab-${e}" aria-selected="${this.activeTab===e?"true":"false"}" aria-controls="panel-${e}" tabindex="${this.activeTab===e?"0":"-1"}" @click="${()=>{this.activeTab=e}}">${L[e]}</button>`)}</div><div id="panel-${this.activeTab}" role="tabpanel" aria-labelledby="tab-${this.activeTab}">${this.activeTab==="sarva"?this.renderSarva(t):this.activeTab==="bhinna"?this.renderBhinna(t):this.renderPinda()}</div></div>`}onTabKeyDown(t){let e=l.indexOf(this.activeTab);t.key==="ArrowRight"?(t.preventDefault(),this.activeTab=l[(e+1)%l.length],this.focusActiveTab()):t.key==="ArrowLeft"&&(t.preventDefault(),this.activeTab=l[(e-1+l.length)%l.length],this.focusActiveTab())}focusActiveTab(){requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${this.activeTab}`)?.focus()})}bhinnaHeat(t){return t<=1?"heat-1":t<=2?"heat-2":t<=3?"heat-3":t<=4?"heat-4":t<=5?"heat-5":t<=6?"heat-6":"heat-7"}sarvaHeat(t){return t<=18?"heat-1":t<=23?"heat-2":t<=28?"heat-3":t<=32?"heat-4":t<=37?"heat-5":t<=42?"heat-6":"heat-7"}renderSarva(t){let e=this.data.sarvashtakavarga;return e?n`<div class="overflow-scroll"><table aria-label="Sarvashtakavarga bindu counts per sign"><thead><tr><th scope="col">Sign</th><th scope="col">Bindus</th></tr></thead><tbody>${t.map((r,i)=>{let s=e.bindus[i]??0,u=this.sarvaHeat(s);return n`<tr><td><div class="planet-cell"><span class="glyph" aria-hidden="true">${p[r]??""}</span> ${r}</div></td><td class="${`heat-cell ${u}`}">${s}</td></tr>`})}</tbody><tfoot><tr class="total-row"><td>Total</td><td>${e.total}</td></tr></tfoot></table></div>`:n`<p class="roxy-empty">No sarvashtakavarga data</p>`}renderBhinna(t){let e=this.data.bhinnashtakavarga;return e?.length?n`<div class="overflow-scroll"><table class="bhinna-table" aria-label="Bhinnashtakavarga planet-by-sign grid"><thead><tr><th scope="col">Planet</th>${t.map(r=>n`<th scope="col" title="${r}">${p[r]??r.slice(0,2)}</th>`)}<th scope="col">Total</th></tr></thead><tbody>${e.map(r=>n`<tr><td>${r.planet}</td>${r.bindus.map(i=>{let s=this.bhinnaHeat(i);return n`<td class="${`heat-cell ${s}`}">${i}</td>`})}<td>${r.total}</td></tr>`)}</tbody></table></div>`:n`<p class="roxy-empty">No bhinnashtakavarga data</p>`}renderPinda(){let t=this.data.shodhyaPinda;return t?.length?n`<div class="overflow-scroll"><table aria-label="Shodhya Pinda planet strength scores"><thead><tr><th scope="col">Planet</th><th scope="col">Rashi Pinda</th><th scope="col">Graha Pinda</th><th scope="col">Shodhya Pinda</th></tr></thead><tbody>${t.map(e=>n`<tr><td>${e.planet}</td><td>${e.rashiPinda}</td><td>${e.grahaPinda}</td><td>${e.shodhyaPinda}</td></tr>`)}</tbody></table></div>`:n`<p class="roxy-empty">No shodhya pinda data</p>`}};d.styles=[b,S`.wrap{gap:var(--roxy-space-md,1rem);display:grid}.head{justify-content:space-between;align-items:baseline;gap:var(--roxy-space-md,1rem);flex-wrap:wrap;display:flex}.title{font-size:var(--roxy-text-lg,1.125rem);font-weight:var(--roxy-weight-bold,600);margin:0}.subtitle{color:var(--roxy-muted,#71717a);font-size:var(--roxy-text-sm,.875rem);margin:0}.tablist{border-bottom:2px solid var(--roxy-border,#e4e4e7);gap:2px;display:flex}.tab{padding:var(--roxy-space-xs,.25rem) var(--roxy-space-md,1rem);font-size:var(--roxy-text-sm,.875rem);cursor:pointer;color:var(--roxy-muted,#71717a);transition:color var(--roxy-motion-duration,.2s) var(--roxy-motion-easing,ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;font-family:inherit}.tab[aria-selected=true]{color:var(--roxy-accent-fg,#b45309);border-bottom-color:var(--roxy-accent,#f59e0b);font-weight:var(--roxy-weight-bold,600)}.tab:hover:not([aria-selected=true]){color:var(--roxy-fg,#0a0a0a)}.overflow-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--roxy-text-sm,.875rem)}th,td{padding:var(--roxy-space-sm,.5rem);border-bottom:1px solid var(--roxy-border,#e4e4e7);text-align:center}th{color:var(--roxy-muted,#71717a);font-weight:var(--roxy-weight-bold,600);text-transform:uppercase;font-size:var(--roxy-text-xs,.75rem);letter-spacing:.06em}td:first-child,th:first-child{text-align:left}.glyph{margin-right:3px;font-size:1.1em;line-height:1}.planet-cell{white-space:nowrap;align-items:center;gap:4px;display:flex}.total-row td{font-weight:var(--roxy-weight-bold,600);border-top:2px solid var(--roxy-border,#e4e4e7);border-bottom:none}.heat-cell{border-radius:var(--roxy-radius-sm,4px);font-weight:var(--roxy-weight-bold,600);font-variant-numeric:tabular-nums;min-width:2rem;color:var(--roxy-fg,currentColor)}.heat-1{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 6%, transparent)}.heat-2{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 14%, transparent)}.heat-3{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 26%, transparent)}.heat-4{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 40%, transparent)}.heat-5{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 55%, transparent)}.heat-6{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 72%, transparent)}.heat-7{background:color-mix(in srgb, var(--roxy-heat,#ef4444) 90%, transparent)}.bhinna-table th:first-child,.bhinna-table td:first-child{min-width:5rem}@container (width<=480px){.bhinna-table th,.bhinna-table td{font-size:var(--roxy-text-xs,.75rem);padding:.3rem .35rem}.bhinna-table th:first-child,.bhinna-table td:first-child{min-width:3.5rem}.heat-cell{min-width:1.5rem}}.overflow-scroll{-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 .5rem calc(100% - 1rem),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 .5rem calc(100% - 1rem),#0000 100%)}`],c([A({attribute:!1})],d.prototype,"data",2),c([$()],d.prototype,"activeTab",2),d=c([T("roxy-ashtakavarga-grid")],d);export{d as RoxyAshtakavargaGrid};
532
2
  //# sourceMappingURL=ashtakavarga-grid.js.map