@kouji-ui/core 0.1.1 → 0.1.2

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 (535) hide show
  1. package/fesm2022/kouji-ui-core.mjs +26789 -0
  2. package/fesm2022/kouji-ui-core.mjs.map +1 -0
  3. package/package.json +5 -6
  4. package/types/kouji-ui-core.d.ts +13545 -0
  5. package/.turbo/turbo-build.log +0 -30
  6. package/CHANGELOG.md +0 -190
  7. package/ng-package.json +0 -11
  8. package/src/a11y/.gitkeep +0 -0
  9. package/src/a11y/aria-describedby.spec.ts +0 -55
  10. package/src/a11y/aria-describedby.ts +0 -37
  11. package/src/a11y/aria-labelledby.spec.ts +0 -55
  12. package/src/a11y/aria-labelledby.ts +0 -38
  13. package/src/a11y/focus-trap.spec.ts +0 -86
  14. package/src/a11y/focus-trap.ts +0 -72
  15. package/src/a11y/index.ts +0 -10
  16. package/src/a11y/live-region.spec.ts +0 -58
  17. package/src/a11y/live-region.ts +0 -50
  18. package/src/a11y/roving-tabindex.spec.ts +0 -201
  19. package/src/a11y/roving-tabindex.ts +0 -153
  20. package/src/a11y/visually-hidden.spec.ts +0 -34
  21. package/src/a11y/visually-hidden.ts +0 -26
  22. package/src/accordion/accordion.context.ts +0 -44
  23. package/src/accordion/accordion.spec.ts +0 -242
  24. package/src/accordion/accordion.ts +0 -401
  25. package/src/accordion/index.ts +0 -8
  26. package/src/alert/alert.context.ts +0 -28
  27. package/src/alert/alert.spec.ts +0 -217
  28. package/src/alert/alert.ts +0 -417
  29. package/src/alert/config.ts +0 -46
  30. package/src/alert/index.ts +0 -19
  31. package/src/avatar/avatar-group.context.ts +0 -45
  32. package/src/avatar/avatar-group.spec.ts +0 -358
  33. package/src/avatar/avatar-group.ts +0 -259
  34. package/src/avatar/avatar.spec.ts +0 -18
  35. package/src/avatar/avatar.ts +0 -39
  36. package/src/avatar/index.ts +0 -11
  37. package/src/badge/badge.spec.ts +0 -28
  38. package/src/badge/badge.ts +0 -35
  39. package/src/badge/index.ts +0 -1
  40. package/src/breadcrumb/breadcrumb-current.ts +0 -38
  41. package/src/breadcrumb/breadcrumb-ellipsis.ts +0 -71
  42. package/src/breadcrumb/breadcrumb-item.ts +0 -41
  43. package/src/breadcrumb/breadcrumb-link.ts +0 -44
  44. package/src/breadcrumb/breadcrumb-list.ts +0 -42
  45. package/src/breadcrumb/breadcrumb-separator.ts +0 -45
  46. package/src/breadcrumb/breadcrumb.context.ts +0 -45
  47. package/src/breadcrumb/breadcrumb.spec.ts +0 -354
  48. package/src/breadcrumb/breadcrumb.ts +0 -239
  49. package/src/breadcrumb/config.ts +0 -84
  50. package/src/breadcrumb/index.ts +0 -18
  51. package/src/button/_examples/button.example.ts +0 -71
  52. package/src/button/_examples/button.finance.example.ts +0 -83
  53. package/src/button/_examples/button.retro.example.ts +0 -91
  54. package/src/button/_examples/button.sizes.example.ts +0 -60
  55. package/src/button/_examples/index.ts +0 -6
  56. package/src/button/button.spec.ts +0 -163
  57. package/src/button/button.ts +0 -142
  58. package/src/button/config.spec.ts +0 -33
  59. package/src/button/config.ts +0 -45
  60. package/src/button/index.ts +0 -2
  61. package/src/button-group/button-group.context.ts +0 -28
  62. package/src/button-group/button-group.spec.ts +0 -99
  63. package/src/button-group/button-group.ts +0 -99
  64. package/src/button-group/index.ts +0 -2
  65. package/src/calendar/calendar-day.ts +0 -102
  66. package/src/calendar/calendar-grid.ts +0 -90
  67. package/src/calendar/calendar-header.ts +0 -65
  68. package/src/calendar/calendar.context.ts +0 -53
  69. package/src/calendar/calendar.spec.ts +0 -225
  70. package/src/calendar/calendar.ts +0 -233
  71. package/src/calendar/date-utils.ts +0 -225
  72. package/src/calendar/index.ts +0 -28
  73. package/src/carousel/carousel.context.ts +0 -81
  74. package/src/carousel/carousel.spec.ts +0 -337
  75. package/src/carousel/carousel.ts +0 -919
  76. package/src/carousel/index.ts +0 -22
  77. package/src/cascade-select/cascade-select-option.ts +0 -205
  78. package/src/cascade-select/cascade-select-panel.ts +0 -106
  79. package/src/cascade-select/cascade-select-root.ts +0 -265
  80. package/src/cascade-select/cascade-select-sub-panel.ts +0 -168
  81. package/src/cascade-select/cascade-select-trigger.ts +0 -44
  82. package/src/cascade-select/cascade-select.context.ts +0 -71
  83. package/src/cascade-select/cascade-select.spec.ts +0 -241
  84. package/src/cascade-select/cascade-select.ts +0 -5
  85. package/src/cascade-select/index.ts +0 -11
  86. package/src/chart/chart.spec.ts +0 -27
  87. package/src/chart/chart.ts +0 -52
  88. package/src/chart/index.ts +0 -1
  89. package/src/chat/chat-avatar.ts +0 -31
  90. package/src/chat/chat-bubble.ts +0 -49
  91. package/src/chat/chat-footer.ts +0 -67
  92. package/src/chat/chat-header.ts +0 -41
  93. package/src/chat/chat-log.ts +0 -43
  94. package/src/chat/chat.context.ts +0 -64
  95. package/src/chat/chat.spec.ts +0 -341
  96. package/src/chat/chat.ts +0 -191
  97. package/src/chat/config.ts +0 -53
  98. package/src/chat/index.ts +0 -21
  99. package/src/checkbox/checkbox.spec.ts +0 -35
  100. package/src/checkbox/checkbox.ts +0 -89
  101. package/src/checkbox/index.ts +0 -1
  102. package/src/color-picker/color-picker.context.ts +0 -74
  103. package/src/color-picker/color-picker.spec.ts +0 -241
  104. package/src/color-picker/color-picker.ts +0 -698
  105. package/src/color-picker/color-picker.utils.ts +0 -140
  106. package/src/color-picker/index.ts +0 -28
  107. package/src/combobox/combobox-input.ts +0 -143
  108. package/src/combobox/combobox-listbox.ts +0 -49
  109. package/src/combobox/combobox-option.ts +0 -43
  110. package/src/combobox/combobox-root.ts +0 -281
  111. package/src/combobox/combobox.spec.ts +0 -75
  112. package/src/combobox/combobox.ts +0 -4
  113. package/src/combobox/index.ts +0 -4
  114. package/src/command-palette/command-empty.ts +0 -36
  115. package/src/command-palette/command-group.ts +0 -21
  116. package/src/command-palette/command-input.ts +0 -70
  117. package/src/command-palette/command-item.ts +0 -60
  118. package/src/command-palette/command-list.ts +0 -25
  119. package/src/command-palette/command-palette-dialog.ts +0 -74
  120. package/src/command-palette/command-palette-trigger.ts +0 -64
  121. package/src/command-palette/command-palette.filters.ts +0 -53
  122. package/src/command-palette/command-palette.spec.ts +0 -349
  123. package/src/command-palette/command-palette.ts +0 -204
  124. package/src/command-palette/command-separator.ts +0 -18
  125. package/src/command-palette/index.ts +0 -15
  126. package/src/confirm-popup/confirm-popup-action.ts +0 -39
  127. package/src/confirm-popup/confirm-popup-cancel.ts +0 -38
  128. package/src/confirm-popup/confirm-popup-content.ts +0 -113
  129. package/src/confirm-popup/confirm-popup-message.ts +0 -36
  130. package/src/confirm-popup/confirm-popup-trigger.ts +0 -31
  131. package/src/confirm-popup/confirm-popup.context.ts +0 -41
  132. package/src/confirm-popup/confirm-popup.spec.ts +0 -337
  133. package/src/confirm-popup/confirm-popup.ts +0 -109
  134. package/src/confirm-popup/index.ts +0 -12
  135. package/src/date-picker/date-picker-calendar.ts +0 -65
  136. package/src/date-picker/date-picker-trigger.ts +0 -215
  137. package/src/date-picker/date-picker.context.ts +0 -50
  138. package/src/date-picker/date-picker.spec.ts +0 -117
  139. package/src/date-picker/date-picker.ts +0 -127
  140. package/src/date-picker/index.ts +0 -7
  141. package/src/dialog/_examples/dialog.confirm.example.ts +0 -145
  142. package/src/dialog/_examples/dialog.example.ts +0 -106
  143. package/src/dialog/_examples/dialog.finance.example.ts +0 -121
  144. package/src/dialog/_examples/dialog.retro.example.ts +0 -126
  145. package/src/dialog/_examples/index.ts +0 -6
  146. package/src/dialog/dialog.ref.ts +0 -42
  147. package/src/dialog/dialog.service.ts +0 -66
  148. package/src/dialog/dialog.spec.ts +0 -37
  149. package/src/dialog/dialog.ts +0 -26
  150. package/src/dialog/index.ts +0 -3
  151. package/src/divider/divider.spec.ts +0 -223
  152. package/src/divider/divider.ts +0 -137
  153. package/src/divider/index.ts +0 -5
  154. package/src/drawer/drawer.ref.ts +0 -63
  155. package/src/drawer/drawer.service.ts +0 -106
  156. package/src/drawer/drawer.spec.ts +0 -117
  157. package/src/drawer/drawer.ts +0 -122
  158. package/src/drawer/index.ts +0 -10
  159. package/src/dropdown-menu/dropdown-menu-content.ts +0 -258
  160. package/src/dropdown-menu/dropdown-menu-group.ts +0 -31
  161. package/src/dropdown-menu/dropdown-menu-item.ts +0 -51
  162. package/src/dropdown-menu/dropdown-menu-label.ts +0 -41
  163. package/src/dropdown-menu/dropdown-menu-separator.ts +0 -27
  164. package/src/dropdown-menu/dropdown-menu-trigger.ts +0 -140
  165. package/src/dropdown-menu/dropdown-menu.spec.ts +0 -265
  166. package/src/dropdown-menu/dropdown-menu.ts +0 -60
  167. package/src/dropdown-menu/index.ts +0 -15
  168. package/src/example-components.ts +0 -42
  169. package/src/field/field-error.ts +0 -49
  170. package/src/field/field-group.ts +0 -39
  171. package/src/field/field-help.ts +0 -47
  172. package/src/field/field-label.ts +0 -30
  173. package/src/field/field.context.ts +0 -28
  174. package/src/field/field.spec.ts +0 -179
  175. package/src/field/field.ts +0 -121
  176. package/src/field/index.ts +0 -6
  177. package/src/file-upload/file-upload.context.ts +0 -89
  178. package/src/file-upload/file-upload.spec.ts +0 -290
  179. package/src/file-upload/file-upload.ts +0 -639
  180. package/src/file-upload/file-upload.types.ts +0 -59
  181. package/src/file-upload/index.ts +0 -23
  182. package/src/form/form-error-summary.ts +0 -87
  183. package/src/form/form-field.context.ts +0 -3
  184. package/src/form/form-field.spec.ts +0 -25
  185. package/src/form/form-field.ts +0 -52
  186. package/src/form/form.context.ts +0 -53
  187. package/src/form/form.spec.ts +0 -162
  188. package/src/form/form.ts +0 -326
  189. package/src/form/index.ts +0 -11
  190. package/src/icon/E2E.md +0 -14
  191. package/src/icon/icon.directive.spec.ts +0 -198
  192. package/src/icon/icon.directive.ts +0 -113
  193. package/src/icon/icon.mode.spec.ts +0 -29
  194. package/src/icon/icon.mode.ts +0 -23
  195. package/src/icon/icon.providers.spec.ts +0 -63
  196. package/src/icon/icon.providers.ts +0 -47
  197. package/src/icon/icon.resolver.spec.ts +0 -96
  198. package/src/icon/icon.resolver.ts +0 -49
  199. package/src/icon/icon.tokens.ts +0 -88
  200. package/src/icon/icon.types.ts +0 -48
  201. package/src/icon/index.ts +0 -21
  202. package/src/input/index.ts +0 -1
  203. package/src/input/input.spec.ts +0 -43
  204. package/src/input/input.ts +0 -89
  205. package/src/input-group/index.ts +0 -3
  206. package/src/input-group/input-group-addon.ts +0 -92
  207. package/src/input-group/input-group.context.ts +0 -27
  208. package/src/input-group/input-group.spec.ts +0 -186
  209. package/src/input-group/input-group.ts +0 -136
  210. package/src/input-mask/index.ts +0 -11
  211. package/src/input-mask/input-mask.compile.ts +0 -69
  212. package/src/input-mask/input-mask.engine.ts +0 -376
  213. package/src/input-mask/input-mask.presets.ts +0 -24
  214. package/src/input-mask/input-mask.spec.ts +0 -304
  215. package/src/input-mask/input-mask.tokens.ts +0 -49
  216. package/src/input-mask/input-mask.ts +0 -280
  217. package/src/input-otp/index.ts +0 -2
  218. package/src/input-otp/input-otp.context.ts +0 -41
  219. package/src/input-otp/input-otp.spec.ts +0 -308
  220. package/src/input-otp/input-otp.ts +0 -470
  221. package/src/kbd/index.ts +0 -1
  222. package/src/kbd/kbd.spec.ts +0 -127
  223. package/src/kbd/kbd.ts +0 -132
  224. package/src/link/config.ts +0 -44
  225. package/src/link/index.ts +0 -2
  226. package/src/link/link.spec.ts +0 -246
  227. package/src/link/link.ts +0 -226
  228. package/src/list/index.ts +0 -11
  229. package/src/list/list.spec.ts +0 -237
  230. package/src/list/list.ts +0 -277
  231. package/src/menubar/index.ts +0 -7
  232. package/src/menubar/menubar-item.ts +0 -204
  233. package/src/menubar/menubar.context.ts +0 -43
  234. package/src/menubar/menubar.spec.ts +0 -433
  235. package/src/menubar/menubar.ts +0 -309
  236. package/src/number-input/index.ts +0 -4
  237. package/src/number-input/number-input-group.ts +0 -64
  238. package/src/number-input/number-input.context.ts +0 -31
  239. package/src/number-input/number-input.format.ts +0 -148
  240. package/src/number-input/number-input.spec.ts +0 -170
  241. package/src/number-input/number-input.ts +0 -457
  242. package/src/number-input/number-stepper.ts +0 -193
  243. package/src/overlay-badge/index.ts +0 -7
  244. package/src/overlay-badge/overlay-badge-content.ts +0 -73
  245. package/src/overlay-badge/overlay-badge.context.ts +0 -37
  246. package/src/overlay-badge/overlay-badge.spec.ts +0 -220
  247. package/src/overlay-badge/overlay-badge.ts +0 -128
  248. package/src/pagination/config.ts +0 -82
  249. package/src/pagination/index.ts +0 -19
  250. package/src/pagination/page-tokens.ts +0 -78
  251. package/src/pagination/pagination-ellipsis.ts +0 -69
  252. package/src/pagination/pagination-first.ts +0 -84
  253. package/src/pagination/pagination-info.ts +0 -70
  254. package/src/pagination/pagination-item.ts +0 -81
  255. package/src/pagination/pagination-last.ts +0 -85
  256. package/src/pagination/pagination-next.ts +0 -86
  257. package/src/pagination/pagination-previous.ts +0 -90
  258. package/src/pagination/pagination.context.ts +0 -52
  259. package/src/pagination/pagination.spec.ts +0 -388
  260. package/src/pagination/pagination.ts +0 -288
  261. package/src/password-input/index.ts +0 -15
  262. package/src/password-input/password-input.context.ts +0 -65
  263. package/src/password-input/password-input.scorer.ts +0 -34
  264. package/src/password-input/password-input.spec.ts +0 -274
  265. package/src/password-input/password-input.ts +0 -488
  266. package/src/popover/_examples/index.ts +0 -5
  267. package/src/popover/_examples/popover.example.ts +0 -92
  268. package/src/popover/_examples/popover.finance.example.ts +0 -106
  269. package/src/popover/_examples/popover.retro.example.ts +0 -103
  270. package/src/popover/index.ts +0 -5
  271. package/src/popover/popover-arrow.ts +0 -30
  272. package/src/popover/popover-close.ts +0 -36
  273. package/src/popover/popover-content.ts +0 -41
  274. package/src/popover/popover-title.ts +0 -39
  275. package/src/popover/popover-trigger.ts +0 -40
  276. package/src/popover/popover.spec.ts +0 -59
  277. package/src/popover/popover.ts +0 -5
  278. package/src/presets/bind-presets.spec.ts +0 -50
  279. package/src/presets/bind-presets.ts +0 -43
  280. package/src/presets/index.ts +0 -3
  281. package/src/presets/size.spec.ts +0 -67
  282. package/src/presets/size.ts +0 -59
  283. package/src/presets/variant.spec.ts +0 -72
  284. package/src/presets/variant.ts +0 -62
  285. package/src/primitives/.gitkeep +0 -0
  286. package/src/primitives/directionality/directionality.spec.ts +0 -112
  287. package/src/primitives/directionality/directionality.ts +0 -89
  288. package/src/primitives/directionality/index.ts +0 -1
  289. package/src/primitives/forms/form-control.spec.ts +0 -67
  290. package/src/primitives/forms/form-control.ts +0 -94
  291. package/src/primitives/forms/index.ts +0 -1
  292. package/src/primitives/index.ts +0 -6
  293. package/src/primitives/interaction/disabled.spec.ts +0 -47
  294. package/src/primitives/interaction/disabled.ts +0 -31
  295. package/src/primitives/interaction/focus-ring.spec.ts +0 -62
  296. package/src/primitives/interaction/focus-ring.ts +0 -59
  297. package/src/primitives/interaction/index.ts +0 -2
  298. package/src/primitives/list/filterable-list.spec.ts +0 -114
  299. package/src/primitives/list/filterable-list.ts +0 -126
  300. package/src/primitives/list/group.spec.ts +0 -99
  301. package/src/primitives/list/group.ts +0 -139
  302. package/src/primitives/list/index.ts +0 -8
  303. package/src/primitives/list/inject-helpers.ts +0 -8
  304. package/src/primitives/list/item.spec.ts +0 -173
  305. package/src/primitives/list/item.ts +0 -222
  306. package/src/primitives/list/navigator.spec.ts +0 -286
  307. package/src/primitives/list/navigator.ts +0 -238
  308. package/src/primitives/list/selection.spec.ts +0 -214
  309. package/src/primitives/list/selection.ts +0 -339
  310. package/src/primitives/list/tokens.ts +0 -106
  311. package/src/primitives/list/type-ahead.spec.ts +0 -58
  312. package/src/primitives/list/type-ahead.ts +0 -46
  313. package/src/primitives/overlay/backdrop.spec.ts +0 -54
  314. package/src/primitives/overlay/backdrop.ts +0 -31
  315. package/src/primitives/overlay/builder.spec.ts +0 -38
  316. package/src/primitives/overlay/builder.ts +0 -151
  317. package/src/primitives/overlay/container.ts +0 -42
  318. package/src/primitives/overlay/context.ts +0 -14
  319. package/src/primitives/overlay/controller.spec.ts +0 -86
  320. package/src/primitives/overlay/controller.ts +0 -190
  321. package/src/primitives/overlay/id.spec.ts +0 -24
  322. package/src/primitives/overlay/id.ts +0 -17
  323. package/src/primitives/overlay/index.ts +0 -18
  324. package/src/primitives/overlay/overlay.css +0 -42
  325. package/src/primitives/overlay/panel.spec.ts +0 -52
  326. package/src/primitives/overlay/panel.ts +0 -102
  327. package/src/primitives/overlay/stack.spec.ts +0 -55
  328. package/src/primitives/overlay/stack.ts +0 -113
  329. package/src/primitives/overlay/strategies/backdrop/blurred.spec.ts +0 -11
  330. package/src/primitives/overlay/strategies/backdrop/blurred.ts +0 -5
  331. package/src/primitives/overlay/strategies/backdrop/none.spec.ts +0 -10
  332. package/src/primitives/overlay/strategies/backdrop/none.ts +0 -9
  333. package/src/primitives/overlay/strategies/backdrop/solid.spec.ts +0 -18
  334. package/src/primitives/overlay/strategies/backdrop/solid.ts +0 -23
  335. package/src/primitives/overlay/strategies/focus-trap/inert-based.spec.ts +0 -28
  336. package/src/primitives/overlay/strategies/focus-trap/inert-based.ts +0 -38
  337. package/src/primitives/overlay/strategies/focus-trap/no-trap.spec.ts +0 -9
  338. package/src/primitives/overlay/strategies/focus-trap/no-trap.ts +0 -8
  339. package/src/primitives/overlay/strategies/focus-trap/tab-cycle.spec.ts +0 -49
  340. package/src/primitives/overlay/strategies/focus-trap/tab-cycle.ts +0 -85
  341. package/src/primitives/overlay/strategies/index.ts +0 -34
  342. package/src/primitives/overlay/strategies/live-announcer/_announce.ts +0 -35
  343. package/src/primitives/overlay/strategies/live-announcer/assertive.spec.ts +0 -21
  344. package/src/primitives/overlay/strategies/live-announcer/assertive.ts +0 -11
  345. package/src/primitives/overlay/strategies/live-announcer/polite.spec.ts +0 -21
  346. package/src/primitives/overlay/strategies/live-announcer/polite.ts +0 -11
  347. package/src/primitives/overlay/strategies/live-announcer/silent.spec.ts +0 -12
  348. package/src/primitives/overlay/strategies/live-announcer/silent.ts +0 -5
  349. package/src/primitives/overlay/strategies/mount/body-portal.spec.ts +0 -40
  350. package/src/primitives/overlay/strategies/mount/body-portal.ts +0 -91
  351. package/src/primitives/overlay/strategies/mount/in-container.spec.ts +0 -43
  352. package/src/primitives/overlay/strategies/mount/in-container.ts +0 -39
  353. package/src/primitives/overlay/strategies/mount/in-place.spec.ts +0 -40
  354. package/src/primitives/overlay/strategies/mount/in-place.ts +0 -20
  355. package/src/primitives/overlay/strategies/position/anchored-to.spec.ts +0 -56
  356. package/src/primitives/overlay/strategies/position/anchored-to.ts +0 -248
  357. package/src/primitives/overlay/strategies/position/corner.spec.ts +0 -36
  358. package/src/primitives/overlay/strategies/position/corner.ts +0 -33
  359. package/src/primitives/overlay/strategies/position/edge-sheet.spec.ts +0 -32
  360. package/src/primitives/overlay/strategies/position/edge-sheet.ts +0 -36
  361. package/src/primitives/overlay/strategies/position/in-place-sibling.spec.ts +0 -25
  362. package/src/primitives/overlay/strategies/position/in-place-sibling.ts +0 -13
  363. package/src/primitives/overlay/strategies/position/point-at.spec.ts +0 -40
  364. package/src/primitives/overlay/strategies/position/point-at.ts +0 -34
  365. package/src/primitives/overlay/strategies/position/viewport-centered.spec.ts +0 -31
  366. package/src/primitives/overlay/strategies/position/viewport-centered.ts +0 -31
  367. package/src/primitives/overlay/strategies/scroll-lock/css-clip.spec.ts +0 -15
  368. package/src/primitives/overlay/strategies/scroll-lock/css-clip.ts +0 -39
  369. package/src/primitives/overlay/strategies/scroll-lock/html-overflow.spec.ts +0 -21
  370. package/src/primitives/overlay/strategies/scroll-lock/html-overflow.ts +0 -44
  371. package/src/primitives/overlay/strategies/scroll-lock/none.spec.ts +0 -9
  372. package/src/primitives/overlay/strategies/scroll-lock/none.ts +0 -5
  373. package/src/primitives/overlay/strategies/trigger-event/on-click.spec.ts +0 -32
  374. package/src/primitives/overlay/strategies/trigger-event/on-click.ts +0 -28
  375. package/src/primitives/overlay/strategies/trigger-event/on-context-menu.spec.ts +0 -45
  376. package/src/primitives/overlay/strategies/trigger-event/on-context-menu.ts +0 -70
  377. package/src/primitives/overlay/strategies/trigger-event/on-focus-or-input.spec.ts +0 -35
  378. package/src/primitives/overlay/strategies/trigger-event/on-focus-or-input.ts +0 -34
  379. package/src/primitives/overlay/strategies/trigger-event/on-focus.spec.ts +0 -64
  380. package/src/primitives/overlay/strategies/trigger-event/on-focus.ts +0 -37
  381. package/src/primitives/overlay/strategies/trigger-event/on-hotkey.spec.ts +0 -37
  382. package/src/primitives/overlay/strategies/trigger-event/on-hotkey.ts +0 -59
  383. package/src/primitives/overlay/strategies/trigger-event/on-hover.spec.ts +0 -34
  384. package/src/primitives/overlay/strategies/trigger-event/on-hover.ts +0 -86
  385. package/src/primitives/overlay/strategies/trigger-event/programmatic.spec.ts +0 -16
  386. package/src/primitives/overlay/strategies/trigger-event/programmatic.ts +0 -12
  387. package/src/primitives/overlay/tokens.ts +0 -54
  388. package/src/primitives/overlay/trigger.spec.ts +0 -103
  389. package/src/primitives/overlay/trigger.ts +0 -75
  390. package/src/primitives/overlay/types.ts +0 -24
  391. package/src/primitives/overlay/wrapper.ts +0 -50
  392. package/src/primitives/signals/deep-signal.ts +0 -109
  393. package/src/primitives/signals/index.ts +0 -1
  394. package/src/progress-bar/config.ts +0 -48
  395. package/src/progress-bar/index.ts +0 -12
  396. package/src/progress-bar/progress-bar-fill.ts +0 -37
  397. package/src/progress-bar/progress-bar.context.ts +0 -34
  398. package/src/progress-bar/progress-bar.spec.ts +0 -423
  399. package/src/progress-bar/progress-bar.ts +0 -217
  400. package/src/public-api.ts +0 -84
  401. package/src/radio/index.ts +0 -2
  402. package/src/radio/radio.context.ts +0 -3
  403. package/src/radio/radio.spec.ts +0 -36
  404. package/src/radio/radio.ts +0 -66
  405. package/src/select/index.ts +0 -4
  406. package/src/select/select-content.ts +0 -69
  407. package/src/select/select-option.ts +0 -35
  408. package/src/select/select-root.ts +0 -129
  409. package/src/select/select-trigger.ts +0 -93
  410. package/src/select/select.spec.ts +0 -138
  411. package/src/select/select.ts +0 -4
  412. package/src/skeleton/index.ts +0 -5
  413. package/src/skeleton/skeleton.spec.ts +0 -115
  414. package/src/skeleton/skeleton.ts +0 -56
  415. package/src/slider/index.ts +0 -10
  416. package/src/slider/slider-range.ts +0 -49
  417. package/src/slider/slider-thumb.ts +0 -335
  418. package/src/slider/slider-track.ts +0 -70
  419. package/src/slider/slider.context.ts +0 -79
  420. package/src/slider/slider.geometry.ts +0 -73
  421. package/src/slider/slider.spec.ts +0 -216
  422. package/src/slider/slider.ts +0 -443
  423. package/src/speed-dial/index.ts +0 -10
  424. package/src/speed-dial/speed-dial-action.ts +0 -40
  425. package/src/speed-dial/speed-dial-actions.ts +0 -31
  426. package/src/speed-dial/speed-dial-trigger.ts +0 -55
  427. package/src/speed-dial/speed-dial.context.ts +0 -36
  428. package/src/speed-dial/speed-dial.spec.ts +0 -143
  429. package/src/speed-dial/speed-dial.ts +0 -127
  430. package/src/spinner/config.ts +0 -48
  431. package/src/spinner/index.ts +0 -8
  432. package/src/spinner/spinner.spec.ts +0 -262
  433. package/src/spinner/spinner.ts +0 -129
  434. package/src/stepper/index.ts +0 -15
  435. package/src/stepper/stepper.context.ts +0 -63
  436. package/src/stepper/stepper.spec.ts +0 -403
  437. package/src/stepper/stepper.ts +0 -544
  438. package/src/styles/docs-themes.css +0 -82
  439. package/src/styles.css +0 -17
  440. package/src/table/column-helpers.spec.ts +0 -74
  441. package/src/table/column-helpers.ts +0 -68
  442. package/src/table/filter-fns.ts +0 -230
  443. package/src/table/filter-models.spec.ts +0 -240
  444. package/src/table/filter-models.ts +0 -124
  445. package/src/table/filter-params.ts +0 -90
  446. package/src/table/grid-api-impl.ts +0 -321
  447. package/src/table/grid-api.spec.ts +0 -178
  448. package/src/table/grid-api.ts +0 -285
  449. package/src/table/index.ts +0 -73
  450. package/src/table/table-cell.spec.ts +0 -43
  451. package/src/table/table-cell.ts +0 -38
  452. package/src/table/table-filter-outlet.ts +0 -120
  453. package/src/table/table-header.spec.ts +0 -54
  454. package/src/table/table-header.ts +0 -63
  455. package/src/table/table-keyboard.spec.ts +0 -68
  456. package/src/table/table-keyboard.ts +0 -107
  457. package/src/table/table-resource.spec.ts +0 -37
  458. package/src/table/table-resource.ts +0 -36
  459. package/src/table/table-row.spec.ts +0 -54
  460. package/src/table/table-row.ts +0 -31
  461. package/src/table/table-storage.spec.ts +0 -67
  462. package/src/table/table-storage.ts +0 -76
  463. package/src/table/table.spec.ts +0 -172
  464. package/src/table/table.ts +0 -281
  465. package/src/table/table.types.ts +0 -83
  466. package/src/tabs/index.ts +0 -7
  467. package/src/tabs/tabs.context.ts +0 -32
  468. package/src/tabs/tabs.spec.ts +0 -352
  469. package/src/tabs/tabs.ts +0 -364
  470. package/src/tag/config.ts +0 -53
  471. package/src/tag/index.ts +0 -7
  472. package/src/tag/tag-list.ts +0 -76
  473. package/src/tag/tag-remove.ts +0 -61
  474. package/src/tag/tag.context.ts +0 -36
  475. package/src/tag/tag.spec.ts +0 -240
  476. package/src/tag/tag.ts +0 -203
  477. package/src/test-setup.ts +0 -5
  478. package/src/textarea/config.ts +0 -42
  479. package/src/textarea/index.ts +0 -8
  480. package/src/textarea/textarea.spec.ts +0 -176
  481. package/src/textarea/textarea.ts +0 -235
  482. package/src/time-picker/index.ts +0 -15
  483. package/src/time-picker/time-picker-meridiem.ts +0 -123
  484. package/src/time-picker/time-picker-segment.ts +0 -318
  485. package/src/time-picker/time-picker.context.ts +0 -38
  486. package/src/time-picker/time-picker.format.ts +0 -181
  487. package/src/time-picker/time-picker.spec.ts +0 -189
  488. package/src/time-picker/time-picker.ts +0 -274
  489. package/src/toast/_examples/index.ts +0 -5
  490. package/src/toast/_examples/toast.example.ts +0 -282
  491. package/src/toast/_examples/toast.finance.example.ts +0 -180
  492. package/src/toast/_examples/toast.retro.example.ts +0 -161
  493. package/src/toast/index.ts +0 -28
  494. package/src/toast/toast.ref.ts +0 -26
  495. package/src/toast/toast.service.ts +0 -339
  496. package/src/toast/toast.spec.ts +0 -247
  497. package/src/toast/toast.strategy.ts +0 -112
  498. package/src/toast/toast.ts +0 -463
  499. package/src/toast/toast.types.ts +0 -5
  500. package/src/toggle/index.ts +0 -1
  501. package/src/toggle/toggle.spec.ts +0 -24
  502. package/src/toggle/toggle.ts +0 -48
  503. package/src/tooltip/_examples/index.ts +0 -6
  504. package/src/tooltip/_examples/tooltip.example.ts +0 -82
  505. package/src/tooltip/_examples/tooltip.finance.example.ts +0 -97
  506. package/src/tooltip/_examples/tooltip.placements.example.ts +0 -83
  507. package/src/tooltip/_examples/tooltip.retro.example.ts +0 -107
  508. package/src/tooltip/index.ts +0 -4
  509. package/src/tooltip/tooltip-arrow.ts +0 -31
  510. package/src/tooltip/tooltip-content.ts +0 -38
  511. package/src/tooltip/tooltip-group.ts +0 -32
  512. package/src/tooltip/tooltip-trigger.ts +0 -47
  513. package/src/tooltip/tooltip.spec.ts +0 -40
  514. package/src/tooltip/tooltip.ts +0 -5
  515. package/src/tree-select/index.ts +0 -12
  516. package/src/tree-select/tree-select-content.ts +0 -199
  517. package/src/tree-select/tree-select-node.ts +0 -132
  518. package/src/tree-select/tree-select-root.ts +0 -272
  519. package/src/tree-select/tree-select-trigger.ts +0 -90
  520. package/src/tree-select/tree-select.context.ts +0 -63
  521. package/src/tree-select/tree-select.spec.ts +0 -433
  522. package/src/tree-select/tree-select.ts +0 -2
  523. package/src/typography/blockquote.ts +0 -57
  524. package/src/typography/code.ts +0 -53
  525. package/src/typography/index.ts +0 -22
  526. package/src/typography/lead.ts +0 -49
  527. package/src/typography/muted.ts +0 -29
  528. package/src/typography/truncate.ts +0 -99
  529. package/src/typography/typography.spec.ts +0 -203
  530. package/tsconfig.lib.json +0 -21
  531. package/tsconfig.lib.prod.json +0 -17
  532. package/tsconfig.spec.json +0 -18
  533. package/vite.config.ts +0 -27
  534. /package/{src/icon → icon}/icon.css +0 -0
  535. /package/{src/typography → typography}/prose.css +0 -0
