@kouji-ui/components 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.
- package/fesm2022/kouji-ui-components.mjs +17668 -0
- package/fesm2022/kouji-ui-components.mjs.map +1 -0
- package/package.json +17 -10
- package/types/kouji-ui-components.d.ts +8032 -0
- package/.turbo/turbo-build.log +0 -29
- package/CHANGELOG.md +0 -192
- package/ng-package.json +0 -7
- package/src/accordion/_examples/accordion.default.example.ts +0 -31
- package/src/accordion/_examples/accordion.disabled.example.ts +0 -38
- package/src/accordion/_examples/accordion.multiple.example.ts +0 -31
- package/src/accordion/_examples/accordion.rich-content.example.ts +0 -49
- package/src/accordion/_examples/index.ts +0 -6
- package/src/accordion/accordion.arrow-nav.example.ts +0 -39
- package/src/accordion/accordion.css +0 -68
- package/src/accordion/accordion.playground.ts +0 -119
- package/src/accordion/accordion.spec.ts +0 -117
- package/src/accordion/accordion.ts +0 -153
- package/src/accordion/accordion.usage.example.ts +0 -38
- package/src/accordion/accordion.value.example.ts +0 -60
- package/src/accordion/index.ts +0 -1
- package/src/alert/_examples/alert.banner.example.ts +0 -56
- package/src/alert/_examples/alert.dismissible.example.ts +0 -53
- package/src/alert/_examples/alert.example.ts +0 -40
- package/src/alert/_examples/alert.variants.example.ts +0 -66
- package/src/alert/_examples/alert.with-actions.example.ts +0 -57
- package/src/alert/_examples/index.ts +0 -7
- package/src/alert/alert.css +0 -133
- package/src/alert/alert.playground.ts +0 -111
- package/src/alert/alert.spec.ts +0 -167
- package/src/alert/alert.ts +0 -250
- package/src/alert/alert.usage.example.ts +0 -58
- package/src/alert/index.ts +0 -8
- package/src/avatar/_examples/avatar-group.example.ts +0 -31
- package/src/avatar/_examples/avatar-group.list.example.ts +0 -45
- package/src/avatar/_examples/avatar-group.overflow.example.ts +0 -33
- package/src/avatar/_examples/avatar-group.shapes.example.ts +0 -39
- package/src/avatar/_examples/avatar-group.sizes.example.ts +0 -44
- package/src/avatar/_examples/avatar.default.example.ts +0 -18
- package/src/avatar/_examples/avatar.initials.example.ts +0 -20
- package/src/avatar/_examples/avatar.shapes.example.ts +0 -22
- package/src/avatar/_examples/avatar.sizes.example.ts +0 -26
- package/src/avatar/_examples/avatar.with-image.example.ts +0 -20
- package/src/avatar/_examples/index.ts +0 -12
- package/src/avatar/avatar-group.spec.ts +0 -138
- package/src/avatar/avatar-group.ts +0 -127
- package/src/avatar/avatar-group.usage.example.ts +0 -30
- package/src/avatar/avatar.css +0 -58
- package/src/avatar/avatar.playground.ts +0 -95
- package/src/avatar/avatar.ts +0 -123
- package/src/avatar/index.ts +0 -2
- package/src/badge/_examples/badge.default.example.ts +0 -18
- package/src/badge/_examples/badge.sizes.example.ts +0 -25
- package/src/badge/_examples/badge.variants.example.ts +0 -24
- package/src/badge/_examples/badge.with-dot.example.ts +0 -31
- package/src/badge/_examples/badge.with-icon.example.ts +0 -23
- package/src/badge/_examples/index.ts +0 -7
- package/src/badge/badge.css +0 -59
- package/src/badge/badge.playground.ts +0 -49
- package/src/badge/badge.ts +0 -86
- package/src/badge/badge.usage.example.ts +0 -22
- package/src/badge/index.ts +0 -1
- package/src/breadcrumb/_examples/breadcrumb.custom-separator.example.ts +0 -53
- package/src/breadcrumb/_examples/breadcrumb.example.ts +0 -48
- package/src/breadcrumb/_examples/breadcrumb.long-path.example.ts +0 -58
- package/src/breadcrumb/_examples/breadcrumb.truncated.example.ts +0 -59
- package/src/breadcrumb/_examples/breadcrumb.with-icons.example.ts +0 -66
- package/src/breadcrumb/_examples/index.ts +0 -7
- package/src/breadcrumb/breadcrumb.css +0 -121
- package/src/breadcrumb/breadcrumb.playground.ts +0 -93
- package/src/breadcrumb/breadcrumb.spec.ts +0 -230
- package/src/breadcrumb/breadcrumb.ts +0 -272
- package/src/breadcrumb/breadcrumb.usage.example.ts +0 -45
- package/src/breadcrumb/index.ts +0 -1
- package/src/button/_examples/button.anchor.example.ts +0 -18
- package/src/button/_examples/button.configured.example.ts +0 -43
- package/src/button/_examples/button.disabled.example.ts +0 -25
- package/src/button/_examples/button.example.ts +0 -22
- package/src/button/_examples/button.icon.example.ts +0 -27
- package/src/button/_examples/button.loading.example.ts +0 -31
- package/src/button/_examples/button.pressed.example.ts +0 -24
- package/src/button/_examples/button.sizes.example.ts +0 -26
- package/src/button/_examples/button.usage.example.ts +0 -66
- package/src/button/_examples/button.variants.example.ts +0 -26
- package/src/button/_examples/index.ts +0 -12
- package/src/button/button.css +0 -263
- package/src/button/button.playground.ts +0 -79
- package/src/button/button.spec.ts +0 -100
- package/src/button/button.ts +0 -150
- package/src/button/index.ts +0 -1
- package/src/button-group/_examples/button-group.example.ts +0 -30
- package/src/button-group/_examples/button-group.icon-only.example.ts +0 -30
- package/src/button-group/_examples/button-group.toggle.example.ts +0 -36
- package/src/button-group/_examples/button-group.variants.example.ts +0 -40
- package/src/button-group/_examples/button-group.vertical.example.ts +0 -29
- package/src/button-group/_examples/index.ts +0 -7
- package/src/button-group/button-group.css +0 -80
- package/src/button-group/button-group.playground.ts +0 -94
- package/src/button-group/button-group.spec.ts +0 -119
- package/src/button-group/button-group.ts +0 -130
- package/src/button-group/button-group.usage.example.ts +0 -35
- package/src/button-group/index.ts +0 -1
- package/src/calendar/_examples/calendar.example.ts +0 -33
- package/src/calendar/_examples/index.ts +0 -3
- package/src/calendar/calendar.css +0 -129
- package/src/calendar/calendar.playground.ts +0 -84
- package/src/calendar/calendar.spec.ts +0 -50
- package/src/calendar/calendar.ts +0 -171
- package/src/calendar/calendar.usage.example.ts +0 -33
- package/src/calendar/index.ts +0 -1
- package/src/card/_examples/card.cover.example.ts +0 -53
- package/src/card/_examples/card.example.ts +0 -27
- package/src/card/_examples/card.full.example.ts +0 -51
- package/src/card/_examples/index.ts +0 -5
- package/src/card/card.css +0 -120
- package/src/card/card.playground.ts +0 -116
- package/src/card/card.spec.ts +0 -50
- package/src/card/card.ts +0 -194
- package/src/card/card.usage.example.ts +0 -46
- package/src/card/index.ts +0 -1
- package/src/carousel/_examples/carousel.autoplay.example.ts +0 -69
- package/src/carousel/_examples/carousel.example.ts +0 -60
- package/src/carousel/_examples/carousel.indicators.example.ts +0 -64
- package/src/carousel/_examples/carousel.lazy-load.example.ts +0 -85
- package/src/carousel/_examples/carousel.tabs-pattern.example.ts +0 -61
- package/src/carousel/_examples/index.ts +0 -7
- package/src/carousel/carousel.css +0 -181
- package/src/carousel/carousel.playground.ts +0 -135
- package/src/carousel/carousel.spec.ts +0 -211
- package/src/carousel/carousel.ts +0 -399
- package/src/carousel/carousel.usage.example.ts +0 -46
- package/src/carousel/index.ts +0 -1
- package/src/cascade-select/_examples/cascade-select.data-driven.example.ts +0 -119
- package/src/cascade-select/_examples/cascade-select.disabled.example.ts +0 -74
- package/src/cascade-select/_examples/cascade-select.example.ts +0 -80
- package/src/cascade-select/_examples/cascade-select.field.example.ts +0 -73
- package/src/cascade-select/_examples/cascade-select.path.example.ts +0 -85
- package/src/cascade-select/_examples/index.ts +0 -7
- package/src/cascade-select/cascade-select.css +0 -120
- package/src/cascade-select/cascade-select.playground.ts +0 -133
- package/src/cascade-select/cascade-select.ts +0 -201
- package/src/cascade-select/cascade-select.usage.example.ts +0 -44
- package/src/cascade-select/index.ts +0 -5
- package/src/chat/_examples/chat-bubble.example.ts +0 -71
- package/src/chat/_examples/chat-bubble.grouped.example.ts +0 -69
- package/src/chat/_examples/chat-bubble.sides.example.ts +0 -41
- package/src/chat/_examples/chat-bubble.variants.example.ts +0 -58
- package/src/chat/_examples/chat-bubble.with-state.example.ts +0 -57
- package/src/chat/_examples/index.ts +0 -7
- package/src/chat/chat.css +0 -231
- package/src/chat/chat.playground.ts +0 -171
- package/src/chat/chat.spec.ts +0 -343
- package/src/chat/chat.ts +0 -269
- package/src/chat/chat.usage.example.ts +0 -49
- package/src/chat/index.ts +0 -13
- package/src/checkbox/_examples/checkbox.checked.example.ts +0 -20
- package/src/checkbox/_examples/checkbox.default.example.ts +0 -20
- package/src/checkbox/_examples/checkbox.disabled.example.ts +0 -26
- package/src/checkbox/_examples/checkbox.indeterminate.example.ts +0 -20
- package/src/checkbox/_examples/checkbox.usage.example.ts +0 -62
- package/src/checkbox/_examples/index.ts +0 -7
- package/src/checkbox/checkbox.css +0 -74
- package/src/checkbox/checkbox.playground.ts +0 -68
- package/src/checkbox/checkbox.ts +0 -122
- package/src/checkbox/index.ts +0 -1
- package/src/color-picker/_examples/color-picker.alpha.example.ts +0 -36
- package/src/color-picker/_examples/color-picker.example.ts +0 -34
- package/src/color-picker/_examples/color-picker.hex-input.example.ts +0 -53
- package/src/color-picker/_examples/color-picker.in-form.example.ts +0 -60
- package/src/color-picker/_examples/color-picker.usage.example.ts +0 -58
- package/src/color-picker/_examples/color-picker.with-presets.example.ts +0 -45
- package/src/color-picker/_examples/index.ts +0 -8
- package/src/color-picker/color-picker.css +0 -183
- package/src/color-picker/color-picker.playground.ts +0 -83
- package/src/color-picker/color-picker.spec.ts +0 -94
- package/src/color-picker/color-picker.ts +0 -234
- package/src/color-picker/index.ts +0 -1
- package/src/combobox/_examples/combobox.async.example.ts +0 -85
- package/src/combobox/_examples/combobox.empty-state.example.ts +0 -36
- package/src/combobox/_examples/combobox.example.ts +0 -36
- package/src/combobox/_examples/combobox.free-text.example.ts +0 -42
- package/src/combobox/_examples/combobox.usage.example.ts +0 -51
- package/src/combobox/_examples/combobox.with-icons.example.ts +0 -49
- package/src/combobox/_examples/index.ts +0 -8
- package/src/combobox/combobox.css +0 -101
- package/src/combobox/combobox.playground.ts +0 -90
- package/src/combobox/combobox.spec.ts +0 -111
- package/src/combobox/combobox.ts +0 -219
- package/src/combobox/index.ts +0 -6
- package/src/command-palette/_examples/command-palette.async.example.ts +0 -99
- package/src/command-palette/_examples/command-palette.dialog.example.ts +0 -90
- package/src/command-palette/_examples/command-palette.example.ts +0 -40
- package/src/command-palette/_examples/command-palette.fuzzy.example.ts +0 -54
- package/src/command-palette/_examples/command-palette.groups.example.ts +0 -55
- package/src/command-palette/_examples/command-palette.usage.example.ts +0 -49
- package/src/command-palette/_examples/index.ts +0 -8
- package/src/command-palette/command-palette.css +0 -234
- package/src/command-palette/command-palette.playground.ts +0 -119
- package/src/command-palette/command-palette.ts +0 -448
- package/src/command-palette/index.ts +0 -10
- package/src/confirm-popup/_examples/confirm-popup.destructive.example.ts +0 -72
- package/src/confirm-popup/_examples/confirm-popup.example.ts +0 -82
- package/src/confirm-popup/_examples/confirm-popup.placement.example.ts +0 -97
- package/src/confirm-popup/_examples/confirm-popup.usage.example.ts +0 -94
- package/src/confirm-popup/_examples/confirm-popup.with-message.example.ts +0 -76
- package/src/confirm-popup/_examples/index.ts +0 -7
- package/src/confirm-popup/confirm-popup.css +0 -47
- package/src/confirm-popup/confirm-popup.playground.ts +0 -109
- package/src/confirm-popup/confirm-popup.spec.ts +0 -209
- package/src/confirm-popup/confirm-popup.ts +0 -279
- package/src/confirm-popup/index.ts +0 -1
- package/src/date-picker/_examples/date-picker.disabled-dates.example.ts +0 -44
- package/src/date-picker/_examples/date-picker.example.ts +0 -38
- package/src/date-picker/_examples/date-picker.locale.example.ts +0 -50
- package/src/date-picker/_examples/date-picker.readonly.example.ts +0 -32
- package/src/date-picker/_examples/date-picker.usage.example.ts +0 -60
- package/src/date-picker/_examples/date-picker.with-min-max.example.ts +0 -47
- package/src/date-picker/_examples/index.ts +0 -8
- package/src/date-picker/date-picker.css +0 -61
- package/src/date-picker/date-picker.playground.ts +0 -79
- package/src/date-picker/date-picker.spec.ts +0 -71
- package/src/date-picker/date-picker.ts +0 -185
- package/src/date-picker/index.ts +0 -1
- package/src/dialog/_examples/dialog.confirmation.example.ts +0 -30
- package/src/dialog/_examples/dialog.default.example.ts +0 -30
- package/src/dialog/_examples/dialog.nested.example.ts +0 -86
- package/src/dialog/_examples/dialog.scrollable.example.ts +0 -30
- package/src/dialog/_examples/dialog.usage.example.ts +0 -57
- package/src/dialog/_examples/dialog.with-form.example.ts +0 -48
- package/src/dialog/_examples/index.ts +0 -8
- package/src/dialog/dialog.css +0 -56
- package/src/dialog/dialog.playground.ts +0 -136
- package/src/dialog/dialog.ts +0 -82
- package/src/dialog/index.ts +0 -1
- package/src/divider/_examples/divider.example.ts +0 -27
- package/src/divider/_examples/divider.sizes.example.ts +0 -33
- package/src/divider/_examples/divider.structural.example.ts +0 -55
- package/src/divider/_examples/divider.usage.example.ts +0 -48
- package/src/divider/_examples/divider.variants.example.ts +0 -33
- package/src/divider/_examples/divider.vertical.example.ts +0 -38
- package/src/divider/_examples/divider.with-content.example.ts +0 -38
- package/src/divider/_examples/index.ts +0 -9
- package/src/divider/divider.css +0 -93
- package/src/divider/divider.playground.ts +0 -97
- package/src/divider/divider.spec.ts +0 -207
- package/src/divider/divider.ts +0 -220
- package/src/divider/index.ts +0 -1
- package/src/drawer/_examples/drawer.example.ts +0 -30
- package/src/drawer/_examples/drawer.modal-vs-non-modal.example.ts +0 -27
- package/src/drawer/_examples/drawer.scrollable.example.ts +0 -30
- package/src/drawer/_examples/drawer.sides.example.ts +0 -32
- package/src/drawer/_examples/drawer.usage.example.ts +0 -56
- package/src/drawer/_examples/drawer.with-form.example.ts +0 -48
- package/src/drawer/_examples/index.ts +0 -8
- package/src/drawer/drawer.css +0 -130
- package/src/drawer/drawer.playground.ts +0 -107
- package/src/drawer/drawer.spec.ts +0 -216
- package/src/drawer/drawer.ts +0 -85
- package/src/drawer/index.ts +0 -1
- package/src/dropdown-menu/_examples/dropdown-menu.disabled.example.ts +0 -19
- package/src/dropdown-menu/_examples/dropdown-menu.example.ts +0 -20
- package/src/dropdown-menu/_examples/dropdown-menu.shortcuts.example.ts +0 -31
- package/src/dropdown-menu/_examples/dropdown-menu.sides.example.ts +0 -18
- package/src/dropdown-menu/_examples/dropdown-menu.usage.example.ts +0 -56
- package/src/dropdown-menu/_examples/dropdown-menu.with-icons.example.ts +0 -31
- package/src/dropdown-menu/_examples/dropdown-menu.with-separator.example.ts +0 -41
- package/src/dropdown-menu/_examples/index.ts +0 -9
- package/src/dropdown-menu/dropdown-menu.css +0 -108
- package/src/dropdown-menu/dropdown-menu.playground.ts +0 -109
- package/src/dropdown-menu/dropdown-menu.spec.ts +0 -5
- package/src/dropdown-menu/dropdown-menu.ts +0 -128
- package/src/dropdown-menu/index.ts +0 -1
- package/src/empty-state/_examples/empty-state.error.example.ts +0 -63
- package/src/empty-state/_examples/empty-state.example.ts +0 -59
- package/src/empty-state/_examples/empty-state.search.example.ts +0 -82
- package/src/empty-state/_examples/empty-state.sizes.example.ts +0 -76
- package/src/empty-state/_examples/empty-state.usage.example.ts +0 -66
- package/src/empty-state/_examples/empty-state.with-actions.example.ts +0 -68
- package/src/empty-state/_examples/index.ts +0 -8
- package/src/empty-state/empty-state.css +0 -114
- package/src/empty-state/empty-state.playground.ts +0 -87
- package/src/empty-state/empty-state.spec.ts +0 -211
- package/src/empty-state/empty-state.ts +0 -276
- package/src/empty-state/index.ts +0 -1
- package/src/example-components.ts +0 -396
- package/src/field/_examples/field.disabled.example.ts +0 -49
- package/src/field/_examples/field.example.ts +0 -51
- package/src/field/_examples/field.required.example.ts +0 -46
- package/src/field/_examples/field.with-error.example.ts +0 -73
- package/src/field/_examples/field.with-prefix-suffix.example.ts +0 -63
- package/src/field/_examples/index.ts +0 -7
- package/src/field/field.css +0 -138
- package/src/field/field.playground.ts +0 -108
- package/src/field/field.spec.ts +0 -132
- package/src/field/field.ts +0 -232
- package/src/field/field.usage.example.ts +0 -63
- package/src/field/index.ts +0 -7
- package/src/file-upload/_examples/file-upload.dropzone.example.ts +0 -32
- package/src/file-upload/_examples/file-upload.example.ts +0 -29
- package/src/file-upload/_examples/file-upload.image-preview.example.ts +0 -31
- package/src/file-upload/_examples/file-upload.multiple.example.ts +0 -23
- package/src/file-upload/_examples/file-upload.with-progress.example.ts +0 -59
- package/src/file-upload/_examples/index.ts +0 -7
- package/src/file-upload/file-upload.css +0 -207
- package/src/file-upload/file-upload.playground.ts +0 -84
- package/src/file-upload/file-upload.spec.ts +0 -94
- package/src/file-upload/file-upload.ts +0 -301
- package/src/file-upload/file-upload.usage.example.ts +0 -45
- package/src/file-upload/index.ts +0 -1
- package/src/form/_examples/form.async-submit.example.ts +0 -72
- package/src/form/_examples/form.compound.example.ts +0 -93
- package/src/form/_examples/form.example.ts +0 -70
- package/src/form/_examples/form.validation.example.ts +0 -67
- package/src/form/_examples/index.ts +0 -6
- package/src/form/form.css +0 -63
- package/src/form/form.playground.ts +0 -145
- package/src/form/form.spec.ts +0 -96
- package/src/form/form.ts +0 -216
- package/src/form/form.usage.example.ts +0 -63
- package/src/form/index.ts +0 -5
- package/src/icon/_examples/icon.gallery.example.ts +0 -199
- package/src/icon/_examples/icon.usage.example.ts +0 -46
- package/src/icon/_examples/index.ts +0 -4
- package/src/icon/icon.playground.ts +0 -63
- package/src/icon/index.ts +0 -5
- package/src/icon/lucide/icon-names.generated.ts +0 -1708
- package/src/icon/lucide/icon-names.ts +0 -18
- package/src/icon/lucide/index.ts +0 -2
- package/src/icon/lucide/provide-lucide-icons.ts +0 -96
- package/src/input/_examples/index.ts +0 -4
- package/src/input/_examples/input.color.example.ts +0 -33
- package/src/input/_examples/input.example.ts +0 -22
- package/src/input/index.ts +0 -1
- package/src/input/input.css +0 -70
- package/src/input/input.playground.ts +0 -79
- package/src/input/input.spec.ts +0 -98
- package/src/input/input.ts +0 -158
- package/src/input/input.usage.example.ts +0 -40
- package/src/input-group/_examples/index.ts +0 -7
- package/src/input-group/_examples/input-group.button.example.ts +0 -43
- package/src/input-group/_examples/input-group.example.ts +0 -39
- package/src/input-group/_examples/input-group.icon.example.ts +0 -49
- package/src/input-group/_examples/input-group.url.example.ts +0 -36
- package/src/input-group/_examples/input-group.variants.example.ts +0 -39
- package/src/input-group/index.ts +0 -1
- package/src/input-group/input-group.css +0 -125
- package/src/input-group/input-group.playground.ts +0 -90
- package/src/input-group/input-group.ts +0 -142
- package/src/input-group/input-group.usage.example.ts +0 -47
- package/src/input-mask/_examples/index.ts +0 -8
- package/src/input-mask/_examples/input-mask.credit-card.example.ts +0 -90
- package/src/input-mask/_examples/input-mask.custom-tokens.example.ts +0 -87
- package/src/input-mask/_examples/input-mask.date.example.ts +0 -61
- package/src/input-mask/_examples/input-mask.example.ts +0 -61
- package/src/input-mask/_examples/input-mask.usage.example.ts +0 -44
- package/src/input-mask/_examples/input-mask.validation.example.ts +0 -80
- package/src/input-mask/index.ts +0 -9
- package/src/input-mask/input-mask.css +0 -39
- package/src/input-mask/input-mask.playground.ts +0 -79
- package/src/input-mask/input-mask.ts +0 -130
- package/src/input-otp/_examples/index.ts +0 -8
- package/src/input-otp/_examples/input-otp.autosubmit.example.ts +0 -71
- package/src/input-otp/_examples/input-otp.example.ts +0 -47
- package/src/input-otp/_examples/input-otp.lengths.example.ts +0 -67
- package/src/input-otp/_examples/input-otp.masked.example.ts +0 -46
- package/src/input-otp/_examples/input-otp.reactive.example.ts +0 -58
- package/src/input-otp/_examples/input-otp.separator.example.ts +0 -49
- package/src/input-otp/index.ts +0 -1
- package/src/input-otp/input-otp.css +0 -87
- package/src/input-otp/input-otp.playground.ts +0 -107
- package/src/input-otp/input-otp.ts +0 -244
- package/src/input-otp/input-otp.usage.example.ts +0 -45
- package/src/kbd/_examples/index.ts +0 -6
- package/src/kbd/_examples/kbd.combo.example.ts +0 -24
- package/src/kbd/_examples/kbd.example.ts +0 -22
- package/src/kbd/_examples/kbd.in-tooltip.example.ts +0 -43
- package/src/kbd/_examples/kbd.sizes.example.ts +0 -31
- package/src/kbd/index.ts +0 -1
- package/src/kbd/kbd.css +0 -67
- package/src/kbd/kbd.playground.ts +0 -51
- package/src/kbd/kbd.spec.ts +0 -123
- package/src/kbd/kbd.ts +0 -123
- package/src/kbd/kbd.usage.example.ts +0 -38
- package/src/link/_examples/index.ts +0 -8
- package/src/link/_examples/link.disabled.example.ts +0 -23
- package/src/link/_examples/link.example.ts +0 -26
- package/src/link/_examples/link.external.example.ts +0 -33
- package/src/link/_examples/link.in-prose.example.ts +0 -36
- package/src/link/_examples/link.sizes.example.ts +0 -28
- package/src/link/_examples/link.variants.example.ts +0 -25
- package/src/link/index.ts +0 -1
- package/src/link/link.css +0 -104
- package/src/link/link.playground.ts +0 -98
- package/src/link/link.spec.ts +0 -146
- package/src/link/link.ts +0 -133
- package/src/link/link.usage.example.ts +0 -37
- package/src/list/_examples/index.ts +0 -7
- package/src/list/_examples/list.divided.example.ts +0 -32
- package/src/list/_examples/list.example.ts +0 -31
- package/src/list/_examples/list.interactive.example.ts +0 -51
- package/src/list/_examples/list.nav.example.ts +0 -44
- package/src/list/_examples/list.with-icons.example.ts +0 -97
- package/src/list/index.ts +0 -1
- package/src/list/list.css +0 -166
- package/src/list/list.playground.ts +0 -90
- package/src/list/list.spec.ts +0 -121
- package/src/list/list.ts +0 -227
- package/src/list/list.usage.example.ts +0 -45
- package/src/menubar/_examples/index.ts +0 -6
- package/src/menubar/_examples/menubar.disabled-item.example.ts +0 -23
- package/src/menubar/_examples/menubar.example.ts +0 -22
- package/src/menubar/_examples/menubar.with-shortcuts.example.ts +0 -33
- package/src/menubar/_examples/menubar.with-submenu.example.ts +0 -76
- package/src/menubar/index.ts +0 -1
- package/src/menubar/menubar.css +0 -62
- package/src/menubar/menubar.playground.ts +0 -96
- package/src/menubar/menubar.ts +0 -160
- package/src/menubar/menubar.usage.example.ts +0 -33
- package/src/number-input/_examples/index.ts +0 -7
- package/src/number-input/_examples/number-input.currency.example.ts +0 -35
- package/src/number-input/_examples/number-input.decimal.example.ts +0 -34
- package/src/number-input/_examples/number-input.example.ts +0 -24
- package/src/number-input/_examples/number-input.min-max.example.ts +0 -33
- package/src/number-input/_examples/number-input.with-stepper.example.ts +0 -45
- package/src/number-input/index.ts +0 -1
- package/src/number-input/number-input.css +0 -115
- package/src/number-input/number-input.playground.ts +0 -92
- package/src/number-input/number-input.spec.ts +0 -102
- package/src/number-input/number-input.ts +0 -212
- package/src/number-input/number-input.usage.example.ts +0 -73
- package/src/overlay/overlay.css +0 -32
- package/src/overlay-badge/_examples/index.ts +0 -7
- package/src/overlay-badge/_examples/overlay-badge.described.example.ts +0 -36
- package/src/overlay-badge/_examples/overlay-badge.dot.example.ts +0 -28
- package/src/overlay-badge/_examples/overlay-badge.example.ts +0 -34
- package/src/overlay-badge/_examples/overlay-badge.on-avatar.example.ts +0 -38
- package/src/overlay-badge/_examples/overlay-badge.positions.example.ts +0 -39
- package/src/overlay-badge/index.ts +0 -1
- package/src/overlay-badge/overlay-badge.css +0 -118
- package/src/overlay-badge/overlay-badge.playground.ts +0 -92
- package/src/overlay-badge/overlay-badge.spec.ts +0 -174
- package/src/overlay-badge/overlay-badge.ts +0 -232
- package/src/overlay-badge/overlay-badge.usage.example.ts +0 -44
- package/src/pagination/_examples/index.ts +0 -7
- package/src/pagination/_examples/pagination.boundaries.example.ts +0 -56
- package/src/pagination/_examples/pagination.compact.example.ts +0 -42
- package/src/pagination/_examples/pagination.example.ts +0 -55
- package/src/pagination/_examples/pagination.large.example.ts +0 -54
- package/src/pagination/_examples/pagination.with-info.example.ts +0 -49
- package/src/pagination/index.ts +0 -1
- package/src/pagination/pagination.css +0 -146
- package/src/pagination/pagination.playground.ts +0 -107
- package/src/pagination/pagination.spec.ts +0 -202
- package/src/pagination/pagination.ts +0 -432
- package/src/pagination/pagination.usage.example.ts +0 -50
- package/src/password-input/_examples/index.ts +0 -6
- package/src/password-input/_examples/password-input.example.ts +0 -24
- package/src/password-input/_examples/password-input.strength.example.ts +0 -45
- package/src/password-input/_examples/password-input.toggle.example.ts +0 -43
- package/src/password-input/_examples/password-input.with-rules.example.ts +0 -78
- package/src/password-input/index.ts +0 -1
- package/src/password-input/password-input.css +0 -155
- package/src/password-input/password-input.playground.ts +0 -81
- package/src/password-input/password-input.spec.ts +0 -129
- package/src/password-input/password-input.ts +0 -254
- package/src/password-input/password-input.usage.example.ts +0 -55
- package/src/playground-types.ts +0 -47
- package/src/popover/_examples/index.ts +0 -7
- package/src/popover/_examples/popover.cancellable.example.ts +0 -20
- package/src/popover/_examples/popover.example.ts +0 -20
- package/src/popover/_examples/popover.modal.example.ts +0 -22
- package/src/popover/_examples/popover.sides.example.ts +0 -37
- package/src/popover/_examples/popover.with-form.example.ts +0 -38
- package/src/popover/index.ts +0 -1
- package/src/popover/popover.css +0 -71
- package/src/popover/popover.playground.ts +0 -86
- package/src/popover/popover.spec.ts +0 -5
- package/src/popover/popover.ts +0 -94
- package/src/popover/popover.usage.example.ts +0 -48
- package/src/progress-bar/_examples/index.ts +0 -7
- package/src/progress-bar/_examples/progress-bar.example.ts +0 -22
- package/src/progress-bar/_examples/progress-bar.indeterminate.example.ts +0 -23
- package/src/progress-bar/_examples/progress-bar.sizes.example.ts +0 -29
- package/src/progress-bar/_examples/progress-bar.variants.example.ts +0 -30
- package/src/progress-bar/_examples/progress-bar.with-label.example.ts +0 -30
- package/src/progress-bar/index.ts +0 -1
- package/src/progress-bar/progress-bar.css +0 -113
- package/src/progress-bar/progress-bar.playground.ts +0 -87
- package/src/progress-bar/progress-bar.spec.ts +0 -233
- package/src/progress-bar/progress-bar.ts +0 -155
- package/src/progress-bar/progress-bar.usage.example.ts +0 -52
- package/src/public-api.ts +0 -61
- package/src/radio/_examples/index.ts +0 -6
- package/src/radio/_examples/radio.default.example.ts +0 -26
- package/src/radio/_examples/radio.disabled.example.ts +0 -26
- package/src/radio/_examples/radio.group.example.ts +0 -27
- package/src/radio/_examples/radio.inline.example.ts +0 -26
- package/src/radio/index.ts +0 -1
- package/src/radio/radio.css +0 -58
- package/src/radio/radio.playground.ts +0 -90
- package/src/radio/radio.ts +0 -143
- package/src/radio/radio.usage.example.ts +0 -54
- package/src/select/_examples/index.ts +0 -6
- package/src/select/_examples/select.default.example.ts +0 -26
- package/src/select/_examples/select.disabled.example.ts +0 -24
- package/src/select/_examples/select.grouped.example.ts +0 -37
- package/src/select/_examples/select.placeholder.example.ts +0 -26
- package/src/select/index.ts +0 -1
- package/src/select/select.css +0 -65
- package/src/select/select.playground.ts +0 -81
- package/src/select/select.ts +0 -176
- package/src/select/select.usage.example.ts +0 -64
- package/src/skeleton/_examples/index.ts +0 -6
- package/src/skeleton/_examples/skeleton.animations.example.ts +0 -52
- package/src/skeleton/_examples/skeleton.card.example.ts +0 -68
- package/src/skeleton/_examples/skeleton.example.ts +0 -24
- package/src/skeleton/_examples/skeleton.shapes.example.ts +0 -55
- package/src/skeleton/index.ts +0 -1
- package/src/skeleton/skeleton.css +0 -111
- package/src/skeleton/skeleton.playground.ts +0 -80
- package/src/skeleton/skeleton.spec.ts +0 -126
- package/src/skeleton/skeleton.ts +0 -155
- package/src/skeleton/skeleton.usage.example.ts +0 -49
- package/src/slider/_examples/index.ts +0 -7
- package/src/slider/_examples/slider.example.ts +0 -41
- package/src/slider/_examples/slider.formatted.example.ts +0 -53
- package/src/slider/_examples/slider.range.example.ts +0 -48
- package/src/slider/_examples/slider.vertical.example.ts +0 -48
- package/src/slider/_examples/slider.with-marks.example.ts +0 -46
- package/src/slider/index.ts +0 -1
- package/src/slider/slider.css +0 -172
- package/src/slider/slider.playground.ts +0 -88
- package/src/slider/slider.spec.ts +0 -139
- package/src/slider/slider.ts +0 -246
- package/src/slider/slider.usage.example.ts +0 -68
- package/src/speed-dial/_examples/index.ts +0 -7
- package/src/speed-dial/_examples/speed-dial.directions.example.ts +0 -85
- package/src/speed-dial/_examples/speed-dial.disabled.example.ts +0 -71
- package/src/speed-dial/_examples/speed-dial.example.ts +0 -48
- package/src/speed-dial/_examples/speed-dial.usage.example.ts +0 -59
- package/src/speed-dial/_examples/speed-dial.with-tooltips.example.ts +0 -65
- package/src/speed-dial/index.ts +0 -1
- package/src/speed-dial/speed-dial.css +0 -137
- package/src/speed-dial/speed-dial.playground.ts +0 -137
- package/src/speed-dial/speed-dial.spec.ts +0 -191
- package/src/speed-dial/speed-dial.ts +0 -257
- package/src/spinner/_examples/index.ts +0 -8
- package/src/spinner/_examples/spinner.animations.example.ts +0 -54
- package/src/spinner/_examples/spinner.example.ts +0 -26
- package/src/spinner/_examples/spinner.in-button.example.ts +0 -51
- package/src/spinner/_examples/spinner.sizes.example.ts +0 -31
- package/src/spinner/_examples/spinner.usage.example.ts +0 -45
- package/src/spinner/_examples/spinner.variants.example.ts +0 -34
- package/src/spinner/index.ts +0 -1
- package/src/spinner/spinner.css +0 -161
- package/src/spinner/spinner.playground.ts +0 -68
- package/src/spinner/spinner.spec.ts +0 -184
- package/src/spinner/spinner.ts +0 -185
- package/src/stepper/_examples/index.ts +0 -8
- package/src/stepper/_examples/stepper.example.ts +0 -62
- package/src/stepper/_examples/stepper.non-linear.example.ts +0 -63
- package/src/stepper/_examples/stepper.optional-step.example.ts +0 -62
- package/src/stepper/_examples/stepper.usage.example.ts +0 -73
- package/src/stepper/_examples/stepper.vertical.example.ts +0 -66
- package/src/stepper/_examples/stepper.with-error.example.ts +0 -63
- package/src/stepper/index.ts +0 -1
- package/src/stepper/stepper.css +0 -147
- package/src/stepper/stepper.playground.ts +0 -88
- package/src/stepper/stepper.spec.ts +0 -200
- package/src/stepper/stepper.ts +0 -242
- package/src/table/_examples/index.ts +0 -23
- package/src/table/_examples/table.column-pinning.example.ts +0 -55
- package/src/table/_examples/table.column-resize.example.ts +0 -49
- package/src/table/_examples/table.column-visibility.example.ts +0 -52
- package/src/table/_examples/table.density.example.ts +0 -71
- package/src/table/_examples/table.editable.example.ts +0 -85
- package/src/table/_examples/table.empty-and-error.example.ts +0 -112
- package/src/table/_examples/table.example.ts +0 -45
- package/src/table/_examples/table.export.example.ts +0 -82
- package/src/table/_examples/table.filterable.example.ts +0 -67
- package/src/table/_examples/table.grouping.example.ts +0 -63
- package/src/table/_examples/table.keyboard.example.ts +0 -115
- package/src/table/_examples/table.master-detail.example.ts +0 -102
- package/src/table/_examples/table.persistence.example.ts +0 -85
- package/src/table/_examples/table.playground.ts +0 -154
- package/src/table/_examples/table.row-pinning.example.ts +0 -71
- package/src/table/_examples/table.selection.example.ts +0 -67
- package/src/table/_examples/table.server-mode.example.ts +0 -120
- package/src/table/_examples/table.sortable.example.ts +0 -49
- package/src/table/_examples/table.theming.example.ts +0 -64
- package/src/table/_examples/table.usage.example.ts +0 -90
- package/src/table/_examples/table.virtualized.example.ts +0 -122
- package/src/table/index.ts +0 -11
- package/src/table/table-cell-editor-outlet.ts +0 -111
- package/src/table/table-editors/boolean-editor.ts +0 -71
- package/src/table/table-editors/date-editor.ts +0 -117
- package/src/table/table-editors/editors.spec.ts +0 -147
- package/src/table/table-editors/index.ts +0 -41
- package/src/table/table-editors/number-editor.ts +0 -89
- package/src/table/table-editors/select-editor.ts +0 -107
- package/src/table/table-editors/text-editor.ts +0 -82
- package/src/table/table-export.spec.ts +0 -33
- package/src/table/table-export.ts +0 -53
- package/src/table/table-filter-outlet.ts +0 -137
- package/src/table/table-filters/date-filter.ts +0 -122
- package/src/table/table-filters/filters.css +0 -53
- package/src/table/table-filters/filters.spec.ts +0 -277
- package/src/table/table-filters/index.ts +0 -11
- package/src/table/table-filters/number-filter.ts +0 -232
- package/src/table/table-filters/select-filter.ts +0 -129
- package/src/table/table-filters/text-filter.ts +0 -110
- package/src/table/table-pagination.spec.ts +0 -118
- package/src/table/table-pagination.ts +0 -191
- package/src/table/table-side-panel.spec.ts +0 -170
- package/src/table/table-side-panel.ts +0 -263
- package/src/table/table-status-bar.spec.ts +0 -78
- package/src/table/table-status-bar.ts +0 -70
- package/src/table/table-toolbar.spec.ts +0 -180
- package/src/table/table-toolbar.ts +0 -244
- package/src/table/table-virtual.spec.ts +0 -103
- package/src/table/table-virtual.ts +0 -180
- package/src/table/table.css +0 -468
- package/src/table/table.spec.ts +0 -175
- package/src/table/table.ts +0 -1009
- package/src/tabs/_examples/index.ts +0 -8
- package/src/tabs/_examples/tabs.controlled.example.ts +0 -59
- package/src/tabs/_examples/tabs.disabled.example.ts +0 -34
- package/src/tabs/_examples/tabs.example.ts +0 -34
- package/src/tabs/_examples/tabs.manual-activation.example.ts +0 -34
- package/src/tabs/_examples/tabs.usage.example.ts +0 -43
- package/src/tabs/_examples/tabs.vertical.example.ts +0 -33
- package/src/tabs/index.ts +0 -1
- package/src/tabs/tabs.css +0 -80
- package/src/tabs/tabs.playground.ts +0 -88
- package/src/tabs/tabs.spec.ts +0 -135
- package/src/tabs/tabs.ts +0 -204
- package/src/tag/_examples/index.ts +0 -9
- package/src/tag/_examples/tag.example.ts +0 -22
- package/src/tag/_examples/tag.list.example.ts +0 -38
- package/src/tag/_examples/tag.removable.example.ts +0 -39
- package/src/tag/_examples/tag.selectable.example.ts +0 -33
- package/src/tag/_examples/tag.sizes.example.ts +0 -25
- package/src/tag/_examples/tag.usage.example.ts +0 -62
- package/src/tag/_examples/tag.variants.example.ts +0 -29
- package/src/tag/index.ts +0 -1
- package/src/tag/tag.css +0 -167
- package/src/tag/tag.playground.ts +0 -63
- package/src/tag/tag.spec.ts +0 -153
- package/src/tag/tag.ts +0 -186
- package/src/test-setup.ts +0 -5
- package/src/textarea/_examples/index.ts +0 -8
- package/src/textarea/_examples/textarea.autoresize.example.ts +0 -37
- package/src/textarea/_examples/textarea.character-count.example.ts +0 -34
- package/src/textarea/_examples/textarea.example.ts +0 -22
- package/src/textarea/_examples/textarea.no-resize.example.ts +0 -28
- package/src/textarea/_examples/textarea.usage.example.ts +0 -50
- package/src/textarea/_examples/textarea.with-field.example.ts +0 -66
- package/src/textarea/index.ts +0 -1
- package/src/textarea/textarea.css +0 -117
- package/src/textarea/textarea.playground.ts +0 -70
- package/src/textarea/textarea.spec.ts +0 -161
- package/src/textarea/textarea.ts +0 -339
- package/src/time-picker/_examples/index.ts +0 -8
- package/src/time-picker/_examples/time-picker.12-hour.example.ts +0 -24
- package/src/time-picker/_examples/time-picker.example.ts +0 -24
- package/src/time-picker/_examples/time-picker.formatted.example.ts +0 -32
- package/src/time-picker/_examples/time-picker.range.example.ts +0 -54
- package/src/time-picker/_examples/time-picker.usage.example.ts +0 -53
- package/src/time-picker/_examples/time-picker.with-seconds.example.ts +0 -24
- package/src/time-picker/index.ts +0 -1
- package/src/time-picker/time-picker.css +0 -126
- package/src/time-picker/time-picker.playground.ts +0 -72
- package/src/time-picker/time-picker.spec.ts +0 -77
- package/src/time-picker/time-picker.ts +0 -207
- package/src/toast/_examples/index.ts +0 -7
- package/src/toast/_examples/toast.default.example.ts +0 -37
- package/src/toast/_examples/toast.dismissible.example.ts +0 -38
- package/src/toast/_examples/toast.usage.example.ts +0 -57
- package/src/toast/_examples/toast.variants.example.ts +0 -43
- package/src/toast/_examples/toast.with-action.example.ts +0 -46
- package/src/toast/index.ts +0 -1
- package/src/toast/toast.css +0 -115
- package/src/toast/toast.playground.ts +0 -61
- package/src/toast/toast.ts +0 -168
- package/src/toggle/_examples/index.ts +0 -7
- package/src/toggle/_examples/toggle.checked.example.ts +0 -20
- package/src/toggle/_examples/toggle.default.example.ts +0 -20
- package/src/toggle/_examples/toggle.disabled.example.ts +0 -26
- package/src/toggle/_examples/toggle.usage.example.ts +0 -51
- package/src/toggle/_examples/toggle.with-label.example.ts +0 -30
- package/src/toggle/index.ts +0 -1
- package/src/toggle/toggle.css +0 -123
- package/src/toggle/toggle.playground.ts +0 -65
- package/src/toggle/toggle.ts +0 -113
- package/src/tooltip/_examples/index.ts +0 -9
- package/src/tooltip/_examples/tooltip.delays.example.ts +0 -16
- package/src/tooltip/_examples/tooltip.disabled.example.ts +0 -16
- package/src/tooltip/_examples/tooltip.example.ts +0 -16
- package/src/tooltip/_examples/tooltip.group.example.ts +0 -20
- package/src/tooltip/_examples/tooltip.rich.example.ts +0 -19
- package/src/tooltip/_examples/tooltip.sides.example.ts +0 -18
- package/src/tooltip/_examples/tooltip.usage.example.ts +0 -50
- package/src/tooltip/index.ts +0 -1
- package/src/tooltip/tooltip.css +0 -61
- package/src/tooltip/tooltip.playground.ts +0 -79
- package/src/tooltip/tooltip.spec.ts +0 -5
- package/src/tooltip/tooltip.ts +0 -102
- package/src/tree-select/_examples/index.ts +0 -8
- package/src/tree-select/_examples/tree-select.disabled.example.ts +0 -106
- package/src/tree-select/_examples/tree-select.example.ts +0 -65
- package/src/tree-select/_examples/tree-select.expanded.example.ts +0 -72
- package/src/tree-select/_examples/tree-select.field.example.ts +0 -77
- package/src/tree-select/_examples/tree-select.multi.example.ts +0 -73
- package/src/tree-select/_examples/tree-select.usage.example.ts +0 -85
- package/src/tree-select/index.ts +0 -1
- package/src/tree-select/tree-select.css +0 -220
- package/src/tree-select/tree-select.playground.ts +0 -83
- package/src/tree-select/tree-select.ts +0 -348
- package/src/typography/_examples/index.ts +0 -9
- package/src/typography/_examples/typography.blockquote.example.ts +0 -34
- package/src/typography/_examples/typography.code.example.ts +0 -32
- package/src/typography/_examples/typography.example.ts +0 -42
- package/src/typography/_examples/typography.lead.example.ts +0 -37
- package/src/typography/_examples/typography.muted.example.ts +0 -27
- package/src/typography/_examples/typography.truncate.example.ts +0 -41
- package/src/typography/_examples/typography.usage.example.ts +0 -44
- package/src/typography/index.ts +0 -8
- package/src/typography/typography.playground.ts +0 -101
- package/src/typography/typography.spec.ts +0 -70
- package/src/typography/typography.ts +0 -105
- package/tsconfig.lib.json +0 -25
- package/tsconfig.lib.prod.json +0 -17
- package/tsconfig.spec.json +0 -16
- package/vite.config.ts +0 -33
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// Re-generate via:
|
|
2
|
-
// node scripts/generate-lucide-icon-names.mjs
|
|
3
|
-
// (script reads the installed lucide-static/icon-nodes.json keys and writes
|
|
4
|
-
// this file). We embed the list as a static const instead of importing the
|
|
5
|
-
// JSON at runtime so SSR / Vite ESM resolvers don't have to resolve a JSON
|
|
6
|
-
// path inside the lucide-static package at request time.
|
|
7
|
-
|
|
8
|
-
import { LUCIDE_ICON_NAMES_RAW } from './icon-names.generated';
|
|
9
|
-
|
|
10
|
-
/** Kebab-case Lucide icon name. */
|
|
11
|
-
export type LucideIconName = string;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* All Lucide icon kebab-case names, sorted alphabetically. Generated from
|
|
15
|
-
* `lucide-static/icon-nodes.json`. Useful for galleries, autocomplete, or
|
|
16
|
-
* batch eager registration via {@link provideLucideIcons}.
|
|
17
|
-
*/
|
|
18
|
-
export const LUCIDE_ICON_NAMES: readonly LucideIconName[] = LUCIDE_ICON_NAMES_RAW;
|
package/src/icon/lucide/index.ts
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type EnvironmentProviders,
|
|
3
|
-
inject,
|
|
4
|
-
makeEnvironmentProviders,
|
|
5
|
-
provideEnvironmentInitializer,
|
|
6
|
-
} from '@angular/core';
|
|
7
|
-
import { KJ_ICON_REGISTRY } from '@kouji-ui/core';
|
|
8
|
-
import * as lucideIcons from 'lucide-static';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Encode an SVG string into a `data:` URL fragment safe for use inside a CSS
|
|
12
|
-
* `url(...)` value. Percent-encodes the characters that would otherwise break
|
|
13
|
-
* parsing (`#`, `?`, `<`, `>`, etc.) while leaving the bulk of the SVG
|
|
14
|
-
* human-readable for easier debugging.
|
|
15
|
-
*/
|
|
16
|
-
function encodeSvgDataUrl(svg: string): string {
|
|
17
|
-
const encoded = svg
|
|
18
|
-
.replace(/"/g, "'")
|
|
19
|
-
.replace(/>\s+</g, '><')
|
|
20
|
-
.trim()
|
|
21
|
-
.replace(/[\r\n\t]+/g, ' ')
|
|
22
|
-
.replace(/%/g, '%25')
|
|
23
|
-
.replace(/#/g, '%23')
|
|
24
|
-
.replace(/\?/g, '%3F')
|
|
25
|
-
.replace(/</g, '%3C')
|
|
26
|
-
.replace(/>/g, '%3E');
|
|
27
|
-
return `url("data:image/svg+xml;utf8,${encoded}")`;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Convert PascalCase ("AArrowDown") → kebab-case ("a-arrow-down"). */
|
|
31
|
-
function pascalToKebab(name: string): string {
|
|
32
|
-
return name
|
|
33
|
-
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
34
|
-
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
35
|
-
.toLowerCase();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/** Lazily build the kebab-name → encoded-data-url map once per app. */
|
|
39
|
-
let _registryEntries: Record<string, string> | null = null;
|
|
40
|
-
function buildLucideRegistry(): Record<string, string> {
|
|
41
|
-
if (_registryEntries) return _registryEntries;
|
|
42
|
-
const entries: Record<string, string> = {};
|
|
43
|
-
const map = lucideIcons as unknown as Record<string, string>;
|
|
44
|
-
for (const [pascal, svg] of Object.entries(map)) {
|
|
45
|
-
if (typeof svg !== 'string') continue;
|
|
46
|
-
entries[pascalToKebab(pascal)] = encodeSvgDataUrl(svg);
|
|
47
|
-
}
|
|
48
|
-
_registryEntries = entries;
|
|
49
|
-
return entries;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Wire Lucide icons into the kouji icon registry.
|
|
54
|
-
*
|
|
55
|
-
* The full Lucide icon set is bundled once and registered into
|
|
56
|
-
* `KJ_ICON_REGISTRY` at app start, so any kebab-case Lucide name renders
|
|
57
|
-
* synchronously the first time it appears in the DOM.
|
|
58
|
-
*
|
|
59
|
-
* The transferred bundle cost is ~300 KB gzipped for the whole set, which
|
|
60
|
-
* lets us keep the API surface minimal and works identically in dev and
|
|
61
|
-
* production — Vite/esbuild can't reliably code-split per-icon dynamic
|
|
62
|
-
* imports against `lucide-static`'s package layout, so a single static
|
|
63
|
-
* namespace import is the predictable choice.
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```ts
|
|
67
|
-
* // app.config.ts
|
|
68
|
-
* provideLucideIcons(),
|
|
69
|
-
* ```
|
|
70
|
-
*
|
|
71
|
-
* @doc-example Gallery
|
|
72
|
-
* @doc-file ../icon.gallery.example.ts
|
|
73
|
-
*
|
|
74
|
-
* @doc-css-var
|
|
75
|
-
* --kj-icon — Resolved icon value (url("...") or "glyph"). Set by the directive — read by the rendered .kj-icon.
|
|
76
|
-
* --kj-icon-font — Font family for `mode="font"` icons. Set on a parent to wire a pre-loaded icon font.
|
|
77
|
-
* --kj-icon-size-xs — Token size for the `xs` icon scale. Override per theme.
|
|
78
|
-
* --kj-icon-size-sm — Token size for the `sm` icon scale.
|
|
79
|
-
* --kj-icon-size-md — Token size for the `md` icon scale.
|
|
80
|
-
* --kj-icon-size-lg — Token size for the `lg` icon scale.
|
|
81
|
-
* --kj-icon-size-xl — Token size for the `xl` icon scale.
|
|
82
|
-
*
|
|
83
|
-
* @doc-category Library/Icon
|
|
84
|
-
* @doc
|
|
85
|
-
* @doc-name icon
|
|
86
|
-
* @doc-is-main
|
|
87
|
-
* @doc-description Wires the full Lucide icon set into the kouji icon registry — any kebab-case Lucide name renders by name.
|
|
88
|
-
*/
|
|
89
|
-
export function provideLucideIcons(): EnvironmentProviders {
|
|
90
|
-
return makeEnvironmentProviders([
|
|
91
|
-
provideEnvironmentInitializer(() => {
|
|
92
|
-
const registry = inject(KJ_ICON_REGISTRY);
|
|
93
|
-
registry.update((m) => ({ ...m, ...buildLucideRegistry() }));
|
|
94
|
-
}),
|
|
95
|
-
]);
|
|
96
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Component, signal, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { KjInputComponent } from '../input';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Color picker example — uses the native <input type="color"> swatch
|
|
6
|
-
* via the shared kj-input wrapper. Bound to a signal via ngModel-style flow.
|
|
7
|
-
*/
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'kj-input-color-example',
|
|
10
|
-
standalone: true,
|
|
11
|
-
imports: [KjInputComponent],
|
|
12
|
-
styles: [
|
|
13
|
-
`
|
|
14
|
-
:host {
|
|
15
|
-
display: flex;
|
|
16
|
-
gap: var(--kj-space-md);
|
|
17
|
-
align-items: center;
|
|
18
|
-
}
|
|
19
|
-
code {
|
|
20
|
-
font: var(--kj-text-sm)/1 var(--kj-font-mono);
|
|
21
|
-
color: var(--kj-fg-muted);
|
|
22
|
-
}
|
|
23
|
-
`,
|
|
24
|
-
],
|
|
25
|
-
changeDetection: ChangeDetectionStrategy.Eager,
|
|
26
|
-
template: `
|
|
27
|
-
<kj-input type="color" (input)="hex.set($any($event.target).value)" />
|
|
28
|
-
<code>{{ hex() }}</code>
|
|
29
|
-
`,
|
|
30
|
-
})
|
|
31
|
-
export class KjInputColorExample {
|
|
32
|
-
readonly hex = signal('#b8f500');
|
|
33
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { KjInputComponent } from '../input';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Default usage example for KjInputComponent.
|
|
6
|
-
* Rendered live in the docs and as code in the example panel.
|
|
7
|
-
*/
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'kj-input-example',
|
|
10
|
-
standalone: true,
|
|
11
|
-
imports: [KjInputComponent],
|
|
12
|
-
styles: [
|
|
13
|
-
`
|
|
14
|
-
:host {
|
|
15
|
-
display: block;
|
|
16
|
-
}
|
|
17
|
-
`,
|
|
18
|
-
],
|
|
19
|
-
changeDetection: ChangeDetectionStrategy.Eager,
|
|
20
|
-
template: `<kj-input type="text" placeholder="Type something…"></kj-input>`,
|
|
21
|
-
})
|
|
22
|
-
export class KjInputExample {}
|
package/src/input/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './input';
|
package/src/input/input.css
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/* ─────────────────────────────────────────────────────────────
|
|
2
|
-
.kj-input — component-layer tokens + structural CSS
|
|
3
|
-
Same pattern as button.css: tokens default to shared layer,
|
|
4
|
-
variants/states retarget tokens, structural CSS reads tokens only.
|
|
5
|
-
──────────────────────────────────────────────────────────── */
|
|
6
|
-
|
|
7
|
-
@layer kj.component {
|
|
8
|
-
.kj-input {
|
|
9
|
-
--kj-input-bg: var(--kj-bg-field);
|
|
10
|
-
--kj-input-fg: var(--kj-fg-default);
|
|
11
|
-
--kj-input-border-color: var(--kj-border-default);
|
|
12
|
-
--kj-input-border-style: solid;
|
|
13
|
-
--kj-input-border-width: var(--kj-border);
|
|
14
|
-
--kj-input-radius: var(--kj-radius-field);
|
|
15
|
-
--kj-input-padding-x: var(--kj-space-md);
|
|
16
|
-
--kj-input-padding-y: var(--kj-space-sm);
|
|
17
|
-
--kj-input-font: var(--kj-font-sans);
|
|
18
|
-
--kj-input-font-size: var(--kj-text-sm);
|
|
19
|
-
--kj-input-placeholder-fg: var(--kj-fg-muted);
|
|
20
|
-
/* Match button md (36px) so inputs and buttons line up in form rows.
|
|
21
|
-
Don't set `align-self` — in column-flex parents (form-field stacks),
|
|
22
|
-
`center` horizontally shifts the host; explicit height alone is what
|
|
23
|
-
prevents row-flex parents from stretching the input vertically. */
|
|
24
|
-
--kj-input-height: 2.25rem;
|
|
25
|
-
|
|
26
|
-
display: inline-flex;
|
|
27
|
-
width: 100%;
|
|
28
|
-
height: var(--kj-input-height);
|
|
29
|
-
background: var(--kj-input-bg);
|
|
30
|
-
color: var(--kj-input-fg);
|
|
31
|
-
border: var(--kj-input-border-width) var(--kj-input-border-style) var(--kj-input-border-color);
|
|
32
|
-
border-radius: var(--kj-input-radius);
|
|
33
|
-
padding: var(--kj-input-padding-y) var(--kj-input-padding-x);
|
|
34
|
-
font: var(--kj-input-font-size) / 1.4 var(--kj-input-font);
|
|
35
|
-
transition: var(--kj-transition);
|
|
36
|
-
}
|
|
37
|
-
/* Per-size heights mirror the button scale. */
|
|
38
|
-
.kj-input[data-size="xs"] { --kj-input-height: 1.75rem; --kj-input-font-size: 0.75rem; --kj-input-padding-x: var(--kj-space-sm); --kj-input-padding-y: 0; }
|
|
39
|
-
.kj-input[data-size="sm"] { --kj-input-height: 2rem; --kj-input-font-size: 0.8125rem; }
|
|
40
|
-
.kj-input[data-size="lg"] { --kj-input-height: 2.75rem; --kj-input-font-size: 1rem; }
|
|
41
|
-
|
|
42
|
-
/* Variant: sunken — inputs sit on `--kj-bg-body` so they read distinctly
|
|
43
|
-
against a card / surface parent. Used on the landing showcase where
|
|
44
|
-
cards already use `--kj-bg-surface`; mirrors the design's pattern of
|
|
45
|
-
"input on page bg, card around it on surface". */
|
|
46
|
-
.kj-input[data-variant="sunken"] {
|
|
47
|
-
--kj-input-bg: var(--kj-bg-body);
|
|
48
|
-
}
|
|
49
|
-
.kj-input::placeholder { color: var(--kj-input-placeholder-fg); }
|
|
50
|
-
|
|
51
|
-
.kj-input:focus-visible {
|
|
52
|
-
outline: 2px solid var(--kj-bg-primary);
|
|
53
|
-
outline-offset: 2px;
|
|
54
|
-
--kj-input-border-color: var(--kj-border-focus, var(--kj-bg-primary));
|
|
55
|
-
}
|
|
56
|
-
.kj-input[aria-invalid="true"] {
|
|
57
|
-
--kj-input-border-color: var(--kj-border-danger, var(--kj-fg-danger));
|
|
58
|
-
}
|
|
59
|
-
.kj-input[aria-disabled="true"], .kj-input:disabled {
|
|
60
|
-
opacity: 0.55;
|
|
61
|
-
cursor: not-allowed;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.kj-input[type="color"] {
|
|
65
|
-
inline-size: 44px;
|
|
66
|
-
block-size: 32px;
|
|
67
|
-
padding: 2px;
|
|
68
|
-
cursor: pointer;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { KjInputComponent, type KjInputType, type KjInputVariant } from './input';
|
|
4
|
-
import type { PlaygroundFile } from '@kouji-ui/components/playground-types';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Playground state — module-scope signals. Type, variant, value/placeholder,
|
|
8
|
-
* disabled, and invalid cover every public input the wrapper surfaces.
|
|
9
|
-
*/
|
|
10
|
-
const type = signal<KjInputType>('text');
|
|
11
|
-
const variant = signal<KjInputVariant>('default');
|
|
12
|
-
const value = signal('');
|
|
13
|
-
const placeholder = signal('you@example.com');
|
|
14
|
-
const disabled = signal(false);
|
|
15
|
-
const invalid = signal(false);
|
|
16
|
-
|
|
17
|
-
@Component({
|
|
18
|
-
selector: 'kj-input-playground',
|
|
19
|
-
standalone: true,
|
|
20
|
-
imports: [KjInputComponent, FormsModule],
|
|
21
|
-
template: `
|
|
22
|
-
<kj-input
|
|
23
|
-
[type]="type()"
|
|
24
|
-
[variant]="variant()"
|
|
25
|
-
[placeholder]="placeholder()"
|
|
26
|
-
[disabled]="disabled()"
|
|
27
|
-
[invalid]="invalid()"
|
|
28
|
-
[(ngModel)]="value"
|
|
29
|
-
/>
|
|
30
|
-
`,
|
|
31
|
-
styles: [`:host { display: block; max-width: 360px; }`],
|
|
32
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
33
|
-
})
|
|
34
|
-
export class KjInputPlaygroundDemo {
|
|
35
|
-
protected readonly type = type;
|
|
36
|
-
protected readonly variant = variant;
|
|
37
|
-
protected readonly value = value;
|
|
38
|
-
protected readonly placeholder = placeholder;
|
|
39
|
-
protected readonly disabled = disabled;
|
|
40
|
-
protected readonly invalid = invalid;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export const PLAYGROUND: PlaygroundFile = {
|
|
44
|
-
component: KjInputPlaygroundDemo,
|
|
45
|
-
state: {
|
|
46
|
-
type: type as unknown as ReturnType<typeof signal>,
|
|
47
|
-
variant: variant as unknown as ReturnType<typeof signal>,
|
|
48
|
-
value: value as unknown as ReturnType<typeof signal>,
|
|
49
|
-
placeholder: placeholder as unknown as ReturnType<typeof signal>,
|
|
50
|
-
disabled: disabled as unknown as ReturnType<typeof signal>,
|
|
51
|
-
invalid: invalid as unknown as ReturnType<typeof signal>,
|
|
52
|
-
},
|
|
53
|
-
controls: [
|
|
54
|
-
{
|
|
55
|
-
kind: 'chips',
|
|
56
|
-
name: 'type',
|
|
57
|
-
label: 'type',
|
|
58
|
-
options: ['text', 'email', 'password', 'number', 'search', 'tel', 'url', 'color'],
|
|
59
|
-
},
|
|
60
|
-
{ kind: 'chips', name: 'variant', label: 'variant', options: ['default', 'sunken'] },
|
|
61
|
-
{ kind: 'text', name: 'placeholder', label: 'placeholder' },
|
|
62
|
-
{ kind: 'toggle', name: 'disabled', label: 'disabled' },
|
|
63
|
-
{ kind: 'toggle', name: 'invalid', label: 'invalid' },
|
|
64
|
-
],
|
|
65
|
-
snippet: (values) => {
|
|
66
|
-
const s = values as {
|
|
67
|
-
type: string;
|
|
68
|
-
variant: string;
|
|
69
|
-
placeholder: string;
|
|
70
|
-
disabled: boolean;
|
|
71
|
-
invalid: boolean;
|
|
72
|
-
};
|
|
73
|
-
const attrs: string[] = [`type="${s.type}"`, `variant="${s.variant}"`];
|
|
74
|
-
if (s.placeholder) attrs.push(`placeholder="${s.placeholder}"`);
|
|
75
|
-
if (s.disabled) attrs.push('[disabled]="true"');
|
|
76
|
-
if (s.invalid) attrs.push('[invalid]="true"');
|
|
77
|
-
return `<kj-input\n ${attrs.join('\n ')}\n/>`;
|
|
78
|
-
},
|
|
79
|
-
};
|
package/src/input/input.spec.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { TestBed } from '@angular/core/testing';
|
|
3
|
-
import { describe, expect, test, beforeEach } from 'vitest';
|
|
4
|
-
import { KjInputComponent } from './input';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
standalone: true,
|
|
8
|
-
imports: [KjInputComponent],
|
|
9
|
-
changeDetection: ChangeDetectionStrategy.Eager,
|
|
10
|
-
template: `<kj-input
|
|
11
|
-
[type]="type"
|
|
12
|
-
[value]="value"
|
|
13
|
-
[placeholder]="placeholder"
|
|
14
|
-
[invalid]="invalid"
|
|
15
|
-
[disabled]="disabled"
|
|
16
|
-
/>`,
|
|
17
|
-
})
|
|
18
|
-
class HostComponent {
|
|
19
|
-
type: 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url' | 'color' = 'text';
|
|
20
|
-
value = '';
|
|
21
|
-
placeholder = '';
|
|
22
|
-
invalid = false;
|
|
23
|
-
disabled = false;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
describe('KjInputComponent', () => {
|
|
27
|
-
beforeEach(() => {
|
|
28
|
-
TestBed.configureTestingModule({ imports: [HostComponent] });
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test('renders an inner <input> with the .kj-input class', () => {
|
|
32
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
33
|
-
fixture.detectChanges();
|
|
34
|
-
expect(fixture.nativeElement.querySelector('kj-input input.kj-input')).not.toBeNull();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
test('forwards type to the inner element', () => {
|
|
38
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
39
|
-
fixture.componentInstance.type = 'email';
|
|
40
|
-
fixture.detectChanges();
|
|
41
|
-
expect(fixture.nativeElement.querySelector('kj-input input').getAttribute('type')).toBe(
|
|
42
|
-
'email',
|
|
43
|
-
);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
test('renders <input type="color"> when type=color', () => {
|
|
47
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
48
|
-
fixture.componentInstance.type = 'color';
|
|
49
|
-
fixture.detectChanges();
|
|
50
|
-
expect(fixture.nativeElement.querySelector('kj-input input').getAttribute('type')).toBe(
|
|
51
|
-
'color',
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
test('mirrors type to data-type attr on host', () => {
|
|
56
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
57
|
-
fixture.componentInstance.type = 'color';
|
|
58
|
-
fixture.detectChanges();
|
|
59
|
-
expect(fixture.nativeElement.querySelector('kj-input').getAttribute('data-type')).toBe('color');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('forwards value to the inner element (no form control wired)', () => {
|
|
63
|
-
// Use type=text — jsdom's <input type="color"> .value reverts to '#000000'.
|
|
64
|
-
// The binding mechanism is identical for any type.
|
|
65
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
66
|
-
fixture.componentInstance.value = 'hello';
|
|
67
|
-
fixture.detectChanges();
|
|
68
|
-
expect(fixture.nativeElement.querySelector('kj-input input').value).toBe('hello');
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test('forwards placeholder', () => {
|
|
72
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
73
|
-
fixture.componentInstance.placeholder = 'you@example.com';
|
|
74
|
-
fixture.detectChanges();
|
|
75
|
-
expect(fixture.nativeElement.querySelector('kj-input input').getAttribute('placeholder')).toBe(
|
|
76
|
-
'you@example.com',
|
|
77
|
-
);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('forwards invalid → aria-invalid (after blur)', () => {
|
|
81
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
82
|
-
fixture.componentInstance.invalid = true;
|
|
83
|
-
fixture.detectChanges();
|
|
84
|
-
const input = fixture.nativeElement.querySelector('kj-input input');
|
|
85
|
-
input.dispatchEvent(new Event('blur'));
|
|
86
|
-
fixture.detectChanges();
|
|
87
|
-
expect(input.getAttribute('aria-invalid')).toBe('true');
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
test('forwards disabled → aria-disabled', () => {
|
|
91
|
-
const fixture = TestBed.createComponent(HostComponent);
|
|
92
|
-
fixture.componentInstance.disabled = true;
|
|
93
|
-
fixture.detectChanges();
|
|
94
|
-
expect(
|
|
95
|
-
fixture.nativeElement.querySelector('kj-input input').getAttribute('aria-disabled'),
|
|
96
|
-
).toBe('true');
|
|
97
|
-
});
|
|
98
|
-
});
|
package/src/input/input.ts
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChangeDetectionStrategy,
|
|
3
|
-
Component,
|
|
4
|
-
ElementRef,
|
|
5
|
-
ViewChild,
|
|
6
|
-
ViewEncapsulation,
|
|
7
|
-
forwardRef,
|
|
8
|
-
input,
|
|
9
|
-
viewChild,
|
|
10
|
-
} from '@angular/core';
|
|
11
|
-
import { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';
|
|
12
|
-
import { KjInput } from '@kouji-ui/core';
|
|
13
|
-
|
|
14
|
-
export type KjInputType = 'text' | 'email' | 'password' | 'number'
|
|
15
|
-
| 'search' | 'tel' | 'url' | 'color';
|
|
16
|
-
|
|
17
|
-
/** Visual variants — `default` uses the field surface; `sunken` drops to
|
|
18
|
-
* body bg so the input pops against a card/surface parent. */
|
|
19
|
-
export type KjInputVariant = 'default' | 'sunken';
|
|
20
|
-
|
|
21
|
-
/** Size tier — `xs` (28px) for filter rows / inline editors, `sm` (32px)
|
|
22
|
-
* for dense forms, `md` (36px, default) for standard rows, `lg` (44px)
|
|
23
|
-
* for touch-first primary inputs. */
|
|
24
|
-
export type KjInputSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Styled wrapper around the headless KjInput directive.
|
|
28
|
-
*
|
|
29
|
-
* Supports `[(ngModel)]` and `[formControl]` bindings.
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```html
|
|
33
|
-
* <kj-input type="email" placeholder="you@example.com" [(ngModel)]="email" />
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @doc-keyboard
|
|
37
|
-
* Tab — Moves focus into and out of the input (native input semantics)
|
|
38
|
-
* Enter — Submits the parent <form> when present (native behavior)
|
|
39
|
-
*
|
|
40
|
-
* @doc-aria
|
|
41
|
-
* aria-invalid — set to "true" only after the control is touched AND [invalid] is true; avoids announcing errors before the user has interacted
|
|
42
|
-
* data-invalid — mirror of aria-invalid for CSS targeting
|
|
43
|
-
* data-type — reflects the `type` input ("text" | "email" | "password" | ...) for type-specific styling
|
|
44
|
-
* data-variant — reflects the visual `variant` input ("default" | "sunken")
|
|
45
|
-
* disabled — native attribute reflected when the bound form control's disabled state is true
|
|
46
|
-
*
|
|
47
|
-
* @doc-css-var
|
|
48
|
-
* --kj-input-bg — Background fill. Variant `sunken` retargets this to body bg.
|
|
49
|
-
* --kj-input-fg — Foreground (text + caret) color.
|
|
50
|
-
* --kj-input-border-color — Border color. Focus and invalid states retarget this.
|
|
51
|
-
* --kj-input-border-style — Border line style. Default solid.
|
|
52
|
-
* --kj-input-border-width — Border thickness. Inherits --kj-border.
|
|
53
|
-
* --kj-input-radius — Corner radius. Inherits --kj-radius-field.
|
|
54
|
-
* --kj-input-padding-x — Horizontal padding inside the input.
|
|
55
|
-
* --kj-input-padding-y — Vertical padding inside the input.
|
|
56
|
-
* --kj-input-font — Font family. Defaults to --kj-font-sans.
|
|
57
|
-
* --kj-input-font-size — Font size. Sizes (sm/md/lg) override.
|
|
58
|
-
* --kj-input-placeholder-fg — Placeholder text color. Muted by default.
|
|
59
|
-
* --kj-input-height — Explicit height. Sizes override; matches button md by default.
|
|
60
|
-
*
|
|
61
|
-
* @doc-touch
|
|
62
|
-
* Default height is 36px (md). Use `data-size="lg"` (2.75rem / 44px) when the input is the primary touch target in a form. The `type="color"` swatch renders at 44×32px — pair it with a textual label for the accessible name.
|
|
63
|
-
*
|
|
64
|
-
* @doc-a11y
|
|
65
|
-
* `<kj-input>` is a thin wrapper around the headless `kjInput` directive that
|
|
66
|
-
* composes `KjFormControl` (CVA), `KjDisabled`, and `KjFocusRing`. Always
|
|
67
|
-
* associate a `<label>` via `for=`/`id=` or wrap the input in the label — the
|
|
68
|
-
* component does not generate its own accessible name. Pair with a sibling
|
|
69
|
-
* error node referenced by `aria-describedby` to surface validation messages
|
|
70
|
-
* to screen readers. Focus visibility comes from `:focus-visible` only (2px
|
|
71
|
-
* primary outline), never on mouse click.
|
|
72
|
-
*
|
|
73
|
-
* @doc-related field,password-input,textarea,input-mask
|
|
74
|
-
*
|
|
75
|
-
* @doc-example Default
|
|
76
|
-
* Plain text input — anchors the chrome and the (ngModel) two-way pattern.
|
|
77
|
-
* @doc-file input.example.ts
|
|
78
|
-
* @doc-example Usage
|
|
79
|
-
* Common input shapes — types, invalid state, disabled, and a (ngModel) bind.
|
|
80
|
-
* @doc-file input.usage.example.ts
|
|
81
|
-
* @doc-example Color
|
|
82
|
-
* `type="color"` renders the native swatch wired through the same wrapper.
|
|
83
|
-
* @doc-file input.color.example.ts
|
|
84
|
-
*
|
|
85
|
-
* @doc
|
|
86
|
-
* @doc-category Library/Data input
|
|
87
|
-
* @doc-name input
|
|
88
|
-
* @doc-description Themed text input with type variants, invalid and disabled state, and Angular forms support.
|
|
89
|
-
* @doc-is-main
|
|
90
|
-
*/
|
|
91
|
-
@Component({
|
|
92
|
-
selector: 'kj-input',
|
|
93
|
-
standalone: true,
|
|
94
|
-
imports: [KjInput],
|
|
95
|
-
providers: [
|
|
96
|
-
{
|
|
97
|
-
provide: NG_VALUE_ACCESSOR,
|
|
98
|
-
useExisting: forwardRef(() => KjInputComponent),
|
|
99
|
-
multi: true,
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
template: `
|
|
103
|
-
<input
|
|
104
|
-
#nativeInput
|
|
105
|
-
kjInput
|
|
106
|
-
class="kj-input"
|
|
107
|
-
[type]="type()"
|
|
108
|
-
[value]="value()"
|
|
109
|
-
[placeholder]="placeholder()"
|
|
110
|
-
[attr.data-variant]="variant()"
|
|
111
|
-
[attr.data-size]="kjSize() === 'md' ? null : kjSize()"
|
|
112
|
-
[kjInvalid]="invalid()"
|
|
113
|
-
[kjDisabled]="disabled()"
|
|
114
|
-
/>
|
|
115
|
-
`,
|
|
116
|
-
styleUrl: './input.css',
|
|
117
|
-
encapsulation: ViewEncapsulation.None,
|
|
118
|
-
host: {
|
|
119
|
-
'style': 'display: contents;',
|
|
120
|
-
'[attr.data-type]': 'type()',
|
|
121
|
-
},
|
|
122
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
123
|
-
})
|
|
124
|
-
export class KjInputComponent implements ControlValueAccessor {
|
|
125
|
-
readonly type = input<KjInputType>('text');
|
|
126
|
-
readonly variant = input<KjInputVariant>('default');
|
|
127
|
-
readonly kjSize = input<KjInputSize>('md');
|
|
128
|
-
readonly value = input<string>('');
|
|
129
|
-
readonly placeholder = input<string>('');
|
|
130
|
-
readonly invalid = input(false);
|
|
131
|
-
readonly disabled = input(false);
|
|
132
|
-
|
|
133
|
-
@ViewChild(KjInput, { static: true })
|
|
134
|
-
protected innerInput?: KjInput;
|
|
135
|
-
|
|
136
|
-
/** Native `<input>` element, queried via template-ref. Used by callers
|
|
137
|
-
* (cell editors, focus-trapping consumers) that need to move keyboard
|
|
138
|
-
* focus into the input without reaching into the DOM. */
|
|
139
|
-
readonly nativeInput = viewChild<ElementRef<HTMLInputElement>>('nativeInput');
|
|
140
|
-
|
|
141
|
-
/** Focus the underlying `<input>`. No-op until the view renders. */
|
|
142
|
-
focus(): void {
|
|
143
|
-
this.nativeInput()?.nativeElement.focus();
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
writeValue(val: unknown): void {
|
|
147
|
-
this.innerInput?.formCtrl.writeValue(val);
|
|
148
|
-
}
|
|
149
|
-
registerOnChange(fn: (value: unknown) => void): void {
|
|
150
|
-
this.innerInput?.formCtrl.registerOnChange(fn);
|
|
151
|
-
}
|
|
152
|
-
registerOnTouched(fn: () => void): void {
|
|
153
|
-
this.innerInput?.formCtrl.registerOnTouched(fn);
|
|
154
|
-
}
|
|
155
|
-
setDisabledState(isDisabled: boolean): void {
|
|
156
|
-
this.innerInput?.formCtrl.setDisabledState(isDisabled);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
|
|
2
|
-
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { KjInputComponent } from './input';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Common input shapes — text/email/password types, invalid state, disabled,
|
|
7
|
-
* and (ngModel) two-way binding. Copy-paste starting point for forms.
|
|
8
|
-
*/
|
|
9
|
-
@Component({
|
|
10
|
-
selector: 'kj-input-usage-example',
|
|
11
|
-
standalone: true,
|
|
12
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13
|
-
imports: [KjInputComponent, FormsModule],
|
|
14
|
-
styles: [`
|
|
15
|
-
:host { display: flex; flex-direction: column; gap: var(--kj-space-md); max-width: 360px; }
|
|
16
|
-
label { font: 500 var(--kj-text-sm)/1.4 var(--kj-font-sans); color: var(--kj-fg-default); }
|
|
17
|
-
.row { display: flex; flex-direction: column; gap: var(--kj-space-xs); }
|
|
18
|
-
code { font: var(--kj-text-xs)/1 var(--kj-font-mono); color: var(--kj-fg-muted); }
|
|
19
|
-
`],
|
|
20
|
-
template: `
|
|
21
|
-
<div class="row">
|
|
22
|
-
<label for="usage-name">Name</label>
|
|
23
|
-
<kj-input id="usage-name" type="text" [(ngModel)]="name" placeholder="Ada Lovelace" />
|
|
24
|
-
<code>value: {{ name() || '—' }}</code>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<div class="row">
|
|
28
|
-
<label for="usage-email">Email</label>
|
|
29
|
-
<kj-input id="usage-email" type="email" [invalid]="true" value="not-an-email" />
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
<div class="row">
|
|
33
|
-
<label for="usage-pwd">Password</label>
|
|
34
|
-
<kj-input id="usage-pwd" type="password" [disabled]="true" value="••••••••" />
|
|
35
|
-
</div>
|
|
36
|
-
`,
|
|
37
|
-
})
|
|
38
|
-
export class KjInputUsageExample {
|
|
39
|
-
readonly name = signal('');
|
|
40
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by scripts/migrate-examples.mjs
|
|
2
|
-
// One barrel per component folder — used by the docs app as a lazy chunk.
|
|
3
|
-
export { KjInputGroupButtonExample } from './input-group.button.example';
|
|
4
|
-
export { KjInputGroupExample } from './input-group.example';
|
|
5
|
-
export { KjInputGroupIconExample } from './input-group.icon.example';
|
|
6
|
-
export { KjInputGroupUrlExample } from './input-group.url.example';
|
|
7
|
-
export { KjInputGroupVariantsExample } from './input-group.variants.example';
|