@tartaguti/ui-components 0.0.0-stage → 0.2.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 (392) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/LICENSE +21 -0
  3. package/README.md +192 -2
  4. package/THIRD-PARTY-NOTICES.md +29 -0
  5. package/custom-elements.json +16899 -0
  6. package/dist/accordion/tt-accordion-item.d.ts +32 -0
  7. package/dist/accordion/tt-accordion-item.d.ts.map +1 -0
  8. package/dist/accordion/tt-accordion-item.js +247 -0
  9. package/dist/accordion/tt-accordion-item.js.map +1 -0
  10. package/dist/accordion/tt-accordion.d.ts +28 -0
  11. package/dist/accordion/tt-accordion.d.ts.map +1 -0
  12. package/dist/accordion/tt-accordion.js +148 -0
  13. package/dist/accordion/tt-accordion.js.map +1 -0
  14. package/dist/bento/tt-bento-item.d.ts +35 -0
  15. package/dist/bento/tt-bento-item.d.ts.map +1 -0
  16. package/dist/bento/tt-bento-item.js +201 -0
  17. package/dist/bento/tt-bento-item.js.map +1 -0
  18. package/dist/bento/tt-bento.d.ts +25 -0
  19. package/dist/bento/tt-bento.d.ts.map +1 -0
  20. package/dist/bento/tt-bento.js +314 -0
  21. package/dist/bento/tt-bento.js.map +1 -0
  22. package/dist/floating.d.ts +61 -0
  23. package/dist/floating.d.ts.map +1 -0
  24. package/dist/floating.js +120 -0
  25. package/dist/floating.js.map +1 -0
  26. package/dist/index.d.ts +92 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +96 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/interaction/tt-draggable.d.ts +29 -0
  31. package/dist/interaction/tt-draggable.d.ts.map +1 -0
  32. package/dist/interaction/tt-draggable.js +66 -0
  33. package/dist/interaction/tt-draggable.js.map +1 -0
  34. package/dist/interaction/tt-droppable.d.ts +37 -0
  35. package/dist/interaction/tt-droppable.d.ts.map +1 -0
  36. package/dist/interaction/tt-droppable.js +108 -0
  37. package/dist/interaction/tt-droppable.js.map +1 -0
  38. package/dist/interaction/tt-resizable.d.ts +45 -0
  39. package/dist/interaction/tt-resizable.d.ts.map +1 -0
  40. package/dist/interaction/tt-resizable.js +210 -0
  41. package/dist/interaction/tt-resizable.js.map +1 -0
  42. package/dist/interaction/tt-reveal.d.ts +54 -0
  43. package/dist/interaction/tt-reveal.d.ts.map +1 -0
  44. package/dist/interaction/tt-reveal.js +302 -0
  45. package/dist/interaction/tt-reveal.js.map +1 -0
  46. package/dist/motion.d.ts +8 -0
  47. package/dist/motion.d.ts.map +1 -0
  48. package/dist/motion.js +49 -0
  49. package/dist/motion.js.map +1 -0
  50. package/dist/overlay.d.ts +7 -0
  51. package/dist/overlay.d.ts.map +1 -0
  52. package/dist/overlay.js +121 -0
  53. package/dist/overlay.js.map +1 -0
  54. package/dist/safe-url.d.ts +14 -0
  55. package/dist/safe-url.d.ts.map +1 -0
  56. package/dist/safe-url.js +46 -0
  57. package/dist/safe-url.js.map +1 -0
  58. package/dist/scroll-lock.d.ts +22 -0
  59. package/dist/scroll-lock.d.ts.map +1 -0
  60. package/dist/scroll-lock.js +56 -0
  61. package/dist/scroll-lock.js.map +1 -0
  62. package/dist/sidebar/tt-menu-group.d.ts +69 -0
  63. package/dist/sidebar/tt-menu-group.d.ts.map +1 -0
  64. package/dist/sidebar/tt-menu-group.js +358 -0
  65. package/dist/sidebar/tt-menu-group.js.map +1 -0
  66. package/dist/sidebar/tt-menu-item.d.ts +70 -0
  67. package/dist/sidebar/tt-menu-item.d.ts.map +1 -0
  68. package/dist/sidebar/tt-menu-item.js +502 -0
  69. package/dist/sidebar/tt-menu-item.js.map +1 -0
  70. package/dist/sidebar/tt-sidebar-footer.d.ts +39 -0
  71. package/dist/sidebar/tt-sidebar-footer.d.ts.map +1 -0
  72. package/dist/sidebar/tt-sidebar-footer.js +205 -0
  73. package/dist/sidebar/tt-sidebar-footer.js.map +1 -0
  74. package/dist/sidebar/tt-sidebar-header.d.ts +31 -0
  75. package/dist/sidebar/tt-sidebar-header.d.ts.map +1 -0
  76. package/dist/sidebar/tt-sidebar-header.js +150 -0
  77. package/dist/sidebar/tt-sidebar-header.js.map +1 -0
  78. package/dist/sidebar/tt-sidebar.d.ts +72 -0
  79. package/dist/sidebar/tt-sidebar.d.ts.map +1 -0
  80. package/dist/sidebar/tt-sidebar.js +539 -0
  81. package/dist/sidebar/tt-sidebar.js.map +1 -0
  82. package/dist/sr-only.d.ts +15 -0
  83. package/dist/sr-only.d.ts.map +1 -0
  84. package/dist/sr-only.js +27 -0
  85. package/dist/sr-only.js.map +1 -0
  86. package/dist/tokens.css +1124 -0
  87. package/dist/tt-alert.d.ts +26 -0
  88. package/dist/tt-alert.d.ts.map +1 -0
  89. package/dist/tt-alert.js +165 -0
  90. package/dist/tt-alert.js.map +1 -0
  91. package/dist/tt-aspect-ratio.d.ts +40 -0
  92. package/dist/tt-aspect-ratio.d.ts.map +1 -0
  93. package/dist/tt-aspect-ratio.js +98 -0
  94. package/dist/tt-aspect-ratio.js.map +1 -0
  95. package/dist/tt-auth.d.ts +75 -0
  96. package/dist/tt-auth.d.ts.map +1 -0
  97. package/dist/tt-auth.js +520 -0
  98. package/dist/tt-auth.js.map +1 -0
  99. package/dist/tt-avatar.d.ts +26 -0
  100. package/dist/tt-avatar.d.ts.map +1 -0
  101. package/dist/tt-avatar.js +169 -0
  102. package/dist/tt-avatar.js.map +1 -0
  103. package/dist/tt-badge.d.ts +36 -0
  104. package/dist/tt-badge.d.ts.map +1 -0
  105. package/dist/tt-badge.js +135 -0
  106. package/dist/tt-badge.js.map +1 -0
  107. package/dist/tt-breadcrumbs.d.ts +22 -0
  108. package/dist/tt-breadcrumbs.d.ts.map +1 -0
  109. package/dist/tt-breadcrumbs.js +144 -0
  110. package/dist/tt-breadcrumbs.js.map +1 -0
  111. package/dist/tt-button-group.d.ts +32 -0
  112. package/dist/tt-button-group.d.ts.map +1 -0
  113. package/dist/tt-button-group.js +132 -0
  114. package/dist/tt-button-group.js.map +1 -0
  115. package/dist/tt-button.d.ts +31 -0
  116. package/dist/tt-button.d.ts.map +1 -0
  117. package/dist/tt-button.js +483 -0
  118. package/dist/tt-button.js.map +1 -0
  119. package/dist/tt-card.d.ts +26 -0
  120. package/dist/tt-card.d.ts.map +1 -0
  121. package/dist/tt-card.js +429 -0
  122. package/dist/tt-card.js.map +1 -0
  123. package/dist/tt-chart.d.ts +36 -0
  124. package/dist/tt-chart.d.ts.map +1 -0
  125. package/dist/tt-chart.js +332 -0
  126. package/dist/tt-chart.js.map +1 -0
  127. package/dist/tt-checkbox-group.d.ts +38 -0
  128. package/dist/tt-checkbox-group.d.ts.map +1 -0
  129. package/dist/tt-checkbox-group.js +243 -0
  130. package/dist/tt-checkbox-group.js.map +1 -0
  131. package/dist/tt-checkbox.d.ts +35 -0
  132. package/dist/tt-checkbox.d.ts.map +1 -0
  133. package/dist/tt-checkbox.js +354 -0
  134. package/dist/tt-checkbox.js.map +1 -0
  135. package/dist/tt-code-block.d.ts +37 -0
  136. package/dist/tt-code-block.d.ts.map +1 -0
  137. package/dist/tt-code-block.js +409 -0
  138. package/dist/tt-code-block.js.map +1 -0
  139. package/dist/tt-collapsible.d.ts +71 -0
  140. package/dist/tt-collapsible.d.ts.map +1 -0
  141. package/dist/tt-collapsible.js +206 -0
  142. package/dist/tt-collapsible.js.map +1 -0
  143. package/dist/tt-combobox.d.ts +107 -0
  144. package/dist/tt-combobox.d.ts.map +1 -0
  145. package/dist/tt-combobox.js +816 -0
  146. package/dist/tt-combobox.js.map +1 -0
  147. package/dist/tt-company-card.d.ts +30 -0
  148. package/dist/tt-company-card.d.ts.map +1 -0
  149. package/dist/tt-company-card.js +382 -0
  150. package/dist/tt-company-card.js.map +1 -0
  151. package/dist/tt-comparison-table.d.ts +59 -0
  152. package/dist/tt-comparison-table.d.ts.map +1 -0
  153. package/dist/tt-comparison-table.js +441 -0
  154. package/dist/tt-comparison-table.js.map +1 -0
  155. package/dist/tt-component-doc.d.ts +63 -0
  156. package/dist/tt-component-doc.d.ts.map +1 -0
  157. package/dist/tt-component-doc.js +585 -0
  158. package/dist/tt-component-doc.js.map +1 -0
  159. package/dist/tt-confirm.d.ts +45 -0
  160. package/dist/tt-confirm.d.ts.map +1 -0
  161. package/dist/tt-confirm.js +151 -0
  162. package/dist/tt-confirm.js.map +1 -0
  163. package/dist/tt-contact-list.d.ts +18 -0
  164. package/dist/tt-contact-list.d.ts.map +1 -0
  165. package/dist/tt-contact-list.js +101 -0
  166. package/dist/tt-contact-list.js.map +1 -0
  167. package/dist/tt-copy-button.d.ts +25 -0
  168. package/dist/tt-copy-button.d.ts.map +1 -0
  169. package/dist/tt-copy-button.js +194 -0
  170. package/dist/tt-copy-button.js.map +1 -0
  171. package/dist/tt-data-table.d.ts +96 -0
  172. package/dist/tt-data-table.d.ts.map +1 -0
  173. package/dist/tt-data-table.js +812 -0
  174. package/dist/tt-data-table.js.map +1 -0
  175. package/dist/tt-divider.d.ts +19 -0
  176. package/dist/tt-divider.d.ts.map +1 -0
  177. package/dist/tt-divider.js +104 -0
  178. package/dist/tt-divider.js.map +1 -0
  179. package/dist/tt-drawer.d.ts +38 -0
  180. package/dist/tt-drawer.d.ts.map +1 -0
  181. package/dist/tt-drawer.js +433 -0
  182. package/dist/tt-drawer.js.map +1 -0
  183. package/dist/tt-dropdown-menu.d.ts +57 -0
  184. package/dist/tt-dropdown-menu.d.ts.map +1 -0
  185. package/dist/tt-dropdown-menu.js +631 -0
  186. package/dist/tt-dropdown-menu.js.map +1 -0
  187. package/dist/tt-empty-state.d.ts +13 -0
  188. package/dist/tt-empty-state.d.ts.map +1 -0
  189. package/dist/tt-empty-state.js +94 -0
  190. package/dist/tt-empty-state.js.map +1 -0
  191. package/dist/tt-example.d.ts +33 -0
  192. package/dist/tt-example.d.ts.map +1 -0
  193. package/dist/tt-example.js +250 -0
  194. package/dist/tt-example.js.map +1 -0
  195. package/dist/tt-file-upload.d.ts +85 -0
  196. package/dist/tt-file-upload.d.ts.map +1 -0
  197. package/dist/tt-file-upload.js +662 -0
  198. package/dist/tt-file-upload.js.map +1 -0
  199. package/dist/tt-filter.d.ts +62 -0
  200. package/dist/tt-filter.d.ts.map +1 -0
  201. package/dist/tt-filter.js +393 -0
  202. package/dist/tt-filter.js.map +1 -0
  203. package/dist/tt-form.d.ts +33 -0
  204. package/dist/tt-form.d.ts.map +1 -0
  205. package/dist/tt-form.js +202 -0
  206. package/dist/tt-form.js.map +1 -0
  207. package/dist/tt-grid.d.ts +22 -0
  208. package/dist/tt-grid.d.ts.map +1 -0
  209. package/dist/tt-grid.js +106 -0
  210. package/dist/tt-grid.js.map +1 -0
  211. package/dist/tt-icon.d.ts +20 -0
  212. package/dist/tt-icon.d.ts.map +1 -0
  213. package/dist/tt-icon.js +510 -0
  214. package/dist/tt-icon.js.map +1 -0
  215. package/dist/tt-image.d.ts +59 -0
  216. package/dist/tt-image.d.ts.map +1 -0
  217. package/dist/tt-image.js +314 -0
  218. package/dist/tt-image.js.map +1 -0
  219. package/dist/tt-inbox.d.ts +45 -0
  220. package/dist/tt-inbox.d.ts.map +1 -0
  221. package/dist/tt-inbox.js +275 -0
  222. package/dist/tt-inbox.js.map +1 -0
  223. package/dist/tt-input.d.ts +43 -0
  224. package/dist/tt-input.d.ts.map +1 -0
  225. package/dist/tt-input.js +476 -0
  226. package/dist/tt-input.js.map +1 -0
  227. package/dist/tt-kbd.d.ts +39 -0
  228. package/dist/tt-kbd.d.ts.map +1 -0
  229. package/dist/tt-kbd.js +145 -0
  230. package/dist/tt-kbd.js.map +1 -0
  231. package/dist/tt-key-values.d.ts +17 -0
  232. package/dist/tt-key-values.d.ts.map +1 -0
  233. package/dist/tt-key-values.js +126 -0
  234. package/dist/tt-key-values.js.map +1 -0
  235. package/dist/tt-knowledge-doc.d.ts +24 -0
  236. package/dist/tt-knowledge-doc.d.ts.map +1 -0
  237. package/dist/tt-knowledge-doc.js +120 -0
  238. package/dist/tt-knowledge-doc.js.map +1 -0
  239. package/dist/tt-layout.d.ts +36 -0
  240. package/dist/tt-layout.d.ts.map +1 -0
  241. package/dist/tt-layout.js +318 -0
  242. package/dist/tt-layout.js.map +1 -0
  243. package/dist/tt-modal.d.ts +32 -0
  244. package/dist/tt-modal.d.ts.map +1 -0
  245. package/dist/tt-modal.js +553 -0
  246. package/dist/tt-modal.js.map +1 -0
  247. package/dist/tt-navbar.d.ts +33 -0
  248. package/dist/tt-navbar.d.ts.map +1 -0
  249. package/dist/tt-navbar.js +390 -0
  250. package/dist/tt-navbar.js.map +1 -0
  251. package/dist/tt-page-header.d.ts +28 -0
  252. package/dist/tt-page-header.d.ts.map +1 -0
  253. package/dist/tt-page-header.js +166 -0
  254. package/dist/tt-page-header.js.map +1 -0
  255. package/dist/tt-page.d.ts +14 -0
  256. package/dist/tt-page.d.ts.map +1 -0
  257. package/dist/tt-page.js +163 -0
  258. package/dist/tt-page.js.map +1 -0
  259. package/dist/tt-pagination.d.ts +27 -0
  260. package/dist/tt-pagination.d.ts.map +1 -0
  261. package/dist/tt-pagination.js +194 -0
  262. package/dist/tt-pagination.js.map +1 -0
  263. package/dist/tt-preview.d.ts +11 -0
  264. package/dist/tt-preview.d.ts.map +1 -0
  265. package/dist/tt-preview.js +68 -0
  266. package/dist/tt-preview.js.map +1 -0
  267. package/dist/tt-product.d.ts +40 -0
  268. package/dist/tt-product.d.ts.map +1 -0
  269. package/dist/tt-product.js +590 -0
  270. package/dist/tt-product.js.map +1 -0
  271. package/dist/tt-profile-card.d.ts +23 -0
  272. package/dist/tt-profile-card.d.ts.map +1 -0
  273. package/dist/tt-profile-card.js +199 -0
  274. package/dist/tt-profile-card.js.map +1 -0
  275. package/dist/tt-progress.d.ts +26 -0
  276. package/dist/tt-progress.d.ts.map +1 -0
  277. package/dist/tt-progress.js +156 -0
  278. package/dist/tt-progress.js.map +1 -0
  279. package/dist/tt-quantity.d.ts +36 -0
  280. package/dist/tt-quantity.d.ts.map +1 -0
  281. package/dist/tt-quantity.js +396 -0
  282. package/dist/tt-quantity.js.map +1 -0
  283. package/dist/tt-radio-group.d.ts +50 -0
  284. package/dist/tt-radio-group.d.ts.map +1 -0
  285. package/dist/tt-radio-group.js +372 -0
  286. package/dist/tt-radio-group.js.map +1 -0
  287. package/dist/tt-rating.d.ts +54 -0
  288. package/dist/tt-rating.d.ts.map +1 -0
  289. package/dist/tt-rating.js +312 -0
  290. package/dist/tt-rating.js.map +1 -0
  291. package/dist/tt-search.d.ts +47 -0
  292. package/dist/tt-search.d.ts.map +1 -0
  293. package/dist/tt-search.js +360 -0
  294. package/dist/tt-search.js.map +1 -0
  295. package/dist/tt-section.d.ts +13 -0
  296. package/dist/tt-section.d.ts.map +1 -0
  297. package/dist/tt-section.js +98 -0
  298. package/dist/tt-section.js.map +1 -0
  299. package/dist/tt-select.d.ts +62 -0
  300. package/dist/tt-select.d.ts.map +1 -0
  301. package/dist/tt-select.js +662 -0
  302. package/dist/tt-select.js.map +1 -0
  303. package/dist/tt-skeleton.d.ts +20 -0
  304. package/dist/tt-skeleton.d.ts.map +1 -0
  305. package/dist/tt-skeleton.js +143 -0
  306. package/dist/tt-skeleton.js.map +1 -0
  307. package/dist/tt-slider.d.ts +74 -0
  308. package/dist/tt-slider.d.ts.map +1 -0
  309. package/dist/tt-slider.js +426 -0
  310. package/dist/tt-slider.js.map +1 -0
  311. package/dist/tt-social-links.d.ts +34 -0
  312. package/dist/tt-social-links.d.ts.map +1 -0
  313. package/dist/tt-social-links.js +242 -0
  314. package/dist/tt-social-links.js.map +1 -0
  315. package/dist/tt-sparkline.d.ts +19 -0
  316. package/dist/tt-sparkline.d.ts.map +1 -0
  317. package/dist/tt-sparkline.js +191 -0
  318. package/dist/tt-sparkline.js.map +1 -0
  319. package/dist/tt-spinner.d.ts +19 -0
  320. package/dist/tt-spinner.d.ts.map +1 -0
  321. package/dist/tt-spinner.js +93 -0
  322. package/dist/tt-spinner.js.map +1 -0
  323. package/dist/tt-stack.d.ts +42 -0
  324. package/dist/tt-stack.d.ts.map +1 -0
  325. package/dist/tt-stack.js +158 -0
  326. package/dist/tt-stack.js.map +1 -0
  327. package/dist/tt-stat.d.ts +17 -0
  328. package/dist/tt-stat.d.ts.map +1 -0
  329. package/dist/tt-stat.js +134 -0
  330. package/dist/tt-stat.js.map +1 -0
  331. package/dist/tt-switch.d.ts +39 -0
  332. package/dist/tt-switch.d.ts.map +1 -0
  333. package/dist/tt-switch.js +254 -0
  334. package/dist/tt-switch.js.map +1 -0
  335. package/dist/tt-switcher.d.ts +23 -0
  336. package/dist/tt-switcher.d.ts.map +1 -0
  337. package/dist/tt-switcher.js +203 -0
  338. package/dist/tt-switcher.js.map +1 -0
  339. package/dist/tt-table-cell.d.ts +26 -0
  340. package/dist/tt-table-cell.d.ts.map +1 -0
  341. package/dist/tt-table-cell.js +121 -0
  342. package/dist/tt-table-cell.js.map +1 -0
  343. package/dist/tt-table-row.d.ts +31 -0
  344. package/dist/tt-table-row.d.ts.map +1 -0
  345. package/dist/tt-table-row.js +72 -0
  346. package/dist/tt-table-row.js.map +1 -0
  347. package/dist/tt-table.d.ts +44 -0
  348. package/dist/tt-table.d.ts.map +1 -0
  349. package/dist/tt-table.js +270 -0
  350. package/dist/tt-table.js.map +1 -0
  351. package/dist/tt-tabs.d.ts +31 -0
  352. package/dist/tt-tabs.d.ts.map +1 -0
  353. package/dist/tt-tabs.js +223 -0
  354. package/dist/tt-tabs.js.map +1 -0
  355. package/dist/tt-tag-list.d.ts +19 -0
  356. package/dist/tt-tag-list.d.ts.map +1 -0
  357. package/dist/tt-tag-list.js +136 -0
  358. package/dist/tt-tag-list.js.map +1 -0
  359. package/dist/tt-text.d.ts +52 -0
  360. package/dist/tt-text.d.ts.map +1 -0
  361. package/dist/tt-text.js +337 -0
  362. package/dist/tt-text.js.map +1 -0
  363. package/dist/tt-textarea.d.ts +43 -0
  364. package/dist/tt-textarea.d.ts.map +1 -0
  365. package/dist/tt-textarea.js +356 -0
  366. package/dist/tt-textarea.js.map +1 -0
  367. package/dist/tt-thread.d.ts +62 -0
  368. package/dist/tt-thread.d.ts.map +1 -0
  369. package/dist/tt-thread.js +374 -0
  370. package/dist/tt-thread.js.map +1 -0
  371. package/dist/tt-toast.d.ts +49 -0
  372. package/dist/tt-toast.d.ts.map +1 -0
  373. package/dist/tt-toast.js +440 -0
  374. package/dist/tt-toast.js.map +1 -0
  375. package/dist/tt-toggle-group.d.ts +73 -0
  376. package/dist/tt-toggle-group.d.ts.map +1 -0
  377. package/dist/tt-toggle-group.js +273 -0
  378. package/dist/tt-toggle-group.js.map +1 -0
  379. package/dist/tt-toggle.d.ts +54 -0
  380. package/dist/tt-toggle.d.ts.map +1 -0
  381. package/dist/tt-toggle.js +232 -0
  382. package/dist/tt-toggle.js.map +1 -0
  383. package/dist/tt-toolbar.d.ts +26 -0
  384. package/dist/tt-toolbar.d.ts.map +1 -0
  385. package/dist/tt-toolbar.js +164 -0
  386. package/dist/tt-toolbar.js.map +1 -0
  387. package/dist/tt-tooltip.d.ts +42 -0
  388. package/dist/tt-tooltip.d.ts.map +1 -0
  389. package/dist/tt-tooltip.js +299 -0
  390. package/dist/tt-tooltip.js.map +1 -0
  391. package/package.json +84 -4
  392. package/vscode.html-custom-data.json +2911 -0
