@semantic-components/ui-lab 0.63.0 → 0.65.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 (780) hide show
  1. package/fesm2022/semantic-components-ui-lab.mjs +36276 -0
  2. package/fesm2022/semantic-components-ui-lab.mjs.map +1 -0
  3. package/package.json +17 -3
  4. package/types/semantic-components-ui-lab.d.ts +7454 -0
  5. package/eslint.config.mjs +0 -39
  6. package/ng-package.json +0 -7
  7. package/project.json +0 -28
  8. package/src/index.ts +0 -2
  9. package/src/lib/components/accordion/README.md +0 -269
  10. package/src/lib/components/accordion/TODO.md +0 -58
  11. package/src/lib/components/accordion/accordion-content.ts +0 -31
  12. package/src/lib/components/accordion/accordion-header.ts +0 -15
  13. package/src/lib/components/accordion/accordion-item.ts +0 -17
  14. package/src/lib/components/accordion/accordion-panel.ts +0 -42
  15. package/src/lib/components/accordion/accordion-trigger-icon.ts +0 -27
  16. package/src/lib/components/accordion/accordion-trigger.ts +0 -46
  17. package/src/lib/components/accordion/accordion.ts +0 -35
  18. package/src/lib/components/accordion/index.ts +0 -7
  19. package/src/lib/components/alert/README.md +0 -117
  20. package/src/lib/components/alert/alert-action.ts +0 -17
  21. package/src/lib/components/alert/alert-description.ts +0 -20
  22. package/src/lib/components/alert/alert-title.ts +0 -20
  23. package/src/lib/components/alert/alert.ts +0 -39
  24. package/src/lib/components/alert/index.ts +0 -4
  25. package/src/lib/components/alert-dialog/ARCHITECTURE.md +0 -808
  26. package/src/lib/components/alert-dialog/README.md +0 -215
  27. package/src/lib/components/alert-dialog/alert-dialog-action.ts +0 -32
  28. package/src/lib/components/alert-dialog/alert-dialog-cancel.ts +0 -32
  29. package/src/lib/components/alert-dialog/alert-dialog-description.ts +0 -24
  30. package/src/lib/components/alert-dialog/alert-dialog-footer.ts +0 -21
  31. package/src/lib/components/alert-dialog/alert-dialog-header.ts +0 -23
  32. package/src/lib/components/alert-dialog/alert-dialog-media.ts +0 -22
  33. package/src/lib/components/alert-dialog/alert-dialog-portal.ts +0 -8
  34. package/src/lib/components/alert-dialog/alert-dialog-provider.ts +0 -135
  35. package/src/lib/components/alert-dialog/alert-dialog-title.ts +0 -20
  36. package/src/lib/components/alert-dialog/alert-dialog-trigger.ts +0 -25
  37. package/src/lib/components/alert-dialog/alert-dialog.ts +0 -77
  38. package/src/lib/components/alert-dialog/index.ts +0 -11
  39. package/src/lib/components/animated-counter/README.md +0 -102
  40. package/src/lib/components/animated-counter/animated-counter-types.ts +0 -23
  41. package/src/lib/components/animated-counter/animated-counter.ts +0 -143
  42. package/src/lib/components/animated-counter/index.ts +0 -6
  43. package/src/lib/components/aspect-ratio/README.md +0 -97
  44. package/src/lib/components/aspect-ratio/aspect-ratio.ts +0 -19
  45. package/src/lib/components/aspect-ratio/index.ts +0 -1
  46. package/src/lib/components/audio-player/README.md +0 -252
  47. package/src/lib/components/audio-player/audio-player-audio.ts +0 -32
  48. package/src/lib/components/audio-player/audio-player-cover.ts +0 -39
  49. package/src/lib/components/audio-player/audio-player-info.ts +0 -40
  50. package/src/lib/components/audio-player/audio-player-next.ts +0 -40
  51. package/src/lib/components/audio-player/audio-player-play-button.ts +0 -39
  52. package/src/lib/components/audio-player/audio-player-previous.ts +0 -40
  53. package/src/lib/components/audio-player/audio-player-progress.ts +0 -77
  54. package/src/lib/components/audio-player/audio-player-repeat.ts +0 -38
  55. package/src/lib/components/audio-player/audio-player-shuffle.ts +0 -39
  56. package/src/lib/components/audio-player/audio-player-volume.ts +0 -91
  57. package/src/lib/components/audio-player/audio-player.ts +0 -246
  58. package/src/lib/components/audio-player/index.ts +0 -11
  59. package/src/lib/components/avatar/README.md +0 -117
  60. package/src/lib/components/avatar/avatar-fallback.ts +0 -25
  61. package/src/lib/components/avatar/avatar-image.ts +0 -39
  62. package/src/lib/components/avatar/avatar.ts +0 -25
  63. package/src/lib/components/avatar/index.ts +0 -3
  64. package/src/lib/components/avatar-group/README.md +0 -94
  65. package/src/lib/components/avatar-group/avatar-group-types.ts +0 -9
  66. package/src/lib/components/avatar-group/avatar-group.ts +0 -181
  67. package/src/lib/components/avatar-group/index.ts +0 -2
  68. package/src/lib/components/backdrop/backdrop.ts +0 -75
  69. package/src/lib/components/backdrop/index.ts +0 -1
  70. package/src/lib/components/badge/README.md +0 -66
  71. package/src/lib/components/badge/badge.ts +0 -43
  72. package/src/lib/components/badge/index.ts +0 -1
  73. package/src/lib/components/barcode-scanner/README.md +0 -144
  74. package/src/lib/components/barcode-scanner/barcode-scanner-simple.ts +0 -36
  75. package/src/lib/components/barcode-scanner/barcode-scanner.ts +0 -460
  76. package/src/lib/components/barcode-scanner/index.ts +0 -3
  77. package/src/lib/components/breadcrumb/README.md +0 -80
  78. package/src/lib/components/breadcrumb/breadcrumb-ellipsis.ts +0 -46
  79. package/src/lib/components/breadcrumb/breadcrumb-item.ts +0 -17
  80. package/src/lib/components/breadcrumb/breadcrumb-link.ts +0 -17
  81. package/src/lib/components/breadcrumb/breadcrumb-list.ts +0 -20
  82. package/src/lib/components/breadcrumb/breadcrumb-page.ts +0 -20
  83. package/src/lib/components/breadcrumb/breadcrumb-separator.ts +0 -45
  84. package/src/lib/components/breadcrumb/breadcrumb.ts +0 -10
  85. package/src/lib/components/breadcrumb/index.ts +0 -7
  86. package/src/lib/components/button-group/button-group-separator.ts +0 -26
  87. package/src/lib/components/button-group/button-group-text.ts +0 -20
  88. package/src/lib/components/button-group/button-group.ts +0 -43
  89. package/src/lib/components/button-group/index.ts +0 -10
  90. package/src/lib/components/calendar/CALENDAR-VIEWS.md +0 -443
  91. package/src/lib/components/calendar/README.md +0 -227
  92. package/src/lib/components/calendar/calendar-day-view.ts +0 -310
  93. package/src/lib/components/calendar/calendar-header.ts +0 -58
  94. package/src/lib/components/calendar/calendar-month-view.ts +0 -176
  95. package/src/lib/components/calendar/calendar-year-view.ts +0 -167
  96. package/src/lib/components/calendar/calendar.ts +0 -273
  97. package/src/lib/components/calendar/index.ts +0 -1
  98. package/src/lib/components/card/README.md +0 -86
  99. package/src/lib/components/card/card-content.ts +0 -15
  100. package/src/lib/components/card/card-description.ts +0 -17
  101. package/src/lib/components/card/card-footer.ts +0 -17
  102. package/src/lib/components/card/card-header.ts +0 -17
  103. package/src/lib/components/card/card-title.ts +0 -17
  104. package/src/lib/components/card/card.ts +0 -20
  105. package/src/lib/components/card/index.ts +0 -6
  106. package/src/lib/components/chart/README.md +0 -220
  107. package/src/lib/components/chart/bar-chart.ts +0 -186
  108. package/src/lib/components/chart/chart-container.ts +0 -33
  109. package/src/lib/components/chart/chart-legend.ts +0 -42
  110. package/src/lib/components/chart/chart-tooltip.ts +0 -42
  111. package/src/lib/components/chart/chart-types.ts +0 -21
  112. package/src/lib/components/chart/donut-chart.ts +0 -35
  113. package/src/lib/components/chart/index.ts +0 -9
  114. package/src/lib/components/chart/line-chart.ts +0 -223
  115. package/src/lib/components/chart/pie-chart.ts +0 -186
  116. package/src/lib/components/checkbox/README.md +0 -293
  117. package/src/lib/components/checkbox/checkbox-field.ts +0 -78
  118. package/src/lib/components/checkbox/checkbox-indicator.ts +0 -27
  119. package/src/lib/components/checkbox/checkbox-types.ts +0 -15
  120. package/src/lib/components/checkbox/checkbox.ts +0 -74
  121. package/src/lib/components/checkbox/index.ts +0 -5
  122. package/src/lib/components/checkbox/visual-checkbox.ts +0 -47
  123. package/src/lib/components/collapsible/README.md +0 -191
  124. package/src/lib/components/collapsible/collapsible-content.ts +0 -28
  125. package/src/lib/components/collapsible/collapsible-panel.ts +0 -42
  126. package/src/lib/components/collapsible/collapsible-trigger.ts +0 -48
  127. package/src/lib/components/collapsible/collapsible.ts +0 -33
  128. package/src/lib/components/collapsible/index.ts +0 -4
  129. package/src/lib/components/color-picker/README.md +0 -218
  130. package/src/lib/components/color-picker/color-picker-area.ts +0 -107
  131. package/src/lib/components/color-picker/color-picker-eyedropper.ts +0 -76
  132. package/src/lib/components/color-picker/color-picker-hue.ts +0 -92
  133. package/src/lib/components/color-picker/color-picker-input.ts +0 -70
  134. package/src/lib/components/color-picker/color-picker-preview.ts +0 -21
  135. package/src/lib/components/color-picker/color-picker-swatches.ts +0 -60
  136. package/src/lib/components/color-picker/color-picker.ts +0 -227
  137. package/src/lib/components/color-picker/index.ts +0 -8
  138. package/src/lib/components/combobox/README.md +0 -166
  139. package/src/lib/components/combobox/combobox-empty.ts +0 -17
  140. package/src/lib/components/combobox/combobox-icon.ts +0 -20
  141. package/src/lib/components/combobox/combobox-input.ts +0 -32
  142. package/src/lib/components/combobox/combobox-item-indicator.ts +0 -20
  143. package/src/lib/components/combobox/combobox-item.ts +0 -49
  144. package/src/lib/components/combobox/combobox-list.ts +0 -40
  145. package/src/lib/components/combobox/combobox-portal.ts +0 -111
  146. package/src/lib/components/combobox/combobox-trigger.ts +0 -20
  147. package/src/lib/components/combobox/combobox.ts +0 -42
  148. package/src/lib/components/combobox/index.ts +0 -9
  149. package/src/lib/components/command/README.md +0 -161
  150. package/src/lib/components/command/command-empty.ts +0 -17
  151. package/src/lib/components/command/command-group-heading.ts +0 -20
  152. package/src/lib/components/command/command-group.ts +0 -23
  153. package/src/lib/components/command/command-input.ts +0 -67
  154. package/src/lib/components/command/command-item.ts +0 -61
  155. package/src/lib/components/command/command-list.ts +0 -19
  156. package/src/lib/components/command/command-separator.ts +0 -18
  157. package/src/lib/components/command/command-shortcut.ts +0 -20
  158. package/src/lib/components/command/command.ts +0 -35
  159. package/src/lib/components/command/index.ts +0 -9
  160. package/src/lib/components/confetti/README.md +0 -103
  161. package/src/lib/components/confetti/confetti-types.ts +0 -47
  162. package/src/lib/components/confetti/confetti.ts +0 -220
  163. package/src/lib/components/confetti/index.ts +0 -7
  164. package/src/lib/components/context-menu/README.md +0 -149
  165. package/src/lib/components/context-menu/context-menu-content.ts +0 -46
  166. package/src/lib/components/context-menu/context-menu-item.ts +0 -44
  167. package/src/lib/components/context-menu/context-menu-label.ts +0 -22
  168. package/src/lib/components/context-menu/context-menu-separator.ts +0 -18
  169. package/src/lib/components/context-menu/context-menu-shortcut.ts +0 -20
  170. package/src/lib/components/context-menu/context-menu-sub-content.ts +0 -83
  171. package/src/lib/components/context-menu/context-menu-sub-trigger.ts +0 -91
  172. package/src/lib/components/context-menu/context-menu-sub.ts +0 -38
  173. package/src/lib/components/context-menu/context-menu-trigger.ts +0 -40
  174. package/src/lib/components/context-menu/context-menu.ts +0 -106
  175. package/src/lib/components/context-menu/index.ts +0 -10
  176. package/src/lib/components/copy-button/README.md +0 -211
  177. package/src/lib/components/copy-button/copy-button-with-text.ts +0 -53
  178. package/src/lib/components/copy-button/copy-button.ts +0 -137
  179. package/src/lib/components/copy-button/copy-code.ts +0 -42
  180. package/src/lib/components/copy-button/copy-input.ts +0 -54
  181. package/src/lib/components/copy-button/index.ts +0 -4
  182. package/src/lib/components/countdown/README.md +0 -168
  183. package/src/lib/components/countdown/countdown-simple.ts +0 -118
  184. package/src/lib/components/countdown/countdown.ts +0 -235
  185. package/src/lib/components/countdown/index.ts +0 -3
  186. package/src/lib/components/data-table/README.md +0 -330
  187. package/src/lib/components/data-table/data-table-body.ts +0 -28
  188. package/src/lib/components/data-table/data-table-cell.ts +0 -20
  189. package/src/lib/components/data-table/data-table-column-toggle.ts +0 -96
  190. package/src/lib/components/data-table/data-table-filter.ts +0 -45
  191. package/src/lib/components/data-table/data-table-head.ts +0 -96
  192. package/src/lib/components/data-table/data-table-header.ts +0 -28
  193. package/src/lib/components/data-table/data-table-pagination.ts +0 -152
  194. package/src/lib/components/data-table/data-table-row.ts +0 -23
  195. package/src/lib/components/data-table/data-table.ts +0 -181
  196. package/src/lib/components/data-table/index.ts +0 -15
  197. package/src/lib/components/date-picker/README.md +0 -101
  198. package/src/lib/components/date-picker/date-picker.ts +0 -175
  199. package/src/lib/components/date-picker/index.ts +0 -1
  200. package/src/lib/components/date-range-picker/README.md +0 -148
  201. package/src/lib/components/date-range-picker/date-range-picker.ts +0 -348
  202. package/src/lib/components/date-range-picker/index.ts +0 -3
  203. package/src/lib/components/dialog/ARCHITECTURE.md +0 -792
  204. package/src/lib/components/dialog/README.md +0 -208
  205. package/src/lib/components/dialog/dialog-close.ts +0 -33
  206. package/src/lib/components/dialog/dialog-description.ts +0 -23
  207. package/src/lib/components/dialog/dialog-footer.ts +0 -20
  208. package/src/lib/components/dialog/dialog-header.ts +0 -17
  209. package/src/lib/components/dialog/dialog-portal.ts +0 -8
  210. package/src/lib/components/dialog/dialog-provider.ts +0 -175
  211. package/src/lib/components/dialog/dialog-title.ts +0 -20
  212. package/src/lib/components/dialog/dialog-trigger.ts +0 -25
  213. package/src/lib/components/dialog/dialog.ts +0 -79
  214. package/src/lib/components/dialog/index.ts +0 -9
  215. package/src/lib/components/diff-viewer/README.md +0 -172
  216. package/src/lib/components/diff-viewer/diff-algorithm.ts +0 -337
  217. package/src/lib/components/diff-viewer/diff-viewer.ts +0 -369
  218. package/src/lib/components/diff-viewer/index.ts +0 -8
  219. package/src/lib/components/dock/README.md +0 -204
  220. package/src/lib/components/dock/dock-badge.ts +0 -36
  221. package/src/lib/components/dock/dock-item.ts +0 -76
  222. package/src/lib/components/dock/dock-items.ts +0 -31
  223. package/src/lib/components/dock/dock-types.ts +0 -25
  224. package/src/lib/components/dock/dock.ts +0 -101
  225. package/src/lib/components/dock/index.ts +0 -11
  226. package/src/lib/components/drawer/ARCHITECTURE.md +0 -972
  227. package/src/lib/components/drawer/README.md +0 -205
  228. package/src/lib/components/drawer/drawer-close.ts +0 -18
  229. package/src/lib/components/drawer/drawer-description.ts +0 -17
  230. package/src/lib/components/drawer/drawer-footer.ts +0 -17
  231. package/src/lib/components/drawer/drawer-handle.ts +0 -17
  232. package/src/lib/components/drawer/drawer-header.ts +0 -17
  233. package/src/lib/components/drawer/drawer-portal.ts +0 -8
  234. package/src/lib/components/drawer/drawer-provider.ts +0 -142
  235. package/src/lib/components/drawer/drawer-title.ts +0 -17
  236. package/src/lib/components/drawer/drawer-trigger.ts +0 -24
  237. package/src/lib/components/drawer/drawer.ts +0 -77
  238. package/src/lib/components/drawer/index.ts +0 -11
  239. package/src/lib/components/emoji-picker/README.md +0 -151
  240. package/src/lib/components/emoji-picker/emoji-picker-trigger.ts +0 -48
  241. package/src/lib/components/emoji-picker/emoji-picker.ts +0 -666
  242. package/src/lib/components/emoji-picker/index.ts +0 -3
  243. package/src/lib/components/empty/README.md +0 -72
  244. package/src/lib/components/empty/empty-content.ts +0 -20
  245. package/src/lib/components/empty/empty-description.ts +0 -20
  246. package/src/lib/components/empty/empty-header.ts +0 -17
  247. package/src/lib/components/empty/empty-media.ts +0 -29
  248. package/src/lib/components/empty/empty-title.ts +0 -17
  249. package/src/lib/components/empty/empty.ts +0 -20
  250. package/src/lib/components/empty/index.ts +0 -6
  251. package/src/lib/components/field/README.md +0 -326
  252. package/src/lib/components/field/field-content.ts +0 -20
  253. package/src/lib/components/field/field-description.ts +0 -22
  254. package/src/lib/components/field/field-error.ts +0 -18
  255. package/src/lib/components/field/field-group.ts +0 -20
  256. package/src/lib/components/field/field-legend.ts +0 -24
  257. package/src/lib/components/field/field-separator.ts +0 -20
  258. package/src/lib/components/field/field-set.ts +0 -20
  259. package/src/lib/components/field/field-title.ts +0 -20
  260. package/src/lib/components/field/field.ts +0 -89
  261. package/src/lib/components/field/index.ts +0 -9
  262. package/src/lib/components/file-upload/README.md +0 -256
  263. package/src/lib/components/file-upload/file-upload-dropzone.ts +0 -100
  264. package/src/lib/components/file-upload/file-upload-item-delete.ts +0 -59
  265. package/src/lib/components/file-upload/file-upload-item-name.ts +0 -17
  266. package/src/lib/components/file-upload/file-upload-item-preview.ts +0 -52
  267. package/src/lib/components/file-upload/file-upload-item-progress.ts +0 -33
  268. package/src/lib/components/file-upload/file-upload-item-size.ts +0 -39
  269. package/src/lib/components/file-upload/file-upload-item.ts +0 -35
  270. package/src/lib/components/file-upload/file-upload-list.ts +0 -17
  271. package/src/lib/components/file-upload/file-upload-trigger.ts +0 -70
  272. package/src/lib/components/file-upload/file-upload.ts +0 -156
  273. package/src/lib/components/file-upload/index.ts +0 -11
  274. package/src/lib/components/hover-card/ARCHITECTURE.md +0 -341
  275. package/src/lib/components/hover-card/README.md +0 -118
  276. package/src/lib/components/hover-card/hover-card-portal.ts +0 -142
  277. package/src/lib/components/hover-card/hover-card-provider.ts +0 -85
  278. package/src/lib/components/hover-card/hover-card-trigger.ts +0 -75
  279. package/src/lib/components/hover-card/hover-card.ts +0 -97
  280. package/src/lib/components/hover-card/index.ts +0 -5
  281. package/src/lib/components/image-annotator/README.md +0 -132
  282. package/src/lib/components/image-annotator/image-annotator-types.ts +0 -29
  283. package/src/lib/components/image-annotator/image-annotator.ts +0 -549
  284. package/src/lib/components/image-annotator/index.ts +0 -7
  285. package/src/lib/components/image-compare/README.md +0 -239
  286. package/src/lib/components/image-compare/image-compare-after.ts +0 -39
  287. package/src/lib/components/image-compare/image-compare-before.ts +0 -30
  288. package/src/lib/components/image-compare/image-compare-container.ts +0 -119
  289. package/src/lib/components/image-compare/image-compare-label.ts +0 -34
  290. package/src/lib/components/image-compare/image-compare-slider.ts +0 -103
  291. package/src/lib/components/image-compare/image-compare.ts +0 -79
  292. package/src/lib/components/image-compare/index.ts +0 -10
  293. package/src/lib/components/image-cropper/README.md +0 -322
  294. package/src/lib/components/image-cropper/image-cropper-aspect-ratio.ts +0 -65
  295. package/src/lib/components/image-cropper/image-cropper-container.ts +0 -294
  296. package/src/lib/components/image-cropper/image-cropper-controls.ts +0 -95
  297. package/src/lib/components/image-cropper/image-cropper-preview.ts +0 -66
  298. package/src/lib/components/image-cropper/image-cropper.ts +0 -459
  299. package/src/lib/components/image-cropper/index.ts +0 -10
  300. package/src/lib/components/index.ts +0 -106
  301. package/src/lib/components/infinite-scroll/README.md +0 -134
  302. package/src/lib/components/infinite-scroll/index.ts +0 -4
  303. package/src/lib/components/infinite-scroll/infinite-scroll-end.ts +0 -9
  304. package/src/lib/components/infinite-scroll/infinite-scroll-loader.ts +0 -9
  305. package/src/lib/components/infinite-scroll/infinite-scroll.ts +0 -199
  306. package/src/lib/components/infinite-scroll/virtual-scroll.ts +0 -83
  307. package/src/lib/components/input/README.md +0 -93
  308. package/src/lib/components/input/index.ts +0 -1
  309. package/src/lib/components/input/input.ts +0 -41
  310. package/src/lib/components/input-group/README.md +0 -60
  311. package/src/lib/components/input-group/index.ts +0 -6
  312. package/src/lib/components/input-group/input-group-addon.ts +0 -46
  313. package/src/lib/components/input-group/input-group-button.ts +0 -49
  314. package/src/lib/components/input-group/input-group-input.ts +0 -20
  315. package/src/lib/components/input-group/input-group-text.ts +0 -20
  316. package/src/lib/components/input-group/input-group-textarea.ts +0 -20
  317. package/src/lib/components/input-group/input-group.ts +0 -21
  318. package/src/lib/components/kanban-board/README.md +0 -238
  319. package/src/lib/components/kanban-board/index.ts +0 -12
  320. package/src/lib/components/kanban-board/kanban-board.ts +0 -281
  321. package/src/lib/components/kanban-board/kanban-card.ts +0 -241
  322. package/src/lib/components/kanban-board/kanban-column.ts +0 -371
  323. package/src/lib/components/kanban-board/kanban-types.ts +0 -52
  324. package/src/lib/components/kbd/README.md +0 -58
  325. package/src/lib/components/kbd/index.ts +0 -2
  326. package/src/lib/components/kbd/kbd-group.ts +0 -17
  327. package/src/lib/components/kbd/kbd.ts +0 -20
  328. package/src/lib/components/label/README.md +0 -90
  329. package/src/lib/components/label/index.ts +0 -1
  330. package/src/lib/components/label/label.ts +0 -32
  331. package/src/lib/components/language-switcher/index.ts +0 -4
  332. package/src/lib/components/language-switcher/language-button.ts +0 -98
  333. package/src/lib/components/language-switcher/language-select.ts +0 -65
  334. package/src/lib/components/language-switcher/language-toggle.ts +0 -98
  335. package/src/lib/components/language-switcher/language.service.ts +0 -239
  336. package/src/lib/components/language-switcher/styles.ts +0 -16
  337. package/src/lib/components/lightbox/README.md +0 -387
  338. package/src/lib/components/lightbox/index.ts +0 -9
  339. package/src/lib/components/lightbox/lightbox-container.ts +0 -338
  340. package/src/lib/components/lightbox/lightbox-gallery.ts +0 -81
  341. package/src/lib/components/lightbox/lightbox-trigger.ts +0 -19
  342. package/src/lib/components/lightbox/lightbox.ts +0 -210
  343. package/src/lib/components/lightbox/lightbox.types.ts +0 -7
  344. package/src/lib/components/marquee/README.md +0 -183
  345. package/src/lib/components/marquee/auto-marquee.ts +0 -73
  346. package/src/lib/components/marquee/index.ts +0 -6
  347. package/src/lib/components/marquee/marquee-clone.ts +0 -17
  348. package/src/lib/components/marquee/marquee-fade.ts +0 -53
  349. package/src/lib/components/marquee/marquee-item.ts +0 -17
  350. package/src/lib/components/marquee/marquee-text.ts +0 -80
  351. package/src/lib/components/marquee/marquee.ts +0 -96
  352. package/src/lib/components/masonry-grid/README.md +0 -204
  353. package/src/lib/components/masonry-grid/index.ts +0 -4
  354. package/src/lib/components/masonry-grid/masonry-grid.ts +0 -178
  355. package/src/lib/components/masonry-grid/masonry-item.ts +0 -66
  356. package/src/lib/components/masonry-grid/masonry-types.ts +0 -24
  357. package/src/lib/components/mention-input/README.md +0 -122
  358. package/src/lib/components/mention-input/index.ts +0 -2
  359. package/src/lib/components/mention-input/mention-input.ts +0 -279
  360. package/src/lib/components/menu/README.md +0 -176
  361. package/src/lib/components/menu/index.ts +0 -11
  362. package/src/lib/components/menu/menu-item.ts +0 -32
  363. package/src/lib/components/menu/menu-portal.ts +0 -53
  364. package/src/lib/components/menu/menu-provider.ts +0 -50
  365. package/src/lib/components/menu/menu-separator.ts +0 -19
  366. package/src/lib/components/menu/menu-sub-icon.ts +0 -18
  367. package/src/lib/components/menu/menu-sub-portal.ts +0 -53
  368. package/src/lib/components/menu/menu-sub-provider.ts +0 -52
  369. package/src/lib/components/menu/menu-sub-trigger.ts +0 -34
  370. package/src/lib/components/menu/menu-sub.ts +0 -41
  371. package/src/lib/components/menu/menu-trigger.ts +0 -27
  372. package/src/lib/components/menu/menu.ts +0 -41
  373. package/src/lib/components/multi-select/README.md +0 -155
  374. package/src/lib/components/multi-select/index.ts +0 -2
  375. package/src/lib/components/multi-select/multi-select.ts +0 -394
  376. package/src/lib/components/native-checkbox/README.md +0 -113
  377. package/src/lib/components/native-checkbox/index.ts +0 -1
  378. package/src/lib/components/native-checkbox/native-checkbox.ts +0 -116
  379. package/src/lib/components/navbar/ARCHITECTURE.md +0 -605
  380. package/src/lib/components/navbar/README.md +0 -246
  381. package/src/lib/components/navbar/index.ts +0 -9
  382. package/src/lib/components/navbar/navbar-actions.ts +0 -28
  383. package/src/lib/components/navbar/navbar-brand.ts +0 -24
  384. package/src/lib/components/navbar/navbar-group.ts +0 -28
  385. package/src/lib/components/navbar/navbar-mobile-link.ts +0 -28
  386. package/src/lib/components/navbar/navbar-mobile-menu.ts +0 -71
  387. package/src/lib/components/navbar/navbar-mobile-portal.ts +0 -118
  388. package/src/lib/components/navbar/navbar-mobile-trigger.ts +0 -51
  389. package/src/lib/components/navbar/navbar-provider.ts +0 -85
  390. package/src/lib/components/navbar/navbar.ts +0 -40
  391. package/src/lib/components/navigation-menu/README.md +0 -135
  392. package/src/lib/components/navigation-menu/index.ts +0 -8
  393. package/src/lib/components/navigation-menu/navigation-menu-content.ts +0 -80
  394. package/src/lib/components/navigation-menu/navigation-menu-indicator.ts +0 -35
  395. package/src/lib/components/navigation-menu/navigation-menu-item.ts +0 -88
  396. package/src/lib/components/navigation-menu/navigation-menu-link.ts +0 -29
  397. package/src/lib/components/navigation-menu/navigation-menu-list.ts +0 -20
  398. package/src/lib/components/navigation-menu/navigation-menu-trigger.ts +0 -52
  399. package/src/lib/components/navigation-menu/navigation-menu-viewport.ts +0 -35
  400. package/src/lib/components/navigation-menu/navigation-menu.ts +0 -39
  401. package/src/lib/components/notification-center/README.md +0 -365
  402. package/src/lib/components/notification-center/index.ts +0 -20
  403. package/src/lib/components/notification-center/notification-center-container.ts +0 -226
  404. package/src/lib/components/notification-center/notification-center.ts +0 -157
  405. package/src/lib/components/notification-center/notification-group.ts +0 -198
  406. package/src/lib/components/notification-center/notification-item.ts +0 -214
  407. package/src/lib/components/notification-center/notification-types.ts +0 -52
  408. package/src/lib/components/number-field/README.md +0 -369
  409. package/src/lib/components/number-field/index.ts +0 -6
  410. package/src/lib/components/number-field/number-field-decrement.ts +0 -57
  411. package/src/lib/components/number-field/number-field-increment.ts +0 -58
  412. package/src/lib/components/number-field/number-field-input-group.ts +0 -37
  413. package/src/lib/components/number-field/number-field-input.ts +0 -87
  414. package/src/lib/components/number-field/number-field-scrub-area.ts +0 -74
  415. package/src/lib/components/number-field/number-field.ts +0 -143
  416. package/src/lib/components/opt-field/index.ts +0 -7
  417. package/src/lib/components/opt-field/opt-field-separator.ts +0 -18
  418. package/src/lib/components/opt-field/opt-field-slot-caret.ts +0 -31
  419. package/src/lib/components/opt-field/opt-field-slot-char.ts +0 -19
  420. package/src/lib/components/opt-field/opt-field-slot-group.ts +0 -17
  421. package/src/lib/components/opt-field/opt-field-slot-input.ts +0 -60
  422. package/src/lib/components/opt-field/opt-field-slot.ts +0 -111
  423. package/src/lib/components/opt-field/opt-field.ts +0 -113
  424. package/src/lib/components/org-chart/README.md +0 -265
  425. package/src/lib/components/org-chart/index.ts +0 -8
  426. package/src/lib/components/org-chart/org-chart-node.ts +0 -253
  427. package/src/lib/components/org-chart/org-chart-types.ts +0 -22
  428. package/src/lib/components/org-chart/org-chart.ts +0 -67
  429. package/src/lib/components/pagination/ACCESSIBILITY_REVIEW.md +0 -530
  430. package/src/lib/components/pagination/KEYBOARD-NAVIGATION.md +0 -356
  431. package/src/lib/components/pagination/README.md +0 -359
  432. package/src/lib/components/pagination/REVIEW_SUMMARY.md +0 -55
  433. package/src/lib/components/pagination/SMART-PAGINATION.md +0 -345
  434. package/src/lib/components/pagination/index.ts +0 -11
  435. package/src/lib/components/pagination/pagination-ellipsis.ts +0 -32
  436. package/src/lib/components/pagination/pagination-first.ts +0 -75
  437. package/src/lib/components/pagination/pagination-item.ts +0 -15
  438. package/src/lib/components/pagination/pagination-last.ts +0 -77
  439. package/src/lib/components/pagination/pagination-link.ts +0 -70
  440. package/src/lib/components/pagination/pagination-list.ts +0 -17
  441. package/src/lib/components/pagination/pagination-next.ts +0 -78
  442. package/src/lib/components/pagination/pagination-page-size-select.ts +0 -44
  443. package/src/lib/components/pagination/pagination-previous.ts +0 -78
  444. package/src/lib/components/pagination/pagination.ts +0 -190
  445. package/src/lib/components/password-field/README.md +0 -247
  446. package/src/lib/components/password-field/index.ts +0 -7
  447. package/src/lib/components/password-field/password-field-input-group.ts +0 -32
  448. package/src/lib/components/password-field/password-field-input.ts +0 -55
  449. package/src/lib/components/password-field/password-field-requirements.ts +0 -90
  450. package/src/lib/components/password-field/password-field-strength-bar.ts +0 -64
  451. package/src/lib/components/password-field/password-field-strength.ts +0 -91
  452. package/src/lib/components/password-field/password-field-toggle.ts +0 -86
  453. package/src/lib/components/password-field/password-field.ts +0 -95
  454. package/src/lib/components/pdf-viewer/README.md +0 -221
  455. package/src/lib/components/pdf-viewer/index.ts +0 -47
  456. package/src/lib/components/pdf-viewer/pdf-viewer-container.ts +0 -54
  457. package/src/lib/components/pdf-viewer/pdf-viewer-content.ts +0 -60
  458. package/src/lib/components/pdf-viewer/pdf-viewer-download.ts +0 -34
  459. package/src/lib/components/pdf-viewer/pdf-viewer-empty.ts +0 -62
  460. package/src/lib/components/pdf-viewer/pdf-viewer-error.ts +0 -73
  461. package/src/lib/components/pdf-viewer/pdf-viewer-fullscreen.ts +0 -36
  462. package/src/lib/components/pdf-viewer/pdf-viewer-loading.ts +0 -44
  463. package/src/lib/components/pdf-viewer/pdf-viewer-nav.ts +0 -30
  464. package/src/lib/components/pdf-viewer/pdf-viewer-next-page.ts +0 -38
  465. package/src/lib/components/pdf-viewer/pdf-viewer-page-info.ts +0 -53
  466. package/src/lib/components/pdf-viewer/pdf-viewer-prev-page.ts +0 -38
  467. package/src/lib/components/pdf-viewer/pdf-viewer-print.ts +0 -34
  468. package/src/lib/components/pdf-viewer/pdf-viewer-retry.ts +0 -36
  469. package/src/lib/components/pdf-viewer/pdf-viewer-root.ts +0 -239
  470. package/src/lib/components/pdf-viewer/pdf-viewer-rotate-left.ts +0 -34
  471. package/src/lib/components/pdf-viewer/pdf-viewer-rotate-right.ts +0 -34
  472. package/src/lib/components/pdf-viewer/pdf-viewer-separator.ts +0 -28
  473. package/src/lib/components/pdf-viewer/pdf-viewer-spacer.ts +0 -24
  474. package/src/lib/components/pdf-viewer/pdf-viewer-toolbar-base.ts +0 -34
  475. package/src/lib/components/pdf-viewer/pdf-viewer-toolbar.ts +0 -391
  476. package/src/lib/components/pdf-viewer/pdf-viewer-types.ts +0 -52
  477. package/src/lib/components/pdf-viewer/pdf-viewer-zoom-in.ts +0 -37
  478. package/src/lib/components/pdf-viewer/pdf-viewer-zoom-out.ts +0 -37
  479. package/src/lib/components/pdf-viewer/pdf-viewer-zoom-select.ts +0 -61
  480. package/src/lib/components/pdf-viewer/pdf-viewer-zoom.ts +0 -30
  481. package/src/lib/components/pdf-viewer/pdf-viewer.ts +0 -417
  482. package/src/lib/components/phone-input/README.md +0 -173
  483. package/src/lib/components/phone-input/countries.ts +0 -69
  484. package/src/lib/components/phone-input/index.ts +0 -4
  485. package/src/lib/components/phone-input/phone-input-simple.ts +0 -141
  486. package/src/lib/components/phone-input/phone-input.ts +0 -304
  487. package/src/lib/components/popover/ARCHITECTURE.md +0 -569
  488. package/src/lib/components/popover/README.md +0 -247
  489. package/src/lib/components/popover/index.ts +0 -6
  490. package/src/lib/components/popover/popover-close.ts +0 -29
  491. package/src/lib/components/popover/popover-portal.ts +0 -161
  492. package/src/lib/components/popover/popover-provider.ts +0 -82
  493. package/src/lib/components/popover/popover-trigger.ts +0 -27
  494. package/src/lib/components/popover/popover.ts +0 -66
  495. package/src/lib/components/progress/README.md +0 -75
  496. package/src/lib/components/progress/index.ts +0 -1
  497. package/src/lib/components/progress/progress.ts +0 -62
  498. package/src/lib/components/qr-code/README.md +0 -124
  499. package/src/lib/components/qr-code/index.ts +0 -3
  500. package/src/lib/components/qr-code/qr-code-download.ts +0 -105
  501. package/src/lib/components/qr-code/qr-code.ts +0 -121
  502. package/src/lib/components/qr-code/qr-generator.ts +0 -479
  503. package/src/lib/components/radio-group/README.md +0 -273
  504. package/src/lib/components/radio-group/index.ts +0 -3
  505. package/src/lib/components/radio-group/radio-field.ts +0 -43
  506. package/src/lib/components/radio-group/radio-group.ts +0 -18
  507. package/src/lib/components/radio-group/radio.ts +0 -30
  508. package/src/lib/components/range-slider/README.md +0 -118
  509. package/src/lib/components/range-slider/index.ts +0 -1
  510. package/src/lib/components/range-slider/range-slider.ts +0 -304
  511. package/src/lib/components/rating-field/README.md +0 -150
  512. package/src/lib/components/rating-field/index.ts +0 -3
  513. package/src/lib/components/rating-field/rating-field.ts +0 -87
  514. package/src/lib/components/rating-field/rating-item-group.ts +0 -73
  515. package/src/lib/components/rating-field/rating-item.ts +0 -89
  516. package/src/lib/components/resizable/README.md +0 -133
  517. package/src/lib/components/resizable/index.ts +0 -4
  518. package/src/lib/components/resizable/resizable-handle.ts +0 -160
  519. package/src/lib/components/resizable/resizable-panel-group.ts +0 -38
  520. package/src/lib/components/resizable/resizable-panel.ts +0 -51
  521. package/src/lib/components/resizable/resizable.types.ts +0 -1
  522. package/src/lib/components/scroll-area/README.md +0 -76
  523. package/src/lib/components/scroll-area/index.ts +0 -2
  524. package/src/lib/components/scroll-area/scroll-area.ts +0 -87
  525. package/src/lib/components/scroll-area/scroll-bar.ts +0 -207
  526. package/src/lib/components/search-input/README.md +0 -99
  527. package/src/lib/components/search-input/index.ts +0 -6
  528. package/src/lib/components/search-input/search-input-types.ts +0 -21
  529. package/src/lib/components/search-input/search-input.ts +0 -302
  530. package/src/lib/components/select/README.md +0 -175
  531. package/src/lib/components/select/index.ts +0 -9
  532. package/src/lib/components/select/select-icon.ts +0 -20
  533. package/src/lib/components/select/select-input.ts +0 -32
  534. package/src/lib/components/select/select-item-indicator.ts +0 -20
  535. package/src/lib/components/select/select-item.ts +0 -48
  536. package/src/lib/components/select/select-list.ts +0 -42
  537. package/src/lib/components/select/select-portal.ts +0 -48
  538. package/src/lib/components/select/select-trigger.ts +0 -36
  539. package/src/lib/components/select/select-value.ts +0 -32
  540. package/src/lib/components/select/select.ts +0 -57
  541. package/src/lib/components/separator/README.md +0 -59
  542. package/src/lib/components/separator/index.ts +0 -1
  543. package/src/lib/components/separator/separator.ts +0 -29
  544. package/src/lib/components/sheet/ARCHITECTURE.md +0 -915
  545. package/src/lib/components/sheet/README.md +0 -248
  546. package/src/lib/components/sheet/index.ts +0 -10
  547. package/src/lib/components/sheet/sheet-close.ts +0 -32
  548. package/src/lib/components/sheet/sheet-description.ts +0 -20
  549. package/src/lib/components/sheet/sheet-footer.ts +0 -20
  550. package/src/lib/components/sheet/sheet-header.ts +0 -17
  551. package/src/lib/components/sheet/sheet-portal.ts +0 -8
  552. package/src/lib/components/sheet/sheet-provider.ts +0 -142
  553. package/src/lib/components/sheet/sheet-title.ts +0 -20
  554. package/src/lib/components/sheet/sheet-trigger.ts +0 -24
  555. package/src/lib/components/sheet/sheet.ts +0 -92
  556. package/src/lib/components/sidebar/README.md +0 -254
  557. package/src/lib/components/sidebar/index.ts +0 -24
  558. package/src/lib/components/sidebar/sidebar-content.ts +0 -20
  559. package/src/lib/components/sidebar/sidebar-footer.ts +0 -17
  560. package/src/lib/components/sidebar/sidebar-group-action.ts +0 -24
  561. package/src/lib/components/sidebar/sidebar-group-content.ts +0 -17
  562. package/src/lib/components/sidebar/sidebar-group-label.ts +0 -23
  563. package/src/lib/components/sidebar/sidebar-group.ts +0 -17
  564. package/src/lib/components/sidebar/sidebar-header.ts +0 -17
  565. package/src/lib/components/sidebar/sidebar-input.ts +0 -20
  566. package/src/lib/components/sidebar/sidebar-inset.ts +0 -21
  567. package/src/lib/components/sidebar/sidebar-menu-action.ts +0 -31
  568. package/src/lib/components/sidebar/sidebar-menu-badge.ts +0 -25
  569. package/src/lib/components/sidebar/sidebar-menu-button.ts +0 -55
  570. package/src/lib/components/sidebar/sidebar-menu-item.ts +0 -17
  571. package/src/lib/components/sidebar/sidebar-menu-skeleton.ts +0 -40
  572. package/src/lib/components/sidebar/sidebar-menu-sub-button.ts +0 -33
  573. package/src/lib/components/sidebar/sidebar-menu-sub-item.ts +0 -15
  574. package/src/lib/components/sidebar/sidebar-menu-sub.ts +0 -21
  575. package/src/lib/components/sidebar/sidebar-menu.ts +0 -17
  576. package/src/lib/components/sidebar/sidebar-provider.ts +0 -128
  577. package/src/lib/components/sidebar/sidebar-rail.ts +0 -39
  578. package/src/lib/components/sidebar/sidebar-separator.ts +0 -21
  579. package/src/lib/components/sidebar/sidebar-state.service.ts +0 -33
  580. package/src/lib/components/sidebar/sidebar-trigger.ts +0 -38
  581. package/src/lib/components/sidebar/sidebar.ts +0 -120
  582. package/src/lib/components/signature-pad/README.md +0 -236
  583. package/src/lib/components/signature-pad/index.ts +0 -8
  584. package/src/lib/components/signature-pad/signature-pad-canvas.ts +0 -228
  585. package/src/lib/components/signature-pad/signature-pad-clear-button.ts +0 -48
  586. package/src/lib/components/signature-pad/signature-pad-color-button.ts +0 -50
  587. package/src/lib/components/signature-pad/signature-pad-controls.ts +0 -26
  588. package/src/lib/components/signature-pad/signature-pad-toolbar.ts +0 -25
  589. package/src/lib/components/signature-pad/signature-pad-undo-button.ts +0 -48
  590. package/src/lib/components/signature-pad/signature-pad-width-button.ts +0 -50
  591. package/src/lib/components/signature-pad/signature-pad.ts +0 -97
  592. package/src/lib/components/skeleton/README.md +0 -80
  593. package/src/lib/components/skeleton/index.ts +0 -1
  594. package/src/lib/components/skeleton/skeleton.ts +0 -17
  595. package/src/lib/components/slider/README.md +0 -106
  596. package/src/lib/components/slider/index.ts +0 -4
  597. package/src/lib/components/slider/slider-range.ts +0 -28
  598. package/src/lib/components/slider/slider-thumb.ts +0 -73
  599. package/src/lib/components/slider/slider-track.ts +0 -31
  600. package/src/lib/components/slider/slider.ts +0 -185
  601. package/src/lib/components/sortable-list/README.md +0 -229
  602. package/src/lib/components/sortable-list/index.ts +0 -4
  603. package/src/lib/components/sortable-list/sortable-handle.ts +0 -72
  604. package/src/lib/components/sortable-list/sortable-item.ts +0 -162
  605. package/src/lib/components/sortable-list/sortable-list.ts +0 -127
  606. package/src/lib/components/sortable-list/sortable-overlay.ts +0 -31
  607. package/src/lib/components/speed-dial/README.md +0 -259
  608. package/src/lib/components/speed-dial/index.ts +0 -7
  609. package/src/lib/components/speed-dial/speed-dial-action.ts +0 -99
  610. package/src/lib/components/speed-dial/speed-dial-types.ts +0 -14
  611. package/src/lib/components/speed-dial/speed-dial.ts +0 -224
  612. package/src/lib/components/spinner/README.md +0 -41
  613. package/src/lib/components/spinner/index.ts +0 -1
  614. package/src/lib/components/spinner/spinner.ts +0 -20
  615. package/src/lib/components/split-button/README.md +0 -99
  616. package/src/lib/components/split-button/index.ts +0 -6
  617. package/src/lib/components/split-button/split-button-types.ts +0 -14
  618. package/src/lib/components/split-button/split-button.ts +0 -240
  619. package/src/lib/components/spotlight/README.md +0 -136
  620. package/src/lib/components/spotlight/index.ts +0 -5
  621. package/src/lib/components/spotlight/spotlight-actions.ts +0 -24
  622. package/src/lib/components/spotlight/spotlight-description.ts +0 -24
  623. package/src/lib/components/spotlight/spotlight-title.ts +0 -24
  624. package/src/lib/components/spotlight/spotlight.ts +0 -367
  625. package/src/lib/components/stat-card/README.md +0 -319
  626. package/src/lib/components/stat-card/REFACTORING-COMPLETE.md +0 -250
  627. package/src/lib/components/stat-card/REFACTORING-PLAN.md +0 -471
  628. package/src/lib/components/stat-card/index.ts +0 -11
  629. package/src/lib/components/stat-card/stat-card-change.ts +0 -27
  630. package/src/lib/components/stat-card/stat-card-description.ts +0 -17
  631. package/src/lib/components/stat-card/stat-card-icon.ts +0 -28
  632. package/src/lib/components/stat-card/stat-card-label.ts +0 -27
  633. package/src/lib/components/stat-card/stat-card-types.ts +0 -3
  634. package/src/lib/components/stat-card/stat-card-value.ts +0 -27
  635. package/src/lib/components/stat-card/stat-card.ts +0 -34
  636. package/src/lib/components/stepper/README.md +0 -250
  637. package/src/lib/components/stepper/index.ts +0 -12
  638. package/src/lib/components/stepper/stepper-content.ts +0 -25
  639. package/src/lib/components/stepper/stepper-description.ts +0 -17
  640. package/src/lib/components/stepper/stepper-item.ts +0 -35
  641. package/src/lib/components/stepper/stepper-list.ts +0 -26
  642. package/src/lib/components/stepper/stepper-next.ts +0 -41
  643. package/src/lib/components/stepper/stepper-previous.ts +0 -42
  644. package/src/lib/components/stepper/stepper-separator.ts +0 -35
  645. package/src/lib/components/stepper/stepper-title.ts +0 -17
  646. package/src/lib/components/stepper/stepper-trigger.ts +0 -67
  647. package/src/lib/components/stepper/stepper-types.ts +0 -10
  648. package/src/lib/components/stepper/stepper.ts +0 -46
  649. package/src/lib/components/switch/README.md +0 -99
  650. package/src/lib/components/switch/index.ts +0 -1
  651. package/src/lib/components/switch/switch.ts +0 -56
  652. package/src/lib/components/table/README.md +0 -105
  653. package/src/lib/components/table/index.ts +0 -8
  654. package/src/lib/components/table/table-body.ts +0 -17
  655. package/src/lib/components/table/table-caption.ts +0 -17
  656. package/src/lib/components/table/table-cell.ts +0 -17
  657. package/src/lib/components/table/table-footer.ts +0 -20
  658. package/src/lib/components/table/table-header-cell.ts +0 -20
  659. package/src/lib/components/table/table-header.ts +0 -17
  660. package/src/lib/components/table/table-row.ts +0 -20
  661. package/src/lib/components/table/table.ts +0 -17
  662. package/src/lib/components/tabs/README.md +0 -169
  663. package/src/lib/components/tabs/index.ts +0 -4
  664. package/src/lib/components/tabs/tab-list.ts +0 -38
  665. package/src/lib/components/tabs/tab-panel.ts +0 -45
  666. package/src/lib/components/tabs/tab.ts +0 -45
  667. package/src/lib/components/tabs/tabs.ts +0 -28
  668. package/src/lib/components/tag-input/README.md +0 -271
  669. package/src/lib/components/tag-input/index.ts +0 -5
  670. package/src/lib/components/tag-input/tag-input-clear.ts +0 -60
  671. package/src/lib/components/tag-input/tag-input-count.ts +0 -42
  672. package/src/lib/components/tag-input/tag-input-field.ts +0 -121
  673. package/src/lib/components/tag-input/tag-input-tag.ts +0 -70
  674. package/src/lib/components/tag-input/tag-input.ts +0 -118
  675. package/src/lib/components/textarea/README.md +0 -80
  676. package/src/lib/components/textarea/index.ts +0 -1
  677. package/src/lib/components/textarea/textarea.ts +0 -41
  678. package/src/lib/components/theme-toggle/README.md +0 -258
  679. package/src/lib/components/theme-toggle/index.ts +0 -4
  680. package/src/lib/components/theme-toggle/theme-field.ts +0 -40
  681. package/src/lib/components/theme-toggle/theme-select.ts +0 -56
  682. package/src/lib/components/theme-toggle/theme-toggle.ts +0 -76
  683. package/src/lib/components/theme-toggle/theme.service.ts +0 -81
  684. package/src/lib/components/time-picker/README.md +0 -188
  685. package/src/lib/components/time-picker/index.ts +0 -5
  686. package/src/lib/components/time-picker/time-picker-clock.ts +0 -195
  687. package/src/lib/components/time-picker/time-picker-input.ts +0 -174
  688. package/src/lib/components/time-picker/time-picker-period.ts +0 -89
  689. package/src/lib/components/time-picker/time-picker-separator.ts +0 -20
  690. package/src/lib/components/time-picker/time-picker.ts +0 -87
  691. package/src/lib/components/timeline/README.md +0 -177
  692. package/src/lib/components/timeline/index.ts +0 -8
  693. package/src/lib/components/timeline/timeline-connector.ts +0 -29
  694. package/src/lib/components/timeline/timeline-content.ts +0 -26
  695. package/src/lib/components/timeline/timeline-description.ts +0 -17
  696. package/src/lib/components/timeline/timeline-dot.ts +0 -45
  697. package/src/lib/components/timeline/timeline-item.ts +0 -28
  698. package/src/lib/components/timeline/timeline-time.ts +0 -17
  699. package/src/lib/components/timeline/timeline-title.ts +0 -17
  700. package/src/lib/components/timeline/timeline.ts +0 -17
  701. package/src/lib/components/timezone/index.ts +0 -5
  702. package/src/lib/components/timezone/timezone-badge.ts +0 -85
  703. package/src/lib/components/timezone/timezone-button.ts +0 -104
  704. package/src/lib/components/timezone/timezone-display.ts +0 -105
  705. package/src/lib/components/timezone/timezone-select.ts +0 -87
  706. package/src/lib/components/timezone/timezone.service.ts +0 -233
  707. package/src/lib/components/toast/README.md +0 -151
  708. package/src/lib/components/toast/index.ts +0 -8
  709. package/src/lib/components/toast/toast-action.ts +0 -27
  710. package/src/lib/components/toast/toast-close.ts +0 -29
  711. package/src/lib/components/toast/toast-description.ts +0 -17
  712. package/src/lib/components/toast/toast-stack.ts +0 -95
  713. package/src/lib/components/toast/toast-title.ts +0 -17
  714. package/src/lib/components/toast/toast.ts +0 -64
  715. package/src/lib/components/toast/toast.types.ts +0 -24
  716. package/src/lib/components/toast/toaster.ts +0 -67
  717. package/src/lib/components/toggle/README.md +0 -72
  718. package/src/lib/components/toggle/index.ts +0 -1
  719. package/src/lib/components/toggle/toggle.ts +0 -53
  720. package/src/lib/components/toggle-group/README.md +0 -101
  721. package/src/lib/components/toggle-group/index.ts +0 -2
  722. package/src/lib/components/toggle-group/toggle-group-item.ts +0 -62
  723. package/src/lib/components/toggle-group/toggle-group.ts +0 -53
  724. package/src/lib/components/toolbar/README.md +0 -76
  725. package/src/lib/components/toolbar/index.ts +0 -4
  726. package/src/lib/components/toolbar/toolbar-separator.ts +0 -32
  727. package/src/lib/components/toolbar/toolbar-widget-group.ts +0 -35
  728. package/src/lib/components/toolbar/toolbar-widget.ts +0 -48
  729. package/src/lib/components/toolbar/toolbar.ts +0 -44
  730. package/src/lib/components/tooltip/ANIMATIONS.md +0 -274
  731. package/src/lib/components/tooltip/README.md +0 -100
  732. package/src/lib/components/tooltip/index.ts +0 -3
  733. package/src/lib/components/tooltip/tooltip-manager.ts +0 -194
  734. package/src/lib/components/tooltip/tooltip-trigger.ts +0 -148
  735. package/src/lib/components/tooltip/tooltip.ts +0 -72
  736. package/src/lib/components/tour-guide/README.md +0 -158
  737. package/src/lib/components/tour-guide/index.ts +0 -2
  738. package/src/lib/components/tour-guide/tour-guide.ts +0 -492
  739. package/src/lib/components/transfer-list/README.md +0 -98
  740. package/src/lib/components/transfer-list/index.ts +0 -5
  741. package/src/lib/components/transfer-list/transfer-list-types.ts +0 -11
  742. package/src/lib/components/transfer-list/transfer-list.ts +0 -434
  743. package/src/lib/components/tree/README.md +0 -358
  744. package/src/lib/components/tree/TODO.md +0 -94
  745. package/src/lib/components/tree/index.ts +0 -6
  746. package/src/lib/components/tree/tree-item-group.ts +0 -40
  747. package/src/lib/components/tree/tree-item-icon.ts +0 -17
  748. package/src/lib/components/tree/tree-item-trigger-icon.ts +0 -26
  749. package/src/lib/components/tree/tree-item-trigger.ts +0 -51
  750. package/src/lib/components/tree/tree-item.ts +0 -64
  751. package/src/lib/components/tree/tree.ts +0 -21
  752. package/src/lib/components/video-player/README.md +0 -275
  753. package/src/lib/components/video-player/index.ts +0 -14
  754. package/src/lib/components/video-player/video-player-big-play-button.ts +0 -35
  755. package/src/lib/components/video-player/video-player-buffering.ts +0 -36
  756. package/src/lib/components/video-player/video-player-controls.ts +0 -28
  757. package/src/lib/components/video-player/video-player-fullscreen-button.ts +0 -38
  758. package/src/lib/components/video-player/video-player-pip-button.ts +0 -37
  759. package/src/lib/components/video-player/video-player-play-button.ts +0 -37
  760. package/src/lib/components/video-player/video-player-progress.ts +0 -56
  761. package/src/lib/components/video-player/video-player-skip-button.ts +0 -44
  762. package/src/lib/components/video-player/video-player-speed-button.ts +0 -74
  763. package/src/lib/components/video-player/video-player-time.ts +0 -31
  764. package/src/lib/components/video-player/video-player-types.ts +0 -13
  765. package/src/lib/components/video-player/video-player-video.ts +0 -127
  766. package/src/lib/components/video-player/video-player-volume.ts +0 -61
  767. package/src/lib/components/video-player/video-player.ts +0 -139
  768. package/src/lib/components/virtual-list/README.md +0 -120
  769. package/src/lib/components/virtual-list/index.ts +0 -2
  770. package/src/lib/components/virtual-list/virtual-list-types.ts +0 -9
  771. package/src/lib/components/virtual-list/virtual-list.ts +0 -174
  772. package/src/lib/layouts/auth-layout.ts +0 -30
  773. package/src/lib/layouts/index.ts +0 -3
  774. package/src/lib/layouts/sidebar-layout.ts +0 -37
  775. package/src/lib/layouts/stacked-layout/README.md +0 -84
  776. package/src/lib/layouts/stacked-layout/index.ts +0 -1
  777. package/src/lib/layouts/stacked-layout/stacked-layout.ts +0 -39
  778. package/tsconfig.json +0 -28
  779. package/tsconfig.lib.json +0 -12
  780. package/tsconfig.lib.prod.json +0 -9
