@masmarino/gabarit 1.4.0 → 2.1.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 (348) hide show
  1. package/README.md +231 -144
  2. package/accordion/README.md +56 -0
  3. package/alert/README.md +87 -0
  4. package/app-shell/README.md +133 -0
  5. package/auth/README.md +155 -0
  6. package/auth-activate/README.md +119 -0
  7. package/auth-login/README.md +113 -0
  8. package/auth-register/README.md +104 -0
  9. package/auth-reset-password/README.md +120 -0
  10. package/autocomplete/README.md +77 -0
  11. package/avatar/README.md +34 -0
  12. package/avatar-group/README.md +47 -0
  13. package/badge/README.md +177 -0
  14. package/bar-chart/README.md +44 -0
  15. package/breadcrumb/README.md +38 -0
  16. package/button/README.md +175 -0
  17. package/card/README.md +179 -0
  18. package/checkbox/README.md +50 -0
  19. package/checkbox-group/README.md +78 -0
  20. package/confirm-danger-modal/README.md +77 -0
  21. package/copy-button/README.md +90 -0
  22. package/copy-field/README.md +54 -0
  23. package/date-picker/README.md +84 -0
  24. package/description-list/README.md +63 -0
  25. package/dimension-card/README.md +39 -0
  26. package/disclosure/README.md +48 -0
  27. package/divider/README.md +31 -0
  28. package/drawer/README.md +49 -0
  29. package/empty-state/README.md +84 -0
  30. package/fesm2022/masmarino-gabarit-accordion.mjs +243 -0
  31. package/fesm2022/masmarino-gabarit-accordion.mjs.map +1 -0
  32. package/fesm2022/masmarino-gabarit-alert.mjs +208 -0
  33. package/fesm2022/masmarino-gabarit-alert.mjs.map +1 -0
  34. package/fesm2022/masmarino-gabarit-app-shell.mjs +378 -0
  35. package/fesm2022/masmarino-gabarit-app-shell.mjs.map +1 -0
  36. package/fesm2022/masmarino-gabarit-auth-activate.mjs +415 -0
  37. package/fesm2022/masmarino-gabarit-auth-activate.mjs.map +1 -0
  38. package/fesm2022/masmarino-gabarit-auth-login.mjs +467 -0
  39. package/fesm2022/masmarino-gabarit-auth-login.mjs.map +1 -0
  40. package/fesm2022/masmarino-gabarit-auth-register.mjs +457 -0
  41. package/fesm2022/masmarino-gabarit-auth-register.mjs.map +1 -0
  42. package/fesm2022/masmarino-gabarit-auth-reset-password.mjs +364 -0
  43. package/fesm2022/masmarino-gabarit-auth-reset-password.mjs.map +1 -0
  44. package/fesm2022/masmarino-gabarit-auth.mjs +844 -0
  45. package/fesm2022/masmarino-gabarit-auth.mjs.map +1 -0
  46. package/fesm2022/masmarino-gabarit-autocomplete.mjs +477 -0
  47. package/fesm2022/masmarino-gabarit-autocomplete.mjs.map +1 -0
  48. package/fesm2022/masmarino-gabarit-avatar-group.mjs +199 -0
  49. package/fesm2022/masmarino-gabarit-avatar-group.mjs.map +1 -0
  50. package/fesm2022/masmarino-gabarit-avatar.mjs +107 -0
  51. package/fesm2022/masmarino-gabarit-avatar.mjs.map +1 -0
  52. package/fesm2022/masmarino-gabarit-badge.mjs +449 -0
  53. package/fesm2022/masmarino-gabarit-badge.mjs.map +1 -0
  54. package/fesm2022/masmarino-gabarit-bar-chart.mjs +408 -0
  55. package/fesm2022/masmarino-gabarit-bar-chart.mjs.map +1 -0
  56. package/fesm2022/masmarino-gabarit-breadcrumb.mjs +59 -0
  57. package/fesm2022/masmarino-gabarit-breadcrumb.mjs.map +1 -0
  58. package/fesm2022/masmarino-gabarit-button.mjs +374 -0
  59. package/fesm2022/masmarino-gabarit-button.mjs.map +1 -0
  60. package/fesm2022/masmarino-gabarit-card.mjs +400 -0
  61. package/fesm2022/masmarino-gabarit-card.mjs.map +1 -0
  62. package/fesm2022/masmarino-gabarit-chart.mjs +1289 -0
  63. package/fesm2022/masmarino-gabarit-chart.mjs.map +1 -0
  64. package/fesm2022/masmarino-gabarit-checkbox-group.mjs +335 -0
  65. package/fesm2022/masmarino-gabarit-checkbox-group.mjs.map +1 -0
  66. package/fesm2022/masmarino-gabarit-checkbox.mjs +170 -0
  67. package/fesm2022/masmarino-gabarit-checkbox.mjs.map +1 -0
  68. package/fesm2022/masmarino-gabarit-confirm-danger-modal.mjs +387 -0
  69. package/fesm2022/masmarino-gabarit-confirm-danger-modal.mjs.map +1 -0
  70. package/fesm2022/masmarino-gabarit-copy-button.mjs +407 -0
  71. package/fesm2022/masmarino-gabarit-copy-button.mjs.map +1 -0
  72. package/fesm2022/masmarino-gabarit-copy-field.mjs +229 -0
  73. package/fesm2022/masmarino-gabarit-copy-field.mjs.map +1 -0
  74. package/fesm2022/masmarino-gabarit-date-picker.mjs +1238 -0
  75. package/fesm2022/masmarino-gabarit-date-picker.mjs.map +1 -0
  76. package/fesm2022/masmarino-gabarit-description-list.mjs +127 -0
  77. package/fesm2022/masmarino-gabarit-description-list.mjs.map +1 -0
  78. package/fesm2022/masmarino-gabarit-dimension-card.mjs +162 -0
  79. package/fesm2022/masmarino-gabarit-dimension-card.mjs.map +1 -0
  80. package/fesm2022/masmarino-gabarit-disclosure.mjs +154 -0
  81. package/fesm2022/masmarino-gabarit-disclosure.mjs.map +1 -0
  82. package/fesm2022/masmarino-gabarit-divider.mjs +90 -0
  83. package/fesm2022/masmarino-gabarit-divider.mjs.map +1 -0
  84. package/fesm2022/masmarino-gabarit-docs.mjs +21 -11
  85. package/fesm2022/masmarino-gabarit-docs.mjs.map +1 -1
  86. package/fesm2022/masmarino-gabarit-drawer.mjs +209 -0
  87. package/fesm2022/masmarino-gabarit-drawer.mjs.map +1 -0
  88. package/fesm2022/masmarino-gabarit-empty-state.mjs +226 -0
  89. package/fesm2022/masmarino-gabarit-empty-state.mjs.map +1 -0
  90. package/fesm2022/masmarino-gabarit-file-upload.mjs +335 -0
  91. package/fesm2022/masmarino-gabarit-file-upload.mjs.map +1 -0
  92. package/fesm2022/masmarino-gabarit-floating-panel.mjs +13 -0
  93. package/fesm2022/masmarino-gabarit-floating-panel.mjs.map +1 -0
  94. package/fesm2022/masmarino-gabarit-format.mjs +345 -0
  95. package/fesm2022/masmarino-gabarit-format.mjs.map +1 -0
  96. package/fesm2022/masmarino-gabarit-funnel-chart.mjs +247 -0
  97. package/fesm2022/masmarino-gabarit-funnel-chart.mjs.map +1 -0
  98. package/fesm2022/masmarino-gabarit-gauge-bar.mjs +180 -0
  99. package/fesm2022/masmarino-gabarit-gauge-bar.mjs.map +1 -0
  100. package/fesm2022/masmarino-gabarit-git-field.mjs +127 -0
  101. package/fesm2022/masmarino-gabarit-git-field.mjs.map +1 -0
  102. package/fesm2022/masmarino-gabarit-icon-marker.mjs +150 -0
  103. package/fesm2022/masmarino-gabarit-icon-marker.mjs.map +1 -0
  104. package/fesm2022/masmarino-gabarit-icon.mjs +308 -0
  105. package/fesm2022/masmarino-gabarit-icon.mjs.map +1 -0
  106. package/fesm2022/masmarino-gabarit-input.mjs +493 -0
  107. package/fesm2022/masmarino-gabarit-input.mjs.map +1 -0
  108. package/fesm2022/masmarino-gabarit-job-graph.mjs +216 -0
  109. package/fesm2022/masmarino-gabarit-job-graph.mjs.map +1 -0
  110. package/fesm2022/masmarino-gabarit-job-status.mjs +104 -0
  111. package/fesm2022/masmarino-gabarit-job-status.mjs.map +1 -0
  112. package/fesm2022/masmarino-gabarit-line-chart.mjs +574 -0
  113. package/fesm2022/masmarino-gabarit-line-chart.mjs.map +1 -0
  114. package/fesm2022/masmarino-gabarit-list-card.mjs +320 -0
  115. package/fesm2022/masmarino-gabarit-list-card.mjs.map +1 -0
  116. package/fesm2022/masmarino-gabarit-list-row.mjs +58 -0
  117. package/fesm2022/masmarino-gabarit-list-row.mjs.map +1 -0
  118. package/fesm2022/masmarino-gabarit-list-toolbar.mjs +369 -0
  119. package/fesm2022/masmarino-gabarit-list-toolbar.mjs.map +1 -0
  120. package/fesm2022/masmarino-gabarit-menu.mjs +461 -0
  121. package/fesm2022/masmarino-gabarit-menu.mjs.map +1 -0
  122. package/fesm2022/masmarino-gabarit-mfa-enrollment.mjs +897 -0
  123. package/fesm2022/masmarino-gabarit-mfa-enrollment.mjs.map +1 -0
  124. package/fesm2022/masmarino-gabarit-mfa-settings.mjs +629 -0
  125. package/fesm2022/masmarino-gabarit-mfa-settings.mjs.map +1 -0
  126. package/fesm2022/masmarino-gabarit-modal.mjs +260 -0
  127. package/fesm2022/masmarino-gabarit-modal.mjs.map +1 -0
  128. package/fesm2022/masmarino-gabarit-nav-tabs.mjs +332 -0
  129. package/fesm2022/masmarino-gabarit-nav-tabs.mjs.map +1 -0
  130. package/fesm2022/masmarino-gabarit-notification-dot.mjs +119 -0
  131. package/fesm2022/masmarino-gabarit-notification-dot.mjs.map +1 -0
  132. package/fesm2022/masmarino-gabarit-page-header.mjs +78 -0
  133. package/fesm2022/masmarino-gabarit-page-header.mjs.map +1 -0
  134. package/fesm2022/masmarino-gabarit-page-layout.mjs +157 -0
  135. package/fesm2022/masmarino-gabarit-page-layout.mjs.map +1 -0
  136. package/fesm2022/masmarino-gabarit-pagination.mjs +415 -0
  137. package/fesm2022/masmarino-gabarit-pagination.mjs.map +1 -0
  138. package/fesm2022/masmarino-gabarit-panel.mjs +80 -0
  139. package/fesm2022/masmarino-gabarit-panel.mjs.map +1 -0
  140. package/fesm2022/masmarino-gabarit-passkey-settings.mjs +606 -0
  141. package/fesm2022/masmarino-gabarit-passkey-settings.mjs.map +1 -0
  142. package/fesm2022/masmarino-gabarit-pie-chart.mjs +317 -0
  143. package/fesm2022/masmarino-gabarit-pie-chart.mjs.map +1 -0
  144. package/fesm2022/masmarino-gabarit-popover.mjs +139 -0
  145. package/fesm2022/masmarino-gabarit-popover.mjs.map +1 -0
  146. package/fesm2022/masmarino-gabarit-radio-group.mjs +202 -0
  147. package/fesm2022/masmarino-gabarit-radio-group.mjs.map +1 -0
  148. package/fesm2022/masmarino-gabarit-save-status.mjs +142 -0
  149. package/fesm2022/masmarino-gabarit-save-status.mjs.map +1 -0
  150. package/fesm2022/masmarino-gabarit-search-bar.mjs +576 -0
  151. package/fesm2022/masmarino-gabarit-search-bar.mjs.map +1 -0
  152. package/fesm2022/masmarino-gabarit-secret-reveal.mjs +348 -0
  153. package/fesm2022/masmarino-gabarit-secret-reveal.mjs.map +1 -0
  154. package/fesm2022/masmarino-gabarit-segmented-control.mjs +272 -0
  155. package/fesm2022/masmarino-gabarit-segmented-control.mjs.map +1 -0
  156. package/fesm2022/masmarino-gabarit-select.mjs +510 -0
  157. package/fesm2022/masmarino-gabarit-select.mjs.map +1 -0
  158. package/fesm2022/masmarino-gabarit-skeleton-list.mjs +189 -0
  159. package/fesm2022/masmarino-gabarit-skeleton-list.mjs.map +1 -0
  160. package/fesm2022/masmarino-gabarit-skeleton.mjs +109 -0
  161. package/fesm2022/masmarino-gabarit-skeleton.mjs.map +1 -0
  162. package/fesm2022/masmarino-gabarit-slider.mjs +239 -0
  163. package/fesm2022/masmarino-gabarit-slider.mjs.map +1 -0
  164. package/fesm2022/masmarino-gabarit-sparkline.mjs +276 -0
  165. package/fesm2022/masmarino-gabarit-sparkline.mjs.map +1 -0
  166. package/fesm2022/masmarino-gabarit-spinner.mjs +86 -0
  167. package/fesm2022/masmarino-gabarit-spinner.mjs.map +1 -0
  168. package/fesm2022/masmarino-gabarit-stat-grid.mjs +139 -0
  169. package/fesm2022/masmarino-gabarit-stat-grid.mjs.map +1 -0
  170. package/fesm2022/masmarino-gabarit-stat-tile.mjs +312 -0
  171. package/fesm2022/masmarino-gabarit-stat-tile.mjs.map +1 -0
  172. package/fesm2022/masmarino-gabarit-stepper.mjs +219 -0
  173. package/fesm2022/masmarino-gabarit-stepper.mjs.map +1 -0
  174. package/fesm2022/masmarino-gabarit-switch.mjs +151 -0
  175. package/fesm2022/masmarino-gabarit-switch.mjs.map +1 -0
  176. package/fesm2022/masmarino-gabarit-table.mjs +206 -0
  177. package/fesm2022/masmarino-gabarit-table.mjs.map +1 -0
  178. package/fesm2022/masmarino-gabarit-tabs.mjs +210 -0
  179. package/fesm2022/masmarino-gabarit-tabs.mjs.map +1 -0
  180. package/fesm2022/masmarino-gabarit-tag-input.mjs +288 -0
  181. package/fesm2022/masmarino-gabarit-tag-input.mjs.map +1 -0
  182. package/fesm2022/masmarino-gabarit-tag.mjs +155 -0
  183. package/fesm2022/masmarino-gabarit-tag.mjs.map +1 -0
  184. package/fesm2022/masmarino-gabarit-textarea.mjs +369 -0
  185. package/fesm2022/masmarino-gabarit-textarea.mjs.map +1 -0
  186. package/fesm2022/masmarino-gabarit-timeline-chart.mjs +521 -0
  187. package/fesm2022/masmarino-gabarit-timeline-chart.mjs.map +1 -0
  188. package/fesm2022/masmarino-gabarit-toaster.mjs +220 -0
  189. package/fesm2022/masmarino-gabarit-toaster.mjs.map +1 -0
  190. package/fesm2022/masmarino-gabarit-tooltip.mjs +182 -0
  191. package/fesm2022/masmarino-gabarit-tooltip.mjs.map +1 -0
  192. package/fesm2022/masmarino-gabarit-tree.mjs +258 -0
  193. package/fesm2022/masmarino-gabarit-tree.mjs.map +1 -0
  194. package/fesm2022/masmarino-gabarit-user-chip.mjs +106 -0
  195. package/fesm2022/masmarino-gabarit-user-chip.mjs.map +1 -0
  196. package/fesm2022/masmarino-gabarit.mjs +83 -24785
  197. package/fesm2022/masmarino-gabarit.mjs.map +1 -1
  198. package/file-upload/README.md +47 -0
  199. package/fonts/OFL-ibm-plex.txt +93 -0
  200. package/fonts/ibm-plex-mono-400.woff2 +0 -0
  201. package/fonts/ibm-plex-mono-500.woff2 +0 -0
  202. package/fonts/ibm-plex-sans-400.woff2 +0 -0
  203. package/fonts/ibm-plex-sans-500.woff2 +0 -0
  204. package/fonts/ibm-plex-sans-600.woff2 +0 -0
  205. package/fonts/ibm-plex-sans-condensed-600.woff2 +0 -0
  206. package/fonts/index.scss +28 -0
  207. package/funnel-chart/README.md +39 -0
  208. package/gauge-bar/README.md +35 -0
  209. package/git-field/README.md +34 -0
  210. package/icon/README.md +52 -0
  211. package/icon-marker/README.md +37 -0
  212. package/input/README.md +120 -0
  213. package/job-graph/README.md +76 -0
  214. package/job-status/README.md +34 -0
  215. package/line-chart/README.md +52 -0
  216. package/list-card/README.md +144 -0
  217. package/list-row/README.md +72 -0
  218. package/list-toolbar/README.md +52 -0
  219. package/menu/README.md +90 -0
  220. package/mfa-enrollment/README.md +189 -0
  221. package/mfa-settings/README.md +154 -0
  222. package/modal/README.md +72 -0
  223. package/nav-tabs/README.md +106 -0
  224. package/notification-dot/README.md +43 -0
  225. package/package.json +335 -1
  226. package/page-header/README.md +56 -0
  227. package/page-layout/README.md +76 -0
  228. package/pagination/README.md +73 -0
  229. package/panel/README.md +56 -0
  230. package/passkey-settings/README.md +120 -0
  231. package/pie-chart/README.md +85 -0
  232. package/popover/README.md +62 -0
  233. package/radio-group/README.md +47 -0
  234. package/save-status/README.md +44 -0
  235. package/search-bar/README.md +84 -0
  236. package/secret-reveal/README.md +60 -0
  237. package/segmented-control/README.md +79 -0
  238. package/select/README.md +61 -0
  239. package/skeleton/README.md +49 -0
  240. package/skeleton-list/README.md +40 -0
  241. package/slider/README.md +44 -0
  242. package/sparkline/README.md +37 -0
  243. package/spinner/README.md +41 -0
  244. package/src/lib/tokens/_a11y.scss +22 -0
  245. package/src/lib/tokens/_base.scss +31 -0
  246. package/src/lib/tokens/_palette.scss +52 -51
  247. package/src/lib/tokens/_semantic.scss +17 -124
  248. package/src/lib/tokens/_themes.scss +144 -0
  249. package/src/lib/tokens/_utilities.scss +10 -10
  250. package/src/lib/tokens/index.scss +3 -0
  251. package/stat-grid/README.md +47 -0
  252. package/stat-tile/README.md +75 -0
  253. package/stepper/README.md +67 -0
  254. package/switch/README.md +51 -0
  255. package/table/README.md +75 -0
  256. package/tabs/README.md +34 -0
  257. package/tag/README.md +34 -0
  258. package/tag-input/README.md +45 -0
  259. package/textarea/README.md +76 -0
  260. package/timeline-chart/README.md +49 -0
  261. package/toaster/README.md +92 -0
  262. package/tooltip/README.md +50 -0
  263. package/tree/README.md +79 -0
  264. package/types/masmarino-gabarit-accordion.d.ts +54 -0
  265. package/types/masmarino-gabarit-alert.d.ts +65 -0
  266. package/types/masmarino-gabarit-app-shell.d.ts +102 -0
  267. package/types/masmarino-gabarit-auth-activate.d.ts +70 -0
  268. package/types/masmarino-gabarit-auth-login.d.ts +63 -0
  269. package/types/masmarino-gabarit-auth-register.d.ts +66 -0
  270. package/types/masmarino-gabarit-auth-reset-password.d.ts +53 -0
  271. package/types/masmarino-gabarit-auth.d.ts +543 -0
  272. package/types/masmarino-gabarit-autocomplete.d.ts +139 -0
  273. package/types/masmarino-gabarit-avatar-group.d.ts +59 -0
  274. package/types/masmarino-gabarit-avatar.d.ts +31 -0
  275. package/types/masmarino-gabarit-badge.d.ts +139 -0
  276. package/types/masmarino-gabarit-bar-chart.d.ts +111 -0
  277. package/types/masmarino-gabarit-breadcrumb.d.ts +12 -0
  278. package/types/masmarino-gabarit-button.d.ts +108 -0
  279. package/types/masmarino-gabarit-card.d.ts +102 -0
  280. package/types/masmarino-gabarit-chart.d.ts +361 -0
  281. package/types/masmarino-gabarit-checkbox-group.d.ts +113 -0
  282. package/types/masmarino-gabarit-checkbox.d.ts +49 -0
  283. package/types/masmarino-gabarit-confirm-danger-modal.d.ts +94 -0
  284. package/types/masmarino-gabarit-copy-button.d.ts +111 -0
  285. package/types/masmarino-gabarit-copy-field.d.ts +64 -0
  286. package/types/masmarino-gabarit-date-picker.d.ts +397 -0
  287. package/types/masmarino-gabarit-description-list.d.ts +40 -0
  288. package/types/masmarino-gabarit-dimension-card.d.ts +55 -0
  289. package/types/masmarino-gabarit-disclosure.d.ts +44 -0
  290. package/types/masmarino-gabarit-divider.d.ts +20 -0
  291. package/types/masmarino-gabarit-docs.d.ts +20 -59
  292. package/types/masmarino-gabarit-drawer.d.ts +51 -0
  293. package/types/masmarino-gabarit-empty-state.d.ts +67 -0
  294. package/types/masmarino-gabarit-file-upload.d.ts +95 -0
  295. package/types/masmarino-gabarit-floating-panel.d.ts +7 -0
  296. package/types/masmarino-gabarit-format.d.ts +54 -0
  297. package/types/masmarino-gabarit-funnel-chart.d.ts +78 -0
  298. package/types/masmarino-gabarit-gauge-bar.d.ts +54 -0
  299. package/types/masmarino-gabarit-git-field.d.ts +39 -0
  300. package/types/masmarino-gabarit-icon-marker.d.ts +47 -0
  301. package/types/masmarino-gabarit-icon.d.ts +23 -0
  302. package/types/masmarino-gabarit-input.d.ts +181 -0
  303. package/types/masmarino-gabarit-job-graph.d.ts +63 -0
  304. package/types/masmarino-gabarit-job-status.d.ts +20 -0
  305. package/types/masmarino-gabarit-line-chart.d.ts +153 -0
  306. package/types/masmarino-gabarit-list-card.d.ts +87 -0
  307. package/types/masmarino-gabarit-list-row.d.ts +14 -0
  308. package/types/masmarino-gabarit-list-toolbar.d.ts +100 -0
  309. package/types/masmarino-gabarit-menu.d.ts +92 -0
  310. package/types/masmarino-gabarit-mfa-enrollment.d.ts +142 -0
  311. package/types/masmarino-gabarit-mfa-settings.d.ts +89 -0
  312. package/types/masmarino-gabarit-modal.d.ts +60 -0
  313. package/types/masmarino-gabarit-nav-tabs.d.ts +65 -0
  314. package/types/masmarino-gabarit-notification-dot.d.ts +34 -0
  315. package/types/masmarino-gabarit-page-header.d.ts +20 -0
  316. package/types/masmarino-gabarit-page-layout.d.ts +46 -0
  317. package/types/masmarino-gabarit-pagination.d.ts +109 -0
  318. package/types/masmarino-gabarit-panel.d.ts +21 -0
  319. package/types/masmarino-gabarit-passkey-settings.d.ts +94 -0
  320. package/types/masmarino-gabarit-pie-chart.d.ts +94 -0
  321. package/types/masmarino-gabarit-popover.d.ts +32 -0
  322. package/types/masmarino-gabarit-radio-group.d.ts +66 -0
  323. package/types/masmarino-gabarit-save-status.d.ts +39 -0
  324. package/types/masmarino-gabarit-search-bar.d.ts +183 -0
  325. package/types/masmarino-gabarit-secret-reveal.d.ts +95 -0
  326. package/types/masmarino-gabarit-segmented-control.d.ts +76 -0
  327. package/types/masmarino-gabarit-select.d.ts +145 -0
  328. package/types/masmarino-gabarit-skeleton-list.d.ts +54 -0
  329. package/types/masmarino-gabarit-skeleton.d.ts +26 -0
  330. package/types/masmarino-gabarit-slider.d.ts +73 -0
  331. package/types/masmarino-gabarit-sparkline.d.ts +70 -0
  332. package/types/masmarino-gabarit-spinner.d.ts +20 -0
  333. package/types/masmarino-gabarit-stat-grid.d.ts +39 -0
  334. package/types/masmarino-gabarit-stat-tile.d.ts +79 -0
  335. package/types/masmarino-gabarit-stepper.d.ts +67 -0
  336. package/types/masmarino-gabarit-switch.d.ts +42 -0
  337. package/types/masmarino-gabarit-table.d.ts +60 -0
  338. package/types/masmarino-gabarit-tabs.d.ts +40 -0
  339. package/types/masmarino-gabarit-tag-input.d.ts +78 -0
  340. package/types/masmarino-gabarit-tag.d.ts +35 -0
  341. package/types/masmarino-gabarit-textarea.d.ts +109 -0
  342. package/types/masmarino-gabarit-timeline-chart.d.ts +145 -0
  343. package/types/masmarino-gabarit-toaster.d.ts +62 -0
  344. package/types/masmarino-gabarit-tooltip.d.ts +38 -0
  345. package/types/masmarino-gabarit-tree.d.ts +71 -0
  346. package/types/masmarino-gabarit-user-chip.d.ts +26 -0
  347. package/types/masmarino-gabarit.d.ts +83 -6605
  348. package/user-chip/README.md +42 -0
