@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
package/src/chat/chat.ts DELETED
@@ -1,191 +0,0 @@
1
- import {
2
- DestroyRef,
3
- Directive,
4
- ElementRef,
5
- Injector,
6
- afterNextRender,
7
- computed,
8
- effect,
9
- inject,
10
- input,
11
- signal,
12
- } from '@angular/core';
13
- import {
14
- KJ_CHAT,
15
- KJ_CHAT_LOG,
16
- type KjChatContext,
17
- type KjChatRole,
18
- type KjChatSide,
19
- } from './chat.context';
20
-
21
- /**
22
- * Element → directive map used by `KjChat` to walk previous siblings without
23
- * relying on Angular dev-mode internals. Each row registers itself on its host
24
- * element on construction and unregisters on destroy.
25
- */
26
- const CHAT_ROW_REGISTRY = new WeakMap<Element, KjChat>();
27
-
28
- /**
29
- * A single chat row. Owns the logical side, the per-row role, and the
30
- * group-by-sender computation; reflects header / footer ids registered by
31
- * its children for `aria-labelledby` / `aria-describedby` wiring.
32
- *
33
- * **Grouping uses DOM traversal, not a registry**, deliberately: the registry
34
- * pattern races on the bottom-up `ngOnInit` order (children before parent),
35
- * which means the first row could ask for its previous sibling before the
36
- * previous row has registered. DOM traversal via `previousElementSibling` is
37
- * deterministic and works at first render.
38
- *
39
- * Standalone rows (no `KjChatLog` parent) skip auto-grouping entirely;
40
- * consumers set `kjChatGrouped` explicitly when they want grouped chrome.
41
- *
42
- * @example
43
- * ```html
44
- * <div kjChat kjSide="start" kjChatAuthor="alice">
45
- * <span kjChatAvatar>…</span>
46
- * <header kjChatHeader>Alice 12:46</header>
47
- * <p kjChatBubble>Hey!</p>
48
- * <footer kjChatFooter kjState="read">Read 12:46</footer>
49
- * </div>
50
- * ```
51
- * @doc-category Core/Data display
52
- * @doc
53
- * @doc-name chat
54
- * @doc-description Unstyled chat row with side, sender grouping, and ARIA wiring for message log semantics.
55
- * @doc-is-main
56
- */
57
- @Directive({
58
- selector: '[kjChat]',
59
- standalone: true,
60
- providers: [{ provide: KJ_CHAT, useExisting: KjChat }],
61
- host: {
62
- '[attr.role]': 'kjRole()',
63
- '[attr.data-side]': 'kjSide()',
64
- '[attr.data-grouped]': 'grouped() ? "" : null',
65
- '[attr.aria-labelledby]': 'headerId() ?? null',
66
- '[attr.aria-describedby]': 'footerId() ?? null',
67
- },
68
- })
69
- export class KjChat implements KjChatContext {
70
- private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);
71
- private readonly injector = inject(Injector);
72
- private readonly destroyRef = inject(DestroyRef);
73
- private readonly log = inject(KJ_CHAT_LOG, { optional: true });
74
-
75
- /** Logical side of this row. CSS reads `data-side` and handles RTL flip. */
76
- readonly kjSide = input<KjChatSide>('start');
77
-
78
- /** Sender id — drives auto-grouping with the previous sibling row. */
79
- readonly kjChatAuthor = input<string | undefined>(undefined);
80
-
81
- /**
82
- * Explicit group override. When defined, wins over the auto-computed value;
83
- * use this when no `KjChatLog` parent is present.
84
- */
85
- readonly kjChatGrouped = input<boolean | undefined>(undefined);
86
-
87
- /**
88
- * Per-row role. Default `'article'` gives AT users a per-message landmark
89
- * navigable via JAWS / NVDA `M`; `'listitem'` opts in to list semantics
90
- * (parent log must then expose `role="list"`); `null` drops the attribute.
91
- */
92
- readonly kjRole = input<KjChatRole>('article');
93
-
94
- private readonly headerIds = signal<readonly string[]>([]);
95
- private readonly footerIds = signal<readonly string[]>([]);
96
-
97
- /** Composed `aria-labelledby` value. */
98
- readonly headerId = computed(() => {
99
- const ids = this.headerIds();
100
- return ids.length === 0 ? null : ids.join(' ');
101
- });
102
-
103
- /** Composed `aria-describedby` value. */
104
- readonly footerId = computed(() => {
105
- const ids = this.footerIds();
106
- return ids.length === 0 ? null : ids.join(' ');
107
- });
108
-
109
- private readonly autoGrouped = signal(false);
110
-
111
- /** True when this row groups with the previous one (same author). */
112
- readonly grouped = computed(
113
- () => this.kjChatGrouped() ?? this.autoGrouped(),
114
- );
115
-
116
- constructor() {
117
- // Registry write happens in the constructor so any sibling rendered
118
- // *after* us finds us during its own afterNextRender pass. (Angular
119
- // builds child instances bottom-up, but DOM siblings are ordered
120
- // top-down — by the time the second row's afterNextRender fires,
121
- // the first row's host element exists and is keyed in the WeakMap.)
122
- CHAT_ROW_REGISTRY.set(this.el.nativeElement, this);
123
- this.destroyRef.onDestroy(() =>
124
- CHAT_ROW_REGISTRY.delete(this.el.nativeElement),
125
- );
126
-
127
- // DOM-traversal grouping: run after first render (so the previous
128
- // sibling exists) and re-run whenever this row's author changes.
129
- afterNextRender(() => {
130
- this.recomputeAutoGrouped();
131
- });
132
- effect(
133
- () => {
134
- // Track the input — touching it inside the effect creates the dep.
135
- this.kjChatAuthor();
136
- this.recomputeAutoGrouped();
137
- },
138
- { injector: this.injector },
139
- );
140
- }
141
-
142
- /** @internal */
143
- registerHeaderId(id: string): void {
144
- this.headerIds.update(ids => [...ids, id]);
145
- this.destroyRef.onDestroy(() => this.unregisterHeaderId(id));
146
- }
147
-
148
- /** @internal */
149
- unregisterHeaderId(id: string): void {
150
- this.headerIds.update(ids => ids.filter(x => x !== id));
151
- }
152
-
153
- /** @internal */
154
- registerFooterId(id: string): void {
155
- this.footerIds.update(ids => [...ids, id]);
156
- this.destroyRef.onDestroy(() => this.unregisterFooterId(id));
157
- }
158
-
159
- /** @internal */
160
- unregisterFooterId(id: string): void {
161
- this.footerIds.update(ids => ids.filter(x => x !== id));
162
- }
163
-
164
- private recomputeAutoGrouped(): void {
165
- if (!this.log) {
166
- this.autoGrouped.set(false);
167
- return;
168
- }
169
- const me = this.kjChatAuthor();
170
- if (me === undefined) {
171
- this.autoGrouped.set(false);
172
- return;
173
- }
174
- const prev = this.previousChatRow();
175
- if (!prev) {
176
- this.autoGrouped.set(false);
177
- return;
178
- }
179
- this.autoGrouped.set(prev.kjChatAuthor() === me);
180
- }
181
-
182
- private previousChatRow(): KjChat | null {
183
- let sib = this.el.nativeElement.previousElementSibling as Element | null;
184
- while (sib) {
185
- const row = CHAT_ROW_REGISTRY.get(sib);
186
- if (row) return row;
187
- sib = sib.previousElementSibling;
188
- }
189
- return null;
190
- }
191
- }
@@ -1,53 +0,0 @@
1
- import { InjectionToken, Provider } from '@angular/core';
2
-
3
- /** Shape of the bubble's preset configuration. */
4
- export interface KjChatBubbleConfig {
5
- variants: string[];
6
- sizes: string[];
7
- defaults: { variant: string; size: string };
8
- }
9
-
10
- /**
11
- * Default Chat-Bubble presets shipped by kouji-ui. Exported so consumers can
12
- * spread when extending: `[...KJ_CHAT_BUBBLE_DEFAULTS.variants, 'brand']`.
13
- */
14
- export const KJ_CHAT_BUBBLE_DEFAULTS: KjChatBubbleConfig = {
15
- variants: [
16
- 'default',
17
- 'primary',
18
- 'secondary',
19
- 'accent',
20
- 'info',
21
- 'success',
22
- 'warning',
23
- 'error',
24
- ],
25
- sizes: ['sm', 'md', 'lg'],
26
- defaults: { variant: 'default', size: 'md' },
27
- };
28
-
29
- /**
30
- * DI token for the active Chat-Bubble presets. Default factory yields
31
- * `KJ_CHAT_BUBBLE_DEFAULTS`. Override via `provideKjChatBubble(…)` at the
32
- * application or component scope.
33
- */
34
- export const KJ_CHAT_BUBBLE_CONFIG = new InjectionToken<KjChatBubbleConfig>(
35
- 'kj.chat-bubble.config',
36
- { factory: () => KJ_CHAT_BUBBLE_DEFAULTS },
37
- );
38
-
39
- /**
40
- * Configures the Chat-Bubble presets for the enclosing injector. Replaces
41
- * (does not merge) `variants` and `sizes`; spread `KJ_CHAT_BUBBLE_DEFAULTS.variants`
42
- * to extend.
43
- */
44
- export function provideKjChatBubble(
45
- config: Partial<KjChatBubbleConfig>,
46
- ): Provider[] {
47
- return [
48
- {
49
- provide: KJ_CHAT_BUBBLE_CONFIG,
50
- useValue: { ...KJ_CHAT_BUBBLE_DEFAULTS, ...config },
51
- },
52
- ];
53
- }
package/src/chat/index.ts DELETED
@@ -1,21 +0,0 @@
1
- export { KjChatLog } from './chat-log';
2
- export { KjChat } from './chat';
3
- export { KjChatAvatar } from './chat-avatar';
4
- export { KjChatHeader } from './chat-header';
5
- export { KjChatBubble } from './chat-bubble';
6
- export { KjChatFooter } from './chat-footer';
7
- export {
8
- KJ_CHAT,
9
- KJ_CHAT_LOG,
10
- type KjChatContext,
11
- type KjChatLogContext,
12
- type KjChatRole,
13
- type KjChatSide,
14
- type KjChatState,
15
- } from './chat.context';
16
- export {
17
- KJ_CHAT_BUBBLE_CONFIG,
18
- KJ_CHAT_BUBBLE_DEFAULTS,
19
- provideKjChatBubble,
20
- type KjChatBubbleConfig,
21
- } from './config';
@@ -1,35 +0,0 @@
1
- import { render, fireEvent } from '@testing-library/angular';
2
- import { axe, toHaveNoViolations } from 'jest-axe';
3
- import { KjCheckbox } from './checkbox';
4
-
5
- expect.extend(toHaveNoViolations);
6
-
7
- describe('KjCheckbox', () => {
8
- it('sets role=checkbox', async () => {
9
- const { getByRole } = await render(`<div kjCheckbox tabindex="0">Check</div>`, { imports: [KjCheckbox] });
10
- expect(getByRole('checkbox')).toBeInTheDocument();
11
- });
12
-
13
- it('has aria-checked=false by default', async () => {
14
- const { getByRole } = await render(`<div kjCheckbox tabindex="0">Check</div>`, { imports: [KjCheckbox] });
15
- expect(getByRole('checkbox')).toHaveAttribute('aria-checked', 'false');
16
- });
17
-
18
- it('toggles checked on click', async () => {
19
- const { getByRole } = await render(`<div kjCheckbox tabindex="0">Check</div>`, { imports: [KjCheckbox] });
20
- fireEvent.click(getByRole('checkbox'));
21
- expect(getByRole('checkbox')).toHaveAttribute('aria-checked', 'true');
22
- expect(getByRole('checkbox')).toHaveAttribute('data-checked', '');
23
- });
24
-
25
- it('toggles on Space key', async () => {
26
- const { getByRole } = await render(`<div kjCheckbox tabindex="0">Check</div>`, { imports: [KjCheckbox] });
27
- fireEvent.keyDown(getByRole('checkbox'), { key: ' ' });
28
- expect(getByRole('checkbox')).toHaveAttribute('aria-checked', 'true');
29
- });
30
-
31
- it('passes axe audit', async () => {
32
- const { container } = await render(`<div kjCheckbox tabindex="0" aria-label="Accept terms">Accept</div>`, { imports: [KjCheckbox] });
33
- expect(await axe(container)).toHaveNoViolations();
34
- });
35
- });
@@ -1,89 +0,0 @@
1
- import { Directive, inject, model } from '@angular/core';
2
- import { KjDisabled, KjFocusRing, KjFormControl } from '../primitives';
3
-
4
- /**
5
- * Adds checkbox semantics with Angular forms integration.
6
- * Supports `formControl`, `formControlName`, and `ngModel` bindings.
7
- *
8
- * Apply `[kjCheckbox]` to any focusable element to get `role="checkbox"`,
9
- * `aria-checked` reflection, Space/click toggle, and the shared focus-ring
10
- * primitive — all composable onto custom markup with no styling attached.
11
- *
12
- * @example
13
- * ```html
14
- * <div kjCheckbox tabindex="0" [(kjChecked)]="accepted" aria-label="Accept terms">Accept</div>
15
- * ```
16
- * @doc
17
- * @doc-file checkbox.example.ts
18
- * ```typescript
19
- * import { Component, signal } from '@angular/core';
20
- * import { KjCheckbox } from '@kouji-ui/core';
21
- *
22
- * @Component({
23
- * standalone: true,
24
- * imports: [KjCheckbox],
25
- * styles: [`
26
- * .row { display: flex; flex-direction: column; gap: 1rem; padding: 2rem; background: #0c0c0c; }
27
- * .item { display: flex; align-items: center; gap: 0.75rem; }
28
- * [kjCheckbox] { width: 18px; height: 18px; border: 2px solid #333; background: #111; cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
29
- * [data-checked] { background: #b8f500; border-color: #b8f500; }
30
- * [data-checked]::after { content: '✓'; color: #0c0c0c; font-size: 0.75rem; font-weight: bold; }
31
- * span { color: #888; font-family: 'JetBrains Mono', monospace; font-size: 0.875rem; }
32
- * `],
33
- * template: `
34
- * <div class="row">
35
- * <div class="item">
36
- * <div kjCheckbox tabindex="0" [(kjChecked)]="terms" aria-label="Accept terms"></div>
37
- * <span>Accept terms — {{ terms() ? 'checked' : 'unchecked' }}</span>
38
- * </div>
39
- * <div class="item">
40
- * <div kjCheckbox tabindex="0" [(kjChecked)]="newsletter" aria-label="Newsletter"></div>
41
- * <span>Subscribe to newsletter</span>
42
- * </div>
43
- * </div>
44
- * `,
45
- * })
46
- * export class CheckboxExampleComponent {
47
- * terms = signal(false);
48
- * newsletter = signal(true);
49
- * }
50
- * ```
51
- * @doc-category Core/Inputs
52
- * @doc-name checkbox
53
- * @doc-description Adds accessible checkbox behaviour and Angular forms support to any element you bring.
54
- * @doc-is-main
55
- */
56
- @Directive({
57
- selector: '[kjCheckbox]',
58
- standalone: true,
59
- hostDirectives: [
60
- { directive: KjDisabled, inputs: ['kjDisabled'] },
61
- KjFocusRing,
62
- KjFormControl,
63
- ],
64
- host: {
65
- role: 'checkbox',
66
- '[attr.aria-checked]': 'kjChecked().toString()',
67
- '[attr.data-checked]': 'kjChecked() ? "" : null',
68
- '[attr.disabled]': 'formCtrl.disabled() ? "" : null',
69
- '(click)': 'toggle()',
70
- '(keydown.space)': 'onSpace($event)',
71
- '(blur)': 'formCtrl.notifyTouched()',
72
- },
73
- })
74
- export class KjCheckbox {
75
- readonly formCtrl = inject(KjFormControl);
76
-
77
- /** Whether the checkbox is checked. Supports two-way binding. */
78
- kjChecked = model<boolean>(false);
79
-
80
- /** @internal */
81
- toggle(): void {
82
- const next = !this.kjChecked();
83
- this.kjChecked.set(next);
84
- this.formCtrl.notifyChange(next);
85
- }
86
-
87
- /** @internal */
88
- onSpace(e: Event): void { e.preventDefault(); this.toggle(); }
89
- }
@@ -1 +0,0 @@
1
- export { KjCheckbox } from './checkbox';
@@ -1,74 +0,0 @@
1
- import { InjectionToken, Signal } from '@angular/core';
2
- import type { KjHsl, KjHsv, KjRgb } from './color-picker.utils';
3
-
4
- /** Output formats supported by `KjColorPicker`. */
5
- export type KjColorFormat = 'hex' | 'rgb' | 'hsl';
6
-
7
- /**
8
- * Public emitted value for `KjColorPicker`.
9
- * Concrete shape depends on the active `kjFormat`:
10
- * - `'hex'` → `string` (`'#rrggbb'` or `'#rrggbbaa'` when alpha is on).
11
- * - `'rgb'` → `[r, g, b]` or `[r, g, b, a]` when alpha is on.
12
- * - `'hsl'` → `{ h, s, l }` or `{ h, s, l, a }` when alpha is on.
13
- */
14
- export type KjColorValue =
15
- | string
16
- | readonly [number, number, number]
17
- | readonly [number, number, number, number]
18
- | { h: number; s: number; l: number }
19
- | { h: number; s: number; l: number; a: number };
20
-
21
- /** A single preset swatch in the color picker's palette grid. */
22
- export interface KjColorPreset {
23
- /** Any parseable hex color string. */
24
- readonly value: string;
25
- /** Optional accessible name announced to AT in place of the raw hex. */
26
- readonly label?: string;
27
- }
28
-
29
- /**
30
- * Shared state container exposed to every `KjColorPicker` sub-directive
31
- * via the `KJ_COLOR_PICKER` token. The root directive is the sole writer;
32
- * sub-directives read derived signals and call mutator methods.
33
- */
34
- export interface KjColorPickerContext {
35
- // Canonical state
36
- readonly hue: Signal<number>;
37
- readonly saturation: Signal<number>;
38
- readonly value: Signal<number>;
39
- readonly alpha: Signal<number>;
40
-
41
- // Derived projections
42
- readonly hex: Signal<string>;
43
- readonly rgb: Signal<KjRgb>;
44
- readonly hsv: Signal<KjHsv>;
45
- readonly hsl: Signal<KjHsl>;
46
-
47
- // Mutators
48
- setHue(h: number): void;
49
- setSaturationValue(s: number, v: number): void;
50
- setAlpha(a: number): void;
51
- setHex(hex: string): boolean;
52
- setRgb(r: number, g: number, b: number, a?: number): void;
53
-
54
- // UI state
55
- readonly open: Signal<boolean>;
56
- readonly disabled: Signal<boolean>;
57
- readonly format: Signal<KjColorFormat>;
58
- readonly showAlpha: Signal<boolean>;
59
- readonly presets: Signal<readonly KjColorPreset[]>;
60
- setOpen(open: boolean): void;
61
-
62
- // Wiring ids
63
- readonly panelId: Signal<string>;
64
- readonly triggerId: Signal<string>;
65
- }
66
-
67
- /**
68
- * DI token consumed by every `KjColorPicker*` sub-directive. Provided by
69
- * the root `KjColorPicker` directive — sub-directives outside that
70
- * context throw at injection time in dev.
71
- */
72
- export const KJ_COLOR_PICKER = new InjectionToken<KjColorPickerContext>(
73
- 'KjColorPicker',
74
- );