@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,1238 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ElementRef, Injector, afterNextRender, booleanAttribute, computed, forwardRef, inject, input, signal } from "@angular/core";
3
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
4
+ import { Icon } from "@masmarino/gabarit/icon";
5
+ import { floatingPanelAnchor } from "@masmarino/gabarit/floating-panel";
6
+ function isSameDay(a, b) {
7
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
8
+ }
9
+ function addMonths(date, delta) {
10
+ const day = date.getDate();
11
+ const firstOfTarget = new Date(date.getFullYear(), date.getMonth() + delta, 1);
12
+ const daysInTarget = new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth() + 1, 0).getDate();
13
+ return new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth(), Math.min(day, daysInTarget));
14
+ }
15
+ function addYears(date, delta) {
16
+ return addMonths(date, delta * 12);
17
+ }
18
+ function shiftDays(date, delta) {
19
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() + delta);
20
+ }
21
+ function startOfWeek(date, weekStartsOn) {
22
+ const diff = (date.getDay() - weekStartsOn + 7) % 7;
23
+ const result = new Date(date.getFullYear(), date.getMonth(), date.getDate());
24
+ result.setDate(result.getDate() - diff);
25
+ return result;
26
+ }
27
+ function endOfWeek(date, weekStartsOn) {
28
+ const start = startOfWeek(date, weekStartsOn);
29
+ start.setDate(start.getDate() + 6);
30
+ return start;
31
+ }
32
+ function buildCalendarGrid(year, month, weekStartsOn) {
33
+ const gridStart = startOfWeek(new Date(year, month, 1), weekStartsOn);
34
+ const today = /* @__PURE__ */ new Date();
35
+ const days = [];
36
+ for (let i = 0; i < 42; i++) {
37
+ const date = new Date(gridStart.getFullYear(), gridStart.getMonth(), gridStart.getDate() + i);
38
+ days.push({
39
+ date,
40
+ inCurrentMonth: date.getMonth() === month,
41
+ isToday: isSameDay(date, today)
42
+ });
43
+ }
44
+ return days;
45
+ }
46
+ function weekdayLabels(locale, weekStartsOn) {
47
+ const formatter = new Intl.DateTimeFormat(locale, { weekday: "short" });
48
+ const reference = new Date(2024, 0, 7 + weekStartsOn);
49
+ return Array.from({ length: 7 }, (_, i) => {
50
+ const date = new Date(reference.getFullYear(), reference.getMonth(), reference.getDate() + i);
51
+ return formatter.format(date);
52
+ });
53
+ }
54
+ var CalendarPanel = class {
55
+ deps;
56
+ open = signal(false, ...ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []);
57
+ anchorDate = signal(/* @__PURE__ */ new Date(), ...ngDevMode ? [{ debugName: "anchorDate" }] : /* istanbul ignore next */ []);
58
+ focusedDate = signal(/* @__PURE__ */ new Date(), ...ngDevMode ? [{ debugName: "focusedDate" }] : /* istanbul ignore next */ []);
59
+ panelStyle = signal(null, ...ngDevMode ? [{ debugName: "panelStyle" }] : /* istanbul ignore next */ []);
60
+ monthViews = computed(() => {
61
+ const anchor = this.anchorDate();
62
+ const count = this.deps.visibleMonths();
63
+ const formatter = new Intl.DateTimeFormat(this.deps.locale(), {
64
+ month: "long",
65
+ year: "numeric"
66
+ });
67
+ const views = Array.from({ length: count }, (_, i) => {
68
+ const monthDate = new Date(anchor.getFullYear(), anchor.getMonth() + i, 1);
69
+ const year = monthDate.getFullYear();
70
+ const month = monthDate.getMonth();
71
+ const days = buildCalendarGrid(year, month, this.deps.weekStartsOn());
72
+ const weeks = [];
73
+ for (let d = 0; d < days.length; d += 7) weeks.push(days.slice(d, d + 7));
74
+ return {
75
+ year,
76
+ month,
77
+ label: formatter.format(monthDate),
78
+ weeks
79
+ };
80
+ });
81
+ const neededWeeks = views.map((view) => {
82
+ let last = view.weeks.length;
83
+ while (last > 1 && view.weeks[last - 1].every((day) => !day.inCurrentMonth)) last--;
84
+ return last;
85
+ });
86
+ const sharedWeeks = Math.max(...neededWeeks);
87
+ return views.map((view) => ({
88
+ ...view,
89
+ weeks: view.weeks.slice(0, sharedWeeks)
90
+ }));
91
+ }, ...ngDevMode ? [{ debugName: "monthViews" }] : /* istanbul ignore next */ []);
92
+ panelLabel = computed(() => {
93
+ const views = this.monthViews();
94
+ return views.length === 1 ? views[0].label : `${views[0].label} – ${views[views.length - 1].label}`;
95
+ }, ...ngDevMode ? [{ debugName: "panelLabel" }] : /* istanbul ignore next */ []);
96
+ weekdayLabels = computed(() => weekdayLabels(this.deps.locale(), this.deps.weekStartsOn()), ...ngDevMode ? [{ debugName: "weekdayLabels" }] : /* istanbul ignore next */ []);
97
+ monthOptions = computed(() => {
98
+ const formatter = new Intl.DateTimeFormat(this.deps.locale(), { month: "long" });
99
+ return Array.from({ length: 12 }, (_, i) => ({
100
+ value: i,
101
+ label: formatter.format(new Date(2024, i, 1))
102
+ }));
103
+ }, ...ngDevMode ? [{ debugName: "monthOptions" }] : /* istanbul ignore next */ []);
104
+ yearOptions = computed(() => {
105
+ const min = this.deps.minYear();
106
+ const max = this.deps.maxYear();
107
+ return Array.from({ length: max - min + 1 }, (_, i) => min + i);
108
+ }, ...ngDevMode ? [{ debugName: "yearOptions" }] : /* istanbul ignore next */ []);
109
+ constructor(deps) {
110
+ this.deps = deps;
111
+ }
112
+ cellId(date) {
113
+ return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
114
+ }
115
+ isFocused(date) {
116
+ return isSameDay(this.focusedDate(), date);
117
+ }
118
+ toggle(onOpen) {
119
+ this.open.update((value) => !value);
120
+ if (this.open()) {
121
+ const target = onOpen();
122
+ this.focusedDate.set(target);
123
+ this.anchorDate.set(new Date(target.getFullYear(), target.getMonth(), 1));
124
+ this.updatePanelPosition();
125
+ this.focusCellAfterRender();
126
+ } else this.deps.onTouched();
127
+ }
128
+ close(returnFocus) {
129
+ if (!this.open()) return;
130
+ this.open.set(false);
131
+ this.deps.onTouched();
132
+ if (returnFocus) this.trigger()?.focus();
133
+ }
134
+ shiftMonth(delta) {
135
+ this.anchorDate.set(addMonths(this.anchorDate(), delta));
136
+ this.focusedDate.set(addMonths(this.focusedDate(), delta));
137
+ this.updatePanelPosition();
138
+ this.focusCellAfterRender();
139
+ }
140
+ onMonthSelect(value) {
141
+ this.setAnchorMonth(this.anchorDate().getFullYear(), Number(value));
142
+ }
143
+ onYearSelect(value) {
144
+ this.setAnchorMonth(Number(value), this.anchorDate().getMonth());
145
+ }
146
+ setAnchorMonth(year, month) {
147
+ const dayOfMonth = this.focusedDate().getDate();
148
+ const daysInTarget = new Date(year, month + 1, 0).getDate();
149
+ this.anchorDate.set(new Date(year, month, 1));
150
+ this.focusedDate.set(new Date(year, month, Math.min(dayOfMonth, daysInTarget)));
151
+ this.updatePanelPosition();
152
+ this.focusCellAfterRender();
153
+ }
154
+ handleNavigationKeydown(event) {
155
+ const current = this.focusedDate();
156
+ if (event.key === "PageDown" || event.key === "PageUp") {
157
+ event.preventDefault();
158
+ const delta = event.key === "PageDown" ? 1 : -1;
159
+ if (event.shiftKey) {
160
+ this.anchorDate.set(addYears(this.anchorDate(), delta));
161
+ this.focusedDate.set(addYears(current, delta));
162
+ } else {
163
+ this.anchorDate.set(addMonths(this.anchorDate(), delta));
164
+ this.focusedDate.set(addMonths(current, delta));
165
+ }
166
+ this.updatePanelPosition();
167
+ this.focusCellAfterRender();
168
+ return "month-changed";
169
+ }
170
+ const next = this.nextFocusedDate(current, event);
171
+ if (next === null) return "unhandled";
172
+ event.preventDefault();
173
+ this.ensureVisible(next);
174
+ this.focusedDate.set(next);
175
+ this.focusCellAfterRender();
176
+ return "day-changed";
177
+ }
178
+ nextFocusedDate(current, event) {
179
+ switch (event.key) {
180
+ case "ArrowRight": return shiftDays(current, 1);
181
+ case "ArrowLeft": return shiftDays(current, -1);
182
+ case "ArrowDown": return shiftDays(current, 7);
183
+ case "ArrowUp": return shiftDays(current, -7);
184
+ case "Home": return startOfWeek(current, this.deps.weekStartsOn());
185
+ case "End": return endOfWeek(current, this.deps.weekStartsOn());
186
+ default: return null;
187
+ }
188
+ }
189
+ ensureVisible(date) {
190
+ const anchor = this.anchorDate();
191
+ const visibleMonths = this.deps.visibleMonths();
192
+ const monthsDiff = (date.getFullYear() - anchor.getFullYear()) * 12 + (date.getMonth() - anchor.getMonth());
193
+ if (monthsDiff < 0) this.anchorDate.set(new Date(date.getFullYear(), date.getMonth(), 1));
194
+ else if (monthsDiff >= visibleMonths) this.anchorDate.set(addMonths(anchor, monthsDiff - visibleMonths + 1));
195
+ }
196
+ onEscape(event) {
197
+ if (event.key === "Escape" && this.open()) {
198
+ event.preventDefault();
199
+ event.stopPropagation();
200
+ this.close(true);
201
+ }
202
+ }
203
+ handleClickOutside(event) {
204
+ if (this.open() && !this.deps.elementRef.nativeElement.contains(event.target)) this.close(false);
205
+ }
206
+ updatePanelPosition() {
207
+ const anchor = floatingPanelAnchor(this.open(), this.trigger());
208
+ if (anchor) this.panelStyle.set({
209
+ top: `${anchor.bottom}px`,
210
+ left: `${anchor.left}px`
211
+ });
212
+ }
213
+ trigger() {
214
+ return this.deps.elementRef.nativeElement.querySelector(this.deps.triggerSelector);
215
+ }
216
+ focusCellAfterRender() {
217
+ afterNextRender(() => {
218
+ const id = this.cellId(this.focusedDate());
219
+ this.deps.elementRef.nativeElement.querySelector(`[data-date="${id}"]`)?.focus();
220
+ }, { injector: this.deps.injector });
221
+ }
222
+ };
223
+ let nextDatePickerId = 0;
224
+ const CURRENT_YEAR$1 = (/* @__PURE__ */ new Date()).getFullYear();
225
+ var DatePicker = class DatePicker {
226
+ elementRef = inject(ElementRef);
227
+ injector = inject(Injector);
228
+ id = input(`gbt-date-picker-${++nextDatePickerId}`, ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
229
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
230
+ placeholder = input("Select a date…", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
231
+ locale = input("en-US", ...ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []);
232
+ weekStartsOn = input(1, ...ngDevMode ? [{ debugName: "weekStartsOn" }] : /* istanbul ignore next */ []);
233
+ disabled = input(false, {
234
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
235
+ transform: booleanAttribute
236
+ });
237
+ required = input(false, {
238
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
239
+ transform: booleanAttribute
240
+ });
241
+ errorMessage = input(null, ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
242
+ previousMonthLabel = input("Previous month", ...ngDevMode ? [{ debugName: "previousMonthLabel" }] : /* istanbul ignore next */ []);
243
+ nextMonthLabel = input("Next month", ...ngDevMode ? [{ debugName: "nextMonthLabel" }] : /* istanbul ignore next */ []);
244
+ clearable = input(false, {
245
+ ...ngDevMode ? { debugName: "clearable" } : /* istanbul ignore next */ {},
246
+ transform: booleanAttribute
247
+ });
248
+ clearLabel = input("Clear date", ...ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []);
249
+ visibleMonths = input(1, ...ngDevMode ? [{ debugName: "visibleMonths" }] : /* istanbul ignore next */ []);
250
+ monthSelectLabel = input("Month", ...ngDevMode ? [{ debugName: "monthSelectLabel" }] : /* istanbul ignore next */ []);
251
+ yearSelectLabel = input("Year", ...ngDevMode ? [{ debugName: "yearSelectLabel" }] : /* istanbul ignore next */ []);
252
+ minYear = input(CURRENT_YEAR$1 - 100, ...ngDevMode ? [{ debugName: "minYear" }] : /* istanbul ignore next */ []);
253
+ maxYear = input(CURRENT_YEAR$1 + 10, ...ngDevMode ? [{ debugName: "maxYear" }] : /* istanbul ignore next */ []);
254
+ panel = new CalendarPanel({
255
+ elementRef: this.elementRef,
256
+ injector: this.injector,
257
+ triggerSelector: ".gbt-date-picker__trigger",
258
+ locale: () => this.locale(),
259
+ weekStartsOn: () => this.weekStartsOn(),
260
+ visibleMonths: () => this.visibleMonths(),
261
+ minYear: () => this.minYear(),
262
+ maxYear: () => this.maxYear(),
263
+ onTouched: () => this.onTouched()
264
+ });
265
+ open = this.panel.open;
266
+ selected = signal(null, ...ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []);
267
+ focusedDate = this.panel.focusedDate;
268
+ anchorDate = this.panel.anchorDate;
269
+ panelStyle = this.panel.panelStyle;
270
+ formDisabled = signal(false, ...ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []);
271
+ onChange = () => {};
272
+ onTouched = () => {};
273
+ isDisabled = computed(() => this.disabled() || this.formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
274
+ showClear = computed(() => this.clearable() && this.selected() !== null && !this.isDisabled(), ...ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []);
275
+ monthViews = this.panel.monthViews;
276
+ panelLabel = this.panel.panelLabel;
277
+ weekdayLabels = this.panel.weekdayLabels;
278
+ monthOptions = this.panel.monthOptions;
279
+ yearOptions = this.panel.yearOptions;
280
+ triggerLabel = computed(() => {
281
+ const value = this.selected();
282
+ return value ? new Intl.DateTimeFormat(this.locale(), { dateStyle: "medium" }).format(value) : "";
283
+ }, ...ngDevMode ? [{ debugName: "triggerLabel" }] : /* istanbul ignore next */ []);
284
+ writeValue(value) {
285
+ this.selected.set(value);
286
+ if (value) {
287
+ this.focusedDate.set(value);
288
+ this.anchorDate.set(new Date(value.getFullYear(), value.getMonth(), 1));
289
+ }
290
+ }
291
+ registerOnChange(fn) {
292
+ this.onChange = fn;
293
+ }
294
+ registerOnTouched(fn) {
295
+ this.onTouched = fn;
296
+ }
297
+ setDisabledState(isDisabled) {
298
+ this.formDisabled.set(isDisabled);
299
+ }
300
+ isSelected(date) {
301
+ const value = this.selected();
302
+ return value !== null && isSameDay(value, date);
303
+ }
304
+ isFocused(date) {
305
+ return this.panel.isFocused(date);
306
+ }
307
+ cellId(date) {
308
+ return this.panel.cellId(date);
309
+ }
310
+ toggleOpen() {
311
+ if (this.isDisabled()) return;
312
+ this.panel.toggle(() => this.selected() ?? /* @__PURE__ */ new Date());
313
+ }
314
+ close(returnFocus) {
315
+ this.panel.close(returnFocus);
316
+ }
317
+ clear(event) {
318
+ event.stopPropagation();
319
+ if (this.isDisabled()) return;
320
+ this.selected.set(null);
321
+ this.onChange(null);
322
+ this.onTouched();
323
+ this.panel.close(false);
324
+ }
325
+ selectDay(day) {
326
+ if (this.isDisabled()) return;
327
+ this.selected.set(day.date);
328
+ this.focusedDate.set(day.date);
329
+ this.panel.ensureVisible(day.date);
330
+ this.onChange(day.date);
331
+ this.panel.close(true);
332
+ }
333
+ shiftMonth(delta) {
334
+ this.panel.shiftMonth(delta);
335
+ }
336
+ onMonthSelect(value) {
337
+ this.panel.onMonthSelect(value);
338
+ }
339
+ onYearSelect(value) {
340
+ this.panel.onYearSelect(value);
341
+ }
342
+ onGridKeydown(event) {
343
+ if (event.key === "Enter" || event.key === " ") {
344
+ event.preventDefault();
345
+ const current = this.focusedDate();
346
+ this.selectDay({
347
+ date: current,
348
+ inCurrentMonth: true,
349
+ isToday: isSameDay(current, /* @__PURE__ */ new Date())
350
+ });
351
+ return;
352
+ }
353
+ this.panel.handleNavigationKeydown(event);
354
+ }
355
+ onEscape(event) {
356
+ this.panel.onEscape(event);
357
+ }
358
+ handleClickOutside(event) {
359
+ this.panel.handleClickOutside(event);
360
+ }
361
+ updatePanelPosition() {
362
+ this.panel.updatePanelPosition();
363
+ }
364
+ static ɵfac = i0.ɵɵngDeclareFactory({
365
+ minVersion: "12.0.0",
366
+ version: "22.2.0",
367
+ ngImport: i0,
368
+ type: DatePicker,
369
+ deps: [],
370
+ target: i0.ɵɵFactoryTarget.Component
371
+ });
372
+ static ɵcmp = i0.ɵɵngDeclareComponent({
373
+ minVersion: "17.0.0",
374
+ version: "22.2.0",
375
+ type: DatePicker,
376
+ isStandalone: true,
377
+ selector: "gbt-date-picker",
378
+ inputs: {
379
+ id: {
380
+ classPropertyName: "id",
381
+ publicName: "id",
382
+ isSignal: true,
383
+ isRequired: false,
384
+ transformFunction: null
385
+ },
386
+ label: {
387
+ classPropertyName: "label",
388
+ publicName: "label",
389
+ isSignal: true,
390
+ isRequired: false,
391
+ transformFunction: null
392
+ },
393
+ placeholder: {
394
+ classPropertyName: "placeholder",
395
+ publicName: "placeholder",
396
+ isSignal: true,
397
+ isRequired: false,
398
+ transformFunction: null
399
+ },
400
+ locale: {
401
+ classPropertyName: "locale",
402
+ publicName: "locale",
403
+ isSignal: true,
404
+ isRequired: false,
405
+ transformFunction: null
406
+ },
407
+ weekStartsOn: {
408
+ classPropertyName: "weekStartsOn",
409
+ publicName: "weekStartsOn",
410
+ isSignal: true,
411
+ isRequired: false,
412
+ transformFunction: null
413
+ },
414
+ disabled: {
415
+ classPropertyName: "disabled",
416
+ publicName: "disabled",
417
+ isSignal: true,
418
+ isRequired: false,
419
+ transformFunction: null
420
+ },
421
+ required: {
422
+ classPropertyName: "required",
423
+ publicName: "required",
424
+ isSignal: true,
425
+ isRequired: false,
426
+ transformFunction: null
427
+ },
428
+ errorMessage: {
429
+ classPropertyName: "errorMessage",
430
+ publicName: "errorMessage",
431
+ isSignal: true,
432
+ isRequired: false,
433
+ transformFunction: null
434
+ },
435
+ previousMonthLabel: {
436
+ classPropertyName: "previousMonthLabel",
437
+ publicName: "previousMonthLabel",
438
+ isSignal: true,
439
+ isRequired: false,
440
+ transformFunction: null
441
+ },
442
+ nextMonthLabel: {
443
+ classPropertyName: "nextMonthLabel",
444
+ publicName: "nextMonthLabel",
445
+ isSignal: true,
446
+ isRequired: false,
447
+ transformFunction: null
448
+ },
449
+ clearable: {
450
+ classPropertyName: "clearable",
451
+ publicName: "clearable",
452
+ isSignal: true,
453
+ isRequired: false,
454
+ transformFunction: null
455
+ },
456
+ clearLabel: {
457
+ classPropertyName: "clearLabel",
458
+ publicName: "clearLabel",
459
+ isSignal: true,
460
+ isRequired: false,
461
+ transformFunction: null
462
+ },
463
+ visibleMonths: {
464
+ classPropertyName: "visibleMonths",
465
+ publicName: "visibleMonths",
466
+ isSignal: true,
467
+ isRequired: false,
468
+ transformFunction: null
469
+ },
470
+ monthSelectLabel: {
471
+ classPropertyName: "monthSelectLabel",
472
+ publicName: "monthSelectLabel",
473
+ isSignal: true,
474
+ isRequired: false,
475
+ transformFunction: null
476
+ },
477
+ yearSelectLabel: {
478
+ classPropertyName: "yearSelectLabel",
479
+ publicName: "yearSelectLabel",
480
+ isSignal: true,
481
+ isRequired: false,
482
+ transformFunction: null
483
+ },
484
+ minYear: {
485
+ classPropertyName: "minYear",
486
+ publicName: "minYear",
487
+ isSignal: true,
488
+ isRequired: false,
489
+ transformFunction: null
490
+ },
491
+ maxYear: {
492
+ classPropertyName: "maxYear",
493
+ publicName: "maxYear",
494
+ isSignal: true,
495
+ isRequired: false,
496
+ transformFunction: null
497
+ }
498
+ },
499
+ host: { listeners: {
500
+ "document:click": "handleClickOutside($event)",
501
+ "keydown": "onEscape($event)",
502
+ "window:scroll": "updatePanelPosition()",
503
+ "window:resize": "updatePanelPosition()"
504
+ } },
505
+ providers: [{
506
+ provide: NG_VALUE_ACCESSOR,
507
+ useExisting: forwardRef(() => DatePicker),
508
+ multi: true
509
+ }],
510
+ ngImport: i0,
511
+ template: "<div class=\"gbt-date-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-picker__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n <div class=\"gbt-date-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-picker__trigger\"\n [class.gbt-date-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-picker__trigger-label\"\n [class.gbt-date-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">\n {{ year }}\n </option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-picker__month\">\n <div\n class=\"gbt-date-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-picker__row gbt-date-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-picker__day\"\n [class.gbt-date-picker__day--today]=\"day.isToday\"\n [class.gbt-date-picker__day--selected]=\"isSelected(day.date)\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-selected]=\"isSelected(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span\n role=\"gridcell\"\n class=\"gbt-date-picker__day gbt-date-picker__day--empty\"\n ></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n",
512
+ styles: [".gbt-date-picker{display:inline-flex;flex-direction:column;gap:.375rem}.gbt-date-picker__label{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.gbt-date-picker__error{margin:0;font-size:.75rem;color:var(--color-error-text)}.gbt-date-picker__field{position:relative;display:inline-flex}.gbt-date-picker__trigger{box-sizing:border-box;display:flex;align-items:center;width:220px;height:var(--gbt-control-height-md);padding:0 34px 0 10px;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:14px;cursor:pointer;transition:border-color .15s cubic-bezier(.4,0,.2,1)}.gbt-date-picker__trigger--open{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-picker__trigger:disabled{cursor:not-allowed;opacity:.5}.gbt-date-picker__trigger:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__trigger-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.gbt-date-picker__trigger-label--placeholder{color:var(--text-discret)}.gbt-date-picker__icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.gbt-date-picker__clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer}.gbt-date-picker__clear:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-picker__clear:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__panel{box-sizing:border-box;position:fixed;z-index:1000;padding:.75rem;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);box-shadow:var(--site-shadow-lg);animation:gbt-date-picker-scale-in .15s cubic-bezier(.34,1.56,.64,1) both}.gbt-date-picker__nav{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.gbt-date-picker__headings{display:flex;flex:1;justify-content:center;gap:1.25rem}.gbt-date-picker__nav-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-secondary);cursor:pointer}.gbt-date-picker__nav-button:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-picker__nav-button:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__select{box-sizing:border-box;height:28px;padding:0 6px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.gbt-date-picker__select:hover{background:var(--bg-hover)}.gbt-date-picker__select:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__months{display:flex;justify-content:center;gap:1.25rem;margin-inline:.65rem;margin-bottom:.65rem}.gbt-date-picker__month-heading{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:.375rem;width:184px;height:28px}.gbt-date-picker__month-label{font-size:14px;font-weight:600;color:var(--text-primary);text-align:center}.gbt-date-picker__row{display:grid;grid-template-columns:repeat(7,32px)}.gbt-date-picker__row--head{margin-bottom:.25rem;margin-top:.25rem}.gbt-date-picker__weekday{display:flex;align-items:center;justify-content:center;height:24px;font-size:13px;font-weight:600;color:var(--text-secondary)}.gbt-date-picker__day{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;border-radius:50%;color:var(--text-primary);font-size:13px;cursor:pointer}.gbt-date-picker__day:hover:not(:disabled):not(.gbt-date-picker__day--empty){background:var(--bg-hover)}.gbt-date-picker__day:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px}.gbt-date-picker__day--empty{cursor:default}.gbt-date-picker__day--today{font-weight:700;box-shadow:inset 0 0 0 1px var(--border-color)}.gbt-date-picker__day--selected{background:var(--primary);color:var(--text-on-primary);font-weight:600}@media(prefers-reduced-motion:reduce){.gbt-date-picker__panel{animation:none}.gbt-date-picker__trigger{transition:none}}@keyframes gbt-date-picker-scale-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}\n"],
513
+ dependencies: [{
514
+ kind: "component",
515
+ type: Icon,
516
+ selector: "gbt-icon",
517
+ inputs: ["name"]
518
+ }],
519
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
520
+ });
521
+ };
522
+ i0.ɵɵngDeclareClassMetadata({
523
+ minVersion: "12.0.0",
524
+ version: "22.2.0",
525
+ ngImport: i0,
526
+ type: DatePicker,
527
+ decorators: [{
528
+ type: Component,
529
+ args: [{
530
+ selector: "gbt-date-picker",
531
+ standalone: true,
532
+ imports: [Icon],
533
+ changeDetection: ChangeDetectionStrategy.OnPush,
534
+ host: {
535
+ "(document:click)": "handleClickOutside($event)",
536
+ "(keydown)": "onEscape($event)",
537
+ "(window:scroll)": "updatePanelPosition()",
538
+ "(window:resize)": "updatePanelPosition()"
539
+ },
540
+ providers: [{
541
+ provide: NG_VALUE_ACCESSOR,
542
+ useExisting: forwardRef(() => DatePicker),
543
+ multi: true
544
+ }],
545
+ template: "<div class=\"gbt-date-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-picker__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n <div class=\"gbt-date-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-picker__trigger\"\n [class.gbt-date-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-picker__trigger-label\"\n [class.gbt-date-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">\n {{ year }}\n </option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-picker__month\">\n <div\n class=\"gbt-date-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-picker__row gbt-date-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-picker__day\"\n [class.gbt-date-picker__day--today]=\"day.isToday\"\n [class.gbt-date-picker__day--selected]=\"isSelected(day.date)\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-selected]=\"isSelected(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day)\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span\n role=\"gridcell\"\n class=\"gbt-date-picker__day gbt-date-picker__day--empty\"\n ></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-picker__error\" role=\"alert\">{{ errorMessage() }}</p>\n }\n</div>\n",
546
+ styles: [".gbt-date-picker{display:inline-flex;flex-direction:column;gap:.375rem}.gbt-date-picker__label{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.gbt-date-picker__error{margin:0;font-size:.75rem;color:var(--color-error-text)}.gbt-date-picker__field{position:relative;display:inline-flex}.gbt-date-picker__trigger{box-sizing:border-box;display:flex;align-items:center;width:220px;height:var(--gbt-control-height-md);padding:0 34px 0 10px;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:14px;cursor:pointer;transition:border-color .15s cubic-bezier(.4,0,.2,1)}.gbt-date-picker__trigger--open{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-picker__trigger:disabled{cursor:not-allowed;opacity:.5}.gbt-date-picker__trigger:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__trigger-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.gbt-date-picker__trigger-label--placeholder{color:var(--text-discret)}.gbt-date-picker__icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.gbt-date-picker__clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer}.gbt-date-picker__clear:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-picker__clear:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__panel{box-sizing:border-box;position:fixed;z-index:1000;padding:.75rem;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);box-shadow:var(--site-shadow-lg);animation:gbt-date-picker-scale-in .15s cubic-bezier(.34,1.56,.64,1) both}.gbt-date-picker__nav{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.gbt-date-picker__headings{display:flex;flex:1;justify-content:center;gap:1.25rem}.gbt-date-picker__nav-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-secondary);cursor:pointer}.gbt-date-picker__nav-button:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-picker__nav-button:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__select{box-sizing:border-box;height:28px;padding:0 6px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.gbt-date-picker__select:hover{background:var(--bg-hover)}.gbt-date-picker__select:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-picker__months{display:flex;justify-content:center;gap:1.25rem;margin-inline:.65rem;margin-bottom:.65rem}.gbt-date-picker__month-heading{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:.375rem;width:184px;height:28px}.gbt-date-picker__month-label{font-size:14px;font-weight:600;color:var(--text-primary);text-align:center}.gbt-date-picker__row{display:grid;grid-template-columns:repeat(7,32px)}.gbt-date-picker__row--head{margin-bottom:.25rem;margin-top:.25rem}.gbt-date-picker__weekday{display:flex;align-items:center;justify-content:center;height:24px;font-size:13px;font-weight:600;color:var(--text-secondary)}.gbt-date-picker__day{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;border-radius:50%;color:var(--text-primary);font-size:13px;cursor:pointer}.gbt-date-picker__day:hover:not(:disabled):not(.gbt-date-picker__day--empty){background:var(--bg-hover)}.gbt-date-picker__day:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px}.gbt-date-picker__day--empty{cursor:default}.gbt-date-picker__day--today{font-weight:700;box-shadow:inset 0 0 0 1px var(--border-color)}.gbt-date-picker__day--selected{background:var(--primary);color:var(--text-on-primary);font-weight:600}@media(prefers-reduced-motion:reduce){.gbt-date-picker__panel{animation:none}.gbt-date-picker__trigger{transition:none}}@keyframes gbt-date-picker-scale-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}\n"]
547
+ }]
548
+ }],
549
+ propDecorators: {
550
+ id: [{
551
+ type: i0.Input,
552
+ args: [{
553
+ isSignal: true,
554
+ alias: "id",
555
+ required: false
556
+ }]
557
+ }],
558
+ label: [{
559
+ type: i0.Input,
560
+ args: [{
561
+ isSignal: true,
562
+ alias: "label",
563
+ required: false
564
+ }]
565
+ }],
566
+ placeholder: [{
567
+ type: i0.Input,
568
+ args: [{
569
+ isSignal: true,
570
+ alias: "placeholder",
571
+ required: false
572
+ }]
573
+ }],
574
+ locale: [{
575
+ type: i0.Input,
576
+ args: [{
577
+ isSignal: true,
578
+ alias: "locale",
579
+ required: false
580
+ }]
581
+ }],
582
+ weekStartsOn: [{
583
+ type: i0.Input,
584
+ args: [{
585
+ isSignal: true,
586
+ alias: "weekStartsOn",
587
+ required: false
588
+ }]
589
+ }],
590
+ disabled: [{
591
+ type: i0.Input,
592
+ args: [{
593
+ isSignal: true,
594
+ alias: "disabled",
595
+ required: false
596
+ }]
597
+ }],
598
+ required: [{
599
+ type: i0.Input,
600
+ args: [{
601
+ isSignal: true,
602
+ alias: "required",
603
+ required: false
604
+ }]
605
+ }],
606
+ errorMessage: [{
607
+ type: i0.Input,
608
+ args: [{
609
+ isSignal: true,
610
+ alias: "errorMessage",
611
+ required: false
612
+ }]
613
+ }],
614
+ previousMonthLabel: [{
615
+ type: i0.Input,
616
+ args: [{
617
+ isSignal: true,
618
+ alias: "previousMonthLabel",
619
+ required: false
620
+ }]
621
+ }],
622
+ nextMonthLabel: [{
623
+ type: i0.Input,
624
+ args: [{
625
+ isSignal: true,
626
+ alias: "nextMonthLabel",
627
+ required: false
628
+ }]
629
+ }],
630
+ clearable: [{
631
+ type: i0.Input,
632
+ args: [{
633
+ isSignal: true,
634
+ alias: "clearable",
635
+ required: false
636
+ }]
637
+ }],
638
+ clearLabel: [{
639
+ type: i0.Input,
640
+ args: [{
641
+ isSignal: true,
642
+ alias: "clearLabel",
643
+ required: false
644
+ }]
645
+ }],
646
+ visibleMonths: [{
647
+ type: i0.Input,
648
+ args: [{
649
+ isSignal: true,
650
+ alias: "visibleMonths",
651
+ required: false
652
+ }]
653
+ }],
654
+ monthSelectLabel: [{
655
+ type: i0.Input,
656
+ args: [{
657
+ isSignal: true,
658
+ alias: "monthSelectLabel",
659
+ required: false
660
+ }]
661
+ }],
662
+ yearSelectLabel: [{
663
+ type: i0.Input,
664
+ args: [{
665
+ isSignal: true,
666
+ alias: "yearSelectLabel",
667
+ required: false
668
+ }]
669
+ }],
670
+ minYear: [{
671
+ type: i0.Input,
672
+ args: [{
673
+ isSignal: true,
674
+ alias: "minYear",
675
+ required: false
676
+ }]
677
+ }],
678
+ maxYear: [{
679
+ type: i0.Input,
680
+ args: [{
681
+ isSignal: true,
682
+ alias: "maxYear",
683
+ required: false
684
+ }]
685
+ }]
686
+ }
687
+ });
688
+ let nextId = 0;
689
+ const CURRENT_YEAR = (/* @__PURE__ */ new Date()).getFullYear();
690
+ var DateRangePicker = class DateRangePicker {
691
+ elementRef = inject(ElementRef);
692
+ injector = inject(Injector);
693
+ id = input(`gbt-date-range-picker-${++nextId}`, ...ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []);
694
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
695
+ placeholder = input("Select a date range…", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
696
+ locale = input("en-US", ...ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []);
697
+ weekStartsOn = input(1, ...ngDevMode ? [{ debugName: "weekStartsOn" }] : /* istanbul ignore next */ []);
698
+ disabled = input(false, {
699
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
700
+ transform: booleanAttribute
701
+ });
702
+ required = input(false, {
703
+ ...ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {},
704
+ transform: booleanAttribute
705
+ });
706
+ errorMessage = input(null, ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
707
+ previousMonthLabel = input("Previous month", ...ngDevMode ? [{ debugName: "previousMonthLabel" }] : /* istanbul ignore next */ []);
708
+ nextMonthLabel = input("Next month", ...ngDevMode ? [{ debugName: "nextMonthLabel" }] : /* istanbul ignore next */ []);
709
+ clearable = input(false, {
710
+ ...ngDevMode ? { debugName: "clearable" } : /* istanbul ignore next */ {},
711
+ transform: booleanAttribute
712
+ });
713
+ clearLabel = input("Clear date range", ...ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []);
714
+ visibleMonths = input(2, ...ngDevMode ? [{ debugName: "visibleMonths" }] : /* istanbul ignore next */ []);
715
+ monthSelectLabel = input("Month", ...ngDevMode ? [{ debugName: "monthSelectLabel" }] : /* istanbul ignore next */ []);
716
+ yearSelectLabel = input("Year", ...ngDevMode ? [{ debugName: "yearSelectLabel" }] : /* istanbul ignore next */ []);
717
+ minYear = input(CURRENT_YEAR - 100, ...ngDevMode ? [{ debugName: "minYear" }] : /* istanbul ignore next */ []);
718
+ maxYear = input(CURRENT_YEAR + 10, ...ngDevMode ? [{ debugName: "maxYear" }] : /* istanbul ignore next */ []);
719
+ rangeStatus = input((start, end) => {
720
+ if (!start) return "";
721
+ if (!end) return `${start} selected as the start date. Choose an end date.`;
722
+ return `Date range: ${start} to ${end}.`;
723
+ }, ...ngDevMode ? [{ debugName: "rangeStatus" }] : /* istanbul ignore next */ []);
724
+ panel = new CalendarPanel({
725
+ elementRef: this.elementRef,
726
+ injector: this.injector,
727
+ triggerSelector: ".gbt-date-range-picker__trigger",
728
+ locale: () => this.locale(),
729
+ weekStartsOn: () => this.weekStartsOn(),
730
+ visibleMonths: () => this.visibleMonths(),
731
+ minYear: () => this.minYear(),
732
+ maxYear: () => this.maxYear(),
733
+ onTouched: () => this.onTouched()
734
+ });
735
+ open = this.panel.open;
736
+ value = signal(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
737
+ draftStart = signal(null, ...ngDevMode ? [{ debugName: "draftStart" }] : /* istanbul ignore next */ []);
738
+ draftEnd = signal(null, ...ngDevMode ? [{ debugName: "draftEnd" }] : /* istanbul ignore next */ []);
739
+ hoveredDate = signal(null, ...ngDevMode ? [{ debugName: "hoveredDate" }] : /* istanbul ignore next */ []);
740
+ focusedDate = this.panel.focusedDate;
741
+ anchorDate = this.panel.anchorDate;
742
+ panelStyle = this.panel.panelStyle;
743
+ formDisabled = signal(false, ...ngDevMode ? [{ debugName: "formDisabled" }] : /* istanbul ignore next */ []);
744
+ onChange = () => {};
745
+ onTouched = () => {};
746
+ isDisabled = computed(() => this.disabled() || this.formDisabled(), ...ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []);
747
+ showClear = computed(() => this.clearable() && this.value() !== null && !this.isDisabled(), ...ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []);
748
+ monthViews = this.panel.monthViews;
749
+ panelLabel = this.panel.panelLabel;
750
+ weekdayLabels = this.panel.weekdayLabels;
751
+ monthOptions = this.panel.monthOptions;
752
+ yearOptions = this.panel.yearOptions;
753
+ dateFormatter = computed(() => new Intl.DateTimeFormat(this.locale(), { dateStyle: "medium" }), ...ngDevMode ? [{ debugName: "dateFormatter" }] : /* istanbul ignore next */ []);
754
+ triggerLabel = computed(() => {
755
+ const v = this.value();
756
+ if (!v) return "";
757
+ const formatter = this.dateFormatter();
758
+ if (!v.end) return formatter.format(v.start);
759
+ return `${formatter.format(v.start)} – ${formatter.format(v.end)}`;
760
+ }, ...ngDevMode ? [{ debugName: "triggerLabel" }] : /* istanbul ignore next */ []);
761
+ previewBounds = computed(() => {
762
+ const start = this.draftStart();
763
+ if (!start) return null;
764
+ const other = this.draftEnd() ?? this.hoveredDate();
765
+ if (!other) return null;
766
+ return start.getTime() <= other.getTime() ? {
767
+ lower: start,
768
+ upper: other
769
+ } : {
770
+ lower: other,
771
+ upper: start
772
+ };
773
+ }, ...ngDevMode ? [{ debugName: "previewBounds" }] : /* istanbul ignore next */ []);
774
+ isPreviewing = computed(() => this.draftStart() !== null && this.draftEnd() === null, ...ngDevMode ? [{ debugName: "isPreviewing" }] : /* istanbul ignore next */ []);
775
+ statusMessage = computed(() => {
776
+ const start = this.draftStart();
777
+ if (!start) return "";
778
+ const formatter = this.dateFormatter();
779
+ const end = this.draftEnd();
780
+ return this.rangeStatus()(formatter.format(start), end ? formatter.format(end) : null);
781
+ }, ...ngDevMode ? [{ debugName: "statusMessage" }] : /* istanbul ignore next */ []);
782
+ writeValue(value) {
783
+ this.value.set(value);
784
+ if (value) {
785
+ this.focusedDate.set(value.start);
786
+ this.anchorDate.set(new Date(value.start.getFullYear(), value.start.getMonth(), 1));
787
+ }
788
+ }
789
+ registerOnChange(fn) {
790
+ this.onChange = fn;
791
+ }
792
+ registerOnTouched(fn) {
793
+ this.onTouched = fn;
794
+ }
795
+ setDisabledState(isDisabled) {
796
+ this.formDisabled.set(isDisabled);
797
+ }
798
+ isRangeStartCap(date) {
799
+ const bounds = this.previewBounds();
800
+ return bounds !== null && isSameDay(date, bounds.lower);
801
+ }
802
+ isRangeEndCap(date) {
803
+ const bounds = this.previewBounds();
804
+ return bounds !== null && isSameDay(date, bounds.upper);
805
+ }
806
+ isInRange(date) {
807
+ const bounds = this.previewBounds();
808
+ return bounds !== null && date.getTime() > bounds.lower.getTime() && date.getTime() < bounds.upper.getTime();
809
+ }
810
+ isFocused(date) {
811
+ return this.panel.isFocused(date);
812
+ }
813
+ cellId(date) {
814
+ return this.panel.cellId(date);
815
+ }
816
+ toggleOpen() {
817
+ if (this.isDisabled()) return;
818
+ this.panel.toggle(() => {
819
+ const value = this.value();
820
+ this.draftStart.set(value?.start ?? null);
821
+ this.draftEnd.set(value?.end ?? null);
822
+ this.hoveredDate.set(null);
823
+ return value?.start ?? /* @__PURE__ */ new Date();
824
+ });
825
+ }
826
+ close(returnFocus) {
827
+ this.panel.close(returnFocus);
828
+ }
829
+ clear(event) {
830
+ event.stopPropagation();
831
+ if (this.isDisabled()) return;
832
+ this.value.set(null);
833
+ this.draftStart.set(null);
834
+ this.draftEnd.set(null);
835
+ this.onChange(null);
836
+ this.onTouched();
837
+ this.panel.close(false);
838
+ }
839
+ selectDay(date) {
840
+ if (this.isDisabled()) return;
841
+ const start = this.draftStart();
842
+ const complete = start !== null && this.draftEnd() !== null;
843
+ if (!start || complete) {
844
+ this.draftStart.set(date);
845
+ this.draftEnd.set(null);
846
+ this.focusedDate.set(date);
847
+ this.panel.ensureVisible(date);
848
+ this.panel.focusCellAfterRender();
849
+ return;
850
+ }
851
+ const [rangeStart, rangeEnd] = start.getTime() <= date.getTime() ? [start, date] : [date, start];
852
+ this.draftStart.set(rangeStart);
853
+ this.draftEnd.set(rangeEnd);
854
+ this.focusedDate.set(date);
855
+ this.panel.ensureVisible(date);
856
+ const next = {
857
+ start: rangeStart,
858
+ end: rangeEnd
859
+ };
860
+ this.value.set(next);
861
+ this.onChange(next);
862
+ this.onTouched();
863
+ this.panel.close(true);
864
+ }
865
+ onDayMouseEnter(date) {
866
+ this.hoveredDate.set(date);
867
+ }
868
+ onDayMouseLeave() {
869
+ this.hoveredDate.set(null);
870
+ }
871
+ shiftMonth(delta) {
872
+ this.panel.shiftMonth(delta);
873
+ }
874
+ onMonthSelect(value) {
875
+ this.panel.onMonthSelect(value);
876
+ }
877
+ onYearSelect(value) {
878
+ this.panel.onYearSelect(value);
879
+ }
880
+ onGridKeydown(event) {
881
+ if (event.key === "Enter" || event.key === " ") {
882
+ event.preventDefault();
883
+ this.selectDay(this.focusedDate());
884
+ return;
885
+ }
886
+ this.panel.handleNavigationKeydown(event);
887
+ }
888
+ onEscape(event) {
889
+ this.panel.onEscape(event);
890
+ }
891
+ handleClickOutside(event) {
892
+ this.panel.handleClickOutside(event);
893
+ }
894
+ updatePanelPosition() {
895
+ this.panel.updatePanelPosition();
896
+ }
897
+ static ɵfac = i0.ɵɵngDeclareFactory({
898
+ minVersion: "12.0.0",
899
+ version: "22.2.0",
900
+ ngImport: i0,
901
+ type: DateRangePicker,
902
+ deps: [],
903
+ target: i0.ɵɵFactoryTarget.Component
904
+ });
905
+ static ɵcmp = i0.ɵɵngDeclareComponent({
906
+ minVersion: "17.0.0",
907
+ version: "22.2.0",
908
+ type: DateRangePicker,
909
+ isStandalone: true,
910
+ selector: "gbt-date-range-picker",
911
+ inputs: {
912
+ id: {
913
+ classPropertyName: "id",
914
+ publicName: "id",
915
+ isSignal: true,
916
+ isRequired: false,
917
+ transformFunction: null
918
+ },
919
+ label: {
920
+ classPropertyName: "label",
921
+ publicName: "label",
922
+ isSignal: true,
923
+ isRequired: false,
924
+ transformFunction: null
925
+ },
926
+ placeholder: {
927
+ classPropertyName: "placeholder",
928
+ publicName: "placeholder",
929
+ isSignal: true,
930
+ isRequired: false,
931
+ transformFunction: null
932
+ },
933
+ locale: {
934
+ classPropertyName: "locale",
935
+ publicName: "locale",
936
+ isSignal: true,
937
+ isRequired: false,
938
+ transformFunction: null
939
+ },
940
+ weekStartsOn: {
941
+ classPropertyName: "weekStartsOn",
942
+ publicName: "weekStartsOn",
943
+ isSignal: true,
944
+ isRequired: false,
945
+ transformFunction: null
946
+ },
947
+ disabled: {
948
+ classPropertyName: "disabled",
949
+ publicName: "disabled",
950
+ isSignal: true,
951
+ isRequired: false,
952
+ transformFunction: null
953
+ },
954
+ required: {
955
+ classPropertyName: "required",
956
+ publicName: "required",
957
+ isSignal: true,
958
+ isRequired: false,
959
+ transformFunction: null
960
+ },
961
+ errorMessage: {
962
+ classPropertyName: "errorMessage",
963
+ publicName: "errorMessage",
964
+ isSignal: true,
965
+ isRequired: false,
966
+ transformFunction: null
967
+ },
968
+ previousMonthLabel: {
969
+ classPropertyName: "previousMonthLabel",
970
+ publicName: "previousMonthLabel",
971
+ isSignal: true,
972
+ isRequired: false,
973
+ transformFunction: null
974
+ },
975
+ nextMonthLabel: {
976
+ classPropertyName: "nextMonthLabel",
977
+ publicName: "nextMonthLabel",
978
+ isSignal: true,
979
+ isRequired: false,
980
+ transformFunction: null
981
+ },
982
+ clearable: {
983
+ classPropertyName: "clearable",
984
+ publicName: "clearable",
985
+ isSignal: true,
986
+ isRequired: false,
987
+ transformFunction: null
988
+ },
989
+ clearLabel: {
990
+ classPropertyName: "clearLabel",
991
+ publicName: "clearLabel",
992
+ isSignal: true,
993
+ isRequired: false,
994
+ transformFunction: null
995
+ },
996
+ visibleMonths: {
997
+ classPropertyName: "visibleMonths",
998
+ publicName: "visibleMonths",
999
+ isSignal: true,
1000
+ isRequired: false,
1001
+ transformFunction: null
1002
+ },
1003
+ monthSelectLabel: {
1004
+ classPropertyName: "monthSelectLabel",
1005
+ publicName: "monthSelectLabel",
1006
+ isSignal: true,
1007
+ isRequired: false,
1008
+ transformFunction: null
1009
+ },
1010
+ yearSelectLabel: {
1011
+ classPropertyName: "yearSelectLabel",
1012
+ publicName: "yearSelectLabel",
1013
+ isSignal: true,
1014
+ isRequired: false,
1015
+ transformFunction: null
1016
+ },
1017
+ minYear: {
1018
+ classPropertyName: "minYear",
1019
+ publicName: "minYear",
1020
+ isSignal: true,
1021
+ isRequired: false,
1022
+ transformFunction: null
1023
+ },
1024
+ maxYear: {
1025
+ classPropertyName: "maxYear",
1026
+ publicName: "maxYear",
1027
+ isSignal: true,
1028
+ isRequired: false,
1029
+ transformFunction: null
1030
+ },
1031
+ rangeStatus: {
1032
+ classPropertyName: "rangeStatus",
1033
+ publicName: "rangeStatus",
1034
+ isSignal: true,
1035
+ isRequired: false,
1036
+ transformFunction: null
1037
+ }
1038
+ },
1039
+ host: { listeners: {
1040
+ "document:click": "handleClickOutside($event)",
1041
+ "keydown": "onEscape($event)",
1042
+ "window:scroll": "updatePanelPosition()",
1043
+ "window:resize": "updatePanelPosition()"
1044
+ } },
1045
+ providers: [{
1046
+ provide: NG_VALUE_ACCESSOR,
1047
+ useExisting: forwardRef(() => DateRangePicker),
1048
+ multi: true
1049
+ }],
1050
+ ngImport: i0,
1051
+ template: "<div class=\"gbt-date-range-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-range-picker__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n <div class=\"gbt-date-range-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-range-picker__trigger\"\n [class.gbt-date-range-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-range-picker__trigger-label\"\n [class.gbt-date-range-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-range-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-range-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-range-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-range-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-range-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">\n {{ year }}\n </option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-range-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-range-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-range-picker__month\">\n <div\n class=\"gbt-date-range-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-range-picker__row gbt-date-range-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-range-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-range-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day\"\n [class.gbt-date-range-picker__day--today]=\"day.isToday\"\n [class.gbt-date-range-picker__day--start-cap]=\"isRangeStartCap(day.date)\"\n [class.gbt-date-range-picker__day--end-cap]=\"isRangeEndCap(day.date)\"\n [class.gbt-date-range-picker__day--in-range]=\"isInRange(day.date)\"\n [class.gbt-date-range-picker__day--preview]=\"isPreviewing()\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\"\n (mouseleave)=\"onDayMouseLeave()\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day gbt-date-range-picker__day--empty\"\n ></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ statusMessage() }}\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-range-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n",
1052
+ styles: [".gbt-date-range-picker{display:inline-flex;flex-direction:column;gap:.375rem}.gbt-date-range-picker__label{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.gbt-date-range-picker__error{margin:0;font-size:.75rem;color:var(--color-error-text)}.gbt-date-range-picker__field{position:relative;display:inline-flex}.gbt-date-range-picker__trigger{box-sizing:border-box;display:flex;align-items:center;width:260px;height:var(--gbt-control-height-md);padding:0 34px 0 10px;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:14px;cursor:pointer;transition:border-color .15s cubic-bezier(.4,0,.2,1)}.gbt-date-range-picker__trigger--open{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-range-picker__trigger:disabled{cursor:not-allowed;opacity:.5}.gbt-date-range-picker__trigger:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__trigger-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.gbt-date-range-picker__trigger-label--placeholder{color:var(--text-discret)}.gbt-date-range-picker__icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.gbt-date-range-picker__clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer}.gbt-date-range-picker__clear:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-range-picker__clear:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__panel{box-sizing:border-box;position:fixed;z-index:1000;padding:.75rem;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);box-shadow:var(--site-shadow-lg);animation:gbt-date-range-picker-scale-in .15s cubic-bezier(.34,1.56,.64,1) both}.gbt-date-range-picker__nav{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.gbt-date-range-picker__headings{display:flex;flex:1;justify-content:center;gap:1.25rem}.gbt-date-range-picker__nav-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-secondary);cursor:pointer}.gbt-date-range-picker__nav-button:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-range-picker__nav-button:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__select{box-sizing:border-box;height:28px;padding:0 6px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.gbt-date-range-picker__select:hover{background:var(--bg-hover)}.gbt-date-range-picker__select:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__months{display:flex;justify-content:center;gap:1.25rem;margin-inline:.65rem;margin-bottom:.65rem}.gbt-date-range-picker__month-heading{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:.375rem;width:184px;height:28px}.gbt-date-range-picker__month-label{font-size:14px;font-weight:600;color:var(--text-primary);text-align:center}.gbt-date-range-picker__row{display:grid;grid-template-columns:repeat(7,32px)}.gbt-date-range-picker__row--head{margin-top:.25rem;margin-bottom:.25rem}.gbt-date-range-picker__weekday{display:flex;align-items:center;justify-content:center;height:24px;font-size:13px;font-weight:600;color:var(--text-secondary)}.gbt-date-range-picker__day{position:relative;z-index:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;color:var(--text-primary);font-size:13px;cursor:pointer}.gbt-date-range-picker__day:before{content:\"\";position:absolute;inset:0;z-index:-1}.gbt-date-range-picker__day:hover:not(:disabled):not(.gbt-date-range-picker__day--empty){border-radius:50%;background:var(--bg-hover)}.gbt-date-range-picker__day:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px;border-radius:50%}.gbt-date-range-picker__day--empty{cursor:default}.gbt-date-range-picker__day--today{font-weight:700;box-shadow:inset 0 0 0 1px var(--border-color);border-radius:50%}.gbt-date-range-picker__day--in-range:before{background:color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-range-picker__day--start-cap,.gbt-date-range-picker__day--end-cap{color:var(--text-on-primary);font-weight:600}.gbt-date-range-picker__day--start-cap:before{background:var(--primary);color:var(--text-on-primary);border-radius:50% 0 0 50%}.gbt-date-range-picker__day--end-cap:before{background:var(--primary);color:var(--text-on-primary);border-radius:0 50% 50% 0}.gbt-date-range-picker__day--start-cap.gbt-date-range-picker__day--end-cap:before{border-radius:50%}.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--in-range:before,.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--start-cap:before,.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--end-cap:before{opacity:.6}.gbt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.gbt-date-range-picker__panel{animation:none}.gbt-date-range-picker__trigger{transition:none}}@keyframes gbt-date-range-picker-scale-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}\n"],
1053
+ dependencies: [{
1054
+ kind: "component",
1055
+ type: Icon,
1056
+ selector: "gbt-icon",
1057
+ inputs: ["name"]
1058
+ }],
1059
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1060
+ });
1061
+ };
1062
+ i0.ɵɵngDeclareClassMetadata({
1063
+ minVersion: "12.0.0",
1064
+ version: "22.2.0",
1065
+ ngImport: i0,
1066
+ type: DateRangePicker,
1067
+ decorators: [{
1068
+ type: Component,
1069
+ args: [{
1070
+ selector: "gbt-date-range-picker",
1071
+ standalone: true,
1072
+ imports: [Icon],
1073
+ changeDetection: ChangeDetectionStrategy.OnPush,
1074
+ host: {
1075
+ "(document:click)": "handleClickOutside($event)",
1076
+ "(keydown)": "onEscape($event)",
1077
+ "(window:scroll)": "updatePanelPosition()",
1078
+ "(window:resize)": "updatePanelPosition()"
1079
+ },
1080
+ providers: [{
1081
+ provide: NG_VALUE_ACCESSOR,
1082
+ useExisting: forwardRef(() => DateRangePicker),
1083
+ multi: true
1084
+ }],
1085
+ template: "<div class=\"gbt-date-range-picker\">\n @if (label()) {\n <label [for]=\"id()\" class=\"gbt-date-range-picker__label\"\n >{{ label() }}{{ required() ? ' *' : '' }}</label\n >\n }\n <div class=\"gbt-date-range-picker__field\">\n <button\n type=\"button\"\n [id]=\"id()\"\n class=\"gbt-date-range-picker__trigger\"\n [class.gbt-date-range-picker__trigger--open]=\"open()\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"errorMessage() ? true : null\"\n [attr.aria-describedby]=\"errorMessage() ? id() + '-error' : null\"\n (click)=\"toggleOpen()\"\n >\n <span\n class=\"gbt-date-range-picker__trigger-label\"\n [class.gbt-date-range-picker__trigger-label--placeholder]=\"!triggerLabel()\"\n >\n {{ triggerLabel() || placeholder() }}\n </span>\n </button>\n @if (showClear()) {\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__clear\"\n [attr.aria-label]=\"clearLabel()\"\n (click)=\"clear($event)\"\n >\n <gbt-icon name=\"x\" aria-hidden=\"true\" />\n </button>\n } @else {\n <gbt-icon name=\"calendar\" class=\"gbt-date-range-picker__icon\" aria-hidden=\"true\" />\n }\n </div>\n @if (open() && panelStyle(); as pos) {\n <div\n class=\"gbt-date-range-picker__panel\"\n role=\"dialog\"\n aria-modal=\"false\"\n [attr.aria-label]=\"panelLabel()\"\n [style.top]=\"pos.top\"\n [style.left]=\"pos.left\"\n >\n <div class=\"gbt-date-range-picker__nav\">\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"previousMonthLabel()\"\n (click)=\"shiftMonth(-1)\"\n >\n <gbt-icon name=\"chevron-left\" aria-hidden=\"true\" />\n </button>\n <div class=\"gbt-date-range-picker__headings\">\n @for (view of monthViews(); track view.year + '-' + view.month; let i = $index) {\n <div class=\"gbt-date-range-picker__month-heading\">\n @if (i === 0) {\n <select\n #monthSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"monthSelectLabel()\"\n (change)=\"onMonthSelect(monthSelect.value)\"\n >\n @for (opt of monthOptions(); track opt.value) {\n <option [value]=\"opt.value\" [selected]=\"opt.value === anchorDate().getMonth()\">\n {{ opt.label }}\n </option>\n }\n </select>\n <select\n #yearSelect\n class=\"gbt-date-range-picker__select\"\n [attr.aria-label]=\"yearSelectLabel()\"\n (change)=\"onYearSelect(yearSelect.value)\"\n >\n @for (year of yearOptions(); track year) {\n <option [value]=\"year\" [selected]=\"year === anchorDate().getFullYear()\">\n {{ year }}\n </option>\n }\n </select>\n } @else {\n <span class=\"gbt-date-range-picker__month-label\">{{ view.label }}</span>\n }\n </div>\n }\n </div>\n <button\n type=\"button\"\n class=\"gbt-date-range-picker__nav-button\"\n [attr.aria-label]=\"nextMonthLabel()\"\n (click)=\"shiftMonth(1)\"\n >\n <gbt-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"gbt-date-range-picker__months\">\n @for (view of monthViews(); track view.year + '-' + view.month) {\n <div class=\"gbt-date-range-picker__month\">\n <div\n class=\"gbt-date-range-picker__grid\"\n role=\"grid\"\n tabindex=\"-1\"\n [attr.aria-label]=\"view.label\"\n (keydown)=\"onGridKeydown($event)\"\n >\n <div class=\"gbt-date-range-picker__row gbt-date-range-picker__row--head\" role=\"row\">\n @for (wd of weekdayLabels(); track $index) {\n <span role=\"columnheader\" class=\"gbt-date-range-picker__weekday\">{{ wd }}</span>\n }\n </div>\n @for (week of view.weeks; track $index) {\n <div class=\"gbt-date-range-picker__row\" role=\"row\">\n @for (day of week; track day.date.getTime()) {\n @if (day.inCurrentMonth) {\n <button\n type=\"button\"\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day\"\n [class.gbt-date-range-picker__day--today]=\"day.isToday\"\n [class.gbt-date-range-picker__day--start-cap]=\"isRangeStartCap(day.date)\"\n [class.gbt-date-range-picker__day--end-cap]=\"isRangeEndCap(day.date)\"\n [class.gbt-date-range-picker__day--in-range]=\"isInRange(day.date)\"\n [class.gbt-date-range-picker__day--preview]=\"isPreviewing()\"\n [attr.data-date]=\"cellId(day.date)\"\n [attr.aria-current]=\"day.isToday ? 'date' : null\"\n [tabIndex]=\"isFocused(day.date) ? 0 : -1\"\n (click)=\"selectDay(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\"\n (mouseleave)=\"onDayMouseLeave()\"\n >\n {{ day.date.getDate() }}\n </button>\n } @else {\n <span\n role=\"gridcell\"\n class=\"gbt-date-range-picker__day gbt-date-range-picker__day--empty\"\n ></span>\n }\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n <div class=\"gbt-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ statusMessage() }}\n </div>\n </div>\n }\n @if (errorMessage()) {\n <p [id]=\"id() + '-error'\" class=\"gbt-date-range-picker__error\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }\n</div>\n",
1086
+ styles: [".gbt-date-range-picker{display:inline-flex;flex-direction:column;gap:.375rem}.gbt-date-range-picker__label{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.gbt-date-range-picker__error{margin:0;font-size:.75rem;color:var(--color-error-text)}.gbt-date-range-picker__field{position:relative;display:inline-flex}.gbt-date-range-picker__trigger{box-sizing:border-box;display:flex;align-items:center;width:260px;height:var(--gbt-control-height-md);padding:0 34px 0 10px;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:14px;cursor:pointer;transition:border-color .15s cubic-bezier(.4,0,.2,1)}.gbt-date-range-picker__trigger--open{border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-range-picker__trigger:disabled{cursor:not-allowed;opacity:.5}.gbt-date-range-picker__trigger:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__trigger-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}.gbt-date-range-picker__trigger-label--placeholder{color:var(--text-discret)}.gbt-date-range-picker__icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.gbt-date-range-picker__clear{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer}.gbt-date-range-picker__clear:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-range-picker__clear:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__panel{box-sizing:border-box;position:fixed;z-index:1000;padding:.75rem;background:var(--bg-principal);border:1px solid var(--border-color);border-radius:var(--site-border-radius-sm);box-shadow:var(--site-shadow-lg);animation:gbt-date-range-picker-scale-in .15s cubic-bezier(.34,1.56,.64,1) both}.gbt-date-range-picker__nav{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.gbt-date-range-picker__headings{display:flex;flex:1;justify-content:center;gap:1.25rem}.gbt-date-range-picker__nav-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-secondary);cursor:pointer}.gbt-date-range-picker__nav-button:hover{background:var(--bg-hover);color:var(--text-primary)}.gbt-date-range-picker__nav-button:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__select{box-sizing:border-box;height:28px;padding:0 6px;background:none;border:none;border-radius:var(--site-border-radius-sm);color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.gbt-date-range-picker__select:hover{background:var(--bg-hover)}.gbt-date-range-picker__select:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:2px}.gbt-date-range-picker__months{display:flex;justify-content:center;gap:1.25rem;margin-inline:.65rem;margin-bottom:.65rem}.gbt-date-range-picker__month-heading{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:.375rem;width:184px;height:28px}.gbt-date-range-picker__month-label{font-size:14px;font-weight:600;color:var(--text-primary);text-align:center}.gbt-date-range-picker__row{display:grid;grid-template-columns:repeat(7,32px)}.gbt-date-range-picker__row--head{margin-top:.25rem;margin-bottom:.25rem}.gbt-date-range-picker__weekday{display:flex;align-items:center;justify-content:center;height:24px;font-size:13px;font-weight:600;color:var(--text-secondary)}.gbt-date-range-picker__day{position:relative;z-index:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;color:var(--text-primary);font-size:13px;cursor:pointer}.gbt-date-range-picker__day:before{content:\"\";position:absolute;inset:0;z-index:-1}.gbt-date-range-picker__day:hover:not(:disabled):not(.gbt-date-range-picker__day--empty){border-radius:50%;background:var(--bg-hover)}.gbt-date-range-picker__day:focus-visible{outline:2px solid var(--gbt-focus-ring, var(--focus-ring));outline-offset:-2px;border-radius:50%}.gbt-date-range-picker__day--empty{cursor:default}.gbt-date-range-picker__day--today{font-weight:700;box-shadow:inset 0 0 0 1px var(--border-color);border-radius:50%}.gbt-date-range-picker__day--in-range:before{background:color-mix(in srgb,var(--primary) 12%,transparent)}.gbt-date-range-picker__day--start-cap,.gbt-date-range-picker__day--end-cap{color:var(--text-on-primary);font-weight:600}.gbt-date-range-picker__day--start-cap:before{background:var(--primary);color:var(--text-on-primary);border-radius:50% 0 0 50%}.gbt-date-range-picker__day--end-cap:before{background:var(--primary);color:var(--text-on-primary);border-radius:0 50% 50% 0}.gbt-date-range-picker__day--start-cap.gbt-date-range-picker__day--end-cap:before{border-radius:50%}.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--in-range:before,.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--start-cap:before,.gbt-date-range-picker__day--preview.gbt-date-range-picker__day--end-cap:before{opacity:.6}.gbt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.gbt-date-range-picker__panel{animation:none}.gbt-date-range-picker__trigger{transition:none}}@keyframes gbt-date-range-picker-scale-in{0%{opacity:0;transform:scale(.97) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}\n"]
1087
+ }]
1088
+ }],
1089
+ propDecorators: {
1090
+ id: [{
1091
+ type: i0.Input,
1092
+ args: [{
1093
+ isSignal: true,
1094
+ alias: "id",
1095
+ required: false
1096
+ }]
1097
+ }],
1098
+ label: [{
1099
+ type: i0.Input,
1100
+ args: [{
1101
+ isSignal: true,
1102
+ alias: "label",
1103
+ required: false
1104
+ }]
1105
+ }],
1106
+ placeholder: [{
1107
+ type: i0.Input,
1108
+ args: [{
1109
+ isSignal: true,
1110
+ alias: "placeholder",
1111
+ required: false
1112
+ }]
1113
+ }],
1114
+ locale: [{
1115
+ type: i0.Input,
1116
+ args: [{
1117
+ isSignal: true,
1118
+ alias: "locale",
1119
+ required: false
1120
+ }]
1121
+ }],
1122
+ weekStartsOn: [{
1123
+ type: i0.Input,
1124
+ args: [{
1125
+ isSignal: true,
1126
+ alias: "weekStartsOn",
1127
+ required: false
1128
+ }]
1129
+ }],
1130
+ disabled: [{
1131
+ type: i0.Input,
1132
+ args: [{
1133
+ isSignal: true,
1134
+ alias: "disabled",
1135
+ required: false
1136
+ }]
1137
+ }],
1138
+ required: [{
1139
+ type: i0.Input,
1140
+ args: [{
1141
+ isSignal: true,
1142
+ alias: "required",
1143
+ required: false
1144
+ }]
1145
+ }],
1146
+ errorMessage: [{
1147
+ type: i0.Input,
1148
+ args: [{
1149
+ isSignal: true,
1150
+ alias: "errorMessage",
1151
+ required: false
1152
+ }]
1153
+ }],
1154
+ previousMonthLabel: [{
1155
+ type: i0.Input,
1156
+ args: [{
1157
+ isSignal: true,
1158
+ alias: "previousMonthLabel",
1159
+ required: false
1160
+ }]
1161
+ }],
1162
+ nextMonthLabel: [{
1163
+ type: i0.Input,
1164
+ args: [{
1165
+ isSignal: true,
1166
+ alias: "nextMonthLabel",
1167
+ required: false
1168
+ }]
1169
+ }],
1170
+ clearable: [{
1171
+ type: i0.Input,
1172
+ args: [{
1173
+ isSignal: true,
1174
+ alias: "clearable",
1175
+ required: false
1176
+ }]
1177
+ }],
1178
+ clearLabel: [{
1179
+ type: i0.Input,
1180
+ args: [{
1181
+ isSignal: true,
1182
+ alias: "clearLabel",
1183
+ required: false
1184
+ }]
1185
+ }],
1186
+ visibleMonths: [{
1187
+ type: i0.Input,
1188
+ args: [{
1189
+ isSignal: true,
1190
+ alias: "visibleMonths",
1191
+ required: false
1192
+ }]
1193
+ }],
1194
+ monthSelectLabel: [{
1195
+ type: i0.Input,
1196
+ args: [{
1197
+ isSignal: true,
1198
+ alias: "monthSelectLabel",
1199
+ required: false
1200
+ }]
1201
+ }],
1202
+ yearSelectLabel: [{
1203
+ type: i0.Input,
1204
+ args: [{
1205
+ isSignal: true,
1206
+ alias: "yearSelectLabel",
1207
+ required: false
1208
+ }]
1209
+ }],
1210
+ minYear: [{
1211
+ type: i0.Input,
1212
+ args: [{
1213
+ isSignal: true,
1214
+ alias: "minYear",
1215
+ required: false
1216
+ }]
1217
+ }],
1218
+ maxYear: [{
1219
+ type: i0.Input,
1220
+ args: [{
1221
+ isSignal: true,
1222
+ alias: "maxYear",
1223
+ required: false
1224
+ }]
1225
+ }],
1226
+ rangeStatus: [{
1227
+ type: i0.Input,
1228
+ args: [{
1229
+ isSignal: true,
1230
+ alias: "rangeStatus",
1231
+ required: false
1232
+ }]
1233
+ }]
1234
+ }
1235
+ });
1236
+ export { DatePicker, DateRangePicker };
1237
+
1238
+ //# sourceMappingURL=masmarino-gabarit-date-picker.mjs.map