@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,144 @@
1
+ // The themes as mixins, with no output of their own: _semantic puts them on :root, and the parts drawn
2
+ // on the graphite frame (the shell's rail and bar, the sign-in page) take the frame's.
3
+ //
4
+ // Every text token reaches 7:1 on the page and on a panel (contrast.spec.ts), which is why a few of
5
+ // them sit a shade darker (or lighter, in the dark) than the marks of the same colour. The status
6
+ // tints are translucent, so they take the colour of the ground they sit on.
7
+
8
+ @mixin light-tokens {
9
+ --primary: var(--slate-900);
10
+ --primary-hover: #383d43;
11
+ --bg-principal: var(--slate-0);
12
+ --bg-panel: var(--slate-50);
13
+ --bg-hover: rgba(16, 21, 28, 0.07);
14
+ --bg-track: var(--slate-200);
15
+ --bg-inverse: var(--slate-900);
16
+
17
+ // The edge of a field or a control, 3:1 on the page (WCAG 1.4.11); the hairlines stay lighter.
18
+ --border-color: var(--slate-500);
19
+ --gbt-hairline: var(--slate-300);
20
+ --gbt-card-border: var(--slate-300);
21
+
22
+ --text-primary: var(--slate-900);
23
+ --text-secondary: var(--slate-700);
24
+ --text-discret: var(--slate-600);
25
+ --text-on-color: var(--slate-0);
26
+ --text-on-primary: var(--slate-0);
27
+ --text-on-error: var(--slate-0);
28
+
29
+ --accent: var(--rust-500);
30
+ --accent-text: var(--rust-600);
31
+ --focus-ring: var(--rust-500);
32
+
33
+ --color-success-base: var(--patina-600);
34
+ --color-success-text: var(--patina-700);
35
+ --color-success-hover: #146b50;
36
+ --color-success-bg: rgba(21, 128, 93, 0.12);
37
+ --color-success-bg-text: var(--patina-800);
38
+ --color-success-vivid-base: var(--patina-600);
39
+
40
+ --color-warning-base: var(--amber-600);
41
+ --color-warning-text: var(--amber-700);
42
+ --color-warning-hover: #7e4d09;
43
+ --color-warning-bg: rgba(154, 91, 4, 0.1);
44
+ --color-warning-bg-text: var(--amber-800);
45
+ --color-warning-vivid-base: var(--amber-600);
46
+
47
+ --color-error-base: var(--red-600);
48
+ --color-error-fill: var(--red-700);
49
+ --color-error-text: var(--red-750);
50
+ --color-error-hover: #842b27;
51
+ --color-error-bg: rgba(194, 58, 50, 0.1);
52
+ --color-error-bg-text: var(--red-800);
53
+ --color-error-vivid-base: var(--red-600);
54
+
55
+ --color-info-bg: rgba(47, 73, 201, 0.09);
56
+ --color-info-bg-text: var(--indigo-800);
57
+ --color-info-vivid-base: var(--indigo-600);
58
+
59
+ --chart-series-1-base: #bd8200;
60
+ --chart-series-2-base: #009e73;
61
+ --chart-series-3-base: #0072b2;
62
+ --chart-series-4-base: #a6410f;
63
+ --chart-series-5-base: #9c3f78;
64
+ --chart-series-6-base: #5b4fb0;
65
+ --chart-grid: var(--slate-300);
66
+
67
+ --site-shadow-sm: none;
68
+ --site-shadow-md: 0 0 0 1px var(--slate-400);
69
+ --site-shadow-lg: 0 0 0 1px var(--slate-400), 0 12px 32px rgba(16, 21, 28, 0.16);
70
+ }
71
+
72
+ @mixin dark-tokens {
73
+ --primary: var(--graphite-100);
74
+ --primary-hover: #c0c5cb;
75
+ --bg-principal: var(--graphite-850);
76
+ --bg-panel: var(--graphite-900);
77
+ --bg-hover: rgba(231, 235, 241, 0.07);
78
+ --bg-track: var(--graphite-700);
79
+ --bg-inverse: var(--graphite-100);
80
+
81
+ --border-color: var(--graphite-500);
82
+ --gbt-hairline: rgba(205, 215, 230, 0.12);
83
+ --gbt-card-border: rgba(205, 215, 230, 0.12);
84
+
85
+ --text-primary: var(--graphite-100);
86
+ --text-secondary: var(--graphite-300);
87
+ --text-discret: var(--graphite-400);
88
+ --text-on-color: var(--graphite-1000);
89
+ --text-on-primary: var(--graphite-1000);
90
+ --text-on-error: var(--graphite-1000);
91
+
92
+ --accent: var(--rust-400);
93
+ --accent-text: var(--rust-300);
94
+ --focus-ring: var(--rust-400);
95
+
96
+ --color-success-base: var(--patina-400);
97
+ --color-success-text: var(--patina-400);
98
+ --color-success-hover: #61c8a7;
99
+ --color-success-bg: rgba(63, 191, 149, 0.16);
100
+ --color-success-bg-text: var(--patina-300);
101
+ --color-success-vivid-base: var(--patina-400);
102
+
103
+ --color-warning-base: var(--amber-400);
104
+ --color-warning-text: var(--amber-400);
105
+ --color-warning-hover: #f2bd61;
106
+ --color-warning-bg: rgba(245, 177, 61, 0.14);
107
+ --color-warning-bg-text: var(--amber-300);
108
+ --color-warning-vivid-base: var(--amber-400);
109
+
110
+ --color-error-base: var(--red-400);
111
+ --color-error-fill: var(--red-400);
112
+ --color-error-text: var(--red-300);
113
+ --color-error-hover: #f09994;
114
+ --color-error-bg: rgba(242, 133, 125, 0.16);
115
+ --color-error-bg-text: var(--red-200);
116
+ --color-error-vivid-base: var(--red-400);
117
+
118
+ --color-info-bg: rgba(139, 155, 255, 0.16);
119
+ --color-info-bg-text: var(--indigo-200);
120
+ --color-info-vivid-base: var(--indigo-400);
121
+
122
+ --chart-series-1-base: #e69f00;
123
+ --chart-series-2-base: #009e73;
124
+ --chart-series-3-base: #0072b2;
125
+ --chart-series-4-base: #e2703a;
126
+ --chart-series-5-base: #d691bd;
127
+ --chart-series-6-base: #9d94e0;
128
+ --chart-grid: rgba(205, 215, 230, 0.12);
129
+
130
+ --site-shadow-sm: none;
131
+ --site-shadow-md: 0 0 0 1px rgba(205, 215, 230, 0.26);
132
+ --site-shadow-lg: 0 0 0 1px rgba(205, 215, 230, 0.26), 0 12px 32px rgba(0, 0, 0, 0.4);
133
+ }
134
+
135
+ // The graphite frame, the same in both themes: the dark tokens on a ground a little deeper than the
136
+ // dark theme's own. The rail's links are a step brighter, since light thin text on graphite reads
137
+ // paler than its ratio says.
138
+ @mixin frame-tokens {
139
+ @include dark-tokens;
140
+ --bg-panel: var(--graphite-950);
141
+ --text-secondary: var(--graphite-200);
142
+ color-scheme: dark;
143
+ color: var(--text-primary);
144
+ }
@@ -1,3 +1,5 @@
1
+ @use 'a11y';
2
+
1
3
  .gbt-form-error {
2
4
  margin: 0 0 0.75rem;
3
5
  font-size: 0.875rem;
@@ -85,8 +87,7 @@
85
87
  }
