@masmarino/gabarit 2.0.0 → 2.1.1

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 (333) hide show
  1. package/README.md +131 -85
  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 +475 -0
  47. package/fesm2022/masmarino-gabarit-autocomplete.mjs.map +1 -0
  48. package/fesm2022/masmarino-gabarit-avatar-group.mjs +202 -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 +1242 -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 +16 -2
  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 +24 -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 +464 -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 +142 -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 +512 -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 +185 -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/funnel-chart/README.md +39 -0
  200. package/gauge-bar/README.md +35 -0
  201. package/git-field/README.md +34 -0
  202. package/icon/README.md +52 -0
  203. package/icon-marker/README.md +37 -0
  204. package/input/README.md +120 -0
  205. package/job-graph/README.md +76 -0
  206. package/job-status/README.md +34 -0
  207. package/line-chart/README.md +52 -0
  208. package/list-card/README.md +144 -0
  209. package/list-row/README.md +72 -0
  210. package/list-toolbar/README.md +52 -0
  211. package/menu/README.md +90 -0
  212. package/mfa-enrollment/README.md +189 -0
  213. package/mfa-settings/README.md +154 -0
  214. package/modal/README.md +72 -0
  215. package/nav-tabs/README.md +106 -0
  216. package/notification-dot/README.md +43 -0
  217. package/package.json +329 -1
  218. package/page-header/README.md +56 -0
  219. package/page-layout/README.md +76 -0
  220. package/pagination/README.md +73 -0
  221. package/panel/README.md +56 -0
  222. package/passkey-settings/README.md +120 -0
  223. package/pie-chart/README.md +85 -0
  224. package/popover/README.md +62 -0
  225. package/radio-group/README.md +47 -0
  226. package/save-status/README.md +44 -0
  227. package/search-bar/README.md +84 -0
  228. package/secret-reveal/README.md +60 -0
  229. package/segmented-control/README.md +79 -0
  230. package/select/README.md +61 -0
  231. package/skeleton/README.md +49 -0
  232. package/skeleton-list/README.md +40 -0
  233. package/slider/README.md +44 -0
  234. package/sparkline/README.md +37 -0
  235. package/spinner/README.md +41 -0
  236. package/stat-grid/README.md +47 -0
  237. package/stat-tile/README.md +75 -0
  238. package/stepper/README.md +67 -0
  239. package/switch/README.md +51 -0
  240. package/table/README.md +75 -0
  241. package/tabs/README.md +34 -0
  242. package/tag/README.md +34 -0
  243. package/tag-input/README.md +45 -0
  244. package/textarea/README.md +76 -0
  245. package/timeline-chart/README.md +49 -0
  246. package/toaster/README.md +92 -0
  247. package/tooltip/README.md +50 -0
  248. package/tree/README.md +79 -0
  249. package/types/masmarino-gabarit-accordion.d.ts +54 -0
  250. package/types/masmarino-gabarit-alert.d.ts +65 -0
  251. package/types/masmarino-gabarit-app-shell.d.ts +102 -0
  252. package/types/masmarino-gabarit-auth-activate.d.ts +70 -0
  253. package/types/masmarino-gabarit-auth-login.d.ts +63 -0
  254. package/types/masmarino-gabarit-auth-register.d.ts +66 -0
  255. package/types/masmarino-gabarit-auth-reset-password.d.ts +53 -0
  256. package/types/masmarino-gabarit-auth.d.ts +543 -0
  257. package/types/masmarino-gabarit-autocomplete.d.ts +140 -0
  258. package/types/masmarino-gabarit-avatar-group.d.ts +60 -0
  259. package/types/masmarino-gabarit-avatar.d.ts +31 -0
  260. package/types/masmarino-gabarit-badge.d.ts +139 -0
  261. package/types/masmarino-gabarit-bar-chart.d.ts +111 -0
  262. package/types/masmarino-gabarit-breadcrumb.d.ts +12 -0
  263. package/types/masmarino-gabarit-button.d.ts +108 -0
  264. package/types/masmarino-gabarit-card.d.ts +102 -0
  265. package/types/masmarino-gabarit-chart.d.ts +361 -0
  266. package/types/masmarino-gabarit-checkbox-group.d.ts +113 -0
  267. package/types/masmarino-gabarit-checkbox.d.ts +49 -0
  268. package/types/masmarino-gabarit-confirm-danger-modal.d.ts +94 -0
  269. package/types/masmarino-gabarit-copy-button.d.ts +111 -0
  270. package/types/masmarino-gabarit-copy-field.d.ts +64 -0
  271. package/types/masmarino-gabarit-date-picker.d.ts +399 -0
  272. package/types/masmarino-gabarit-description-list.d.ts +40 -0
  273. package/types/masmarino-gabarit-dimension-card.d.ts +55 -0
  274. package/types/masmarino-gabarit-disclosure.d.ts +44 -0
  275. package/types/masmarino-gabarit-divider.d.ts +20 -0
  276. package/types/masmarino-gabarit-docs.d.ts +2 -1
  277. package/types/masmarino-gabarit-drawer.d.ts +51 -0
  278. package/types/masmarino-gabarit-empty-state.d.ts +67 -0
  279. package/types/masmarino-gabarit-file-upload.d.ts +95 -0
  280. package/types/masmarino-gabarit-floating-panel.d.ts +14 -0
  281. package/types/masmarino-gabarit-format.d.ts +54 -0
  282. package/types/masmarino-gabarit-funnel-chart.d.ts +78 -0
  283. package/types/masmarino-gabarit-gauge-bar.d.ts +54 -0
  284. package/types/masmarino-gabarit-git-field.d.ts +39 -0
  285. package/types/masmarino-gabarit-icon-marker.d.ts +47 -0
  286. package/types/masmarino-gabarit-icon.d.ts +23 -0
  287. package/types/masmarino-gabarit-input.d.ts +181 -0
  288. package/types/masmarino-gabarit-job-graph.d.ts +63 -0
  289. package/types/masmarino-gabarit-job-status.d.ts +20 -0
  290. package/types/masmarino-gabarit-line-chart.d.ts +153 -0
  291. package/types/masmarino-gabarit-list-card.d.ts +87 -0
  292. package/types/masmarino-gabarit-list-row.d.ts +14 -0
  293. package/types/masmarino-gabarit-list-toolbar.d.ts +100 -0
  294. package/types/masmarino-gabarit-menu.d.ts +93 -0
  295. package/types/masmarino-gabarit-mfa-enrollment.d.ts +142 -0
  296. package/types/masmarino-gabarit-mfa-settings.d.ts +89 -0
  297. package/types/masmarino-gabarit-modal.d.ts +60 -0
  298. package/types/masmarino-gabarit-nav-tabs.d.ts +65 -0
  299. package/types/masmarino-gabarit-notification-dot.d.ts +34 -0
  300. package/types/masmarino-gabarit-page-header.d.ts +20 -0
  301. package/types/masmarino-gabarit-page-layout.d.ts +46 -0
  302. package/types/masmarino-gabarit-pagination.d.ts +109 -0
  303. package/types/masmarino-gabarit-panel.d.ts +21 -0
  304. package/types/masmarino-gabarit-passkey-settings.d.ts +94 -0
  305. package/types/masmarino-gabarit-pie-chart.d.ts +94 -0
  306. package/types/masmarino-gabarit-popover.d.ts +33 -0
  307. package/types/masmarino-gabarit-radio-group.d.ts +66 -0
  308. package/types/masmarino-gabarit-save-status.d.ts +39 -0
  309. package/types/masmarino-gabarit-search-bar.d.ts +183 -0
  310. package/types/masmarino-gabarit-secret-reveal.d.ts +95 -0
  311. package/types/masmarino-gabarit-segmented-control.d.ts +76 -0
  312. package/types/masmarino-gabarit-select.d.ts +146 -0
  313. package/types/masmarino-gabarit-skeleton-list.d.ts +54 -0
  314. package/types/masmarino-gabarit-skeleton.d.ts +26 -0
  315. package/types/masmarino-gabarit-slider.d.ts +73 -0
  316. package/types/masmarino-gabarit-sparkline.d.ts +70 -0
  317. package/types/masmarino-gabarit-spinner.d.ts +20 -0
  318. package/types/masmarino-gabarit-stat-grid.d.ts +39 -0
  319. package/types/masmarino-gabarit-stat-tile.d.ts +79 -0
  320. package/types/masmarino-gabarit-stepper.d.ts +67 -0
  321. package/types/masmarino-gabarit-switch.d.ts +42 -0
  322. package/types/masmarino-gabarit-table.d.ts +60 -0
  323. package/types/masmarino-gabarit-tabs.d.ts +40 -0
  324. package/types/masmarino-gabarit-tag-input.d.ts +78 -0
  325. package/types/masmarino-gabarit-tag.d.ts +35 -0
  326. package/types/masmarino-gabarit-textarea.d.ts +109 -0
  327. package/types/masmarino-gabarit-timeline-chart.d.ts +145 -0
  328. package/types/masmarino-gabarit-toaster.d.ts +62 -0
  329. package/types/masmarino-gabarit-tooltip.d.ts +39 -0
  330. package/types/masmarino-gabarit-tree.d.ts +71 -0
  331. package/types/masmarino-gabarit-user-chip.d.ts +26 -0
  332. package/types/masmarino-gabarit.d.ts +83 -6599
  333. package/user-chip/README.md +42 -0