@@ -0,0 +1,332 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css } from "lit";
8
+ import { customElement, property, query } from "lit/decorators.js";
9
+ import { Chart, registerables } from "chart.js";
10
+ import { srOnly } from "./sr-only.js";
11
+ // Registered once for the module, not per instance.
12
+ Chart.register(...registerables);
13
+ let TTChart = class TTChart extends LitElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.type = "bar";
17
+ this.labels = [];
18
+ this.series = [];
19
+ this.legend = false;
20
+ this.stacked = false;
21
+ // Chart.js draws to a canvas, which is one opaque box to a screen
22
+ // reader. This is the only description it will ever get.
23
+ this.label = "";
24
+ /*
25
+ Frames spent waiting for the design tokens to become readable. Bounded
26
+ so a genuinely missing stylesheet degrades to a drawn chart rather
27
+ than an empty box that retries forever.
28
+ */
29
+ this.waited = 0;
30
+ }
31
+ token(name) {
32
+ return getComputedStyle(this).getPropertyValue(name).trim();
33
+ }
34
+ get palette() {
35
+ return [
36
+ this.token("--tt-chart-1"),
37
+ this.token("--tt-chart-2"),
38
+ this.token("--tt-chart-3"),
39
+ this.token("--tt-chart-4"),
40
+ this.token("--tt-chart-5"),
41
+ ];
42
+ }
43
+ connectedCallback() {
44
+ super.connectedCallback();
45
+ // Watch the dark class and the theme preset on <html> and repaint.
46
+ // Canvas will not restyle itself the way inherited custom properties
47
+ // would, so a theme switch left the chart in the old colours.
48
+ this.themeObserver = new MutationObserver(() => this.rebuild());
49
+ this.themeObserver.observe(document.documentElement, {
50
+ attributes: true,
51
+ attributeFilter: ["class", "data-theme"],
52
+ });
53
+ /*
54
+ Reconnected after a move: drag and drop, or reparenting into a modal.
55
+ disconnectedCallback destroyed the chart, and firstUpdated, which
56
+ built it, only ever runs once per element. Without this the canvas
57
+ stays blank for the rest of the element's life. hasUpdated is false
58
+ on the very first connect, which firstUpdated already covers.
59
+ */
60
+ if (this.hasUpdated) {
61
+ this.rebuild();
62
+ this.observeSize();
63
+ }
64
+ }
65
+ disconnectedCallback() {
66
+ this.themeObserver?.disconnect();
67
+ this.resizeObserver?.disconnect();
68
+ // Chart.js holds listeners and an animation loop. Without destroy()
69
+ // every navigation leaks one chart.
70
+ this.chart?.destroy();
71
+ this.chart = undefined;
72
+ super.disconnectedCallback();
73
+ }
74
+ /*
75
+ Size only. The first build happens in updated(), which runs right
76
+ after this in the same cycle and already sees every property as
77
+ changed. Building here as well created a chart and destroyed it again
78
+ on every mount.
79
+ */
80
+ firstUpdated() {
81
+ this.observeSize();
82
+ }
83
+ // Chart.js measures its container. Inside a shadow root, inside flex
84
+ // or grid, that measurement is often wrong on first paint, so drive
85
+ // resizing explicitly instead of trusting responsive: true.
86
+ observeSize() {
87
+ this.resizeObserver?.disconnect();
88
+ this.resizeObserver = new ResizeObserver(() => this.chart?.resize());
89
+ this.resizeObserver.observe(this);
90
+ }
91
+ updated(changed) {
92
+ if (changed.has("type") ||
93
+ changed.has("labels") ||
94
+ changed.has("series") ||
95
+ changed.has("legend") ||
96
+ changed.has("stacked")) {
97
+ this.rebuild();
98
+ }
99
+ }
100
+ rebuild() {
101
+ // Also reached from a pending animation frame. A chart built after the
102
+ // element left the page is never destroyed: disconnectedCallback has
103
+ // already run, so its Chart.js listeners and animation loop leak.
104
+ if (!this.canvas || !this.isConnected)
105
+ return;
106
+ const palette = this.palette;
107
+ /*
108
+ DO NOT PAINT BEFORE THE TOKENS RESOLVE.
109
+
110
+ A canvas is pixels. Whatever colour it is given is baked in, and it
111
+ will not restyle itself when a stylesheet arrives later the way
112
+ inherited custom properties would. Chart.js also substitutes its own
113
+ blue-red-orange defaults for any colour it is handed as an empty
114
+ string, so building early does not leave a chart waiting to be
115
+ corrected, it leaves a confidently wrong one.
116
+
117
+ And a stylesheet really can arrive after the first paint: a dev
118
+ server injects CSS at runtime, and a late <link> does the same in
119
+ production. So wait a frame and look again.
120
+
121
+ This is what made every chart render in Chart.js blue, and what made
122
+ a doughnut come out in one flat colour: its per-slice array of empty
123
+ strings is not a value Chart.js substitutes a palette for.
124
+ */
125
+ if (!palette[0] && this.waited < 30) {
126
+ this.waited += 1;
127
+ requestAnimationFrame(() => this.rebuild());
128
+ return;
129
+ }
130
+ this.chart?.destroy();
131
+ const grid = this.token("--tt-border");
132
+ const text = this.token("--tt-muted-foreground");
133
+ const surface = this.token("--tt-popover");
134
+ const surfaceText = this.token("--tt-popover-foreground");
135
+ // What a pie's slices are cut apart against. The card, not the
136
+ // popover: this is the surface the chart SITS on, not the one its
137
+ // tooltip is drawn on, and the two only happen to match today.
138
+ const sliceGap = this.token("--tt-card");
139
+ /*
140
+ The typeface, resolved the same way as the colours. Chart.js draws
141
+ its own text in Helvetica unless told otherwise, so every axis label
142
+ and tooltip was in a different face from the page around it. The
143
+ size stays a plain 12, the --tt-text-xs size: a canvas wants pixels
144
+ and the token is in rem.
145
+ */
146
+ const font = {
147
+ family: this.token("--tt-font-sans") || undefined,
148
+ size: 12,
149
+ };
150
+ /*
151
+ WHICH AXIS THE PALETTE RUNS ALONG depends on the chart type, and
152
+ getting it wrong is why a pie used to come out in one flat colour.
153
+
154
+ A line or a bar compares SERIES, so one colour per dataset is right
155
+ and every point in that dataset shares it. A pie, doughnut or polar
156
+ area has a single dataset whose SLICES are the things being
157
+ compared, so the colour has to vary per data point. Indexing by the
158
+ dataset there gives every slice palette[0] and the chart stops
159
+ saying anything at all.
160
+ */
161
+ const sliced = this.type === "pie" ||
162
+ this.type === "doughnut" ||
163
+ this.type === "polarArea";
164
+ const config = {
165
+ type: this.type,
166
+ data: {
167
+ labels: this.labels,
168
+ datasets: this.series.map((s, i) => ({
169
+ label: s.label,
170
+ data: s.data,
171
+ backgroundColor: sliced
172
+ ? s.data.map((_, j) => palette[j % palette.length])
173
+ : palette[i % palette.length],
174
+ /*
175
+ Slices are separated by the gap between them, so their border
176
+ is the surface behind the chart rather than their own fill.
177
+ Chart.js defaults this to white, which draws five white hairs
178
+ across a dark theme.
179
+ */
180
+ borderColor: sliced ? sliceGap : palette[i % palette.length],
181
+ borderWidth: 2,
182
+ tension: 0.3,
183
+ pointRadius: 3,
184
+ borderRadius: 4,
185
+ })),
186
+ },
187
+ options: {
188
+ responsive: true,
189
+ maintainAspectRatio: false,
190
+ /*
191
+ "index" means "everything at this x", which is what you want on
192
+ a bar or a line and meaningless on a pie, where there is no x.
193
+ A slice is found by pointing at it.
194
+ */
195
+ interaction: sliced
196
+ ? { intersect: true, mode: "nearest" }
197
+ : { intersect: false, mode: "index" },
198
+ plugins: {
199
+ legend: {
200
+ display: this.legend,
201
+ labels: { color: text, boxWidth: 12, boxHeight: 12, font },
202
+ },
203
+ tooltip: {
204
+ backgroundColor: surface,
205
+ titleColor: surfaceText,
206
+ bodyColor: surfaceText,
207
+ borderColor: grid,
208
+ borderWidth: 1,
209
+ padding: 10,
210
+ titleFont: { ...font, weight: "bold" },
211
+ bodyFont: font,
212
+ displayColors: true,
213
+ },
214
+ },
215
+ /*
216
+ No scales on a pie. It has no axes, and Chart.js draws whatever
217
+ scales it is handed, so passing these unconditionally ruled a
218
+ doughnut with a 0-to-1 y-axis and an x-axis underneath it.
219
+ */
220
+ scales: sliced
221
+ ? {}
222
+ : {
223
+ x: {
224
+ stacked: this.stacked,
225
+ grid: { display: false },
226
+ ticks: { color: text, font },
227
+ border: { color: grid },
228
+ },
229
+ y: {
230
+ stacked: this.stacked,
231
+ beginAtZero: true,
232
+ grid: { color: grid },
233
+ ticks: { color: text, font },
234
+ border: { display: false },
235
+ },
236
+ },
237
+ },
238
+ };
239
+ this.chart = new Chart(this.canvas, config);
240
+ }
241
+ static { this.styles = [
242
+ srOnly,
243
+ css `
244
+ /* The browser's own [hidden] rule loses to any :host display, so a
245
+ hidden element would still show. Important, so it always wins. */
246
+ :host([hidden]) {
247
+ display: none !important;
248
+ }
249
+
250
+ :host {
251
+ display: block;
252
+ width: 100%;
253
+ height: 280px;
254
+ }
255
+
256
+ /* Chart.js sizes the canvas from this box, so it needs real
257
+ dimensions rather than being sized by its own content. */
258
+ .wrap {
259
+ position: relative;
260
+ width: 100%;
261
+ height: 100%;
262
+ }
263
+
264
+ canvas {
265
+ display: block;
266
+ }
267
+ `,
268
+ ]; }
269
+ render() {
270
+ return html `
271
+ <div class="wrap" part="wrap">
272
+ <!-- Never an empty name: role="img" with no name is an image a
273
+ screen reader announces as nothing. Same fallback idea as
274
+ tt-sparkline's "Trend". -->
275
+ <canvas
276
+ part="canvas"
277
+ role="img"
278
+ aria-label=${this.label || "Chart"}
279
+ ></canvas>
280
+ </div>
281
+
282
+ <!-- sr-only on a wrapper, not on the table: a table ignores
283
+ width: 1px and overflow: hidden and grows to fit its cells,
284
+ so a "hidden" table stuck out and scrolled the page sideways. -->
285
+ <div class="sr-only">
286
+ <table>
287
+ <caption>${this.label || "Chart data"}</caption>
288
+ <thead>
289
+ <tr>
290
+ <th>Label</th>
291
+ ${this.series.map((s) => html `<th>${s.label}</th>`)}
292
+ </tr>
293
+ </thead>
294
+ <tbody>
295
+ ${this.labels.map((label, i) => html `
296
+ <tr>
297
+ <th>${label}</th>
298
+ ${this.series.map((s) => html `<td>${s.data[i]}</td>`)}
299
+ </tr>
300
+ `)}
301
+ </tbody>
302
+ </table>
303
+ </div>
304
+ `;
305
+ }
306
+ };
307
+ __decorate([
308
+ property({ type: String })
309
+ ], TTChart.prototype, "type", void 0);
310
+ __decorate([
311
+ property({ type: Array })
312
+ ], TTChart.prototype, "labels", void 0);
313
+ __decorate([
314
+ property({ type: Array })
315
+ ], TTChart.prototype, "series", void 0);
316
+ __decorate([
317
+ property({ type: Boolean })
318
+ ], TTChart.prototype, "legend", void 0);
319
+ __decorate([
320
+ property({ type: Boolean })
321
+ ], TTChart.prototype, "stacked", void 0);
322
+ __decorate([
323
+ property({ type: String })
324
+ ], TTChart.prototype, "label", void 0);
325
+ __decorate([
326
+ query("canvas")
327
+ ], TTChart.prototype, "canvas", void 0);
328
+ TTChart = __decorate([
329
+ customElement("tt-chart")
330
+ ], TTChart);
331
+ export { TTChart };
332
+ //# sourceMappingURL=tt-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-chart.js","sourceRoot":"","sources":["../src/tt-chart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { LitElement } from "lit";
2
+ import type { PropertyValues } from "lit";
3
+ import "./tt-checkbox.js";
4
+ /** The same shape as tt-radio-group's and tt-select's options. */
5
+ export interface CheckboxOption {
6
+ value: string;
7
+ label: string;
8
+ disabled?: boolean;
9
+ }
10
+ /** A plain string is shorthand for an option whose label is its value. */
11
+ export type CheckboxGroupOption = string | CheckboxOption;
12
+ export declare class TTCheckboxGroup extends LitElement {
13
+ static formAssociated: boolean;
14
+ private internals;
15
+ name: string;
16
+ label: string;
17
+ labelHidden: boolean;
18
+ options: CheckboxGroupOption[];
19
+ values: string[];
20
+ disabled: boolean;
21
+ error: string;
22
+ orientation: "horizontal" | "vertical";
23
+ private groupId;
24
+ get form(): HTMLFormElement | null;
25
+ connectedCallback(): void;
26
+ formResetCallback(): void;
27
+ updated(changed: PropertyValues): void;
28
+ private syncFormState;
29
+ private toggle;
30
+ static styles: import("lit").CSSResult[];
31
+ render(): import("lit-html").TemplateResult<1>;
32
+ }
33
+ declare global {
34
+ interface HTMLElementTagNameMap {
35
+ "tt-checkbox-group": TTCheckboxGroup;
36
+ }
37
+ }
38
+ //# sourceMappingURL=tt-checkbox-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-checkbox-group.d.ts","sourceRoot":"","sources":["../src/tt-checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAM1C,OAAO,kBAAkB,CAAC;AAE1B,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,cAAc,CAAC;AAO1D,qBACa,eAAgB,SAAQ,UAAU;IAI7C,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAO,CAAC,SAAS,CAA0B;IAYA,IAAI,SAAM;IAIzB,KAAK,SAAM;IAKvC,WAAW,UAAS;IAKO,OAAO,EAAE,mBAAmB,EAAE,CAAM;IACpC,MAAM,EAAE,MAAM,EAAE,CAAM;IAKL,QAAQ,UAAS;IAIjC,KAAK,SAAM;IAOvC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAc;IAEpD,OAAO,CAAC,OAAO,CAAgC;IAE/C,IAAI,IAAI,2BAEP;IAED,iBAAiB;IAKjB,iBAAiB;IAajB,OAAO,CAAC,OAAO,EAAE,cAAc;IAW/B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,MAAM;IA8Bd,MAAM,CAAC,MAAM,4BA2CV;IAEH,MAAM;CAkDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
@@ -0,0 +1,243 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css } from "lit";
8
+ import { property, customElement } from "lit/decorators.js";
9
+ import { ifDefined } from "lit/directives/if-defined.js";
10
+ import { live } from "lit/directives/live.js";
11
+ import { srOnly } from "./sr-only.js";
12
+ import "./tt-checkbox.js";
13
+ const toOption = (option) => typeof option === "string" ? { value: option, label: option } : option;
14
+ let uid = 0;
15
+ let TTCheckboxGroup = class TTCheckboxGroup extends LitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.internals = this.attachInternals();
19
+ /*
20
+ Reflected, and it has to be.
21
+
22
+ A form-associated custom element is submitted under its name CONTENT
23
+ ATTRIBUTE, not its JS property. Without reflect, setting .name = "x"
24
+ from script leaves the attribute absent and the field vanishes from
25
+ FormData with no error anywhere. It only appeared to work because
26
+ every call site so far wrote name="x" in markup, which sets the
27
+ attribute directly.
28
+ */
29
+ this.name = "";
30
+ // The group's name, visible above it. `label`, as on every other form
31
+ // control (it was `heading` here and on tt-radio-group only).
32
+ this.label = "";
33
+ // Hides the label but keeps it as the group's name, as on every other
34
+ // form control.
35
+ this.labelHidden = false;
36
+ // Strings or { value, label, disabled }. Objects are what tt-radio-group
37
+ // and tt-select take, so a list built for one works here; strings stay
38
+ // as the shorthand they always were.
39
+ this.options = [];
40
+ this.values = [];
41
+ // Reflected like every other control's. Disables each box rather than
42
+ // fading the group: a tt-checkbox fades itself, and fading both would
43
+ // multiply the two opacities.
44
+ this.disabled = false;
45
+ // A message about the group as a whole ("Pick at least one"), shown
46
+ // under it and tied to it, as on tt-radio-group.
47
+ this.error = "";
48
+ // Which way the options run. `orientation`, as on tt-button-group and
49
+ // the cards (it was `direction: row | column` here only). Vertical by
50
+ // default since Oct 2026, the same as tt-radio-group: four of the five
51
+ // uses in this repo were already overriding a horizontal default.
52
+ this.orientation = "vertical";
53
+ this.groupId = `tt-checkbox-group-${++uid}`;
54
+ }
55
+ // Form-associated as a GROUP. The inner checkboxes carry no name, so
56
+ // without this the selection never reaches FormData and every page has
57
+ // to mirror it in state. Read it back with data.getAll(name).
58
+ static { this.formAssociated = true; }
59
+ get form() {
60
+ return this.internals.form;
61
+ }
62
+ connectedCallback() {
63
+ super.connectedCallback();
64
+ this.syncFormState();
65
+ }
66
+ formResetCallback() {
67
+ // Cleared here, then announced, so a page that mirrors `values` hears
68
+ // about it and one that does not still gets an empty group.
69
+ this.values = [];
70
+ this.dispatchEvent(new CustomEvent("tt-change", {
71
+ detail: { values: [] },
72
+ bubbles: true,
73
+ composed: true,
74
+ }));
75
+ }
76
+ updated(changed) {
77
+ if (changed.has("values") || changed.has("name")) {
78
+ this.syncFormState();
79
+ }
80
+ }
81
+ /*
82
+ A multi-select submits one entry per selected value under the same
83
+ name, which is what setFormValue does when given a FormData rather
84
+ than a string. The server then reads them all with getAll(name).
85
+ */
86
+ syncFormState() {
87
+ if (!this.name)
88
+ return;
89
+ if (this.values.length === 0) {
90
+ this.internals.setFormValue(null);
91
+ return;
92
+ }
93
+ const data = new FormData();
94
+ for (const value of this.values) {
95
+ data.append(this.name, value);
96
+ }
97
+ this.internals.setFormValue(data);
98
+ }
99
+ toggle(option, event) {
100
+ // The inner tt-checkbox also emits "tt-change", and it bubbles and is
101
+ // composed. Without this it would carry on past the group to the page,
102
+ // arriving after ours with a detail that has no `values`, and overwrite
103
+ // the selection with undefined. A composite consumes its children's
104
+ // events and speaks for them.
105
+ event.stopPropagation();
106
+ const next = this.values.includes(option)
107
+ ? this.values.filter((v) => v !== option)
108
+ : [...this.values, option];
109
+ /*
110
+ Kept here as well as announced. The boxes already show the new
111
+ state, so a group that waited for the page to echo `values` back
112
+ worked only when someone was listening: without a listener the next
113
+ click started from the old set, and the form submitted that.
114
+ A page can still set `values` whenever it likes.
115
+ */
116
+ this.values = next;
117
+ this.dispatchEvent(new CustomEvent("tt-change", {
118
+ detail: { values: next },
119
+ bubbles: true,
120
+ composed: true,
121
+ }));
122
+ }
123
+ static { this.styles = [srOnly, css `
124
+ /* The browser's own [hidden] rule loses to any :host display, so a
125
+ hidden element would still show. Important, so it always wins. */
126
+ :host([hidden]) {
127
+ display: none !important;
128
+ }
129
+
130
+ :host {
131
+ display: block;
132
+ font-family: var(--tt-font-sans);
133
+ }
134
+
135
+ .group {
136
+ display: flex;
137
+ flex-wrap: wrap;
138
+ align-items: center;
139
+ gap: var(--tt-space-3);
140
+ }
141
+
142
+ :host([orientation="vertical"]) .group {
143
+ flex-direction: column;
144
+ align-items: flex-start;
145
+ gap: var(--tt-space-2);
146
+ }
147
+
148
+ /* Above the options in both orientations, as on tt-radio-group. It
149
+ used to sit inline as the first item of a horizontal row. */
150
+ .heading {
151
+ margin-bottom: var(--tt-space-2);
152
+
153
+ font-size: var(--tt-text-xs);
154
+ font-weight: var(--tt-weight-semibold);
155
+ text-transform: uppercase;
156
+ letter-spacing: 0.05em;
157
+ color: var(--tt-muted-foreground);
158
+ }
159
+
160
+ .error-text {
161
+ margin-top: var(--tt-space-2);
162
+ color: var(--tt-destructive);
163
+ font-size: var(--tt-text-xs);
164
+ font-weight: var(--tt-weight-medium);
165
+ }
166
+ `]; }
167
+ render() {
168
+ const labelId = `${this.groupId}-label`;
169
+ const errorId = `${this.groupId}-error`;
170
+ return html `
171
+ ${this.label
172
+ ? html `<div
173
+ class="heading ${this.labelHidden ? "sr-only" : ""}"
174
+ part="label"
175
+ id=${labelId}
176
+ >
177
+ ${this.label}
178
+ </div>`
179
+ : ""}
180
+
181
+ <!-- Named by the visible label rather than an aria-label copy of
182
+ it, which read the label twice: once as the name, once as the
183
+ group's first piece of text. -->
184
+ <div
185
+ class="group"
186
+ part="group"
187
+ role="group"
188
+ aria-labelledby=${ifDefined(this.label ? labelId : undefined)}
189
+ aria-invalid=${ifDefined(this.error ? "true" : undefined)}
190
+ aria-describedby=${ifDefined(this.error ? errorId : undefined)}
191
+ >
192
+ ${this.options.map(toOption).map((option) => html `
193
+ <!-- live(): a box ticks itself when clicked. If the page then
194
+ refuses the change (sets values back, say to cap the
195
+ choices), the value Lit last wrote has not changed, so a
196
+ plain binding would write nothing and leave the box ticked.
197
+ live() compares with the box's REAL state instead. -->
198
+ <tt-checkbox
199
+ label=${option.label}
200
+ .checked=${live(this.values.includes(option.value))}
201
+ ?disabled=${this.disabled || Boolean(option.disabled)}
202
+ @tt-change=${(e) => this.toggle(option.value, e)}
203
+ ></tt-checkbox>
204
+ `)}
205
+ </div>
206
+
207
+ ${this.error
208
+ ? html `<div class="error-text" part="error" id=${errorId} role="alert">
209
+ ${this.error}
210
+ </div>`
211
+ : ""}
212
+ `;
213
+ }
214
+ };
215
+ __decorate([
216
+ property({ type: String, reflect: true })
217
+ ], TTCheckboxGroup.prototype, "name", void 0);
218
+ __decorate([
219
+ property({ type: String })
220
+ ], TTCheckboxGroup.prototype, "label", void 0);
221
+ __decorate([
222
+ property({ type: Boolean, attribute: "label-hidden", reflect: true })
223
+ ], TTCheckboxGroup.prototype, "labelHidden", void 0);
224
+ __decorate([
225
+ property({ type: Array })
226
+ ], TTCheckboxGroup.prototype, "options", void 0);
227
+ __decorate([
228
+ property({ type: Array })
229
+ ], TTCheckboxGroup.prototype, "values", void 0);
230
+ __decorate([
231
+ property({ type: Boolean, reflect: true })
232
+ ], TTCheckboxGroup.prototype, "disabled", void 0);
233
+ __decorate([
234
+ property({ type: String })
235
+ ], TTCheckboxGroup.prototype, "error", void 0);
236
+ __decorate([
237
+ property({ type: String, reflect: true })
238
+ ], TTCheckboxGroup.prototype, "orientation", void 0);
239
+ TTCheckboxGroup = __decorate([
240
+ customElement("tt-checkbox-group")
241
+ ], TTCheckboxGroup);
242
+ export { TTCheckboxGroup };
243
+ //# sourceMappingURL=tt-checkbox-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-checkbox-group.js","sourceRoot":"","sources":["../src/tt-checkbox-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { LitElement } from "lit";
2
+ import type { PropertyValues } from "lit";
3
+ export declare class TTCheckbox extends LitElement {
4
+ static formAssociated: boolean;
5
+ private internals;
6
+ name: string;
7
+ value: string;
8
+ checked: boolean;
9
+ indeterminate: boolean;
10
+ disabled: boolean;
11
+ required: boolean;
12
+ label: string;
13
+ labelHidden: boolean;
14
+ error: string;
15
+ private inputId;
16
+ get form(): HTMLFormElement | null;
17
+ get validity(): ValidityState;
18
+ checkValidity(): boolean;
19
+ reportValidity(): boolean;
20
+ connectedCallback(): void;
21
+ formResetCallback(): void;
22
+ formStateRestoreCallback(state: string): void;
23
+ updated(changed: PropertyValues): void;
24
+ private syncFormState;
25
+ private handleChange;
26
+ focus(options?: FocusOptions): void;
27
+ static styles: import("lit").CSSResult[];
28
+ render(): import("lit-html").TemplateResult<1>;
29
+ }
30
+ declare global {
31
+ interface HTMLElementTagNameMap {
32
+ "tt-checkbox": TTCheckbox;
33
+ }
34
+ }
35
+ //# sourceMappingURL=tt-checkbox.d.ts.map