86
88
  }
87
89
 
88
- // Global, so it reaches the links the app projects: each piece of the rail keeps its height, and a rail taller than the
89
- // window scrolls rather than squeezing its links together.
90
+ // Global to reach the projected links: a rail taller than the window scrolls instead of squeezing them.
90
91
  .gbt-app-shell__nav > * {
91
92
  flex-shrink: 0;
92
93
  }
@@ -101,6 +102,7 @@
101
102
  border-radius: var(--site-border-radius-sm);
102
103
  color: var(--text-secondary);
103
104
  font-size: 0.875rem;
105
+ font-weight: 500;
104
106
  text-decoration: none;
105
107
  overflow: hidden;
106
108
  white-space: nowrap;
@@ -118,16 +120,15 @@
118
120
  }
119
121
 
120
122
  &:focus-visible {
121
- outline: 2px solid var(--gbt-focus-ring, var(--primary));
122
- outline-offset: -2px;
123
+ @include a11y.focus-ring(-2px);
123
124
  }
124
125
 
125
126
  // An app can tone the current page down to a tint with a mark on its edge (--gbt-nav-active-*).
126
127
  &[aria-current] {
127
- background: var(--gbt-nav-active-bg, var(--primary));
128
- color: var(--gbt-nav-active-text, var(--text-on-primary));
128
+ background: var(--gbt-nav-active-bg, color-mix(in srgb, var(--text-primary) 9%, transparent));
129
+ color: var(--gbt-nav-active-text, var(--text-primary));
129
130
  font-weight: 600;
130
- box-shadow: inset 2px 0 0 var(--gbt-nav-active-mark, transparent);
131
+ box-shadow: inset 2px 0 0 var(--gbt-nav-active-mark, var(--accent));
131
132
  }
