@slotted/angular 0.0.0-stage → 0.1.0-beta.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 (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -2
  3. package/docs/AGENTS.snippet.md +10 -0
  4. package/docs/accordion.json +345 -0
  5. package/docs/accordion.md +207 -0
  6. package/docs/action-bar.json +421 -0
  7. package/docs/action-bar.md +364 -0
  8. package/docs/action-sheet.json +210 -0
  9. package/docs/action-sheet.md +19 -0
  10. package/docs/alert.json +407 -0
  11. package/docs/alert.md +239 -0
  12. package/docs/app-shell.examples.md +349 -0
  13. package/docs/app-shell.json +835 -0
  14. package/docs/app-shell.md +214 -0
  15. package/docs/aspect-ratio.json +159 -0
  16. package/docs/aspect-ratio.md +134 -0
  17. package/docs/attachment.json +486 -0
  18. package/docs/attachment.md +253 -0
  19. package/docs/avatar-group.json +208 -0
  20. package/docs/avatar-group.md +130 -0
  21. package/docs/avatar.json +342 -0
  22. package/docs/avatar.md +142 -0
  23. package/docs/badge.json +334 -0
  24. package/docs/badge.md +138 -0
  25. package/docs/breadcrumb.json +368 -0
  26. package/docs/breadcrumb.md +237 -0
  27. package/docs/button-group.json +158 -0
  28. package/docs/button-group.md +72 -0
  29. package/docs/button.examples.md +621 -0
  30. package/docs/button.json +977 -0
  31. package/docs/button.md +200 -0
  32. package/docs/calendar.json +592 -0
  33. package/docs/calendar.md +242 -0
  34. package/docs/card.json +283 -0
  35. package/docs/card.md +130 -0
  36. package/docs/carousel.json +560 -0
  37. package/docs/carousel.md +357 -0
  38. package/docs/cascader.json +933 -0
  39. package/docs/cascader.md +379 -0
  40. package/docs/chart.examples.md +582 -0
  41. package/docs/chart.json +1359 -0
  42. package/docs/chart.md +187 -0
  43. package/docs/checkbox-group.examples.md +612 -0
  44. package/docs/checkbox-group.json +395 -0
  45. package/docs/checkbox-group.md +106 -0
  46. package/docs/checkbox.examples.md +546 -0
  47. package/docs/checkbox.json +506 -0
  48. package/docs/checkbox.md +104 -0
  49. package/docs/code-block.json +616 -0
  50. package/docs/code-block.md +303 -0
  51. package/docs/collapsible.json +456 -0
  52. package/docs/collapsible.md +261 -0
  53. package/docs/color-picker.json +523 -0
  54. package/docs/color-picker.md +201 -0
  55. package/docs/column-manager.json +486 -0
  56. package/docs/column-manager.md +277 -0
  57. package/docs/combobox.examples.md +1732 -0
  58. package/docs/combobox.json +1250 -0
  59. package/docs/combobox.md +209 -0
  60. package/docs/command-palette.json +800 -0
  61. package/docs/command-palette.md +419 -0
  62. package/docs/container.json +156 -0
  63. package/docs/container.md +92 -0
  64. package/docs/context-menu.json +231 -0
  65. package/docs/context-menu.md +176 -0
  66. package/docs/currency-field.examples.md +321 -0
  67. package/docs/currency-field.json +649 -0
  68. package/docs/currency-field.md +128 -0
  69. package/docs/dashboard-grid.json +680 -0
  70. package/docs/dashboard-grid.md +265 -0
  71. package/docs/data-grid.examples.md +3064 -0
  72. package/docs/data-grid.json +1577 -0
  73. package/docs/data-grid.md +237 -0
  74. package/docs/data-grid.props.md +81 -0
  75. package/docs/data-list.json +685 -0
  76. package/docs/data-list.md +327 -0
  77. package/docs/date-field.json +490 -0
  78. package/docs/date-field.md +235 -0
  79. package/docs/date-picker.examples.md +1226 -0
  80. package/docs/date-picker.json +696 -0
  81. package/docs/date-picker.md +121 -0
  82. package/docs/date-range-picker.examples.md +1300 -0
  83. package/docs/date-range-picker.json +903 -0
  84. package/docs/date-range-picker.md +142 -0
  85. package/docs/datetime-field.json +665 -0
  86. package/docs/datetime-field.md +337 -0
  87. package/docs/datetime-picker.examples.md +1269 -0
  88. package/docs/datetime-picker.json +928 -0
  89. package/docs/datetime-picker.md +150 -0
  90. package/docs/datetime-range-picker.examples.md +225 -0
  91. package/docs/datetime-range-picker.json +1015 -0
  92. package/docs/datetime-range-picker.md +162 -0
  93. package/docs/description-list.json +471 -0
  94. package/docs/description-list.md +268 -0
  95. package/docs/detail-panel.json +530 -0
  96. package/docs/detail-panel.md +361 -0
  97. package/docs/dialog.examples.md +2467 -0
  98. package/docs/dialog.json +1141 -0
  99. package/docs/dialog.md +217 -0
  100. package/docs/dialog.props.md +63 -0
  101. package/docs/divider.json +148 -0
  102. package/docs/divider.md +83 -0
  103. package/docs/drawer.examples.md +1929 -0
  104. package/docs/drawer.json +753 -0
  105. package/docs/drawer.md +199 -0
  106. package/docs/entity-picker.json +946 -0
  107. package/docs/entity-picker.md +365 -0
  108. package/docs/event-calendar.examples.md +308 -0
  109. package/docs/event-calendar.json +1202 -0
  110. package/docs/event-calendar.md +201 -0
  111. package/docs/field-group.json +333 -0
  112. package/docs/field-group.md +181 -0
  113. package/docs/field.examples.md +676 -0
  114. package/docs/field.json +528 -0
  115. package/docs/field.md +127 -0
  116. package/docs/filter-bar.json +817 -0
  117. package/docs/filter-bar.md +380 -0
  118. package/docs/form.json +378 -0
  119. package/docs/form.md +235 -0
  120. package/docs/fullscreen.json +395 -0
  121. package/docs/fullscreen.md +225 -0
  122. package/docs/grid.json +176 -0
  123. package/docs/grid.md +74 -0
  124. package/docs/highlight.json +279 -0
  125. package/docs/highlight.md +210 -0
  126. package/docs/hover-card.json +254 -0
  127. package/docs/hover-card.md +213 -0
  128. package/docs/icon.json +173 -0
  129. package/docs/icon.md +101 -0
  130. package/docs/image.json +476 -0
  131. package/docs/image.md +254 -0
  132. package/docs/import-export-center.json +836 -0
  133. package/docs/import-export-center.md +345 -0
  134. package/docs/index.md +141 -0
  135. package/docs/inline-message.json +312 -0
  136. package/docs/inline-message.md +191 -0
  137. package/docs/inline.json +149 -0
  138. package/docs/inline.md +72 -0
  139. package/docs/kbd.json +350 -0
  140. package/docs/kbd.md +210 -0
  141. package/docs/link.json +264 -0
  142. package/docs/link.md +167 -0
  143. package/docs/list-item.json +463 -0
  144. package/docs/list-item.md +236 -0
  145. package/docs/list.json +321 -0
  146. package/docs/list.md +185 -0
  147. package/docs/listbox.json +807 -0
  148. package/docs/listbox.md +413 -0
  149. package/docs/loading-overlay.json +440 -0
  150. package/docs/loading-overlay.md +248 -0
  151. package/docs/markdown.json +461 -0
  152. package/docs/markdown.md +266 -0
  153. package/docs/menu.examples.md +1651 -0
  154. package/docs/menu.json +922 -0
  155. package/docs/menu.md +155 -0
  156. package/docs/menubar.json +292 -0
  157. package/docs/menubar.md +173 -0
  158. package/docs/message-scroller.json +401 -0
  159. package/docs/message-scroller.md +212 -0
  160. package/docs/message.json +862 -0
  161. package/docs/message.md +473 -0
  162. package/docs/multi-select.examples.md +1922 -0
  163. package/docs/multi-select.json +1314 -0
  164. package/docs/multi-select.md +213 -0
  165. package/docs/navigation-menu.json +529 -0
  166. package/docs/navigation-menu.md +329 -0
  167. package/docs/notification-center.json +664 -0
  168. package/docs/notification-center.md +372 -0
  169. package/docs/number-field.examples.md +1078 -0
  170. package/docs/number-field.json +668 -0
  171. package/docs/number-field.md +137 -0
  172. package/docs/otp-input.json +479 -0
  173. package/docs/otp-input.md +291 -0
  174. package/docs/page-header.json +574 -0
  175. package/docs/page-header.md +338 -0
  176. package/docs/page.json +332 -0
  177. package/docs/page.md +184 -0
  178. package/docs/pagination.json +434 -0
  179. package/docs/pagination.md +238 -0
  180. package/docs/popover.examples.md +1235 -0
  181. package/docs/popover.json +656 -0
  182. package/docs/popover.md +199 -0
  183. package/docs/progress-indicator.json +501 -0
  184. package/docs/progress-indicator.md +329 -0
  185. package/docs/prompt-composer.json +498 -0
  186. package/docs/prompt-composer.md +278 -0
  187. package/docs/prose.json +357 -0
  188. package/docs/prose.md +226 -0
  189. package/docs/radio-group.examples.md +626 -0
  190. package/docs/radio-group.json +541 -0
  191. package/docs/radio-group.md +112 -0
  192. package/docs/rating.json +1053 -0
  193. package/docs/rating.md +435 -0
  194. package/docs/result-state.json +376 -0
  195. package/docs/result-state.md +286 -0
  196. package/docs/saved-views.json +384 -0
  197. package/docs/saved-views.md +242 -0
  198. package/docs/scroll-area.json +120 -0
  199. package/docs/scroll-area.md +8 -0
  200. package/docs/section.json +344 -0
  201. package/docs/section.md +208 -0
  202. package/docs/segmented-control.json +429 -0
  203. package/docs/segmented-control.md +240 -0
  204. package/docs/select.examples.md +1214 -0
  205. package/docs/select.json +1147 -0
  206. package/docs/select.md +199 -0
  207. package/docs/side-navigation.json +632 -0
  208. package/docs/side-navigation.md +430 -0
  209. package/docs/skeleton.json +358 -0
  210. package/docs/skeleton.md +223 -0
  211. package/docs/slider.json +522 -0
  212. package/docs/slider.md +261 -0
  213. package/docs/sparkline.json +426 -0
  214. package/docs/sparkline.md +206 -0
  215. package/docs/split-button.json +361 -0
  216. package/docs/split-button.md +275 -0
  217. package/docs/splitter.json +142 -0
  218. package/docs/splitter.md +14 -0
  219. package/docs/stack.json +135 -0
  220. package/docs/stack.md +74 -0
  221. package/docs/stat-card.json +529 -0
  222. package/docs/stat-card.md +270 -0
  223. package/docs/status-indicator.json +314 -0
  224. package/docs/status-indicator.md +197 -0
  225. package/docs/stepper.json +451 -0
  226. package/docs/stepper.md +250 -0
  227. package/docs/switch.json +451 -0
  228. package/docs/switch.md +508 -0
  229. package/docs/table-of-contents.json +553 -0
  230. package/docs/table-of-contents.md +289 -0
  231. package/docs/table.examples.md +1981 -0
  232. package/docs/table.json +1059 -0
  233. package/docs/table.md +290 -0
  234. package/docs/tabs.examples.md +1370 -0
  235. package/docs/tabs.json +661 -0
  236. package/docs/tabs.md +211 -0
  237. package/docs/tag.json +813 -0
  238. package/docs/tag.md +241 -0
  239. package/docs/tags-input.json +771 -0
  240. package/docs/tags-input.md +361 -0
  241. package/docs/text-field.examples.md +821 -0
  242. package/docs/text-field.json +604 -0
  243. package/docs/text-field.md +125 -0
  244. package/docs/textarea.examples.md +612 -0
  245. package/docs/textarea.json +440 -0
  246. package/docs/textarea.md +98 -0
  247. package/docs/time-field.json +584 -0
  248. package/docs/time-field.md +291 -0
  249. package/docs/time-picker.json +679 -0
  250. package/docs/time-picker.md +315 -0
  251. package/docs/time-range-picker.examples.md +191 -0
  252. package/docs/time-range-picker.json +924 -0
  253. package/docs/time-range-picker.md +152 -0
  254. package/docs/timeline.json +839 -0
  255. package/docs/timeline.md +401 -0
  256. package/docs/toast.json +642 -0
  257. package/docs/toast.md +311 -0
  258. package/docs/toggle-group.json +417 -0
  259. package/docs/toggle-group.md +255 -0
  260. package/docs/toggle.json +326 -0
  261. package/docs/toggle.md +222 -0
  262. package/docs/toolbar.json +380 -0
  263. package/docs/toolbar.md +240 -0
  264. package/docs/tooltip.examples.md +664 -0
  265. package/docs/tooltip.json +604 -0
  266. package/docs/tooltip.md +146 -0
  267. package/docs/top-navigation.examples.md +287 -0
  268. package/docs/top-navigation.json +648 -0
  269. package/docs/top-navigation.md +138 -0
  270. package/docs/tour.json +759 -0
  271. package/docs/tour.md +337 -0
  272. package/docs/transfer.json +746 -0
  273. package/docs/transfer.md +273 -0
  274. package/docs/tree.json +918 -0
  275. package/docs/tree.md +397 -0
  276. package/docs/typography.json +317 -0
  277. package/docs/typography.md +107 -0
  278. package/docs/upload.examples.md +358 -0
  279. package/docs/upload.json +1103 -0
  280. package/docs/upload.md +166 -0
  281. package/docs/visually-hidden.json +71 -0
  282. package/docs/visually-hidden.md +42 -0
  283. package/docs/wizard.json +724 -0
  284. package/docs/wizard.md +295 -0
  285. package/fesm2022/slotted-angular-accordion.mjs +247 -0
  286. package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
  287. package/fesm2022/slotted-angular-action-bar.mjs +639 -0
  288. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
  289. package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
  290. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
  291. package/fesm2022/slotted-angular-alert.mjs +427 -0
  292. package/fesm2022/slotted-angular-alert.mjs.map +1 -0
  293. package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
  294. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
  295. package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
  296. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
  297. package/fesm2022/slotted-angular-attachment.mjs +595 -0
  298. package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
  299. package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
  300. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
  301. package/fesm2022/slotted-angular-avatar.mjs +330 -0
  302. package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
  303. package/fesm2022/slotted-angular-badge.mjs +255 -0
  304. package/fesm2022/slotted-angular-badge.mjs.map +1 -0
  305. package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
  306. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
  307. package/fesm2022/slotted-angular-button-group.mjs +146 -0
  308. package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
  309. package/fesm2022/slotted-angular-button.mjs +692 -0
  310. package/fesm2022/slotted-angular-button.mjs.map +1 -0
  311. package/fesm2022/slotted-angular-calendar.mjs +916 -0
  312. package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
  313. package/fesm2022/slotted-angular-card.mjs +225 -0
  314. package/fesm2022/slotted-angular-card.mjs.map +1 -0
  315. package/fesm2022/slotted-angular-carousel.mjs +840 -0
  316. package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
  317. package/fesm2022/slotted-angular-cascader.mjs +1839 -0
  318. package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
  319. package/fesm2022/slotted-angular-chart.mjs +974 -0
  320. package/fesm2022/slotted-angular-chart.mjs.map +1 -0
  321. package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
  322. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
  323. package/fesm2022/slotted-angular-checkbox.mjs +468 -0
  324. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
  325. package/fesm2022/slotted-angular-code-block.mjs +476 -0
  326. package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
  327. package/fesm2022/slotted-angular-collapsible.mjs +479 -0
  328. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
  329. package/fesm2022/slotted-angular-color-picker.mjs +910 -0
  330. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
  331. package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
  332. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
  333. package/fesm2022/slotted-angular-combobox.mjs +1480 -0
  334. package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
  335. package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
  336. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
  337. package/fesm2022/slotted-angular-container.mjs +105 -0
  338. package/fesm2022/slotted-angular-container.mjs.map +1 -0
  339. package/fesm2022/slotted-angular-context-menu.mjs +221 -0
  340. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
  341. package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
  342. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
  343. package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
  344. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
  345. package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
  346. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
  347. package/fesm2022/slotted-angular-data-list.mjs +1418 -0
  348. package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
  349. package/fesm2022/slotted-angular-date-field.mjs +772 -0
  350. package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
  351. package/fesm2022/slotted-angular-date-picker.mjs +690 -0
  352. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
  353. package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
  354. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
  355. package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
  356. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
  357. package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
  358. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
  359. package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
  360. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
  361. package/fesm2022/slotted-angular-description-list.mjs +545 -0
  362. package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
  363. package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
  364. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
  365. package/fesm2022/slotted-angular-dialog.mjs +980 -0
  366. package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
  367. package/fesm2022/slotted-angular-divider.mjs +76 -0
  368. package/fesm2022/slotted-angular-divider.mjs.map +1 -0
  369. package/fesm2022/slotted-angular-drawer.mjs +1397 -0
  370. package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
  371. package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
  372. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
  373. package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
  374. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
  375. package/fesm2022/slotted-angular-field-group.mjs +301 -0
  376. package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
  377. package/fesm2022/slotted-angular-field.mjs +928 -0
  378. package/fesm2022/slotted-angular-field.mjs.map +1 -0
  379. package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
  380. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
  381. package/fesm2022/slotted-angular-form.mjs +592 -0
  382. package/fesm2022/slotted-angular-form.mjs.map +1 -0
  383. package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
  384. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
  385. package/fesm2022/slotted-angular-grid.mjs +58 -0
  386. package/fesm2022/slotted-angular-grid.mjs.map +1 -0
  387. package/fesm2022/slotted-angular-highlight.mjs +123 -0
  388. package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
  389. package/fesm2022/slotted-angular-hover-card.mjs +326 -0
  390. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
  391. package/fesm2022/slotted-angular-i18n.mjs +75 -0
  392. package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
  393. package/fesm2022/slotted-angular-icon.mjs +232 -0
  394. package/fesm2022/slotted-angular-icon.mjs.map +1 -0
  395. package/fesm2022/slotted-angular-image.mjs +442 -0
  396. package/fesm2022/slotted-angular-image.mjs.map +1 -0
  397. package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
  398. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
  399. package/fesm2022/slotted-angular-inline-message.mjs +280 -0
  400. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
  401. package/fesm2022/slotted-angular-inline.mjs +52 -0
  402. package/fesm2022/slotted-angular-inline.mjs.map +1 -0
  403. package/fesm2022/slotted-angular-kbd.mjs +284 -0
  404. package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
  405. package/fesm2022/slotted-angular-link.mjs +182 -0
  406. package/fesm2022/slotted-angular-link.mjs.map +1 -0
  407. package/fesm2022/slotted-angular-list-item.mjs +367 -0
  408. package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
  409. package/fesm2022/slotted-angular-list.mjs +256 -0
  410. package/fesm2022/slotted-angular-list.mjs.map +1 -0
  411. package/fesm2022/slotted-angular-listbox.mjs +1274 -0
  412. package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
  413. package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
  414. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
  415. package/fesm2022/slotted-angular-markdown.mjs +914 -0
  416. package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
  417. package/fesm2022/slotted-angular-menu.mjs +1211 -0
  418. package/fesm2022/slotted-angular-menu.mjs.map +1 -0
  419. package/fesm2022/slotted-angular-menubar.mjs +230 -0
  420. package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
  421. package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
  422. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
  423. package/fesm2022/slotted-angular-message.mjs +866 -0
  424. package/fesm2022/slotted-angular-message.mjs.map +1 -0
  425. package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
  426. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
  427. package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
  428. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
  429. package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
  430. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
  431. package/fesm2022/slotted-angular-number-field.mjs +966 -0
  432. package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
  433. package/fesm2022/slotted-angular-otp-input.mjs +629 -0
  434. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
  435. package/fesm2022/slotted-angular-page-header.mjs +788 -0
  436. package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
  437. package/fesm2022/slotted-angular-page.mjs +255 -0
  438. package/fesm2022/slotted-angular-page.mjs.map +1 -0
  439. package/fesm2022/slotted-angular-pagination.mjs +562 -0
  440. package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
  441. package/fesm2022/slotted-angular-popover.mjs +799 -0
  442. package/fesm2022/slotted-angular-popover.mjs.map +1 -0
  443. package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
  444. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
  445. package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
  446. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
  447. package/fesm2022/slotted-angular-prose.mjs +314 -0
  448. package/fesm2022/slotted-angular-prose.mjs.map +1 -0
  449. package/fesm2022/slotted-angular-radio-group.mjs +469 -0
  450. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
  451. package/fesm2022/slotted-angular-rating.mjs +1174 -0
  452. package/fesm2022/slotted-angular-rating.mjs.map +1 -0
  453. package/fesm2022/slotted-angular-result-state.mjs +330 -0
  454. package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
  455. package/fesm2022/slotted-angular-saved-views.mjs +877 -0
  456. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
  457. package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
  458. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
  459. package/fesm2022/slotted-angular-section.mjs +266 -0
  460. package/fesm2022/slotted-angular-section.mjs.map +1 -0
  461. package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
  462. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
  463. package/fesm2022/slotted-angular-select.mjs +1899 -0
  464. package/fesm2022/slotted-angular-select.mjs.map +1 -0
  465. package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
  466. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
  467. package/fesm2022/slotted-angular-skeleton.mjs +316 -0
  468. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
  469. package/fesm2022/slotted-angular-slider.mjs +586 -0
  470. package/fesm2022/slotted-angular-slider.mjs.map +1 -0
  471. package/fesm2022/slotted-angular-sparkline.mjs +235 -0
  472. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
  473. package/fesm2022/slotted-angular-split-button.mjs +331 -0
  474. package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
  475. package/fesm2022/slotted-angular-splitter.mjs +516 -0
  476. package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
  477. package/fesm2022/slotted-angular-stack.mjs +48 -0
  478. package/fesm2022/slotted-angular-stack.mjs.map +1 -0
  479. package/fesm2022/slotted-angular-stat-card.mjs +478 -0
  480. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
  481. package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
  482. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
  483. package/fesm2022/slotted-angular-stepper.mjs +536 -0
  484. package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
  485. package/fesm2022/slotted-angular-switch.mjs +447 -0
  486. package/fesm2022/slotted-angular-switch.mjs.map +1 -0
  487. package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
  488. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
  489. package/fesm2022/slotted-angular-table.mjs +2518 -0
  490. package/fesm2022/slotted-angular-table.mjs.map +1 -0
  491. package/fesm2022/slotted-angular-tabs.mjs +829 -0
  492. package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
  493. package/fesm2022/slotted-angular-tag.mjs +595 -0
  494. package/fesm2022/slotted-angular-tag.mjs.map +1 -0
  495. package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
  496. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
  497. package/fesm2022/slotted-angular-text-field.mjs +674 -0
  498. package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
  499. package/fesm2022/slotted-angular-textarea.mjs +275 -0
  500. package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
  501. package/fesm2022/slotted-angular-theme.mjs +45 -0
  502. package/fesm2022/slotted-angular-theme.mjs.map +1 -0
  503. package/fesm2022/slotted-angular-time-field.mjs +895 -0
  504. package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
  505. package/fesm2022/slotted-angular-time-picker.mjs +856 -0
  506. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
  507. package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
  508. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
  509. package/fesm2022/slotted-angular-timeline.mjs +928 -0
  510. package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
  511. package/fesm2022/slotted-angular-toast.mjs +917 -0
  512. package/fesm2022/slotted-angular-toast.mjs.map +1 -0
  513. package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
  514. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
  515. package/fesm2022/slotted-angular-toggle.mjs +162 -0
  516. package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
  517. package/fesm2022/slotted-angular-toolbar.mjs +536 -0
  518. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
  519. package/fesm2022/slotted-angular-tooltip.mjs +798 -0
  520. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
  521. package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
  522. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
  523. package/fesm2022/slotted-angular-tour.mjs +1330 -0
  524. package/fesm2022/slotted-angular-tour.mjs.map +1 -0
  525. package/fesm2022/slotted-angular-transfer.mjs +1406 -0
  526. package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
  527. package/fesm2022/slotted-angular-tree.mjs +1448 -0
  528. package/fesm2022/slotted-angular-tree.mjs.map +1 -0
  529. package/fesm2022/slotted-angular-typography.mjs +184 -0
  530. package/fesm2022/slotted-angular-typography.mjs.map +1 -0
  531. package/fesm2022/slotted-angular-upload.mjs +1523 -0
  532. package/fesm2022/slotted-angular-upload.mjs.map +1 -0
  533. package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
  534. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
  535. package/fesm2022/slotted-angular-wizard.mjs +1715 -0
  536. package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
  537. package/fesm2022/slotted-angular.mjs +4 -0
  538. package/fesm2022/slotted-angular.mjs.map +1 -0
  539. package/package.json +537 -3
  540. package/types/slotted-angular-accordion.d.ts +156 -0
  541. package/types/slotted-angular-accordion.d.ts.map +1 -0
  542. package/types/slotted-angular-action-bar.d.ts +291 -0
  543. package/types/slotted-angular-action-bar.d.ts.map +1 -0
  544. package/types/slotted-angular-action-sheet.d.ts +294 -0
  545. package/types/slotted-angular-action-sheet.d.ts.map +1 -0
  546. package/types/slotted-angular-alert.d.ts +214 -0
  547. package/types/slotted-angular-alert.d.ts.map +1 -0
  548. package/types/slotted-angular-app-shell.d.ts +549 -0
  549. package/types/slotted-angular-app-shell.d.ts.map +1 -0
  550. package/types/slotted-angular-aspect-ratio.d.ts +57 -0
  551. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
  552. package/types/slotted-angular-attachment.d.ts +294 -0
  553. package/types/slotted-angular-attachment.d.ts.map +1 -0
  554. package/types/slotted-angular-avatar-group.d.ts +119 -0
  555. package/types/slotted-angular-avatar-group.d.ts.map +1 -0
  556. package/types/slotted-angular-avatar.d.ts +202 -0
  557. package/types/slotted-angular-avatar.d.ts.map +1 -0
  558. package/types/slotted-angular-badge.d.ts +166 -0
  559. package/types/slotted-angular-badge.d.ts.map +1 -0
  560. package/types/slotted-angular-breadcrumb.d.ts +251 -0
  561. package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
  562. package/types/slotted-angular-button-group.d.ts +89 -0
  563. package/types/slotted-angular-button-group.d.ts.map +1 -0
  564. package/types/slotted-angular-button.d.ts +390 -0
  565. package/types/slotted-angular-button.d.ts.map +1 -0
  566. package/types/slotted-angular-calendar.d.ts +280 -0
  567. package/types/slotted-angular-calendar.d.ts.map +1 -0
  568. package/types/slotted-angular-card.d.ts +140 -0
  569. package/types/slotted-angular-card.d.ts.map +1 -0
  570. package/types/slotted-angular-carousel.d.ts +288 -0
  571. package/types/slotted-angular-carousel.d.ts.map +1 -0
  572. package/types/slotted-angular-cascader.d.ts +351 -0
  573. package/types/slotted-angular-cascader.d.ts.map +1 -0
  574. package/types/slotted-angular-chart.d.ts +319 -0
  575. package/types/slotted-angular-chart.d.ts.map +1 -0
  576. package/types/slotted-angular-checkbox-group.d.ts +156 -0
  577. package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
  578. package/types/slotted-angular-checkbox.d.ts +197 -0
  579. package/types/slotted-angular-checkbox.d.ts.map +1 -0
  580. package/types/slotted-angular-code-block.d.ts +158 -0
  581. package/types/slotted-angular-code-block.d.ts.map +1 -0
  582. package/types/slotted-angular-collapsible.d.ts +272 -0
  583. package/types/slotted-angular-collapsible.d.ts.map +1 -0
  584. package/types/slotted-angular-color-picker.d.ts +181 -0
  585. package/types/slotted-angular-color-picker.d.ts.map +1 -0
  586. package/types/slotted-angular-column-manager.d.ts +200 -0
  587. package/types/slotted-angular-column-manager.d.ts.map +1 -0
  588. package/types/slotted-angular-combobox.d.ts +449 -0
  589. package/types/slotted-angular-combobox.d.ts.map +1 -0
  590. package/types/slotted-angular-command-palette.d.ts +256 -0
  591. package/types/slotted-angular-command-palette.d.ts.map +1 -0
  592. package/types/slotted-angular-container.d.ts +84 -0
  593. package/types/slotted-angular-container.d.ts.map +1 -0
  594. package/types/slotted-angular-context-menu.d.ts +84 -0
  595. package/types/slotted-angular-context-menu.d.ts.map +1 -0
  596. package/types/slotted-angular-currency-field.d.ts +480 -0
  597. package/types/slotted-angular-currency-field.d.ts.map +1 -0
  598. package/types/slotted-angular-dashboard-grid.d.ts +341 -0
  599. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
  600. package/types/slotted-angular-data-grid.d.ts +1077 -0
  601. package/types/slotted-angular-data-grid.d.ts.map +1 -0
  602. package/types/slotted-angular-data-list.d.ts +272 -0
  603. package/types/slotted-angular-data-list.d.ts.map +1 -0
  604. package/types/slotted-angular-date-field.d.ts +320 -0
  605. package/types/slotted-angular-date-field.d.ts.map +1 -0
  606. package/types/slotted-angular-date-picker.d.ts +224 -0
  607. package/types/slotted-angular-date-picker.d.ts.map +1 -0
  608. package/types/slotted-angular-date-range-picker.d.ts +310 -0
  609. package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
  610. package/types/slotted-angular-datetime-field.d.ts +362 -0
  611. package/types/slotted-angular-datetime-field.d.ts.map +1 -0
  612. package/types/slotted-angular-datetime-picker.d.ts +370 -0
  613. package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
  614. package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
  615. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
  616. package/types/slotted-angular-description-list.d.ts +281 -0
  617. package/types/slotted-angular-description-list.d.ts.map +1 -0
  618. package/types/slotted-angular-detail-panel.d.ts +240 -0
  619. package/types/slotted-angular-detail-panel.d.ts.map +1 -0
  620. package/types/slotted-angular-dialog.d.ts +497 -0
  621. package/types/slotted-angular-dialog.d.ts.map +1 -0
  622. package/types/slotted-angular-divider.d.ts +40 -0
  623. package/types/slotted-angular-divider.d.ts.map +1 -0
  624. package/types/slotted-angular-drawer.d.ts +532 -0
  625. package/types/slotted-angular-drawer.d.ts.map +1 -0
  626. package/types/slotted-angular-entity-picker.d.ts +338 -0
  627. package/types/slotted-angular-entity-picker.d.ts.map +1 -0
  628. package/types/slotted-angular-event-calendar.d.ts +574 -0
  629. package/types/slotted-angular-event-calendar.d.ts.map +1 -0
  630. package/types/slotted-angular-field-group.d.ts +152 -0
  631. package/types/slotted-angular-field-group.d.ts.map +1 -0
  632. package/types/slotted-angular-field.d.ts +535 -0
  633. package/types/slotted-angular-field.d.ts.map +1 -0
  634. package/types/slotted-angular-filter-bar.d.ts +573 -0
  635. package/types/slotted-angular-filter-bar.d.ts.map +1 -0
  636. package/types/slotted-angular-form.d.ts +298 -0
  637. package/types/slotted-angular-form.d.ts.map +1 -0
  638. package/types/slotted-angular-fullscreen.d.ts +145 -0
  639. package/types/slotted-angular-fullscreen.d.ts.map +1 -0
  640. package/types/slotted-angular-grid.d.ts +50 -0
  641. package/types/slotted-angular-grid.d.ts.map +1 -0
  642. package/types/slotted-angular-highlight.d.ts +93 -0
  643. package/types/slotted-angular-highlight.d.ts.map +1 -0
  644. package/types/slotted-angular-hover-card.d.ts +140 -0
  645. package/types/slotted-angular-hover-card.d.ts.map +1 -0
  646. package/types/slotted-angular-i18n.d.ts +46 -0
  647. package/types/slotted-angular-i18n.d.ts.map +1 -0
  648. package/types/slotted-angular-icon.d.ts +94 -0
  649. package/types/slotted-angular-icon.d.ts.map +1 -0
  650. package/types/slotted-angular-image.d.ts +251 -0
  651. package/types/slotted-angular-image.d.ts.map +1 -0
  652. package/types/slotted-angular-import-export-center.d.ts +351 -0
  653. package/types/slotted-angular-import-export-center.d.ts.map +1 -0
  654. package/types/slotted-angular-inline-message.d.ts +195 -0
  655. package/types/slotted-angular-inline-message.d.ts.map +1 -0
  656. package/types/slotted-angular-inline.d.ts +41 -0
  657. package/types/slotted-angular-inline.d.ts.map +1 -0
  658. package/types/slotted-angular-kbd.d.ts +174 -0
  659. package/types/slotted-angular-kbd.d.ts.map +1 -0
  660. package/types/slotted-angular-link.d.ts +94 -0
  661. package/types/slotted-angular-link.d.ts.map +1 -0
  662. package/types/slotted-angular-list-item.d.ts +210 -0
  663. package/types/slotted-angular-list-item.d.ts.map +1 -0
  664. package/types/slotted-angular-list.d.ts +176 -0
  665. package/types/slotted-angular-list.d.ts.map +1 -0
  666. package/types/slotted-angular-listbox.d.ts +470 -0
  667. package/types/slotted-angular-listbox.d.ts.map +1 -0
  668. package/types/slotted-angular-loading-overlay.d.ts +219 -0
  669. package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
  670. package/types/slotted-angular-markdown.d.ts +172 -0
  671. package/types/slotted-angular-markdown.d.ts.map +1 -0
  672. package/types/slotted-angular-menu.d.ts +448 -0
  673. package/types/slotted-angular-menu.d.ts.map +1 -0
  674. package/types/slotted-angular-menubar.d.ts +90 -0
  675. package/types/slotted-angular-menubar.d.ts.map +1 -0
  676. package/types/slotted-angular-message-scroller.d.ts +151 -0
  677. package/types/slotted-angular-message-scroller.d.ts.map +1 -0
  678. package/types/slotted-angular-message.d.ts +348 -0
  679. package/types/slotted-angular-message.d.ts.map +1 -0
  680. package/types/slotted-angular-multi-select.d.ts +462 -0
  681. package/types/slotted-angular-multi-select.d.ts.map +1 -0
  682. package/types/slotted-angular-navigation-menu.d.ts +309 -0
  683. package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
  684. package/types/slotted-angular-notification-center.d.ts +318 -0
  685. package/types/slotted-angular-notification-center.d.ts.map +1 -0
  686. package/types/slotted-angular-number-field.d.ts +402 -0
  687. package/types/slotted-angular-number-field.d.ts.map +1 -0
  688. package/types/slotted-angular-otp-input.d.ts +286 -0
  689. package/types/slotted-angular-otp-input.d.ts.map +1 -0
  690. package/types/slotted-angular-page-header.d.ts +334 -0
  691. package/types/slotted-angular-page-header.d.ts.map +1 -0
  692. package/types/slotted-angular-page.d.ts +141 -0
  693. package/types/slotted-angular-page.d.ts.map +1 -0
  694. package/types/slotted-angular-pagination.d.ts +213 -0
  695. package/types/slotted-angular-pagination.d.ts.map +1 -0
  696. package/types/slotted-angular-popover.d.ts +366 -0
  697. package/types/slotted-angular-popover.d.ts.map +1 -0
  698. package/types/slotted-angular-progress-indicator.d.ts +312 -0
  699. package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
  700. package/types/slotted-angular-prompt-composer.d.ts +242 -0
  701. package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
  702. package/types/slotted-angular-prose.d.ts +171 -0
  703. package/types/slotted-angular-prose.d.ts.map +1 -0
  704. package/types/slotted-angular-radio-group.d.ts +268 -0
  705. package/types/slotted-angular-radio-group.d.ts.map +1 -0
  706. package/types/slotted-angular-rating.d.ts +374 -0
  707. package/types/slotted-angular-rating.d.ts.map +1 -0
  708. package/types/slotted-angular-result-state.d.ts +217 -0
  709. package/types/slotted-angular-result-state.d.ts.map +1 -0
  710. package/types/slotted-angular-saved-views.d.ts +198 -0
  711. package/types/slotted-angular-saved-views.d.ts.map +1 -0
  712. package/types/slotted-angular-scroll-area.d.ts +186 -0
  713. package/types/slotted-angular-scroll-area.d.ts.map +1 -0
  714. package/types/slotted-angular-section.d.ts +143 -0
  715. package/types/slotted-angular-section.d.ts.map +1 -0
  716. package/types/slotted-angular-segmented-control.d.ts +251 -0
  717. package/types/slotted-angular-segmented-control.d.ts.map +1 -0
  718. package/types/slotted-angular-select.d.ts +507 -0
  719. package/types/slotted-angular-select.d.ts.map +1 -0
  720. package/types/slotted-angular-side-navigation.d.ts +373 -0
  721. package/types/slotted-angular-side-navigation.d.ts.map +1 -0
  722. package/types/slotted-angular-skeleton.d.ts +198 -0
  723. package/types/slotted-angular-skeleton.d.ts.map +1 -0
  724. package/types/slotted-angular-slider.d.ts +216 -0
  725. package/types/slotted-angular-slider.d.ts.map +1 -0
  726. package/types/slotted-angular-sparkline.d.ts +106 -0
  727. package/types/slotted-angular-sparkline.d.ts.map +1 -0
  728. package/types/slotted-angular-split-button.d.ts +180 -0
  729. package/types/slotted-angular-split-button.d.ts.map +1 -0
  730. package/types/slotted-angular-splitter.d.ts +206 -0
  731. package/types/slotted-angular-splitter.d.ts.map +1 -0
  732. package/types/slotted-angular-stack.d.ts +38 -0
  733. package/types/slotted-angular-stack.d.ts.map +1 -0
  734. package/types/slotted-angular-stat-card.d.ts +232 -0
  735. package/types/slotted-angular-stat-card.d.ts.map +1 -0
  736. package/types/slotted-angular-status-indicator.d.ts +106 -0
  737. package/types/slotted-angular-status-indicator.d.ts.map +1 -0
  738. package/types/slotted-angular-stepper.d.ts +198 -0
  739. package/types/slotted-angular-stepper.d.ts.map +1 -0
  740. package/types/slotted-angular-switch.d.ts +243 -0
  741. package/types/slotted-angular-switch.d.ts.map +1 -0
  742. package/types/slotted-angular-table-of-contents.d.ts +210 -0
  743. package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
  744. package/types/slotted-angular-table.d.ts +888 -0
  745. package/types/slotted-angular-table.d.ts.map +1 -0
  746. package/types/slotted-angular-tabs.d.ts +340 -0
  747. package/types/slotted-angular-tabs.d.ts.map +1 -0
  748. package/types/slotted-angular-tag.d.ts +279 -0
  749. package/types/slotted-angular-tag.d.ts.map +1 -0
  750. package/types/slotted-angular-tags-input.d.ts +302 -0
  751. package/types/slotted-angular-tags-input.d.ts.map +1 -0
  752. package/types/slotted-angular-text-field.d.ts +334 -0
  753. package/types/slotted-angular-text-field.d.ts.map +1 -0
  754. package/types/slotted-angular-textarea.d.ts +150 -0
  755. package/types/slotted-angular-textarea.d.ts.map +1 -0
  756. package/types/slotted-angular-theme.d.ts +26 -0
  757. package/types/slotted-angular-theme.d.ts.map +1 -0
  758. package/types/slotted-angular-time-field.d.ts +300 -0
  759. package/types/slotted-angular-time-field.d.ts.map +1 -0
  760. package/types/slotted-angular-time-picker.d.ts +260 -0
  761. package/types/slotted-angular-time-picker.d.ts.map +1 -0
  762. package/types/slotted-angular-time-range-picker.d.ts +401 -0
  763. package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
  764. package/types/slotted-angular-timeline.d.ts +329 -0
  765. package/types/slotted-angular-timeline.d.ts.map +1 -0
  766. package/types/slotted-angular-toast.d.ts +340 -0
  767. package/types/slotted-angular-toast.d.ts.map +1 -0
  768. package/types/slotted-angular-toggle-group.d.ts +167 -0
  769. package/types/slotted-angular-toggle-group.d.ts.map +1 -0
  770. package/types/slotted-angular-toggle.d.ts +106 -0
  771. package/types/slotted-angular-toggle.d.ts.map +1 -0
  772. package/types/slotted-angular-toolbar.d.ts +252 -0
  773. package/types/slotted-angular-toolbar.d.ts.map +1 -0
  774. package/types/slotted-angular-tooltip.d.ts +388 -0
  775. package/types/slotted-angular-tooltip.d.ts.map +1 -0
  776. package/types/slotted-angular-top-navigation.d.ts +442 -0
  777. package/types/slotted-angular-top-navigation.d.ts.map +1 -0
  778. package/types/slotted-angular-tour.d.ts +440 -0
  779. package/types/slotted-angular-tour.d.ts.map +1 -0
  780. package/types/slotted-angular-transfer.d.ts +296 -0
  781. package/types/slotted-angular-transfer.d.ts.map +1 -0
  782. package/types/slotted-angular-tree.d.ts +499 -0
  783. package/types/slotted-angular-tree.d.ts.map +1 -0
  784. package/types/slotted-angular-typography.d.ts +89 -0
  785. package/types/slotted-angular-typography.d.ts.map +1 -0
  786. package/types/slotted-angular-upload.d.ts +365 -0
  787. package/types/slotted-angular-upload.d.ts.map +1 -0
  788. package/types/slotted-angular-visually-hidden.d.ts +19 -0
  789. package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
  790. package/types/slotted-angular-wizard.d.ts +441 -0
  791. package/types/slotted-angular-wizard.d.ts.map +1 -0
  792. package/types/slotted-angular.d.ts +3 -0
  793. package/types/slotted-angular.d.ts.map +1 -0
@@ -0,0 +1,123 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { highlightRuns } from '@slotted/core/highlight';
4
+
5
+ const FALLBACK = {
6
+ locale: undefined,
7
+ sensitivity: 'base',
8
+ occurrences: 'all',
9
+ };
10
+ const HIGHLIGHT_DEFAULTS = new InjectionToken('slotted highlight defaults', {
11
+ providedIn: 'root',
12
+ factory: () => FALLBACK,
13
+ });
14
+ /**
15
+ * An application decides once which locale its marks compare in, how strict
16
+ * the comparison is, and whether every occurrence is marked. A mark that
17
+ * states any of them itself still wins: an explicit input is never overridden
18
+ * by the token. A host — `combobox`, `select` — passes the locale its filter
19
+ * used, which is the same rule from the other side.
20
+ */
21
+ function provideHighlightDefaults(defaults) {
22
+ return {
23
+ provide: HIGHLIGHT_DEFAULTS,
24
+ useFactory: () => ({
25
+ locale: defaults.locale ?? FALLBACK.locale,
26
+ sensitivity: defaults.sensitivity ?? FALLBACK.sensitivity,
27
+ occurrences: defaults.occurrences ?? FALLBACK.occurrences,
28
+ }),
29
+ };
30
+ }
31
+ /** What a mark compares with here, before it states anything of its own. */
32
+ function injectHighlightDefaults() {
33
+ return inject(HIGHLIGHT_DEFAULTS);
34
+ }
35
+
36
+ /**
37
+ * The spans of a text a query found, marked.
38
+ *
39
+ * The component is written on the consumer's own element — the `span` that
40
+ * holds an option's label, the `p` under a find bar — which is the element
41
+ * that holds the text and the reason this binding needs no `render` input:
42
+ * substituting the element is Angular's default. The `mark` inside it is
43
+ * fixed; it is the element the HTML Standard defines for the term searched
44
+ * for inside a result.
45
+ *
46
+ * It is content, not a control: nothing here is focusable and nothing answers
47
+ * a key. What is marked is decided by `@slotted/core/highlight`, the same scan
48
+ * `combobox`'s filter decides with. `text` is a string and the runs are
49
+ * slices of it; nothing is projected, because a `mark` inside projected
50
+ * content would be HTML the family interpreted.
51
+ *
52
+ * Every space in this template is load-bearing: a newline between two nodes
53
+ * collapses into a space, and a space between two runs is a space inside the
54
+ * text.
55
+ */
56
+ class SlHighlight {
57
+ /**
58
+ * The text, whole. It is the only content the family renders: nothing in it
59
+ * is HTML, and a run is a slice of it.
60
+ */
61
+ text = input.required(/* @ts-ignore */
62
+ ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
63
+ /** One query or several. Empty and whitespace-only entries find nothing. */
64
+ query = input(undefined, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
66
+ /**
67
+ * Spans already found — by a server, by a fuzzy engine — in the text's own
68
+ * code units. Wins over `query` and `matcher`; normalised like either.
69
+ */
70
+ ranges = input(undefined, /* @ts-ignore */
71
+ ...(ngDevMode ? [{ debugName: "ranges" }] : /* istanbul ignore next */ []));
72
+ /** Replaces the default matcher. Loses to `ranges`. */
73
+ matcher = input(undefined, /* @ts-ignore */
74
+ ...(ngDevMode ? [{ debugName: "matcher" }] : /* istanbul ignore next */ []));
75
+ /**
76
+ * The match a find bar is standing on, counting matches only. It is stated,
77
+ * never moved: the family has no keyboard. Out of range marks nothing.
78
+ */
79
+ current = input(undefined, /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
81
+ /** Defaults to the provider, then to the runtime's locale. */
82
+ locale = input(undefined, /* @ts-ignore */
83
+ ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
84
+ /** Defaults to the provider, then to `base`. */
85
+ sensitivity = input(undefined, /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "sensitivity" }] : /* istanbul ignore next */ []));
87
+ /** Defaults to the provider, then to `all`. */
88
+ occurrences = input(undefined, /* @ts-ignore */
89
+ ...(ngDevMode ? [{ debugName: "occurrences" }] : /* istanbul ignore next */ []));
90
+ /**
91
+ * Steps the marks down without claiming the row's semantics. The row above
92
+ * already says it with `data-disabled`, and the sheet reads that too.
93
+ */
94
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
95
+ defaults = injectHighlightDefaults();
96
+ /** The runs the template renders; a consumer counting matches reads it too. */
97
+ runs = computed(() => highlightRuns(this.text(), {
98
+ locale: this.locale() ?? this.defaults.locale,
99
+ matcher: this.matcher(),
100
+ occurrences: this.occurrences() ?? this.defaults.occurrences,
101
+ query: this.query(),
102
+ ranges: this.ranges(),
103
+ sensitivity: this.sensitivity() ?? this.defaults.sensitivity,
104
+ }), /* @ts-ignore */
105
+ ...(ngDevMode ? [{ debugName: "runs" }] : /* istanbul ignore next */ []));
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlHighlight, isStandalone: true, selector: "[slHighlight]", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, matcher: { classPropertyName: "matcher", publicName: "matcher", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, sensitivity: { classPropertyName: "sensitivity", publicName: "sensitivity", isSignal: true, isRequired: false, transformFunction: null }, occurrences: { classPropertyName: "occurrences", publicName: "occurrences", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "highlight", "data-part": "root" }, properties: { "attr.data-disabled": "disabled() ? \"\" : null" } }, exportAs: ["slHighlight"], ngImport: i0, template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, isInline: true, styles: ["@layer slotted.components{[data-ui=highlight] [data-part=match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui=highlight] [data-part=match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui=highlight] [data-part=match],[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui=highlight] [data-part=match][data-current]{background-color:Highlight;color:HighlightText}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHighlight, decorators: [{
110
+ type: Component,
111
+ args: [{ selector: '[slHighlight]', standalone: true, exportAs: 'slHighlight', template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part="match" [attr.data-current]="run.index === current() ? '' : null">{{ run.text }}</mark>} @else {{{ run.text }}}}`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
112
+ 'data-ui': 'highlight',
113
+ 'data-part': 'root',
114
+ '[attr.data-disabled]': 'disabled() ? "" : null',
115
+ }, styles: ["@layer slotted.components{[data-ui=highlight] [data-part=match]{background-color:var( --slotted-highlight-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:var(--slotted-radius-none, 0px);color:var(--slotted-highlight-color, var(--slotted-tone-accent-text));font-weight:inherit;letter-spacing:inherit;padding:0;text-decoration-color:var(--slotted-highlight-rule-color, var(--slotted-tone-accent-border));text-decoration-line:underline;text-decoration-thickness:var(--slotted-border-width-thin, 1px);text-underline-offset:var(--slotted-space-1, .125rem)}[data-ui=highlight] [data-part=match][data-current]{background-color:var(--slotted-highlight-current-background, var(--slotted-tone-accent-solid));color:var(--slotted-highlight-current-color, var(--slotted-tone-accent-on-solid));text-decoration-line:none}[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:var(--slotted-highlight-disabled-background, transparent);color:inherit;text-decoration-line:underline}@media(forced-colors:active){[data-ui=highlight] [data-part=match],[data-ui=highlight]:is([data-disabled],[data-disabled] *) [data-part=match]{background-color:Mark;color:MarkText;forced-color-adjust:none}[data-ui=highlight] [data-part=match][data-current]{background-color:Highlight;color:HighlightText}}}\n"] }]
116
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }], ranges: [{ type: i0.Input, args: [{ isSignal: true, alias: "ranges", required: false }] }], matcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "matcher", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], sensitivity: [{ type: i0.Input, args: [{ isSignal: true, alias: "sensitivity", required: false }] }], occurrences: [{ type: i0.Input, args: [{ isSignal: true, alias: "occurrences", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
117
+
118
+ /**
119
+ * Generated bundle index. Do not edit.
120
+ */
121
+
122
+ export { HIGHLIGHT_DEFAULTS, SlHighlight, injectHighlightDefaults, provideHighlightDefaults };
123
+ //# sourceMappingURL=slotted-angular-highlight.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-highlight.mjs","sources":["../../highlight/src/highlight-defaults.ts","../../highlight/src/highlight.ts","../../highlight/src/slotted-angular-highlight.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nimport type { HighlightMatchOptions } from '@slotted/core/highlight';\n\nexport type {\n HighlightMatcher,\n HighlightMatchOptions,\n HighlightRange,\n HighlightRun,\n} from '@slotted/core/highlight';\n\nexport type HighlightOccurrences = NonNullable<HighlightMatchOptions['occurrences']>;\nexport type HighlightSensitivity = NonNullable<HighlightMatchOptions['sensitivity']>;\n\n/** What an application sets once for every mark under it. */\nexport interface HighlightDefaults {\n /** BCP 47. `undefined` asks the runtime. */\n locale: string | undefined;\n /** `base`: `resume` finds `Resumé`, as `typeahead` and `createFilter` compare. */\n sensitivity: HighlightSensitivity;\n /** `all`: every place a query appears; `first`: one span per query. */\n occurrences: HighlightOccurrences;\n}\n\nconst FALLBACK: HighlightDefaults = {\n locale: undefined,\n sensitivity: 'base',\n occurrences: 'all',\n};\n\nexport const HIGHLIGHT_DEFAULTS = new InjectionToken<HighlightDefaults>(\n 'slotted highlight defaults',\n {\n providedIn: 'root',\n factory: () => FALLBACK,\n },\n);\n\n/**\n * An application decides once which locale its marks compare in, how strict\n * the comparison is, and whether every occurrence is marked. A mark that\n * states any of them itself still wins: an explicit input is never overridden\n * by the token. A host — `combobox`, `select` — passes the locale its filter\n * used, which is the same rule from the other side.\n */\nexport function provideHighlightDefaults(defaults: Partial<HighlightDefaults>) {\n return {\n provide: HIGHLIGHT_DEFAULTS,\n useFactory: (): HighlightDefaults => ({\n locale: defaults.locale ?? FALLBACK.locale,\n sensitivity: defaults.sensitivity ?? FALLBACK.sensitivity,\n occurrences: defaults.occurrences ?? FALLBACK.occurrences,\n }),\n };\n}\n\n/** What a mark compares with here, before it states anything of its own. */\nexport function injectHighlightDefaults(): HighlightDefaults {\n return inject(HIGHLIGHT_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { highlightRuns } from '@slotted/core/highlight';\nimport type { HighlightMatcher, HighlightRange } from '@slotted/core/highlight';\n\nimport { injectHighlightDefaults } from './highlight-defaults';\nimport type { HighlightOccurrences, HighlightSensitivity } from './highlight-defaults';\n\n/**\n * The spans of a text a query found, marked.\n *\n * The component is written on the consumer's own element — the `span` that\n * holds an option's label, the `p` under a find bar — which is the element\n * that holds the text and the reason this binding needs no `render` input:\n * substituting the element is Angular's default. The `mark` inside it is\n * fixed; it is the element the HTML Standard defines for the term searched\n * for inside a result.\n *\n * It is content, not a control: nothing here is focusable and nothing answers\n * a key. What is marked is decided by `@slotted/core/highlight`, the same scan\n * `combobox`'s filter decides with. `text` is a string and the runs are\n * slices of it; nothing is projected, because a `mark` inside projected\n * content would be HTML the family interpreted.\n *\n * Every space in this template is load-bearing: a newline between two nodes\n * collapses into a space, and a space between two runs is a space inside the\n * text.\n */\n@Component({\n selector: '[slHighlight]',\n standalone: true,\n exportAs: 'slHighlight',\n // prettier-ignore\n template: `@for (run of runs(); track $index) {@if (run.matched) {<mark data-part=\"match\" [attr.data-current]=\"run.index === current() ? '' : null\">{{ run.text }}</mark>} @else {{{ run.text }}}}`,\n styleUrl: '../../../styles/src/highlight/highlight.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'highlight',\n 'data-part': 'root',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class SlHighlight {\n /**\n * The text, whole. It is the only content the family renders: nothing in it\n * is HTML, and a run is a slice of it.\n */\n readonly text = input.required<string>();\n /** One query or several. Empty and whitespace-only entries find nothing. */\n readonly query = input<string | readonly string[] | undefined>(undefined);\n /**\n * Spans already found — by a server, by a fuzzy engine — in the text's own\n * code units. Wins over `query` and `matcher`; normalised like either.\n */\n readonly ranges = input<readonly HighlightRange[] | undefined>(undefined);\n /** Replaces the default matcher. Loses to `ranges`. */\n readonly matcher = input<HighlightMatcher | undefined>(undefined);\n /**\n * The match a find bar is standing on, counting matches only. It is stated,\n * never moved: the family has no keyboard. Out of range marks nothing.\n */\n readonly current = input<number | undefined>(undefined);\n /** Defaults to the provider, then to the runtime's locale. */\n readonly locale = input<string | undefined>(undefined);\n /** Defaults to the provider, then to `base`. */\n readonly sensitivity = input<HighlightSensitivity | undefined>(undefined);\n /** Defaults to the provider, then to `all`. */\n readonly occurrences = input<HighlightOccurrences | undefined>(undefined);\n /**\n * Steps the marks down without claiming the row's semantics. The row above\n * already says it with `data-disabled`, and the sheet reads that too.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectHighlightDefaults();\n\n /** The runs the template renders; a consumer counting matches reads it too. */\n readonly runs = computed(() =>\n highlightRuns(this.text(), {\n locale: this.locale() ?? this.defaults.locale,\n matcher: this.matcher(),\n occurrences: this.occurrences() ?? this.defaults.occurrences,\n query: this.query(),\n ranges: this.ranges(),\n sensitivity: this.sensitivity() ?? this.defaults.sensitivity,\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,326 @@
1
+ import { createPointerIntent } from '@slotted/core/pointer-intent';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, inject, input, numberAttribute, booleanAttribute, computed, DestroyRef, effect, untracked, forwardRef, Directive, ElementRef, HostAttributeToken, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
4
+ import { SlPopover } from '@slotted/angular/popover';
5
+ import { tabbables } from '@slotted/core/focus';
6
+
7
+ /**
8
+ * 600 to open is the number `tooltip` holds and the one Base UI reached; 300
9
+ * to close is Radix's and Base UI's. The card is not navigable until a
10
+ * consumer says it holds controls. The panel's own defaults are the popover's,
11
+ * and `providePopoverDefaults()` is where an application sets those.
12
+ */
13
+ const FALLBACK = {
14
+ closeDelay: 300,
15
+ navigable: false,
16
+ openDelay: 600,
17
+ };
18
+ const HOVER_CARD_DEFAULTS = new InjectionToken('slotted hover-card defaults', { providedIn: 'root', factory: () => FALLBACK });
19
+ /** The decisions an application takes once, in its bootstrap. */
20
+ function provideHoverCardDefaults(defaults) {
21
+ return {
22
+ provide: HOVER_CARD_DEFAULTS,
23
+ useFactory: () => ({ ...FALLBACK, ...defaults }),
24
+ };
25
+ }
26
+ function injectHoverCardDefaults() {
27
+ return inject(HOVER_CARD_DEFAULTS);
28
+ }
29
+
30
+ /**
31
+ * The halo the open mark draws past the link's box, plus the same again of
32
+ * air: the popover puts its arrow's tip a pixel off the anchor, which is right
33
+ * for a button and touched the halo on a word.
34
+ */
35
+ const SIDE_OFFSET = 4;
36
+ /**
37
+ * A preview of a link or a person, opened by hover and by focus.
38
+ *
39
+ * The card is `slPopover` behind a trigger the popover does not have. The
40
+ * directive *is* a popover — it extends `SlPopover` and provides itself as
41
+ * one, so every `slPopover*` part written inside it reaches the card — and it
42
+ * decides three things the popover leaves open: focus is never taken on open,
43
+ * the panel's role follows `navigable`, and the layer stands off the link by
44
+ * the halo the open mark draws. `slPopoverLayer`, `slPopoverBody` and the rest
45
+ * are the popover's own, imported as they are.
46
+ */
47
+ class SlHoverCard extends SlPopover {
48
+ openDelay = input(undefined, { ...(ngDevMode ? { debugName: "openDelay" } : /* istanbul ignore next */ {}), transform: (given) => (given === undefined ? undefined : numberAttribute(given)) });
49
+ closeDelay = input(undefined, { ...(ngDevMode ? { debugName: "closeDelay" } : /* istanbul ignore next */ {}), transform: (given) => (given === undefined ? undefined : numberAttribute(given)) });
50
+ navigable = input(undefined, { ...(ngDevMode ? { debugName: "navigable" } : /* istanbul ignore next */ {}), transform: (given) => (given === undefined ? undefined : booleanAttribute(given)) });
51
+ cardDefaults = injectHoverCardDefaults();
52
+ resolvedOpenDelay = computed(() => this.openDelay() ?? this.cardDefaults.openDelay, /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "resolvedOpenDelay" }] : /* istanbul ignore next */ []));
54
+ resolvedCloseDelay = computed(() => this.closeDelay() ?? this.cardDefaults.closeDelay, /* @ts-ignore */
55
+ ...(ngDevMode ? [{ debugName: "resolvedCloseDelay" }] : /* istanbul ignore next */ []));
56
+ resolvedNavigable = computed(() => (this.navigable() ?? this.cardDefaults.navigable) === true, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "resolvedNavigable" }] : /* istanbul ignore next */ []));
58
+ /** The card never takes focus: the reader's focus stays on the link. */
59
+ resolvedAutoFocus = computed(() => false, /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "resolvedAutoFocus" }] : /* istanbul ignore next */ []));
61
+ /** A card the keyboard cannot enter is not a dialog nobody is told about. */
62
+ contentRole = computed(() => this.resolvedNavigable() ? 'dialog' : 'presentation', /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "contentRole" }] : /* istanbul ignore next */ []));
64
+ resolvedSideOffset = computed(() => this.sideOffset() ?? SIDE_OFFSET, /* @ts-ignore */
65
+ ...(ngDevMode ? [{ debugName: "resolvedSideOffset" }] : /* istanbul ignore next */ []));
66
+ /** Focus the family put back on the trigger must not reopen the card. */
67
+ suppressFocusOpen = false;
68
+ timer;
69
+ intent = null;
70
+ constructor() {
71
+ super();
72
+ const destroyRef = inject(DestroyRef);
73
+ /**
74
+ * The pointer on the card keeps it open, and leaving the card starts the
75
+ * close. The listeners go on the layer — the padded box around the panel —
76
+ * as soon as the popover has built it.
77
+ */
78
+ effect((onCleanup) => {
79
+ const panel = this.contentNode();
80
+ if (panel === null)
81
+ return;
82
+ const layer = panel.parentElement ?? panel;
83
+ const enter = (event) => {
84
+ if (event.pointerType === 'touch')
85
+ return;
86
+ untracked(() => this.cancelPending());
87
+ };
88
+ const leave = (event) => {
89
+ if (event.pointerType === 'touch')
90
+ return;
91
+ untracked(() => this.closeAfterDelay(event));
92
+ };
93
+ layer.addEventListener('pointerenter', enter);
94
+ layer.addEventListener('pointerleave', leave);
95
+ onCleanup(() => {
96
+ layer.removeEventListener('pointerenter', enter);
97
+ layer.removeEventListener('pointerleave', leave);
98
+ });
99
+ });
100
+ destroyRef.onDestroy(() => this.cancelPending());
101
+ }
102
+ /** Asks to open or close. A close the keyboard caused holds the reopening back. */
103
+ toggle(next, reason, source) {
104
+ this.cancelPending();
105
+ super.toggle(next, reason, source);
106
+ if (!next && !this.isOpen() && (reason === 'escape' || reason === 'keyboard')) {
107
+ this.suppressFocusOpen = true;
108
+ }
109
+ }
110
+ /** Cancels a pending open or close, and the grace area. */
111
+ cancelPending() {
112
+ if (this.timer !== undefined)
113
+ clearTimeout(this.timer);
114
+ this.timer = undefined;
115
+ this.intent?.destroy();
116
+ this.intent = null;
117
+ }
118
+ /** Opens after `openDelay`, unless something cancels it first. */
119
+ openAfterDelay(source) {
120
+ this.cancelPending();
121
+ this.timer = setTimeout(() => this.toggle(true, 'pointer', source), this.resolvedOpenDelay());
122
+ }
123
+ /** Closes after `closeDelay`, unless the pointer comes back first. */
124
+ closeAfterDelay(source) {
125
+ this.cancelPending();
126
+ this.timer = setTimeout(() => this.toggle(false, 'pointer', source), this.resolvedCloseDelay());
127
+ }
128
+ /**
129
+ * The grace area: the card stays while the pointer's path from `origin`
130
+ * still points into the card, and closes once it does not — unless the
131
+ * pointer turns out to be on the trigger or the card after all.
132
+ */
133
+ graceToward(origin, stillOver, source) {
134
+ this.cancelPending();
135
+ this.intent = createPointerIntent({
136
+ origin,
137
+ target: () => {
138
+ const panel = this.contentNode();
139
+ return (panel?.parentElement ?? panel)?.getBoundingClientRect() ?? null;
140
+ },
141
+ timeout: this.resolvedCloseDelay(),
142
+ onSettled: () => {
143
+ this.intent = null;
144
+ if (stillOver())
145
+ return;
146
+ this.toggle(false, 'pointer', source);
147
+ },
148
+ });
149
+ }
150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
151
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: SlHoverCard, isStandalone: true, selector: "[slHoverCard]", inputs: { openDelay: { classPropertyName: "openDelay", publicName: "openDelay", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null }, navigable: { classPropertyName: "navigable", publicName: "navigable", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: SlPopover, useExisting: forwardRef(() => SlHoverCard) }], exportAs: ["slHoverCard"], usesInheritance: true, ngImport: i0 });
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCard, decorators: [{
154
+ type: Directive,
155
+ args: [{
156
+ selector: '[slHoverCard]',
157
+ standalone: true,
158
+ exportAs: 'slHoverCard',
159
+ providers: [{ provide: SlPopover, useExisting: forwardRef(() => SlHoverCard) }],
160
+ }]
161
+ }], ctorParameters: () => [], propDecorators: { openDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "openDelay", required: false }] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], navigable: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigable", required: false }] }] } });
162
+
163
+ /**
164
+ * The link the card is about. It is the family's one part: the element painted
165
+ * while the card shows, and the anchor the card is measured against — many
166
+ * triggers may share one `slHoverCard`, and the one that starts an opening
167
+ * registers itself.
168
+ *
169
+ * A component rather than a directive, as `slLink` and `slMenuItem` are,
170
+ * because a component is what can carry `styleUrl`: this is where the family's
171
+ * authored stylesheet enters an Angular application, and the trigger has to be
172
+ * painted before any card has opened.
173
+ *
174
+ * The wiring — `aria-haspopup="dialog"`, `aria-expanded`, `aria-controls` — is
175
+ * written only when the card is navigable. A card the keyboard cannot enter is
176
+ * not a popup the link has, and saying so would be a lie a screen reader
177
+ * repeats.
178
+ */
179
+ class SlHoverCardTrigger {
180
+ card = inject(SlHoverCard);
181
+ element = inject(ElementRef).nativeElement;
182
+ /* A host that already carries an identity — `a[slLink]` cannot, since two
183
+ components do not share an element, but a consumer's own part can — keeps
184
+ it, as `menu-trigger.ts` records for two directives on one element. */
185
+ writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });
186
+ writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });
187
+ ui = this.writtenUi ?? 'hover-card';
188
+ part = this.writtenPart ?? 'root';
189
+ /** Whether this trigger is the one the open card hangs from. */
190
+ anchors = computed(() => this.card.triggerNode() === this.element, /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "anchors" }] : /* istanbul ignore next */ []));
192
+ open = computed(() => this.card.isOpen() && this.anchors(), /* @ts-ignore */
193
+ ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
194
+ tapped = false;
195
+ constructor() {
196
+ /* The first trigger to mount is the anchor until another takes it. */
197
+ afterNextRender(() => {
198
+ if (this.card.triggerNode() === null)
199
+ this.card.triggerNode.set(this.element);
200
+ });
201
+ }
202
+ claim() {
203
+ if (this.card.triggerNode() !== this.element)
204
+ this.card.triggerNode.set(this.element);
205
+ }
206
+ layer() {
207
+ const panel = this.card.contentNode();
208
+ return panel?.parentElement ?? panel;
209
+ }
210
+ onPointerEnter(source) {
211
+ const event = source;
212
+ if (this.card.disabled() || event.pointerType === 'touch')
213
+ return;
214
+ this.claim();
215
+ if (this.card.isOpen() && this.anchors()) {
216
+ this.card.cancelPending();
217
+ return;
218
+ }
219
+ this.card.openAfterDelay(event);
220
+ }
221
+ /**
222
+ * Leaving the trigger with the card open starts the grace: the card stays
223
+ * while the pointer's own path still points into it, and closes after
224
+ * `closeDelay` once the pointer has parked somewhere else. Leaving with an
225
+ * open still pending cancels the open.
226
+ */
227
+ onPointerLeave(source) {
228
+ const event = source;
229
+ if (event.pointerType === 'touch')
230
+ return;
231
+ if (!this.card.isOpen() || !this.anchors()) {
232
+ this.card.cancelPending();
233
+ return;
234
+ }
235
+ this.card.graceToward(() => this.element.getBoundingClientRect(), () => this.element.matches(':hover') || (this.layer()?.matches(':hover') ?? false), event);
236
+ }
237
+ /**
238
+ * `:focus-visible` rather than every focus: a press that focuses a link is a
239
+ * navigation, not a request for its preview — and focus the family itself
240
+ * put back after Escape or a focus guard must not reopen the card.
241
+ */
242
+ onFocus(event) {
243
+ if (this.card.disabled())
244
+ return;
245
+ if (this.card.suppressFocusOpen)
246
+ return;
247
+ if (!this.element.matches(':focus-visible'))
248
+ return;
249
+ this.claim();
250
+ this.card.toggle(true, 'keyboard', event);
251
+ }
252
+ onBlur(source) {
253
+ const event = source;
254
+ this.card.suppressFocusOpen = false;
255
+ if (!this.card.isOpen() || !this.anchors())
256
+ return;
257
+ const next = event.relatedTarget;
258
+ if (next instanceof Node && this.layer()?.contains(next))
259
+ return;
260
+ this.card.toggle(false, 'blur', event);
261
+ }
262
+ /**
263
+ * `Tab` on the open trigger enters a navigable card, which lives at the end
264
+ * of the document and would otherwise never be reached. The popover's focus
265
+ * guards bring focus back out past either end.
266
+ */
267
+ onKeyDown(source) {
268
+ const event = source;
269
+ if (!this.card.resolvedNavigable() || !this.card.isOpen() || !this.anchors())
270
+ return;
271
+ if (event.key !== 'Tab' || event.shiftKey)
272
+ return;
273
+ const panel = this.card.contentNode();
274
+ if (panel === null)
275
+ return;
276
+ const [first] = tabbables(panel);
277
+ if (first === undefined)
278
+ return;
279
+ event.preventDefault();
280
+ first.focus();
281
+ }
282
+ /**
283
+ * There is no hover on a coarse pointer. A tap on a closed trigger opens the
284
+ * card and does not follow the link; a tap on an open one follows it.
285
+ */
286
+ onPointerDown(source) {
287
+ this.tapped = source.pointerType === 'touch';
288
+ }
289
+ onClick(event) {
290
+ if (!this.tapped)
291
+ return;
292
+ this.tapped = false;
293
+ if (this.card.disabled() || (this.card.isOpen() && this.anchors()))
294
+ return;
295
+ event.preventDefault();
296
+ this.claim();
297
+ this.card.toggle(true, 'pointer', event);
298
+ }
299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCardTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component });
300
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.7", type: SlHoverCardTrigger, isStandalone: true, selector: "[slHoverCardTrigger]", host: { listeners: { "pointerenter": "onPointerEnter($event)", "pointerleave": "onPointerLeave($event)", "pointerdown": "onPointerDown($event)", "click": "onClick($event)", "focus": "onFocus($event)", "blur": "onBlur($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.data-ui": "ui", "attr.data-part": "part", "attr.data-open": "open() ? \"\" : null", "attr.aria-haspopup": "card.resolvedNavigable() ? \"dialog\" : null", "attr.aria-expanded": "card.resolvedNavigable() ? open() : null", "attr.aria-controls": "card.resolvedNavigable() && open() ? card.contentId : null" } }, exportAs: ["slHoverCardTrigger"], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer slotted.components{[data-ui=hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui=hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui=hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui=hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
301
+ }
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlHoverCardTrigger, decorators: [{
303
+ type: Component,
304
+ args: [{ selector: '[slHoverCardTrigger]', standalone: true, exportAs: 'slHoverCardTrigger', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
305
+ '[attr.data-ui]': 'ui',
306
+ '[attr.data-part]': 'part',
307
+ '[attr.data-open]': 'open() ? "" : null',
308
+ '[attr.aria-haspopup]': 'card.resolvedNavigable() ? "dialog" : null',
309
+ '[attr.aria-expanded]': 'card.resolvedNavigable() ? open() : null',
310
+ '[attr.aria-controls]': 'card.resolvedNavigable() && open() ? card.contentId : null',
311
+ '(pointerenter)': 'onPointerEnter($event)',
312
+ '(pointerleave)': 'onPointerLeave($event)',
313
+ '(pointerdown)': 'onPointerDown($event)',
314
+ '(click)': 'onClick($event)',
315
+ '(focus)': 'onFocus($event)',
316
+ '(blur)': 'onBlur($event)',
317
+ '(keydown)': 'onKeyDown($event)',
318
+ }, styles: ["@layer slotted.components{[data-ui=hover-card]{--_text: var(--slotted-hover-card-color, var(--slotted-tone-accent-text, LinkText));--_underline: var( --slotted-hover-card-underline-color, color-mix(in oklab, var(--_text) 40%, transparent) );--_tint: var( --slotted-hover-card-tint, color-mix( in oklab, var(--_text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );--_halo: var(--slotted-hover-card-halo, var(--slotted-space-1, .125rem));border-radius:var(--slotted-hover-card-radius, var(--slotted-radius-xs, 2px));color:var(--_text);text-decoration-color:var(--_underline);text-decoration-line:underline;text-decoration-thickness:from-font;text-underline-offset:.15em;transition:background-color var(--slotted-duration-short) var(--slotted-easing-standard),box-shadow var(--slotted-duration-short) var(--slotted-easing-standard),text-decoration-color var(--slotted-duration-short) var(--slotted-easing-standard)}[data-ui=hover-card]:not([data-disabled]):hover{text-decoration-color:currentColor}[data-ui=hover-card][data-open]{background-color:var(--_tint);box-shadow:0 0 0 var(--_halo) var(--_tint);text-decoration-color:currentColor}[data-ui=hover-card]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:var(--slotted-focus-ring-offset, 2px)}@media(forced-colors:active){[data-ui=hover-card][data-open]{text-decoration-thickness:var(--slotted-border-width-thick, 2px)}}}\n"] }]
319
+ }], ctorParameters: () => [] });
320
+
321
+ /**
322
+ * Generated bundle index. Do not edit.
323
+ */
324
+
325
+ export { HOVER_CARD_DEFAULTS, SlHoverCard, SlHoverCardTrigger, injectHoverCardDefaults, provideHoverCardDefaults };
326
+ //# sourceMappingURL=slotted-angular-hover-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-hover-card.mjs","sources":["../../hover-card/src/hover-card-defaults.ts","../../hover-card/src/hover-card.ts","../../hover-card/src/hover-card-trigger.ts","../../hover-card/src/slotted-angular-hover-card.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\n\nexport interface HoverCardDefaults {\n /** Milliseconds the pointer rests on the trigger before the card opens. */\n openDelay: number;\n /** Milliseconds after the pointer has left trigger and card before it closes. */\n closeDelay: number;\n /**\n * Whether the card holds controls a keyboard reader can reach. On, `Tab`\n * from the open trigger enters it, the panel is a `dialog` and the trigger\n * says so; off, the card is a `presentation` the link never announces.\n */\n navigable: boolean;\n}\n\n/**\n * 600 to open is the number `tooltip` holds and the one Base UI reached; 300\n * to close is Radix's and Base UI's. The card is not navigable until a\n * consumer says it holds controls. The panel's own defaults are the popover's,\n * and `providePopoverDefaults()` is where an application sets those.\n */\nconst FALLBACK: HoverCardDefaults = {\n closeDelay: 300,\n navigable: false,\n openDelay: 600,\n};\n\nexport const HOVER_CARD_DEFAULTS = new InjectionToken<HoverCardDefaults>(\n 'slotted hover-card defaults',\n { providedIn: 'root', factory: () => FALLBACK },\n);\n\n/** The decisions an application takes once, in its bootstrap. */\nexport function provideHoverCardDefaults(defaults: Partial<HoverCardDefaults>) {\n return {\n provide: HOVER_CARD_DEFAULTS,\n useFactory: (): HoverCardDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\nexport function injectHoverCardDefaults(): HoverCardDefaults {\n return inject(HOVER_CARD_DEFAULTS);\n}\n","import { createPointerIntent } from '@slotted/core/pointer-intent';\nimport type { PointerIntentHandle } from '@slotted/core/pointer-intent';\nimport {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute,\n untracked,\n} from '@angular/core';\nimport { SlPopover } from '@slotted/angular/popover';\nimport type { PopoverOpenReason } from '@slotted/angular/popover';\n\nimport { injectHoverCardDefaults } from './hover-card-defaults';\n\n/**\n * The popover's reasons, plus `blur`: focus leaving the trigger is the one\n * way this family closes that the popover never does.\n */\nexport type HoverCardOpenReason = PopoverOpenReason | 'blur';\n\n/**\n * The halo the open mark draws past the link's box, plus the same again of\n * air: the popover puts its arrow's tip a pixel off the anchor, which is right\n * for a button and touched the halo on a word.\n */\nconst SIDE_OFFSET = 4;\n\n/**\n * A preview of a link or a person, opened by hover and by focus.\n *\n * The card is `slPopover` behind a trigger the popover does not have. The\n * directive *is* a popover — it extends `SlPopover` and provides itself as\n * one, so every `slPopover*` part written inside it reaches the card — and it\n * decides three things the popover leaves open: focus is never taken on open,\n * the panel's role follows `navigable`, and the layer stands off the link by\n * the halo the open mark draws. `slPopoverLayer`, `slPopoverBody` and the rest\n * are the popover's own, imported as they are.\n */\n@Directive({\n selector: '[slHoverCard]',\n standalone: true,\n exportAs: 'slHoverCard',\n providers: [{ provide: SlPopover, useExisting: forwardRef(() => SlHoverCard) }],\n})\nexport class SlHoverCard extends SlPopover {\n readonly openDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly closeDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly navigable = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : booleanAttribute(given)),\n });\n\n private readonly cardDefaults = injectHoverCardDefaults();\n\n readonly resolvedOpenDelay = computed(() => this.openDelay() ?? this.cardDefaults.openDelay);\n readonly resolvedCloseDelay = computed(() => this.closeDelay() ?? this.cardDefaults.closeDelay);\n readonly resolvedNavigable = computed(\n () => (this.navigable() ?? this.cardDefaults.navigable) === true,\n );\n\n /** The card never takes focus: the reader's focus stays on the link. */\n override readonly resolvedAutoFocus = computed(() => false);\n /** A card the keyboard cannot enter is not a dialog nobody is told about. */\n override readonly contentRole = computed<string>(() =>\n this.resolvedNavigable() ? 'dialog' : 'presentation',\n );\n override readonly resolvedSideOffset = computed(() => this.sideOffset() ?? SIDE_OFFSET);\n\n /** Focus the family put back on the trigger must not reopen the card. */\n suppressFocusOpen = false;\n\n private timer: ReturnType<typeof setTimeout> | undefined;\n private intent: PointerIntentHandle | null = null;\n\n constructor() {\n super();\n const destroyRef = inject(DestroyRef);\n\n /**\n * The pointer on the card keeps it open, and leaving the card starts the\n * close. The listeners go on the layer — the padded box around the panel —\n * as soon as the popover has built it.\n */\n effect((onCleanup) => {\n const panel = this.contentNode();\n if (panel === null) return;\n const layer = panel.parentElement ?? panel;\n const enter = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.cancelPending());\n };\n const leave = (event: Event) => {\n if ((event as PointerEvent).pointerType === 'touch') return;\n untracked(() => this.closeAfterDelay(event));\n };\n layer.addEventListener('pointerenter', enter);\n layer.addEventListener('pointerleave', leave);\n onCleanup(() => {\n layer.removeEventListener('pointerenter', enter);\n layer.removeEventListener('pointerleave', leave);\n });\n });\n\n destroyRef.onDestroy(() => this.cancelPending());\n }\n\n /** Asks to open or close. A close the keyboard caused holds the reopening back. */\n override toggle(next: boolean, reason: HoverCardOpenReason, source?: Event) {\n this.cancelPending();\n super.toggle(next, reason as PopoverOpenReason, source);\n if (!next && !this.isOpen() && (reason === 'escape' || reason === 'keyboard')) {\n this.suppressFocusOpen = true;\n }\n }\n\n /** Cancels a pending open or close, and the grace area. */\n cancelPending() {\n if (this.timer !== undefined) clearTimeout(this.timer);\n this.timer = undefined;\n this.intent?.destroy();\n this.intent = null;\n }\n\n /** Opens after `openDelay`, unless something cancels it first. */\n openAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(true, 'pointer', source), this.resolvedOpenDelay());\n }\n\n /** Closes after `closeDelay`, unless the pointer comes back first. */\n closeAfterDelay(source?: Event) {\n this.cancelPending();\n this.timer = setTimeout(() => this.toggle(false, 'pointer', source), this.resolvedCloseDelay());\n }\n\n /**\n * The grace area: the card stays while the pointer's path from `origin`\n * still points into the card, and closes once it does not — unless the\n * pointer turns out to be on the trigger or the card after all.\n */\n graceToward(origin: () => DOMRect | null, stillOver: () => boolean, source?: Event) {\n this.cancelPending();\n this.intent = createPointerIntent({\n origin,\n target: () => {\n const panel = this.contentNode();\n return (panel?.parentElement ?? panel)?.getBoundingClientRect() ?? null;\n },\n timeout: this.resolvedCloseDelay(),\n onSettled: () => {\n this.intent = null;\n if (stillOver()) return;\n this.toggle(false, 'pointer', source);\n },\n });\n }\n}\n","import { tabbables } from '@slotted/core/focus';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostAttributeToken,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { SlHoverCard } from './hover-card';\n\n/**\n * The link the card is about. It is the family's one part: the element painted\n * while the card shows, and the anchor the card is measured against — many\n * triggers may share one `slHoverCard`, and the one that starts an opening\n * registers itself.\n *\n * A component rather than a directive, as `slLink` and `slMenuItem` are,\n * because a component is what can carry `styleUrl`: this is where the family's\n * authored stylesheet enters an Angular application, and the trigger has to be\n * painted before any card has opened.\n *\n * The wiring — `aria-haspopup=\"dialog\"`, `aria-expanded`, `aria-controls` — is\n * written only when the card is navigable. A card the keyboard cannot enter is\n * not a popup the link has, and saying so would be a lie a screen reader\n * repeats.\n */\n@Component({\n selector: '[slHoverCardTrigger]',\n standalone: true,\n exportAs: 'slHoverCardTrigger',\n template: '<ng-content />',\n styleUrl: '../../../styles/src/hover-card/hover-card.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.data-ui]': 'ui',\n '[attr.data-part]': 'part',\n '[attr.data-open]': 'open() ? \"\" : null',\n '[attr.aria-haspopup]': 'card.resolvedNavigable() ? \"dialog\" : null',\n '[attr.aria-expanded]': 'card.resolvedNavigable() ? open() : null',\n '[attr.aria-controls]': 'card.resolvedNavigable() && open() ? card.contentId : null',\n '(pointerenter)': 'onPointerEnter($event)',\n '(pointerleave)': 'onPointerLeave($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(click)': 'onClick($event)',\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class SlHoverCardTrigger {\n protected readonly card = inject(SlHoverCard);\n private readonly element: HTMLElement = inject(ElementRef).nativeElement;\n\n /* A host that already carries an identity — `a[slLink]` cannot, since two\n components do not share an element, but a consumer's own part can — keeps\n it, as `menu-trigger.ts` records for two directives on one element. */\n private readonly writtenUi = inject(new HostAttributeToken('data-ui'), { optional: true });\n private readonly writtenPart = inject(new HostAttributeToken('data-part'), { optional: true });\n protected readonly ui = this.writtenUi ?? 'hover-card';\n protected readonly part = this.writtenPart ?? 'root';\n\n /** Whether this trigger is the one the open card hangs from. */\n protected readonly anchors = computed(() => this.card.triggerNode() === this.element);\n protected readonly open = computed(() => this.card.isOpen() && this.anchors());\n\n private tapped = false;\n\n constructor() {\n /* The first trigger to mount is the anchor until another takes it. */\n afterNextRender(() => {\n if (this.card.triggerNode() === null) this.card.triggerNode.set(this.element);\n });\n }\n\n private claim() {\n if (this.card.triggerNode() !== this.element) this.card.triggerNode.set(this.element);\n }\n\n private layer(): HTMLElement | null {\n const panel = this.card.contentNode();\n return panel?.parentElement ?? panel;\n }\n\n protected onPointerEnter(source: Event) {\n const event = source as PointerEvent;\n if (this.card.disabled() || event.pointerType === 'touch') return;\n this.claim();\n if (this.card.isOpen() && this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.openAfterDelay(event);\n }\n\n /**\n * Leaving the trigger with the card open starts the grace: the card stays\n * while the pointer's own path still points into it, and closes after\n * `closeDelay` once the pointer has parked somewhere else. Leaving with an\n * open still pending cancels the open.\n */\n protected onPointerLeave(source: Event) {\n const event = source as PointerEvent;\n if (event.pointerType === 'touch') return;\n if (!this.card.isOpen() || !this.anchors()) {\n this.card.cancelPending();\n return;\n }\n this.card.graceToward(\n () => this.element.getBoundingClientRect(),\n () => this.element.matches(':hover') || (this.layer()?.matches(':hover') ?? false),\n event,\n );\n }\n\n /**\n * `:focus-visible` rather than every focus: a press that focuses a link is a\n * navigation, not a request for its preview — and focus the family itself\n * put back after Escape or a focus guard must not reopen the card.\n */\n protected onFocus(event: Event) {\n if (this.card.disabled()) return;\n if (this.card.suppressFocusOpen) return;\n if (!this.element.matches(':focus-visible')) return;\n this.claim();\n this.card.toggle(true, 'keyboard', event);\n }\n\n protected onBlur(source: Event) {\n const event = source as FocusEvent;\n this.card.suppressFocusOpen = false;\n if (!this.card.isOpen() || !this.anchors()) return;\n const next = event.relatedTarget;\n if (next instanceof Node && this.layer()?.contains(next)) return;\n this.card.toggle(false, 'blur', event);\n }\n\n /**\n * `Tab` on the open trigger enters a navigable card, which lives at the end\n * of the document and would otherwise never be reached. The popover's focus\n * guards bring focus back out past either end.\n */\n protected onKeyDown(source: Event) {\n const event = source as KeyboardEvent;\n if (!this.card.resolvedNavigable() || !this.card.isOpen() || !this.anchors()) return;\n if (event.key !== 'Tab' || event.shiftKey) return;\n const panel = this.card.contentNode();\n if (panel === null) return;\n const [first] = tabbables(panel);\n if (first === undefined) return;\n event.preventDefault();\n first.focus();\n }\n\n /**\n * There is no hover on a coarse pointer. A tap on a closed trigger opens the\n * card and does not follow the link; a tap on an open one follows it.\n */\n protected onPointerDown(source: Event) {\n this.tapped = (source as PointerEvent).pointerType === 'touch';\n }\n\n protected onClick(event: Event) {\n if (!this.tapped) return;\n this.tapped = false;\n if (this.card.disabled() || (this.card.isOpen() && this.anchors())) return;\n event.preventDefault();\n this.claim();\n this.card.toggle(true, 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { signal, computed, InjectionToken, inject, isSignal } from '@angular/core';
2
+ import { BASE_LOCALE, createTranslator } from '@slotted/core/i18n';
3
+
4
+ function rootI18n() {
5
+ const locale = signal(BASE_LOCALE).asReadonly();
6
+ const catalogs = signal({}).asReadonly();
7
+ const resolve = signal(undefined).asReadonly();
8
+ const translator = computed(() => createTranslator({ locale: locale() }), /* @ts-ignore */
9
+ ...(ngDevMode ? [{ debugName: "translator" }] : /* istanbul ignore next */ []));
10
+ return { locale, catalogs, resolve, translator };
11
+ }
12
+ const SL_I18N = new InjectionToken('slotted i18n', {
13
+ providedIn: 'root',
14
+ factory: rootI18n,
15
+ });
16
+ /**
17
+ * The language of everything the library writes under this injector. In
18
+ * `app.config.ts` it serves the application; in a component's `providers` it
19
+ * gives that subtree its own locale and keeps the catalogs and the `resolve`
20
+ * of the injector above. A factory runs in an injection context, so it can
21
+ * read the locale from an application service.
22
+ */
23
+ function provideSlotted(config) {
24
+ return {
25
+ provide: SL_I18N,
26
+ useFactory: () => {
27
+ const outer = inject(SL_I18N, { skipSelf: true, optional: true }) ?? rootI18n();
28
+ const own = typeof config === 'function' ? config() : config;
29
+ const requested = own.locale;
30
+ const locale = isSignal(requested)
31
+ ? requested
32
+ : requested === undefined
33
+ ? outer.locale
34
+ : signal(requested).asReadonly();
35
+ const ownCatalogs = own.catalogs;
36
+ const catalogs = computed(() => {
37
+ const mine = isSignal(ownCatalogs) ? ownCatalogs() : ownCatalogs;
38
+ return mine === undefined ? outer.catalogs() : { ...outer.catalogs(), ...mine };
39
+ }, /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "catalogs" }] : /* istanbul ignore next */ []));
41
+ const resolve = computed(() => own.resolve ?? outer.resolve(), /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "resolve" }] : /* istanbul ignore next */ []));
43
+ const translator = computed(() => createTranslator({ locale: locale(), catalogs: catalogs(), resolve: resolve() }), /* @ts-ignore */
44
+ ...(ngDevMode ? [{ debugName: "translator" }] : /* istanbul ignore next */ []));
45
+ return { locale, catalogs, resolve, translator };
46
+ },
47
+ };
48
+ }
49
+ /** The locale this injector formats numbers and dates in; `en-US` with no provider. */
50
+ function injectLocale() {
51
+ return inject(SL_I18N).locale;
52
+ }
53
+ /** The translator in force at this injector. */
54
+ function injectTranslator() {
55
+ return inject(SL_I18N).translator;
56
+ }
57
+ /**
58
+ * A family's messages in the language in force, an instance's `messages`
59
+ * input laid over the catalog key by key. The function reads the locale on
60
+ * every call, so a template that calls it follows a change of language
61
+ * without the component being created again.
62
+ */
63
+ function injectMessages(family, override) {
64
+ const translator = inject(SL_I18N).translator;
65
+ const messages = computed(() => translator().family(family, override?.()), /* @ts-ignore */
66
+ ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
67
+ return ((key, slots) => messages()(key, slots));
68
+ }
69
+
70
+ /**
71
+ * Generated bundle index. Do not edit.
72
+ */
73
+
74
+ export { SL_I18N, injectLocale, injectMessages, injectTranslator, provideSlotted };
75
+ //# sourceMappingURL=slotted-angular-i18n.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slotted-angular-i18n.mjs","sources":["../../i18n/src/i18n.ts","../../i18n/src/slotted-angular-i18n.ts"],"sourcesContent":["import {\n computed,\n inject,\n InjectionToken,\n isSignal,\n signal,\n type Provider,\n type Signal,\n} from '@angular/core';\nimport {\n BASE_LOCALE,\n createTranslator,\n type FamilyTranslator,\n type MessageFamily,\n type PartialCatalog,\n type PartialMessages,\n type SlottedMessages,\n type Translator,\n type TranslatorOptions,\n} from '@slotted/core/i18n';\n\ntype Resolve = TranslatorOptions<SlottedMessages>['resolve'];\n\n/** The language in force at one injector: the locale, the catalogs, and the translator over them. */\nexport interface SlottedI18n {\n readonly locale: Signal<string>;\n readonly catalogs: Signal<Readonly<Record<string, PartialCatalog>>>;\n readonly resolve: Signal<Resolve>;\n readonly translator: Signal<Translator<SlottedMessages>>;\n}\n\nfunction rootI18n(): SlottedI18n {\n const locale = signal(BASE_LOCALE).asReadonly();\n const catalogs = signal<Readonly<Record<string, PartialCatalog>>>({}).asReadonly();\n const resolve = signal<Resolve>(undefined).asReadonly();\n const translator = computed(() => createTranslator({ locale: locale() }));\n return { locale, catalogs, resolve, translator };\n}\n\nexport const SL_I18N = new InjectionToken<SlottedI18n>('slotted i18n', {\n providedIn: 'root',\n factory: rootI18n,\n});\n\nexport interface SlottedConfig {\n /** The locale the subtree speaks and formats in, BCP 47. A signal changes it in place. */\n readonly locale?: string | Signal<string> | undefined;\n /**\n * Catalogs by locale, laid over those of an enclosing provider. A signal lets\n * a locale imported on demand arrive after bootstrap: set it, then the locale.\n */\n readonly catalogs?:\n | Readonly<Record<string, PartialCatalog>>\n | Signal<Readonly<Record<string, PartialCatalog>>>\n | undefined;\n /** The application's own i18n, asked before any catalog. */\n readonly resolve?: Resolve;\n}\n\n/**\n * The language of everything the library writes under this injector. In\n * `app.config.ts` it serves the application; in a component's `providers` it\n * gives that subtree its own locale and keeps the catalogs and the `resolve`\n * of the injector above. A factory runs in an injection context, so it can\n * read the locale from an application service.\n */\nexport function provideSlotted(config: SlottedConfig | (() => SlottedConfig)): Provider {\n return {\n provide: SL_I18N,\n useFactory: (): SlottedI18n => {\n const outer = inject(SL_I18N, { skipSelf: true, optional: true }) ?? rootI18n();\n const own = typeof config === 'function' ? config() : config;\n const requested = own.locale;\n const locale = isSignal(requested)\n ? requested\n : requested === undefined\n ? outer.locale\n : signal(requested).asReadonly();\n const ownCatalogs = own.catalogs;\n const catalogs = computed(() => {\n const mine = isSignal(ownCatalogs) ? ownCatalogs() : ownCatalogs;\n return mine === undefined ? outer.catalogs() : { ...outer.catalogs(), ...mine };\n });\n const resolve = computed(() => own.resolve ?? outer.resolve());\n const translator = computed(() =>\n createTranslator({ locale: locale(), catalogs: catalogs(), resolve: resolve() }),\n );\n return { locale, catalogs, resolve, translator };\n },\n };\n}\n\n/** The locale this injector formats numbers and dates in; `en-US` with no provider. */\nexport function injectLocale(): Signal<string> {\n return inject(SL_I18N).locale;\n}\n\n/** The translator in force at this injector. */\nexport function injectTranslator(): Signal<Translator<SlottedMessages>> {\n return inject(SL_I18N).translator;\n}\n\n/**\n * A family's messages in the language in force, an instance's `messages`\n * input laid over the catalog key by key. The function reads the locale on\n * every call, so a template that calls it follows a change of language\n * without the component being created again.\n */\nexport function injectMessages<F extends keyof SlottedMessages & string>(\n family: MessageFamily<F, SlottedMessages[F]>,\n override?: Signal<PartialMessages<SlottedMessages[F]> | undefined>,\n): FamilyTranslator<SlottedMessages[F]> {\n const translator = inject(SL_I18N).translator;\n const messages = computed(() => translator().family(family, override?.()));\n return ((key: string, slots?: Record<string, string | number>) =>\n (messages() as (key: string, slots?: Record<string, string | number>) => string)(\n key,\n slots,\n )) as FamilyTranslator<SlottedMessages[F]>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AA+BA,SAAS,QAAQ,GAAA;IACf,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAA2C,EAAE,CAAC,CAAC,UAAU,EAAE;IAClF,MAAM,OAAO,GAAG,MAAM,CAAU,SAAS,CAAC,CAAC,UAAU,EAAE;AACvD,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;mFAAC;IACzE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;AAClD;MAEa,OAAO,GAAG,IAAI,cAAc,CAAc,cAAc,EAAE;AACrE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,QAAQ;AAClB,CAAA;AAiBD;;;;;;AAMG;AACG,SAAU,cAAc,CAAC,MAA6C,EAAA;IAC1E,OAAO;AACL,QAAA,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,MAAkB;AAC5B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,QAAQ,EAAE;AAC/E,YAAA,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM;AAC5D,YAAA,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM;AAC5B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS;AAC/B,kBAAE;kBACA,SAAS,KAAK;sBACZ,KAAK,CAAC;sBACN,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ;AAChC,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC7B,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW;gBAChE,OAAO,IAAI,KAAK,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE;YACjF,CAAC;yFAAC;AACF,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;wFAAC;YAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;2FACjF;YACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;QAClD,CAAC;KACF;AACH;AAEA;SACgB,YAAY,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM;AAC/B;AAEA;SACgB,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU;AACnC;AAEA;;;;;AAKG;AACG,SAAU,cAAc,CAC5B,MAA4C,EAC5C,QAAkE,EAAA;IAElE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU;AAC7C,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC;iFAAC;AAC1E,IAAA,QAAQ,CAAC,GAAW,EAAE,KAAuC,KAC1D,QAAQ,EAAuE,CAC9E,GAAG,EACH,KAAK,CACN;AACL;;ACvHA;;AAEG;;"}