@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,544 +0,0 @@
1
- import {
2
- Directive,
3
- ElementRef,
4
- Signal,
5
- computed,
6
- effect,
7
- inject,
8
- input,
9
- model,
10
- signal,
11
- } from '@angular/core';
12
- import {
13
- KjRovingTabindex,
14
- KjRovingTabindexItemDirective,
15
- } from '../a11y/roving-tabindex';
16
- import {
17
- KJ_STEP,
18
- KJ_STEPPER,
19
- KjStepContext,
20
- KjStepperContext,
21
- } from './stepper.context';
22
-
23
- // TODO(progress-bar): when the Progress Bar primitive lands at
24
- // `packages/core/src/feedback/progress-bar/`, expose `progressFraction()`
25
- // and `progressLabel()` computed signals on `KjStepperComponent`-shaped
26
- // wrappers. The directive layer here intentionally stays out of the
27
- // progress-bar composition — that's a wrapper concern.
28
-
29
- let _stepperUid = 0;
30
-
31
- /**
32
- * Root of the Stepper directive family. Owns the active-step state machine,
33
- * registers child `KjStep` directives, and provides {@link KJ_STEPPER}.
34
- *
35
- * Applied to an `<ol>`. Uses APG wizard semantics — `aria-current="step"`
36
- * on the active step, *not* `role="tablist"` / `aria-selected`.
37
- *
38
- * Roving tabindex is composed via {@link KjRovingTabindex} with the
39
- * orientation fed from `kjOrientation`. When `kjArrowNavigation=false`
40
- * the roving directive is still applied but receives no items, so it
41
- * is a no-op.
42
- *
43
- * @example
44
- * ```html
45
- * <ol kjStepper [(kjActiveStep)]="step">
46
- * <li kjStep>
47
- * <button kjStepLabel>Account</button>
48
- * <section kjStepContent>...</section>
49
- * </li>
50
- * <li kjStep>
51
- * <button kjStepLabel>Profile</button>
52
- * <section kjStepContent>...</section>
53
- * </li>
54
- * <button kjStepperPrevious>Back</button>
55
- * <button kjStepperNext>Continue</button>
56
- * </ol>
57
- * ```
58
- * @doc-category Core/Navigation
59
- * @doc
60
- * @doc-name stepper
61
- * @doc-description Unstyled multi-step wizard root with active-step state, linear-mode gating, and keyboard navigation.
62
- * @doc-is-main
63
- */
64
- @Directive({
65
- selector: '[kjStepper]',
66
- standalone: true,
67
- exportAs: 'kjStepper',
68
- hostDirectives: [
69
- {
70
- directive: KjRovingTabindex,
71
- inputs: ['kjRovingOrientation: kjOrientation'],
72
- },
73
- ],
74
- providers: [{ provide: KJ_STEPPER, useExisting: KjStepper }],
75
- host: {
76
- // No `role` override — `<ol>` carries `list` semantics natively. We do
77
- // not bind `aria-orientation` because `aria-allowed-attr` rejects it on
78
- // the implicit `list` role; the keyboard axis is enforced via
79
- // `KjRovingTabindex`'s `kjRovingOrientation` and themes read
80
- // `data-orientation` for visual layout.
81
- '[attr.data-orientation]': 'orientation()',
82
- '[attr.data-linear]': 'linear() ? "true" : null',
83
- '[attr.data-active-step]': 'activeStep()',
84
- },
85
- })
86
- export class KjStepper implements KjStepperContext {
87
- /** Two-way bound active-step pointer (0-based). */
88
- readonly kjActiveStep = model<number>(0);
89
-
90
- /** Linear-mode flag. Linear gates forward jumps on prior-step completion. */
91
- readonly kjLinear = input<boolean>(false);
92
-
93
- /** Stepper orientation. Drives `aria-orientation` and the arrow-key axis. */
94
- readonly kjOrientation = input<'horizontal' | 'vertical'>('horizontal');
95
-
96
- /** When true, `next()` from the last step wraps to 0; `previous()` from 0 wraps to last. */
97
- readonly kjLoop = input<boolean>(false);
98
-
99
- /** Whether `reset()` should also emit `(kjReset)` so consumers can clear per-step signals. */
100
- readonly kjResetStepStates = input<boolean>(false);
101
-
102
- /** Whether to enable arrow-key roving across step headers. */
103
- readonly kjArrowNavigation = input<boolean>(true);
104
-
105
- /** Stable id for this stepper instance, used to namespace step ids. */
106
- readonly stepperId = `kj-stepper-${++_stepperUid}`;
107
-
108
- private readonly _steps = signal<readonly KjStepContext[]>([]);
109
- private readonly _navigationSource = signal<'click' | 'command' | 'programmatic'>(
110
- 'programmatic',
111
- );
112
-
113
- /** @internal — read-only view of registered steps in registration order. */
114
- readonly steps = this._steps.asReadonly();
115
-
116
- /** @internal — read by `KjStepLabel` to decide focus behaviour. */
117
- readonly navigationSource = this._navigationSource.asReadonly();
118
-
119
- /** Active-step index (0-based). */
120
- readonly activeStep: Signal<number> = computed(() => this.kjActiveStep());
121
-
122
- /** Total registered step count. */
123
- readonly totalSteps: Signal<number> = computed(() => this._steps().length);
124
-
125
- /** Linear-mode flag (signal mirror). */
126
- readonly linear: Signal<boolean> = computed(() => this.kjLinear());
127
-
128
- /** Orientation (signal mirror). */
129
- readonly orientation: Signal<'horizontal' | 'vertical'> = computed(() =>
130
- this.kjOrientation(),
131
- );
132
-
133
- /** True when `next()` will succeed under the current mode and state. */
134
- readonly canAdvance: Signal<boolean> = computed(() => {
135
- const steps = this._steps();
136
- const total = steps.length;
137
- if (total === 0) return false;
138
- const idx = this.kjActiveStep();
139
- const atEnd = idx >= total - 1;
140
- if (atEnd && !this.kjLoop()) return false;
141
- if (!this.kjLinear()) return true;
142
- const current = steps[idx];
143
- if (!current) return false;
144
- return current.completed() || current.optional();
145
- });
146
-
147
- /** True when `previous()` will succeed. */
148
- readonly canRetreat: Signal<boolean> = computed(() => {
149
- const total = this.totalSteps();
150
- if (total === 0) return false;
151
- if (this.activeStep() > 0) return true;
152
- return this.kjLoop();
153
- });
154
-
155
- constructor() {
156
- // Two-way binding sync: clamp out-of-range writes silently. The clamped
157
- // value is in-range, so the effect re-runs once and stabilises.
158
- effect(() => {
159
- const v = this.kjActiveStep();
160
- const total = this.totalSteps();
161
- if (total === 0) return;
162
- if (v < 0) {
163
- this.kjActiveStep.set(0);
164
- } else if (v >= total) {
165
- this.kjActiveStep.set(total - 1);
166
- }
167
- });
168
- }
169
-
170
- /** @internal */
171
- register(step: KjStepContext): void {
172
- this._steps.update((steps) => [...steps, step]);
173
- }
174
-
175
- /** @internal */
176
- unregister(step: KjStepContext): void {
177
- this._steps.update((steps) => steps.filter((s) => s !== step));
178
- }
179
-
180
- /** @internal — reachability under linear gating. */
181
- isReachable(index: number): boolean {
182
- if (!this.kjLinear()) return true;
183
- const active = this.kjActiveStep();
184
- if (index <= active) return true;
185
- const steps = this._steps();
186
- // For any forward jump, every step strictly before `index` must be
187
- // completed or optional. This subsumes the "+1" case (only the active
188
- // step matters then, since steps before it are necessarily completed
189
- // in a well-formed linear flow — and if they aren't, the user can't
190
- // be there in the first place).
191
- for (let i = 0; i < index; i++) {
192
- const s = steps[i];
193
- if (!s) return false;
194
- if (!s.completed() && !s.optional()) return false;
195
- }
196
- return true;
197
- }
198
-
199
- /** Advance one step. No-op when `canAdvance()` is false. */
200
- next(): void {
201
- if (!this.canAdvance()) return;
202
- this._navigationSource.set('command');
203
- const total = this.totalSteps();
204
- const idx = this.activeStep();
205
- const nextIdx = idx >= total - 1 ? (this.kjLoop() ? 0 : idx) : idx + 1;
206
- this.kjActiveStep.set(nextIdx);
207
- }
208
-
209
- /** Retreat one step. No-op when `canRetreat()` is false. */
210
- previous(): void {
211
- if (!this.canRetreat()) return;
212
- this._navigationSource.set('command');
213
- const idx = this.activeStep();
214
- const total = this.totalSteps();
215
- const prevIdx = idx === 0 ? (this.kjLoop() ? total - 1 : 0) : idx - 1;
216
- this.kjActiveStep.set(prevIdx);
217
- }
218
-
219
- /** Jump to a specific index. Subject to linear-mode gating. */
220
- goTo(index: number): void {
221
- const total = this.totalSteps();
222
- if (total === 0) return;
223
- if (index < 0 || index >= total) return;
224
- if (!this.isReachable(index)) return;
225
- this._navigationSource.set('click');
226
- this.kjActiveStep.set(index);
227
- }
228
-
229
- /** Jump to the step whose `kjStepKey` matches. First match wins. */
230
- goToKey(key: string): void {
231
- const steps = this._steps();
232
- const idx = steps.findIndex((s) => s.key() === key);
233
- if (idx === -1) return;
234
- this.goTo(idx);
235
- }
236
-
237
- /** Reset to step 0. Consumer is responsible for clearing per-step state when `kjResetStepStates=true`. */
238
- reset(): void {
239
- this._navigationSource.set('command');
240
- this.kjActiveStep.set(0);
241
- }
242
- }
243
-
244
- let _stepUid = 0;
245
-
246
- /**
247
- * Individual step within a {@link KjStepper}. Registers with the parent on
248
- * construction, exposes per-step state (`completed`, `error`, `optional`,
249
- * `disabled`, `reachable`, `active`) via {@link KJ_STEP}, and host-binds
250
- * `aria-current="step"` when active.
251
- *
252
- * @example
253
- * ```html
254
- * <li kjStep [kjStepCompleted]="form.valid()" [kjStepError]="form.invalid() && form.touched()">
255
- * <button kjStepLabel>Profile</button>
256
- * <section kjStepContent>...</section>
257
- * </li>
258
- * ```
259
- * @doc-category Core/Navigation
260
- * @doc
261
- * @doc-name stepper
262
- */
263
- @Directive({
264
- selector: '[kjStep]',
265
- standalone: true,
266
- exportAs: 'kjStep',
267
- providers: [{ provide: KJ_STEP, useExisting: KjStep }],
268
- host: {
269
- // No `role` override — applied to an `<li>`, the native `listitem`
270
- // semantics already apply, and forcing the role would orphan the item
271
- // when the step lives inside a non-`<ol>` parent (rare but possible).
272
- '[attr.aria-current]': 'active() ? "step" : null',
273
- '[attr.data-active]': 'active() ? "true" : null',
274
- '[attr.data-completed]': 'completed() ? "true" : null',
275
- '[attr.data-error]': 'error() ? "true" : null',
276
- '[attr.data-optional]': 'optional() ? "true" : null',
277
- '[attr.data-disabled]': 'disabled() ? "true" : null',
278
- '[attr.data-reachable]': 'reachable() ? "true" : null',
279
- '[attr.data-step-index]': 'index()',
280
- },
281
- })
282
- export class KjStep implements KjStepContext {
283
- private readonly stepper = inject(KJ_STEPPER) as KjStepper;
284
-
285
- /** Marks the step as completed. Drives `data-completed` and gates linear advancement. */
286
- readonly kjStepCompleted = input<boolean>(false);
287
-
288
- /** Marks the step as in error. Drives `data-error`. Does *not* block advancement on its own. */
289
- readonly kjStepError = input<boolean>(false);
290
-
291
- /** Marks the step as optional — permits linear advancement without `completed`. */
292
- readonly kjStepOptional = input<boolean>(false);
293
-
294
- /** Explicit per-step disable, independent of linear-mode reachability. */
295
- readonly kjStepDisabled = input<boolean>(false);
296
-
297
- /** Optional human-meaningful key for `goToKey()` / analytics. */
298
- readonly kjStepKey = input<string | undefined>(undefined);
299
-
300
- private readonly _uid = ++_stepUid;
301
-
302
- /** 0-based index in the parent stepper's step list. */
303
- readonly index: Signal<number> = computed(() => this.stepper.steps().indexOf(this));
304
-
305
- /** True when this is the active step. */
306
- readonly active: Signal<boolean> = computed(
307
- () => this.stepper.activeStep() === this.index(),
308
- );
309
-
310
- /** Mirror of the `kjStepCompleted` input as a signal. */
311
- readonly completed: Signal<boolean> = computed(() => this.kjStepCompleted());
312
-
313
- /** Mirror of the `kjStepError` input as a signal. */
314
- readonly error: Signal<boolean> = computed(() => this.kjStepError());
315
-
316
- /** Mirror of the `kjStepOptional` input as a signal. */
317
- readonly optional: Signal<boolean> = computed(() => this.kjStepOptional());
318
-
319
- /** Mirror of the `kjStepDisabled` input as a signal. */
320
- readonly disabled: Signal<boolean> = computed(() => this.kjStepDisabled());
321
-
322
- /** Mirror of the `kjStepKey` input as a signal. */
323
- readonly key: Signal<string | undefined> = computed(() => this.kjStepKey());
324
-
325
- /** True when this step is reachable under the current mode (always true non-linear). */
326
- readonly reachable: Signal<boolean> = computed(() => {
327
- if (this.disabled()) return false;
328
- return this.stepper.isReachable(this.index());
329
- });
330
-
331
- /** Stable id for `aria-labelledby` wiring. */
332
- readonly labelId: Signal<string> = computed(
333
- () => `${this.stepper.stepperId}-step-${this._uid}-label`,
334
- );
335
-
336
- /** Stable id for the content region. */
337
- readonly contentId: Signal<string> = computed(
338
- () => `${this.stepper.stepperId}-step-${this._uid}-content`,
339
- );
340
-
341
- constructor() {
342
- this.stepper.register(this);
343
- }
344
-
345
- /** Activate this step. Subject to linear-mode gating. */
346
- activate(): void {
347
- if (this.disabled()) return;
348
- this.stepper.goTo(this.index());
349
- }
350
- }
351
-
352
- /**
353
- * Marks an element as the *header* of its parent {@link KjStep}. Wires the
354
- * accessible id, `aria-controls`, `aria-disabled`, and the click handler.
355
- * Also acts as a roving-tabindex item, joining the parent stepper's
356
- * single-tab-stop header strip.
357
- *
358
- * Apply to `<button>` (the recommended host) or any focusable element.
359
- *
360
- * @example
361
- * ```html
362
- * <button kjStepLabel>Profile</button>
363
- * ```
364
- * @doc-category Core/Navigation
365
- * @doc
366
- * @doc-name stepper
367
- */
368
- @Directive({
369
- selector: '[kjStepLabel]',
370
- standalone: true,
371
- hostDirectives: [KjRovingTabindexItemDirective],
372
- host: {
373
- '[attr.id]': 'step.labelId()',
374
- '[attr.aria-controls]': 'step.contentId()',
375
- '[attr.aria-disabled]': 'isAriaDisabled()',
376
- '[attr.disabled]': 'isNativeDisabled()',
377
- '[attr.data-active]': 'step.active() ? "true" : null',
378
- '(click)': 'onClick()',
379
- '(keydown.enter)': 'onActivationKey($event)',
380
- '(keydown.space)': 'onActivationKey($event)',
381
- },
382
- })
383
- export class KjStepLabel {
384
- /** Parent step context. */
385
- readonly step = inject(KJ_STEP);
386
- private readonly host = inject(ElementRef<HTMLElement>);
387
-
388
- /** True when host element is a native `<button>`. */
389
- private readonly isButton = computed(
390
- () => this.host.nativeElement.tagName === 'BUTTON',
391
- );
392
-
393
- /** Resolves the `aria-disabled` attribute string ('true' or null). */
394
- readonly isAriaDisabled = computed(() => {
395
- const blocked = this.step.disabled() || !this.step.reachable();
396
- return blocked ? 'true' : null;
397
- });
398
-
399
- /** Resolves the native `disabled` attribute, only when host is a button. */
400
- readonly isNativeDisabled = computed(() => {
401
- if (!this.isButton()) return null;
402
- const blocked = this.step.disabled() || !this.step.reachable();
403
- return blocked ? '' : null;
404
- });
405
-
406
- /** @internal */
407
- onClick(): void {
408
- if (this.step.disabled() || !this.step.reachable()) return;
409
- this.step.activate();
410
- }
411
-
412
- /** @internal */
413
- onActivationKey(event: Event): void {
414
- // Native <button> handles Enter/Space natively — only intercept when host is not a button.
415
- if (this.isButton()) return;
416
- event.preventDefault();
417
- if (this.step.disabled() || !this.step.reachable()) return;
418
- this.step.activate();
419
- }
420
- }
421
-
422
- /**
423
- * Marks an element as the *content panel* of its parent {@link KjStep}.
424
- * Host-binds `role="region"`, `aria-labelledby` to the step's label id,
425
- * and toggles `[hidden]` / `[inert]` based on the step's active state.
426
- *
427
- * The wrapper layer renders the content via `@if (step.active())` so only
428
- * the active panel is in the DOM. This directive's host bindings remain
429
- * correct even when the wrapper opts to keep all panels mounted (e.g.
430
- * for a crossfade).
431
- *
432
- * @example
433
- * ```html
434
- * <section kjStepContent>...</section>
435
- * ```
436
- * @doc-category Core/Navigation
437
- * @doc
438
- * @doc-name stepper
439
- */
440
- @Directive({
441
- selector: '[kjStepContent]',
442
- standalone: true,
443
- host: {
444
- role: 'region',
445
- '[attr.id]': 'step.contentId()',
446
- '[attr.aria-labelledby]': 'step.labelId()',
447
- '[attr.hidden]': '!step.active() ? "" : null',
448
- '[attr.inert]': '!step.active() ? "" : null',
449
- '[attr.data-state]': 'step.active() ? "active" : "inactive"',
450
- '[attr.tabindex]': 'step.active() ? "-1" : null',
451
- },
452
- })
453
- export class KjStepContent {
454
- /** Parent step context. */
455
- readonly step = inject(KJ_STEP);
456
- }
457
-
458
- /**
459
- * Stepper-level *Next* command. Apply to a `<button>`. Host-binds
460
- * `[disabled]` from the parent's `canAdvance()`, and dispatches `next()` on click.
461
- *
462
- * @example `<button kjStepperNext>Continue</button>`
463
- * @doc-category Core/Navigation
464
- * @doc
465
- * @doc-name stepper
466
- */
467
- @Directive({
468
- selector: '[kjStepperNext]',
469
- standalone: true,
470
- host: {
471
- '[attr.disabled]': 'isDisabled()',
472
- '[attr.aria-disabled]': 'isDisabled() !== null ? "true" : null',
473
- '[attr.data-stepper-action]': '"next"',
474
- '(click)': 'onClick()',
475
- },
476
- })
477
- export class KjStepperNext {
478
- private readonly stepper = inject(KJ_STEPPER);
479
-
480
- /** @internal */
481
- readonly isDisabled = computed(() => (this.stepper.canAdvance() ? null : ''));
482
-
483
- /** @internal */
484
- onClick(): void {
485
- this.stepper.next();
486
- }
487
- }
488
-
489
- /**
490
- * Stepper-level *Previous* command. Apply to a `<button>`. Host-binds
491
- * `[disabled]` from the parent's `canRetreat()`, and dispatches `previous()` on click.
492
- *
493
- * @example `<button kjStepperPrevious>Back</button>`
494
- * @doc-category Core/Navigation
495
- * @doc
496
- * @doc-name stepper
497
- */
498
- @Directive({
499
- selector: '[kjStepperPrevious]',
500
- standalone: true,
501
- host: {
502
- '[attr.disabled]': 'isDisabled()',
503
- '[attr.aria-disabled]': 'isDisabled() !== null ? "true" : null',
504
- '[attr.data-stepper-action]': '"previous"',
505
- '(click)': 'onClick()',
506
- },
507
- })
508
- export class KjStepperPrevious {
509
- private readonly stepper = inject(KJ_STEPPER);
510
-
511
- /** @internal */
512
- readonly isDisabled = computed(() => (this.stepper.canRetreat() ? null : ''));
513
-
514
- /** @internal */
515
- onClick(): void {
516
- this.stepper.previous();
517
- }
518
- }
519
-
520
- /**
521
- * Stepper-level *Reset* command. Apply to a `<button>`. Dispatches
522
- * `reset()` on click; never gated.
523
- *
524
- * @example `<button kjStepperReset>Start over</button>`
525
- * @doc-category Core/Navigation
526
- * @doc
527
- * @doc-name stepper
528
- */
529
- @Directive({
530
- selector: '[kjStepperReset]',
531
- standalone: true,
532
- host: {
533
- '[attr.data-stepper-action]': '"reset"',
534
- '(click)': 'onClick()',
535
- },
536
- })
537
- export class KjStepperReset {
538
- private readonly stepper = inject(KJ_STEPPER);
539
-
540
- /** @internal */
541
- onClick(): void {
542
- this.stepper.reset();
543
- }
544
- }
@@ -1,82 +0,0 @@
1
- /* ─────────────────────────────────────────────────────────────
2
- kouji-ui docs example themes
3
- Three theme layers: kj.tokens (defaults) + kj.theme (overrides)
4
- ──────────────────────────────────────────────────────────── */
5
-
6
- @layer kj.tokens, kj.theme;
7
-
8
- /* ── Default (dark) tokens — applied to :root and .kj-theme-default ── */
9
- @layer kj.tokens {
10
- :root,
11
- .kj-theme-default {
12
- --kj-bg: #0c0c0c;
13
- --kj-surface: #1a1a1a;
14
- --kj-text: #f0ede6;
15
- --kj-text-muted: #888;
16
- --kj-border: #333;
17
- --kj-accent: #b8f500;
18
- --kj-accent-on: #0c0c0c;
19
- --kj-destructive: #ef4444;
20
- --kj-radius-sm: 0px;
21
- --kj-radius-md: 0px;
22
- --kj-radius-lg: 0px;
23
- --kj-shadow-sm: none;
24
- --kj-shadow-md: none;
25
- --kj-shadow-hard: none;
26
- --kj-font: 'JetBrains Mono', monospace;
27
- --kj-btn-border: none;
28
- --kj-btn-outline-border: 1px solid rgba(240, 237, 230, 0.6);
29
- --kj-btn-ghost-color: rgba(240, 237, 230, 0.55);
30
- --kj-backdrop: rgba(0, 0, 0, 0.75);
31
- --kj-transition: opacity 0.15s;
32
- }
33
- }
34
-
35
- /* ── Theme overrides ── */
36
- @layer kj.theme {
37
- .kj-theme-retro {
38
- --kj-bg: #fef9c3;
39
- --kj-surface: #fef9c3;
40
- --kj-text: #000;
41
- --kj-text-muted: #444;
42
- --kj-border: #000;
43
- --kj-accent: #16a34a;
44
- --kj-accent-on: #fff;
45
- --kj-destructive: #dc2626;
46
- --kj-radius-sm: 0px;
47
- --kj-radius-md: 0px;
48
- --kj-radius-lg: 0px;
49
- --kj-shadow-sm: 2px 2px 0 #000;
50
- --kj-shadow-md: 4px 4px 0 #000;
51
- --kj-shadow-hard: 6px 6px 0 #000;
52
- --kj-font: 'Courier New', monospace;
53
- --kj-btn-border: 2px solid #000;
54
- --kj-btn-outline-border: 2px solid #000;
55
- --kj-btn-ghost-color: #555;
56
- --kj-backdrop: rgba(0, 0, 0, 0.6);
57
- --kj-transition: transform 0.08s, box-shadow 0.08s;
58
- }
59
-
60
- .kj-theme-finance {
61
- --kj-bg: #f9fafb;
62
- --kj-surface: #fff;
63
- --kj-text: #111827;
64
- --kj-text-muted: #6b7280;
65
- --kj-border: #e5e7eb;
66
- --kj-accent: #3b82f6;
67
- --kj-accent-on: #fff;
68
- --kj-destructive: #ef4444;
69
- --kj-radius-sm: 4px;
70
- --kj-radius-md: 6px;
71
- --kj-radius-lg: 12px;
72
- --kj-shadow-sm: 0 4px 12px rgba(0, 0, 0, 0.1);
73
- --kj-shadow-md: 0 8px 30px rgba(0, 0, 0, 0.1);
74
- --kj-shadow-hard: 0 20px 60px rgba(0, 0, 0, 0.12);
75
- --kj-font: system-ui, -apple-system, sans-serif;
76
- --kj-btn-border: 1px solid transparent;
77
- --kj-btn-outline-border: 1px solid #6b7280;
78
- --kj-btn-ghost-color: #374151;
79
- --kj-backdrop: rgba(0, 0, 0, 0.4);
80
- --kj-transition: background 0.12s;
81
- }
82
- }
package/src/styles.css DELETED
@@ -1,17 +0,0 @@
1
- /* ─────────────────────────────────────────────────────────────
2
- @kouji-ui/core — aggregated global stylesheet
3
- --------------------------------------------------------------
4
- Single entry-point for the core-only global CSS pieces that
5
- ship without a corresponding Angular component (prose + icon
6
- attribute styles).
7
-
8
- Overlay container chrome ships separately through
9
- `packages/components/src/overlay/overlay.css`, which re-exports
10
- the core overlay primitive plus every themed overlay-family
11
- component (popover, tooltip, dropdown-menu, dialog, drawer,
12
- toast, confirm-popup). Register that one file alongside this
13
- one in your build.
14
- ──────────────────────────────────────────────────────────── */
15
-
16
- @import "./typography/prose.css";
17
- @import "./icon/icon.css";