@@ -0,0 +1,63 @@
1
+ # DescriptionList
2
+
3
+ Label/value pairs for a detail page (owner, creation date, size…),
4
+ built on the semantic `<dl>`/`<dt>`/`<dd>` elements rather than a
5
+ `<table>`. For a list of _records_ instead of a single item's
6
+ attributes, use `Table` or `DimensionCard`.
7
+
8
+ **Selector**: `gbt-description-list`
9
+
10
+ ## Inputs
11
+
12
+ | Input | Type | Default | Role |
13
+ | ------------ | ----------------------------------------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
14
+ | `items` | `{ term: string; value: string \| TemplateRef<unknown> }[]` | required | Each pair. `value` is either plain text, or a `TemplateRef` for rich content (a `Badge`, a link, …). |
15
+ | `layout` | `'stacked' \| 'inline'` | `'stacked'` | `stacked`: term above value. `inline`: term left, value right, in a two-column grid. Falls back to `stacked` below 768px either way (see `responsive`). |
16
+ | `valueAlign` | `'start' \| 'end'` | `'start'` | `end` right-aligns the values (the fact-sheet look: term on the left, value on the far edge of its row). When an inline list collapses to one column, values go back to the start edge. With `layout="stacked"` the values stay on the end edge at every width (under their terms). |
17
+ | `responsive` | `'viewport' \| 'container'` | `'viewport'` | What an inline list stacks on. `viewport` (default): stacks below a 768px viewport. `container`: the list's own width — it stacks below 30rem, whatever the viewport. |
18
+
19
+ ### `responsive="container"`
20
+
21
+ The component becomes a size container (`display: block; container-type: inline-size`), so an inline
22
+ list in a narrow card or side panel stacks even on a wide screen, and keeps two columns in a
23
+ wide card even on a phone-sized viewport. Things to know:
24
+
25
+ - The host takes the width its parent gives it. In a flex row, give it `flex: 1` or a width (a size
26
+ container has no intrinsic inline size of its own).
27
+ - Browsers without container queries (`@supports (container-type: inline-size)` false) ignore the
28
+ option: the list stays on two columns at every width. Every evergreen browser has supported them
29
+ since early 2023.
30
+ - It is opt-in: with the default `viewport`, the list only uses the plain viewport media query described above.
31
+
32
+ ## Example
33
+
34
+ ```html
35
+ <ng-template #statusValue>
36
+ <gbt-badge variant="success">Actif</gbt-badge>
37
+ </ng-template>
38
+
39
+ <gbt-description-list
40
+ layout="inline"
41
+ [items]="[
42
+ { term: 'Propriétaire', value: 'Ada Lovelace' },
43
+ { term: 'Créé le', value: '12 mars 2024' },
44
+ { term: 'Statut', value: statusValue },
45
+ ]"
46
+ />
47
+ ```
48
+
49
+ ```ts
50
+ statusValue = viewChild.required<TemplateRef<unknown>>('statusValue')
51
+ ```
52
+
53
+ ## Why `items` + `TemplateRef`, not projected `<gbt-description-list-item>`s
54
+
55
+ `<dl>` may only directly contain `<dt>`/`<dd>` (or a `<div>` wrapping a
56
+ pair) — axe flags any other element, including a custom element set to
57
+ `display: contents`, as an invalid child, because that CSS property
58
+ changes rendering, not the actual DOM parent/child relationship the HTML
59
+ content model and ARIA role mapping both depend on. Rendering every
60
+ `<dt>`/`<dd>` directly from this component's own template (via `items`)
61
+ keeps them genuine direct children of `<dl>` while still supporting rich
62
+ values, which is why `value` accepts a `TemplateRef` instead of a
63
+ projected `<gbt-description-list-item>`.
@@ -0,0 +1,39 @@
1
+ # DimensionCard
2
+
3
+ Dimension table, with the hovered row accented — a decorative accent
4
+ only, everything it highlights is already in the visible table; its rows
5
+ are therefore not focusable.
6
+
7
+ **Selector**: `gbt-dimension-card`
8
+
9
+ Standalone, outside the dataviz base: no tooltip, no keyboard
10
+ navigation, no separate `sr-only` table — `gbt-dimension-card` **is**
11
+ already a real, visible table.
12
+
13
+ ## Inputs
14
+
15
+ | Input | Type | Role |
16
+ | -------------- | ---------------- | --------------------------------------------- |
17
+ | `rows` | `DimensionRow[]` | Required. `{ label, value, display? }` rows. |
18
+ | `caption` | `string` | Required. Table caption. |
19
+ | `labelColumn` | `string` | Required. Header of the label column. |
20
+ | `valueColumn` | `string` | Required. Header of the value column. |
21
+ | `emptyMessage` | `string` | Required. Message shown when `rows` is empty. |
22
+ | `locale` | `string` | Required. Locale used to format numbers. |
23
+
24
+ A row's `display` replaces the formatted number in the value column, for
25
+ values a locale-aware number format can't express — bytes, durations, a
26
+ currency. The bar still scales on `value`, so the comparison stays honest.
27
+
28
+ ## Example
29
+
30
+ ```html
31
+ <gbt-dimension-card
32
+ [rows]="[{ label: 'Europe', value: 4200 }, { label: 'Amériques', value: 3100 }]"
33
+ caption="Requêtes par région"
34
+ labelColumn="Région"
35
+ valueColumn="Requêtes"
36
+ emptyMessage="Aucune donnée"
37
+ locale="fr-FR"
38
+ />
39
+ ```
@@ -0,0 +1,48 @@
1
+ # Disclosure
2
+
3
+ A single disclosure: a toggle button and the panel it shows or hides ("Advanced options", "Files", "More
4
+ details"). It is [`gbt-accordion-item`](../accordion-item/README.md) without the accordion around it: no parent
5
+ group, no index, an `open` model you can bind.
6
+
7
+ **Selector**: `gbt-disclosure`
8
+
9
+ ## Inputs
10
+
11
+ | Input | Type | Default | Role |
12
+ | -------------- | ------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------- |
13
+ | `label` | `string` | — | Required. The text of the toggle. |
14
+ | `open` | `boolean` (model) | `false` | Whether the panel is shown. Two-way: `[(open)]`. |
15
+ | `icon` | `string \| null` | `null` | Registered icon name before the label. |
16
+ | `appearance` | `'bordered' \| 'plain'` | `'bordered'` | `bordered`: a framed box with a tinted panel. `plain`: only the toggle and the panel. |
17
+ | `headingLevel` | `2 \| 3 \| 4 \| 5 \| 6 \| null` | `null` | Wraps the toggle in a heading of that level (when the disclosure titles a section). `null`: no heading. |
18
+
19
+ `openChange` is emitted by the model each time the user toggles.
20
+
21
+ ## Pattern
22
+
23
+ The ARIA disclosure pattern, on the repo's accordion-item ground:
24
+
25
+ - a native `<button type="button">` with `aria-expanded` and `aria-controls` (Enter and Space work natively);
26
+ - a panel that is **`inert` while closed** (nothing in it can be focused or read) and `visibility: hidden`
27
+ once the 200 ms collapse has run;
28
+ - a chevron that turns (not under `prefers-reduced-motion`).
29
+
30
+ The panel's content is always instantiated: a heavy component inside is created while closed. Wrap it in
31
+ `@if (open())` if that matters (the `open` model is right there).
32
+
33
+ ## Example
34
+
35
+ ```html
36
+ <gbt-disclosure label="Advanced options" [(open)]="advancedOpen">
37
+ <gbt-switch label="CI enabled" [(ngModel)]="ciEnabled" />
38
+ <gbt-input label="Pipeline file path" [(ngModel)]="pipelineFile" />
39
+ </gbt-disclosure>
40
+
41
+ <gbt-disclosure label="Danger zone" icon="alert-triangle" [headingLevel]="3">…</gbt-disclosure>
42
+ ```
43
+
44
+ ## Accessibility
45
+
46
+ See [AUDIT.md](AUDIT.md). Not covered: a disclosure that is open at a wide width and collapsible only on a
47
+ phone (the file view's "Files" toggle) is a layout decision of the page: bind `[open]` to a breakpoint signal
48
+ you own.
@@ -0,0 +1,31 @@
1
+ # Divider
2
+
3
+ A thin separating line between sections or list items, with an
4
+ optional centered label (e.g. "OR" between two sign-in buttons).
5
+
6
+ **Selector**: `gbt-divider`
7
+
8
+ ## Inputs
9
+
10
+ | Input | Type | Default | Role |
11
+ | ------------- | ------------------------------ | ---------------- | --------------------------------------------------------------- |
12
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | `vertical` needs a defined height from its context — it stretches to fill it (`align-self: stretch`), it doesn't invent one. |
13
+ | `label` | `string` | `''` | Optional text centered between two line segments. |
14
+
15
+ ## Example
16
+
17
+ ```html
18
+ <gbt-divider />
19
+ <gbt-divider label="OR" />
20
+ <gbt-divider orientation="vertical" />
21
+ ```
22
+
23
+ ## Behavior
24
+
25
+ - `role="separator"`, with `aria-orientation="vertical"` only for the
26
+ vertical case — `horizontal` is the ARIA default, so the attribute
27
+ is omitted rather than stated redundantly.
28
+ - A vertical divider inside a flex row needs the row to give it a
29
+ height (e.g. via `align-items: stretch`, the flex default, or an
30
+ explicit height on the row) — it has none of its own to fall back
31
+ on.
@@ -0,0 +1,49 @@
1
+ # Drawer
2
+
3
+ Side panel that slides in from an edge of the screen — traps focus,
4
+ closes on Escape or a click on the backdrop, same control pattern as
5
+ `Modal`. Unlike `Modal` (centered, blocks the whole page for a focused
6
+ task), `Drawer` is for application content that sits alongside the
7
+ page — a detail panel, advanced filters.
8
+
9
+ **Selector**: `gbt-drawer`
10
+
11
+ ## Inputs
12
+
13
+ | Input | Type | Default | Role |
14
+ | -------------- | ----------------------------------------- | --------- | ------------------------------------------------ |
15
+ | `isOpen` | `boolean` | required | Open/closed state, driven by the application. |
16
+ | `edge` | `'right' \| 'left' \| 'top' \| 'bottom'` | `'right'` | Which edge the panel slides in from. |
17
+ | `heading` | `string` | `''` | Panel title. |
18
+ | `headingLevel` | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `2` | Level of the rendered heading. |
19
+ | `closeLabel` | `string` | `'Close'` | Accessible name of the close button. |
20
+
21
+ ## Outputs
22
+
23
+ | Output | Type | Role |
24
+ | -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
25
+ | `closed` | `void` | Emitted on Escape, a click outside the panel, or a click on the close button. The application must respond by setting `isOpen` to `false`. |
26
+
27
+ ## Example
28
+
29
+ ```html
30
+ <gbt-drawer [isOpen]="open()" edge="right" heading="Filtres" (closed)="open.set(false)">
31
+ Contenu du tiroir.
32
+ </gbt-drawer>
33
+ ```
34
+
35
+ ## Behavior
36
+
37
+ - Slides in/out with a matching backdrop fade (200ms), instead of
38
+ appearing/disappearing instantly like `Modal` — the panel stays
39
+ mounted for the closing animation's duration after `isOpen` becomes
40
+ `false`, then unmounts and returns focus, exactly like `Modal`
41
+ otherwise does immediately. Both animations are skipped under
42
+ `prefers-reduced-motion: reduce`.
43
+ - Sized `min(90vw, 400px)` for `left`/`right`, `min(90vh, 400px)` for
44
+ `top`/`bottom` — adapts to the viewport with a fixed cap, same
45
+ reasoning as `Modal`'s own `min(90vw, 480px)` dialog width.
46
+ - `AppShell`'s own mobile navigation drawer is a separate,
47
+ independent implementation, not built on `gbt-drawer`: its needs (a
48
+ fixed nav-link list, no arbitrary content) are narrower than this
49
+ component's.
@@ -0,0 +1,84 @@
1
+ # EmptyState
2
+
3
+ A placeholder shown instead of an empty list/grid: an illustration, a
4
+ heading, an optional message, and an optional action (a button)
5
+ projected as content — used to distinguish "there is genuinely nothing
6
+ here yet" from a plain "no results" text message.
7
+
8
+ **Selector**: `gbt-empty-state`
9
+
10
+ ## Inputs
11
+
12
+ | Input | Type | Default | Role |
13
+ | ------------------ | ------------------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
14
+ | `illustration` | `EmptyStateIllustration` | `null` | One of `'folder' \| 'star' \| 'checklist' \| 'merge' \| 'pipeline' \| 'tag' \| 'book' \| 'server'`. Optional. |
15
+ | `heading` | `string` | — | Required. The primary message. |
16
+ | `message` | `string` | `''` | Optional secondary text, e.g. a hint or call to action description. |
17
+ | `icon` | `string \| null` | `null` | A registered icon name on a soft disc, in place of the artwork (ignored when an `illustration` is set). |
18
+ | `size` | `'default' \| 'compact'` | `'default'` | `compact` is the in-card block: smaller disc/artwork, tighter padding and type. |
19
+ | `tone` | `'default' \| 'error'` | `'default'` | `error` tints the disc (or the artwork) in the error colours — a list that could not be loaded. |
20
+ | `headingLevel` | `1 \| 2 \| 3 \| 4 \| 5 \| 6 \| null` | `null` | Renders the heading as an `h1`…`h6` (default: a `<p>`). |
21
+ | `headingId` | `string \| null` | `null` | `id` of the heading element, so a region can use `aria-labelledby`. |
22
+ | `headingFocusable` | `boolean` | `false` | Gives the heading `tabindex="-1"` (a programmatic focus target, not a tab stop; it shows no focus ring, being no control). |
23
+
24
+ ## Methods
25
+
26
+ | Method | Role |
27
+ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
28
+ | `focusHeading()` | Moves focus to the heading — needs `headingFocusable`. For a result page (activation done, link expired) that moves focus to its title. |
29
+
30
+ ## Content
31
+
32
+ An optional action (typically a `<gbt-button>`) is projected via
33
+ `<ng-content />`, rendered below the message.
34
+
35
+ ## Example
36
+
37
+ ```html
38
+ <gbt-empty-state
39
+ illustration="folder"
40
+ heading="Aucun dépôt pour l'instant"
41
+ message="Créez votre premier dépôt pour commencer."
42
+ >
43
+ <gbt-button text="Nouveau dépôt" (clicked)="openCreate()" />
44
+ </gbt-empty-state>
45
+ ```
46
+
47
+ ## Icon, compact and in-card states
48
+
49
+ The 96 px artwork suits a whole page or an empty list. Inside a card, use the
50
+ compact block with an icon:
51
+
52
+ ```html
53
+ <gbt-card variant="outlined" heading="Variables" flush>
54
+ <gbt-empty-state
55
+ size="compact"
56
+ icon="key"
57
+ heading="Aucune variable définie"
58
+ message="Les variables sont injectées dans chaque job."
59
+ />
60
+ </gbt-card>
61
+
62
+ <gbt-empty-state size="compact" tone="error" icon="alert-circle" heading="Chargement impossible">
63
+ <gbt-button variant="secondary" size="small" text="Réessayer" (clicked)="retry()" />
64
+ </gbt-empty-state>
65
+ ```
66
+
67
+ With neither `illustration` nor `icon` a compact state is a bare heading (and
68
+ message): the "Not found." block.
69
+
70
+ ## Heading level
71
+
72
+ By default the heading is a `<p>` — the component cannot know where it sits in
73
+ your page outline. Pass `headingLevel` when the state stands for a section (or
74
+ the whole page, `1`), and `headingId` to name a surrounding `<section>`.
75
+
76
+ ## Choosing an illustration
77
+
78
+ Each illustration is a fixed, curated piece of art shipped by Gabarit —
79
+ not an extensible registry like `gbt-icon`'s. Pick whichever of the
80
+ eight best matches the empty collection: `folder` for
81
+ repositories/groups, `star` for a starred/favorites list, `checklist`
82
+ for issues, `merge` for merge/pull requests, `pipeline` for CI
83
+ pipelines, `tag` for releases, `book` for a wiki, `server` for
84
+ infrastructure (e.g. CI runners).
@@ -0,0 +1,243 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, computed, contentChildren, effect, inject, input, model, signal, viewChild } from "@angular/core";
3
+ import { Icon } from "@masmarino/gabarit/icon";
4
+ let nextAccordionId = 0;
5
+ var Accordion = class Accordion {
6
+ id = input(`gbt-accordion-${++nextAccordionId}`, ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
7
+ mode = input("single", ...ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []);
8
+ expanded = model([], ...ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []);
9
+ items = contentChildren(AccordionItem, ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
10
+ constructor() {
11
+ effect(() => {
12
+ const items = this.items();
13
+ const expanded = this.expanded();
14
+ const groupId = this.id();
15
+ items.forEach((item, i) => item.setState(i, expanded.includes(i), groupId));
16
+ });
17
+ }
18
+ toggle(index) {
19
+ const current = this.expanded();
20
+ if (this.mode() === "single") {
21
+ this.expanded.set(current.includes(index) ? [] : [index]);
22
+ return;
23
+ }
24
+ this.expanded.set(current.includes(index) ? current.filter((i) => i !== index) : [...current, index]);
25
+ }
26
+ focusHeader(index) {
27
+ const items = this.items();
28
+ const count = items.length;
29
+ if (count === 0) return;
30
+ items[(index % count + count) % count]?.focusHeader();
31
+ }
32
+ static ɵfac = i0.ɵɵngDeclareFactory({
33
+ minVersion: "12.0.0",
34
+ version: "22.2.0",
35
+ ngImport: i0,
36
+ type: Accordion,
37
+ deps: [],
38
+ target: i0.ɵɵFactoryTarget.Component
39
+ });
40
+ static ɵcmp = i0.ɵɵngDeclareComponent({
41
+ minVersion: "17.2.0",
42
+ version: "22.2.0",
43
+ type: Accordion,
44
+ isStandalone: true,
45
+ selector: "gbt-accordion",
46
+ inputs: {
47
+ id: {
48
+ classPropertyName: "id",
49
+ publicName: "id",
50
+ isSignal: true,
51
+ isRequired: false,
52
+ transformFunction: null
53
+ },
54
+ mode: {
55
+ classPropertyName: "mode",
56
+ publicName: "mode",
57
+ isSignal: true,
58
+ isRequired: false,
59
+ transformFunction: null
60
+ },
61
+ expanded: {
62
+ classPropertyName: "expanded",
63
+ publicName: "expanded",
64
+ isSignal: true,
65
+ isRequired: false,
66
+ transformFunction: null
67
+ }
68
+ },
69
+ outputs: { expanded: "expandedChange" },
70
+ queries: [{
71
+ propertyName: "items",
72
+ predicate: AccordionItem,
73
+ isSignal: true
74
+ }],
75
+ ngImport: i0,
76
+ template: `
77
+ <div class="gbt-accordion">
78
+ <ng-content></ng-content>
79
+ </div>
80
+ `,
81
+ isInline: true,
82
+ styles: [".gbt-accordion{display:block;border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);overflow:hidden}\n"],
83
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
84
+ });
85
+ };
86
+ i0.ɵɵngDeclareClassMetadata({
87
+ minVersion: "12.0.0",
88
+ version: "22.2.0",
89
+ ngImport: i0,
90
+ type: Accordion,
91
+ decorators: [{
92
+ type: Component,
93
+ args: [{
94
+ selector: "gbt-accordion",
95
+ standalone: true,
96
+ imports: [],
97
+ template: `
98
+ <div class="gbt-accordion">
99
+ <ng-content></ng-content>
100
+ </div>
101
+ `,
102
+ changeDetection: ChangeDetectionStrategy.OnPush,
103
+ styles: [".gbt-accordion{display:block;border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);overflow:hidden}\n"]
104
+ }]
105
+ }],
106
+ ctorParameters: () => [],
107
+ propDecorators: {
108
+ id: [{
109
+ type: i0.Input,
110
+ args: [{
111
+ isSignal: true,
112
+ alias: "id",
113
+ required: false
114
+ }]
115
+ }],
116
+ mode: [{
117
+ type: i0.Input,
118
+ args: [{
119
+ isSignal: true,
120
+ alias: "mode",
121
+ required: false
122
+ }]
123
+ }],
124
+ expanded: [{
125
+ type: i0.Input,
126
+ args: [{
127
+ isSignal: true,
128
+ alias: "expanded",
129
+ required: false
130
+ }]
131
+ }, {
132
+ type: i0.Output,
133
+ args: ["expandedChange"]
134
+ }],
135
+ items: [{
136
+ type: i0.ContentChildren,
137
+ args: [i0.forwardRef(() => AccordionItem), { isSignal: true }]
138
+ }]
139
+ }
140
+ });
141
+ var AccordionItem = class AccordionItem {
142
+ parent = inject(Accordion);
143
+ header = viewChild("header", ...ngDevMode ? [{ debugName: "header" }] : /* istanbul ignore next */ []);
144
+ label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
145
+ active = signal(false, ...ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []);
146
+ index = signal(0, ...ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []);
147
+ groupId = signal("", ...ngDevMode ? [{ debugName: "groupId" }] : /* istanbul ignore next */ []);
148
+ headerId = computed(() => `${this.groupId()}-header-${this.index()}`, ...ngDevMode ? [{ debugName: "headerId" }] : /* istanbul ignore next */ []);
149
+ panelId = computed(() => `${this.groupId()}-panel-${this.index()}`, ...ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []);
150
+ setState(index, active, groupId) {
151
+ this.index.set(index);
152
+ this.active.set(active);
153
+ this.groupId.set(groupId);
154
+ }
155
+ focusHeader() {
156
+ this.header()?.nativeElement.focus();
157
+ }
158
+ toggle() {
159
+ this.parent.toggle(this.index());
160
+ }
161
+ onKeydown(event) {
162
+ if (event.key === "ArrowDown") {
163
+ event.preventDefault();
164
+ this.parent.focusHeader(this.index() + 1);
165
+ } else if (event.key === "ArrowUp") {
166
+ event.preventDefault();
167
+ this.parent.focusHeader(this.index() - 1);
168
+ }
169
+ }
170
+ static ɵfac = i0.ɵɵngDeclareFactory({
171
+ minVersion: "12.0.0",
172
+ version: "22.2.0",
173
+ ngImport: i0,
174
+ type: AccordionItem,
175
+ deps: [],
176
+ target: i0.ɵɵFactoryTarget.Component
177
+ });
178
+ static ɵcmp = i0.ɵɵngDeclareComponent({
179
+ minVersion: "17.2.0",
180
+ version: "22.2.0",
181
+ type: AccordionItem,
182
+ isStandalone: true,
183
+ selector: "gbt-accordion-item",
184
+ inputs: { label: {
185
+ classPropertyName: "label",
186
+ publicName: "label",
187
+ isSignal: true,
188
+ isRequired: true,
189
+ transformFunction: null
190
+ } },
191
+ viewQueries: [{
192
+ propertyName: "header",
193
+ first: true,
194
+ predicate: ["header"],
195
+ descendants: true,
196
+ isSignal: true
197
+ }],
198
+ ngImport: i0,
199
+ template: "<button\n #header\n type=\"button\"\n class=\"gbt-accordion-item__header\"\n [class.gbt-accordion-item__header--open]=\"active()\"\n [id]=\"headerId()\"\n [attr.aria-expanded]=\"active()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"gbt-accordion-item__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-accordion-item__chevron\" aria-hidden=\"true\" />\n</button>\n<div\n class=\"gbt-accordion-item__panel\"\n [class.gbt-accordion-item__panel--open]=\"active()\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.inert]=\"active() ? null : ''\"\n>\n <div class=\"gbt-accordion-item__panel-inner\">\n <div class=\"gbt-accordion-item__panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n",
200
+ styles: [":host{display:block}:host:not(:last-child){border-bottom:1px solid var(--border-color)}.gbt-accordion-item__header{box-sizing:border-box;display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem 1rem;background:var(--bg-principal);border:none;color:var(--text-primary);font-size:14px;font-weight:600;text-align:left;cursor:pointer;transition:background .12s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__header:hover{background:var(--bg-hover)}.gbt-accordion-item__header:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px}.gbt-accordion-item__label{flex:1;min-width:0}.gbt-accordion-item__chevron{flex-shrink:0;color:var(--text-secondary);transition:transform .2s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__header--open .gbt-accordion-item__chevron{transform:rotate(180deg)}.gbt-accordion-item__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__panel--open{grid-template-rows:1fr}.gbt-accordion-item__panel-inner{overflow:hidden;min-height:0}.gbt-accordion-item__panel-content{padding:1rem}@media(prefers-reduced-motion:reduce){.gbt-accordion-item__chevron,.gbt-accordion-item__panel{transition:none}}\n"],
201
+ dependencies: [{
202
+ kind: "component",
203
+ type: Icon,
204
+ selector: "gbt-icon",
205
+ inputs: ["name"]
206
+ }],
207
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
208
+ });
209
+ };
210
+ i0.ɵɵngDeclareClassMetadata({
211
+ minVersion: "12.0.0",
212
+ version: "22.2.0",
213
+ ngImport: i0,
214
+ type: AccordionItem,
215
+ decorators: [{
216
+ type: Component,
217
+ args: [{
218
+ selector: "gbt-accordion-item",
219
+ standalone: true,
220
+ imports: [Icon],
221
+ changeDetection: ChangeDetectionStrategy.OnPush,
222
+ template: "<button\n #header\n type=\"button\"\n class=\"gbt-accordion-item__header\"\n [class.gbt-accordion-item__header--open]=\"active()\"\n [id]=\"headerId()\"\n [attr.aria-expanded]=\"active()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"gbt-accordion-item__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-accordion-item__chevron\" aria-hidden=\"true\" />\n</button>\n<div\n class=\"gbt-accordion-item__panel\"\n [class.gbt-accordion-item__panel--open]=\"active()\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.inert]=\"active() ? null : ''\"\n>\n <div class=\"gbt-accordion-item__panel-inner\">\n <div class=\"gbt-accordion-item__panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n",
223
+ styles: [":host{display:block}:host:not(:last-child){border-bottom:1px solid var(--border-color)}.gbt-accordion-item__header{box-sizing:border-box;display:flex;align-items:center;gap:.75rem;width:100%;padding:.875rem 1rem;background:var(--bg-principal);border:none;color:var(--text-primary);font-size:14px;font-weight:600;text-align:left;cursor:pointer;transition:background .12s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__header:hover{background:var(--bg-hover)}.gbt-accordion-item__header:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px}.gbt-accordion-item__label{flex:1;min-width:0}.gbt-accordion-item__chevron{flex-shrink:0;color:var(--text-secondary);transition:transform .2s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__header--open .gbt-accordion-item__chevron{transform:rotate(180deg)}.gbt-accordion-item__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s cubic-bezier(.4,0,.2,1)}.gbt-accordion-item__panel--open{grid-template-rows:1fr}.gbt-accordion-item__panel-inner{overflow:hidden;min-height:0}.gbt-accordion-item__panel-content{padding:1rem}@media(prefers-reduced-motion:reduce){.gbt-accordion-item__chevron,.gbt-accordion-item__panel{transition:none}}\n"]
224
+ }]
225
+ }],
226
+ propDecorators: {
227
+ header: [{
228
+ type: i0.ViewChild,
229
+ args: ["header", { isSignal: true }]
230
+ }],
231
+ label: [{
232
+ type: i0.Input,
233
+ args: [{
234
+ isSignal: true,
235
+ alias: "label",
236
+ required: true
237
+ }]
238
+ }]
239
+ }
240
+ });
241
+ export { Accordion, AccordionItem };
242
+
243
+ //# sourceMappingURL=masmarino-gabarit-accordion.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masmarino-gabarit-accordion.mjs","names":[],"sources":["../../../projects/gabarit/accordion/accordion.ts","../../../projects/gabarit/accordion/accordion-item/accordion-item.ts","../../../projects/gabarit/accordion/accordion-item/accordion-item.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n input,\n model,\n} from '@angular/core'\nimport { AccordionItem } from './accordion-item/accordion-item'\n\nexport type AccordionMode = 'single' | 'multiple'\n\nlet nextAccordionId = 0\n\n@Component({\n selector: 'gbt-accordion',\n standalone: true,\n imports: [],\n template: `\n <div class=\"gbt-accordion\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrl: './accordion.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Accordion {\n id = input<string>(`gbt-accordion-${++nextAccordionId}`)\n mode = input<AccordionMode>('single')\n expanded = model<number[]>([])\n\n protected readonly items = contentChildren(AccordionItem)\n\n constructor() {\n effect(() => {\n const items = this.items()\n const expanded = this.expanded()\n const groupId = this.id()\n items.forEach((item, i) => item.setState(i, expanded.includes(i), groupId))\n })\n }\n\n toggle(index: number): void {\n const current = this.expanded()\n if (this.mode() === 'single') {\n this.expanded.set(current.includes(index) ? [] : [index])\n return\n }\n this.expanded.set(\n current.includes(index) ? current.filter((i) => i !== index) : [...current, index],\n )\n }\n\n focusHeader(index: number): void {\n const items = this.items()\n const count = items.length\n if (count === 0) {\n return\n }\n const wrapped = ((index % count) + count) % count\n items[wrapped]?.focusHeader()\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core'\nimport { Icon } from '@masmarino/gabarit/icon'\nimport { Accordion } from '../accordion'\n\n@Component({\n selector: 'gbt-accordion-item',\n standalone: true,\n imports: [Icon],\n templateUrl: './accordion-item.html',\n styleUrl: './accordion-item.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AccordionItem {\n private readonly parent = inject(Accordion)\n private readonly header = viewChild<ElementRef<HTMLButtonElement>>('header')\n\n label = input.required<string>()\n\n protected readonly active = signal(false)\n protected readonly index = signal(0)\n protected readonly groupId = signal('')\n\n protected readonly headerId = computed(() => `${this.groupId()}-header-${this.index()}`)\n protected readonly panelId = computed(() => `${this.groupId()}-panel-${this.index()}`)\n\n setState(index: number, active: boolean, groupId: string): void {\n this.index.set(index)\n this.active.set(active)\n this.groupId.set(groupId)\n }\n\n focusHeader(): void {\n this.header()?.nativeElement.focus()\n }\n\n protected toggle(): void {\n this.parent.toggle(this.index())\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n this.parent.focusHeader(this.index() + 1)\n } else if (event.key === 'ArrowUp') {\n event.preventDefault()\n this.parent.focusHeader(this.index() - 1)\n }\n }\n}\n","<button\n #header\n type=\"button\"\n class=\"gbt-accordion-item__header\"\n [class.gbt-accordion-item__header--open]=\"active()\"\n [id]=\"headerId()\"\n [attr.aria-expanded]=\"active()\"\n [attr.aria-controls]=\"panelId()\"\n (click)=\"toggle()\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"gbt-accordion-item__label\">{{ label() }}</span>\n <gbt-icon name=\"chevron-down\" class=\"gbt-accordion-item__chevron\" aria-hidden=\"true\" />\n</button>\n<div\n class=\"gbt-accordion-item__panel\"\n [class.gbt-accordion-item__panel--open]=\"active()\"\n [id]=\"panelId()\"\n [attr.aria-labelledby]=\"headerId()\"\n [attr.inert]=\"active() ? null : ''\"\n>\n <div class=\"gbt-accordion-item__panel-inner\">\n <div class=\"gbt-accordion-item__panel-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n"],"mappings":";;;AAYA,IAAI,kBAAkB;AActB,IAAa,YAAb,MAAa,UAAS;CACpB,KAAK,MAAc,iBAAiB,EAAE,mBAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,KAAA,CAAA,+BAAA,CAAA,CAAA;CACxD,OAAO,MAAqB,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,WAAW,MAAgB,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAEX,QAAQ,gBAAgB,eAAc,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAEzD,cAAA;EACE,aAAY;GACV,MAAM,QAAQ,KAAK,MAAK;GACxB,MAAM,WAAW,KAAK,SAAQ;GAC9B,MAAM,UAAU,KAAK,GAAE;GACvB,MAAM,SAAS,MAAM,MAAM,KAAK,SAAS,GAAG,SAAS,SAAS,CAAC,GAAG,OAAO,CAAC;EAC5E,CAAC;CACH;CAEA,OAAO,OAAa;EAClB,MAAM,UAAU,KAAK,SAAQ;EAC7B,IAAI,KAAK,KAAI,MAAO,UAAU;GAC5B,KAAK,SAAS,IAAI,QAAQ,SAAS,KAAK,IAAI,CAAA,IAAK,CAAC,KAAK,CAAC;GACxD;EACF;EACA,KAAK,SAAS,IACZ,QAAQ,SAAS,KAAK,IAAI,QAAQ,QAAQ,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC;CAEtF;CAEA,YAAY,OAAa;EACvB,MAAM,QAAQ,KAAK,MAAK;EACxB,MAAM,QAAQ,MAAM;EACpB,IAAI,UAAU,GACZ;EAGF,OADkB,QAAQ,QAAS,SAAS,MAC9B,EAAE,YAAW;CAC7B;CAnCW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAS,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAT,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAS,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,IAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,UAAA,iBAAA;EAAA,SAAA,CAAA;GAAA,cAAA;GAAA,WAKuB;GAAa,UAAA;EAAA,CAAA;EAAA,UAAA;EAAA,UAb9C;;;;;EAIT,UAAA;EAAA,QAAA,CAAA,iIAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAS,YAAA,CAAA;EAZrB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAe,YACb;GAAI,SACP,CAAA;GAAE,UACD;;;;;GAIT,iBAEgB,wBAAwB;GAAM,QAAA,CAAA,iIAAA;EAAA,CAAA;CAOJ,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,IAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,MAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,GAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,gBAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,GAAA,iBAAA,aAAa,GAAA,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;ACV1D,IAAa,gBAAb,MAAa,cAAa;CACP,SAAS,OAAO,SAAS;CACzB,SAAS,UAAyC,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE5E,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAEb,SAAS,OAAO,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACtB,QAAQ,OAAO,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACjB,UAAU,OAAO,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAEpB,WAAW,eAAe,GAAG,KAAK,QAAO,EAAE,UAAW,KAAK,MAAK,KAAK,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACrE,UAAU,eAAe,GAAG,KAAK,QAAO,EAAE,SAAU,KAAK,MAAK,KAAK,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAEtF,SAAS,OAAe,QAAiB,SAAe;EACtD,KAAK,MAAM,IAAI,KAAK;EACpB,KAAK,OAAO,IAAI,MAAM;EACtB,KAAK,QAAQ,IAAI,OAAO;CAC1B;CAEA,cAAW;EACT,KAAK,OAAM,CAAE,EAAE,cAAc,MAAK;CACpC;CAEU,SAAM;EACd,KAAK,OAAO,OAAO,KAAK,MAAK,CAAE;CACjC;CAEU,UAAU,OAAoB;EACtC,IAAI,MAAM,QAAQ,aAAa;GAC7B,MAAM,eAAc;GACpB,KAAK,OAAO,YAAY,KAAK,MAAK,IAAK,CAAC;EAC1C,OAAO,IAAI,MAAM,QAAQ,WAAW;GAClC,MAAM,eAAc;GACpB,KAAK,OAAO,YAAY,KAAK,MAAK,IAAK,CAAC;EAC1C;CACF;CAnCW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAa,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAb,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAa,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,OAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,aAAA,CAAA;GAAA,cAAA;GAAA,OAAA;GAAA,WAAA,CAAA,QAAA;GAAA,aAAA;GAAA,UAAA;EAAA,CAAA;EAAA,UAAA;EAAA,UCrB1B;EA2BA,QAAA,CAAA,gtCAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MDXY;GAAI,UAAA;GAAA,QAAA,CAAA,MAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKH,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAa,YAAA,CAAA;EARzB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,YAClB;GAAI,SACP,CAAC,IAAI;GAAC,iBAGE,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,gtCAAA;EAAA,CAAA;CAIoB,CAAA;CAAA,gBAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,UAAQ,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA"}