@@ -0,0 +1,574 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input, isDevMode, signal } from "@angular/core";
3
+ import { CHART_CONTEXT, ChartAxis, ChartEmpty, ChartFrame, ChartLegend, ChartTable, ChartTooltip, areaPath, linePath, niceXDomain, niceYDomain, timeXDomain } from "@masmarino/gabarit/chart";
4
+ import { formatCompact, formatNumber } from "@masmarino/gabarit/format";
5
+ const DASH_ARRAYS = {
6
+ solid: "none",
7
+ dashed: "6 3",
8
+ dotted: "1 3"
9
+ };
10
+ const DEFAULT_PATTERNS = [
11
+ "solid",
12
+ "dashed",
13
+ "dotted"
14
+ ];
15
+ var LineSeries = class LineSeries {
16
+ series = input.required(...ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []);
17
+ area = input(false, ...ngDevMode ? [{ debugName: "area" }] : /* istanbul ignore next */ []);
18
+ context = inject(CHART_CONTEXT);
19
+ renderedLines = computed(() => {
20
+ const x = this.context.xScale();
21
+ const y = this.context.yScale();
22
+ const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight);
23
+ return this.series().map((oneSeries, index) => {
24
+ const points = oneSeries.points.map((p) => ({
25
+ x: x.map(p.x),
26
+ y: y.map(p.y)
27
+ }));
28
+ return {
29
+ label: oneSeries.label,
30
+ strokePath: linePath(points),
31
+ fillPath: areaPath(points, base),
32
+ colorIndex: index % 3 + 1,
33
+ dashArray: DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]]
34
+ };
35
+ });
36
+ }, ...ngDevMode ? [{ debugName: "renderedLines" }] : /* istanbul ignore next */ []);
37
+ activeDots = computed(() => {
38
+ const activeIndex = this.context.activeIndex();
39
+ if (activeIndex === null) return [];
40
+ const activeXValue = this.context.pointValues()[activeIndex];
41
+ if (activeXValue === void 0) return [];
42
+ const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue;
43
+ const x = this.context.xScale();
44
+ const y = this.context.yScale();
45
+ const dots = [];
46
+ this.series().forEach((oneSeries, seriesIndex) => {
47
+ const point = oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key);
48
+ if (point === void 0) return;
49
+ dots.push({
50
+ x: x.map(point.x),
51
+ y: y.map(point.y),
52
+ colorIndex: seriesIndex % 3 + 1
53
+ });
54
+ });
55
+ return dots;
56
+ }, ...ngDevMode ? [{ debugName: "activeDots" }] : /* istanbul ignore next */ []);
57
+ static ɵfac = i0.ɵɵngDeclareFactory({
58
+ minVersion: "12.0.0",
59
+ version: "22.2.0",
60
+ ngImport: i0,
61
+ type: LineSeries,
62
+ deps: [],
63
+ target: i0.ɵɵFactoryTarget.Component
64
+ });
65
+ static ɵcmp = i0.ɵɵngDeclareComponent({
66
+ minVersion: "17.0.0",
67
+ version: "22.2.0",
68
+ type: LineSeries,
69
+ isStandalone: true,
70
+ selector: "g[gbtLineSeries]",
71
+ inputs: {
72
+ series: {
73
+ classPropertyName: "series",
74
+ publicName: "series",
75
+ isSignal: true,
76
+ isRequired: true,
77
+ transformFunction: null
78
+ },
79
+ area: {
80
+ classPropertyName: "area",
81
+ publicName: "area",
82
+ isSignal: true,
83
+ isRequired: false,
84
+ transformFunction: null
85
+ }
86
+ },
87
+ host: { attributes: { "aria-hidden": "true" } },
88
+ ngImport: i0,
89
+ template: "@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n",
90
+ styles: [".gbt-line-series__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.gbt-line-series__line[data-series=\"1\"]{stroke:var(--chart-series-1-base)}.gbt-line-series__line[data-series=\"2\"]{stroke:var(--chart-series-2-base)}.gbt-line-series__line[data-series=\"3\"]{stroke:var(--chart-series-3-base)}.gbt-line-series__area{stroke:none;opacity:.15}.gbt-line-series__area[data-series=\"1\"]{fill:var(--chart-series-1-base)}.gbt-line-series__area[data-series=\"2\"]{fill:var(--chart-series-2-base)}.gbt-line-series__area[data-series=\"3\"]{fill:var(--chart-series-3-base)}.gbt-line-series__dot{stroke:var(--bg-principal);stroke-width:2;pointer-events:none}.gbt-line-series__dot[data-series=\"1\"]{fill:var(--chart-series-1-base)}.gbt-line-series__dot[data-series=\"2\"]{fill:var(--chart-series-2-base)}.gbt-line-series__dot[data-series=\"3\"]{fill:var(--chart-series-3-base)}\n"],
91
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
92
+ });
93
+ };
94
+ i0.ɵɵngDeclareClassMetadata({
95
+ minVersion: "12.0.0",
96
+ version: "22.2.0",
97
+ ngImport: i0,
98
+ type: LineSeries,
99
+ decorators: [{
100
+ type: Component,
101
+ args: [{
102
+ selector: "g[gbtLineSeries]",
103
+ standalone: true,
104
+ imports: [],
105
+ changeDetection: ChangeDetectionStrategy.OnPush,
106
+ host: { "aria-hidden": "true" },
107
+ template: "@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n",
108
+ styles: [".gbt-line-series__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.gbt-line-series__line[data-series=\"1\"]{stroke:var(--chart-series-1-base)}.gbt-line-series__line[data-series=\"2\"]{stroke:var(--chart-series-2-base)}.gbt-line-series__line[data-series=\"3\"]{stroke:var(--chart-series-3-base)}.gbt-line-series__area{stroke:none;opacity:.15}.gbt-line-series__area[data-series=\"1\"]{fill:var(--chart-series-1-base)}.gbt-line-series__area[data-series=\"2\"]{fill:var(--chart-series-2-base)}.gbt-line-series__area[data-series=\"3\"]{fill:var(--chart-series-3-base)}.gbt-line-series__dot{stroke:var(--bg-principal);stroke-width:2;pointer-events:none}.gbt-line-series__dot[data-series=\"1\"]{fill:var(--chart-series-1-base)}.gbt-line-series__dot[data-series=\"2\"]{fill:var(--chart-series-2-base)}.gbt-line-series__dot[data-series=\"3\"]{fill:var(--chart-series-3-base)}\n"]
109
+ }]
110
+ }],
111
+ propDecorators: {
112
+ series: [{
113
+ type: i0.Input,
114
+ args: [{
115
+ isSignal: true,
116
+ alias: "series",
117
+ required: true
118
+ }]
119
+ }],
120
+ area: [{
121
+ type: i0.Input,
122
+ args: [{
123
+ isSignal: true,
124
+ alias: "area",
125
+ required: false
126
+ }]
127
+ }]
128
+ }
129
+ });
130
+ const MAX_SERIES = 3;
131
+ const ABSENT = "—";
132
+ var LineChart = class LineChart {
133
+ series = input.required(...ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []);
134
+ xKind = input.required(...ngDevMode ? [{ debugName: "xKind" }] : /* istanbul ignore next */ []);
135
+ locale = input.required(...ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []);
136
+ label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
137
+ tableCaption = input.required(...ngDevMode ? [{ debugName: "tableCaption" }] : /* istanbul ignore next */ []);
138
+ xColumn = input.required(...ngDevMode ? [{ debugName: "xColumn" }] : /* istanbul ignore next */ []);
139
+ emptyMessage = input.required(...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
140
+ area = input(false, ...ngDevMode ? [{ debugName: "area" }] : /* istanbul ignore next */ []);
141
+ yZero = input(true, ...ngDevMode ? [{ debugName: "yZero" }] : /* istanbul ignore next */ []);
142
+ yTickCount = input(5, ...ngDevMode ? [{ debugName: "yTickCount" }] : /* istanbul ignore next */ []);
143
+ xTickCount = input(5, ...ngDevMode ? [{ debugName: "xTickCount" }] : /* istanbul ignore next */ []);
144
+ size = input(null, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
145
+ heading = input("", ...ngDevMode ? [{ debugName: "heading" }] : /* istanbul ignore next */ []);
146
+ headingLevel = input(2, ...ngDevMode ? [{ debugName: "headingLevel" }] : /* istanbul ignore next */ []);
147
+ headline = input("", ...ngDevMode ? [{ debugName: "headline" }] : /* istanbul ignore next */ []);
148
+ trend = input("", ...ngDevMode ? [{ debugName: "trend" }] : /* istanbul ignore next */ []);
149
+ activeIndex = signal(null, ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
150
+ hasData = computed(() => this.series().some((s) => s.points.length > 0), ...ngDevMode ? [{ debugName: "hasData" }] : /* istanbul ignore next */ []);
151
+ xSpec = computed(() => this.xKind() === "time" ? {
152
+ kind: "time",
153
+ domain: timeXDomain(this.series())
154
+ } : {
155
+ kind: "linear",
156
+ domain: niceXDomain(this.series(), this.xTickCount())
157
+ }, ...ngDevMode ? [{ debugName: "xSpec" }] : /* istanbul ignore next */ []);
158
+ ySpec = computed(() => ({
159
+ kind: "linear",
160
+ domain: niceYDomain(this.series(), this.yZero(), this.yTickCount())
161
+ }), ...ngDevMode ? [{ debugName: "ySpec" }] : /* istanbul ignore next */ []);
162
+ legendEntries = computed(() => {
163
+ const index = this.activeIndex();
164
+ const xValues = this.xValues();
165
+ const x = index === null ? xValues[xValues.length - 1] : xValues[index];
166
+ return this.series().map((s, seriesIndex) => ({
167
+ label: s.label,
168
+ pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],
169
+ value: x === void 0 ? ABSENT : this.displayValue(s, x)
170
+ }));
171
+ }, ...ngDevMode ? [{ debugName: "legendEntries" }] : /* istanbul ignore next */ []);
172
+ publicXValues = computed(() => this.xValues(), ...ngDevMode ? [{ debugName: "publicXValues" }] : /* istanbul ignore next */ []);
173
+ tooltipPoints = computed(() => this.xValues().map((x) => ({
174
+ x,
175
+ header: this.formatX(x),
176
+ rows: this.series().map((s, index) => ({
177
+ label: s.label,
178
+ value: this.displayValue(s, x),
179
+ series: index % 3 + 1,
180
+ pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]
181
+ }))
182
+ })), ...ngDevMode ? [{ debugName: "tooltipPoints" }] : /* istanbul ignore next */ []);
183
+ tableColumns = computed(() => [this.xColumn(), ...this.series().map((s) => s.label)], ...ngDevMode ? [{ debugName: "tableColumns" }] : /* istanbul ignore next */ []);
184
+ tableRows = computed(() => this.xValues().map((x) => [this.formatX(x), ...this.series().map((s) => this.displayValue(s, x))]), ...ngDevMode ? [{ debugName: "tableRows" }] : /* istanbul ignore next */ []);
185
+ formatX = (x) => x instanceof Date ? new Intl.DateTimeFormat(this.locale(), {
186
+ dateStyle: "short",
187
+ timeStyle: "short",
188
+ timeZone: "UTC"
189
+ }).format(x) : formatCompact(x, this.locale());
190
+ xValues = computed(() => {
191
+ const seen = /* @__PURE__ */ new Map();
192
+ for (const oneSeries of this.series()) for (const point of oneSeries.points) seen.set(point.x instanceof Date ? point.x.getTime() : point.x, point.x);
193
+ return [...seen.entries()].sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0).map(([, x]) => x);
194
+ }, ...ngDevMode ? [{ debugName: "xValues" }] : /* istanbul ignore next */ []);
195
+ findPoint(oneSeries, x) {
196
+ const key = x instanceof Date ? x.getTime() : x;
197
+ return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null;
198
+ }
199
+ displayValue(oneSeries, x) {
200
+ const point = this.findPoint(oneSeries, x);
201
+ if (point === null) return ABSENT;
202
+ return point.display ?? formatNumber(point.y, this.locale());
203
+ }
204
+ constructor() {
205
+ if (isDevMode()) effect(() => {
206
+ const count = this.series().length;
207
+ if (count > MAX_SERIES) console.warn(`gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`);
208
+ });
209
+ }
210
+ static ɵfac = i0.ɵɵngDeclareFactory({
211
+ minVersion: "12.0.0",
212
+ version: "22.2.0",
213
+ ngImport: i0,
214
+ type: LineChart,
215
+ deps: [],
216
+ target: i0.ɵɵFactoryTarget.Component
217
+ });
218
+ static ɵcmp = i0.ɵɵngDeclareComponent({
219
+ minVersion: "17.0.0",
220
+ version: "22.2.0",
221
+ type: LineChart,
222
+ isStandalone: true,
223
+ selector: "gbt-line-chart",
224
+ inputs: {
225
+ series: {
226
+ classPropertyName: "series",
227
+ publicName: "series",
228
+ isSignal: true,
229
+ isRequired: true,
230
+ transformFunction: null
231
+ },
232
+ xKind: {
233
+ classPropertyName: "xKind",
234
+ publicName: "xKind",
235
+ isSignal: true,
236
+ isRequired: true,
237
+ transformFunction: null
238
+ },
239
+ locale: {
240
+ classPropertyName: "locale",
241
+ publicName: "locale",
242
+ isSignal: true,
243
+ isRequired: true,
244
+ transformFunction: null
245
+ },
246
+ label: {
247
+ classPropertyName: "label",
248
+ publicName: "label",
249
+ isSignal: true,
250
+ isRequired: true,
251
+ transformFunction: null
252
+ },
253
+ tableCaption: {
254
+ classPropertyName: "tableCaption",
255
+ publicName: "tableCaption",
256
+ isSignal: true,
257
+ isRequired: true,
258
+ transformFunction: null
259
+ },
260
+ xColumn: {
261
+ classPropertyName: "xColumn",
262
+ publicName: "xColumn",
263
+ isSignal: true,
264
+ isRequired: true,
265
+ transformFunction: null
266
+ },
267
+ emptyMessage: {
268
+ classPropertyName: "emptyMessage",
269
+ publicName: "emptyMessage",
270
+ isSignal: true,
271
+ isRequired: true,
272
+ transformFunction: null
273
+ },
274
+ area: {
275
+ classPropertyName: "area",
276
+ publicName: "area",
277
+ isSignal: true,
278
+ isRequired: false,
279
+ transformFunction: null
280
+ },
281
+ yZero: {
282
+ classPropertyName: "yZero",
283
+ publicName: "yZero",
284
+ isSignal: true,
285
+ isRequired: false,
286
+ transformFunction: null
287
+ },
288
+ yTickCount: {
289
+ classPropertyName: "yTickCount",
290
+ publicName: "yTickCount",
291
+ isSignal: true,
292
+ isRequired: false,
293
+ transformFunction: null
294
+ },
295
+ xTickCount: {
296
+ classPropertyName: "xTickCount",
297
+ publicName: "xTickCount",
298
+ isSignal: true,
299
+ isRequired: false,
300
+ transformFunction: null
301
+ },
302
+ size: {
303
+ classPropertyName: "size",
304
+ publicName: "size",
305
+ isSignal: true,
306
+ isRequired: false,
307
+ transformFunction: null
308
+ },
309
+ heading: {
310
+ classPropertyName: "heading",
311
+ publicName: "heading",
312
+ isSignal: true,
313
+ isRequired: false,
314
+ transformFunction: null
315
+ },
316
+ headingLevel: {
317
+ classPropertyName: "headingLevel",
318
+ publicName: "headingLevel",
319
+ isSignal: true,
320
+ isRequired: false,
321
+ transformFunction: null
322
+ },
323
+ headline: {
324
+ classPropertyName: "headline",
325
+ publicName: "headline",
326
+ isSignal: true,
327
+ isRequired: false,
328
+ transformFunction: null
329
+ },
330
+ trend: {
331
+ classPropertyName: "trend",
332
+ publicName: "trend",
333
+ isSignal: true,
334
+ isRequired: false,
335
+ transformFunction: null
336
+ }
337
+ },
338
+ ngImport: i0,
339
+ template: "<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n",
340
+ styles: [":host{display:block;height:100%}gbt-chart-frame{display:block;height:100%}\n"],
341
+ dependencies: [
342
+ {
343
+ kind: "component",
344
+ type: ChartFrame,
345
+ selector: "gbt-chart-frame",
346
+ inputs: [
347
+ "label",
348
+ "heading",
349
+ "headingLevel",
350
+ "headline",
351
+ "trend",
352
+ "x",
353
+ "y",
354
+ "margin",
355
+ "size",
356
+ "pointValues"
357
+ ],
358
+ outputs: ["activeIndexChange"]
359
+ },
360
+ {
361
+ kind: "component",
362
+ type: ChartAxis,
363
+ selector: "g[gbtChartAxis]",
364
+ inputs: [
365
+ "axis",
366
+ "locale",
367
+ "tickCount",
368
+ "format",
369
+ "grid"
370
+ ]
371
+ },
372
+ {
373
+ kind: "component",
374
+ type: ChartTooltip,
375
+ selector: "gbt-chart-tooltip",
376
+ inputs: ["points"]
377
+ },
378
+ {
379
+ kind: "component",
380
+ type: ChartLegend,
381
+ selector: "gbt-chart-legend",
382
+ inputs: [
383
+ "entries",
384
+ "interactive",
385
+ "activeIndex"
386
+ ],
387
+ outputs: ["activeIndexChange"]
388
+ },
389
+ {
390
+ kind: "component",
391
+ type: ChartEmpty,
392
+ selector: "gbt-chart-empty",
393
+ inputs: ["message", "actionLabel"],
394
+ outputs: ["action"]
395
+ },
396
+ {
397
+ kind: "component",
398
+ type: ChartTable,
399
+ selector: "gbt-chart-table",
400
+ inputs: [
401
+ "caption",
402
+ "columns",
403
+ "rows"
404
+ ]
405
+ },
406
+ {
407
+ kind: "component",
408
+ type: LineSeries,
409
+ selector: "g[gbtLineSeries]",
410
+ inputs: ["series", "area"]
411
+ }
412
+ ],
413
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
414
+ });
415
+ };
416
+ i0.ɵɵngDeclareClassMetadata({
417
+ minVersion: "12.0.0",
418
+ version: "22.2.0",
419
+ ngImport: i0,
420
+ type: LineChart,
421
+ decorators: [{
422
+ type: Component,
423
+ args: [{
424
+ selector: "gbt-line-chart",
425
+ standalone: true,
426
+ imports: [
427
+ ChartFrame,
428
+ ChartAxis,
429
+ ChartTooltip,
430
+ ChartLegend,
431
+ ChartEmpty,
432
+ ChartTable,
433
+ LineSeries
434
+ ],
435
+ changeDetection: ChangeDetectionStrategy.OnPush,
436
+ template: "<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n",
437
+ styles: [":host{display:block;height:100%}gbt-chart-frame{display:block;height:100%}\n"]
438
+ }]
439
+ }],
440
+ ctorParameters: () => [],
441
+ propDecorators: {
442
+ series: [{
443
+ type: i0.Input,
444
+ args: [{
445
+ isSignal: true,
446
+ alias: "series",
447
+ required: true
448
+ }]
449
+ }],
450
+ xKind: [{
451
+ type: i0.Input,
452
+ args: [{
453
+ isSignal: true,
454
+ alias: "xKind",
455
+ required: true
456
+ }]
457
+ }],
458
+ locale: [{
459
+ type: i0.Input,
460
+ args: [{
461
+ isSignal: true,
462
+ alias: "locale",
463
+ required: true
464
+ }]
465
+ }],
466
+ label: [{
467
+ type: i0.Input,
468
+ args: [{
469
+ isSignal: true,
470
+ alias: "label",
471
+ required: true
472
+ }]
473
+ }],
474
+ tableCaption: [{
475
+ type: i0.Input,
476
+ args: [{
477
+ isSignal: true,
478
+ alias: "tableCaption",
479
+ required: true
480
+ }]
481
+ }],
482
+ xColumn: [{
483
+ type: i0.Input,
484
+ args: [{
485
+ isSignal: true,
486
+ alias: "xColumn",
487
+ required: true
488
+ }]
489
+ }],
490
+ emptyMessage: [{
491
+ type: i0.Input,
492
+ args: [{
493
+ isSignal: true,
494
+ alias: "emptyMessage",
495
+ required: true
496
+ }]
497
+ }],
498
+ area: [{
499
+ type: i0.Input,
500
+ args: [{
501
+ isSignal: true,
502
+ alias: "area",
503
+ required: false
504
+ }]
505
+ }],
506
+ yZero: [{
507
+ type: i0.Input,
508
+ args: [{
509
+ isSignal: true,
510
+ alias: "yZero",
511
+ required: false
512
+ }]
513
+ }],
514
+ yTickCount: [{
515
+ type: i0.Input,
516
+ args: [{
517
+ isSignal: true,
518
+ alias: "yTickCount",
519
+ required: false
520
+ }]
521
+ }],
522
+ xTickCount: [{
523
+ type: i0.Input,
524
+ args: [{
525
+ isSignal: true,
526
+ alias: "xTickCount",
527
+ required: false
528
+ }]
529
+ }],
530
+ size: [{
531
+ type: i0.Input,
532
+ args: [{
533
+ isSignal: true,
534
+ alias: "size",
535
+ required: false
536
+ }]
537
+ }],
538
+ heading: [{
539
+ type: i0.Input,
540
+ args: [{
541
+ isSignal: true,
542
+ alias: "heading",
543
+ required: false
544
+ }]
545
+ }],
546
+ headingLevel: [{
547
+ type: i0.Input,
548
+ args: [{
549
+ isSignal: true,
550
+ alias: "headingLevel",
551
+ required: false
552
+ }]
553
+ }],
554
+ headline: [{
555
+ type: i0.Input,
556
+ args: [{
557
+ isSignal: true,
558
+ alias: "headline",
559
+ required: false
560
+ }]
561
+ }],
562
+ trend: [{
563
+ type: i0.Input,
564
+ args: [{
565
+ isSignal: true,
566
+ alias: "trend",
567
+ required: false
568
+ }]
569
+ }]
570
+ }
571
+ });
572
+ export { LineChart, LineSeries };
573
+
574
+ //# sourceMappingURL=masmarino-gabarit-line-chart.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masmarino-gabarit-line-chart.mjs","names":[],"sources":["../../../projects/gabarit/line-chart/line-series.ts","../../../projects/gabarit/line-chart/line-series.html","../../../projects/gabarit/line-chart/line-chart.ts","../../../projects/gabarit/line-chart/line-chart.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core'\nimport { CHART_CONTEXT } from '@masmarino/gabarit/chart'\nimport { areaPath, linePath } from '@masmarino/gabarit/chart'\nimport { type Scale } from '@masmarino/gabarit/chart'\nimport type { ChartSeries } from '@masmarino/gabarit/chart'\n\ninterface RenderedSeries {\n label: string\n strokePath: string\n fillPath: string\n\n colorIndex: number\n dashArray: string\n}\n\ninterface ActiveDot {\n x: number\n y: number\n colorIndex: number\n}\n\nconst DASH_ARRAYS: Record<NonNullable<ChartSeries<unknown>['pattern']>, string> = {\n solid: 'none',\n dashed: '6 3',\n dotted: '1 3',\n}\n\nexport const DEFAULT_PATTERNS: NonNullable<ChartSeries<unknown>['pattern']>[] = [\n 'solid',\n 'dashed',\n 'dotted',\n]\n\n@Component({\n selector: 'g[gbtLineSeries]',\n standalone: true,\n imports: [],\n templateUrl: './line-series.html',\n styleUrl: './line-series.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true' },\n})\nexport class LineSeries<X> {\n series = input.required<ChartSeries<X>[]>()\n area = input(false)\n\n private readonly context = inject(CHART_CONTEXT)\n\n protected readonly renderedLines = computed<RenderedSeries[]>(() => {\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const base = Math.min(Math.max(y.map(0), 0), this.context.box().innerHeight)\n\n return this.series().map((oneSeries, index) => {\n const points = oneSeries.points.map((p) => ({\n x: x.map(p.x as never),\n y: y.map(p.y),\n }))\n return {\n label: oneSeries.label,\n strokePath: linePath(points),\n fillPath: areaPath(points, base),\n colorIndex: (index % 3) + 1,\n dashArray:\n DASH_ARRAYS[oneSeries.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length]],\n }\n })\n })\n\n protected readonly activeDots = computed<ActiveDot[]>(() => {\n const activeIndex = this.context.activeIndex()\n if (activeIndex === null) return []\n const activeXValue = this.context.pointValues()[activeIndex]\n if (activeXValue === undefined) return []\n\n const key = activeXValue instanceof Date ? activeXValue.getTime() : activeXValue\n const x = this.context.xScale() as Scale<never>\n const y = this.context.yScale()\n\n const dots: ActiveDot[] = []\n this.series().forEach((oneSeries, seriesIndex) => {\n const point = oneSeries.points.find(\n (p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key,\n )\n if (point === undefined) return\n dots.push({\n x: x.map(point.x as never),\n y: y.map(point.y),\n colorIndex: (seriesIndex % 3) + 1,\n })\n })\n return dots\n })\n}\n","@for (renderedLine of renderedLines(); track $index) {\n @if (area()) {\n <svg:path\n class=\"gbt-line-series__area\"\n [attr.d]=\"renderedLine.fillPath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n />\n }\n <svg:path\n class=\"gbt-line-series__line\"\n [attr.d]=\"renderedLine.strokePath\"\n [attr.data-series]=\"renderedLine.colorIndex\"\n [attr.stroke-dasharray]=\"renderedLine.dashArray\"\n />\n}\n@for (dot of activeDots(); track $index) {\n <svg:circle\n class=\"gbt-line-series__dot\"\n [attr.cx]=\"dot.x\"\n [attr.cy]=\"dot.y\"\n r=\"4\"\n [attr.data-series]=\"dot.colorIndex\"\n />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n isDevMode,\n signal,\n} from '@angular/core'\nimport { ChartFrame } from '@masmarino/gabarit/chart'\nimport { ChartAxis } from '@masmarino/gabarit/chart'\nimport { ChartTooltip, type TooltipPoint } from '@masmarino/gabarit/chart'\nimport { ChartLegend, type LegendEntry } from '@masmarino/gabarit/chart'\nimport { ChartEmpty } from '@masmarino/gabarit/chart'\nimport { ChartTable } from '@masmarino/gabarit/chart'\nimport { DEFAULT_PATTERNS, LineSeries } from './line-series'\nimport { formatCompact, formatNumber } from '@masmarino/gabarit/format'\nimport type { AxisSpec, LinearAxisSpec, PointValue } from '@masmarino/gabarit/chart'\nimport {\n niceXDomain,\n niceYDomain,\n timeXDomain,\n type ChartPoint,\n type ChartSeries,\n} from '@masmarino/gabarit/chart'\n\nconst MAX_SERIES = 3\n\nconst ABSENT = '—'\n\n@Component({\n selector: 'gbt-line-chart',\n standalone: true,\n imports: [ChartFrame, ChartAxis, ChartTooltip, ChartLegend, ChartEmpty, ChartTable, LineSeries],\n templateUrl: './line-chart.html',\n styleUrl: './line-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineChart<X extends number | Date> {\n series = input.required<ChartSeries<X>[]>()\n xKind = input.required<'linear' | 'time'>()\n locale = input.required<string>()\n label = input.required<string>()\n tableCaption = input.required<string>()\n xColumn = input.required<string>()\n emptyMessage = input.required<string>()\n area = input(false)\n yZero = input(true)\n yTickCount = input(5)\n xTickCount = input(5)\n size = input<{ width: number; height: number } | null>(null)\n heading = input('')\n headingLevel = input<1 | 2 | 3 | 4 | 5 | 6>(2)\n headline = input('')\n trend = input('')\n\n protected readonly activeIndex = signal<number | null>(null)\n\n protected readonly hasData = computed(() => this.series().some((s) => s.points.length > 0))\n\n protected readonly xSpec = computed<AxisSpec>(() =>\n this.xKind() === 'time'\n ? { kind: 'time', domain: timeXDomain(this.series() as ChartSeries<Date>[]) }\n : {\n kind: 'linear',\n domain: niceXDomain(this.series() as ChartSeries<number>[], this.xTickCount()),\n },\n )\n\n protected readonly ySpec = computed<LinearAxisSpec>(() => ({\n kind: 'linear',\n domain: niceYDomain(this.series(), this.yZero(), this.yTickCount()),\n }))\n\n protected readonly legendEntries = computed<LegendEntry[]>(() => {\n const index = this.activeIndex()\n const xValues = this.xValues()\n\n const x = index === null ? xValues[xValues.length - 1] : xValues[index]\n return this.series().map((s, seriesIndex) => ({\n label: s.label,\n\n pattern: s.pattern ?? DEFAULT_PATTERNS[seriesIndex % DEFAULT_PATTERNS.length],\n value: x === undefined ? ABSENT : this.displayValue(s, x),\n }))\n })\n\n protected readonly publicXValues = computed<PointValue[]>(() => this.xValues())\n\n protected readonly tooltipPoints = computed<TooltipPoint<X>[]>(() =>\n this.xValues().map((x) => ({\n x,\n header: this.formatX(x),\n rows: this.series().map((s, index) => ({\n label: s.label,\n value: this.displayValue(s, x),\n series: ((index % 3) + 1) as 1 | 2 | 3,\n pattern: s.pattern ?? DEFAULT_PATTERNS[index % DEFAULT_PATTERNS.length],\n })),\n })),\n )\n\n protected readonly tableColumns = computed(() => [\n this.xColumn(),\n ...this.series().map((s) => s.label),\n ])\n\n protected readonly tableRows = computed<(string | number)[][]>(() =>\n this.xValues().map((x) => [\n this.formatX(x),\n ...this.series().map((s) => this.displayValue(s, x)),\n ]),\n )\n\n private readonly formatX = (x: X): string =>\n x instanceof Date\n ? new Intl.DateTimeFormat(this.locale(), {\n dateStyle: 'short',\n timeStyle: 'short',\n timeZone: 'UTC',\n }).format(x)\n : formatCompact(x as number, this.locale())\n\n private readonly xValues = computed<X[]>(() => {\n const seen = new Map<number | string, X>()\n for (const oneSeries of this.series()) {\n for (const point of oneSeries.points) {\n seen.set(point.x instanceof Date ? point.x.getTime() : (point.x as number), point.x)\n }\n }\n return [...seen.entries()]\n .sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n .map(([, x]) => x)\n })\n\n private findPoint(oneSeries: ChartSeries<X>, x: X): ChartPoint<X> | null {\n const key = x instanceof Date ? x.getTime() : x\n return oneSeries.points.find((p) => (p.x instanceof Date ? p.x.getTime() : p.x) === key) ?? null\n }\n\n private displayValue(oneSeries: ChartSeries<X>, x: X): string {\n const point = this.findPoint(oneSeries, x)\n if (point === null) return ABSENT\n return point.display ?? formatNumber(point.y, this.locale())\n }\n\n constructor() {\n if (isDevMode()) {\n effect(() => {\n const count = this.series().length\n if (count > MAX_SERIES) {\n console.warn(\n `gbt-line-chart: ${count} series received for ${MAX_SERIES} distinguishable colors. The palette cycles.`,\n )\n }\n })\n }\n }\n}\n","<gbt-chart-frame\n [label]=\"label()\"\n [x]=\"xSpec()\"\n [y]=\"ySpec()\"\n [pointValues]=\"publicXValues()\"\n [size]=\"size()\"\n [heading]=\"heading()\"\n [headingLevel]=\"headingLevel()\"\n [headline]=\"headline()\"\n [trend]=\"trend()\"\n (activeIndexChange)=\"activeIndex.set($event)\"\n>\n <svg:g gbtChartLayer>\n <svg:g gbtChartAxis axis=\"y\" [locale]=\"locale()\" [tickCount]=\"yTickCount()\" grid></svg:g>\n <svg:g gbtChartAxis axis=\"x\" [locale]=\"locale()\" [tickCount]=\"xTickCount()\"></svg:g>\n <svg:g gbtLineSeries [series]=\"series()\" [area]=\"area()\"></svg:g>\n </svg:g>\n <gbt-chart-tooltip [points]=\"tooltipPoints()\" />\n @if (hasData()) {\n <gbt-chart-table [caption]=\"tableCaption()\" [columns]=\"tableColumns()\" [rows]=\"tableRows()\" />\n } @else {\n <gbt-chart-empty [message]=\"emptyMessage()\" />\n }\n</gbt-chart-frame>\n@if (series().length > 1) {\n <gbt-chart-legend [entries]=\"legendEntries()\" />\n}\n"],"mappings":"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"}