@@ -1,39 +0,0 @@
1
- import { Directive, InjectionToken, inject, signal } from '@angular/core';
2
-
3
- export interface KjAvatarContext { imageLoaded: ReturnType<typeof signal<boolean>>; }
4
- export const KJ_AVATAR = new InjectionToken<KjAvatarContext>('KjAvatar');
5
-
6
- /**
7
- * Container for avatar. Tracks image load state.
8
- *
9
- * Compose `[kjAvatar]` with `[kjAvatarImage]` and `[kjAvatarFallback]` onto any
10
- * elements to toggle visibility between the image and the fallback
11
- * automatically when the image fails or is still loading. No styling attached.
12
- *
13
- * @example `<span kjAvatar><img kjAvatarImage src="..." alt="..." /><span kjAvatarFallback>JD</span></span>`
14
- * @doc-category Core/Data display
15
- * @doc
16
- * @doc-name avatar
17
- * @doc-description Unstyled avatar container that swaps between an image and a fallback when loading or failing.
18
- * @doc-is-main
19
- */
20
- @Directive({ selector: '[kjAvatar]', standalone: true, providers: [{ provide: KJ_AVATAR, useExisting: KjAvatar }] })
21
- export class KjAvatar implements KjAvatarContext { readonly imageLoaded = signal(false); }
22
-
23
- /**
24
- * Image element within a `[kjAvatar]` container.
25
- * @doc-category Core/Data display
26
- * @doc
27
- * @doc-name avatar
28
- */
29
- @Directive({ selector: '[kjAvatarImage]', standalone: true, host: { '(load)': 'ctx.imageLoaded.set(true)', '(error)': 'ctx.imageLoaded.set(false)', '[attr.data-loaded]': 'ctx.imageLoaded() ? "" : null' } })
30
- export class KjAvatarImage { readonly ctx = inject(KJ_AVATAR); }
31
-
32
- /**
33
- * Fallback shown when image is unavailable.
34
- * @doc-category Core/Data display
35
- * @doc
36
- * @doc-name avatar
37
- */
38
- @Directive({ selector: '[kjAvatarFallback]', standalone: true, host: { '[attr.data-visible]': '!ctx.imageLoaded() ? "" : null' } })
39
- export class KjAvatarFallback { readonly ctx = inject(KJ_AVATAR); }
@@ -1,11 +0,0 @@
1
- export { KjAvatar, KjAvatarImage, KjAvatarFallback, KJ_AVATAR } from './avatar';
2
- export {
3
- KjAvatarGroup,
4
- type KjAvatarGroupAriaLabelFormat,
5
- } from './avatar-group';
6
- export {
7
- KJ_AVATAR_GROUP,
8
- type KjAvatarGroupContext,
9
- type KjAvatarGroupDirection,
10
- type KjAvatarShape,
11
- } from './avatar-group.context';
@@ -1,28 +0,0 @@
1
- import { render } from '@testing-library/angular';
2
- import { axe, toHaveNoViolations } from 'jest-axe';
3
- import { KjBadge } from './badge';
4
-
5
- expect.extend(toHaveNoViolations);
6
-
7
- describe('KjBadge', () => {
8
- it('sets data-variant attribute', async () => {
9
- const { container } = await render(`<span kjBadge [kjBadgeVariant]="'destructive'">New</span>`, { imports: [KjBadge] });
10
- expect(container.querySelector('span')).toHaveAttribute('data-variant', 'destructive');
11
- });
12
- it('defaults to default variant', async () => {
13
- const { container } = await render(`<span kjBadge>Beta</span>`, { imports: [KjBadge] });
14
- expect(container.querySelector('span')).toHaveAttribute('data-variant', 'default');
15
- });
16
- it('sets data-dot attribute when kjBadgeDot is true', async () => {
17
- const { container } = await render(`<span kjBadge [kjBadgeDot]="true">Active</span>`, { imports: [KjBadge] });
18
- expect(container.querySelector('span')).toHaveAttribute('data-dot', '');
19
- });
20
- it('omits data-dot attribute by default', async () => {
21
- const { container } = await render(`<span kjBadge>Beta</span>`, { imports: [KjBadge] });
22
- expect(container.querySelector('span')).not.toHaveAttribute('data-dot');
23
- });
24
- it('passes axe audit', async () => {
25
- const { container } = await render(`<span kjBadge>Beta</span>`, { imports: [KjBadge] });
26
- expect(await axe(container)).toHaveNoViolations();
27
- });
28
- });
@@ -1,35 +0,0 @@
1
- import { Directive, booleanAttribute, input } from '@angular/core';
2
-
3
- export type KjBadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline';
4
-
5
- /**
6
- * Marks an element as a badge via data attributes.
7
- *
8
- * Apply `[kjBadge]` to any inline element to reflect a `data-variant` attribute
9
- * that theme CSS reads — choose from `default`, `secondary`, `destructive`, or
10
- * `outline` without adding any wrapper markup. No styling is attached.
11
- *
12
- * Set `kjBadgeDot` to reflect a `data-dot` attribute for theme CSS to render a
13
- * leading status indicator.
14
- *
15
- * @example `<span kjBadge [kjBadgeVariant]="'destructive'">Critical</span>`
16
- * @doc-category Core/Data display
17
- * @doc
18
- * @doc-name badge
19
- * @doc-description Marks an inline element as a badge with a variant data attribute that theme CSS picks up.
20
- * @doc-is-main
21
- */
22
- @Directive({
23
- selector: '[kjBadge]',
24
- standalone: true,
25
- host: {
26
- '[attr.data-variant]': 'kjBadgeVariant()',
27
- '[attr.data-dot]': 'kjBadgeDot() ? "" : null',
28
- },
29
- })
30
- export class KjBadge {
31
- /** The visual variant of the badge. Defaults to `'default'`. */
32
- kjBadgeVariant = input<KjBadgeVariant>('default');
33
- /** Reflects `data-dot` so theme CSS can render a leading status dot. Defaults to `false`. */
34
- kjBadgeDot = input(false, { transform: booleanAttribute });
35
- }
@@ -1 +0,0 @@
1
- export { KjBadge, type KjBadgeVariant } from './badge';
@@ -1,38 +0,0 @@
1
- import { Directive, OnDestroy, inject } from '@angular/core';
2
- import { KJ_BREADCRUMB } from './breadcrumb.context';
3
-
4
- /**
5
- * The terminal "current page" cell. Emits `aria-current="page"` and
6
- * registers with the parent so auto-current detection knows to step aside.
7
- *
8
- * The element is text — not focusable, not an anchor. Place inside the last
9
- * `<li kjBreadcrumbItem>` to mark the current page explicitly.
10
- *
11
- * @example
12
- * ```html
13
- * <span kjBreadcrumbCurrent>Data</span>
14
- * ```
15
- *
16
- * @doc-category Core/Navigation
17
- * @doc
18
- * @doc-name breadcrumb
19
- */
20
- @Directive({
21
- selector: 'span[kjBreadcrumbCurrent], [kjBreadcrumbCurrent]',
22
- standalone: true,
23
- host: {
24
- '[attr.aria-current]': '"page"',
25
- '[attr.data-breadcrumb-current]': '""',
26
- },
27
- })
28
- export class KjBreadcrumbCurrent implements OnDestroy {
29
- private readonly root = inject(KJ_BREADCRUMB);
30
-
31
- constructor() {
32
- this.root.registerCurrent();
33
- }
34
-
35
- ngOnDestroy(): void {
36
- this.root.unregisterCurrent();
37
- }
38
- }
@@ -1,71 +0,0 @@
1
- import {
2
- Directive,
3
- booleanAttribute,
4
- computed,
5
- inject,
6
- input,
7
- } from '@angular/core';
8
- import { KjFocusRing } from '../primitives';
9
- import { KJ_BREADCRUMB } from './breadcrumb.context';
10
- import { KJ_BREADCRUMB_CONFIG } from './config';
11
-
12
- /**
13
- * Overflow indicator rendered in place of truncated middle crumbs.
14
- *
15
- * - In `'truncate'` overflow mode: behaves like a static glyph,
16
- * `aria-hidden="true"`.
17
- * - In `'menu'` overflow mode: an interactive cell with
18
- * `aria-haspopup="true"`. Consumers wire a `KjDropdownMenu` to the host
19
- * to expose the hidden crumbs as menu items.
20
- *
21
- * Visible only when there are hidden crumbs (`ctx.hiddenIndices().length > 0`).
22
- * The host wrapper component conditionally renders the directive based on
23
- * this signal.
24
- *
25
- * @example
26
- * ```html
27
- * <li kjBreadcrumbItem><span kjBreadcrumbEllipsis>…</span></li>
28
- * ```
29
- *
30
- * @doc-category Core/Navigation
31
- * @doc
32
- * @doc-name breadcrumb
33
- */
34
- @Directive({
35
- selector: '[kjBreadcrumbEllipsis]',
36
- standalone: true,
37
- hostDirectives: [KjFocusRing],
38
- host: {
39
- '[attr.aria-hidden]': 'isAriaHidden() ? "true" : null',
40
- '[attr.aria-label]': 'computedAriaLabel()',
41
- '[attr.aria-haspopup]': 'isMenu() ? "true" : null',
42
- '[attr.data-overflow]': 'ctx.overflow()',
43
- '[attr.data-hidden-count]': 'hiddenCount()',
44
- },
45
- })
46
- export class KjBreadcrumbEllipsis {
47
- /** @internal */
48
- readonly ctx = inject(KJ_BREADCRUMB);
49
- private readonly config = inject(KJ_BREADCRUMB_CONFIG);
50
-
51
- /**
52
- * Mirrors a disabled bundle (currently advisory — the ellipsis menu
53
- * trigger composes `KjDropdownMenu` separately when wired by the
54
- * consumer).
55
- */
56
- readonly kjDisabled = input<boolean, unknown>(false, { transform: booleanAttribute });
57
-
58
- /** Number of hidden crumbs the ellipsis represents. */
59
- readonly hiddenCount = computed(() => this.ctx.hiddenIndices().length);
60
-
61
- /** Whether the ellipsis is in menu (interactive) mode. */
62
- readonly isMenu = computed(() => this.ctx.overflow() === 'menu');
63
-
64
- /** Whether the ellipsis is purely decorative (truncate mode). */
65
- readonly isAriaHidden = computed(() => !this.isMenu());
66
-
67
- /** `aria-label` value — null in truncate mode (the cell is decorative). */
68
- readonly computedAriaLabel = computed(() =>
69
- this.isMenu() ? this.config.ellipsisLabel(this.hiddenCount()) : null,
70
- );
71
- }
@@ -1,41 +0,0 @@
1
- import { Directive, OnDestroy, inject } from '@angular/core';
2
- import { KJ_BREADCRUMB, KjBreadcrumbItemContext } from './breadcrumb.context';
3
-
4
- /**
5
- * A single crumb cell. Registers itself with the parent breadcrumb on
6
- * construction (capturing its index) and exposes a `current` signal derived
7
- * from "am I last + no explicit current cell?".
8
- *
9
- * Selector restricted to `<li>` to keep the list semantics clean.
10
- *
11
- * @example
12
- * ```html
13
- * <li kjBreadcrumbItem>…</li>
14
- * ```
15
- *
16
- * @doc-category Core/Navigation
17
- * @doc
18
- * @doc-name breadcrumb
19
- */
20
- @Directive({
21
- selector: '[kjBreadcrumbItem]',
22
- standalone: true,
23
- host: {
24
- '[attr.data-hidden]': 'context.hidden() ? "" : null',
25
- '[attr.aria-current]': 'context.current() ? "page" : null',
26
- },
27
- })
28
- export class KjBreadcrumbItem implements OnDestroy {
29
- private readonly root = inject(KJ_BREADCRUMB);
30
-
31
- /** Public context (index, current, hidden) for this item. */
32
- readonly context: KjBreadcrumbItemContext;
33
-
34
- constructor() {
35
- this.context = this.root.registerItem();
36
- }
37
-
38
- ngOnDestroy(): void {
39
- this.root.unregisterItem(this.context);
40
- }
41
- }
@@ -1,44 +0,0 @@
1
- import { Directive, inject } from '@angular/core';
2
- import { KjLink } from '../link/link';
3
- import { KJ_BREADCRUMB } from './breadcrumb.context';
4
-
5
- /**
6
- * Per-crumb anchor. Composes `KjLink` via `hostDirectives` so the per-crumb
7
- * `<a>` inherits external-link `rel` plumbing, focus-ring composition, and
8
- * disabled-link enforcement.
9
- *
10
- * The directive deliberately does **not** forward `KjLink`'s own inputs onto
11
- * its own selector — the components-package wrapper (`<kj-breadcrumb-link>`)
12
- * is the authoring surface for those, and consumers driving the directive
13
- * directly can apply `kjLink` inputs on the same element (since `KjLink` is
14
- * composed via `hostDirectives`, the inputs land on it through the host).
15
- *
16
- * The wrapper applies breadcrumb defaults: `muted` variant, `sm` size,
17
- * `hover` underline.
18
- *
19
- * @example
20
- * ```html
21
- * <a kjBreadcrumbLink href="/library">Library</a>
22
- * ```
23
- *
24
- * @doc-category Core/Navigation
25
- * @doc
26
- * @doc-name breadcrumb
27
- */
28
- @Directive({
29
- selector: 'a[kjBreadcrumbLink], [kjBreadcrumbLink]',
30
- standalone: true,
31
- hostDirectives: [
32
- {
33
- directive: KjLink,
34
- inputs: ['kjUnderline', 'kjExternal', 'kjDisabled'],
35
- },
36
- ],
37
- host: {
38
- '[attr.data-breadcrumb-link]': '""',
39
- },
40
- })
41
- export class KjBreadcrumbLink {
42
- /** @internal */
43
- readonly ctx = inject(KJ_BREADCRUMB);
44
- }
@@ -1,42 +0,0 @@
1
- import { Directive, inject, input } from '@angular/core';
2
- import { KJ_BREADCRUMB } from './breadcrumb.context';
3
-
4
- /**
5
- * The breadcrumb's ordered list. Selector restricted to `<ol>` to enforce
6
- * ordered-list semantics (a `<ul>` will not match).
7
- *
8
- * Reads the parent's `hasExplicitSeparators` and `overflow` signals to
9
- * reflect data attributes that key the CSS layer:
10
- * - `data-explicit-separators=""` suppresses the auto pseudo-element.
11
- * - `data-overflow="truncate|menu|none"` mirrors the root's overflow mode.
12
- * - `data-wrap="wrap|no-wrap|truncate"` reflects this directive's wrap input.
13
- *
14
- * @example
15
- * ```html
16
- * <ol kjBreadcrumbList>…</ol>
17
- * ```
18
- *
19
- * @doc-category Core/Navigation
20
- * @doc
21
- * @doc-name breadcrumb
22
- */
23
- @Directive({
24
- selector: '[kjBreadcrumbList]',
25
- standalone: true,
26
- host: {
27
- '[attr.data-explicit-separators]': 'ctx.hasExplicitSeparators() ? "" : null',
28
- '[attr.data-overflow]': 'ctx.overflow()',
29
- '[attr.data-wrap]': 'kjWrap()',
30
- },
31
- })
32
- export class KjBreadcrumbList {
33
- /** @internal */
34
- readonly ctx = inject(KJ_BREADCRUMB);
35
-
36
- /**
37
- * Wrapping policy. `'no-wrap'` keeps the row single-line (the truncation
38
- * does the long-path work); `'wrap'` allows the row to break across
39
- * lines; `'truncate'` reserved for future ellipsis-by-CSS support.
40
- */
41
- readonly kjWrap = input<'wrap' | 'no-wrap' | 'truncate'>('no-wrap');
42
- }
@@ -1,45 +0,0 @@
1
- import { Directive, OnDestroy, inject } from '@angular/core';
2
- import { KJ_BREADCRUMB } from './breadcrumb.context';
3
-
4
- /**
5
- * Optional explicit separator cell. Used when a CSS pseudo-element will not
6
- * do — typically for an icon (SVG) separator that needs `currentColor`,
7
- * `width`, and `height` plumbing the pseudo-element cannot deliver.
8
- *
9
- * Registers with the parent so the auto separator (CSS `::before`) is
10
- * suppressed via the `data-explicit-separators=""` attribute on the list.
11
- *
12
- * Selector restricted to `<li>` so the list semantics stay clean
13
- * (every direct child of `<ol>` must be `<li>`); the directive sets
14
- * `role="presentation"` and `aria-hidden="true"` so AT does not announce
15
- * the separator as a list item.
16
- *
17
- * @example
18
- * ```html
19
- * <li kjBreadcrumbSeparator><svg>…chevron…</svg></li>
20
- * ```
21
- *
22
- * @doc-category Core/Navigation
23
- * @doc
24
- * @doc-name breadcrumb
25
- */
26
- @Directive({
27
- selector: '[kjBreadcrumbSeparator]',
28
- standalone: true,
29
- host: {
30
- 'role': 'presentation',
31
- '[attr.aria-hidden]': '"true"',
32
- '[attr.data-breadcrumb-separator]': '""',
33
- },
34
- })
35
- export class KjBreadcrumbSeparator implements OnDestroy {
36
- private readonly root = inject(KJ_BREADCRUMB);
37
-
38
- constructor() {
39
- this.root.registerSeparator();
40
- }
41
-
42
- ngOnDestroy(): void {
43
- this.root.unregisterSeparator();
44
- }
45
- }
@@ -1,45 +0,0 @@
1
- import { InjectionToken, Signal } from '@angular/core';
2
-
3
- /** Public-facing token interface representing a registered crumb item. */
4
- export interface KjBreadcrumbItemContext {
5
- /** Index of the item among registered items (0-based, document order). */
6
- readonly index: Signal<number>;
7
- /** Whether this item is currently the "current page" cell. */
8
- readonly current: Signal<boolean>;
9
- /** Whether this item is hidden by truncation. */
10
- readonly hidden: Signal<boolean>;
11
- }
12
-
13
- /** Public-facing token interface representing the root breadcrumb. */
14
- export interface KjBreadcrumbContext {
15
- /** Configured separator glyph (or `undefined` to use the CSS default). */
16
- readonly separator: Signal<string | undefined>;
17
- /** `kjMaxItems` — `0` or `Infinity` disables truncation. */
18
- readonly maxItems: Signal<number>;
19
- /** Active overflow mode. */
20
- readonly overflow: Signal<'truncate' | 'menu' | 'none'>;
21
- /** Read-only count of registered items. */
22
- readonly itemCount: Signal<number>;
23
- /** Read-only count of registered explicit current cells. */
24
- readonly currentCount: Signal<number>;
25
- /** Indices that should render visibly. */
26
- readonly visibleIndices: Signal<readonly number[]>;
27
- /** Indices that should be hidden by truncation. */
28
- readonly hiddenIndices: Signal<readonly number[]>;
29
- /** Whether the consumer has rendered explicit `<li kjBreadcrumbSeparator>` cells. */
30
- readonly hasExplicitSeparators: Signal<boolean>;
31
-
32
- /** Register a freshly-created item directive; returns its assigned index signal. */
33
- registerItem(): KjBreadcrumbItemContext;
34
- /** Unregister an item directive (called from `ngOnDestroy`). */
35
- unregisterItem(item: KjBreadcrumbItemContext): void;
36
- /** Register / unregister an explicit current cell. */
37
- registerCurrent(): void;
38
- unregisterCurrent(): void;
39
- /** Register / unregister an explicit separator cell. */
40
- registerSeparator(): void;
41
- unregisterSeparator(): void;
42
- }
43
-
44
- /** Injection token for the root `KjBreadcrumb` directive context. */
45
- export const KJ_BREADCRUMB = new InjectionToken<KjBreadcrumbContext>('KjBreadcrumb');