@@ -1,972 +0,0 @@
1
- # Drawer Architecture
2
-
3
- ## Overview
4
-
5
- The drawer component uses a multi-signal architecture pattern to ensure smooth, complete animations before DOM cleanup. This document focuses on how animations are coordinated across the drawer content and backdrop using a signal counter to track completion of both animations.
6
-
7
- **Drawer-Specific Features:**
8
-
9
- - Uses directional slide animations (top, right, bottom, left) via `direction` input
10
- - Implements `ScDrawer` as a **Directive** instead of a Component
11
- - Often includes a handle indicator for mobile-friendly dragging affordance
12
-
13
- ## Component Structure
14
-
15
- ```
16
- ScDrawerProvider (Root State Manager + CDK Overlay Manager)
17
- ├── ScDrawerTrigger (Opens drawer)
18
- └── ng-template[scDrawerPortal] (Lazy content, portaled to CDK overlay)
19
-
20
- Inside CDK Overlay (managed by Provider):
21
- ├── CDK Backdrop (Transparent - click blocking only)
22
- ├── ScBackdrop (Visual backdrop with animations)
23
- └── ScDrawer (Drawer Directive - slides from configured direction)
24
- ├── ScDrawerHandle (Optional drag indicator)
25
- ├── ScDrawerHeader
26
- │ └── ScDrawerTitle
27
- │ └── ScDrawerDescription
28
- └── ScDrawerFooter
29
- └── ScDrawerClose
30
-
31
- Plus: ScDrawerTrigger (Opens drawer)
32
- ```
33
-
34
- ### ScDrawerPortal Directive
35
-
36
- `ScDrawerPortal` is a structural directive on `ng-template` that marks the lazy content to be portaled into the CDK overlay. It holds a reference to the `TemplateRef` which the provider reads via `contentChild`.
37
-
38
- ```typescript
39
- @Directive({
40
- selector: 'ng-template[scDrawerPortal]',
41
- })
42
- export class ScDrawerPortal {
43
- readonly templateRef = inject(TemplateRef);
44
- }
45
- ```
46
-
47
- The provider queries it and projects the template into the overlay:
48
-
49
- ```typescript
50
- // In ScDrawerProvider
51
- protected readonly drawerPortal = contentChild.required(ScDrawerPortal);
52
-
53
- // In provider's overlay template
54
- <ng-container [ngTemplateOutlet]="drawerPortal().templateRef" />
55
- ```
56
-
57
- ### Why a Directive?
58
-
59
- - **Explicit**: A bare `<ng-template>` is ambiguous; `scDrawerPortal` communicates intent
60
- - **Lazy**: Content inside `ng-template` is not instantiated until the provider stamps it
61
- - **Provider owns lifecycle**: The provider decides _when_ to stamp the template (on open)
62
- - **DI preserved**: Using `TemplatePortal(overlayTemplate, viewContainerRef)` with the provider's own `ViewContainerRef` keeps the injector chain intact -- `ScDrawer` can inject `ScDrawerProvider`
63
-
64
- ## The Multi-Signal Pattern
65
-
66
- The core of the animation architecture is the separation of **logical state** from **physical state**, with a **coordination signal** to track animation completions.
67
-
68
- ### Signal 1: `open` (Logical State)
69
-
70
- **Purpose:** Controls what the drawer _should_ be doing
71
-
72
- ```typescript
73
- // In ScDrawerProvider
74
- readonly open = model<boolean>(false);
75
- ```
76
-
77
- **Responsibilities:**
78
-
79
- - Represents user intent ("should the drawer be visible?")
80
- - Triggers animation state changes
81
- - When `true`: Triggers entry animations
82
- - When `false`: Triggers exit animations
83
-
84
- ### Signal 2: `overlayOpen` (Physical State)
85
-
86
- **Purpose:** Controls whether DOM exists
87
-
88
- ```typescript
89
- // In ScDrawerProvider
90
- readonly overlayOpen = signal<boolean>(false);
91
- ```
92
-
93
- **Responsibilities:**
94
-
95
- - Controls CDK overlay attachment/detachment
96
- - Stays `true` during close animations (critical!)
97
- - Only becomes `false` after animations complete
98
- - Ensures animations can play before DOM removal
99
-
100
- ### Signal 3: `animationsCompleted` (Animation Coordination)
101
-
102
- **Purpose:** Tracks completion of multiple animations
103
-
104
- ```typescript
105
- // In ScDrawerProvider (private)
106
- private readonly animationsCompleted = signal<number>(0);
107
- ```
108
-
109
- **Responsibilities:**
110
-
111
- - Counts completed animations during close sequence
112
- - Target count: 2 (drawer + backdrop)
113
- - Resets to 0 when opening (for next cycle)
114
- - Triggers overlay closure when target reached
115
-
116
- ### Why Both Are Needed
117
-
118
- **The Problem:**
119
-
120
- CDK overlay's lifecycle is tied to DOM presence:
121
-
122
- ```typescript
123
- // This doesn't work:
124
- if (open()) {
125
- overlayRef.attach(portal); // DOM mounted
126
- } else {
127
- overlayRef.detach(); // DOM removed IMMEDIATELY
128
- // Animation never plays - element is gone!
129
- }
130
- ```
131
-
132
- **The Solution:**
133
-
134
- Separate signals allow animation completion:
135
-
136
- ```typescript
137
- // This works:
138
- if (overlayOpen()) {
139
- // Physical state
140
- overlayRef.attach(portal); // DOM mounted
141
- } else {
142
- overlayRef.detach(); // DOM removed AFTER animations
143
- }
144
-
145
- // Meanwhile, open() controls animations:
146
- if (open()) {
147
- // Logical state
148
- state = 'open'; // Entry animation
149
- } else {
150
- state = 'closed'; // Exit animation (DOM still mounted!)
151
- }
152
- ```
153
-
154
- ## Animation Architecture
155
-
156
- ### Three Layers (Separated by Concern)
157
-
158
- 1. **CDK Backdrop** (Transparent - No Animation)
159
- - Class: `cdk-overlay-transparent-backdrop`
160
- - Purpose: Click blocking and scroll prevention
161
- - Functional layer only, no visual styling
162
-
163
- 2. **ScBackdrop Component** (300ms fade animation)
164
- - Reusable component from `components/backdrop`
165
- - Fade effect via Tailwind animate classes
166
- - Positioned with `-z-10` (behind drawer)
167
- - Emits `animationComplete` output when close animation finishes
168
-
169
- 3. **Drawer Content Animation** (300ms directional slide)
170
- - Slide animations from configured direction (top/right/bottom/left)
171
- - Managed by Tailwind animate classes
172
- - Completion detected via `animationend` event (triggers cleanup)
173
-
174
- ### Synchronization
175
-
176
- Both ScBackdrop and Drawer animations:
177
-
178
- - Start simultaneously when `open` changes
179
- - Use same duration (300ms)
180
- - Respond to same `data-state` attribute
181
- - Inside same overlay (removed together)
182
-
183
- ### Drawer Content Animations
184
-
185
- Applied via Tailwind classes in `drawer.ts`:
186
-
187
- ```typescript
188
- const directionAnimationClasses: Record<DrawerDirection, string> = {
189
- top: 'slide-in-from-top data-[state=closed]:slide-out-to-top',
190
- right: 'slide-in-from-right data-[state=closed]:slide-out-to-right',
191
- bottom: 'slide-in-from-bottom data-[state=closed]:slide-out-to-bottom',
192
- left: 'slide-in-from-left data-[state=closed]:slide-out-to-left',
193
- };
194
-
195
- protected readonly class = computed(() => {
196
- const direction = this.drawer.direction();
197
-
198
- return cn(
199
- // Base styles
200
- 'fixed z-50 flex flex-col bg-background',
201
- directionBaseClasses[direction],
202
-
203
- // Entry animation (fade + slide)
204
- 'animate-in fade-in-0 duration-300',
205
- directionAnimationClasses[direction],
206
-
207
- // Exit animation (triggered by data-state="closed")
208
- 'data-[state=closed]:animate-out',
209
- 'data-[state=closed]:fade-out-0',
210
- 'data-[state=closed]:duration-300',
211
- );
212
- });
213
- ```
214
-
215
- **Animation Flow:**
216
-
217
- 1. `state` signal changes from `'open'` to `'closed'`
218
- 2. `data-state` attribute updates to `"closed"`
219
- 3. Tailwind applies exit animation classes (fade + slide to configured direction)
220
- 4. Animation plays for 300ms
221
- 5. `animationend` event fires
222
-
223
- **Directional Slide Animations:**
224
-
225
- The drawer uses different slide directions based on the `direction` input:
226
-
227
- - **top**: Slides in from top, slides out to top
228
- - **right**: Slides in from right, slides out to right
229
- - **bottom**: Slides in from bottom, slides out to bottom
230
- - **left**: Slides in from left, slides out to left
231
-
232
- Each direction uses Tailwind's directional slide utilities combined with fade for smooth entry/exit.
233
-
234
- ### ScBackdrop Component Animations
235
-
236
- Managed via ScBackdrop component from `components/backdrop`:
237
-
238
- ```typescript
239
- // In backdrop.ts
240
- protected readonly class = computed(() =>
241
- cn(
242
- 'fixed inset-0 -z-10 bg-black/10',
243
- 'supports-backdrop-filter:backdrop-blur-xs',
244
- 'animate-in fade-in-0 duration-300',
245
- 'data-[state=closed]:animate-out',
246
- 'data-[state=closed]:fade-out-0',
247
- 'data-[state=closed]:duration-300',
248
- ),
249
- );
250
- ```
251
-
252
- **Animation Flow:**
253
-
254
- 1. Provider renders: `<div sc-backdrop [open]="open()" (animationComplete)="onBackdropAnimationComplete()"></div>`
255
- 2. ScBackdrop receives `open` input
256
- 3. Sets `data-state` based on `open` value
257
- 4. Tailwind applies appropriate animation classes
258
- 5. Animation plays for 300ms
259
- 6. On `animationend`, emits `animationComplete` output
260
- 7. Provider handles the event directly for coordination
261
-
262
- **Why Separate Component?**
263
-
264
- - Reusable across dialog, drawer, sheet, etc.
265
- - Consistent animation pattern
266
- - Single responsibility (visual layer only)
267
- - CDK backdrop handles functionality separately
268
-
269
- ## Complete Animation Timeline
270
-
271
- ### Opening Sequence
272
-
273
- ```
274
- User clicks trigger:
275
-
276
- ├─ t=0ms: Trigger calls open.set(true)
277
- │ │
278
- │ ├─ Provider effect 1:
279
- │ │ ├─ overlayOpen.set(true) <- Mount DOM immediately
280
- │ │ └─ animationsCompleted.set(0) <- Reset for next cycle
281
- │ │
282
- │ └─ Provider effect 3 (triggered by overlayOpen):
283
- │ └─ attachDrawer() <- CDK overlay attached
284
- │ └─ TemplatePortal(overlayTemplate, viewContainerRef)
285
- │ ├─ ScBackdrop rendered with [open]="open()"
286
- │ └─ ng-template outlet stamps scDrawerPortal content
287
-
288
- ├─ t=0ms: CDK adds .cdk-overlay-backdrop-showing
289
- │ └─ Backdrop: opacity 0 -> 1 (300ms)
290
-
291
- ├─ t=0ms: Drawer effect (triggered by open):
292
- │ └─ state.set('open')
293
- │ └─ data-state="open" -> Entry animation starts
294
- │ ├─ fade-in-0
295
- │ ├─ slide-in-from-{direction}
296
- │ └─ duration-300
297
-
298
- ├─ t=0-300ms: Both animations play
299
-
300
- └─ t=300ms: Animations complete, drawer visible
301
- ```
302
-
303
- ### Closing Sequence (Coordinated Completion)
304
-
305
- ```
306
- User clicks close/backdrop/escape:
307
-
308
- ├─ t=0ms: Provider calls open.set(false)
309
- │ │
310
- │ ├─ Drawer effect (triggered by open):
311
- │ │ └─ state.set('closed') <- Triggers animation
312
- │ │ └─ data-state="closed" -> Exit animation starts
313
- │ │ ├─ animate-out
314
- │ │ ├─ fade-out-0
315
- │ │ ├─ slide-out-to-{direction}
316
- │ │ └─ duration-300
317
- │ │
318
- │ └─ Backdrop receives [open]="false" input:
319
- │ └─ state.set('closed') <- Triggers backdrop animation
320
- │ └─ data-state="closed" -> Backdrop fade-out (300ms)
321
-
322
- ├─ IMPORTANT: overlayOpen is STILL true!
323
- │ └─ DOM remains mounted so animations can play
324
- │ └─ animationsCompleted = 0 (waiting for both)
325
-
326
- ├─ t=0-300ms: Both animations play simultaneously
327
-
328
- ├─ t=~300ms: Drawer animation completes
329
- │ └─ onAnimationEnd(event) fires
330
- │ └─ if (state === 'closed' && target === element):
331
- │ └─ provider.onDrawerAnimationComplete()
332
- │ └─ animationsCompleted.update(n => n + 1) <- Count = 1
333
-
334
- ├─ t=~300ms: Backdrop animation completes
335
- │ └─ backdrop emits (animationComplete)
336
- │ └─ provider.onBackdropAnimationComplete()
337
- │ └─ animationsCompleted.update(n => n + 1) <- Count = 2
338
-
339
- ├─ Provider effect 2 detects: animationsCompleted === 2 && !open()
340
- │ └─ overlayOpen.set(false) <- Cleanup triggered!
341
- │ └─ animationsCompleted.set(0) <- Reset for next cycle
342
-
343
- └─ t=~300ms: Provider effect 3 (triggered by overlayOpen):
344
- └─ detachDrawer() <- DOM removed cleanly after BOTH complete
345
- ```
346
-
347
- ## Why Track Both Animations?
348
-
349
- **Question:** Why coordinate two separate animations instead of using a single timer?
350
-
351
- **Answer:** Explicit animation tracking is more robust and event-driven:
352
-
353
- ### The Problem with Single Timers
354
-
355
- ```typescript
356
- // Old approach - assumes both animations finish together
357
- onDrawerAnimationComplete(): void {
358
- setTimeout(() => {
359
- this.overlayOpen.set(false);
360
- }, 300); // Hope backdrop finishes too!
361
- }
362
- ```
363
-
364
- **Issues:**
365
-
366
- - Assumes backdrop takes exactly 300ms
367
- - Browser rendering variations can cause timing differences
368
- - Backdrop might take 305ms, getting cut off at 300ms
369
- - No way to know if backdrop actually completed
370
- - Might wait longer than necessary if backdrop finishes early
371
-
372
- ### The Solution: Signal Counter Pattern
373
-
374
- ```typescript
375
- // New approach - explicitly track both completions
376
- private readonly animationsCompleted = signal<number>(0);
377
-
378
- onDrawerAnimationComplete(): void {
379
- this.animationsCompleted.update(n => n + 1); // Count = 1
380
- }
381
-
382
- onBackdropAnimationComplete(): void {
383
- this.animationsCompleted.update(n => n + 1); // Count = 2
384
- }
385
-
386
- effect(() => {
387
- if (this.animationsCompleted() === 2 && !this.open()) {
388
- this.overlayOpen.set(false); // Both confirmed complete!
389
- }
390
- });
391
- ```
392
-
393
- **Benefits:**
394
-
395
- 1. **Event-driven**: Waits for actual completion, not estimated time
396
- 2. **Robust**: Handles browser timing variations (300ms vs 305ms)
397
- 3. **Accurate**: Both animations explicitly signal completion
398
- 4. **Extensible**: Easy to add more animations (just increase target count)
399
- 5. **No race conditions**: Counter resets on open for clean cycles
400
-
401
- ## State Synchronization
402
-
403
- ### Provider Constructor Effects
404
-
405
- ```typescript
406
- constructor() {
407
- // Effect 1: Sync overlayOpen with open for OPENING
408
- effect(() => {
409
- if (this.open()) {
410
- // Opening: Mount DOM immediately
411
- this.overlayOpen.set(true);
412
- // Reset counter for next close cycle
413
- this.animationsCompleted.set(0);
414
- }
415
- // Note: When closing, overlayOpen stays true!
416
- // It will be set to false by the coordination effect below
417
- });
418
-
419
- // Effect 2: Close overlay when both animations complete
420
- effect(() => {
421
- const completed = this.animationsCompleted();
422
- if (completed === 2 && !this.open()) {
423
- // Both animations confirmed complete
424
- this.overlayOpen.set(false);
425
- // Reset for next cycle
426
- this.animationsCompleted.set(0);
427
- }
428
- });
429
-
430
- // Effect 3: Attach/detach CDK overlay based on overlayOpen
431
- effect(() => {
432
- if (this.overlayOpen()) {
433
- this.attachDrawer();
434
- } else {
435
- this.detachDrawer();
436
- }
437
- });
438
- }
439
- ```
440
-
441
- ### Provider Overlay Template
442
-
443
- The provider's template includes the backdrop and focus trap, projecting the consumer's `scDrawerPortal` template via `ngTemplateOutlet`:
444
-
445
- ```html
446
- <ng-content />
447
- <ng-template #overlayTemplate>
448
- <div sc-backdrop [open]="open()" (animationComplete)="onBackdropAnimationComplete()"></div>
449
- <div cdkTrapFocus [cdkTrapFocusAutoCapture]="true">
450
- <ng-container [ngTemplateOutlet]="drawerPortal().templateRef" />
451
- </div>
452
- </ng-template>
453
- ```
454
-
455
- ### Drawer Directive Constructor Effects
456
-
457
- ```typescript
458
- constructor() {
459
- // Effect: Sync animation state with logical state
460
- effect(() => {
461
- const isOpen = this.drawer.open();
462
- this.state.set(isOpen ? 'open' : 'closed');
463
- });
464
- }
465
- ```
466
-
467
- **Note:** Unlike dialog and sheet, drawer is a **Directive** not a Component, so it doesn't have its own template. It attaches behavior to a host element and relies on the host for focus management and content.
468
-
469
- ## Animation Completion Handling
470
-
471
- ### Drawer Directive
472
-
473
- ```typescript
474
- protected onAnimationEnd(event: AnimationEvent): void {
475
- // Only trigger cleanup when close animation completes
476
- if (
477
- this.state() === 'closed' &&
478
- event.target === this.elementRef.nativeElement
479
- ) {
480
- this.drawer.onDrawerAnimationComplete();
481
- }
482
- }
483
- ```
484
-
485
- **Why check `event.target`?**
486
-
487
- - `animationend` bubbles from child elements
488
- - We only care about the drawer's own animation
489
- - Prevents false triggers from child element animations
490
-
491
- **Directive vs Component:**
492
-
493
- Unlike the dialog and sheet components, drawer is a directive. This means:
494
-
495
- - It enhances existing host elements instead of creating new ones
496
- - Animation completion still works the same way via host binding
497
- - `(animationend)` is bound in the host metadata
498
- - Still requires ElementRef to check event.target
499
-
500
- ### Provider Component
501
-
502
- The provider directly handles backdrop animation completion in its template -- no intermediary needed:
503
-
504
- ```html
505
- <!-- In provider's overlay template -->
506
- <div sc-backdrop [open]="open()" (animationComplete)="onBackdropAnimationComplete()"></div>
507
- ```
508
-
509
- ```typescript
510
- // In ScDrawerProvider
511
- onDrawerAnimationComplete(): void {
512
- if (!this.open()) {
513
- this.animationsCompleted.update(n => n + 1);
514
- }
515
- }
516
-
517
- onBackdropAnimationComplete(): void {
518
- if (!this.open()) {
519
- this.animationsCompleted.update(n => n + 1);
520
- }
521
- }
522
- ```
523
-
524
- **Why check `!this.open()` before incrementing?**
525
-
526
- - User might have reopened drawer during close animation
527
- - Prevents counter from incrementing during new open cycle
528
- - Guards against race conditions
529
- - Example: User clicks close (close starts), then immediately clicks trigger again (reopens)
530
- - Without this check, the counter would incorrectly increment for the new cycle
531
-
532
- **Why use `update()` instead of `set()`?**
533
-
534
- - Increment is relative to current value
535
- - Safe if multiple updates happen
536
- - Immutable update pattern
537
- - Consistent with Angular signals best practices
538
-
539
- ## Comparison: Evolution of Animation Coordination
540
-
541
- ### Approach 1: Single Timer (Previous Implementation)
542
-
543
- ```typescript
544
- // Problems:
545
- private async detachDrawerWithAnimation() {
546
- if (this.overlayRef.hasAttached()) {
547
- const backdrop = this.overlayRef.backdropElement;
548
- backdrop?.classList.add('sc-backdrop-hiding');
549
-
550
- // Wait arbitrary 300ms
551
- await firstValueFrom(timer(300));
552
-
553
- this.overlayRef.detach(); // Might cut off drawer animation!
554
- }
555
- }
556
- ```
557
-
558
- **Issues:**
559
-
560
- 1. Single hardcoded timer for all animations
561
- 2. No detection of actual animation completion
562
- 3. Drawer animation might take longer or shorter
563
- 4. Not coordinated with drawer state
564
- 5. No way to cancel if reopened
565
-
566
- ### Approach 2: Signal Counter (Current Implementation)
567
-
568
- ```typescript
569
- // Both animations explicitly tracked:
570
- private readonly animationsCompleted = signal<number>(0);
571
-
572
- constructor() {
573
- // Effect 1: Open and reset
574
- effect(() => {
575
- if (this.open()) {
576
- this.overlayOpen.set(true);
577
- this.animationsCompleted.set(0);
578
- }
579
- });
580
-
581
- // Effect 2: Close when both complete
582
- effect(() => {
583
- if (this.animationsCompleted() === 2 && !this.open()) {
584
- this.overlayOpen.set(false);
585
- this.animationsCompleted.set(0);
586
- }
587
- });
588
-
589
- // Effect 3: Attach/detach CDK overlay
590
- effect(() => {
591
- if (this.overlayOpen()) {
592
- this.attachDrawer();
593
- } else {
594
- this.detachDrawer();
595
- }
596
- });
597
- }
598
-
599
- // Both animations signal completion
600
- onDrawerAnimationComplete(): void {
601
- if (!this.open()) {
602
- this.animationsCompleted.update(n => n + 1);
603
- }
604
- }
605
-
606
- onBackdropAnimationComplete(): void {
607
- if (!this.open()) {
608
- this.animationsCompleted.update(n => n + 1);
609
- }
610
- }
611
- ```
612
-
613
- **Improvements:**
614
-
615
- 1. Both animations event-driven
616
- 2. No timing assumptions
617
- 3. Handles browser rendering variations
618
- 4. Explicit completion signals
619
- 5. Extensible (easy to add more animations)
620
- 6. Signal-based reactivity
621
- 7. Clean cycle management
622
-
623
- ## Key Design Decisions
624
-
625
- ### 1. Provider Owns Everything
626
-
627
- **Decision:** `ScDrawerProvider` manages state, overlay lifecycle, backdrop, and focus trap
628
-
629
- **Why:**
630
-
631
- - Provider controls _when_ content appears (open state)
632
- - Provider controls _where_ content appears (CDK overlay)
633
- - Single component owns the full lifecycle -- no coordination between sibling components
634
- - `ScDrawerPortal` directive just marks _what_ content to portal -- no logic
635
-
636
- ### 2. `display: contents` on Provider
637
-
638
- **Decision:** Provider uses `display: contents` via Tailwind `contents` class to be invisible to CSS layout
639
-
640
- **Why:**
641
-
642
- - Provider is a `<div>` (required for CDK overlay's `ViewContainerRef`)
643
- - But it shouldn't affect the consumer's layout
644
- - `display: contents` makes the element's box disappear while keeping children in flow
645
- - Consumer can place trigger and other content without layout interference
646
-
647
- ### 3. Separation of Logical and Physical State
648
-
649
- **Decision:** Split logical state (`open`) from physical state (`overlayOpen`)
650
-
651
- **Why:**
652
-
653
- - Logical state drives animations
654
- - Physical state drives DOM lifecycle
655
- - Animations need time to complete before DOM removal
656
- - Clean separation makes flow easier to understand
657
-
658
- ### 4. Signal Counter Pattern
659
-
660
- **Decision:** Use signal counter to track multiple animation completions
661
-
662
- **Why:**
663
-
664
- - Both animations explicitly signal completion
665
- - No timing assumptions or hardcoded delays
666
- - Reactive: effect triggers when counter reaches target
667
- - Extensible: easy to add more animations (increase target)
668
- - Debuggable: counter value visible in Angular DevTools
669
-
670
- ### 5. Event-Driven Completion
671
-
672
- **Decision:** Both drawer and backdrop emit completion events
673
-
674
- **Why:**
675
-
676
- - Precise: no guessing when animations finish
677
- - Robust: handles browser timing variations
678
- - Decoupled: backdrop component remains reusable
679
- - Provider handles backdrop events directly in its own template
680
- - No arbitrary timeouts or magic numbers
681
-
682
- ### 6. Guard Pattern for Counter Increments
683
-
684
- **Decision:** Check `!open()` before incrementing animation counter
685
-
686
- **Why:**
687
-
688
- - Prevents counter increments during new open cycle
689
- - User might reopen during close animation
690
- - Without guard, counter would increment incorrectly for new cycle
691
- - Example: Close starts -> drawer completes -> user reopens -> backdrop completes would incorrectly increment counter for new open
692
- - Effect checks both counter AND `!open()` for safety
693
-
694
- ### 7. Effect-Based Reactivity
695
-
696
- **Decision:** Use Angular effects instead of manual subscriptions
697
-
698
- **Why:**
699
-
700
- - Automatic cleanup on component destruction
701
- - Declarative: describes "what" not "how"
702
- - Runs automatically when dependencies change
703
- - Easier to reason about than imperative code
704
-
705
- ### 8. Directive Pattern
706
-
707
- **Decision:** Implement ScDrawer as a Directive instead of a Component
708
-
709
- **Why:**
710
-
711
- - More flexible: attaches behavior to existing elements
712
- - Lighter weight: no additional wrapper element
713
- - Composable: easy to combine with other directives
714
- - Similar to how CDK components work
715
- - Still supports animation coordination through host bindings
716
-
717
- ### 9. Directional Animation System
718
-
719
- **Decision:** Use `direction` input to determine animation direction dynamically
720
-
721
- **Why:**
722
-
723
- - Single directive handles all four directions
724
- - Animation classes computed based on direction
725
- - Maintains consistency across all directions
726
- - Easy to add new directions if needed
727
-
728
- ### 10. Backdrop + Escape Handling
729
-
730
- **Decision:** Provider subscribes to CDK overlay's `backdropClick()` and `keydownEvents()` directly
731
-
732
- **Why:**
733
-
734
- - Provider owns the overlay, so it handles all overlay events directly
735
- - No need for portal to forward events
736
- - `backdropClick()` triggers `open.set(false)` on the provider
737
- - `keydownEvents()` filters for Escape key and triggers `open.set(false)`
738
- - Keeps event handling centralized in the lifecycle owner
739
-
740
- ## Animation Classes Reference
741
-
742
- ### Drawer Content Classes
743
-
744
- ```typescript
745
- // Position classes (fixed to specific direction)
746
- const directionBaseClasses: Record<DrawerDirection, string> = {
747
- top: 'inset-x-0 top-0 border-b rounded-b-[10px]',
748
- right: 'inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',
749
- bottom: 'inset-x-0 bottom-0 border-t rounded-t-[10px]',
750
- left: 'inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',
751
- };
752
-
753
- // Directional animation classes
754
- const directionAnimationClasses: Record<DrawerDirection, string> = {
755
- top: 'slide-in-from-top data-[state=closed]:slide-out-to-top',
756
- right: 'slide-in-from-right data-[state=closed]:slide-out-to-right',
757
- bottom: 'slide-in-from-bottom data-[state=closed]:slide-out-to-bottom',
758
- left: 'slide-in-from-left data-[state=closed]:slide-out-to-left',
759
- };
760
-
761
- // Entry animation (fade + slide based on direction)
762
- ('animate-in fade-in-0 duration-300');
763
- directionAnimationClasses[direction];
764
-
765
- // Exit animation (via data-state="closed")
766
- ('data-[state=closed]:animate-out');
767
- ('data-[state=closed]:fade-out-0');
768
- ('data-[state=closed]:duration-300');
769
- ```
770
-
771
- ### Backdrop Classes
772
-
773
- ```typescript
774
- // Entry animation
775
- 'animate-in fade-in-0 duration-300';
776
-
777
- // Exit animation (via data-state="closed")
778
- 'data-[state=closed]:animate-out';
779
- 'data-[state=closed]:fade-out-0';
780
- 'data-[state=closed]:duration-300';
781
- ```
782
-
783
- ## Accessibility Considerations
784
-
785
- The animation system preserves accessibility:
786
-
787
- 1. **Focus Management:** Drawer auto-focuses on mount via `cdkTrapFocus` with `cdkTrapFocusAutoCapture`
788
- 2. **ARIA Attributes:** Set before animations start (`role="dialog"`, `aria-modal="true"`)
789
- 3. **Screen Readers:** Announce drawer immediately (not after animation)
790
- 4. **Keyboard:** Escape key closes the drawer (via CDK overlay keydown events)
791
- 5. **Backdrop Click:** Click outside closes the drawer (via CDK overlay backdrop click)
792
- 6. **Reduced Motion:** Could add `@media (prefers-reduced-motion)` support
793
- 7. **Drawer Handle:** Optional visual indicator improves discoverability on mobile
794
-
795
- ## Performance Considerations
796
-
797
- ### Efficient Rendering
798
-
799
- - Uses `ChangeDetectionStrategy.OnPush` everywhere
800
- - Effects only run when dependencies change
801
- - No manual subscriptions to manage
802
- - Single overlay instance reused
803
- - Directive pattern adds minimal overhead
804
-
805
- ### Animation Performance
806
-
807
- - CSS animations (GPU accelerated)
808
- - Opacity and transform (composited properties)
809
- - No layout thrashing
810
- - Minimal JavaScript during animation
811
-
812
- ### Memory Management
813
-
814
- - Effects auto-cleanup on destroy
815
- - No timeout leaks (event-driven approach)
816
- - Overlay detached after use
817
- - No memory leaks
818
-
819
- ## Consumer API
820
-
821
- ```html
822
- <div sc-drawer-provider direction="bottom" [(open)]="isOpen">
823
- <button sc-drawer-trigger sc-button>Open</button>
824
- <ng-template scDrawerPortal>
825
- <div sc-drawer>
826
- <div sc-drawer-handle></div>
827
- <div sc-drawer-header>
828
- <h2 sc-drawer-title>Title</h2>
829
- <p sc-drawer-description>Description</p>
830
- </div>
831
- <!-- content -->
832
- <div sc-drawer-footer>
833
- <button sc-drawer-close sc-button>Close</button>
834
- </div>
835
- </div>
836
- </ng-template>
837
- </div>
838
- ```
839
-
840
- **Key points:**
841
-
842
- - `scDrawerPortal` on `ng-template` marks lazy content
843
- - Content is only instantiated when drawer opens
844
- - `ScDrawerPortal` must be imported in the consumer's `imports` array
845
- - `[(open)]` provides two-way binding for programmatic control
846
- - `direction` input on the provider controls slide direction
847
-
848
- ## Future Enhancements
849
-
850
- ### Potential Improvements
851
-
852
- 1. **Variable Animation Durations:**
853
- - Input property for animation duration
854
- - Provider passes duration to drawer and backdrop
855
- - Configurable timing for different use cases
856
-
857
- 2. **Animation Events:**
858
- - Output events for animation start/end
859
- - External components can react to animation state
860
-
861
- 3. **Reduced Motion Support:**
862
- - Detect `prefers-reduced-motion`
863
- - Instant show/hide if user prefers
864
- - Keep accessibility benefits
865
-
866
- 4. **Stacking Context:**
867
- - Support multiple overlapping drawers
868
- - z-index management
869
- - Close all vs close top
870
-
871
- 5. **Custom Animations:**
872
- - Allow custom animation classes via input
873
- - Support different animation styles per direction
874
-
875
- 6. **Drag-to-Close:**
876
- - Native touch/pointer gesture support
877
- - Threshold-based closing
878
- - Spring physics for natural feel
879
-
880
- ## Testing Considerations
881
-
882
- ### What to Test
883
-
884
- 1. **State Transitions:**
885
- - open: false -> true -> false
886
- - overlayOpen follows correctly
887
- - state syncs with open
888
-
889
- 2. **Animation Timing:**
890
- - Animations play for full duration
891
- - DOM not removed early
892
- - Backdrop fades correctly
893
- - Drawer slides in correct direction
894
-
895
- 3. **All Directions:**
896
- - Test each direction (top, right, bottom, left)
897
- - Verify correct slide direction
898
- - Ensure consistent timing across all directions
899
-
900
- 4. **Directive Behavior:**
901
- - Host element receives correct classes
902
- - Animation events fire on host
903
- - data-state attribute updates correctly
904
-
905
- 5. **Edge Cases:**
906
- - Rapid open/close
907
- - Open during close animation
908
- - Close during open animation
909
- - Changing direction while open
910
-
911
- 6. **Cleanup:**
912
- - No memory leaks
913
- - Effects unsubscribe
914
- - No hanging timeouts
915
-
916
- ### Testing Strategy
917
-
918
- ```typescript
919
- // Example test structure
920
- describe('Drawer Animations', () => {
921
- it('should keep DOM mounted during close animation', async () => {
922
- // Open drawer
923
- provider.open.set(true);
924
- fixture.detectChanges();
925
-
926
- // Close drawer
927
- provider.open.set(false);
928
- fixture.detectChanges();
929
-
930
- // Immediately after close - DOM should still exist
931
- expect(overlayRef.hasAttached()).toBe(true);
932
-
933
- // After animations complete - DOM should be removed
934
- await delay(400); // Buffer for 300ms animation
935
- expect(overlayRef.hasAttached()).toBe(false);
936
- });
937
-
938
- it('should slide from correct direction', () => {
939
- provider.direction.set('left');
940
- provider.open.set(true);
941
- fixture.detectChanges();
942
-
943
- const drawer = fixture.debugElement.query(By.css('[sc-drawer]'));
944
- expect(drawer.nativeElement.classList.contains('slide-in-from-left')).toBe(true);
945
- });
946
- });
947
- ```
948
-
949
- ## Summary
950
-
951
- The drawer animation architecture achieves smooth, reliable animations through:
952
-
953
- 1. **Two-signal pattern:** Separates intent (`open`) from DOM lifecycle (`overlayOpen`)
954
- 2. **Signal counter coordination:** Tracks completion of multiple animations (`animationsCompleted`)
955
- 3. **Event-driven completion:** Both drawer and backdrop explicitly signal when done
956
- 4. **Reactive updates:** Effects respond to state changes automatically
957
- 5. **Robust timing:** No assumptions, handles browser variations
958
- 6. **Centralized ownership:** Provider owns all lifecycle logic; portal directive is just a content marker
959
- 7. **Directional animations:** Dynamically applies correct slide direction based on `direction` input
960
- 8. **Directive pattern:** Lightweight, composable behavior attachment
961
-
962
- This architecture provides:
963
-
964
- - Reliable animation completion detection
965
- - Clean separation of concerns
966
- - Extensibility (easy to add more animations)
967
- - No race conditions or timing assumptions
968
- - Debuggable signal-based state
969
- - Better user experience (smooth, never cut off)
970
- - Flexible directional animations (top, right, bottom, left)
971
- - Directive pattern for maximum flexibility
972
- - Lazy content instantiation via `ng-template`