132
133
  }
133
134
 
@@ -223,7 +224,7 @@
223
224
  gap: 0.5rem;
224
225
  width: 100%;
225
226
  padding: 8px 10px;
226
- border-radius: var(--gbt-radius-menu, 8px);
227
+ border-radius: var(--gbt-radius-menu, 4px);
227
228
  color: var(--text-primary);
228
229
  font-size: 14px;
229
230
  text-align: left;
@@ -238,8 +239,7 @@
238
239
  }
239
240
 
240
241
  &:focus-visible {
241
- outline: 2px solid var(--gbt-focus-ring, var(--primary));
242
- outline-offset: -2px;
242
+ @include a11y.focus-ring(-2px);
243
243
  }
244
244
  }
245
245
 
@@ -1,3 +1,6 @@
1
1
  @forward 'palette';
2
2
  @forward 'semantic';
3
+ @forward 'themes';
4
+ @forward 'a11y';
5
+ @forward 'base';
3
6
  @forward 'utilities';
@@ -0,0 +1,47 @@
1
+ # StatGrid
2
+
3
+ A responsive grid of [`gbt-stat-tile`](../stat-tile/README.md)s: two columns, and up to `columns` once the grid
4
+ is 600 px wide.
5
+
6
+ **Selector**: `gbt-stat-grid`
7
+
8
+ ## Inputs
9
+
10
+ | Input | Type | Default | Role |
11
+ | -------------- | ----------------------- | ------------ | ------------------------------------------------------------- |
12
+ | `ariaLabel` | `string` | `'Summary'` | Names the list of tiles. |
13
+ | `columns` | `2 \| 3 \| 4 \| 5 \| 6` | `4` | Columns once the grid is 600 px wide or more (below that: 2). |
14
+ | `loading` | `boolean` | `false` | Shows placeholder tiles instead of the projected tiles. |
15
+ | `loadingCount` | `number` | `4` | Number of placeholder tiles. `0` or less: none, only the status region (same convention as `SkeletonList`'s `rows`). |
16
+ | `loadingLabel` | `string` | `'Loading…'` | Read out (visually hidden, polite) while `loading`. |
17
+
18
+ ## Behaviour
19
+
20
+ - **Container query**: `container: gbt-stat-grid / inline-size`, breakpoint at 600 px of the GRID's width (custom
21
+ properties cannot be read in a container condition, so it is fixed). A grid in a 700 px column next to an aside
22
+ behaves like a grid on a 700 px page. The `MediumFrame` and `NarrowFrame` stories show it.
23
+ - **Containment side effect**: `container-type: inline-size` also applies layout containment to the grid, so a
24
+ `position: fixed` descendant (a popover or menu panel inside a tile) is placed against the grid, not the viewport.
25
+ Keep fixed-position overlays out of the tiles.
26
+ - **List semantics**: `role="list"` named by `ariaLabel`; the tiles are its `role="listitem"`s (a tile detects
27
+ its grid by injection: it gets the role only there).
28
+ - **Loading**: placeholders have a loaded tile's border, radius and padding, so nothing moves when the figures
29
+ arrive. The real tiles are not rendered meanwhile; the list is `aria-hidden` and a `role="status"` region
30
+ (outside the list, always in the DOM) says `loadingLabel`. No `aria-busy` is set: some assistive technology
31
+ would hold the status back.
32
+ - Tiles project directly into the grid: `<gbt-stat-tile>` elements as direct children (a wrapper `div` would
33
+ lose the list-item role).
34
+
35
+ ## Example
36
+
37
+ ```html
38
+ <gbt-stat-grid ariaLabel="Overview" [columns]="4" [loading]="!stats()">
39
+ @for (tile of stats(); track tile.key) {
40
+ <gbt-stat-tile [label]="tile.label" [value]="tile.value" [icon]="tile.icon" />
41
+ }
42
+ </gbt-stat-grid>
43
+ ```
44
+
45
+ ## Accessibility
46
+
47
+ See [AUDIT.md](AUDIT.md).
@@ -0,0 +1,75 @@
1
+ # StatTile
2
+
3
+ A figure with its label: "12 open issues", "3.4 GB stored". The figure and an optional icon marker on
4
+ top, the label under them, then an optional hint and trend.
5
+
6
+ **Selector**: `gbt-stat-tile`, plus the router-agnostic link anchor `a[gbtStatTileLink]` (class `StatTileLink`,
7
+ import it to get the stretched hit area). Put tiles in a [`gbt-stat-grid`](../stat-grid/README.md).
8
+
9
+ ## Inputs
10
+
11
+ | Input | Type | Default | Role |
12
+ | ------------ | ----------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------ |
13
+ | `label` | `string` | `''` | The label under the figure. Not needed when a `gbtStatTileLink` is projected (its text is the label). |
14
+ | `value` | `string \| number` | — | Required. The figure, shown as is (format it: `1,284`, `3.4 GB`). |
15
+ | `icon` | `string \| null` | `null` | Registered icon name, on a tile-shaped [`gbt-icon-marker`](../icon-marker/README.md). |
16
+ | `iconTone` | `IconMarkerTone` | `'info'` | Tone of that marker. |
17
+ | `hint` | `string \| null` | `null` | A precision under the label ("last 30 days"). |
18
+ | `trend` | `'up' \| 'down' \| 'flat' \| null` | `null` | An arrow. Shown only with a `trendLabel`. |
19
+ | `trendLabel` | `string \| null` | `null` | The trend as text, with its sign or wording ("+12 %"): an arrow alone says nothing to a screen reader. |
20
+ | `trendTone` | `'neutral' \| 'success' \| 'error'` | `'neutral'` | Colours the trend by whether the movement is good or bad, whichever the direction. |
21
+ | `href` | `string \| null` | `null` | Turns the label into a link whose hit area is the whole tile. |
22
+ | `muted` | `boolean` | `false` | The tile steps back (quiet figure, neutral marker): a category with nothing in it. |
23
+
24
+ ## Reading order
25
+
26
+ The label comes **first in the DOM**, the figure second (the grid areas put the figure on top): a screen
27
+ reader says "Open issues, 12". Do not swap them.
28
+
29
+ ## Link
30
+
31
+ `href` renders the label as an anchor. With a router, project the anchor and let it replace the label:
32
+
33
+ ```html
34
+ <gbt-stat-tile [value]="issues().length" icon="circle-dot">
35
+ <a gbtStatTileLink [routerLink]="['/issues']">Open issues</a>
36
+ </gbt-stat-tile>
37
+ ```
38
+
39
+ If you forget to import `StatTileLink`, the projected anchor is still rendered with its text (the selector matches the
40
+ attribute), only unstyled: no stretched hit area and no tile hover, so a missing import is visible, never a silent empty label.
41
+
42
+ The anchor's `::after` covers the tile (the tile is `position: relative`); its keyboard focus outlines the
43
+ whole tile. No interactive element is nested in another.
44
+
45
+ ## Narrow tiles
46
+
47
+ The tile is a size container named `gbt-stat-tile`: under 11 rem it tightens its padding and uses a smaller
48
+ figure (1.375 rem) so `1,284` is not cut, whatever the grid or the viewport. A figure that is still too long is
49
+ cut with an ellipsis, never overflowing. A tile outside a grid needs a definite width (a block).
50
+
51
+ **Containment side effect.** `container-type: inline-size` also applies layout containment to the host: a
52
+ `position: fixed` descendant (a popover, tooltip or menu panel projected into the tile) is placed against the tile,
53
+ not the viewport. Do not put a fixed-position overlay inside a tile; open it from outside (or use a native popover
54
+ in the top layer).
55
+
56
+ ## Example
57
+
58
+ ```html
59
+ <gbt-stat-grid ariaLabel="Summary">
60
+ <gbt-stat-tile
61
+ label="Repositories"
62
+ value="1,284"
63
+ icon="folder"
64
+ hint="last 30 days"
65
+ trend="up"
66
+ trendLabel="+12 %"
67
+ trendTone="success"
68
+ />
69
+ <gbt-stat-tile label="Storage used" value="3.4 GB" icon="database" />
70
+ </gbt-stat-grid>
71
+ ```
72
+
73
+ ## Accessibility
74
+
75
+ See [AUDIT.md](AUDIT.md).
@@ -0,0 +1,67 @@
1
+ # Stepper
2
+
3
+ An informational progress indicator through numbered steps (a
4
+ checkout tunnel, a multi-screen setup wizard) — distinct from
5
+ `SegmentedControl` (an exclusive choice) and `Tabs` (free navigation
6
+ between contents): a step can't be skipped, and this component itself
7
+ never navigates anywhere.
8
+
9
+ **Selector**: `gbt-stepper`
10
+
11
+ ## Inputs
12
+
13
+ | Input | Type | Default | Role |
14
+ | ----------------- | --------------------------------- | --------------- | ------------------------------------------------------------------ |
15
+ | `steps` | `{ label: string; hasError?: boolean }[]` | required | The steps, in order. |
16
+ | `activeIndex` | `number` (model) | `0` | The current step's index. |
17
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | — |
18
+ | `completedLabel` | `string` | `'Completed'` | Visually-hidden suffix announced for a completed step. |
19
+ | `errorLabel` | `string` | `'Error'` | Visually-hidden suffix announced for a step with `hasError`. |
20
+ | `interactive` | `boolean` | `false` | Renders each step as a native button that sets `selectedIndex`. |
21
+ | `selectedIndex` | `number \| null` (model) | `null` | The step being viewed (interactive mode only); distinct from `activeIndex`. |
22
+ | `selectedLabel` | `string` | `'Selected'` | Visually-hidden suffix announced for the selected step. |
23
+
24
+ ## Example
25
+
26
+ ```html
27
+ <gbt-stepper
28
+ [steps]="[{ label: 'Account' }, { label: 'Shipping' }, { label: 'Payment' }]"
29
+ [activeIndex]="step()"
30
+ />
31
+ ```
32
+
33
+ ## Interactive mode
34
+
35
+ With `interactive`, every step becomes a real `<button type="button">`
36
+ inside its `<li>`. Clicking one only sets `selectedIndex` — the step
37
+ being *viewed* — while `activeIndex` stays the progress (and keeps
38
+ `aria-current="step"`). The consumer decides what a selection does:
39
+
40
+ ```html
41
+ <gbt-stepper
42
+ [steps]="steps"
43
+ [activeIndex]="progress()"
44
+ [interactive]="true"
45
+ [(selectedIndex)]="viewed"
46
+ />
47
+ ```
48
+
49
+ ## Behavior
50
+
51
+ - Informational by default: without `interactive`, no click handler on
52
+ a step and no keyboard navigation of its own — this component only
53
+ ever *reflects* `activeIndex`, it never changes it. With
54
+ `interactive`, a click only sets `selectedIndex`; `activeIndex` is
55
+ never modified by this component.
56
+ - A step's status is derived purely from its position relative to
57
+ `activeIndex` (`completed` before it, `current` at it, `upcoming`
58
+ after it) and its own `hasError` — a step marked `hasError` only
59
+ shows as `error` once reached (at or before `activeIndex`), never
60
+ for a step further ahead that hasn't happened yet.
61
+ - Renders a real `<ol>`/`<li>` list — every step is rendered directly
62
+ by this component's own template (via the `steps` data array, not
63
+ content-projected per-step components), the same reasoning
64
+ `DescriptionList` already applied to `<dl>`/`<dt>`/`<dd>`: axe's
65
+ list-structure rule requires `<li>` to be a direct child of a
66
+ `<ul>`/`<ol>`, which a per-step custom element (even one set to
67
+ `display: contents`) does not satisfy.
@@ -0,0 +1,51 @@
1
+ # Switch
2
+
3
+ Bascule on/off — alternative visuelle à `Checkbox` pour un réglage
4
+ binaire immédiat (ex. activer une option), plutôt qu'une sélection
5
+ dans un formulaire à valider.
6
+
7
+ **Selector**: `gbt-switch`
8
+
9
+ ## Inputs
10
+
11
+ | Input | Type | Default | Role |
12
+ | ---------- | --------- | ------- | -------------------------------------------------------------------- |
13
+ | `id` | `string` | généré | `id` du champ natif. |
14
+ | `label` | `string` | `''` | Texte affiché à côté de la bascule. |
15
+ | `disabled` | `boolean` | `false` | Désactive le contrôle. |
16
+ | `hint` | `string` | `''` | Texte d'aide sous le libellé, relié au champ par `aria-describedby`. |
17
+
18
+ S'intègre aux formulaires Angular via `ControlValueAccessor`, comme
19
+ `Checkbox` — utilisable indifféremment avec `formControlName` ou
20
+ `[formControl]`.
21
+
22
+ ## Exemple
23
+
24
+ ```html
25
+ <gbt-switch label="Recevoir les notifications" formControlName="notifications" />
26
+
27
+ <gbt-switch
28
+ label="Envoyer un résumé quotidien"
29
+ hint="Un e-mail par jour, à 8 h."
30
+ formControlName="digest"
31
+ />
32
+ ```
33
+
34
+ ## Texte d'aide (`hint`)
35
+
36
+ Sans `hint`, le rendu ne comporte aucun élément supplémentaire (hôte inline).
37
+ Avec `hint`, l'hôte devient un bloc et le texte
38
+ s'affiche sous le libellé, aligné sur celui-ci (piste 2,25 rem + espace
39
+ 0,5 rem) — plus besoin d'une indentation « magique » côté application.
40
+ Le texte est un `<p>` **hors** du `<label>` : il décrit le champ
41
+ (`aria-describedby`) sans s'ajouter à son nom accessible.
42
+
43
+ ## Accessibilité
44
+
45
+ Basé sur `<input type="checkbox" role="switch">` — tout le
46
+ comportement natif (Space pour basculer, participation aux
47
+ formulaires, focus) est conservé ; `role="switch"` fait annoncer
48
+ "interrupteur" par les lecteurs d'écran plutôt que "case à cocher".
49
+ L'entrée native est visuellement masquée (`opacity: 0`) mais reste
50
+ dans l'arbre d'accessibilité et la zone cliquable — le rendu piste +
51
+ curseur est purement du CSS piloté par `:checked`, sans JavaScript.
@@ -0,0 +1,75 @@
1
+ # Table
2
+
3
+ Data table with optional clickable rows.
4
+
5
+ **Selector**: `gbt-table`
6
+
7
+ ## Inputs
8
+
9
+ | Input | Type | Default | Role |
10
+ | --------------- | ------------------------------- | ----------- | -------------------------------------------------- |
11
+ | `data` | `T[]` | required | The rows. |
12
+ | `columns` | `TableColumn<T>[]` | required | `{ key, label, format?, cellTemplate? }` — the columns, in order. |
13
+ | `trackBy` | `((row: T) => unknown) \| null` | `null` | Row tracking function. |
14
+ | `emptyMessage` | `string` | `'No data'` | Message shown when `data` is empty. |
15
+ | `caption` | `string` | required | Table caption. |
16
+ | `clickableRows` | `boolean` | `false` | Makes rows focusable and keyboard-activatable. |
17
+
18
+ ## Outputs
19
+
20
+ | Output | Type | Role |
21
+ | ---------- | ---- | ------------------------------------------------------------------------ |
22
+ | `rowClick` | `T` | Emitted on click or keyboard activation of a row (`clickableRows` only). |
23
+
24
+ ## Example
25
+
26
+ ```html
27
+ <gbt-table
28
+ caption="Dépôts"
29
+ [data]="depots"
30
+ [columns]="[{ key: 'nom', label: 'Nom' }, { key: 'taille', label: 'Taille' }]"
31
+ />
32
+ ```
33
+
34
+ ## Rich cell content: `cellTemplate`
35
+
36
+ A column's `format`/`key` can only ever produce plain text — there is
37
+ no way to put a link, a `Badge`, or a `Menu` in a cell through them.
38
+ `cellTemplate` renders a `TemplateRef` instead, with the row projected
39
+ as the template's `$implicit` context (the same escape hatch
40
+ `DescriptionList` offers for a value, adapted here to run once per
41
+ row):
42
+
43
+ ```html
44
+ <ng-template #actionsCell let-repo>
45
+ <gbt-menu label="Actions" triggerIcon="ellipsis-vertical">
46
+ <button role="menuitem" class="gbt-menu__item" type="button" (click)="delete(repo)">Supprimer</button>
47
+ </gbt-menu>
48
+ </ng-template>
49
+
50
+ <gbt-table
51
+ caption="Dépôts"
52
+ [data]="depots"
53
+ [columns]="[
54
+ { key: 'nom', label: 'Nom' },
55
+ { key: 'actions', label: 'Actions', cellTemplate: actionsCell },
56
+ ]"
57
+ />
58
+ ```
59
+
60
+ `key` still identifies the column (for `@for` tracking) even on a
61
+ template-only column — it doesn't have to name a real property of `T`,
62
+ a synthetic name like `'actions'` is fine since `format`/`row[key]` is
63
+ never reached for that column.
64
+
65
+ A `cellTemplate` cell is the consumer's own content, so its
66
+ accessibility is the consumer's responsibility — same delegation
67
+ `Table` already applies to `format`'s plain text, extended to richer
68
+ markup. An interactive element inside a `cellTemplate` (a link, a
69
+ `Menu` trigger) works normally with `Tab`/`Enter` since it's ordinary
70
+ projected DOM inside a `<td>`, nothing about `Table` intercepts it.
71
+ Combining it with `clickableRows` is supported: a click or `Enter`/`Space` on the projected
72
+ interactive element (a native control, a `<label>`, a `<summary>`, a `contenteditable` region, or an
73
+ element carrying an interactive WAI-ARIA widget role such as `button`, `link`, `checkbox`, `switch`,
74
+ `radio`, `tab`, `option`, `menuitem`, `textbox`, `searchbox`, `slider`) activates that element only
75
+ — it does not also fire `rowClick` — while the same click or key elsewhere in the row still does.
package/tabs/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Tabs
2
+
3
+ Tab navigation, with `gbt-tab` as projected content.
4
+
5
+ **Selector**: `gbt-tabs` (container), `gbt-tab` (each tab)
6
+
7
+ Left/right arrows to move between triggers, with wraparound.
8
+
9
+ `activeIndex` is an Angular `model()`, so it works uncontrolled (omit
10
+ the binding entirely, as every existing usage does) or controlled
11
+ (bind `[activeIndex]`/`(activeIndexChange)` to keep it in sync with,
12
+ e.g., a URL query parameter).
13
+
14
+ ## Inputs of `gbt-tabs`
15
+
16
+ | Input | Type | Default | Role |
17
+ | ----- | -------- | ------------------------ | ------------------------------------------------------- |
18
+ | `id` | `string` | generated (`gbt-tabs-N`) | Prefix of the DOM ids generated for each trigger/panel. |
19
+ | `activeIndex` | `number` (model) | `0` | The active tab's index. Bind `[activeIndex]` (one-way — `Tabs` still updates it internally on click/arrow-key) or `[(activeIndex)]` (two-way) to control or observe it from outside. |
20
+
21
+ ## Inputs of `gbt-tab`
22
+
23
+ | Input | Type | Role |
24
+ | ------- | -------- | ------------------------ |
25
+ | `label` | `string` | Required. Trigger label. |
26
+
27
+ ## Example
28
+
29
+ ```html
30
+ <gbt-tabs>
31
+ <gbt-tab label="Détails">...</gbt-tab>
32
+ <gbt-tab label="Historique">...</gbt-tab>
33
+ </gbt-tabs>
34
+ ```
package/tag/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Tag
2
+
3
+ A small chip rendering an arbitrary background color with automatically
4
+ computed readable text, used for user-defined labels (e.g. issue labels)
5
+ that don't fit the fixed `Badge` semantic variants. Optionally removable.
6
+
7
+ **Selector:** `gbt-tag`
8
+
9
+ **Inputs**
10
+
11
+ | Input | Type | Default | Role |
12
+ |---|---|---|---|
13
+ | `color` | `string` (required) | — | Background color as a **6-digit hex** string, with or without the leading `#` (e.g. `#dc2626`, `dc2626`). Text color is computed automatically for WCAG-readable contrast (`#ffffff` or `#000000`, worst case 4.58:1). Shorthand hex (`#abc`), CSS named colors, `rgb()`/`hsl()` and custom properties are **not** supported and throw — silently guessing would paint unreadable text. |
14
+ | `removable` | `boolean` | `false` | Shows a remove (`×`) button when `true`. |
15
+ | `removeLabel` | `string` | `'Remove'` | Accessible label for the remove button. English by default, like every other default string in the library — externalize it per the caller's own i18n strings in a non-English context. |
16
+ | `disabled` | `boolean` | `false` | Marks the chip `aria-disabled="true"` — for a container-level disabled state (e.g. `TagInput`, `Select` in chips mode) that visually dims the chip via CSS `opacity`, so contrast-checking tools recognize it as an inactive component rather than flagging its now-lower-contrast text. Purely an ARIA signal — pair it with `[removable]="false"` to actually remove the remove button. |
17
+
18
+ **Outputs**
19
+
20
+ | Output | Payload | Fires when |
21
+ |---|---|---|
22
+ | `removed` | `void` | The remove button is clicked. The click does not bubble to any parent click handler. |
23
+
24
+ **Content**
25
+
26
+ Project the tag's visible text via `<ng-content />`.
27
+
28
+ **Example**
29
+
30
+ ```html
31
+ <gbt-tag color="#dc2626" [removable]="true" removeLabel="Retirer Bug" (removed)="onRemoveLabel()">
32
+ Bug
33
+ </gbt-tag>
34
+ ```
@@ -0,0 +1,45 @@
1
+ # TagInput
2
+
3
+ Freely-typed values, each shown as a removable `Tag` — for values the
4
+ consumer invents (custom labels, email recipients), not chosen from a
5
+ predefined list. Distinct from `Select`'s chips, which pick among
6
+ fixed options. Integrates with Angular forms via
7
+ `ControlValueAccessor` (`string[]`), like `Select`.
8
+
9
+ **Selector**: `gbt-tag-input`
10
+
11
+ ## Inputs
12
+
13
+ | Input | Type | Default | Role |
14
+ | ------------------ | ------------------------------- | -------------------------------- | --------------------------------------------------------------- |
15
+ | `label` | `string` | `''` | Field label. |
16
+ | `placeholder` | `string` | `''` | Shown only while the list of tags is empty. |
17
+ | `disabled` | `boolean` | `false` | — |
18
+ | `errorMessage` | `string \| null` | `null` | Rendered as `role="alert"` below the field. |
19
+ | `separatorKeys` | `string[]` | `['Enter', ',']` | Keys that commit the current text as a new tag. |
20
+ | `allowDuplicates` | `boolean` | `false` | Silently ignores a duplicate value when `false`. |
21
+ | `color` | `string` | `'#6b7280'` | Background color passed to each `Tag` (a 6-digit hex, per `Tag`'s own contract). |
22
+ | `removeLabel` | `(value: string) => string` | `` (v) => `Remove ${v}` `` | Accessible name of each tag's remove button. |
23
+
24
+ ## Example
25
+
26
+ ```html
27
+ <gbt-tag-input label="Labels" placeholder="Add a label…" [formControl]="labels" />
28
+ ```
29
+
30
+ ## Behavior
31
+
32
+ - Typing text and pressing a `separatorKeys` key (Enter or comma by
33
+ default) commits it as a new tag and clears the field. A pending
34
+ draft is also committed on blur, so nothing is silently lost if the
35
+ user clicks away instead of pressing Enter.
36
+ - `Backspace` on an *empty* field removes the last tag — the same
37
+ convenience most tag/recipient fields offer (Gmail's "To" field,
38
+ GitHub's label picker), not triggered while there's still text to
39
+ delete normally.
40
+ - Clicking anywhere in the field (not just precisely on the thin text
41
+ input) focuses it — a documented lint exception, since the real
42
+ keyboard equivalent (Tab to the input directly) already exists; see
43
+ `AUDIT.md`.
44
+ - Reuses `gbt-tag` for display, inheriting its automatic
45
+ readable-text-color computation — no separate contrast logic here.