@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,374 @@
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 { srOnly } from "./sr-only.js";
10
+ import "./tt-avatar.js";
11
+ import "./tt-button.js";
12
+ import "./tt-textarea.js";
13
+ import "./tt-empty-state.js";
14
+ /**
15
+ * The reading side of a messaging surface. Pairs with tt-inbox.
16
+ *
17
+ * Split from the list because the two sit in different places: side by
18
+ * side on a desktop, two separate routes on a phone. One component would
19
+ * have to make that layout decision for the app.
20
+ *
21
+ * THREE THINGS THAT ARE EASY TO GET WRONG AND ANNOYING TO LIVE WITH.
22
+ *
23
+ * It scrolls to the bottom on new messages, because a thread is read
24
+ * newest-last and opening one part-way up is disorienting. It only does
25
+ * so when the reader was ALREADY at the bottom, so it never yanks
26
+ * somebody out of older messages they were deliberately reading.
27
+ *
28
+ * Consecutive messages from the same author collapse: the avatar and name
29
+ * appear once and the following bubbles are bare. Repeating the name on
30
+ * every line of a burst is noise.
31
+ *
32
+ * The composer is Enter to send, Shift+Enter for a newline. That is what
33
+ * every messaging product does, and a thread that needs a mouse click to
34
+ * send feels broken regardless of how correct it is.
35
+ */
36
+ let TTThread = class TTThread extends LitElement {
37
+ constructor() {
38
+ super(...arguments);
39
+ this.messages = [];
40
+ this.heading = "";
41
+ this.placeholder = "Write a message";
42
+ this.sendLabel = "Send";
43
+ // Hides the composer, for a read-only or archived thread.
44
+ this.readonly = false;
45
+ this.sending = false;
46
+ this.emptyText = "No messages yet";
47
+ // Whether the reader was pinned to the bottom BEFORE this render. Read
48
+ // in willUpdate, because by updated() the new message has already
49
+ // changed scrollHeight and the answer would always be "no".
50
+ this.wasAtBottom = true;
51
+ }
52
+ willUpdate(changed) {
53
+ if (!changed.has("messages") || !this.scroller)
54
+ return;
55
+ const { scrollTop, clientHeight, scrollHeight } = this.scroller;
56
+ // A few pixels of tolerance: sub-pixel layout means scrollTop rarely
57
+ // lands exactly on the bottom.
58
+ this.wasAtBottom = scrollHeight - scrollTop - clientHeight < 40;
59
+ }
60
+ updated(changed) {
61
+ if (changed.has("messages") && this.wasAtBottom) {
62
+ this.scrollToEnd();
63
+ }
64
+ }
65
+ firstUpdated() {
66
+ this.scrollToEnd();
67
+ }
68
+ scrollToEnd() {
69
+ // After paint, or scrollHeight is still the old value.
70
+ requestAnimationFrame(() => {
71
+ if (this.scroller)
72
+ this.scroller.scrollTop = this.scroller.scrollHeight;
73
+ });
74
+ }
75
+ send() {
76
+ const body = this.composer?.value?.trim();
77
+ // Silently ignore empty sends rather than emitting a blank message.
78
+ if (!body || this.sending)
79
+ return;
80
+ this.dispatchEvent(new CustomEvent("tt-send", {
81
+ detail: { body },
82
+ bubbles: true,
83
+ composed: true,
84
+ }));
85
+ // The parent decides whether the send succeeded, but clearing here
86
+ // keeps the field responsive. A parent that fails can put the text
87
+ // back from the event detail.
88
+ this.composer.value = "";
89
+ }
90
+ handleKeydown(event) {
91
+ if (event.key === "Enter" && !event.shiftKey) {
92
+ event.preventDefault();
93
+ this.send();
94
+ }
95
+ }
96
+ static { this.styles = [srOnly, css `
97
+ /* The browser's own [hidden] rule loses to any :host display, so a
98
+ hidden element would still show. Important, so it always wins. */
99
+ :host([hidden]) {
100
+ display: none !important;
101
+ }
102
+
103
+ :host {
104
+ display: flex;
105
+ flex-direction: column;
106
+
107
+ height: 100%;
108
+ min-height: 0;
109
+
110
+ font-family: var(--tt-font-sans);
111
+ }
112
+
113
+ header {
114
+ flex: 0 0 auto;
115
+
116
+ display: flex;
117
+ align-items: center;
118
+ gap: var(--tt-space-3);
119
+
120
+ padding: var(--tt-space-3) var(--tt-space-4);
121
+ border-bottom: 1px solid var(--tt-border);
122
+ }
123
+
124
+ .heading {
125
+ margin: 0;
126
+ font-size: var(--tt-text-md);
127
+ font-weight: var(--tt-weight-semibold);
128
+ color: var(--tt-foreground);
129
+ }
130
+
131
+ /*
132
+ min-height:0 is load-bearing. A flex child will not shrink below its
133
+ content by default, so without it this box grows to fit every
134
+ message and the whole page scrolls instead of the thread.
135
+ */
136
+ .messages {
137
+ flex: 1;
138
+ min-height: 0;
139
+ overflow-y: auto;
140
+
141
+ display: flex;
142
+ flex-direction: column;
143
+ gap: var(--tt-space-2);
144
+
145
+ padding: var(--tt-space-4);
146
+ }
147
+
148
+ .message {
149
+ display: flex;
150
+ align-items: flex-end;
151
+ gap: var(--tt-space-2);
152
+
153
+ max-width: 78%;
154
+ }
155
+
156
+ .message.own {
157
+ align-self: flex-end;
158
+ flex-direction: row-reverse;
159
+ }
160
+
161
+ /* Bursts collapse: the avatar shows once and later bubbles indent to
162
+ where it would have been, so the column still lines up. */
163
+ .message.continued {
164
+ margin-top: calc(var(--tt-space-2) * -1 + 2px);
165
+ padding-left: calc(var(--tt-control-sm) - 4px);
166
+ }
167
+
168
+ .message.continued.own {
169
+ padding-left: 0;
170
+ padding-right: calc(var(--tt-control-sm) - 4px);
171
+ }
172
+
173
+ .bubble {
174
+ padding: var(--tt-space-2) var(--tt-space-3);
175
+
176
+ border: 1px solid var(--tt-border);
177
+ border-radius: var(--tt-radius-lg);
178
+
179
+ background: var(--tt-card);
180
+ color: var(--tt-foreground);
181
+
182
+ font-size: var(--tt-text-sm);
183
+ line-height: var(--tt-leading-snug);
184
+
185
+ /* Long unbroken strings, a URL or a VAT number, must wrap rather
186
+ than widen the bubble past the thread. */
187
+ overflow-wrap: anywhere;
188
+ white-space: pre-wrap;
189
+ }
190
+
191
+ .message.own .bubble {
192
+ background: var(--tt-primary);
193
+ color: var(--tt-primary-foreground);
194
+ border-color: var(--tt-primary);
195
+ }
196
+
197
+ .meta {
198
+ display: flex;
199
+ align-items: baseline;
200
+ gap: var(--tt-space-2);
201
+
202
+ margin-bottom: 2px;
203
+
204
+ font-size: var(--tt-text-xs);
205
+ color: var(--tt-muted-foreground);
206
+ }
207
+
208
+ .author {
209
+ font-weight: var(--tt-weight-medium);
210
+ color: var(--tt-foreground);
211
+ }
212
+
213
+ .stack {
214
+ display: flex;
215
+ flex-direction: column;
216
+ min-width: 0;
217
+ }
218
+
219
+ footer {
220
+ flex: 0 0 auto;
221
+
222
+ display: flex;
223
+ align-items: flex-end;
224
+ gap: var(--tt-space-2);
225
+
226
+ padding: var(--tt-space-3) var(--tt-space-4);
227
+ border-top: 1px solid var(--tt-border);
228
+ }
229
+
230
+ tt-textarea {
231
+ flex: 1;
232
+ min-width: 0;
233
+ }
234
+
235
+ .state {
236
+ margin: auto;
237
+ padding: var(--tt-space-8);
238
+ }
239
+ `]; }
240
+ render() {
241
+ return html `
242
+ ${this.heading
243
+ ? html `
244
+ <header part="header">
245
+ <h2 class="heading">${this.heading}</h2>
246
+ <slot name="actions"></slot>
247
+ </header>
248
+ `
249
+ : ""}
250
+
251
+ <!--
252
+ role="log": a live region for a conversation. New messages are
253
+ read out as they arrive, which is the whole point of a thread,
254
+ and nothing else on the page has to change for it.
255
+ -->
256
+ <div
257
+ class="messages"
258
+ part="messages"
259
+ role="log"
260
+ aria-label=${this.heading || "Messages"}
261
+ >
262
+ ${this.messages.length === 0
263
+ ? html `<div class="state">
264
+ <tt-empty-state heading=${this.emptyText}></tt-empty-state>
265
+ </div>`
266
+ : this.messages.map((message, index) => {
267
+ // Same author as the message before it: collapse the header.
268
+ const previous = this.messages[index - 1];
269
+ const continued = previous?.author === message.author;
270
+ return html `
271
+ <div
272
+ class="message ${message.own ? "own" : ""} ${continued
273
+ ? "continued"
274
+ : ""}"
275
+ part="message"
276
+ >
277
+ ${continued
278
+ ? ""
279
+ : html `
280
+ <tt-avatar
281
+ size="small"
282
+ src=${message.avatar ?? ""}
283
+ name=${message.author}
284
+ ></tt-avatar>
285
+ `}
286
+
287
+ <div class="stack">
288
+ <!--
289
+ A continued message hides its author from the EYE
290
+ only. Read on its own, a burst of four bodies would
291
+ otherwise reach a screen reader as four anonymous
292
+ lines.
293
+ -->
294
+ ${continued
295
+ ? html `<span class="sr-only">${message.author}</span>`
296
+ : html `
297
+ <span class="meta">
298
+ <span class="author">${message.author}</span>
299
+ ${message.timestamp
300
+ ? html `<span>${message.timestamp}</span>`
301
+ : ""}
302
+ </span>
303
+ `}
304
+
305
+ <div class="bubble" part="bubble">${message.body}</div>
306
+ </div>
307
+ </div>
308
+ `;
309
+ })}
310
+ </div>
311
+
312
+ ${this.readonly
313
+ ? ""
314
+ : html `
315
+ <footer part="composer">
316
+ <!--
317
+ Not disabled while sending. Disabling the focused field
318
+ threw focus to <body> the moment Enter sent a message, so
319
+ the next message started with finding the composer again.
320
+ send() already refuses while a send is in flight.
321
+ -->
322
+ <tt-textarea
323
+ full-width
324
+ auto-grow
325
+ .rows=${1}
326
+ placeholder=${this.placeholder}
327
+ label=${this.placeholder}
328
+ label-hidden
329
+ @keydown=${this.handleKeydown}
330
+ ></tt-textarea>
331
+
332
+ <tt-button
333
+ ?loading=${this.sending}
334
+ @tt-button-click=${this.send}
335
+ >
336
+ ${this.sendLabel}
337
+ </tt-button>
338
+ </footer>
339
+ `}
340
+ `;
341
+ }
342
+ };
343
+ __decorate([
344
+ property({ type: Array })
345
+ ], TTThread.prototype, "messages", void 0);
346
+ __decorate([
347
+ property({ type: String })
348
+ ], TTThread.prototype, "heading", void 0);
349
+ __decorate([
350
+ property({ type: String })
351
+ ], TTThread.prototype, "placeholder", void 0);
352
+ __decorate([
353
+ property({ type: String, attribute: "send-label" })
354
+ ], TTThread.prototype, "sendLabel", void 0);
355
+ __decorate([
356
+ property({ type: Boolean })
357
+ ], TTThread.prototype, "readonly", void 0);
358
+ __decorate([
359
+ property({ type: Boolean })
360
+ ], TTThread.prototype, "sending", void 0);
361
+ __decorate([
362
+ property({ type: String, attribute: "empty-text" })
363
+ ], TTThread.prototype, "emptyText", void 0);
364
+ __decorate([
365
+ query(".messages")
366
+ ], TTThread.prototype, "scroller", void 0);
367
+ __decorate([
368
+ query("tt-textarea")
369
+ ], TTThread.prototype, "composer", void 0);
370
+ TTThread = __decorate([
371
+ customElement("tt-thread")
372
+ ], TTThread);
373
+ export { TTThread };
374
+ //# sourceMappingURL=tt-thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-thread.js","sourceRoot":"","sources":["../src/tt-thread.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { LitElement } from "lit";
2
+ import "./tt-icon.js";
3
+ export type ToastVariant = "neutral" | "success" | "warning" | "danger";
4
+ export interface ToastOptions {
5
+ message: string;
6
+ variant?: ToastVariant;
7
+ duration?: number;
8
+ }
9
+ /**
10
+ * Drop one of these anywhere in the app, then call the module-level
11
+ * toast() from anywhere else. Notifications are global by nature, so
12
+ * routing every message down through props would mean every component
13
+ * in the tree carrying a notify callback it does not otherwise need.
14
+ */
15
+ export declare class TTToast extends LitElement {
16
+ position: "top-right" | "top-center" | "bottom-right" | "bottom-center";
17
+ private items;
18
+ private leaving;
19
+ private exits;
20
+ private politeText;
21
+ private alertText;
22
+ private timers;
23
+ connectedCallback(): void;
24
+ disconnectedCallback(): void;
25
+ updated(): void;
26
+ show(options: ToastOptions): void;
27
+ private clearTimer;
28
+ private restartTimer;
29
+ private announce;
30
+ private hold;
31
+ private release;
32
+ dismiss(id: number): void;
33
+ static styles: import("lit").CSSResult[];
34
+ render(): import("lit-html").TemplateResult<1>;
35
+ }
36
+ /**
37
+ * Show a toast from anywhere:
38
+ *
39
+ * toast({ message: "Request posted", variant: "success" });
40
+ *
41
+ * Requires a <tt-toast> mounted somewhere in the page.
42
+ */
43
+ export declare function toast(options: ToastOptions): void;
44
+ declare global {
45
+ interface HTMLElementTagNameMap {
46
+ "tt-toast": TTToast;
47
+ }
48
+ }
49
+ //# sourceMappingURL=tt-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-toast.d.ts","sourceRoot":"","sources":["../src/tt-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD;;;;;GAKG;AACH,qBACa,OAAQ,SAAQ,UAAU;IAgBrC,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CACzD;IAEL,OAAO,CAAC,KAAK,CAAmB;IAQhC,OAAO,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,KAAK,CAAiC;IAKrC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAM;IAEhC,OAAO,CAAC,MAAM,CAAoD;IAElE,iBAAiB;IAKjB,oBAAoB;IAYpB,OAAO;IAeP,IAAI,CAAC,OAAO,EAAE,YAAY;IAoD1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,EAAE,EAAE,MAAM;IAclB,MAAM,CAAC,MAAM,4BAsKV;IAEH,MAAM;CA0DP;AAMD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,QAS1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}